Name: series-workflowc2562 Phase: Succeeded StartedAt: 2026-07-24 12:54:28 +0000 UTC FinishedAt: 2026-07-24 18:19:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[0] Phase: Succeeded StartedAt: 2026-07-24 12:54:28 +0000 UTC FinishedAt: 2026-07-24 13:31:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[0].run-triage Phase: Succeeded StartedAt: 2026-07-24 12:54:28 +0000 UTC FinishedAt: 2026-07-24 13:31:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "48a5a7ab8d6ab7090564339e039c421f315de912", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FS_ENCRYPTION", "FS_DAX" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "48a5a7ab8d6ab7090564339e039c421f315de912", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FS_ENCRYPTION", "FS_DAX" ], "series_id": "374e2824-a1ba-4cc5-94c2-162ca040a07a" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_set_context", "ext4_set_inode_flags" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDEzOjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZTX0VOQ1JZUFRJT04mIzM0OywKICAgICYjMzQ7RlNfREFYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9zZXRfY29udGV4dCYjMzQ7LAogICAgJiMzNDtleHQ0X3NldF9pbm9kZV9mbGFncyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNldHRpbmcgdGhlIERBWCBmbGFnIG9uIGV4dDQgaW5vZGVzIHdoZW4gZW5jcnlwdGlvbiBpcyBlbmFibGVkLCBmaXhpbmcgYSBidWcgd2hlcmUgdGhlIERBWCBmbGFnIGNvdWxkIGxpbmdlciBhbmQgY2F1c2Ugd3JpdGVzIHRvIGJ5cGFzcyBlbmNyeXB0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGV4dDQgZmlsZXN5c3RlbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMzozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGI2MjRiYmFiMDAxMThhMzdiNDg3ZGEzZGQxMTViYmY4OGVlZjkzNTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAxMzozMDoyNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leHQ0L2NyeXB0by5jIGIvZnMvZXh0NC9jcnlwdG8uY1xuaW5kZXggZjQxZjMyMGY0NDM3YjkuLjJkNDA5MTE0ZTAyZTdmIDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9jcnlwdG8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9jcnlwdG8uY1xuQEAgLTEzNCw2ICYjNDM7MTM0LDcgQEAgc3RhdGljIGludCBleHQ0X3NldF9jb250ZXh0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKmN0eCwgc2l6ZV90IGxlbixcbiB7XG4gXHRoYW5kbGVfdCAqaGFuZGxlID0gZnNfZGF0YTtcbiBcdGludCByZXMsIHJlczIsIGNyZWRpdHMsIHJldHJpZXMgPSAwO1xuJiM0MztcdGJvb2wgaW5pdCA9IFNfSVNSRUcoaW5vZGUtXHUwMDNlaV9tb2RlKTtcbiBcbiBcdC8qXG4gXHQgKiBFbmNyeXB0aW5nIHRoZSByb290IGRpcmVjdG9yeSBpcyBub3QgYWxsb3dlZCBiZWNhdXNlIGUyZnNjayBleHBlY3RzXG5AQCAtMTc5LDEwICYjNDM7MTgwLDE2IEBAIHN0YXRpYyBpbnQgZXh0NF9zZXRfY29udGV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICpjdHgsIHNpemVfdCBsZW4sXG4gXHRcdFx0ZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSxcbiBcdFx0XHRcdFx0RVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpO1xuIFx0XHRcdC8qXG4tXHRcdFx0ICogVXBkYXRlIGlub2RlLVx1MDAzZWlfZmxhZ3MgLSBTX0VOQ1JZUFRFRCB3aWxsIGJlIGVuYWJsZWQsXG4tXHRcdFx0ICogU19EQVggbWF5IGJlIGRpc2FibGVkXG4mIzQzO1x0XHRcdCAqIFVwZGF0ZSBpbm9kZS1cdTAwM2VpX2ZsYWdzLCBTX0VOQ1JZUFRFRCB3aWxsIGJlIGVuYWJsZWQuXG4mIzQzO1x0XHRcdCAqIElmIHRoaXMgaXMgYSByZWd1bGFyIGlub2RlLCB0aGVuIHdlIG11c3QgYmUgY29taW5nXG4mIzQzO1x0XHRcdCAqIHZpYSBfX2V4dDRfbmV3X2lub2RlKCkgYXMgb25seSBuZXcgaW5vZGVzIGNhbiBiZVxuJiM0MztcdFx0XHQgKiBlbmNyeXB0ZWQsIHNvIHdlIG11c3Qgc2V0IHRoZSBpbml0IGZsYWcgc29cbiYjNDM7XHRcdFx0ICogU19EQVggY2FuIGJlIGRpc2FibGVkLiBUaGlzIGlzIGEgYml0IGZyYWdpbGUgYnV0XG4mIzQzO1x0XHRcdCAqIHNlZW1zIGxpa2UgdGhlIGVhc2llc3Qgd2F5IHRvIG1ha2Ugc3VyZSB3ZSBkb24mIzM5O3QgbGV0XG4mIzQzO1x0XHRcdCAqIHRoZSBEQVggZmxhZyBsaW5nZXIgd2hlbiBlbmNyeXB0aW9uIGlzIGVuYWJsZWQgYXNcbiYjNDM7XHRcdFx0ICogdGhhdCByZXN1bHQgaW4gd3JpdGVzIHNpbGVudGx5IGJ5cGFzc2luZyBlbmNyeXB0aW9uLlxuIFx0XHRcdCAqL1xuLVx0XHRcdGV4dDRfc2V0X2lub2RlX2ZsYWdzKGlub2RlLCBmYWxzZSk7XG4mIzQzO1x0XHRcdGV4dDRfc2V0X2lub2RlX2ZsYWdzKGlub2RlLCBpbml0KTtcbiBcdFx0fVxuIFx0XHRyZXR1cm4gcmVzO1xuIFx0fVxuQEAgLTIwOSw3ICYjNDM7MjE2LDcgQEAgc3RhdGljIGludCBleHQ0X3NldF9jb250ZXh0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKmN0eCwgc2l6ZV90IGxlbixcbiBcdFx0ICogVXBkYXRlIGlub2RlLVx1MDAzZWlfZmxhZ3MgLSBTX0VOQ1JZUFRFRCB3aWxsIGJlIGVuYWJsZWQsXG4gXHRcdCAqIFNfREFYIG1heSBiZSBkaXNhYmxlZFxuIFx0XHQgKi9cbi1cdFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGZhbHNlKTtcbiYjNDM7XHRcdGV4dDRfc2V0X2lub2RlX2ZsYWdzKGlub2RlLCBpbml0KTtcbiBcdFx0cmVzID0gZXh0NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZSwgaW5vZGUpO1xuIFx0XHRpZiAocmVzKVxuIFx0XHRcdEVYVDRfRVJST1JfSU5PREUoaW5vZGUsIFwmIzM0O0ZhaWxlZCB0byBtYXJrIGlub2RlIGRpcnR5XCYjMzQ7KTtcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmNcbmluZGV4IGNlOTk4MDdjNWY1YjJjLi5hNTcxNzk2NTUzNTNhZiAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvaW5vZGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9pbm9kZS5jXG5AQCAtNTExMyw4ICYjNDM7NTExMyw2IEBAIHZvaWQgZXh0NF9zZXRfaW5vZGVfZmxhZ3Moc3RydWN0IGlub2RlICppbm9kZSwgYm9vbCBpbml0KVxuIFx0dW5zaWduZWQgaW50IGZsYWdzID0gRVhUNF9JKGlub2RlKS1cdTAwM2VpX2ZsYWdzO1xuIFx0dW5zaWduZWQgaW50IG5ld19mbCA9IDA7XG4gXG4tXHRXQVJOX09OX09OQ0UoSVNfREFYKGlub2RlKSBcdTAwMjZcdTAwMjYgaW5pdCk7XG4tXG4gXHRpZiAoZmxhZ3MgXHUwMDI2IEVYVDRfU1lOQ19GTClcbiBcdFx0bmV3X2ZsIHw9IFNfU1lOQztcbiBcdGlmIChmbGFncyBcdTAwMjYgRVhUNF9BUFBFTkRfRkwpXG5AQCAtNTEyOSw4ICYjNDM7NTEyNywxMiBAQCB2b2lkIGV4dDRfc2V0X2lub2RlX2ZsYWdzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGJvb2wgaW5pdClcbiBcdC8qIEJlY2F1c2Ugb2YgdGhlIHdheSBpbm9kZV9zZXRfZmxhZ3MoKSB3b3JrcyB3ZSBtdXN0IHByZXNlcnZlIFNfREFYXG4gXHQgKiBoZXJlIGlmIGFscmVhZHkgc2V0LiAqL1xuIFx0bmV3X2ZsIHw9IChpbm9kZS1cdTAwM2VpX2ZsYWdzIFx1MDAyNiBTX0RBWCk7XG4tXHRpZiAoaW5pdCBcdTAwMjZcdTAwMjYgZXh0NF9zaG91bGRfZW5hYmxlX2RheChpbm9kZSkpXG4tXHRcdG5ld19mbCB8PSBTX0RBWDtcbiYjNDM7XHRpZiAoaW5pdCkge1xuJiM0MztcdFx0aWYgKGV4dDRfc2hvdWxkX2VuYWJsZV9kYXgoaW5vZGUpKVxuJiM0MztcdFx0XHRuZXdfZmwgfD0gU19EQVg7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdG5ld19mbCBcdTAwMjY9IH5TX0RBWDtcbiYjNDM7XHR9XG4gXG4gXHRpZiAoZmxhZ3MgXHUwMDI2IEVYVDRfRU5DUllQVF9GTClcbiBcdFx0bmV3X2ZsIHw9IFNfRU5DUllQVEVEO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDEzOjMwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGU19FTkNSWVBUSU9OJiMzNDssCiAgICAmIzM0O0ZTX0RBWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfc2V0X2NvbnRleHQmIzM0OywKICAgICYjMzQ7ZXh0NF9zZXRfaW5vZGVfZmxhZ3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIHRoZSBEQVggZmxhZyBvbiBleHQ0IGlub2RlcyB3aGVuIGVuY3J5cHRpb24gaXMgZW5hYmxlZCwgZml4aW5nIGEgYnVnIHdoZXJlIHRoZSBEQVggZmxhZyBjb3VsZCBsaW5nZXIgYW5kIGNhdXNlIHdyaXRlcyB0byBieXBhc3MgZW5jcnlwdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI2MjRiYmFiMDAxMThhMzdiNDg3ZGEzZGQxMTViYmY4OGVlZjkzNTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAyNCAxMzozMDoyNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvY3J5cHRvLmMgYi9mcy9leHQ0L2NyeXB0by5jCmluZGV4IGY0MWYzMjBmNDQzN2I5Li4yZDQwOTExNGUwMmU3ZiAxMDA2NDQKLS0tIGEvZnMvZXh0NC9jcnlwdG8uYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L2NyeXB0by5jCkBAIC0xMzQsNiAmIzQzOzEzNCw3IEBAIHN0YXRpYyBpbnQgZXh0NF9zZXRfY29udGV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICpjdHgsIHNpemVfdCBsZW4sCiB7CiAJaGFuZGxlX3QgKmhhbmRsZSA9IGZzX2RhdGE7CiAJaW50IHJlcywgcmVzMiwgY3JlZGl0cywgcmV0cmllcyA9IDA7CiYjNDM7CWJvb2wgaW5pdCA9IFNfSVNSRUcoaW5vZGUtJmd0O2lfbW9kZSk7CiAKIAkvKgogCSAqIEVuY3J5cHRpbmcgdGhlIHJvb3QgZGlyZWN0b3J5IGlzIG5vdCBhbGxvd2VkIGJlY2F1c2UgZTJmc2NrIGV4cGVjdHMKQEAgLTE3OSwxMCAmIzQzOzE4MCwxNiBAQCBzdGF0aWMgaW50IGV4dDRfc2V0X2NvbnRleHQoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqY3R4LCBzaXplX3QgbGVuLAogCQkJZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSwKIAkJCQkJRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpOwogCQkJLyoKLQkJCSAqIFVwZGF0ZSBpbm9kZS0mZ3Q7aV9mbGFncyAtIFNfRU5DUllQVEVEIHdpbGwgYmUgZW5hYmxlZCwKLQkJCSAqIFNfREFYIG1heSBiZSBkaXNhYmxlZAomIzQzOwkJCSAqIFVwZGF0ZSBpbm9kZS0mZ3Q7aV9mbGFncywgU19FTkNSWVBURUQgd2lsbCBiZSBlbmFibGVkLgomIzQzOwkJCSAqIElmIHRoaXMgaXMgYSByZWd1bGFyIGlub2RlLCB0aGVuIHdlIG11c3QgYmUgY29taW5nCiYjNDM7CQkJICogdmlhIF9fZXh0NF9uZXdfaW5vZGUoKSBhcyBvbmx5IG5ldyBpbm9kZXMgY2FuIGJlCiYjNDM7CQkJICogZW5jcnlwdGVkLCBzbyB3ZSBtdXN0IHNldCB0aGUgaW5pdCBmbGFnIHNvCiYjNDM7CQkJICogU19EQVggY2FuIGJlIGRpc2FibGVkLiBUaGlzIGlzIGEgYml0IGZyYWdpbGUgYnV0CiYjNDM7CQkJICogc2VlbXMgbGlrZSB0aGUgZWFzaWVzdCB3YXkgdG8gbWFrZSBzdXJlIHdlIGRvbiYjMzk7dCBsZXQKJiM0MzsJCQkgKiB0aGUgREFYIGZsYWcgbGluZ2VyIHdoZW4gZW5jcnlwdGlvbiBpcyBlbmFibGVkIGFzCiYjNDM7CQkJICogdGhhdCByZXN1bHQgaW4gd3JpdGVzIHNpbGVudGx5IGJ5cGFzc2luZyBlbmNyeXB0aW9uLgogCQkJICovCi0JCQlleHQ0X3NldF9pbm9kZV9mbGFncyhpbm9kZSwgZmFsc2UpOwomIzQzOwkJCWV4dDRfc2V0X2lub2RlX2ZsYWdzKGlub2RlLCBpbml0KTsKIAkJfQogCQlyZXR1cm4gcmVzOwogCX0KQEAgLTIwOSw3ICYjNDM7MjE2LDcgQEAgc3RhdGljIGludCBleHQ0X3NldF9jb250ZXh0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKmN0eCwgc2l6ZV90IGxlbiwKIAkJICogVXBkYXRlIGlub2RlLSZndDtpX2ZsYWdzIC0gU19FTkNSWVBURUQgd2lsbCBiZSBlbmFibGVkLAogCQkgKiBTX0RBWCBtYXkgYmUgZGlzYWJsZWQKIAkJICovCi0JCWV4dDRfc2V0X2lub2RlX2ZsYWdzKGlub2RlLCBmYWxzZSk7CiYjNDM7CQlleHQ0X3NldF9pbm9kZV9mbGFncyhpbm9kZSwgaW5pdCk7CiAJCXJlcyA9IGV4dDRfbWFya19pbm9kZV9kaXJ0eShoYW5kbGUsIGlub2RlKTsKIAkJaWYgKHJlcykKIAkJCUVYVDRfRVJST1JfSU5PREUoaW5vZGUsICYjMzQ7RmFpbGVkIHRvIG1hcmsgaW5vZGUgZGlydHkmIzM0Oyk7CmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmMKaW5kZXggY2U5OTgwN2M1ZjViMmMuLmE1NzE3OTY1NTM1M2FmIDEwMDY0NAotLS0gYS9mcy9leHQ0L2lub2RlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9pbm9kZS5jCkBAIC01MTEzLDggJiM0Mzs1MTEzLDYgQEAgdm9pZCBleHQ0X3NldF9pbm9kZV9mbGFncyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBib29sIGluaXQpCiAJdW5zaWduZWQgaW50IGZsYWdzID0gRVhUNF9JKGlub2RlKS0mZ3Q7aV9mbGFnczsKIAl1bnNpZ25lZCBpbnQgbmV3X2ZsID0gMDsKIAotCVdBUk5fT05fT05DRShJU19EQVgoaW5vZGUpICZhbXA7JmFtcDsgaW5pdCk7Ci0KIAlpZiAoZmxhZ3MgJmFtcDsgRVhUNF9TWU5DX0ZMKQogCQluZXdfZmwgfD0gU19TWU5DOwogCWlmIChmbGFncyAmYW1wOyBFWFQ0X0FQUEVORF9GTCkKQEAgLTUxMjksOCAmIzQzOzUxMjcsMTIgQEAgdm9pZCBleHQ0X3NldF9pbm9kZV9mbGFncyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBib29sIGluaXQpCiAJLyogQmVjYXVzZSBvZiB0aGUgd2F5IGlub2RlX3NldF9mbGFncygpIHdvcmtzIHdlIG11c3QgcHJlc2VydmUgU19EQVgKIAkgKiBoZXJlIGlmIGFscmVhZHkgc2V0LiAqLwogCW5ld19mbCB8PSAoaW5vZGUtJmd0O2lfZmxhZ3MgJmFtcDsgU19EQVgpOwotCWlmIChpbml0ICZhbXA7JmFtcDsgZXh0NF9zaG91bGRfZW5hYmxlX2RheChpbm9kZSkpCi0JCW5ld19mbCB8PSBTX0RBWDsKJiM0MzsJaWYgKGluaXQpIHsKJiM0MzsJCWlmIChleHQ0X3Nob3VsZF9lbmFibGVfZGF4KGlub2RlKSkKJiM0MzsJCQluZXdfZmwgfD0gU19EQVg7CiYjNDM7CQllbHNlCiYjNDM7CQkJbmV3X2ZsICZhbXA7PSB+U19EQVg7CiYjNDM7CX0KIAogCWlmIChmbGFncyAmYW1wOyBFWFQ0X0VOQ1JZUFRfRkwpCiAJCW5ld19mbCB8PSBTX0VOQ1JZUFRFRDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTM6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjczNwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDM1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCB0byBleHQ0JiMzOTtzIEVuY3J5cHRpb24gYW5kIERBWCBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGZzL2V4dDQvY3J5cHRvLmNgIGFuZCBgZnMvZXh0NC9pbm9kZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gYGV4dDRfc2V0X2NvbnRleHRgLiBJdCYjMzk7cyBub3cgcGFzc2luZyBgU19JU1JFRyhpbm9kZS0mZ3Q7aV9tb2RlKWAgdG8gYGV4dDRfc2V0X2lub2RlX2ZsYWdzYCwgd2hpY2ggaXMgYSBjaGFuZ2UgZnJvbSBwYXNzaW5nIGBmYWxzZWAuIFRoYXQmIzM5O3MgdGhlIGtleSwgdGhhdCBgaW5pdGAgdmFsdWUgY2hhbmdlLiBMb29raW5nIGRlZXBlciwgdGhlIHBhdGNoIHJlbW92ZXMgYSBgV0FSTl9PTl9PTkNFYCBmb3IgYElTX0RBWChpbm9kZSkgJmFtcDsmYW1wOyBpbml0YCBpbiBgZXh0NF9zZXRfaW5vZGVfZmxhZ3NgLCB3aGljaCBzdWdnZXN0cyB0aGV5JiMzOTtyZSBhZGRyZXNzaW5nIHNvbWUgaW50ZXJhY3Rpb24gaXNzdWUuIEFuZCwgdGhleSYjMzk7dmUgYWx0ZXJlZCB0aGUgbG9naWMgZm9yIGhvdyBgU19EQVhgIGZsYWcgaXMgc2V0LiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGJlY29taW5nIGV4cGxpY2l0bHkgc2V0IHRvIG9mZiBpZiBgZXh0NF9zaG91bGRfZW5hYmxlX2RheGAgaXMgZmFsc2Ugd2l0aCB0aGUgaW5pdCB2YXJpYWJsZSB0cnVlLgoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkZWZpbml0ZWx5LiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBleHQ0LCBlbmNyeXB0aW9uLCAqYW5kKiBEQVgsIGFsbCBpbiB0aGUgc2FtZSBicmVhdGguIFRoaXMgc2NyZWFtcyAmIzM0O2Z1enogdGhpcyEmIzM0Oy4gVGhlIHBvdGVudGlhbCBmb3Igc2VjdXJpdHkgaW1wbGljYXRpb25zIGlzIGRlZmluaXRlbHkgdGhlcmUuIFdlIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIHRoYXQgYXJlIGJlaW5nIG1vZGlmaWVkLCB3aGljaCBhcHBlYXIgdG8gYmUgYGV4dDRfc2V0X2NvbnRleHRgIGFuZCBgZXh0NF9zZXRfaW5vZGVfZmxhZ3NgLiBUaGVzZSB3aWxsIGJlIG91ciBwcmltZSB0YXJnZXRzIGZvciBhbnkgZnV6emluZyBjYW1wYWlnbi4KCk5vdywgbGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGUgY29uZmlndXJhdGlvbiBpcyBjb3JyZWN0LiBTaW5jZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBmcy9leHQ0L2NyeXB0by5jYCwgSSYjMzk7bSBhc3N1bWluZyB0aGF0IGl0IGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19GU19FTkNSWVBUSU9OYCBpcyBlbmFibGVkLiBOb3QgYENPTkZJR19FWFQ0X0ZTX0VOQ1JZUFRJT05gLiBJJiMzOTtsbCBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGJ5IGxvb2tpbmcgYXQgdGhlIGBmcy9leHQ0L01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBjb21waWxlLXRpbWUgZGVwZW5kZW5jaWVzLiBXZSB3aWxsIG5lZWQgdG8gbWFrZSBzdXJlIHdlJiMzOTtyZSBjb21waWxpbmcgd2l0aCBgQ09ORklHX0ZTX0VOQ1JZUFRJT05gIGVuYWJsZWQgZm9yIG91ciBmdXp6aW5nIGJ1aWxkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjcnlwdG9cXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9NYWtlZmlsZT0yMD1leHQ0LSQoQ09ORklHX0ZTX1ZFUklUWSlcdFx0JiM0Mzs9IHZlcml0eS5vXG5mcy9leHQ0L01ha2VmaWxlOjIxOmV4dDQtJChDT05GSUdfRlNfRU5DUllQVElPTilcdFx0JiM0Mzs9IGNyeXB0by5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTM6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYxMwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIEZpbGVzeXN0ZW0gRW5jcnlwdGlvbiBhbmQgREFYKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyB0aGF0IHJlcXVpcmVzIGBDT05GSUdfRlNfRU5DUllQVElPTmAuIFRoYXQmIzM5O3MgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQuIE5vdywgdGhlIG1lbnRpb24gb2YgREFYIGhhcyBtZSB0aGlua2luZy4gV2l0aCBEQVggYW5kIGZpbGUgc3lzdGVtIGVuY3J5cHRpb24gaW52b2x2ZWQsIHRoZXJlJiMzOTtzIGEgc3Ryb25nIGNoYW5jZSB0aGF0IGBDT05GSUdfRlNfREFYYCBpcyBhbHNvIGdvaW5nIHRvIGJlIGEga2V5IGNvbnNpZGVyYXRpb24uIFdlJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gaWYgREFYIGlzIHJlbGV2YW50IHRvIHRoaXMgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24sIGl0JiMzOTtzIGxpa2VseSBsaW5rZWQsIHNvIGxldCYjMzk7cyBjaGVjayBmdXJ0aGVyIGludG8gdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleHQ0X3Nob3VsZF9lbmFibGVfZGF4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9pbm9kZS5jPTUwODE9aW50IGV4dDRfZ2V0X2ZjX2lub2RlX2xvYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNpZ25lZCBsb25nIGlubyxcbi0tXG5mcy9leHQ0L2lub2RlLmMtNTA4Ni1cbmZzL2V4dDQvaW5vZGUuYzo1MDg3OnN0YXRpYyBib29sIGV4dDRfc2hvdWxkX2VuYWJsZV9kYXgoc3RydWN0IGlub2RlICppbm9kZSlcbmZzL2V4dDQvaW5vZGUuYy01MDg4LXtcbi0tXG5mcy9leHQ0L2lub2RlLmM9NTExMT12b2lkIGV4dDRfc2V0X2lub2RlX2ZsYWdzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGJvb2wgaW5pdClcbi0tXG5mcy9leHQ0L2lub2RlLmMtNTEzMC1cdGlmIChpbml0KSB7XG5mcy9leHQ0L2lub2RlLmM6NTEzMTpcdFx0aWYgKGV4dDRfc2hvdWxkX2VuYWJsZV9kYXgoaW5vZGUpKVxuZnMvZXh0NC9pbm9kZS5jLTUxMzItXHRcdFx0bmV3X2ZsIHw9IFNfREFYO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDEzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNDgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqRXhhbWluaW5nIGV4dDQmIzM5O3MgREFYIEVuYWJsZW1lbnQqKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgYmVoaW5kIHdoZW4gYGV4dDRgIGVuYWJsZXMgRGlyZWN0IEFjY2VzcyAoREFYKS4gSSYjMzk7bSBoZWFkaW5nIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UgY29kZSDigJMgc3BlY2lmaWNhbGx5LCBgZnMvZXh0NC9pbm9kZS5jYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIGRlY2lzaW9uLW1ha2luZyBmb3IgREFYIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBgZXh0NGAgZmlsZXN5c3RlbS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhlIGBleHQ0X3Nob3VsZF9lbmFibGVfZGF4YCBmdW5jdGlvbi4gVGhpcyBmdW5jdGlvbiAqc2hvdWxkKiBlbmNhcHN1bGF0ZSBhbGwgdGhlIHJlbGV2YW50IGNoZWNrcyDigJMgd2hldGhlciB0aGUgdW5kZXJseWluZyBzdG9yYWdlIHN1cHBvcnRzIGl0LCBpZiB0aGUgZmlsZXN5c3RlbSBpcyBjb25maWd1cmVkIGFwcHJvcHJpYXRlbHksIGFuZCBwb3RlbnRpYWxseSBhbnkgaW5vZGUtc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgREFYIGVuYWJsZW1lbnQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgaW1wbGVtZW50YXRpb24gaXMgYW5kIHdoYXQgY29uc2lkZXJhdGlvbnMgaXQgdGFrZXMgaW50byBhY2NvdW50LiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBhbnkgcG90ZW50aWFsIGVkZ2UgY2FzZXMgb3Igc3VidGxldGllcyB0aGF0IG1pZ2h0IGJlIHByZXNlbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9leHQ0L2lub2RlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MDgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzUwODA6XHRcbjUwODE6XHRpbnQgZXh0NF9nZXRfZmNfaW5vZGVfbG9jKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vLFxuNTA4MjpcdFx0XHRcdCAgc3RydWN0IGV4dDRfaWxvYyAqaWxvYylcbjUwODM6XHR7XG41MDg0Olx0XHRyZXR1cm4gX19leHQ0X2dldF9pbm9kZV9sb2Moc2IsIGlubywgTlVMTCwgaWxvYywgTlVMTCk7XG41MDg1Olx0fVxuNTA4NjpcdFxuNTA4NzpcdHN0YXRpYyBib29sIGV4dDRfc2hvdWxkX2VuYWJsZV9kYXgoc3RydWN0IGlub2RlICppbm9kZSlcbjUwODg6XHR7XG41MDg5Olx0XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKGlub2RlLVx1MDAzZWlfc2IpO1xuNTA5MDpcdFxuNTA5MTpcdFx0aWYgKHRlc3Rfb3B0Mihpbm9kZS1cdTAwM2VpX3NiLCBEQVhfTkVWRVIpKVxuNTA5MjpcdFx0XHRyZXR1cm4gZmFsc2U7XG41MDkzOlx0XHRpZiAoIVNfSVNSRUcoaW5vZGUtXHUwMDNlaV9tb2RlKSlcbjUwOTQ6XHRcdFx0cmV0dXJuIGZhbHNlO1xuNTA5NTpcdFx0aWYgKGV4dDRfc2hvdWxkX2pvdXJuYWxfZGF0YShpbm9kZSkpXG41MDk2Olx0XHRcdHJldHVybiBmYWxzZTtcbjUwOTc6XHRcdGlmIChleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkpXG41MDk4Olx0XHRcdHJldHVybiBmYWxzZTtcbjUwOTk6XHRcdGlmIChleHQ0X3Rlc3RfaW5vZGVfZmxhZyhpbm9kZSwgRVhUNF9JTk9ERV9FTkNSWVBUKSlcbjUxMDA6XHRcdFx0cmV0dXJuIGZhbHNlO1xuNTEwMTpcdFx0aWYgKGV4dDRfdGVzdF9pbm9kZV9mbGFnKGlub2RlLCBFWFQ0X0lOT0RFX1ZFUklUWSkpXG41MTAyOlx0XHRcdHJldHVybiBmYWxzZTtcbjUxMDM6XHRcdGlmICghdGVzdF9iaXQoRVhUNF9GTEFHU19CREVWX0lTX0RBWCwgXHUwMDI2c2JpLVx1MDAzZXNfZXh0NF9mbGFncykpXG41MTA0Olx0XHRcdHJldHVybiBmYWxzZTtcbjUxMDU6XHRcdGlmICh0ZXN0X29wdChpbm9kZS1cdTAwM2VpX3NiLCBEQVhfQUxXQVlTKSlcbjUxMDY6XHRcdFx0cmV0dXJuIHRydWU7XG41MTA3Olx0XG41MTA4Olx0XHRyZXR1cm4gZXh0NF90ZXN0X2lub2RlX2ZsYWcoaW5vZGUsIEVYVDRfSU5PREVfREFYKTtcbjUxMDk6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTM6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgyMwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQgd2UgaGF2ZSBoZXJlLgoKKipJbnZlc3RpZ2F0aW5nIERBWCBDb25maWd1cmF0aW9uIFJlcXVpcmVtZW50cyoqCgpBbHJpZ2h0LCBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgdGhpcyBjb2RlIGFuZCBzb21ldGhpbmcmIzM5O3MgaW1tZWRpYXRlbHkganVtcGluZyBvdXQuIEl0IGRvZXNuJiMzOTt0IGFwcGVhciB0byBiZSBndWFyZGVkIGJ5IGEgYCNpZmRlZiBDT05GSUdfRlNfREFYYCBibG9jaywgd2hpY2ggaXMsIGdlbmVyYWxseSBzcGVha2luZywgcmVxdWlyZWQgZm9yIERBWCBmdW5jdGlvbmFsaXR5LiBOb3cgdGhhdCBzZWVtcyBvZGQuIEJ1dCBoYW5nIG9uLCBJIHNlZSB0aGUgdXNhZ2Ugb2YgYEVYVDRfRkxBR1NfQkRFVl9JU19EQVhgLiBIbW0uIEkgbmVlZCB0byBiZSBzdXJlLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gZG91YmxlLWNoZWNrIGlmIGBDT05GSUdfRlNfREFYYCBpcyBhYnNvbHV0ZWx5IG5lY2Vzc2FyeSBpbiB0aGlzIGNvbnRleHQuIFRoZXJlIGhhcyB0byBiZSBhIHJlYXNvbiB3aHkgdGhpcyB3YXNuJiMzOTt0IGd1YXJkZWQuIExldCYjMzk7cyBkaWcgaW4gYSBiaXQgZnVydGhlciB0byBzZWUgaG93IHRoaXMgYWxsIGNvbm5lY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfRlNfREFYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9leHQ0Lmg9MTA0OD1zdHJ1Y3QgZXh0NF9pbm9kZV9pbmZvIHtcbi0tXG5mcy9leHQ0L2V4dDQuaC0xMjU4LSNkZWZpbmUgRVhUNF9NT1VOVF9OT0xPQURcdFx0MHgwMDEwMFx0LyogRG9uJiMzOTt0IHVzZSBleGlzdGluZyBqb3VybmFsKi9cbmZzL2V4dDQvZXh0NC5oOjEyNTk6I2lmZGVmIENPTkZJR19GU19EQVhcbmZzL2V4dDQvZXh0NC5oLTEyNjAtI2RlZmluZSBFWFQ0X01PVU5UX0RBWF9BTFdBWVNcdFx0MHgwMDIwMFx0LyogRGlyZWN0IEFjY2VzcyAqL1xuLS1cbmZzL2V4dDQvZmlsZS5jPTY5PXN0YXRpYyBzc2l6ZV90IGV4dDRfZGlvX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXG4tLVxuZnMvZXh0NC9maWxlLmMtMTAwLVxuZnMvZXh0NC9maWxlLmM6MTAxOiNpZmRlZiBDT05GSUdfRlNfREFYXG5mcy9leHQ0L2ZpbGUuYy0xMDItc3RhdGljIHNzaXplX3QgZXh0NF9kYXhfcmVhZF9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bylcbi0tXG5mcy9leHQ0L2ZpbGUuYz0xMzA9c3RhdGljIHNzaXplX3QgZXh0NF9maWxlX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXG4tLVxuZnMvZXh0NC9maWxlLmMtMTM5LVxuZnMvZXh0NC9maWxlLmM6MTQwOiNpZmRlZiBDT05GSUdfRlNfREFYXG5mcy9leHQ0L2ZpbGUuYy0xNDEtXHRpZiAoSVNfREFYKGlub2RlKSlcbi0tXG5mcy9leHQ0L2ZpbGUuYz01MTk9c3RhdGljIHNzaXplX3QgZXh0NF9kaW9fd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcbi0tXG5mcy9leHQ0L2ZpbGUuYy02NDgtXG5mcy9leHQ0L2ZpbGUuYzo2NDk6I2lmZGVmIENPTkZJR19GU19EQVhcbmZzL2V4dDQvZmlsZS5jLTY1MC1zdGF0aWMgc3NpemVfdFxuLS1cbmZzL2V4dDQvZmlsZS5jPTcwNj1leHQ0X2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcbi0tXG5mcy9leHQ0L2ZpbGUuYy03MTQtXG5mcy9leHQ0L2ZpbGUuYzo3MTU6I2lmZGVmIENPTkZJR19GU19EQVhcbmZzL2V4dDQvZmlsZS5jLTcxNi1cdGlmIChJU19EQVgoaW5vZGUpKVxuLS1cbmZzL2V4dDQvZmlsZS5jLTczNy1cbmZzL2V4dDQvZmlsZS5jOjczODojaWZkZWYgQ09ORklHX0ZTX0RBWFxuZnMvZXh0NC9maWxlLmMtNzM5LXN0YXRpYyB2bV9mYXVsdF90IGV4dDRfZGF4X2h1Z2VfZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHVuc2lnbmVkIGludCBvcmRlcilcbi0tXG5mcy9leHQ0L3N1cGVyLmM9MjE3MT1zdGF0aWMgaW50IGV4dDRfcGFyc2VfcGFyYW0oc3RydWN0IGZzX2NvbnRleHQgKmZjLCBzdHJ1Y3QgZnNfcGFyYW1ldGVyICpwYXJhbSlcbi0tXG5mcy9leHQ0L3N1cGVyLmMtMjM3Mi1cdGNhc2UgT3B0X2RheF90eXBlOlxuZnMvZXh0NC9zdXBlci5jOjIzNzM6I2lmZGVmIENPTkZJR19GU19EQVhcbmZzL2V4dDQvc3VwZXIuYy0yMzc0LVx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMzozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODQ5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIERBWCBhbmQgRW5jcnlwdGlvbioqCgpPa2F5LCBzbyB0byBnZXQgREFYIHdvcmtpbmcgcHJvcGVybHksIEkgZGVmaW5pdGVseSBuZWVkIGBDT05GSUdfRlNfREFYYCBlbmFibGVkLiBNYWtlcyBzZW5zZS4gQW5kIHNpbmNlIEkmIzM5O20gbG9va2luZyBhdCBmaWxlIHN5c3RlbSBlbmNyeXB0aW9uLCBlbmFibGluZyBgRlNfRU5DUllQVElPTmAgYWxvbmdzaWRlIGBGU19EQVhgIHNlZW1zIGxpa2UgYSBnb29kIG1vdmUuIFNvbGlkIGZvdW5kYXRpb24uCgpOb3csIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGV4dDRfc2V0X2NvbnRleHRgIGFuZCBgZXh0NF9zZXRfaW5vZGVfZmxhZ3NgLiBJJiMzOTtsbCBzZXQgbXkgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OyB0byB0aG9zZSBmdW5jdGlvbnMsIHRob3NlIGFyZSB0aGUga2V5IGFyZWFzIHRvIHVuZGVyc3RhbmQuIGBleHQ0X3NldF9pbm9kZV9mbGFnc2AgaXMgdXNlZCBxdWl0ZSBhIGJpdCDigJMgaXQmIzM5O3MgZXZlcnl3aGVyZSwgaXQgc2VlbXMg4oCTIGJ1dCBpdCYjMzk7cyBub3QgYSAqYmxhemluZyogaG90IHBhdGguIEl0IGNvbWVzIGludG8gcGxheSB3aGVuIGlub2RlIGZsYWdzIGdldCBhbHRlcmVkIG9yIGR1cmluZyBpbm9kZSBpbml0aWFsaXphdGlvbiwgc28gdGhlIGZyZXF1ZW5jeSBpcyBtb2RlcmF0ZS4gSSBjYW4gd29yayB3aXRoIHRoYXQuCgpgZXh0NF9zZXRfY29udGV4dGAsIG9uIHRoZSBvdGhlciBoYW5kLCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBhY3R1YWxseSBzZXRzIHRoZSBlbmNyeXB0aW9uIGNvbnRleHQuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBwaWVjZSBmb3IgdGhpcyBwYXRjaCBhbmQgZGVmaW5pdGVseSBkZXNlcnZlcyBhIGNsb3NlciBsb29rLgoKSnVzdCB0byBiZSBzYWZlLCBJJiMzOTttIGdvaW5nIHRvIHJ1biBhIHF1aWNrIGRvdWJsZS1jaGVjayBvbiBgZXh0NF9zZXRfaW5vZGVfZmxhZ3NgIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsIGluIHRlcm1zIG9mIHBlcmZvcm1hbmNlIGltcGFjdC4gSXQmIzM5O3MgYSBnb29kIGhhYml0IHRvIHZlcmlmeSB0aG9zZSBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0NF9zZXRfaW5vZGVfZmxhZ3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leHQ0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leHQ0L2NyeXB0by5jPTEzMj1zdGF0aWMgaW50IGV4dDRfc2V0X2NvbnRleHQoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqY3R4LCBzaXplX3QgbGVuLFxuLS1cbmZzL2V4dDQvY3J5cHRvLmMtMTkxLVx0XHRcdCAqL1xuZnMvZXh0NC9jcnlwdG8uYzoxOTI6XHRcdFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGluaXQpO1xuZnMvZXh0NC9jcnlwdG8uYy0xOTMtXHRcdH1cbi0tXG5mcy9leHQ0L2NyeXB0by5jLTIxOC1cdFx0ICovXG5mcy9leHQ0L2NyeXB0by5jOjIxOTpcdFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGluaXQpO1xuZnMvZXh0NC9jcnlwdG8uYy0yMjAtXHRcdHJlcyA9IGV4dDRfbWFya19pbm9kZV9kaXJ0eShoYW5kbGUsIGlub2RlKTtcbi0tXG5mcy9leHQ0L2V4dDQuaD0zMTc5PWV4dGVybiBpbnQgZXh0NF9wdW5jaF9ob2xlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuZ3RoKTtcbmZzL2V4dDQvZXh0NC5oOjMxODA6ZXh0ZXJuIHZvaWQgZXh0NF9zZXRfaW5vZGVfZmxhZ3Moc3RydWN0IGlub2RlICosIGJvb2wgaW5pdCk7XG5mcy9leHQ0L2V4dDQuaC0zMTgxLWV4dGVybiBpbnQgZXh0NF9hbGxvY19kYV9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSk7XG4tLVxuZnMvZXh0NC9pYWxsb2MuYz05MzM9c3RydWN0IGlub2RlICpfX2V4dDRfbmV3X2lub2RlKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxuLS1cbmZzL2V4dDQvaWFsbG9jLmMtMTI3Ni1cbmZzL2V4dDQvaWFsbG9jLmM6MTI3NzpcdGV4dDRfc2V0X2lub2RlX2ZsYWdzKGlub2RlLCB0cnVlKTtcbmZzL2V4dDQvaWFsbG9jLmMtMTI3OC1cdGlmIChJU19ESVJTWU5DKGlub2RlKSlcbi0tXG5mcy9leHQ0L2lub2RlLmM9NTA4Nz1zdGF0aWMgYm9vbCBleHQ0X3Nob3VsZF9lbmFibGVfZGF4KHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4tLVxuZnMvZXh0NC9pbm9kZS5jLTUxMTAtXG5mcy9leHQ0L2lub2RlLmM6NTExMTp2b2lkIGV4dDRfc2V0X2lub2RlX2ZsYWdzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGJvb2wgaW5pdClcbmZzL2V4dDQvaW5vZGUuYy01MTEyLXtcbi0tXG5mcy9leHQ0L2lub2RlLmM9NTI3NT1zdHJ1Y3QgaW5vZGUgKl9fZXh0NF9pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vLFxuLS1cbmZzL2V4dDQvaW5vZGUuYy01NDEyLVx0ZWktXHUwMDNlaV9mbGFncyA9IGxlMzJfdG9fY3B1KHJhd19pbm9kZS1cdTAwM2VpX2ZsYWdzKTtcbmZzL2V4dDQvaW5vZGUuYzo1NDEzOlx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIHRydWUpO1xuZnMvZXh0NC9pbm9kZS5jLTU0MTQtXHQvKiBEZXRlY3QgaW52YWxpZCBmbGFnIGNvbWJpbmF0aW9uIC0gY2FuJiMzOTt0IGhhdmUgYm90aCBpbmxpbmUgZGF0YSBhbmQgZXh0ZW50cyAqL1xuLS1cbmZzL2V4dDQvaW9jdGwuYz01OTA9c3RhdGljIGludCBleHQ0X2lvY3RsX3NldGZsYWdzKHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvZXh0NC9pb2N0bC5jLTY3Ny1cbmZzL2V4dDQvaW9jdGwuYzo2Nzg6XHRleHQ0X3NldF9pbm9kZV9mbGFncyhpbm9kZSwgZmFsc2UpO1xuZnMvZXh0NC9pb2N0bC5jLTY3OS1cbi0tXG5mcy9leHQ0L3Zlcml0eS5jPTE5MT1zdGF0aWMgaW50IGV4dDRfZW5kX2VuYWJsZV92ZXJpdHkoc3RydWN0IGZpbGUgKmZpbHAsIGNvbnN0IHZvaWQgKmRlc2MsXG4tLVxuZnMvZXh0NC92ZXJpdHkuYy0yNDQtXHRleHQ0X3NldF9pbm9kZV9mbGFnKGlub2RlLCBFWFQ0X0lOT0RFX1ZFUklUWSk7XG5mcy9leHQ0L3Zlcml0eS5jOjI0NTpcdGV4dDRfc2V0X2lub2RlX2ZsYWdzKGlub2RlLCBmYWxzZSk7XG5mcy9leHQ0L3Zlcml0eS5jLTI0Ni1cdGVyciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFx1MDAyNmlsb2MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMzozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjA2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUYXJnZXQgRnVuY3Rpb25zIGZvciBGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gY29uc2lkZXIgYGV4dDRfc2V0X2lub2RlX2ZsYWdzYCBiZWNhdXNlIGl0JiMzOTtzIGNhbGxlZCBpbiBzZXZlcmFsIHBsYWNlczogYF9fZXh0NF9uZXdfaW5vZGVgLCBgX19leHQ0X2lnZXRgLCBgZXh0NF9pb2N0bF9zZXRmbGFnc2AsIGBleHQ0X2VuZF9lbmFibGVfdmVyaXR5YCwgYW5kIGBleHQ0X3NldF9jb250ZXh0YC4gSXQmIzM5O3Mgbm90IGEgY29yZSByZWFkL3dyaXRlIHBhdGgsIGJ1dCBpdCAqaXMqIGludm9sdmVkIGluIGV2ZXJ5IGlub2RlJiMzOTtzIGxpZmVjeWNsZSDigJMgY3JlYXRpb24gb3IgbG9hZGluZy4gSG93ZXZlciwgdGhlIHVzZSBvZiBgX19leHQ0X2lnZXRgIGR1cmluZyBkaXNrIHJlYWRzIGludHJvZHVjZXMgYSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgY29uY2VybiwgdGhvdWdoIGl0JiMzOTtzIHN0aWxsIGFjY2VwdGFibGUgZm9yIGZ1enppbmcgc2luY2UgaXQmIzM5O3Mgbm93aGVyZSBuZWFyIGFzIHBlcmZvcm1hbmNlLWNyaXRpY2FsIGFzIGBleHQ0X2ZpbGVfcmVhZF9pdGVyYC4KCkJ1dCwgd2FpdC4uLiBgZXh0NF9zZXRfY29udGV4dGAgc2VlbXMgbXVjaCBtb3JlIGRpcmVjdGx5IGxpbmtlZCB0byB0aGUgcGF0Y2hlZCBjb2RlLiBTaW5jZSB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgZm9jdXNlZCBvbiB0aGlzIGZ1bmN0aW9uLCBmb2N1c2luZyB0aGUgZnV6emluZyBoZXJlIHNlZW1zIHN0cmF0ZWdpY2FsbHkgc291bmQuIFRoZXJlZm9yZSwgSSBzaG91bGQgZXhwbGljaXRseSBpbmNsdWRlIGBleHQ0X3NldF9jb250ZXh0YCBhbG9uZyB3aXRoIGBleHQ0X3NldF9pbm9kZV9mbGFnc2AuCgpBbHJpZ2h0LCBhIHF1aWNrIHJldmlldyBvZiB0aGUgY29kZSBjb25maXJtZWQgdGhhdCBgZXh0NF9zZXRfY29udGV4dGAgYW5kIGBleHQ0X3NldF9pbm9kZV9mbGFnc2AgYXJlICpleGFjdGx5KiB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIG1vZGlmaWVkIGluIHRoZSBwYXRjaC4gVGhhdCBzaW1wbGlmaWVzIHRoZSB0YXJnZXRpbmcuCgpOb3csIGxldCYjMzk7cyByZXZpc2l0IHRoZSBjb25maWd1cmF0aW9uIGNvbnNpZGVyYXRpb25zLiBJIHJlY2FsbCBgRlNfRU5DUllQVElPTmAgYW5kIGBGU19EQVhgIGJlaW5nIHJlbGV2YW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG92ZXJsb29rIGFueSBvdGhlciByZWxldmFudCBjb25maWdzLiBBaCwgcmlnaHQhIGBDT05GSUdfRVhUNF9GU19FTkNSWVBUSU9OYCB3YXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgQ09ORklHX0ZTX0VOQ1JZUFRJT05gLiBUaGF0JiMzOTtzIGltcG9ydGFudCB0byByZW1lbWJlci4gSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRoYXQgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFQ0X0ZTX0VOQ1JZUFRJT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMzozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTMzCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIEZpbGVzeXN0ZW0gRW5jcnlwdGlvbiBhbmQgREFYIE9wdGlvbnMqKgoKQWxyaWdodCwgdGhhdCBjb25maXJtYXRpb24gY2xpY2tzIGluOiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBGU19FTkNSWVBUSU9OYC4gTm93LCB0aGUgY3J1Y2lhbCBwYXJ0IGlzIGZpZ3VyaW5nIG91dCB0aGUgb3B0aW1hbCBEQVggY29uZmlndXJhdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgaWYgYEZTX0RBWGAgYnkgaXRzZWxmIGlzIGVub3VnaCB0byBjb3ZlciB0aGUgcmVxdWlyZW1lbnRzIGhlcmUuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGUgdW5kZXJseWluZyBzdG9yYWdlIGFuZCB3b3JrbG9hZHMgdG8gYmUgc3VyZS4gSXQgbWlnaHQgYmUgc3VmZmljaWVudCBmb3Igc29tZSB1c2UgY2FzZXMsIHNvIGxldCYjMzk7cyBub3QganVtcCB0aGUgZ3VuIGFuZCBpbW1lZGlhdGVseSBvdmVyLWVuZ2luZWVyLgoKSWYgdGhhdCBwcm92ZXMgaW5zdWZmaWNpZW50LCB0aGVuIGEgZGVlcGVyIGRpdmUgaW50byB0cnVlIGBEQVhgIG1pZ2h0IGJlIG5lY2Vzc2FyeS4gQnV0IGhvbGQgb24uLi4ganVzdCBhIG1vbWVudCwgbXkgbWVudGFsIG1vZGVsIHJlbWluZHMgbWUgZXh0NCBkb2VzbiYjMzk7dCBoYXZlIGEgc2VwYXJhdGUgY29uZmlndXJhdGlvbiBmb3IgYEVYVDRfRlNfREFYYC4gSXQgdXNlcyB0aGUgbWFpbiBgREFYYCBjb25maWd1cmF0aW9uLiBTbyBJIG5lZWQgdG8ga2VlcCB0aGF0IGRpc3RpbmN0aW9uIGluIG1pbmQgYXMgSSBhc3Nlc3MgdGhlIGJlc3QgaW1wbGVtZW50YXRpb24uIEdvdHRhIHJlbWVtYmVyIHRoZSBudWFuY2VzIG9mIHRoZSBmaWxlc3lzdGVtIGltcGxlbWVudGF0aW9uIGJlZm9yZSBJIGdvIG1ha2luZyBhbnkgZGVzaWduIGRlY2lzaW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTM6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFQ0X0ZTX0RBWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDEzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyNTEKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBleHQ0IERBWCBCdWcgRml4KioKCk9rYXksIHNvIGBGU19EQVhgIGlzIGNvbmZpcm1lZCBhcyByZWxldmFudCBoZXJlLiBMZXQmIzM5O3MgYnJlYWsgZG93biB3aGF0IHdlIGhhdmUuIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGNyaXRpY2FsIGZpeCDigJMgYFdvcnRoRnV6emluZzogdHJ1ZWAgc3VnZ2VzdHMgdGhpcyBpcyBhIGhpZ2gtaW1wYWN0IGNoYW5nZS4gVGhlIHJlYXNvbmluZyBjb25maXJtcyB0aGF0IHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgbmFzdHkgYnVnOiBEQVggZmxhZ3MgcGVyc2lzdGluZyBpbmNvcnJlY3RseSB3aGVuIGVuY3J5cHRpb24gaXMgZW5hYmxlZCwgd2hpY2ggY2FuIGxlYWQgdG8gd3JpdGVzIGJ5cGFzc2luZyB0aGUgaW50ZW5kZWQgZW5jcnlwdGlvbi4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGV4dDQgZmlsZXN5c3RlbSwgZGlyZWN0bHkgaW1wYWN0aW5nIGRhdGEgaW50ZWdyaXR5IGFuZCBzZWN1cml0eSwgc28gd2UgbmVlZCB0byBiZSBvbiB0b3Agb2YgdGhpcy4KClRoZSBrZXkgZnVuY3Rpb25zIHRvIHNjcnV0aW5pemUgYXJlIGBleHQ0X3NldF9jb250ZXh0YCBhbmQgYGV4dDRfc2V0X2lub2RlX2ZsYWdzYC4gSSYjMzk7bGwgd2FudCB0byBjaGVjayBob3cgdGhleSBpbnRlcmFjdCwgYW5kIGhvdyB0aGUgREFYIGZsYWcgaXMgbWFuaXB1bGF0ZWQgd2l0aGluIHRoZW0sIGVzcGVjaWFsbHkgaW4gdGhlIGNvbnRleHQgb2YgZW5jcnlwdGlvbi4gSXQgbWFrZXMgc2Vuc2UgdGhhdCBgRlNfRU5DUllQVElPTmAgYW5kIGBGU19EQVhgIGFyZSB0aGUgZW5hYmxpbmcgY29uZmlndXJhdGlvbnMgaGVyZS4gVGltZSB0byBkaXZlIGludG8gYGZzL2V4dDQvY3J5cHRvLmNgIGFuZCB0YWtlIGEgbG9vayBhdCBgZXh0NF9zZXRfY29udGV4dGAuIExldCYjMzk7cyBzZWUgaG93IHRoZXkgZml4ZWQgdGhpcyBwb3RlbnRpYWxseSBkYW5nZXJvdXMgb3ZlcnNpZ2h0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMzozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2V4dDQvY3J5cHRvLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEzMDpcdH1cbiAxMzE6XHRcbiAxMzI6XHRzdGF0aWMgaW50IGV4dDRfc2V0X2NvbnRleHQoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqY3R4LCBzaXplX3QgbGVuLFxuIDEzMzpcdFx0XHRcdFx0XHRcdFx0dm9pZCAqZnNfZGF0YSlcbiAxMzQ6XHR7XG4gMTM1Olx0XHRoYW5kbGVfdCAqaGFuZGxlID0gZnNfZGF0YTtcbiAxMzY6XHRcdGludCByZXMsIHJlczIsIGNyZWRpdHMsIHJldHJpZXMgPSAwO1xuIDEzNzpcdFx0Ym9vbCBpbml0ID0gU19JU1JFRyhpbm9kZS1cdTAwM2VpX21vZGUpO1xuIDEzODpcdFxuIDEzOTpcdFx0LypcbiAxNDA6XHRcdCAqIEVuY3J5cHRpbmcgdGhlIHJvb3QgZGlyZWN0b3J5IGlzIG5vdCBhbGxvd2VkIGJlY2F1c2UgZTJmc2NrIGV4cGVjdHNcbiAxNDE6XHRcdCAqIGxvc3QmIzQzO2ZvdW5kIHRvIGV4aXN0IGFuZCBiZSB1bmVuY3J5cHRlZCwgYW5kIGVuY3J5cHRpbmcgdGhlIHJvb3RcbiAxNDI6XHRcdCAqIGRpcmVjdG9yeSB3b3VsZCBpbXBseSBlbmNyeXB0aW5nIHRoZSBsb3N0JiM0Mztmb3VuZCBkaXJlY3RvcnkgYXMgd2VsbCBhc1xuIDE0MzpcdFx0ICogdGhlIGZpbGVuYW1lIFwmIzM0O2xvc3QmIzQzO2ZvdW5kXCYjMzQ7IGl0c2VsZi5cbiAxNDQ6XHRcdCAqL1xuIDE0NTpcdFx0aWYgKGlub2RlLVx1MDAzZWlfaW5vID09IEVYVDRfUk9PVF9JTk8pXG4gMTQ2Olx0XHRcdHJldHVybiAtRVBFUk07XG4gMTQ3Olx0XG4gMTQ4Olx0XHRpZiAoV0FSTl9PTl9PTkNFKElTX0RBWChpbm9kZSkgXHUwMDI2XHUwMDI2IGlfc2l6ZV9yZWFkKGlub2RlKSkpXG4gMTQ5Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDAxCgkJCQkJCQlvdXRwdXQ6IDExMgoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25maWd1cmF0aW9uIFZlcmlmaWNhdGlvbiBhbmQgU2VsZWN0aW9uKioKCk9rYXksIHRoaXMgc2VlbXMgcmlnaHQsIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0LiBCdXQgYmVmb3JlIEkgbG9jayB0aGlzIGluLCBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgbHVya2luZyBpbiB0aGUgc2hhZG93cy4gVGhlIG9idmlvdXMgb25lLCBgQ09ORklHX0VYVDRfRlNgLCBpcyBhbHJlYWR5IGNsZWFyLiBJIHNlZSBgZnMvZXh0NC9jcnlwdG8uY2AgaXMgYmVpbmcgdXNlZCwgc28gYENPTkZJR19GU19FTkNSWVBUSU9OYCBpcyBkZWZpbml0ZWx5IGEgcmVxdWlyZW1lbnQuIEFuZCBJIHNwb3QgdGhlIG5lZWQgZm9yIGBJU19EQVhgIGFuZCB0aGUgYGV4dDRfc2hvdWxkX2VuYWJsZV9kYXhgIGxvZ2ljLCBzbyB0aGF0IG1lYW5zIGBDT05GSUdfRlNfREFYYCBpcyBhbHNvIGVzc2VudGlhbC4gQWxyaWdodCwgeWVzLCBJJiMzOTtsbCBkZWZpbml0ZWx5IGluY29ycG9yYXRlIGJvdGggYEZTX0VOQ1JZUFRJT05gIGFuZCBgRlNfREFYYCBpbiB0aGUgY29uZmlndXJhdGlvbi4gTm93LCBsZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMzozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RlNfRU5DUllQVElPTiYjMzQ7LAogICAgJiMzNDtGU19EQVgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X3NldF9jb250ZXh0JiMzNDssCiAgICAmIzM0O2V4dDRfc2V0X2lub2RlX2ZsYWdzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyB0aGUgREFYIGZsYWcgb24gZXh0NCBpbm9kZXMgd2hlbiBlbmNyeXB0aW9uIGlzIGVuYWJsZWQsIGZpeGluZyBhIGJ1ZyB3aGVyZSB0aGUgREFYIGZsYWcgY291bGQgbGluZ2VyIGFuZCBjYXVzZSB3cml0ZXMgdG8gYnlwYXNzIGVuY3J5cHRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGU19FTkNSWVBUSU9OJiMzNDssCiAgICAmIzM0O0ZTX0RBWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfc2V0X2NvbnRleHQmIzM0OywKICAgICYjMzQ7ZXh0NF9zZXRfaW5vZGVfZmxhZ3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIHRoZSBEQVggZmxhZyBvbiBleHQ0IGlub2RlcyB3aGVuIGVuY3J5cHRpb24gaXMgZW5hYmxlZCwgZml4aW5nIGEgYnVnIHdoZXJlIHRoZSBEQVggZmxhZyBjb3VsZCBsaW5nZXIgYW5kIGNhdXNlIHdyaXRlcyB0byBieXBhc3MgZW5jcnlwdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMzozMDoyNy44MDY3NjAxMDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDA1MTgyMzkyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGU19FTkNSWVBUSU9OXCIsXG4gICAgXCJGU19EQVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X3NldF9jb250ZXh0XCIsXG4gICAgXCJleHQ0X3NldF9pbm9kZV9mbGFnc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyB0aGUgREFYIGZsYWcgb24gZXh0NCBpbm9kZXMgd2hlbiBlbmNyeXB0aW9uIGlzIGVuYWJsZWQsIGZpeGluZyBhIGJ1ZyB3aGVyZSB0aGUgREFYIGZsYWcgY291bGQgbGluZ2VyIGFuZCBjYXVzZSB3cml0ZXMgdG8gYnlwYXNzIGVuY3J5cHRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMzozMDoyNy44MDY3NzE0MjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MzMwNDk0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGI2MjRiYmFiMDAxMThhMzdiNDg3ZGEzZGQxMTViYmY4OGVlZjkzNTJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMjQgMTM6MzA6MjYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9jcnlwdG8uYyBiL2ZzL2V4dDQvY3J5cHRvLmNcXG5pbmRleCBmNDFmMzIwZjQ0MzdiOS4uMmQ0MDkxMTRlMDJlN2YgMTAwNjQ0XFxuLS0tIGEvZnMvZXh0NC9jcnlwdG8uY1xcbisrKyBiL2ZzL2V4dDQvY3J5cHRvLmNcXG5AQCAtMTM0LDYgKzEzNCw3IEBAIHN0YXRpYyBpbnQgZXh0NF9zZXRfY29udGV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICpjdHgsIHNpemVfdCBsZW4sXFxuIHtcXG4gXFx0aGFuZGxlX3QgKmhhbmRsZSA9IGZzX2RhdGE7XFxuIFxcdGludCByZXMsIHJlczIsIGNyZWRpdHMsIHJldHJpZXMgPSAwO1xcbitcXHRib29sIGluaXQgPSBTX0lTUkVHKGlub2RlLVxcdTAwM2VpX21vZGUpO1xcbiBcXG4gXFx0LypcXG4gXFx0ICogRW5jcnlwdGluZyB0aGUgcm9vdCBkaXJlY3RvcnkgaXMgbm90IGFsbG93ZWQgYmVjYXVzZSBlMmZzY2sgZXhwZWN0c1xcbkBAIC0xNzksMTAgKzE4MCwxNiBAQCBzdGF0aWMgaW50IGV4dDRfc2V0X2NvbnRleHQoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqY3R4LCBzaXplX3QgbGVuLFxcbiBcXHRcXHRcXHRleHQ0X2NsZWFyX2lub2RlX3N0YXRlKGlub2RlLFxcbiBcXHRcXHRcXHRcXHRcXHRFWFQ0X1NUQVRFX01BWV9JTkxJTkVfREFUQSk7XFxuIFxcdFxcdFxcdC8qXFxuLVxcdFxcdFxcdCAqIFVwZGF0ZSBpbm9kZS1cXHUwMDNlaV9mbGFncyAtIFNfRU5DUllQVEVEIHdpbGwgYmUgZW5hYmxlZCxcXG4tXFx0XFx0XFx0ICogU19EQVggbWF5IGJlIGRpc2FibGVkXFxuK1xcdFxcdFxcdCAqIFVwZGF0ZSBpbm9kZS1cXHUwMDNlaV9mbGFncywgU19FTkNSWVBURUQgd2lsbCBiZSBlbmFibGVkLlxcbitcXHRcXHRcXHQgKiBJZiB0aGlzIGlzIGEgcmVndWxhciBpbm9kZSwgdGhlbiB3ZSBtdXN0IGJlIGNvbWluZ1xcbitcXHRcXHRcXHQgKiB2aWEgX19leHQ0X25ld19pbm9kZSgpIGFzIG9ubHkgbmV3IGlub2RlcyBjYW4gYmVcXG4rXFx0XFx0XFx0ICogZW5jcnlwdGVkLCBzbyB3ZSBtdXN0IHNldCB0aGUgaW5pdCBmbGFnIHNvXFxuK1xcdFxcdFxcdCAqIFNfREFYIGNhbiBiZSBkaXNhYmxlZC4gVGhpcyBpcyBhIGJpdCBmcmFnaWxlIGJ1dFxcbitcXHRcXHRcXHQgKiBzZWVtcyBsaWtlIHRoZSBlYXNpZXN0IHdheSB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgbGV0XFxuK1xcdFxcdFxcdCAqIHRoZSBEQVggZmxhZyBsaW5nZXIgd2hlbiBlbmNyeXB0aW9uIGlzIGVuYWJsZWQgYXNcXG4rXFx0XFx0XFx0ICogdGhhdCByZXN1bHQgaW4gd3JpdGVzIHNpbGVudGx5IGJ5cGFzc2luZyBlbmNyeXB0aW9uLlxcbiBcXHRcXHRcXHQgKi9cXG4tXFx0XFx0XFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGZhbHNlKTtcXG4rXFx0XFx0XFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGluaXQpO1xcbiBcXHRcXHR9XFxuIFxcdFxcdHJldHVybiByZXM7XFxuIFxcdH1cXG5AQCAtMjA5LDcgKzIxNiw3IEBAIHN0YXRpYyBpbnQgZXh0NF9zZXRfY29udGV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICpjdHgsIHNpemVfdCBsZW4sXFxuIFxcdFxcdCAqIFVwZGF0ZSBpbm9kZS1cXHUwMDNlaV9mbGFncyAtIFNfRU5DUllQVEVEIHdpbGwgYmUgZW5hYmxlZCxcXG4gXFx0XFx0ICogU19EQVggbWF5IGJlIGRpc2FibGVkXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRleHQ0X3NldF9pbm9kZV9mbGFncyhpbm9kZSwgZmFsc2UpO1xcbitcXHRcXHRleHQ0X3NldF9pbm9kZV9mbGFncyhpbm9kZSwgaW5pdCk7XFxuIFxcdFxcdHJlcyA9IGV4dDRfbWFya19pbm9kZV9kaXJ0eShoYW5kbGUsIGlub2RlKTtcXG4gXFx0XFx0aWYgKHJlcylcXG4gXFx0XFx0XFx0RVhUNF9FUlJPUl9JTk9ERShpbm9kZSwgXFxcIkZhaWxlZCB0byBtYXJrIGlub2RlIGRpcnR5XFxcIik7XFxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW5vZGUuYyBiL2ZzL2V4dDQvaW5vZGUuY1xcbmluZGV4IGNlOTk4MDdjNWY1YjJjLi5hNTcxNzk2NTUzNTNhZiAxMDA2NDRcXG4tLS0gYS9mcy9leHQ0L2lub2RlLmNcXG4rKysgYi9mcy9leHQ0L2lub2RlLmNcXG5AQCAtNTExMyw4ICs1MTEzLDYgQEAgdm9pZCBleHQ0X3NldF9pbm9kZV9mbGFncyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBib29sIGluaXQpXFxuIFxcdHVuc2lnbmVkIGludCBmbGFncyA9IEVYVDRfSShpbm9kZSktXFx1MDAzZWlfZmxhZ3M7XFxuIFxcdHVuc2lnbmVkIGludCBuZXdfZmwgPSAwO1xcbiBcXG4tXFx0V0FSTl9PTl9PTkNFKElTX0RBWChpbm9kZSkgXFx1MDAyNlxcdTAwMjYgaW5pdCk7XFxuLVxcbiBcXHRpZiAoZmxhZ3MgXFx1MDAyNiBFWFQ0X1NZTkNfRkwpXFxuIFxcdFxcdG5ld19mbCB8PSBTX1NZTkM7XFxuIFxcdGlmIChmbGFncyBcXHUwMDI2IEVYVDRfQVBQRU5EX0ZMKVxcbkBAIC01MTI5LDggKzUxMjcsMTIgQEAgdm9pZCBleHQ0X3NldF9pbm9kZV9mbGFncyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBib29sIGluaXQpXFxuIFxcdC8qIEJlY2F1c2Ugb2YgdGhlIHdheSBpbm9kZV9zZXRfZmxhZ3MoKSB3b3JrcyB3ZSBtdXN0IHByZXNlcnZlIFNfREFYXFxuIFxcdCAqIGhlcmUgaWYgYWxyZWFkeSBzZXQuICovXFxuIFxcdG5ld19mbCB8PSAoaW5vZGUtXFx1MDAzZWlfZmxhZ3MgXFx1MDAyNiBTX0RBWCk7XFxuLVxcdGlmIChpbml0IFxcdTAwMjZcXHUwMDI2IGV4dDRfc2hvdWxkX2VuYWJsZV9kYXgoaW5vZGUpKVxcbi1cXHRcXHRuZXdfZmwgfD0gU19EQVg7XFxuK1xcdGlmIChpbml0KSB7XFxuK1xcdFxcdGlmIChleHQ0X3Nob3VsZF9lbmFibGVfZGF4KGlub2RlKSlcXG4rXFx0XFx0XFx0bmV3X2ZsIHw9IFNfREFYO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdG5ld19mbCBcXHUwMDI2PSB+U19EQVg7XFxuK1xcdH1cXG4gXFxuIFxcdGlmIChmbGFncyBcXHUwMDI2IEVYVDRfRU5DUllQVF9GTClcXG4gXFx0XFx0bmV3X2ZsIHw9IFNfRU5DUllQVEVEO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMzozMDoyOC4zMDA3ODEwNThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0MzU1Nzc5MzQ3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGU19FTkNSWVBUSU9OXCIsXG4gICAgXCJGU19EQVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X3NldF9jb250ZXh0XCIsXG4gICAgXCJleHQ0X3NldF9pbm9kZV9mbGFnc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyB0aGUgREFYIGZsYWcgb24gZXh0NCBpbm9kZXMgd2hlbiBlbmNyeXB0aW9uIGlzIGVuYWJsZWQsIGZpeGluZyBhIGJ1ZyB3aGVyZSB0aGUgREFYIGZsYWcgY291bGQgbGluZ2VyIGFuZCBjYXVzZSB3cml0ZXMgdG8gYnlwYXNzIGVuY3J5cHRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI2MjRiYmFiMDAxMThhMzdiNDg3ZGEzZGQxMTViYmY4OGVlZjkzNTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAxMzozMDoyNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvY3J5cHRvLmMgYi9mcy9leHQ0L2NyeXB0by5jXG5pbmRleCBmNDFmMzIwZjQ0MzdiOS4uMmQ0MDkxMTRlMDJlN2YgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L2NyeXB0by5jXG4rKysgYi9mcy9leHQ0L2NyeXB0by5jXG5AQCAtMTM0LDYgKzEzNCw3IEBAIHN0YXRpYyBpbnQgZXh0NF9zZXRfY29udGV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICpjdHgsIHNpemVfdCBsZW4sXG4ge1xuIFx0aGFuZGxlX3QgKmhhbmRsZSA9IGZzX2RhdGE7XG4gXHRpbnQgcmVzLCByZXMyLCBjcmVkaXRzLCByZXRyaWVzID0gMDtcbitcdGJvb2wgaW5pdCA9IFNfSVNSRUcoaW5vZGUtXHUwMDNlaV9tb2RlKTtcbiBcbiBcdC8qXG4gXHQgKiBFbmNyeXB0aW5nIHRoZSByb290IGRpcmVjdG9yeSBpcyBub3QgYWxsb3dlZCBiZWNhdXNlIGUyZnNjayBleHBlY3RzXG5AQCAtMTc5LDEwICsxODAsMTYgQEAgc3RhdGljIGludCBleHQ0X3NldF9jb250ZXh0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKmN0eCwgc2l6ZV90IGxlbixcbiBcdFx0XHRleHQ0X2NsZWFyX2lub2RlX3N0YXRlKGlub2RlLFxuIFx0XHRcdFx0XHRFWFQ0X1NUQVRFX01BWV9JTkxJTkVfREFUQSk7XG4gXHRcdFx0Lypcbi1cdFx0XHQgKiBVcGRhdGUgaW5vZGUtXHUwMDNlaV9mbGFncyAtIFNfRU5DUllQVEVEIHdpbGwgYmUgZW5hYmxlZCxcbi1cdFx0XHQgKiBTX0RBWCBtYXkgYmUgZGlzYWJsZWRcbitcdFx0XHQgKiBVcGRhdGUgaW5vZGUtXHUwMDNlaV9mbGFncywgU19FTkNSWVBURUQgd2lsbCBiZSBlbmFibGVkLlxuK1x0XHRcdCAqIElmIHRoaXMgaXMgYSByZWd1bGFyIGlub2RlLCB0aGVuIHdlIG11c3QgYmUgY29taW5nXG4rXHRcdFx0ICogdmlhIF9fZXh0NF9uZXdfaW5vZGUoKSBhcyBvbmx5IG5ldyBpbm9kZXMgY2FuIGJlXG4rXHRcdFx0ICogZW5jcnlwdGVkLCBzbyB3ZSBtdXN0IHNldCB0aGUgaW5pdCBmbGFnIHNvXG4rXHRcdFx0ICogU19EQVggY2FuIGJlIGRpc2FibGVkLiBUaGlzIGlzIGEgYml0IGZyYWdpbGUgYnV0XG4rXHRcdFx0ICogc2VlbXMgbGlrZSB0aGUgZWFzaWVzdCB3YXkgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGxldFxuK1x0XHRcdCAqIHRoZSBEQVggZmxhZyBsaW5nZXIgd2hlbiBlbmNyeXB0aW9uIGlzIGVuYWJsZWQgYXNcbitcdFx0XHQgKiB0aGF0IHJlc3VsdCBpbiB3cml0ZXMgc2lsZW50bHkgYnlwYXNzaW5nIGVuY3J5cHRpb24uXG4gXHRcdFx0ICovXG4tXHRcdFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGZhbHNlKTtcbitcdFx0XHRleHQ0X3NldF9pbm9kZV9mbGFncyhpbm9kZSwgaW5pdCk7XG4gXHRcdH1cbiBcdFx0cmV0dXJuIHJlcztcbiBcdH1cbkBAIC0yMDksNyArMjE2LDcgQEAgc3RhdGljIGludCBleHQ0X3NldF9jb250ZXh0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKmN0eCwgc2l6ZV90IGxlbixcbiBcdFx0ICogVXBkYXRlIGlub2RlLVx1MDAzZWlfZmxhZ3MgLSBTX0VOQ1JZUFRFRCB3aWxsIGJlIGVuYWJsZWQsXG4gXHRcdCAqIFNfREFYIG1heSBiZSBkaXNhYmxlZFxuIFx0XHQgKi9cbi1cdFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGZhbHNlKTtcbitcdFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGluaXQpO1xuIFx0XHRyZXMgPSBleHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBpbm9kZSk7XG4gXHRcdGlmIChyZXMpXG4gXHRcdFx0RVhUNF9FUlJPUl9JTk9ERShpbm9kZSwgXCJGYWlsZWQgdG8gbWFyayBpbm9kZSBkaXJ0eVwiKTtcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmNcbmluZGV4IGNlOTk4MDdjNWY1YjJjLi5hNTcxNzk2NTUzNTNhZiAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvaW5vZGUuY1xuKysrIGIvZnMvZXh0NC9pbm9kZS5jXG5AQCAtNTExMyw4ICs1MTEzLDYgQEAgdm9pZCBleHQ0X3NldF9pbm9kZV9mbGFncyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBib29sIGluaXQpXG4gXHR1bnNpZ25lZCBpbnQgZmxhZ3MgPSBFWFQ0X0koaW5vZGUpLVx1MDAzZWlfZmxhZ3M7XG4gXHR1bnNpZ25lZCBpbnQgbmV3X2ZsID0gMDtcbiBcbi1cdFdBUk5fT05fT05DRShJU19EQVgoaW5vZGUpIFx1MDAyNlx1MDAyNiBpbml0KTtcbi1cbiBcdGlmIChmbGFncyBcdTAwMjYgRVhUNF9TWU5DX0ZMKVxuIFx0XHRuZXdfZmwgfD0gU19TWU5DO1xuIFx0aWYgKGZsYWdzIFx1MDAyNiBFWFQ0X0FQUEVORF9GTClcbkBAIC01MTI5LDggKzUxMjcsMTIgQEAgdm9pZCBleHQ0X3NldF9pbm9kZV9mbGFncyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBib29sIGluaXQpXG4gXHQvKiBCZWNhdXNlIG9mIHRoZSB3YXkgaW5vZGVfc2V0X2ZsYWdzKCkgd29ya3Mgd2UgbXVzdCBwcmVzZXJ2ZSBTX0RBWFxuIFx0ICogaGVyZSBpZiBhbHJlYWR5IHNldC4gKi9cbiBcdG5ld19mbCB8PSAoaW5vZGUtXHUwMDNlaV9mbGFncyBcdTAwMjYgU19EQVgpO1xuLVx0aWYgKGluaXQgXHUwMDI2XHUwMDI2IGV4dDRfc2hvdWxkX2VuYWJsZV9kYXgoaW5vZGUpKVxuLVx0XHRuZXdfZmwgfD0gU19EQVg7XG4rXHRpZiAoaW5pdCkge1xuK1x0XHRpZiAoZXh0NF9zaG91bGRfZW5hYmxlX2RheChpbm9kZSkpXG4rXHRcdFx0bmV3X2ZsIHw9IFNfREFYO1xuK1x0XHRlbHNlXG4rXHRcdFx0bmV3X2ZsIFx1MDAyNj0gflNfREFYO1xuK1x0fVxuIFxuIFx0aWYgKGZsYWdzIFx1MDAyNiBFWFQ0X0VOQ1JZUFRfRkwpXG4gXHRcdG5ld19mbCB8PSBTX0VOQ1JZUFRFRDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDEzOjMwOjI4LjMwMDc4MjI5OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MjU1OTUwMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gZXh0NCdzIEVuY3J5cHRpb24gYW5kIERBWCBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBmcy9leHQ0L2NyeXB0by5jYCBhbmQgYGZzL2V4dDQvaW5vZGUuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgd2l0aGluIGBleHQ0X3NldF9jb250ZXh0YC4gSXQncyBub3cgcGFzc2luZyBgU19JU1JFRyhpbm9kZS1cdTAwM2VpX21vZGUpYCB0byBgZXh0NF9zZXRfaW5vZGVfZmxhZ3NgLCB3aGljaCBpcyBhIGNoYW5nZSBmcm9tIHBhc3NpbmcgYGZhbHNlYC4gVGhhdCdzIHRoZSBrZXksIHRoYXQgYGluaXRgIHZhbHVlIGNoYW5nZS4gTG9va2luZyBkZWVwZXIsIHRoZSBwYXRjaCByZW1vdmVzIGEgYFdBUk5fT05fT05DRWAgZm9yIGBJU19EQVgoaW5vZGUpIFx1MDAyNlx1MDAyNiBpbml0YCBpbiBgZXh0NF9zZXRfaW5vZGVfZmxhZ3NgLCB3aGljaCBzdWdnZXN0cyB0aGV5J3JlIGFkZHJlc3Npbmcgc29tZSBpbnRlcmFjdGlvbiBpc3N1ZS4gQW5kLCB0aGV5J3ZlIGFsdGVyZWQgdGhlIGxvZ2ljIGZvciBob3cgYFNfREFYYCBmbGFnIGlzIHNldC4gSXQgbG9va3MgbGlrZSBpdCdzIGJlY29taW5nIGV4cGxpY2l0bHkgc2V0IHRvIG9mZiBpZiBgZXh0NF9zaG91bGRfZW5hYmxlX2RheGAgaXMgZmFsc2Ugd2l0aCB0aGUgaW5pdCB2YXJpYWJsZSB0cnVlLlxuXG5UaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGRlZmluaXRlbHkuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgZXh0NCwgZW5jcnlwdGlvbiwgKmFuZCogREFYLCBhbGwgaW4gdGhlIHNhbWUgYnJlYXRoLiBUaGlzIHNjcmVhbXMgXCJmdXp6IHRoaXMhXCIuIFRoZSBwb3RlbnRpYWwgZm9yIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBpcyBkZWZpbml0ZWx5IHRoZXJlLiBXZSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyB0aGF0IGFyZSBiZWluZyBtb2RpZmllZCwgd2hpY2ggYXBwZWFyIHRvIGJlIGBleHQ0X3NldF9jb250ZXh0YCBhbmQgYGV4dDRfc2V0X2lub2RlX2ZsYWdzYC4gVGhlc2Ugd2lsbCBiZSBvdXIgcHJpbWUgdGFyZ2V0cyBmb3IgYW55IGZ1enppbmcgY2FtcGFpZ24uXG5cbk5vdywgbGV0J3MgbWFrZSBzdXJlIHRoZSBjb25maWd1cmF0aW9uIGlzIGNvcnJlY3QuIFNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCBgZnMvZXh0NC9jcnlwdG8uY2AsIEknbSBhc3N1bWluZyB0aGF0IGl0IGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19GU19FTkNSWVBUSU9OYCBpcyBlbmFibGVkLiBOb3QgYENPTkZJR19FWFQ0X0ZTX0VOQ1JZUFRJT05gLiBJJ2xsIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYnkgbG9va2luZyBhdCB0aGUgYGZzL2V4dDQvTWFrZWZpbGVgIHRvIGNvbmZpcm0gdGhlIGNvbXBpbGUtdGltZSBkZXBlbmRlbmNpZXMuIFdlIHdpbGwgbmVlZCB0byBtYWtlIHN1cmUgd2UncmUgY29tcGlsaW5nIHdpdGggYENPTkZJR19GU19FTkNSWVBUSU9OYCBlbmFibGVkIGZvciBvdXIgZnV6emluZyBidWlsZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MzcsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMzozMDozNC43MjYzNzk4MjFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgyMjgzNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY3J5cHRvXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvTWFrZWZpbGU9MjA9ZXh0NC0kKENPTkZJR19GU19WRVJJVFkpXFx0XFx0Kz0gdmVyaXR5Lm9cXG5mcy9leHQ0L01ha2VmaWxlOjIxOmV4dDQtJChDT05GSUdfRlNfRU5DUllQVElPTilcXHRcXHQrPSBjcnlwdG8ub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMzozMDozNC43ODQ2MTI5ODlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTIzOTU1MTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIEZpbGVzeXN0ZW0gRW5jcnlwdGlvbiBhbmQgREFYKipcblxuUmlnaHQsIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBgQ09ORklHX0ZTX0VOQ1JZUFRJT05gLiBUaGF0J3MgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQuIE5vdywgdGhlIG1lbnRpb24gb2YgREFYIGhhcyBtZSB0aGlua2luZy4gV2l0aCBEQVggYW5kIGZpbGUgc3lzdGVtIGVuY3J5cHRpb24gaW52b2x2ZWQsIHRoZXJlJ3MgYSBzdHJvbmcgY2hhbmNlIHRoYXQgYENPTkZJR19GU19EQVhgIGlzIGFsc28gZ29pbmcgdG8gYmUgYSBrZXkgY29uc2lkZXJhdGlvbi4gV2UnbGwgbmVlZCB0byBjb25maXJtIGlmIERBWCBpcyByZWxldmFudCB0byB0aGlzIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLCBpdCdzIGxpa2VseSBsaW5rZWQsIHNvIGxldCdzIGNoZWNrIGZ1cnRoZXIgaW50byB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjEzLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTM6MzA6MzcuNzA4NTcwNzgxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3OTEzNjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dDRfc2hvdWxkX2VuYWJsZV9kYXhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9pbm9kZS5jPTUwODE9aW50IGV4dDRfZ2V0X2ZjX2lub2RlX2xvYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNpZ25lZCBsb25nIGlubyxcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy01MDg2LVxcbmZzL2V4dDQvaW5vZGUuYzo1MDg3OnN0YXRpYyBib29sIGV4dDRfc2hvdWxkX2VuYWJsZV9kYXgoc3RydWN0IGlub2RlICppbm9kZSlcXG5mcy9leHQ0L2lub2RlLmMtNTA4OC17XFxuLS1cXG5mcy9leHQ0L2lub2RlLmM9NTExMT12b2lkIGV4dDRfc2V0X2lub2RlX2ZsYWdzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGJvb2wgaW5pdClcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy01MTMwLVxcdGlmIChpbml0KSB7XFxuZnMvZXh0NC9pbm9kZS5jOjUxMzE6XFx0XFx0aWYgKGV4dDRfc2hvdWxkX2VuYWJsZV9kYXgoaW5vZGUpKVxcbmZzL2V4dDQvaW5vZGUuYy01MTMyLVxcdFxcdFxcdG5ld19mbCB8PSBTX0RBWDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTM6MzA6MzcuNzY2NDk0MTI5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4MjI4ODg4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkV4YW1pbmluZyBleHQ0J3MgREFYIEVuYWJsZW1lbnQqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsb2dpYyBiZWhpbmQgd2hlbiBgZXh0NGAgZW5hYmxlcyBEaXJlY3QgQWNjZXNzIChEQVgpLiBJJ20gaGVhZGluZyBkaXJlY3RseSB0byB0aGUgc291cmNlIGNvZGUg4oCTIHNwZWNpZmljYWxseSwgYGZzL2V4dDQvaW5vZGUuY2AuIFRoYXQncyB3aGVyZSBJJ2QgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgZGVjaXNpb24tbWFraW5nIGZvciBEQVggZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGBleHQ0YCBmaWxlc3lzdGVtLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBgZXh0NF9zaG91bGRfZW5hYmxlX2RheGAgZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gKnNob3VsZCogZW5jYXBzdWxhdGUgYWxsIHRoZSByZWxldmFudCBjaGVja3Mg4oCTIHdoZXRoZXIgdGhlIHVuZGVybHlpbmcgc3RvcmFnZSBzdXBwb3J0cyBpdCwgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgY29uZmlndXJlZCBhcHByb3ByaWF0ZWx5LCBhbmQgcG90ZW50aWFsbHkgYW55IGlub2RlLXNwZWNpZmljIGNvbnNpZGVyYXRpb25zIHRoYXQgbWlnaHQgaW5mbHVlbmNlIERBWCBlbmFibGVtZW50LiBMZXQncyBzZWUgd2hhdCB0aGUgaW1wbGVtZW50YXRpb24gaXMgYW5kIHdoYXQgY29uc2lkZXJhdGlvbnMgaXQgdGFrZXMgaW50byBhY2NvdW50LiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGFueSBwb3RlbnRpYWwgZWRnZSBjYXNlcyBvciBzdWJ0bGV0aWVzIHRoYXQgbWlnaHQgYmUgcHJlc2VudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA0OCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDEzOjMwOjQxLjg0ODc4NTUwOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MjA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9leHQ0L2lub2RlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTA4MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNTA4MDpcXHRcXG41MDgxOlxcdGludCBleHQ0X2dldF9mY19pbm9kZV9sb2Moc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8sXFxuNTA4MjpcXHRcXHRcXHRcXHQgIHN0cnVjdCBleHQ0X2lsb2MgKmlsb2MpXFxuNTA4MzpcXHR7XFxuNTA4NDpcXHRcXHRyZXR1cm4gX19leHQ0X2dldF9pbm9kZV9sb2Moc2IsIGlubywgTlVMTCwgaWxvYywgTlVMTCk7XFxuNTA4NTpcXHR9XFxuNTA4NjpcXHRcXG41MDg3OlxcdHN0YXRpYyBib29sIGV4dDRfc2hvdWxkX2VuYWJsZV9kYXgoc3RydWN0IGlub2RlICppbm9kZSlcXG41MDg4OlxcdHtcXG41MDg5OlxcdFxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0IoaW5vZGUtXFx1MDAzZWlfc2IpO1xcbjUwOTA6XFx0XFxuNTA5MTpcXHRcXHRpZiAodGVzdF9vcHQyKGlub2RlLVxcdTAwM2VpX3NiLCBEQVhfTkVWRVIpKVxcbjUwOTI6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbjUwOTM6XFx0XFx0aWYgKCFTX0lTUkVHKGlub2RlLVxcdTAwM2VpX21vZGUpKVxcbjUwOTQ6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbjUwOTU6XFx0XFx0aWYgKGV4dDRfc2hvdWxkX2pvdXJuYWxfZGF0YShpbm9kZSkpXFxuNTA5NjpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuNTA5NzpcXHRcXHRpZiAoZXh0NF9oYXNfaW5saW5lX2RhdGEoaW5vZGUpKVxcbjUwOTg6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbjUwOTk6XFx0XFx0aWYgKGV4dDRfdGVzdF9pbm9kZV9mbGFnKGlub2RlLCBFWFQ0X0lOT0RFX0VOQ1JZUFQpKVxcbjUxMDA6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbjUxMDE6XFx0XFx0aWYgKGV4dDRfdGVzdF9pbm9kZV9mbGFnKGlub2RlLCBFWFQ0X0lOT0RFX1ZFUklUWSkpXFxuNTEwMjpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuNTEwMzpcXHRcXHRpZiAoIXRlc3RfYml0KEVYVDRfRkxBR1NfQkRFVl9JU19EQVgsIFxcdTAwMjZzYmktXFx1MDAzZXNfZXh0NF9mbGFncykpXFxuNTEwNDpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuNTEwNTpcXHRcXHRpZiAodGVzdF9vcHQoaW5vZGUtXFx1MDAzZWlfc2IsIERBWF9BTFdBWVMpKVxcbjUxMDY6XFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuNTEwNzpcXHRcXG41MTA4OlxcdFxcdHJldHVybiBleHQ0X3Rlc3RfaW5vZGVfZmxhZyhpbm9kZSwgRVhUNF9JTk9ERV9EQVgpO1xcbjUxMDk6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMzozMDo0MS44NDkwMzkzOThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjM5Mjk5MjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCB3ZSBoYXZlIGhlcmUuXG5cbioqSW52ZXN0aWdhdGluZyBEQVggQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKlxuXG5BbHJpZ2h0LCBJJ20gdGFraW5nIGEgbG9vayBhdCB0aGlzIGNvZGUgYW5kIHNvbWV0aGluZydzIGltbWVkaWF0ZWx5IGp1bXBpbmcgb3V0LiBJdCBkb2Vzbid0IGFwcGVhciB0byBiZSBndWFyZGVkIGJ5IGEgYCNpZmRlZiBDT05GSUdfRlNfREFYYCBibG9jaywgd2hpY2ggaXMsIGdlbmVyYWxseSBzcGVha2luZywgcmVxdWlyZWQgZm9yIERBWCBmdW5jdGlvbmFsaXR5LiBOb3cgdGhhdCBzZWVtcyBvZGQuIEJ1dCBoYW5nIG9uLCBJIHNlZSB0aGUgdXNhZ2Ugb2YgYEVYVDRfRkxBR1NfQkRFVl9JU19EQVhgLiBIbW0uIEkgbmVlZCB0byBiZSBzdXJlLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBkb3VibGUtY2hlY2sgaWYgYENPTkZJR19GU19EQVhgIGlzIGFic29sdXRlbHkgbmVjZXNzYXJ5IGluIHRoaXMgY29udGV4dC4gVGhlcmUgaGFzIHRvIGJlIGEgcmVhc29uIHdoeSB0aGlzIHdhc24ndCBndWFyZGVkLiBMZXQncyBkaWcgaW4gYSBiaXQgZnVydGhlciB0byBzZWUgaG93IHRoaXMgYWxsIGNvbm5lY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODIzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMzozMDo0NS4wODgzNDE3MDlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2OTY3ODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19GU19EQVhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9leHQ0Lmg9MTA0OD1zdHJ1Y3QgZXh0NF9pbm9kZV9pbmZvIHtcXG4tLVxcbmZzL2V4dDQvZXh0NC5oLTEyNTgtI2RlZmluZSBFWFQ0X01PVU5UX05PTE9BRFxcdFxcdDB4MDAxMDBcXHQvKiBEb24ndCB1c2UgZXhpc3Rpbmcgam91cm5hbCovXFxuZnMvZXh0NC9leHQ0Lmg6MTI1OTojaWZkZWYgQ09ORklHX0ZTX0RBWFxcbmZzL2V4dDQvZXh0NC5oLTEyNjAtI2RlZmluZSBFWFQ0X01PVU5UX0RBWF9BTFdBWVNcXHRcXHQweDAwMjAwXFx0LyogRGlyZWN0IEFjY2VzcyAqL1xcbi0tXFxuZnMvZXh0NC9maWxlLmM9Njk9c3RhdGljIHNzaXplX3QgZXh0NF9kaW9fcmVhZF9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bylcXG4tLVxcbmZzL2V4dDQvZmlsZS5jLTEwMC1cXG5mcy9leHQ0L2ZpbGUuYzoxMDE6I2lmZGVmIENPTkZJR19GU19EQVhcXG5mcy9leHQ0L2ZpbGUuYy0xMDItc3RhdGljIHNzaXplX3QgZXh0NF9kYXhfcmVhZF9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bylcXG4tLVxcbmZzL2V4dDQvZmlsZS5jPTEzMD1zdGF0aWMgc3NpemVfdCBleHQ0X2ZpbGVfcmVhZF9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bylcXG4tLVxcbmZzL2V4dDQvZmlsZS5jLTEzOS1cXG5mcy9leHQ0L2ZpbGUuYzoxNDA6I2lmZGVmIENPTkZJR19GU19EQVhcXG5mcy9leHQ0L2ZpbGUuYy0xNDEtXFx0aWYgKElTX0RBWChpbm9kZSkpXFxuLS1cXG5mcy9leHQ0L2ZpbGUuYz01MTk9c3RhdGljIHNzaXplX3QgZXh0NF9kaW9fd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcXG4tLVxcbmZzL2V4dDQvZmlsZS5jLTY0OC1cXG5mcy9leHQ0L2ZpbGUuYzo2NDk6I2lmZGVmIENPTkZJR19GU19EQVhcXG5mcy9leHQ0L2ZpbGUuYy02NTAtc3RhdGljIHNzaXplX3RcXG4tLVxcbmZzL2V4dDQvZmlsZS5jPTcwNj1leHQ0X2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcXG4tLVxcbmZzL2V4dDQvZmlsZS5jLTcxNC1cXG5mcy9leHQ0L2ZpbGUuYzo3MTU6I2lmZGVmIENPTkZJR19GU19EQVhcXG5mcy9leHQ0L2ZpbGUuYy03MTYtXFx0aWYgKElTX0RBWChpbm9kZSkpXFxuLS1cXG5mcy9leHQ0L2ZpbGUuYy03MzctXFxuZnMvZXh0NC9maWxlLmM6NzM4OiNpZmRlZiBDT05GSUdfRlNfREFYXFxuZnMvZXh0NC9maWxlLmMtNzM5LXN0YXRpYyB2bV9mYXVsdF90IGV4dDRfZGF4X2h1Z2VfZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHVuc2lnbmVkIGludCBvcmRlcilcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0yMTcxPXN0YXRpYyBpbnQgZXh0NF9wYXJzZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBmc19wYXJhbWV0ZXIgKnBhcmFtKVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTIzNzItXFx0Y2FzZSBPcHRfZGF4X3R5cGU6XFxuZnMvZXh0NC9zdXBlci5jOjIzNzM6I2lmZGVmIENPTkZJR19GU19EQVhcXG5mcy9leHQ0L3N1cGVyLmMtMjM3NC1cXHR7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDEzOjMwOjQ1LjE0NTMyMTI1NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjA1NTU0Mjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIERBWCBhbmQgRW5jcnlwdGlvbioqXG5cbk9rYXksIHNvIHRvIGdldCBEQVggd29ya2luZyBwcm9wZXJseSwgSSBkZWZpbml0ZWx5IG5lZWQgYENPTkZJR19GU19EQVhgIGVuYWJsZWQuIE1ha2VzIHNlbnNlLiBBbmQgc2luY2UgSSdtIGxvb2tpbmcgYXQgZmlsZSBzeXN0ZW0gZW5jcnlwdGlvbiwgZW5hYmxpbmcgYEZTX0VOQ1JZUFRJT05gIGFsb25nc2lkZSBgRlNfREFYYCBzZWVtcyBsaWtlIGEgZ29vZCBtb3ZlLiBTb2xpZCBmb3VuZGF0aW9uLlxuXG5Ob3csIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGV4dDRfc2V0X2NvbnRleHRgIGFuZCBgZXh0NF9zZXRfaW5vZGVfZmxhZ3NgLiBJJ2xsIHNldCBteSBcIkZvY3VzU3ltYm9sc1wiIHRvIHRob3NlIGZ1bmN0aW9ucywgdGhvc2UgYXJlIHRoZSBrZXkgYXJlYXMgdG8gdW5kZXJzdGFuZC4gYGV4dDRfc2V0X2lub2RlX2ZsYWdzYCBpcyB1c2VkIHF1aXRlIGEgYml0IOKAkyBpdCdzIGV2ZXJ5d2hlcmUsIGl0IHNlZW1zIOKAkyBidXQgaXQncyBub3QgYSAqYmxhemluZyogaG90IHBhdGguIEl0IGNvbWVzIGludG8gcGxheSB3aGVuIGlub2RlIGZsYWdzIGdldCBhbHRlcmVkIG9yIGR1cmluZyBpbm9kZSBpbml0aWFsaXphdGlvbiwgc28gdGhlIGZyZXF1ZW5jeSBpcyBtb2RlcmF0ZS4gSSBjYW4gd29yayB3aXRoIHRoYXQuXG5cbmBleHQ0X3NldF9jb250ZXh0YCwgb24gdGhlIG90aGVyIGhhbmQsIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGFjdHVhbGx5IHNldHMgdGhlIGVuY3J5cHRpb24gY29udGV4dC4gVGhhdCdzIGEgY3JpdGljYWwgcGllY2UgZm9yIHRoaXMgcGF0Y2ggYW5kIGRlZmluaXRlbHkgZGVzZXJ2ZXMgYSBjbG9zZXIgbG9vay5cblxuSnVzdCB0byBiZSBzYWZlLCBJJ20gZ29pbmcgdG8gcnVuIGEgcXVpY2sgZG91YmxlLWNoZWNrIG9uIGBleHQ0X3NldF9pbm9kZV9mbGFnc2AgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbCBpbiB0ZXJtcyBvZiBwZXJmb3JtYW5jZSBpbXBhY3QuIEl0J3MgYSBnb29kIGhhYml0IHRvIHZlcmlmeSB0aG9zZSBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg0OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMzozMDo0OS4zNTA4Nzc4ODFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDY1MDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dDRfc2V0X2lub2RlX2ZsYWdzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvY3J5cHRvLmM9MTMyPXN0YXRpYyBpbnQgZXh0NF9zZXRfY29udGV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICpjdHgsIHNpemVfdCBsZW4sXFxuLS1cXG5mcy9leHQ0L2NyeXB0by5jLTE5MS1cXHRcXHRcXHQgKi9cXG5mcy9leHQ0L2NyeXB0by5jOjE5MjpcXHRcXHRcXHRleHQ0X3NldF9pbm9kZV9mbGFncyhpbm9kZSwgaW5pdCk7XFxuZnMvZXh0NC9jcnlwdG8uYy0xOTMtXFx0XFx0fVxcbi0tXFxuZnMvZXh0NC9jcnlwdG8uYy0yMTgtXFx0XFx0ICovXFxuZnMvZXh0NC9jcnlwdG8uYzoyMTk6XFx0XFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGluaXQpO1xcbmZzL2V4dDQvY3J5cHRvLmMtMjIwLVxcdFxcdHJlcyA9IGV4dDRfbWFya19pbm9kZV9kaXJ0eShoYW5kbGUsIGlub2RlKTtcXG4tLVxcbmZzL2V4dDQvZXh0NC5oPTMxNzk9ZXh0ZXJuIGludCBleHQ0X3B1bmNoX2hvbGUoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgpO1xcbmZzL2V4dDQvZXh0NC5oOjMxODA6ZXh0ZXJuIHZvaWQgZXh0NF9zZXRfaW5vZGVfZmxhZ3Moc3RydWN0IGlub2RlICosIGJvb2wgaW5pdCk7XFxuZnMvZXh0NC9leHQ0LmgtMzE4MS1leHRlcm4gaW50IGV4dDRfYWxsb2NfZGFfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUpO1xcbi0tXFxuZnMvZXh0NC9pYWxsb2MuYz05MzM9c3RydWN0IGlub2RlICpfX2V4dDRfbmV3X2lub2RlKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxcbi0tXFxuZnMvZXh0NC9pYWxsb2MuYy0xMjc2LVxcbmZzL2V4dDQvaWFsbG9jLmM6MTI3NzpcXHRleHQ0X3NldF9pbm9kZV9mbGFncyhpbm9kZSwgdHJ1ZSk7XFxuZnMvZXh0NC9pYWxsb2MuYy0xMjc4LVxcdGlmIChJU19ESVJTWU5DKGlub2RlKSlcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYz01MDg3PXN0YXRpYyBib29sIGV4dDRfc2hvdWxkX2VuYWJsZV9kYXgoc3RydWN0IGlub2RlICppbm9kZSlcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy01MTEwLVxcbmZzL2V4dDQvaW5vZGUuYzo1MTExOnZvaWQgZXh0NF9zZXRfaW5vZGVfZmxhZ3Moc3RydWN0IGlub2RlICppbm9kZSwgYm9vbCBpbml0KVxcbmZzL2V4dDQvaW5vZGUuYy01MTEyLXtcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYz01Mjc1PXN0cnVjdCBpbm9kZSAqX19leHQ0X2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8sXFxuLS1cXG5mcy9leHQ0L2lub2RlLmMtNTQxMi1cXHRlaS1cXHUwMDNlaV9mbGFncyA9IGxlMzJfdG9fY3B1KHJhd19pbm9kZS1cXHUwMDNlaV9mbGFncyk7XFxuZnMvZXh0NC9pbm9kZS5jOjU0MTM6XFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIHRydWUpO1xcbmZzL2V4dDQvaW5vZGUuYy01NDE0LVxcdC8qIERldGVjdCBpbnZhbGlkIGZsYWcgY29tYmluYXRpb24gLSBjYW4ndCBoYXZlIGJvdGggaW5saW5lIGRhdGEgYW5kIGV4dGVudHMgKi9cXG4tLVxcbmZzL2V4dDQvaW9jdGwuYz01OTA9c3RhdGljIGludCBleHQ0X2lvY3RsX3NldGZsYWdzKHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9leHQ0L2lvY3RsLmMtNjc3LVxcbmZzL2V4dDQvaW9jdGwuYzo2Nzg6XFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGZhbHNlKTtcXG5mcy9leHQ0L2lvY3RsLmMtNjc5LVxcbi0tXFxuZnMvZXh0NC92ZXJpdHkuYz0xOTE9c3RhdGljIGludCBleHQ0X2VuZF9lbmFibGVfdmVyaXR5KHN0cnVjdCBmaWxlICpmaWxwLCBjb25zdCB2b2lkICpkZXNjLFxcbi0tXFxuZnMvZXh0NC92ZXJpdHkuYy0yNDQtXFx0ZXh0NF9zZXRfaW5vZGVfZmxhZyhpbm9kZSwgRVhUNF9JTk9ERV9WRVJJVFkpO1xcbmZzL2V4dDQvdmVyaXR5LmM6MjQ1OlxcdGV4dDRfc2V0X2lub2RlX2ZsYWdzKGlub2RlLCBmYWxzZSk7XFxuZnMvZXh0NC92ZXJpdHkuYy0yNDYtXFx0ZXJyID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgXFx1MDAyNmlsb2MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMzozMDo0OS40MDgzNDkwMDlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc4MDU4OTI4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVGFyZ2V0IEZ1bmN0aW9ucyBmb3IgRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBjb25zaWRlciBgZXh0NF9zZXRfaW5vZGVfZmxhZ3NgIGJlY2F1c2UgaXQncyBjYWxsZWQgaW4gc2V2ZXJhbCBwbGFjZXM6IGBfX2V4dDRfbmV3X2lub2RlYCwgYF9fZXh0NF9pZ2V0YCwgYGV4dDRfaW9jdGxfc2V0ZmxhZ3NgLCBgZXh0NF9lbmRfZW5hYmxlX3Zlcml0eWAsIGFuZCBgZXh0NF9zZXRfY29udGV4dGAuIEl0J3Mgbm90IGEgY29yZSByZWFkL3dyaXRlIHBhdGgsIGJ1dCBpdCAqaXMqIGludm9sdmVkIGluIGV2ZXJ5IGlub2RlJ3MgbGlmZWN5Y2xlIOKAkyBjcmVhdGlvbiBvciBsb2FkaW5nLiBIb3dldmVyLCB0aGUgdXNlIG9mIGBfX2V4dDRfaWdldGAgZHVyaW5nIGRpc2sgcmVhZHMgaW50cm9kdWNlcyBhIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBjb25jZXJuLCB0aG91Z2ggaXQncyBzdGlsbCBhY2NlcHRhYmxlIGZvciBmdXp6aW5nIHNpbmNlIGl0J3Mgbm93aGVyZSBuZWFyIGFzIHBlcmZvcm1hbmNlLWNyaXRpY2FsIGFzIGBleHQ0X2ZpbGVfcmVhZF9pdGVyYC5cblxuQnV0LCB3YWl0Li4uIGBleHQ0X3NldF9jb250ZXh0YCBzZWVtcyBtdWNoIG1vcmUgZGlyZWN0bHkgbGlua2VkIHRvIHRoZSBwYXRjaGVkIGNvZGUuIFNpbmNlIHRoZSBtb2RpZmljYXRpb25zIGFyZSBmb2N1c2VkIG9uIHRoaXMgZnVuY3Rpb24sIGZvY3VzaW5nIHRoZSBmdXp6aW5nIGhlcmUgc2VlbXMgc3RyYXRlZ2ljYWxseSBzb3VuZC4gVGhlcmVmb3JlLCBJIHNob3VsZCBleHBsaWNpdGx5IGluY2x1ZGUgYGV4dDRfc2V0X2NvbnRleHRgIGFsb25nIHdpdGggYGV4dDRfc2V0X2lub2RlX2ZsYWdzYC5cblxuQWxyaWdodCwgYSBxdWljayByZXZpZXcgb2YgdGhlIGNvZGUgY29uZmlybWVkIHRoYXQgYGV4dDRfc2V0X2NvbnRleHRgIGFuZCBgZXh0NF9zZXRfaW5vZGVfZmxhZ3NgIGFyZSAqZXhhY3RseSogdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBtb2RpZmllZCBpbiB0aGUgcGF0Y2guIFRoYXQgc2ltcGxpZmllcyB0aGUgdGFyZ2V0aW5nLlxuXG5Ob3csIGxldCdzIHJldmlzaXQgdGhlIGNvbmZpZ3VyYXRpb24gY29uc2lkZXJhdGlvbnMuIEkgcmVjYWxsIGBGU19FTkNSWVBUSU9OYCBhbmQgYEZTX0RBWGAgYmVpbmcgcmVsZXZhbnQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24ndCBvdmVybG9vayBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlncy4gQWgsIHJpZ2h0ISBgQ09ORklHX0VYVDRfRlNfRU5DUllQVElPTmAgd2FzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgYENPTkZJR19GU19FTkNSWVBUSU9OYC4gVGhhdCdzIGltcG9ydGFudCB0byByZW1lbWJlci4gSSdsbCBkb3VibGUtY2hlY2sgdGhhdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjA2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDEzOjMwOjU1LjE4ODk0MDYxNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5MDgzMjQ1NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhUNF9GU19FTkNSWVBUSU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTM6MzA6NTcuNDc5NzgxOTYxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDg0ODg3NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBGaWxlc3lzdGVtIEVuY3J5cHRpb24gYW5kIERBWCBPcHRpb25zKipcblxuQWxyaWdodCwgdGhhdCBjb25maXJtYXRpb24gY2xpY2tzIGluOiB3ZSdyZSBkZWFsaW5nIHdpdGggYEZTX0VOQ1JZUFRJT05gLiBOb3csIHRoZSBjcnVjaWFsIHBhcnQgaXMgZmlndXJpbmcgb3V0IHRoZSBvcHRpbWFsIERBWCBjb25maWd1cmF0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBpZiBgRlNfREFYYCBieSBpdHNlbGYgaXMgZW5vdWdoIHRvIGNvdmVyIHRoZSByZXF1aXJlbWVudHMgaGVyZS4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhlIHVuZGVybHlpbmcgc3RvcmFnZSBhbmQgd29ya2xvYWRzIHRvIGJlIHN1cmUuIEl0IG1pZ2h0IGJlIHN1ZmZpY2llbnQgZm9yIHNvbWUgdXNlIGNhc2VzLCBzbyBsZXQncyBub3QganVtcCB0aGUgZ3VuIGFuZCBpbW1lZGlhdGVseSBvdmVyLWVuZ2luZWVyLlxuXG5JZiB0aGF0IHByb3ZlcyBpbnN1ZmZpY2llbnQsIHRoZW4gYSBkZWVwZXIgZGl2ZSBpbnRvIHRydWUgYERBWGAgbWlnaHQgYmUgbmVjZXNzYXJ5LiBCdXQgaG9sZCBvbi4uLiBqdXN0IGEgbW9tZW50LCBteSBtZW50YWwgbW9kZWwgcmVtaW5kcyBtZSBleHQ0IGRvZXNuJ3QgaGF2ZSBhIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb24gZm9yIGBFWFQ0X0ZTX0RBWGAuIEl0IHVzZXMgdGhlIG1haW4gYERBWGAgY29uZmlndXJhdGlvbi4gU28gSSBuZWVkIHRvIGtlZXAgdGhhdCBkaXN0aW5jdGlvbiBpbiBtaW5kIGFzIEkgYXNzZXNzIHRoZSBiZXN0IGltcGxlbWVudGF0aW9uLiBHb3R0YSByZW1lbWJlciB0aGUgbnVhbmNlcyBvZiB0aGUgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbiBiZWZvcmUgSSBnbyBtYWtpbmcgYW55IGRlc2lnbiBkZWNpc2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5MzMsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMzozMTowMS4yMjgyNzM5OTNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTEzMTM0MjAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYVDRfRlNfREFYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTM6MzE6MDMuMTE5NjAwMTAzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNzQ1Njk2NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBleHQ0IERBWCBCdWcgRml4KipcblxuT2theSwgc28gYEZTX0RBWGAgaXMgY29uZmlybWVkIGFzIHJlbGV2YW50IGhlcmUuIExldCdzIGJyZWFrIGRvd24gd2hhdCB3ZSBoYXZlLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGNyaXRpY2FsIGZpeCDigJMgYFdvcnRoRnV6emluZzogdHJ1ZWAgc3VnZ2VzdHMgdGhpcyBpcyBhIGhpZ2gtaW1wYWN0IGNoYW5nZS4gVGhlIHJlYXNvbmluZyBjb25maXJtcyB0aGF0IHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgbmFzdHkgYnVnOiBEQVggZmxhZ3MgcGVyc2lzdGluZyBpbmNvcnJlY3RseSB3aGVuIGVuY3J5cHRpb24gaXMgZW5hYmxlZCwgd2hpY2ggY2FuIGxlYWQgdG8gd3JpdGVzIGJ5cGFzc2luZyB0aGUgaW50ZW5kZWQgZW5jcnlwdGlvbi4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGV4dDQgZmlsZXN5c3RlbSwgZGlyZWN0bHkgaW1wYWN0aW5nIGRhdGEgaW50ZWdyaXR5IGFuZCBzZWN1cml0eSwgc28gd2UgbmVlZCB0byBiZSBvbiB0b3Agb2YgdGhpcy5cblxuVGhlIGtleSBmdW5jdGlvbnMgdG8gc2NydXRpbml6ZSBhcmUgYGV4dDRfc2V0X2NvbnRleHRgIGFuZCBgZXh0NF9zZXRfaW5vZGVfZmxhZ3NgLiBJJ2xsIHdhbnQgdG8gY2hlY2sgaG93IHRoZXkgaW50ZXJhY3QsIGFuZCBob3cgdGhlIERBWCBmbGFnIGlzIG1hbmlwdWxhdGVkIHdpdGhpbiB0aGVtLCBlc3BlY2lhbGx5IGluIHRoZSBjb250ZXh0IG9mIGVuY3J5cHRpb24uIEl0IG1ha2VzIHNlbnNlIHRoYXQgYEZTX0VOQ1JZUFRJT05gIGFuZCBgRlNfREFYYCBhcmUgdGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb25zIGhlcmUuIFRpbWUgdG8gZGl2ZSBpbnRvIGBmcy9leHQ0L2NyeXB0by5jYCBhbmQgdGFrZSBhIGxvb2sgYXQgYGV4dDRfc2V0X2NvbnRleHRgLiBMZXQncyBzZWUgaG93IHRoZXkgZml4ZWQgdGhpcyBwb3RlbnRpYWxseSBkYW5nZXJvdXMgb3ZlcnNpZ2h0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjUxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDEzOjMxOjA3LjM5NDE3MjI4NVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9leHQ0L2NyeXB0by5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEzMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEzMDpcXHR9XFxuIDEzMTpcXHRcXG4gMTMyOlxcdHN0YXRpYyBpbnQgZXh0NF9zZXRfY29udGV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICpjdHgsIHNpemVfdCBsZW4sXFxuIDEzMzpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR2b2lkICpmc19kYXRhKVxcbiAxMzQ6XFx0e1xcbiAxMzU6XFx0XFx0aGFuZGxlX3QgKmhhbmRsZSA9IGZzX2RhdGE7XFxuIDEzNjpcXHRcXHRpbnQgcmVzLCByZXMyLCBjcmVkaXRzLCByZXRyaWVzID0gMDtcXG4gMTM3OlxcdFxcdGJvb2wgaW5pdCA9IFNfSVNSRUcoaW5vZGUtXFx1MDAzZWlfbW9kZSk7XFxuIDEzODpcXHRcXG4gMTM5OlxcdFxcdC8qXFxuIDE0MDpcXHRcXHQgKiBFbmNyeXB0aW5nIHRoZSByb290IGRpcmVjdG9yeSBpcyBub3QgYWxsb3dlZCBiZWNhdXNlIGUyZnNjayBleHBlY3RzXFxuIDE0MTpcXHRcXHQgKiBsb3N0K2ZvdW5kIHRvIGV4aXN0IGFuZCBiZSB1bmVuY3J5cHRlZCwgYW5kIGVuY3J5cHRpbmcgdGhlIHJvb3RcXG4gMTQyOlxcdFxcdCAqIGRpcmVjdG9yeSB3b3VsZCBpbXBseSBlbmNyeXB0aW5nIHRoZSBsb3N0K2ZvdW5kIGRpcmVjdG9yeSBhcyB3ZWxsIGFzXFxuIDE0MzpcXHRcXHQgKiB0aGUgZmlsZW5hbWUgXFxcImxvc3QrZm91bmRcXFwiIGl0c2VsZi5cXG4gMTQ0OlxcdFxcdCAqL1xcbiAxNDU6XFx0XFx0aWYgKGlub2RlLVxcdTAwM2VpX2lubyA9PSBFWFQ0X1JPT1RfSU5PKVxcbiAxNDY6XFx0XFx0XFx0cmV0dXJuIC1FUEVSTTtcXG4gMTQ3OlxcdFxcbiAxNDg6XFx0XFx0aWYgKFdBUk5fT05fT05DRShJU19EQVgoaW5vZGUpIFxcdTAwMjZcXHUwMDI2IGlfc2l6ZV9yZWFkKGlub2RlKSkpXFxuIDE0OTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTM6MzE6MDcuMzk0MjYyODA1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzODU3OTA5NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uZmlndXJhdGlvbiBWZXJpZmljYXRpb24gYW5kIFNlbGVjdGlvbioqXG5cbk9rYXksIHRoaXMgc2VlbXMgcmlnaHQsIHRoYXQncyBhIGdvb2Qgc3RhcnQuIEJ1dCBiZWZvcmUgSSBsb2NrIHRoaXMgaW4sIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGx1cmtpbmcgaW4gdGhlIHNoYWRvd3MuIFRoZSBvYnZpb3VzIG9uZSwgYENPTkZJR19FWFQ0X0ZTYCwgaXMgYWxyZWFkeSBjbGVhci4gSSBzZWUgYGZzL2V4dDQvY3J5cHRvLmNgIGlzIGJlaW5nIHVzZWQsIHNvIGBDT05GSUdfRlNfRU5DUllQVElPTmAgaXMgZGVmaW5pdGVseSBhIHJlcXVpcmVtZW50LiBBbmQgSSBzcG90IHRoZSBuZWVkIGZvciBgSVNfREFYYCBhbmQgdGhlIGBleHQ0X3Nob3VsZF9lbmFibGVfZGF4YCBsb2dpYywgc28gdGhhdCBtZWFucyBgQ09ORklHX0ZTX0RBWGAgaXMgYWxzbyBlc3NlbnRpYWwuIEFscmlnaHQsIHllcywgSSdsbCBkZWZpbml0ZWx5IGluY29ycG9yYXRlIGJvdGggYEZTX0VOQ1JZUFRJT05gIGFuZCBgRlNfREFYYCBpbiB0aGUgY29uZmlndXJhdGlvbi4gTm93LCBsZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwMDEsIk91dHB1dFRva2VucyI6MTEyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTM6MzE6MTEuNzgwMDU2NDEzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg1MTQ2NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZTX0VOQ1JZUFRJT05cIixcbiAgICBcIkZTX0RBWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfc2V0X2NvbnRleHRcIixcbiAgICBcImV4dDRfc2V0X2lub2RlX2ZsYWdzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIHRoZSBEQVggZmxhZyBvbiBleHQ0IGlub2RlcyB3aGVuIGVuY3J5cHRpb24gaXMgZW5hYmxlZCwgZml4aW5nIGEgYnVnIHdoZXJlIHRoZSBEQVggZmxhZyBjb3VsZCBsaW5nZXIgYW5kIGNhdXNlIHdyaXRlcyB0byBieXBhc3MgZW5jcnlwdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRlNfRU5DUllQVElPTlwiLFxuICAgIFwiRlNfREFYXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9zZXRfY29udGV4dFwiLFxuICAgIFwiZXh0NF9zZXRfaW5vZGVfZmxhZ3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNldHRpbmcgdGhlIERBWCBmbGFnIG9uIGV4dDQgaW5vZGVzIHdoZW4gZW5jcnlwdGlvbiBpcyBlbmFibGVkLCBmaXhpbmcgYSBidWcgd2hlcmUgdGhlIERBWCBmbGFnIGNvdWxkIGxpbmdlciBhbmQgY2F1c2Ugd3JpdGVzIHRvIGJ5cGFzcyBlbmNyeXB0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGV4dDQgZmlsZXN5c3RlbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2562[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-24 12:54:28 +0000 UTC FinishedAt: 2026-07-24 13:31:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "48a5a7ab8d6ab7090564339e039c421f315de912", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FS_ENCRYPTION", "FS_DAX" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "48a5a7ab8d6ab7090564339e039c421f315de912", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FS_ENCRYPTION", "FS_DAX" ], "series_id": "374e2824-a1ba-4cc5-94c2-162ca040a07a" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_set_context", "ext4_set_inode_flags" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDEzOjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZTX0VOQ1JZUFRJT04mIzM0OywKICAgICYjMzQ7RlNfREFYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9zZXRfY29udGV4dCYjMzQ7LAogICAgJiMzNDtleHQ0X3NldF9pbm9kZV9mbGFncyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNldHRpbmcgdGhlIERBWCBmbGFnIG9uIGV4dDQgaW5vZGVzIHdoZW4gZW5jcnlwdGlvbiBpcyBlbmFibGVkLCBmaXhpbmcgYSBidWcgd2hlcmUgdGhlIERBWCBmbGFnIGNvdWxkIGxpbmdlciBhbmQgY2F1c2Ugd3JpdGVzIHRvIGJ5cGFzcyBlbmNyeXB0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGV4dDQgZmlsZXN5c3RlbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMzozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGI2MjRiYmFiMDAxMThhMzdiNDg3ZGEzZGQxMTViYmY4OGVlZjkzNTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAxMzozMDoyNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leHQ0L2NyeXB0by5jIGIvZnMvZXh0NC9jcnlwdG8uY1xuaW5kZXggZjQxZjMyMGY0NDM3YjkuLjJkNDA5MTE0ZTAyZTdmIDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9jcnlwdG8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9jcnlwdG8uY1xuQEAgLTEzNCw2ICYjNDM7MTM0LDcgQEAgc3RhdGljIGludCBleHQ0X3NldF9jb250ZXh0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKmN0eCwgc2l6ZV90IGxlbixcbiB7XG4gXHRoYW5kbGVfdCAqaGFuZGxlID0gZnNfZGF0YTtcbiBcdGludCByZXMsIHJlczIsIGNyZWRpdHMsIHJldHJpZXMgPSAwO1xuJiM0MztcdGJvb2wgaW5pdCA9IFNfSVNSRUcoaW5vZGUtXHUwMDNlaV9tb2RlKTtcbiBcbiBcdC8qXG4gXHQgKiBFbmNyeXB0aW5nIHRoZSByb290IGRpcmVjdG9yeSBpcyBub3QgYWxsb3dlZCBiZWNhdXNlIGUyZnNjayBleHBlY3RzXG5AQCAtMTc5LDEwICYjNDM7MTgwLDE2IEBAIHN0YXRpYyBpbnQgZXh0NF9zZXRfY29udGV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICpjdHgsIHNpemVfdCBsZW4sXG4gXHRcdFx0ZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSxcbiBcdFx0XHRcdFx0RVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpO1xuIFx0XHRcdC8qXG4tXHRcdFx0ICogVXBkYXRlIGlub2RlLVx1MDAzZWlfZmxhZ3MgLSBTX0VOQ1JZUFRFRCB3aWxsIGJlIGVuYWJsZWQsXG4tXHRcdFx0ICogU19EQVggbWF5IGJlIGRpc2FibGVkXG4mIzQzO1x0XHRcdCAqIFVwZGF0ZSBpbm9kZS1cdTAwM2VpX2ZsYWdzLCBTX0VOQ1JZUFRFRCB3aWxsIGJlIGVuYWJsZWQuXG4mIzQzO1x0XHRcdCAqIElmIHRoaXMgaXMgYSByZWd1bGFyIGlub2RlLCB0aGVuIHdlIG11c3QgYmUgY29taW5nXG4mIzQzO1x0XHRcdCAqIHZpYSBfX2V4dDRfbmV3X2lub2RlKCkgYXMgb25seSBuZXcgaW5vZGVzIGNhbiBiZVxuJiM0MztcdFx0XHQgKiBlbmNyeXB0ZWQsIHNvIHdlIG11c3Qgc2V0IHRoZSBpbml0IGZsYWcgc29cbiYjNDM7XHRcdFx0ICogU19EQVggY2FuIGJlIGRpc2FibGVkLiBUaGlzIGlzIGEgYml0IGZyYWdpbGUgYnV0XG4mIzQzO1x0XHRcdCAqIHNlZW1zIGxpa2UgdGhlIGVhc2llc3Qgd2F5IHRvIG1ha2Ugc3VyZSB3ZSBkb24mIzM5O3QgbGV0XG4mIzQzO1x0XHRcdCAqIHRoZSBEQVggZmxhZyBsaW5nZXIgd2hlbiBlbmNyeXB0aW9uIGlzIGVuYWJsZWQgYXNcbiYjNDM7XHRcdFx0ICogdGhhdCByZXN1bHQgaW4gd3JpdGVzIHNpbGVudGx5IGJ5cGFzc2luZyBlbmNyeXB0aW9uLlxuIFx0XHRcdCAqL1xuLVx0XHRcdGV4dDRfc2V0X2lub2RlX2ZsYWdzKGlub2RlLCBmYWxzZSk7XG4mIzQzO1x0XHRcdGV4dDRfc2V0X2lub2RlX2ZsYWdzKGlub2RlLCBpbml0KTtcbiBcdFx0fVxuIFx0XHRyZXR1cm4gcmVzO1xuIFx0fVxuQEAgLTIwOSw3ICYjNDM7MjE2LDcgQEAgc3RhdGljIGludCBleHQ0X3NldF9jb250ZXh0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKmN0eCwgc2l6ZV90IGxlbixcbiBcdFx0ICogVXBkYXRlIGlub2RlLVx1MDAzZWlfZmxhZ3MgLSBTX0VOQ1JZUFRFRCB3aWxsIGJlIGVuYWJsZWQsXG4gXHRcdCAqIFNfREFYIG1heSBiZSBkaXNhYmxlZFxuIFx0XHQgKi9cbi1cdFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGZhbHNlKTtcbiYjNDM7XHRcdGV4dDRfc2V0X2lub2RlX2ZsYWdzKGlub2RlLCBpbml0KTtcbiBcdFx0cmVzID0gZXh0NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZSwgaW5vZGUpO1xuIFx0XHRpZiAocmVzKVxuIFx0XHRcdEVYVDRfRVJST1JfSU5PREUoaW5vZGUsIFwmIzM0O0ZhaWxlZCB0byBtYXJrIGlub2RlIGRpcnR5XCYjMzQ7KTtcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmNcbmluZGV4IGNlOTk4MDdjNWY1YjJjLi5hNTcxNzk2NTUzNTNhZiAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvaW5vZGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9pbm9kZS5jXG5AQCAtNTExMyw4ICYjNDM7NTExMyw2IEBAIHZvaWQgZXh0NF9zZXRfaW5vZGVfZmxhZ3Moc3RydWN0IGlub2RlICppbm9kZSwgYm9vbCBpbml0KVxuIFx0dW5zaWduZWQgaW50IGZsYWdzID0gRVhUNF9JKGlub2RlKS1cdTAwM2VpX2ZsYWdzO1xuIFx0dW5zaWduZWQgaW50IG5ld19mbCA9IDA7XG4gXG4tXHRXQVJOX09OX09OQ0UoSVNfREFYKGlub2RlKSBcdTAwMjZcdTAwMjYgaW5pdCk7XG4tXG4gXHRpZiAoZmxhZ3MgXHUwMDI2IEVYVDRfU1lOQ19GTClcbiBcdFx0bmV3X2ZsIHw9IFNfU1lOQztcbiBcdGlmIChmbGFncyBcdTAwMjYgRVhUNF9BUFBFTkRfRkwpXG5AQCAtNTEyOSw4ICYjNDM7NTEyNywxMiBAQCB2b2lkIGV4dDRfc2V0X2lub2RlX2ZsYWdzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGJvb2wgaW5pdClcbiBcdC8qIEJlY2F1c2Ugb2YgdGhlIHdheSBpbm9kZV9zZXRfZmxhZ3MoKSB3b3JrcyB3ZSBtdXN0IHByZXNlcnZlIFNfREFYXG4gXHQgKiBoZXJlIGlmIGFscmVhZHkgc2V0LiAqL1xuIFx0bmV3X2ZsIHw9IChpbm9kZS1cdTAwM2VpX2ZsYWdzIFx1MDAyNiBTX0RBWCk7XG4tXHRpZiAoaW5pdCBcdTAwMjZcdTAwMjYgZXh0NF9zaG91bGRfZW5hYmxlX2RheChpbm9kZSkpXG4tXHRcdG5ld19mbCB8PSBTX0RBWDtcbiYjNDM7XHRpZiAoaW5pdCkge1xuJiM0MztcdFx0aWYgKGV4dDRfc2hvdWxkX2VuYWJsZV9kYXgoaW5vZGUpKVxuJiM0MztcdFx0XHRuZXdfZmwgfD0gU19EQVg7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdG5ld19mbCBcdTAwMjY9IH5TX0RBWDtcbiYjNDM7XHR9XG4gXG4gXHRpZiAoZmxhZ3MgXHUwMDI2IEVYVDRfRU5DUllQVF9GTClcbiBcdFx0bmV3X2ZsIHw9IFNfRU5DUllQVEVEO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDEzOjMwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGU19FTkNSWVBUSU9OJiMzNDssCiAgICAmIzM0O0ZTX0RBWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfc2V0X2NvbnRleHQmIzM0OywKICAgICYjMzQ7ZXh0NF9zZXRfaW5vZGVfZmxhZ3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIHRoZSBEQVggZmxhZyBvbiBleHQ0IGlub2RlcyB3aGVuIGVuY3J5cHRpb24gaXMgZW5hYmxlZCwgZml4aW5nIGEgYnVnIHdoZXJlIHRoZSBEQVggZmxhZyBjb3VsZCBsaW5nZXIgYW5kIGNhdXNlIHdyaXRlcyB0byBieXBhc3MgZW5jcnlwdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI2MjRiYmFiMDAxMThhMzdiNDg3ZGEzZGQxMTViYmY4OGVlZjkzNTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAyNCAxMzozMDoyNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvY3J5cHRvLmMgYi9mcy9leHQ0L2NyeXB0by5jCmluZGV4IGY0MWYzMjBmNDQzN2I5Li4yZDQwOTExNGUwMmU3ZiAxMDA2NDQKLS0tIGEvZnMvZXh0NC9jcnlwdG8uYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L2NyeXB0by5jCkBAIC0xMzQsNiAmIzQzOzEzNCw3IEBAIHN0YXRpYyBpbnQgZXh0NF9zZXRfY29udGV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICpjdHgsIHNpemVfdCBsZW4sCiB7CiAJaGFuZGxlX3QgKmhhbmRsZSA9IGZzX2RhdGE7CiAJaW50IHJlcywgcmVzMiwgY3JlZGl0cywgcmV0cmllcyA9IDA7CiYjNDM7CWJvb2wgaW5pdCA9IFNfSVNSRUcoaW5vZGUtJmd0O2lfbW9kZSk7CiAKIAkvKgogCSAqIEVuY3J5cHRpbmcgdGhlIHJvb3QgZGlyZWN0b3J5IGlzIG5vdCBhbGxvd2VkIGJlY2F1c2UgZTJmc2NrIGV4cGVjdHMKQEAgLTE3OSwxMCAmIzQzOzE4MCwxNiBAQCBzdGF0aWMgaW50IGV4dDRfc2V0X2NvbnRleHQoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqY3R4LCBzaXplX3QgbGVuLAogCQkJZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSwKIAkJCQkJRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpOwogCQkJLyoKLQkJCSAqIFVwZGF0ZSBpbm9kZS0mZ3Q7aV9mbGFncyAtIFNfRU5DUllQVEVEIHdpbGwgYmUgZW5hYmxlZCwKLQkJCSAqIFNfREFYIG1heSBiZSBkaXNhYmxlZAomIzQzOwkJCSAqIFVwZGF0ZSBpbm9kZS0mZ3Q7aV9mbGFncywgU19FTkNSWVBURUQgd2lsbCBiZSBlbmFibGVkLgomIzQzOwkJCSAqIElmIHRoaXMgaXMgYSByZWd1bGFyIGlub2RlLCB0aGVuIHdlIG11c3QgYmUgY29taW5nCiYjNDM7CQkJICogdmlhIF9fZXh0NF9uZXdfaW5vZGUoKSBhcyBvbmx5IG5ldyBpbm9kZXMgY2FuIGJlCiYjNDM7CQkJICogZW5jcnlwdGVkLCBzbyB3ZSBtdXN0IHNldCB0aGUgaW5pdCBmbGFnIHNvCiYjNDM7CQkJICogU19EQVggY2FuIGJlIGRpc2FibGVkLiBUaGlzIGlzIGEgYml0IGZyYWdpbGUgYnV0CiYjNDM7CQkJICogc2VlbXMgbGlrZSB0aGUgZWFzaWVzdCB3YXkgdG8gbWFrZSBzdXJlIHdlIGRvbiYjMzk7dCBsZXQKJiM0MzsJCQkgKiB0aGUgREFYIGZsYWcgbGluZ2VyIHdoZW4gZW5jcnlwdGlvbiBpcyBlbmFibGVkIGFzCiYjNDM7CQkJICogdGhhdCByZXN1bHQgaW4gd3JpdGVzIHNpbGVudGx5IGJ5cGFzc2luZyBlbmNyeXB0aW9uLgogCQkJICovCi0JCQlleHQ0X3NldF9pbm9kZV9mbGFncyhpbm9kZSwgZmFsc2UpOwomIzQzOwkJCWV4dDRfc2V0X2lub2RlX2ZsYWdzKGlub2RlLCBpbml0KTsKIAkJfQogCQlyZXR1cm4gcmVzOwogCX0KQEAgLTIwOSw3ICYjNDM7MjE2LDcgQEAgc3RhdGljIGludCBleHQ0X3NldF9jb250ZXh0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKmN0eCwgc2l6ZV90IGxlbiwKIAkJICogVXBkYXRlIGlub2RlLSZndDtpX2ZsYWdzIC0gU19FTkNSWVBURUQgd2lsbCBiZSBlbmFibGVkLAogCQkgKiBTX0RBWCBtYXkgYmUgZGlzYWJsZWQKIAkJICovCi0JCWV4dDRfc2V0X2lub2RlX2ZsYWdzKGlub2RlLCBmYWxzZSk7CiYjNDM7CQlleHQ0X3NldF9pbm9kZV9mbGFncyhpbm9kZSwgaW5pdCk7CiAJCXJlcyA9IGV4dDRfbWFya19pbm9kZV9kaXJ0eShoYW5kbGUsIGlub2RlKTsKIAkJaWYgKHJlcykKIAkJCUVYVDRfRVJST1JfSU5PREUoaW5vZGUsICYjMzQ7RmFpbGVkIHRvIG1hcmsgaW5vZGUgZGlydHkmIzM0Oyk7CmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmMKaW5kZXggY2U5OTgwN2M1ZjViMmMuLmE1NzE3OTY1NTM1M2FmIDEwMDY0NAotLS0gYS9mcy9leHQ0L2lub2RlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9pbm9kZS5jCkBAIC01MTEzLDggJiM0Mzs1MTEzLDYgQEAgdm9pZCBleHQ0X3NldF9pbm9kZV9mbGFncyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBib29sIGluaXQpCiAJdW5zaWduZWQgaW50IGZsYWdzID0gRVhUNF9JKGlub2RlKS0mZ3Q7aV9mbGFnczsKIAl1bnNpZ25lZCBpbnQgbmV3X2ZsID0gMDsKIAotCVdBUk5fT05fT05DRShJU19EQVgoaW5vZGUpICZhbXA7JmFtcDsgaW5pdCk7Ci0KIAlpZiAoZmxhZ3MgJmFtcDsgRVhUNF9TWU5DX0ZMKQogCQluZXdfZmwgfD0gU19TWU5DOwogCWlmIChmbGFncyAmYW1wOyBFWFQ0X0FQUEVORF9GTCkKQEAgLTUxMjksOCAmIzQzOzUxMjcsMTIgQEAgdm9pZCBleHQ0X3NldF9pbm9kZV9mbGFncyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBib29sIGluaXQpCiAJLyogQmVjYXVzZSBvZiB0aGUgd2F5IGlub2RlX3NldF9mbGFncygpIHdvcmtzIHdlIG11c3QgcHJlc2VydmUgU19EQVgKIAkgKiBoZXJlIGlmIGFscmVhZHkgc2V0LiAqLwogCW5ld19mbCB8PSAoaW5vZGUtJmd0O2lfZmxhZ3MgJmFtcDsgU19EQVgpOwotCWlmIChpbml0ICZhbXA7JmFtcDsgZXh0NF9zaG91bGRfZW5hYmxlX2RheChpbm9kZSkpCi0JCW5ld19mbCB8PSBTX0RBWDsKJiM0MzsJaWYgKGluaXQpIHsKJiM0MzsJCWlmIChleHQ0X3Nob3VsZF9lbmFibGVfZGF4KGlub2RlKSkKJiM0MzsJCQluZXdfZmwgfD0gU19EQVg7CiYjNDM7CQllbHNlCiYjNDM7CQkJbmV3X2ZsICZhbXA7PSB+U19EQVg7CiYjNDM7CX0KIAogCWlmIChmbGFncyAmYW1wOyBFWFQ0X0VOQ1JZUFRfRkwpCiAJCW5ld19mbCB8PSBTX0VOQ1JZUFRFRDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTM6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjczNwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDM1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCB0byBleHQ0JiMzOTtzIEVuY3J5cHRpb24gYW5kIERBWCBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGZzL2V4dDQvY3J5cHRvLmNgIGFuZCBgZnMvZXh0NC9pbm9kZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gYGV4dDRfc2V0X2NvbnRleHRgLiBJdCYjMzk7cyBub3cgcGFzc2luZyBgU19JU1JFRyhpbm9kZS0mZ3Q7aV9tb2RlKWAgdG8gYGV4dDRfc2V0X2lub2RlX2ZsYWdzYCwgd2hpY2ggaXMgYSBjaGFuZ2UgZnJvbSBwYXNzaW5nIGBmYWxzZWAuIFRoYXQmIzM5O3MgdGhlIGtleSwgdGhhdCBgaW5pdGAgdmFsdWUgY2hhbmdlLiBMb29raW5nIGRlZXBlciwgdGhlIHBhdGNoIHJlbW92ZXMgYSBgV0FSTl9PTl9PTkNFYCBmb3IgYElTX0RBWChpbm9kZSkgJmFtcDsmYW1wOyBpbml0YCBpbiBgZXh0NF9zZXRfaW5vZGVfZmxhZ3NgLCB3aGljaCBzdWdnZXN0cyB0aGV5JiMzOTtyZSBhZGRyZXNzaW5nIHNvbWUgaW50ZXJhY3Rpb24gaXNzdWUuIEFuZCwgdGhleSYjMzk7dmUgYWx0ZXJlZCB0aGUgbG9naWMgZm9yIGhvdyBgU19EQVhgIGZsYWcgaXMgc2V0LiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGJlY29taW5nIGV4cGxpY2l0bHkgc2V0IHRvIG9mZiBpZiBgZXh0NF9zaG91bGRfZW5hYmxlX2RheGAgaXMgZmFsc2Ugd2l0aCB0aGUgaW5pdCB2YXJpYWJsZSB0cnVlLgoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkZWZpbml0ZWx5LiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBleHQ0LCBlbmNyeXB0aW9uLCAqYW5kKiBEQVgsIGFsbCBpbiB0aGUgc2FtZSBicmVhdGguIFRoaXMgc2NyZWFtcyAmIzM0O2Z1enogdGhpcyEmIzM0Oy4gVGhlIHBvdGVudGlhbCBmb3Igc2VjdXJpdHkgaW1wbGljYXRpb25zIGlzIGRlZmluaXRlbHkgdGhlcmUuIFdlIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIHRoYXQgYXJlIGJlaW5nIG1vZGlmaWVkLCB3aGljaCBhcHBlYXIgdG8gYmUgYGV4dDRfc2V0X2NvbnRleHRgIGFuZCBgZXh0NF9zZXRfaW5vZGVfZmxhZ3NgLiBUaGVzZSB3aWxsIGJlIG91ciBwcmltZSB0YXJnZXRzIGZvciBhbnkgZnV6emluZyBjYW1wYWlnbi4KCk5vdywgbGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGUgY29uZmlndXJhdGlvbiBpcyBjb3JyZWN0LiBTaW5jZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBmcy9leHQ0L2NyeXB0by5jYCwgSSYjMzk7bSBhc3N1bWluZyB0aGF0IGl0IGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19GU19FTkNSWVBUSU9OYCBpcyBlbmFibGVkLiBOb3QgYENPTkZJR19FWFQ0X0ZTX0VOQ1JZUFRJT05gLiBJJiMzOTtsbCBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGJ5IGxvb2tpbmcgYXQgdGhlIGBmcy9leHQ0L01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBjb21waWxlLXRpbWUgZGVwZW5kZW5jaWVzLiBXZSB3aWxsIG5lZWQgdG8gbWFrZSBzdXJlIHdlJiMzOTtyZSBjb21waWxpbmcgd2l0aCBgQ09ORklHX0ZTX0VOQ1JZUFRJT05gIGVuYWJsZWQgZm9yIG91ciBmdXp6aW5nIGJ1aWxkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjcnlwdG9cXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9NYWtlZmlsZT0yMD1leHQ0LSQoQ09ORklHX0ZTX1ZFUklUWSlcdFx0JiM0Mzs9IHZlcml0eS5vXG5mcy9leHQ0L01ha2VmaWxlOjIxOmV4dDQtJChDT05GSUdfRlNfRU5DUllQVElPTilcdFx0JiM0Mzs9IGNyeXB0by5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTM6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYxMwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIEZpbGVzeXN0ZW0gRW5jcnlwdGlvbiBhbmQgREFYKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyB0aGF0IHJlcXVpcmVzIGBDT05GSUdfRlNfRU5DUllQVElPTmAuIFRoYXQmIzM5O3MgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQuIE5vdywgdGhlIG1lbnRpb24gb2YgREFYIGhhcyBtZSB0aGlua2luZy4gV2l0aCBEQVggYW5kIGZpbGUgc3lzdGVtIGVuY3J5cHRpb24gaW52b2x2ZWQsIHRoZXJlJiMzOTtzIGEgc3Ryb25nIGNoYW5jZSB0aGF0IGBDT05GSUdfRlNfREFYYCBpcyBhbHNvIGdvaW5nIHRvIGJlIGEga2V5IGNvbnNpZGVyYXRpb24uIFdlJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gaWYgREFYIGlzIHJlbGV2YW50IHRvIHRoaXMgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24sIGl0JiMzOTtzIGxpa2VseSBsaW5rZWQsIHNvIGxldCYjMzk7cyBjaGVjayBmdXJ0aGVyIGludG8gdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleHQ0X3Nob3VsZF9lbmFibGVfZGF4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9pbm9kZS5jPTUwODE9aW50IGV4dDRfZ2V0X2ZjX2lub2RlX2xvYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNpZ25lZCBsb25nIGlubyxcbi0tXG5mcy9leHQ0L2lub2RlLmMtNTA4Ni1cbmZzL2V4dDQvaW5vZGUuYzo1MDg3OnN0YXRpYyBib29sIGV4dDRfc2hvdWxkX2VuYWJsZV9kYXgoc3RydWN0IGlub2RlICppbm9kZSlcbmZzL2V4dDQvaW5vZGUuYy01MDg4LXtcbi0tXG5mcy9leHQ0L2lub2RlLmM9NTExMT12b2lkIGV4dDRfc2V0X2lub2RlX2ZsYWdzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGJvb2wgaW5pdClcbi0tXG5mcy9leHQ0L2lub2RlLmMtNTEzMC1cdGlmIChpbml0KSB7XG5mcy9leHQ0L2lub2RlLmM6NTEzMTpcdFx0aWYgKGV4dDRfc2hvdWxkX2VuYWJsZV9kYXgoaW5vZGUpKVxuZnMvZXh0NC9pbm9kZS5jLTUxMzItXHRcdFx0bmV3X2ZsIHw9IFNfREFYO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDEzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNDgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqRXhhbWluaW5nIGV4dDQmIzM5O3MgREFYIEVuYWJsZW1lbnQqKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgYmVoaW5kIHdoZW4gYGV4dDRgIGVuYWJsZXMgRGlyZWN0IEFjY2VzcyAoREFYKS4gSSYjMzk7bSBoZWFkaW5nIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UgY29kZSDigJMgc3BlY2lmaWNhbGx5LCBgZnMvZXh0NC9pbm9kZS5jYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIGRlY2lzaW9uLW1ha2luZyBmb3IgREFYIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBgZXh0NGAgZmlsZXN5c3RlbS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhlIGBleHQ0X3Nob3VsZF9lbmFibGVfZGF4YCBmdW5jdGlvbi4gVGhpcyBmdW5jdGlvbiAqc2hvdWxkKiBlbmNhcHN1bGF0ZSBhbGwgdGhlIHJlbGV2YW50IGNoZWNrcyDigJMgd2hldGhlciB0aGUgdW5kZXJseWluZyBzdG9yYWdlIHN1cHBvcnRzIGl0LCBpZiB0aGUgZmlsZXN5c3RlbSBpcyBjb25maWd1cmVkIGFwcHJvcHJpYXRlbHksIGFuZCBwb3RlbnRpYWxseSBhbnkgaW5vZGUtc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgREFYIGVuYWJsZW1lbnQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgaW1wbGVtZW50YXRpb24gaXMgYW5kIHdoYXQgY29uc2lkZXJhdGlvbnMgaXQgdGFrZXMgaW50byBhY2NvdW50LiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBhbnkgcG90ZW50aWFsIGVkZ2UgY2FzZXMgb3Igc3VidGxldGllcyB0aGF0IG1pZ2h0IGJlIHByZXNlbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9leHQ0L2lub2RlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MDgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzUwODA6XHRcbjUwODE6XHRpbnQgZXh0NF9nZXRfZmNfaW5vZGVfbG9jKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vLFxuNTA4MjpcdFx0XHRcdCAgc3RydWN0IGV4dDRfaWxvYyAqaWxvYylcbjUwODM6XHR7XG41MDg0Olx0XHRyZXR1cm4gX19leHQ0X2dldF9pbm9kZV9sb2Moc2IsIGlubywgTlVMTCwgaWxvYywgTlVMTCk7XG41MDg1Olx0fVxuNTA4NjpcdFxuNTA4NzpcdHN0YXRpYyBib29sIGV4dDRfc2hvdWxkX2VuYWJsZV9kYXgoc3RydWN0IGlub2RlICppbm9kZSlcbjUwODg6XHR7XG41MDg5Olx0XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKGlub2RlLVx1MDAzZWlfc2IpO1xuNTA5MDpcdFxuNTA5MTpcdFx0aWYgKHRlc3Rfb3B0Mihpbm9kZS1cdTAwM2VpX3NiLCBEQVhfTkVWRVIpKVxuNTA5MjpcdFx0XHRyZXR1cm4gZmFsc2U7XG41MDkzOlx0XHRpZiAoIVNfSVNSRUcoaW5vZGUtXHUwMDNlaV9tb2RlKSlcbjUwOTQ6XHRcdFx0cmV0dXJuIGZhbHNlO1xuNTA5NTpcdFx0aWYgKGV4dDRfc2hvdWxkX2pvdXJuYWxfZGF0YShpbm9kZSkpXG41MDk2Olx0XHRcdHJldHVybiBmYWxzZTtcbjUwOTc6XHRcdGlmIChleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkpXG41MDk4Olx0XHRcdHJldHVybiBmYWxzZTtcbjUwOTk6XHRcdGlmIChleHQ0X3Rlc3RfaW5vZGVfZmxhZyhpbm9kZSwgRVhUNF9JTk9ERV9FTkNSWVBUKSlcbjUxMDA6XHRcdFx0cmV0dXJuIGZhbHNlO1xuNTEwMTpcdFx0aWYgKGV4dDRfdGVzdF9pbm9kZV9mbGFnKGlub2RlLCBFWFQ0X0lOT0RFX1ZFUklUWSkpXG41MTAyOlx0XHRcdHJldHVybiBmYWxzZTtcbjUxMDM6XHRcdGlmICghdGVzdF9iaXQoRVhUNF9GTEFHU19CREVWX0lTX0RBWCwgXHUwMDI2c2JpLVx1MDAzZXNfZXh0NF9mbGFncykpXG41MTA0Olx0XHRcdHJldHVybiBmYWxzZTtcbjUxMDU6XHRcdGlmICh0ZXN0X29wdChpbm9kZS1cdTAwM2VpX3NiLCBEQVhfQUxXQVlTKSlcbjUxMDY6XHRcdFx0cmV0dXJuIHRydWU7XG41MTA3Olx0XG41MTA4Olx0XHRyZXR1cm4gZXh0NF90ZXN0X2lub2RlX2ZsYWcoaW5vZGUsIEVYVDRfSU5PREVfREFYKTtcbjUxMDk6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTM6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgyMwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQgd2UgaGF2ZSBoZXJlLgoKKipJbnZlc3RpZ2F0aW5nIERBWCBDb25maWd1cmF0aW9uIFJlcXVpcmVtZW50cyoqCgpBbHJpZ2h0LCBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgdGhpcyBjb2RlIGFuZCBzb21ldGhpbmcmIzM5O3MgaW1tZWRpYXRlbHkganVtcGluZyBvdXQuIEl0IGRvZXNuJiMzOTt0IGFwcGVhciB0byBiZSBndWFyZGVkIGJ5IGEgYCNpZmRlZiBDT05GSUdfRlNfREFYYCBibG9jaywgd2hpY2ggaXMsIGdlbmVyYWxseSBzcGVha2luZywgcmVxdWlyZWQgZm9yIERBWCBmdW5jdGlvbmFsaXR5LiBOb3cgdGhhdCBzZWVtcyBvZGQuIEJ1dCBoYW5nIG9uLCBJIHNlZSB0aGUgdXNhZ2Ugb2YgYEVYVDRfRkxBR1NfQkRFVl9JU19EQVhgLiBIbW0uIEkgbmVlZCB0byBiZSBzdXJlLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gZG91YmxlLWNoZWNrIGlmIGBDT05GSUdfRlNfREFYYCBpcyBhYnNvbHV0ZWx5IG5lY2Vzc2FyeSBpbiB0aGlzIGNvbnRleHQuIFRoZXJlIGhhcyB0byBiZSBhIHJlYXNvbiB3aHkgdGhpcyB3YXNuJiMzOTt0IGd1YXJkZWQuIExldCYjMzk7cyBkaWcgaW4gYSBiaXQgZnVydGhlciB0byBzZWUgaG93IHRoaXMgYWxsIGNvbm5lY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfRlNfREFYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9leHQ0Lmg9MTA0OD1zdHJ1Y3QgZXh0NF9pbm9kZV9pbmZvIHtcbi0tXG5mcy9leHQ0L2V4dDQuaC0xMjU4LSNkZWZpbmUgRVhUNF9NT1VOVF9OT0xPQURcdFx0MHgwMDEwMFx0LyogRG9uJiMzOTt0IHVzZSBleGlzdGluZyBqb3VybmFsKi9cbmZzL2V4dDQvZXh0NC5oOjEyNTk6I2lmZGVmIENPTkZJR19GU19EQVhcbmZzL2V4dDQvZXh0NC5oLTEyNjAtI2RlZmluZSBFWFQ0X01PVU5UX0RBWF9BTFdBWVNcdFx0MHgwMDIwMFx0LyogRGlyZWN0IEFjY2VzcyAqL1xuLS1cbmZzL2V4dDQvZmlsZS5jPTY5PXN0YXRpYyBzc2l6ZV90IGV4dDRfZGlvX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXG4tLVxuZnMvZXh0NC9maWxlLmMtMTAwLVxuZnMvZXh0NC9maWxlLmM6MTAxOiNpZmRlZiBDT05GSUdfRlNfREFYXG5mcy9leHQ0L2ZpbGUuYy0xMDItc3RhdGljIHNzaXplX3QgZXh0NF9kYXhfcmVhZF9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bylcbi0tXG5mcy9leHQ0L2ZpbGUuYz0xMzA9c3RhdGljIHNzaXplX3QgZXh0NF9maWxlX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXG4tLVxuZnMvZXh0NC9maWxlLmMtMTM5LVxuZnMvZXh0NC9maWxlLmM6MTQwOiNpZmRlZiBDT05GSUdfRlNfREFYXG5mcy9leHQ0L2ZpbGUuYy0xNDEtXHRpZiAoSVNfREFYKGlub2RlKSlcbi0tXG5mcy9leHQ0L2ZpbGUuYz01MTk9c3RhdGljIHNzaXplX3QgZXh0NF9kaW9fd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcbi0tXG5mcy9leHQ0L2ZpbGUuYy02NDgtXG5mcy9leHQ0L2ZpbGUuYzo2NDk6I2lmZGVmIENPTkZJR19GU19EQVhcbmZzL2V4dDQvZmlsZS5jLTY1MC1zdGF0aWMgc3NpemVfdFxuLS1cbmZzL2V4dDQvZmlsZS5jPTcwNj1leHQ0X2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcbi0tXG5mcy9leHQ0L2ZpbGUuYy03MTQtXG5mcy9leHQ0L2ZpbGUuYzo3MTU6I2lmZGVmIENPTkZJR19GU19EQVhcbmZzL2V4dDQvZmlsZS5jLTcxNi1cdGlmIChJU19EQVgoaW5vZGUpKVxuLS1cbmZzL2V4dDQvZmlsZS5jLTczNy1cbmZzL2V4dDQvZmlsZS5jOjczODojaWZkZWYgQ09ORklHX0ZTX0RBWFxuZnMvZXh0NC9maWxlLmMtNzM5LXN0YXRpYyB2bV9mYXVsdF90IGV4dDRfZGF4X2h1Z2VfZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHVuc2lnbmVkIGludCBvcmRlcilcbi0tXG5mcy9leHQ0L3N1cGVyLmM9MjE3MT1zdGF0aWMgaW50IGV4dDRfcGFyc2VfcGFyYW0oc3RydWN0IGZzX2NvbnRleHQgKmZjLCBzdHJ1Y3QgZnNfcGFyYW1ldGVyICpwYXJhbSlcbi0tXG5mcy9leHQ0L3N1cGVyLmMtMjM3Mi1cdGNhc2UgT3B0X2RheF90eXBlOlxuZnMvZXh0NC9zdXBlci5jOjIzNzM6I2lmZGVmIENPTkZJR19GU19EQVhcbmZzL2V4dDQvc3VwZXIuYy0yMzc0LVx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMzozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODQ5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIERBWCBhbmQgRW5jcnlwdGlvbioqCgpPa2F5LCBzbyB0byBnZXQgREFYIHdvcmtpbmcgcHJvcGVybHksIEkgZGVmaW5pdGVseSBuZWVkIGBDT05GSUdfRlNfREFYYCBlbmFibGVkLiBNYWtlcyBzZW5zZS4gQW5kIHNpbmNlIEkmIzM5O20gbG9va2luZyBhdCBmaWxlIHN5c3RlbSBlbmNyeXB0aW9uLCBlbmFibGluZyBgRlNfRU5DUllQVElPTmAgYWxvbmdzaWRlIGBGU19EQVhgIHNlZW1zIGxpa2UgYSBnb29kIG1vdmUuIFNvbGlkIGZvdW5kYXRpb24uCgpOb3csIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGV4dDRfc2V0X2NvbnRleHRgIGFuZCBgZXh0NF9zZXRfaW5vZGVfZmxhZ3NgLiBJJiMzOTtsbCBzZXQgbXkgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OyB0byB0aG9zZSBmdW5jdGlvbnMsIHRob3NlIGFyZSB0aGUga2V5IGFyZWFzIHRvIHVuZGVyc3RhbmQuIGBleHQ0X3NldF9pbm9kZV9mbGFnc2AgaXMgdXNlZCBxdWl0ZSBhIGJpdCDigJMgaXQmIzM5O3MgZXZlcnl3aGVyZSwgaXQgc2VlbXMg4oCTIGJ1dCBpdCYjMzk7cyBub3QgYSAqYmxhemluZyogaG90IHBhdGguIEl0IGNvbWVzIGludG8gcGxheSB3aGVuIGlub2RlIGZsYWdzIGdldCBhbHRlcmVkIG9yIGR1cmluZyBpbm9kZSBpbml0aWFsaXphdGlvbiwgc28gdGhlIGZyZXF1ZW5jeSBpcyBtb2RlcmF0ZS4gSSBjYW4gd29yayB3aXRoIHRoYXQuCgpgZXh0NF9zZXRfY29udGV4dGAsIG9uIHRoZSBvdGhlciBoYW5kLCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBhY3R1YWxseSBzZXRzIHRoZSBlbmNyeXB0aW9uIGNvbnRleHQuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBwaWVjZSBmb3IgdGhpcyBwYXRjaCBhbmQgZGVmaW5pdGVseSBkZXNlcnZlcyBhIGNsb3NlciBsb29rLgoKSnVzdCB0byBiZSBzYWZlLCBJJiMzOTttIGdvaW5nIHRvIHJ1biBhIHF1aWNrIGRvdWJsZS1jaGVjayBvbiBgZXh0NF9zZXRfaW5vZGVfZmxhZ3NgIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsIGluIHRlcm1zIG9mIHBlcmZvcm1hbmNlIGltcGFjdC4gSXQmIzM5O3MgYSBnb29kIGhhYml0IHRvIHZlcmlmeSB0aG9zZSBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0NF9zZXRfaW5vZGVfZmxhZ3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leHQ0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leHQ0L2NyeXB0by5jPTEzMj1zdGF0aWMgaW50IGV4dDRfc2V0X2NvbnRleHQoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqY3R4LCBzaXplX3QgbGVuLFxuLS1cbmZzL2V4dDQvY3J5cHRvLmMtMTkxLVx0XHRcdCAqL1xuZnMvZXh0NC9jcnlwdG8uYzoxOTI6XHRcdFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGluaXQpO1xuZnMvZXh0NC9jcnlwdG8uYy0xOTMtXHRcdH1cbi0tXG5mcy9leHQ0L2NyeXB0by5jLTIxOC1cdFx0ICovXG5mcy9leHQ0L2NyeXB0by5jOjIxOTpcdFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGluaXQpO1xuZnMvZXh0NC9jcnlwdG8uYy0yMjAtXHRcdHJlcyA9IGV4dDRfbWFya19pbm9kZV9kaXJ0eShoYW5kbGUsIGlub2RlKTtcbi0tXG5mcy9leHQ0L2V4dDQuaD0zMTc5PWV4dGVybiBpbnQgZXh0NF9wdW5jaF9ob2xlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuZ3RoKTtcbmZzL2V4dDQvZXh0NC5oOjMxODA6ZXh0ZXJuIHZvaWQgZXh0NF9zZXRfaW5vZGVfZmxhZ3Moc3RydWN0IGlub2RlICosIGJvb2wgaW5pdCk7XG5mcy9leHQ0L2V4dDQuaC0zMTgxLWV4dGVybiBpbnQgZXh0NF9hbGxvY19kYV9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSk7XG4tLVxuZnMvZXh0NC9pYWxsb2MuYz05MzM9c3RydWN0IGlub2RlICpfX2V4dDRfbmV3X2lub2RlKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxuLS1cbmZzL2V4dDQvaWFsbG9jLmMtMTI3Ni1cbmZzL2V4dDQvaWFsbG9jLmM6MTI3NzpcdGV4dDRfc2V0X2lub2RlX2ZsYWdzKGlub2RlLCB0cnVlKTtcbmZzL2V4dDQvaWFsbG9jLmMtMTI3OC1cdGlmIChJU19ESVJTWU5DKGlub2RlKSlcbi0tXG5mcy9leHQ0L2lub2RlLmM9NTA4Nz1zdGF0aWMgYm9vbCBleHQ0X3Nob3VsZF9lbmFibGVfZGF4KHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4tLVxuZnMvZXh0NC9pbm9kZS5jLTUxMTAtXG5mcy9leHQ0L2lub2RlLmM6NTExMTp2b2lkIGV4dDRfc2V0X2lub2RlX2ZsYWdzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGJvb2wgaW5pdClcbmZzL2V4dDQvaW5vZGUuYy01MTEyLXtcbi0tXG5mcy9leHQ0L2lub2RlLmM9NTI3NT1zdHJ1Y3QgaW5vZGUgKl9fZXh0NF9pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vLFxuLS1cbmZzL2V4dDQvaW5vZGUuYy01NDEyLVx0ZWktXHUwMDNlaV9mbGFncyA9IGxlMzJfdG9fY3B1KHJhd19pbm9kZS1cdTAwM2VpX2ZsYWdzKTtcbmZzL2V4dDQvaW5vZGUuYzo1NDEzOlx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIHRydWUpO1xuZnMvZXh0NC9pbm9kZS5jLTU0MTQtXHQvKiBEZXRlY3QgaW52YWxpZCBmbGFnIGNvbWJpbmF0aW9uIC0gY2FuJiMzOTt0IGhhdmUgYm90aCBpbmxpbmUgZGF0YSBhbmQgZXh0ZW50cyAqL1xuLS1cbmZzL2V4dDQvaW9jdGwuYz01OTA9c3RhdGljIGludCBleHQ0X2lvY3RsX3NldGZsYWdzKHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvZXh0NC9pb2N0bC5jLTY3Ny1cbmZzL2V4dDQvaW9jdGwuYzo2Nzg6XHRleHQ0X3NldF9pbm9kZV9mbGFncyhpbm9kZSwgZmFsc2UpO1xuZnMvZXh0NC9pb2N0bC5jLTY3OS1cbi0tXG5mcy9leHQ0L3Zlcml0eS5jPTE5MT1zdGF0aWMgaW50IGV4dDRfZW5kX2VuYWJsZV92ZXJpdHkoc3RydWN0IGZpbGUgKmZpbHAsIGNvbnN0IHZvaWQgKmRlc2MsXG4tLVxuZnMvZXh0NC92ZXJpdHkuYy0yNDQtXHRleHQ0X3NldF9pbm9kZV9mbGFnKGlub2RlLCBFWFQ0X0lOT0RFX1ZFUklUWSk7XG5mcy9leHQ0L3Zlcml0eS5jOjI0NTpcdGV4dDRfc2V0X2lub2RlX2ZsYWdzKGlub2RlLCBmYWxzZSk7XG5mcy9leHQ0L3Zlcml0eS5jLTI0Ni1cdGVyciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFx1MDAyNmlsb2MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMzozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjA2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUYXJnZXQgRnVuY3Rpb25zIGZvciBGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gY29uc2lkZXIgYGV4dDRfc2V0X2lub2RlX2ZsYWdzYCBiZWNhdXNlIGl0JiMzOTtzIGNhbGxlZCBpbiBzZXZlcmFsIHBsYWNlczogYF9fZXh0NF9uZXdfaW5vZGVgLCBgX19leHQ0X2lnZXRgLCBgZXh0NF9pb2N0bF9zZXRmbGFnc2AsIGBleHQ0X2VuZF9lbmFibGVfdmVyaXR5YCwgYW5kIGBleHQ0X3NldF9jb250ZXh0YC4gSXQmIzM5O3Mgbm90IGEgY29yZSByZWFkL3dyaXRlIHBhdGgsIGJ1dCBpdCAqaXMqIGludm9sdmVkIGluIGV2ZXJ5IGlub2RlJiMzOTtzIGxpZmVjeWNsZSDigJMgY3JlYXRpb24gb3IgbG9hZGluZy4gSG93ZXZlciwgdGhlIHVzZSBvZiBgX19leHQ0X2lnZXRgIGR1cmluZyBkaXNrIHJlYWRzIGludHJvZHVjZXMgYSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgY29uY2VybiwgdGhvdWdoIGl0JiMzOTtzIHN0aWxsIGFjY2VwdGFibGUgZm9yIGZ1enppbmcgc2luY2UgaXQmIzM5O3Mgbm93aGVyZSBuZWFyIGFzIHBlcmZvcm1hbmNlLWNyaXRpY2FsIGFzIGBleHQ0X2ZpbGVfcmVhZF9pdGVyYC4KCkJ1dCwgd2FpdC4uLiBgZXh0NF9zZXRfY29udGV4dGAgc2VlbXMgbXVjaCBtb3JlIGRpcmVjdGx5IGxpbmtlZCB0byB0aGUgcGF0Y2hlZCBjb2RlLiBTaW5jZSB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgZm9jdXNlZCBvbiB0aGlzIGZ1bmN0aW9uLCBmb2N1c2luZyB0aGUgZnV6emluZyBoZXJlIHNlZW1zIHN0cmF0ZWdpY2FsbHkgc291bmQuIFRoZXJlZm9yZSwgSSBzaG91bGQgZXhwbGljaXRseSBpbmNsdWRlIGBleHQ0X3NldF9jb250ZXh0YCBhbG9uZyB3aXRoIGBleHQ0X3NldF9pbm9kZV9mbGFnc2AuCgpBbHJpZ2h0LCBhIHF1aWNrIHJldmlldyBvZiB0aGUgY29kZSBjb25maXJtZWQgdGhhdCBgZXh0NF9zZXRfY29udGV4dGAgYW5kIGBleHQ0X3NldF9pbm9kZV9mbGFnc2AgYXJlICpleGFjdGx5KiB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIG1vZGlmaWVkIGluIHRoZSBwYXRjaC4gVGhhdCBzaW1wbGlmaWVzIHRoZSB0YXJnZXRpbmcuCgpOb3csIGxldCYjMzk7cyByZXZpc2l0IHRoZSBjb25maWd1cmF0aW9uIGNvbnNpZGVyYXRpb25zLiBJIHJlY2FsbCBgRlNfRU5DUllQVElPTmAgYW5kIGBGU19EQVhgIGJlaW5nIHJlbGV2YW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG92ZXJsb29rIGFueSBvdGhlciByZWxldmFudCBjb25maWdzLiBBaCwgcmlnaHQhIGBDT05GSUdfRVhUNF9GU19FTkNSWVBUSU9OYCB3YXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgQ09ORklHX0ZTX0VOQ1JZUFRJT05gLiBUaGF0JiMzOTtzIGltcG9ydGFudCB0byByZW1lbWJlci4gSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRoYXQgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFQ0X0ZTX0VOQ1JZUFRJT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMzozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTMzCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIEZpbGVzeXN0ZW0gRW5jcnlwdGlvbiBhbmQgREFYIE9wdGlvbnMqKgoKQWxyaWdodCwgdGhhdCBjb25maXJtYXRpb24gY2xpY2tzIGluOiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBGU19FTkNSWVBUSU9OYC4gTm93LCB0aGUgY3J1Y2lhbCBwYXJ0IGlzIGZpZ3VyaW5nIG91dCB0aGUgb3B0aW1hbCBEQVggY29uZmlndXJhdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgaWYgYEZTX0RBWGAgYnkgaXRzZWxmIGlzIGVub3VnaCB0byBjb3ZlciB0aGUgcmVxdWlyZW1lbnRzIGhlcmUuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGUgdW5kZXJseWluZyBzdG9yYWdlIGFuZCB3b3JrbG9hZHMgdG8gYmUgc3VyZS4gSXQgbWlnaHQgYmUgc3VmZmljaWVudCBmb3Igc29tZSB1c2UgY2FzZXMsIHNvIGxldCYjMzk7cyBub3QganVtcCB0aGUgZ3VuIGFuZCBpbW1lZGlhdGVseSBvdmVyLWVuZ2luZWVyLgoKSWYgdGhhdCBwcm92ZXMgaW5zdWZmaWNpZW50LCB0aGVuIGEgZGVlcGVyIGRpdmUgaW50byB0cnVlIGBEQVhgIG1pZ2h0IGJlIG5lY2Vzc2FyeS4gQnV0IGhvbGQgb24uLi4ganVzdCBhIG1vbWVudCwgbXkgbWVudGFsIG1vZGVsIHJlbWluZHMgbWUgZXh0NCBkb2VzbiYjMzk7dCBoYXZlIGEgc2VwYXJhdGUgY29uZmlndXJhdGlvbiBmb3IgYEVYVDRfRlNfREFYYC4gSXQgdXNlcyB0aGUgbWFpbiBgREFYYCBjb25maWd1cmF0aW9uLiBTbyBJIG5lZWQgdG8ga2VlcCB0aGF0IGRpc3RpbmN0aW9uIGluIG1pbmQgYXMgSSBhc3Nlc3MgdGhlIGJlc3QgaW1wbGVtZW50YXRpb24uIEdvdHRhIHJlbWVtYmVyIHRoZSBudWFuY2VzIG9mIHRoZSBmaWxlc3lzdGVtIGltcGxlbWVudGF0aW9uIGJlZm9yZSBJIGdvIG1ha2luZyBhbnkgZGVzaWduIGRlY2lzaW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTM6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFQ0X0ZTX0RBWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDEzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyNTEKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBleHQ0IERBWCBCdWcgRml4KioKCk9rYXksIHNvIGBGU19EQVhgIGlzIGNvbmZpcm1lZCBhcyByZWxldmFudCBoZXJlLiBMZXQmIzM5O3MgYnJlYWsgZG93biB3aGF0IHdlIGhhdmUuIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGNyaXRpY2FsIGZpeCDigJMgYFdvcnRoRnV6emluZzogdHJ1ZWAgc3VnZ2VzdHMgdGhpcyBpcyBhIGhpZ2gtaW1wYWN0IGNoYW5nZS4gVGhlIHJlYXNvbmluZyBjb25maXJtcyB0aGF0IHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgbmFzdHkgYnVnOiBEQVggZmxhZ3MgcGVyc2lzdGluZyBpbmNvcnJlY3RseSB3aGVuIGVuY3J5cHRpb24gaXMgZW5hYmxlZCwgd2hpY2ggY2FuIGxlYWQgdG8gd3JpdGVzIGJ5cGFzc2luZyB0aGUgaW50ZW5kZWQgZW5jcnlwdGlvbi4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGV4dDQgZmlsZXN5c3RlbSwgZGlyZWN0bHkgaW1wYWN0aW5nIGRhdGEgaW50ZWdyaXR5IGFuZCBzZWN1cml0eSwgc28gd2UgbmVlZCB0byBiZSBvbiB0b3Agb2YgdGhpcy4KClRoZSBrZXkgZnVuY3Rpb25zIHRvIHNjcnV0aW5pemUgYXJlIGBleHQ0X3NldF9jb250ZXh0YCBhbmQgYGV4dDRfc2V0X2lub2RlX2ZsYWdzYC4gSSYjMzk7bGwgd2FudCB0byBjaGVjayBob3cgdGhleSBpbnRlcmFjdCwgYW5kIGhvdyB0aGUgREFYIGZsYWcgaXMgbWFuaXB1bGF0ZWQgd2l0aGluIHRoZW0sIGVzcGVjaWFsbHkgaW4gdGhlIGNvbnRleHQgb2YgZW5jcnlwdGlvbi4gSXQgbWFrZXMgc2Vuc2UgdGhhdCBgRlNfRU5DUllQVElPTmAgYW5kIGBGU19EQVhgIGFyZSB0aGUgZW5hYmxpbmcgY29uZmlndXJhdGlvbnMgaGVyZS4gVGltZSB0byBkaXZlIGludG8gYGZzL2V4dDQvY3J5cHRvLmNgIGFuZCB0YWtlIGEgbG9vayBhdCBgZXh0NF9zZXRfY29udGV4dGAuIExldCYjMzk7cyBzZWUgaG93IHRoZXkgZml4ZWQgdGhpcyBwb3RlbnRpYWxseSBkYW5nZXJvdXMgb3ZlcnNpZ2h0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMzozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2V4dDQvY3J5cHRvLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEzMDpcdH1cbiAxMzE6XHRcbiAxMzI6XHRzdGF0aWMgaW50IGV4dDRfc2V0X2NvbnRleHQoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqY3R4LCBzaXplX3QgbGVuLFxuIDEzMzpcdFx0XHRcdFx0XHRcdFx0dm9pZCAqZnNfZGF0YSlcbiAxMzQ6XHR7XG4gMTM1Olx0XHRoYW5kbGVfdCAqaGFuZGxlID0gZnNfZGF0YTtcbiAxMzY6XHRcdGludCByZXMsIHJlczIsIGNyZWRpdHMsIHJldHJpZXMgPSAwO1xuIDEzNzpcdFx0Ym9vbCBpbml0ID0gU19JU1JFRyhpbm9kZS1cdTAwM2VpX21vZGUpO1xuIDEzODpcdFxuIDEzOTpcdFx0LypcbiAxNDA6XHRcdCAqIEVuY3J5cHRpbmcgdGhlIHJvb3QgZGlyZWN0b3J5IGlzIG5vdCBhbGxvd2VkIGJlY2F1c2UgZTJmc2NrIGV4cGVjdHNcbiAxNDE6XHRcdCAqIGxvc3QmIzQzO2ZvdW5kIHRvIGV4aXN0IGFuZCBiZSB1bmVuY3J5cHRlZCwgYW5kIGVuY3J5cHRpbmcgdGhlIHJvb3RcbiAxNDI6XHRcdCAqIGRpcmVjdG9yeSB3b3VsZCBpbXBseSBlbmNyeXB0aW5nIHRoZSBsb3N0JiM0Mztmb3VuZCBkaXJlY3RvcnkgYXMgd2VsbCBhc1xuIDE0MzpcdFx0ICogdGhlIGZpbGVuYW1lIFwmIzM0O2xvc3QmIzQzO2ZvdW5kXCYjMzQ7IGl0c2VsZi5cbiAxNDQ6XHRcdCAqL1xuIDE0NTpcdFx0aWYgKGlub2RlLVx1MDAzZWlfaW5vID09IEVYVDRfUk9PVF9JTk8pXG4gMTQ2Olx0XHRcdHJldHVybiAtRVBFUk07XG4gMTQ3Olx0XG4gMTQ4Olx0XHRpZiAoV0FSTl9PTl9PTkNFKElTX0RBWChpbm9kZSkgXHUwMDI2XHUwMDI2IGlfc2l6ZV9yZWFkKGlub2RlKSkpXG4gMTQ5Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDAxCgkJCQkJCQlvdXRwdXQ6IDExMgoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25maWd1cmF0aW9uIFZlcmlmaWNhdGlvbiBhbmQgU2VsZWN0aW9uKioKCk9rYXksIHRoaXMgc2VlbXMgcmlnaHQsIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0LiBCdXQgYmVmb3JlIEkgbG9jayB0aGlzIGluLCBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgbHVya2luZyBpbiB0aGUgc2hhZG93cy4gVGhlIG9idmlvdXMgb25lLCBgQ09ORklHX0VYVDRfRlNgLCBpcyBhbHJlYWR5IGNsZWFyLiBJIHNlZSBgZnMvZXh0NC9jcnlwdG8uY2AgaXMgYmVpbmcgdXNlZCwgc28gYENPTkZJR19GU19FTkNSWVBUSU9OYCBpcyBkZWZpbml0ZWx5IGEgcmVxdWlyZW1lbnQuIEFuZCBJIHNwb3QgdGhlIG5lZWQgZm9yIGBJU19EQVhgIGFuZCB0aGUgYGV4dDRfc2hvdWxkX2VuYWJsZV9kYXhgIGxvZ2ljLCBzbyB0aGF0IG1lYW5zIGBDT05GSUdfRlNfREFYYCBpcyBhbHNvIGVzc2VudGlhbC4gQWxyaWdodCwgeWVzLCBJJiMzOTtsbCBkZWZpbml0ZWx5IGluY29ycG9yYXRlIGJvdGggYEZTX0VOQ1JZUFRJT05gIGFuZCBgRlNfREFYYCBpbiB0aGUgY29uZmlndXJhdGlvbi4gTm93LCBsZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMzozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RlNfRU5DUllQVElPTiYjMzQ7LAogICAgJiMzNDtGU19EQVgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X3NldF9jb250ZXh0JiMzNDssCiAgICAmIzM0O2V4dDRfc2V0X2lub2RlX2ZsYWdzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyB0aGUgREFYIGZsYWcgb24gZXh0NCBpbm9kZXMgd2hlbiBlbmNyeXB0aW9uIGlzIGVuYWJsZWQsIGZpeGluZyBhIGJ1ZyB3aGVyZSB0aGUgREFYIGZsYWcgY291bGQgbGluZ2VyIGFuZCBjYXVzZSB3cml0ZXMgdG8gYnlwYXNzIGVuY3J5cHRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGU19FTkNSWVBUSU9OJiMzNDssCiAgICAmIzM0O0ZTX0RBWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfc2V0X2NvbnRleHQmIzM0OywKICAgICYjMzQ7ZXh0NF9zZXRfaW5vZGVfZmxhZ3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIHRoZSBEQVggZmxhZyBvbiBleHQ0IGlub2RlcyB3aGVuIGVuY3J5cHRpb24gaXMgZW5hYmxlZCwgZml4aW5nIGEgYnVnIHdoZXJlIHRoZSBEQVggZmxhZyBjb3VsZCBsaW5nZXIgYW5kIGNhdXNlIHdyaXRlcyB0byBieXBhc3MgZW5jcnlwdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMzozMDoyNy44MDY3NjAxMDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDA1MTgyMzkyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGU19FTkNSWVBUSU9OXCIsXG4gICAgXCJGU19EQVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X3NldF9jb250ZXh0XCIsXG4gICAgXCJleHQ0X3NldF9pbm9kZV9mbGFnc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyB0aGUgREFYIGZsYWcgb24gZXh0NCBpbm9kZXMgd2hlbiBlbmNyeXB0aW9uIGlzIGVuYWJsZWQsIGZpeGluZyBhIGJ1ZyB3aGVyZSB0aGUgREFYIGZsYWcgY291bGQgbGluZ2VyIGFuZCBjYXVzZSB3cml0ZXMgdG8gYnlwYXNzIGVuY3J5cHRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMzozMDoyNy44MDY3NzE0MjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MzMwNDk0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGI2MjRiYmFiMDAxMThhMzdiNDg3ZGEzZGQxMTViYmY4OGVlZjkzNTJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMjQgMTM6MzA6MjYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9jcnlwdG8uYyBiL2ZzL2V4dDQvY3J5cHRvLmNcXG5pbmRleCBmNDFmMzIwZjQ0MzdiOS4uMmQ0MDkxMTRlMDJlN2YgMTAwNjQ0XFxuLS0tIGEvZnMvZXh0NC9jcnlwdG8uY1xcbisrKyBiL2ZzL2V4dDQvY3J5cHRvLmNcXG5AQCAtMTM0LDYgKzEzNCw3IEBAIHN0YXRpYyBpbnQgZXh0NF9zZXRfY29udGV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICpjdHgsIHNpemVfdCBsZW4sXFxuIHtcXG4gXFx0aGFuZGxlX3QgKmhhbmRsZSA9IGZzX2RhdGE7XFxuIFxcdGludCByZXMsIHJlczIsIGNyZWRpdHMsIHJldHJpZXMgPSAwO1xcbitcXHRib29sIGluaXQgPSBTX0lTUkVHKGlub2RlLVxcdTAwM2VpX21vZGUpO1xcbiBcXG4gXFx0LypcXG4gXFx0ICogRW5jcnlwdGluZyB0aGUgcm9vdCBkaXJlY3RvcnkgaXMgbm90IGFsbG93ZWQgYmVjYXVzZSBlMmZzY2sgZXhwZWN0c1xcbkBAIC0xNzksMTAgKzE4MCwxNiBAQCBzdGF0aWMgaW50IGV4dDRfc2V0X2NvbnRleHQoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqY3R4LCBzaXplX3QgbGVuLFxcbiBcXHRcXHRcXHRleHQ0X2NsZWFyX2lub2RlX3N0YXRlKGlub2RlLFxcbiBcXHRcXHRcXHRcXHRcXHRFWFQ0X1NUQVRFX01BWV9JTkxJTkVfREFUQSk7XFxuIFxcdFxcdFxcdC8qXFxuLVxcdFxcdFxcdCAqIFVwZGF0ZSBpbm9kZS1cXHUwMDNlaV9mbGFncyAtIFNfRU5DUllQVEVEIHdpbGwgYmUgZW5hYmxlZCxcXG4tXFx0XFx0XFx0ICogU19EQVggbWF5IGJlIGRpc2FibGVkXFxuK1xcdFxcdFxcdCAqIFVwZGF0ZSBpbm9kZS1cXHUwMDNlaV9mbGFncywgU19FTkNSWVBURUQgd2lsbCBiZSBlbmFibGVkLlxcbitcXHRcXHRcXHQgKiBJZiB0aGlzIGlzIGEgcmVndWxhciBpbm9kZSwgdGhlbiB3ZSBtdXN0IGJlIGNvbWluZ1xcbitcXHRcXHRcXHQgKiB2aWEgX19leHQ0X25ld19pbm9kZSgpIGFzIG9ubHkgbmV3IGlub2RlcyBjYW4gYmVcXG4rXFx0XFx0XFx0ICogZW5jcnlwdGVkLCBzbyB3ZSBtdXN0IHNldCB0aGUgaW5pdCBmbGFnIHNvXFxuK1xcdFxcdFxcdCAqIFNfREFYIGNhbiBiZSBkaXNhYmxlZC4gVGhpcyBpcyBhIGJpdCBmcmFnaWxlIGJ1dFxcbitcXHRcXHRcXHQgKiBzZWVtcyBsaWtlIHRoZSBlYXNpZXN0IHdheSB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgbGV0XFxuK1xcdFxcdFxcdCAqIHRoZSBEQVggZmxhZyBsaW5nZXIgd2hlbiBlbmNyeXB0aW9uIGlzIGVuYWJsZWQgYXNcXG4rXFx0XFx0XFx0ICogdGhhdCByZXN1bHQgaW4gd3JpdGVzIHNpbGVudGx5IGJ5cGFzc2luZyBlbmNyeXB0aW9uLlxcbiBcXHRcXHRcXHQgKi9cXG4tXFx0XFx0XFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGZhbHNlKTtcXG4rXFx0XFx0XFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGluaXQpO1xcbiBcXHRcXHR9XFxuIFxcdFxcdHJldHVybiByZXM7XFxuIFxcdH1cXG5AQCAtMjA5LDcgKzIxNiw3IEBAIHN0YXRpYyBpbnQgZXh0NF9zZXRfY29udGV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICpjdHgsIHNpemVfdCBsZW4sXFxuIFxcdFxcdCAqIFVwZGF0ZSBpbm9kZS1cXHUwMDNlaV9mbGFncyAtIFNfRU5DUllQVEVEIHdpbGwgYmUgZW5hYmxlZCxcXG4gXFx0XFx0ICogU19EQVggbWF5IGJlIGRpc2FibGVkXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRleHQ0X3NldF9pbm9kZV9mbGFncyhpbm9kZSwgZmFsc2UpO1xcbitcXHRcXHRleHQ0X3NldF9pbm9kZV9mbGFncyhpbm9kZSwgaW5pdCk7XFxuIFxcdFxcdHJlcyA9IGV4dDRfbWFya19pbm9kZV9kaXJ0eShoYW5kbGUsIGlub2RlKTtcXG4gXFx0XFx0aWYgKHJlcylcXG4gXFx0XFx0XFx0RVhUNF9FUlJPUl9JTk9ERShpbm9kZSwgXFxcIkZhaWxlZCB0byBtYXJrIGlub2RlIGRpcnR5XFxcIik7XFxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW5vZGUuYyBiL2ZzL2V4dDQvaW5vZGUuY1xcbmluZGV4IGNlOTk4MDdjNWY1YjJjLi5hNTcxNzk2NTUzNTNhZiAxMDA2NDRcXG4tLS0gYS9mcy9leHQ0L2lub2RlLmNcXG4rKysgYi9mcy9leHQ0L2lub2RlLmNcXG5AQCAtNTExMyw4ICs1MTEzLDYgQEAgdm9pZCBleHQ0X3NldF9pbm9kZV9mbGFncyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBib29sIGluaXQpXFxuIFxcdHVuc2lnbmVkIGludCBmbGFncyA9IEVYVDRfSShpbm9kZSktXFx1MDAzZWlfZmxhZ3M7XFxuIFxcdHVuc2lnbmVkIGludCBuZXdfZmwgPSAwO1xcbiBcXG4tXFx0V0FSTl9PTl9PTkNFKElTX0RBWChpbm9kZSkgXFx1MDAyNlxcdTAwMjYgaW5pdCk7XFxuLVxcbiBcXHRpZiAoZmxhZ3MgXFx1MDAyNiBFWFQ0X1NZTkNfRkwpXFxuIFxcdFxcdG5ld19mbCB8PSBTX1NZTkM7XFxuIFxcdGlmIChmbGFncyBcXHUwMDI2IEVYVDRfQVBQRU5EX0ZMKVxcbkBAIC01MTI5LDggKzUxMjcsMTIgQEAgdm9pZCBleHQ0X3NldF9pbm9kZV9mbGFncyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBib29sIGluaXQpXFxuIFxcdC8qIEJlY2F1c2Ugb2YgdGhlIHdheSBpbm9kZV9zZXRfZmxhZ3MoKSB3b3JrcyB3ZSBtdXN0IHByZXNlcnZlIFNfREFYXFxuIFxcdCAqIGhlcmUgaWYgYWxyZWFkeSBzZXQuICovXFxuIFxcdG5ld19mbCB8PSAoaW5vZGUtXFx1MDAzZWlfZmxhZ3MgXFx1MDAyNiBTX0RBWCk7XFxuLVxcdGlmIChpbml0IFxcdTAwMjZcXHUwMDI2IGV4dDRfc2hvdWxkX2VuYWJsZV9kYXgoaW5vZGUpKVxcbi1cXHRcXHRuZXdfZmwgfD0gU19EQVg7XFxuK1xcdGlmIChpbml0KSB7XFxuK1xcdFxcdGlmIChleHQ0X3Nob3VsZF9lbmFibGVfZGF4KGlub2RlKSlcXG4rXFx0XFx0XFx0bmV3X2ZsIHw9IFNfREFYO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdG5ld19mbCBcXHUwMDI2PSB+U19EQVg7XFxuK1xcdH1cXG4gXFxuIFxcdGlmIChmbGFncyBcXHUwMDI2IEVYVDRfRU5DUllQVF9GTClcXG4gXFx0XFx0bmV3X2ZsIHw9IFNfRU5DUllQVEVEO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMzozMDoyOC4zMDA3ODEwNThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0MzU1Nzc5MzQ3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGU19FTkNSWVBUSU9OXCIsXG4gICAgXCJGU19EQVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X3NldF9jb250ZXh0XCIsXG4gICAgXCJleHQ0X3NldF9pbm9kZV9mbGFnc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyB0aGUgREFYIGZsYWcgb24gZXh0NCBpbm9kZXMgd2hlbiBlbmNyeXB0aW9uIGlzIGVuYWJsZWQsIGZpeGluZyBhIGJ1ZyB3aGVyZSB0aGUgREFYIGZsYWcgY291bGQgbGluZ2VyIGFuZCBjYXVzZSB3cml0ZXMgdG8gYnlwYXNzIGVuY3J5cHRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI2MjRiYmFiMDAxMThhMzdiNDg3ZGEzZGQxMTViYmY4OGVlZjkzNTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAxMzozMDoyNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvY3J5cHRvLmMgYi9mcy9leHQ0L2NyeXB0by5jXG5pbmRleCBmNDFmMzIwZjQ0MzdiOS4uMmQ0MDkxMTRlMDJlN2YgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L2NyeXB0by5jXG4rKysgYi9mcy9leHQ0L2NyeXB0by5jXG5AQCAtMTM0LDYgKzEzNCw3IEBAIHN0YXRpYyBpbnQgZXh0NF9zZXRfY29udGV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICpjdHgsIHNpemVfdCBsZW4sXG4ge1xuIFx0aGFuZGxlX3QgKmhhbmRsZSA9IGZzX2RhdGE7XG4gXHRpbnQgcmVzLCByZXMyLCBjcmVkaXRzLCByZXRyaWVzID0gMDtcbitcdGJvb2wgaW5pdCA9IFNfSVNSRUcoaW5vZGUtXHUwMDNlaV9tb2RlKTtcbiBcbiBcdC8qXG4gXHQgKiBFbmNyeXB0aW5nIHRoZSByb290IGRpcmVjdG9yeSBpcyBub3QgYWxsb3dlZCBiZWNhdXNlIGUyZnNjayBleHBlY3RzXG5AQCAtMTc5LDEwICsxODAsMTYgQEAgc3RhdGljIGludCBleHQ0X3NldF9jb250ZXh0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKmN0eCwgc2l6ZV90IGxlbixcbiBcdFx0XHRleHQ0X2NsZWFyX2lub2RlX3N0YXRlKGlub2RlLFxuIFx0XHRcdFx0XHRFWFQ0X1NUQVRFX01BWV9JTkxJTkVfREFUQSk7XG4gXHRcdFx0Lypcbi1cdFx0XHQgKiBVcGRhdGUgaW5vZGUtXHUwMDNlaV9mbGFncyAtIFNfRU5DUllQVEVEIHdpbGwgYmUgZW5hYmxlZCxcbi1cdFx0XHQgKiBTX0RBWCBtYXkgYmUgZGlzYWJsZWRcbitcdFx0XHQgKiBVcGRhdGUgaW5vZGUtXHUwMDNlaV9mbGFncywgU19FTkNSWVBURUQgd2lsbCBiZSBlbmFibGVkLlxuK1x0XHRcdCAqIElmIHRoaXMgaXMgYSByZWd1bGFyIGlub2RlLCB0aGVuIHdlIG11c3QgYmUgY29taW5nXG4rXHRcdFx0ICogdmlhIF9fZXh0NF9uZXdfaW5vZGUoKSBhcyBvbmx5IG5ldyBpbm9kZXMgY2FuIGJlXG4rXHRcdFx0ICogZW5jcnlwdGVkLCBzbyB3ZSBtdXN0IHNldCB0aGUgaW5pdCBmbGFnIHNvXG4rXHRcdFx0ICogU19EQVggY2FuIGJlIGRpc2FibGVkLiBUaGlzIGlzIGEgYml0IGZyYWdpbGUgYnV0XG4rXHRcdFx0ICogc2VlbXMgbGlrZSB0aGUgZWFzaWVzdCB3YXkgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGxldFxuK1x0XHRcdCAqIHRoZSBEQVggZmxhZyBsaW5nZXIgd2hlbiBlbmNyeXB0aW9uIGlzIGVuYWJsZWQgYXNcbitcdFx0XHQgKiB0aGF0IHJlc3VsdCBpbiB3cml0ZXMgc2lsZW50bHkgYnlwYXNzaW5nIGVuY3J5cHRpb24uXG4gXHRcdFx0ICovXG4tXHRcdFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGZhbHNlKTtcbitcdFx0XHRleHQ0X3NldF9pbm9kZV9mbGFncyhpbm9kZSwgaW5pdCk7XG4gXHRcdH1cbiBcdFx0cmV0dXJuIHJlcztcbiBcdH1cbkBAIC0yMDksNyArMjE2LDcgQEAgc3RhdGljIGludCBleHQ0X3NldF9jb250ZXh0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKmN0eCwgc2l6ZV90IGxlbixcbiBcdFx0ICogVXBkYXRlIGlub2RlLVx1MDAzZWlfZmxhZ3MgLSBTX0VOQ1JZUFRFRCB3aWxsIGJlIGVuYWJsZWQsXG4gXHRcdCAqIFNfREFYIG1heSBiZSBkaXNhYmxlZFxuIFx0XHQgKi9cbi1cdFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGZhbHNlKTtcbitcdFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGluaXQpO1xuIFx0XHRyZXMgPSBleHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBpbm9kZSk7XG4gXHRcdGlmIChyZXMpXG4gXHRcdFx0RVhUNF9FUlJPUl9JTk9ERShpbm9kZSwgXCJGYWlsZWQgdG8gbWFyayBpbm9kZSBkaXJ0eVwiKTtcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmNcbmluZGV4IGNlOTk4MDdjNWY1YjJjLi5hNTcxNzk2NTUzNTNhZiAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvaW5vZGUuY1xuKysrIGIvZnMvZXh0NC9pbm9kZS5jXG5AQCAtNTExMyw4ICs1MTEzLDYgQEAgdm9pZCBleHQ0X3NldF9pbm9kZV9mbGFncyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBib29sIGluaXQpXG4gXHR1bnNpZ25lZCBpbnQgZmxhZ3MgPSBFWFQ0X0koaW5vZGUpLVx1MDAzZWlfZmxhZ3M7XG4gXHR1bnNpZ25lZCBpbnQgbmV3X2ZsID0gMDtcbiBcbi1cdFdBUk5fT05fT05DRShJU19EQVgoaW5vZGUpIFx1MDAyNlx1MDAyNiBpbml0KTtcbi1cbiBcdGlmIChmbGFncyBcdTAwMjYgRVhUNF9TWU5DX0ZMKVxuIFx0XHRuZXdfZmwgfD0gU19TWU5DO1xuIFx0aWYgKGZsYWdzIFx1MDAyNiBFWFQ0X0FQUEVORF9GTClcbkBAIC01MTI5LDggKzUxMjcsMTIgQEAgdm9pZCBleHQ0X3NldF9pbm9kZV9mbGFncyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBib29sIGluaXQpXG4gXHQvKiBCZWNhdXNlIG9mIHRoZSB3YXkgaW5vZGVfc2V0X2ZsYWdzKCkgd29ya3Mgd2UgbXVzdCBwcmVzZXJ2ZSBTX0RBWFxuIFx0ICogaGVyZSBpZiBhbHJlYWR5IHNldC4gKi9cbiBcdG5ld19mbCB8PSAoaW5vZGUtXHUwMDNlaV9mbGFncyBcdTAwMjYgU19EQVgpO1xuLVx0aWYgKGluaXQgXHUwMDI2XHUwMDI2IGV4dDRfc2hvdWxkX2VuYWJsZV9kYXgoaW5vZGUpKVxuLVx0XHRuZXdfZmwgfD0gU19EQVg7XG4rXHRpZiAoaW5pdCkge1xuK1x0XHRpZiAoZXh0NF9zaG91bGRfZW5hYmxlX2RheChpbm9kZSkpXG4rXHRcdFx0bmV3X2ZsIHw9IFNfREFYO1xuK1x0XHRlbHNlXG4rXHRcdFx0bmV3X2ZsIFx1MDAyNj0gflNfREFYO1xuK1x0fVxuIFxuIFx0aWYgKGZsYWdzIFx1MDAyNiBFWFQ0X0VOQ1JZUFRfRkwpXG4gXHRcdG5ld19mbCB8PSBTX0VOQ1JZUFRFRDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDEzOjMwOjI4LjMwMDc4MjI5OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MjU1OTUwMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gZXh0NCdzIEVuY3J5cHRpb24gYW5kIERBWCBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBmcy9leHQ0L2NyeXB0by5jYCBhbmQgYGZzL2V4dDQvaW5vZGUuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgd2l0aGluIGBleHQ0X3NldF9jb250ZXh0YC4gSXQncyBub3cgcGFzc2luZyBgU19JU1JFRyhpbm9kZS1cdTAwM2VpX21vZGUpYCB0byBgZXh0NF9zZXRfaW5vZGVfZmxhZ3NgLCB3aGljaCBpcyBhIGNoYW5nZSBmcm9tIHBhc3NpbmcgYGZhbHNlYC4gVGhhdCdzIHRoZSBrZXksIHRoYXQgYGluaXRgIHZhbHVlIGNoYW5nZS4gTG9va2luZyBkZWVwZXIsIHRoZSBwYXRjaCByZW1vdmVzIGEgYFdBUk5fT05fT05DRWAgZm9yIGBJU19EQVgoaW5vZGUpIFx1MDAyNlx1MDAyNiBpbml0YCBpbiBgZXh0NF9zZXRfaW5vZGVfZmxhZ3NgLCB3aGljaCBzdWdnZXN0cyB0aGV5J3JlIGFkZHJlc3Npbmcgc29tZSBpbnRlcmFjdGlvbiBpc3N1ZS4gQW5kLCB0aGV5J3ZlIGFsdGVyZWQgdGhlIGxvZ2ljIGZvciBob3cgYFNfREFYYCBmbGFnIGlzIHNldC4gSXQgbG9va3MgbGlrZSBpdCdzIGJlY29taW5nIGV4cGxpY2l0bHkgc2V0IHRvIG9mZiBpZiBgZXh0NF9zaG91bGRfZW5hYmxlX2RheGAgaXMgZmFsc2Ugd2l0aCB0aGUgaW5pdCB2YXJpYWJsZSB0cnVlLlxuXG5UaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGRlZmluaXRlbHkuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgZXh0NCwgZW5jcnlwdGlvbiwgKmFuZCogREFYLCBhbGwgaW4gdGhlIHNhbWUgYnJlYXRoLiBUaGlzIHNjcmVhbXMgXCJmdXp6IHRoaXMhXCIuIFRoZSBwb3RlbnRpYWwgZm9yIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBpcyBkZWZpbml0ZWx5IHRoZXJlLiBXZSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyB0aGF0IGFyZSBiZWluZyBtb2RpZmllZCwgd2hpY2ggYXBwZWFyIHRvIGJlIGBleHQ0X3NldF9jb250ZXh0YCBhbmQgYGV4dDRfc2V0X2lub2RlX2ZsYWdzYC4gVGhlc2Ugd2lsbCBiZSBvdXIgcHJpbWUgdGFyZ2V0cyBmb3IgYW55IGZ1enppbmcgY2FtcGFpZ24uXG5cbk5vdywgbGV0J3MgbWFrZSBzdXJlIHRoZSBjb25maWd1cmF0aW9uIGlzIGNvcnJlY3QuIFNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCBgZnMvZXh0NC9jcnlwdG8uY2AsIEknbSBhc3N1bWluZyB0aGF0IGl0IGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19GU19FTkNSWVBUSU9OYCBpcyBlbmFibGVkLiBOb3QgYENPTkZJR19FWFQ0X0ZTX0VOQ1JZUFRJT05gLiBJJ2xsIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYnkgbG9va2luZyBhdCB0aGUgYGZzL2V4dDQvTWFrZWZpbGVgIHRvIGNvbmZpcm0gdGhlIGNvbXBpbGUtdGltZSBkZXBlbmRlbmNpZXMuIFdlIHdpbGwgbmVlZCB0byBtYWtlIHN1cmUgd2UncmUgY29tcGlsaW5nIHdpdGggYENPTkZJR19GU19FTkNSWVBUSU9OYCBlbmFibGVkIGZvciBvdXIgZnV6emluZyBidWlsZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MzcsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMzozMDozNC43MjYzNzk4MjFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgyMjgzNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY3J5cHRvXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvTWFrZWZpbGU9MjA9ZXh0NC0kKENPTkZJR19GU19WRVJJVFkpXFx0XFx0Kz0gdmVyaXR5Lm9cXG5mcy9leHQ0L01ha2VmaWxlOjIxOmV4dDQtJChDT05GSUdfRlNfRU5DUllQVElPTilcXHRcXHQrPSBjcnlwdG8ub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMzozMDozNC43ODQ2MTI5ODlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTIzOTU1MTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIEZpbGVzeXN0ZW0gRW5jcnlwdGlvbiBhbmQgREFYKipcblxuUmlnaHQsIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBgQ09ORklHX0ZTX0VOQ1JZUFRJT05gLiBUaGF0J3MgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQuIE5vdywgdGhlIG1lbnRpb24gb2YgREFYIGhhcyBtZSB0aGlua2luZy4gV2l0aCBEQVggYW5kIGZpbGUgc3lzdGVtIGVuY3J5cHRpb24gaW52b2x2ZWQsIHRoZXJlJ3MgYSBzdHJvbmcgY2hhbmNlIHRoYXQgYENPTkZJR19GU19EQVhgIGlzIGFsc28gZ29pbmcgdG8gYmUgYSBrZXkgY29uc2lkZXJhdGlvbi4gV2UnbGwgbmVlZCB0byBjb25maXJtIGlmIERBWCBpcyByZWxldmFudCB0byB0aGlzIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLCBpdCdzIGxpa2VseSBsaW5rZWQsIHNvIGxldCdzIGNoZWNrIGZ1cnRoZXIgaW50byB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjEzLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTM6MzA6MzcuNzA4NTcwNzgxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3OTEzNjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dDRfc2hvdWxkX2VuYWJsZV9kYXhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9pbm9kZS5jPTUwODE9aW50IGV4dDRfZ2V0X2ZjX2lub2RlX2xvYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNpZ25lZCBsb25nIGlubyxcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy01MDg2LVxcbmZzL2V4dDQvaW5vZGUuYzo1MDg3OnN0YXRpYyBib29sIGV4dDRfc2hvdWxkX2VuYWJsZV9kYXgoc3RydWN0IGlub2RlICppbm9kZSlcXG5mcy9leHQ0L2lub2RlLmMtNTA4OC17XFxuLS1cXG5mcy9leHQ0L2lub2RlLmM9NTExMT12b2lkIGV4dDRfc2V0X2lub2RlX2ZsYWdzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGJvb2wgaW5pdClcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy01MTMwLVxcdGlmIChpbml0KSB7XFxuZnMvZXh0NC9pbm9kZS5jOjUxMzE6XFx0XFx0aWYgKGV4dDRfc2hvdWxkX2VuYWJsZV9kYXgoaW5vZGUpKVxcbmZzL2V4dDQvaW5vZGUuYy01MTMyLVxcdFxcdFxcdG5ld19mbCB8PSBTX0RBWDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTM6MzA6MzcuNzY2NDk0MTI5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4MjI4ODg4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkV4YW1pbmluZyBleHQ0J3MgREFYIEVuYWJsZW1lbnQqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsb2dpYyBiZWhpbmQgd2hlbiBgZXh0NGAgZW5hYmxlcyBEaXJlY3QgQWNjZXNzIChEQVgpLiBJJ20gaGVhZGluZyBkaXJlY3RseSB0byB0aGUgc291cmNlIGNvZGUg4oCTIHNwZWNpZmljYWxseSwgYGZzL2V4dDQvaW5vZGUuY2AuIFRoYXQncyB3aGVyZSBJJ2QgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgZGVjaXNpb24tbWFraW5nIGZvciBEQVggZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGBleHQ0YCBmaWxlc3lzdGVtLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBgZXh0NF9zaG91bGRfZW5hYmxlX2RheGAgZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gKnNob3VsZCogZW5jYXBzdWxhdGUgYWxsIHRoZSByZWxldmFudCBjaGVja3Mg4oCTIHdoZXRoZXIgdGhlIHVuZGVybHlpbmcgc3RvcmFnZSBzdXBwb3J0cyBpdCwgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgY29uZmlndXJlZCBhcHByb3ByaWF0ZWx5LCBhbmQgcG90ZW50aWFsbHkgYW55IGlub2RlLXNwZWNpZmljIGNvbnNpZGVyYXRpb25zIHRoYXQgbWlnaHQgaW5mbHVlbmNlIERBWCBlbmFibGVtZW50LiBMZXQncyBzZWUgd2hhdCB0aGUgaW1wbGVtZW50YXRpb24gaXMgYW5kIHdoYXQgY29uc2lkZXJhdGlvbnMgaXQgdGFrZXMgaW50byBhY2NvdW50LiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGFueSBwb3RlbnRpYWwgZWRnZSBjYXNlcyBvciBzdWJ0bGV0aWVzIHRoYXQgbWlnaHQgYmUgcHJlc2VudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA0OCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDEzOjMwOjQxLjg0ODc4NTUwOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MjA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9leHQ0L2lub2RlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTA4MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNTA4MDpcXHRcXG41MDgxOlxcdGludCBleHQ0X2dldF9mY19pbm9kZV9sb2Moc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8sXFxuNTA4MjpcXHRcXHRcXHRcXHQgIHN0cnVjdCBleHQ0X2lsb2MgKmlsb2MpXFxuNTA4MzpcXHR7XFxuNTA4NDpcXHRcXHRyZXR1cm4gX19leHQ0X2dldF9pbm9kZV9sb2Moc2IsIGlubywgTlVMTCwgaWxvYywgTlVMTCk7XFxuNTA4NTpcXHR9XFxuNTA4NjpcXHRcXG41MDg3OlxcdHN0YXRpYyBib29sIGV4dDRfc2hvdWxkX2VuYWJsZV9kYXgoc3RydWN0IGlub2RlICppbm9kZSlcXG41MDg4OlxcdHtcXG41MDg5OlxcdFxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0IoaW5vZGUtXFx1MDAzZWlfc2IpO1xcbjUwOTA6XFx0XFxuNTA5MTpcXHRcXHRpZiAodGVzdF9vcHQyKGlub2RlLVxcdTAwM2VpX3NiLCBEQVhfTkVWRVIpKVxcbjUwOTI6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbjUwOTM6XFx0XFx0aWYgKCFTX0lTUkVHKGlub2RlLVxcdTAwM2VpX21vZGUpKVxcbjUwOTQ6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbjUwOTU6XFx0XFx0aWYgKGV4dDRfc2hvdWxkX2pvdXJuYWxfZGF0YShpbm9kZSkpXFxuNTA5NjpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuNTA5NzpcXHRcXHRpZiAoZXh0NF9oYXNfaW5saW5lX2RhdGEoaW5vZGUpKVxcbjUwOTg6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbjUwOTk6XFx0XFx0aWYgKGV4dDRfdGVzdF9pbm9kZV9mbGFnKGlub2RlLCBFWFQ0X0lOT0RFX0VOQ1JZUFQpKVxcbjUxMDA6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbjUxMDE6XFx0XFx0aWYgKGV4dDRfdGVzdF9pbm9kZV9mbGFnKGlub2RlLCBFWFQ0X0lOT0RFX1ZFUklUWSkpXFxuNTEwMjpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuNTEwMzpcXHRcXHRpZiAoIXRlc3RfYml0KEVYVDRfRkxBR1NfQkRFVl9JU19EQVgsIFxcdTAwMjZzYmktXFx1MDAzZXNfZXh0NF9mbGFncykpXFxuNTEwNDpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuNTEwNTpcXHRcXHRpZiAodGVzdF9vcHQoaW5vZGUtXFx1MDAzZWlfc2IsIERBWF9BTFdBWVMpKVxcbjUxMDY6XFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuNTEwNzpcXHRcXG41MTA4OlxcdFxcdHJldHVybiBleHQ0X3Rlc3RfaW5vZGVfZmxhZyhpbm9kZSwgRVhUNF9JTk9ERV9EQVgpO1xcbjUxMDk6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMzozMDo0MS44NDkwMzkzOThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjM5Mjk5MjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCB3ZSBoYXZlIGhlcmUuXG5cbioqSW52ZXN0aWdhdGluZyBEQVggQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKlxuXG5BbHJpZ2h0LCBJJ20gdGFraW5nIGEgbG9vayBhdCB0aGlzIGNvZGUgYW5kIHNvbWV0aGluZydzIGltbWVkaWF0ZWx5IGp1bXBpbmcgb3V0LiBJdCBkb2Vzbid0IGFwcGVhciB0byBiZSBndWFyZGVkIGJ5IGEgYCNpZmRlZiBDT05GSUdfRlNfREFYYCBibG9jaywgd2hpY2ggaXMsIGdlbmVyYWxseSBzcGVha2luZywgcmVxdWlyZWQgZm9yIERBWCBmdW5jdGlvbmFsaXR5LiBOb3cgdGhhdCBzZWVtcyBvZGQuIEJ1dCBoYW5nIG9uLCBJIHNlZSB0aGUgdXNhZ2Ugb2YgYEVYVDRfRkxBR1NfQkRFVl9JU19EQVhgLiBIbW0uIEkgbmVlZCB0byBiZSBzdXJlLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBkb3VibGUtY2hlY2sgaWYgYENPTkZJR19GU19EQVhgIGlzIGFic29sdXRlbHkgbmVjZXNzYXJ5IGluIHRoaXMgY29udGV4dC4gVGhlcmUgaGFzIHRvIGJlIGEgcmVhc29uIHdoeSB0aGlzIHdhc24ndCBndWFyZGVkLiBMZXQncyBkaWcgaW4gYSBiaXQgZnVydGhlciB0byBzZWUgaG93IHRoaXMgYWxsIGNvbm5lY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODIzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMzozMDo0NS4wODgzNDE3MDlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2OTY3ODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19GU19EQVhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9leHQ0Lmg9MTA0OD1zdHJ1Y3QgZXh0NF9pbm9kZV9pbmZvIHtcXG4tLVxcbmZzL2V4dDQvZXh0NC5oLTEyNTgtI2RlZmluZSBFWFQ0X01PVU5UX05PTE9BRFxcdFxcdDB4MDAxMDBcXHQvKiBEb24ndCB1c2UgZXhpc3Rpbmcgam91cm5hbCovXFxuZnMvZXh0NC9leHQ0Lmg6MTI1OTojaWZkZWYgQ09ORklHX0ZTX0RBWFxcbmZzL2V4dDQvZXh0NC5oLTEyNjAtI2RlZmluZSBFWFQ0X01PVU5UX0RBWF9BTFdBWVNcXHRcXHQweDAwMjAwXFx0LyogRGlyZWN0IEFjY2VzcyAqL1xcbi0tXFxuZnMvZXh0NC9maWxlLmM9Njk9c3RhdGljIHNzaXplX3QgZXh0NF9kaW9fcmVhZF9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bylcXG4tLVxcbmZzL2V4dDQvZmlsZS5jLTEwMC1cXG5mcy9leHQ0L2ZpbGUuYzoxMDE6I2lmZGVmIENPTkZJR19GU19EQVhcXG5mcy9leHQ0L2ZpbGUuYy0xMDItc3RhdGljIHNzaXplX3QgZXh0NF9kYXhfcmVhZF9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bylcXG4tLVxcbmZzL2V4dDQvZmlsZS5jPTEzMD1zdGF0aWMgc3NpemVfdCBleHQ0X2ZpbGVfcmVhZF9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bylcXG4tLVxcbmZzL2V4dDQvZmlsZS5jLTEzOS1cXG5mcy9leHQ0L2ZpbGUuYzoxNDA6I2lmZGVmIENPTkZJR19GU19EQVhcXG5mcy9leHQ0L2ZpbGUuYy0xNDEtXFx0aWYgKElTX0RBWChpbm9kZSkpXFxuLS1cXG5mcy9leHQ0L2ZpbGUuYz01MTk9c3RhdGljIHNzaXplX3QgZXh0NF9kaW9fd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcXG4tLVxcbmZzL2V4dDQvZmlsZS5jLTY0OC1cXG5mcy9leHQ0L2ZpbGUuYzo2NDk6I2lmZGVmIENPTkZJR19GU19EQVhcXG5mcy9leHQ0L2ZpbGUuYy02NTAtc3RhdGljIHNzaXplX3RcXG4tLVxcbmZzL2V4dDQvZmlsZS5jPTcwNj1leHQ0X2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcXG4tLVxcbmZzL2V4dDQvZmlsZS5jLTcxNC1cXG5mcy9leHQ0L2ZpbGUuYzo3MTU6I2lmZGVmIENPTkZJR19GU19EQVhcXG5mcy9leHQ0L2ZpbGUuYy03MTYtXFx0aWYgKElTX0RBWChpbm9kZSkpXFxuLS1cXG5mcy9leHQ0L2ZpbGUuYy03MzctXFxuZnMvZXh0NC9maWxlLmM6NzM4OiNpZmRlZiBDT05GSUdfRlNfREFYXFxuZnMvZXh0NC9maWxlLmMtNzM5LXN0YXRpYyB2bV9mYXVsdF90IGV4dDRfZGF4X2h1Z2VfZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHVuc2lnbmVkIGludCBvcmRlcilcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0yMTcxPXN0YXRpYyBpbnQgZXh0NF9wYXJzZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBmc19wYXJhbWV0ZXIgKnBhcmFtKVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTIzNzItXFx0Y2FzZSBPcHRfZGF4X3R5cGU6XFxuZnMvZXh0NC9zdXBlci5jOjIzNzM6I2lmZGVmIENPTkZJR19GU19EQVhcXG5mcy9leHQ0L3N1cGVyLmMtMjM3NC1cXHR7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDEzOjMwOjQ1LjE0NTMyMTI1NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjA1NTU0Mjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIERBWCBhbmQgRW5jcnlwdGlvbioqXG5cbk9rYXksIHNvIHRvIGdldCBEQVggd29ya2luZyBwcm9wZXJseSwgSSBkZWZpbml0ZWx5IG5lZWQgYENPTkZJR19GU19EQVhgIGVuYWJsZWQuIE1ha2VzIHNlbnNlLiBBbmQgc2luY2UgSSdtIGxvb2tpbmcgYXQgZmlsZSBzeXN0ZW0gZW5jcnlwdGlvbiwgZW5hYmxpbmcgYEZTX0VOQ1JZUFRJT05gIGFsb25nc2lkZSBgRlNfREFYYCBzZWVtcyBsaWtlIGEgZ29vZCBtb3ZlLiBTb2xpZCBmb3VuZGF0aW9uLlxuXG5Ob3csIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGV4dDRfc2V0X2NvbnRleHRgIGFuZCBgZXh0NF9zZXRfaW5vZGVfZmxhZ3NgLiBJJ2xsIHNldCBteSBcIkZvY3VzU3ltYm9sc1wiIHRvIHRob3NlIGZ1bmN0aW9ucywgdGhvc2UgYXJlIHRoZSBrZXkgYXJlYXMgdG8gdW5kZXJzdGFuZC4gYGV4dDRfc2V0X2lub2RlX2ZsYWdzYCBpcyB1c2VkIHF1aXRlIGEgYml0IOKAkyBpdCdzIGV2ZXJ5d2hlcmUsIGl0IHNlZW1zIOKAkyBidXQgaXQncyBub3QgYSAqYmxhemluZyogaG90IHBhdGguIEl0IGNvbWVzIGludG8gcGxheSB3aGVuIGlub2RlIGZsYWdzIGdldCBhbHRlcmVkIG9yIGR1cmluZyBpbm9kZSBpbml0aWFsaXphdGlvbiwgc28gdGhlIGZyZXF1ZW5jeSBpcyBtb2RlcmF0ZS4gSSBjYW4gd29yayB3aXRoIHRoYXQuXG5cbmBleHQ0X3NldF9jb250ZXh0YCwgb24gdGhlIG90aGVyIGhhbmQsIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGFjdHVhbGx5IHNldHMgdGhlIGVuY3J5cHRpb24gY29udGV4dC4gVGhhdCdzIGEgY3JpdGljYWwgcGllY2UgZm9yIHRoaXMgcGF0Y2ggYW5kIGRlZmluaXRlbHkgZGVzZXJ2ZXMgYSBjbG9zZXIgbG9vay5cblxuSnVzdCB0byBiZSBzYWZlLCBJJ20gZ29pbmcgdG8gcnVuIGEgcXVpY2sgZG91YmxlLWNoZWNrIG9uIGBleHQ0X3NldF9pbm9kZV9mbGFnc2AgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbCBpbiB0ZXJtcyBvZiBwZXJmb3JtYW5jZSBpbXBhY3QuIEl0J3MgYSBnb29kIGhhYml0IHRvIHZlcmlmeSB0aG9zZSBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg0OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMzozMDo0OS4zNTA4Nzc4ODFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDY1MDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dDRfc2V0X2lub2RlX2ZsYWdzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvY3J5cHRvLmM9MTMyPXN0YXRpYyBpbnQgZXh0NF9zZXRfY29udGV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICpjdHgsIHNpemVfdCBsZW4sXFxuLS1cXG5mcy9leHQ0L2NyeXB0by5jLTE5MS1cXHRcXHRcXHQgKi9cXG5mcy9leHQ0L2NyeXB0by5jOjE5MjpcXHRcXHRcXHRleHQ0X3NldF9pbm9kZV9mbGFncyhpbm9kZSwgaW5pdCk7XFxuZnMvZXh0NC9jcnlwdG8uYy0xOTMtXFx0XFx0fVxcbi0tXFxuZnMvZXh0NC9jcnlwdG8uYy0yMTgtXFx0XFx0ICovXFxuZnMvZXh0NC9jcnlwdG8uYzoyMTk6XFx0XFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGluaXQpO1xcbmZzL2V4dDQvY3J5cHRvLmMtMjIwLVxcdFxcdHJlcyA9IGV4dDRfbWFya19pbm9kZV9kaXJ0eShoYW5kbGUsIGlub2RlKTtcXG4tLVxcbmZzL2V4dDQvZXh0NC5oPTMxNzk9ZXh0ZXJuIGludCBleHQ0X3B1bmNoX2hvbGUoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgpO1xcbmZzL2V4dDQvZXh0NC5oOjMxODA6ZXh0ZXJuIHZvaWQgZXh0NF9zZXRfaW5vZGVfZmxhZ3Moc3RydWN0IGlub2RlICosIGJvb2wgaW5pdCk7XFxuZnMvZXh0NC9leHQ0LmgtMzE4MS1leHRlcm4gaW50IGV4dDRfYWxsb2NfZGFfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUpO1xcbi0tXFxuZnMvZXh0NC9pYWxsb2MuYz05MzM9c3RydWN0IGlub2RlICpfX2V4dDRfbmV3X2lub2RlKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxcbi0tXFxuZnMvZXh0NC9pYWxsb2MuYy0xMjc2LVxcbmZzL2V4dDQvaWFsbG9jLmM6MTI3NzpcXHRleHQ0X3NldF9pbm9kZV9mbGFncyhpbm9kZSwgdHJ1ZSk7XFxuZnMvZXh0NC9pYWxsb2MuYy0xMjc4LVxcdGlmIChJU19ESVJTWU5DKGlub2RlKSlcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYz01MDg3PXN0YXRpYyBib29sIGV4dDRfc2hvdWxkX2VuYWJsZV9kYXgoc3RydWN0IGlub2RlICppbm9kZSlcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy01MTEwLVxcbmZzL2V4dDQvaW5vZGUuYzo1MTExOnZvaWQgZXh0NF9zZXRfaW5vZGVfZmxhZ3Moc3RydWN0IGlub2RlICppbm9kZSwgYm9vbCBpbml0KVxcbmZzL2V4dDQvaW5vZGUuYy01MTEyLXtcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYz01Mjc1PXN0cnVjdCBpbm9kZSAqX19leHQ0X2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8sXFxuLS1cXG5mcy9leHQ0L2lub2RlLmMtNTQxMi1cXHRlaS1cXHUwMDNlaV9mbGFncyA9IGxlMzJfdG9fY3B1KHJhd19pbm9kZS1cXHUwMDNlaV9mbGFncyk7XFxuZnMvZXh0NC9pbm9kZS5jOjU0MTM6XFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIHRydWUpO1xcbmZzL2V4dDQvaW5vZGUuYy01NDE0LVxcdC8qIERldGVjdCBpbnZhbGlkIGZsYWcgY29tYmluYXRpb24gLSBjYW4ndCBoYXZlIGJvdGggaW5saW5lIGRhdGEgYW5kIGV4dGVudHMgKi9cXG4tLVxcbmZzL2V4dDQvaW9jdGwuYz01OTA9c3RhdGljIGludCBleHQ0X2lvY3RsX3NldGZsYWdzKHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9leHQ0L2lvY3RsLmMtNjc3LVxcbmZzL2V4dDQvaW9jdGwuYzo2Nzg6XFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGZhbHNlKTtcXG5mcy9leHQ0L2lvY3RsLmMtNjc5LVxcbi0tXFxuZnMvZXh0NC92ZXJpdHkuYz0xOTE9c3RhdGljIGludCBleHQ0X2VuZF9lbmFibGVfdmVyaXR5KHN0cnVjdCBmaWxlICpmaWxwLCBjb25zdCB2b2lkICpkZXNjLFxcbi0tXFxuZnMvZXh0NC92ZXJpdHkuYy0yNDQtXFx0ZXh0NF9zZXRfaW5vZGVfZmxhZyhpbm9kZSwgRVhUNF9JTk9ERV9WRVJJVFkpO1xcbmZzL2V4dDQvdmVyaXR5LmM6MjQ1OlxcdGV4dDRfc2V0X2lub2RlX2ZsYWdzKGlub2RlLCBmYWxzZSk7XFxuZnMvZXh0NC92ZXJpdHkuYy0yNDYtXFx0ZXJyID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgXFx1MDAyNmlsb2MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMzozMDo0OS40MDgzNDkwMDlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc4MDU4OTI4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVGFyZ2V0IEZ1bmN0aW9ucyBmb3IgRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBjb25zaWRlciBgZXh0NF9zZXRfaW5vZGVfZmxhZ3NgIGJlY2F1c2UgaXQncyBjYWxsZWQgaW4gc2V2ZXJhbCBwbGFjZXM6IGBfX2V4dDRfbmV3X2lub2RlYCwgYF9fZXh0NF9pZ2V0YCwgYGV4dDRfaW9jdGxfc2V0ZmxhZ3NgLCBgZXh0NF9lbmRfZW5hYmxlX3Zlcml0eWAsIGFuZCBgZXh0NF9zZXRfY29udGV4dGAuIEl0J3Mgbm90IGEgY29yZSByZWFkL3dyaXRlIHBhdGgsIGJ1dCBpdCAqaXMqIGludm9sdmVkIGluIGV2ZXJ5IGlub2RlJ3MgbGlmZWN5Y2xlIOKAkyBjcmVhdGlvbiBvciBsb2FkaW5nLiBIb3dldmVyLCB0aGUgdXNlIG9mIGBfX2V4dDRfaWdldGAgZHVyaW5nIGRpc2sgcmVhZHMgaW50cm9kdWNlcyBhIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBjb25jZXJuLCB0aG91Z2ggaXQncyBzdGlsbCBhY2NlcHRhYmxlIGZvciBmdXp6aW5nIHNpbmNlIGl0J3Mgbm93aGVyZSBuZWFyIGFzIHBlcmZvcm1hbmNlLWNyaXRpY2FsIGFzIGBleHQ0X2ZpbGVfcmVhZF9pdGVyYC5cblxuQnV0LCB3YWl0Li4uIGBleHQ0X3NldF9jb250ZXh0YCBzZWVtcyBtdWNoIG1vcmUgZGlyZWN0bHkgbGlua2VkIHRvIHRoZSBwYXRjaGVkIGNvZGUuIFNpbmNlIHRoZSBtb2RpZmljYXRpb25zIGFyZSBmb2N1c2VkIG9uIHRoaXMgZnVuY3Rpb24sIGZvY3VzaW5nIHRoZSBmdXp6aW5nIGhlcmUgc2VlbXMgc3RyYXRlZ2ljYWxseSBzb3VuZC4gVGhlcmVmb3JlLCBJIHNob3VsZCBleHBsaWNpdGx5IGluY2x1ZGUgYGV4dDRfc2V0X2NvbnRleHRgIGFsb25nIHdpdGggYGV4dDRfc2V0X2lub2RlX2ZsYWdzYC5cblxuQWxyaWdodCwgYSBxdWljayByZXZpZXcgb2YgdGhlIGNvZGUgY29uZmlybWVkIHRoYXQgYGV4dDRfc2V0X2NvbnRleHRgIGFuZCBgZXh0NF9zZXRfaW5vZGVfZmxhZ3NgIGFyZSAqZXhhY3RseSogdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBtb2RpZmllZCBpbiB0aGUgcGF0Y2guIFRoYXQgc2ltcGxpZmllcyB0aGUgdGFyZ2V0aW5nLlxuXG5Ob3csIGxldCdzIHJldmlzaXQgdGhlIGNvbmZpZ3VyYXRpb24gY29uc2lkZXJhdGlvbnMuIEkgcmVjYWxsIGBGU19FTkNSWVBUSU9OYCBhbmQgYEZTX0RBWGAgYmVpbmcgcmVsZXZhbnQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24ndCBvdmVybG9vayBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlncy4gQWgsIHJpZ2h0ISBgQ09ORklHX0VYVDRfRlNfRU5DUllQVElPTmAgd2FzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgYENPTkZJR19GU19FTkNSWVBUSU9OYC4gVGhhdCdzIGltcG9ydGFudCB0byByZW1lbWJlci4gSSdsbCBkb3VibGUtY2hlY2sgdGhhdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjA2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDEzOjMwOjU1LjE4ODk0MDYxNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5MDgzMjQ1NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhUNF9GU19FTkNSWVBUSU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTM6MzA6NTcuNDc5NzgxOTYxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDg0ODg3NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBGaWxlc3lzdGVtIEVuY3J5cHRpb24gYW5kIERBWCBPcHRpb25zKipcblxuQWxyaWdodCwgdGhhdCBjb25maXJtYXRpb24gY2xpY2tzIGluOiB3ZSdyZSBkZWFsaW5nIHdpdGggYEZTX0VOQ1JZUFRJT05gLiBOb3csIHRoZSBjcnVjaWFsIHBhcnQgaXMgZmlndXJpbmcgb3V0IHRoZSBvcHRpbWFsIERBWCBjb25maWd1cmF0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBpZiBgRlNfREFYYCBieSBpdHNlbGYgaXMgZW5vdWdoIHRvIGNvdmVyIHRoZSByZXF1aXJlbWVudHMgaGVyZS4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhlIHVuZGVybHlpbmcgc3RvcmFnZSBhbmQgd29ya2xvYWRzIHRvIGJlIHN1cmUuIEl0IG1pZ2h0IGJlIHN1ZmZpY2llbnQgZm9yIHNvbWUgdXNlIGNhc2VzLCBzbyBsZXQncyBub3QganVtcCB0aGUgZ3VuIGFuZCBpbW1lZGlhdGVseSBvdmVyLWVuZ2luZWVyLlxuXG5JZiB0aGF0IHByb3ZlcyBpbnN1ZmZpY2llbnQsIHRoZW4gYSBkZWVwZXIgZGl2ZSBpbnRvIHRydWUgYERBWGAgbWlnaHQgYmUgbmVjZXNzYXJ5LiBCdXQgaG9sZCBvbi4uLiBqdXN0IGEgbW9tZW50LCBteSBtZW50YWwgbW9kZWwgcmVtaW5kcyBtZSBleHQ0IGRvZXNuJ3QgaGF2ZSBhIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb24gZm9yIGBFWFQ0X0ZTX0RBWGAuIEl0IHVzZXMgdGhlIG1haW4gYERBWGAgY29uZmlndXJhdGlvbi4gU28gSSBuZWVkIHRvIGtlZXAgdGhhdCBkaXN0aW5jdGlvbiBpbiBtaW5kIGFzIEkgYXNzZXNzIHRoZSBiZXN0IGltcGxlbWVudGF0aW9uLiBHb3R0YSByZW1lbWJlciB0aGUgbnVhbmNlcyBvZiB0aGUgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbiBiZWZvcmUgSSBnbyBtYWtpbmcgYW55IGRlc2lnbiBkZWNpc2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5MzMsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMzozMTowMS4yMjgyNzM5OTNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTEzMTM0MjAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYVDRfRlNfREFYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTM6MzE6MDMuMTE5NjAwMTAzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNzQ1Njk2NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBleHQ0IERBWCBCdWcgRml4KipcblxuT2theSwgc28gYEZTX0RBWGAgaXMgY29uZmlybWVkIGFzIHJlbGV2YW50IGhlcmUuIExldCdzIGJyZWFrIGRvd24gd2hhdCB3ZSBoYXZlLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGNyaXRpY2FsIGZpeCDigJMgYFdvcnRoRnV6emluZzogdHJ1ZWAgc3VnZ2VzdHMgdGhpcyBpcyBhIGhpZ2gtaW1wYWN0IGNoYW5nZS4gVGhlIHJlYXNvbmluZyBjb25maXJtcyB0aGF0IHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgbmFzdHkgYnVnOiBEQVggZmxhZ3MgcGVyc2lzdGluZyBpbmNvcnJlY3RseSB3aGVuIGVuY3J5cHRpb24gaXMgZW5hYmxlZCwgd2hpY2ggY2FuIGxlYWQgdG8gd3JpdGVzIGJ5cGFzc2luZyB0aGUgaW50ZW5kZWQgZW5jcnlwdGlvbi4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGV4dDQgZmlsZXN5c3RlbSwgZGlyZWN0bHkgaW1wYWN0aW5nIGRhdGEgaW50ZWdyaXR5IGFuZCBzZWN1cml0eSwgc28gd2UgbmVlZCB0byBiZSBvbiB0b3Agb2YgdGhpcy5cblxuVGhlIGtleSBmdW5jdGlvbnMgdG8gc2NydXRpbml6ZSBhcmUgYGV4dDRfc2V0X2NvbnRleHRgIGFuZCBgZXh0NF9zZXRfaW5vZGVfZmxhZ3NgLiBJJ2xsIHdhbnQgdG8gY2hlY2sgaG93IHRoZXkgaW50ZXJhY3QsIGFuZCBob3cgdGhlIERBWCBmbGFnIGlzIG1hbmlwdWxhdGVkIHdpdGhpbiB0aGVtLCBlc3BlY2lhbGx5IGluIHRoZSBjb250ZXh0IG9mIGVuY3J5cHRpb24uIEl0IG1ha2VzIHNlbnNlIHRoYXQgYEZTX0VOQ1JZUFRJT05gIGFuZCBgRlNfREFYYCBhcmUgdGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb25zIGhlcmUuIFRpbWUgdG8gZGl2ZSBpbnRvIGBmcy9leHQ0L2NyeXB0by5jYCBhbmQgdGFrZSBhIGxvb2sgYXQgYGV4dDRfc2V0X2NvbnRleHRgLiBMZXQncyBzZWUgaG93IHRoZXkgZml4ZWQgdGhpcyBwb3RlbnRpYWxseSBkYW5nZXJvdXMgb3ZlcnNpZ2h0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjUxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDEzOjMxOjA3LjM5NDE3MjI4NVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9leHQ0L2NyeXB0by5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEzMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEzMDpcXHR9XFxuIDEzMTpcXHRcXG4gMTMyOlxcdHN0YXRpYyBpbnQgZXh0NF9zZXRfY29udGV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICpjdHgsIHNpemVfdCBsZW4sXFxuIDEzMzpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR2b2lkICpmc19kYXRhKVxcbiAxMzQ6XFx0e1xcbiAxMzU6XFx0XFx0aGFuZGxlX3QgKmhhbmRsZSA9IGZzX2RhdGE7XFxuIDEzNjpcXHRcXHRpbnQgcmVzLCByZXMyLCBjcmVkaXRzLCByZXRyaWVzID0gMDtcXG4gMTM3OlxcdFxcdGJvb2wgaW5pdCA9IFNfSVNSRUcoaW5vZGUtXFx1MDAzZWlfbW9kZSk7XFxuIDEzODpcXHRcXG4gMTM5OlxcdFxcdC8qXFxuIDE0MDpcXHRcXHQgKiBFbmNyeXB0aW5nIHRoZSByb290IGRpcmVjdG9yeSBpcyBub3QgYWxsb3dlZCBiZWNhdXNlIGUyZnNjayBleHBlY3RzXFxuIDE0MTpcXHRcXHQgKiBsb3N0K2ZvdW5kIHRvIGV4aXN0IGFuZCBiZSB1bmVuY3J5cHRlZCwgYW5kIGVuY3J5cHRpbmcgdGhlIHJvb3RcXG4gMTQyOlxcdFxcdCAqIGRpcmVjdG9yeSB3b3VsZCBpbXBseSBlbmNyeXB0aW5nIHRoZSBsb3N0K2ZvdW5kIGRpcmVjdG9yeSBhcyB3ZWxsIGFzXFxuIDE0MzpcXHRcXHQgKiB0aGUgZmlsZW5hbWUgXFxcImxvc3QrZm91bmRcXFwiIGl0c2VsZi5cXG4gMTQ0OlxcdFxcdCAqL1xcbiAxNDU6XFx0XFx0aWYgKGlub2RlLVxcdTAwM2VpX2lubyA9PSBFWFQ0X1JPT1RfSU5PKVxcbiAxNDY6XFx0XFx0XFx0cmV0dXJuIC1FUEVSTTtcXG4gMTQ3OlxcdFxcbiAxNDg6XFx0XFx0aWYgKFdBUk5fT05fT05DRShJU19EQVgoaW5vZGUpIFxcdTAwMjZcXHUwMDI2IGlfc2l6ZV9yZWFkKGlub2RlKSkpXFxuIDE0OTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTM6MzE6MDcuMzk0MjYyODA1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzODU3OTA5NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uZmlndXJhdGlvbiBWZXJpZmljYXRpb24gYW5kIFNlbGVjdGlvbioqXG5cbk9rYXksIHRoaXMgc2VlbXMgcmlnaHQsIHRoYXQncyBhIGdvb2Qgc3RhcnQuIEJ1dCBiZWZvcmUgSSBsb2NrIHRoaXMgaW4sIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGx1cmtpbmcgaW4gdGhlIHNoYWRvd3MuIFRoZSBvYnZpb3VzIG9uZSwgYENPTkZJR19FWFQ0X0ZTYCwgaXMgYWxyZWFkeSBjbGVhci4gSSBzZWUgYGZzL2V4dDQvY3J5cHRvLmNgIGlzIGJlaW5nIHVzZWQsIHNvIGBDT05GSUdfRlNfRU5DUllQVElPTmAgaXMgZGVmaW5pdGVseSBhIHJlcXVpcmVtZW50LiBBbmQgSSBzcG90IHRoZSBuZWVkIGZvciBgSVNfREFYYCBhbmQgdGhlIGBleHQ0X3Nob3VsZF9lbmFibGVfZGF4YCBsb2dpYywgc28gdGhhdCBtZWFucyBgQ09ORklHX0ZTX0RBWGAgaXMgYWxzbyBlc3NlbnRpYWwuIEFscmlnaHQsIHllcywgSSdsbCBkZWZpbml0ZWx5IGluY29ycG9yYXRlIGJvdGggYEZTX0VOQ1JZUFRJT05gIGFuZCBgRlNfREFYYCBpbiB0aGUgY29uZmlndXJhdGlvbi4gTm93LCBsZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwMDEsIk91dHB1dFRva2VucyI6MTEyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTM6MzE6MTEuNzgwMDU2NDEzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg1MTQ2NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZTX0VOQ1JZUFRJT05cIixcbiAgICBcIkZTX0RBWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfc2V0X2NvbnRleHRcIixcbiAgICBcImV4dDRfc2V0X2lub2RlX2ZsYWdzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIHRoZSBEQVggZmxhZyBvbiBleHQ0IGlub2RlcyB3aGVuIGVuY3J5cHRpb24gaXMgZW5hYmxlZCwgZml4aW5nIGEgYnVnIHdoZXJlIHRoZSBEQVggZmxhZyBjb3VsZCBsaW5nZXIgYW5kIGNhdXNlIHdyaXRlcyB0byBieXBhc3MgZW5jcnlwdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRlNfRU5DUllQVElPTlwiLFxuICAgIFwiRlNfREFYXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9zZXRfY29udGV4dFwiLFxuICAgIFwiZXh0NF9zZXRfaW5vZGVfZmxhZ3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNldHRpbmcgdGhlIERBWCBmbGFnIG9uIGV4dDQgaW5vZGVzIHdoZW4gZW5jcnlwdGlvbiBpcyBlbmFibGVkLCBmaXhpbmcgYSBidWcgd2hlcmUgdGhlIERBWCBmbGFnIGNvdWxkIGxpbmdlciBhbmQgY2F1c2Ugd3JpdGVzIHRvIGJ5cGFzcyBlbmNyeXB0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGV4dDQgZmlsZXN5c3RlbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2562[1] Phase: Succeeded StartedAt: 2026-07-24 13:31:34 +0000 UTC FinishedAt: 2026-07-24 13:31:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-24 13:31:34 +0000 UTC FinishedAt: 2026-07-24 13:31:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[2] Phase: Succeeded StartedAt: 2026-07-24 13:31:34 +0000 UTC FinishedAt: 2026-07-24 18:19:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-24 13:31:34 +0000 UTC FinishedAt: 2026-07-24 18:19:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-24 13:31:34 +0000 UTC FinishedAt: 2026-07-24 13:31:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-24 13:31:34 +0000 UTC FinishedAt: 2026-07-24 13:31:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowc2562/series-workflowc2562-convert-artifact-1998372533/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-24 13:31:44 +0000 UTC FinishedAt: 2026-07-24 14:09:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-24 13:31:44 +0000 UTC FinishedAt: 2026-07-24 14:09:29 +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:*8ee6971d-985d-4b51-8e2e-b84e0f1d66f6,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-workflowc2562/series-workflowc2562-convert-artifact-1998372533/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": "269b1ac5-426c-4e28-9171-ce9e28e89251", "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-workflowc2562/series-workflowc2562-build-action-3431627419/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-24 13:31:44 +0000 UTC FinishedAt: 2026-07-24 14:09: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:*8ee6971d-985d-4b51-8e2e-b84e0f1d66f6,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-workflowc2562/series-workflowc2562-convert-artifact-1998372533/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": "269b1ac5-426c-4e28-9171-ce9e28e89251", "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-workflowc2562/series-workflowc2562-build-action-3431627419/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-24 14:09:29 +0000 UTC FinishedAt: 2026-07-24 14:09:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-24 14:09:29 +0000 UTC FinishedAt: 2026-07-24 14:09:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-24 14:09:29 +0000 UTC FinishedAt: 2026-07-24 14:09:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-24 14:09:29 +0000 UTC FinishedAt: 2026-07-24 14:09:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowc2562/series-workflowc2562-convert-artifact-957134096/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-24 14:09:40 +0000 UTC FinishedAt: 2026-07-24 14:11:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-24 14:09:40 +0000 UTC FinishedAt: 2026-07-24 14:11:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*269b1ac5-426c-4e28-9171-ce9e28e89251,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-workflowc2562/series-workflowc2562-build-action-3431627419/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-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-24 14:11:36 +0000 UTC FinishedAt: 2026-07-24 14:11:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-24 14:11:36 +0000 UTC FinishedAt: 2026-07-24 14:11:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-24 14:11:36 +0000 UTC FinishedAt: 2026-07-24 15:14:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-24 14:11:36 +0000 UTC FinishedAt: 2026-07-24 15:14:06 +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:*8ee6971d-985d-4b51-8e2e-b84e0f1d66f6,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-workflowc2562/series-workflowc2562-convert-artifact-957134096/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": "32cfaea6-b89d-4bfb-a5d1-847039a13a77", "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-workflowc2562/series-workflowc2562-build-action-1267904908/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-24 14:11:36 +0000 UTC FinishedAt: 2026-07-24 15:13:56 +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:*8ee6971d-985d-4b51-8e2e-b84e0f1d66f6,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-workflowc2562/series-workflowc2562-convert-artifact-957134096/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": "32cfaea6-b89d-4bfb-a5d1-847039a13a77", "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-workflowc2562/series-workflowc2562-build-action-1267904908/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-24 15:14:06 +0000 UTC FinishedAt: 2026-07-24 15:14:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-24 15:14:06 +0000 UTC FinishedAt: 2026-07-24 15:14:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-24 15:14:06 +0000 UTC FinishedAt: 2026-07-24 15:16:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-24 15:14:06 +0000 UTC FinishedAt: 2026-07-24 15:16:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*32cfaea6-b89d-4bfb-a5d1-847039a13a77,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-workflowc2562/series-workflowc2562-build-action-1267904908/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-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-24 15:16:37 +0000 UTC FinishedAt: 2026-07-24 18:19:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-24 15:16:37 +0000 UTC FinishedAt: 2026-07-24 18:19:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*269b1ac5-426c-4e28-9171-ce9e28e89251,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*32cfaea6-b89d-4bfb-a5d1-847039a13a77,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-workflowc2562/series-workflowc2562-build-action-3431627419/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-workflowc2562/series-workflowc2562-build-action-1267904908/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-24 15:16:37 +0000 UTC FinishedAt: 2026-07-24 15:16:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-24 15:16:37 +0000 UTC FinishedAt: 2026-07-24 15:16:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowc2562/series-workflowc2562-convert-artifact-2400635913/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-24 15:16:37 +0000 UTC FinishedAt: 2026-07-24 15:16:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-24 15:16:37 +0000 UTC FinishedAt: 2026-07-24 15:16:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-24 15:16:37 +0000 UTC FinishedAt: 2026-07-24 15:16:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-24 15:16:47 +0000 UTC FinishedAt: 2026-07-24 18:19:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2562[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_set_context","ext4_set_inode_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"48a5a7ab8d6ab7090564339e039c421f315de912","config_name":"upstream-apparmor-kasan.config","enable_configs":["FS_ENCRYPTION","FS_DAX"],"series_id":"374e2824-a1ba-4cc5-94c2-162ca040a07a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-24 15:16:47 +0000 UTC FinishedAt: 2026-07-24 18:19:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*269b1ac5-426c-4e28-9171-ce9e28e89251,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*32cfaea6-b89d-4bfb-a5d1-847039a13a77,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-workflowc2562/series-workflowc2562-build-action-3431627419/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-workflowc2562/series-workflowc2562-build-action-1267904908/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-workflowc2562/series-workflowc2562-convert-artifact-2400635913/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}