Name: series-workflowdb56v Phase: Running StartedAt: 2026-07-28 23:11:48 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[0] Phase: Succeeded StartedAt: 2026-07-28 23:11:48 +0000 UTC FinishedAt: 2026-07-29 00:02:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[0].run-triage Phase: Succeeded StartedAt: 2026-07-28 23:11:48 +0000 UTC FinishedAt: 2026-07-29 00:02:32 +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": "0ce37745d4bfbc493f718169c3974898ffec8ee7", "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": "0ce37745d4bfbc493f718169c3974898ffec8ee7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "afcb3088-eaa8-4d02-8e2b-06093257737e" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_check" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXImIzM5O3MgaGFuZGxpbmcgb2YgdW50cnVzdGVkIHBvaW50ZXJzIHRvIGFsbG9jYXRlZCBvYmplY3RzLCBzcGVjaWZpY2FsbHkgYWxsb3dpbmcgcmVhZHMgYnV0IHByZXZlbnRpbmcgd3JpdGVzLCBhbmQgcmVtb3ZpbmcgdGhlIHJlcXVpcmVtZW50IGZvciBhIHJlZmVyZW5jZWQgSUQgZm9yIHVudHJ1c3RlZCBhbGxvY2F0ZWQgb2JqZWN0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDowMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGU3MGE3ZWEzNzMwYTZlNWVlZDIzNDcwY2NhOGZhZDM0MGVkNDU2OTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAwMDowMTo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDdhYTQ3MzQyZGM2NTkuLjI0YzE1MWFkMmU2MjggMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTU4MDQsMTMgJiM0Mzs1ODA0LDE1IEBAIHN0YXRpYyBpbnQgY2hlY2tfcHRyX3RvX2J0Zl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0ICogcHJvZ3JhbSBhbGxvY2F0ZWQgb2JqZWN0cyAod2hpY2ggYWx3YXlzIGhhdmUgaWQgXHUwMDNlIDApLFxuIFx0XHQgKiBidXQgbm90IGZvciB1bnRydXN0ZWQgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQy5cbiBcdFx0ICovXG4tXHRcdGlmIChhdHlwZSAhPSBCUEZfUkVBRCBcdTAwMjZcdTAwMjYgIXR5cGVfaXNfcHRyX2FsbG9jX29iaihyZWctXHUwMDNldHlwZSkpIHtcbiYjNDM7XHRcdGlmIChhdHlwZSAhPSBCUEZfUkVBRCBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAoIXR5cGVfaXNfcHRyX2FsbG9jX29iaihyZWctXHUwMDNldHlwZSkgfHwgcmVnLVx1MDAzZXR5cGUgXHUwMDI2IFBUUl9VTlRSVVNURUQpKSB7XG4gXHRcdFx0dmVyYm9zZShlbnYsIFwmIzM0O29ubHkgcmVhZCBpcyBzdXBwb3J0ZWRcXG5cJiMzNDspO1xuIFx0XHRcdHJldHVybiAtRUFDQ0VTO1xuIFx0XHR9XG4gXG4gXHRcdGlmICh0eXBlX2lzX2FsbG9jKHJlZy1cdTAwM2V0eXBlKSBcdTAwMjZcdTAwMjYgIXR5cGVfaXNfbm9uX293bmluZ19yZWYocmVnLVx1MDAzZXR5cGUpIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgIShyZWctXHUwMDNldHlwZSBcdTAwMjYgTUVNX1JDVSkgXHUwMDI2XHUwMDI2ICFyZWdfaXNfcmVmZXJlbmNlZChlbnYsIHJlZykpIHtcbiYjNDM7XHRcdCAgICAhKHJlZy1cdTAwM2V0eXBlIFx1MDAyNiAoTUVNX1JDVSB8IFBUUl9VTlRSVVNURUQpKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAhcmVnX2lzX3JlZmVyZW5jZWQoZW52LCByZWcpKSB7XG4gXHRcdFx0dmVyaWZpZXJfYnVnKGVudiwgXCYjMzQ7YWxsb2NhdGVkIG9iamVjdCBtdXN0IGhhdmUgYSByZWZlcmVuY2VkIGlkXCYjMzQ7KTtcbiBcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBcdFx0fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoX2ZhaWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoX2ZhaWwuY1xuaW5kZXggZmNmN2E3NTY3ZGEyMi4uZDdiOGNkNjQ1OGJiOSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoX2ZhaWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2hfZmFpbC5jXG5AQCAtOCwxNCAmIzQzOzgsMjIgQEBcbiAjaW5jbHVkZSBcJiMzNDsuLi9icGZfZXhwZXJpbWVudGFsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDticGZfbWlzYy5oXCYjMzQ7XG4gXG4mIzQzO2V4dGVybiB2b2lkIGJwZl9yY3VfcmVhZF9sb2NrKHZvaWQpIF9fa3N5bTtcbiYjNDM7ZXh0ZXJuIHZvaWQgYnBmX3JjdV9yZWFkX3VubG9jayh2b2lkKSBfX2tzeW07XG4mIzQzO1xuIHN0cnVjdCBub2RlX2RhdGEge1xuIFx0bG9uZyBrZXk7XG4gXHRsb25nIGRhdGE7XG4gXHRzdHJ1Y3QgYnBmX3JiX25vZGUgbm9kZTtcbiB9O1xuIFxuJiM0MztzdHJ1Y3QgcGxhaW5fZGF0YSB7XG4mIzQzO1x0bG9uZyBrZXk7XG4mIzQzO307XG4mIzQzO1xuIHN0cnVjdCBtYXBfdmFsdWUge1xuIFx0c3RydWN0IG5vZGVfZGF0YSBfX2twdHIgKm5vZGU7XG4mIzQzO1x0c3RydWN0IHBsYWluX2RhdGEgX19rcHRyICpwbGFpbjtcbiB9O1xuIFxuIHN0cnVjdCBub2RlX2RhdGEyIHtcbkBAIC0zMSw2ICYjNDM7MzksNyBAQCBzdHJ1Y3Qgbm9kZV9kYXRhMiB7XG4gICogWzM1XSBUWVBFX1RBRyAmIzM5O2twdHJfcmVmJiMzOTsgdHlwZV9pZD0zNFxuICAqL1xuIHN0cnVjdCBub2RlX2RhdGEgKmp1c3RfaGVyZV9iZWNhdXNlX2J0Zl9idWc7XG4mIzQzO3N0cnVjdCBwbGFpbl9kYXRhICpqdXN0X2hlcmVfYmVjYXVzZV9idGZfYnVnMjtcbiBcbiBzdHJ1Y3Qge1xuIFx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9BUlJBWSk7XG5AQCAtODIsNCAmIzQzOzkxLDUzIEBAIGxvbmcgZHJvcF9yYl9ub2RlX29mZih2b2lkICpjdHgpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO1NFQyhcJiMzNDs/dGNcJiMzNDspXG4mIzQzO19fZmFpbHVyZSBfX21zZyhcJiMzNDtvbmx5IHJlYWQgaXMgc3VwcG9ydGVkXCYjMzQ7KVxuJiM0Mztsb25nIHdyaXRlX3VudHJ1c3RlZF9hbGxvY19vYmoodm9pZCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG1hcF92YWx1ZSAqbWFwdmFsO1xuJiM0MztcdHN0cnVjdCBub2RlX2RhdGEgKnJlcztcbiYjNDM7XHRpbnQgaWR4ID0gMDtcbiYjNDM7XG4mIzQzO1x0bWFwdmFsID0gYnBmX21hcF9sb29rdXBfZWxlbShcdTAwMjZzb21lX25vZGVzLCBcdTAwMjZpZHgpO1xuJiM0MztcdGlmICghbWFwdmFsKVxuJiM0MztcdFx0cmV0dXJuIDE7XG4mIzQzO1xuJiM0MztcdGJwZl9yY3VfcmVhZF9sb2NrKCk7XG4mIzQzO1x0cmVzID0gbWFwdmFsLVx1MDAzZW5vZGU7XG4mIzQzO1x0aWYgKCFyZXMpIHtcbiYjNDM7XHRcdGJwZl9yY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRcdHJldHVybiAyO1xuJiM0MztcdH1cbiYjNDM7XHRiYXJyaWVyX3ZhcihyZXMpO1xuJiM0MztcdGJwZl9yY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XG4mIzQzO1x0cmVzLVx1MDAzZWtleSA9IDQyO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7P3RjXCYjMzQ7KVxuJiM0MztfX3N1Y2Nlc3NcbiYjNDM7bG9uZyByZWFkX3VudHJ1c3RlZF9hbGxvY19vYmoodm9pZCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG1hcF92YWx1ZSAqbWFwdmFsO1xuJiM0MztcdHN0cnVjdCBwbGFpbl9kYXRhICpyZXM7XG4mIzQzO1x0aW50IGlkeCA9IDA7XG4mIzQzO1xuJiM0MztcdG1hcHZhbCA9IGJwZl9tYXBfbG9va3VwX2VsZW0oXHUwMDI2c29tZV9ub2RlcywgXHUwMDI2aWR4KTtcbiYjNDM7XHRpZiAoIW1hcHZhbClcbiYjNDM7XHRcdHJldHVybiAxO1xuJiM0MztcbiYjNDM7XHRicGZfcmN1X3JlYWRfbG9jaygpO1xuJiM0MztcdHJlcyA9IG1hcHZhbC1cdTAwM2VwbGFpbjtcbiYjNDM7XHRpZiAoIXJlcykge1xuJiM0MztcdFx0YnBmX3JjdV9yZWFkX3VubG9jaygpO1xuJiM0MztcdFx0cmV0dXJuIDI7XG4mIzQzO1x0fVxuJiM0MztcdGJhcnJpZXJfdmFyKHJlcyk7XG4mIzQzO1x0YnBmX3JjdV9yZWFkX3VubG9jaygpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmVzLVx1MDAzZWtleTtcbiYjNDM7fVxuJiM0MztcbiBjaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjAxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9jaGVjayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyJiMzOTtzIGhhbmRsaW5nIG9mIHVudHJ1c3RlZCBwb2ludGVycyB0byBhbGxvY2F0ZWQgb2JqZWN0cywgc3BlY2lmaWNhbGx5IGFsbG93aW5nIHJlYWRzIGJ1dCBwcmV2ZW50aW5nIHdyaXRlcywgYW5kIHJlbW92aW5nIHRoZSByZXF1aXJlbWVudCBmb3IgYSByZWZlcmVuY2VkIElEIGZvciB1bnRydXN0ZWQgYWxsb2NhdGVkIG9iamVjdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlNzBhN2VhMzczMGE2ZTVlZWQyMzQ3MGNjYThmYWQzNDBlZDQ1Njk1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjkgMDA6MDE6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggN2FhNDczNDJkYzY1OS4uMjRjMTUxYWQyZTYyOCAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwpAQCAtNTgwNCwxMyAmIzQzOzU4MDQsMTUgQEAgc3RhdGljIGludCBjaGVja19wdHJfdG9fYnRmX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCQkgKiBwcm9ncmFtIGFsbG9jYXRlZCBvYmplY3RzICh3aGljaCBhbHdheXMgaGF2ZSBpZCAmZ3Q7IDApLAogCQkgKiBidXQgbm90IGZvciB1bnRydXN0ZWQgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQy4KIAkJICovCi0JCWlmIChhdHlwZSAhPSBCUEZfUkVBRCAmYW1wOyZhbXA7ICF0eXBlX2lzX3B0cl9hbGxvY19vYmoocmVnLSZndDt0eXBlKSkgewomIzQzOwkJaWYgKGF0eXBlICE9IEJQRl9SRUFEICZhbXA7JmFtcDsKJiM0MzsJCSAgICAoIXR5cGVfaXNfcHRyX2FsbG9jX29iaihyZWctJmd0O3R5cGUpIHx8IHJlZy0mZ3Q7dHlwZSAmYW1wOyBQVFJfVU5UUlVTVEVEKSkgewogCQkJdmVyYm9zZShlbnYsICYjMzQ7b25seSByZWFkIGlzIHN1cHBvcnRlZFxuJiMzNDspOwogCQkJcmV0dXJuIC1FQUNDRVM7CiAJCX0KIAogCQlpZiAodHlwZV9pc19hbGxvYyhyZWctJmd0O3R5cGUpICZhbXA7JmFtcDsgIXR5cGVfaXNfbm9uX293bmluZ19yZWYocmVnLSZndDt0eXBlKSAmYW1wOyZhbXA7Ci0JCSAgICAhKHJlZy0mZ3Q7dHlwZSAmYW1wOyBNRU1fUkNVKSAmYW1wOyZhbXA7ICFyZWdfaXNfcmVmZXJlbmNlZChlbnYsIHJlZykpIHsKJiM0MzsJCSAgICAhKHJlZy0mZ3Q7dHlwZSAmYW1wOyAoTUVNX1JDVSB8IFBUUl9VTlRSVVNURUQpKSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgIXJlZ19pc19yZWZlcmVuY2VkKGVudiwgcmVnKSkgewogCQkJdmVyaWZpZXJfYnVnKGVudiwgJiMzNDthbGxvY2F0ZWQgb2JqZWN0IG11c3QgaGF2ZSBhIHJlZmVyZW5jZWQgaWQmIzM0Oyk7CiAJCQlyZXR1cm4gLUVGQVVMVDsKIAkJfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2hfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2hfZmFpbC5jCmluZGV4IGZjZjdhNzU2N2RhMjIuLmQ3YjhjZDY0NThiYjkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoX2ZhaWwuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaF9mYWlsLmMKQEAgLTgsMTQgJiM0Mzs4LDIyIEBACiAjaW5jbHVkZSAmIzM0Oy4uL2JwZl9leHBlcmltZW50YWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2JwZl9taXNjLmgmIzM0OwogCiYjNDM7ZXh0ZXJuIHZvaWQgYnBmX3JjdV9yZWFkX2xvY2sodm9pZCkgX19rc3ltOwomIzQzO2V4dGVybiB2b2lkIGJwZl9yY3VfcmVhZF91bmxvY2sodm9pZCkgX19rc3ltOwomIzQzOwogc3RydWN0IG5vZGVfZGF0YSB7CiAJbG9uZyBrZXk7CiAJbG9uZyBkYXRhOwogCXN0cnVjdCBicGZfcmJfbm9kZSBub2RlOwogfTsKIAomIzQzO3N0cnVjdCBwbGFpbl9kYXRhIHsKJiM0MzsJbG9uZyBrZXk7CiYjNDM7fTsKJiM0MzsKIHN0cnVjdCBtYXBfdmFsdWUgewogCXN0cnVjdCBub2RlX2RhdGEgX19rcHRyICpub2RlOwomIzQzOwlzdHJ1Y3QgcGxhaW5fZGF0YSBfX2twdHIgKnBsYWluOwogfTsKIAogc3RydWN0IG5vZGVfZGF0YTIgewpAQCAtMzEsNiAmIzQzOzM5LDcgQEAgc3RydWN0IG5vZGVfZGF0YTIgewogICogWzM1XSBUWVBFX1RBRyAmIzM5O2twdHJfcmVmJiMzOTsgdHlwZV9pZD0zNAogICovCiBzdHJ1Y3Qgbm9kZV9kYXRhICpqdXN0X2hlcmVfYmVjYXVzZV9idGZfYnVnOwomIzQzO3N0cnVjdCBwbGFpbl9kYXRhICpqdXN0X2hlcmVfYmVjYXVzZV9idGZfYnVnMjsKIAogc3RydWN0IHsKIAlfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX0FSUkFZKTsKQEAgLTgyLDQgJiM0Mzs5MSw1MyBAQCBsb25nIGRyb3BfcmJfbm9kZV9vZmYodm9pZCAqY3R4KQogCXJldHVybiAwOwogfQogCiYjNDM7U0VDKCYjMzQ7P3RjJiMzNDspCiYjNDM7X19mYWlsdXJlIF9fbXNnKCYjMzQ7b25seSByZWFkIGlzIHN1cHBvcnRlZCYjMzQ7KQomIzQzO2xvbmcgd3JpdGVfdW50cnVzdGVkX2FsbG9jX29iaih2b2lkICpjdHgpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbWFwX3ZhbHVlICptYXB2YWw7CiYjNDM7CXN0cnVjdCBub2RlX2RhdGEgKnJlczsKJiM0MzsJaW50IGlkeCA9IDA7CiYjNDM7CiYjNDM7CW1hcHZhbCA9IGJwZl9tYXBfbG9va3VwX2VsZW0oJmFtcDtzb21lX25vZGVzLCAmYW1wO2lkeCk7CiYjNDM7CWlmICghbWFwdmFsKQomIzQzOwkJcmV0dXJuIDE7CiYjNDM7CiYjNDM7CWJwZl9yY3VfcmVhZF9sb2NrKCk7CiYjNDM7CXJlcyA9IG1hcHZhbC0mZ3Q7bm9kZTsKJiM0MzsJaWYgKCFyZXMpIHsKJiM0MzsJCWJwZl9yY3VfcmVhZF91bmxvY2soKTsKJiM0MzsJCXJldHVybiAyOwomIzQzOwl9CiYjNDM7CWJhcnJpZXJfdmFyKHJlcyk7CiYjNDM7CWJwZl9yY3VfcmVhZF91bmxvY2soKTsKJiM0MzsKJiM0MzsJcmVzLSZndDtrZXkgPSA0MjsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO1NFQygmIzM0Oz90YyYjMzQ7KQomIzQzO19fc3VjY2VzcwomIzQzO2xvbmcgcmVhZF91bnRydXN0ZWRfYWxsb2Nfb2JqKHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtYXBfdmFsdWUgKm1hcHZhbDsKJiM0MzsJc3RydWN0IHBsYWluX2RhdGEgKnJlczsKJiM0MzsJaW50IGlkeCA9IDA7CiYjNDM7CiYjNDM7CW1hcHZhbCA9IGJwZl9tYXBfbG9va3VwX2VsZW0oJmFtcDtzb21lX25vZGVzLCAmYW1wO2lkeCk7CiYjNDM7CWlmICghbWFwdmFsKQomIzQzOwkJcmV0dXJuIDE7CiYjNDM7CiYjNDM7CWJwZl9yY3VfcmVhZF9sb2NrKCk7CiYjNDM7CXJlcyA9IG1hcHZhbC0mZ3Q7cGxhaW47CiYjNDM7CWlmICghcmVzKSB7CiYjNDM7CQlicGZfcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CQlyZXR1cm4gMjsKJiM0MzsJfQomIzQzOwliYXJyaWVyX3ZhcihyZXMpOwomIzQzOwlicGZfcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CiYjNDM7CXJldHVybiByZXMtJmd0O2tleTsKJiM0Mzt9CiYjNDM7CiBjaGFyIF9saWNlbnNlW10gU0VDKCYjMzQ7bGljZW5zZSYjMzQ7KSA9ICYjMzQ7R1BMJiMzNDs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMDEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0MjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQlBGIFZlcmlmaWVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBCUEYgdmVyaWZpZXIsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBjaGVja19wdHJfdG9fYnRmX2FjY2Vzc2AgZnVuY3Rpb24gaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIE15IGluaXRpYWwgcmVhZCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBiaXQgb2YgYSBzZWN1cml0eSBoYXJkZW5pbmcsIHJlbGF0ZWQgdG8gaG93IHVudHJ1c3RlZCBwb2ludGVycyBpbnRlcmFjdCB3aXRoIGFsbG9jYXRlZCBvYmplY3RzIHdpdGhpbiB0aGUgQlBGIGVudmlyb25tZW50LgoKRXNzZW50aWFsbHksIHRoZXkmIzM5O3JlIG1vZGlmeWluZyB0aGUgY29uZGl0aW9ucyB0aGF0IHBlcm1pdCB3cml0ZSBhY2Nlc3MgdG8gYWxsb2NhdGVkIG9iamVjdHMuIFRoZSBvbGQgd2F5IGFsbG93ZWQgd3JpdGVzIGlmIHRoZSBhY2Nlc3MgdHlwZSB3YXNuJiMzOTt0IGEgcmVhZCBhbmQgdGhlIHJlZ2lzdGVyIHR5cGUgd2FzbiYjMzk7dCBwb2ludGluZyB0byBhbiBhbGxvY2F0ZWQgb2JqZWN0LiBOb3csIHRoZXkmIzM5O3JlIGFkZGluZyBgfHwgcmVnLSZndDt0eXBlICZhbXA7IFBUUl9VTlRSVVNURURgIHRvIHRoYXQgY2hlY2ssIG1lYW5pbmcgd3JpdGUgYWNjZXNzIGlzIGRlbmllZCBpZiB0aGUgcG9pbnRlciBpcyBjb25zaWRlcmVkIHVudHJ1c3RlZCwgZXZlbiBpZiBpdCYjMzk7cyBwb2ludGluZyBhdCBzb21ldGhpbmcgYWxsb2NhdGVkLiBUaGV5IGFsc28gdG91Y2hlZCB0aGUgY29uZGl0aW9uIHRoYXQgY2hlY2tzIHJlZmVyZW5jZWQgSURzIGZvciBhbGxvY2F0ZWQgb2JqZWN0cywgYWRkaW5nIGBQVFJfVU5UUlVTVEVEYCB0byB0aGUgbWFzaywgc28gdW50cnVzdGVkIGFsbG9jYXRlZCBvYmplY3RzIGRvbiYjMzk7dCBuZWVkIGEgcmVmZXJlbmNlZCBJRC4KClRoaXMgaXMgaW1tZWRpYXRlbHkgc2NyZWFtaW5nICYjMzQ7ZnV6emluZyB0YXJnZXQmIzM0OyBhdCBtZS4gVGhlIGZhY3QgdGhhdCB0aGV5JiMzOTtyZSB0b3VjaGluZyBwb2ludGVyIGhhbmRsaW5nLCBhbGxvY2F0ZWQgbWVtb3J5LCBhbmQgc2VjdXJpdHktcmVsZXZhbnQgY2hlY2tzIGlzIHZlcnkgcHJvbWlzaW5nLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzZWUuLi4gdGhlIGNvZGUgaXRzZWxmIGhpZ2hsaWdodHMgdGhlIGBjaGVja19wdHJfdG9fYnRmX2FjY2Vzc2AgZnVuY3Rpb24uIEFuZCBJJiMzOTttIHByZXR0eSBzdXJlIHRoaXMgbmVlZHMgYEJQRl9TWVNDQUxMYCBlbmFibGVkLiBJIGNhbiBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgbGF0ZXIsIGJ1dCB0aGF0JiMzOTtzIG15IHdvcmtpbmcgYXNzdW1wdGlvbi4KCkhvbGQgb24uLi4gSSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZSBhYm91dCB0aGUgZnV6emluZyB0YXJnZXQuIEFjY29yZGluZyB0byB0aGUgaW5zdHJ1Y3Rpb25zLCBJIHNob3VsZCBiZSBmb2N1c2VkIG9uIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXJzLiBSaWdodCwgc28gYGNoZWNrX3B0cl90b19idGZfYWNjZXNzYCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCYjMzk7cyBhIGJpdCBvZiBhIGJ1bW1lci4gTGV0JiMzOTtzIGZpbmQgaXRzIGNhbGxlciB0byBzZWUgaWYgdGhhdCYjMzk7cyBtb3JlIGZ1enphYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoZWNrX3B0cl90b19idGZfYWNjZXNzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz01NzIxPXN0YXRpYyBib29sIHR5cGVfaXNfdHJ1c3RlZF9vcl9udWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MzItXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTczMzpzdGF0aWMgaW50IGNoZWNrX3B0cl90b19idGZfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTczNC1cdFx0XHRcdCAgIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWdzLCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02MDgwPXN0YXRpYyBpbnQgY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaW5zbl9pZHgsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTYyOTMtXHRcdCAgICF0eXBlX21heV9iZV9udWxsKHJlZy1cdTAwM2V0eXBlKSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjYyOTQ6XHRcdGVyciA9IGNoZWNrX3B0cl90b19idGZfYWNjZXNzKGVudiwgcmVncywgcmVnLCBhcmdubywgb2ZmLCBzaXplLCB0LFxua2VybmVsL2JwZi92ZXJpZmllci5jLTYyOTUtXHRcdFx0XHRcdCAgICAgIHZhbHVlX3JlZ25vKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9Njc0Mz1zdGF0aWMgaW50IGNoZWNrX2hlbHBlcl9tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY4MDAtXHRjYXNlIFBUUl9UT19CVEZfSUQ6XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjgwMTpcdFx0cmV0dXJuIGNoZWNrX3B0cl90b19idGZfYWNjZXNzKGVudiwgcmVncywgcmVnLCBhcmdubywgMCxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02ODAyLVx0XHRcdFx0XHQgICAgICAgYWNjZXNzX3NpemUsIGFjY2Vzc190eXBlLCAtMSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQyMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgcmVsYXRlcyB0byB0aGUga2VybmVsIGNvZGU6CgoqKkFuYWx5emluZyB0aGUgTWVtb3J5IEFjY2VzcyBDb250cm9sIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBtZW1vcnkgYWNjZXNzIGlzIHZhbGlkYXRlZCB3aXRoaW4gdGhlIEJQRiBzeXN0ZW0uIEkgc2VlIHRoYXQgYGNoZWNrX3B0cl90b19idGZfYWNjZXNzYCBpcyBhIGNydWNpYWwgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBiZWluZyBjYWxsZWQgYnkgYGNoZWNrX21lbV9hY2Nlc3NgIGFuZCBgY2hlY2tfaGVscGVyX21lbV9hY2Nlc3NgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYSBjb3JlIGNvbXBvbmVudCBmb3IgZW5zdXJpbmcgc2FmZSBtZW1vcnkgaW50ZXJhY3Rpb25zLiBgY2hlY2tfbWVtX2FjY2Vzc2AsIGluIHR1cm4sIGlzIGJlaW5nIGludm9rZWQgaGlnaGVyIHVwIGluIHRoZSBleGVjdXRpb24gc3RhY2ssIG1vc3QgbGlrZWx5IGZyb20gYGRvX2NoZWNrYCBvciBhIHNpbWlsYXIgZnVuY3Rpb24gZGVhbGluZyB3aXRoIEJQRiBwcm9ncmFtIHZhbGlkYXRpb24uCgpNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gdHJhY2UgdGhpcyBiYWNrIHRvIHRoZSB0b3AtbGV2ZWwgZnVuY3Rpb25zIHRvIGdldCBhIGhpZ2gtbGV2ZWwgdmlldyBvZiBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlci4gR2l2ZW4gdGhpcyBrbm93bGVkZ2UsIEkgc2hvdWxkIGJlIGFibGUgdG8gdHJhY2sgYmFjayB0byBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gZnJvbSBgY2hlY2tfbWVtX2FjY2Vzc2AuIElmIG5vdCwgSSBjYW4ganVzdCB1c2UgYGJwZl9jaGVja2AuIFRoaXMgd2lsbCBnaXZlIG1lIGFuIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgbWVtb3J5IGFjY2VzcyBjaGVjayB3b3JrZmxvdyBmb3IgQlBGIHByb2dyYW1zLCB3aGljaCBpcyB3aGF0IEkmIzM5O20gaW50ZXJlc3RlZCBpbiB1bmRlcnN0YW5kaW5nLiBUaGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIGhvdyBhY2Nlc3MgaXMgY29udHJvbGxlZCwgYW5kIGhvdyB2dWxuZXJhYmlsaXRpZXMgbWF5IGJlIHByZXZlbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja19tZW1fYWNjZXNzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz01NT1zdGF0aWMgYm9vbCBicGZfZ2xvYmFsX3BlcmNwdV9tYV9zZXQ7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwMi0gKiBjYW4gYmU6IFBUUl9UT19NQVBfVkFMVUUsIFBUUl9UT19DVFgsIFBUUl9UT19TVEFDSywgUFRSX1RPX1NPQ0tFVC4gVGhlc2UgYXJlXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTAzOiAqIGZvdXIgcG9pbnRlciB0eXBlcyByZWNvZ25pemVkIGJ5IGNoZWNrX21lbV9hY2Nlc3MoKSBmdW5jdGlvbi5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDQtICpcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODQ3PXN0YXRpYyBib29sIGlzX2R5bnB0cl9yZWdfdmFsaWRfdW5pbml0KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1Ny1cdCAqIGVycm9yIGJlY2F1c2UgdGhpcyBqdXN0IG1lYW5zIHRoZSBzdGFjayBzdGF0ZSBoYXNuJiMzOTt0IGJlZW4gdXBkYXRlZCB5ZXQuXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODU4Olx0ICogV2Ugd2lsbCBkbyBjaGVja19tZW1fYWNjZXNzIHRvIGNoZWNrIGFuZCB1cGRhdGUgc3RhY2sgYm91bmRzIGxhdGVyLlxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1OS1cdCAqL1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDAzPXN0YXRpYyBib29sIGlzX2l0ZXJfcmVnX3ZhbGlkX3VuaW5pdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDA5LVx0LyogRm9yIC1FUkFOR0UgKGkuZS4gc3BpIG5vdCBmYWxsaW5nIGludG8gYWxsb2NhdGVkIHN0YWNrIHNsb3RzKSwgd2Vcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDEwOlx0ICogd2lsbCBkbyBjaGVja19tZW1fYWNjZXNzIHRvIGNoZWNrIGFuZCB1cGRhdGUgc3RhY2sgYm91bmRzIGxhdGVyLCBzb1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEwMTEtXHQgKiByZXR1cm4gdHJ1ZSBmb3IgdGhhdCBjYXNlLlxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTQ4PXN0YXRpYyBib29sIGlzX2lycV9mbGFnX3JlZ192YWxpZF91bmluaXQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE1NC1cdC8qIEZvciAtRVJBTkdFIChpLmUuIHNwaSBub3QgZmFsbGluZyBpbnRvIGFsbG9jYXRlZCBzdGFjayBzbG90cyksIHdlXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE1NTpcdCAqIHdpbGwgZG8gY2hlY2tfbWVtX2FjY2VzcyB0byBjaGVjayBhbmQgdXBkYXRlIHN0YWNrIGJvdW5kcyBsYXRlciwgc29cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTU2LVx0ICogcmV0dXJuIHRydWUgZm9yIHRoYXQgY2FzZS5cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MzQzNz1zdGF0aWMgdm9pZCBzY3J1Yl9zcGVjaWFsX3Nsb3Qoc3RydWN0IGJwZl9mdW5jX3N0YXRlICpzdGF0ZSwgaW50IHNwaSlcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMzQ0OS0vKiBjaGVja19zdGFja197cmVhZCx3cml0ZX1fZml4ZWRfb2ZmIGZ1bmN0aW9ucyB0cmFjayBzcGlsbC9maWxsIG9mIHJlZ2lzdGVycyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzozNDUwOiAqIHN0YWNrIGJvdW5kYXJ5IGFuZCBhbGlnbm1lbnQgYXJlIGNoZWNrZWQgaW4gY2hlY2tfbWVtX2FjY2VzcygpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMzQ1MS0gKi9cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NDEzOD1zdGF0aWMgaW50IGNoZWNrX21hcF9hY2Nlc3NfdHlwZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00MTU5LS8qIGNoZWNrIHJlYWQvd3JpdGUgaW50byBtZW1vcnkgcmVnaW9uIChlLmcuLCBtYXAgdmFsdWUsIHJpbmdidWYgc2FtcGxlLCBldGMpICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDE2MDpzdGF0aWMgaW50IF9fY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQxNjEtXHRcdFx0ICAgICAgaW50IG9mZiwgaW50IHNpemUsIHUzMiBtZW1fc2l6ZSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NDE5OD1zdGF0aWMgaW50IGNoZWNrX21lbV9yZWdpb25fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTQyMjEtXHR9XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDIyMjpcdGVyciA9IF9fY2hlY2tfbWVtX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIHJlZ19zbWluKHJlZykgJiM0Mzsgb2ZmLCBzaXplLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQyMjMtXHRcdFx0XHQgbWVtX3NpemUsIHplcm9fc2l6ZV9hbGxvd2VkKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDIzOC1cdH1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0MjM5Olx0ZXJyID0gX19jaGVja19tZW1fYWNjZXNzKGVudiwgcmVnLCBhcmdubywgcmVnX3VtYXgocmVnKSAmIzQzOyBvZmYsIHNpemUsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDI0MC1cdFx0XHRcdCBtZW1fc2l6ZSwgemVyb19zaXplX2FsbG93ZWQpO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz00NjQ4PXN0YXRpYyBpbnQgY2hlY2tfcGFja2V0X2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLCBpbnQgb2ZmLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NjYxLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjQ2NjI6XHQvKiBfX2NoZWNrX21lbV9hY2Nlc3MgaGFzIG1hZGUgc3VyZSBcJiMzNDtvZmYgJiM0Mzsgc2l6ZSAtIDFcJiMzNDsgaXMgd2l0aGluIHUxNi5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NjYzLVx0ICogcmVnX3VtYXgocmVnKSBjYW4mIzM5O3QgYmUgYmlnZ2VyIHRoYW4gTUFYX1BBQ0tFVF9PRkYgd2hpY2ggaXMgMHhmZmZmLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQ2NjQtXHQgKiBvdGhlcndpc2UgZmluZF9nb29kX3BrdF9wb2ludGVycyB3b3VsZCBoYXZlIHJlZnVzZWQgdG8gc2V0IHJhbmdlIGluZm9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0NjY1Olx0ICogdGhhdCBfX2NoZWNrX21lbV9hY2Nlc3Mgd291bGQgaGF2ZSByZWplY3RlZCB0aGlzIHBrdCBhY2Nlc3MuXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDY2Ni1cdCAqIFRoZXJlZm9yZSwgXCYjMzQ7b2ZmICYjNDM7IHJlZ191bWF4KHJlZykgJiM0Mzsgc2l6ZSAtIDFcJiMzNDsgd29uJiMzOTt0IG92ZXJmbG93IHUzMi5cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NjA1Nz1zdGF0aWMgdm9pZCBhZGRfc2NhbGFyX3RvX3JlZyhzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZywgczY0IHZhbClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjA3OS0gKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2MDgwOnN0YXRpYyBpbnQgY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaW5zbl9pZHgsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjA4MS1cdFx0XHQgICAgaW50IG9mZiwgaW50IGJwZl9zaXplLCBlbnVtIGJwZl9hY2Nlc3NfdHlwZSB0LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02MzQzPXN0YXRpYyBpbnQgY2hlY2tfbG9hZF9tZW0oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02Mzc1LVx0ICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjM3NjpcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBlbnYtXHUwMDNlaW5zbl9pZHgsIHJlZ3MgJiM0MzsgaW5zbi1cdTAwM2VzcmNfcmVnLCBhcmdub19mcm9tX3JlZyhpbnNuLVx1MDAzZXNyY19yZWcpLCBpbnNuLVx1MDAzZW9mZixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02Mzc3LVx0XHRcdCAgICAgICBCUEZfU0laRShpbnNuLVx1MDAzZWNvZGUpLCBCUEZfUkVBRCwgaW5zbi1cdTAwM2Vkc3RfcmVnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02Mzg2PXN0YXRpYyBpbnQgY2hlY2tfc3RvcmVfcmVnKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQxNS1cdC8qIENoZWNrIGlmIChkc3RfcmVnICYjNDM7IG9mZikgaXMgd3JpdGVhYmxlLiAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjY0MTY6XHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LVx1MDAzZWluc25faWR4LCByZWdzICYjNDM7IGluc24tXHUwMDNlZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cdTAwM2Vkc3RfcmVnKSwgaW5zbi1cdTAwM2VvZmYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQxNy1cdFx0XHQgICAgICAgQlBGX1NJWkUoaW5zbi1cdTAwM2Vjb2RlKSwgQlBGX1dSSVRFLCBpbnNuLVx1MDAzZXNyY19yZWcsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTY0MjQ9c3RhdGljIGludCBjaGVja19hdG9taWNfcm13KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY0OTMtXHQgKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2NDk0Olx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cdTAwM2VpbnNuX2lkeCwgZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cdTAwM2Vkc3RfcmVnKSwgaW5zbi1cdTAwM2VvZmYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQ5NS1cdFx0XHQgICAgICAgQlBGX1NJWkUoaW5zbi1cdTAwM2Vjb2RlKSwgQlBGX1JFQUQsIC0xLCB0cnVlLCBmYWxzZSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQ5Ni1cdGlmICghZXJyIFx1MDAyNlx1MDAyNiBsb2FkX3JlZyBcdTAwM2U9IDApXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjQ5NzpcdFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cdTAwM2VpbnNuX2lkeCwgZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cdTAwM2Vkc3RfcmVnKSxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDk4LVx0XHRcdFx0ICAgICAgIGluc24tXHUwMDNlb2ZmLCBCUEZfU0laRShpbnNuLVx1MDAzZWNvZGUpLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTA4LVx0LyogQ2hlY2sgd2hldGhlciB3ZSBjYW4gd3JpdGUgaW50byB0aGUgc2FtZSBtZW1vcnkuICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjUwOTpcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBlbnYtXHUwMDNlaW5zbl9pZHgsIGRzdF9yZWcsIGFyZ25vX2Zyb21fcmVnKGluc24tXHUwMDNlZHN0X3JlZyksIGluc24tXHUwMDNlb2ZmLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1MTAtXHRcdFx0ICAgICAgIEJQRl9TSVpFKGluc24tXHUwMDNlY29kZSksIEJQRl9XUklURSwgLTEsIHRydWUsIGZhbHNlKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NzI0MD1zdGF0aWMgaW50IHByb2Nlc3NfZHlucHRyX2Z1bmMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzI3Ni1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQlBGX0RZTlBUUl9TSVpFOyBpICYjNDM7PSA4KSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NzI3NzpcdFx0XHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgaW5zbl9pZHgsIHJlZywgYXJnbm8sXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzI3OC1cdFx0XHRcdFx0ICAgICAgIGksIEJQRl9EVywgQlBGX1dSSVRFLCAtMSwgZmFsc2UsIGZhbHNlKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NzM2MD1zdGF0aWMgaW50IHByb2Nlc3NfaXRlcl9hcmcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubywgaW50IGluc25faWR4LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03Mzk3LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9zbG90cyAqIDg7IGkgJiM0Mzs9IEJQRl9SRUdfU0laRSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjczOTg6XHRcdFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGluc25faWR4LCByZWcsIGFyZ25vLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTczOTktXHRcdFx0XHRcdCAgICAgICBpLCBCUEZfRFcsIEJQRl9XUklURSwgLTEsIGZhbHNlLCBmYWxzZSk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEwMTczPXN0YXRpYyBpbnQgY2hlY2tfaGVscGVyX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDI1OS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG1ldGEuYWNjZXNzX3NpemU7IGkmIzQzOyYjNDM7KSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTAyNjA6XHRcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBpbnNuX2lkeCwgcmVncyAmIzQzOyBtZXRhLnJlZ25vLCBhcmdub19mcm9tX3JlZyhtZXRhLnJlZ25vKSwgaSwgQlBGX0IsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTAyNjEtXHRcdFx0XHQgICAgICAgQlBGX1dSSVRFLCAtMSwgZmFsc2UsIGZhbHNlKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA1MDctXHRcdFx0XHQgKiBpdCB3aWxsIGNvbmZ1c2UgdGhlIGNoZWNrIG9mIFBUUl9UT19CVEZfSUQgaW5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDUwODpcdFx0XHRcdCAqIGNoZWNrX21lbV9hY2Nlc3MoKS5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDUwOS1cdFx0XHRcdCAqL1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTQzNT1zdGF0aWMgaW50IHByb2Nlc3NfaXJxX2ZsYWcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE0NjItXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE0NjM6XHRcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBlbnYtXHUwMDNlaW5zbl9pZHgsIHJlZywgYXJnbm8sIDAsIEJQRl9EVyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTQ2NC1cdFx0XHRcdCAgICAgICBCUEZfV1JJVEUsIC0xLCBmYWxzZSwgZmFsc2UpO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzIzNz1zdGF0aWMgaW50IGRvX2NoZWNrX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgYm9vbCAqZG9fcHJpbnRfc3RhdGUpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3Mjc0LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE3Mjc1Olx0XHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LVx1MDAzZWluc25faWR4LCBjdXJfcmVncyhlbnYpICYjNDM7IGluc24tXHUwMDNlZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cdTAwM2Vkc3RfcmVnKSxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzI3Ni1cdFx0XHRcdCAgICAgICBpbnNuLVx1MDAzZW9mZiwgQlBGX1NJWkUoaW5zbi1cdTAwM2Vjb2RlKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODcyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgQlBGIHZlcmlmaWVyIGVudHJ5IHBvaW50OgoKKipEaXZpbmcgaW50byB0aGUgQlBGIFZlcmlmaWVyOiBgYnBmX2NoZWNrYCoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBCUEYgdmVyaWZpZXIga2lja3MgaW4uIE5hdHVyYWxseSwgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciB0aGUgKmNoZWNrKiBpdHNlbGYsIHdoaWNoIHNlZW1zIHRvIGJlIGBicGZfY2hlY2tgLiBOb3csIEkgbmVlZCB0byB0cmFjZSB0aGlzIGZ1bmN0aW9uIGRvd24uIExldCYjMzk7cyBoZWFkIG92ZXIgdG8gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIG1hZ2ljIHByb2JhYmx5IGhhcHBlbnMuIFRpbWUgdG8gcHVsbCB1cCB0aGUgc291cmNlIGFuZCBzZWUgd2hhdCYjMzk7cyB3aGF0LiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIGNvcmUgbG9naWMgdGhlIHZlcmlmaWVyIHVzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2NoZWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz01NT1zdGF0aWMgYm9vbCBicGZfZ2xvYmFsX3BlcmNwdV9tYV9zZXQ7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTYtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTc6LyogYnBmX2NoZWNrKCkgaXMgYSBzdGF0aWMgY29kZSBhbmFseXplciB0aGF0IHdhbGtzIGVCUEYgcHJvZ3JhbVxua2VybmVsL2JwZi92ZXJpZmllci5jLTU4LSAqIGluc3RydWN0aW9uIGJ5IGluc3RydWN0aW9uIGFuZCB1cGRhdGVzIHJlZ2lzdGVyL3N0YWNrIHN0YXRlLlxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTg5OT1zdGF0aWMgaW50IHByb2Nlc3Nfa2ZfYXJnX3B0cl90b19yYnRyZWVfbm9kZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTkxMC0gKiBMU00gaG9va3MgYW5kIGl0ZXJzIChib3RoIHNsZWVwYWJsZSBhbmQgbm9uLXNsZWVwYWJsZSkgYXJlIHNhZmUuXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE5MTE6ICogQW55IHNsZWVwYWJsZSBwcm9ncyBhcmUgYWxzbyBzYWZlIHNpbmNlIGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KCkgZW5mb3JjZVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExOTEyLSAqIHRoZW0gY2FuIG9ubHkgYmUgYXR0YWNoZWQgdG8gc29tZSBzcGVjaWZpYyBob29rIHBvaW50cy5cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg4OTM9YnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTI3LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4OTI4OmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTI5LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5MzMzPXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTM2My1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTM2NDpcdHJldCA9IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KFx1MDAyNmVudi1cdTAwM2Vsb2csIHByb2csIHRndF9wcm9nLCBidGZfaWQsIFx1MDAyNnRndF9pbmZvKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTM2NS1cdGlmIChyZXQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NDMyLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NDMzOmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTQzNC1cdFx0XHRcdCAgc3RydWN0IGJwZl9hdHRhY2hfdGFyZ2V0X2luZm8gKnRndF9pbmZvKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTYzMD1pbnQgYnBmX2ZpeHVwX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc3My1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTc3NDppbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKnByb2csIHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc3NS1cdCAgICAgIHN0cnVjdCBicGZfbG9nX2F0dHIgKmF0dHJfbG9nKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc4OC1cdC8qICYjMzk7c3RydWN0IGJwZl92ZXJpZmllcl9lbnYmIzM5OyBjYW4gYmUgZ2xvYmFsLCBidXQgc2luY2UgaXQmIzM5O3Mgbm90IHNtYWxsLFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5Nzg5Olx0ICogYWxsb2NhdGUvZnJlZSBpdCBldmVyeSB0aW1lIGJwZl9jaGVjaygpIGlzIGNhbGxlZFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzkwLVx0ICovXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODYzLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5ODY0Olx0cmV0ID0gYnBmX2NoZWNrX2J0Zl9pbmZvX2Vhcmx5KGVudiwgYXR0ciwgdWF0dHIpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODY1LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NzUtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NzY6XHRyZXQgPSBicGZfY2hlY2tfYnRmX2luZm8oZW52LCBhdHRyLCB1YXR0cik7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NzctXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg4OS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTg5MDpcdHJldCA9IGJwZl9jaGVja19jZmcoZW52KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg5MS1cdGlmIChyZXQgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTE2NQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHRoZSBCUEYgVmVyaWZpZXIgRW50cnkgUG9pbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGUgQlBGIHZlcmlmaWVyIHdvcmtzLCBhbmQgaXQgbG9va3MgbGlrZSBgYnBmX2NoZWNrYCBpcyB0aGUga2V5IGVudHJ5IHBvaW50IOKAkyB0aGUgbWFpbiBmdW5jdGlvbiB3ZSYjMzk7cmUgaW50ZXJlc3RlZCBpbi4gYGJwZl9jaGVja2AgaXMgYSBnb29kIGZvY3VzIHN5bWJvbCwgSSB0aGluay4gSW5pdGlhbGx5LCBJIGNvbnNpZGVyZWQgaW5jbHVkaW5nIG90aGVyIGZ1bmN0aW9ucyBsaWtlIGBjaGVja19tZW1fYWNjZXNzYCBvciBgZG9fY2hlY2tfaW5zbmAsIGJ1dCB0aGV5JiMzOTtyZSBib3RoIHN0YXRpYywgd2hpY2ggbWFrZXMgdGhlbSBsZXNzIHVzZWZ1bCBmb3IgYSBicm9hZGVyIGFuYWx5c2lzLgoKVGhlIHBhdGNoIEkmIzM5O20gcmV2aWV3aW5nIHNwZWNpZmljYWxseSBtZW50aW9ucyBgY2hlY2tfcHRyX3RvX2J0Zl9hY2Nlc3NgLCB3aGljaCBtYWtlcyBtZSBkaWcgYSBsaXR0bGUgZnVydGhlciB0byBpZGVudGlmeSBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGUgQlBGIHZlcmlmaWVyLCB3aGljaCBtaWdodCBiZSBoZWxwZnVsIHRvIGluY2x1ZGUuCgpTbywgSSBjb25maXJtZWQgdGhhdCBgYnBmX2NoZWNrYCBpdHNlbGYgaXNuJiMzOTt0IHN0YXRpYy4gR29vZCwgdGhhdCYjMzk7cyB3aGF0IEkgd2FzIGxvb2tpbmcgZm9yLiBOb3csIGp1c3QgdG8gYmUgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBjaGVjayB0aGUga2VybmVsIGNvbmZpZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGVuYWJsZWQsIGFzIHRoaXMgaXMgYSBjb3JlIHJlcXVpcmVtZW50IGZvciB0aGUgQlBGIHZlcmlmaWVyIHRvIGJlIGFjdGl2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2NoZWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9zeXNjYWxsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9zeXNjYWxsLmM9NzI9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyAqIGNvbnN0IGJwZl9tYXBfdHlwZXNbXSA9IHtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy05MS0gKi9cbmtlcm5lbC9icGYvc3lzY2FsbC5jOjkyOmludCBicGZfY2hlY2tfdWFyZ190YWlsX3plcm8oYnBmcHRyX3QgdWFkZHIsXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy05My1cdFx0XHQgICAgIHNpemVfdCBleHBlY3RlZF9zaXplLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTI5NzI9c3RhdGljIGludCBicGZfcHJvZ19sb2FkKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0ciwgc3RydWN0IGJwZl9sb2dfYXR0ciAqYXR0cl9sb2cpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzE5Ni1cdC8qIHJ1biBlQlBGIHZlcmlmaWVyICovXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzozMTk3Olx0ZXJyID0gYnBmX2NoZWNrKFx1MDAyNnByb2csIGF0dHIsIHVhdHRyLCBhdHRyX2xvZyk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zMTk4LVx0aWYgKGVyciBcdTAwM2MgMClcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0zNjg5PXN0YXRpYyBpbnQgYnBmX3RyYWNpbmdfcHJvZ19hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM4MjEtXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzozODIyOlx0XHRlcnIgPSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChOVUxMLCBwcm9nLCB0Z3RfcHJvZywgYnRmX2lkLFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzgyMy1cdFx0XHRcdFx0ICAgICAgXHUwMDI2dGd0X2luZm8pO1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTUxNTQ9c3RhdGljIGludCBicGZfcHJvZ19nZXRfaW5mb19ieV9mZChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01MTY4LVx0bGVuID0gb2Zmc2V0b2ZlbmQoc3RydWN0IGJwZl9wcm9nX2luZm8sIGF0dGFjaF9idGZfaWQpO1xua2VybmVsL2JwZi9zeXNjYWxsLmM6NTE2OTpcdGVyciA9IGJwZl9jaGVja191YXJnX3RhaWxfemVybyhVU0VSX0JQRlBUUih1aW5mbyksIGxlbiwgaW5mb19sZW4pO1xua2VybmVsL2JwZi9zeXNjYWxsLmMtNTE3MC1cdGlmIChlcnIpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9NTQ0ND1zdGF0aWMgaW50IGJwZl9tYXBfZ2V0X2luZm9fYnlfZmQoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTQ1NC1cdGxlbiA9IG9mZnNldG9mZW5kKHN0cnVjdCBicGZfbWFwX2luZm8sIGhhc2hfc2l6ZSk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1NDU1Olx0ZXJyID0gYnBmX2NoZWNrX3VhcmdfdGFpbF96ZXJvKFVTRVJfQlBGUFRSKHVpbmZvKSwgbGVuLCBpbmZvX2xlbik7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NDU2LVx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz01NTE1PXN0YXRpYyBpbnQgYnBmX2J0Zl9nZXRfaW5mb19ieV9mZChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTIzLVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NTUyNDpcdGVyciA9IGJwZl9jaGVja191YXJnX3RhaWxfemVybyhVU0VSX0JQRlBUUih1aW5mbyksIHNpemVvZigqdWluZm8pLCBpbmZvX2xlbik7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTI1LVx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz01NTMxPXN0YXRpYyBpbnQgYnBmX2xpbmtfZ2V0X2luZm9fYnlfZmQoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTU0MC1cbmtlcm5lbC9icGYvc3lzY2FsbC5jOjU1NDE6XHRlcnIgPSBicGZfY2hlY2tfdWFyZ190YWlsX3plcm8oVVNFUl9CUEZQVFIodWluZm8pLCBzaXplb2YoaW5mbyksIGluZm9fbGVuKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTU1NDItXHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTU1Njk9c3RhdGljIGludCB0b2tlbl9nZXRfaW5mb19ieV9mZChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTc3LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NTU3ODpcdGVyciA9IGJwZl9jaGVja191YXJnX3RhaWxfemVybyhVU0VSX0JQRlBUUih1aW5mbyksIHNpemVvZigqdWluZm8pLCBpbmZvX2xlbik7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTc5LVx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz02MzU0PXN0YXRpYyBpbnQgX19zeXNfYnBmKGVudW0gYnBmX2NtZCBjbWQsIGJwZnB0cl90IHVhdHRyLCB1bnNpZ25lZCBpbnQgc2l6ZSxcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy02MzYyLVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NjM2MzpcdGVyciA9IGJwZl9jaGVja191YXJnX3RhaWxfemVybyh1YXR0ciwgc2l6ZW9mKGF0dHIpLCBzaXplKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTYzNjQtXHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTYzNzQtXHRpZiAoY21kIFx1MDAyNiBCUEZfQ09NTU9OX0FUVFJTKSB7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo2Mzc1Olx0XHRlcnIgPSBicGZfY2hlY2tfdWFyZ190YWlsX3plcm8odWF0dHJfY29tbW9uLFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjM3Ni1cdFx0XHRcdFx0ICAgICAgIG9mZnNldG9mZW5kKHN0cnVjdCBicGZfY29tbW9uX2F0dHIsIGxvZ190cnVlX3NpemUpLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDg5NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBMb2FkaW5nIE1lY2hhbmlzbSoqCgpPa2F5LCBzbyBgYnBmX3Byb2dfbG9hZGAgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBsb2FkaW5nIEJQRiBwcm9ncmFtcywgYW5kIGl0IG1ha2VzIGEgY2FsbCB0byBgYnBmX2NoZWNrYC4gSW50ZXJlc3RpbmcuIFNpbmNlIGBicGZfcHJvZ19sb2FkYCBpcyBzdGF0aWMsIHRoYXQgbWVhbnMgbXkgZm9jdXMgc2hvdWxkIGJlIG9uIHdoZXJlIGl0JiMzOTtzIGNhbGxlZCBmcm9tLCBhbmQgdGhhdCYjMzk7cyB0aGUgYF9fc3lzX2JwZmAgc3lzdGVtIGNhbGwuIENvbnNlcXVlbnRseSwgYGJwZl9jaGVja2AgbG9va3MgbGlrZSBhIGtleSBmdW5jdGlvbiB0byB1bmRlcnN0YW5kIHRoZSBpbnRlZ3JpdHkgY2hlY2tzIGJlaW5nIHBlcmZvcm1lZCBkdXJpbmcgcHJvZ3JhbSBsb2FkaW5nLiBJdCBtYWtlcyBzZW5zZSB0byB6ZXJvIGluIG9uIHRoYXQgc3ltYm9sLgoKQnV0LCBpcyBgYnBmX2NoZWNrYCB0aGUgb25seSBjcml0aWNhbCBmdW5jdGlvbj8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0LiBBcmUgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9ucyBpbnZvbHZlZCBpbiB0aGlzIHByb2Nlc3MgdGhhdCBuZWVkIHNjcnV0aW55PyBMb29raW5nIGF0IHRoaXMgcGF0Y2gsIEkgc2VlIG1vZGlmaWNhdGlvbnMgdG8gYGNoZWNrX3B0cl90b19idGZfYWNjZXNzYCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgQlBGIHZlcmlmaWVyLiBUaGUgcHJlc2VuY2Ugb2YgdGhlIGBCUEZfU1lTQ0FMTGAgY29uZmlnIHN5bWJvbCB0ZWxscyBtZSB0aGlzIGlzIGFsbCB0aWVkIGRpcmVjdGx5IHRvIHRoZSBCUEYgc3lzdGVtIGNhbGwgaW50ZXJmYWNlLiBHb3QgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5pdC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNzgKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipXaGVyZSYjMzk7cyBUaGF0IERhbmcgTWFjcm8/KioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgQlBGIGNvZGUsIGFuZCBJJiMzOTttIHVzaW5nIGBCUEZfU1lTQ0FMTGAgaW4gdGhlcmUsIG9yIG1heWJlIEkmIzM5O20gcmVhZGluZyBzb21lIGV4aXN0aW5nIGNvZGUgdGhhdCB1c2VzIGl0LiBIb2xkIG9uIGEgc2Vjb25k4oCmIHdoZXJlIGV4YWN0bHkgZGlkIHRoYXQgbWFjcm8gZ2V0IGRlZmluZWQ/IEkgY2FuJiMzOTt0IHF1aXRlIHJlbWVtYmVyIGlmIGl0JiMzOTtzIGluIHRoZSBzdGFuZGFyZCBoZWFkZXJzIG9yIGlmIGl0JiMzOTtzIGRlZmluZWQgd2l0aGluIHRoZSBCUEYgdG9vbGNoYWluIGl0c2VsZiBhbmQgdXNlZCBpbiBzb21lIHNoYXJlZCBpbmNsdWRlIGZpbGVzLCBvciBpZiB0aGVyZSYjMzk7cyBzb21lIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGdvaW5nIG9uLiBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgZGVjbGFyYXRpb24gdG8gdW5kZXJzdGFuZCBwcmVjaXNlbHkgaG93IGl0JiMzOTtzIGV4cGFuZGluZyBhbmQgaWYgaXQgd2lsbCB3b3JrIGluIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQuIFRpbWUgdG8gZ28gZGlnZ2luZyB0aHJvdWdoIHRoZSBpbmNsdWRlcywgbWF5YmUgYSBxdWljayBncmVwIHRocm91Z2ggdGhlIGtlcm5lbCBoZWFkZXJzLi4uIG9yIG1heWJlIGl0JiMzOTtzIGluIGEgaGVscGVyIGZ1bmN0aW9uIGRlZmluaXRpb24/IEkgc2hvdWxkIGtlZXAgYW4gZXllIG91dCB0byBtYWtlIHN1cmUgaXQmIzM5O3MgY29ycmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNjA1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgQlBGIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gYEJQRl9TWVNDQUxMYCBpcyAqdGhlKiBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSYjMzk7cmUgZm9jdXNpbmcgb24gaW5pdGlhbGx5LiBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIHJlbGF0ZWQgY29uZmlncyB0aGF0IG1pZ2h0IGNvbWUgaW50byBwbGF5LiBBIGdvb2Qgc3RhcnRpbmcgcG9pbnQgaXMgdG8gY29uc2lkZXIgdGhlIGNvbnRleHQgb2YgaXRzIHVzZSB3aXRoaW4gdGhlIGtlcm5lbC4KCkkgc2VlIHRoYXQgdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaF9mYWlsLmNgIHRlc3QgY2FzZSBlbXBsb3lzIGBicGZfcmN1X3JlYWRfbG9ja2AsIGBicGZfcmN1X3JlYWRfdW5sb2NrYCwgYW5kIGBicGZfbWFwX2xvb2t1cF9lbGVtYC4gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMganVzdCBhIHN0YW5kYXJkIEJQRiBwcm9ncmFtLiBObyBzdXJwcmlzZXMgdGhlcmUuCgpNeSBuZXh0IGxpbmUgb2YgdGhpbmtpbmcgaXMgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gY29uc2lkZXIgZm9yIHRoaXMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgd2UgcmVxdWlyZSBhbnl0aGluZyBlbHNlIGluIGNvbmp1bmN0aW9uIHdpdGggYFBUUl9VTlRSVVNURURgLCBgTUVNX1JDVWAsIG9yIGBNRU1fQUxMT0NgLiBGcm9tIHdoYXQgSSBrbm93LCB0aG9zZSBhbGwgc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIHN0YW5kYXJkIEJQRiB2ZXJpZmllciBhbHJlYWR5LgoKRmluYWxseSwgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBgYnBmX2NoZWNrYCBzaWduYXR1cmUsIGp1c3QgdG8gYmUgc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBteSBhc3N1bXB0aW9ucyBhcmUgY29uc2lzdGVudCB3aXRoIHRoZSB2ZXJpZmllciYjMzk7cyBjdXJyZW50IGltcGxlbWVudGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgYnBmX2NoZWNrXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTYzMD1pbnQgYnBmX2ZpeHVwX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc3My1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTc3NDppbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKnByb2csIHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc3NS1cdCAgICAgIHN0cnVjdCBicGZfbG9nX2F0dHIgKmF0dHJfbG9nKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjIyNAoJCQkJCQkJb3V0cHV0OiA5OQoJCQkJCQkJdGhvdWdodHM6IDExMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgVmVyaWZpZXIgQ2hhbmdlKioKCk9rYXksIHNvIGBicGZfY2hlY2tgIGlzIHRoZSBjcml0aWNhbCBmdW5jdGlvbiBoZXJlLCB0aGUgbm9uLXN0YXRpYyBvbmUuIFRoYXQmIzM5O3MgZ29vZCB0byBjb25maXJtLiBJIG5lZWQgdG8gbWFrZSBzb21lIGRlY2lzaW9ucyBiYXNlZCBvbiB0aGlzLgoKR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgcGF0Y2gsIG1vZGlmeWluZyB0aGUgQlBGIHZlcmlmaWVyJiMzOTtzIGhhbmRsaW5nIG9mIHVudHJ1c3RlZCBwb2ludGVycywgc3BlY2lmaWNhbGx5IGxvb3NlbmluZyByZXN0cmljdGlvbnMgb24gcmVhZHMgYW5kIGVsaW1pbmF0aW5nIHRoZSBuZWVkIGZvciBhIHJlZmVyZW5jZWQgSUQgZm9yIHRoZXNlIHVudHJ1c3RlZCBhbGxvY2F0ZWQgb2JqZWN0cywgaXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkZWVwIHdpdGhpbiB0aGUgY29yZSB2ZXJpZmllciBsb2dpYy4gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgYW5kIHJlcXVpcmVzIHNwZWNpZmljIGF0dGVudGlvbi4KClRoZXJlZm9yZSwgbXkgc2V0dGluZ3Mgd2lsbCBiZSBhcyBmb2xsb3dzOiBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gSSYjMzk7bGwgZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0cyBvbiBgYnBmX2NoZWNrYCAtIHNvLCBgRm9jdXNTeW1ib2xzYCBpcyBgWyYjMzQ7YnBmX2NoZWNrJiMzNDtdYC4gSSB3YW50IHRvIGVuYWJsZSBgQlBGX1NZU0NBTExgIGFzIHdlbGwgLSBgRW5hYmxlQ29uZmlnc2Agd2lsbCBiZSBgWyYjMzQ7QlBGX1NZU0NBTEwmIzM0O11gLiBUaGUgcmVhc29uaW5nIGJlaGluZCB0aGVzZSBzZXR0aW5ncywgd2hpY2ggc2hvdWxkIGJlIHdlbGwgdW5kZXJzdG9vZCwgaXMgdGhhdCB0aGUgbW9kaWZpY2F0aW9uIGlzIGNvcmUgbG9naWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9jaGVjayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyJiMzOTtzIGhhbmRsaW5nIG9mIHVudHJ1c3RlZCBwb2ludGVycyB0byBhbGxvY2F0ZWQgb2JqZWN0cywgc3BlY2lmaWNhbGx5IGFsbG93aW5nIHJlYWRzIGJ1dCBwcmV2ZW50aW5nIHdyaXRlcywgYW5kIHJlbW92aW5nIHRoZSByZXF1aXJlbWVudCBmb3IgYSByZWZlcmVuY2VkIElEIGZvciB1bnRydXN0ZWQgYWxsb2NhdGVkIG9iamVjdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXImIzM5O3MgaGFuZGxpbmcgb2YgdW50cnVzdGVkIHBvaW50ZXJzIHRvIGFsbG9jYXRlZCBvYmplY3RzLCBzcGVjaWZpY2FsbHkgYWxsb3dpbmcgcmVhZHMgYnV0IHByZXZlbnRpbmcgd3JpdGVzLCBhbmQgcmVtb3ZpbmcgdGhlIHJlcXVpcmVtZW50IGZvciBhIHJlZmVyZW5jZWQgSUQgZm9yIHVudHJ1c3RlZCBhbGxvY2F0ZWQgb2JqZWN0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjAxOjQyLjE4NzU4NjQ3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzgyNDQ5ODA2MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyJ3MgaGFuZGxpbmcgb2YgdW50cnVzdGVkIHBvaW50ZXJzIHRvIGFsbG9jYXRlZCBvYmplY3RzLCBzcGVjaWZpY2FsbHkgYWxsb3dpbmcgcmVhZHMgYnV0IHByZXZlbnRpbmcgd3JpdGVzLCBhbmQgcmVtb3ZpbmcgdGhlIHJlcXVpcmVtZW50IGZvciBhIHJlZmVyZW5jZWQgSUQgZm9yIHVudHJ1c3RlZCBhbGxvY2F0ZWQgb2JqZWN0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDA6MDE6NDIuMTg3NTk2NjJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NDE4MDUxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGU3MGE3ZWEzNzMwYTZlNWVlZDIzNDcwY2NhOGZhZDM0MGVkNDU2OTVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDA6MDE6NDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuaW5kZXggN2FhNDczNDJkYzY1OS4uMjRjMTUxYWQyZTYyOCAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5AQCAtNTgwNCwxMyArNTgwNCwxNSBAQCBzdGF0aWMgaW50IGNoZWNrX3B0cl90b19idGZfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuIFxcdFxcdCAqIHByb2dyYW0gYWxsb2NhdGVkIG9iamVjdHMgKHdoaWNoIGFsd2F5cyBoYXZlIGlkIFxcdTAwM2UgMCksXFxuIFxcdFxcdCAqIGJ1dCBub3QgZm9yIHVudHJ1c3RlZCBQVFJfVE9fQlRGX0lEIHwgTUVNX0FMTE9DLlxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0aWYgKGF0eXBlICE9IEJQRl9SRUFEIFxcdTAwMjZcXHUwMDI2ICF0eXBlX2lzX3B0cl9hbGxvY19vYmoocmVnLVxcdTAwM2V0eXBlKSkge1xcbitcXHRcXHRpZiAoYXR5cGUgIT0gQlBGX1JFQUQgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICghdHlwZV9pc19wdHJfYWxsb2Nfb2JqKHJlZy1cXHUwMDNldHlwZSkgfHwgcmVnLVxcdTAwM2V0eXBlIFxcdTAwMjYgUFRSX1VOVFJVU1RFRCkpIHtcXG4gXFx0XFx0XFx0dmVyYm9zZShlbnYsIFxcXCJvbmx5IHJlYWQgaXMgc3VwcG9ydGVkXFxcXG5cXFwiKTtcXG4gXFx0XFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGlmICh0eXBlX2lzX2FsbG9jKHJlZy1cXHUwMDNldHlwZSkgXFx1MDAyNlxcdTAwMjYgIXR5cGVfaXNfbm9uX293bmluZ19yZWYocmVnLVxcdTAwM2V0eXBlKSBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHQgICAgIShyZWctXFx1MDAzZXR5cGUgXFx1MDAyNiBNRU1fUkNVKSBcXHUwMDI2XFx1MDAyNiAhcmVnX2lzX3JlZmVyZW5jZWQoZW52LCByZWcpKSB7XFxuK1xcdFxcdCAgICAhKHJlZy1cXHUwMDNldHlwZSBcXHUwMDI2IChNRU1fUkNVIHwgUFRSX1VOVFJVU1RFRCkpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAhcmVnX2lzX3JlZmVyZW5jZWQoZW52LCByZWcpKSB7XFxuIFxcdFxcdFxcdHZlcmlmaWVyX2J1ZyhlbnYsIFxcXCJhbGxvY2F0ZWQgb2JqZWN0IG11c3QgaGF2ZSBhIHJlZmVyZW5jZWQgaWRcXFwiKTtcXG4gXFx0XFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuIFxcdFxcdH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2hfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2hfZmFpbC5jXFxuaW5kZXggZmNmN2E3NTY3ZGEyMi4uZDdiOGNkNjQ1OGJiOSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaF9mYWlsLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaF9mYWlsLmNcXG5AQCAtOCwxNCArOCwyMiBAQFxcbiAjaW5jbHVkZSBcXFwiLi4vYnBmX2V4cGVyaW1lbnRhbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiYnBmX21pc2MuaFxcXCJcXG4gXFxuK2V4dGVybiB2b2lkIGJwZl9yY3VfcmVhZF9sb2NrKHZvaWQpIF9fa3N5bTtcXG4rZXh0ZXJuIHZvaWQgYnBmX3JjdV9yZWFkX3VubG9jayh2b2lkKSBfX2tzeW07XFxuK1xcbiBzdHJ1Y3Qgbm9kZV9kYXRhIHtcXG4gXFx0bG9uZyBrZXk7XFxuIFxcdGxvbmcgZGF0YTtcXG4gXFx0c3RydWN0IGJwZl9yYl9ub2RlIG5vZGU7XFxuIH07XFxuIFxcbitzdHJ1Y3QgcGxhaW5fZGF0YSB7XFxuK1xcdGxvbmcga2V5O1xcbit9O1xcbitcXG4gc3RydWN0IG1hcF92YWx1ZSB7XFxuIFxcdHN0cnVjdCBub2RlX2RhdGEgX19rcHRyICpub2RlO1xcbitcXHRzdHJ1Y3QgcGxhaW5fZGF0YSBfX2twdHIgKnBsYWluO1xcbiB9O1xcbiBcXG4gc3RydWN0IG5vZGVfZGF0YTIge1xcbkBAIC0zMSw2ICszOSw3IEBAIHN0cnVjdCBub2RlX2RhdGEyIHtcXG4gICogWzM1XSBUWVBFX1RBRyAna3B0cl9yZWYnIHR5cGVfaWQ9MzRcXG4gICovXFxuIHN0cnVjdCBub2RlX2RhdGEgKmp1c3RfaGVyZV9iZWNhdXNlX2J0Zl9idWc7XFxuK3N0cnVjdCBwbGFpbl9kYXRhICpqdXN0X2hlcmVfYmVjYXVzZV9idGZfYnVnMjtcXG4gXFxuIHN0cnVjdCB7XFxuIFxcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfQVJSQVkpO1xcbkBAIC04Miw0ICs5MSw1MyBAQCBsb25nIGRyb3BfcmJfbm9kZV9vZmYodm9pZCAqY3R4KVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rU0VDKFxcXCI/dGNcXFwiKVxcbitfX2ZhaWx1cmUgX19tc2coXFxcIm9ubHkgcmVhZCBpcyBzdXBwb3J0ZWRcXFwiKVxcbitsb25nIHdyaXRlX3VudHJ1c3RlZF9hbGxvY19vYmoodm9pZCAqY3R4KVxcbit7XFxuK1xcdHN0cnVjdCBtYXBfdmFsdWUgKm1hcHZhbDtcXG4rXFx0c3RydWN0IG5vZGVfZGF0YSAqcmVzO1xcbitcXHRpbnQgaWR4ID0gMDtcXG4rXFxuK1xcdG1hcHZhbCA9IGJwZl9tYXBfbG9va3VwX2VsZW0oXFx1MDAyNnNvbWVfbm9kZXMsIFxcdTAwMjZpZHgpO1xcbitcXHRpZiAoIW1hcHZhbClcXG4rXFx0XFx0cmV0dXJuIDE7XFxuK1xcbitcXHRicGZfcmN1X3JlYWRfbG9jaygpO1xcbitcXHRyZXMgPSBtYXB2YWwtXFx1MDAzZW5vZGU7XFxuK1xcdGlmICghcmVzKSB7XFxuK1xcdFxcdGJwZl9yY3VfcmVhZF91bmxvY2soKTtcXG4rXFx0XFx0cmV0dXJuIDI7XFxuK1xcdH1cXG4rXFx0YmFycmllcl92YXIocmVzKTtcXG4rXFx0YnBmX3JjdV9yZWFkX3VubG9jaygpO1xcbitcXG4rXFx0cmVzLVxcdTAwM2VrZXkgPSA0MjtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwiP3RjXFxcIilcXG4rX19zdWNjZXNzXFxuK2xvbmcgcmVhZF91bnRydXN0ZWRfYWxsb2Nfb2JqKHZvaWQgKmN0eClcXG4re1xcbitcXHRzdHJ1Y3QgbWFwX3ZhbHVlICptYXB2YWw7XFxuK1xcdHN0cnVjdCBwbGFpbl9kYXRhICpyZXM7XFxuK1xcdGludCBpZHggPSAwO1xcbitcXG4rXFx0bWFwdmFsID0gYnBmX21hcF9sb29rdXBfZWxlbShcXHUwMDI2c29tZV9ub2RlcywgXFx1MDAyNmlkeCk7XFxuK1xcdGlmICghbWFwdmFsKVxcbitcXHRcXHRyZXR1cm4gMTtcXG4rXFxuK1xcdGJwZl9yY3VfcmVhZF9sb2NrKCk7XFxuK1xcdHJlcyA9IG1hcHZhbC1cXHUwMDNlcGxhaW47XFxuK1xcdGlmICghcmVzKSB7XFxuK1xcdFxcdGJwZl9yY3VfcmVhZF91bmxvY2soKTtcXG4rXFx0XFx0cmV0dXJuIDI7XFxuK1xcdH1cXG4rXFx0YmFycmllcl92YXIocmVzKTtcXG4rXFx0YnBmX3JjdV9yZWFkX3VubG9jaygpO1xcbitcXG4rXFx0cmV0dXJuIHJlcy1cXHUwMDNla2V5O1xcbit9XFxuK1xcbiBjaGFyIF9saWNlbnNlW10gU0VDKFxcXCJsaWNlbnNlXFxcIikgPSBcXFwiR1BMXFxcIjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDA6MDE6NDIuODMyNTEyNzk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mzc2MDAwNDM2MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyJ3MgaGFuZGxpbmcgb2YgdW50cnVzdGVkIHBvaW50ZXJzIHRvIGFsbG9jYXRlZCBvYmplY3RzLCBzcGVjaWZpY2FsbHkgYWxsb3dpbmcgcmVhZHMgYnV0IHByZXZlbnRpbmcgd3JpdGVzLCBhbmQgcmVtb3ZpbmcgdGhlIHJlcXVpcmVtZW50IGZvciBhIHJlZmVyZW5jZWQgSUQgZm9yIHVudHJ1c3RlZCBhbGxvY2F0ZWQgb2JqZWN0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTcwYTdlYTM3MzBhNmU1ZWVkMjM0NzBjY2E4ZmFkMzQwZWQ0NTY5NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDI5IDAwOjAxOjQxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCA3YWE0NzM0MmRjNjU5Li4yNGMxNTFhZDJlNjI4IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC01ODA0LDEzICs1ODA0LDE1IEBAIHN0YXRpYyBpbnQgY2hlY2tfcHRyX3RvX2J0Zl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0ICogcHJvZ3JhbSBhbGxvY2F0ZWQgb2JqZWN0cyAod2hpY2ggYWx3YXlzIGhhdmUgaWQgXHUwMDNlIDApLFxuIFx0XHQgKiBidXQgbm90IGZvciB1bnRydXN0ZWQgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQy5cbiBcdFx0ICovXG4tXHRcdGlmIChhdHlwZSAhPSBCUEZfUkVBRCBcdTAwMjZcdTAwMjYgIXR5cGVfaXNfcHRyX2FsbG9jX29iaihyZWctXHUwMDNldHlwZSkpIHtcbitcdFx0aWYgKGF0eXBlICE9IEJQRl9SRUFEIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgKCF0eXBlX2lzX3B0cl9hbGxvY19vYmoocmVnLVx1MDAzZXR5cGUpIHx8IHJlZy1cdTAwM2V0eXBlIFx1MDAyNiBQVFJfVU5UUlVTVEVEKSkge1xuIFx0XHRcdHZlcmJvc2UoZW52LCBcIm9ubHkgcmVhZCBpcyBzdXBwb3J0ZWRcXG5cIik7XG4gXHRcdFx0cmV0dXJuIC1FQUNDRVM7XG4gXHRcdH1cbiBcbiBcdFx0aWYgKHR5cGVfaXNfYWxsb2MocmVnLVx1MDAzZXR5cGUpIFx1MDAyNlx1MDAyNiAhdHlwZV9pc19ub25fb3duaW5nX3JlZihyZWctXHUwMDNldHlwZSkgXHUwMDI2XHUwMDI2XG4tXHRcdCAgICAhKHJlZy1cdTAwM2V0eXBlIFx1MDAyNiBNRU1fUkNVKSBcdTAwMjZcdTAwMjYgIXJlZ19pc19yZWZlcmVuY2VkKGVudiwgcmVnKSkge1xuK1x0XHQgICAgIShyZWctXHUwMDNldHlwZSBcdTAwMjYgKE1FTV9SQ1UgfCBQVFJfVU5UUlVTVEVEKSkgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICAhcmVnX2lzX3JlZmVyZW5jZWQoZW52LCByZWcpKSB7XG4gXHRcdFx0dmVyaWZpZXJfYnVnKGVudiwgXCJhbGxvY2F0ZWQgb2JqZWN0IG11c3QgaGF2ZSBhIHJlZmVyZW5jZWQgaWRcIik7XG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaF9mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaF9mYWlsLmNcbmluZGV4IGZjZjdhNzU2N2RhMjIuLmQ3YjhjZDY0NThiYjkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaF9mYWlsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoX2ZhaWwuY1xuQEAgLTgsMTQgKzgsMjIgQEBcbiAjaW5jbHVkZSBcIi4uL2JwZl9leHBlcmltZW50YWwuaFwiXG4gI2luY2x1ZGUgXCJicGZfbWlzYy5oXCJcbiBcbitleHRlcm4gdm9pZCBicGZfcmN1X3JlYWRfbG9jayh2b2lkKSBfX2tzeW07XG4rZXh0ZXJuIHZvaWQgYnBmX3JjdV9yZWFkX3VubG9jayh2b2lkKSBfX2tzeW07XG4rXG4gc3RydWN0IG5vZGVfZGF0YSB7XG4gXHRsb25nIGtleTtcbiBcdGxvbmcgZGF0YTtcbiBcdHN0cnVjdCBicGZfcmJfbm9kZSBub2RlO1xuIH07XG4gXG4rc3RydWN0IHBsYWluX2RhdGEge1xuK1x0bG9uZyBrZXk7XG4rfTtcbitcbiBzdHJ1Y3QgbWFwX3ZhbHVlIHtcbiBcdHN0cnVjdCBub2RlX2RhdGEgX19rcHRyICpub2RlO1xuK1x0c3RydWN0IHBsYWluX2RhdGEgX19rcHRyICpwbGFpbjtcbiB9O1xuIFxuIHN0cnVjdCBub2RlX2RhdGEyIHtcbkBAIC0zMSw2ICszOSw3IEBAIHN0cnVjdCBub2RlX2RhdGEyIHtcbiAgKiBbMzVdIFRZUEVfVEFHICdrcHRyX3JlZicgdHlwZV9pZD0zNFxuICAqL1xuIHN0cnVjdCBub2RlX2RhdGEgKmp1c3RfaGVyZV9iZWNhdXNlX2J0Zl9idWc7XG4rc3RydWN0IHBsYWluX2RhdGEgKmp1c3RfaGVyZV9iZWNhdXNlX2J0Zl9idWcyO1xuIFxuIHN0cnVjdCB7XG4gXHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX0FSUkFZKTtcbkBAIC04Miw0ICs5MSw1MyBAQCBsb25nIGRyb3BfcmJfbm9kZV9vZmYodm9pZCAqY3R4KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK1NFQyhcIj90Y1wiKVxuK19fZmFpbHVyZSBfX21zZyhcIm9ubHkgcmVhZCBpcyBzdXBwb3J0ZWRcIilcbitsb25nIHdyaXRlX3VudHJ1c3RlZF9hbGxvY19vYmoodm9pZCAqY3R4KVxuK3tcbitcdHN0cnVjdCBtYXBfdmFsdWUgKm1hcHZhbDtcbitcdHN0cnVjdCBub2RlX2RhdGEgKnJlcztcbitcdGludCBpZHggPSAwO1xuK1xuK1x0bWFwdmFsID0gYnBmX21hcF9sb29rdXBfZWxlbShcdTAwMjZzb21lX25vZGVzLCBcdTAwMjZpZHgpO1xuK1x0aWYgKCFtYXB2YWwpXG4rXHRcdHJldHVybiAxO1xuK1xuK1x0YnBmX3JjdV9yZWFkX2xvY2soKTtcbitcdHJlcyA9IG1hcHZhbC1cdTAwM2Vub2RlO1xuK1x0aWYgKCFyZXMpIHtcbitcdFx0YnBmX3JjdV9yZWFkX3VubG9jaygpO1xuK1x0XHRyZXR1cm4gMjtcbitcdH1cbitcdGJhcnJpZXJfdmFyKHJlcyk7XG4rXHRicGZfcmN1X3JlYWRfdW5sb2NrKCk7XG4rXG4rXHRyZXMtXHUwMDNla2V5ID0gNDI7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rU0VDKFwiP3RjXCIpXG4rX19zdWNjZXNzXG4rbG9uZyByZWFkX3VudHJ1c3RlZF9hbGxvY19vYmoodm9pZCAqY3R4KVxuK3tcbitcdHN0cnVjdCBtYXBfdmFsdWUgKm1hcHZhbDtcbitcdHN0cnVjdCBwbGFpbl9kYXRhICpyZXM7XG4rXHRpbnQgaWR4ID0gMDtcbitcbitcdG1hcHZhbCA9IGJwZl9tYXBfbG9va3VwX2VsZW0oXHUwMDI2c29tZV9ub2RlcywgXHUwMDI2aWR4KTtcbitcdGlmICghbWFwdmFsKVxuK1x0XHRyZXR1cm4gMTtcbitcbitcdGJwZl9yY3VfcmVhZF9sb2NrKCk7XG4rXHRyZXMgPSBtYXB2YWwtXHUwMDNlcGxhaW47XG4rXHRpZiAoIXJlcykge1xuK1x0XHRicGZfcmN1X3JlYWRfdW5sb2NrKCk7XG4rXHRcdHJldHVybiAyO1xuK1x0fVxuK1x0YmFycmllcl92YXIocmVzKTtcbitcdGJwZl9yY3VfcmVhZF91bmxvY2soKTtcbitcbitcdHJldHVybiByZXMtXHUwMDNla2V5O1xuK31cbitcbiBjaGFyIF9saWNlbnNlW10gU0VDKFwibGljZW5zZVwiKSA9IFwiR1BMXCI7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDowMTo0Mi44MzI1MTQ1NThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzE1ODIwMzczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJQRiBWZXJpZmllciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGNoZWNrX3B0cl90b19idGZfYWNjZXNzYCBmdW5jdGlvbiBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gTXkgaW5pdGlhbCByZWFkIGlzIHRoYXQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGJpdCBvZiBhIHNlY3VyaXR5IGhhcmRlbmluZywgcmVsYXRlZCB0byBob3cgdW50cnVzdGVkIHBvaW50ZXJzIGludGVyYWN0IHdpdGggYWxsb2NhdGVkIG9iamVjdHMgd2l0aGluIHRoZSBCUEYgZW52aXJvbm1lbnQuXG5cbkVzc2VudGlhbGx5LCB0aGV5J3JlIG1vZGlmeWluZyB0aGUgY29uZGl0aW9ucyB0aGF0IHBlcm1pdCB3cml0ZSBhY2Nlc3MgdG8gYWxsb2NhdGVkIG9iamVjdHMuIFRoZSBvbGQgd2F5IGFsbG93ZWQgd3JpdGVzIGlmIHRoZSBhY2Nlc3MgdHlwZSB3YXNuJ3QgYSByZWFkIGFuZCB0aGUgcmVnaXN0ZXIgdHlwZSB3YXNuJ3QgcG9pbnRpbmcgdG8gYW4gYWxsb2NhdGVkIG9iamVjdC4gTm93LCB0aGV5J3JlIGFkZGluZyBgfHwgcmVnLVx1MDAzZXR5cGUgXHUwMDI2IFBUUl9VTlRSVVNURURgIHRvIHRoYXQgY2hlY2ssIG1lYW5pbmcgd3JpdGUgYWNjZXNzIGlzIGRlbmllZCBpZiB0aGUgcG9pbnRlciBpcyBjb25zaWRlcmVkIHVudHJ1c3RlZCwgZXZlbiBpZiBpdCdzIHBvaW50aW5nIGF0IHNvbWV0aGluZyBhbGxvY2F0ZWQuIFRoZXkgYWxzbyB0b3VjaGVkIHRoZSBjb25kaXRpb24gdGhhdCBjaGVja3MgcmVmZXJlbmNlZCBJRHMgZm9yIGFsbG9jYXRlZCBvYmplY3RzLCBhZGRpbmcgYFBUUl9VTlRSVVNURURgIHRvIHRoZSBtYXNrLCBzbyB1bnRydXN0ZWQgYWxsb2NhdGVkIG9iamVjdHMgZG9uJ3QgbmVlZCBhIHJlZmVyZW5jZWQgSUQuXG5cblRoaXMgaXMgaW1tZWRpYXRlbHkgc2NyZWFtaW5nIFwiZnV6emluZyB0YXJnZXRcIiBhdCBtZS4gVGhlIGZhY3QgdGhhdCB0aGV5J3JlIHRvdWNoaW5nIHBvaW50ZXIgaGFuZGxpbmcsIGFsbG9jYXRlZCBtZW1vcnksIGFuZCBzZWN1cml0eS1yZWxldmFudCBjaGVja3MgaXMgdmVyeSBwcm9taXNpbmcuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uLiBMZXQncyBzZWUuLi4gdGhlIGNvZGUgaXRzZWxmIGhpZ2hsaWdodHMgdGhlIGBjaGVja19wdHJfdG9fYnRmX2FjY2Vzc2AgZnVuY3Rpb24uIEFuZCBJJ20gcHJldHR5IHN1cmUgdGhpcyBuZWVkcyBgQlBGX1NZU0NBTExgIGVuYWJsZWQuIEkgY2FuIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBsYXRlciwgYnV0IHRoYXQncyBteSB3b3JraW5nIGFzc3VtcHRpb24uXG5cbkhvbGQgb24uLi4gSSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZSBhYm91dCB0aGUgZnV6emluZyB0YXJnZXQuIEFjY29yZGluZyB0byB0aGUgaW5zdHJ1Y3Rpb25zLCBJIHNob3VsZCBiZSBmb2N1c2VkIG9uIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXJzLiBSaWdodCwgc28gYGNoZWNrX3B0cl90b19idGZfYWNjZXNzYCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCdzIGEgYml0IG9mIGEgYnVtbWVyLiBMZXQncyBmaW5kIGl0cyBjYWxsZXIgdG8gc2VlIGlmIHRoYXQncyBtb3JlIGZ1enphYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTAxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDA6MDE6NDguNTQ4MzM3NzYxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NTcwMTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX3B0cl90b19idGZfYWNjZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTcyMT1zdGF0aWMgYm9vbCB0eXBlX2lzX3RydXN0ZWRfb3JfbnVsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MzItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjU3MzM6c3RhdGljIGludCBjaGVja19wdHJfdG9fYnRmX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzM0LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWdzLCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTYwODA9c3RhdGljIGludCBjaGVja19tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpbnNuX2lkeCwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02MjkzLVxcdFxcdCAgICF0eXBlX21heV9iZV9udWxsKHJlZy1cXHUwMDNldHlwZSkpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjI5NDpcXHRcXHRlcnIgPSBjaGVja19wdHJfdG9fYnRmX2FjY2VzcyhlbnYsIHJlZ3MsIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSwgdCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjI5NS1cXHRcXHRcXHRcXHRcXHQgICAgICB2YWx1ZV9yZWdubyk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9Njc0Mz1zdGF0aWMgaW50IGNoZWNrX2hlbHBlcl9tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjgwMC1cXHRjYXNlIFBUUl9UT19CVEZfSUQ6XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjY4MDE6XFx0XFx0cmV0dXJuIGNoZWNrX3B0cl90b19idGZfYWNjZXNzKGVudiwgcmVncywgcmVnLCBhcmdubywgMCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjgwMi1cXHRcXHRcXHRcXHRcXHQgICAgICAgYWNjZXNzX3NpemUsIGFjY2Vzc190eXBlLCAtMSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjAxOjQ4LjYyNTkxMTk5OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3OTc1NTA4OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHJlbGF0ZXMgdG8gdGhlIGtlcm5lbCBjb2RlOlxuXG4qKkFuYWx5emluZyB0aGUgTWVtb3J5IEFjY2VzcyBDb250cm9sIFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgbWVtb3J5IGFjY2VzcyBpcyB2YWxpZGF0ZWQgd2l0aGluIHRoZSBCUEYgc3lzdGVtLiBJIHNlZSB0aGF0IGBjaGVja19wdHJfdG9fYnRmX2FjY2Vzc2AgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uLCBhbmQgaXQncyBiZWluZyBjYWxsZWQgYnkgYGNoZWNrX21lbV9hY2Nlc3NgIGFuZCBgY2hlY2tfaGVscGVyX21lbV9hY2Nlc3NgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYSBjb3JlIGNvbXBvbmVudCBmb3IgZW5zdXJpbmcgc2FmZSBtZW1vcnkgaW50ZXJhY3Rpb25zLiBgY2hlY2tfbWVtX2FjY2Vzc2AsIGluIHR1cm4sIGlzIGJlaW5nIGludm9rZWQgaGlnaGVyIHVwIGluIHRoZSBleGVjdXRpb24gc3RhY2ssIG1vc3QgbGlrZWx5IGZyb20gYGRvX2NoZWNrYCBvciBhIHNpbWlsYXIgZnVuY3Rpb24gZGVhbGluZyB3aXRoIEJQRiBwcm9ncmFtIHZhbGlkYXRpb24uXG5cbk15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byB0cmFjZSB0aGlzIGJhY2sgdG8gdGhlIHRvcC1sZXZlbCBmdW5jdGlvbnMgdG8gZ2V0IGEgaGlnaC1sZXZlbCB2aWV3IG9mIGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLiBHaXZlbiB0aGlzIGtub3dsZWRnZSwgSSBzaG91bGQgYmUgYWJsZSB0byB0cmFjayBiYWNrIHRvIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiBmcm9tIGBjaGVja19tZW1fYWNjZXNzYC4gSWYgbm90LCBJIGNhbiBqdXN0IHVzZSBgYnBmX2NoZWNrYC4gVGhpcyB3aWxsIGdpdmUgbWUgYW4gdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBtZW1vcnkgYWNjZXNzIGNoZWNrIHdvcmtmbG93IGZvciBCUEYgcHJvZ3JhbXMsIHdoaWNoIGlzIHdoYXQgSSdtIGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZy4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBob3cgYWNjZXNzIGlzIGNvbnRyb2xsZWQsIGFuZCBob3cgdnVsbmVyYWJpbGl0aWVzIG1heSBiZSBwcmV2ZW50ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MjIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDowMTo1Mi40MjM0NjU0ODhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExODc0NDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX21lbV9hY2Nlc3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz01NT1zdGF0aWMgYm9vbCBicGZfZ2xvYmFsX3BlcmNwdV9tYV9zZXQ7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTAyLSAqIGNhbiBiZTogUFRSX1RPX01BUF9WQUxVRSwgUFRSX1RPX0NUWCwgUFRSX1RPX1NUQUNLLCBQVFJfVE9fU09DS0VULiBUaGVzZSBhcmVcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTAzOiAqIGZvdXIgcG9pbnRlciB0eXBlcyByZWNvZ25pemVkIGJ5IGNoZWNrX21lbV9hY2Nlc3MoKSBmdW5jdGlvbi5cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA0LSAqXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODQ3PXN0YXRpYyBib29sIGlzX2R5bnB0cl9yZWdfdmFsaWRfdW5pbml0KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODU3LVxcdCAqIGVycm9yIGJlY2F1c2UgdGhpcyBqdXN0IG1lYW5zIHRoZSBzdGFjayBzdGF0ZSBoYXNuJ3QgYmVlbiB1cGRhdGVkIHlldC5cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODU4OlxcdCAqIFdlIHdpbGwgZG8gY2hlY2tfbWVtX2FjY2VzcyB0byBjaGVjayBhbmQgdXBkYXRlIHN0YWNrIGJvdW5kcyBsYXRlci5cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODU5LVxcdCAqL1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEwMDM9c3RhdGljIGJvb2wgaXNfaXRlcl9yZWdfdmFsaWRfdW5pbml0KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTAwOS1cXHQvKiBGb3IgLUVSQU5HRSAoaS5lLiBzcGkgbm90IGZhbGxpbmcgaW50byBhbGxvY2F0ZWQgc3RhY2sgc2xvdHMpLCB3ZVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDEwOlxcdCAqIHdpbGwgZG8gY2hlY2tfbWVtX2FjY2VzcyB0byBjaGVjayBhbmQgdXBkYXRlIHN0YWNrIGJvdW5kcyBsYXRlciwgc29cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTAxMS1cXHQgKiByZXR1cm4gdHJ1ZSBmb3IgdGhhdCBjYXNlLlxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNDg9c3RhdGljIGJvb2wgaXNfaXJxX2ZsYWdfcmVnX3ZhbGlkX3VuaW5pdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTQtXFx0LyogRm9yIC1FUkFOR0UgKGkuZS4gc3BpIG5vdCBmYWxsaW5nIGludG8gYWxsb2NhdGVkIHN0YWNrIHNsb3RzKSwgd2VcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE1NTpcXHQgKiB3aWxsIGRvIGNoZWNrX21lbV9hY2Nlc3MgdG8gY2hlY2sgYW5kIHVwZGF0ZSBzdGFjayBib3VuZHMgbGF0ZXIsIHNvXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTYtXFx0ICogcmV0dXJuIHRydWUgZm9yIHRoYXQgY2FzZS5cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0zNDM3PXN0YXRpYyB2b2lkIHNjcnViX3NwZWNpYWxfc2xvdChzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUgKnN0YXRlLCBpbnQgc3BpKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTM0NDktLyogY2hlY2tfc3RhY2tfe3JlYWQsd3JpdGV9X2ZpeGVkX29mZiBmdW5jdGlvbnMgdHJhY2sgc3BpbGwvZmlsbCBvZiByZWdpc3RlcnMsXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjM0NTA6ICogc3RhY2sgYm91bmRhcnkgYW5kIGFsaWdubWVudCBhcmUgY2hlY2tlZCBpbiBjaGVja19tZW1fYWNjZXNzKClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMzQ1MS0gKi9cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz00MTM4PXN0YXRpYyBpbnQgY2hlY2tfbWFwX2FjY2Vzc190eXBlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDE1OS0vKiBjaGVjayByZWFkL3dyaXRlIGludG8gbWVtb3J5IHJlZ2lvbiAoZS5nLiwgbWFwIHZhbHVlLCByaW5nYnVmIHNhbXBsZSwgZXRjKSAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0MTYwOnN0YXRpYyBpbnQgX19jaGVja19tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQxNjEtXFx0XFx0XFx0ICAgICAgaW50IG9mZiwgaW50IHNpemUsIHUzMiBtZW1fc2l6ZSxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz00MTk4PXN0YXRpYyBpbnQgY2hlY2tfbWVtX3JlZ2lvbl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00MjIxLVxcdH1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDIyMjpcXHRlcnIgPSBfX2NoZWNrX21lbV9hY2Nlc3MoZW52LCByZWcsIGFyZ25vLCByZWdfc21pbihyZWcpICsgb2ZmLCBzaXplLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00MjIzLVxcdFxcdFxcdFxcdCBtZW1fc2l6ZSwgemVyb19zaXplX2FsbG93ZWQpO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQyMzgtXFx0fVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0MjM5OlxcdGVyciA9IF9fY2hlY2tfbWVtX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIHJlZ191bWF4KHJlZykgKyBvZmYsIHNpemUsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQyNDAtXFx0XFx0XFx0XFx0IG1lbV9zaXplLCB6ZXJvX3NpemVfYWxsb3dlZCk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NDY0OD1zdGF0aWMgaW50IGNoZWNrX3BhY2tldF9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubywgaW50IG9mZixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NjYxLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0NjYyOlxcdC8qIF9fY2hlY2tfbWVtX2FjY2VzcyBoYXMgbWFkZSBzdXJlIFxcXCJvZmYgKyBzaXplIC0gMVxcXCIgaXMgd2l0aGluIHUxNi5cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDY2My1cXHQgKiByZWdfdW1heChyZWcpIGNhbid0IGJlIGJpZ2dlciB0aGFuIE1BWF9QQUNLRVRfT0ZGIHdoaWNoIGlzIDB4ZmZmZixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDY2NC1cXHQgKiBvdGhlcndpc2UgZmluZF9nb29kX3BrdF9wb2ludGVycyB3b3VsZCBoYXZlIHJlZnVzZWQgdG8gc2V0IHJhbmdlIGluZm9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDY2NTpcXHQgKiB0aGF0IF9fY2hlY2tfbWVtX2FjY2VzcyB3b3VsZCBoYXZlIHJlamVjdGVkIHRoaXMgcGt0IGFjY2Vzcy5cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDY2Ni1cXHQgKiBUaGVyZWZvcmUsIFxcXCJvZmYgKyByZWdfdW1heChyZWcpICsgc2l6ZSAtIDFcXFwiIHdvbid0IG92ZXJmbG93IHUzMi5cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02MDU3PXN0YXRpYyB2b2lkIGFkZF9zY2FsYXJfdG9fcmVnKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLCBzNjQgdmFsKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTYwNzktICovXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjYwODA6c3RhdGljIGludCBjaGVja19tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpbnNuX2lkeCwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjA4MS1cXHRcXHRcXHQgICAgaW50IG9mZiwgaW50IGJwZl9zaXplLCBlbnVtIGJwZl9hY2Nlc3NfdHlwZSB0LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTYzNDM9c3RhdGljIGludCBjaGVja19sb2FkX21lbShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjM3NS1cXHQgKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjM3NjpcXHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LVxcdTAwM2VpbnNuX2lkeCwgcmVncyArIGluc24tXFx1MDAzZXNyY19yZWcsIGFyZ25vX2Zyb21fcmVnKGluc24tXFx1MDAzZXNyY19yZWcpLCBpbnNuLVxcdTAwM2VvZmYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTYzNzctXFx0XFx0XFx0ICAgICAgIEJQRl9TSVpFKGluc24tXFx1MDAzZWNvZGUpLCBCUEZfUkVBRCwgaW5zbi1cXHUwMDNlZHN0X3JlZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02Mzg2PXN0YXRpYyBpbnQgY2hlY2tfc3RvcmVfcmVnKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDE1LVxcdC8qIENoZWNrIGlmIChkc3RfcmVnICsgb2ZmKSBpcyB3cml0ZWFibGUuICovXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjY0MTY6XFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cXHUwMDNlaW5zbl9pZHgsIHJlZ3MgKyBpbnNuLVxcdTAwM2Vkc3RfcmVnLCBhcmdub19mcm9tX3JlZyhpbnNuLVxcdTAwM2Vkc3RfcmVnKSwgaW5zbi1cXHUwMDNlb2ZmLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDE3LVxcdFxcdFxcdCAgICAgICBCUEZfU0laRShpbnNuLVxcdTAwM2Vjb2RlKSwgQlBGX1dSSVRFLCBpbnNuLVxcdTAwM2VzcmNfcmVnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTY0MjQ9c3RhdGljIGludCBjaGVja19hdG9taWNfcm13KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQ5My1cXHQgKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjQ5NDpcXHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LVxcdTAwM2VpbnNuX2lkeCwgZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cXHUwMDNlZHN0X3JlZyksIGluc24tXFx1MDAzZW9mZixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQ5NS1cXHRcXHRcXHQgICAgICAgQlBGX1NJWkUoaW5zbi1cXHUwMDNlY29kZSksIEJQRl9SRUFELCAtMSwgdHJ1ZSwgZmFsc2UpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDk2LVxcdGlmICghZXJyIFxcdTAwMjZcXHUwMDI2IGxvYWRfcmVnIFxcdTAwM2U9IDApXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjY0OTc6XFx0XFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cXHUwMDNlaW5zbl9pZHgsIGRzdF9yZWcsIGFyZ25vX2Zyb21fcmVnKGluc24tXFx1MDAzZWRzdF9yZWcpLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDk4LVxcdFxcdFxcdFxcdCAgICAgICBpbnNuLVxcdTAwM2VvZmYsIEJQRl9TSVpFKGluc24tXFx1MDAzZWNvZGUpLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1MDgtXFx0LyogQ2hlY2sgd2hldGhlciB3ZSBjYW4gd3JpdGUgaW50byB0aGUgc2FtZSBtZW1vcnkuICovXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjY1MDk6XFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cXHUwMDNlaW5zbl9pZHgsIGRzdF9yZWcsIGFyZ25vX2Zyb21fcmVnKGluc24tXFx1MDAzZWRzdF9yZWcpLCBpbnNuLVxcdTAwM2VvZmYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1MTAtXFx0XFx0XFx0ICAgICAgIEJQRl9TSVpFKGluc24tXFx1MDAzZWNvZGUpLCBCUEZfV1JJVEUsIC0xLCB0cnVlLCBmYWxzZSk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NzI0MD1zdGF0aWMgaW50IHByb2Nlc3NfZHlucHRyX2Z1bmMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03Mjc2LVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBCUEZfRFlOUFRSX1NJWkU7IGkgKz0gOCkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo3Mjc3OlxcdFxcdFxcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBpbnNuX2lkeCwgcmVnLCBhcmdubyxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzI3OC1cXHRcXHRcXHRcXHRcXHQgICAgICAgaSwgQlBGX0RXLCBCUEZfV1JJVEUsIC0xLCBmYWxzZSwgZmFsc2UpO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTczNjA9c3RhdGljIGludCBwcm9jZXNzX2l0ZXJfYXJnKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sIGludCBpbnNuX2lkeCxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03Mzk3LVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl9zbG90cyAqIDg7IGkgKz0gQlBGX1JFR19TSVpFKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjczOTg6XFx0XFx0XFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGluc25faWR4LCByZWcsIGFyZ25vLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03Mzk5LVxcdFxcdFxcdFxcdFxcdCAgICAgICBpLCBCUEZfRFcsIEJQRl9XUklURSwgLTEsIGZhbHNlLCBmYWxzZSk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTAxNzM9c3RhdGljIGludCBjaGVja19oZWxwZXJfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTAyNTktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG1ldGEuYWNjZXNzX3NpemU7IGkrKykge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDI2MDpcXHRcXHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgaW5zbl9pZHgsIHJlZ3MgKyBtZXRhLnJlZ25vLCBhcmdub19mcm9tX3JlZyhtZXRhLnJlZ25vKSwgaSwgQlBGX0IsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwMjYxLVxcdFxcdFxcdFxcdCAgICAgICBCUEZfV1JJVEUsIC0xLCBmYWxzZSwgZmFsc2UpO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwNTA3LVxcdFxcdFxcdFxcdCAqIGl0IHdpbGwgY29uZnVzZSB0aGUgY2hlY2sgb2YgUFRSX1RPX0JURl9JRCBpblxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDUwODpcXHRcXHRcXHRcXHQgKiBjaGVja19tZW1fYWNjZXNzKCkuXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwNTA5LVxcdFxcdFxcdFxcdCAqL1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNDM1PXN0YXRpYyBpbnQgcHJvY2Vzc19pcnFfZmxhZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNDYyLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTQ2MzpcXHRcXHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LVxcdTAwM2VpbnNuX2lkeCwgcmVnLCBhcmdubywgMCwgQlBGX0RXLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTQ2NC1cXHRcXHRcXHRcXHQgICAgICAgQlBGX1dSSVRFLCAtMSwgZmFsc2UsIGZhbHNlKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzIzNz1zdGF0aWMgaW50IGRvX2NoZWNrX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgYm9vbCAqZG9fcHJpbnRfc3RhdGUpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTcyNzQtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE3Mjc1OlxcdFxcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBlbnYtXFx1MDAzZWluc25faWR4LCBjdXJfcmVncyhlbnYpICsgaW5zbi1cXHUwMDNlZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cXHUwMDNlZHN0X3JlZyksXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3Mjc2LVxcdFxcdFxcdFxcdCAgICAgICBpbnNuLVxcdTAwM2VvZmYsIEJQRl9TSVpFKGluc24tXFx1MDAzZWNvZGUpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDowMTo1Mi41MzUzNzE4NTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzUxODE5ODQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgQlBGIHZlcmlmaWVyIGVudHJ5IHBvaW50OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBCUEYgVmVyaWZpZXI6IGBicGZfY2hlY2tgKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBCUEYgdmVyaWZpZXIga2lja3MgaW4uIE5hdHVyYWxseSwgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciB0aGUgKmNoZWNrKiBpdHNlbGYsIHdoaWNoIHNlZW1zIHRvIGJlIGBicGZfY2hlY2tgLiBOb3csIEkgbmVlZCB0byB0cmFjZSB0aGlzIGZ1bmN0aW9uIGRvd24uIExldCdzIGhlYWQgb3ZlciB0byBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gVGhhdCdzIHdoZXJlIHRoZSBtYWdpYyBwcm9iYWJseSBoYXBwZW5zLiBUaW1lIHRvIHB1bGwgdXAgdGhlIHNvdXJjZSBhbmQgc2VlIHdoYXQncyB3aGF0LiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIGNvcmUgbG9naWMgdGhlIHZlcmlmaWVyIHVzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4NzIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDowMTo1NS4yODcxOTQ0MzRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIxODM0MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2NoZWNrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTU9c3RhdGljIGJvb2wgYnBmX2dsb2JhbF9wZXJjcHVfbWFfc2V0O1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Ni1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTc6LyogYnBmX2NoZWNrKCkgaXMgYSBzdGF0aWMgY29kZSBhbmFseXplciB0aGF0IHdhbGtzIGVCUEYgcHJvZ3JhbVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01OC0gKiBpbnN0cnVjdGlvbiBieSBpbnN0cnVjdGlvbiBhbmQgdXBkYXRlcyByZWdpc3Rlci9zdGFjayBzdGF0ZS5cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTg5OT1zdGF0aWMgaW50IHByb2Nlc3Nfa2ZfYXJnX3B0cl90b19yYnRyZWVfbm9kZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExOTEwLSAqIExTTSBob29rcyBhbmQgaXRlcnMgKGJvdGggc2xlZXBhYmxlIGFuZCBub24tc2xlZXBhYmxlKSBhcmUgc2FmZS5cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE5MTE6ICogQW55IHNsZWVwYWJsZSBwcm9ncyBhcmUgYWxzbyBzYWZlIHNpbmNlIGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KCkgZW5mb3JjZVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTkxMi0gKiB0aGVtIGNhbiBvbmx5IGJlIGF0dGFjaGVkIHRvIHNvbWUgc3BlY2lmaWMgaG9vayBwb2ludHMuXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg4OTM9YnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg5MjctXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4OTI4OmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODkyOS1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5MzMzPXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MzYzLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTM2NDpcXHRyZXQgPSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChcXHUwMDI2ZW52LVxcdTAwM2Vsb2csIHByb2csIHRndF9wcm9nLCBidGZfaWQsIFxcdTAwMjZ0Z3RfaW5mbyk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MzY1LVxcdGlmIChyZXQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0MzItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NDMzOmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0MzQtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk2MzA9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc3My1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3NzQ6aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipwcm9nLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5Nzc1LVxcdCAgICAgIHN0cnVjdCBicGZfbG9nX2F0dHIgKmF0dHJfbG9nKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5Nzg4LVxcdC8qICdzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudicgY2FuIGJlIGdsb2JhbCwgYnV0IHNpbmNlIGl0J3Mgbm90IHNtYWxsLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTc4OTpcXHQgKiBhbGxvY2F0ZS9mcmVlIGl0IGV2ZXJ5IHRpbWUgYnBmX2NoZWNrKCkgaXMgY2FsbGVkXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzkwLVxcdCAqL1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODYzLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTg2NDpcXHRyZXQgPSBicGZfY2hlY2tfYnRmX2luZm9fZWFybHkoZW52LCBhdHRyLCB1YXR0cik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODY1LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODc1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTg3NjpcXHRyZXQgPSBicGZfY2hlY2tfYnRmX2luZm8oZW52LCBhdHRyLCB1YXR0cik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODc3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODg5LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTg5MDpcXHRyZXQgPSBicGZfY2hlY2tfY2ZnKGVudik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODkxLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDowMTo1NS4zNjkzODQxNjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODMyOTk2MDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhlIEJQRiBWZXJpZmllciBFbnRyeSBQb2ludCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGUgQlBGIHZlcmlmaWVyIHdvcmtzLCBhbmQgaXQgbG9va3MgbGlrZSBgYnBmX2NoZWNrYCBpcyB0aGUga2V5IGVudHJ5IHBvaW50IOKAkyB0aGUgbWFpbiBmdW5jdGlvbiB3ZSdyZSBpbnRlcmVzdGVkIGluLiBgYnBmX2NoZWNrYCBpcyBhIGdvb2QgZm9jdXMgc3ltYm9sLCBJIHRoaW5rLiBJbml0aWFsbHksIEkgY29uc2lkZXJlZCBpbmNsdWRpbmcgb3RoZXIgZnVuY3Rpb25zIGxpa2UgYGNoZWNrX21lbV9hY2Nlc3NgIG9yIGBkb19jaGVja19pbnNuYCwgYnV0IHRoZXkncmUgYm90aCBzdGF0aWMsIHdoaWNoIG1ha2VzIHRoZW0gbGVzcyB1c2VmdWwgZm9yIGEgYnJvYWRlciBhbmFseXNpcy5cblxuVGhlIHBhdGNoIEknbSByZXZpZXdpbmcgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGBjaGVja19wdHJfdG9fYnRmX2FjY2Vzc2AsIHdoaWNoIG1ha2VzIG1lIGRpZyBhIGxpdHRsZSBmdXJ0aGVyIHRvIGlkZW50aWZ5IGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBCUEYgdmVyaWZpZXIsIHdoaWNoIG1pZ2h0IGJlIGhlbHBmdWwgdG8gaW5jbHVkZS5cblxuU28sIEkgY29uZmlybWVkIHRoYXQgYGJwZl9jaGVja2AgaXRzZWxmIGlzbid0IHN0YXRpYy4gR29vZCwgdGhhdCdzIHdoYXQgSSB3YXMgbG9va2luZyBmb3IuIE5vdywganVzdCB0byBiZSBzdXJlLCBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIGtlcm5lbCBjb25maWcuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLCBhcyB0aGlzIGlzIGEgY29yZSByZXF1aXJlbWVudCBmb3IgdGhlIEJQRiB2ZXJpZmllciB0byBiZSBhY3RpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNjUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDA6MDI6MDAuMjAyMzgzNDYxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTU3NDMyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfY2hlY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9zeXNjYWxsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9zeXNjYWxsLmM9NzI9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyAqIGNvbnN0IGJwZl9tYXBfdHlwZXNbXSA9IHtcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTkxLSAqL1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjkyOmludCBicGZfY2hlY2tfdWFyZ190YWlsX3plcm8oYnBmcHRyX3QgdWFkZHIsXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtOTMtXFx0XFx0XFx0ICAgICBzaXplX3QgZXhwZWN0ZWRfc2l6ZSxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTI5NzI9c3RhdGljIGludCBicGZfcHJvZ19sb2FkKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0ciwgc3RydWN0IGJwZl9sb2dfYXR0ciAqYXR0cl9sb2cpXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zMTk2LVxcdC8qIHJ1biBlQlBGIHZlcmlmaWVyICovXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MzE5NzpcXHRlcnIgPSBicGZfY2hlY2soXFx1MDAyNnByb2csIGF0dHIsIHVhdHRyLCBhdHRyX2xvZyk7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzE5OC1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTM2ODk9c3RhdGljIGludCBicGZfdHJhY2luZ19wcm9nX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zODIxLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjM4MjI6XFx0XFx0ZXJyID0gYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoTlVMTCwgcHJvZywgdGd0X3Byb2csIGJ0Zl9pZCxcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zODIzLVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZ0Z3RfaW5mbyk7XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz01MTU0PXN0YXRpYyBpbnQgYnBmX3Byb2dfZ2V0X2luZm9fYnlfZmQoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01MTY4LVxcdGxlbiA9IG9mZnNldG9mZW5kKHN0cnVjdCBicGZfcHJvZ19pbmZvLCBhdHRhY2hfYnRmX2lkKTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1MTY5OlxcdGVyciA9IGJwZl9jaGVja191YXJnX3RhaWxfemVybyhVU0VSX0JQRlBUUih1aW5mbyksIGxlbiwgaW5mb19sZW4pO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTUxNzAtXFx0aWYgKGVycilcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTU0NDQ9c3RhdGljIGludCBicGZfbWFwX2dldF9pbmZvX2J5X2ZkKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTQ1NC1cXHRsZW4gPSBvZmZzZXRvZmVuZChzdHJ1Y3QgYnBmX21hcF9pbmZvLCBoYXNoX3NpemUpO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjU0NTU6XFx0ZXJyID0gYnBmX2NoZWNrX3VhcmdfdGFpbF96ZXJvKFVTRVJfQlBGUFRSKHVpbmZvKSwgbGVuLCBpbmZvX2xlbik7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTQ1Ni1cXHRpZiAoZXJyKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9NTUxNT1zdGF0aWMgaW50IGJwZl9idGZfZ2V0X2luZm9fYnlfZmQoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTIzLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjU1MjQ6XFx0ZXJyID0gYnBmX2NoZWNrX3VhcmdfdGFpbF96ZXJvKFVTRVJfQlBGUFRSKHVpbmZvKSwgc2l6ZW9mKCp1aW5mbyksIGluZm9fbGVuKTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTI1LVxcdGlmIChlcnIpXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz01NTMxPXN0YXRpYyBpbnQgYnBmX2xpbmtfZ2V0X2luZm9fYnlfZmQoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTQwLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjU1NDE6XFx0ZXJyID0gYnBmX2NoZWNrX3VhcmdfdGFpbF96ZXJvKFVTRVJfQlBGUFRSKHVpbmZvKSwgc2l6ZW9mKGluZm8pLCBpbmZvX2xlbik7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTU0Mi1cXHRpZiAoZXJyKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9NTU2OT1zdGF0aWMgaW50IHRva2VuX2dldF9pbmZvX2J5X2ZkKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTU3Ny1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1NTc4OlxcdGVyciA9IGJwZl9jaGVja191YXJnX3RhaWxfemVybyhVU0VSX0JQRlBUUih1aW5mbyksIHNpemVvZigqdWluZm8pLCBpbmZvX2xlbik7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTU3OS1cXHRpZiAoZXJyKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9NjM1ND1zdGF0aWMgaW50IF9fc3lzX2JwZihlbnVtIGJwZl9jbWQgY21kLCBicGZwdHJfdCB1YXR0ciwgdW5zaWduZWQgaW50IHNpemUsXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy02MzYyLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjYzNjM6XFx0ZXJyID0gYnBmX2NoZWNrX3VhcmdfdGFpbF96ZXJvKHVhdHRyLCBzaXplb2YoYXR0ciksIHNpemUpO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTYzNjQtXFx0aWYgKGVycilcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTYzNzQtXFx0aWYgKGNtZCBcXHUwMDI2IEJQRl9DT01NT05fQVRUUlMpIHtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo2Mzc1OlxcdFxcdGVyciA9IGJwZl9jaGVja191YXJnX3RhaWxfemVybyh1YXR0cl9jb21tb24sXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjM3Ni1cXHRcXHRcXHRcXHRcXHQgICAgICAgb2Zmc2V0b2ZlbmQoc3RydWN0IGJwZl9jb21tb25fYXR0ciwgbG9nX3RydWVfc2l6ZSksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjAyOjAwLjI3Mzk2NDY4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NDc5ODYxOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgTG9hZGluZyBNZWNoYW5pc20qKlxuXG5Pa2F5LCBzbyBgYnBmX3Byb2dfbG9hZGAgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBsb2FkaW5nIEJQRiBwcm9ncmFtcywgYW5kIGl0IG1ha2VzIGEgY2FsbCB0byBgYnBmX2NoZWNrYC4gSW50ZXJlc3RpbmcuIFNpbmNlIGBicGZfcHJvZ19sb2FkYCBpcyBzdGF0aWMsIHRoYXQgbWVhbnMgbXkgZm9jdXMgc2hvdWxkIGJlIG9uIHdoZXJlIGl0J3MgY2FsbGVkIGZyb20sIGFuZCB0aGF0J3MgdGhlIGBfX3N5c19icGZgIHN5c3RlbSBjYWxsLiBDb25zZXF1ZW50bHksIGBicGZfY2hlY2tgIGxvb2tzIGxpa2UgYSBrZXkgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgaW50ZWdyaXR5IGNoZWNrcyBiZWluZyBwZXJmb3JtZWQgZHVyaW5nIHByb2dyYW0gbG9hZGluZy4gSXQgbWFrZXMgc2Vuc2UgdG8gemVybyBpbiBvbiB0aGF0IHN5bWJvbC5cblxuQnV0LCBpcyBgYnBmX2NoZWNrYCB0aGUgb25seSBjcml0aWNhbCBmdW5jdGlvbj8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0LiBBcmUgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9ucyBpbnZvbHZlZCBpbiB0aGlzIHByb2Nlc3MgdGhhdCBuZWVkIHNjcnV0aW55PyBMb29raW5nIGF0IHRoaXMgcGF0Y2gsIEkgc2VlIG1vZGlmaWNhdGlvbnMgdG8gYGNoZWNrX3B0cl90b19idGZfYWNjZXNzYCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgQlBGIHZlcmlmaWVyLiBUaGUgcHJlc2VuY2Ugb2YgdGhlIGBCUEZfU1lTQ0FMTGAgY29uZmlnIHN5bWJvbCB0ZWxscyBtZSB0aGlzIGlzIGFsbCB0aWVkIGRpcmVjdGx5IHRvIHRoZSBCUEYgc3lzdGVtIGNhbGwgaW50ZXJmYWNlLiBHb3QgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODk1LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjAyOjA0LjIyMTk1MzQ3NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzOTMxNDI4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5pdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDowMjowNC4zMzU4OTUzMjRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ1MjM5ODU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqV2hlcmUncyBUaGF0IERhbmcgTWFjcm8/KipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLi4uIEknbSBsb29raW5nIGF0IHRoaXMgQlBGIGNvZGUsIGFuZCBJJ20gdXNpbmcgYEJQRl9TWVNDQUxMYCBpbiB0aGVyZSwgb3IgbWF5YmUgSSdtIHJlYWRpbmcgc29tZSBleGlzdGluZyBjb2RlIHRoYXQgdXNlcyBpdC4gSG9sZCBvbiBhIHNlY29uZOKApiB3aGVyZSBleGFjdGx5IGRpZCB0aGF0IG1hY3JvIGdldCBkZWZpbmVkPyBJIGNhbid0IHF1aXRlIHJlbWVtYmVyIGlmIGl0J3MgaW4gdGhlIHN0YW5kYXJkIGhlYWRlcnMgb3IgaWYgaXQncyBkZWZpbmVkIHdpdGhpbiB0aGUgQlBGIHRvb2xjaGFpbiBpdHNlbGYgYW5kIHVzZWQgaW4gc29tZSBzaGFyZWQgaW5jbHVkZSBmaWxlcywgb3IgaWYgdGhlcmUncyBzb21lIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGdvaW5nIG9uLiBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgZGVjbGFyYXRpb24gdG8gdW5kZXJzdGFuZCBwcmVjaXNlbHkgaG93IGl0J3MgZXhwYW5kaW5nIGFuZCBpZiBpdCB3aWxsIHdvcmsgaW4gdGhlIHRhcmdldCBlbnZpcm9ubWVudC4gVGltZSB0byBnbyBkaWdnaW5nIHRocm91Z2ggdGhlIGluY2x1ZGVzLCBtYXliZSBhIHF1aWNrIGdyZXAgdGhyb3VnaCB0aGUga2VybmVsIGhlYWRlcnMuLi4gb3IgbWF5YmUgaXQncyBpbiBhIGhlbHBlciBmdW5jdGlvbiBkZWZpbml0aW9uPyBJIHNob3VsZCBrZWVwIGFuIGV5ZSBvdXQgdG8gbWFrZSBzdXJlIGl0J3MgY29ycmVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyNzgsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDowMjowOC43ODgyOTg1NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4NzM3NTEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDA6MDI6MTEuNDc1Njg2ODhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIwOTkwNzI2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gYEJQRl9TWVNDQUxMYCBpcyAqdGhlKiBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSdyZSBmb2N1c2luZyBvbiBpbml0aWFsbHkuIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogcmVsYXRlZCBjb25maWdzIHRoYXQgbWlnaHQgY29tZSBpbnRvIHBsYXkuIEEgZ29vZCBzdGFydGluZyBwb2ludCBpcyB0byBjb25zaWRlciB0aGUgY29udGV4dCBvZiBpdHMgdXNlIHdpdGhpbiB0aGUga2VybmVsLlxuXG5JIHNlZSB0aGF0IHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2hfZmFpbC5jYCB0ZXN0IGNhc2UgZW1wbG95cyBgYnBmX3JjdV9yZWFkX2xvY2tgLCBgYnBmX3JjdV9yZWFkX3VubG9ja2AsIGFuZCBgYnBmX21hcF9sb29rdXBfZWxlbWAuIEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMganVzdCBhIHN0YW5kYXJkIEJQRiBwcm9ncmFtLiBObyBzdXJwcmlzZXMgdGhlcmUuXG5cbk15IG5leHQgbGluZSBvZiB0aGlua2luZyBpcyB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBjb25zaWRlciBmb3IgdGhpcy4gSSdsbCBuZWVkIHRvIGNoZWNrIGlmIHdlIHJlcXVpcmUgYW55dGhpbmcgZWxzZSBpbiBjb25qdW5jdGlvbiB3aXRoIGBQVFJfVU5UUlVTVEVEYCwgYE1FTV9SQ1VgLCBvciBgTUVNX0FMTE9DYC4gRnJvbSB3aGF0IEkga25vdywgdGhvc2UgYWxsIHNob3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBzdGFuZGFyZCBCUEYgdmVyaWZpZXIgYWxyZWFkeS5cblxuRmluYWxseSwgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBgYnBmX2NoZWNrYCBzaWduYXR1cmUsIGp1c3QgdG8gYmUgc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgbXkgYXNzdW1wdGlvbnMgYXJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgdmVyaWZpZXIncyBjdXJyZW50IGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTYwNSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDowMjoxNS42ODU1OTc4N1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgzMjY4MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50IGJwZl9jaGVja1xcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk2MzA9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc3My1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3NzQ6aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipwcm9nLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5Nzc1LVxcdCAgICAgIHN0cnVjdCBicGZfbG9nX2F0dHIgKmF0dHJfbG9nKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDowMjoxNS43NDM5MzIyNDlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUyOTczNTc1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgVmVyaWZpZXIgQ2hhbmdlKipcblxuT2theSwgc28gYGJwZl9jaGVja2AgaXMgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUsIHRoZSBub24tc3RhdGljIG9uZS4gVGhhdCdzIGdvb2QgdG8gY29uZmlybS4gSSBuZWVkIHRvIG1ha2Ugc29tZSBkZWNpc2lvbnMgYmFzZWQgb24gdGhpcy5cblxuR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgcGF0Y2gsIG1vZGlmeWluZyB0aGUgQlBGIHZlcmlmaWVyJ3MgaGFuZGxpbmcgb2YgdW50cnVzdGVkIHBvaW50ZXJzLCBzcGVjaWZpY2FsbHkgbG9vc2VuaW5nIHJlc3RyaWN0aW9ucyBvbiByZWFkcyBhbmQgZWxpbWluYXRpbmcgdGhlIG5lZWQgZm9yIGEgcmVmZXJlbmNlZCBJRCBmb3IgdGhlc2UgdW50cnVzdGVkIGFsbG9jYXRlZCBvYmplY3RzLCBpdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRlZXAgd2l0aGluIHRoZSBjb3JlIHZlcmlmaWVyIGxvZ2ljLiBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZyBhbmQgcmVxdWlyZXMgc3BlY2lmaWMgYXR0ZW50aW9uLlxuXG5UaGVyZWZvcmUsIG15IHNldHRpbmdzIHdpbGwgYmUgYXMgZm9sbG93czogSSB3aWxsIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIEknbGwgZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0cyBvbiBgYnBmX2NoZWNrYCAtIHNvLCBgRm9jdXNTeW1ib2xzYCBpcyBgW1wiYnBmX2NoZWNrXCJdYC4gSSB3YW50IHRvIGVuYWJsZSBgQlBGX1NZU0NBTExgIGFzIHdlbGwgLSBgRW5hYmxlQ29uZmlnc2Agd2lsbCBiZSBgW1wiQlBGX1NZU0NBTExcIl1gLiBUaGUgcmVhc29uaW5nIGJlaGluZCB0aGVzZSBzZXR0aW5ncywgd2hpY2ggc2hvdWxkIGJlIHdlbGwgdW5kZXJzdG9vZCwgaXMgdGhhdCB0aGUgbW9kaWZpY2F0aW9uIGlzIGNvcmUgbG9naWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjI0LCJPdXRwdXRUb2tlbnMiOjk5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjAyOjIwLjI3MzY3MjI0NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODg3OTU5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyJ3MgaGFuZGxpbmcgb2YgdW50cnVzdGVkIHBvaW50ZXJzIHRvIGFsbG9jYXRlZCBvYmplY3RzLCBzcGVjaWZpY2FsbHkgYWxsb3dpbmcgcmVhZHMgYnV0IHByZXZlbnRpbmcgd3JpdGVzLCBhbmQgcmVtb3ZpbmcgdGhlIHJlcXVpcmVtZW50IGZvciBhIHJlZmVyZW5jZWQgSUQgZm9yIHVudHJ1c3RlZCBhbGxvY2F0ZWQgb2JqZWN0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9jaGVja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIncyBoYW5kbGluZyBvZiB1bnRydXN0ZWQgcG9pbnRlcnMgdG8gYWxsb2NhdGVkIG9iamVjdHMsIHNwZWNpZmljYWxseSBhbGxvd2luZyByZWFkcyBidXQgcHJldmVudGluZyB3cml0ZXMsIGFuZCByZW1vdmluZyB0aGUgcmVxdWlyZW1lbnQgZm9yIGEgcmVmZXJlbmNlZCBJRCBmb3IgdW50cnVzdGVkIGFsbG9jYXRlZCBvYmplY3RzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowdb56v[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-28 23:11:48 +0000 UTC FinishedAt: 2026-07-29 00:02:22 +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": "0ce37745d4bfbc493f718169c3974898ffec8ee7", "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": "0ce37745d4bfbc493f718169c3974898ffec8ee7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "afcb3088-eaa8-4d02-8e2b-06093257737e" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_check" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXImIzM5O3MgaGFuZGxpbmcgb2YgdW50cnVzdGVkIHBvaW50ZXJzIHRvIGFsbG9jYXRlZCBvYmplY3RzLCBzcGVjaWZpY2FsbHkgYWxsb3dpbmcgcmVhZHMgYnV0IHByZXZlbnRpbmcgd3JpdGVzLCBhbmQgcmVtb3ZpbmcgdGhlIHJlcXVpcmVtZW50IGZvciBhIHJlZmVyZW5jZWQgSUQgZm9yIHVudHJ1c3RlZCBhbGxvY2F0ZWQgb2JqZWN0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDowMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGU3MGE3ZWEzNzMwYTZlNWVlZDIzNDcwY2NhOGZhZDM0MGVkNDU2OTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAwMDowMTo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDdhYTQ3MzQyZGM2NTkuLjI0YzE1MWFkMmU2MjggMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTU4MDQsMTMgJiM0Mzs1ODA0LDE1IEBAIHN0YXRpYyBpbnQgY2hlY2tfcHRyX3RvX2J0Zl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0ICogcHJvZ3JhbSBhbGxvY2F0ZWQgb2JqZWN0cyAod2hpY2ggYWx3YXlzIGhhdmUgaWQgXHUwMDNlIDApLFxuIFx0XHQgKiBidXQgbm90IGZvciB1bnRydXN0ZWQgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQy5cbiBcdFx0ICovXG4tXHRcdGlmIChhdHlwZSAhPSBCUEZfUkVBRCBcdTAwMjZcdTAwMjYgIXR5cGVfaXNfcHRyX2FsbG9jX29iaihyZWctXHUwMDNldHlwZSkpIHtcbiYjNDM7XHRcdGlmIChhdHlwZSAhPSBCUEZfUkVBRCBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAoIXR5cGVfaXNfcHRyX2FsbG9jX29iaihyZWctXHUwMDNldHlwZSkgfHwgcmVnLVx1MDAzZXR5cGUgXHUwMDI2IFBUUl9VTlRSVVNURUQpKSB7XG4gXHRcdFx0dmVyYm9zZShlbnYsIFwmIzM0O29ubHkgcmVhZCBpcyBzdXBwb3J0ZWRcXG5cJiMzNDspO1xuIFx0XHRcdHJldHVybiAtRUFDQ0VTO1xuIFx0XHR9XG4gXG4gXHRcdGlmICh0eXBlX2lzX2FsbG9jKHJlZy1cdTAwM2V0eXBlKSBcdTAwMjZcdTAwMjYgIXR5cGVfaXNfbm9uX293bmluZ19yZWYocmVnLVx1MDAzZXR5cGUpIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgIShyZWctXHUwMDNldHlwZSBcdTAwMjYgTUVNX1JDVSkgXHUwMDI2XHUwMDI2ICFyZWdfaXNfcmVmZXJlbmNlZChlbnYsIHJlZykpIHtcbiYjNDM7XHRcdCAgICAhKHJlZy1cdTAwM2V0eXBlIFx1MDAyNiAoTUVNX1JDVSB8IFBUUl9VTlRSVVNURUQpKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAhcmVnX2lzX3JlZmVyZW5jZWQoZW52LCByZWcpKSB7XG4gXHRcdFx0dmVyaWZpZXJfYnVnKGVudiwgXCYjMzQ7YWxsb2NhdGVkIG9iamVjdCBtdXN0IGhhdmUgYSByZWZlcmVuY2VkIGlkXCYjMzQ7KTtcbiBcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBcdFx0fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoX2ZhaWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoX2ZhaWwuY1xuaW5kZXggZmNmN2E3NTY3ZGEyMi4uZDdiOGNkNjQ1OGJiOSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoX2ZhaWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2hfZmFpbC5jXG5AQCAtOCwxNCAmIzQzOzgsMjIgQEBcbiAjaW5jbHVkZSBcJiMzNDsuLi9icGZfZXhwZXJpbWVudGFsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDticGZfbWlzYy5oXCYjMzQ7XG4gXG4mIzQzO2V4dGVybiB2b2lkIGJwZl9yY3VfcmVhZF9sb2NrKHZvaWQpIF9fa3N5bTtcbiYjNDM7ZXh0ZXJuIHZvaWQgYnBmX3JjdV9yZWFkX3VubG9jayh2b2lkKSBfX2tzeW07XG4mIzQzO1xuIHN0cnVjdCBub2RlX2RhdGEge1xuIFx0bG9uZyBrZXk7XG4gXHRsb25nIGRhdGE7XG4gXHRzdHJ1Y3QgYnBmX3JiX25vZGUgbm9kZTtcbiB9O1xuIFxuJiM0MztzdHJ1Y3QgcGxhaW5fZGF0YSB7XG4mIzQzO1x0bG9uZyBrZXk7XG4mIzQzO307XG4mIzQzO1xuIHN0cnVjdCBtYXBfdmFsdWUge1xuIFx0c3RydWN0IG5vZGVfZGF0YSBfX2twdHIgKm5vZGU7XG4mIzQzO1x0c3RydWN0IHBsYWluX2RhdGEgX19rcHRyICpwbGFpbjtcbiB9O1xuIFxuIHN0cnVjdCBub2RlX2RhdGEyIHtcbkBAIC0zMSw2ICYjNDM7MzksNyBAQCBzdHJ1Y3Qgbm9kZV9kYXRhMiB7XG4gICogWzM1XSBUWVBFX1RBRyAmIzM5O2twdHJfcmVmJiMzOTsgdHlwZV9pZD0zNFxuICAqL1xuIHN0cnVjdCBub2RlX2RhdGEgKmp1c3RfaGVyZV9iZWNhdXNlX2J0Zl9idWc7XG4mIzQzO3N0cnVjdCBwbGFpbl9kYXRhICpqdXN0X2hlcmVfYmVjYXVzZV9idGZfYnVnMjtcbiBcbiBzdHJ1Y3Qge1xuIFx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9BUlJBWSk7XG5AQCAtODIsNCAmIzQzOzkxLDUzIEBAIGxvbmcgZHJvcF9yYl9ub2RlX29mZih2b2lkICpjdHgpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO1NFQyhcJiMzNDs/dGNcJiMzNDspXG4mIzQzO19fZmFpbHVyZSBfX21zZyhcJiMzNDtvbmx5IHJlYWQgaXMgc3VwcG9ydGVkXCYjMzQ7KVxuJiM0Mztsb25nIHdyaXRlX3VudHJ1c3RlZF9hbGxvY19vYmoodm9pZCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG1hcF92YWx1ZSAqbWFwdmFsO1xuJiM0MztcdHN0cnVjdCBub2RlX2RhdGEgKnJlcztcbiYjNDM7XHRpbnQgaWR4ID0gMDtcbiYjNDM7XG4mIzQzO1x0bWFwdmFsID0gYnBmX21hcF9sb29rdXBfZWxlbShcdTAwMjZzb21lX25vZGVzLCBcdTAwMjZpZHgpO1xuJiM0MztcdGlmICghbWFwdmFsKVxuJiM0MztcdFx0cmV0dXJuIDE7XG4mIzQzO1xuJiM0MztcdGJwZl9yY3VfcmVhZF9sb2NrKCk7XG4mIzQzO1x0cmVzID0gbWFwdmFsLVx1MDAzZW5vZGU7XG4mIzQzO1x0aWYgKCFyZXMpIHtcbiYjNDM7XHRcdGJwZl9yY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRcdHJldHVybiAyO1xuJiM0MztcdH1cbiYjNDM7XHRiYXJyaWVyX3ZhcihyZXMpO1xuJiM0MztcdGJwZl9yY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XG4mIzQzO1x0cmVzLVx1MDAzZWtleSA9IDQyO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7P3RjXCYjMzQ7KVxuJiM0MztfX3N1Y2Nlc3NcbiYjNDM7bG9uZyByZWFkX3VudHJ1c3RlZF9hbGxvY19vYmoodm9pZCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG1hcF92YWx1ZSAqbWFwdmFsO1xuJiM0MztcdHN0cnVjdCBwbGFpbl9kYXRhICpyZXM7XG4mIzQzO1x0aW50IGlkeCA9IDA7XG4mIzQzO1xuJiM0MztcdG1hcHZhbCA9IGJwZl9tYXBfbG9va3VwX2VsZW0oXHUwMDI2c29tZV9ub2RlcywgXHUwMDI2aWR4KTtcbiYjNDM7XHRpZiAoIW1hcHZhbClcbiYjNDM7XHRcdHJldHVybiAxO1xuJiM0MztcbiYjNDM7XHRicGZfcmN1X3JlYWRfbG9jaygpO1xuJiM0MztcdHJlcyA9IG1hcHZhbC1cdTAwM2VwbGFpbjtcbiYjNDM7XHRpZiAoIXJlcykge1xuJiM0MztcdFx0YnBmX3JjdV9yZWFkX3VubG9jaygpO1xuJiM0MztcdFx0cmV0dXJuIDI7XG4mIzQzO1x0fVxuJiM0MztcdGJhcnJpZXJfdmFyKHJlcyk7XG4mIzQzO1x0YnBmX3JjdV9yZWFkX3VubG9jaygpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmVzLVx1MDAzZWtleTtcbiYjNDM7fVxuJiM0MztcbiBjaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjAxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9jaGVjayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyJiMzOTtzIGhhbmRsaW5nIG9mIHVudHJ1c3RlZCBwb2ludGVycyB0byBhbGxvY2F0ZWQgb2JqZWN0cywgc3BlY2lmaWNhbGx5IGFsbG93aW5nIHJlYWRzIGJ1dCBwcmV2ZW50aW5nIHdyaXRlcywgYW5kIHJlbW92aW5nIHRoZSByZXF1aXJlbWVudCBmb3IgYSByZWZlcmVuY2VkIElEIGZvciB1bnRydXN0ZWQgYWxsb2NhdGVkIG9iamVjdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlNzBhN2VhMzczMGE2ZTVlZWQyMzQ3MGNjYThmYWQzNDBlZDQ1Njk1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjkgMDA6MDE6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggN2FhNDczNDJkYzY1OS4uMjRjMTUxYWQyZTYyOCAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwpAQCAtNTgwNCwxMyAmIzQzOzU4MDQsMTUgQEAgc3RhdGljIGludCBjaGVja19wdHJfdG9fYnRmX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCQkgKiBwcm9ncmFtIGFsbG9jYXRlZCBvYmplY3RzICh3aGljaCBhbHdheXMgaGF2ZSBpZCAmZ3Q7IDApLAogCQkgKiBidXQgbm90IGZvciB1bnRydXN0ZWQgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQy4KIAkJICovCi0JCWlmIChhdHlwZSAhPSBCUEZfUkVBRCAmYW1wOyZhbXA7ICF0eXBlX2lzX3B0cl9hbGxvY19vYmoocmVnLSZndDt0eXBlKSkgewomIzQzOwkJaWYgKGF0eXBlICE9IEJQRl9SRUFEICZhbXA7JmFtcDsKJiM0MzsJCSAgICAoIXR5cGVfaXNfcHRyX2FsbG9jX29iaihyZWctJmd0O3R5cGUpIHx8IHJlZy0mZ3Q7dHlwZSAmYW1wOyBQVFJfVU5UUlVTVEVEKSkgewogCQkJdmVyYm9zZShlbnYsICYjMzQ7b25seSByZWFkIGlzIHN1cHBvcnRlZFxuJiMzNDspOwogCQkJcmV0dXJuIC1FQUNDRVM7CiAJCX0KIAogCQlpZiAodHlwZV9pc19hbGxvYyhyZWctJmd0O3R5cGUpICZhbXA7JmFtcDsgIXR5cGVfaXNfbm9uX293bmluZ19yZWYocmVnLSZndDt0eXBlKSAmYW1wOyZhbXA7Ci0JCSAgICAhKHJlZy0mZ3Q7dHlwZSAmYW1wOyBNRU1fUkNVKSAmYW1wOyZhbXA7ICFyZWdfaXNfcmVmZXJlbmNlZChlbnYsIHJlZykpIHsKJiM0MzsJCSAgICAhKHJlZy0mZ3Q7dHlwZSAmYW1wOyAoTUVNX1JDVSB8IFBUUl9VTlRSVVNURUQpKSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgIXJlZ19pc19yZWZlcmVuY2VkKGVudiwgcmVnKSkgewogCQkJdmVyaWZpZXJfYnVnKGVudiwgJiMzNDthbGxvY2F0ZWQgb2JqZWN0IG11c3QgaGF2ZSBhIHJlZmVyZW5jZWQgaWQmIzM0Oyk7CiAJCQlyZXR1cm4gLUVGQVVMVDsKIAkJfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2hfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2hfZmFpbC5jCmluZGV4IGZjZjdhNzU2N2RhMjIuLmQ3YjhjZDY0NThiYjkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoX2ZhaWwuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaF9mYWlsLmMKQEAgLTgsMTQgJiM0Mzs4LDIyIEBACiAjaW5jbHVkZSAmIzM0Oy4uL2JwZl9leHBlcmltZW50YWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2JwZl9taXNjLmgmIzM0OwogCiYjNDM7ZXh0ZXJuIHZvaWQgYnBmX3JjdV9yZWFkX2xvY2sodm9pZCkgX19rc3ltOwomIzQzO2V4dGVybiB2b2lkIGJwZl9yY3VfcmVhZF91bmxvY2sodm9pZCkgX19rc3ltOwomIzQzOwogc3RydWN0IG5vZGVfZGF0YSB7CiAJbG9uZyBrZXk7CiAJbG9uZyBkYXRhOwogCXN0cnVjdCBicGZfcmJfbm9kZSBub2RlOwogfTsKIAomIzQzO3N0cnVjdCBwbGFpbl9kYXRhIHsKJiM0MzsJbG9uZyBrZXk7CiYjNDM7fTsKJiM0MzsKIHN0cnVjdCBtYXBfdmFsdWUgewogCXN0cnVjdCBub2RlX2RhdGEgX19rcHRyICpub2RlOwomIzQzOwlzdHJ1Y3QgcGxhaW5fZGF0YSBfX2twdHIgKnBsYWluOwogfTsKIAogc3RydWN0IG5vZGVfZGF0YTIgewpAQCAtMzEsNiAmIzQzOzM5LDcgQEAgc3RydWN0IG5vZGVfZGF0YTIgewogICogWzM1XSBUWVBFX1RBRyAmIzM5O2twdHJfcmVmJiMzOTsgdHlwZV9pZD0zNAogICovCiBzdHJ1Y3Qgbm9kZV9kYXRhICpqdXN0X2hlcmVfYmVjYXVzZV9idGZfYnVnOwomIzQzO3N0cnVjdCBwbGFpbl9kYXRhICpqdXN0X2hlcmVfYmVjYXVzZV9idGZfYnVnMjsKIAogc3RydWN0IHsKIAlfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX0FSUkFZKTsKQEAgLTgyLDQgJiM0Mzs5MSw1MyBAQCBsb25nIGRyb3BfcmJfbm9kZV9vZmYodm9pZCAqY3R4KQogCXJldHVybiAwOwogfQogCiYjNDM7U0VDKCYjMzQ7P3RjJiMzNDspCiYjNDM7X19mYWlsdXJlIF9fbXNnKCYjMzQ7b25seSByZWFkIGlzIHN1cHBvcnRlZCYjMzQ7KQomIzQzO2xvbmcgd3JpdGVfdW50cnVzdGVkX2FsbG9jX29iaih2b2lkICpjdHgpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbWFwX3ZhbHVlICptYXB2YWw7CiYjNDM7CXN0cnVjdCBub2RlX2RhdGEgKnJlczsKJiM0MzsJaW50IGlkeCA9IDA7CiYjNDM7CiYjNDM7CW1hcHZhbCA9IGJwZl9tYXBfbG9va3VwX2VsZW0oJmFtcDtzb21lX25vZGVzLCAmYW1wO2lkeCk7CiYjNDM7CWlmICghbWFwdmFsKQomIzQzOwkJcmV0dXJuIDE7CiYjNDM7CiYjNDM7CWJwZl9yY3VfcmVhZF9sb2NrKCk7CiYjNDM7CXJlcyA9IG1hcHZhbC0mZ3Q7bm9kZTsKJiM0MzsJaWYgKCFyZXMpIHsKJiM0MzsJCWJwZl9yY3VfcmVhZF91bmxvY2soKTsKJiM0MzsJCXJldHVybiAyOwomIzQzOwl9CiYjNDM7CWJhcnJpZXJfdmFyKHJlcyk7CiYjNDM7CWJwZl9yY3VfcmVhZF91bmxvY2soKTsKJiM0MzsKJiM0MzsJcmVzLSZndDtrZXkgPSA0MjsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO1NFQygmIzM0Oz90YyYjMzQ7KQomIzQzO19fc3VjY2VzcwomIzQzO2xvbmcgcmVhZF91bnRydXN0ZWRfYWxsb2Nfb2JqKHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtYXBfdmFsdWUgKm1hcHZhbDsKJiM0MzsJc3RydWN0IHBsYWluX2RhdGEgKnJlczsKJiM0MzsJaW50IGlkeCA9IDA7CiYjNDM7CiYjNDM7CW1hcHZhbCA9IGJwZl9tYXBfbG9va3VwX2VsZW0oJmFtcDtzb21lX25vZGVzLCAmYW1wO2lkeCk7CiYjNDM7CWlmICghbWFwdmFsKQomIzQzOwkJcmV0dXJuIDE7CiYjNDM7CiYjNDM7CWJwZl9yY3VfcmVhZF9sb2NrKCk7CiYjNDM7CXJlcyA9IG1hcHZhbC0mZ3Q7cGxhaW47CiYjNDM7CWlmICghcmVzKSB7CiYjNDM7CQlicGZfcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CQlyZXR1cm4gMjsKJiM0MzsJfQomIzQzOwliYXJyaWVyX3ZhcihyZXMpOwomIzQzOwlicGZfcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CiYjNDM7CXJldHVybiByZXMtJmd0O2tleTsKJiM0Mzt9CiYjNDM7CiBjaGFyIF9saWNlbnNlW10gU0VDKCYjMzQ7bGljZW5zZSYjMzQ7KSA9ICYjMzQ7R1BMJiMzNDs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMDEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0MjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQlBGIFZlcmlmaWVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBCUEYgdmVyaWZpZXIsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBjaGVja19wdHJfdG9fYnRmX2FjY2Vzc2AgZnVuY3Rpb24gaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIE15IGluaXRpYWwgcmVhZCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBiaXQgb2YgYSBzZWN1cml0eSBoYXJkZW5pbmcsIHJlbGF0ZWQgdG8gaG93IHVudHJ1c3RlZCBwb2ludGVycyBpbnRlcmFjdCB3aXRoIGFsbG9jYXRlZCBvYmplY3RzIHdpdGhpbiB0aGUgQlBGIGVudmlyb25tZW50LgoKRXNzZW50aWFsbHksIHRoZXkmIzM5O3JlIG1vZGlmeWluZyB0aGUgY29uZGl0aW9ucyB0aGF0IHBlcm1pdCB3cml0ZSBhY2Nlc3MgdG8gYWxsb2NhdGVkIG9iamVjdHMuIFRoZSBvbGQgd2F5IGFsbG93ZWQgd3JpdGVzIGlmIHRoZSBhY2Nlc3MgdHlwZSB3YXNuJiMzOTt0IGEgcmVhZCBhbmQgdGhlIHJlZ2lzdGVyIHR5cGUgd2FzbiYjMzk7dCBwb2ludGluZyB0byBhbiBhbGxvY2F0ZWQgb2JqZWN0LiBOb3csIHRoZXkmIzM5O3JlIGFkZGluZyBgfHwgcmVnLSZndDt0eXBlICZhbXA7IFBUUl9VTlRSVVNURURgIHRvIHRoYXQgY2hlY2ssIG1lYW5pbmcgd3JpdGUgYWNjZXNzIGlzIGRlbmllZCBpZiB0aGUgcG9pbnRlciBpcyBjb25zaWRlcmVkIHVudHJ1c3RlZCwgZXZlbiBpZiBpdCYjMzk7cyBwb2ludGluZyBhdCBzb21ldGhpbmcgYWxsb2NhdGVkLiBUaGV5IGFsc28gdG91Y2hlZCB0aGUgY29uZGl0aW9uIHRoYXQgY2hlY2tzIHJlZmVyZW5jZWQgSURzIGZvciBhbGxvY2F0ZWQgb2JqZWN0cywgYWRkaW5nIGBQVFJfVU5UUlVTVEVEYCB0byB0aGUgbWFzaywgc28gdW50cnVzdGVkIGFsbG9jYXRlZCBvYmplY3RzIGRvbiYjMzk7dCBuZWVkIGEgcmVmZXJlbmNlZCBJRC4KClRoaXMgaXMgaW1tZWRpYXRlbHkgc2NyZWFtaW5nICYjMzQ7ZnV6emluZyB0YXJnZXQmIzM0OyBhdCBtZS4gVGhlIGZhY3QgdGhhdCB0aGV5JiMzOTtyZSB0b3VjaGluZyBwb2ludGVyIGhhbmRsaW5nLCBhbGxvY2F0ZWQgbWVtb3J5LCBhbmQgc2VjdXJpdHktcmVsZXZhbnQgY2hlY2tzIGlzIHZlcnkgcHJvbWlzaW5nLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzZWUuLi4gdGhlIGNvZGUgaXRzZWxmIGhpZ2hsaWdodHMgdGhlIGBjaGVja19wdHJfdG9fYnRmX2FjY2Vzc2AgZnVuY3Rpb24uIEFuZCBJJiMzOTttIHByZXR0eSBzdXJlIHRoaXMgbmVlZHMgYEJQRl9TWVNDQUxMYCBlbmFibGVkLiBJIGNhbiBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgbGF0ZXIsIGJ1dCB0aGF0JiMzOTtzIG15IHdvcmtpbmcgYXNzdW1wdGlvbi4KCkhvbGQgb24uLi4gSSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZSBhYm91dCB0aGUgZnV6emluZyB0YXJnZXQuIEFjY29yZGluZyB0byB0aGUgaW5zdHJ1Y3Rpb25zLCBJIHNob3VsZCBiZSBmb2N1c2VkIG9uIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXJzLiBSaWdodCwgc28gYGNoZWNrX3B0cl90b19idGZfYWNjZXNzYCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCYjMzk7cyBhIGJpdCBvZiBhIGJ1bW1lci4gTGV0JiMzOTtzIGZpbmQgaXRzIGNhbGxlciB0byBzZWUgaWYgdGhhdCYjMzk7cyBtb3JlIGZ1enphYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoZWNrX3B0cl90b19idGZfYWNjZXNzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz01NzIxPXN0YXRpYyBib29sIHR5cGVfaXNfdHJ1c3RlZF9vcl9udWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MzItXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTczMzpzdGF0aWMgaW50IGNoZWNrX3B0cl90b19idGZfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTczNC1cdFx0XHRcdCAgIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWdzLCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02MDgwPXN0YXRpYyBpbnQgY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaW5zbl9pZHgsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTYyOTMtXHRcdCAgICF0eXBlX21heV9iZV9udWxsKHJlZy1cdTAwM2V0eXBlKSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjYyOTQ6XHRcdGVyciA9IGNoZWNrX3B0cl90b19idGZfYWNjZXNzKGVudiwgcmVncywgcmVnLCBhcmdubywgb2ZmLCBzaXplLCB0LFxua2VybmVsL2JwZi92ZXJpZmllci5jLTYyOTUtXHRcdFx0XHRcdCAgICAgIHZhbHVlX3JlZ25vKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9Njc0Mz1zdGF0aWMgaW50IGNoZWNrX2hlbHBlcl9tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY4MDAtXHRjYXNlIFBUUl9UT19CVEZfSUQ6XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjgwMTpcdFx0cmV0dXJuIGNoZWNrX3B0cl90b19idGZfYWNjZXNzKGVudiwgcmVncywgcmVnLCBhcmdubywgMCxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02ODAyLVx0XHRcdFx0XHQgICAgICAgYWNjZXNzX3NpemUsIGFjY2Vzc190eXBlLCAtMSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQyMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgcmVsYXRlcyB0byB0aGUga2VybmVsIGNvZGU6CgoqKkFuYWx5emluZyB0aGUgTWVtb3J5IEFjY2VzcyBDb250cm9sIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBtZW1vcnkgYWNjZXNzIGlzIHZhbGlkYXRlZCB3aXRoaW4gdGhlIEJQRiBzeXN0ZW0uIEkgc2VlIHRoYXQgYGNoZWNrX3B0cl90b19idGZfYWNjZXNzYCBpcyBhIGNydWNpYWwgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBiZWluZyBjYWxsZWQgYnkgYGNoZWNrX21lbV9hY2Nlc3NgIGFuZCBgY2hlY2tfaGVscGVyX21lbV9hY2Nlc3NgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYSBjb3JlIGNvbXBvbmVudCBmb3IgZW5zdXJpbmcgc2FmZSBtZW1vcnkgaW50ZXJhY3Rpb25zLiBgY2hlY2tfbWVtX2FjY2Vzc2AsIGluIHR1cm4sIGlzIGJlaW5nIGludm9rZWQgaGlnaGVyIHVwIGluIHRoZSBleGVjdXRpb24gc3RhY2ssIG1vc3QgbGlrZWx5IGZyb20gYGRvX2NoZWNrYCBvciBhIHNpbWlsYXIgZnVuY3Rpb24gZGVhbGluZyB3aXRoIEJQRiBwcm9ncmFtIHZhbGlkYXRpb24uCgpNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gdHJhY2UgdGhpcyBiYWNrIHRvIHRoZSB0b3AtbGV2ZWwgZnVuY3Rpb25zIHRvIGdldCBhIGhpZ2gtbGV2ZWwgdmlldyBvZiBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlci4gR2l2ZW4gdGhpcyBrbm93bGVkZ2UsIEkgc2hvdWxkIGJlIGFibGUgdG8gdHJhY2sgYmFjayB0byBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gZnJvbSBgY2hlY2tfbWVtX2FjY2Vzc2AuIElmIG5vdCwgSSBjYW4ganVzdCB1c2UgYGJwZl9jaGVja2AuIFRoaXMgd2lsbCBnaXZlIG1lIGFuIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgbWVtb3J5IGFjY2VzcyBjaGVjayB3b3JrZmxvdyBmb3IgQlBGIHByb2dyYW1zLCB3aGljaCBpcyB3aGF0IEkmIzM5O20gaW50ZXJlc3RlZCBpbiB1bmRlcnN0YW5kaW5nLiBUaGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIGhvdyBhY2Nlc3MgaXMgY29udHJvbGxlZCwgYW5kIGhvdyB2dWxuZXJhYmlsaXRpZXMgbWF5IGJlIHByZXZlbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja19tZW1fYWNjZXNzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz01NT1zdGF0aWMgYm9vbCBicGZfZ2xvYmFsX3BlcmNwdV9tYV9zZXQ7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwMi0gKiBjYW4gYmU6IFBUUl9UT19NQVBfVkFMVUUsIFBUUl9UT19DVFgsIFBUUl9UT19TVEFDSywgUFRSX1RPX1NPQ0tFVC4gVGhlc2UgYXJlXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTAzOiAqIGZvdXIgcG9pbnRlciB0eXBlcyByZWNvZ25pemVkIGJ5IGNoZWNrX21lbV9hY2Nlc3MoKSBmdW5jdGlvbi5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDQtICpcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODQ3PXN0YXRpYyBib29sIGlzX2R5bnB0cl9yZWdfdmFsaWRfdW5pbml0KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1Ny1cdCAqIGVycm9yIGJlY2F1c2UgdGhpcyBqdXN0IG1lYW5zIHRoZSBzdGFjayBzdGF0ZSBoYXNuJiMzOTt0IGJlZW4gdXBkYXRlZCB5ZXQuXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODU4Olx0ICogV2Ugd2lsbCBkbyBjaGVja19tZW1fYWNjZXNzIHRvIGNoZWNrIGFuZCB1cGRhdGUgc3RhY2sgYm91bmRzIGxhdGVyLlxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1OS1cdCAqL1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDAzPXN0YXRpYyBib29sIGlzX2l0ZXJfcmVnX3ZhbGlkX3VuaW5pdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDA5LVx0LyogRm9yIC1FUkFOR0UgKGkuZS4gc3BpIG5vdCBmYWxsaW5nIGludG8gYWxsb2NhdGVkIHN0YWNrIHNsb3RzKSwgd2Vcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDEwOlx0ICogd2lsbCBkbyBjaGVja19tZW1fYWNjZXNzIHRvIGNoZWNrIGFuZCB1cGRhdGUgc3RhY2sgYm91bmRzIGxhdGVyLCBzb1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEwMTEtXHQgKiByZXR1cm4gdHJ1ZSBmb3IgdGhhdCBjYXNlLlxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTQ4PXN0YXRpYyBib29sIGlzX2lycV9mbGFnX3JlZ192YWxpZF91bmluaXQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE1NC1cdC8qIEZvciAtRVJBTkdFIChpLmUuIHNwaSBub3QgZmFsbGluZyBpbnRvIGFsbG9jYXRlZCBzdGFjayBzbG90cyksIHdlXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE1NTpcdCAqIHdpbGwgZG8gY2hlY2tfbWVtX2FjY2VzcyB0byBjaGVjayBhbmQgdXBkYXRlIHN0YWNrIGJvdW5kcyBsYXRlciwgc29cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTU2LVx0ICogcmV0dXJuIHRydWUgZm9yIHRoYXQgY2FzZS5cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MzQzNz1zdGF0aWMgdm9pZCBzY3J1Yl9zcGVjaWFsX3Nsb3Qoc3RydWN0IGJwZl9mdW5jX3N0YXRlICpzdGF0ZSwgaW50IHNwaSlcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMzQ0OS0vKiBjaGVja19zdGFja197cmVhZCx3cml0ZX1fZml4ZWRfb2ZmIGZ1bmN0aW9ucyB0cmFjayBzcGlsbC9maWxsIG9mIHJlZ2lzdGVycyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzozNDUwOiAqIHN0YWNrIGJvdW5kYXJ5IGFuZCBhbGlnbm1lbnQgYXJlIGNoZWNrZWQgaW4gY2hlY2tfbWVtX2FjY2VzcygpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMzQ1MS0gKi9cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NDEzOD1zdGF0aWMgaW50IGNoZWNrX21hcF9hY2Nlc3NfdHlwZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00MTU5LS8qIGNoZWNrIHJlYWQvd3JpdGUgaW50byBtZW1vcnkgcmVnaW9uIChlLmcuLCBtYXAgdmFsdWUsIHJpbmdidWYgc2FtcGxlLCBldGMpICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDE2MDpzdGF0aWMgaW50IF9fY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQxNjEtXHRcdFx0ICAgICAgaW50IG9mZiwgaW50IHNpemUsIHUzMiBtZW1fc2l6ZSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NDE5OD1zdGF0aWMgaW50IGNoZWNrX21lbV9yZWdpb25fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTQyMjEtXHR9XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDIyMjpcdGVyciA9IF9fY2hlY2tfbWVtX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIHJlZ19zbWluKHJlZykgJiM0Mzsgb2ZmLCBzaXplLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQyMjMtXHRcdFx0XHQgbWVtX3NpemUsIHplcm9fc2l6ZV9hbGxvd2VkKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDIzOC1cdH1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0MjM5Olx0ZXJyID0gX19jaGVja19tZW1fYWNjZXNzKGVudiwgcmVnLCBhcmdubywgcmVnX3VtYXgocmVnKSAmIzQzOyBvZmYsIHNpemUsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDI0MC1cdFx0XHRcdCBtZW1fc2l6ZSwgemVyb19zaXplX2FsbG93ZWQpO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz00NjQ4PXN0YXRpYyBpbnQgY2hlY2tfcGFja2V0X2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLCBpbnQgb2ZmLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NjYxLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjQ2NjI6XHQvKiBfX2NoZWNrX21lbV9hY2Nlc3MgaGFzIG1hZGUgc3VyZSBcJiMzNDtvZmYgJiM0Mzsgc2l6ZSAtIDFcJiMzNDsgaXMgd2l0aGluIHUxNi5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NjYzLVx0ICogcmVnX3VtYXgocmVnKSBjYW4mIzM5O3QgYmUgYmlnZ2VyIHRoYW4gTUFYX1BBQ0tFVF9PRkYgd2hpY2ggaXMgMHhmZmZmLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQ2NjQtXHQgKiBvdGhlcndpc2UgZmluZF9nb29kX3BrdF9wb2ludGVycyB3b3VsZCBoYXZlIHJlZnVzZWQgdG8gc2V0IHJhbmdlIGluZm9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0NjY1Olx0ICogdGhhdCBfX2NoZWNrX21lbV9hY2Nlc3Mgd291bGQgaGF2ZSByZWplY3RlZCB0aGlzIHBrdCBhY2Nlc3MuXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDY2Ni1cdCAqIFRoZXJlZm9yZSwgXCYjMzQ7b2ZmICYjNDM7IHJlZ191bWF4KHJlZykgJiM0Mzsgc2l6ZSAtIDFcJiMzNDsgd29uJiMzOTt0IG92ZXJmbG93IHUzMi5cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NjA1Nz1zdGF0aWMgdm9pZCBhZGRfc2NhbGFyX3RvX3JlZyhzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqZHN0X3JlZywgczY0IHZhbClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjA3OS0gKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2MDgwOnN0YXRpYyBpbnQgY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaW5zbl9pZHgsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjA4MS1cdFx0XHQgICAgaW50IG9mZiwgaW50IGJwZl9zaXplLCBlbnVtIGJwZl9hY2Nlc3NfdHlwZSB0LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02MzQzPXN0YXRpYyBpbnQgY2hlY2tfbG9hZF9tZW0oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02Mzc1LVx0ICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjM3NjpcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBlbnYtXHUwMDNlaW5zbl9pZHgsIHJlZ3MgJiM0MzsgaW5zbi1cdTAwM2VzcmNfcmVnLCBhcmdub19mcm9tX3JlZyhpbnNuLVx1MDAzZXNyY19yZWcpLCBpbnNuLVx1MDAzZW9mZixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02Mzc3LVx0XHRcdCAgICAgICBCUEZfU0laRShpbnNuLVx1MDAzZWNvZGUpLCBCUEZfUkVBRCwgaW5zbi1cdTAwM2Vkc3RfcmVnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02Mzg2PXN0YXRpYyBpbnQgY2hlY2tfc3RvcmVfcmVnKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQxNS1cdC8qIENoZWNrIGlmIChkc3RfcmVnICYjNDM7IG9mZikgaXMgd3JpdGVhYmxlLiAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjY0MTY6XHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LVx1MDAzZWluc25faWR4LCByZWdzICYjNDM7IGluc24tXHUwMDNlZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cdTAwM2Vkc3RfcmVnKSwgaW5zbi1cdTAwM2VvZmYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQxNy1cdFx0XHQgICAgICAgQlBGX1NJWkUoaW5zbi1cdTAwM2Vjb2RlKSwgQlBGX1dSSVRFLCBpbnNuLVx1MDAzZXNyY19yZWcsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTY0MjQ9c3RhdGljIGludCBjaGVja19hdG9taWNfcm13KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY0OTMtXHQgKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2NDk0Olx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cdTAwM2VpbnNuX2lkeCwgZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cdTAwM2Vkc3RfcmVnKSwgaW5zbi1cdTAwM2VvZmYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQ5NS1cdFx0XHQgICAgICAgQlBGX1NJWkUoaW5zbi1cdTAwM2Vjb2RlKSwgQlBGX1JFQUQsIC0xLCB0cnVlLCBmYWxzZSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQ5Ni1cdGlmICghZXJyIFx1MDAyNlx1MDAyNiBsb2FkX3JlZyBcdTAwM2U9IDApXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjQ5NzpcdFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cdTAwM2VpbnNuX2lkeCwgZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cdTAwM2Vkc3RfcmVnKSxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDk4LVx0XHRcdFx0ICAgICAgIGluc24tXHUwMDNlb2ZmLCBCUEZfU0laRShpbnNuLVx1MDAzZWNvZGUpLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTA4LVx0LyogQ2hlY2sgd2hldGhlciB3ZSBjYW4gd3JpdGUgaW50byB0aGUgc2FtZSBtZW1vcnkuICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjUwOTpcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBlbnYtXHUwMDNlaW5zbl9pZHgsIGRzdF9yZWcsIGFyZ25vX2Zyb21fcmVnKGluc24tXHUwMDNlZHN0X3JlZyksIGluc24tXHUwMDNlb2ZmLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1MTAtXHRcdFx0ICAgICAgIEJQRl9TSVpFKGluc24tXHUwMDNlY29kZSksIEJQRl9XUklURSwgLTEsIHRydWUsIGZhbHNlKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NzI0MD1zdGF0aWMgaW50IHByb2Nlc3NfZHlucHRyX2Z1bmMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzI3Ni1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQlBGX0RZTlBUUl9TSVpFOyBpICYjNDM7PSA4KSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NzI3NzpcdFx0XHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgaW5zbl9pZHgsIHJlZywgYXJnbm8sXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzI3OC1cdFx0XHRcdFx0ICAgICAgIGksIEJQRl9EVywgQlBGX1dSSVRFLCAtMSwgZmFsc2UsIGZhbHNlKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NzM2MD1zdGF0aWMgaW50IHByb2Nlc3NfaXRlcl9hcmcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubywgaW50IGluc25faWR4LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03Mzk3LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9zbG90cyAqIDg7IGkgJiM0Mzs9IEJQRl9SRUdfU0laRSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjczOTg6XHRcdFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGluc25faWR4LCByZWcsIGFyZ25vLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTczOTktXHRcdFx0XHRcdCAgICAgICBpLCBCUEZfRFcsIEJQRl9XUklURSwgLTEsIGZhbHNlLCBmYWxzZSk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEwMTczPXN0YXRpYyBpbnQgY2hlY2tfaGVscGVyX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDI1OS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG1ldGEuYWNjZXNzX3NpemU7IGkmIzQzOyYjNDM7KSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTAyNjA6XHRcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBpbnNuX2lkeCwgcmVncyAmIzQzOyBtZXRhLnJlZ25vLCBhcmdub19mcm9tX3JlZyhtZXRhLnJlZ25vKSwgaSwgQlBGX0IsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTAyNjEtXHRcdFx0XHQgICAgICAgQlBGX1dSSVRFLCAtMSwgZmFsc2UsIGZhbHNlKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA1MDctXHRcdFx0XHQgKiBpdCB3aWxsIGNvbmZ1c2UgdGhlIGNoZWNrIG9mIFBUUl9UT19CVEZfSUQgaW5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDUwODpcdFx0XHRcdCAqIGNoZWNrX21lbV9hY2Nlc3MoKS5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDUwOS1cdFx0XHRcdCAqL1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTQzNT1zdGF0aWMgaW50IHByb2Nlc3NfaXJxX2ZsYWcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE0NjItXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE0NjM6XHRcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBlbnYtXHUwMDNlaW5zbl9pZHgsIHJlZywgYXJnbm8sIDAsIEJQRl9EVyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTQ2NC1cdFx0XHRcdCAgICAgICBCUEZfV1JJVEUsIC0xLCBmYWxzZSwgZmFsc2UpO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzIzNz1zdGF0aWMgaW50IGRvX2NoZWNrX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgYm9vbCAqZG9fcHJpbnRfc3RhdGUpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3Mjc0LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE3Mjc1Olx0XHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LVx1MDAzZWluc25faWR4LCBjdXJfcmVncyhlbnYpICYjNDM7IGluc24tXHUwMDNlZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cdTAwM2Vkc3RfcmVnKSxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzI3Ni1cdFx0XHRcdCAgICAgICBpbnNuLVx1MDAzZW9mZiwgQlBGX1NJWkUoaW5zbi1cdTAwM2Vjb2RlKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODcyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgQlBGIHZlcmlmaWVyIGVudHJ5IHBvaW50OgoKKipEaXZpbmcgaW50byB0aGUgQlBGIFZlcmlmaWVyOiBgYnBmX2NoZWNrYCoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBCUEYgdmVyaWZpZXIga2lja3MgaW4uIE5hdHVyYWxseSwgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciB0aGUgKmNoZWNrKiBpdHNlbGYsIHdoaWNoIHNlZW1zIHRvIGJlIGBicGZfY2hlY2tgLiBOb3csIEkgbmVlZCB0byB0cmFjZSB0aGlzIGZ1bmN0aW9uIGRvd24uIExldCYjMzk7cyBoZWFkIG92ZXIgdG8gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIG1hZ2ljIHByb2JhYmx5IGhhcHBlbnMuIFRpbWUgdG8gcHVsbCB1cCB0aGUgc291cmNlIGFuZCBzZWUgd2hhdCYjMzk7cyB3aGF0LiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIGNvcmUgbG9naWMgdGhlIHZlcmlmaWVyIHVzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2NoZWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz01NT1zdGF0aWMgYm9vbCBicGZfZ2xvYmFsX3BlcmNwdV9tYV9zZXQ7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTYtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTc6LyogYnBmX2NoZWNrKCkgaXMgYSBzdGF0aWMgY29kZSBhbmFseXplciB0aGF0IHdhbGtzIGVCUEYgcHJvZ3JhbVxua2VybmVsL2JwZi92ZXJpZmllci5jLTU4LSAqIGluc3RydWN0aW9uIGJ5IGluc3RydWN0aW9uIGFuZCB1cGRhdGVzIHJlZ2lzdGVyL3N0YWNrIHN0YXRlLlxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTg5OT1zdGF0aWMgaW50IHByb2Nlc3Nfa2ZfYXJnX3B0cl90b19yYnRyZWVfbm9kZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTkxMC0gKiBMU00gaG9va3MgYW5kIGl0ZXJzIChib3RoIHNsZWVwYWJsZSBhbmQgbm9uLXNsZWVwYWJsZSkgYXJlIHNhZmUuXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE5MTE6ICogQW55IHNsZWVwYWJsZSBwcm9ncyBhcmUgYWxzbyBzYWZlIHNpbmNlIGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KCkgZW5mb3JjZVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExOTEyLSAqIHRoZW0gY2FuIG9ubHkgYmUgYXR0YWNoZWQgdG8gc29tZSBzcGVjaWZpYyBob29rIHBvaW50cy5cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg4OTM9YnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTI3LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4OTI4OmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTI5LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5MzMzPXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTM2My1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTM2NDpcdHJldCA9IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KFx1MDAyNmVudi1cdTAwM2Vsb2csIHByb2csIHRndF9wcm9nLCBidGZfaWQsIFx1MDAyNnRndF9pbmZvKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTM2NS1cdGlmIChyZXQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NDMyLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NDMzOmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTQzNC1cdFx0XHRcdCAgc3RydWN0IGJwZl9hdHRhY2hfdGFyZ2V0X2luZm8gKnRndF9pbmZvKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTYzMD1pbnQgYnBmX2ZpeHVwX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc3My1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTc3NDppbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKnByb2csIHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc3NS1cdCAgICAgIHN0cnVjdCBicGZfbG9nX2F0dHIgKmF0dHJfbG9nKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc4OC1cdC8qICYjMzk7c3RydWN0IGJwZl92ZXJpZmllcl9lbnYmIzM5OyBjYW4gYmUgZ2xvYmFsLCBidXQgc2luY2UgaXQmIzM5O3Mgbm90IHNtYWxsLFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5Nzg5Olx0ICogYWxsb2NhdGUvZnJlZSBpdCBldmVyeSB0aW1lIGJwZl9jaGVjaygpIGlzIGNhbGxlZFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzkwLVx0ICovXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODYzLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5ODY0Olx0cmV0ID0gYnBmX2NoZWNrX2J0Zl9pbmZvX2Vhcmx5KGVudiwgYXR0ciwgdWF0dHIpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODY1LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NzUtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NzY6XHRyZXQgPSBicGZfY2hlY2tfYnRmX2luZm8oZW52LCBhdHRyLCB1YXR0cik7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NzctXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg4OS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTg5MDpcdHJldCA9IGJwZl9jaGVja19jZmcoZW52KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg5MS1cdGlmIChyZXQgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTE2NQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHRoZSBCUEYgVmVyaWZpZXIgRW50cnkgUG9pbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGUgQlBGIHZlcmlmaWVyIHdvcmtzLCBhbmQgaXQgbG9va3MgbGlrZSBgYnBmX2NoZWNrYCBpcyB0aGUga2V5IGVudHJ5IHBvaW50IOKAkyB0aGUgbWFpbiBmdW5jdGlvbiB3ZSYjMzk7cmUgaW50ZXJlc3RlZCBpbi4gYGJwZl9jaGVja2AgaXMgYSBnb29kIGZvY3VzIHN5bWJvbCwgSSB0aGluay4gSW5pdGlhbGx5LCBJIGNvbnNpZGVyZWQgaW5jbHVkaW5nIG90aGVyIGZ1bmN0aW9ucyBsaWtlIGBjaGVja19tZW1fYWNjZXNzYCBvciBgZG9fY2hlY2tfaW5zbmAsIGJ1dCB0aGV5JiMzOTtyZSBib3RoIHN0YXRpYywgd2hpY2ggbWFrZXMgdGhlbSBsZXNzIHVzZWZ1bCBmb3IgYSBicm9hZGVyIGFuYWx5c2lzLgoKVGhlIHBhdGNoIEkmIzM5O20gcmV2aWV3aW5nIHNwZWNpZmljYWxseSBtZW50aW9ucyBgY2hlY2tfcHRyX3RvX2J0Zl9hY2Nlc3NgLCB3aGljaCBtYWtlcyBtZSBkaWcgYSBsaXR0bGUgZnVydGhlciB0byBpZGVudGlmeSBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGUgQlBGIHZlcmlmaWVyLCB3aGljaCBtaWdodCBiZSBoZWxwZnVsIHRvIGluY2x1ZGUuCgpTbywgSSBjb25maXJtZWQgdGhhdCBgYnBmX2NoZWNrYCBpdHNlbGYgaXNuJiMzOTt0IHN0YXRpYy4gR29vZCwgdGhhdCYjMzk7cyB3aGF0IEkgd2FzIGxvb2tpbmcgZm9yLiBOb3csIGp1c3QgdG8gYmUgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBjaGVjayB0aGUga2VybmVsIGNvbmZpZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGVuYWJsZWQsIGFzIHRoaXMgaXMgYSBjb3JlIHJlcXVpcmVtZW50IGZvciB0aGUgQlBGIHZlcmlmaWVyIHRvIGJlIGFjdGl2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2NoZWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9zeXNjYWxsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9zeXNjYWxsLmM9NzI9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyAqIGNvbnN0IGJwZl9tYXBfdHlwZXNbXSA9IHtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy05MS0gKi9cbmtlcm5lbC9icGYvc3lzY2FsbC5jOjkyOmludCBicGZfY2hlY2tfdWFyZ190YWlsX3plcm8oYnBmcHRyX3QgdWFkZHIsXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy05My1cdFx0XHQgICAgIHNpemVfdCBleHBlY3RlZF9zaXplLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTI5NzI9c3RhdGljIGludCBicGZfcHJvZ19sb2FkKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0ciwgc3RydWN0IGJwZl9sb2dfYXR0ciAqYXR0cl9sb2cpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzE5Ni1cdC8qIHJ1biBlQlBGIHZlcmlmaWVyICovXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzozMTk3Olx0ZXJyID0gYnBmX2NoZWNrKFx1MDAyNnByb2csIGF0dHIsIHVhdHRyLCBhdHRyX2xvZyk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zMTk4LVx0aWYgKGVyciBcdTAwM2MgMClcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0zNjg5PXN0YXRpYyBpbnQgYnBmX3RyYWNpbmdfcHJvZ19hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM4MjEtXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzozODIyOlx0XHRlcnIgPSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChOVUxMLCBwcm9nLCB0Z3RfcHJvZywgYnRmX2lkLFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzgyMy1cdFx0XHRcdFx0ICAgICAgXHUwMDI2dGd0X2luZm8pO1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTUxNTQ9c3RhdGljIGludCBicGZfcHJvZ19nZXRfaW5mb19ieV9mZChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01MTY4LVx0bGVuID0gb2Zmc2V0b2ZlbmQoc3RydWN0IGJwZl9wcm9nX2luZm8sIGF0dGFjaF9idGZfaWQpO1xua2VybmVsL2JwZi9zeXNjYWxsLmM6NTE2OTpcdGVyciA9IGJwZl9jaGVja191YXJnX3RhaWxfemVybyhVU0VSX0JQRlBUUih1aW5mbyksIGxlbiwgaW5mb19sZW4pO1xua2VybmVsL2JwZi9zeXNjYWxsLmMtNTE3MC1cdGlmIChlcnIpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9NTQ0ND1zdGF0aWMgaW50IGJwZl9tYXBfZ2V0X2luZm9fYnlfZmQoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTQ1NC1cdGxlbiA9IG9mZnNldG9mZW5kKHN0cnVjdCBicGZfbWFwX2luZm8sIGhhc2hfc2l6ZSk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1NDU1Olx0ZXJyID0gYnBmX2NoZWNrX3VhcmdfdGFpbF96ZXJvKFVTRVJfQlBGUFRSKHVpbmZvKSwgbGVuLCBpbmZvX2xlbik7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NDU2LVx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz01NTE1PXN0YXRpYyBpbnQgYnBmX2J0Zl9nZXRfaW5mb19ieV9mZChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTIzLVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NTUyNDpcdGVyciA9IGJwZl9jaGVja191YXJnX3RhaWxfemVybyhVU0VSX0JQRlBUUih1aW5mbyksIHNpemVvZigqdWluZm8pLCBpbmZvX2xlbik7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTI1LVx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz01NTMxPXN0YXRpYyBpbnQgYnBmX2xpbmtfZ2V0X2luZm9fYnlfZmQoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTU0MC1cbmtlcm5lbC9icGYvc3lzY2FsbC5jOjU1NDE6XHRlcnIgPSBicGZfY2hlY2tfdWFyZ190YWlsX3plcm8oVVNFUl9CUEZQVFIodWluZm8pLCBzaXplb2YoaW5mbyksIGluZm9fbGVuKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTU1NDItXHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTU1Njk9c3RhdGljIGludCB0b2tlbl9nZXRfaW5mb19ieV9mZChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTc3LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NTU3ODpcdGVyciA9IGJwZl9jaGVja191YXJnX3RhaWxfemVybyhVU0VSX0JQRlBUUih1aW5mbyksIHNpemVvZigqdWluZm8pLCBpbmZvX2xlbik7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTc5LVx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz02MzU0PXN0YXRpYyBpbnQgX19zeXNfYnBmKGVudW0gYnBmX2NtZCBjbWQsIGJwZnB0cl90IHVhdHRyLCB1bnNpZ25lZCBpbnQgc2l6ZSxcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy02MzYyLVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NjM2MzpcdGVyciA9IGJwZl9jaGVja191YXJnX3RhaWxfemVybyh1YXR0ciwgc2l6ZW9mKGF0dHIpLCBzaXplKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTYzNjQtXHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTYzNzQtXHRpZiAoY21kIFx1MDAyNiBCUEZfQ09NTU9OX0FUVFJTKSB7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo2Mzc1Olx0XHRlcnIgPSBicGZfY2hlY2tfdWFyZ190YWlsX3plcm8odWF0dHJfY29tbW9uLFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjM3Ni1cdFx0XHRcdFx0ICAgICAgIG9mZnNldG9mZW5kKHN0cnVjdCBicGZfY29tbW9uX2F0dHIsIGxvZ190cnVlX3NpemUpLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDg5NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBMb2FkaW5nIE1lY2hhbmlzbSoqCgpPa2F5LCBzbyBgYnBmX3Byb2dfbG9hZGAgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBsb2FkaW5nIEJQRiBwcm9ncmFtcywgYW5kIGl0IG1ha2VzIGEgY2FsbCB0byBgYnBmX2NoZWNrYC4gSW50ZXJlc3RpbmcuIFNpbmNlIGBicGZfcHJvZ19sb2FkYCBpcyBzdGF0aWMsIHRoYXQgbWVhbnMgbXkgZm9jdXMgc2hvdWxkIGJlIG9uIHdoZXJlIGl0JiMzOTtzIGNhbGxlZCBmcm9tLCBhbmQgdGhhdCYjMzk7cyB0aGUgYF9fc3lzX2JwZmAgc3lzdGVtIGNhbGwuIENvbnNlcXVlbnRseSwgYGJwZl9jaGVja2AgbG9va3MgbGlrZSBhIGtleSBmdW5jdGlvbiB0byB1bmRlcnN0YW5kIHRoZSBpbnRlZ3JpdHkgY2hlY2tzIGJlaW5nIHBlcmZvcm1lZCBkdXJpbmcgcHJvZ3JhbSBsb2FkaW5nLiBJdCBtYWtlcyBzZW5zZSB0byB6ZXJvIGluIG9uIHRoYXQgc3ltYm9sLgoKQnV0LCBpcyBgYnBmX2NoZWNrYCB0aGUgb25seSBjcml0aWNhbCBmdW5jdGlvbj8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0LiBBcmUgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9ucyBpbnZvbHZlZCBpbiB0aGlzIHByb2Nlc3MgdGhhdCBuZWVkIHNjcnV0aW55PyBMb29raW5nIGF0IHRoaXMgcGF0Y2gsIEkgc2VlIG1vZGlmaWNhdGlvbnMgdG8gYGNoZWNrX3B0cl90b19idGZfYWNjZXNzYCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgQlBGIHZlcmlmaWVyLiBUaGUgcHJlc2VuY2Ugb2YgdGhlIGBCUEZfU1lTQ0FMTGAgY29uZmlnIHN5bWJvbCB0ZWxscyBtZSB0aGlzIGlzIGFsbCB0aWVkIGRpcmVjdGx5IHRvIHRoZSBCUEYgc3lzdGVtIGNhbGwgaW50ZXJmYWNlLiBHb3QgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5pdC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNzgKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipXaGVyZSYjMzk7cyBUaGF0IERhbmcgTWFjcm8/KioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgQlBGIGNvZGUsIGFuZCBJJiMzOTttIHVzaW5nIGBCUEZfU1lTQ0FMTGAgaW4gdGhlcmUsIG9yIG1heWJlIEkmIzM5O20gcmVhZGluZyBzb21lIGV4aXN0aW5nIGNvZGUgdGhhdCB1c2VzIGl0LiBIb2xkIG9uIGEgc2Vjb25k4oCmIHdoZXJlIGV4YWN0bHkgZGlkIHRoYXQgbWFjcm8gZ2V0IGRlZmluZWQ/IEkgY2FuJiMzOTt0IHF1aXRlIHJlbWVtYmVyIGlmIGl0JiMzOTtzIGluIHRoZSBzdGFuZGFyZCBoZWFkZXJzIG9yIGlmIGl0JiMzOTtzIGRlZmluZWQgd2l0aGluIHRoZSBCUEYgdG9vbGNoYWluIGl0c2VsZiBhbmQgdXNlZCBpbiBzb21lIHNoYXJlZCBpbmNsdWRlIGZpbGVzLCBvciBpZiB0aGVyZSYjMzk7cyBzb21lIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGdvaW5nIG9uLiBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgZGVjbGFyYXRpb24gdG8gdW5kZXJzdGFuZCBwcmVjaXNlbHkgaG93IGl0JiMzOTtzIGV4cGFuZGluZyBhbmQgaWYgaXQgd2lsbCB3b3JrIGluIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQuIFRpbWUgdG8gZ28gZGlnZ2luZyB0aHJvdWdoIHRoZSBpbmNsdWRlcywgbWF5YmUgYSBxdWljayBncmVwIHRocm91Z2ggdGhlIGtlcm5lbCBoZWFkZXJzLi4uIG9yIG1heWJlIGl0JiMzOTtzIGluIGEgaGVscGVyIGZ1bmN0aW9uIGRlZmluaXRpb24/IEkgc2hvdWxkIGtlZXAgYW4gZXllIG91dCB0byBtYWtlIHN1cmUgaXQmIzM5O3MgY29ycmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNjA1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgQlBGIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gYEJQRl9TWVNDQUxMYCBpcyAqdGhlKiBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSYjMzk7cmUgZm9jdXNpbmcgb24gaW5pdGlhbGx5LiBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIHJlbGF0ZWQgY29uZmlncyB0aGF0IG1pZ2h0IGNvbWUgaW50byBwbGF5LiBBIGdvb2Qgc3RhcnRpbmcgcG9pbnQgaXMgdG8gY29uc2lkZXIgdGhlIGNvbnRleHQgb2YgaXRzIHVzZSB3aXRoaW4gdGhlIGtlcm5lbC4KCkkgc2VlIHRoYXQgdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaF9mYWlsLmNgIHRlc3QgY2FzZSBlbXBsb3lzIGBicGZfcmN1X3JlYWRfbG9ja2AsIGBicGZfcmN1X3JlYWRfdW5sb2NrYCwgYW5kIGBicGZfbWFwX2xvb2t1cF9lbGVtYC4gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMganVzdCBhIHN0YW5kYXJkIEJQRiBwcm9ncmFtLiBObyBzdXJwcmlzZXMgdGhlcmUuCgpNeSBuZXh0IGxpbmUgb2YgdGhpbmtpbmcgaXMgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gY29uc2lkZXIgZm9yIHRoaXMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgd2UgcmVxdWlyZSBhbnl0aGluZyBlbHNlIGluIGNvbmp1bmN0aW9uIHdpdGggYFBUUl9VTlRSVVNURURgLCBgTUVNX1JDVWAsIG9yIGBNRU1fQUxMT0NgLiBGcm9tIHdoYXQgSSBrbm93LCB0aG9zZSBhbGwgc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIHN0YW5kYXJkIEJQRiB2ZXJpZmllciBhbHJlYWR5LgoKRmluYWxseSwgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBgYnBmX2NoZWNrYCBzaWduYXR1cmUsIGp1c3QgdG8gYmUgc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBteSBhc3N1bXB0aW9ucyBhcmUgY29uc2lzdGVudCB3aXRoIHRoZSB2ZXJpZmllciYjMzk7cyBjdXJyZW50IGltcGxlbWVudGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgYnBmX2NoZWNrXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTYzMD1pbnQgYnBmX2ZpeHVwX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc3My1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTc3NDppbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKnByb2csIHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc3NS1cdCAgICAgIHN0cnVjdCBicGZfbG9nX2F0dHIgKmF0dHJfbG9nKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjIyNAoJCQkJCQkJb3V0cHV0OiA5OQoJCQkJCQkJdGhvdWdodHM6IDExMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgVmVyaWZpZXIgQ2hhbmdlKioKCk9rYXksIHNvIGBicGZfY2hlY2tgIGlzIHRoZSBjcml0aWNhbCBmdW5jdGlvbiBoZXJlLCB0aGUgbm9uLXN0YXRpYyBvbmUuIFRoYXQmIzM5O3MgZ29vZCB0byBjb25maXJtLiBJIG5lZWQgdG8gbWFrZSBzb21lIGRlY2lzaW9ucyBiYXNlZCBvbiB0aGlzLgoKR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgcGF0Y2gsIG1vZGlmeWluZyB0aGUgQlBGIHZlcmlmaWVyJiMzOTtzIGhhbmRsaW5nIG9mIHVudHJ1c3RlZCBwb2ludGVycywgc3BlY2lmaWNhbGx5IGxvb3NlbmluZyByZXN0cmljdGlvbnMgb24gcmVhZHMgYW5kIGVsaW1pbmF0aW5nIHRoZSBuZWVkIGZvciBhIHJlZmVyZW5jZWQgSUQgZm9yIHRoZXNlIHVudHJ1c3RlZCBhbGxvY2F0ZWQgb2JqZWN0cywgaXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkZWVwIHdpdGhpbiB0aGUgY29yZSB2ZXJpZmllciBsb2dpYy4gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgYW5kIHJlcXVpcmVzIHNwZWNpZmljIGF0dGVudGlvbi4KClRoZXJlZm9yZSwgbXkgc2V0dGluZ3Mgd2lsbCBiZSBhcyBmb2xsb3dzOiBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gSSYjMzk7bGwgZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0cyBvbiBgYnBmX2NoZWNrYCAtIHNvLCBgRm9jdXNTeW1ib2xzYCBpcyBgWyYjMzQ7YnBmX2NoZWNrJiMzNDtdYC4gSSB3YW50IHRvIGVuYWJsZSBgQlBGX1NZU0NBTExgIGFzIHdlbGwgLSBgRW5hYmxlQ29uZmlnc2Agd2lsbCBiZSBgWyYjMzQ7QlBGX1NZU0NBTEwmIzM0O11gLiBUaGUgcmVhc29uaW5nIGJlaGluZCB0aGVzZSBzZXR0aW5ncywgd2hpY2ggc2hvdWxkIGJlIHdlbGwgdW5kZXJzdG9vZCwgaXMgdGhhdCB0aGUgbW9kaWZpY2F0aW9uIGlzIGNvcmUgbG9naWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9jaGVjayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyJiMzOTtzIGhhbmRsaW5nIG9mIHVudHJ1c3RlZCBwb2ludGVycyB0byBhbGxvY2F0ZWQgb2JqZWN0cywgc3BlY2lmaWNhbGx5IGFsbG93aW5nIHJlYWRzIGJ1dCBwcmV2ZW50aW5nIHdyaXRlcywgYW5kIHJlbW92aW5nIHRoZSByZXF1aXJlbWVudCBmb3IgYSByZWZlcmVuY2VkIElEIGZvciB1bnRydXN0ZWQgYWxsb2NhdGVkIG9iamVjdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXImIzM5O3MgaGFuZGxpbmcgb2YgdW50cnVzdGVkIHBvaW50ZXJzIHRvIGFsbG9jYXRlZCBvYmplY3RzLCBzcGVjaWZpY2FsbHkgYWxsb3dpbmcgcmVhZHMgYnV0IHByZXZlbnRpbmcgd3JpdGVzLCBhbmQgcmVtb3ZpbmcgdGhlIHJlcXVpcmVtZW50IGZvciBhIHJlZmVyZW5jZWQgSUQgZm9yIHVudHJ1c3RlZCBhbGxvY2F0ZWQgb2JqZWN0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjAxOjQyLjE4NzU4NjQ3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzgyNDQ5ODA2MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyJ3MgaGFuZGxpbmcgb2YgdW50cnVzdGVkIHBvaW50ZXJzIHRvIGFsbG9jYXRlZCBvYmplY3RzLCBzcGVjaWZpY2FsbHkgYWxsb3dpbmcgcmVhZHMgYnV0IHByZXZlbnRpbmcgd3JpdGVzLCBhbmQgcmVtb3ZpbmcgdGhlIHJlcXVpcmVtZW50IGZvciBhIHJlZmVyZW5jZWQgSUQgZm9yIHVudHJ1c3RlZCBhbGxvY2F0ZWQgb2JqZWN0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDA6MDE6NDIuMTg3NTk2NjJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NDE4MDUxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGU3MGE3ZWEzNzMwYTZlNWVlZDIzNDcwY2NhOGZhZDM0MGVkNDU2OTVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDA6MDE6NDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuaW5kZXggN2FhNDczNDJkYzY1OS4uMjRjMTUxYWQyZTYyOCAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5AQCAtNTgwNCwxMyArNTgwNCwxNSBAQCBzdGF0aWMgaW50IGNoZWNrX3B0cl90b19idGZfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuIFxcdFxcdCAqIHByb2dyYW0gYWxsb2NhdGVkIG9iamVjdHMgKHdoaWNoIGFsd2F5cyBoYXZlIGlkIFxcdTAwM2UgMCksXFxuIFxcdFxcdCAqIGJ1dCBub3QgZm9yIHVudHJ1c3RlZCBQVFJfVE9fQlRGX0lEIHwgTUVNX0FMTE9DLlxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0aWYgKGF0eXBlICE9IEJQRl9SRUFEIFxcdTAwMjZcXHUwMDI2ICF0eXBlX2lzX3B0cl9hbGxvY19vYmoocmVnLVxcdTAwM2V0eXBlKSkge1xcbitcXHRcXHRpZiAoYXR5cGUgIT0gQlBGX1JFQUQgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICghdHlwZV9pc19wdHJfYWxsb2Nfb2JqKHJlZy1cXHUwMDNldHlwZSkgfHwgcmVnLVxcdTAwM2V0eXBlIFxcdTAwMjYgUFRSX1VOVFJVU1RFRCkpIHtcXG4gXFx0XFx0XFx0dmVyYm9zZShlbnYsIFxcXCJvbmx5IHJlYWQgaXMgc3VwcG9ydGVkXFxcXG5cXFwiKTtcXG4gXFx0XFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGlmICh0eXBlX2lzX2FsbG9jKHJlZy1cXHUwMDNldHlwZSkgXFx1MDAyNlxcdTAwMjYgIXR5cGVfaXNfbm9uX293bmluZ19yZWYocmVnLVxcdTAwM2V0eXBlKSBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHQgICAgIShyZWctXFx1MDAzZXR5cGUgXFx1MDAyNiBNRU1fUkNVKSBcXHUwMDI2XFx1MDAyNiAhcmVnX2lzX3JlZmVyZW5jZWQoZW52LCByZWcpKSB7XFxuK1xcdFxcdCAgICAhKHJlZy1cXHUwMDNldHlwZSBcXHUwMDI2IChNRU1fUkNVIHwgUFRSX1VOVFJVU1RFRCkpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAhcmVnX2lzX3JlZmVyZW5jZWQoZW52LCByZWcpKSB7XFxuIFxcdFxcdFxcdHZlcmlmaWVyX2J1ZyhlbnYsIFxcXCJhbGxvY2F0ZWQgb2JqZWN0IG11c3QgaGF2ZSBhIHJlZmVyZW5jZWQgaWRcXFwiKTtcXG4gXFx0XFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuIFxcdFxcdH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2hfZmFpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2hfZmFpbC5jXFxuaW5kZXggZmNmN2E3NTY3ZGEyMi4uZDdiOGNkNjQ1OGJiOSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaF9mYWlsLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaF9mYWlsLmNcXG5AQCAtOCwxNCArOCwyMiBAQFxcbiAjaW5jbHVkZSBcXFwiLi4vYnBmX2V4cGVyaW1lbnRhbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiYnBmX21pc2MuaFxcXCJcXG4gXFxuK2V4dGVybiB2b2lkIGJwZl9yY3VfcmVhZF9sb2NrKHZvaWQpIF9fa3N5bTtcXG4rZXh0ZXJuIHZvaWQgYnBmX3JjdV9yZWFkX3VubG9jayh2b2lkKSBfX2tzeW07XFxuK1xcbiBzdHJ1Y3Qgbm9kZV9kYXRhIHtcXG4gXFx0bG9uZyBrZXk7XFxuIFxcdGxvbmcgZGF0YTtcXG4gXFx0c3RydWN0IGJwZl9yYl9ub2RlIG5vZGU7XFxuIH07XFxuIFxcbitzdHJ1Y3QgcGxhaW5fZGF0YSB7XFxuK1xcdGxvbmcga2V5O1xcbit9O1xcbitcXG4gc3RydWN0IG1hcF92YWx1ZSB7XFxuIFxcdHN0cnVjdCBub2RlX2RhdGEgX19rcHRyICpub2RlO1xcbitcXHRzdHJ1Y3QgcGxhaW5fZGF0YSBfX2twdHIgKnBsYWluO1xcbiB9O1xcbiBcXG4gc3RydWN0IG5vZGVfZGF0YTIge1xcbkBAIC0zMSw2ICszOSw3IEBAIHN0cnVjdCBub2RlX2RhdGEyIHtcXG4gICogWzM1XSBUWVBFX1RBRyAna3B0cl9yZWYnIHR5cGVfaWQ9MzRcXG4gICovXFxuIHN0cnVjdCBub2RlX2RhdGEgKmp1c3RfaGVyZV9iZWNhdXNlX2J0Zl9idWc7XFxuK3N0cnVjdCBwbGFpbl9kYXRhICpqdXN0X2hlcmVfYmVjYXVzZV9idGZfYnVnMjtcXG4gXFxuIHN0cnVjdCB7XFxuIFxcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfQVJSQVkpO1xcbkBAIC04Miw0ICs5MSw1MyBAQCBsb25nIGRyb3BfcmJfbm9kZV9vZmYodm9pZCAqY3R4KVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rU0VDKFxcXCI/dGNcXFwiKVxcbitfX2ZhaWx1cmUgX19tc2coXFxcIm9ubHkgcmVhZCBpcyBzdXBwb3J0ZWRcXFwiKVxcbitsb25nIHdyaXRlX3VudHJ1c3RlZF9hbGxvY19vYmoodm9pZCAqY3R4KVxcbit7XFxuK1xcdHN0cnVjdCBtYXBfdmFsdWUgKm1hcHZhbDtcXG4rXFx0c3RydWN0IG5vZGVfZGF0YSAqcmVzO1xcbitcXHRpbnQgaWR4ID0gMDtcXG4rXFxuK1xcdG1hcHZhbCA9IGJwZl9tYXBfbG9va3VwX2VsZW0oXFx1MDAyNnNvbWVfbm9kZXMsIFxcdTAwMjZpZHgpO1xcbitcXHRpZiAoIW1hcHZhbClcXG4rXFx0XFx0cmV0dXJuIDE7XFxuK1xcbitcXHRicGZfcmN1X3JlYWRfbG9jaygpO1xcbitcXHRyZXMgPSBtYXB2YWwtXFx1MDAzZW5vZGU7XFxuK1xcdGlmICghcmVzKSB7XFxuK1xcdFxcdGJwZl9yY3VfcmVhZF91bmxvY2soKTtcXG4rXFx0XFx0cmV0dXJuIDI7XFxuK1xcdH1cXG4rXFx0YmFycmllcl92YXIocmVzKTtcXG4rXFx0YnBmX3JjdV9yZWFkX3VubG9jaygpO1xcbitcXG4rXFx0cmVzLVxcdTAwM2VrZXkgPSA0MjtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwiP3RjXFxcIilcXG4rX19zdWNjZXNzXFxuK2xvbmcgcmVhZF91bnRydXN0ZWRfYWxsb2Nfb2JqKHZvaWQgKmN0eClcXG4re1xcbitcXHRzdHJ1Y3QgbWFwX3ZhbHVlICptYXB2YWw7XFxuK1xcdHN0cnVjdCBwbGFpbl9kYXRhICpyZXM7XFxuK1xcdGludCBpZHggPSAwO1xcbitcXG4rXFx0bWFwdmFsID0gYnBmX21hcF9sb29rdXBfZWxlbShcXHUwMDI2c29tZV9ub2RlcywgXFx1MDAyNmlkeCk7XFxuK1xcdGlmICghbWFwdmFsKVxcbitcXHRcXHRyZXR1cm4gMTtcXG4rXFxuK1xcdGJwZl9yY3VfcmVhZF9sb2NrKCk7XFxuK1xcdHJlcyA9IG1hcHZhbC1cXHUwMDNlcGxhaW47XFxuK1xcdGlmICghcmVzKSB7XFxuK1xcdFxcdGJwZl9yY3VfcmVhZF91bmxvY2soKTtcXG4rXFx0XFx0cmV0dXJuIDI7XFxuK1xcdH1cXG4rXFx0YmFycmllcl92YXIocmVzKTtcXG4rXFx0YnBmX3JjdV9yZWFkX3VubG9jaygpO1xcbitcXG4rXFx0cmV0dXJuIHJlcy1cXHUwMDNla2V5O1xcbit9XFxuK1xcbiBjaGFyIF9saWNlbnNlW10gU0VDKFxcXCJsaWNlbnNlXFxcIikgPSBcXFwiR1BMXFxcIjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDA6MDE6NDIuODMyNTEyNzk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mzc2MDAwNDM2MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyJ3MgaGFuZGxpbmcgb2YgdW50cnVzdGVkIHBvaW50ZXJzIHRvIGFsbG9jYXRlZCBvYmplY3RzLCBzcGVjaWZpY2FsbHkgYWxsb3dpbmcgcmVhZHMgYnV0IHByZXZlbnRpbmcgd3JpdGVzLCBhbmQgcmVtb3ZpbmcgdGhlIHJlcXVpcmVtZW50IGZvciBhIHJlZmVyZW5jZWQgSUQgZm9yIHVudHJ1c3RlZCBhbGxvY2F0ZWQgb2JqZWN0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTcwYTdlYTM3MzBhNmU1ZWVkMjM0NzBjY2E4ZmFkMzQwZWQ0NTY5NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDI5IDAwOjAxOjQxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCA3YWE0NzM0MmRjNjU5Li4yNGMxNTFhZDJlNjI4IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC01ODA0LDEzICs1ODA0LDE1IEBAIHN0YXRpYyBpbnQgY2hlY2tfcHRyX3RvX2J0Zl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdFx0ICogcHJvZ3JhbSBhbGxvY2F0ZWQgb2JqZWN0cyAod2hpY2ggYWx3YXlzIGhhdmUgaWQgXHUwMDNlIDApLFxuIFx0XHQgKiBidXQgbm90IGZvciB1bnRydXN0ZWQgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQy5cbiBcdFx0ICovXG4tXHRcdGlmIChhdHlwZSAhPSBCUEZfUkVBRCBcdTAwMjZcdTAwMjYgIXR5cGVfaXNfcHRyX2FsbG9jX29iaihyZWctXHUwMDNldHlwZSkpIHtcbitcdFx0aWYgKGF0eXBlICE9IEJQRl9SRUFEIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgKCF0eXBlX2lzX3B0cl9hbGxvY19vYmoocmVnLVx1MDAzZXR5cGUpIHx8IHJlZy1cdTAwM2V0eXBlIFx1MDAyNiBQVFJfVU5UUlVTVEVEKSkge1xuIFx0XHRcdHZlcmJvc2UoZW52LCBcIm9ubHkgcmVhZCBpcyBzdXBwb3J0ZWRcXG5cIik7XG4gXHRcdFx0cmV0dXJuIC1FQUNDRVM7XG4gXHRcdH1cbiBcbiBcdFx0aWYgKHR5cGVfaXNfYWxsb2MocmVnLVx1MDAzZXR5cGUpIFx1MDAyNlx1MDAyNiAhdHlwZV9pc19ub25fb3duaW5nX3JlZihyZWctXHUwMDNldHlwZSkgXHUwMDI2XHUwMDI2XG4tXHRcdCAgICAhKHJlZy1cdTAwM2V0eXBlIFx1MDAyNiBNRU1fUkNVKSBcdTAwMjZcdTAwMjYgIXJlZ19pc19yZWZlcmVuY2VkKGVudiwgcmVnKSkge1xuK1x0XHQgICAgIShyZWctXHUwMDNldHlwZSBcdTAwMjYgKE1FTV9SQ1UgfCBQVFJfVU5UUlVTVEVEKSkgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICAhcmVnX2lzX3JlZmVyZW5jZWQoZW52LCByZWcpKSB7XG4gXHRcdFx0dmVyaWZpZXJfYnVnKGVudiwgXCJhbGxvY2F0ZWQgb2JqZWN0IG11c3QgaGF2ZSBhIHJlZmVyZW5jZWQgaWRcIik7XG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaF9mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaF9mYWlsLmNcbmluZGV4IGZjZjdhNzU2N2RhMjIuLmQ3YjhjZDY0NThiYjkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbG9jYWxfa3B0cl9zdGFzaF9mYWlsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9sb2NhbF9rcHRyX3N0YXNoX2ZhaWwuY1xuQEAgLTgsMTQgKzgsMjIgQEBcbiAjaW5jbHVkZSBcIi4uL2JwZl9leHBlcmltZW50YWwuaFwiXG4gI2luY2x1ZGUgXCJicGZfbWlzYy5oXCJcbiBcbitleHRlcm4gdm9pZCBicGZfcmN1X3JlYWRfbG9jayh2b2lkKSBfX2tzeW07XG4rZXh0ZXJuIHZvaWQgYnBmX3JjdV9yZWFkX3VubG9jayh2b2lkKSBfX2tzeW07XG4rXG4gc3RydWN0IG5vZGVfZGF0YSB7XG4gXHRsb25nIGtleTtcbiBcdGxvbmcgZGF0YTtcbiBcdHN0cnVjdCBicGZfcmJfbm9kZSBub2RlO1xuIH07XG4gXG4rc3RydWN0IHBsYWluX2RhdGEge1xuK1x0bG9uZyBrZXk7XG4rfTtcbitcbiBzdHJ1Y3QgbWFwX3ZhbHVlIHtcbiBcdHN0cnVjdCBub2RlX2RhdGEgX19rcHRyICpub2RlO1xuK1x0c3RydWN0IHBsYWluX2RhdGEgX19rcHRyICpwbGFpbjtcbiB9O1xuIFxuIHN0cnVjdCBub2RlX2RhdGEyIHtcbkBAIC0zMSw2ICszOSw3IEBAIHN0cnVjdCBub2RlX2RhdGEyIHtcbiAgKiBbMzVdIFRZUEVfVEFHICdrcHRyX3JlZicgdHlwZV9pZD0zNFxuICAqL1xuIHN0cnVjdCBub2RlX2RhdGEgKmp1c3RfaGVyZV9iZWNhdXNlX2J0Zl9idWc7XG4rc3RydWN0IHBsYWluX2RhdGEgKmp1c3RfaGVyZV9iZWNhdXNlX2J0Zl9idWcyO1xuIFxuIHN0cnVjdCB7XG4gXHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX0FSUkFZKTtcbkBAIC04Miw0ICs5MSw1MyBAQCBsb25nIGRyb3BfcmJfbm9kZV9vZmYodm9pZCAqY3R4KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK1NFQyhcIj90Y1wiKVxuK19fZmFpbHVyZSBfX21zZyhcIm9ubHkgcmVhZCBpcyBzdXBwb3J0ZWRcIilcbitsb25nIHdyaXRlX3VudHJ1c3RlZF9hbGxvY19vYmoodm9pZCAqY3R4KVxuK3tcbitcdHN0cnVjdCBtYXBfdmFsdWUgKm1hcHZhbDtcbitcdHN0cnVjdCBub2RlX2RhdGEgKnJlcztcbitcdGludCBpZHggPSAwO1xuK1xuK1x0bWFwdmFsID0gYnBmX21hcF9sb29rdXBfZWxlbShcdTAwMjZzb21lX25vZGVzLCBcdTAwMjZpZHgpO1xuK1x0aWYgKCFtYXB2YWwpXG4rXHRcdHJldHVybiAxO1xuK1xuK1x0YnBmX3JjdV9yZWFkX2xvY2soKTtcbitcdHJlcyA9IG1hcHZhbC1cdTAwM2Vub2RlO1xuK1x0aWYgKCFyZXMpIHtcbitcdFx0YnBmX3JjdV9yZWFkX3VubG9jaygpO1xuK1x0XHRyZXR1cm4gMjtcbitcdH1cbitcdGJhcnJpZXJfdmFyKHJlcyk7XG4rXHRicGZfcmN1X3JlYWRfdW5sb2NrKCk7XG4rXG4rXHRyZXMtXHUwMDNla2V5ID0gNDI7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rU0VDKFwiP3RjXCIpXG4rX19zdWNjZXNzXG4rbG9uZyByZWFkX3VudHJ1c3RlZF9hbGxvY19vYmoodm9pZCAqY3R4KVxuK3tcbitcdHN0cnVjdCBtYXBfdmFsdWUgKm1hcHZhbDtcbitcdHN0cnVjdCBwbGFpbl9kYXRhICpyZXM7XG4rXHRpbnQgaWR4ID0gMDtcbitcbitcdG1hcHZhbCA9IGJwZl9tYXBfbG9va3VwX2VsZW0oXHUwMDI2c29tZV9ub2RlcywgXHUwMDI2aWR4KTtcbitcdGlmICghbWFwdmFsKVxuK1x0XHRyZXR1cm4gMTtcbitcbitcdGJwZl9yY3VfcmVhZF9sb2NrKCk7XG4rXHRyZXMgPSBtYXB2YWwtXHUwMDNlcGxhaW47XG4rXHRpZiAoIXJlcykge1xuK1x0XHRicGZfcmN1X3JlYWRfdW5sb2NrKCk7XG4rXHRcdHJldHVybiAyO1xuK1x0fVxuK1x0YmFycmllcl92YXIocmVzKTtcbitcdGJwZl9yY3VfcmVhZF91bmxvY2soKTtcbitcbitcdHJldHVybiByZXMtXHUwMDNla2V5O1xuK31cbitcbiBjaGFyIF9saWNlbnNlW10gU0VDKFwibGljZW5zZVwiKSA9IFwiR1BMXCI7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDowMTo0Mi44MzI1MTQ1NThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzE1ODIwMzczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJQRiBWZXJpZmllciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGNoZWNrX3B0cl90b19idGZfYWNjZXNzYCBmdW5jdGlvbiBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gTXkgaW5pdGlhbCByZWFkIGlzIHRoYXQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGJpdCBvZiBhIHNlY3VyaXR5IGhhcmRlbmluZywgcmVsYXRlZCB0byBob3cgdW50cnVzdGVkIHBvaW50ZXJzIGludGVyYWN0IHdpdGggYWxsb2NhdGVkIG9iamVjdHMgd2l0aGluIHRoZSBCUEYgZW52aXJvbm1lbnQuXG5cbkVzc2VudGlhbGx5LCB0aGV5J3JlIG1vZGlmeWluZyB0aGUgY29uZGl0aW9ucyB0aGF0IHBlcm1pdCB3cml0ZSBhY2Nlc3MgdG8gYWxsb2NhdGVkIG9iamVjdHMuIFRoZSBvbGQgd2F5IGFsbG93ZWQgd3JpdGVzIGlmIHRoZSBhY2Nlc3MgdHlwZSB3YXNuJ3QgYSByZWFkIGFuZCB0aGUgcmVnaXN0ZXIgdHlwZSB3YXNuJ3QgcG9pbnRpbmcgdG8gYW4gYWxsb2NhdGVkIG9iamVjdC4gTm93LCB0aGV5J3JlIGFkZGluZyBgfHwgcmVnLVx1MDAzZXR5cGUgXHUwMDI2IFBUUl9VTlRSVVNURURgIHRvIHRoYXQgY2hlY2ssIG1lYW5pbmcgd3JpdGUgYWNjZXNzIGlzIGRlbmllZCBpZiB0aGUgcG9pbnRlciBpcyBjb25zaWRlcmVkIHVudHJ1c3RlZCwgZXZlbiBpZiBpdCdzIHBvaW50aW5nIGF0IHNvbWV0aGluZyBhbGxvY2F0ZWQuIFRoZXkgYWxzbyB0b3VjaGVkIHRoZSBjb25kaXRpb24gdGhhdCBjaGVja3MgcmVmZXJlbmNlZCBJRHMgZm9yIGFsbG9jYXRlZCBvYmplY3RzLCBhZGRpbmcgYFBUUl9VTlRSVVNURURgIHRvIHRoZSBtYXNrLCBzbyB1bnRydXN0ZWQgYWxsb2NhdGVkIG9iamVjdHMgZG9uJ3QgbmVlZCBhIHJlZmVyZW5jZWQgSUQuXG5cblRoaXMgaXMgaW1tZWRpYXRlbHkgc2NyZWFtaW5nIFwiZnV6emluZyB0YXJnZXRcIiBhdCBtZS4gVGhlIGZhY3QgdGhhdCB0aGV5J3JlIHRvdWNoaW5nIHBvaW50ZXIgaGFuZGxpbmcsIGFsbG9jYXRlZCBtZW1vcnksIGFuZCBzZWN1cml0eS1yZWxldmFudCBjaGVja3MgaXMgdmVyeSBwcm9taXNpbmcuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uLiBMZXQncyBzZWUuLi4gdGhlIGNvZGUgaXRzZWxmIGhpZ2hsaWdodHMgdGhlIGBjaGVja19wdHJfdG9fYnRmX2FjY2Vzc2AgZnVuY3Rpb24uIEFuZCBJJ20gcHJldHR5IHN1cmUgdGhpcyBuZWVkcyBgQlBGX1NZU0NBTExgIGVuYWJsZWQuIEkgY2FuIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBsYXRlciwgYnV0IHRoYXQncyBteSB3b3JraW5nIGFzc3VtcHRpb24uXG5cbkhvbGQgb24uLi4gSSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZSBhYm91dCB0aGUgZnV6emluZyB0YXJnZXQuIEFjY29yZGluZyB0byB0aGUgaW5zdHJ1Y3Rpb25zLCBJIHNob3VsZCBiZSBmb2N1c2VkIG9uIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXJzLiBSaWdodCwgc28gYGNoZWNrX3B0cl90b19idGZfYWNjZXNzYCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCdzIGEgYml0IG9mIGEgYnVtbWVyLiBMZXQncyBmaW5kIGl0cyBjYWxsZXIgdG8gc2VlIGlmIHRoYXQncyBtb3JlIGZ1enphYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTAxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDA6MDE6NDguNTQ4MzM3NzYxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NTcwMTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX3B0cl90b19idGZfYWNjZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTcyMT1zdGF0aWMgYm9vbCB0eXBlX2lzX3RydXN0ZWRfb3JfbnVsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MzItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjU3MzM6c3RhdGljIGludCBjaGVja19wdHJfdG9fYnRmX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzM0LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWdzLCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTYwODA9c3RhdGljIGludCBjaGVja19tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpbnNuX2lkeCwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02MjkzLVxcdFxcdCAgICF0eXBlX21heV9iZV9udWxsKHJlZy1cXHUwMDNldHlwZSkpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjI5NDpcXHRcXHRlcnIgPSBjaGVja19wdHJfdG9fYnRmX2FjY2VzcyhlbnYsIHJlZ3MsIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSwgdCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjI5NS1cXHRcXHRcXHRcXHRcXHQgICAgICB2YWx1ZV9yZWdubyk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9Njc0Mz1zdGF0aWMgaW50IGNoZWNrX2hlbHBlcl9tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjgwMC1cXHRjYXNlIFBUUl9UT19CVEZfSUQ6XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjY4MDE6XFx0XFx0cmV0dXJuIGNoZWNrX3B0cl90b19idGZfYWNjZXNzKGVudiwgcmVncywgcmVnLCBhcmdubywgMCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjgwMi1cXHRcXHRcXHRcXHRcXHQgICAgICAgYWNjZXNzX3NpemUsIGFjY2Vzc190eXBlLCAtMSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjAxOjQ4LjYyNTkxMTk5OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3OTc1NTA4OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHJlbGF0ZXMgdG8gdGhlIGtlcm5lbCBjb2RlOlxuXG4qKkFuYWx5emluZyB0aGUgTWVtb3J5IEFjY2VzcyBDb250cm9sIFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgbWVtb3J5IGFjY2VzcyBpcyB2YWxpZGF0ZWQgd2l0aGluIHRoZSBCUEYgc3lzdGVtLiBJIHNlZSB0aGF0IGBjaGVja19wdHJfdG9fYnRmX2FjY2Vzc2AgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uLCBhbmQgaXQncyBiZWluZyBjYWxsZWQgYnkgYGNoZWNrX21lbV9hY2Nlc3NgIGFuZCBgY2hlY2tfaGVscGVyX21lbV9hY2Nlc3NgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYSBjb3JlIGNvbXBvbmVudCBmb3IgZW5zdXJpbmcgc2FmZSBtZW1vcnkgaW50ZXJhY3Rpb25zLiBgY2hlY2tfbWVtX2FjY2Vzc2AsIGluIHR1cm4sIGlzIGJlaW5nIGludm9rZWQgaGlnaGVyIHVwIGluIHRoZSBleGVjdXRpb24gc3RhY2ssIG1vc3QgbGlrZWx5IGZyb20gYGRvX2NoZWNrYCBvciBhIHNpbWlsYXIgZnVuY3Rpb24gZGVhbGluZyB3aXRoIEJQRiBwcm9ncmFtIHZhbGlkYXRpb24uXG5cbk15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byB0cmFjZSB0aGlzIGJhY2sgdG8gdGhlIHRvcC1sZXZlbCBmdW5jdGlvbnMgdG8gZ2V0IGEgaGlnaC1sZXZlbCB2aWV3IG9mIGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLiBHaXZlbiB0aGlzIGtub3dsZWRnZSwgSSBzaG91bGQgYmUgYWJsZSB0byB0cmFjayBiYWNrIHRvIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiBmcm9tIGBjaGVja19tZW1fYWNjZXNzYC4gSWYgbm90LCBJIGNhbiBqdXN0IHVzZSBgYnBmX2NoZWNrYC4gVGhpcyB3aWxsIGdpdmUgbWUgYW4gdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBtZW1vcnkgYWNjZXNzIGNoZWNrIHdvcmtmbG93IGZvciBCUEYgcHJvZ3JhbXMsIHdoaWNoIGlzIHdoYXQgSSdtIGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZy4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBob3cgYWNjZXNzIGlzIGNvbnRyb2xsZWQsIGFuZCBob3cgdnVsbmVyYWJpbGl0aWVzIG1heSBiZSBwcmV2ZW50ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MjIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDowMTo1Mi40MjM0NjU0ODhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExODc0NDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX21lbV9hY2Nlc3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz01NT1zdGF0aWMgYm9vbCBicGZfZ2xvYmFsX3BlcmNwdV9tYV9zZXQ7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTAyLSAqIGNhbiBiZTogUFRSX1RPX01BUF9WQUxVRSwgUFRSX1RPX0NUWCwgUFRSX1RPX1NUQUNLLCBQVFJfVE9fU09DS0VULiBUaGVzZSBhcmVcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTAzOiAqIGZvdXIgcG9pbnRlciB0eXBlcyByZWNvZ25pemVkIGJ5IGNoZWNrX21lbV9hY2Nlc3MoKSBmdW5jdGlvbi5cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA0LSAqXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODQ3PXN0YXRpYyBib29sIGlzX2R5bnB0cl9yZWdfdmFsaWRfdW5pbml0KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODU3LVxcdCAqIGVycm9yIGJlY2F1c2UgdGhpcyBqdXN0IG1lYW5zIHRoZSBzdGFjayBzdGF0ZSBoYXNuJ3QgYmVlbiB1cGRhdGVkIHlldC5cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODU4OlxcdCAqIFdlIHdpbGwgZG8gY2hlY2tfbWVtX2FjY2VzcyB0byBjaGVjayBhbmQgdXBkYXRlIHN0YWNrIGJvdW5kcyBsYXRlci5cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODU5LVxcdCAqL1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEwMDM9c3RhdGljIGJvb2wgaXNfaXRlcl9yZWdfdmFsaWRfdW5pbml0KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTAwOS1cXHQvKiBGb3IgLUVSQU5HRSAoaS5lLiBzcGkgbm90IGZhbGxpbmcgaW50byBhbGxvY2F0ZWQgc3RhY2sgc2xvdHMpLCB3ZVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDEwOlxcdCAqIHdpbGwgZG8gY2hlY2tfbWVtX2FjY2VzcyB0byBjaGVjayBhbmQgdXBkYXRlIHN0YWNrIGJvdW5kcyBsYXRlciwgc29cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTAxMS1cXHQgKiByZXR1cm4gdHJ1ZSBmb3IgdGhhdCBjYXNlLlxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNDg9c3RhdGljIGJvb2wgaXNfaXJxX2ZsYWdfcmVnX3ZhbGlkX3VuaW5pdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTQtXFx0LyogRm9yIC1FUkFOR0UgKGkuZS4gc3BpIG5vdCBmYWxsaW5nIGludG8gYWxsb2NhdGVkIHN0YWNrIHNsb3RzKSwgd2VcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE1NTpcXHQgKiB3aWxsIGRvIGNoZWNrX21lbV9hY2Nlc3MgdG8gY2hlY2sgYW5kIHVwZGF0ZSBzdGFjayBib3VuZHMgbGF0ZXIsIHNvXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTYtXFx0ICogcmV0dXJuIHRydWUgZm9yIHRoYXQgY2FzZS5cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0zNDM3PXN0YXRpYyB2b2lkIHNjcnViX3NwZWNpYWxfc2xvdChzdHJ1Y3QgYnBmX2Z1bmNfc3RhdGUgKnN0YXRlLCBpbnQgc3BpKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTM0NDktLyogY2hlY2tfc3RhY2tfe3JlYWQsd3JpdGV9X2ZpeGVkX29mZiBmdW5jdGlvbnMgdHJhY2sgc3BpbGwvZmlsbCBvZiByZWdpc3RlcnMsXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjM0NTA6ICogc3RhY2sgYm91bmRhcnkgYW5kIGFsaWdubWVudCBhcmUgY2hlY2tlZCBpbiBjaGVja19tZW1fYWNjZXNzKClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMzQ1MS0gKi9cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz00MTM4PXN0YXRpYyBpbnQgY2hlY2tfbWFwX2FjY2Vzc190eXBlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDE1OS0vKiBjaGVjayByZWFkL3dyaXRlIGludG8gbWVtb3J5IHJlZ2lvbiAoZS5nLiwgbWFwIHZhbHVlLCByaW5nYnVmIHNhbXBsZSwgZXRjKSAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0MTYwOnN0YXRpYyBpbnQgX19jaGVja19tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQxNjEtXFx0XFx0XFx0ICAgICAgaW50IG9mZiwgaW50IHNpemUsIHUzMiBtZW1fc2l6ZSxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz00MTk4PXN0YXRpYyBpbnQgY2hlY2tfbWVtX3JlZ2lvbl9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00MjIxLVxcdH1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDIyMjpcXHRlcnIgPSBfX2NoZWNrX21lbV9hY2Nlc3MoZW52LCByZWcsIGFyZ25vLCByZWdfc21pbihyZWcpICsgb2ZmLCBzaXplLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00MjIzLVxcdFxcdFxcdFxcdCBtZW1fc2l6ZSwgemVyb19zaXplX2FsbG93ZWQpO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQyMzgtXFx0fVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0MjM5OlxcdGVyciA9IF9fY2hlY2tfbWVtX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIHJlZ191bWF4KHJlZykgKyBvZmYsIHNpemUsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQyNDAtXFx0XFx0XFx0XFx0IG1lbV9zaXplLCB6ZXJvX3NpemVfYWxsb3dlZCk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NDY0OD1zdGF0aWMgaW50IGNoZWNrX3BhY2tldF9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubywgaW50IG9mZixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NjYxLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0NjYyOlxcdC8qIF9fY2hlY2tfbWVtX2FjY2VzcyBoYXMgbWFkZSBzdXJlIFxcXCJvZmYgKyBzaXplIC0gMVxcXCIgaXMgd2l0aGluIHUxNi5cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDY2My1cXHQgKiByZWdfdW1heChyZWcpIGNhbid0IGJlIGJpZ2dlciB0aGFuIE1BWF9QQUNLRVRfT0ZGIHdoaWNoIGlzIDB4ZmZmZixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDY2NC1cXHQgKiBvdGhlcndpc2UgZmluZF9nb29kX3BrdF9wb2ludGVycyB3b3VsZCBoYXZlIHJlZnVzZWQgdG8gc2V0IHJhbmdlIGluZm9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDY2NTpcXHQgKiB0aGF0IF9fY2hlY2tfbWVtX2FjY2VzcyB3b3VsZCBoYXZlIHJlamVjdGVkIHRoaXMgcGt0IGFjY2Vzcy5cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDY2Ni1cXHQgKiBUaGVyZWZvcmUsIFxcXCJvZmYgKyByZWdfdW1heChyZWcpICsgc2l6ZSAtIDFcXFwiIHdvbid0IG92ZXJmbG93IHUzMi5cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02MDU3PXN0YXRpYyB2b2lkIGFkZF9zY2FsYXJfdG9fcmVnKHN0cnVjdCBicGZfcmVnX3N0YXRlICpkc3RfcmVnLCBzNjQgdmFsKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTYwNzktICovXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjYwODA6c3RhdGljIGludCBjaGVja19tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpbnNuX2lkeCwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjA4MS1cXHRcXHRcXHQgICAgaW50IG9mZiwgaW50IGJwZl9zaXplLCBlbnVtIGJwZl9hY2Nlc3NfdHlwZSB0LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTYzNDM9c3RhdGljIGludCBjaGVja19sb2FkX21lbShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjM3NS1cXHQgKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjM3NjpcXHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LVxcdTAwM2VpbnNuX2lkeCwgcmVncyArIGluc24tXFx1MDAzZXNyY19yZWcsIGFyZ25vX2Zyb21fcmVnKGluc24tXFx1MDAzZXNyY19yZWcpLCBpbnNuLVxcdTAwM2VvZmYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTYzNzctXFx0XFx0XFx0ICAgICAgIEJQRl9TSVpFKGluc24tXFx1MDAzZWNvZGUpLCBCUEZfUkVBRCwgaW5zbi1cXHUwMDNlZHN0X3JlZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02Mzg2PXN0YXRpYyBpbnQgY2hlY2tfc3RvcmVfcmVnKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDE1LVxcdC8qIENoZWNrIGlmIChkc3RfcmVnICsgb2ZmKSBpcyB3cml0ZWFibGUuICovXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjY0MTY6XFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cXHUwMDNlaW5zbl9pZHgsIHJlZ3MgKyBpbnNuLVxcdTAwM2Vkc3RfcmVnLCBhcmdub19mcm9tX3JlZyhpbnNuLVxcdTAwM2Vkc3RfcmVnKSwgaW5zbi1cXHUwMDNlb2ZmLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDE3LVxcdFxcdFxcdCAgICAgICBCUEZfU0laRShpbnNuLVxcdTAwM2Vjb2RlKSwgQlBGX1dSSVRFLCBpbnNuLVxcdTAwM2VzcmNfcmVnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTY0MjQ9c3RhdGljIGludCBjaGVja19hdG9taWNfcm13KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQ5My1cXHQgKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjQ5NDpcXHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LVxcdTAwM2VpbnNuX2lkeCwgZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cXHUwMDNlZHN0X3JlZyksIGluc24tXFx1MDAzZW9mZixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQ5NS1cXHRcXHRcXHQgICAgICAgQlBGX1NJWkUoaW5zbi1cXHUwMDNlY29kZSksIEJQRl9SRUFELCAtMSwgdHJ1ZSwgZmFsc2UpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDk2LVxcdGlmICghZXJyIFxcdTAwMjZcXHUwMDI2IGxvYWRfcmVnIFxcdTAwM2U9IDApXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjY0OTc6XFx0XFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cXHUwMDNlaW5zbl9pZHgsIGRzdF9yZWcsIGFyZ25vX2Zyb21fcmVnKGluc24tXFx1MDAzZWRzdF9yZWcpLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDk4LVxcdFxcdFxcdFxcdCAgICAgICBpbnNuLVxcdTAwM2VvZmYsIEJQRl9TSVpFKGluc24tXFx1MDAzZWNvZGUpLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1MDgtXFx0LyogQ2hlY2sgd2hldGhlciB3ZSBjYW4gd3JpdGUgaW50byB0aGUgc2FtZSBtZW1vcnkuICovXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjY1MDk6XFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cXHUwMDNlaW5zbl9pZHgsIGRzdF9yZWcsIGFyZ25vX2Zyb21fcmVnKGluc24tXFx1MDAzZWRzdF9yZWcpLCBpbnNuLVxcdTAwM2VvZmYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1MTAtXFx0XFx0XFx0ICAgICAgIEJQRl9TSVpFKGluc24tXFx1MDAzZWNvZGUpLCBCUEZfV1JJVEUsIC0xLCB0cnVlLCBmYWxzZSk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NzI0MD1zdGF0aWMgaW50IHByb2Nlc3NfZHlucHRyX2Z1bmMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03Mjc2LVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBCUEZfRFlOUFRSX1NJWkU7IGkgKz0gOCkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo3Mjc3OlxcdFxcdFxcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBpbnNuX2lkeCwgcmVnLCBhcmdubyxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzI3OC1cXHRcXHRcXHRcXHRcXHQgICAgICAgaSwgQlBGX0RXLCBCUEZfV1JJVEUsIC0xLCBmYWxzZSwgZmFsc2UpO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTczNjA9c3RhdGljIGludCBwcm9jZXNzX2l0ZXJfYXJnKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sIGludCBpbnNuX2lkeCxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03Mzk3LVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl9zbG90cyAqIDg7IGkgKz0gQlBGX1JFR19TSVpFKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjczOTg6XFx0XFx0XFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGluc25faWR4LCByZWcsIGFyZ25vLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03Mzk5LVxcdFxcdFxcdFxcdFxcdCAgICAgICBpLCBCUEZfRFcsIEJQRl9XUklURSwgLTEsIGZhbHNlLCBmYWxzZSk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTAxNzM9c3RhdGljIGludCBjaGVja19oZWxwZXJfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTAyNTktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG1ldGEuYWNjZXNzX3NpemU7IGkrKykge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDI2MDpcXHRcXHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgaW5zbl9pZHgsIHJlZ3MgKyBtZXRhLnJlZ25vLCBhcmdub19mcm9tX3JlZyhtZXRhLnJlZ25vKSwgaSwgQlBGX0IsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwMjYxLVxcdFxcdFxcdFxcdCAgICAgICBCUEZfV1JJVEUsIC0xLCBmYWxzZSwgZmFsc2UpO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwNTA3LVxcdFxcdFxcdFxcdCAqIGl0IHdpbGwgY29uZnVzZSB0aGUgY2hlY2sgb2YgUFRSX1RPX0JURl9JRCBpblxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDUwODpcXHRcXHRcXHRcXHQgKiBjaGVja19tZW1fYWNjZXNzKCkuXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwNTA5LVxcdFxcdFxcdFxcdCAqL1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNDM1PXN0YXRpYyBpbnQgcHJvY2Vzc19pcnFfZmxhZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNDYyLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTQ2MzpcXHRcXHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LVxcdTAwM2VpbnNuX2lkeCwgcmVnLCBhcmdubywgMCwgQlBGX0RXLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTQ2NC1cXHRcXHRcXHRcXHQgICAgICAgQlBGX1dSSVRFLCAtMSwgZmFsc2UsIGZhbHNlKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzIzNz1zdGF0aWMgaW50IGRvX2NoZWNrX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgYm9vbCAqZG9fcHJpbnRfc3RhdGUpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTcyNzQtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE3Mjc1OlxcdFxcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBlbnYtXFx1MDAzZWluc25faWR4LCBjdXJfcmVncyhlbnYpICsgaW5zbi1cXHUwMDNlZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cXHUwMDNlZHN0X3JlZyksXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3Mjc2LVxcdFxcdFxcdFxcdCAgICAgICBpbnNuLVxcdTAwM2VvZmYsIEJQRl9TSVpFKGluc24tXFx1MDAzZWNvZGUpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDowMTo1Mi41MzUzNzE4NTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzUxODE5ODQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgQlBGIHZlcmlmaWVyIGVudHJ5IHBvaW50OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBCUEYgVmVyaWZpZXI6IGBicGZfY2hlY2tgKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBCUEYgdmVyaWZpZXIga2lja3MgaW4uIE5hdHVyYWxseSwgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciB0aGUgKmNoZWNrKiBpdHNlbGYsIHdoaWNoIHNlZW1zIHRvIGJlIGBicGZfY2hlY2tgLiBOb3csIEkgbmVlZCB0byB0cmFjZSB0aGlzIGZ1bmN0aW9uIGRvd24uIExldCdzIGhlYWQgb3ZlciB0byBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gVGhhdCdzIHdoZXJlIHRoZSBtYWdpYyBwcm9iYWJseSBoYXBwZW5zLiBUaW1lIHRvIHB1bGwgdXAgdGhlIHNvdXJjZSBhbmQgc2VlIHdoYXQncyB3aGF0LiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIGNvcmUgbG9naWMgdGhlIHZlcmlmaWVyIHVzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4NzIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDowMTo1NS4yODcxOTQ0MzRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIxODM0MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2NoZWNrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTU9c3RhdGljIGJvb2wgYnBmX2dsb2JhbF9wZXJjcHVfbWFfc2V0O1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Ni1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTc6LyogYnBmX2NoZWNrKCkgaXMgYSBzdGF0aWMgY29kZSBhbmFseXplciB0aGF0IHdhbGtzIGVCUEYgcHJvZ3JhbVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01OC0gKiBpbnN0cnVjdGlvbiBieSBpbnN0cnVjdGlvbiBhbmQgdXBkYXRlcyByZWdpc3Rlci9zdGFjayBzdGF0ZS5cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTg5OT1zdGF0aWMgaW50IHByb2Nlc3Nfa2ZfYXJnX3B0cl90b19yYnRyZWVfbm9kZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExOTEwLSAqIExTTSBob29rcyBhbmQgaXRlcnMgKGJvdGggc2xlZXBhYmxlIGFuZCBub24tc2xlZXBhYmxlKSBhcmUgc2FmZS5cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE5MTE6ICogQW55IHNsZWVwYWJsZSBwcm9ncyBhcmUgYWxzbyBzYWZlIHNpbmNlIGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KCkgZW5mb3JjZVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTkxMi0gKiB0aGVtIGNhbiBvbmx5IGJlIGF0dGFjaGVkIHRvIHNvbWUgc3BlY2lmaWMgaG9vayBwb2ludHMuXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg4OTM9YnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg5MjctXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4OTI4OmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODkyOS1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5MzMzPXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MzYzLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTM2NDpcXHRyZXQgPSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChcXHUwMDI2ZW52LVxcdTAwM2Vsb2csIHByb2csIHRndF9wcm9nLCBidGZfaWQsIFxcdTAwMjZ0Z3RfaW5mbyk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MzY1LVxcdGlmIChyZXQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0MzItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NDMzOmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0MzQtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk2MzA9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc3My1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3NzQ6aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipwcm9nLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5Nzc1LVxcdCAgICAgIHN0cnVjdCBicGZfbG9nX2F0dHIgKmF0dHJfbG9nKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5Nzg4LVxcdC8qICdzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudicgY2FuIGJlIGdsb2JhbCwgYnV0IHNpbmNlIGl0J3Mgbm90IHNtYWxsLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTc4OTpcXHQgKiBhbGxvY2F0ZS9mcmVlIGl0IGV2ZXJ5IHRpbWUgYnBmX2NoZWNrKCkgaXMgY2FsbGVkXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzkwLVxcdCAqL1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODYzLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTg2NDpcXHRyZXQgPSBicGZfY2hlY2tfYnRmX2luZm9fZWFybHkoZW52LCBhdHRyLCB1YXR0cik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODY1LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODc1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTg3NjpcXHRyZXQgPSBicGZfY2hlY2tfYnRmX2luZm8oZW52LCBhdHRyLCB1YXR0cik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODc3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODg5LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTg5MDpcXHRyZXQgPSBicGZfY2hlY2tfY2ZnKGVudik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODkxLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDowMTo1NS4zNjkzODQxNjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODMyOTk2MDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhlIEJQRiBWZXJpZmllciBFbnRyeSBQb2ludCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGUgQlBGIHZlcmlmaWVyIHdvcmtzLCBhbmQgaXQgbG9va3MgbGlrZSBgYnBmX2NoZWNrYCBpcyB0aGUga2V5IGVudHJ5IHBvaW50IOKAkyB0aGUgbWFpbiBmdW5jdGlvbiB3ZSdyZSBpbnRlcmVzdGVkIGluLiBgYnBmX2NoZWNrYCBpcyBhIGdvb2QgZm9jdXMgc3ltYm9sLCBJIHRoaW5rLiBJbml0aWFsbHksIEkgY29uc2lkZXJlZCBpbmNsdWRpbmcgb3RoZXIgZnVuY3Rpb25zIGxpa2UgYGNoZWNrX21lbV9hY2Nlc3NgIG9yIGBkb19jaGVja19pbnNuYCwgYnV0IHRoZXkncmUgYm90aCBzdGF0aWMsIHdoaWNoIG1ha2VzIHRoZW0gbGVzcyB1c2VmdWwgZm9yIGEgYnJvYWRlciBhbmFseXNpcy5cblxuVGhlIHBhdGNoIEknbSByZXZpZXdpbmcgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGBjaGVja19wdHJfdG9fYnRmX2FjY2Vzc2AsIHdoaWNoIG1ha2VzIG1lIGRpZyBhIGxpdHRsZSBmdXJ0aGVyIHRvIGlkZW50aWZ5IGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBCUEYgdmVyaWZpZXIsIHdoaWNoIG1pZ2h0IGJlIGhlbHBmdWwgdG8gaW5jbHVkZS5cblxuU28sIEkgY29uZmlybWVkIHRoYXQgYGJwZl9jaGVja2AgaXRzZWxmIGlzbid0IHN0YXRpYy4gR29vZCwgdGhhdCdzIHdoYXQgSSB3YXMgbG9va2luZyBmb3IuIE5vdywganVzdCB0byBiZSBzdXJlLCBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIGtlcm5lbCBjb25maWcuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLCBhcyB0aGlzIGlzIGEgY29yZSByZXF1aXJlbWVudCBmb3IgdGhlIEJQRiB2ZXJpZmllciB0byBiZSBhY3RpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNjUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDA6MDI6MDAuMjAyMzgzNDYxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTU3NDMyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfY2hlY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9zeXNjYWxsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9zeXNjYWxsLmM9NzI9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyAqIGNvbnN0IGJwZl9tYXBfdHlwZXNbXSA9IHtcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTkxLSAqL1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjkyOmludCBicGZfY2hlY2tfdWFyZ190YWlsX3plcm8oYnBmcHRyX3QgdWFkZHIsXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtOTMtXFx0XFx0XFx0ICAgICBzaXplX3QgZXhwZWN0ZWRfc2l6ZSxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTI5NzI9c3RhdGljIGludCBicGZfcHJvZ19sb2FkKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0ciwgc3RydWN0IGJwZl9sb2dfYXR0ciAqYXR0cl9sb2cpXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zMTk2LVxcdC8qIHJ1biBlQlBGIHZlcmlmaWVyICovXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MzE5NzpcXHRlcnIgPSBicGZfY2hlY2soXFx1MDAyNnByb2csIGF0dHIsIHVhdHRyLCBhdHRyX2xvZyk7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzE5OC1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTM2ODk9c3RhdGljIGludCBicGZfdHJhY2luZ19wcm9nX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zODIxLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjM4MjI6XFx0XFx0ZXJyID0gYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoTlVMTCwgcHJvZywgdGd0X3Byb2csIGJ0Zl9pZCxcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zODIzLVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZ0Z3RfaW5mbyk7XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz01MTU0PXN0YXRpYyBpbnQgYnBmX3Byb2dfZ2V0X2luZm9fYnlfZmQoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01MTY4LVxcdGxlbiA9IG9mZnNldG9mZW5kKHN0cnVjdCBicGZfcHJvZ19pbmZvLCBhdHRhY2hfYnRmX2lkKTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1MTY5OlxcdGVyciA9IGJwZl9jaGVja191YXJnX3RhaWxfemVybyhVU0VSX0JQRlBUUih1aW5mbyksIGxlbiwgaW5mb19sZW4pO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTUxNzAtXFx0aWYgKGVycilcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTU0NDQ9c3RhdGljIGludCBicGZfbWFwX2dldF9pbmZvX2J5X2ZkKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTQ1NC1cXHRsZW4gPSBvZmZzZXRvZmVuZChzdHJ1Y3QgYnBmX21hcF9pbmZvLCBoYXNoX3NpemUpO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjU0NTU6XFx0ZXJyID0gYnBmX2NoZWNrX3VhcmdfdGFpbF96ZXJvKFVTRVJfQlBGUFRSKHVpbmZvKSwgbGVuLCBpbmZvX2xlbik7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTQ1Ni1cXHRpZiAoZXJyKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9NTUxNT1zdGF0aWMgaW50IGJwZl9idGZfZ2V0X2luZm9fYnlfZmQoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTIzLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjU1MjQ6XFx0ZXJyID0gYnBmX2NoZWNrX3VhcmdfdGFpbF96ZXJvKFVTRVJfQlBGUFRSKHVpbmZvKSwgc2l6ZW9mKCp1aW5mbyksIGluZm9fbGVuKTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTI1LVxcdGlmIChlcnIpXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz01NTMxPXN0YXRpYyBpbnQgYnBmX2xpbmtfZ2V0X2luZm9fYnlfZmQoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTQwLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjU1NDE6XFx0ZXJyID0gYnBmX2NoZWNrX3VhcmdfdGFpbF96ZXJvKFVTRVJfQlBGUFRSKHVpbmZvKSwgc2l6ZW9mKGluZm8pLCBpbmZvX2xlbik7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTU0Mi1cXHRpZiAoZXJyKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9NTU2OT1zdGF0aWMgaW50IHRva2VuX2dldF9pbmZvX2J5X2ZkKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTU3Ny1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1NTc4OlxcdGVyciA9IGJwZl9jaGVja191YXJnX3RhaWxfemVybyhVU0VSX0JQRlBUUih1aW5mbyksIHNpemVvZigqdWluZm8pLCBpbmZvX2xlbik7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTU3OS1cXHRpZiAoZXJyKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9NjM1ND1zdGF0aWMgaW50IF9fc3lzX2JwZihlbnVtIGJwZl9jbWQgY21kLCBicGZwdHJfdCB1YXR0ciwgdW5zaWduZWQgaW50IHNpemUsXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy02MzYyLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjYzNjM6XFx0ZXJyID0gYnBmX2NoZWNrX3VhcmdfdGFpbF96ZXJvKHVhdHRyLCBzaXplb2YoYXR0ciksIHNpemUpO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTYzNjQtXFx0aWYgKGVycilcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTYzNzQtXFx0aWYgKGNtZCBcXHUwMDI2IEJQRl9DT01NT05fQVRUUlMpIHtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo2Mzc1OlxcdFxcdGVyciA9IGJwZl9jaGVja191YXJnX3RhaWxfemVybyh1YXR0cl9jb21tb24sXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjM3Ni1cXHRcXHRcXHRcXHRcXHQgICAgICAgb2Zmc2V0b2ZlbmQoc3RydWN0IGJwZl9jb21tb25fYXR0ciwgbG9nX3RydWVfc2l6ZSksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjAyOjAwLjI3Mzk2NDY4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NDc5ODYxOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgTG9hZGluZyBNZWNoYW5pc20qKlxuXG5Pa2F5LCBzbyBgYnBmX3Byb2dfbG9hZGAgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBsb2FkaW5nIEJQRiBwcm9ncmFtcywgYW5kIGl0IG1ha2VzIGEgY2FsbCB0byBgYnBmX2NoZWNrYC4gSW50ZXJlc3RpbmcuIFNpbmNlIGBicGZfcHJvZ19sb2FkYCBpcyBzdGF0aWMsIHRoYXQgbWVhbnMgbXkgZm9jdXMgc2hvdWxkIGJlIG9uIHdoZXJlIGl0J3MgY2FsbGVkIGZyb20sIGFuZCB0aGF0J3MgdGhlIGBfX3N5c19icGZgIHN5c3RlbSBjYWxsLiBDb25zZXF1ZW50bHksIGBicGZfY2hlY2tgIGxvb2tzIGxpa2UgYSBrZXkgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgaW50ZWdyaXR5IGNoZWNrcyBiZWluZyBwZXJmb3JtZWQgZHVyaW5nIHByb2dyYW0gbG9hZGluZy4gSXQgbWFrZXMgc2Vuc2UgdG8gemVybyBpbiBvbiB0aGF0IHN5bWJvbC5cblxuQnV0LCBpcyBgYnBmX2NoZWNrYCB0aGUgb25seSBjcml0aWNhbCBmdW5jdGlvbj8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0LiBBcmUgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9ucyBpbnZvbHZlZCBpbiB0aGlzIHByb2Nlc3MgdGhhdCBuZWVkIHNjcnV0aW55PyBMb29raW5nIGF0IHRoaXMgcGF0Y2gsIEkgc2VlIG1vZGlmaWNhdGlvbnMgdG8gYGNoZWNrX3B0cl90b19idGZfYWNjZXNzYCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgQlBGIHZlcmlmaWVyLiBUaGUgcHJlc2VuY2Ugb2YgdGhlIGBCUEZfU1lTQ0FMTGAgY29uZmlnIHN5bWJvbCB0ZWxscyBtZSB0aGlzIGlzIGFsbCB0aWVkIGRpcmVjdGx5IHRvIHRoZSBCUEYgc3lzdGVtIGNhbGwgaW50ZXJmYWNlLiBHb3QgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODk1LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjAyOjA0LjIyMTk1MzQ3NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzOTMxNDI4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5pdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDowMjowNC4zMzU4OTUzMjRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ1MjM5ODU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqV2hlcmUncyBUaGF0IERhbmcgTWFjcm8/KipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLi4uIEknbSBsb29raW5nIGF0IHRoaXMgQlBGIGNvZGUsIGFuZCBJJ20gdXNpbmcgYEJQRl9TWVNDQUxMYCBpbiB0aGVyZSwgb3IgbWF5YmUgSSdtIHJlYWRpbmcgc29tZSBleGlzdGluZyBjb2RlIHRoYXQgdXNlcyBpdC4gSG9sZCBvbiBhIHNlY29uZOKApiB3aGVyZSBleGFjdGx5IGRpZCB0aGF0IG1hY3JvIGdldCBkZWZpbmVkPyBJIGNhbid0IHF1aXRlIHJlbWVtYmVyIGlmIGl0J3MgaW4gdGhlIHN0YW5kYXJkIGhlYWRlcnMgb3IgaWYgaXQncyBkZWZpbmVkIHdpdGhpbiB0aGUgQlBGIHRvb2xjaGFpbiBpdHNlbGYgYW5kIHVzZWQgaW4gc29tZSBzaGFyZWQgaW5jbHVkZSBmaWxlcywgb3IgaWYgdGhlcmUncyBzb21lIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGdvaW5nIG9uLiBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgZGVjbGFyYXRpb24gdG8gdW5kZXJzdGFuZCBwcmVjaXNlbHkgaG93IGl0J3MgZXhwYW5kaW5nIGFuZCBpZiBpdCB3aWxsIHdvcmsgaW4gdGhlIHRhcmdldCBlbnZpcm9ubWVudC4gVGltZSB0byBnbyBkaWdnaW5nIHRocm91Z2ggdGhlIGluY2x1ZGVzLCBtYXliZSBhIHF1aWNrIGdyZXAgdGhyb3VnaCB0aGUga2VybmVsIGhlYWRlcnMuLi4gb3IgbWF5YmUgaXQncyBpbiBhIGhlbHBlciBmdW5jdGlvbiBkZWZpbml0aW9uPyBJIHNob3VsZCBrZWVwIGFuIGV5ZSBvdXQgdG8gbWFrZSBzdXJlIGl0J3MgY29ycmVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyNzgsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDowMjowOC43ODgyOTg1NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4NzM3NTEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDA6MDI6MTEuNDc1Njg2ODhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIwOTkwNzI2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gYEJQRl9TWVNDQUxMYCBpcyAqdGhlKiBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSdyZSBmb2N1c2luZyBvbiBpbml0aWFsbHkuIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogcmVsYXRlZCBjb25maWdzIHRoYXQgbWlnaHQgY29tZSBpbnRvIHBsYXkuIEEgZ29vZCBzdGFydGluZyBwb2ludCBpcyB0byBjb25zaWRlciB0aGUgY29udGV4dCBvZiBpdHMgdXNlIHdpdGhpbiB0aGUga2VybmVsLlxuXG5JIHNlZSB0aGF0IHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2xvY2FsX2twdHJfc3Rhc2hfZmFpbC5jYCB0ZXN0IGNhc2UgZW1wbG95cyBgYnBmX3JjdV9yZWFkX2xvY2tgLCBgYnBmX3JjdV9yZWFkX3VubG9ja2AsIGFuZCBgYnBmX21hcF9sb29rdXBfZWxlbWAuIEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMganVzdCBhIHN0YW5kYXJkIEJQRiBwcm9ncmFtLiBObyBzdXJwcmlzZXMgdGhlcmUuXG5cbk15IG5leHQgbGluZSBvZiB0aGlua2luZyBpcyB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBjb25zaWRlciBmb3IgdGhpcy4gSSdsbCBuZWVkIHRvIGNoZWNrIGlmIHdlIHJlcXVpcmUgYW55dGhpbmcgZWxzZSBpbiBjb25qdW5jdGlvbiB3aXRoIGBQVFJfVU5UUlVTVEVEYCwgYE1FTV9SQ1VgLCBvciBgTUVNX0FMTE9DYC4gRnJvbSB3aGF0IEkga25vdywgdGhvc2UgYWxsIHNob3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBzdGFuZGFyZCBCUEYgdmVyaWZpZXIgYWxyZWFkeS5cblxuRmluYWxseSwgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBgYnBmX2NoZWNrYCBzaWduYXR1cmUsIGp1c3QgdG8gYmUgc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgbXkgYXNzdW1wdGlvbnMgYXJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgdmVyaWZpZXIncyBjdXJyZW50IGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTYwNSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDowMjoxNS42ODU1OTc4N1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgzMjY4MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50IGJwZl9jaGVja1xcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk2MzA9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc3My1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3NzQ6aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipwcm9nLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5Nzc1LVxcdCAgICAgIHN0cnVjdCBicGZfbG9nX2F0dHIgKmF0dHJfbG9nKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDowMjoxNS43NDM5MzIyNDlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUyOTczNTc1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgVmVyaWZpZXIgQ2hhbmdlKipcblxuT2theSwgc28gYGJwZl9jaGVja2AgaXMgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUsIHRoZSBub24tc3RhdGljIG9uZS4gVGhhdCdzIGdvb2QgdG8gY29uZmlybS4gSSBuZWVkIHRvIG1ha2Ugc29tZSBkZWNpc2lvbnMgYmFzZWQgb24gdGhpcy5cblxuR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgcGF0Y2gsIG1vZGlmeWluZyB0aGUgQlBGIHZlcmlmaWVyJ3MgaGFuZGxpbmcgb2YgdW50cnVzdGVkIHBvaW50ZXJzLCBzcGVjaWZpY2FsbHkgbG9vc2VuaW5nIHJlc3RyaWN0aW9ucyBvbiByZWFkcyBhbmQgZWxpbWluYXRpbmcgdGhlIG5lZWQgZm9yIGEgcmVmZXJlbmNlZCBJRCBmb3IgdGhlc2UgdW50cnVzdGVkIGFsbG9jYXRlZCBvYmplY3RzLCBpdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRlZXAgd2l0aGluIHRoZSBjb3JlIHZlcmlmaWVyIGxvZ2ljLiBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZyBhbmQgcmVxdWlyZXMgc3BlY2lmaWMgYXR0ZW50aW9uLlxuXG5UaGVyZWZvcmUsIG15IHNldHRpbmdzIHdpbGwgYmUgYXMgZm9sbG93czogSSB3aWxsIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIEknbGwgZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0cyBvbiBgYnBmX2NoZWNrYCAtIHNvLCBgRm9jdXNTeW1ib2xzYCBpcyBgW1wiYnBmX2NoZWNrXCJdYC4gSSB3YW50IHRvIGVuYWJsZSBgQlBGX1NZU0NBTExgIGFzIHdlbGwgLSBgRW5hYmxlQ29uZmlnc2Agd2lsbCBiZSBgW1wiQlBGX1NZU0NBTExcIl1gLiBUaGUgcmVhc29uaW5nIGJlaGluZCB0aGVzZSBzZXR0aW5ncywgd2hpY2ggc2hvdWxkIGJlIHdlbGwgdW5kZXJzdG9vZCwgaXMgdGhhdCB0aGUgbW9kaWZpY2F0aW9uIGlzIGNvcmUgbG9naWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjI0LCJPdXRwdXRUb2tlbnMiOjk5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjAyOjIwLjI3MzY3MjI0NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODg3OTU5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyJ3MgaGFuZGxpbmcgb2YgdW50cnVzdGVkIHBvaW50ZXJzIHRvIGFsbG9jYXRlZCBvYmplY3RzLCBzcGVjaWZpY2FsbHkgYWxsb3dpbmcgcmVhZHMgYnV0IHByZXZlbnRpbmcgd3JpdGVzLCBhbmQgcmVtb3ZpbmcgdGhlIHJlcXVpcmVtZW50IGZvciBhIHJlZmVyZW5jZWQgSUQgZm9yIHVudHJ1c3RlZCBhbGxvY2F0ZWQgb2JqZWN0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9jaGVja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIncyBoYW5kbGluZyBvZiB1bnRydXN0ZWQgcG9pbnRlcnMgdG8gYWxsb2NhdGVkIG9iamVjdHMsIHNwZWNpZmljYWxseSBhbGxvd2luZyByZWFkcyBidXQgcHJldmVudGluZyB3cml0ZXMsIGFuZCByZW1vdmluZyB0aGUgcmVxdWlyZW1lbnQgZm9yIGEgcmVmZXJlbmNlZCBJRCBmb3IgdW50cnVzdGVkIGFsbG9jYXRlZCBvYmplY3RzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowdb56v[1] Phase: Succeeded StartedAt: 2026-07-29 00:02:32 +0000 UTC FinishedAt: 2026-07-29 00:02:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-29 00:02:32 +0000 UTC FinishedAt: 2026-07-29 00:02:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[2] Phase: Running StartedAt: 2026-07-29 00:02:32 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN) Phase: Running StartedAt: 2026-07-29 00:02:32 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","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-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-29 00:02:32 +0000 UTC FinishedAt: 2026-07-29 00:02:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-29 00:02:32 +0000 UTC FinishedAt: 2026-07-29 00:02:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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-workflowdb56v/series-workflowdb56v-convert-artifact-2832629624/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-29 00:02:42 +0000 UTC FinishedAt: 2026-07-29 00:27:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-29 00:02:42 +0000 UTC FinishedAt: 2026-07-29 00:27:19 +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:*cf14fcaf-e28d-4bfa-b334-ae91ca87190c,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-workflowdb56v/series-workflowdb56v-convert-artifact-2832629624/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": "f8749210-19e5-4e92-b552-46737695308c", "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-workflowdb56v/series-workflowdb56v-build-action-2169259054/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-29 00:02:42 +0000 UTC FinishedAt: 2026-07-29 00:27:09 +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:*cf14fcaf-e28d-4bfa-b334-ae91ca87190c,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-workflowdb56v/series-workflowdb56v-convert-artifact-2832629624/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": "f8749210-19e5-4e92-b552-46737695308c", "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-workflowdb56v/series-workflowdb56v-build-action-2169259054/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-29 00:27:19 +0000 UTC FinishedAt: 2026-07-29 00:27:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-29 00:27:19 +0000 UTC FinishedAt: 2026-07-29 00:27:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-29 00:27:19 +0000 UTC FinishedAt: 2026-07-29 00:27:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-29 00:27:19 +0000 UTC FinishedAt: 2026-07-29 00:27:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","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-workflowdb56v/series-workflowdb56v-convert-artifact-2938388703/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-29 00:27:30 +0000 UTC FinishedAt: 2026-07-29 00:29:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-29 00:27:30 +0000 UTC FinishedAt: 2026-07-29 00:29:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f8749210-19e5-4e92-b552-46737695308c,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-workflowdb56v/series-workflowdb56v-build-action-2169259054/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-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-29 00:29:38 +0000 UTC FinishedAt: 2026-07-29 00:29:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-29 00:29:38 +0000 UTC FinishedAt: 2026-07-29 00:29:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-29 00:29:38 +0000 UTC FinishedAt: 2026-07-29 00:52:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-29 00:29:38 +0000 UTC FinishedAt: 2026-07-29 00:52:45 +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:*cf14fcaf-e28d-4bfa-b334-ae91ca87190c,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-workflowdb56v/series-workflowdb56v-convert-artifact-2938388703/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": "979fa9be-611c-4d62-8e50-a825b897e229", "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-workflowdb56v/series-workflowdb56v-build-action-4277456499/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-29 00:29:38 +0000 UTC FinishedAt: 2026-07-29 00:52:35 +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:*cf14fcaf-e28d-4bfa-b334-ae91ca87190c,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-workflowdb56v/series-workflowdb56v-convert-artifact-2938388703/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": "979fa9be-611c-4d62-8e50-a825b897e229", "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-workflowdb56v/series-workflowdb56v-build-action-4277456499/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-29 00:52:45 +0000 UTC FinishedAt: 2026-07-29 00:52:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-29 00:52:45 +0000 UTC FinishedAt: 2026-07-29 00:52:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-29 00:52:45 +0000 UTC FinishedAt: 2026-07-29 00:54:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-29 00:52:45 +0000 UTC FinishedAt: 2026-07-29 00:54:45 +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:*979fa9be-611c-4d62-8e50-a825b897e229,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-workflowdb56v/series-workflowdb56v-build-action-4277456499/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-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10] Phase: Running StartedAt: 2026-07-29 00:54:55 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","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: Running StartedAt: 2026-07-29 00:54:55 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"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:*f8749210-19e5-4e92-b552-46737695308c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*979fa9be-611c-4d62-8e50-a825b897e229,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-workflowdb56v/series-workflowdb56v-build-action-2169259054/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-workflowdb56v/series-workflowdb56v-build-action-4277456499/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-29 00:54:55 +0000 UTC FinishedAt: 2026-07-29 00:55:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-29 00:54:55 +0000 UTC FinishedAt: 2026-07-29 00:55:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"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-workflowdb56v/series-workflowdb56v-convert-artifact-3184465400/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-29 00:54:55 +0000 UTC FinishedAt: 2026-07-29 00:54:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-29 00:54:55 +0000 UTC FinishedAt: 2026-07-29 00:54:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-29 00:54:55 +0000 UTC FinishedAt: 2026-07-29 00:54:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","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: Running StartedAt: 2026-07-29 00:55:05 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdb56v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","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":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afcb3088-eaa8-4d02-8e2b-06093257737e","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: Running StartedAt: 2026-07-29 00:55:05 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f8749210-19e5-4e92-b552-46737695308c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*979fa9be-611c-4d62-8e50-a825b897e229,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-workflowdb56v/series-workflowdb56v-build-action-2169259054/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-workflowdb56v/series-workflowdb56v-build-action-4277456499/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-workflowdb56v/series-workflowdb56v-convert-artifact-3184465400/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil