Name: series-workflowgpzxn Phase: Succeeded StartedAt: 2026-06-23 16:14:35 +0000 UTC FinishedAt: 2026-06-23 20:23:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[0] Phase: Succeeded StartedAt: 2026-06-23 16:14:35 +0000 UTC FinishedAt: 2026-06-23 16:27:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[0].run-triage Phase: Succeeded StartedAt: 2026-06-23 16:14:35 +0000 UTC FinishedAt: 2026-06-23 16:27:39 +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": "079a028d6327e68cfa5d38b36123637b321c19a7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS", "JBD2" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "079a028d6327e68cfa5d38b36123637b321c19a7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS", "JBD2" ], "series_id": "0422c739-70ff-4466-a569-f4cb59fe4c83" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "jbd2_journal_commit_transaction", "ext4_init_journal_params" ], "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+CgkJCTx0ZD4yMDI2LzA2LzIzIDE2OjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OywKICAgICYjMzQ7SkJEMiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2piZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb24mIzM0OywKICAgICYjMzQ7ZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBuZXcgbW91bnQgb3B0aW9uIGBkYXRhX2Vycj1hYm9ydGAgdG8gZXh0NCwgd2hpY2ggc2V0cyBhIG5ldyBmbGFnIGBKQkQyX0FCT1JUX09OX0RBVEFfRVJSYCBpbiBqYmQyLiBXaGVuIHRoaXMgZmxhZyBpcyBzZXQsIGpiZDIgd2lsbCBhYm9ydCB0aGUgam91cm5hbCBpZiB0aGVyZSBhcmUgSU8gZXJyb3JzIGR1cmluZyBmaWxlIGRhdGEgZmx1c2hpbmcgaW4gYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgdGhlIGVycm9yIGhhbmRsaW5nIGJlaGF2aW9yIG9mIGV4dDQgYW5kIGpiZDIsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE2OjI2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODhkZGRlYWFkNTg5ODk2MjJjN2M4MDllODZiOTI1MmY1OGZhY2Y1ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDIzIDE2OjI2OjQwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvc3VwZXIuYyBiL2ZzL2V4dDQvc3VwZXIuY1xuaW5kZXggNzI4MzEwOGQ3NjA5MTcuLmRlMzQ0OTBhNWI2ODBjIDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9zdXBlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L3N1cGVyLmNcbkBAIC01ODc1LDYgJiM0Mzs1ODc1LDEwIEBAIHN0YXRpYyB2b2lkIGV4dDRfaW5pdF9qb3VybmFsX3BhcmFtcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBqb3VybmFsX3QgKmpvdXJuYWwpXG4gXHRcdGpvdXJuYWwtXHUwMDNlal9mbGFncyB8PSBKQkQyX0JBUlJJRVI7XG4gXHRlbHNlXG4gXHRcdGpvdXJuYWwtXHUwMDNlal9mbGFncyBcdTAwMjY9IH5KQkQyX0JBUlJJRVI7XG4mIzQzO1x0aWYgKHRlc3Rfb3B0KHNiLCBEQVRBX0VSUl9BQk9SVCkpXG4mIzQzO1x0XHRqb3VybmFsLVx1MDAzZWpfZmxhZ3MgfD0gSkJEMl9BQk9SVF9PTl9EQVRBX0VSUjtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRqb3VybmFsLVx1MDAzZWpfZmxhZ3MgXHUwMDI2PSB+SkJEMl9BQk9SVF9PTl9EQVRBX0VSUjtcbiBcdC8qXG4gXHQgKiBBbHdheXMgZW5hYmxlIGpvdXJuYWwgY3ljbGUgcmVjb3JkIG9wdGlvbiwgbGV0dGluZyB0aGUgam91cm5hbFxuIFx0ICogcmVjb3JkcyBsb2cgdHJhbnNhY3Rpb25zIGNvbnRpbnVvdXNseSBiZXR3ZWVuIGVhY2ggbW91bnQuXG5kaWZmIC0tZ2l0IGEvZnMvamJkMi9jb21taXQuYyBiL2ZzL2piZDIvY29tbWl0LmNcbmluZGV4IGQ4NTc3NzI1YTJmYmI1Li40OWFjYzlkMDgwOWViYiAxMDA2NDRcbi0tLSBhL2ZzL2piZDIvY29tbWl0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2piZDIvY29tbWl0LmNcbkBAIC03NjgsNiAmIzQzOzc2OCw4IEBAIHZvaWQgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbihqb3VybmFsX3QgKmpvdXJuYWwpXG4gXHRcdHByaW50ayhLRVJOX1dBUk5JTkdcbiBcdFx0XHRcJiMzNDtKQkQyOiBEZXRlY3RlZCBJTyBlcnJvcnMgJWQgd2hpbGUgZmx1c2hpbmcgZmlsZSBkYXRhIG9uICVzXFxuXCYjMzQ7LFxuIFx0XHRcdGVyciwgam91cm5hbC1cdTAwM2VqX2Rldm5hbWUpO1xuJiM0MztcdFx0aWYgKGpvdXJuYWwtXHUwMDNlal9mbGFncyBcdTAwMjYgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUilcbiYjNDM7XHRcdFx0amJkMl9qb3VybmFsX2Fib3J0KGpvdXJuYWwsIGVycik7XG4gXHRcdGVyciA9IDA7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9qYmQyLmggYi9pbmNsdWRlL2xpbnV4L2piZDIuaFxuaW5kZXggN2U3ODVhYTZkMzVkNjUuLmUzOTY3OTY1NmRlNjYwIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9qYmQyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvamJkMi5oXG5AQCAtMTQxMCw2ICYjNDM7MTQxMCw3IEBAIEpCRDJfRkVBVFVSRV9JTkNPTVBBVF9GVU5DUyhmYXN0X2NvbW1pdCxcdEZBU1RfQ09NTUlUKVxuICNkZWZpbmUgSkJEMl9GTFVTSEVEXHQweDAwOFx0LyogVGhlIGpvdXJuYWwgc3VwZXJibG9jayBoYXMgYmVlbiBmbHVzaGVkICovXG4gI2RlZmluZSBKQkQyX0xPQURFRFx0MHgwMTBcdC8qIFRoZSBqb3VybmFsIHN1cGVyYmxvY2sgaGFzIGJlZW4gbG9hZGVkICovXG4gI2RlZmluZSBKQkQyX0JBUlJJRVJcdDB4MDIwXHQvKiBVc2UgSURFIGJhcnJpZXJzICovXG4mIzQzOyNkZWZpbmUgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUlx0MHgwNDBcdC8qIEFib3J0IHRoZSBqb3VybmFsIG9uIGZpbGUgZGF0YSB3cml0ZSBlcnJvcnMgKi9cbiAjZGVmaW5lIEpCRDJfQ1lDTEVfUkVDT1JEXHRcdDB4MDgwXHQvKiBKb3VybmFsIGN5Y2xlZCByZWNvcmQgbG9nIG9uXG4gXHRcdFx0XHRcdFx0ICogY2xlYW4gYW5kIGVtcHR5IGZpbGVzeXN0ZW1cbiBcdFx0XHRcdFx0XHQgKiBsb2dnaW5nIGFyZWEgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNjoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDssCiAgICAmIzM0O0pCRDImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uJiMzNDssCiAgICAmIzM0O2V4dDRfaW5pdF9qb3VybmFsX3BhcmFtcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IG1vdW50IG9wdGlvbiBgZGF0YV9lcnI9YWJvcnRgIHRvIGV4dDQsIHdoaWNoIHNldHMgYSBuZXcgZmxhZyBgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUmAgaW4gamJkMi4gV2hlbiB0aGlzIGZsYWcgaXMgc2V0LCBqYmQyIHdpbGwgYWJvcnQgdGhlIGpvdXJuYWwgaWYgdGhlcmUgYXJlIElPIGVycm9ycyBkdXJpbmcgZmlsZSBkYXRhIGZsdXNoaW5nIGluIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBlcnJvciBoYW5kbGluZyBiZWhhdmlvciBvZiBleHQ0IGFuZCBqYmQyLCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODhkZGRlYWFkNTg5ODk2MjJjN2M4MDllODZiOTI1MmY1OGZhY2Y1ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDIzIDE2OjI2OjQwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9zdXBlci5jIGIvZnMvZXh0NC9zdXBlci5jCmluZGV4IDcyODMxMDhkNzYwOTE3Li5kZTM0NDkwYTViNjgwYyAxMDA2NDQKLS0tIGEvZnMvZXh0NC9zdXBlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvc3VwZXIuYwpAQCAtNTg3NSw2ICYjNDM7NTg3NSwxMCBAQCBzdGF0aWMgdm9pZCBleHQ0X2luaXRfam91cm5hbF9wYXJhbXMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgam91cm5hbF90ICpqb3VybmFsKQogCQlqb3VybmFsLSZndDtqX2ZsYWdzIHw9IEpCRDJfQkFSUklFUjsKIAllbHNlCiAJCWpvdXJuYWwtJmd0O2pfZmxhZ3MgJmFtcDs9IH5KQkQyX0JBUlJJRVI7CiYjNDM7CWlmICh0ZXN0X29wdChzYiwgREFUQV9FUlJfQUJPUlQpKQomIzQzOwkJam91cm5hbC0mZ3Q7al9mbGFncyB8PSBKQkQyX0FCT1JUX09OX0RBVEFfRVJSOwomIzQzOwllbHNlCiYjNDM7CQlqb3VybmFsLSZndDtqX2ZsYWdzICZhbXA7PSB+SkJEMl9BQk9SVF9PTl9EQVRBX0VSUjsKIAkvKgogCSAqIEFsd2F5cyBlbmFibGUgam91cm5hbCBjeWNsZSByZWNvcmQgb3B0aW9uLCBsZXR0aW5nIHRoZSBqb3VybmFsCiAJICogcmVjb3JkcyBsb2cgdHJhbnNhY3Rpb25zIGNvbnRpbnVvdXNseSBiZXR3ZWVuIGVhY2ggbW91bnQuCmRpZmYgLS1naXQgYS9mcy9qYmQyL2NvbW1pdC5jIGIvZnMvamJkMi9jb21taXQuYwppbmRleCBkODU3NzcyNWEyZmJiNS4uNDlhY2M5ZDA4MDllYmIgMTAwNjQ0Ci0tLSBhL2ZzL2piZDIvY29tbWl0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvamJkMi9jb21taXQuYwpAQCAtNzY4LDYgJiM0Mzs3NjgsOCBAQCB2b2lkIGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb24oam91cm5hbF90ICpqb3VybmFsKQogCQlwcmludGsoS0VSTl9XQVJOSU5HCiAJCQkmIzM0O0pCRDI6IERldGVjdGVkIElPIGVycm9ycyAlZCB3aGlsZSBmbHVzaGluZyBmaWxlIGRhdGEgb24gJXNcbiYjMzQ7LAogCQkJZXJyLCBqb3VybmFsLSZndDtqX2Rldm5hbWUpOwomIzQzOwkJaWYgKGpvdXJuYWwtJmd0O2pfZmxhZ3MgJmFtcDsgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUikKJiM0MzsJCQlqYmQyX2pvdXJuYWxfYWJvcnQoam91cm5hbCwgZXJyKTsKIAkJZXJyID0gMDsKIAl9CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvamJkMi5oIGIvaW5jbHVkZS9saW51eC9qYmQyLmgKaW5kZXggN2U3ODVhYTZkMzVkNjUuLmUzOTY3OTY1NmRlNjYwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2piZDIuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2piZDIuaApAQCAtMTQxMCw2ICYjNDM7MTQxMCw3IEBAIEpCRDJfRkVBVFVSRV9JTkNPTVBBVF9GVU5DUyhmYXN0X2NvbW1pdCwJRkFTVF9DT01NSVQpCiAjZGVmaW5lIEpCRDJfRkxVU0hFRAkweDAwOAkvKiBUaGUgam91cm5hbCBzdXBlcmJsb2NrIGhhcyBiZWVuIGZsdXNoZWQgKi8KICNkZWZpbmUgSkJEMl9MT0FERUQJMHgwMTAJLyogVGhlIGpvdXJuYWwgc3VwZXJibG9jayBoYXMgYmVlbiBsb2FkZWQgKi8KICNkZWZpbmUgSkJEMl9CQVJSSUVSCTB4MDIwCS8qIFVzZSBJREUgYmFycmllcnMgKi8KJiM0MzsjZGVmaW5lIEpCRDJfQUJPUlRfT05fREFUQV9FUlIJMHgwNDAJLyogQWJvcnQgdGhlIGpvdXJuYWwgb24gZmlsZSBkYXRhIHdyaXRlIGVycm9ycyAqLwogI2RlZmluZSBKQkQyX0NZQ0xFX1JFQ09SRAkJMHgwODAJLyogSm91cm5hbCBjeWNsZWQgcmVjb3JkIGxvZyBvbgogCQkJCQkJICogY2xlYW4gYW5kIGVtcHR5IGZpbGVzeXN0ZW0KIAkJCQkJCSAqIGxvZ2dpbmcgYXJlYSAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzY2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBmcy9leHQ0L3N1cGVyLmNgLCBgZnMvamJkMi9jb21taXQuY2AsIGFuZCBgaW5jbHVkZS9saW51eC9qYmQyLmhgLiBJdCBzZWVtcyB3ZSYjMzk7cmUgYWRkaW5nIGEgbmV3IGZsYWcsIGBKQkQyX0FCT1JUX09OX0RBVEFfRVJSYCwgdG8gYGpiZDJgLiBGcm9tIG15IHF1aWNrIHNjYW4sIGl0IGxvb2tzIGxpa2UgdGhpcyBmbGFnIGlzIHNldCBpbiBgZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zYCBpZiB0aGUgYERBVEFfRVJSX0FCT1JUYCBvcHRpb24gaXMgZW5hYmxlZCBpbiB0aGUgZXh0NCBzdXBlcmJsb2NrLiAgQ3J1Y2lhbGx5LCBpdCBzZWVtcyB0aGF0IGlmIHRoaXMgZmxhZyBpcyBzZXQgKmFuZCogdGhlcmUgYXJlIEkvTyBlcnJvcnMgd2hlbiBmbHVzaGluZyBmaWxlIGRhdGEgZHVyaW5nIGEgam91cm5hbCBjb21taXQgaW4gYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gLCB0aGUgam91cm5hbCBpcyB0aGVuIGFib3J0ZWQgdmlhIGEgY2FsbCB0byBgamJkMl9qb3VybmFsX2Fib3J0KClgLgoKVGhpcyBpcyBkZWZpbml0ZWx5IGEgKmZ1bmN0aW9uYWwqIGNoYW5nZTsgaXQmIzM5O3MgYWx0ZXJpbmcgdGhlIGVycm9yIGhhbmRsaW5nIGJlaGF2aW9yIG9mIGV4dDQgYW5kIGpiZDIgd2hlbiBkYXRhIGludGVncml0eSBpc3N1ZXMgc3VyZmFjZS4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgYW5kIHJhaXNlcyB0aGUgaW1tZWRpYXRlIG5lZWQgdG8gdGhvcm91Z2hseSB0ZXN0IHRoaXMsIGxpa2VseSBieSBmdXp6aW5nIGl0IHRvIHN0cmVzcyBkaWZmZXJlbnQgc2NlbmFyaW9zLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQ6IGBleHQ0X2luaXRfam91cm5hbF9wYXJhbXNgIGFuZCBgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbmAuIEkgbmVlZCB0byBzb2xpZGlmeSB0aGUgY2FsbCBwYXRocy4gYGV4dDRfaW5pdF9qb3VybmFsX3BhcmFtc2AgaXMsIGFzIGV4cGVjdGVkLCBpbnZva2VkIGR1cmluZyB0aGUgbW91bnQgYW5kIHJlbW91bnQgcHJvY2Vzc2VzLiBBbmQgYXMgSSByZWNhbGwsIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBpcyBjYWxsZWQgYnkgdGhlIGpiZDIgY29tbWl0IHRocmVhZCwgd2hpY2ggaXMgZ29vZCB0byBrbm93IGZyb20gYSB0aW1pbmcgcGVyc3BlY3RpdmUuCgpOb3csIHRvIGRldGVybWluZSBpZiB0aGlzIG5ldyBmZWF0dXJlIGlzIG1vdW50LW9wdGlvbi1kcml2ZW4sIG9yIGlmIGl0IGlzIGFsd2F5cyBlbmFibGVkLiBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGlmIGBEQVRBX0VSUl9BQk9SVGAgaXMgYSBtb3VudCBvcHRpb24gYnkgc2VhcmNoaW5nIGZvciB0aGF0IHN0cmluZyB1c2luZyBteSBwcmVmZXJyZWQgdG9vbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtEQVRBX0VSUl9BQk9SVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9leHQ0Lmg9MTAzMD1zdHJ1Y3QgZXh0NF9pbm9kZV9pbmZvIHtcbi0tXG5mcy9leHQ0L2V4dDQuaC0xMjU0LSNkZWZpbmUgRVhUNF9NT1VOVF9ERUxBTExPQ1x0XHQweDgwMDAwMDAgLyogRGVsYWxsb2Mgc3VwcG9ydCAqL1xuZnMvZXh0NC9leHQ0Lmg6MTI1NTojZGVmaW5lIEVYVDRfTU9VTlRfREFUQV9FUlJfQUJPUlRcdDB4MTAwMDAwMDAgLyogQWJvcnQgb24gZmlsZSBkYXRhIHdyaXRlICovXG5mcy9leHQ0L2V4dDQuaC0xMjU2LSNkZWZpbmUgRVhUNF9NT1VOVF9CTE9DS19WQUxJRElUWVx0MHgyMDAwMDAwMCAvKiBCbG9jayB2YWxpZGl0eSBjaGVja2luZyAqL1xuLS1cbmZzL2V4dDQvcGFnZS1pby5jPTE3NT1zdGF0aWMgaW50IGV4dDRfZW5kX2lvX2VuZChleHQ0X2lvX2VuZF90ICppb19lbmQpXG4tLVxuZnMvZXh0NC9wYWdlLWlvLmMtMTk1LVxuZnMvZXh0NC9wYWdlLWlvLmM6MTk2Olx0XHRpZiAodGVzdF9vcHQoc2IsIERBVEFfRVJSX0FCT1JUKSlcbmZzL2V4dDQvcGFnZS1pby5jLTE5Ny1cdFx0XHRqYmQyX2pvdXJuYWxfYWJvcnQoRVhUNF9TQihzYiktXHUwMDNlc19qb3VybmFsLCByZXQpO1xuLS1cbmZzL2V4dDQvcGFnZS1pby5jPTIzNz1zdGF0aWMgYm9vbCBleHQ0X2lvX2VuZF9kZWZlcl9jb21wbGV0aW9uKGV4dDRfaW9fZW5kX3QgKmlvX2VuZClcbi0tXG5mcy9leHQ0L3BhZ2UtaW8uYy0yNDEtXHRcdHJldHVybiB0cnVlO1xuZnMvZXh0NC9wYWdlLWlvLmM6MjQyOlx0aWYgKHRlc3Rfb3B0KGlvX2VuZC1cdTAwM2Vpbm9kZS1cdTAwM2VpX3NiLCBEQVRBX0VSUl9BQk9SVCkgXHUwMDI2XHUwMDI2XG5mcy9leHQ0L3BhZ2UtaW8uYy0yNDMtXHQgICAgaW9fZW5kLVx1MDAzZWZsYWcgXHUwMDI2IEVYVDRfSU9fRU5EX0ZBSUxFRCBcdTAwMjZcdTAwMjZcbi0tXG5mcy9leHQ0L3N1cGVyLmM9MTg3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG1vdW50X29wdHMge1xuLS1cbmZzL2V4dDQvc3VwZXIuYy0xOTA3LVx0e09wdF9ub2xvYWQsIEVYVDRfTU9VTlRfTk9MT0FELCBNT1BUX05PX0VYVDIgfCBNT1BUX1NFVH0sXG5mcy9leHQ0L3N1cGVyLmM6MTkwODpcdHtPcHRfZGF0YV9lcnIsIEVYVDRfTU9VTlRfREFUQV9FUlJfQUJPUlQsIE1PUFRfTk9fRVhUMn0sXG5mcy9leHQ0L3N1cGVyLmMtMTkwOS1cdHtPcHRfYmFycmllciwgRVhUNF9NT1VOVF9CQVJSSUVSLCBNT1BUX1NFVH0sXG4tLVxuZnMvZXh0NC9zdXBlci5jPTI3NzA9c3RhdGljIGludCBleHQ0X2NoZWNrX29wdF9jb25zaXN0ZW5jeShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsXG4tLVxuZnMvZXh0NC9zdXBlci5jLTI4MTYtXHRcdGlmICghc2JpLVx1MDAzZXNfam91cm5hbCBcdTAwMjZcdTAwMjZcbmZzL2V4dDQvc3VwZXIuYzoyODE3Olx0XHQgICAgY3R4X3Rlc3RfbW91bnRfb3B0KGN0eCwgRVhUNF9NT1VOVF9EQVRBX0VSUl9BQk9SVCkpIHtcbmZzL2V4dDQvc3VwZXIuYy0yODE4LVx0XHRcdGV4dDRfbXNnKE5VTEwsIEtFUk5fV0FSTklORyxcbmZzL2V4dDQvc3VwZXIuYy0yODE5LVx0XHRcdFx0IFwmIzM0O1JlbW91bnRpbmcgZnMgdy9vIGpvdXJuYWwgc28gaWdub3JpbmcgZGF0YV9lcnIgb3B0aW9uXCYjMzQ7KTtcbmZzL2V4dDQvc3VwZXIuYzoyODIwOlx0XHRcdGN0eF9jbGVhcl9tb3VudF9vcHQoY3R4LCBFWFQ0X01PVU5UX0RBVEFfRVJSX0FCT1JUKTtcbmZzL2V4dDQvc3VwZXIuYy0yODIxLVx0XHR9XG4tLVxuZnMvZXh0NC9zdXBlci5jPTI5NjI9c3RhdGljIGludCBfZXh0NF9zaG93X29wdGlvbnMoc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4tLVxuZnMvZXh0NC9zdXBlci5jLTMwNDctXHRcdFNFUV9PUFRTX1BSSU5UKFwmIzM0O21heF9kaXJfc2l6ZV9rYj0ldVwmIzM0Oywgc2JpLVx1MDAzZXNfbWF4X2Rpcl9zaXplX2tiKTtcbmZzL2V4dDQvc3VwZXIuYzozMDQ4Olx0aWYgKHRlc3Rfb3B0KHNiLCBEQVRBX0VSUl9BQk9SVCkpXG5mcy9leHQ0L3N1cGVyLmMtMzA0OS1cdFx0U0VRX09QVFNfUFVUUyhcJiMzNDtkYXRhX2Vycj1hYm9ydFwmIzM0Oyk7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTUwNjk9c3RhdGljIGNvbnN0IGNoYXIgKmV4dDRfaGFzX2pvdXJuYWxfb3B0aW9uKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTUwODEtXHRcdHJldHVybiBcJiMzNDtkYXRhPVwmIzM0OztcbmZzL2V4dDQvc3VwZXIuYzo1MDgyOlx0aWYgKHRlc3Rfb3B0KHNiLCBEQVRBX0VSUl9BQk9SVCkpXG5mcy9leHQ0L3N1cGVyLmMtNTA4My1cdFx0cmV0dXJuIFwmIzM0O2RhdGFfZXJyPWFib3J0XCYjMzQ7O1xuLS1cbmZzL2V4dDQvc3VwZXIuYz01ODY0PXN0YXRpYyB2b2lkIGV4dDRfaW5pdF9qb3VybmFsX3BhcmFtcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBqb3VybmFsX3QgKmpvdXJuYWwpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTU4NzctXHRcdGpvdXJuYWwtXHUwMDNlal9mbGFncyBcdTAwMjY9IH5KQkQyX0JBUlJJRVI7XG5mcy9leHQ0L3N1cGVyLmM6NTg3ODpcdGlmICh0ZXN0X29wdChzYiwgREFUQV9FUlJfQUJPUlQpKVxuZnMvZXh0NC9zdXBlci5jLTU4NzktXHRcdGpvdXJuYWwtXHUwMDNlal9mbGFncyB8PSBKQkQyX0FCT1JUX09OX0RBVEFfRVJSO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyODAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIERhdGEgRXJyb3IgSGFuZGxpbmcgaW4gZXh0NCB3aXRoIEpCRDIqKgoKT2theSwgc28gdGhlIHBhdGNoIGlzIGludHJvZHVjaW5nIHNvbWUgaW50ZXJlc3RpbmcgYmVoYXZpb3Igd2hlbiBgZGF0YV9lcnI9YWJvcnRgIGlzIHVzZWQgd2l0aCBleHQ0LiBJJiMzOTttIHNlZWluZyB0aGF0IGl0IGFkZHMgYSBjaGVjayBmb3IgYERBVEFfRVJSX0FCT1JUYCBpbiBgZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zYCB3aGljaCwgaW4gdHVybiwgc2V0cyBgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUmAgaW4gdGhlIGpvdXJuYWwmIzM5O3MgZmxhZ3MuIFRoZSBjcml0aWNhbCBwYXJ0IGlzIGluIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCwgd2hlcmUgdGhpcyBmbGFnIHRyaWdnZXJzIGEgam91cm5hbCBhYm9ydCBpZiBJL08gZXJyb3JzIGFyZSBkZXRlY3RlZC4KClRoZSBxdWVzdGlvbiB0aGVuIGlzLCBjYW4gd2UgYWN0dWFsbHkgaGl0IHRoaXMgcGF0aD8gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHllcywgaWYgd2UgbW91bnQgdGhlIGV4dDQgZmlsZXN5c3RlbSB3aXRoIGBkYXRhX2Vycj1hYm9ydGAgYW5kIHRoZW4gbWFuYWdlIHRvIHRyaWdnZXIgYW4gSS9PIGVycm9yIGR1cmluZyB0aGUgam91cm5hbCBjb21taXQgcHJvY2Vzcy4gVGhpcyBzZWVtcyBwcmV0dHkgZGlyZWN0LgoKVGhlcmVmb3JlLCB0aGUgb2J2aW91cyBmdXp6aW5nIHRhcmdldHMgYXJlIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBhbmQgYGV4dDRfaW5pdF9qb3VybmFsX3BhcmFtc2AuIEl0JiMzOTtzIGdvaW5nIHRvIGJlIGtleSB0byBnZW5lcmF0ZSBzb21lIEkvTyBmYWlsdXJlcyB3aXRoaW4gdGhlIGNvbnRleHQgb2Ygam91cm5hbCBjb21taXQuIFRoaXMgd2lsbCByZXF1aXJlIHNvbWUgZGVsaWJlcmF0ZSBmYXVsdCBpbmplY3Rpb24sIHBvc3NpYmx5IHZpYSBzb21lIGNsZXZlciBjcmFmdGluZyBvZiB0aGUgdW5kZXJseWluZyBzdG9yYWdlIHRvIHByb2R1Y2UgdGhlIG5lY2Vzc2FyeSBjb25kaXRpb25zLgoKVG8gYnVpbGQgdGhpcywgSSBhbHNvIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGluY2x1ZGVzIGBDT05GSUdfRVhUNF9GU2AgYW5kIGBDT05GSUdfSkJEMmAsIG9idmlvdXNseS4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMsIHNwZWNpZmljYWxseSBgZnMvamJkMi9LY29uZmlnYCBhbmQgYGZzL2V4dDQvS2NvbmZpZ2AsIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIG9yIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhpcyBiZWhhdmlvciwgZXNwZWNpYWxseSByZWxhdGVkIHRvIGVycm9yIGhhbmRsaW5nIG9yIGpvdXJuYWwgYmVoYXZpb3IuIEkmIzM5O2xsIG5lZWQgdG8gYmUgYXdhcmUgb2YgYW55IHBvdGVudGlhbCBrbm9icyB0aGF0IG1pZ2h0IGVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZW50aXJlIGZlYXR1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTY6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEVYVDRfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leHQ0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9leHQ0L0tjb25maWc6Mjpjb25maWcgRVhUNF9GU1xuZnMvZXh0NC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtUaGUgRXh0ZW5kZWQgNCAoZXh0NCkgZmlsZXN5c3RlbVwmIzM0O1xuLS1cbmZzL2V4dDQvS2NvbmZpZz0zNT1jb25maWcgRVhUNF9VU0VfRk9SX0VYVDJcbi0tXG5mcy9leHQ0L0tjb25maWctNDUtXG5mcy9leHQ0L0tjb25maWc6NDY6Y29uZmlnIEVYVDRfRlNfUE9TSVhfQUNMXG5mcy9leHQ0L0tjb25maWctNDctXHRib29sIFwmIzM0O0V4dDQgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbi0tXG5mcy9leHQ0L0tjb25maWctNTUtXG5mcy9leHQ0L0tjb25maWc6NTY6Y29uZmlnIEVYVDRfRlNfU0VDVVJJVFlcbmZzL2V4dDQvS2NvbmZpZy01Ny1cdGJvb2wgXCYjMzQ7RXh0NCBTZWN1cml0eSBMYWJlbHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDk5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSm91cm5hbCBDb21taXQgTG9naWMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgbmV3IHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgYXJlIGBFWFQ0X0ZTYCBhbmQgYEpCRDJgLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBzZWUgdGhlIGZvY3VzIHN5bWJvbHMgYXJlIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBhbmQgYGV4dDRfaW5pdF9qb3VybmFsX3BhcmFtc2AuIEhtbSwgYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gIGlzIGEgaG90IHBhdGgsIGJ1dCBpdCBsb29rcyBsaWtlIHRoZSBjaGFuZ2UgaXMgKnNwZWNpZmljYWxseSogd2l0aGluIHRoYXQgZnVuY3Rpb24uIEkgbmVlZCB0byBiZSBjYXJlZnVsIGhlcmUgYmVjYXVzZSB0aGF0JiMzOTtzIGEgcHJldHR5IGxhcmdlIGZ1bmN0aW9uLiAKCkxldCBtZSBzZWUuLi4gQWgsIHRoZXJlIGl0IGlzISBUaGUgc25pcHBldCB0aGF0IGNhdWdodCBteSBleWUgaXM6CgpgYGBjCgkJaWYgKGpvdXJuYWwtJmd0O2pfZmxhZ3MgJmFtcDsgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUikKCQkJamJkMl9qb3VybmFsX2Fib3J0KGpvdXJuYWwsIGVycik7CmBgYAoKVGhhdCYjMzk7cyBpbnNpZGUgYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gLiBTbywgaXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBjb25kaXRpb25hbGx5IGFib3J0aW5nIHRoZSBqb3VybmFsIGJhc2VkIG9uIHNvbWUgYEpCRDJfQUJPUlRfT05fREFUQV9FUlJgIGZsYWcuIFJpZ2h0LCBJIHNob3VsZCBsb29rIGF0IGBmcy9qYmQyL2NvbW1pdC5jYCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCYjMzk7cyBoYXBwZW5pbmcgaW4gdGhpcyBjb21taXQgdHJhbnNhY3Rpb24gYW5kIHdoYXQgdHJpZ2dlcnMgdGhlIGFib3J0IGNvbmRpdGlvbi4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2Ugb24gdGhlIGZpbGUgc3lzdGVtJiMzOTtzIG92ZXJhbGwgcm9idXN0bmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2piZDIvY29tbWl0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc1MDpcdFx0XHRcdFx0bG9ja19idWZmZXIoYmgpO1xuIDc1MTpcdFx0XHRcdFx0Y2xlYXJfYnVmZmVyX2RpcnR5KGJoKTtcbiA3NTI6XHRcdFx0XHRcdHNldF9idWZmZXJfdXB0b2RhdGUoYmgpO1xuIDc1MzpcdFx0XHRcdFx0Ymhfc3VibWl0KGJoLFxuIDc1NDpcdFx0XHRcdFx0XHRSRVFfT1BfV1JJVEUgfCBKQkQyX0pPVVJOQUxfUkVRX0ZMQUdTLFxuIDc1NTpcdFx0XHRcdFx0XHRqb3VybmFsX2VuZF9idWZmZXJfaW9fc3luYyk7XG4gNzU2Olx0XHRcdFx0fVxuIDc1NzpcdFx0XHRcdGNvbmRfcmVzY2hlZCgpO1xuIDc1ODpcdFxuIDc1OTpcdFx0XHRcdC8qIEZvcmNlIGEgbmV3IGRlc2NyaXB0b3IgdG8gYmUgZ2VuZXJhdGVkIG5leHRcbiA3NjA6XHQgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lIHJvdW5kIHRoZSBsb29wLiAqL1xuIDc2MTpcdFx0XHRcdGRlc2NyaXB0b3IgPSBOVUxMO1xuIDc2MjpcdFx0XHRcdGJ1ZnMgPSAwO1xuIDc2MzpcdFx0XHR9XG4gNzY0Olx0XHR9XG4gNzY1Olx0XG4gNzY2Olx0XHRlcnIgPSBqb3VybmFsX2ZpbmlzaF9pbm9kZV9kYXRhX2J1ZmZlcnMoam91cm5hbCwgY29tbWl0X3RyYW5zYWN0aW9uKTtcbiA3Njc6XHRcdGlmIChlcnIpIHtcbiA3Njg6XHRcdFx0cHJpbnRrKEtFUk5fV0FSTklOR1xuIDc2OTpcdFx0XHRcdFwmIzM0O0pCRDI6IERldGVjdGVkIElPIGVycm9ycyAlZCB3aGlsZSBmbHVzaGluZyBmaWxlIGRhdGEgb24gJXNcXG5cJiMzNDssXG4gNzcwOlx0XHRcdFx0ZXJyLCBqb3VybmFsLVx1MDAzZWpfZGV2bmFtZSk7XG4gNzcxOlx0XHRcdGlmIChqb3VybmFsLVx1MDAzZWpfZmxhZ3MgXHUwMDI2IEpCRDJfQUJPUlRfT05fREFUQV9FUlIpXG4gNzcyOlx0XHRcdFx0amJkMl9qb3VybmFsX2Fib3J0KGpvdXJuYWwsIGVycik7XG4gNzczOlx0XHRcdGVyciA9IDA7XG4gNzc0Olx0XHR9XG4gNzc1Olx0XG4gNzc2Olx0XHQvKlxuIDc3NzpcdFx0ICogR2V0IGN1cnJlbnQgb2xkZXN0IHRyYW5zYWN0aW9uIGluIHRoZSBsb2cgYmVmb3JlIHdlIGlzc3VlIGZsdXNoXG4gNzc4Olx0XHQgKiB0byB0aGUgZmlsZXN5c3RlbSBkZXZpY2UuIEFmdGVyIHRoZSBmbHVzaCB3ZSBjYW4gYmUgc3VyZSB0aGF0XG4gNzc5Olx0XHQgKiBibG9ja3Mgb2YgYWxsIG9sZGVyIHRyYW5zYWN0aW9ucyBhcmUgY2hlY2twb2ludGVkIHRvIHBlcnNpc3RlbnRcbiA3ODA6XHRcdCAqIHN0b3JhZ2UgYW5kIHdlIHdpbGwgYmUgc2FmZSB0byB1cGRhdGUgam91cm5hbCBzdGFydCBpbiB0aGVcbiA3ODE6XHRcdCAqIHN1cGVyYmxvY2sgd2l0aCB0aGUgbnVtYmVycyB3ZSBnZXQgaGVyZS5cbiA3ODI6XHRcdCAqL1xuIDc4MzpcdFx0dXBkYXRlX3RhaWwgPVxuIDc4NDpcdFx0XHRqYmQyX2pvdXJuYWxfZ2V0X2xvZ190YWlsKGpvdXJuYWwsIFx1MDAyNmZpcnN0X3RpZCwgXHUwMDI2Zmlyc3RfYmxvY2spO1xuIDc4NTpcdFxuIDc4NjpcdFx0d3JpdGVfbG9jayhcdTAwMjZqb3VybmFsLVx1MDAzZWpfc3RhdGVfbG9jayk7XG4gNzg3Olx0XHRpZiAodXBkYXRlX3RhaWwpIHtcbiA3ODg6XHRcdFx0bG9uZyBmcmVlZCA9IGZpcnN0X2Jsb2NrIC0gam91cm5hbC1cdTAwM2VqX3RhaWw7XG4gNzg5Olx0XG4gNzkwOlx0XHRcdGlmIChmaXJzdF9ibG9jayBcdTAwM2Mgam91cm5hbC1cdTAwM2VqX3RhaWwpXG4gNzkxOlx0XHRcdFx0ZnJlZWQgJiM0Mzs9IGpvdXJuYWwtXHUwMDNlal9sYXN0IC0gam91cm5hbC1cdTAwM2VqX2ZpcnN0O1xuIDc5MjpcdFx0XHQvKiBVcGRhdGUgdGFpbCBvbmx5IGlmIHdlIGZyZWUgc2lnbmlmaWNhbnQgYW1vdW50IG9mIHNwYWNlICovXG4gNzkzOlx0XHRcdGlmIChmcmVlZCBcdTAwM2Mgam91cm5hbC1cdTAwM2VqX21heF90cmFuc2FjdGlvbl9idWZmZXJzKVxuIDc5NDpcdFx0XHRcdHVwZGF0ZV90YWlsID0gMDtcbiA3OTU6XHRcdH1cbiA3OTY6XHRcdEpfQVNTRVJUKGNvbW1pdF90cmFuc2FjdGlvbi1cdTAwM2V0X3N0YXRlID09IFRfQ09NTUlUKTtcbiA3OTc6XHRcdGNvbW1pdF90cmFuc2FjdGlvbi1cdTAwM2V0X3N0YXRlID0gVF9DT01NSVRfREZMVVNIO1xuIDc5ODpcdFx0d3JpdGVfdW5sb2NrKFx1MDAyNmpvdXJuYWwtXHUwMDNlal9zdGF0ZV9sb2NrKTtcbiA3OTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzgwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIHRoZSBnb2FsIGlzIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBmdW5jdGlvbiwgYW5kIGl0IHNlZW1zIGxpa2UgKipgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbmAgaXMgZGVmaW5pdGVseSB0aGUga2V5IGZ1bmN0aW9uIGhlcmUqKi4gSSYjMzk7bSBhbG1vc3QgY2VydGFpbiB0aGF0JiMzOTtzIHRoZSBvbmUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gSG93ZXZlciwgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHNuZWFreSBzaWRlIHBsYXllcnMgaW52b2x2ZWQuIEhtbSwgSSBzZWUgdGhhdCBgZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zYCBhbHNvIGdvdCBhIGxpdHRsZSBsb3ZlLiBOb3csIHdoZXJlIGRvZXMgKnRoYXQqIGZpdCBpbj8KClJpZ2h0LCBgZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zYCBpcyBjYWxsZWQgZnJvbSBgZXh0NF9sb2FkX2pvdXJuYWxgIGFuZCBgZXh0NF9yZW1vdW50YC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQgY29udGV4dC4gVGhhdCBnaXZlcyBhIGxpdHRsZSBtb3JlIGluc2lnaHQgdG8gdGhlIGZ1bmN0aW9uLiBJdCBzZWVtcyBiZXN0IHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGlzIGBleHQ0X2luaXRfam91cm5hbF9wYXJhbXNgIGZ1bmN0aW9uLCBhbmQgc2VlIGhvdyBpdCBpcyB1dGlsaXplZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTY6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9leHQ0L3N1cGVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1ODYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzU4NjA6XHQgKiBTZXR1cCBhbnkgcGVyLWZzIGpvdXJuYWwgcGFyYW1ldGVycyBub3cuICBXZSYjMzk7bGwgZG8gdGhpcyBib3RoIG9uXG41ODYxOlx0ICogaW5pdGlhbCBtb3VudCwgb25jZSB0aGUgam91cm5hbCBoYXMgYmVlbiBpbml0aWFsaXNlZCBidXQgYmVmb3JlIHdlJiMzOTt2ZVxuNTg2MjpcdCAqIGRvbmUgYW55IHJlY292ZXJ5OyBhbmQgYWdhaW4gb24gYW55IHN1YnNlcXVlbnQgcmVtb3VudC5cbjU4NjM6XHQgKi9cbjU4NjQ6XHRzdGF0aWMgdm9pZCBleHQ0X2luaXRfam91cm5hbF9wYXJhbXMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgam91cm5hbF90ICpqb3VybmFsKVxuNTg2NTpcdHtcbjU4NjY6XHRcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuNTg2NzpcdFxuNTg2ODpcdFx0am91cm5hbC1cdTAwM2VqX2NvbW1pdF9pbnRlcnZhbCA9IHNiaS1cdTAwM2VzX2NvbW1pdF9pbnRlcnZhbDtcbjU4Njk6XHRcdGpvdXJuYWwtXHUwMDNlal9taW5fYmF0Y2hfdGltZSA9IHNiaS1cdTAwM2VzX21pbl9iYXRjaF90aW1lO1xuNTg3MDpcdFx0am91cm5hbC1cdTAwM2VqX21heF9iYXRjaF90aW1lID0gc2JpLVx1MDAzZXNfbWF4X2JhdGNoX3RpbWU7XG41ODcxOlx0XHRleHQ0X2ZjX2luaXQoc2IsIGpvdXJuYWwpO1xuNTg3MjpcdFxuNTg3MzpcdFx0d3JpdGVfbG9jayhcdTAwMjZqb3VybmFsLVx1MDAzZWpfc3RhdGVfbG9jayk7XG41ODc0Olx0XHRpZiAodGVzdF9vcHQoc2IsIEJBUlJJRVIpKVxuNTg3NTpcdFx0XHRqb3VybmFsLVx1MDAzZWpfZmxhZ3MgfD0gSkJEMl9CQVJSSUVSO1xuNTg3NjpcdFx0ZWxzZVxuNTg3NzpcdFx0XHRqb3VybmFsLVx1MDAzZWpfZmxhZ3MgXHUwMDI2PSB+SkJEMl9CQVJSSUVSO1xuNTg3ODpcdFx0aWYgKHRlc3Rfb3B0KHNiLCBEQVRBX0VSUl9BQk9SVCkpXG41ODc5Olx0XHRcdGpvdXJuYWwtXHUwMDNlal9mbGFncyB8PSBKQkQyX0FCT1JUX09OX0RBVEFfRVJSO1xuNTg4MDpcdFx0ZWxzZVxuNTg4MTpcdFx0XHRqb3VybmFsLVx1MDAzZWpfZmxhZ3MgXHUwMDI2PSB+SkJEMl9BQk9SVF9PTl9EQVRBX0VSUjtcbjU4ODI6XHRcdC8qXG41ODgzOlx0XHQgKiBBbHdheXMgZW5hYmxlIGpvdXJuYWwgY3ljbGUgcmVjb3JkIG9wdGlvbiwgbGV0dGluZyB0aGUgam91cm5hbFxuNTg4NDpcdFx0ICogcmVjb3JkcyBsb2cgdHJhbnNhY3Rpb25zIGNvbnRpbnVvdXNseSBiZXR3ZWVuIGVhY2ggbW91bnQuXG41ODg1Olx0XHQgKi9cbjU4ODY6XHRcdGpvdXJuYWwtXHUwMDNlal9mbGFncyB8PSBKQkQyX0NZQ0xFX1JFQ09SRDtcbjU4ODc6XHRcdHdyaXRlX3VubG9jayhcdTAwMjZqb3VybmFsLVx1MDAzZWpfc3RhdGVfbG9jayk7XG41ODg4Olx0fVxuNTg4OTpcdFxuNTg5MDpcdHN0YXRpYyBzdHJ1Y3QgaW5vZGUgKmV4dDRfZ2V0X2pvdXJuYWxfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbjU4OTE6XHRcdFx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgam91cm5hbF9pbnVtKVxuNTg5MjpcdHtcbjU4OTM6XHRcdHN0cnVjdCBpbm9kZSAqam91cm5hbF9pbm9kZTtcbjU4OTQ6XHRcbjU4OTU6XHRcdC8qXG41ODk2Olx0XHQgKiBUZXN0IGZvciB0aGUgZXhpc3RlbmNlIG9mIGEgdmFsaWQgaW5vZGUgb24gZGlzay4gIEJhZCB0aGluZ3NcbjU4OTc6XHRcdCAqIGhhcHBlbiBpZiB3ZSBpZ2V0KCkgYW4gdW51c2VkIGlub2RlLCBhcyB0aGUgc3Vic2VxdWVudCBpcHV0KClcbjU4OTg6XHRcdCAqIHdpbGwgdHJ5IHRvIGRlbGV0ZSBpdC5cbjU4OTk6XHRcdCAqL1xuNTkwMDpcdFx0am91cm5hbF9pbm9kZSA9IGV4dDRfaWdldChzYiwgam91cm5hbF9pbnVtLCBFWFQ0X0lHRVRfU1BFQ0lBTCk7XG41OTAxOlx0XHRpZiAoSVNfRVJSKGpvdXJuYWxfaW5vZGUpKSB7XG41OTAyOlx0XHRcdGV4dDRfbXNnKHNiLCBLRVJOX0VSUiwgXCYjMzQ7bm8gam91cm5hbCBmb3VuZFwmIzM0Oyk7XG41OTAzOlx0XHRcdHJldHVybiBFUlJfQ0FTVChqb3VybmFsX2lub2RlKTtcbjU5MDQ6XHRcdH1cbjU5MDU6XHRcdGlmICgham91cm5hbF9pbm9kZS1cdTAwM2VpX25saW5rKSB7XG41OTA2Olx0XHRcdG1ha2VfYmFkX2lub2RlKGpvdXJuYWxfaW5vZGUpO1xuNTkwNzpcdFx0XHRpcHV0KGpvdXJuYWxfaW5vZGUpO1xuNTkwODpcdFx0XHRleHQ0X21zZyhzYiwgS0VSTl9FUlIsIFwmIzM0O2pvdXJuYWwgaW5vZGUgaXMgZGVsZXRlZFwmIzM0Oyk7XG41OTA5Olx0XHRcdHJldHVybiBFUlJfUFRSKC1FRlNDT1JSVVBURUQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTU4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgcXVpY2sgdGFrZSBvbiB0aGlzLgoKKipGdXp6aW5nIHRoZSBFeHQ0L0pCRDIgRGF0YSBFcnJvciBQYXRjaCoqCgpBbHJpZ2h0LCBzbyB0aGUgcGF0Y2ggaXMgaW4sIGFuZCBpdCYjMzk7cyBzdXBwb3NlZGx5IG1vZGlmeWluZyBob3cgZXh0NCBhbmQgSkJEMiBoYW5kbGUgZGF0YSBlcnJvcnMuIFRoYXQgaW1tZWRpYXRlbHkgc2V0cyBvZmYgYWxhcm0gYmVsbHMgaW4gbXkgaGVhZCDigJMgZGF0YSBjb3JydXB0aW9uIGJ1Z3MgYXJlIG5vdG9yaW91c2x5IHRyaWNreS4gVGltZSB0byBwdXQgdGhpcyB0aGluZyB0aHJvdWdoIGl0cyBwYWNlcy4gV2UgbmVlZCB0byBmdXp6IGl0LgoKVGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zIGFyZSBgRVhUNF9GU2AgYW5kLCBvYnZpb3VzbHksIGBKQkQyYC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgYEpCRDJgIGlzIGV2ZW4gYSB2YWxpZCBjb25maWcgb3B0aW9uIOKAkyBjYW7igJl0IGZ1enogc29tZXRoaW5nIHRoYXTigJlzIG5vdCBlbmFibGVkLCBvciB0aGUgZnV6emluZyB3aWxsIGJlIHVzZWxlc3MuCgpBbmQgd2hlcmUgZG8gSSBiZWdpbiBteSBmb2N1c2VkIGZ1enppbmcgZWZmb3J0cz8gVGhlIG1vc3QgY3JpdGljYWwgZW50cnkgcG9pbnRzIHJlbGF0ZWQgdG8gdGhpcyBwYXRjaCBhcHBlYXIgdG8gYmUgYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gIGFuZCBgZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zYC4gVGhlc2UgYXJlIGxpa2VseSB0aGUgZnVuY3Rpb25zIHdoZXJlIHRoZSBjaGFuZ2VzIGFyZSBtb3N0IGNvbmNlbnRyYXRlZCwgdGhlIHBsYWNlcyB3aGVyZSB0aGUgZGF0YSBlcnJvciBoYW5kbGluZyBsb2dpYyBoYXMgYmVlbiB0d2Vha2VkLiBGb2N1c2luZyB0aGVyZSBzaG91bGQgZ2l2ZSB1cyB0aGUgYmVzdCBiYW5nIGZvciBvdXIgZnV6emluZyBidWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSkJEMiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2piZDIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9qYmQyL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2piZDIvS2NvbmZpZzoyOmNvbmZpZyBKQkQyXG5mcy9qYmQyL0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZnMvamJkMi9LY29uZmlnLTE5LVxuZnMvamJkMi9LY29uZmlnOjIwOmNvbmZpZyBKQkQyX0RFQlVHXG5mcy9qYmQyL0tjb25maWctMjEtXHRib29sIFwmIzM0O0pCRDIgKGV4dDQpIGRlYnVnZ2luZyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE2OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwMzMKCQkJCQkJCW91dHB1dDogMTY3CgkJCQkJCQl0aG91Z2h0czogMTgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgYXNzZXNzbWVudDoKCioqRnV6emluZyBUYXJnZXQgQXNzZXNzbWVudDogSkJEMiBhbmQgZXh0NCB3aXRoIGRhdGFfZXJyPWFib3J0KioKClJpZ2h0LCBzbyBgSkJEMmAgaXMgZGVmaW5pdGVseSBhIHRoaW5nLCBhbmQgd2UgaGF2ZSBhIHBvdGVudGlhbCB0YXJnZXQgaGVyZS4gTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KClRoZSBrZXkgYXNwZWN0cyBhcmU6IGBXb3J0aEZ1enppbmc6IHRydWVgLiBFeGNlbGxlbnQuIFdlIGhhdmUgYSBzb2xpZCByZWFzb24gdG8gaW52ZXN0aWdhdGUgdGhpcyB0aG9yb3VnaGx5LiBUaGUgYEZvY3VzU3ltYm9sc2A6IGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBhbmQgYGV4dDRfaW5pdF9qb3VybmFsX3BhcmFtc2AgYXJlIHNwb3Qgb24sIHRoZXNlIGFyZSB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnRzIHRvIGV4YW1pbmUuIEFuZCB0aGUgcmVsZXZhbnQgYEVuYWJsZUNvbmZpZ3NgOiBgRVhUNF9GU2AsIGBKQkQyYCDigJMgbm8gc3VycHJpc2VzIHRoZXJlLCB3ZSBuZWVkIGJvdGggb2YgdGhlc2UgZmlsZXN5c3RlbSBjb21wb25lbnRzIGVuYWJsZWQgZm9yIHRoaXMgdG8gYmUgcmVsZXZhbnQuCgpUaGUgcmVhc29uaW5nIGlzIHNvdW5kOiBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIGBkYXRhX2Vycj1hYm9ydGAgbW91bnQgb3B0aW9uIGZvciBleHQ0LiBFc3NlbnRpYWxseSwgaXQgYWRkcyBhIG5ldyBgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUmAgZmxhZyB3aXRoaW4gYGpiZDJgLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQgYWx0ZXJzIGVycm9yIGhhbmRsaW5nLiBTcGVjaWZpY2FsbHksIGlmIHRoYXQgZmxhZyBpcyBzZXQsIGBqYmQyYCAqd2lsbCogYWJvcnQgdGhlIGpvdXJuYWwgaWYgaXQgZW5jb3VudGVycyBJL08gZXJyb3JzIHdoaWxlIGZsdXNoaW5nIGZpbGUgZGF0YSBkdXJpbmcgYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZSBiZWhhdmlvciBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgZGVmYXVsdCBpbiBjYXNlcyBvZiBJL08gZmFpbHVyZXMuIEl0JiMzOTtzIG5vdCBqdXN0IGEgcGVyZm9ybWFuY2UgdHdlYWssIHRoaXMgZGlyZWN0bHkgaW1wYWN0cyBob3cgdGhlIGZpbGUgc3lzdGVtIHJlc3BvbmRzIHRvIGVycm9ycywgd2hpY2ggbWFrZXMgaXQgYW4gZXhjZWxsZW50IHRhcmdldCBmb3IgZnV6emluZy4gV2UgY2FuIHNlZSBob3cgdGhlIGZpbGUgc3lzdGVtIGJlaGF2ZXMgdW5kZXIgdW51c3VhbCBzY2VuYXJpb3Mgd2l0aCB0aGlzLgoKVGhlcmVmb3JlLCB0aGlzIGlzIGEgbGVnaXRpbWF0ZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEkmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgZW52aXJvbm1lbnQgc2V0IHVwIGNvcnJlY3RseSB0byB0cmlnZ2VyIHRoZXNlIGFib3J0IGNvbmRpdGlvbnMgYW5kIG9ic2VydmUgdGhlIHJlc3VsdHMuCkkgdGhpbmsgSSYjMzk7bGwgYHNldC1yZXN1bHRzYCBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE2OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDssCiAgICAmIzM0O0pCRDImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uJiMzNDssCiAgICAmIzM0O2V4dDRfaW5pdF9qb3VybmFsX3BhcmFtcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IG1vdW50IG9wdGlvbiBgZGF0YV9lcnI9YWJvcnRgIHRvIGV4dDQsIHdoaWNoIHNldHMgYSBuZXcgZmxhZyBgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUmAgaW4gamJkMi4gV2hlbiB0aGlzIGZsYWcgaXMgc2V0LCBqYmQyIHdpbGwgYWJvcnQgdGhlIGpvdXJuYWwgaWYgdGhlcmUgYXJlIElPIGVycm9ycyBkdXJpbmcgZmlsZSBkYXRhIGZsdXNoaW5nIGluIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBlcnJvciBoYW5kbGluZyBiZWhhdmlvciBvZiBleHQ0IGFuZCBqYmQyLCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7LAogICAgJiMzNDtKQkQyJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7amJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbiYjMzQ7LAogICAgJiMzNDtleHQ0X2luaXRfam91cm5hbF9wYXJhbXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBtb3VudCBvcHRpb24gYGRhdGFfZXJyPWFib3J0YCB0byBleHQ0LCB3aGljaCBzZXRzIGEgbmV3IGZsYWcgYEpCRDJfQUJPUlRfT05fREFUQV9FUlJgIGluIGpiZDIuIFdoZW4gdGhpcyBmbGFnIGlzIHNldCwgamJkMiB3aWxsIGFib3J0IHRoZSBqb3VybmFsIGlmIHRoZXJlIGFyZSBJTyBlcnJvcnMgZHVyaW5nIGZpbGUgZGF0YSBmbHVzaGluZyBpbiBgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgZXJyb3IgaGFuZGxpbmcgYmVoYXZpb3Igb2YgZXh0NCBhbmQgamJkMiwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNjoyNjo0Mi41OTA0NTIyMDJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDk1MTE3Njg2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCIsXG4gICAgXCJKQkQyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvblwiLFxuICAgIFwiZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBtb3VudCBvcHRpb24gYGRhdGFfZXJyPWFib3J0YCB0byBleHQ0LCB3aGljaCBzZXRzIGEgbmV3IGZsYWcgYEpCRDJfQUJPUlRfT05fREFUQV9FUlJgIGluIGpiZDIuIFdoZW4gdGhpcyBmbGFnIGlzIHNldCwgamJkMiB3aWxsIGFib3J0IHRoZSBqb3VybmFsIGlmIHRoZXJlIGFyZSBJTyBlcnJvcnMgZHVyaW5nIGZpbGUgZGF0YSBmbHVzaGluZyBpbiBgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgZXJyb3IgaGFuZGxpbmcgYmVoYXZpb3Igb2YgZXh0NCBhbmQgamJkMiwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE2OjI2OjQyLjU5MDQ1NjY2MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg5Nzc3NTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODhkZGRlYWFkNTg5ODk2MjJjN2M4MDllODZiOTI1MmY1OGZhY2Y1ZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAyMyAxNjoyNjo0MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L3N1cGVyLmMgYi9mcy9leHQ0L3N1cGVyLmNcXG5pbmRleCA3MjgzMTA4ZDc2MDkxNy4uZGUzNDQ5MGE1YjY4MGMgMTAwNjQ0XFxuLS0tIGEvZnMvZXh0NC9zdXBlci5jXFxuKysrIGIvZnMvZXh0NC9zdXBlci5jXFxuQEAgLTU4NzUsNiArNTg3NSwxMCBAQCBzdGF0aWMgdm9pZCBleHQ0X2luaXRfam91cm5hbF9wYXJhbXMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgam91cm5hbF90ICpqb3VybmFsKVxcbiBcXHRcXHRqb3VybmFsLVxcdTAwM2VqX2ZsYWdzIHw9IEpCRDJfQkFSUklFUjtcXG4gXFx0ZWxzZVxcbiBcXHRcXHRqb3VybmFsLVxcdTAwM2VqX2ZsYWdzIFxcdTAwMjY9IH5KQkQyX0JBUlJJRVI7XFxuK1xcdGlmICh0ZXN0X29wdChzYiwgREFUQV9FUlJfQUJPUlQpKVxcbitcXHRcXHRqb3VybmFsLVxcdTAwM2VqX2ZsYWdzIHw9IEpCRDJfQUJPUlRfT05fREFUQV9FUlI7XFxuK1xcdGVsc2VcXG4rXFx0XFx0am91cm5hbC1cXHUwMDNlal9mbGFncyBcXHUwMDI2PSB+SkJEMl9BQk9SVF9PTl9EQVRBX0VSUjtcXG4gXFx0LypcXG4gXFx0ICogQWx3YXlzIGVuYWJsZSBqb3VybmFsIGN5Y2xlIHJlY29yZCBvcHRpb24sIGxldHRpbmcgdGhlIGpvdXJuYWxcXG4gXFx0ICogcmVjb3JkcyBsb2cgdHJhbnNhY3Rpb25zIGNvbnRpbnVvdXNseSBiZXR3ZWVuIGVhY2ggbW91bnQuXFxuZGlmZiAtLWdpdCBhL2ZzL2piZDIvY29tbWl0LmMgYi9mcy9qYmQyL2NvbW1pdC5jXFxuaW5kZXggZDg1Nzc3MjVhMmZiYjUuLjQ5YWNjOWQwODA5ZWJiIDEwMDY0NFxcbi0tLSBhL2ZzL2piZDIvY29tbWl0LmNcXG4rKysgYi9mcy9qYmQyL2NvbW1pdC5jXFxuQEAgLTc2OCw2ICs3NjgsOCBAQCB2b2lkIGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb24oam91cm5hbF90ICpqb3VybmFsKVxcbiBcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HXFxuIFxcdFxcdFxcdFxcXCJKQkQyOiBEZXRlY3RlZCBJTyBlcnJvcnMgJWQgd2hpbGUgZmx1c2hpbmcgZmlsZSBkYXRhIG9uICVzXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRlcnIsIGpvdXJuYWwtXFx1MDAzZWpfZGV2bmFtZSk7XFxuK1xcdFxcdGlmIChqb3VybmFsLVxcdTAwM2VqX2ZsYWdzIFxcdTAwMjYgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUilcXG4rXFx0XFx0XFx0amJkMl9qb3VybmFsX2Fib3J0KGpvdXJuYWwsIGVycik7XFxuIFxcdFxcdGVyciA9IDA7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvamJkMi5oIGIvaW5jbHVkZS9saW51eC9qYmQyLmhcXG5pbmRleCA3ZTc4NWFhNmQzNWQ2NS4uZTM5Njc5NjU2ZGU2NjAgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9qYmQyLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2piZDIuaFxcbkBAIC0xNDEwLDYgKzE0MTAsNyBAQCBKQkQyX0ZFQVRVUkVfSU5DT01QQVRfRlVOQ1MoZmFzdF9jb21taXQsXFx0RkFTVF9DT01NSVQpXFxuICNkZWZpbmUgSkJEMl9GTFVTSEVEXFx0MHgwMDhcXHQvKiBUaGUgam91cm5hbCBzdXBlcmJsb2NrIGhhcyBiZWVuIGZsdXNoZWQgKi9cXG4gI2RlZmluZSBKQkQyX0xPQURFRFxcdDB4MDEwXFx0LyogVGhlIGpvdXJuYWwgc3VwZXJibG9jayBoYXMgYmVlbiBsb2FkZWQgKi9cXG4gI2RlZmluZSBKQkQyX0JBUlJJRVJcXHQweDAyMFxcdC8qIFVzZSBJREUgYmFycmllcnMgKi9cXG4rI2RlZmluZSBKQkQyX0FCT1JUX09OX0RBVEFfRVJSXFx0MHgwNDBcXHQvKiBBYm9ydCB0aGUgam91cm5hbCBvbiBmaWxlIGRhdGEgd3JpdGUgZXJyb3JzICovXFxuICNkZWZpbmUgSkJEMl9DWUNMRV9SRUNPUkRcXHRcXHQweDA4MFxcdC8qIEpvdXJuYWwgY3ljbGVkIHJlY29yZCBsb2cgb25cXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICogY2xlYW4gYW5kIGVtcHR5IGZpbGVzeXN0ZW1cXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICogbG9nZ2luZyBhcmVhICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE2OjI2OjQzLjI4MDg2NzE2N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQyNjA3NDcyNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiLFxuICAgIFwiSkJEMlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25cIixcbiAgICBcImV4dDRfaW5pdF9qb3VybmFsX3BhcmFtc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgbW91bnQgb3B0aW9uIGBkYXRhX2Vycj1hYm9ydGAgdG8gZXh0NCwgd2hpY2ggc2V0cyBhIG5ldyBmbGFnIGBKQkQyX0FCT1JUX09OX0RBVEFfRVJSYCBpbiBqYmQyLiBXaGVuIHRoaXMgZmxhZyBpcyBzZXQsIGpiZDIgd2lsbCBhYm9ydCB0aGUgam91cm5hbCBpZiB0aGVyZSBhcmUgSU8gZXJyb3JzIGR1cmluZyBmaWxlIGRhdGEgZmx1c2hpbmcgaW4gYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgdGhlIGVycm9yIGhhbmRsaW5nIGJlaGF2aW9yIG9mIGV4dDQgYW5kIGpiZDIsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDg4ZGRkZWFhZDU4OTg5NjIyYzdjODA5ZTg2YjkyNTJmNThmYWNmNWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAyMyAxNjoyNjo0MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvc3VwZXIuYyBiL2ZzL2V4dDQvc3VwZXIuY1xuaW5kZXggNzI4MzEwOGQ3NjA5MTcuLmRlMzQ0OTBhNWI2ODBjIDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9zdXBlci5jXG4rKysgYi9mcy9leHQ0L3N1cGVyLmNcbkBAIC01ODc1LDYgKzU4NzUsMTAgQEAgc3RhdGljIHZvaWQgZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGpvdXJuYWxfdCAqam91cm5hbClcbiBcdFx0am91cm5hbC1cdTAwM2VqX2ZsYWdzIHw9IEpCRDJfQkFSUklFUjtcbiBcdGVsc2VcbiBcdFx0am91cm5hbC1cdTAwM2VqX2ZsYWdzIFx1MDAyNj0gfkpCRDJfQkFSUklFUjtcbitcdGlmICh0ZXN0X29wdChzYiwgREFUQV9FUlJfQUJPUlQpKVxuK1x0XHRqb3VybmFsLVx1MDAzZWpfZmxhZ3MgfD0gSkJEMl9BQk9SVF9PTl9EQVRBX0VSUjtcbitcdGVsc2VcbitcdFx0am91cm5hbC1cdTAwM2VqX2ZsYWdzIFx1MDAyNj0gfkpCRDJfQUJPUlRfT05fREFUQV9FUlI7XG4gXHQvKlxuIFx0ICogQWx3YXlzIGVuYWJsZSBqb3VybmFsIGN5Y2xlIHJlY29yZCBvcHRpb24sIGxldHRpbmcgdGhlIGpvdXJuYWxcbiBcdCAqIHJlY29yZHMgbG9nIHRyYW5zYWN0aW9ucyBjb250aW51b3VzbHkgYmV0d2VlbiBlYWNoIG1vdW50LlxuZGlmZiAtLWdpdCBhL2ZzL2piZDIvY29tbWl0LmMgYi9mcy9qYmQyL2NvbW1pdC5jXG5pbmRleCBkODU3NzcyNWEyZmJiNS4uNDlhY2M5ZDA4MDllYmIgMTAwNjQ0XG4tLS0gYS9mcy9qYmQyL2NvbW1pdC5jXG4rKysgYi9mcy9qYmQyL2NvbW1pdC5jXG5AQCAtNzY4LDYgKzc2OCw4IEBAIHZvaWQgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbihqb3VybmFsX3QgKmpvdXJuYWwpXG4gXHRcdHByaW50ayhLRVJOX1dBUk5JTkdcbiBcdFx0XHRcIkpCRDI6IERldGVjdGVkIElPIGVycm9ycyAlZCB3aGlsZSBmbHVzaGluZyBmaWxlIGRhdGEgb24gJXNcXG5cIixcbiBcdFx0XHRlcnIsIGpvdXJuYWwtXHUwMDNlal9kZXZuYW1lKTtcbitcdFx0aWYgKGpvdXJuYWwtXHUwMDNlal9mbGFncyBcdTAwMjYgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUilcbitcdFx0XHRqYmQyX2pvdXJuYWxfYWJvcnQoam91cm5hbCwgZXJyKTtcbiBcdFx0ZXJyID0gMDtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2piZDIuaCBiL2luY2x1ZGUvbGludXgvamJkMi5oXG5pbmRleCA3ZTc4NWFhNmQzNWQ2NS4uZTM5Njc5NjU2ZGU2NjAgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2piZDIuaFxuKysrIGIvaW5jbHVkZS9saW51eC9qYmQyLmhcbkBAIC0xNDEwLDYgKzE0MTAsNyBAQCBKQkQyX0ZFQVRVUkVfSU5DT01QQVRfRlVOQ1MoZmFzdF9jb21taXQsXHRGQVNUX0NPTU1JVClcbiAjZGVmaW5lIEpCRDJfRkxVU0hFRFx0MHgwMDhcdC8qIFRoZSBqb3VybmFsIHN1cGVyYmxvY2sgaGFzIGJlZW4gZmx1c2hlZCAqL1xuICNkZWZpbmUgSkJEMl9MT0FERURcdDB4MDEwXHQvKiBUaGUgam91cm5hbCBzdXBlcmJsb2NrIGhhcyBiZWVuIGxvYWRlZCAqL1xuICNkZWZpbmUgSkJEMl9CQVJSSUVSXHQweDAyMFx0LyogVXNlIElERSBiYXJyaWVycyAqL1xuKyNkZWZpbmUgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUlx0MHgwNDBcdC8qIEFib3J0IHRoZSBqb3VybmFsIG9uIGZpbGUgZGF0YSB3cml0ZSBlcnJvcnMgKi9cbiAjZGVmaW5lIEpCRDJfQ1lDTEVfUkVDT1JEXHRcdDB4MDgwXHQvKiBKb3VybmFsIGN5Y2xlZCByZWNvcmQgbG9nIG9uXG4gXHRcdFx0XHRcdFx0ICogY2xlYW4gYW5kIGVtcHR5IGZpbGVzeXN0ZW1cbiBcdFx0XHRcdFx0XHQgKiBsb2dnaW5nIGFyZWEgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE2OjI2OjQzLjI4MDg2ODU2N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MzMzOTcyMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBmcy9leHQ0L3N1cGVyLmNgLCBgZnMvamJkMi9jb21taXQuY2AsIGFuZCBgaW5jbHVkZS9saW51eC9qYmQyLmhgLiBJdCBzZWVtcyB3ZSdyZSBhZGRpbmcgYSBuZXcgZmxhZywgYEpCRDJfQUJPUlRfT05fREFUQV9FUlJgLCB0byBgamJkMmAuIEZyb20gbXkgcXVpY2sgc2NhbiwgaXQgbG9va3MgbGlrZSB0aGlzIGZsYWcgaXMgc2V0IGluIGBleHQ0X2luaXRfam91cm5hbF9wYXJhbXNgIGlmIHRoZSBgREFUQV9FUlJfQUJPUlRgIG9wdGlvbiBpcyBlbmFibGVkIGluIHRoZSBleHQ0IHN1cGVyYmxvY2suICBDcnVjaWFsbHksIGl0IHNlZW1zIHRoYXQgaWYgdGhpcyBmbGFnIGlzIHNldCAqYW5kKiB0aGVyZSBhcmUgSS9PIGVycm9ycyB3aGVuIGZsdXNoaW5nIGZpbGUgZGF0YSBkdXJpbmcgYSBqb3VybmFsIGNvbW1pdCBpbiBgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbmAsIHRoZSBqb3VybmFsIGlzIHRoZW4gYWJvcnRlZCB2aWEgYSBjYWxsIHRvIGBqYmQyX2pvdXJuYWxfYWJvcnQoKWAuXG5cblRoaXMgaXMgZGVmaW5pdGVseSBhICpmdW5jdGlvbmFsKiBjaGFuZ2U7IGl0J3MgYWx0ZXJpbmcgdGhlIGVycm9yIGhhbmRsaW5nIGJlaGF2aW9yIG9mIGV4dDQgYW5kIGpiZDIgd2hlbiBkYXRhIGludGVncml0eSBpc3N1ZXMgc3VyZmFjZS4gVGhhdCdzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nLCBhbmQgcmFpc2VzIHRoZSBpbW1lZGlhdGUgbmVlZCB0byB0aG9yb3VnaGx5IHRlc3QgdGhpcywgbGlrZWx5IGJ5IGZ1enppbmcgaXQgdG8gc3RyZXNzIGRpZmZlcmVudCBzY2VuYXJpb3MuXG5cbk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkOiBgZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zYCBhbmQgYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gLiBJIG5lZWQgdG8gc29saWRpZnkgdGhlIGNhbGwgcGF0aHMuIGBleHQ0X2luaXRfam91cm5hbF9wYXJhbXNgIGlzLCBhcyBleHBlY3RlZCwgaW52b2tlZCBkdXJpbmcgdGhlIG1vdW50IGFuZCByZW1vdW50IHByb2Nlc3Nlcy4gQW5kIGFzIEkgcmVjYWxsLCBgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbmAgaXMgY2FsbGVkIGJ5IHRoZSBqYmQyIGNvbW1pdCB0aHJlYWQsIHdoaWNoIGlzIGdvb2QgdG8ga25vdyBmcm9tIGEgdGltaW5nIHBlcnNwZWN0aXZlLlxuXG5Ob3csIHRvIGRldGVybWluZSBpZiB0aGlzIG5ldyBmZWF0dXJlIGlzIG1vdW50LW9wdGlvbi1kcml2ZW4sIG9yIGlmIGl0IGlzIGFsd2F5cyBlbmFibGVkLiBJJ2xsIHF1aWNrbHkgY2hlY2sgaWYgYERBVEFfRVJSX0FCT1JUYCBpcyBhIG1vdW50IG9wdGlvbiBieSBzZWFyY2hpbmcgZm9yIHRoYXQgc3RyaW5nIHVzaW5nIG15IHByZWZlcnJlZCB0b29sLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzY2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTY6MjY6NDkuMjE0MjY4NjgyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1ODYzMzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRBVEFfRVJSX0FCT1JUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9leHQ0Lmg9MTAzMD1zdHJ1Y3QgZXh0NF9pbm9kZV9pbmZvIHtcXG4tLVxcbmZzL2V4dDQvZXh0NC5oLTEyNTQtI2RlZmluZSBFWFQ0X01PVU5UX0RFTEFMTE9DXFx0XFx0MHg4MDAwMDAwIC8qIERlbGFsbG9jIHN1cHBvcnQgKi9cXG5mcy9leHQ0L2V4dDQuaDoxMjU1OiNkZWZpbmUgRVhUNF9NT1VOVF9EQVRBX0VSUl9BQk9SVFxcdDB4MTAwMDAwMDAgLyogQWJvcnQgb24gZmlsZSBkYXRhIHdyaXRlICovXFxuZnMvZXh0NC9leHQ0LmgtMTI1Ni0jZGVmaW5lIEVYVDRfTU9VTlRfQkxPQ0tfVkFMSURJVFlcXHQweDIwMDAwMDAwIC8qIEJsb2NrIHZhbGlkaXR5IGNoZWNraW5nICovXFxuLS1cXG5mcy9leHQ0L3BhZ2UtaW8uYz0xNzU9c3RhdGljIGludCBleHQ0X2VuZF9pb19lbmQoZXh0NF9pb19lbmRfdCAqaW9fZW5kKVxcbi0tXFxuZnMvZXh0NC9wYWdlLWlvLmMtMTk1LVxcbmZzL2V4dDQvcGFnZS1pby5jOjE5NjpcXHRcXHRpZiAodGVzdF9vcHQoc2IsIERBVEFfRVJSX0FCT1JUKSlcXG5mcy9leHQ0L3BhZ2UtaW8uYy0xOTctXFx0XFx0XFx0amJkMl9qb3VybmFsX2Fib3J0KEVYVDRfU0Ioc2IpLVxcdTAwM2VzX2pvdXJuYWwsIHJldCk7XFxuLS1cXG5mcy9leHQ0L3BhZ2UtaW8uYz0yMzc9c3RhdGljIGJvb2wgZXh0NF9pb19lbmRfZGVmZXJfY29tcGxldGlvbihleHQ0X2lvX2VuZF90ICppb19lbmQpXFxuLS1cXG5mcy9leHQ0L3BhZ2UtaW8uYy0yNDEtXFx0XFx0cmV0dXJuIHRydWU7XFxuZnMvZXh0NC9wYWdlLWlvLmM6MjQyOlxcdGlmICh0ZXN0X29wdChpb19lbmQtXFx1MDAzZWlub2RlLVxcdTAwM2VpX3NiLCBEQVRBX0VSUl9BQk9SVCkgXFx1MDAyNlxcdTAwMjZcXG5mcy9leHQ0L3BhZ2UtaW8uYy0yNDMtXFx0ICAgIGlvX2VuZC1cXHUwMDNlZmxhZyBcXHUwMDI2IEVYVDRfSU9fRU5EX0ZBSUxFRCBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTE4NzY9c3RhdGljIGNvbnN0IHN0cnVjdCBtb3VudF9vcHRzIHtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy0xOTA3LVxcdHtPcHRfbm9sb2FkLCBFWFQ0X01PVU5UX05PTE9BRCwgTU9QVF9OT19FWFQyIHwgTU9QVF9TRVR9LFxcbmZzL2V4dDQvc3VwZXIuYzoxOTA4OlxcdHtPcHRfZGF0YV9lcnIsIEVYVDRfTU9VTlRfREFUQV9FUlJfQUJPUlQsIE1PUFRfTk9fRVhUMn0sXFxuZnMvZXh0NC9zdXBlci5jLTE5MDktXFx0e09wdF9iYXJyaWVyLCBFWFQ0X01PVU5UX0JBUlJJRVIsIE1PUFRfU0VUfSxcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0yNzcwPXN0YXRpYyBpbnQgZXh0NF9jaGVja19vcHRfY29uc2lzdGVuY3koc3RydWN0IGZzX2NvbnRleHQgKmZjLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTI4MTYtXFx0XFx0aWYgKCFzYmktXFx1MDAzZXNfam91cm5hbCBcXHUwMDI2XFx1MDAyNlxcbmZzL2V4dDQvc3VwZXIuYzoyODE3OlxcdFxcdCAgICBjdHhfdGVzdF9tb3VudF9vcHQoY3R4LCBFWFQ0X01PVU5UX0RBVEFfRVJSX0FCT1JUKSkge1xcbmZzL2V4dDQvc3VwZXIuYy0yODE4LVxcdFxcdFxcdGV4dDRfbXNnKE5VTEwsIEtFUk5fV0FSTklORyxcXG5mcy9leHQ0L3N1cGVyLmMtMjgxOS1cXHRcXHRcXHRcXHQgXFxcIlJlbW91bnRpbmcgZnMgdy9vIGpvdXJuYWwgc28gaWdub3JpbmcgZGF0YV9lcnIgb3B0aW9uXFxcIik7XFxuZnMvZXh0NC9zdXBlci5jOjI4MjA6XFx0XFx0XFx0Y3R4X2NsZWFyX21vdW50X29wdChjdHgsIEVYVDRfTU9VTlRfREFUQV9FUlJfQUJPUlQpO1xcbmZzL2V4dDQvc3VwZXIuYy0yODIxLVxcdFxcdH1cXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0yOTYyPXN0YXRpYyBpbnQgX2V4dDRfc2hvd19vcHRpb25zKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTMwNDctXFx0XFx0U0VRX09QVFNfUFJJTlQoXFxcIm1heF9kaXJfc2l6ZV9rYj0ldVxcXCIsIHNiaS1cXHUwMDNlc19tYXhfZGlyX3NpemVfa2IpO1xcbmZzL2V4dDQvc3VwZXIuYzozMDQ4OlxcdGlmICh0ZXN0X29wdChzYiwgREFUQV9FUlJfQUJPUlQpKVxcbmZzL2V4dDQvc3VwZXIuYy0zMDQ5LVxcdFxcdFNFUV9PUFRTX1BVVFMoXFxcImRhdGFfZXJyPWFib3J0XFxcIik7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NTA2OT1zdGF0aWMgY29uc3QgY2hhciAqZXh0NF9oYXNfam91cm5hbF9vcHRpb24oc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy01MDgxLVxcdFxcdHJldHVybiBcXFwiZGF0YT1cXFwiO1xcbmZzL2V4dDQvc3VwZXIuYzo1MDgyOlxcdGlmICh0ZXN0X29wdChzYiwgREFUQV9FUlJfQUJPUlQpKVxcbmZzL2V4dDQvc3VwZXIuYy01MDgzLVxcdFxcdHJldHVybiBcXFwiZGF0YV9lcnI9YWJvcnRcXFwiO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTU4NjQ9c3RhdGljIHZvaWQgZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGpvdXJuYWxfdCAqam91cm5hbClcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy01ODc3LVxcdFxcdGpvdXJuYWwtXFx1MDAzZWpfZmxhZ3MgXFx1MDAyNj0gfkpCRDJfQkFSUklFUjtcXG5mcy9leHQ0L3N1cGVyLmM6NTg3ODpcXHRpZiAodGVzdF9vcHQoc2IsIERBVEFfRVJSX0FCT1JUKSlcXG5mcy9leHQ0L3N1cGVyLmMtNTg3OS1cXHRcXHRqb3VybmFsLVxcdTAwM2VqX2ZsYWdzIHw9IEpCRDJfQUJPUlRfT05fREFUQV9FUlI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE2OjI2OjQ5LjI5MDEzNzM1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA4OTU1MjYyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgRGF0YSBFcnJvciBIYW5kbGluZyBpbiBleHQ0IHdpdGggSkJEMioqXG5cbk9rYXksIHNvIHRoZSBwYXRjaCBpcyBpbnRyb2R1Y2luZyBzb21lIGludGVyZXN0aW5nIGJlaGF2aW9yIHdoZW4gYGRhdGFfZXJyPWFib3J0YCBpcyB1c2VkIHdpdGggZXh0NC4gSSdtIHNlZWluZyB0aGF0IGl0IGFkZHMgYSBjaGVjayBmb3IgYERBVEFfRVJSX0FCT1JUYCBpbiBgZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zYCB3aGljaCwgaW4gdHVybiwgc2V0cyBgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUmAgaW4gdGhlIGpvdXJuYWwncyBmbGFncy4gVGhlIGNyaXRpY2FsIHBhcnQgaXMgaW4gYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gLCB3aGVyZSB0aGlzIGZsYWcgdHJpZ2dlcnMgYSBqb3VybmFsIGFib3J0IGlmIEkvTyBlcnJvcnMgYXJlIGRldGVjdGVkLlxuXG5UaGUgcXVlc3Rpb24gdGhlbiBpcywgY2FuIHdlIGFjdHVhbGx5IGhpdCB0aGlzIHBhdGg/IE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB5ZXMsIGlmIHdlIG1vdW50IHRoZSBleHQ0IGZpbGVzeXN0ZW0gd2l0aCBgZGF0YV9lcnI9YWJvcnRgIGFuZCB0aGVuIG1hbmFnZSB0byB0cmlnZ2VyIGFuIEkvTyBlcnJvciBkdXJpbmcgdGhlIGpvdXJuYWwgY29tbWl0IHByb2Nlc3MuIFRoaXMgc2VlbXMgcHJldHR5IGRpcmVjdC5cblxuVGhlcmVmb3JlLCB0aGUgb2J2aW91cyBmdXp6aW5nIHRhcmdldHMgYXJlIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBhbmQgYGV4dDRfaW5pdF9qb3VybmFsX3BhcmFtc2AuIEl0J3MgZ29pbmcgdG8gYmUga2V5IHRvIGdlbmVyYXRlIHNvbWUgSS9PIGZhaWx1cmVzIHdpdGhpbiB0aGUgY29udGV4dCBvZiBqb3VybmFsIGNvbW1pdC4gVGhpcyB3aWxsIHJlcXVpcmUgc29tZSBkZWxpYmVyYXRlIGZhdWx0IGluamVjdGlvbiwgcG9zc2libHkgdmlhIHNvbWUgY2xldmVyIGNyYWZ0aW5nIG9mIHRoZSB1bmRlcmx5aW5nIHN0b3JhZ2UgdG8gcHJvZHVjZSB0aGUgbmVjZXNzYXJ5IGNvbmRpdGlvbnMuXG5cblRvIGJ1aWxkIHRoaXMsIEkgYWxzbyBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBpbmNsdWRlcyBgQ09ORklHX0VYVDRfRlNgIGFuZCBgQ09ORklHX0pCRDJgLCBvYnZpb3VzbHkuIExldCBtZSBxdWlja2x5IGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLCBzcGVjaWZpY2FsbHkgYGZzL2piZDIvS2NvbmZpZ2AgYW5kIGBmcy9leHQ0L0tjb25maWdgLCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBvciBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoaXMgYmVoYXZpb3IsIGVzcGVjaWFsbHkgcmVsYXRlZCB0byBlcnJvciBoYW5kbGluZyBvciBqb3VybmFsIGJlaGF2aW9yLiBJJ2xsIG5lZWQgdG8gYmUgYXdhcmUgb2YgYW55IHBvdGVudGlhbCBrbm9icyB0aGF0IG1pZ2h0IGVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZW50aXJlIGZlYXR1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyODAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTY6MjY6NTQuMzc5NjkyMTUyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDU4NjQ5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRVhUNF9GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvZXh0NC9LY29uZmlnOjI6Y29uZmlnIEVYVDRfRlNcXG5mcy9leHQ0L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiVGhlIEV4dGVuZGVkIDQgKGV4dDQpIGZpbGVzeXN0ZW1cXFwiXFxuLS1cXG5mcy9leHQ0L0tjb25maWc9MzU9Y29uZmlnIEVYVDRfVVNFX0ZPUl9FWFQyXFxuLS1cXG5mcy9leHQ0L0tjb25maWctNDUtXFxuZnMvZXh0NC9LY29uZmlnOjQ2OmNvbmZpZyBFWFQ0X0ZTX1BPU0lYX0FDTFxcbmZzL2V4dDQvS2NvbmZpZy00Ny1cXHRib29sIFxcXCJFeHQ0IFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbi0tXFxuZnMvZXh0NC9LY29uZmlnLTU1LVxcbmZzL2V4dDQvS2NvbmZpZzo1Njpjb25maWcgRVhUNF9GU19TRUNVUklUWVxcbmZzL2V4dDQvS2NvbmZpZy01Ny1cXHRib29sIFxcXCJFeHQ0IFNlY3VyaXR5IExhYmVsc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTY6MjY6NTQuNDgwMjg0MTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjQxNDI4Mjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSm91cm5hbCBDb21taXQgTG9naWMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIG5ldyBwYXRjaCBhbmQgaXQgc2VlbXMgbGlrZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGFyZSBgRVhUNF9GU2AgYW5kIGBKQkQyYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc2VlIHRoZSBmb2N1cyBzeW1ib2xzIGFyZSBgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbmAgYW5kIGBleHQ0X2luaXRfam91cm5hbF9wYXJhbXNgLiBIbW0sIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBpcyBhIGhvdCBwYXRoLCBidXQgaXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzICpzcGVjaWZpY2FsbHkqIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBJIG5lZWQgdG8gYmUgY2FyZWZ1bCBoZXJlIGJlY2F1c2UgdGhhdCdzIGEgcHJldHR5IGxhcmdlIGZ1bmN0aW9uLiBcblxuTGV0IG1lIHNlZS4uLiBBaCwgdGhlcmUgaXQgaXMhIFRoZSBzbmlwcGV0IHRoYXQgY2F1Z2h0IG15IGV5ZSBpczpcblxuYGBgY1xuXHRcdGlmIChqb3VybmFsLVx1MDAzZWpfZmxhZ3MgXHUwMDI2IEpCRDJfQUJPUlRfT05fREFUQV9FUlIpXG5cdFx0XHRqYmQyX2pvdXJuYWxfYWJvcnQoam91cm5hbCwgZXJyKTtcbmBgYFxuXG5UaGF0J3MgaW5zaWRlIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYC4gU28sIGl0IGxvb2tzIGxpa2UgdGhleSdyZSBjb25kaXRpb25hbGx5IGFib3J0aW5nIHRoZSBqb3VybmFsIGJhc2VkIG9uIHNvbWUgYEpCRDJfQUJPUlRfT05fREFUQV9FUlJgIGZsYWcuIFJpZ2h0LCBJIHNob3VsZCBsb29rIGF0IGBmcy9qYmQyL2NvbW1pdC5jYCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCdzIGhhcHBlbmluZyBpbiB0aGlzIGNvbW1pdCB0cmFuc2FjdGlvbiBhbmQgd2hhdCB0cmlnZ2VycyB0aGUgYWJvcnQgY29uZGl0aW9uLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIG9uIHRoZSBmaWxlIHN5c3RlbSdzIG92ZXJhbGwgcm9idXN0bmVzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA5OSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNjoyNjo1OS43MjE3MTcwMTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzUwNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvamJkMi9jb21taXQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3NTA6XFx0XFx0XFx0XFx0XFx0bG9ja19idWZmZXIoYmgpO1xcbiA3NTE6XFx0XFx0XFx0XFx0XFx0Y2xlYXJfYnVmZmVyX2RpcnR5KGJoKTtcXG4gNzUyOlxcdFxcdFxcdFxcdFxcdHNldF9idWZmZXJfdXB0b2RhdGUoYmgpO1xcbiA3NTM6XFx0XFx0XFx0XFx0XFx0Ymhfc3VibWl0KGJoLFxcbiA3NTQ6XFx0XFx0XFx0XFx0XFx0XFx0UkVRX09QX1dSSVRFIHwgSkJEMl9KT1VSTkFMX1JFUV9GTEFHUyxcXG4gNzU1OlxcdFxcdFxcdFxcdFxcdFxcdGpvdXJuYWxfZW5kX2J1ZmZlcl9pb19zeW5jKTtcXG4gNzU2OlxcdFxcdFxcdFxcdH1cXG4gNzU3OlxcdFxcdFxcdFxcdGNvbmRfcmVzY2hlZCgpO1xcbiA3NTg6XFx0XFxuIDc1OTpcXHRcXHRcXHRcXHQvKiBGb3JjZSBhIG5ldyBkZXNjcmlwdG9yIHRvIGJlIGdlbmVyYXRlZCBuZXh0XFxuIDc2MDpcXHQgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lIHJvdW5kIHRoZSBsb29wLiAqL1xcbiA3NjE6XFx0XFx0XFx0XFx0ZGVzY3JpcHRvciA9IE5VTEw7XFxuIDc2MjpcXHRcXHRcXHRcXHRidWZzID0gMDtcXG4gNzYzOlxcdFxcdFxcdH1cXG4gNzY0OlxcdFxcdH1cXG4gNzY1OlxcdFxcbiA3NjY6XFx0XFx0ZXJyID0gam91cm5hbF9maW5pc2hfaW5vZGVfZGF0YV9idWZmZXJzKGpvdXJuYWwsIGNvbW1pdF90cmFuc2FjdGlvbik7XFxuIDc2NzpcXHRcXHRpZiAoZXJyKSB7XFxuIDc2ODpcXHRcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HXFxuIDc2OTpcXHRcXHRcXHRcXHRcXFwiSkJEMjogRGV0ZWN0ZWQgSU8gZXJyb3JzICVkIHdoaWxlIGZsdXNoaW5nIGZpbGUgZGF0YSBvbiAlc1xcXFxuXFxcIixcXG4gNzcwOlxcdFxcdFxcdFxcdGVyciwgam91cm5hbC1cXHUwMDNlal9kZXZuYW1lKTtcXG4gNzcxOlxcdFxcdFxcdGlmIChqb3VybmFsLVxcdTAwM2VqX2ZsYWdzIFxcdTAwMjYgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUilcXG4gNzcyOlxcdFxcdFxcdFxcdGpiZDJfam91cm5hbF9hYm9ydChqb3VybmFsLCBlcnIpO1xcbiA3NzM6XFx0XFx0XFx0ZXJyID0gMDtcXG4gNzc0OlxcdFxcdH1cXG4gNzc1OlxcdFxcbiA3NzY6XFx0XFx0LypcXG4gNzc3OlxcdFxcdCAqIEdldCBjdXJyZW50IG9sZGVzdCB0cmFuc2FjdGlvbiBpbiB0aGUgbG9nIGJlZm9yZSB3ZSBpc3N1ZSBmbHVzaFxcbiA3Nzg6XFx0XFx0ICogdG8gdGhlIGZpbGVzeXN0ZW0gZGV2aWNlLiBBZnRlciB0aGUgZmx1c2ggd2UgY2FuIGJlIHN1cmUgdGhhdFxcbiA3Nzk6XFx0XFx0ICogYmxvY2tzIG9mIGFsbCBvbGRlciB0cmFuc2FjdGlvbnMgYXJlIGNoZWNrcG9pbnRlZCB0byBwZXJzaXN0ZW50XFxuIDc4MDpcXHRcXHQgKiBzdG9yYWdlIGFuZCB3ZSB3aWxsIGJlIHNhZmUgdG8gdXBkYXRlIGpvdXJuYWwgc3RhcnQgaW4gdGhlXFxuIDc4MTpcXHRcXHQgKiBzdXBlcmJsb2NrIHdpdGggdGhlIG51bWJlcnMgd2UgZ2V0IGhlcmUuXFxuIDc4MjpcXHRcXHQgKi9cXG4gNzgzOlxcdFxcdHVwZGF0ZV90YWlsID1cXG4gNzg0OlxcdFxcdFxcdGpiZDJfam91cm5hbF9nZXRfbG9nX3RhaWwoam91cm5hbCwgXFx1MDAyNmZpcnN0X3RpZCwgXFx1MDAyNmZpcnN0X2Jsb2NrKTtcXG4gNzg1OlxcdFxcbiA3ODY6XFx0XFx0d3JpdGVfbG9jayhcXHUwMDI2am91cm5hbC1cXHUwMDNlal9zdGF0ZV9sb2NrKTtcXG4gNzg3OlxcdFxcdGlmICh1cGRhdGVfdGFpbCkge1xcbiA3ODg6XFx0XFx0XFx0bG9uZyBmcmVlZCA9IGZpcnN0X2Jsb2NrIC0gam91cm5hbC1cXHUwMDNlal90YWlsO1xcbiA3ODk6XFx0XFxuIDc5MDpcXHRcXHRcXHRpZiAoZmlyc3RfYmxvY2sgXFx1MDAzYyBqb3VybmFsLVxcdTAwM2VqX3RhaWwpXFxuIDc5MTpcXHRcXHRcXHRcXHRmcmVlZCArPSBqb3VybmFsLVxcdTAwM2VqX2xhc3QgLSBqb3VybmFsLVxcdTAwM2VqX2ZpcnN0O1xcbiA3OTI6XFx0XFx0XFx0LyogVXBkYXRlIHRhaWwgb25seSBpZiB3ZSBmcmVlIHNpZ25pZmljYW50IGFtb3VudCBvZiBzcGFjZSAqL1xcbiA3OTM6XFx0XFx0XFx0aWYgKGZyZWVkIFxcdTAwM2Mgam91cm5hbC1cXHUwMDNlal9tYXhfdHJhbnNhY3Rpb25fYnVmZmVycylcXG4gNzk0OlxcdFxcdFxcdFxcdHVwZGF0ZV90YWlsID0gMDtcXG4gNzk1OlxcdFxcdH1cXG4gNzk2OlxcdFxcdEpfQVNTRVJUKGNvbW1pdF90cmFuc2FjdGlvbi1cXHUwMDNldF9zdGF0ZSA9PSBUX0NPTU1JVCk7XFxuIDc5NzpcXHRcXHRjb21taXRfdHJhbnNhY3Rpb24tXFx1MDAzZXRfc3RhdGUgPSBUX0NPTU1JVF9ERkxVU0g7XFxuIDc5ODpcXHRcXHR3cml0ZV91bmxvY2soXFx1MDAyNmpvdXJuYWwtXFx1MDAzZWpfc3RhdGVfbG9jayk7XFxuIDc5OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTY6MjY6NTkuNzIxODU0Mjg5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0MjY2NDgyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCB0aGUgZ29hbCBpcyB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgZnVuY3Rpb24sIGFuZCBpdCBzZWVtcyBsaWtlICoqYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gIGlzIGRlZmluaXRlbHkgdGhlIGtleSBmdW5jdGlvbiBoZXJlKiouIEknbSBhbG1vc3QgY2VydGFpbiB0aGF0J3MgdGhlIG9uZSB3ZSdyZSBkZWFsaW5nIHdpdGguIEhvd2V2ZXIsIGxldCdzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgc25lYWt5IHNpZGUgcGxheWVycyBpbnZvbHZlZC4gSG1tLCBJIHNlZSB0aGF0IGBleHQ0X2luaXRfam91cm5hbF9wYXJhbXNgIGFsc28gZ290IGEgbGl0dGxlIGxvdmUuIE5vdywgd2hlcmUgZG9lcyAqdGhhdCogZml0IGluP1xuXG5SaWdodCwgYGV4dDRfaW5pdF9qb3VybmFsX3BhcmFtc2AgaXMgY2FsbGVkIGZyb20gYGV4dDRfbG9hZF9qb3VybmFsYCBhbmQgYGV4dDRfcmVtb3VudGAuIFRoYXQncyBpbXBvcnRhbnQgY29udGV4dC4gVGhhdCBnaXZlcyBhIGxpdHRsZSBtb3JlIGluc2lnaHQgdG8gdGhlIGZ1bmN0aW9uLiBJdCBzZWVtcyBiZXN0IHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGlzIGBleHQ0X2luaXRfam91cm5hbF9wYXJhbXNgIGZ1bmN0aW9uLCBhbmQgc2VlIGhvdyBpdCBpcyB1dGlsaXplZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM4MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTY6Mjc6MDMuODY0NTIxMDgxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NDI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9leHQ0L3N1cGVyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTg2MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNTg2MDpcXHQgKiBTZXR1cCBhbnkgcGVyLWZzIGpvdXJuYWwgcGFyYW1ldGVycyBub3cuICBXZSdsbCBkbyB0aGlzIGJvdGggb25cXG41ODYxOlxcdCAqIGluaXRpYWwgbW91bnQsIG9uY2UgdGhlIGpvdXJuYWwgaGFzIGJlZW4gaW5pdGlhbGlzZWQgYnV0IGJlZm9yZSB3ZSd2ZVxcbjU4NjI6XFx0ICogZG9uZSBhbnkgcmVjb3Zlcnk7IGFuZCBhZ2FpbiBvbiBhbnkgc3Vic2VxdWVudCByZW1vdW50LlxcbjU4NjM6XFx0ICovXFxuNTg2NDpcXHRzdGF0aWMgdm9pZCBleHQ0X2luaXRfam91cm5hbF9wYXJhbXMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgam91cm5hbF90ICpqb3VybmFsKVxcbjU4NjU6XFx0e1xcbjU4NjY6XFx0XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuNTg2NzpcXHRcXG41ODY4OlxcdFxcdGpvdXJuYWwtXFx1MDAzZWpfY29tbWl0X2ludGVydmFsID0gc2JpLVxcdTAwM2VzX2NvbW1pdF9pbnRlcnZhbDtcXG41ODY5OlxcdFxcdGpvdXJuYWwtXFx1MDAzZWpfbWluX2JhdGNoX3RpbWUgPSBzYmktXFx1MDAzZXNfbWluX2JhdGNoX3RpbWU7XFxuNTg3MDpcXHRcXHRqb3VybmFsLVxcdTAwM2VqX21heF9iYXRjaF90aW1lID0gc2JpLVxcdTAwM2VzX21heF9iYXRjaF90aW1lO1xcbjU4NzE6XFx0XFx0ZXh0NF9mY19pbml0KHNiLCBqb3VybmFsKTtcXG41ODcyOlxcdFxcbjU4NzM6XFx0XFx0d3JpdGVfbG9jayhcXHUwMDI2am91cm5hbC1cXHUwMDNlal9zdGF0ZV9sb2NrKTtcXG41ODc0OlxcdFxcdGlmICh0ZXN0X29wdChzYiwgQkFSUklFUikpXFxuNTg3NTpcXHRcXHRcXHRqb3VybmFsLVxcdTAwM2VqX2ZsYWdzIHw9IEpCRDJfQkFSUklFUjtcXG41ODc2OlxcdFxcdGVsc2VcXG41ODc3OlxcdFxcdFxcdGpvdXJuYWwtXFx1MDAzZWpfZmxhZ3MgXFx1MDAyNj0gfkpCRDJfQkFSUklFUjtcXG41ODc4OlxcdFxcdGlmICh0ZXN0X29wdChzYiwgREFUQV9FUlJfQUJPUlQpKVxcbjU4Nzk6XFx0XFx0XFx0am91cm5hbC1cXHUwMDNlal9mbGFncyB8PSBKQkQyX0FCT1JUX09OX0RBVEFfRVJSO1xcbjU4ODA6XFx0XFx0ZWxzZVxcbjU4ODE6XFx0XFx0XFx0am91cm5hbC1cXHUwMDNlal9mbGFncyBcXHUwMDI2PSB+SkJEMl9BQk9SVF9PTl9EQVRBX0VSUjtcXG41ODgyOlxcdFxcdC8qXFxuNTg4MzpcXHRcXHQgKiBBbHdheXMgZW5hYmxlIGpvdXJuYWwgY3ljbGUgcmVjb3JkIG9wdGlvbiwgbGV0dGluZyB0aGUgam91cm5hbFxcbjU4ODQ6XFx0XFx0ICogcmVjb3JkcyBsb2cgdHJhbnNhY3Rpb25zIGNvbnRpbnVvdXNseSBiZXR3ZWVuIGVhY2ggbW91bnQuXFxuNTg4NTpcXHRcXHQgKi9cXG41ODg2OlxcdFxcdGpvdXJuYWwtXFx1MDAzZWpfZmxhZ3MgfD0gSkJEMl9DWUNMRV9SRUNPUkQ7XFxuNTg4NzpcXHRcXHR3cml0ZV91bmxvY2soXFx1MDAyNmpvdXJuYWwtXFx1MDAzZWpfc3RhdGVfbG9jayk7XFxuNTg4ODpcXHR9XFxuNTg4OTpcXHRcXG41ODkwOlxcdHN0YXRpYyBzdHJ1Y3QgaW5vZGUgKmV4dDRfZ2V0X2pvdXJuYWxfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG41ODkxOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGpvdXJuYWxfaW51bSlcXG41ODkyOlxcdHtcXG41ODkzOlxcdFxcdHN0cnVjdCBpbm9kZSAqam91cm5hbF9pbm9kZTtcXG41ODk0OlxcdFxcbjU4OTU6XFx0XFx0LypcXG41ODk2OlxcdFxcdCAqIFRlc3QgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYSB2YWxpZCBpbm9kZSBvbiBkaXNrLiAgQmFkIHRoaW5nc1xcbjU4OTc6XFx0XFx0ICogaGFwcGVuIGlmIHdlIGlnZXQoKSBhbiB1bnVzZWQgaW5vZGUsIGFzIHRoZSBzdWJzZXF1ZW50IGlwdXQoKVxcbjU4OTg6XFx0XFx0ICogd2lsbCB0cnkgdG8gZGVsZXRlIGl0LlxcbjU4OTk6XFx0XFx0ICovXFxuNTkwMDpcXHRcXHRqb3VybmFsX2lub2RlID0gZXh0NF9pZ2V0KHNiLCBqb3VybmFsX2ludW0sIEVYVDRfSUdFVF9TUEVDSUFMKTtcXG41OTAxOlxcdFxcdGlmIChJU19FUlIoam91cm5hbF9pbm9kZSkpIHtcXG41OTAyOlxcdFxcdFxcdGV4dDRfbXNnKHNiLCBLRVJOX0VSUiwgXFxcIm5vIGpvdXJuYWwgZm91bmRcXFwiKTtcXG41OTAzOlxcdFxcdFxcdHJldHVybiBFUlJfQ0FTVChqb3VybmFsX2lub2RlKTtcXG41OTA0OlxcdFxcdH1cXG41OTA1OlxcdFxcdGlmICgham91cm5hbF9pbm9kZS1cXHUwMDNlaV9ubGluaykge1xcbjU5MDY6XFx0XFx0XFx0bWFrZV9iYWRfaW5vZGUoam91cm5hbF9pbm9kZSk7XFxuNTkwNzpcXHRcXHRcXHRpcHV0KGpvdXJuYWxfaW5vZGUpO1xcbjU5MDg6XFx0XFx0XFx0ZXh0NF9tc2coc2IsIEtFUk5fRVJSLCBcXFwiam91cm5hbCBpbm9kZSBpcyBkZWxldGVkXFxcIik7XFxuNTkwOTpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUZTQ09SUlVQVEVEKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTY6Mjc6MDMuODY0Nzg3MzYxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3NTY5MjY5MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgcXVpY2sgdGFrZSBvbiB0aGlzLlxuXG4qKkZ1enppbmcgdGhlIEV4dDQvSkJEMiBEYXRhIEVycm9yIFBhdGNoKipcblxuQWxyaWdodCwgc28gdGhlIHBhdGNoIGlzIGluLCBhbmQgaXQncyBzdXBwb3NlZGx5IG1vZGlmeWluZyBob3cgZXh0NCBhbmQgSkJEMiBoYW5kbGUgZGF0YSBlcnJvcnMuIFRoYXQgaW1tZWRpYXRlbHkgc2V0cyBvZmYgYWxhcm0gYmVsbHMgaW4gbXkgaGVhZCDigJMgZGF0YSBjb3JydXB0aW9uIGJ1Z3MgYXJlIG5vdG9yaW91c2x5IHRyaWNreS4gVGltZSB0byBwdXQgdGhpcyB0aGluZyB0aHJvdWdoIGl0cyBwYWNlcy4gV2UgbmVlZCB0byBmdXp6IGl0LlxuXG5UaGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgYXJlIGBFWFQ0X0ZTYCBhbmQsIG9idmlvdXNseSwgYEpCRDJgLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBgSkJEMmAgaXMgZXZlbiBhIHZhbGlkIGNvbmZpZyBvcHRpb24g4oCTIGNhbuKAmXQgZnV6eiBzb21ldGhpbmcgdGhhdOKAmXMgbm90IGVuYWJsZWQsIG9yIHRoZSBmdXp6aW5nIHdpbGwgYmUgdXNlbGVzcy5cblxuQW5kIHdoZXJlIGRvIEkgYmVnaW4gbXkgZm9jdXNlZCBmdXp6aW5nIGVmZm9ydHM/IFRoZSBtb3N0IGNyaXRpY2FsIGVudHJ5IHBvaW50cyByZWxhdGVkIHRvIHRoaXMgcGF0Y2ggYXBwZWFyIHRvIGJlIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBhbmQgYGV4dDRfaW5pdF9qb3VybmFsX3BhcmFtc2AuIFRoZXNlIGFyZSBsaWtlbHkgdGhlIGZ1bmN0aW9ucyB3aGVyZSB0aGUgY2hhbmdlcyBhcmUgbW9zdCBjb25jZW50cmF0ZWQsIHRoZSBwbGFjZXMgd2hlcmUgdGhlIGRhdGEgZXJyb3IgaGFuZGxpbmcgbG9naWMgaGFzIGJlZW4gdHdlYWtlZC4gRm9jdXNpbmcgdGhlcmUgc2hvdWxkIGdpdmUgdXMgdGhlIGJlc3QgYmFuZyBmb3Igb3VyIGZ1enppbmcgYnVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU1OCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTY6Mjc6MjEuNDM0MDU5Mjg4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDQ0NTEwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSkJEMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9qYmQyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvamJkMi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvamJkMi9LY29uZmlnOjI6Y29uZmlnIEpCRDJcXG5mcy9qYmQyL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZnMvamJkMi9LY29uZmlnLTE5LVxcbmZzL2piZDIvS2NvbmZpZzoyMDpjb25maWcgSkJEMl9ERUJVR1xcbmZzL2piZDIvS2NvbmZpZy0yMS1cXHRib29sIFxcXCJKQkQyIChleHQ0KSBkZWJ1Z2dpbmcgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTY6Mjc6MjEuNTA4NTEwNjU3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4NzA0OTAwNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgYXNzZXNzbWVudDpcblxuKipGdXp6aW5nIFRhcmdldCBBc3Nlc3NtZW50OiBKQkQyIGFuZCBleHQ0IHdpdGggZGF0YV9lcnI9YWJvcnQqKlxuXG5SaWdodCwgc28gYEpCRDJgIGlzIGRlZmluaXRlbHkgYSB0aGluZywgYW5kIHdlIGhhdmUgYSBwb3RlbnRpYWwgdGFyZ2V0IGhlcmUuIExldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuVGhlIGtleSBhc3BlY3RzIGFyZTogYFdvcnRoRnV6emluZzogdHJ1ZWAuIEV4Y2VsbGVudC4gV2UgaGF2ZSBhIHNvbGlkIHJlYXNvbiB0byBpbnZlc3RpZ2F0ZSB0aGlzIHRob3JvdWdobHkuIFRoZSBgRm9jdXNTeW1ib2xzYDogYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gIGFuZCBgZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zYCBhcmUgc3BvdCBvbiwgdGhlc2UgYXJlIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMgdG8gZXhhbWluZS4gQW5kIHRoZSByZWxldmFudCBgRW5hYmxlQ29uZmlnc2A6IGBFWFQ0X0ZTYCwgYEpCRDJgIOKAkyBubyBzdXJwcmlzZXMgdGhlcmUsIHdlIG5lZWQgYm90aCBvZiB0aGVzZSBmaWxlc3lzdGVtIGNvbXBvbmVudHMgZW5hYmxlZCBmb3IgdGhpcyB0byBiZSByZWxldmFudC5cblxuVGhlIHJlYXNvbmluZyBpcyBzb3VuZDogVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBgZGF0YV9lcnI9YWJvcnRgIG1vdW50IG9wdGlvbiBmb3IgZXh0NC4gRXNzZW50aWFsbHksIGl0IGFkZHMgYSBuZXcgYEpCRDJfQUJPUlRfT05fREFUQV9FUlJgIGZsYWcgd2l0aGluIGBqYmQyYC4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGl0IGFsdGVycyBlcnJvciBoYW5kbGluZy4gU3BlY2lmaWNhbGx5LCBpZiB0aGF0IGZsYWcgaXMgc2V0LCBgamJkMmAgKndpbGwqIGFib3J0IHRoZSBqb3VybmFsIGlmIGl0IGVuY291bnRlcnMgSS9PIGVycm9ycyB3aGlsZSBmbHVzaGluZyBmaWxlIGRhdGEgZHVyaW5nIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBUaGUgYmVoYXZpb3IgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGRlZmF1bHQgaW4gY2FzZXMgb2YgSS9PIGZhaWx1cmVzLiBJdCdzIG5vdCBqdXN0IGEgcGVyZm9ybWFuY2UgdHdlYWssIHRoaXMgZGlyZWN0bHkgaW1wYWN0cyBob3cgdGhlIGZpbGUgc3lzdGVtIHJlc3BvbmRzIHRvIGVycm9ycywgd2hpY2ggbWFrZXMgaXQgYW4gZXhjZWxsZW50IHRhcmdldCBmb3IgZnV6emluZy4gV2UgY2FuIHNlZSBob3cgdGhlIGZpbGUgc3lzdGVtIGJlaGF2ZXMgdW5kZXIgdW51c3VhbCBzY2VuYXJpb3Mgd2l0aCB0aGlzLlxuXG5UaGVyZWZvcmUsIHRoaXMgaXMgYSBsZWdpdGltYXRlIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gSSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIGVudmlyb25tZW50IHNldCB1cCBjb3JyZWN0bHkgdG8gdHJpZ2dlciB0aGVzZSBhYm9ydCBjb25kaXRpb25zIGFuZCBvYnNlcnZlIHRoZSByZXN1bHRzLlxuSSB0aGluayBJJ2xsIGBzZXQtcmVzdWx0c2Agbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDMzLCJPdXRwdXRUb2tlbnMiOjE2NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNjoyNzoyNy4zNzkwMDI1NDJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjI2MDM1NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIixcbiAgICBcIkpCRDJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uXCIsXG4gICAgXCJleHQ0X2luaXRfam91cm5hbF9wYXJhbXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IG1vdW50IG9wdGlvbiBgZGF0YV9lcnI9YWJvcnRgIHRvIGV4dDQsIHdoaWNoIHNldHMgYSBuZXcgZmxhZyBgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUmAgaW4gamJkMi4gV2hlbiB0aGlzIGZsYWcgaXMgc2V0LCBqYmQyIHdpbGwgYWJvcnQgdGhlIGpvdXJuYWwgaWYgdGhlcmUgYXJlIElPIGVycm9ycyBkdXJpbmcgZmlsZSBkYXRhIGZsdXNoaW5nIGluIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBlcnJvciBoYW5kbGluZyBiZWhhdmlvciBvZiBleHQ0IGFuZCBqYmQyLCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCIsXG4gICAgXCJKQkQyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvblwiLFxuICAgIFwiZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBtb3VudCBvcHRpb24gYGRhdGFfZXJyPWFib3J0YCB0byBleHQ0LCB3aGljaCBzZXRzIGEgbmV3IGZsYWcgYEpCRDJfQUJPUlRfT05fREFUQV9FUlJgIGluIGpiZDIuIFdoZW4gdGhpcyBmbGFnIGlzIHNldCwgamJkMiB3aWxsIGFib3J0IHRoZSBqb3VybmFsIGlmIHRoZXJlIGFyZSBJTyBlcnJvcnMgZHVyaW5nIGZpbGUgZGF0YSBmbHVzaGluZyBpbiBgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgZXJyb3IgaGFuZGxpbmcgYmVoYXZpb3Igb2YgZXh0NCBhbmQgamJkMiwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowgpzxn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-23 16:14:35 +0000 UTC FinishedAt: 2026-06-23 16:27:29 +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": "079a028d6327e68cfa5d38b36123637b321c19a7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS", "JBD2" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "079a028d6327e68cfa5d38b36123637b321c19a7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS", "JBD2" ], "series_id": "0422c739-70ff-4466-a569-f4cb59fe4c83" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "jbd2_journal_commit_transaction", "ext4_init_journal_params" ], "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+CgkJCTx0ZD4yMDI2LzA2LzIzIDE2OjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OywKICAgICYjMzQ7SkJEMiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2piZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb24mIzM0OywKICAgICYjMzQ7ZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBuZXcgbW91bnQgb3B0aW9uIGBkYXRhX2Vycj1hYm9ydGAgdG8gZXh0NCwgd2hpY2ggc2V0cyBhIG5ldyBmbGFnIGBKQkQyX0FCT1JUX09OX0RBVEFfRVJSYCBpbiBqYmQyLiBXaGVuIHRoaXMgZmxhZyBpcyBzZXQsIGpiZDIgd2lsbCBhYm9ydCB0aGUgam91cm5hbCBpZiB0aGVyZSBhcmUgSU8gZXJyb3JzIGR1cmluZyBmaWxlIGRhdGEgZmx1c2hpbmcgaW4gYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgdGhlIGVycm9yIGhhbmRsaW5nIGJlaGF2aW9yIG9mIGV4dDQgYW5kIGpiZDIsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE2OjI2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODhkZGRlYWFkNTg5ODk2MjJjN2M4MDllODZiOTI1MmY1OGZhY2Y1ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDIzIDE2OjI2OjQwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvc3VwZXIuYyBiL2ZzL2V4dDQvc3VwZXIuY1xuaW5kZXggNzI4MzEwOGQ3NjA5MTcuLmRlMzQ0OTBhNWI2ODBjIDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9zdXBlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L3N1cGVyLmNcbkBAIC01ODc1LDYgJiM0Mzs1ODc1LDEwIEBAIHN0YXRpYyB2b2lkIGV4dDRfaW5pdF9qb3VybmFsX3BhcmFtcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBqb3VybmFsX3QgKmpvdXJuYWwpXG4gXHRcdGpvdXJuYWwtXHUwMDNlal9mbGFncyB8PSBKQkQyX0JBUlJJRVI7XG4gXHRlbHNlXG4gXHRcdGpvdXJuYWwtXHUwMDNlal9mbGFncyBcdTAwMjY9IH5KQkQyX0JBUlJJRVI7XG4mIzQzO1x0aWYgKHRlc3Rfb3B0KHNiLCBEQVRBX0VSUl9BQk9SVCkpXG4mIzQzO1x0XHRqb3VybmFsLVx1MDAzZWpfZmxhZ3MgfD0gSkJEMl9BQk9SVF9PTl9EQVRBX0VSUjtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRqb3VybmFsLVx1MDAzZWpfZmxhZ3MgXHUwMDI2PSB+SkJEMl9BQk9SVF9PTl9EQVRBX0VSUjtcbiBcdC8qXG4gXHQgKiBBbHdheXMgZW5hYmxlIGpvdXJuYWwgY3ljbGUgcmVjb3JkIG9wdGlvbiwgbGV0dGluZyB0aGUgam91cm5hbFxuIFx0ICogcmVjb3JkcyBsb2cgdHJhbnNhY3Rpb25zIGNvbnRpbnVvdXNseSBiZXR3ZWVuIGVhY2ggbW91bnQuXG5kaWZmIC0tZ2l0IGEvZnMvamJkMi9jb21taXQuYyBiL2ZzL2piZDIvY29tbWl0LmNcbmluZGV4IGQ4NTc3NzI1YTJmYmI1Li40OWFjYzlkMDgwOWViYiAxMDA2NDRcbi0tLSBhL2ZzL2piZDIvY29tbWl0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2piZDIvY29tbWl0LmNcbkBAIC03NjgsNiAmIzQzOzc2OCw4IEBAIHZvaWQgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbihqb3VybmFsX3QgKmpvdXJuYWwpXG4gXHRcdHByaW50ayhLRVJOX1dBUk5JTkdcbiBcdFx0XHRcJiMzNDtKQkQyOiBEZXRlY3RlZCBJTyBlcnJvcnMgJWQgd2hpbGUgZmx1c2hpbmcgZmlsZSBkYXRhIG9uICVzXFxuXCYjMzQ7LFxuIFx0XHRcdGVyciwgam91cm5hbC1cdTAwM2VqX2Rldm5hbWUpO1xuJiM0MztcdFx0aWYgKGpvdXJuYWwtXHUwMDNlal9mbGFncyBcdTAwMjYgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUilcbiYjNDM7XHRcdFx0amJkMl9qb3VybmFsX2Fib3J0KGpvdXJuYWwsIGVycik7XG4gXHRcdGVyciA9IDA7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9qYmQyLmggYi9pbmNsdWRlL2xpbnV4L2piZDIuaFxuaW5kZXggN2U3ODVhYTZkMzVkNjUuLmUzOTY3OTY1NmRlNjYwIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9qYmQyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvamJkMi5oXG5AQCAtMTQxMCw2ICYjNDM7MTQxMCw3IEBAIEpCRDJfRkVBVFVSRV9JTkNPTVBBVF9GVU5DUyhmYXN0X2NvbW1pdCxcdEZBU1RfQ09NTUlUKVxuICNkZWZpbmUgSkJEMl9GTFVTSEVEXHQweDAwOFx0LyogVGhlIGpvdXJuYWwgc3VwZXJibG9jayBoYXMgYmVlbiBmbHVzaGVkICovXG4gI2RlZmluZSBKQkQyX0xPQURFRFx0MHgwMTBcdC8qIFRoZSBqb3VybmFsIHN1cGVyYmxvY2sgaGFzIGJlZW4gbG9hZGVkICovXG4gI2RlZmluZSBKQkQyX0JBUlJJRVJcdDB4MDIwXHQvKiBVc2UgSURFIGJhcnJpZXJzICovXG4mIzQzOyNkZWZpbmUgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUlx0MHgwNDBcdC8qIEFib3J0IHRoZSBqb3VybmFsIG9uIGZpbGUgZGF0YSB3cml0ZSBlcnJvcnMgKi9cbiAjZGVmaW5lIEpCRDJfQ1lDTEVfUkVDT1JEXHRcdDB4MDgwXHQvKiBKb3VybmFsIGN5Y2xlZCByZWNvcmQgbG9nIG9uXG4gXHRcdFx0XHRcdFx0ICogY2xlYW4gYW5kIGVtcHR5IGZpbGVzeXN0ZW1cbiBcdFx0XHRcdFx0XHQgKiBsb2dnaW5nIGFyZWEgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNjoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDssCiAgICAmIzM0O0pCRDImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uJiMzNDssCiAgICAmIzM0O2V4dDRfaW5pdF9qb3VybmFsX3BhcmFtcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IG1vdW50IG9wdGlvbiBgZGF0YV9lcnI9YWJvcnRgIHRvIGV4dDQsIHdoaWNoIHNldHMgYSBuZXcgZmxhZyBgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUmAgaW4gamJkMi4gV2hlbiB0aGlzIGZsYWcgaXMgc2V0LCBqYmQyIHdpbGwgYWJvcnQgdGhlIGpvdXJuYWwgaWYgdGhlcmUgYXJlIElPIGVycm9ycyBkdXJpbmcgZmlsZSBkYXRhIGZsdXNoaW5nIGluIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBlcnJvciBoYW5kbGluZyBiZWhhdmlvciBvZiBleHQ0IGFuZCBqYmQyLCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODhkZGRlYWFkNTg5ODk2MjJjN2M4MDllODZiOTI1MmY1OGZhY2Y1ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDIzIDE2OjI2OjQwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9zdXBlci5jIGIvZnMvZXh0NC9zdXBlci5jCmluZGV4IDcyODMxMDhkNzYwOTE3Li5kZTM0NDkwYTViNjgwYyAxMDA2NDQKLS0tIGEvZnMvZXh0NC9zdXBlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvc3VwZXIuYwpAQCAtNTg3NSw2ICYjNDM7NTg3NSwxMCBAQCBzdGF0aWMgdm9pZCBleHQ0X2luaXRfam91cm5hbF9wYXJhbXMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgam91cm5hbF90ICpqb3VybmFsKQogCQlqb3VybmFsLSZndDtqX2ZsYWdzIHw9IEpCRDJfQkFSUklFUjsKIAllbHNlCiAJCWpvdXJuYWwtJmd0O2pfZmxhZ3MgJmFtcDs9IH5KQkQyX0JBUlJJRVI7CiYjNDM7CWlmICh0ZXN0X29wdChzYiwgREFUQV9FUlJfQUJPUlQpKQomIzQzOwkJam91cm5hbC0mZ3Q7al9mbGFncyB8PSBKQkQyX0FCT1JUX09OX0RBVEFfRVJSOwomIzQzOwllbHNlCiYjNDM7CQlqb3VybmFsLSZndDtqX2ZsYWdzICZhbXA7PSB+SkJEMl9BQk9SVF9PTl9EQVRBX0VSUjsKIAkvKgogCSAqIEFsd2F5cyBlbmFibGUgam91cm5hbCBjeWNsZSByZWNvcmQgb3B0aW9uLCBsZXR0aW5nIHRoZSBqb3VybmFsCiAJICogcmVjb3JkcyBsb2cgdHJhbnNhY3Rpb25zIGNvbnRpbnVvdXNseSBiZXR3ZWVuIGVhY2ggbW91bnQuCmRpZmYgLS1naXQgYS9mcy9qYmQyL2NvbW1pdC5jIGIvZnMvamJkMi9jb21taXQuYwppbmRleCBkODU3NzcyNWEyZmJiNS4uNDlhY2M5ZDA4MDllYmIgMTAwNjQ0Ci0tLSBhL2ZzL2piZDIvY29tbWl0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvamJkMi9jb21taXQuYwpAQCAtNzY4LDYgJiM0Mzs3NjgsOCBAQCB2b2lkIGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb24oam91cm5hbF90ICpqb3VybmFsKQogCQlwcmludGsoS0VSTl9XQVJOSU5HCiAJCQkmIzM0O0pCRDI6IERldGVjdGVkIElPIGVycm9ycyAlZCB3aGlsZSBmbHVzaGluZyBmaWxlIGRhdGEgb24gJXNcbiYjMzQ7LAogCQkJZXJyLCBqb3VybmFsLSZndDtqX2Rldm5hbWUpOwomIzQzOwkJaWYgKGpvdXJuYWwtJmd0O2pfZmxhZ3MgJmFtcDsgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUikKJiM0MzsJCQlqYmQyX2pvdXJuYWxfYWJvcnQoam91cm5hbCwgZXJyKTsKIAkJZXJyID0gMDsKIAl9CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvamJkMi5oIGIvaW5jbHVkZS9saW51eC9qYmQyLmgKaW5kZXggN2U3ODVhYTZkMzVkNjUuLmUzOTY3OTY1NmRlNjYwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2piZDIuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2piZDIuaApAQCAtMTQxMCw2ICYjNDM7MTQxMCw3IEBAIEpCRDJfRkVBVFVSRV9JTkNPTVBBVF9GVU5DUyhmYXN0X2NvbW1pdCwJRkFTVF9DT01NSVQpCiAjZGVmaW5lIEpCRDJfRkxVU0hFRAkweDAwOAkvKiBUaGUgam91cm5hbCBzdXBlcmJsb2NrIGhhcyBiZWVuIGZsdXNoZWQgKi8KICNkZWZpbmUgSkJEMl9MT0FERUQJMHgwMTAJLyogVGhlIGpvdXJuYWwgc3VwZXJibG9jayBoYXMgYmVlbiBsb2FkZWQgKi8KICNkZWZpbmUgSkJEMl9CQVJSSUVSCTB4MDIwCS8qIFVzZSBJREUgYmFycmllcnMgKi8KJiM0MzsjZGVmaW5lIEpCRDJfQUJPUlRfT05fREFUQV9FUlIJMHgwNDAJLyogQWJvcnQgdGhlIGpvdXJuYWwgb24gZmlsZSBkYXRhIHdyaXRlIGVycm9ycyAqLwogI2RlZmluZSBKQkQyX0NZQ0xFX1JFQ09SRAkJMHgwODAJLyogSm91cm5hbCBjeWNsZWQgcmVjb3JkIGxvZyBvbgogCQkJCQkJICogY2xlYW4gYW5kIGVtcHR5IGZpbGVzeXN0ZW0KIAkJCQkJCSAqIGxvZ2dpbmcgYXJlYSAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzY2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBmcy9leHQ0L3N1cGVyLmNgLCBgZnMvamJkMi9jb21taXQuY2AsIGFuZCBgaW5jbHVkZS9saW51eC9qYmQyLmhgLiBJdCBzZWVtcyB3ZSYjMzk7cmUgYWRkaW5nIGEgbmV3IGZsYWcsIGBKQkQyX0FCT1JUX09OX0RBVEFfRVJSYCwgdG8gYGpiZDJgLiBGcm9tIG15IHF1aWNrIHNjYW4sIGl0IGxvb2tzIGxpa2UgdGhpcyBmbGFnIGlzIHNldCBpbiBgZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zYCBpZiB0aGUgYERBVEFfRVJSX0FCT1JUYCBvcHRpb24gaXMgZW5hYmxlZCBpbiB0aGUgZXh0NCBzdXBlcmJsb2NrLiAgQ3J1Y2lhbGx5LCBpdCBzZWVtcyB0aGF0IGlmIHRoaXMgZmxhZyBpcyBzZXQgKmFuZCogdGhlcmUgYXJlIEkvTyBlcnJvcnMgd2hlbiBmbHVzaGluZyBmaWxlIGRhdGEgZHVyaW5nIGEgam91cm5hbCBjb21taXQgaW4gYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gLCB0aGUgam91cm5hbCBpcyB0aGVuIGFib3J0ZWQgdmlhIGEgY2FsbCB0byBgamJkMl9qb3VybmFsX2Fib3J0KClgLgoKVGhpcyBpcyBkZWZpbml0ZWx5IGEgKmZ1bmN0aW9uYWwqIGNoYW5nZTsgaXQmIzM5O3MgYWx0ZXJpbmcgdGhlIGVycm9yIGhhbmRsaW5nIGJlaGF2aW9yIG9mIGV4dDQgYW5kIGpiZDIgd2hlbiBkYXRhIGludGVncml0eSBpc3N1ZXMgc3VyZmFjZS4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgYW5kIHJhaXNlcyB0aGUgaW1tZWRpYXRlIG5lZWQgdG8gdGhvcm91Z2hseSB0ZXN0IHRoaXMsIGxpa2VseSBieSBmdXp6aW5nIGl0IHRvIHN0cmVzcyBkaWZmZXJlbnQgc2NlbmFyaW9zLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQ6IGBleHQ0X2luaXRfam91cm5hbF9wYXJhbXNgIGFuZCBgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbmAuIEkgbmVlZCB0byBzb2xpZGlmeSB0aGUgY2FsbCBwYXRocy4gYGV4dDRfaW5pdF9qb3VybmFsX3BhcmFtc2AgaXMsIGFzIGV4cGVjdGVkLCBpbnZva2VkIGR1cmluZyB0aGUgbW91bnQgYW5kIHJlbW91bnQgcHJvY2Vzc2VzLiBBbmQgYXMgSSByZWNhbGwsIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBpcyBjYWxsZWQgYnkgdGhlIGpiZDIgY29tbWl0IHRocmVhZCwgd2hpY2ggaXMgZ29vZCB0byBrbm93IGZyb20gYSB0aW1pbmcgcGVyc3BlY3RpdmUuCgpOb3csIHRvIGRldGVybWluZSBpZiB0aGlzIG5ldyBmZWF0dXJlIGlzIG1vdW50LW9wdGlvbi1kcml2ZW4sIG9yIGlmIGl0IGlzIGFsd2F5cyBlbmFibGVkLiBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGlmIGBEQVRBX0VSUl9BQk9SVGAgaXMgYSBtb3VudCBvcHRpb24gYnkgc2VhcmNoaW5nIGZvciB0aGF0IHN0cmluZyB1c2luZyBteSBwcmVmZXJyZWQgdG9vbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtEQVRBX0VSUl9BQk9SVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9leHQ0Lmg9MTAzMD1zdHJ1Y3QgZXh0NF9pbm9kZV9pbmZvIHtcbi0tXG5mcy9leHQ0L2V4dDQuaC0xMjU0LSNkZWZpbmUgRVhUNF9NT1VOVF9ERUxBTExPQ1x0XHQweDgwMDAwMDAgLyogRGVsYWxsb2Mgc3VwcG9ydCAqL1xuZnMvZXh0NC9leHQ0Lmg6MTI1NTojZGVmaW5lIEVYVDRfTU9VTlRfREFUQV9FUlJfQUJPUlRcdDB4MTAwMDAwMDAgLyogQWJvcnQgb24gZmlsZSBkYXRhIHdyaXRlICovXG5mcy9leHQ0L2V4dDQuaC0xMjU2LSNkZWZpbmUgRVhUNF9NT1VOVF9CTE9DS19WQUxJRElUWVx0MHgyMDAwMDAwMCAvKiBCbG9jayB2YWxpZGl0eSBjaGVja2luZyAqL1xuLS1cbmZzL2V4dDQvcGFnZS1pby5jPTE3NT1zdGF0aWMgaW50IGV4dDRfZW5kX2lvX2VuZChleHQ0X2lvX2VuZF90ICppb19lbmQpXG4tLVxuZnMvZXh0NC9wYWdlLWlvLmMtMTk1LVxuZnMvZXh0NC9wYWdlLWlvLmM6MTk2Olx0XHRpZiAodGVzdF9vcHQoc2IsIERBVEFfRVJSX0FCT1JUKSlcbmZzL2V4dDQvcGFnZS1pby5jLTE5Ny1cdFx0XHRqYmQyX2pvdXJuYWxfYWJvcnQoRVhUNF9TQihzYiktXHUwMDNlc19qb3VybmFsLCByZXQpO1xuLS1cbmZzL2V4dDQvcGFnZS1pby5jPTIzNz1zdGF0aWMgYm9vbCBleHQ0X2lvX2VuZF9kZWZlcl9jb21wbGV0aW9uKGV4dDRfaW9fZW5kX3QgKmlvX2VuZClcbi0tXG5mcy9leHQ0L3BhZ2UtaW8uYy0yNDEtXHRcdHJldHVybiB0cnVlO1xuZnMvZXh0NC9wYWdlLWlvLmM6MjQyOlx0aWYgKHRlc3Rfb3B0KGlvX2VuZC1cdTAwM2Vpbm9kZS1cdTAwM2VpX3NiLCBEQVRBX0VSUl9BQk9SVCkgXHUwMDI2XHUwMDI2XG5mcy9leHQ0L3BhZ2UtaW8uYy0yNDMtXHQgICAgaW9fZW5kLVx1MDAzZWZsYWcgXHUwMDI2IEVYVDRfSU9fRU5EX0ZBSUxFRCBcdTAwMjZcdTAwMjZcbi0tXG5mcy9leHQ0L3N1cGVyLmM9MTg3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG1vdW50X29wdHMge1xuLS1cbmZzL2V4dDQvc3VwZXIuYy0xOTA3LVx0e09wdF9ub2xvYWQsIEVYVDRfTU9VTlRfTk9MT0FELCBNT1BUX05PX0VYVDIgfCBNT1BUX1NFVH0sXG5mcy9leHQ0L3N1cGVyLmM6MTkwODpcdHtPcHRfZGF0YV9lcnIsIEVYVDRfTU9VTlRfREFUQV9FUlJfQUJPUlQsIE1PUFRfTk9fRVhUMn0sXG5mcy9leHQ0L3N1cGVyLmMtMTkwOS1cdHtPcHRfYmFycmllciwgRVhUNF9NT1VOVF9CQVJSSUVSLCBNT1BUX1NFVH0sXG4tLVxuZnMvZXh0NC9zdXBlci5jPTI3NzA9c3RhdGljIGludCBleHQ0X2NoZWNrX29wdF9jb25zaXN0ZW5jeShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsXG4tLVxuZnMvZXh0NC9zdXBlci5jLTI4MTYtXHRcdGlmICghc2JpLVx1MDAzZXNfam91cm5hbCBcdTAwMjZcdTAwMjZcbmZzL2V4dDQvc3VwZXIuYzoyODE3Olx0XHQgICAgY3R4X3Rlc3RfbW91bnRfb3B0KGN0eCwgRVhUNF9NT1VOVF9EQVRBX0VSUl9BQk9SVCkpIHtcbmZzL2V4dDQvc3VwZXIuYy0yODE4LVx0XHRcdGV4dDRfbXNnKE5VTEwsIEtFUk5fV0FSTklORyxcbmZzL2V4dDQvc3VwZXIuYy0yODE5LVx0XHRcdFx0IFwmIzM0O1JlbW91bnRpbmcgZnMgdy9vIGpvdXJuYWwgc28gaWdub3JpbmcgZGF0YV9lcnIgb3B0aW9uXCYjMzQ7KTtcbmZzL2V4dDQvc3VwZXIuYzoyODIwOlx0XHRcdGN0eF9jbGVhcl9tb3VudF9vcHQoY3R4LCBFWFQ0X01PVU5UX0RBVEFfRVJSX0FCT1JUKTtcbmZzL2V4dDQvc3VwZXIuYy0yODIxLVx0XHR9XG4tLVxuZnMvZXh0NC9zdXBlci5jPTI5NjI9c3RhdGljIGludCBfZXh0NF9zaG93X29wdGlvbnMoc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4tLVxuZnMvZXh0NC9zdXBlci5jLTMwNDctXHRcdFNFUV9PUFRTX1BSSU5UKFwmIzM0O21heF9kaXJfc2l6ZV9rYj0ldVwmIzM0Oywgc2JpLVx1MDAzZXNfbWF4X2Rpcl9zaXplX2tiKTtcbmZzL2V4dDQvc3VwZXIuYzozMDQ4Olx0aWYgKHRlc3Rfb3B0KHNiLCBEQVRBX0VSUl9BQk9SVCkpXG5mcy9leHQ0L3N1cGVyLmMtMzA0OS1cdFx0U0VRX09QVFNfUFVUUyhcJiMzNDtkYXRhX2Vycj1hYm9ydFwmIzM0Oyk7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTUwNjk9c3RhdGljIGNvbnN0IGNoYXIgKmV4dDRfaGFzX2pvdXJuYWxfb3B0aW9uKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTUwODEtXHRcdHJldHVybiBcJiMzNDtkYXRhPVwmIzM0OztcbmZzL2V4dDQvc3VwZXIuYzo1MDgyOlx0aWYgKHRlc3Rfb3B0KHNiLCBEQVRBX0VSUl9BQk9SVCkpXG5mcy9leHQ0L3N1cGVyLmMtNTA4My1cdFx0cmV0dXJuIFwmIzM0O2RhdGFfZXJyPWFib3J0XCYjMzQ7O1xuLS1cbmZzL2V4dDQvc3VwZXIuYz01ODY0PXN0YXRpYyB2b2lkIGV4dDRfaW5pdF9qb3VybmFsX3BhcmFtcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBqb3VybmFsX3QgKmpvdXJuYWwpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTU4NzctXHRcdGpvdXJuYWwtXHUwMDNlal9mbGFncyBcdTAwMjY9IH5KQkQyX0JBUlJJRVI7XG5mcy9leHQ0L3N1cGVyLmM6NTg3ODpcdGlmICh0ZXN0X29wdChzYiwgREFUQV9FUlJfQUJPUlQpKVxuZnMvZXh0NC9zdXBlci5jLTU4NzktXHRcdGpvdXJuYWwtXHUwMDNlal9mbGFncyB8PSBKQkQyX0FCT1JUX09OX0RBVEFfRVJSO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyODAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIERhdGEgRXJyb3IgSGFuZGxpbmcgaW4gZXh0NCB3aXRoIEpCRDIqKgoKT2theSwgc28gdGhlIHBhdGNoIGlzIGludHJvZHVjaW5nIHNvbWUgaW50ZXJlc3RpbmcgYmVoYXZpb3Igd2hlbiBgZGF0YV9lcnI9YWJvcnRgIGlzIHVzZWQgd2l0aCBleHQ0LiBJJiMzOTttIHNlZWluZyB0aGF0IGl0IGFkZHMgYSBjaGVjayBmb3IgYERBVEFfRVJSX0FCT1JUYCBpbiBgZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zYCB3aGljaCwgaW4gdHVybiwgc2V0cyBgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUmAgaW4gdGhlIGpvdXJuYWwmIzM5O3MgZmxhZ3MuIFRoZSBjcml0aWNhbCBwYXJ0IGlzIGluIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCwgd2hlcmUgdGhpcyBmbGFnIHRyaWdnZXJzIGEgam91cm5hbCBhYm9ydCBpZiBJL08gZXJyb3JzIGFyZSBkZXRlY3RlZC4KClRoZSBxdWVzdGlvbiB0aGVuIGlzLCBjYW4gd2UgYWN0dWFsbHkgaGl0IHRoaXMgcGF0aD8gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHllcywgaWYgd2UgbW91bnQgdGhlIGV4dDQgZmlsZXN5c3RlbSB3aXRoIGBkYXRhX2Vycj1hYm9ydGAgYW5kIHRoZW4gbWFuYWdlIHRvIHRyaWdnZXIgYW4gSS9PIGVycm9yIGR1cmluZyB0aGUgam91cm5hbCBjb21taXQgcHJvY2Vzcy4gVGhpcyBzZWVtcyBwcmV0dHkgZGlyZWN0LgoKVGhlcmVmb3JlLCB0aGUgb2J2aW91cyBmdXp6aW5nIHRhcmdldHMgYXJlIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBhbmQgYGV4dDRfaW5pdF9qb3VybmFsX3BhcmFtc2AuIEl0JiMzOTtzIGdvaW5nIHRvIGJlIGtleSB0byBnZW5lcmF0ZSBzb21lIEkvTyBmYWlsdXJlcyB3aXRoaW4gdGhlIGNvbnRleHQgb2Ygam91cm5hbCBjb21taXQuIFRoaXMgd2lsbCByZXF1aXJlIHNvbWUgZGVsaWJlcmF0ZSBmYXVsdCBpbmplY3Rpb24sIHBvc3NpYmx5IHZpYSBzb21lIGNsZXZlciBjcmFmdGluZyBvZiB0aGUgdW5kZXJseWluZyBzdG9yYWdlIHRvIHByb2R1Y2UgdGhlIG5lY2Vzc2FyeSBjb25kaXRpb25zLgoKVG8gYnVpbGQgdGhpcywgSSBhbHNvIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGluY2x1ZGVzIGBDT05GSUdfRVhUNF9GU2AgYW5kIGBDT05GSUdfSkJEMmAsIG9idmlvdXNseS4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMsIHNwZWNpZmljYWxseSBgZnMvamJkMi9LY29uZmlnYCBhbmQgYGZzL2V4dDQvS2NvbmZpZ2AsIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIG9yIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhpcyBiZWhhdmlvciwgZXNwZWNpYWxseSByZWxhdGVkIHRvIGVycm9yIGhhbmRsaW5nIG9yIGpvdXJuYWwgYmVoYXZpb3IuIEkmIzM5O2xsIG5lZWQgdG8gYmUgYXdhcmUgb2YgYW55IHBvdGVudGlhbCBrbm9icyB0aGF0IG1pZ2h0IGVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZW50aXJlIGZlYXR1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTY6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEVYVDRfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leHQ0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9leHQ0L0tjb25maWc6Mjpjb25maWcgRVhUNF9GU1xuZnMvZXh0NC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtUaGUgRXh0ZW5kZWQgNCAoZXh0NCkgZmlsZXN5c3RlbVwmIzM0O1xuLS1cbmZzL2V4dDQvS2NvbmZpZz0zNT1jb25maWcgRVhUNF9VU0VfRk9SX0VYVDJcbi0tXG5mcy9leHQ0L0tjb25maWctNDUtXG5mcy9leHQ0L0tjb25maWc6NDY6Y29uZmlnIEVYVDRfRlNfUE9TSVhfQUNMXG5mcy9leHQ0L0tjb25maWctNDctXHRib29sIFwmIzM0O0V4dDQgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbi0tXG5mcy9leHQ0L0tjb25maWctNTUtXG5mcy9leHQ0L0tjb25maWc6NTY6Y29uZmlnIEVYVDRfRlNfU0VDVVJJVFlcbmZzL2V4dDQvS2NvbmZpZy01Ny1cdGJvb2wgXCYjMzQ7RXh0NCBTZWN1cml0eSBMYWJlbHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDk5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSm91cm5hbCBDb21taXQgTG9naWMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgbmV3IHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgYXJlIGBFWFQ0X0ZTYCBhbmQgYEpCRDJgLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBzZWUgdGhlIGZvY3VzIHN5bWJvbHMgYXJlIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBhbmQgYGV4dDRfaW5pdF9qb3VybmFsX3BhcmFtc2AuIEhtbSwgYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gIGlzIGEgaG90IHBhdGgsIGJ1dCBpdCBsb29rcyBsaWtlIHRoZSBjaGFuZ2UgaXMgKnNwZWNpZmljYWxseSogd2l0aGluIHRoYXQgZnVuY3Rpb24uIEkgbmVlZCB0byBiZSBjYXJlZnVsIGhlcmUgYmVjYXVzZSB0aGF0JiMzOTtzIGEgcHJldHR5IGxhcmdlIGZ1bmN0aW9uLiAKCkxldCBtZSBzZWUuLi4gQWgsIHRoZXJlIGl0IGlzISBUaGUgc25pcHBldCB0aGF0IGNhdWdodCBteSBleWUgaXM6CgpgYGBjCgkJaWYgKGpvdXJuYWwtJmd0O2pfZmxhZ3MgJmFtcDsgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUikKCQkJamJkMl9qb3VybmFsX2Fib3J0KGpvdXJuYWwsIGVycik7CmBgYAoKVGhhdCYjMzk7cyBpbnNpZGUgYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gLiBTbywgaXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBjb25kaXRpb25hbGx5IGFib3J0aW5nIHRoZSBqb3VybmFsIGJhc2VkIG9uIHNvbWUgYEpCRDJfQUJPUlRfT05fREFUQV9FUlJgIGZsYWcuIFJpZ2h0LCBJIHNob3VsZCBsb29rIGF0IGBmcy9qYmQyL2NvbW1pdC5jYCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCYjMzk7cyBoYXBwZW5pbmcgaW4gdGhpcyBjb21taXQgdHJhbnNhY3Rpb24gYW5kIHdoYXQgdHJpZ2dlcnMgdGhlIGFib3J0IGNvbmRpdGlvbi4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2Ugb24gdGhlIGZpbGUgc3lzdGVtJiMzOTtzIG92ZXJhbGwgcm9idXN0bmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2piZDIvY29tbWl0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc1MDpcdFx0XHRcdFx0bG9ja19idWZmZXIoYmgpO1xuIDc1MTpcdFx0XHRcdFx0Y2xlYXJfYnVmZmVyX2RpcnR5KGJoKTtcbiA3NTI6XHRcdFx0XHRcdHNldF9idWZmZXJfdXB0b2RhdGUoYmgpO1xuIDc1MzpcdFx0XHRcdFx0Ymhfc3VibWl0KGJoLFxuIDc1NDpcdFx0XHRcdFx0XHRSRVFfT1BfV1JJVEUgfCBKQkQyX0pPVVJOQUxfUkVRX0ZMQUdTLFxuIDc1NTpcdFx0XHRcdFx0XHRqb3VybmFsX2VuZF9idWZmZXJfaW9fc3luYyk7XG4gNzU2Olx0XHRcdFx0fVxuIDc1NzpcdFx0XHRcdGNvbmRfcmVzY2hlZCgpO1xuIDc1ODpcdFxuIDc1OTpcdFx0XHRcdC8qIEZvcmNlIGEgbmV3IGRlc2NyaXB0b3IgdG8gYmUgZ2VuZXJhdGVkIG5leHRcbiA3NjA6XHQgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lIHJvdW5kIHRoZSBsb29wLiAqL1xuIDc2MTpcdFx0XHRcdGRlc2NyaXB0b3IgPSBOVUxMO1xuIDc2MjpcdFx0XHRcdGJ1ZnMgPSAwO1xuIDc2MzpcdFx0XHR9XG4gNzY0Olx0XHR9XG4gNzY1Olx0XG4gNzY2Olx0XHRlcnIgPSBqb3VybmFsX2ZpbmlzaF9pbm9kZV9kYXRhX2J1ZmZlcnMoam91cm5hbCwgY29tbWl0X3RyYW5zYWN0aW9uKTtcbiA3Njc6XHRcdGlmIChlcnIpIHtcbiA3Njg6XHRcdFx0cHJpbnRrKEtFUk5fV0FSTklOR1xuIDc2OTpcdFx0XHRcdFwmIzM0O0pCRDI6IERldGVjdGVkIElPIGVycm9ycyAlZCB3aGlsZSBmbHVzaGluZyBmaWxlIGRhdGEgb24gJXNcXG5cJiMzNDssXG4gNzcwOlx0XHRcdFx0ZXJyLCBqb3VybmFsLVx1MDAzZWpfZGV2bmFtZSk7XG4gNzcxOlx0XHRcdGlmIChqb3VybmFsLVx1MDAzZWpfZmxhZ3MgXHUwMDI2IEpCRDJfQUJPUlRfT05fREFUQV9FUlIpXG4gNzcyOlx0XHRcdFx0amJkMl9qb3VybmFsX2Fib3J0KGpvdXJuYWwsIGVycik7XG4gNzczOlx0XHRcdGVyciA9IDA7XG4gNzc0Olx0XHR9XG4gNzc1Olx0XG4gNzc2Olx0XHQvKlxuIDc3NzpcdFx0ICogR2V0IGN1cnJlbnQgb2xkZXN0IHRyYW5zYWN0aW9uIGluIHRoZSBsb2cgYmVmb3JlIHdlIGlzc3VlIGZsdXNoXG4gNzc4Olx0XHQgKiB0byB0aGUgZmlsZXN5c3RlbSBkZXZpY2UuIEFmdGVyIHRoZSBmbHVzaCB3ZSBjYW4gYmUgc3VyZSB0aGF0XG4gNzc5Olx0XHQgKiBibG9ja3Mgb2YgYWxsIG9sZGVyIHRyYW5zYWN0aW9ucyBhcmUgY2hlY2twb2ludGVkIHRvIHBlcnNpc3RlbnRcbiA3ODA6XHRcdCAqIHN0b3JhZ2UgYW5kIHdlIHdpbGwgYmUgc2FmZSB0byB1cGRhdGUgam91cm5hbCBzdGFydCBpbiB0aGVcbiA3ODE6XHRcdCAqIHN1cGVyYmxvY2sgd2l0aCB0aGUgbnVtYmVycyB3ZSBnZXQgaGVyZS5cbiA3ODI6XHRcdCAqL1xuIDc4MzpcdFx0dXBkYXRlX3RhaWwgPVxuIDc4NDpcdFx0XHRqYmQyX2pvdXJuYWxfZ2V0X2xvZ190YWlsKGpvdXJuYWwsIFx1MDAyNmZpcnN0X3RpZCwgXHUwMDI2Zmlyc3RfYmxvY2spO1xuIDc4NTpcdFxuIDc4NjpcdFx0d3JpdGVfbG9jayhcdTAwMjZqb3VybmFsLVx1MDAzZWpfc3RhdGVfbG9jayk7XG4gNzg3Olx0XHRpZiAodXBkYXRlX3RhaWwpIHtcbiA3ODg6XHRcdFx0bG9uZyBmcmVlZCA9IGZpcnN0X2Jsb2NrIC0gam91cm5hbC1cdTAwM2VqX3RhaWw7XG4gNzg5Olx0XG4gNzkwOlx0XHRcdGlmIChmaXJzdF9ibG9jayBcdTAwM2Mgam91cm5hbC1cdTAwM2VqX3RhaWwpXG4gNzkxOlx0XHRcdFx0ZnJlZWQgJiM0Mzs9IGpvdXJuYWwtXHUwMDNlal9sYXN0IC0gam91cm5hbC1cdTAwM2VqX2ZpcnN0O1xuIDc5MjpcdFx0XHQvKiBVcGRhdGUgdGFpbCBvbmx5IGlmIHdlIGZyZWUgc2lnbmlmaWNhbnQgYW1vdW50IG9mIHNwYWNlICovXG4gNzkzOlx0XHRcdGlmIChmcmVlZCBcdTAwM2Mgam91cm5hbC1cdTAwM2VqX21heF90cmFuc2FjdGlvbl9idWZmZXJzKVxuIDc5NDpcdFx0XHRcdHVwZGF0ZV90YWlsID0gMDtcbiA3OTU6XHRcdH1cbiA3OTY6XHRcdEpfQVNTRVJUKGNvbW1pdF90cmFuc2FjdGlvbi1cdTAwM2V0X3N0YXRlID09IFRfQ09NTUlUKTtcbiA3OTc6XHRcdGNvbW1pdF90cmFuc2FjdGlvbi1cdTAwM2V0X3N0YXRlID0gVF9DT01NSVRfREZMVVNIO1xuIDc5ODpcdFx0d3JpdGVfdW5sb2NrKFx1MDAyNmpvdXJuYWwtXHUwMDNlal9zdGF0ZV9sb2NrKTtcbiA3OTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzgwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIHRoZSBnb2FsIGlzIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBmdW5jdGlvbiwgYW5kIGl0IHNlZW1zIGxpa2UgKipgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbmAgaXMgZGVmaW5pdGVseSB0aGUga2V5IGZ1bmN0aW9uIGhlcmUqKi4gSSYjMzk7bSBhbG1vc3QgY2VydGFpbiB0aGF0JiMzOTtzIHRoZSBvbmUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gSG93ZXZlciwgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHNuZWFreSBzaWRlIHBsYXllcnMgaW52b2x2ZWQuIEhtbSwgSSBzZWUgdGhhdCBgZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zYCBhbHNvIGdvdCBhIGxpdHRsZSBsb3ZlLiBOb3csIHdoZXJlIGRvZXMgKnRoYXQqIGZpdCBpbj8KClJpZ2h0LCBgZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zYCBpcyBjYWxsZWQgZnJvbSBgZXh0NF9sb2FkX2pvdXJuYWxgIGFuZCBgZXh0NF9yZW1vdW50YC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQgY29udGV4dC4gVGhhdCBnaXZlcyBhIGxpdHRsZSBtb3JlIGluc2lnaHQgdG8gdGhlIGZ1bmN0aW9uLiBJdCBzZWVtcyBiZXN0IHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGlzIGBleHQ0X2luaXRfam91cm5hbF9wYXJhbXNgIGZ1bmN0aW9uLCBhbmQgc2VlIGhvdyBpdCBpcyB1dGlsaXplZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTY6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9leHQ0L3N1cGVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1ODYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzU4NjA6XHQgKiBTZXR1cCBhbnkgcGVyLWZzIGpvdXJuYWwgcGFyYW1ldGVycyBub3cuICBXZSYjMzk7bGwgZG8gdGhpcyBib3RoIG9uXG41ODYxOlx0ICogaW5pdGlhbCBtb3VudCwgb25jZSB0aGUgam91cm5hbCBoYXMgYmVlbiBpbml0aWFsaXNlZCBidXQgYmVmb3JlIHdlJiMzOTt2ZVxuNTg2MjpcdCAqIGRvbmUgYW55IHJlY292ZXJ5OyBhbmQgYWdhaW4gb24gYW55IHN1YnNlcXVlbnQgcmVtb3VudC5cbjU4NjM6XHQgKi9cbjU4NjQ6XHRzdGF0aWMgdm9pZCBleHQ0X2luaXRfam91cm5hbF9wYXJhbXMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgam91cm5hbF90ICpqb3VybmFsKVxuNTg2NTpcdHtcbjU4NjY6XHRcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuNTg2NzpcdFxuNTg2ODpcdFx0am91cm5hbC1cdTAwM2VqX2NvbW1pdF9pbnRlcnZhbCA9IHNiaS1cdTAwM2VzX2NvbW1pdF9pbnRlcnZhbDtcbjU4Njk6XHRcdGpvdXJuYWwtXHUwMDNlal9taW5fYmF0Y2hfdGltZSA9IHNiaS1cdTAwM2VzX21pbl9iYXRjaF90aW1lO1xuNTg3MDpcdFx0am91cm5hbC1cdTAwM2VqX21heF9iYXRjaF90aW1lID0gc2JpLVx1MDAzZXNfbWF4X2JhdGNoX3RpbWU7XG41ODcxOlx0XHRleHQ0X2ZjX2luaXQoc2IsIGpvdXJuYWwpO1xuNTg3MjpcdFxuNTg3MzpcdFx0d3JpdGVfbG9jayhcdTAwMjZqb3VybmFsLVx1MDAzZWpfc3RhdGVfbG9jayk7XG41ODc0Olx0XHRpZiAodGVzdF9vcHQoc2IsIEJBUlJJRVIpKVxuNTg3NTpcdFx0XHRqb3VybmFsLVx1MDAzZWpfZmxhZ3MgfD0gSkJEMl9CQVJSSUVSO1xuNTg3NjpcdFx0ZWxzZVxuNTg3NzpcdFx0XHRqb3VybmFsLVx1MDAzZWpfZmxhZ3MgXHUwMDI2PSB+SkJEMl9CQVJSSUVSO1xuNTg3ODpcdFx0aWYgKHRlc3Rfb3B0KHNiLCBEQVRBX0VSUl9BQk9SVCkpXG41ODc5Olx0XHRcdGpvdXJuYWwtXHUwMDNlal9mbGFncyB8PSBKQkQyX0FCT1JUX09OX0RBVEFfRVJSO1xuNTg4MDpcdFx0ZWxzZVxuNTg4MTpcdFx0XHRqb3VybmFsLVx1MDAzZWpfZmxhZ3MgXHUwMDI2PSB+SkJEMl9BQk9SVF9PTl9EQVRBX0VSUjtcbjU4ODI6XHRcdC8qXG41ODgzOlx0XHQgKiBBbHdheXMgZW5hYmxlIGpvdXJuYWwgY3ljbGUgcmVjb3JkIG9wdGlvbiwgbGV0dGluZyB0aGUgam91cm5hbFxuNTg4NDpcdFx0ICogcmVjb3JkcyBsb2cgdHJhbnNhY3Rpb25zIGNvbnRpbnVvdXNseSBiZXR3ZWVuIGVhY2ggbW91bnQuXG41ODg1Olx0XHQgKi9cbjU4ODY6XHRcdGpvdXJuYWwtXHUwMDNlal9mbGFncyB8PSBKQkQyX0NZQ0xFX1JFQ09SRDtcbjU4ODc6XHRcdHdyaXRlX3VubG9jayhcdTAwMjZqb3VybmFsLVx1MDAzZWpfc3RhdGVfbG9jayk7XG41ODg4Olx0fVxuNTg4OTpcdFxuNTg5MDpcdHN0YXRpYyBzdHJ1Y3QgaW5vZGUgKmV4dDRfZ2V0X2pvdXJuYWxfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbjU4OTE6XHRcdFx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgam91cm5hbF9pbnVtKVxuNTg5MjpcdHtcbjU4OTM6XHRcdHN0cnVjdCBpbm9kZSAqam91cm5hbF9pbm9kZTtcbjU4OTQ6XHRcbjU4OTU6XHRcdC8qXG41ODk2Olx0XHQgKiBUZXN0IGZvciB0aGUgZXhpc3RlbmNlIG9mIGEgdmFsaWQgaW5vZGUgb24gZGlzay4gIEJhZCB0aGluZ3NcbjU4OTc6XHRcdCAqIGhhcHBlbiBpZiB3ZSBpZ2V0KCkgYW4gdW51c2VkIGlub2RlLCBhcyB0aGUgc3Vic2VxdWVudCBpcHV0KClcbjU4OTg6XHRcdCAqIHdpbGwgdHJ5IHRvIGRlbGV0ZSBpdC5cbjU4OTk6XHRcdCAqL1xuNTkwMDpcdFx0am91cm5hbF9pbm9kZSA9IGV4dDRfaWdldChzYiwgam91cm5hbF9pbnVtLCBFWFQ0X0lHRVRfU1BFQ0lBTCk7XG41OTAxOlx0XHRpZiAoSVNfRVJSKGpvdXJuYWxfaW5vZGUpKSB7XG41OTAyOlx0XHRcdGV4dDRfbXNnKHNiLCBLRVJOX0VSUiwgXCYjMzQ7bm8gam91cm5hbCBmb3VuZFwmIzM0Oyk7XG41OTAzOlx0XHRcdHJldHVybiBFUlJfQ0FTVChqb3VybmFsX2lub2RlKTtcbjU5MDQ6XHRcdH1cbjU5MDU6XHRcdGlmICgham91cm5hbF9pbm9kZS1cdTAwM2VpX25saW5rKSB7XG41OTA2Olx0XHRcdG1ha2VfYmFkX2lub2RlKGpvdXJuYWxfaW5vZGUpO1xuNTkwNzpcdFx0XHRpcHV0KGpvdXJuYWxfaW5vZGUpO1xuNTkwODpcdFx0XHRleHQ0X21zZyhzYiwgS0VSTl9FUlIsIFwmIzM0O2pvdXJuYWwgaW5vZGUgaXMgZGVsZXRlZFwmIzM0Oyk7XG41OTA5Olx0XHRcdHJldHVybiBFUlJfUFRSKC1FRlNDT1JSVVBURUQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTU4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgcXVpY2sgdGFrZSBvbiB0aGlzLgoKKipGdXp6aW5nIHRoZSBFeHQ0L0pCRDIgRGF0YSBFcnJvciBQYXRjaCoqCgpBbHJpZ2h0LCBzbyB0aGUgcGF0Y2ggaXMgaW4sIGFuZCBpdCYjMzk7cyBzdXBwb3NlZGx5IG1vZGlmeWluZyBob3cgZXh0NCBhbmQgSkJEMiBoYW5kbGUgZGF0YSBlcnJvcnMuIFRoYXQgaW1tZWRpYXRlbHkgc2V0cyBvZmYgYWxhcm0gYmVsbHMgaW4gbXkgaGVhZCDigJMgZGF0YSBjb3JydXB0aW9uIGJ1Z3MgYXJlIG5vdG9yaW91c2x5IHRyaWNreS4gVGltZSB0byBwdXQgdGhpcyB0aGluZyB0aHJvdWdoIGl0cyBwYWNlcy4gV2UgbmVlZCB0byBmdXp6IGl0LgoKVGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zIGFyZSBgRVhUNF9GU2AgYW5kLCBvYnZpb3VzbHksIGBKQkQyYC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgYEpCRDJgIGlzIGV2ZW4gYSB2YWxpZCBjb25maWcgb3B0aW9uIOKAkyBjYW7igJl0IGZ1enogc29tZXRoaW5nIHRoYXTigJlzIG5vdCBlbmFibGVkLCBvciB0aGUgZnV6emluZyB3aWxsIGJlIHVzZWxlc3MuCgpBbmQgd2hlcmUgZG8gSSBiZWdpbiBteSBmb2N1c2VkIGZ1enppbmcgZWZmb3J0cz8gVGhlIG1vc3QgY3JpdGljYWwgZW50cnkgcG9pbnRzIHJlbGF0ZWQgdG8gdGhpcyBwYXRjaCBhcHBlYXIgdG8gYmUgYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gIGFuZCBgZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zYC4gVGhlc2UgYXJlIGxpa2VseSB0aGUgZnVuY3Rpb25zIHdoZXJlIHRoZSBjaGFuZ2VzIGFyZSBtb3N0IGNvbmNlbnRyYXRlZCwgdGhlIHBsYWNlcyB3aGVyZSB0aGUgZGF0YSBlcnJvciBoYW5kbGluZyBsb2dpYyBoYXMgYmVlbiB0d2Vha2VkLiBGb2N1c2luZyB0aGVyZSBzaG91bGQgZ2l2ZSB1cyB0aGUgYmVzdCBiYW5nIGZvciBvdXIgZnV6emluZyBidWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSkJEMiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2piZDIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9qYmQyL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2piZDIvS2NvbmZpZzoyOmNvbmZpZyBKQkQyXG5mcy9qYmQyL0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZnMvamJkMi9LY29uZmlnLTE5LVxuZnMvamJkMi9LY29uZmlnOjIwOmNvbmZpZyBKQkQyX0RFQlVHXG5mcy9qYmQyL0tjb25maWctMjEtXHRib29sIFwmIzM0O0pCRDIgKGV4dDQpIGRlYnVnZ2luZyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE2OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwMzMKCQkJCQkJCW91dHB1dDogMTY3CgkJCQkJCQl0aG91Z2h0czogMTgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgYXNzZXNzbWVudDoKCioqRnV6emluZyBUYXJnZXQgQXNzZXNzbWVudDogSkJEMiBhbmQgZXh0NCB3aXRoIGRhdGFfZXJyPWFib3J0KioKClJpZ2h0LCBzbyBgSkJEMmAgaXMgZGVmaW5pdGVseSBhIHRoaW5nLCBhbmQgd2UgaGF2ZSBhIHBvdGVudGlhbCB0YXJnZXQgaGVyZS4gTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KClRoZSBrZXkgYXNwZWN0cyBhcmU6IGBXb3J0aEZ1enppbmc6IHRydWVgLiBFeGNlbGxlbnQuIFdlIGhhdmUgYSBzb2xpZCByZWFzb24gdG8gaW52ZXN0aWdhdGUgdGhpcyB0aG9yb3VnaGx5LiBUaGUgYEZvY3VzU3ltYm9sc2A6IGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBhbmQgYGV4dDRfaW5pdF9qb3VybmFsX3BhcmFtc2AgYXJlIHNwb3Qgb24sIHRoZXNlIGFyZSB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnRzIHRvIGV4YW1pbmUuIEFuZCB0aGUgcmVsZXZhbnQgYEVuYWJsZUNvbmZpZ3NgOiBgRVhUNF9GU2AsIGBKQkQyYCDigJMgbm8gc3VycHJpc2VzIHRoZXJlLCB3ZSBuZWVkIGJvdGggb2YgdGhlc2UgZmlsZXN5c3RlbSBjb21wb25lbnRzIGVuYWJsZWQgZm9yIHRoaXMgdG8gYmUgcmVsZXZhbnQuCgpUaGUgcmVhc29uaW5nIGlzIHNvdW5kOiBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIGBkYXRhX2Vycj1hYm9ydGAgbW91bnQgb3B0aW9uIGZvciBleHQ0LiBFc3NlbnRpYWxseSwgaXQgYWRkcyBhIG5ldyBgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUmAgZmxhZyB3aXRoaW4gYGpiZDJgLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQgYWx0ZXJzIGVycm9yIGhhbmRsaW5nLiBTcGVjaWZpY2FsbHksIGlmIHRoYXQgZmxhZyBpcyBzZXQsIGBqYmQyYCAqd2lsbCogYWJvcnQgdGhlIGpvdXJuYWwgaWYgaXQgZW5jb3VudGVycyBJL08gZXJyb3JzIHdoaWxlIGZsdXNoaW5nIGZpbGUgZGF0YSBkdXJpbmcgYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZSBiZWhhdmlvciBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgZGVmYXVsdCBpbiBjYXNlcyBvZiBJL08gZmFpbHVyZXMuIEl0JiMzOTtzIG5vdCBqdXN0IGEgcGVyZm9ybWFuY2UgdHdlYWssIHRoaXMgZGlyZWN0bHkgaW1wYWN0cyBob3cgdGhlIGZpbGUgc3lzdGVtIHJlc3BvbmRzIHRvIGVycm9ycywgd2hpY2ggbWFrZXMgaXQgYW4gZXhjZWxsZW50IHRhcmdldCBmb3IgZnV6emluZy4gV2UgY2FuIHNlZSBob3cgdGhlIGZpbGUgc3lzdGVtIGJlaGF2ZXMgdW5kZXIgdW51c3VhbCBzY2VuYXJpb3Mgd2l0aCB0aGlzLgoKVGhlcmVmb3JlLCB0aGlzIGlzIGEgbGVnaXRpbWF0ZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEkmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgZW52aXJvbm1lbnQgc2V0IHVwIGNvcnJlY3RseSB0byB0cmlnZ2VyIHRoZXNlIGFib3J0IGNvbmRpdGlvbnMgYW5kIG9ic2VydmUgdGhlIHJlc3VsdHMuCkkgdGhpbmsgSSYjMzk7bGwgYHNldC1yZXN1bHRzYCBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE2OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDssCiAgICAmIzM0O0pCRDImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uJiMzNDssCiAgICAmIzM0O2V4dDRfaW5pdF9qb3VybmFsX3BhcmFtcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IG1vdW50IG9wdGlvbiBgZGF0YV9lcnI9YWJvcnRgIHRvIGV4dDQsIHdoaWNoIHNldHMgYSBuZXcgZmxhZyBgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUmAgaW4gamJkMi4gV2hlbiB0aGlzIGZsYWcgaXMgc2V0LCBqYmQyIHdpbGwgYWJvcnQgdGhlIGpvdXJuYWwgaWYgdGhlcmUgYXJlIElPIGVycm9ycyBkdXJpbmcgZmlsZSBkYXRhIGZsdXNoaW5nIGluIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBlcnJvciBoYW5kbGluZyBiZWhhdmlvciBvZiBleHQ0IGFuZCBqYmQyLCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7LAogICAgJiMzNDtKQkQyJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7amJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbiYjMzQ7LAogICAgJiMzNDtleHQ0X2luaXRfam91cm5hbF9wYXJhbXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBtb3VudCBvcHRpb24gYGRhdGFfZXJyPWFib3J0YCB0byBleHQ0LCB3aGljaCBzZXRzIGEgbmV3IGZsYWcgYEpCRDJfQUJPUlRfT05fREFUQV9FUlJgIGluIGpiZDIuIFdoZW4gdGhpcyBmbGFnIGlzIHNldCwgamJkMiB3aWxsIGFib3J0IHRoZSBqb3VybmFsIGlmIHRoZXJlIGFyZSBJTyBlcnJvcnMgZHVyaW5nIGZpbGUgZGF0YSBmbHVzaGluZyBpbiBgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgZXJyb3IgaGFuZGxpbmcgYmVoYXZpb3Igb2YgZXh0NCBhbmQgamJkMiwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNjoyNjo0Mi41OTA0NTIyMDJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDk1MTE3Njg2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCIsXG4gICAgXCJKQkQyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvblwiLFxuICAgIFwiZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBtb3VudCBvcHRpb24gYGRhdGFfZXJyPWFib3J0YCB0byBleHQ0LCB3aGljaCBzZXRzIGEgbmV3IGZsYWcgYEpCRDJfQUJPUlRfT05fREFUQV9FUlJgIGluIGpiZDIuIFdoZW4gdGhpcyBmbGFnIGlzIHNldCwgamJkMiB3aWxsIGFib3J0IHRoZSBqb3VybmFsIGlmIHRoZXJlIGFyZSBJTyBlcnJvcnMgZHVyaW5nIGZpbGUgZGF0YSBmbHVzaGluZyBpbiBgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgZXJyb3IgaGFuZGxpbmcgYmVoYXZpb3Igb2YgZXh0NCBhbmQgamJkMiwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE2OjI2OjQyLjU5MDQ1NjY2MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg5Nzc3NTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODhkZGRlYWFkNTg5ODk2MjJjN2M4MDllODZiOTI1MmY1OGZhY2Y1ZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAyMyAxNjoyNjo0MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L3N1cGVyLmMgYi9mcy9leHQ0L3N1cGVyLmNcXG5pbmRleCA3MjgzMTA4ZDc2MDkxNy4uZGUzNDQ5MGE1YjY4MGMgMTAwNjQ0XFxuLS0tIGEvZnMvZXh0NC9zdXBlci5jXFxuKysrIGIvZnMvZXh0NC9zdXBlci5jXFxuQEAgLTU4NzUsNiArNTg3NSwxMCBAQCBzdGF0aWMgdm9pZCBleHQ0X2luaXRfam91cm5hbF9wYXJhbXMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgam91cm5hbF90ICpqb3VybmFsKVxcbiBcXHRcXHRqb3VybmFsLVxcdTAwM2VqX2ZsYWdzIHw9IEpCRDJfQkFSUklFUjtcXG4gXFx0ZWxzZVxcbiBcXHRcXHRqb3VybmFsLVxcdTAwM2VqX2ZsYWdzIFxcdTAwMjY9IH5KQkQyX0JBUlJJRVI7XFxuK1xcdGlmICh0ZXN0X29wdChzYiwgREFUQV9FUlJfQUJPUlQpKVxcbitcXHRcXHRqb3VybmFsLVxcdTAwM2VqX2ZsYWdzIHw9IEpCRDJfQUJPUlRfT05fREFUQV9FUlI7XFxuK1xcdGVsc2VcXG4rXFx0XFx0am91cm5hbC1cXHUwMDNlal9mbGFncyBcXHUwMDI2PSB+SkJEMl9BQk9SVF9PTl9EQVRBX0VSUjtcXG4gXFx0LypcXG4gXFx0ICogQWx3YXlzIGVuYWJsZSBqb3VybmFsIGN5Y2xlIHJlY29yZCBvcHRpb24sIGxldHRpbmcgdGhlIGpvdXJuYWxcXG4gXFx0ICogcmVjb3JkcyBsb2cgdHJhbnNhY3Rpb25zIGNvbnRpbnVvdXNseSBiZXR3ZWVuIGVhY2ggbW91bnQuXFxuZGlmZiAtLWdpdCBhL2ZzL2piZDIvY29tbWl0LmMgYi9mcy9qYmQyL2NvbW1pdC5jXFxuaW5kZXggZDg1Nzc3MjVhMmZiYjUuLjQ5YWNjOWQwODA5ZWJiIDEwMDY0NFxcbi0tLSBhL2ZzL2piZDIvY29tbWl0LmNcXG4rKysgYi9mcy9qYmQyL2NvbW1pdC5jXFxuQEAgLTc2OCw2ICs3NjgsOCBAQCB2b2lkIGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb24oam91cm5hbF90ICpqb3VybmFsKVxcbiBcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HXFxuIFxcdFxcdFxcdFxcXCJKQkQyOiBEZXRlY3RlZCBJTyBlcnJvcnMgJWQgd2hpbGUgZmx1c2hpbmcgZmlsZSBkYXRhIG9uICVzXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRlcnIsIGpvdXJuYWwtXFx1MDAzZWpfZGV2bmFtZSk7XFxuK1xcdFxcdGlmIChqb3VybmFsLVxcdTAwM2VqX2ZsYWdzIFxcdTAwMjYgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUilcXG4rXFx0XFx0XFx0amJkMl9qb3VybmFsX2Fib3J0KGpvdXJuYWwsIGVycik7XFxuIFxcdFxcdGVyciA9IDA7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvamJkMi5oIGIvaW5jbHVkZS9saW51eC9qYmQyLmhcXG5pbmRleCA3ZTc4NWFhNmQzNWQ2NS4uZTM5Njc5NjU2ZGU2NjAgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9qYmQyLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2piZDIuaFxcbkBAIC0xNDEwLDYgKzE0MTAsNyBAQCBKQkQyX0ZFQVRVUkVfSU5DT01QQVRfRlVOQ1MoZmFzdF9jb21taXQsXFx0RkFTVF9DT01NSVQpXFxuICNkZWZpbmUgSkJEMl9GTFVTSEVEXFx0MHgwMDhcXHQvKiBUaGUgam91cm5hbCBzdXBlcmJsb2NrIGhhcyBiZWVuIGZsdXNoZWQgKi9cXG4gI2RlZmluZSBKQkQyX0xPQURFRFxcdDB4MDEwXFx0LyogVGhlIGpvdXJuYWwgc3VwZXJibG9jayBoYXMgYmVlbiBsb2FkZWQgKi9cXG4gI2RlZmluZSBKQkQyX0JBUlJJRVJcXHQweDAyMFxcdC8qIFVzZSBJREUgYmFycmllcnMgKi9cXG4rI2RlZmluZSBKQkQyX0FCT1JUX09OX0RBVEFfRVJSXFx0MHgwNDBcXHQvKiBBYm9ydCB0aGUgam91cm5hbCBvbiBmaWxlIGRhdGEgd3JpdGUgZXJyb3JzICovXFxuICNkZWZpbmUgSkJEMl9DWUNMRV9SRUNPUkRcXHRcXHQweDA4MFxcdC8qIEpvdXJuYWwgY3ljbGVkIHJlY29yZCBsb2cgb25cXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICogY2xlYW4gYW5kIGVtcHR5IGZpbGVzeXN0ZW1cXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICogbG9nZ2luZyBhcmVhICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE2OjI2OjQzLjI4MDg2NzE2N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQyNjA3NDcyNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiLFxuICAgIFwiSkJEMlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25cIixcbiAgICBcImV4dDRfaW5pdF9qb3VybmFsX3BhcmFtc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgbW91bnQgb3B0aW9uIGBkYXRhX2Vycj1hYm9ydGAgdG8gZXh0NCwgd2hpY2ggc2V0cyBhIG5ldyBmbGFnIGBKQkQyX0FCT1JUX09OX0RBVEFfRVJSYCBpbiBqYmQyLiBXaGVuIHRoaXMgZmxhZyBpcyBzZXQsIGpiZDIgd2lsbCBhYm9ydCB0aGUgam91cm5hbCBpZiB0aGVyZSBhcmUgSU8gZXJyb3JzIGR1cmluZyBmaWxlIGRhdGEgZmx1c2hpbmcgaW4gYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgdGhlIGVycm9yIGhhbmRsaW5nIGJlaGF2aW9yIG9mIGV4dDQgYW5kIGpiZDIsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDg4ZGRkZWFhZDU4OTg5NjIyYzdjODA5ZTg2YjkyNTJmNThmYWNmNWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAyMyAxNjoyNjo0MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvc3VwZXIuYyBiL2ZzL2V4dDQvc3VwZXIuY1xuaW5kZXggNzI4MzEwOGQ3NjA5MTcuLmRlMzQ0OTBhNWI2ODBjIDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9zdXBlci5jXG4rKysgYi9mcy9leHQ0L3N1cGVyLmNcbkBAIC01ODc1LDYgKzU4NzUsMTAgQEAgc3RhdGljIHZvaWQgZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGpvdXJuYWxfdCAqam91cm5hbClcbiBcdFx0am91cm5hbC1cdTAwM2VqX2ZsYWdzIHw9IEpCRDJfQkFSUklFUjtcbiBcdGVsc2VcbiBcdFx0am91cm5hbC1cdTAwM2VqX2ZsYWdzIFx1MDAyNj0gfkpCRDJfQkFSUklFUjtcbitcdGlmICh0ZXN0X29wdChzYiwgREFUQV9FUlJfQUJPUlQpKVxuK1x0XHRqb3VybmFsLVx1MDAzZWpfZmxhZ3MgfD0gSkJEMl9BQk9SVF9PTl9EQVRBX0VSUjtcbitcdGVsc2VcbitcdFx0am91cm5hbC1cdTAwM2VqX2ZsYWdzIFx1MDAyNj0gfkpCRDJfQUJPUlRfT05fREFUQV9FUlI7XG4gXHQvKlxuIFx0ICogQWx3YXlzIGVuYWJsZSBqb3VybmFsIGN5Y2xlIHJlY29yZCBvcHRpb24sIGxldHRpbmcgdGhlIGpvdXJuYWxcbiBcdCAqIHJlY29yZHMgbG9nIHRyYW5zYWN0aW9ucyBjb250aW51b3VzbHkgYmV0d2VlbiBlYWNoIG1vdW50LlxuZGlmZiAtLWdpdCBhL2ZzL2piZDIvY29tbWl0LmMgYi9mcy9qYmQyL2NvbW1pdC5jXG5pbmRleCBkODU3NzcyNWEyZmJiNS4uNDlhY2M5ZDA4MDllYmIgMTAwNjQ0XG4tLS0gYS9mcy9qYmQyL2NvbW1pdC5jXG4rKysgYi9mcy9qYmQyL2NvbW1pdC5jXG5AQCAtNzY4LDYgKzc2OCw4IEBAIHZvaWQgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbihqb3VybmFsX3QgKmpvdXJuYWwpXG4gXHRcdHByaW50ayhLRVJOX1dBUk5JTkdcbiBcdFx0XHRcIkpCRDI6IERldGVjdGVkIElPIGVycm9ycyAlZCB3aGlsZSBmbHVzaGluZyBmaWxlIGRhdGEgb24gJXNcXG5cIixcbiBcdFx0XHRlcnIsIGpvdXJuYWwtXHUwMDNlal9kZXZuYW1lKTtcbitcdFx0aWYgKGpvdXJuYWwtXHUwMDNlal9mbGFncyBcdTAwMjYgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUilcbitcdFx0XHRqYmQyX2pvdXJuYWxfYWJvcnQoam91cm5hbCwgZXJyKTtcbiBcdFx0ZXJyID0gMDtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2piZDIuaCBiL2luY2x1ZGUvbGludXgvamJkMi5oXG5pbmRleCA3ZTc4NWFhNmQzNWQ2NS4uZTM5Njc5NjU2ZGU2NjAgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2piZDIuaFxuKysrIGIvaW5jbHVkZS9saW51eC9qYmQyLmhcbkBAIC0xNDEwLDYgKzE0MTAsNyBAQCBKQkQyX0ZFQVRVUkVfSU5DT01QQVRfRlVOQ1MoZmFzdF9jb21taXQsXHRGQVNUX0NPTU1JVClcbiAjZGVmaW5lIEpCRDJfRkxVU0hFRFx0MHgwMDhcdC8qIFRoZSBqb3VybmFsIHN1cGVyYmxvY2sgaGFzIGJlZW4gZmx1c2hlZCAqL1xuICNkZWZpbmUgSkJEMl9MT0FERURcdDB4MDEwXHQvKiBUaGUgam91cm5hbCBzdXBlcmJsb2NrIGhhcyBiZWVuIGxvYWRlZCAqL1xuICNkZWZpbmUgSkJEMl9CQVJSSUVSXHQweDAyMFx0LyogVXNlIElERSBiYXJyaWVycyAqL1xuKyNkZWZpbmUgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUlx0MHgwNDBcdC8qIEFib3J0IHRoZSBqb3VybmFsIG9uIGZpbGUgZGF0YSB3cml0ZSBlcnJvcnMgKi9cbiAjZGVmaW5lIEpCRDJfQ1lDTEVfUkVDT1JEXHRcdDB4MDgwXHQvKiBKb3VybmFsIGN5Y2xlZCByZWNvcmQgbG9nIG9uXG4gXHRcdFx0XHRcdFx0ICogY2xlYW4gYW5kIGVtcHR5IGZpbGVzeXN0ZW1cbiBcdFx0XHRcdFx0XHQgKiBsb2dnaW5nIGFyZWEgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE2OjI2OjQzLjI4MDg2ODU2N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MzMzOTcyMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBmcy9leHQ0L3N1cGVyLmNgLCBgZnMvamJkMi9jb21taXQuY2AsIGFuZCBgaW5jbHVkZS9saW51eC9qYmQyLmhgLiBJdCBzZWVtcyB3ZSdyZSBhZGRpbmcgYSBuZXcgZmxhZywgYEpCRDJfQUJPUlRfT05fREFUQV9FUlJgLCB0byBgamJkMmAuIEZyb20gbXkgcXVpY2sgc2NhbiwgaXQgbG9va3MgbGlrZSB0aGlzIGZsYWcgaXMgc2V0IGluIGBleHQ0X2luaXRfam91cm5hbF9wYXJhbXNgIGlmIHRoZSBgREFUQV9FUlJfQUJPUlRgIG9wdGlvbiBpcyBlbmFibGVkIGluIHRoZSBleHQ0IHN1cGVyYmxvY2suICBDcnVjaWFsbHksIGl0IHNlZW1zIHRoYXQgaWYgdGhpcyBmbGFnIGlzIHNldCAqYW5kKiB0aGVyZSBhcmUgSS9PIGVycm9ycyB3aGVuIGZsdXNoaW5nIGZpbGUgZGF0YSBkdXJpbmcgYSBqb3VybmFsIGNvbW1pdCBpbiBgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbmAsIHRoZSBqb3VybmFsIGlzIHRoZW4gYWJvcnRlZCB2aWEgYSBjYWxsIHRvIGBqYmQyX2pvdXJuYWxfYWJvcnQoKWAuXG5cblRoaXMgaXMgZGVmaW5pdGVseSBhICpmdW5jdGlvbmFsKiBjaGFuZ2U7IGl0J3MgYWx0ZXJpbmcgdGhlIGVycm9yIGhhbmRsaW5nIGJlaGF2aW9yIG9mIGV4dDQgYW5kIGpiZDIgd2hlbiBkYXRhIGludGVncml0eSBpc3N1ZXMgc3VyZmFjZS4gVGhhdCdzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nLCBhbmQgcmFpc2VzIHRoZSBpbW1lZGlhdGUgbmVlZCB0byB0aG9yb3VnaGx5IHRlc3QgdGhpcywgbGlrZWx5IGJ5IGZ1enppbmcgaXQgdG8gc3RyZXNzIGRpZmZlcmVudCBzY2VuYXJpb3MuXG5cbk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkOiBgZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zYCBhbmQgYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gLiBJIG5lZWQgdG8gc29saWRpZnkgdGhlIGNhbGwgcGF0aHMuIGBleHQ0X2luaXRfam91cm5hbF9wYXJhbXNgIGlzLCBhcyBleHBlY3RlZCwgaW52b2tlZCBkdXJpbmcgdGhlIG1vdW50IGFuZCByZW1vdW50IHByb2Nlc3Nlcy4gQW5kIGFzIEkgcmVjYWxsLCBgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbmAgaXMgY2FsbGVkIGJ5IHRoZSBqYmQyIGNvbW1pdCB0aHJlYWQsIHdoaWNoIGlzIGdvb2QgdG8ga25vdyBmcm9tIGEgdGltaW5nIHBlcnNwZWN0aXZlLlxuXG5Ob3csIHRvIGRldGVybWluZSBpZiB0aGlzIG5ldyBmZWF0dXJlIGlzIG1vdW50LW9wdGlvbi1kcml2ZW4sIG9yIGlmIGl0IGlzIGFsd2F5cyBlbmFibGVkLiBJJ2xsIHF1aWNrbHkgY2hlY2sgaWYgYERBVEFfRVJSX0FCT1JUYCBpcyBhIG1vdW50IG9wdGlvbiBieSBzZWFyY2hpbmcgZm9yIHRoYXQgc3RyaW5nIHVzaW5nIG15IHByZWZlcnJlZCB0b29sLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzY2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTY6MjY6NDkuMjE0MjY4NjgyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1ODYzMzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRBVEFfRVJSX0FCT1JUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9leHQ0Lmg9MTAzMD1zdHJ1Y3QgZXh0NF9pbm9kZV9pbmZvIHtcXG4tLVxcbmZzL2V4dDQvZXh0NC5oLTEyNTQtI2RlZmluZSBFWFQ0X01PVU5UX0RFTEFMTE9DXFx0XFx0MHg4MDAwMDAwIC8qIERlbGFsbG9jIHN1cHBvcnQgKi9cXG5mcy9leHQ0L2V4dDQuaDoxMjU1OiNkZWZpbmUgRVhUNF9NT1VOVF9EQVRBX0VSUl9BQk9SVFxcdDB4MTAwMDAwMDAgLyogQWJvcnQgb24gZmlsZSBkYXRhIHdyaXRlICovXFxuZnMvZXh0NC9leHQ0LmgtMTI1Ni0jZGVmaW5lIEVYVDRfTU9VTlRfQkxPQ0tfVkFMSURJVFlcXHQweDIwMDAwMDAwIC8qIEJsb2NrIHZhbGlkaXR5IGNoZWNraW5nICovXFxuLS1cXG5mcy9leHQ0L3BhZ2UtaW8uYz0xNzU9c3RhdGljIGludCBleHQ0X2VuZF9pb19lbmQoZXh0NF9pb19lbmRfdCAqaW9fZW5kKVxcbi0tXFxuZnMvZXh0NC9wYWdlLWlvLmMtMTk1LVxcbmZzL2V4dDQvcGFnZS1pby5jOjE5NjpcXHRcXHRpZiAodGVzdF9vcHQoc2IsIERBVEFfRVJSX0FCT1JUKSlcXG5mcy9leHQ0L3BhZ2UtaW8uYy0xOTctXFx0XFx0XFx0amJkMl9qb3VybmFsX2Fib3J0KEVYVDRfU0Ioc2IpLVxcdTAwM2VzX2pvdXJuYWwsIHJldCk7XFxuLS1cXG5mcy9leHQ0L3BhZ2UtaW8uYz0yMzc9c3RhdGljIGJvb2wgZXh0NF9pb19lbmRfZGVmZXJfY29tcGxldGlvbihleHQ0X2lvX2VuZF90ICppb19lbmQpXFxuLS1cXG5mcy9leHQ0L3BhZ2UtaW8uYy0yNDEtXFx0XFx0cmV0dXJuIHRydWU7XFxuZnMvZXh0NC9wYWdlLWlvLmM6MjQyOlxcdGlmICh0ZXN0X29wdChpb19lbmQtXFx1MDAzZWlub2RlLVxcdTAwM2VpX3NiLCBEQVRBX0VSUl9BQk9SVCkgXFx1MDAyNlxcdTAwMjZcXG5mcy9leHQ0L3BhZ2UtaW8uYy0yNDMtXFx0ICAgIGlvX2VuZC1cXHUwMDNlZmxhZyBcXHUwMDI2IEVYVDRfSU9fRU5EX0ZBSUxFRCBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTE4NzY9c3RhdGljIGNvbnN0IHN0cnVjdCBtb3VudF9vcHRzIHtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy0xOTA3LVxcdHtPcHRfbm9sb2FkLCBFWFQ0X01PVU5UX05PTE9BRCwgTU9QVF9OT19FWFQyIHwgTU9QVF9TRVR9LFxcbmZzL2V4dDQvc3VwZXIuYzoxOTA4OlxcdHtPcHRfZGF0YV9lcnIsIEVYVDRfTU9VTlRfREFUQV9FUlJfQUJPUlQsIE1PUFRfTk9fRVhUMn0sXFxuZnMvZXh0NC9zdXBlci5jLTE5MDktXFx0e09wdF9iYXJyaWVyLCBFWFQ0X01PVU5UX0JBUlJJRVIsIE1PUFRfU0VUfSxcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0yNzcwPXN0YXRpYyBpbnQgZXh0NF9jaGVja19vcHRfY29uc2lzdGVuY3koc3RydWN0IGZzX2NvbnRleHQgKmZjLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTI4MTYtXFx0XFx0aWYgKCFzYmktXFx1MDAzZXNfam91cm5hbCBcXHUwMDI2XFx1MDAyNlxcbmZzL2V4dDQvc3VwZXIuYzoyODE3OlxcdFxcdCAgICBjdHhfdGVzdF9tb3VudF9vcHQoY3R4LCBFWFQ0X01PVU5UX0RBVEFfRVJSX0FCT1JUKSkge1xcbmZzL2V4dDQvc3VwZXIuYy0yODE4LVxcdFxcdFxcdGV4dDRfbXNnKE5VTEwsIEtFUk5fV0FSTklORyxcXG5mcy9leHQ0L3N1cGVyLmMtMjgxOS1cXHRcXHRcXHRcXHQgXFxcIlJlbW91bnRpbmcgZnMgdy9vIGpvdXJuYWwgc28gaWdub3JpbmcgZGF0YV9lcnIgb3B0aW9uXFxcIik7XFxuZnMvZXh0NC9zdXBlci5jOjI4MjA6XFx0XFx0XFx0Y3R4X2NsZWFyX21vdW50X29wdChjdHgsIEVYVDRfTU9VTlRfREFUQV9FUlJfQUJPUlQpO1xcbmZzL2V4dDQvc3VwZXIuYy0yODIxLVxcdFxcdH1cXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0yOTYyPXN0YXRpYyBpbnQgX2V4dDRfc2hvd19vcHRpb25zKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTMwNDctXFx0XFx0U0VRX09QVFNfUFJJTlQoXFxcIm1heF9kaXJfc2l6ZV9rYj0ldVxcXCIsIHNiaS1cXHUwMDNlc19tYXhfZGlyX3NpemVfa2IpO1xcbmZzL2V4dDQvc3VwZXIuYzozMDQ4OlxcdGlmICh0ZXN0X29wdChzYiwgREFUQV9FUlJfQUJPUlQpKVxcbmZzL2V4dDQvc3VwZXIuYy0zMDQ5LVxcdFxcdFNFUV9PUFRTX1BVVFMoXFxcImRhdGFfZXJyPWFib3J0XFxcIik7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NTA2OT1zdGF0aWMgY29uc3QgY2hhciAqZXh0NF9oYXNfam91cm5hbF9vcHRpb24oc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy01MDgxLVxcdFxcdHJldHVybiBcXFwiZGF0YT1cXFwiO1xcbmZzL2V4dDQvc3VwZXIuYzo1MDgyOlxcdGlmICh0ZXN0X29wdChzYiwgREFUQV9FUlJfQUJPUlQpKVxcbmZzL2V4dDQvc3VwZXIuYy01MDgzLVxcdFxcdHJldHVybiBcXFwiZGF0YV9lcnI9YWJvcnRcXFwiO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTU4NjQ9c3RhdGljIHZvaWQgZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGpvdXJuYWxfdCAqam91cm5hbClcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy01ODc3LVxcdFxcdGpvdXJuYWwtXFx1MDAzZWpfZmxhZ3MgXFx1MDAyNj0gfkpCRDJfQkFSUklFUjtcXG5mcy9leHQ0L3N1cGVyLmM6NTg3ODpcXHRpZiAodGVzdF9vcHQoc2IsIERBVEFfRVJSX0FCT1JUKSlcXG5mcy9leHQ0L3N1cGVyLmMtNTg3OS1cXHRcXHRqb3VybmFsLVxcdTAwM2VqX2ZsYWdzIHw9IEpCRDJfQUJPUlRfT05fREFUQV9FUlI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE2OjI2OjQ5LjI5MDEzNzM1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA4OTU1MjYyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgRGF0YSBFcnJvciBIYW5kbGluZyBpbiBleHQ0IHdpdGggSkJEMioqXG5cbk9rYXksIHNvIHRoZSBwYXRjaCBpcyBpbnRyb2R1Y2luZyBzb21lIGludGVyZXN0aW5nIGJlaGF2aW9yIHdoZW4gYGRhdGFfZXJyPWFib3J0YCBpcyB1c2VkIHdpdGggZXh0NC4gSSdtIHNlZWluZyB0aGF0IGl0IGFkZHMgYSBjaGVjayBmb3IgYERBVEFfRVJSX0FCT1JUYCBpbiBgZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zYCB3aGljaCwgaW4gdHVybiwgc2V0cyBgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUmAgaW4gdGhlIGpvdXJuYWwncyBmbGFncy4gVGhlIGNyaXRpY2FsIHBhcnQgaXMgaW4gYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gLCB3aGVyZSB0aGlzIGZsYWcgdHJpZ2dlcnMgYSBqb3VybmFsIGFib3J0IGlmIEkvTyBlcnJvcnMgYXJlIGRldGVjdGVkLlxuXG5UaGUgcXVlc3Rpb24gdGhlbiBpcywgY2FuIHdlIGFjdHVhbGx5IGhpdCB0aGlzIHBhdGg/IE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB5ZXMsIGlmIHdlIG1vdW50IHRoZSBleHQ0IGZpbGVzeXN0ZW0gd2l0aCBgZGF0YV9lcnI9YWJvcnRgIGFuZCB0aGVuIG1hbmFnZSB0byB0cmlnZ2VyIGFuIEkvTyBlcnJvciBkdXJpbmcgdGhlIGpvdXJuYWwgY29tbWl0IHByb2Nlc3MuIFRoaXMgc2VlbXMgcHJldHR5IGRpcmVjdC5cblxuVGhlcmVmb3JlLCB0aGUgb2J2aW91cyBmdXp6aW5nIHRhcmdldHMgYXJlIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBhbmQgYGV4dDRfaW5pdF9qb3VybmFsX3BhcmFtc2AuIEl0J3MgZ29pbmcgdG8gYmUga2V5IHRvIGdlbmVyYXRlIHNvbWUgSS9PIGZhaWx1cmVzIHdpdGhpbiB0aGUgY29udGV4dCBvZiBqb3VybmFsIGNvbW1pdC4gVGhpcyB3aWxsIHJlcXVpcmUgc29tZSBkZWxpYmVyYXRlIGZhdWx0IGluamVjdGlvbiwgcG9zc2libHkgdmlhIHNvbWUgY2xldmVyIGNyYWZ0aW5nIG9mIHRoZSB1bmRlcmx5aW5nIHN0b3JhZ2UgdG8gcHJvZHVjZSB0aGUgbmVjZXNzYXJ5IGNvbmRpdGlvbnMuXG5cblRvIGJ1aWxkIHRoaXMsIEkgYWxzbyBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBpbmNsdWRlcyBgQ09ORklHX0VYVDRfRlNgIGFuZCBgQ09ORklHX0pCRDJgLCBvYnZpb3VzbHkuIExldCBtZSBxdWlja2x5IGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLCBzcGVjaWZpY2FsbHkgYGZzL2piZDIvS2NvbmZpZ2AgYW5kIGBmcy9leHQ0L0tjb25maWdgLCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBvciBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoaXMgYmVoYXZpb3IsIGVzcGVjaWFsbHkgcmVsYXRlZCB0byBlcnJvciBoYW5kbGluZyBvciBqb3VybmFsIGJlaGF2aW9yLiBJJ2xsIG5lZWQgdG8gYmUgYXdhcmUgb2YgYW55IHBvdGVudGlhbCBrbm9icyB0aGF0IG1pZ2h0IGVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZW50aXJlIGZlYXR1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyODAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTY6MjY6NTQuMzc5NjkyMTUyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDU4NjQ5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRVhUNF9GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvZXh0NC9LY29uZmlnOjI6Y29uZmlnIEVYVDRfRlNcXG5mcy9leHQ0L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiVGhlIEV4dGVuZGVkIDQgKGV4dDQpIGZpbGVzeXN0ZW1cXFwiXFxuLS1cXG5mcy9leHQ0L0tjb25maWc9MzU9Y29uZmlnIEVYVDRfVVNFX0ZPUl9FWFQyXFxuLS1cXG5mcy9leHQ0L0tjb25maWctNDUtXFxuZnMvZXh0NC9LY29uZmlnOjQ2OmNvbmZpZyBFWFQ0X0ZTX1BPU0lYX0FDTFxcbmZzL2V4dDQvS2NvbmZpZy00Ny1cXHRib29sIFxcXCJFeHQ0IFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbi0tXFxuZnMvZXh0NC9LY29uZmlnLTU1LVxcbmZzL2V4dDQvS2NvbmZpZzo1Njpjb25maWcgRVhUNF9GU19TRUNVUklUWVxcbmZzL2V4dDQvS2NvbmZpZy01Ny1cXHRib29sIFxcXCJFeHQ0IFNlY3VyaXR5IExhYmVsc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTY6MjY6NTQuNDgwMjg0MTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjQxNDI4Mjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSm91cm5hbCBDb21taXQgTG9naWMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIG5ldyBwYXRjaCBhbmQgaXQgc2VlbXMgbGlrZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGFyZSBgRVhUNF9GU2AgYW5kIGBKQkQyYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc2VlIHRoZSBmb2N1cyBzeW1ib2xzIGFyZSBgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbmAgYW5kIGBleHQ0X2luaXRfam91cm5hbF9wYXJhbXNgLiBIbW0sIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBpcyBhIGhvdCBwYXRoLCBidXQgaXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzICpzcGVjaWZpY2FsbHkqIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBJIG5lZWQgdG8gYmUgY2FyZWZ1bCBoZXJlIGJlY2F1c2UgdGhhdCdzIGEgcHJldHR5IGxhcmdlIGZ1bmN0aW9uLiBcblxuTGV0IG1lIHNlZS4uLiBBaCwgdGhlcmUgaXQgaXMhIFRoZSBzbmlwcGV0IHRoYXQgY2F1Z2h0IG15IGV5ZSBpczpcblxuYGBgY1xuXHRcdGlmIChqb3VybmFsLVx1MDAzZWpfZmxhZ3MgXHUwMDI2IEpCRDJfQUJPUlRfT05fREFUQV9FUlIpXG5cdFx0XHRqYmQyX2pvdXJuYWxfYWJvcnQoam91cm5hbCwgZXJyKTtcbmBgYFxuXG5UaGF0J3MgaW5zaWRlIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYC4gU28sIGl0IGxvb2tzIGxpa2UgdGhleSdyZSBjb25kaXRpb25hbGx5IGFib3J0aW5nIHRoZSBqb3VybmFsIGJhc2VkIG9uIHNvbWUgYEpCRDJfQUJPUlRfT05fREFUQV9FUlJgIGZsYWcuIFJpZ2h0LCBJIHNob3VsZCBsb29rIGF0IGBmcy9qYmQyL2NvbW1pdC5jYCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCdzIGhhcHBlbmluZyBpbiB0aGlzIGNvbW1pdCB0cmFuc2FjdGlvbiBhbmQgd2hhdCB0cmlnZ2VycyB0aGUgYWJvcnQgY29uZGl0aW9uLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIG9uIHRoZSBmaWxlIHN5c3RlbSdzIG92ZXJhbGwgcm9idXN0bmVzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA5OSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNjoyNjo1OS43MjE3MTcwMTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzUwNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvamJkMi9jb21taXQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3NTA6XFx0XFx0XFx0XFx0XFx0bG9ja19idWZmZXIoYmgpO1xcbiA3NTE6XFx0XFx0XFx0XFx0XFx0Y2xlYXJfYnVmZmVyX2RpcnR5KGJoKTtcXG4gNzUyOlxcdFxcdFxcdFxcdFxcdHNldF9idWZmZXJfdXB0b2RhdGUoYmgpO1xcbiA3NTM6XFx0XFx0XFx0XFx0XFx0Ymhfc3VibWl0KGJoLFxcbiA3NTQ6XFx0XFx0XFx0XFx0XFx0XFx0UkVRX09QX1dSSVRFIHwgSkJEMl9KT1VSTkFMX1JFUV9GTEFHUyxcXG4gNzU1OlxcdFxcdFxcdFxcdFxcdFxcdGpvdXJuYWxfZW5kX2J1ZmZlcl9pb19zeW5jKTtcXG4gNzU2OlxcdFxcdFxcdFxcdH1cXG4gNzU3OlxcdFxcdFxcdFxcdGNvbmRfcmVzY2hlZCgpO1xcbiA3NTg6XFx0XFxuIDc1OTpcXHRcXHRcXHRcXHQvKiBGb3JjZSBhIG5ldyBkZXNjcmlwdG9yIHRvIGJlIGdlbmVyYXRlZCBuZXh0XFxuIDc2MDpcXHQgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lIHJvdW5kIHRoZSBsb29wLiAqL1xcbiA3NjE6XFx0XFx0XFx0XFx0ZGVzY3JpcHRvciA9IE5VTEw7XFxuIDc2MjpcXHRcXHRcXHRcXHRidWZzID0gMDtcXG4gNzYzOlxcdFxcdFxcdH1cXG4gNzY0OlxcdFxcdH1cXG4gNzY1OlxcdFxcbiA3NjY6XFx0XFx0ZXJyID0gam91cm5hbF9maW5pc2hfaW5vZGVfZGF0YV9idWZmZXJzKGpvdXJuYWwsIGNvbW1pdF90cmFuc2FjdGlvbik7XFxuIDc2NzpcXHRcXHRpZiAoZXJyKSB7XFxuIDc2ODpcXHRcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HXFxuIDc2OTpcXHRcXHRcXHRcXHRcXFwiSkJEMjogRGV0ZWN0ZWQgSU8gZXJyb3JzICVkIHdoaWxlIGZsdXNoaW5nIGZpbGUgZGF0YSBvbiAlc1xcXFxuXFxcIixcXG4gNzcwOlxcdFxcdFxcdFxcdGVyciwgam91cm5hbC1cXHUwMDNlal9kZXZuYW1lKTtcXG4gNzcxOlxcdFxcdFxcdGlmIChqb3VybmFsLVxcdTAwM2VqX2ZsYWdzIFxcdTAwMjYgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUilcXG4gNzcyOlxcdFxcdFxcdFxcdGpiZDJfam91cm5hbF9hYm9ydChqb3VybmFsLCBlcnIpO1xcbiA3NzM6XFx0XFx0XFx0ZXJyID0gMDtcXG4gNzc0OlxcdFxcdH1cXG4gNzc1OlxcdFxcbiA3NzY6XFx0XFx0LypcXG4gNzc3OlxcdFxcdCAqIEdldCBjdXJyZW50IG9sZGVzdCB0cmFuc2FjdGlvbiBpbiB0aGUgbG9nIGJlZm9yZSB3ZSBpc3N1ZSBmbHVzaFxcbiA3Nzg6XFx0XFx0ICogdG8gdGhlIGZpbGVzeXN0ZW0gZGV2aWNlLiBBZnRlciB0aGUgZmx1c2ggd2UgY2FuIGJlIHN1cmUgdGhhdFxcbiA3Nzk6XFx0XFx0ICogYmxvY2tzIG9mIGFsbCBvbGRlciB0cmFuc2FjdGlvbnMgYXJlIGNoZWNrcG9pbnRlZCB0byBwZXJzaXN0ZW50XFxuIDc4MDpcXHRcXHQgKiBzdG9yYWdlIGFuZCB3ZSB3aWxsIGJlIHNhZmUgdG8gdXBkYXRlIGpvdXJuYWwgc3RhcnQgaW4gdGhlXFxuIDc4MTpcXHRcXHQgKiBzdXBlcmJsb2NrIHdpdGggdGhlIG51bWJlcnMgd2UgZ2V0IGhlcmUuXFxuIDc4MjpcXHRcXHQgKi9cXG4gNzgzOlxcdFxcdHVwZGF0ZV90YWlsID1cXG4gNzg0OlxcdFxcdFxcdGpiZDJfam91cm5hbF9nZXRfbG9nX3RhaWwoam91cm5hbCwgXFx1MDAyNmZpcnN0X3RpZCwgXFx1MDAyNmZpcnN0X2Jsb2NrKTtcXG4gNzg1OlxcdFxcbiA3ODY6XFx0XFx0d3JpdGVfbG9jayhcXHUwMDI2am91cm5hbC1cXHUwMDNlal9zdGF0ZV9sb2NrKTtcXG4gNzg3OlxcdFxcdGlmICh1cGRhdGVfdGFpbCkge1xcbiA3ODg6XFx0XFx0XFx0bG9uZyBmcmVlZCA9IGZpcnN0X2Jsb2NrIC0gam91cm5hbC1cXHUwMDNlal90YWlsO1xcbiA3ODk6XFx0XFxuIDc5MDpcXHRcXHRcXHRpZiAoZmlyc3RfYmxvY2sgXFx1MDAzYyBqb3VybmFsLVxcdTAwM2VqX3RhaWwpXFxuIDc5MTpcXHRcXHRcXHRcXHRmcmVlZCArPSBqb3VybmFsLVxcdTAwM2VqX2xhc3QgLSBqb3VybmFsLVxcdTAwM2VqX2ZpcnN0O1xcbiA3OTI6XFx0XFx0XFx0LyogVXBkYXRlIHRhaWwgb25seSBpZiB3ZSBmcmVlIHNpZ25pZmljYW50IGFtb3VudCBvZiBzcGFjZSAqL1xcbiA3OTM6XFx0XFx0XFx0aWYgKGZyZWVkIFxcdTAwM2Mgam91cm5hbC1cXHUwMDNlal9tYXhfdHJhbnNhY3Rpb25fYnVmZmVycylcXG4gNzk0OlxcdFxcdFxcdFxcdHVwZGF0ZV90YWlsID0gMDtcXG4gNzk1OlxcdFxcdH1cXG4gNzk2OlxcdFxcdEpfQVNTRVJUKGNvbW1pdF90cmFuc2FjdGlvbi1cXHUwMDNldF9zdGF0ZSA9PSBUX0NPTU1JVCk7XFxuIDc5NzpcXHRcXHRjb21taXRfdHJhbnNhY3Rpb24tXFx1MDAzZXRfc3RhdGUgPSBUX0NPTU1JVF9ERkxVU0g7XFxuIDc5ODpcXHRcXHR3cml0ZV91bmxvY2soXFx1MDAyNmpvdXJuYWwtXFx1MDAzZWpfc3RhdGVfbG9jayk7XFxuIDc5OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTY6MjY6NTkuNzIxODU0Mjg5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0MjY2NDgyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCB0aGUgZ29hbCBpcyB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgZnVuY3Rpb24sIGFuZCBpdCBzZWVtcyBsaWtlICoqYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gIGlzIGRlZmluaXRlbHkgdGhlIGtleSBmdW5jdGlvbiBoZXJlKiouIEknbSBhbG1vc3QgY2VydGFpbiB0aGF0J3MgdGhlIG9uZSB3ZSdyZSBkZWFsaW5nIHdpdGguIEhvd2V2ZXIsIGxldCdzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgc25lYWt5IHNpZGUgcGxheWVycyBpbnZvbHZlZC4gSG1tLCBJIHNlZSB0aGF0IGBleHQ0X2luaXRfam91cm5hbF9wYXJhbXNgIGFsc28gZ290IGEgbGl0dGxlIGxvdmUuIE5vdywgd2hlcmUgZG9lcyAqdGhhdCogZml0IGluP1xuXG5SaWdodCwgYGV4dDRfaW5pdF9qb3VybmFsX3BhcmFtc2AgaXMgY2FsbGVkIGZyb20gYGV4dDRfbG9hZF9qb3VybmFsYCBhbmQgYGV4dDRfcmVtb3VudGAuIFRoYXQncyBpbXBvcnRhbnQgY29udGV4dC4gVGhhdCBnaXZlcyBhIGxpdHRsZSBtb3JlIGluc2lnaHQgdG8gdGhlIGZ1bmN0aW9uLiBJdCBzZWVtcyBiZXN0IHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGlzIGBleHQ0X2luaXRfam91cm5hbF9wYXJhbXNgIGZ1bmN0aW9uLCBhbmQgc2VlIGhvdyBpdCBpcyB1dGlsaXplZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM4MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTY6Mjc6MDMuODY0NTIxMDgxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NDI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9leHQ0L3N1cGVyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTg2MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNTg2MDpcXHQgKiBTZXR1cCBhbnkgcGVyLWZzIGpvdXJuYWwgcGFyYW1ldGVycyBub3cuICBXZSdsbCBkbyB0aGlzIGJvdGggb25cXG41ODYxOlxcdCAqIGluaXRpYWwgbW91bnQsIG9uY2UgdGhlIGpvdXJuYWwgaGFzIGJlZW4gaW5pdGlhbGlzZWQgYnV0IGJlZm9yZSB3ZSd2ZVxcbjU4NjI6XFx0ICogZG9uZSBhbnkgcmVjb3Zlcnk7IGFuZCBhZ2FpbiBvbiBhbnkgc3Vic2VxdWVudCByZW1vdW50LlxcbjU4NjM6XFx0ICovXFxuNTg2NDpcXHRzdGF0aWMgdm9pZCBleHQ0X2luaXRfam91cm5hbF9wYXJhbXMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgam91cm5hbF90ICpqb3VybmFsKVxcbjU4NjU6XFx0e1xcbjU4NjY6XFx0XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuNTg2NzpcXHRcXG41ODY4OlxcdFxcdGpvdXJuYWwtXFx1MDAzZWpfY29tbWl0X2ludGVydmFsID0gc2JpLVxcdTAwM2VzX2NvbW1pdF9pbnRlcnZhbDtcXG41ODY5OlxcdFxcdGpvdXJuYWwtXFx1MDAzZWpfbWluX2JhdGNoX3RpbWUgPSBzYmktXFx1MDAzZXNfbWluX2JhdGNoX3RpbWU7XFxuNTg3MDpcXHRcXHRqb3VybmFsLVxcdTAwM2VqX21heF9iYXRjaF90aW1lID0gc2JpLVxcdTAwM2VzX21heF9iYXRjaF90aW1lO1xcbjU4NzE6XFx0XFx0ZXh0NF9mY19pbml0KHNiLCBqb3VybmFsKTtcXG41ODcyOlxcdFxcbjU4NzM6XFx0XFx0d3JpdGVfbG9jayhcXHUwMDI2am91cm5hbC1cXHUwMDNlal9zdGF0ZV9sb2NrKTtcXG41ODc0OlxcdFxcdGlmICh0ZXN0X29wdChzYiwgQkFSUklFUikpXFxuNTg3NTpcXHRcXHRcXHRqb3VybmFsLVxcdTAwM2VqX2ZsYWdzIHw9IEpCRDJfQkFSUklFUjtcXG41ODc2OlxcdFxcdGVsc2VcXG41ODc3OlxcdFxcdFxcdGpvdXJuYWwtXFx1MDAzZWpfZmxhZ3MgXFx1MDAyNj0gfkpCRDJfQkFSUklFUjtcXG41ODc4OlxcdFxcdGlmICh0ZXN0X29wdChzYiwgREFUQV9FUlJfQUJPUlQpKVxcbjU4Nzk6XFx0XFx0XFx0am91cm5hbC1cXHUwMDNlal9mbGFncyB8PSBKQkQyX0FCT1JUX09OX0RBVEFfRVJSO1xcbjU4ODA6XFx0XFx0ZWxzZVxcbjU4ODE6XFx0XFx0XFx0am91cm5hbC1cXHUwMDNlal9mbGFncyBcXHUwMDI2PSB+SkJEMl9BQk9SVF9PTl9EQVRBX0VSUjtcXG41ODgyOlxcdFxcdC8qXFxuNTg4MzpcXHRcXHQgKiBBbHdheXMgZW5hYmxlIGpvdXJuYWwgY3ljbGUgcmVjb3JkIG9wdGlvbiwgbGV0dGluZyB0aGUgam91cm5hbFxcbjU4ODQ6XFx0XFx0ICogcmVjb3JkcyBsb2cgdHJhbnNhY3Rpb25zIGNvbnRpbnVvdXNseSBiZXR3ZWVuIGVhY2ggbW91bnQuXFxuNTg4NTpcXHRcXHQgKi9cXG41ODg2OlxcdFxcdGpvdXJuYWwtXFx1MDAzZWpfZmxhZ3MgfD0gSkJEMl9DWUNMRV9SRUNPUkQ7XFxuNTg4NzpcXHRcXHR3cml0ZV91bmxvY2soXFx1MDAyNmpvdXJuYWwtXFx1MDAzZWpfc3RhdGVfbG9jayk7XFxuNTg4ODpcXHR9XFxuNTg4OTpcXHRcXG41ODkwOlxcdHN0YXRpYyBzdHJ1Y3QgaW5vZGUgKmV4dDRfZ2V0X2pvdXJuYWxfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG41ODkxOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGpvdXJuYWxfaW51bSlcXG41ODkyOlxcdHtcXG41ODkzOlxcdFxcdHN0cnVjdCBpbm9kZSAqam91cm5hbF9pbm9kZTtcXG41ODk0OlxcdFxcbjU4OTU6XFx0XFx0LypcXG41ODk2OlxcdFxcdCAqIFRlc3QgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYSB2YWxpZCBpbm9kZSBvbiBkaXNrLiAgQmFkIHRoaW5nc1xcbjU4OTc6XFx0XFx0ICogaGFwcGVuIGlmIHdlIGlnZXQoKSBhbiB1bnVzZWQgaW5vZGUsIGFzIHRoZSBzdWJzZXF1ZW50IGlwdXQoKVxcbjU4OTg6XFx0XFx0ICogd2lsbCB0cnkgdG8gZGVsZXRlIGl0LlxcbjU4OTk6XFx0XFx0ICovXFxuNTkwMDpcXHRcXHRqb3VybmFsX2lub2RlID0gZXh0NF9pZ2V0KHNiLCBqb3VybmFsX2ludW0sIEVYVDRfSUdFVF9TUEVDSUFMKTtcXG41OTAxOlxcdFxcdGlmIChJU19FUlIoam91cm5hbF9pbm9kZSkpIHtcXG41OTAyOlxcdFxcdFxcdGV4dDRfbXNnKHNiLCBLRVJOX0VSUiwgXFxcIm5vIGpvdXJuYWwgZm91bmRcXFwiKTtcXG41OTAzOlxcdFxcdFxcdHJldHVybiBFUlJfQ0FTVChqb3VybmFsX2lub2RlKTtcXG41OTA0OlxcdFxcdH1cXG41OTA1OlxcdFxcdGlmICgham91cm5hbF9pbm9kZS1cXHUwMDNlaV9ubGluaykge1xcbjU5MDY6XFx0XFx0XFx0bWFrZV9iYWRfaW5vZGUoam91cm5hbF9pbm9kZSk7XFxuNTkwNzpcXHRcXHRcXHRpcHV0KGpvdXJuYWxfaW5vZGUpO1xcbjU5MDg6XFx0XFx0XFx0ZXh0NF9tc2coc2IsIEtFUk5fRVJSLCBcXFwiam91cm5hbCBpbm9kZSBpcyBkZWxldGVkXFxcIik7XFxuNTkwOTpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUZTQ09SUlVQVEVEKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTY6Mjc6MDMuODY0Nzg3MzYxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3NTY5MjY5MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgcXVpY2sgdGFrZSBvbiB0aGlzLlxuXG4qKkZ1enppbmcgdGhlIEV4dDQvSkJEMiBEYXRhIEVycm9yIFBhdGNoKipcblxuQWxyaWdodCwgc28gdGhlIHBhdGNoIGlzIGluLCBhbmQgaXQncyBzdXBwb3NlZGx5IG1vZGlmeWluZyBob3cgZXh0NCBhbmQgSkJEMiBoYW5kbGUgZGF0YSBlcnJvcnMuIFRoYXQgaW1tZWRpYXRlbHkgc2V0cyBvZmYgYWxhcm0gYmVsbHMgaW4gbXkgaGVhZCDigJMgZGF0YSBjb3JydXB0aW9uIGJ1Z3MgYXJlIG5vdG9yaW91c2x5IHRyaWNreS4gVGltZSB0byBwdXQgdGhpcyB0aGluZyB0aHJvdWdoIGl0cyBwYWNlcy4gV2UgbmVlZCB0byBmdXp6IGl0LlxuXG5UaGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgYXJlIGBFWFQ0X0ZTYCBhbmQsIG9idmlvdXNseSwgYEpCRDJgLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBgSkJEMmAgaXMgZXZlbiBhIHZhbGlkIGNvbmZpZyBvcHRpb24g4oCTIGNhbuKAmXQgZnV6eiBzb21ldGhpbmcgdGhhdOKAmXMgbm90IGVuYWJsZWQsIG9yIHRoZSBmdXp6aW5nIHdpbGwgYmUgdXNlbGVzcy5cblxuQW5kIHdoZXJlIGRvIEkgYmVnaW4gbXkgZm9jdXNlZCBmdXp6aW5nIGVmZm9ydHM/IFRoZSBtb3N0IGNyaXRpY2FsIGVudHJ5IHBvaW50cyByZWxhdGVkIHRvIHRoaXMgcGF0Y2ggYXBwZWFyIHRvIGJlIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBhbmQgYGV4dDRfaW5pdF9qb3VybmFsX3BhcmFtc2AuIFRoZXNlIGFyZSBsaWtlbHkgdGhlIGZ1bmN0aW9ucyB3aGVyZSB0aGUgY2hhbmdlcyBhcmUgbW9zdCBjb25jZW50cmF0ZWQsIHRoZSBwbGFjZXMgd2hlcmUgdGhlIGRhdGEgZXJyb3IgaGFuZGxpbmcgbG9naWMgaGFzIGJlZW4gdHdlYWtlZC4gRm9jdXNpbmcgdGhlcmUgc2hvdWxkIGdpdmUgdXMgdGhlIGJlc3QgYmFuZyBmb3Igb3VyIGZ1enppbmcgYnVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU1OCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTY6Mjc6MjEuNDM0MDU5Mjg4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDQ0NTEwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSkJEMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9qYmQyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvamJkMi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvamJkMi9LY29uZmlnOjI6Y29uZmlnIEpCRDJcXG5mcy9qYmQyL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZnMvamJkMi9LY29uZmlnLTE5LVxcbmZzL2piZDIvS2NvbmZpZzoyMDpjb25maWcgSkJEMl9ERUJVR1xcbmZzL2piZDIvS2NvbmZpZy0yMS1cXHRib29sIFxcXCJKQkQyIChleHQ0KSBkZWJ1Z2dpbmcgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTY6Mjc6MjEuNTA4NTEwNjU3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4NzA0OTAwNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgYXNzZXNzbWVudDpcblxuKipGdXp6aW5nIFRhcmdldCBBc3Nlc3NtZW50OiBKQkQyIGFuZCBleHQ0IHdpdGggZGF0YV9lcnI9YWJvcnQqKlxuXG5SaWdodCwgc28gYEpCRDJgIGlzIGRlZmluaXRlbHkgYSB0aGluZywgYW5kIHdlIGhhdmUgYSBwb3RlbnRpYWwgdGFyZ2V0IGhlcmUuIExldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuVGhlIGtleSBhc3BlY3RzIGFyZTogYFdvcnRoRnV6emluZzogdHJ1ZWAuIEV4Y2VsbGVudC4gV2UgaGF2ZSBhIHNvbGlkIHJlYXNvbiB0byBpbnZlc3RpZ2F0ZSB0aGlzIHRob3JvdWdobHkuIFRoZSBgRm9jdXNTeW1ib2xzYDogYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gIGFuZCBgZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zYCBhcmUgc3BvdCBvbiwgdGhlc2UgYXJlIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMgdG8gZXhhbWluZS4gQW5kIHRoZSByZWxldmFudCBgRW5hYmxlQ29uZmlnc2A6IGBFWFQ0X0ZTYCwgYEpCRDJgIOKAkyBubyBzdXJwcmlzZXMgdGhlcmUsIHdlIG5lZWQgYm90aCBvZiB0aGVzZSBmaWxlc3lzdGVtIGNvbXBvbmVudHMgZW5hYmxlZCBmb3IgdGhpcyB0byBiZSByZWxldmFudC5cblxuVGhlIHJlYXNvbmluZyBpcyBzb3VuZDogVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBgZGF0YV9lcnI9YWJvcnRgIG1vdW50IG9wdGlvbiBmb3IgZXh0NC4gRXNzZW50aWFsbHksIGl0IGFkZHMgYSBuZXcgYEpCRDJfQUJPUlRfT05fREFUQV9FUlJgIGZsYWcgd2l0aGluIGBqYmQyYC4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGl0IGFsdGVycyBlcnJvciBoYW5kbGluZy4gU3BlY2lmaWNhbGx5LCBpZiB0aGF0IGZsYWcgaXMgc2V0LCBgamJkMmAgKndpbGwqIGFib3J0IHRoZSBqb3VybmFsIGlmIGl0IGVuY291bnRlcnMgSS9PIGVycm9ycyB3aGlsZSBmbHVzaGluZyBmaWxlIGRhdGEgZHVyaW5nIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBUaGUgYmVoYXZpb3IgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGRlZmF1bHQgaW4gY2FzZXMgb2YgSS9PIGZhaWx1cmVzLiBJdCdzIG5vdCBqdXN0IGEgcGVyZm9ybWFuY2UgdHdlYWssIHRoaXMgZGlyZWN0bHkgaW1wYWN0cyBob3cgdGhlIGZpbGUgc3lzdGVtIHJlc3BvbmRzIHRvIGVycm9ycywgd2hpY2ggbWFrZXMgaXQgYW4gZXhjZWxsZW50IHRhcmdldCBmb3IgZnV6emluZy4gV2UgY2FuIHNlZSBob3cgdGhlIGZpbGUgc3lzdGVtIGJlaGF2ZXMgdW5kZXIgdW51c3VhbCBzY2VuYXJpb3Mgd2l0aCB0aGlzLlxuXG5UaGVyZWZvcmUsIHRoaXMgaXMgYSBsZWdpdGltYXRlIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gSSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIGVudmlyb25tZW50IHNldCB1cCBjb3JyZWN0bHkgdG8gdHJpZ2dlciB0aGVzZSBhYm9ydCBjb25kaXRpb25zIGFuZCBvYnNlcnZlIHRoZSByZXN1bHRzLlxuSSB0aGluayBJJ2xsIGBzZXQtcmVzdWx0c2Agbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDMzLCJPdXRwdXRUb2tlbnMiOjE2NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNjoyNzoyNy4zNzkwMDI1NDJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjI2MDM1NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIixcbiAgICBcIkpCRDJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uXCIsXG4gICAgXCJleHQ0X2luaXRfam91cm5hbF9wYXJhbXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IG1vdW50IG9wdGlvbiBgZGF0YV9lcnI9YWJvcnRgIHRvIGV4dDQsIHdoaWNoIHNldHMgYSBuZXcgZmxhZyBgSkJEMl9BQk9SVF9PTl9EQVRBX0VSUmAgaW4gamJkMi4gV2hlbiB0aGlzIGZsYWcgaXMgc2V0LCBqYmQyIHdpbGwgYWJvcnQgdGhlIGpvdXJuYWwgaWYgdGhlcmUgYXJlIElPIGVycm9ycyBkdXJpbmcgZmlsZSBkYXRhIGZsdXNoaW5nIGluIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBlcnJvciBoYW5kbGluZyBiZWhhdmlvciBvZiBleHQ0IGFuZCBqYmQyLCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCIsXG4gICAgXCJKQkQyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvblwiLFxuICAgIFwiZXh0NF9pbml0X2pvdXJuYWxfcGFyYW1zXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBtb3VudCBvcHRpb24gYGRhdGFfZXJyPWFib3J0YCB0byBleHQ0LCB3aGljaCBzZXRzIGEgbmV3IGZsYWcgYEpCRDJfQUJPUlRfT05fREFUQV9FUlJgIGluIGpiZDIuIFdoZW4gdGhpcyBmbGFnIGlzIHNldCwgamJkMiB3aWxsIGFib3J0IHRoZSBqb3VybmFsIGlmIHRoZXJlIGFyZSBJTyBlcnJvcnMgZHVyaW5nIGZpbGUgZGF0YSBmbHVzaGluZyBpbiBgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgZXJyb3IgaGFuZGxpbmcgYmVoYXZpb3Igb2YgZXh0NCBhbmQgamJkMiwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowgpzxn[1] Phase: Succeeded StartedAt: 2026-06-23 16:27:39 +0000 UTC FinishedAt: 2026-06-23 16:27:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-23 16:27:39 +0000 UTC FinishedAt: 2026-06-23 16:27:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[2] Phase: Succeeded StartedAt: 2026-06-23 16:27:39 +0000 UTC FinishedAt: 2026-06-23 20:23:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-23 16:27:39 +0000 UTC FinishedAt: 2026-06-23 20:23:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 16:27:39 +0000 UTC FinishedAt: 2026-06-23 16:27:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 16:27:39 +0000 UTC FinishedAt: 2026-06-23 16:27:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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-workflowgpzxn/series-workflowgpzxn-convert-artifact-2386661275/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 16:27:50 +0000 UTC FinishedAt: 2026-06-23 16:51:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 16:27:50 +0000 UTC FinishedAt: 2026-06-23 16:51:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ea25714b-4e2e-4069-a726-72e7bc6ec80e,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-workflowgpzxn/series-workflowgpzxn-convert-artifact-2386661275/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": "810c3b7a-1a33-461f-a2e6-4ae65181621d", "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-workflowgpzxn/series-workflowgpzxn-build-action-2675383257/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 16:27:50 +0000 UTC FinishedAt: 2026-06-23 16:51:43 +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:*ea25714b-4e2e-4069-a726-72e7bc6ec80e,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-workflowgpzxn/series-workflowgpzxn-convert-artifact-2386661275/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": "810c3b7a-1a33-461f-a2e6-4ae65181621d", "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-workflowgpzxn/series-workflowgpzxn-build-action-2675383257/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 16:51:53 +0000 UTC FinishedAt: 2026-06-23 16:51:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 16:51:53 +0000 UTC FinishedAt: 2026-06-23 16:51:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 16:51:53 +0000 UTC FinishedAt: 2026-06-23 16:52:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 16:51:53 +0000 UTC FinishedAt: 2026-06-23 16:52:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-workflowgpzxn/series-workflowgpzxn-convert-artifact-712999154/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 16:52:15 +0000 UTC FinishedAt: 2026-06-23 16:54:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 16:52:15 +0000 UTC FinishedAt: 2026-06-23 16:53:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*810c3b7a-1a33-461f-a2e6-4ae65181621d,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-workflowgpzxn/series-workflowgpzxn-build-action-2675383257/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-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 16:54:04 +0000 UTC FinishedAt: 2026-06-23 16:54:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 16:54:04 +0000 UTC FinishedAt: 2026-06-23 16:54:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 16:54:04 +0000 UTC FinishedAt: 2026-06-23 17:16:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 16:54:04 +0000 UTC FinishedAt: 2026-06-23 17:16:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ea25714b-4e2e-4069-a726-72e7bc6ec80e,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-workflowgpzxn/series-workflowgpzxn-convert-artifact-712999154/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": "db27da9d-0750-48ca-b8ef-c0fc1320881b", "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-workflowgpzxn/series-workflowgpzxn-build-action-1378713734/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 16:54:04 +0000 UTC FinishedAt: 2026-06-23 17:16:48 +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:*ea25714b-4e2e-4069-a726-72e7bc6ec80e,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-workflowgpzxn/series-workflowgpzxn-convert-artifact-712999154/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": "db27da9d-0750-48ca-b8ef-c0fc1320881b", "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-workflowgpzxn/series-workflowgpzxn-build-action-1378713734/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 17:16:58 +0000 UTC FinishedAt: 2026-06-23 17:16:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 17:16:58 +0000 UTC FinishedAt: 2026-06-23 17:16:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 17:16:58 +0000 UTC FinishedAt: 2026-06-23 17:18:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 17:16:58 +0000 UTC FinishedAt: 2026-06-23 17:18:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*db27da9d-0750-48ca-b8ef-c0fc1320881b,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-workflowgpzxn/series-workflowgpzxn-build-action-1378713734/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-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 17:18:48 +0000 UTC FinishedAt: 2026-06-23 20:23:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 17:18:48 +0000 UTC FinishedAt: 2026-06-23 20:23:15 +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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"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:*810c3b7a-1a33-461f-a2e6-4ae65181621d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*db27da9d-0750-48ca-b8ef-c0fc1320881b,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-workflowgpzxn/series-workflowgpzxn-build-action-2675383257/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-workflowgpzxn/series-workflowgpzxn-build-action-1378713734/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 17:18:48 +0000 UTC FinishedAt: 2026-06-23 17:20:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 17:18:48 +0000 UTC FinishedAt: 2026-06-23 17:19:57 +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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"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-workflowgpzxn/series-workflowgpzxn-convert-artifact-437149511/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 17:18:48 +0000 UTC FinishedAt: 2026-06-23 17:18:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 17:18:48 +0000 UTC FinishedAt: 2026-06-23 17:18:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 17:18:49 +0000 UTC FinishedAt: 2026-06-23 17:18:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 17:20:14 +0000 UTC FinishedAt: 2026-06-23 20:23:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgpzxn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"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":["jbd2_journal_commit_transaction","ext4_init_journal_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"079a028d6327e68cfa5d38b36123637b321c19a7","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","JBD2"],"series_id":"0422c739-70ff-4466-a569-f4cb59fe4c83","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-06-23 17:20:14 +0000 UTC FinishedAt: 2026-06-23 20:23:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*810c3b7a-1a33-461f-a2e6-4ae65181621d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*db27da9d-0750-48ca-b8ef-c0fc1320881b,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-workflowgpzxn/series-workflowgpzxn-build-action-2675383257/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-workflowgpzxn/series-workflowgpzxn-build-action-1378713734/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-workflowgpzxn/series-workflowgpzxn-convert-artifact-437149511/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,}