Name: series-workflowfsjz7 Phase: Succeeded StartedAt: 2026-08-03 07:40:55 +0000 UTC FinishedAt: 2026-08-03 08:46:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[0] Phase: Succeeded StartedAt: 2026-08-03 07:40:55 +0000 UTC FinishedAt: 2026-08-03 08:01:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 07:40:55 +0000 UTC FinishedAt: 2026-08-03 08:01:09 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "69963a0678a347d57c4ac8b16939dba216eb95ce", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AF_RXRPC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "69963a0678a347d57c4ac8b16939dba216eb95ce", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AF_RXRPC" ], "series_id": "85ee0843-85ff-4d16-a8df-d14fc7138c1b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rxrpc_do_sendmsg", "rxrpc_kernel_send_data", "rxrpc_input_call_packet" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA4OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FGX1JYUlBDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnhycGNfZG9fc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtyeHJwY19rZXJuZWxfc2VuZF9kYXRhJiMzNDssCiAgICAmIzM0O3J4cnBjX2lucHV0X2NhbGxfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGxvZ2ljIGluIGByeHJwY19zZXFfaW5fdHhxYCBmb3IgY2hlY2tpbmcgaWYgYSBzZXF1ZW5jZSBudW1iZXIgaXMgaW4gYSB0cmFuc21pc3Npb24gcXVldWUsIGFkZHMgYSBjaGVjayBmb3IgYFJYUlBDX0NBTExfVFhfTk9fTU9SRWAgaW4gYHJ4cnBjX3NlbmRfZGF0YWAgdG8gcHJldmVudCBsYXRlIHNlbmRzLCBhbmQgZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnNgIGJ5IG1vdmluZyB0aGUgYEFTU0VSVGAgYWZ0ZXIgd2FpdGluZyBmb3IgY29ubmVjdGlvbnMgdG8gYmUgZGVzdHJveWVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSByeHJwYyBuZXR3b3JraW5nIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDg6MDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiOTYwYzI2ZjYwMzNjMGNhYjRjYzc2NjE0Mjc4ZmNmNDAyZGQzY2MzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwODowMDoxNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvYXItaW50ZXJuYWwuaCBiL25ldC9yeHJwYy9hci1pbnRlcm5hbC5oXG5pbmRleCA4NjVmMDVmZTM3YWI5Li4yNzk5MmUxMGQ4MmFkIDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL2FyLWludGVybmFsLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yeHJwYy9hci1pbnRlcm5hbC5oXG5AQCAtMTU4MCw3ICYjNDM7MTU4MCw4IEBAIHN0YXRpYyBpbmxpbmUgdTMyIGxhdGVzdCh1MzIgc2VxMSwgdTMyIHNlcTIpXG4gXG4gc3RhdGljIGlubGluZSBib29sIHJ4cnBjX3NlcV9pbl90eHEoY29uc3Qgc3RydWN0IHJ4cnBjX3R4cXVldWUgKnRxLCByeHJwY19zZXFfdCBzZXEpXG4ge1xuLVx0cmV0dXJuIChzZXEgXHUwMDI2IChSWFJQQ19OUl9UWFFVRVVFIC0gMSkpID09IHRxLVx1MDAzZXFiYXNlO1xuJiM0MztcdHJldHVybiBhZnRlcl9lcShzZXEsIHRxLVx1MDAzZXFiYXNlKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgICAgYmVmb3JlKHNlcSwgdHEtXHUwMDNlcWJhc2UgJiM0MzsgUlhSUENfTlJfVFhRVUVVRSk7XG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgdm9pZCByeHJwY19xdWV1ZV9yeF9jYWxsX3BhY2tldChzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvY29ubl9vYmplY3QuYyBiL25ldC9yeHJwYy9jb25uX29iamVjdC5jXG5pbmRleCAwZWNlNzE3ZGIwZjg1Li5kZjNmOTJiMWE0MmU5IDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL2Nvbm5fb2JqZWN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yeHJwYy9jb25uX29iamVjdC5jXG5AQCAtNDg1LDExICYjNDM7NDg1LDEzIEBAIHZvaWQgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnMoc3RydWN0IHJ4cnBjX25ldCAqcnhuZXQpXG4gXHR3cml0ZV91bmxvY2soXHUwMDI2cnhuZXQtXHUwMDNlY29ubl9sb2NrKTtcbiBcdEJVR19PTihsZWFrKTtcbiBcbi1cdEFTU0VSVChsaXN0X2VtcHR5KFx1MDAyNnJ4bmV0LVx1MDAzZWNvbm5fcHJvY19saXN0KSk7XG4tXG4tXHQvKiBXZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBjb25uZWN0aW9ucyB0byBiZSBkZXN0cm95ZWQgYnkgUkNVIGFzIHRoZXlcbi1cdCAqIHBpbiB0aGluZ3MgdGhhdCB3ZSBzdGlsbCBuZWVkIHRvIGdldCByaWQgb2YuXG4mIzQzO1x0LyogQ29ubmVjdGlvbiBkZXN0cnVjdGlvbiBpcyBub3JtYWxseSBkZWZlcnJlZCB0byBzeXN0ZW1fd3EgYmVjYXVzZVxuJiM0MztcdCAqIHRoZSBmaW5hbC1BQ0sgdGltZXIgaXMgc3RpbGwgcGVuZGluZyB3aGVuIHRoZSBsYXN0IHJlZiBpcyBkcm9wcGVkLlxuJiM0MztcdCAqIFdhaXQgZm9yIHRoZSBkZWZlcnJlZCBkZXN0cnVjdG9ycyAoYW5kIHRoZSBSQ1UgZnJlZXMpIHRvIGNvbXBsZXRlXG4mIzQzO1x0ICogYmVmb3JlIGNoZWNraW5nIGNvbm5fcHJvY19saXN0OyB0aGV5IHJlbW92ZSBjb25ucyBmcm9tIGl0LlxuIFx0ICovXG4gXHR3YWl0X3Zhcl9ldmVudChcdTAwMjZyeG5ldC1cdTAwM2Vucl9jb25ucywgIWF0b21pY19yZWFkKFx1MDAyNnJ4bmV0LVx1MDAzZW5yX2Nvbm5zKSk7XG4mIzQzO1xuJiM0MztcdEFTU0VSVChsaXN0X2VtcHR5KFx1MDAyNnJ4bmV0LVx1MDAzZWNvbm5fcHJvY19saXN0KSk7XG4gXHRfbGVhdmUoXCYjMzQ7XCYjMzQ7KTtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3NlbmRtc2cuYyBiL25ldC9yeHJwYy9zZW5kbXNnLmNcbmluZGV4IGVkMmM5YTUxMDA1YWQuLmIzOWFmNTUyYzZiNDYgMTAwNjQ0XG4tLS0gYS9uZXQvcnhycGMvc2VuZG1zZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvcnhycGMvc2VuZG1zZy5jXG5AQCAtMzU4LDYgJiM0MzszNTgsMTQgQEAgc3RhdGljIGludCByeHJwY19zZW5kX2RhdGEoc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LFxuIFx0aWYgKHR4YilcbiBcdFx0cnhycGNfc2VlX3R4YnVmKHR4YiwgcnhycGNfdHhidWZfc2VlX3NlbmRfbW9yZSk7XG4gXG4mIzQzO1x0cmV0ID0gLUVQUk9UTztcbiYjNDM7XHRpZiAodGVzdF9iaXQoUlhSUENfQ0FMTF9UWF9OT19NT1JFLCBcdTAwMjZjYWxsLVx1MDAzZWZsYWdzKSkge1xuJiM0MztcdFx0dHJhY2VfcnhycGNfYWJvcnQoY2FsbC1cdTAwM2VkZWJ1Z19pZCwgcnhycGNfc2VuZG1zZ19sYXRlX3NlbmQsXG4mIzQzO1x0XHRcdFx0ICBjYWxsLVx1MDAzZWNpZCwgY2FsbC1cdTAwM2VjYWxsX2lkLCBjYWxsLVx1MDAzZXJ4X2NvbnN1bWVkLFxuJiM0MztcdFx0XHRcdCAgMCwgLUVQUk9UTyk7XG4mIzQzO1x0XHRnb3RvIG1heWJlX2Vycm9yO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXQgPSAtRVBJUEU7XG4gXHRpZiAoc2stXHUwMDNlc2tfc2h1dGRvd24gXHUwMDI2IFNFTkRfU0hVVERPV04pXG4gXHRcdGdvdG8gbWF5YmVfZXJyb3I7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDg6MDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FGX1JYUlBDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnhycGNfZG9fc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtyeHJwY19rZXJuZWxfc2VuZF9kYXRhJiMzNDssCiAgICAmIzM0O3J4cnBjX2lucHV0X2NhbGxfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGxvZ2ljIGluIGByeHJwY19zZXFfaW5fdHhxYCBmb3IgY2hlY2tpbmcgaWYgYSBzZXF1ZW5jZSBudW1iZXIgaXMgaW4gYSB0cmFuc21pc3Npb24gcXVldWUsIGFkZHMgYSBjaGVjayBmb3IgYFJYUlBDX0NBTExfVFhfTk9fTU9SRWAgaW4gYHJ4cnBjX3NlbmRfZGF0YWAgdG8gcHJldmVudCBsYXRlIHNlbmRzLCBhbmQgZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnNgIGJ5IG1vdmluZyB0aGUgYEFTU0VSVGAgYWZ0ZXIgd2FpdGluZyBmb3IgY29ubmVjdGlvbnMgdG8gYmUgZGVzdHJveWVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSByeHJwYyBuZXR3b3JraW5nIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiOTYwYzI2ZjYwMzNjMGNhYjRjYzc2NjE0Mjc4ZmNmNDAyZGQzY2MzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAwODowMDoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9hci1pbnRlcm5hbC5oIGIvbmV0L3J4cnBjL2FyLWludGVybmFsLmgKaW5kZXggODY1ZjA1ZmUzN2FiOS4uMjc5OTJlMTBkODJhZCAxMDA2NDQKLS0tIGEvbmV0L3J4cnBjL2FyLWludGVybmFsLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3J4cnBjL2FyLWludGVybmFsLmgKQEAgLTE1ODAsNyAmIzQzOzE1ODAsOCBAQCBzdGF0aWMgaW5saW5lIHUzMiBsYXRlc3QodTMyIHNlcTEsIHUzMiBzZXEyKQogCiBzdGF0aWMgaW5saW5lIGJvb2wgcnhycGNfc2VxX2luX3R4cShjb25zdCBzdHJ1Y3QgcnhycGNfdHhxdWV1ZSAqdHEsIHJ4cnBjX3NlcV90IHNlcSkKIHsKLQlyZXR1cm4gKHNlcSAmYW1wOyAoUlhSUENfTlJfVFhRVUVVRSAtIDEpKSA9PSB0cS0mZ3Q7cWJhc2U7CiYjNDM7CXJldHVybiBhZnRlcl9lcShzZXEsIHRxLSZndDtxYmFzZSkgJmFtcDsmYW1wOwomIzQzOwkgICAgICAgYmVmb3JlKHNlcSwgdHEtJmd0O3FiYXNlICYjNDM7IFJYUlBDX05SX1RYUVVFVUUpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgcnhycGNfcXVldWVfcnhfY2FsbF9wYWNrZXQoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpCmRpZmYgLS1naXQgYS9uZXQvcnhycGMvY29ubl9vYmplY3QuYyBiL25ldC9yeHJwYy9jb25uX29iamVjdC5jCmluZGV4IDBlY2U3MTdkYjBmODUuLmRmM2Y5MmIxYTQyZTkgMTAwNjQ0Ci0tLSBhL25ldC9yeHJwYy9jb25uX29iamVjdC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yeHJwYy9jb25uX29iamVjdC5jCkBAIC00ODUsMTEgJiM0Mzs0ODUsMTMgQEAgdm9pZCByeHJwY19kZXN0cm95X2FsbF9jb25uZWN0aW9ucyhzdHJ1Y3QgcnhycGNfbmV0ICpyeG5ldCkKIAl3cml0ZV91bmxvY2soJmFtcDtyeG5ldC0mZ3Q7Y29ubl9sb2NrKTsKIAlCVUdfT04obGVhayk7CiAKLQlBU1NFUlQobGlzdF9lbXB0eSgmYW1wO3J4bmV0LSZndDtjb25uX3Byb2NfbGlzdCkpOwotCi0JLyogV2UgbmVlZCB0byB3YWl0IGZvciB0aGUgY29ubmVjdGlvbnMgdG8gYmUgZGVzdHJveWVkIGJ5IFJDVSBhcyB0aGV5Ci0JICogcGluIHRoaW5ncyB0aGF0IHdlIHN0aWxsIG5lZWQgdG8gZ2V0IHJpZCBvZi4KJiM0MzsJLyogQ29ubmVjdGlvbiBkZXN0cnVjdGlvbiBpcyBub3JtYWxseSBkZWZlcnJlZCB0byBzeXN0ZW1fd3EgYmVjYXVzZQomIzQzOwkgKiB0aGUgZmluYWwtQUNLIHRpbWVyIGlzIHN0aWxsIHBlbmRpbmcgd2hlbiB0aGUgbGFzdCByZWYgaXMgZHJvcHBlZC4KJiM0MzsJICogV2FpdCBmb3IgdGhlIGRlZmVycmVkIGRlc3RydWN0b3JzIChhbmQgdGhlIFJDVSBmcmVlcykgdG8gY29tcGxldGUKJiM0MzsJICogYmVmb3JlIGNoZWNraW5nIGNvbm5fcHJvY19saXN0OyB0aGV5IHJlbW92ZSBjb25ucyBmcm9tIGl0LgogCSAqLwogCXdhaXRfdmFyX2V2ZW50KCZhbXA7cnhuZXQtJmd0O25yX2Nvbm5zLCAhYXRvbWljX3JlYWQoJmFtcDtyeG5ldC0mZ3Q7bnJfY29ubnMpKTsKJiM0MzsKJiM0MzsJQVNTRVJUKGxpc3RfZW1wdHkoJmFtcDtyeG5ldC0mZ3Q7Y29ubl9wcm9jX2xpc3QpKTsKIAlfbGVhdmUoJiMzNDsmIzM0Oyk7CiB9CmRpZmYgLS1naXQgYS9uZXQvcnhycGMvc2VuZG1zZy5jIGIvbmV0L3J4cnBjL3NlbmRtc2cuYwppbmRleCBlZDJjOWE1MTAwNWFkLi5iMzlhZjU1MmM2YjQ2IDEwMDY0NAotLS0gYS9uZXQvcnhycGMvc2VuZG1zZy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yeHJwYy9zZW5kbXNnLmMKQEAgLTM1OCw2ICYjNDM7MzU4LDE0IEBAIHN0YXRpYyBpbnQgcnhycGNfc2VuZF9kYXRhKHN0cnVjdCByeHJwY19zb2NrICpyeCwKIAlpZiAodHhiKQogCQlyeHJwY19zZWVfdHhidWYodHhiLCByeHJwY190eGJ1Zl9zZWVfc2VuZF9tb3JlKTsKIAomIzQzOwlyZXQgPSAtRVBST1RPOwomIzQzOwlpZiAodGVzdF9iaXQoUlhSUENfQ0FMTF9UWF9OT19NT1JFLCAmYW1wO2NhbGwtJmd0O2ZsYWdzKSkgewomIzQzOwkJdHJhY2VfcnhycGNfYWJvcnQoY2FsbC0mZ3Q7ZGVidWdfaWQsIHJ4cnBjX3NlbmRtc2dfbGF0ZV9zZW5kLAomIzQzOwkJCQkgIGNhbGwtJmd0O2NpZCwgY2FsbC0mZ3Q7Y2FsbF9pZCwgY2FsbC0mZ3Q7cnhfY29uc3VtZWQsCiYjNDM7CQkJCSAgMCwgLUVQUk9UTyk7CiYjNDM7CQlnb3RvIG1heWJlX2Vycm9yOwomIzQzOwl9CiYjNDM7CiAJcmV0ID0gLUVQSVBFOwogCWlmIChzay0mZ3Q7c2tfc2h1dGRvd24gJmFtcDsgU0VORF9TSFVURE9XTikKIAkJZ290byBtYXliZV9lcnJvcjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDg6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjczNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSWFJQQyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdG91Y2hpbmcgYSBmZXcgZmlsZXMgd2l0aGluIHRoZSBSWFJQQyBzdWJzeXN0ZW06IGBhci1pbnRlcm5hbC5oYCwgYGNvbm5fb2JqZWN0LmNgLCBhbmQgYHNlbmRtc2cuY2AuIFRoZSBjaGFuZ2VzIGxvb2sgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmcm9tIHRoZSBmaWxlIGxpc3QuIEZpcnN0LCB0aGVyZSYjMzk7cyBhIGZpeCB0byB0aGUgYHJ4cnBjX3NlcV9pbl90eHFgIGxvZ2ljIGluIHRoZSBoZWFkZXIuIFRoYXQmIzM5O3MgZ29vZCwgYWx3YXlzIGdvb2QgdG8gdGlkeSB1cCBwb3RlbnRpYWwgc2VxdWVuY2UtcmVsYXRlZCBpc3N1ZXMuIFNlY29uZCwgdGhlIHBhdGNoIG1vdmVzIGFuIGBBU1NFUlRgIHdpdGhpbiBgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnNgIGluIGBjb25uX29iamVjdC5jYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBndWFyZGluZyBhZ2FpbnN0IGEgcmFjZSBjb25kaXRpb24uIEl0JiMzOTtzIG1vdmluZyB0aGUgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0aGUgYGNvbm5fcHJvY19saXN0YCBpcyBlbXB0eSBhZnRlciB3YWl0aW5nIGZvciB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHRvIGhpdCB6ZXJvLiBUaGF0JiMzOTtzIGEgc29saWQgY2hhbmdlLCBwcm9iYWJseSByZWxhdGVkIHRvIG9iamVjdCBsaWZlY3ljbGUgbWFuYWdlbWVudC4gQW5kIGZpbmFsbHksIGEgY2hlY2sgZm9yIGBSWFJQQ19DQUxMX1RYX05PX01PUkVgIGhhcyBiZWVuIGFkZGVkIHRvIGByeHJwY19zZW5kX2RhdGFgIGluIGBzZW5kbXNnLmNgLiBUaGlzIGlzIGxpa2VseSB0byBwcmV2ZW50IGRhdGEgYmVpbmcgdHJhbnNtaXR0ZWQgd2hlbiB3ZSBhcmUgZXhwZWN0ZWQgbm90IHRvIHRyYW5zbWl0LgoKRnVuY3Rpb25hbGx5LCB0aGVzZSBhcmUgYWxsIGNoYW5nZXMgaW4gdGhlIFJYUlBDIG5ldHdvcmtpbmcgc3Vic3lzdGVtLiBUaGlzIGlzIHRoZSBraW5kIG9mIHBhdGNoIHRoYXQgKmRlbWFuZHMqIGZ1enppbmcuIFdlIG5lZWQgdG8gdGhyb3cgZXZlcnl0aGluZyB3ZSBjYW4gYXQgaXQgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBzdWJ0bGUgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciB1bmRlciBsb2FkLCBlc3BlY2lhbGx5IHdpdGggdGhvc2UgY29uY3VycmVuY3ktcmVsYXRlZCBmaXhlcy4KClRpbWUgdG8gbG9vayBpbnRvIHRoZSBjb25maWd1cmF0aW9uLiBUaGUgcHJpbWFyeSBjb25maWcgb3B0aW9uIGZvciBSWFJQQyBpcyBgQ09ORklHX0FGX1JYUlBDYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMuIEkmIzM5O2xsIGNoZWNrIGBuZXQvcnhycGMvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZGVwZW5kZW5jaWVzIG9yIHJlbGF0ZWQgZmVhdHVyZXMgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQgZHVyaW5nIHRlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDg6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFGX1JYUlBDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3J4cnBjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3J4cnBjL0tjb25maWctNS1cbm5ldC9yeHJwYy9LY29uZmlnOjY6Y29uZmlnIEFGX1JYUlBDXG5uZXQvcnhycGMvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7UnhSUEMgc2Vzc2lvbiBzb2NrZXRzXCYjMzQ7XG4tLVxubmV0L3J4cnBjL0tjb25maWc9MjU9aWYgQUZfUlhSUENcbm5ldC9yeHJwYy9LY29uZmlnLTI2LVxubmV0L3J4cnBjL0tjb25maWc6Mjc6Y29uZmlnIEFGX1JYUlBDX0lQVjZcbm5ldC9yeHJwYy9LY29uZmlnLTI4LVx0Ym9vbCBcJiMzNDtJUHY2IHN1cHBvcnQgZm9yIFJ4UlBDXCYjMzQ7XG4tLVxubmV0L3J4cnBjL0tjb25maWctMzMtXG5uZXQvcnhycGMvS2NvbmZpZzozNDpjb25maWcgQUZfUlhSUENfSU5KRUNUX0xPU1Ncbm5ldC9yeHJwYy9LY29uZmlnLTM1LVx0Ym9vbCBcJiMzNDtJbmplY3QgcGFja2V0IGxvc3MgaW50byBSeFJQQyBwYWNrZXQgc3RyZWFtXCYjMzQ7XG4tLVxubmV0L3J4cnBjL0tjb25maWctMzktXG5uZXQvcnhycGMvS2NvbmZpZzo0MDpjb25maWcgQUZfUlhSUENfSU5KRUNUX1JYX0RFTEFZXG5uZXQvcnhycGMvS2NvbmZpZy00MS1cdGJvb2wgXCYjMzQ7SW5qZWN0IGRlbGF5IGludG8gcGFja2V0IHJlY2VwdGlvblwmIzM0O1xuLS1cbm5ldC9yeHJwYy9LY29uZmlnLTQ5LVxubmV0L3J4cnBjL0tjb25maWc6NTA6Y29uZmlnIEFGX1JYUlBDX0RFQlVHXG5uZXQvcnhycGMvS2NvbmZpZy01MS1cdGJvb2wgXCYjMzQ7UnhSUEMgZHluYW1pYyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvcnhycGMvS2NvbmZpZz04OT1jb25maWcgUlhQRVJGXG4tLVxubmV0L3J4cnBjL0tjb25maWctOTUtXG5uZXQvcnhycGMvS2NvbmZpZzo5Njpjb25maWcgQUZfUlhSUENfS1VOSVRfVEVTVFxubmV0L3J4cnBjL0tjb25maWctOTctXHR0cmlzdGF0ZSBcJiMzNDtSeFJQQyBjcnlwdG8gS1VuaXQgdGVzdFwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDg6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc5NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipGb2N1c2luZyBvbiBSWFJQQyBQYXRjaCBQb2ludHMqKgoKQWxyaWdodCwgc28gd2UmIzM5O3JlIGRpdmluZyBpbnRvIHRoZSBgQUZfUlhSUENgIGNvbmZpZy4gR29vZCwgdGhhdCYjMzk7cyBvdXIgc3RhcnRpbmcgcG9pbnQuIExldCYjMzk7cyBnZXQgcmlnaHQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIgYW5kIHplcm8gaW4gb24gdGhlIGtleSBzeW1ib2xzIGludm9sdmVkIGluIHRoaXMgcGF0Y2guCgpSaWdodCwgdGhlIHBhdGNoIGluY2x1ZGVzIGByeHJwY19kZXN0cm95X2FsbF9jb25uZWN0aW9uc2AuIEhtbSwgdGhhdCYjMzk7cyBhIHRlYXJkb3duIGZ1bmN0aW9uLCBzbyB3aGlsZSByZWxldmFudCBmb3IgY2xlYW51cCwgaXQmIzM5O3MgcHJvYmFibHkgbm90IHRoZSBtb3N0ICppbnRlcmVzdGluZyogcGxhY2UgdG8gYmVnaW4gb3VyIGludmVzdGlnYXRpb24uIEl0JiMzOTtzIHBhcnQgb2YgdGhlIHBpY3R1cmUsIGJ1dCBsaWtlbHkgYSBjb25zZXF1ZW5jZSByYXRoZXIgdGhhbiBhIHJvb3QgY2F1c2UuCgpOb3csIGByeHJwY19zZW5kX2RhdGFgLi4uIHRoYXQgbG9va3MgbW9yZSBwcm9taXNpbmcuIEl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCBuZXN0bGVkIGF3YXkgaW4gYG5ldC9yeHJwYy9zZW5kbXNnLmNgLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGluIGBzZW5kbXNnLmNgIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdDsgbGlrZWx5IGRlYWxpbmcgd2l0aCBvdXRnb2luZyBkYXRhLCBzbyBsZXQmIzM5O3MgdHJhY2sgZG93biB0aGUgY2FsbGVycyBhbmQgdW5kZXJzdGFuZCB0aGUgZGF0YSBwYXRocy4gVW5kZXJzdGFuZGluZyB3aG8gKmNhbGxzKiB0aGlzIGZ1bmN0aW9uIHdpbGwgdGVsbCBtZSBhIGxvdCBhYm91dCB0aGUgY29yZSBsb2dpYyBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZS4gTGV0JiMzOTtzIHNlZSBob3cgdGhlIGZsb3cgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwODowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyeHJwY19zZW5kX2RhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcnhycGMvc2VuZG1zZy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9yeHJwYy9zZW5kbXNnLmM9MjI5PXN0YXRpYyB2b2lkIHJ4cnBjX25vdGlmeV9lbmRfdHgoc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LCBzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcbi0tXG5uZXQvcnhycGMvc2VuZG1zZy5jLTIzNy0gKiBRdWV1ZSBhIERBVEEgcGFja2V0IGZvciB0cmFuc21pc3Npb24sIHNldCB0aGUgcmVzZW5kIHRpbWVvdXQgYW5kIHNlbmRcbm5ldC9yeHJwYy9zZW5kbXNnLmM6MjM4OiAqIHRoZSBwYWNrZXQgaW1tZWRpYXRlbHkuICBSZXR1cm5zIHRoZSBlcnJvciBmcm9tIHJ4cnBjX3NlbmRfZGF0YV9wYWNrZXQoKVxubmV0L3J4cnBjL3NlbmRtc2cuYy0yMzktICogaW4gY2FzZSB0aGUgY2FsbGVyIHdhbnRzIHRvIGRvIHNvbWV0aGluZyB3aXRoIGl0LlxuLS1cbm5ldC9yeHJwYy9zZW5kbXNnLmM9MjgxPXN0YXRpYyBpbnQgcnhycGNfYWxsb2NfdHhxdWV1ZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxuLS1cbm5ldC9yeHJwYy9zZW5kbXNnLmMtMzE5LSAqL1xubmV0L3J4cnBjL3NlbmRtc2cuYzozMjA6c3RhdGljIGludCByeHJwY19zZW5kX2RhdGEoc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LFxubmV0L3J4cnBjL3NlbmRtc2cuYy0zMjEtXHRcdFx0ICAgc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsXG4tLVxubmV0L3J4cnBjL3NlbmRtc2cuYz02Njg9aW50IHJ4cnBjX2RvX3NlbmRtc2coc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG4tLVxubmV0L3J4cnBjL3NlbmRtc2cuYy03NzktXHRjYXNlIFJYUlBDX0NNRF9TRU5EX0RBVEE6XG5uZXQvcnhycGMvc2VuZG1zZy5jOjc4MDpcdFx0cmV0ID0gcnhycGNfc2VuZF9kYXRhKHJ4LCBjYWxsLCBtc2csIGxlbiwgTlVMTCwgXHUwMDI2ZHJvcHBlZF9sb2NrKTtcbm5ldC9yeHJwYy9zZW5kbXNnLmMtNzgxLVx0XHRicmVhaztcbi0tXG5uZXQvcnhycGMvc2VuZG1zZy5jPTgxNT1pbnQgcnhycGNfa2VybmVsX3NlbmRfZGF0YShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcbi0tXG5uZXQvcnhycGMvc2VuZG1zZy5jLTgyOC1cbm5ldC9yeHJwYy9zZW5kbXNnLmM6ODI5Olx0cmV0ID0gcnhycGNfc2VuZF9kYXRhKHJ4cnBjX3NrKHNvY2stXHUwMDNlc2spLCBjYWxsLCBtc2csIGxlbixcbm5ldC9yeHJwYy9zZW5kbXNnLmMtODMwLVx0XHRcdCAgICAgIG5vdGlmeV9lbmRfdHgsIFx1MDAyNmRyb3BwZWRfbG9jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDg6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY5MQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpczoKCioqQW5hbHl6aW5nIHRoZSBSeFJQQyBTZW5kIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIFJ4UlBDIHNlbmQgcGF0aC4gSSYjMzk7dmUgZ290IGByeHJwY19kb19zZW5kbXNnYCBhbmQgYHJ4cnBjX2tlcm5lbF9zZW5kX2RhdGFgIGZsYWdnZWQgYXMgdGhlIGtleSBjYWxsZXJzIGhlcmUuIEdpdmVuIHRoYXQgYHJ4cnBjX2RvX3NlbmRtc2dgIGlzIGxpa2VseSB0aGUgZW50cnkgcG9pbnQsIGl0IGxvb2tzIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGRlZXAgZGl2ZS4KCk5vdywgSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IHNlcXVlbmNpbmcgd29ya3MgZHVyaW5nIHNlbmQuIFRoZSBjb2RlIHN1Z2dlc3RzIHRoYXQgYHJ4cnBjX3NlcV9pbl90eHFgIGlzIGlubGluZSwgd2hpY2ggbWVhbnMgaXQgd2lsbCBiZSBleHBhbmRlZCB3aGVyZXZlciBpdCYjMzk7cyBjYWxsZWQuIFRoYXQgbWVhbnMgdG8gc2VlIGl0JiMzOTtzIGJlaGF2aW9yLCBJIGhhdmUgdG8gZmluZCBhbGwgdGhlIHBsYWNlcyBpdCYjMzk7cyB1c2VkLiBMZXQgbWUgZ28gZmluZCB0aG9zZSBjYWxsIHNpdGVzIGluIHRoZSBoZWFkZXJzLiBJdCB3aWxsIHF1aWNrbHkgZ2l2ZSBtZSBjb250ZXh0IHRvIHRoZSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA4OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J4cnBjX3NlcV9pbl90eHEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcnhycGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9yeHJwYy9hci1pbnRlcm5hbC5oPTE1NzY9c3RhdGljIGlubGluZSB1MzIgbGF0ZXN0KHUzMiBzZXExLCB1MzIgc2VxMilcbi0tXG5uZXQvcnhycGMvYXItaW50ZXJuYWwuaC0xNTgwLVxubmV0L3J4cnBjL2FyLWludGVybmFsLmg6MTU4MTpzdGF0aWMgaW5saW5lIGJvb2wgcnhycGNfc2VxX2luX3R4cShjb25zdCBzdHJ1Y3QgcnhycGNfdHhxdWV1ZSAqdHEsIHJ4cnBjX3NlcV90IHNlcSlcbm5ldC9yeHJwYy9hci1pbnRlcm5hbC5oLTE1ODIte1xuLS1cbm5ldC9yeHJwYy9pbnB1dC5jPTg4Mj1zdGF0aWMgdm9pZCByeHJwY19pbnB1dF9zb2Z0X2Fja190cShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcbi0tXG5uZXQvcnhycGMvaW5wdXQuYy05NTctXHRpZiAoY2FsbC1cdTAwM2V0bHBfc2VyaWFsIFx1MDAyNlx1MDAyNlxubmV0L3J4cnBjL2lucHV0LmM6OTU4Olx0ICAgIHJ4cnBjX3NlcV9pbl90eHEodHEsIGNhbGwtXHUwMDNldGxwX3NlcSkgXHUwMDI2XHUwMDI2XG5uZXQvcnhycGMvaW5wdXQuYy05NTktXHQgICAgdGVzdF9iaXQoY2FsbC1cdTAwM2V0bHBfc2VxIC0gdHEtXHUwMDNlcWJhc2UsIFx1MDAyNm5ld19hY2tzKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwODowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjY3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIFJvbGUgb2YgYHJ4cnBjX2lucHV0X3NvZnRfYWNrX3RxYCBhbmQgYHJ4cnBjX2lucHV0X3NvZnRfYWNrc2AqKgoKUmlnaHQsIHRoZXNlIGZ1bmN0aW9ucyBhcmUgY2xlYXJseSBzaWduaWZpY2FudCwgbGlrZWx5IGRlYWxpbmcgd2l0aCBzb2Z0IGFja25vd2xlZGdlbWVudHMgd2l0aGluIHRoZSBSeFJQQyBpbnB1dCBwcm9jZXNzaW5nIHBhdGguIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCB0aGV5IGhhbmRsZSBzb21lIGtpbmQgb2YgcXVldWluZyBvciBkZWZlcnJlZCBhY2tub3dsZWRnZW1lbnQgbWVjaGFuaXNtLCBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBncmFjZWZ1bCBoYW5kbGluZyBvZiBpbmNvbWluZyBwYWNrZXRzLCBwb3RlbnRpYWxseSBtYW5hZ2luZyBjb25nZXN0aW9uIG9yIHJlb3JkZXJpbmcuIFRoZSBuYW1pbmcgY29udmVudGlvbiBzdWdnZXN0cyBhIHNvZnQgYWNrbm93bGVkZ2VtZW50LCBpbmRpY2F0aW5nIHBlcmhhcHMgYSBsZXNzIGltbWVkaWF0ZSBjb25maXJtYXRpb24gY29tcGFyZWQgdG8gYSBoYXJkIEFDSywgYW5kIHRoaXMgdXN1YWxseSBpbXBsaWVzIHNvbWUgbGV2ZWwgb2YgYnVmZmVyaW5nIG9yIGRlbGF5ZWQgcHJvY2Vzc2luZy4KClRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UgY29kZS4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYG5ldC9yeHJwYy9pbnB1dC5jYC4gVGhhdCBzaG91bGQgcHJvdmlkZSB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbiBhbmQgY29udGV4dCBmb3IgdGhlc2UgZnVuY3Rpb25zLiBJ4oCZbGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocywgdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGVzZSBmdW5jdGlvbnMgYXJlIGludm9rZWQsIGFuZCBpZGVudGlmeSB3aGF0IGRhdGEgc3RydWN0dXJlcyB0aGV5IGludGVyYWN0IHdpdGguIFVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgZmxvdyB3aWxsIGJlIGtleSB0byBncmFzcGluZyB0aGVpciBvdmVyYWxsIGZ1bmN0aW9uIGFuZCB0aGUgcmVhc29ucyBmb3IgdGhlaXIgZXhpc3RlbmNlLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSAmIzM0O3doeSYjMzQ7IGFuZCAmIzM0O2hvdyYjMzQ7IG9mIHRoaXMgZGVzaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwODowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyeHJwY19zZXFfaW5fdHhxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3J4cnBjL2lucHV0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3J4cnBjL2lucHV0LmM9ODgyPXN0YXRpYyB2b2lkIHJ4cnBjX2lucHV0X3NvZnRfYWNrX3RxKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLFxuLS1cbm5ldC9yeHJwYy9pbnB1dC5jLTk1Ny1cdGlmIChjYWxsLVx1MDAzZXRscF9zZXJpYWwgXHUwMDI2XHUwMDI2XG5uZXQvcnhycGMvaW5wdXQuYzo5NTg6XHQgICAgcnhycGNfc2VxX2luX3R4cSh0cSwgY2FsbC1cdTAwM2V0bHBfc2VxKSBcdTAwMjZcdTAwMjZcbm5ldC9yeHJwYy9pbnB1dC5jLTk1OS1cdCAgICB0ZXN0X2JpdChjYWxsLVx1MDAzZXRscF9zZXEgLSB0cS1cdTAwM2VxYmFzZSwgXHUwMDI2bmV3X2Fja3MpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwODowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzQ5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgYSBDb2RlIExvY2F0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIG91dCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhdCBsaW5lIDk1NyB3aXRoaW4gdGhlIGBuZXQvcnhycGMvaW5wdXQuY2AgZmlsZS4gR2l2ZW4gbXkgZXhwZXJ0aXNlIGluIHRoaXMgYXJlYSwgbXkgZmlyc3QgdGhvdWdodCBpcyB0byB1c2UgbXkgdG9vbHMgZWZmaWNpZW50bHkuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB3aGljaCBmdW5jdGlvbiB0aGlzIGxpbmUgaXMgd2l0aGluLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBlaXRoZXIgbXkgSURFJiMzOTtzICYjMzQ7ZmluZCBzeW1ib2wmIzM0OyBvciAmIzM0O2dvIHRvIGRlZmluaXRpb24mIzM0OyBmdW5jdGlvbnMsIG9yIEkmIzM5O2xsIHF1aWNrbHkgbGV2ZXJhZ2UgYGdyZXBgIG9yIGBhY2tgIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgd2l0aCBhIHNlYXJjaCBmb2N1c2VkIG9uIHRoZSBmdW5jdGlvbiBjb250YWluaW5nIHRoZSBsaW5lIG51bWJlci4gSSB3aWxsIHN0YXJ0IGJ5IHVzaW5nIG15IGZhbWlsaWFyIElERSB0b29scywgYW5kIGlmIHRoYXQgaXMgdG9vIHNsb3csIEkgd2lsbCBtb3ZlIHRvIHRoZSBjb21tYW5kIGxpbmUsIGtub3dpbmcgdGhlIGFwcHJvcHJpYXRlIGNvbW1hbmRzIHRvIG5hcnJvdyBteSByZXN1bHRzLiBUaGVuIEkgY2FuIGRldGVybWluZSwgYmFzZWQgb24gdGhhdCBmdW5jdGlvbiYjMzk7cyBwdXJwb3NlLCB3aGF0IHRoZSBjb2RlIGF0IHRoYXQgc3BlY2lmaWMgbGluZSBpcyBsaWtlbHkgZG9pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA4OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NhbGwtXHUwMDNldGxwX3NlcmlhbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9yeHJwYy9pbnB1dC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9yeHJwYy9pbnB1dC5jPTg4Mj1zdGF0aWMgdm9pZCByeHJwY19pbnB1dF9zb2Z0X2Fja190cShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcbi0tXG5uZXQvcnhycGMvaW5wdXQuYy05NTYtXG5uZXQvcnhycGMvaW5wdXQuYzo5NTc6XHRpZiAoY2FsbC1cdTAwM2V0bHBfc2VyaWFsIFx1MDAyNlx1MDAyNlxubmV0L3J4cnBjL2lucHV0LmMtOTU4LVx0ICAgIHJ4cnBjX3NlcV9pbl90eHEodHEsIGNhbGwtXHUwMDNldGxwX3NlcSkgXHUwMDI2XHUwMDI2XG4tLVxubmV0L3J4cnBjL2lucHV0LmM9MTA4MD1zdGF0aWMgdm9pZCByeHJwY19pbnB1dF9hY2soc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3J4cnBjL2lucHV0LmMtMTIxMy1cdHJ4cnBjX3RscF9wcm9jZXNzX2FjayhjYWxsLCBcdTAwMjZzdW1tYXJ5KTtcbm5ldC9yeHJwYy9pbnB1dC5jOjEyMTQ6XHRpZiAoY2FsbC1cdTAwM2V0bHBfc2VyaWFsIFx1MDAyNlx1MDAyNiBhZnRlcl9lcShzdW1tYXJ5LmFja2VkX3NlcmlhbCwgY2FsbC1cdTAwM2V0bHBfc2VyaWFsKSlcbm5ldC9yeHJwYy9pbnB1dC5jOjEyMTU6XHRcdGNhbGwtXHUwMDNldGxwX3NlcmlhbCA9IDA7XG5uZXQvcnhycGMvaW5wdXQuYy0xMjE2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwODowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Mjg4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmcsIGFuZCBhc3N1bWluZyBJJiMzOTttIHdlbGwtdmVyc2VkIGluIHRoaXMgYXJlYToKCioqQW5hbHl6aW5nIFBvdGVudGlhbCBJbnB1dCBBY2tub3dsZWRnZW1lbnQgTWVjaGFuaXNtcyoqCgpBbHJpZ2h0LCBJJiMzOTttIHRyeWluZyB0byBuYWlsIGRvd24gdGhlIHByZWNpc2UgZnVuY3Rpb24gaW52b2x2ZWQgaW4gYWNrbm93bGVkZ2luZyBpbmNvbWluZyBSUEMgZGF0YS4gVGhlIGtleSBoZXJlIHNlZW1zIHRvIGJlIGRpZmZlcmVudGlhdGluZyBiZXR3ZWVuIHRoZSBzb2Z0IGFja25vd2xlZGdlbWVudCB2ZXJzdXMgYSByZWd1bGFyIGFja25vd2xlZGdlbWVudC4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0JiMzOTtzIGVpdGhlciBgcnhycGNfaW5wdXRfc29mdF9hY2tfdHFgIG9yIHNpbXBseSBgcnhycGNfaW5wdXRfYWNrYCwgYnV0IEkgbmVlZCB0byBiZSBzdXJlLiBHaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb25zIHVzZWQgaW4gdGhpcyBjb2RlYmFzZSwgdGhlIGRpc3RpbmN0aW9uIGlzIHNpZ25pZmljYW50LiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGUgc3BlY2lmaWNzIG9mIGByeHJwY19pbnB1dF9zb2Z0X2Fja190cWAgZmlyc3QuIEkgd2FudCB0byBzZWUgcHJlY2lzZWx5IGhvdyBpdCBoYW5kbGVzIHRoZSBhY2tub3dsZWRnbWVudCBwcm9jZXNzIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgdGFzayBxdWV1ZS4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIHdoZXJlIHRoaXMgc3BlY2lmaWMgYWNrbm93bGVkZ2VtZW50IG1lY2hhbmlzbSBmaXRzIGludG8gdGhlIG92ZXJhbGwgc2NoZW1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwODowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyeHJwY19pbnB1dF9zb2Z0X2Fja190cSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9yeHJwYy9pbnB1dC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9yeHJwYy9pbnB1dC5jPTg3MD1zdGF0aWMgdm9pZCByeHJwY19pbnB1dF9zb2Z0X3J0dChzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcbi0tXG5uZXQvcnhycGMvaW5wdXQuYy04ODEtICovXG5uZXQvcnhycGMvaW5wdXQuYzo4ODI6c3RhdGljIHZvaWQgcnhycGNfaW5wdXRfc29mdF9hY2tfdHEoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsXG5uZXQvcnhycGMvaW5wdXQuYy04ODMtXHRcdFx0XHQgICAgc3RydWN0IHJ4cnBjX2Fja19zdW1tYXJ5ICpzdW1tYXJ5LFxuLS1cbm5ldC9yeHJwYy9pbnB1dC5jPTk3Mj1zdGF0aWMgdm9pZCByeHJwY19pbnB1dF9zb2Z0X2Fja3Moc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsXG4tLVxubmV0L3J4cnBjL2lucHV0LmMtMTAxMy1cbm5ldC9yeHJwYy9pbnB1dC5jOjEwMTQ6XHRcdHJ4cnBjX2lucHV0X3NvZnRfYWNrX3RxKGNhbGwsIHN1bW1hcnksIHRxLCBleHRyYWN0ZWQsIFJYUlBDX05SX1RYUVVFVUUsXG5uZXQvcnhycGMvaW5wdXQuYy0xMDE1LVx0XHRcdFx0XHRzZXEgLSBSWFJQQ19OUl9UWFFVRVVFLCBcdTAwMjZsb3dlc3RfbmFrKTtcbi0tXG5uZXQvcnhycGMvaW5wdXQuYy0xMDI2LVx0XHRfZGVidWcoXCYjMzQ7dGFpbCAgJTE2bHggJXVcJiMzNDssIGV4dHJhY3RlZCwgbnJfcmVwb3J0ZWQpO1xubmV0L3J4cnBjL2lucHV0LmM6MTAyNzpcdFx0cnhycGNfaW5wdXRfc29mdF9hY2tfdHEoY2FsbCwgc3VtbWFyeSwgdHEsIGV4dHJhY3RlZCwgbnJfcmVwb3J0ZWQsXG5uZXQvcnhycGMvaW5wdXQuYy0xMDI4LVx0XHRcdFx0XHRzZXEgXHUwMDI2IH5SWFJQQ19UWFFfTUFTSywgXHUwMDI2bG93ZXN0X25hayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA4OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGF0IGNvZGUgc2VxdWVuY2U6CgoqKkRlY29kaW5nIHRoZSBSeFJQQyBBY2tub3dsZWRnbWVudCBQYXRod2F5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgYWNrbm93bGVkZ21lbnRzIGFyZSBoYW5kbGVkIGluIHRoaXMgUnhSUEMgc3lzdGVtLiBUaGUgdHJhaWwgc3RhcnRzIHdpdGggYHJ4cnBjX2lucHV0X3NvZnRfYWNrc2AsIHdoaWNoIHNlZW1zIHRvIGJlIHRoZSBmdW5jdGlvbiB0aGF0IGFjdHVhbGx5ICpkb2VzKiB0aGUgc29mdCBhY2tub3dsZWRnbWVudCBwcm9jZXNzaW5nLiBOb3csIHdoZXJlIGlzICp0aGlzKiBjYWxsZWQgZnJvbT8gQWhhLCBpdCYjMzk7cyBjYWxsZWQgYnkgYHJ4cnBjX2lucHV0X2Fja2AuIFRoYXQgbWFrZXMgc2Vuc2U7IGByeHJwY19pbnB1dF9hY2tgIHByb2JhYmx5IGhhbmRsZXMgdGhlIGluaXRpYWwgcGFyc2luZyBhbmQgZGlzcGF0Y2ggb2YgYWNrbm93bGVkZ21lbnQtcmVsYXRlZCBwYWNrZXRzLiBHb29kLCBnb29kLiBCdXQgd2UgbmVlZCB0byB0cmFjZSB0aGlzIGZ1cnRoZXIuIFdoZXJlIGRvZXMgKnRoYXQqIGdldCBjYWxsZWQ/IFJpZ2h0LCBgcnhycGNfaW5wdXRfYWNrYCBpcyBjYWxsZWQgYnkgYHJ4cnBjX2lucHV0X2NhbGxfcGFja2V0YCBvciBzaW1pbGFyIGZ1bmN0aW9ucywgdGhlIHByaW1hcnkgaGFuZGxlcnMgZm9yIGluY29taW5nIFJ4UlBDIGNhbGwgcGFja2V0cy4gVGhpcyBnaXZlcyBhIG5pY2UgY2hhaW4uIE5vdywgSSBzaG91bGQgZGl2ZSBpbnRvIHRoZSBkZXRhaWxzIG9mIGByeHJwY19pbnB1dF9hY2tgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIG9mIHRoaXMgYWNrIHByb2Nlc3Mgd2lsbCBsaXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwODowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyeHJwY19pbnB1dF9hY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcnhycGMvaW5wdXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcnhycGMvaW5wdXQuYz03NDk9c3RhdGljIHZvaWQgcnhycGNfY29tcGxldGVfcnR0X3Byb2JlKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLFxuLS1cbm5ldC9yeHJwYy9pbnB1dC5jLTc5OC0gKi9cbm5ldC9yeHJwYy9pbnB1dC5jOjc5OTpzdGF0aWMgdm9pZCByeHJwY19pbnB1dF9hY2tfdHJhaWxlcihzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9yeHJwYy9pbnB1dC5jLTgwMC1cdFx0XHRcdCAgICBzdHJ1Y3QgcnhycGNfYWNrdHJhaWxlciAqdHJhaWxlcilcbi0tXG5uZXQvcnhycGMvaW5wdXQuYz0xMDUwPXN0YXRpYyBib29sIHJ4cnBjX2lzX2Fja192YWxpZChzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcbi0tXG5uZXQvcnhycGMvaW5wdXQuYy0xMDc5LSAqL1xubmV0L3J4cnBjL2lucHV0LmM6MTA4MDpzdGF0aWMgdm9pZCByeHJwY19pbnB1dF9hY2soc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvcnhycGMvaW5wdXQuYy0xMDgxLXtcbi0tXG5uZXQvcnhycGMvaW5wdXQuYy0xMTY0LVx0aWYgKHRyYWlsZXIubWF4TVRVKVxubmV0L3J4cnBjL2lucHV0LmM6MTE2NTpcdFx0cnhycGNfaW5wdXRfYWNrX3RyYWlsZXIoY2FsbCwgc2tiLCBcdTAwMjZ0cmFpbGVyKTtcbm5ldC9yeHJwYy9pbnB1dC5jLTExNjYtXG4tLVxubmV0L3J4cnBjL2lucHV0LmMtMTIyOC0gKi9cbm5ldC9yeHJwYy9pbnB1dC5jOjEyMjk6c3RhdGljIHZvaWQgcnhycGNfaW5wdXRfYWNrYWxsKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L3J4cnBjL2lucHV0LmMtMTIzMC17XG4tLVxubmV0L3J4cnBjL2lucHV0LmM9MTI2Mz12b2lkIHJ4cnBjX2lucHV0X2NhbGxfcGFja2V0KHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9yeHJwYy9pbnB1dC5jLTEyODktXHRjYXNlIFJYUlBDX1BBQ0tFVF9UWVBFX0FDSzpcbm5ldC9yeHJwYy9pbnB1dC5jOjEyOTA6XHRcdHJldHVybiByeHJwY19pbnB1dF9hY2soY2FsbCwgc2tiKTtcbm5ldC9yeHJwYy9pbnB1dC5jLTEyOTEtXG4tLVxubmV0L3J4cnBjL2lucHV0LmMtMTMwMi1cdGNhc2UgUlhSUENfUEFDS0VUX1RZUEVfQUNLQUxMOlxubmV0L3J4cnBjL2lucHV0LmM6MTMwMzpcdFx0cmV0dXJuIHJ4cnBjX2lucHV0X2Fja2FsbChjYWxsLCBza2IpO1xubmV0L3J4cnBjL2lucHV0LmMtMTMwNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDg6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzgxOAoJCQkJCQkJb3V0cHV0OiAxNzUKCQkJCQkJCXRob3VnaHRzOiA4NDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggQW5hbHlzaXMgYW5kIEZ1enppbmcgU3RyYXRlZ3kgZm9yIFJ4UlBDKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaHVuY2ggYWJvdXQgZm9jdXNpbmcgb24gYHJ4cnBjX2lucHV0X2NhbGxfcGFja2V0YCBzZWVtcyBzcG90IG9uLCBhbG9uZyB3aXRoIGByeHJwY19kb19zZW5kbXNnYCBhbmQgYHJ4cnBjX2tlcm5lbF9zZW5kX2RhdGFgLiBUaGVzZSBsb29rIGxpa2UgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIHRoaXMgcGF0Y2guCgpSZXZpZXdpbmcgdGhlIGNoYW5nZXMsIEkgc2VlIHRocmVlIGNyaXRpY2FsIGFyZWFzOgoKMS4gICoqYHJ4cnBjX3NlcV9pbl90eHFgKio6IFRoZSBsb2dpYyBoZXJlIGlzIHR3ZWFrZWQuIEl0JiMzOTtzIHVzZWQgaW4gYHJ4cnBjX2lucHV0X3NvZnRfYWNrX3RxYCwgc28gYW55IG1pc2JlaGF2aW9yIGhlcmUgY291bGQgaGF2ZSBjYXNjYWRpbmcgZWZmZWN0cyBvbiBBQ0sgcHJvY2Vzc2luZy4KMi4gICoqYHJ4cnBjX2Rlc3Ryb3lfYWxsX2Nvbm5lY3Rpb25zYCoqOiBUaGlzIGlzIGEgdGVhcmRvd24gZnVuY3Rpb24sIGNydWNpYWwgZm9yIHJlc291cmNlIGNsZWFudXAuIFRoZSBjaGFuZ2UgaW52b2x2ZXMgYSBjcnVjaWFsIHdhaXQgdG8gZW5zdXJlIGFsbCBkZWZlcnJlZCBkZXN0cnVjdG9ycyBjb21wbGV0ZSBiZWZvcmUgdmFsaWRhdGluZyB0aGUgY29ubmVjdGlvbiBsaXN0LiBUaGlzIGFkZHJlc3NlcyBhIHBvdGVudGlhbCByYWNlLgozLiAgKipgcnhycGNfc2VuZF9kYXRhYCoqOiBUaGUgZml4IHNwZWNpZmljYWxseSBhZGRyZXNzZXMgYW4gaXNzdWUgd2l0aCBgUlhSUENfQ0FMTF9UWF9OT19NT1JFYCBwcmV2ZW50aW5nIGxhdGUgc2VuZHMsIHdoaWNoIHJlbGF0ZXMgdG8gYm90aCBgcnhycGNfZG9fc2VuZG1zZ2AgYW5kIGByeHJwY19rZXJuZWxfc2VuZF9kYXRhYC4gVGhpcyBpcyBhIGNsZWFyIGJ1ZyBmaXguCgpUaGVyZWZvcmUsIHRoZSBtYWluIGFyZWFzIG9mIGZvY3VzIGZvciBmdXp6aW5nIHdpbGwgYmU6CgoqICAgYHJ4cnBjX2RvX3NlbmRtc2dgCiogICBgcnhycGNfa2VybmVsX3NlbmRfZGF0YWAKKiAgIGByeHJwY19pbnB1dF9jYWxsX3BhY2tldGAKCkNvbmZpZy13aXNlLCB0aGUgcGF0Y2ggdGFyZ2V0cyBgQUZfUlhSUENgLiBTaW5jZSBpdCYjMzk7cyBhIHRyaXN0YXRlLCBhbmQgY2FuIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLCBpdCYjMzk7cyB0aGUgb25seSBvbmUgSSBzaG91bGQgY2FyZSBhYm91dC4KCk5vdywgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIGNvZGUgY2hhbmdlcy4gSSYjMzk7dmUgcmUtZXhhbWluZWQgdGhlIGNvZGUgaW4gYG5ldC9yeHJwYy9hci1pbnRlcm5hbC5oYCBhbmQgYG5ldC9yeHJwYy9zZW5kbXNnLmNgIGFuZCBgbmV0L3J4cnBjL2Nvbm5fb2JqZWN0LmNgLiBUaGUgYHJ4cnBjX3NlcV9pbl90eHFgIGNoZWNrIGluIGBhci1pbnRlcm5hbC5oYCBpcyBpbmRlZWQgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYXMgaXMgdGhlIGByeHJwY19zZW5kX2RhdGFgIGZpeCBmb3IgYEVQUk9UT2AgYW5kIHRoZSBtb2RpZmljYXRpb24gaW4gYHJ4cnBjX2Rlc3Ryb3lfYWxsX2Nvbm5lY3Rpb25zYC4KClRoZSBgQVNTRVJUYCBjYWxsIGFmdGVyIHRoZSB3YWl0IGluIGByeHJwY19kZXN0cm95X2FsbF9jb25uZWN0aW9uc2AgaW5kaWNhdGVzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIHdoaWNoIGlzIGEgY29tbW9uIHNvdXJjZSBvZiBidWdzIHRoYXQgSSYjMzk7bGwgbG9vayBmb3IuCgpJbiBteSBleHBlcnQgb3BpbmlvbiwgdGhpcyBwYXRjaCBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVGhlIGNoYW5nZXMgYXJlIGFsbCBmdW5jdGlvbmFsIGFuZCB0b3VjaCBjb3JlIFJ4UlBDIG5ldHdvcmsgYmVoYXZpb3IuIFRoZSBmb2N1cyBhcmVhcywgYXMgSSYjMzk7dmUgbWVudGlvbmVkIGFyZToKCiogICBgcnhycGNfZG9fc2VuZG1zZ2AKKiAgIGByeHJwY19rZXJuZWxfc2VuZF9kYXRhYAoqICAgYHJ4cnBjX2lucHV0X2NhbGxfcGFja2V0YAoKVGhlIGNvbmZpZ3VyYXRpb24gSSYjMzk7bSBjb25jZXJuZWQgd2l0aCBpczoKCiogICBgQUZfUlhSUENgCgpHaXZlbiB0aGlzIGFuYWx5c2lzLCBJJiMzOTttIGNvbmZpZGVudCBpbiBzZXR0aW5nIHVwIHRoZSBmdXp6aW5nIGVudmlyb25tZW50IHdpdGggdGhlc2UgcGFyYW1ldGVycy4gTGV0JiMzOTtzIGdldCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDg6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FGX1JYUlBDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnhycGNfZG9fc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtyeHJwY19rZXJuZWxfc2VuZF9kYXRhJiMzNDssCiAgICAmIzM0O3J4cnBjX2lucHV0X2NhbGxfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGxvZ2ljIGluIGByeHJwY19zZXFfaW5fdHhxYCBmb3IgY2hlY2tpbmcgaWYgYSBzZXF1ZW5jZSBudW1iZXIgaXMgaW4gYSB0cmFuc21pc3Npb24gcXVldWUsIGFkZHMgYSBjaGVjayBmb3IgYFJYUlBDX0NBTExfVFhfTk9fTU9SRWAgaW4gYHJ4cnBjX3NlbmRfZGF0YWAgdG8gcHJldmVudCBsYXRlIHNlbmRzLCBhbmQgZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnNgIGJ5IG1vdmluZyB0aGUgYEFTU0VSVGAgYWZ0ZXIgd2FpdGluZyBmb3IgY29ubmVjdGlvbnMgdG8gYmUgZGVzdHJveWVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSByeHJwYyBuZXR3b3JraW5nIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FGX1JYUlBDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnhycGNfZG9fc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtyeHJwY19rZXJuZWxfc2VuZF9kYXRhJiMzNDssCiAgICAmIzM0O3J4cnBjX2lucHV0X2NhbGxfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGxvZ2ljIGluIGByeHJwY19zZXFfaW5fdHhxYCBmb3IgY2hlY2tpbmcgaWYgYSBzZXF1ZW5jZSBudW1iZXIgaXMgaW4gYSB0cmFuc21pc3Npb24gcXVldWUsIGFkZHMgYSBjaGVjayBmb3IgYFJYUlBDX0NBTExfVFhfTk9fTU9SRWAgaW4gYHJ4cnBjX3NlbmRfZGF0YWAgdG8gcHJldmVudCBsYXRlIHNlbmRzLCBhbmQgZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnNgIGJ5IG1vdmluZyB0aGUgYEFTU0VSVGAgYWZ0ZXIgd2FpdGluZyBmb3IgY29ubmVjdGlvbnMgdG8gYmUgZGVzdHJveWVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSByeHJwYyBuZXR3b3JraW5nIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwODowMDoxNS4zMjMxMDEzODRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjU5OTIxNjczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBRl9SWFJQQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ4cnBjX2RvX3NlbmRtc2dcIixcbiAgICBcInJ4cnBjX2tlcm5lbF9zZW5kX2RhdGFcIixcbiAgICBcInJ4cnBjX2lucHV0X2NhbGxfcGFja2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgbG9naWMgaW4gYHJ4cnBjX3NlcV9pbl90eHFgIGZvciBjaGVja2luZyBpZiBhIHNlcXVlbmNlIG51bWJlciBpcyBpbiBhIHRyYW5zbWlzc2lvbiBxdWV1ZSwgYWRkcyBhIGNoZWNrIGZvciBgUlhSUENfQ0FMTF9UWF9OT19NT1JFYCBpbiBgcnhycGNfc2VuZF9kYXRhYCB0byBwcmV2ZW50IGxhdGUgc2VuZHMsIGFuZCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIGByeHJwY19kZXN0cm95X2FsbF9jb25uZWN0aW9uc2AgYnkgbW92aW5nIHRoZSBgQVNTRVJUYCBhZnRlciB3YWl0aW5nIGZvciBjb25uZWN0aW9ucyB0byBiZSBkZXN0cm95ZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIHJ4cnBjIG5ldHdvcmtpbmcgc3Vic3lzdGVtIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6MDA6MTUuMzIzMTA5MjM0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDEyNzcxMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiOTYwYzI2ZjYwMzNjMGNhYjRjYzc2NjE0Mjc4ZmNmNDAyZGQzY2MzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMgMDg6MDA6MTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL2FyLWludGVybmFsLmggYi9uZXQvcnhycGMvYXItaW50ZXJuYWwuaFxcbmluZGV4IDg2NWYwNWZlMzdhYjkuLjI3OTkyZTEwZDgyYWQgMTAwNjQ0XFxuLS0tIGEvbmV0L3J4cnBjL2FyLWludGVybmFsLmhcXG4rKysgYi9uZXQvcnhycGMvYXItaW50ZXJuYWwuaFxcbkBAIC0xNTgwLDcgKzE1ODAsOCBAQCBzdGF0aWMgaW5saW5lIHUzMiBsYXRlc3QodTMyIHNlcTEsIHUzMiBzZXEyKVxcbiBcXG4gc3RhdGljIGlubGluZSBib29sIHJ4cnBjX3NlcV9pbl90eHEoY29uc3Qgc3RydWN0IHJ4cnBjX3R4cXVldWUgKnRxLCByeHJwY19zZXFfdCBzZXEpXFxuIHtcXG4tXFx0cmV0dXJuIChzZXEgXFx1MDAyNiAoUlhSUENfTlJfVFhRVUVVRSAtIDEpKSA9PSB0cS1cXHUwMDNlcWJhc2U7XFxuK1xcdHJldHVybiBhZnRlcl9lcShzZXEsIHRxLVxcdTAwM2VxYmFzZSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICAgIGJlZm9yZShzZXEsIHRxLVxcdTAwM2VxYmFzZSArIFJYUlBDX05SX1RYUVVFVUUpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHZvaWQgcnhycGNfcXVldWVfcnhfY2FsbF9wYWNrZXQoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpXFxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9jb25uX29iamVjdC5jIGIvbmV0L3J4cnBjL2Nvbm5fb2JqZWN0LmNcXG5pbmRleCAwZWNlNzE3ZGIwZjg1Li5kZjNmOTJiMWE0MmU5IDEwMDY0NFxcbi0tLSBhL25ldC9yeHJwYy9jb25uX29iamVjdC5jXFxuKysrIGIvbmV0L3J4cnBjL2Nvbm5fb2JqZWN0LmNcXG5AQCAtNDg1LDExICs0ODUsMTMgQEAgdm9pZCByeHJwY19kZXN0cm95X2FsbF9jb25uZWN0aW9ucyhzdHJ1Y3QgcnhycGNfbmV0ICpyeG5ldClcXG4gXFx0d3JpdGVfdW5sb2NrKFxcdTAwMjZyeG5ldC1cXHUwMDNlY29ubl9sb2NrKTtcXG4gXFx0QlVHX09OKGxlYWspO1xcbiBcXG4tXFx0QVNTRVJUKGxpc3RfZW1wdHkoXFx1MDAyNnJ4bmV0LVxcdTAwM2Vjb25uX3Byb2NfbGlzdCkpO1xcbi1cXG4tXFx0LyogV2UgbmVlZCB0byB3YWl0IGZvciB0aGUgY29ubmVjdGlvbnMgdG8gYmUgZGVzdHJveWVkIGJ5IFJDVSBhcyB0aGV5XFxuLVxcdCAqIHBpbiB0aGluZ3MgdGhhdCB3ZSBzdGlsbCBuZWVkIHRvIGdldCByaWQgb2YuXFxuK1xcdC8qIENvbm5lY3Rpb24gZGVzdHJ1Y3Rpb24gaXMgbm9ybWFsbHkgZGVmZXJyZWQgdG8gc3lzdGVtX3dxIGJlY2F1c2VcXG4rXFx0ICogdGhlIGZpbmFsLUFDSyB0aW1lciBpcyBzdGlsbCBwZW5kaW5nIHdoZW4gdGhlIGxhc3QgcmVmIGlzIGRyb3BwZWQuXFxuK1xcdCAqIFdhaXQgZm9yIHRoZSBkZWZlcnJlZCBkZXN0cnVjdG9ycyAoYW5kIHRoZSBSQ1UgZnJlZXMpIHRvIGNvbXBsZXRlXFxuK1xcdCAqIGJlZm9yZSBjaGVja2luZyBjb25uX3Byb2NfbGlzdDsgdGhleSByZW1vdmUgY29ubnMgZnJvbSBpdC5cXG4gXFx0ICovXFxuIFxcdHdhaXRfdmFyX2V2ZW50KFxcdTAwMjZyeG5ldC1cXHUwMDNlbnJfY29ubnMsICFhdG9taWNfcmVhZChcXHUwMDI2cnhuZXQtXFx1MDAzZW5yX2Nvbm5zKSk7XFxuK1xcbitcXHRBU1NFUlQobGlzdF9lbXB0eShcXHUwMDI2cnhuZXQtXFx1MDAzZWNvbm5fcHJvY19saXN0KSk7XFxuIFxcdF9sZWF2ZShcXFwiXFxcIik7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3NlbmRtc2cuYyBiL25ldC9yeHJwYy9zZW5kbXNnLmNcXG5pbmRleCBlZDJjOWE1MTAwNWFkLi5iMzlhZjU1MmM2YjQ2IDEwMDY0NFxcbi0tLSBhL25ldC9yeHJwYy9zZW5kbXNnLmNcXG4rKysgYi9uZXQvcnhycGMvc2VuZG1zZy5jXFxuQEAgLTM1OCw2ICszNTgsMTQgQEAgc3RhdGljIGludCByeHJwY19zZW5kX2RhdGEoc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LFxcbiBcXHRpZiAodHhiKVxcbiBcXHRcXHRyeHJwY19zZWVfdHhidWYodHhiLCByeHJwY190eGJ1Zl9zZWVfc2VuZF9tb3JlKTtcXG4gXFxuK1xcdHJldCA9IC1FUFJPVE87XFxuK1xcdGlmICh0ZXN0X2JpdChSWFJQQ19DQUxMX1RYX05PX01PUkUsIFxcdTAwMjZjYWxsLVxcdTAwM2VmbGFncykpIHtcXG4rXFx0XFx0dHJhY2VfcnhycGNfYWJvcnQoY2FsbC1cXHUwMDNlZGVidWdfaWQsIHJ4cnBjX3NlbmRtc2dfbGF0ZV9zZW5kLFxcbitcXHRcXHRcXHRcXHQgIGNhbGwtXFx1MDAzZWNpZCwgY2FsbC1cXHUwMDNlY2FsbF9pZCwgY2FsbC1cXHUwMDNlcnhfY29uc3VtZWQsXFxuK1xcdFxcdFxcdFxcdCAgMCwgLUVQUk9UTyk7XFxuK1xcdFxcdGdvdG8gbWF5YmVfZXJyb3I7XFxuK1xcdH1cXG4rXFxuIFxcdHJldCA9IC1FUElQRTtcXG4gXFx0aWYgKHNrLVxcdTAwM2Vza19zaHV0ZG93biBcXHUwMDI2IFNFTkRfU0hVVERPV04pXFxuIFxcdFxcdGdvdG8gbWF5YmVfZXJyb3I7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA4OjAwOjE1Ljc2NTI5NTY2NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQyMTU3MDEyNzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFGX1JYUlBDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnhycGNfZG9fc2VuZG1zZ1wiLFxuICAgIFwicnhycGNfa2VybmVsX3NlbmRfZGF0YVwiLFxuICAgIFwicnhycGNfaW5wdXRfY2FsbF9wYWNrZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBsb2dpYyBpbiBgcnhycGNfc2VxX2luX3R4cWAgZm9yIGNoZWNraW5nIGlmIGEgc2VxdWVuY2UgbnVtYmVyIGlzIGluIGEgdHJhbnNtaXNzaW9uIHF1ZXVlLCBhZGRzIGEgY2hlY2sgZm9yIGBSWFJQQ19DQUxMX1RYX05PX01PUkVgIGluIGByeHJwY19zZW5kX2RhdGFgIHRvIHByZXZlbnQgbGF0ZSBzZW5kcywgYW5kIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gYHJ4cnBjX2Rlc3Ryb3lfYWxsX2Nvbm5lY3Rpb25zYCBieSBtb3ZpbmcgdGhlIGBBU1NFUlRgIGFmdGVyIHdhaXRpbmcgZm9yIGNvbm5lY3Rpb25zIHRvIGJlIGRlc3Ryb3llZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgcnhycGMgbmV0d29ya2luZyBzdWJzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiOTYwYzI2ZjYwMzNjMGNhYjRjYzc2NjE0Mjc4ZmNmNDAyZGQzY2MzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwODowMDoxNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9hci1pbnRlcm5hbC5oIGIvbmV0L3J4cnBjL2FyLWludGVybmFsLmhcbmluZGV4IDg2NWYwNWZlMzdhYjkuLjI3OTkyZTEwZDgyYWQgMTAwNjQ0XG4tLS0gYS9uZXQvcnhycGMvYXItaW50ZXJuYWwuaFxuKysrIGIvbmV0L3J4cnBjL2FyLWludGVybmFsLmhcbkBAIC0xNTgwLDcgKzE1ODAsOCBAQCBzdGF0aWMgaW5saW5lIHUzMiBsYXRlc3QodTMyIHNlcTEsIHUzMiBzZXEyKVxuIFxuIHN0YXRpYyBpbmxpbmUgYm9vbCByeHJwY19zZXFfaW5fdHhxKGNvbnN0IHN0cnVjdCByeHJwY190eHF1ZXVlICp0cSwgcnhycGNfc2VxX3Qgc2VxKVxuIHtcbi1cdHJldHVybiAoc2VxIFx1MDAyNiAoUlhSUENfTlJfVFhRVUVVRSAtIDEpKSA9PSB0cS1cdTAwM2VxYmFzZTtcbitcdHJldHVybiBhZnRlcl9lcShzZXEsIHRxLVx1MDAzZXFiYXNlKSBcdTAwMjZcdTAwMjZcbitcdCAgICAgICBiZWZvcmUoc2VxLCB0cS1cdTAwM2VxYmFzZSArIFJYUlBDX05SX1RYUVVFVUUpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgcnhycGNfcXVldWVfcnhfY2FsbF9wYWNrZXQoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpXG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL2Nvbm5fb2JqZWN0LmMgYi9uZXQvcnhycGMvY29ubl9vYmplY3QuY1xuaW5kZXggMGVjZTcxN2RiMGY4NS4uZGYzZjkyYjFhNDJlOSAxMDA2NDRcbi0tLSBhL25ldC9yeHJwYy9jb25uX29iamVjdC5jXG4rKysgYi9uZXQvcnhycGMvY29ubl9vYmplY3QuY1xuQEAgLTQ4NSwxMSArNDg1LDEzIEBAIHZvaWQgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnMoc3RydWN0IHJ4cnBjX25ldCAqcnhuZXQpXG4gXHR3cml0ZV91bmxvY2soXHUwMDI2cnhuZXQtXHUwMDNlY29ubl9sb2NrKTtcbiBcdEJVR19PTihsZWFrKTtcbiBcbi1cdEFTU0VSVChsaXN0X2VtcHR5KFx1MDAyNnJ4bmV0LVx1MDAzZWNvbm5fcHJvY19saXN0KSk7XG4tXG4tXHQvKiBXZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBjb25uZWN0aW9ucyB0byBiZSBkZXN0cm95ZWQgYnkgUkNVIGFzIHRoZXlcbi1cdCAqIHBpbiB0aGluZ3MgdGhhdCB3ZSBzdGlsbCBuZWVkIHRvIGdldCByaWQgb2YuXG4rXHQvKiBDb25uZWN0aW9uIGRlc3RydWN0aW9uIGlzIG5vcm1hbGx5IGRlZmVycmVkIHRvIHN5c3RlbV93cSBiZWNhdXNlXG4rXHQgKiB0aGUgZmluYWwtQUNLIHRpbWVyIGlzIHN0aWxsIHBlbmRpbmcgd2hlbiB0aGUgbGFzdCByZWYgaXMgZHJvcHBlZC5cbitcdCAqIFdhaXQgZm9yIHRoZSBkZWZlcnJlZCBkZXN0cnVjdG9ycyAoYW5kIHRoZSBSQ1UgZnJlZXMpIHRvIGNvbXBsZXRlXG4rXHQgKiBiZWZvcmUgY2hlY2tpbmcgY29ubl9wcm9jX2xpc3Q7IHRoZXkgcmVtb3ZlIGNvbm5zIGZyb20gaXQuXG4gXHQgKi9cbiBcdHdhaXRfdmFyX2V2ZW50KFx1MDAyNnJ4bmV0LVx1MDAzZW5yX2Nvbm5zLCAhYXRvbWljX3JlYWQoXHUwMDI2cnhuZXQtXHUwMDNlbnJfY29ubnMpKTtcbitcbitcdEFTU0VSVChsaXN0X2VtcHR5KFx1MDAyNnJ4bmV0LVx1MDAzZWNvbm5fcHJvY19saXN0KSk7XG4gXHRfbGVhdmUoXCJcIik7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9zZW5kbXNnLmMgYi9uZXQvcnhycGMvc2VuZG1zZy5jXG5pbmRleCBlZDJjOWE1MTAwNWFkLi5iMzlhZjU1MmM2YjQ2IDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL3NlbmRtc2cuY1xuKysrIGIvbmV0L3J4cnBjL3NlbmRtc2cuY1xuQEAgLTM1OCw2ICszNTgsMTQgQEAgc3RhdGljIGludCByeHJwY19zZW5kX2RhdGEoc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LFxuIFx0aWYgKHR4YilcbiBcdFx0cnhycGNfc2VlX3R4YnVmKHR4YiwgcnhycGNfdHhidWZfc2VlX3NlbmRfbW9yZSk7XG4gXG4rXHRyZXQgPSAtRVBST1RPO1xuK1x0aWYgKHRlc3RfYml0KFJYUlBDX0NBTExfVFhfTk9fTU9SRSwgXHUwMDI2Y2FsbC1cdTAwM2VmbGFncykpIHtcbitcdFx0dHJhY2VfcnhycGNfYWJvcnQoY2FsbC1cdTAwM2VkZWJ1Z19pZCwgcnhycGNfc2VuZG1zZ19sYXRlX3NlbmQsXG4rXHRcdFx0XHQgIGNhbGwtXHUwMDNlY2lkLCBjYWxsLVx1MDAzZWNhbGxfaWQsIGNhbGwtXHUwMDNlcnhfY29uc3VtZWQsXG4rXHRcdFx0XHQgIDAsIC1FUFJPVE8pO1xuK1x0XHRnb3RvIG1heWJlX2Vycm9yO1xuK1x0fVxuK1xuIFx0cmV0ID0gLUVQSVBFO1xuIFx0aWYgKHNrLVx1MDAzZXNrX3NodXRkb3duIFx1MDAyNiBTRU5EX1NIVVRET1dOKVxuIFx0XHRnb3RvIG1heWJlX2Vycm9yO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6MDA6MTUuNzY1Mjk5NjE2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM1ODk3Nzg0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSWFJQQyBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgdG91Y2hpbmcgYSBmZXcgZmlsZXMgd2l0aGluIHRoZSBSWFJQQyBzdWJzeXN0ZW06IGBhci1pbnRlcm5hbC5oYCwgYGNvbm5fb2JqZWN0LmNgLCBhbmQgYHNlbmRtc2cuY2AuIFRoZSBjaGFuZ2VzIGxvb2sgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmcm9tIHRoZSBmaWxlIGxpc3QuIEZpcnN0LCB0aGVyZSdzIGEgZml4IHRvIHRoZSBgcnhycGNfc2VxX2luX3R4cWAgbG9naWMgaW4gdGhlIGhlYWRlci4gVGhhdCdzIGdvb2QsIGFsd2F5cyBnb29kIHRvIHRpZHkgdXAgcG90ZW50aWFsIHNlcXVlbmNlLXJlbGF0ZWQgaXNzdWVzLiBTZWNvbmQsIHRoZSBwYXRjaCBtb3ZlcyBhbiBgQVNTRVJUYCB3aXRoaW4gYHJ4cnBjX2Rlc3Ryb3lfYWxsX2Nvbm5lY3Rpb25zYCBpbiBgY29ubl9vYmplY3QuY2AuIEl0IGxvb2tzIGxpa2UgaXQncyBndWFyZGluZyBhZ2FpbnN0IGEgcmFjZSBjb25kaXRpb24uIEl0J3MgbW92aW5nIHRoZSBhc3NlcnRpb24gdG8gZW5zdXJlIHRoZSBgY29ubl9wcm9jX2xpc3RgIGlzIGVtcHR5IGFmdGVyIHdhaXRpbmcgZm9yIHRoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMgdG8gaGl0IHplcm8uIFRoYXQncyBhIHNvbGlkIGNoYW5nZSwgcHJvYmFibHkgcmVsYXRlZCB0byBvYmplY3QgbGlmZWN5Y2xlIG1hbmFnZW1lbnQuIEFuZCBmaW5hbGx5LCBhIGNoZWNrIGZvciBgUlhSUENfQ0FMTF9UWF9OT19NT1JFYCBoYXMgYmVlbiBhZGRlZCB0byBgcnhycGNfc2VuZF9kYXRhYCBpbiBgc2VuZG1zZy5jYC4gVGhpcyBpcyBsaWtlbHkgdG8gcHJldmVudCBkYXRhIGJlaW5nIHRyYW5zbWl0dGVkIHdoZW4gd2UgYXJlIGV4cGVjdGVkIG5vdCB0byB0cmFuc21pdC5cblxuRnVuY3Rpb25hbGx5LCB0aGVzZSBhcmUgYWxsIGNoYW5nZXMgaW4gdGhlIFJYUlBDIG5ldHdvcmtpbmcgc3Vic3lzdGVtLiBUaGlzIGlzIHRoZSBraW5kIG9mIHBhdGNoIHRoYXQgKmRlbWFuZHMqIGZ1enppbmcuIFdlIG5lZWQgdG8gdGhyb3cgZXZlcnl0aGluZyB3ZSBjYW4gYXQgaXQgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBzdWJ0bGUgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciB1bmRlciBsb2FkLCBlc3BlY2lhbGx5IHdpdGggdGhvc2UgY29uY3VycmVuY3ktcmVsYXRlZCBmaXhlcy5cblxuVGltZSB0byBsb29rIGludG8gdGhlIGNvbmZpZ3VyYXRpb24uIFRoZSBwcmltYXJ5IGNvbmZpZyBvcHRpb24gZm9yIFJYUlBDIGlzIGBDT05GSUdfQUZfUlhSUENgLiBMZXQncyBjb25maXJtIHRoYXQgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zLiBJJ2xsIGNoZWNrIGBuZXQvcnhycGMvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZGVwZW5kZW5jaWVzIG9yIHJlbGF0ZWQgZmVhdHVyZXMgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQgZHVyaW5nIHRlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MzcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwODowMDoyMS4xMjQyODEzNzJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkxOTE5MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFGX1JYUlBDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9yeHJwYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yeHJwYy9LY29uZmlnLTUtXFxubmV0L3J4cnBjL0tjb25maWc6Njpjb25maWcgQUZfUlhSUENcXG5uZXQvcnhycGMvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJSeFJQQyBzZXNzaW9uIHNvY2tldHNcXFwiXFxuLS1cXG5uZXQvcnhycGMvS2NvbmZpZz0yNT1pZiBBRl9SWFJQQ1xcbm5ldC9yeHJwYy9LY29uZmlnLTI2LVxcbm5ldC9yeHJwYy9LY29uZmlnOjI3OmNvbmZpZyBBRl9SWFJQQ19JUFY2XFxubmV0L3J4cnBjL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiSVB2NiBzdXBwb3J0IGZvciBSeFJQQ1xcXCJcXG4tLVxcbm5ldC9yeHJwYy9LY29uZmlnLTMzLVxcbm5ldC9yeHJwYy9LY29uZmlnOjM0OmNvbmZpZyBBRl9SWFJQQ19JTkpFQ1RfTE9TU1xcbm5ldC9yeHJwYy9LY29uZmlnLTM1LVxcdGJvb2wgXFxcIkluamVjdCBwYWNrZXQgbG9zcyBpbnRvIFJ4UlBDIHBhY2tldCBzdHJlYW1cXFwiXFxuLS1cXG5uZXQvcnhycGMvS2NvbmZpZy0zOS1cXG5uZXQvcnhycGMvS2NvbmZpZzo0MDpjb25maWcgQUZfUlhSUENfSU5KRUNUX1JYX0RFTEFZXFxubmV0L3J4cnBjL0tjb25maWctNDEtXFx0Ym9vbCBcXFwiSW5qZWN0IGRlbGF5IGludG8gcGFja2V0IHJlY2VwdGlvblxcXCJcXG4tLVxcbm5ldC9yeHJwYy9LY29uZmlnLTQ5LVxcbm5ldC9yeHJwYy9LY29uZmlnOjUwOmNvbmZpZyBBRl9SWFJQQ19ERUJVR1xcbm5ldC9yeHJwYy9LY29uZmlnLTUxLVxcdGJvb2wgXFxcIlJ4UlBDIGR5bmFtaWMgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L3J4cnBjL0tjb25maWc9ODk9Y29uZmlnIFJYUEVSRlxcbi0tXFxubmV0L3J4cnBjL0tjb25maWctOTUtXFxubmV0L3J4cnBjL0tjb25maWc6OTY6Y29uZmlnIEFGX1JYUlBDX0tVTklUX1RFU1RcXG5uZXQvcnhycGMvS2NvbmZpZy05Ny1cXHR0cmlzdGF0ZSBcXFwiUnhSUEMgY3J5cHRvIEtVbml0IHRlc3RcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6MDA6MjEuMTgzNDgyNDg4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk4MjkxNjcwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRm9jdXNpbmcgb24gUlhSUEMgUGF0Y2ggUG9pbnRzKipcblxuQWxyaWdodCwgc28gd2UncmUgZGl2aW5nIGludG8gdGhlIGBBRl9SWFJQQ2AgY29uZmlnLiBHb29kLCB0aGF0J3Mgb3VyIHN0YXJ0aW5nIHBvaW50LiBMZXQncyBnZXQgcmlnaHQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIgYW5kIHplcm8gaW4gb24gdGhlIGtleSBzeW1ib2xzIGludm9sdmVkIGluIHRoaXMgcGF0Y2guXG5cblJpZ2h0LCB0aGUgcGF0Y2ggaW5jbHVkZXMgYHJ4cnBjX2Rlc3Ryb3lfYWxsX2Nvbm5lY3Rpb25zYC4gSG1tLCB0aGF0J3MgYSB0ZWFyZG93biBmdW5jdGlvbiwgc28gd2hpbGUgcmVsZXZhbnQgZm9yIGNsZWFudXAsIGl0J3MgcHJvYmFibHkgbm90IHRoZSBtb3N0ICppbnRlcmVzdGluZyogcGxhY2UgdG8gYmVnaW4gb3VyIGludmVzdGlnYXRpb24uIEl0J3MgcGFydCBvZiB0aGUgcGljdHVyZSwgYnV0IGxpa2VseSBhIGNvbnNlcXVlbmNlIHJhdGhlciB0aGFuIGEgcm9vdCBjYXVzZS5cblxuTm93LCBgcnhycGNfc2VuZF9kYXRhYC4uLiB0aGF0IGxvb2tzIG1vcmUgcHJvbWlzaW5nLiBJdCdzIGEgc3RhdGljIGZ1bmN0aW9uLCBuZXN0bGVkIGF3YXkgaW4gYG5ldC9yeHJwYy9zZW5kbXNnLmNgLiBUaGUgZmFjdCB0aGF0IGl0J3MgaW4gYHNlbmRtc2cuY2AgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0OyBsaWtlbHkgZGVhbGluZyB3aXRoIG91dGdvaW5nIGRhdGEsIHNvIGxldCdzIHRyYWNrIGRvd24gdGhlIGNhbGxlcnMgYW5kIHVuZGVyc3RhbmQgdGhlIGRhdGEgcGF0aHMuIFVuZGVyc3RhbmRpbmcgd2hvICpjYWxscyogdGhpcyBmdW5jdGlvbiB3aWxsIHRlbGwgbWUgYSBsb3QgYWJvdXQgdGhlIGNvcmUgbG9naWMgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuIExldCdzIHNlZSBob3cgdGhlIGZsb3cgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc5NSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA4OjAwOjI2LjE2NjQwMjgxN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTcyNDQzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyeHJwY19zZW5kX2RhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3J4cnBjL3NlbmRtc2cuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcnhycGMvc2VuZG1zZy5jPTIyOT1zdGF0aWMgdm9pZCByeHJwY19ub3RpZnlfZW5kX3R4KHN0cnVjdCByeHJwY19zb2NrICpyeCwgc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsXFxuLS1cXG5uZXQvcnhycGMvc2VuZG1zZy5jLTIzNy0gKiBRdWV1ZSBhIERBVEEgcGFja2V0IGZvciB0cmFuc21pc3Npb24sIHNldCB0aGUgcmVzZW5kIHRpbWVvdXQgYW5kIHNlbmRcXG5uZXQvcnhycGMvc2VuZG1zZy5jOjIzODogKiB0aGUgcGFja2V0IGltbWVkaWF0ZWx5LiAgUmV0dXJucyB0aGUgZXJyb3IgZnJvbSByeHJwY19zZW5kX2RhdGFfcGFja2V0KClcXG5uZXQvcnhycGMvc2VuZG1zZy5jLTIzOS0gKiBpbiBjYXNlIHRoZSBjYWxsZXIgd2FudHMgdG8gZG8gc29tZXRoaW5nIHdpdGggaXQuXFxuLS1cXG5uZXQvcnhycGMvc2VuZG1zZy5jPTI4MT1zdGF0aWMgaW50IHJ4cnBjX2FsbG9jX3R4cXVldWUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbClcXG4tLVxcbm5ldC9yeHJwYy9zZW5kbXNnLmMtMzE5LSAqL1xcbm5ldC9yeHJwYy9zZW5kbXNnLmM6MzIwOnN0YXRpYyBpbnQgcnhycGNfc2VuZF9kYXRhKHN0cnVjdCByeHJwY19zb2NrICpyeCxcXG5uZXQvcnhycGMvc2VuZG1zZy5jLTMyMS1cXHRcXHRcXHQgICBzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcXG4tLVxcbm5ldC9yeHJwYy9zZW5kbXNnLmM9NjY4PWludCByeHJwY19kb19zZW5kbXNnKHN0cnVjdCByeHJwY19zb2NrICpyeCwgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbi0tXFxubmV0L3J4cnBjL3NlbmRtc2cuYy03NzktXFx0Y2FzZSBSWFJQQ19DTURfU0VORF9EQVRBOlxcbm5ldC9yeHJwYy9zZW5kbXNnLmM6NzgwOlxcdFxcdHJldCA9IHJ4cnBjX3NlbmRfZGF0YShyeCwgY2FsbCwgbXNnLCBsZW4sIE5VTEwsIFxcdTAwMjZkcm9wcGVkX2xvY2spO1xcbm5ldC9yeHJwYy9zZW5kbXNnLmMtNzgxLVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L3J4cnBjL3NlbmRtc2cuYz04MTU9aW50IHJ4cnBjX2tlcm5lbF9zZW5kX2RhdGEoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsXFxuLS1cXG5uZXQvcnhycGMvc2VuZG1zZy5jLTgyOC1cXG5uZXQvcnhycGMvc2VuZG1zZy5jOjgyOTpcXHRyZXQgPSByeHJwY19zZW5kX2RhdGEocnhycGNfc2soc29jay1cXHUwMDNlc2spLCBjYWxsLCBtc2csIGxlbixcXG5uZXQvcnhycGMvc2VuZG1zZy5jLTgzMC1cXHRcXHRcXHQgICAgICBub3RpZnlfZW5kX3R4LCBcXHUwMDI2ZHJvcHBlZF9sb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6MDA6MjYuMjUyMTUxNzgyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3NjUwNDQzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzOlxuXG4qKkFuYWx5emluZyB0aGUgUnhSUEMgU2VuZCBQYXRoKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgUnhSUEMgc2VuZCBwYXRoLiBJJ3ZlIGdvdCBgcnhycGNfZG9fc2VuZG1zZ2AgYW5kIGByeHJwY19rZXJuZWxfc2VuZF9kYXRhYCBmbGFnZ2VkIGFzIHRoZSBrZXkgY2FsbGVycyBoZXJlLiBHaXZlbiB0aGF0IGByeHJwY19kb19zZW5kbXNnYCBpcyBsaWtlbHkgdGhlIGVudHJ5IHBvaW50LCBpdCBsb29rcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBkZWVwIGRpdmUuXG5cbk5vdywgSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IHNlcXVlbmNpbmcgd29ya3MgZHVyaW5nIHNlbmQuIFRoZSBjb2RlIHN1Z2dlc3RzIHRoYXQgYHJ4cnBjX3NlcV9pbl90eHFgIGlzIGlubGluZSwgd2hpY2ggbWVhbnMgaXQgd2lsbCBiZSBleHBhbmRlZCB3aGVyZXZlciBpdCdzIGNhbGxlZC4gVGhhdCBtZWFucyB0byBzZWUgaXQncyBiZWhhdmlvciwgSSBoYXZlIHRvIGZpbmQgYWxsIHRoZSBwbGFjZXMgaXQncyB1c2VkLiBMZXQgbWUgZ28gZmluZCB0aG9zZSBjYWxsIHNpdGVzIGluIHRoZSBoZWFkZXJzLiBJdCB3aWxsIHF1aWNrbHkgZ2l2ZSBtZSBjb250ZXh0IHRvIHRoZSBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjkxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6MDA6MjkuNzI4NjU5Mjc1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNTQyNzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ4cnBjX3NlcV9pbl90eHFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3J4cnBjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcnhycGMvYXItaW50ZXJuYWwuaD0xNTc2PXN0YXRpYyBpbmxpbmUgdTMyIGxhdGVzdCh1MzIgc2VxMSwgdTMyIHNlcTIpXFxuLS1cXG5uZXQvcnhycGMvYXItaW50ZXJuYWwuaC0xNTgwLVxcbm5ldC9yeHJwYy9hci1pbnRlcm5hbC5oOjE1ODE6c3RhdGljIGlubGluZSBib29sIHJ4cnBjX3NlcV9pbl90eHEoY29uc3Qgc3RydWN0IHJ4cnBjX3R4cXVldWUgKnRxLCByeHJwY19zZXFfdCBzZXEpXFxubmV0L3J4cnBjL2FyLWludGVybmFsLmgtMTU4Mi17XFxuLS1cXG5uZXQvcnhycGMvaW5wdXQuYz04ODI9c3RhdGljIHZvaWQgcnhycGNfaW5wdXRfc29mdF9hY2tfdHEoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsXFxuLS1cXG5uZXQvcnhycGMvaW5wdXQuYy05NTctXFx0aWYgKGNhbGwtXFx1MDAzZXRscF9zZXJpYWwgXFx1MDAyNlxcdTAwMjZcXG5uZXQvcnhycGMvaW5wdXQuYzo5NTg6XFx0ICAgIHJ4cnBjX3NlcV9pbl90eHEodHEsIGNhbGwtXFx1MDAzZXRscF9zZXEpIFxcdTAwMjZcXHUwMDI2XFxubmV0L3J4cnBjL2lucHV0LmMtOTU5LVxcdCAgICB0ZXN0X2JpdChjYWxsLVxcdTAwM2V0bHBfc2VxIC0gdHEtXFx1MDAzZXFiYXNlLCBcXHUwMDI2bmV3X2Fja3MpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwODowMDoyOS43NzkyMTM2NTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTc4MzgzNDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBSb2xlIG9mIGByeHJwY19pbnB1dF9zb2Z0X2Fja190cWAgYW5kIGByeHJwY19pbnB1dF9zb2Z0X2Fja3NgKipcblxuUmlnaHQsIHRoZXNlIGZ1bmN0aW9ucyBhcmUgY2xlYXJseSBzaWduaWZpY2FudCwgbGlrZWx5IGRlYWxpbmcgd2l0aCBzb2Z0IGFja25vd2xlZGdlbWVudHMgd2l0aGluIHRoZSBSeFJQQyBpbnB1dCBwcm9jZXNzaW5nIHBhdGguIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCB0aGV5IGhhbmRsZSBzb21lIGtpbmQgb2YgcXVldWluZyBvciBkZWZlcnJlZCBhY2tub3dsZWRnZW1lbnQgbWVjaGFuaXNtLCBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBncmFjZWZ1bCBoYW5kbGluZyBvZiBpbmNvbWluZyBwYWNrZXRzLCBwb3RlbnRpYWxseSBtYW5hZ2luZyBjb25nZXN0aW9uIG9yIHJlb3JkZXJpbmcuIFRoZSBuYW1pbmcgY29udmVudGlvbiBzdWdnZXN0cyBhIHNvZnQgYWNrbm93bGVkZ2VtZW50LCBpbmRpY2F0aW5nIHBlcmhhcHMgYSBsZXNzIGltbWVkaWF0ZSBjb25maXJtYXRpb24gY29tcGFyZWQgdG8gYSBoYXJkIEFDSywgYW5kIHRoaXMgdXN1YWxseSBpbXBsaWVzIHNvbWUgbGV2ZWwgb2YgYnVmZmVyaW5nIG9yIGRlbGF5ZWQgcHJvY2Vzc2luZy5cblxuVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLCBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHNvdXJjZSBjb2RlLiBMZXQncyBzdGFydCB3aXRoIGBuZXQvcnhycGMvaW5wdXQuY2AuIFRoYXQgc2hvdWxkIHByb3ZpZGUgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gYW5kIGNvbnRleHQgZm9yIHRoZXNlIGZ1bmN0aW9ucy4gSeKAmWxsIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMsIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlc2UgZnVuY3Rpb25zIGFyZSBpbnZva2VkLCBhbmQgaWRlbnRpZnkgd2hhdCBkYXRhIHN0cnVjdHVyZXMgdGhleSBpbnRlcmFjdCB3aXRoLiBVbmRlcnN0YW5kaW5nIHRoZSBkYXRhIGZsb3cgd2lsbCBiZSBrZXkgdG8gZ3Jhc3BpbmcgdGhlaXIgb3ZlcmFsbCBmdW5jdGlvbiBhbmQgdGhlIHJlYXNvbnMgZm9yIHRoZWlyIGV4aXN0ZW5jZS4gSSdtIGxvb2tpbmcgZm9yIHRoZSBcIndoeVwiIGFuZCBcImhvd1wiIG9mIHRoaXMgZGVzaWduLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjY3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6MDA6MzMuMzU3NjAxMTQ4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODU3Nzc1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyeHJwY19zZXFfaW5fdHhxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9yeHJwYy9pbnB1dC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yeHJwYy9pbnB1dC5jPTg4Mj1zdGF0aWMgdm9pZCByeHJwY19pbnB1dF9zb2Z0X2Fja190cShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcXG4tLVxcbm5ldC9yeHJwYy9pbnB1dC5jLTk1Ny1cXHRpZiAoY2FsbC1cXHUwMDNldGxwX3NlcmlhbCBcXHUwMDI2XFx1MDAyNlxcbm5ldC9yeHJwYy9pbnB1dC5jOjk1ODpcXHQgICAgcnhycGNfc2VxX2luX3R4cSh0cSwgY2FsbC1cXHUwMDNldGxwX3NlcSkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvcnhycGMvaW5wdXQuYy05NTktXFx0ICAgIHRlc3RfYml0KGNhbGwtXFx1MDAzZXRscF9zZXEgLSB0cS1cXHUwMDNlcWJhc2UsIFxcdTAwMjZuZXdfYWNrcykpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA4OjAwOjMzLjQwNjE5MzQxNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDI1NjgyNTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyBhIENvZGUgTG9jYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmluZCBvdXQgd2hhdCdzIGhhcHBlbmluZyBhdCBsaW5lIDk1NyB3aXRoaW4gdGhlIGBuZXQvcnhycGMvaW5wdXQuY2AgZmlsZS4gR2l2ZW4gbXkgZXhwZXJ0aXNlIGluIHRoaXMgYXJlYSwgbXkgZmlyc3QgdGhvdWdodCBpcyB0byB1c2UgbXkgdG9vbHMgZWZmaWNpZW50bHkuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHdoaWNoIGZ1bmN0aW9uIHRoaXMgbGluZSBpcyB3aXRoaW4uIEknbGwgbmVlZCB0byB1c2UgZWl0aGVyIG15IElERSdzIFwiZmluZCBzeW1ib2xcIiBvciBcImdvIHRvIGRlZmluaXRpb25cIiBmdW5jdGlvbnMsIG9yIEknbGwgcXVpY2tseSBsZXZlcmFnZSBgZ3JlcGAgb3IgYGFja2AgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCB3aXRoIGEgc2VhcmNoIGZvY3VzZWQgb24gdGhlIGZ1bmN0aW9uIGNvbnRhaW5pbmcgdGhlIGxpbmUgbnVtYmVyLiBJIHdpbGwgc3RhcnQgYnkgdXNpbmcgbXkgZmFtaWxpYXIgSURFIHRvb2xzLCBhbmQgaWYgdGhhdCBpcyB0b28gc2xvdywgSSB3aWxsIG1vdmUgdG8gdGhlIGNvbW1hbmQgbGluZSwga25vd2luZyB0aGUgYXBwcm9wcmlhdGUgY29tbWFuZHMgdG8gbmFycm93IG15IHJlc3VsdHMuIFRoZW4gSSBjYW4gZGV0ZXJtaW5lLCBiYXNlZCBvbiB0aGF0IGZ1bmN0aW9uJ3MgcHVycG9zZSwgd2hhdCB0aGUgY29kZSBhdCB0aGF0IHNwZWNpZmljIGxpbmUgaXMgbGlrZWx5IGRvaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzQ5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6MDA6MzYuODMxODc5ODcyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzMzNzI5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjYWxsLVxcdTAwM2V0bHBfc2VyaWFsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9yeHJwYy9pbnB1dC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yeHJwYy9pbnB1dC5jPTg4Mj1zdGF0aWMgdm9pZCByeHJwY19pbnB1dF9zb2Z0X2Fja190cShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcXG4tLVxcbm5ldC9yeHJwYy9pbnB1dC5jLTk1Ni1cXG5uZXQvcnhycGMvaW5wdXQuYzo5NTc6XFx0aWYgKGNhbGwtXFx1MDAzZXRscF9zZXJpYWwgXFx1MDAyNlxcdTAwMjZcXG5uZXQvcnhycGMvaW5wdXQuYy05NTgtXFx0ICAgIHJ4cnBjX3NlcV9pbl90eHEodHEsIGNhbGwtXFx1MDAzZXRscF9zZXEpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvcnhycGMvaW5wdXQuYz0xMDgwPXN0YXRpYyB2b2lkIHJ4cnBjX2lucHV0X2FjayhzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9yeHJwYy9pbnB1dC5jLTEyMTMtXFx0cnhycGNfdGxwX3Byb2Nlc3NfYWNrKGNhbGwsIFxcdTAwMjZzdW1tYXJ5KTtcXG5uZXQvcnhycGMvaW5wdXQuYzoxMjE0OlxcdGlmIChjYWxsLVxcdTAwM2V0bHBfc2VyaWFsIFxcdTAwMjZcXHUwMDI2IGFmdGVyX2VxKHN1bW1hcnkuYWNrZWRfc2VyaWFsLCBjYWxsLVxcdTAwM2V0bHBfc2VyaWFsKSlcXG5uZXQvcnhycGMvaW5wdXQuYzoxMjE1OlxcdFxcdGNhbGwtXFx1MDAzZXRscF9zZXJpYWwgPSAwO1xcbm5ldC9yeHJwYy9pbnB1dC5jLTEyMTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA4OjAwOjM2Ljg3OTIyMzg0OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDc4MzYyNTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmcsIGFuZCBhc3N1bWluZyBJJ20gd2VsbC12ZXJzZWQgaW4gdGhpcyBhcmVhOlxuXG4qKkFuYWx5emluZyBQb3RlbnRpYWwgSW5wdXQgQWNrbm93bGVkZ2VtZW50IE1lY2hhbmlzbXMqKlxuXG5BbHJpZ2h0LCBJJ20gdHJ5aW5nIHRvIG5haWwgZG93biB0aGUgcHJlY2lzZSBmdW5jdGlvbiBpbnZvbHZlZCBpbiBhY2tub3dsZWRnaW5nIGluY29taW5nIFJQQyBkYXRhLiBUaGUga2V5IGhlcmUgc2VlbXMgdG8gYmUgZGlmZmVyZW50aWF0aW5nIGJldHdlZW4gdGhlIHNvZnQgYWNrbm93bGVkZ2VtZW50IHZlcnN1cyBhIHJlZ3VsYXIgYWNrbm93bGVkZ2VtZW50LiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgaXQncyBlaXRoZXIgYHJ4cnBjX2lucHV0X3NvZnRfYWNrX3RxYCBvciBzaW1wbHkgYHJ4cnBjX2lucHV0X2Fja2AsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZS4gR2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9ucyB1c2VkIGluIHRoaXMgY29kZWJhc2UsIHRoZSBkaXN0aW5jdGlvbiBpcyBzaWduaWZpY2FudC4gTGV0J3MgZGVsdmUgaW50byB0aGUgc3BlY2lmaWNzIG9mIGByeHJwY19pbnB1dF9zb2Z0X2Fja190cWAgZmlyc3QuIEkgd2FudCB0byBzZWUgcHJlY2lzZWx5IGhvdyBpdCBoYW5kbGVzIHRoZSBhY2tub3dsZWRnbWVudCBwcm9jZXNzIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgdGFzayBxdWV1ZS4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIHdoZXJlIHRoaXMgc3BlY2lmaWMgYWNrbm93bGVkZ2VtZW50IG1lY2hhbmlzbSBmaXRzIGludG8gdGhlIG92ZXJhbGwgc2NoZW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Mjg4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6MDA6NDAuOTU3NTg5MjY0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTA3NDYyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyeHJwY19pbnB1dF9zb2Z0X2Fja190cVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcnhycGMvaW5wdXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcnhycGMvaW5wdXQuYz04NzA9c3RhdGljIHZvaWQgcnhycGNfaW5wdXRfc29mdF9ydHQoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsXFxuLS1cXG5uZXQvcnhycGMvaW5wdXQuYy04ODEtICovXFxubmV0L3J4cnBjL2lucHV0LmM6ODgyOnN0YXRpYyB2b2lkIHJ4cnBjX2lucHV0X3NvZnRfYWNrX3RxKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLFxcbm5ldC9yeHJwYy9pbnB1dC5jLTg4My1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHJ4cnBjX2Fja19zdW1tYXJ5ICpzdW1tYXJ5LFxcbi0tXFxubmV0L3J4cnBjL2lucHV0LmM9OTcyPXN0YXRpYyB2b2lkIHJ4cnBjX2lucHV0X3NvZnRfYWNrcyhzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcXG4tLVxcbm5ldC9yeHJwYy9pbnB1dC5jLTEwMTMtXFxubmV0L3J4cnBjL2lucHV0LmM6MTAxNDpcXHRcXHRyeHJwY19pbnB1dF9zb2Z0X2Fja190cShjYWxsLCBzdW1tYXJ5LCB0cSwgZXh0cmFjdGVkLCBSWFJQQ19OUl9UWFFVRVVFLFxcbm5ldC9yeHJwYy9pbnB1dC5jLTEwMTUtXFx0XFx0XFx0XFx0XFx0c2VxIC0gUlhSUENfTlJfVFhRVUVVRSwgXFx1MDAyNmxvd2VzdF9uYWspO1xcbi0tXFxubmV0L3J4cnBjL2lucHV0LmMtMTAyNi1cXHRcXHRfZGVidWcoXFxcInRhaWwgICUxNmx4ICV1XFxcIiwgZXh0cmFjdGVkLCBucl9yZXBvcnRlZCk7XFxubmV0L3J4cnBjL2lucHV0LmM6MTAyNzpcXHRcXHRyeHJwY19pbnB1dF9zb2Z0X2Fja190cShjYWxsLCBzdW1tYXJ5LCB0cSwgZXh0cmFjdGVkLCBucl9yZXBvcnRlZCxcXG5uZXQvcnhycGMvaW5wdXQuYy0xMDI4LVxcdFxcdFxcdFxcdFxcdHNlcSBcXHUwMDI2IH5SWFJQQ19UWFFfTUFTSywgXFx1MDAyNmxvd2VzdF9uYWspO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwODowMDo0MS4wMDY2NzI0NjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ1MzUyMDYxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoYXQgY29kZSBzZXF1ZW5jZTpcblxuKipEZWNvZGluZyB0aGUgUnhSUEMgQWNrbm93bGVkZ21lbnQgUGF0aHdheSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBhY2tub3dsZWRnbWVudHMgYXJlIGhhbmRsZWQgaW4gdGhpcyBSeFJQQyBzeXN0ZW0uIFRoZSB0cmFpbCBzdGFydHMgd2l0aCBgcnhycGNfaW5wdXRfc29mdF9hY2tzYCwgd2hpY2ggc2VlbXMgdG8gYmUgdGhlIGZ1bmN0aW9uIHRoYXQgYWN0dWFsbHkgKmRvZXMqIHRoZSBzb2Z0IGFja25vd2xlZGdtZW50IHByb2Nlc3NpbmcuIE5vdywgd2hlcmUgaXMgKnRoaXMqIGNhbGxlZCBmcm9tPyBBaGEsIGl0J3MgY2FsbGVkIGJ5IGByeHJwY19pbnB1dF9hY2tgLiBUaGF0IG1ha2VzIHNlbnNlOyBgcnhycGNfaW5wdXRfYWNrYCBwcm9iYWJseSBoYW5kbGVzIHRoZSBpbml0aWFsIHBhcnNpbmcgYW5kIGRpc3BhdGNoIG9mIGFja25vd2xlZGdtZW50LXJlbGF0ZWQgcGFja2V0cy4gR29vZCwgZ29vZC4gQnV0IHdlIG5lZWQgdG8gdHJhY2UgdGhpcyBmdXJ0aGVyLiBXaGVyZSBkb2VzICp0aGF0KiBnZXQgY2FsbGVkPyBSaWdodCwgYHJ4cnBjX2lucHV0X2Fja2AgaXMgY2FsbGVkIGJ5IGByeHJwY19pbnB1dF9jYWxsX3BhY2tldGAgb3Igc2ltaWxhciBmdW5jdGlvbnMsIHRoZSBwcmltYXJ5IGhhbmRsZXJzIGZvciBpbmNvbWluZyBSeFJQQyBjYWxsIHBhY2tldHMuIFRoaXMgZ2l2ZXMgYSBuaWNlIGNoYWluLiBOb3csIEkgc2hvdWxkIGRpdmUgaW50byB0aGUgZGV0YWlscyBvZiBgcnhycGNfaW5wdXRfYWNrYC4gVGhhdCdzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIG9mIHRoaXMgYWNrIHByb2Nlc3Mgd2lsbCBsaXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTE4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6MDA6NDYuNDYwMTk3NTYxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTAwNTQzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyeHJwY19pbnB1dF9hY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3J4cnBjL2lucHV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3J4cnBjL2lucHV0LmM9NzQ5PXN0YXRpYyB2b2lkIHJ4cnBjX2NvbXBsZXRlX3J0dF9wcm9iZShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcXG4tLVxcbm5ldC9yeHJwYy9pbnB1dC5jLTc5OC0gKi9cXG5uZXQvcnhycGMvaW5wdXQuYzo3OTk6c3RhdGljIHZvaWQgcnhycGNfaW5wdXRfYWNrX3RyYWlsZXIoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L3J4cnBjL2lucHV0LmMtODAwLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcnhycGNfYWNrdHJhaWxlciAqdHJhaWxlcilcXG4tLVxcbm5ldC9yeHJwYy9pbnB1dC5jPTEwNTA9c3RhdGljIGJvb2wgcnhycGNfaXNfYWNrX3ZhbGlkKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLFxcbi0tXFxubmV0L3J4cnBjL2lucHV0LmMtMTA3OS0gKi9cXG5uZXQvcnhycGMvaW5wdXQuYzoxMDgwOnN0YXRpYyB2b2lkIHJ4cnBjX2lucHV0X2FjayhzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvcnhycGMvaW5wdXQuYy0xMDgxLXtcXG4tLVxcbm5ldC9yeHJwYy9pbnB1dC5jLTExNjQtXFx0aWYgKHRyYWlsZXIubWF4TVRVKVxcbm5ldC9yeHJwYy9pbnB1dC5jOjExNjU6XFx0XFx0cnhycGNfaW5wdXRfYWNrX3RyYWlsZXIoY2FsbCwgc2tiLCBcXHUwMDI2dHJhaWxlcik7XFxubmV0L3J4cnBjL2lucHV0LmMtMTE2Ni1cXG4tLVxcbm5ldC9yeHJwYy9pbnB1dC5jLTEyMjgtICovXFxubmV0L3J4cnBjL2lucHV0LmM6MTIyOTpzdGF0aWMgdm9pZCByeHJwY19pbnB1dF9hY2thbGwoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3J4cnBjL2lucHV0LmMtMTIzMC17XFxuLS1cXG5uZXQvcnhycGMvaW5wdXQuYz0xMjYzPXZvaWQgcnhycGNfaW5wdXRfY2FsbF9wYWNrZXQoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvcnhycGMvaW5wdXQuYy0xMjg5LVxcdGNhc2UgUlhSUENfUEFDS0VUX1RZUEVfQUNLOlxcbm5ldC9yeHJwYy9pbnB1dC5jOjEyOTA6XFx0XFx0cmV0dXJuIHJ4cnBjX2lucHV0X2FjayhjYWxsLCBza2IpO1xcbm5ldC9yeHJwYy9pbnB1dC5jLTEyOTEtXFxuLS1cXG5uZXQvcnhycGMvaW5wdXQuYy0xMzAyLVxcdGNhc2UgUlhSUENfUEFDS0VUX1RZUEVfQUNLQUxMOlxcbm5ldC9yeHJwYy9pbnB1dC5jOjEzMDM6XFx0XFx0cmV0dXJuIHJ4cnBjX2lucHV0X2Fja2FsbChjYWxsLCBza2IpO1xcbm5ldC9yeHJwYy9pbnB1dC5jLTEzMDQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA4OjAwOjQ2LjUwOTIwOTYzOFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTMyNjAyOTEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBBbmFseXNpcyBhbmQgRnV6emluZyBTdHJhdGVneSBmb3IgUnhSUEMqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaHVuY2ggYWJvdXQgZm9jdXNpbmcgb24gYHJ4cnBjX2lucHV0X2NhbGxfcGFja2V0YCBzZWVtcyBzcG90IG9uLCBhbG9uZyB3aXRoIGByeHJwY19kb19zZW5kbXNnYCBhbmQgYHJ4cnBjX2tlcm5lbF9zZW5kX2RhdGFgLiBUaGVzZSBsb29rIGxpa2UgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIHRoaXMgcGF0Y2guXG5cblJldmlld2luZyB0aGUgY2hhbmdlcywgSSBzZWUgdGhyZWUgY3JpdGljYWwgYXJlYXM6XG5cbjEuICAqKmByeHJwY19zZXFfaW5fdHhxYCoqOiBUaGUgbG9naWMgaGVyZSBpcyB0d2Vha2VkLiBJdCdzIHVzZWQgaW4gYHJ4cnBjX2lucHV0X3NvZnRfYWNrX3RxYCwgc28gYW55IG1pc2JlaGF2aW9yIGhlcmUgY291bGQgaGF2ZSBjYXNjYWRpbmcgZWZmZWN0cyBvbiBBQ0sgcHJvY2Vzc2luZy5cbjIuICAqKmByeHJwY19kZXN0cm95X2FsbF9jb25uZWN0aW9uc2AqKjogVGhpcyBpcyBhIHRlYXJkb3duIGZ1bmN0aW9uLCBjcnVjaWFsIGZvciByZXNvdXJjZSBjbGVhbnVwLiBUaGUgY2hhbmdlIGludm9sdmVzIGEgY3J1Y2lhbCB3YWl0IHRvIGVuc3VyZSBhbGwgZGVmZXJyZWQgZGVzdHJ1Y3RvcnMgY29tcGxldGUgYmVmb3JlIHZhbGlkYXRpbmcgdGhlIGNvbm5lY3Rpb24gbGlzdC4gVGhpcyBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgcmFjZS5cbjMuICAqKmByeHJwY19zZW5kX2RhdGFgKio6IFRoZSBmaXggc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyBhbiBpc3N1ZSB3aXRoIGBSWFJQQ19DQUxMX1RYX05PX01PUkVgIHByZXZlbnRpbmcgbGF0ZSBzZW5kcywgd2hpY2ggcmVsYXRlcyB0byBib3RoIGByeHJwY19kb19zZW5kbXNnYCBhbmQgYHJ4cnBjX2tlcm5lbF9zZW5kX2RhdGFgLiBUaGlzIGlzIGEgY2xlYXIgYnVnIGZpeC5cblxuVGhlcmVmb3JlLCB0aGUgbWFpbiBhcmVhcyBvZiBmb2N1cyBmb3IgZnV6emluZyB3aWxsIGJlOlxuXG4qICAgYHJ4cnBjX2RvX3NlbmRtc2dgXG4qICAgYHJ4cnBjX2tlcm5lbF9zZW5kX2RhdGFgXG4qICAgYHJ4cnBjX2lucHV0X2NhbGxfcGFja2V0YFxuXG5Db25maWctd2lzZSwgdGhlIHBhdGNoIHRhcmdldHMgYEFGX1JYUlBDYC4gU2luY2UgaXQncyBhIHRyaXN0YXRlLCBhbmQgY2FuIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLCBpdCdzIHRoZSBvbmx5IG9uZSBJIHNob3VsZCBjYXJlIGFib3V0LlxuXG5Ob3csIGxldCdzIGNvbmZpcm0gdGhlIGNvZGUgY2hhbmdlcy4gSSd2ZSByZS1leGFtaW5lZCB0aGUgY29kZSBpbiBgbmV0L3J4cnBjL2FyLWludGVybmFsLmhgIGFuZCBgbmV0L3J4cnBjL3NlbmRtc2cuY2AgYW5kIGBuZXQvcnhycGMvY29ubl9vYmplY3QuY2AuIFRoZSBgcnhycGNfc2VxX2luX3R4cWAgY2hlY2sgaW4gYGFyLWludGVybmFsLmhgIGlzIGluZGVlZCBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhcyBpcyB0aGUgYHJ4cnBjX3NlbmRfZGF0YWAgZml4IGZvciBgRVBST1RPYCBhbmQgdGhlIG1vZGlmaWNhdGlvbiBpbiBgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnNgLlxuXG5UaGUgYEFTU0VSVGAgY2FsbCBhZnRlciB0aGUgd2FpdCBpbiBgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnNgIGluZGljYXRlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiB3aGljaCBpcyBhIGNvbW1vbiBzb3VyY2Ugb2YgYnVncyB0aGF0IEknbGwgbG9vayBmb3IuXG5cbkluIG15IGV4cGVydCBvcGluaW9uLCB0aGlzIHBhdGNoIGlzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBUaGUgY2hhbmdlcyBhcmUgYWxsIGZ1bmN0aW9uYWwgYW5kIHRvdWNoIGNvcmUgUnhSUEMgbmV0d29yayBiZWhhdmlvci4gVGhlIGZvY3VzIGFyZWFzLCBhcyBJJ3ZlIG1lbnRpb25lZCBhcmU6XG5cbiogICBgcnhycGNfZG9fc2VuZG1zZ2BcbiogICBgcnhycGNfa2VybmVsX3NlbmRfZGF0YWBcbiogICBgcnhycGNfaW5wdXRfY2FsbF9wYWNrZXRgXG5cblRoZSBjb25maWd1cmF0aW9uIEknbSBjb25jZXJuZWQgd2l0aCBpczpcblxuKiAgIGBBRl9SWFJQQ2BcblxuR2l2ZW4gdGhpcyBhbmFseXNpcywgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIHVwIHRoZSBmdXp6aW5nIGVudmlyb25tZW50IHdpdGggdGhlc2UgcGFyYW1ldGVycy4gTGV0J3MgZ2V0IHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODE4LCJPdXRwdXRUb2tlbnMiOjE3NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwODowMDo1Ny44MzUyNDE5NzFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzA2MTkwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQUZfUlhSUENcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyeHJwY19kb19zZW5kbXNnXCIsXG4gICAgXCJyeHJwY19rZXJuZWxfc2VuZF9kYXRhXCIsXG4gICAgXCJyeHJwY19pbnB1dF9jYWxsX3BhY2tldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGxvZ2ljIGluIGByeHJwY19zZXFfaW5fdHhxYCBmb3IgY2hlY2tpbmcgaWYgYSBzZXF1ZW5jZSBudW1iZXIgaXMgaW4gYSB0cmFuc21pc3Npb24gcXVldWUsIGFkZHMgYSBjaGVjayBmb3IgYFJYUlBDX0NBTExfVFhfTk9fTU9SRWAgaW4gYHJ4cnBjX3NlbmRfZGF0YWAgdG8gcHJldmVudCBsYXRlIHNlbmRzLCBhbmQgZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnNgIGJ5IG1vdmluZyB0aGUgYEFTU0VSVGAgYWZ0ZXIgd2FpdGluZyBmb3IgY29ubmVjdGlvbnMgdG8gYmUgZGVzdHJveWVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSByeHJwYyBuZXR3b3JraW5nIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQUZfUlhSUENcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyeHJwY19kb19zZW5kbXNnXCIsXG4gICAgXCJyeHJwY19rZXJuZWxfc2VuZF9kYXRhXCIsXG4gICAgXCJyeHJwY19pbnB1dF9jYWxsX3BhY2tldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGxvZ2ljIGluIGByeHJwY19zZXFfaW5fdHhxYCBmb3IgY2hlY2tpbmcgaWYgYSBzZXF1ZW5jZSBudW1iZXIgaXMgaW4gYSB0cmFuc21pc3Npb24gcXVldWUsIGFkZHMgYSBjaGVjayBmb3IgYFJYUlBDX0NBTExfVFhfTk9fTU9SRWAgaW4gYHJ4cnBjX3NlbmRfZGF0YWAgdG8gcHJldmVudCBsYXRlIHNlbmRzLCBhbmQgZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnNgIGJ5IG1vdmluZyB0aGUgYEFTU0VSVGAgYWZ0ZXIgd2FpdGluZyBmb3IgY29ubmVjdGlvbnMgdG8gYmUgZGVzdHJveWVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSByeHJwYyBuZXR3b3JraW5nIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowfsjz7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 07:40:55 +0000 UTC FinishedAt: 2026-08-03 08:00:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "69963a0678a347d57c4ac8b16939dba216eb95ce", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AF_RXRPC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "69963a0678a347d57c4ac8b16939dba216eb95ce", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AF_RXRPC" ], "series_id": "85ee0843-85ff-4d16-a8df-d14fc7138c1b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rxrpc_do_sendmsg", "rxrpc_kernel_send_data", "rxrpc_input_call_packet" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA4OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FGX1JYUlBDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnhycGNfZG9fc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtyeHJwY19rZXJuZWxfc2VuZF9kYXRhJiMzNDssCiAgICAmIzM0O3J4cnBjX2lucHV0X2NhbGxfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGxvZ2ljIGluIGByeHJwY19zZXFfaW5fdHhxYCBmb3IgY2hlY2tpbmcgaWYgYSBzZXF1ZW5jZSBudW1iZXIgaXMgaW4gYSB0cmFuc21pc3Npb24gcXVldWUsIGFkZHMgYSBjaGVjayBmb3IgYFJYUlBDX0NBTExfVFhfTk9fTU9SRWAgaW4gYHJ4cnBjX3NlbmRfZGF0YWAgdG8gcHJldmVudCBsYXRlIHNlbmRzLCBhbmQgZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnNgIGJ5IG1vdmluZyB0aGUgYEFTU0VSVGAgYWZ0ZXIgd2FpdGluZyBmb3IgY29ubmVjdGlvbnMgdG8gYmUgZGVzdHJveWVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSByeHJwYyBuZXR3b3JraW5nIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDg6MDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiOTYwYzI2ZjYwMzNjMGNhYjRjYzc2NjE0Mjc4ZmNmNDAyZGQzY2MzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwODowMDoxNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvYXItaW50ZXJuYWwuaCBiL25ldC9yeHJwYy9hci1pbnRlcm5hbC5oXG5pbmRleCA4NjVmMDVmZTM3YWI5Li4yNzk5MmUxMGQ4MmFkIDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL2FyLWludGVybmFsLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yeHJwYy9hci1pbnRlcm5hbC5oXG5AQCAtMTU4MCw3ICYjNDM7MTU4MCw4IEBAIHN0YXRpYyBpbmxpbmUgdTMyIGxhdGVzdCh1MzIgc2VxMSwgdTMyIHNlcTIpXG4gXG4gc3RhdGljIGlubGluZSBib29sIHJ4cnBjX3NlcV9pbl90eHEoY29uc3Qgc3RydWN0IHJ4cnBjX3R4cXVldWUgKnRxLCByeHJwY19zZXFfdCBzZXEpXG4ge1xuLVx0cmV0dXJuIChzZXEgXHUwMDI2IChSWFJQQ19OUl9UWFFVRVVFIC0gMSkpID09IHRxLVx1MDAzZXFiYXNlO1xuJiM0MztcdHJldHVybiBhZnRlcl9lcShzZXEsIHRxLVx1MDAzZXFiYXNlKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgICAgYmVmb3JlKHNlcSwgdHEtXHUwMDNlcWJhc2UgJiM0MzsgUlhSUENfTlJfVFhRVUVVRSk7XG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgdm9pZCByeHJwY19xdWV1ZV9yeF9jYWxsX3BhY2tldChzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvY29ubl9vYmplY3QuYyBiL25ldC9yeHJwYy9jb25uX29iamVjdC5jXG5pbmRleCAwZWNlNzE3ZGIwZjg1Li5kZjNmOTJiMWE0MmU5IDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL2Nvbm5fb2JqZWN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yeHJwYy9jb25uX29iamVjdC5jXG5AQCAtNDg1LDExICYjNDM7NDg1LDEzIEBAIHZvaWQgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnMoc3RydWN0IHJ4cnBjX25ldCAqcnhuZXQpXG4gXHR3cml0ZV91bmxvY2soXHUwMDI2cnhuZXQtXHUwMDNlY29ubl9sb2NrKTtcbiBcdEJVR19PTihsZWFrKTtcbiBcbi1cdEFTU0VSVChsaXN0X2VtcHR5KFx1MDAyNnJ4bmV0LVx1MDAzZWNvbm5fcHJvY19saXN0KSk7XG4tXG4tXHQvKiBXZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBjb25uZWN0aW9ucyB0byBiZSBkZXN0cm95ZWQgYnkgUkNVIGFzIHRoZXlcbi1cdCAqIHBpbiB0aGluZ3MgdGhhdCB3ZSBzdGlsbCBuZWVkIHRvIGdldCByaWQgb2YuXG4mIzQzO1x0LyogQ29ubmVjdGlvbiBkZXN0cnVjdGlvbiBpcyBub3JtYWxseSBkZWZlcnJlZCB0byBzeXN0ZW1fd3EgYmVjYXVzZVxuJiM0MztcdCAqIHRoZSBmaW5hbC1BQ0sgdGltZXIgaXMgc3RpbGwgcGVuZGluZyB3aGVuIHRoZSBsYXN0IHJlZiBpcyBkcm9wcGVkLlxuJiM0MztcdCAqIFdhaXQgZm9yIHRoZSBkZWZlcnJlZCBkZXN0cnVjdG9ycyAoYW5kIHRoZSBSQ1UgZnJlZXMpIHRvIGNvbXBsZXRlXG4mIzQzO1x0ICogYmVmb3JlIGNoZWNraW5nIGNvbm5fcHJvY19saXN0OyB0aGV5IHJlbW92ZSBjb25ucyBmcm9tIGl0LlxuIFx0ICovXG4gXHR3YWl0X3Zhcl9ldmVudChcdTAwMjZyeG5ldC1cdTAwM2Vucl9jb25ucywgIWF0b21pY19yZWFkKFx1MDAyNnJ4bmV0LVx1MDAzZW5yX2Nvbm5zKSk7XG4mIzQzO1xuJiM0MztcdEFTU0VSVChsaXN0X2VtcHR5KFx1MDAyNnJ4bmV0LVx1MDAzZWNvbm5fcHJvY19saXN0KSk7XG4gXHRfbGVhdmUoXCYjMzQ7XCYjMzQ7KTtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3NlbmRtc2cuYyBiL25ldC9yeHJwYy9zZW5kbXNnLmNcbmluZGV4IGVkMmM5YTUxMDA1YWQuLmIzOWFmNTUyYzZiNDYgMTAwNjQ0XG4tLS0gYS9uZXQvcnhycGMvc2VuZG1zZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvcnhycGMvc2VuZG1zZy5jXG5AQCAtMzU4LDYgJiM0MzszNTgsMTQgQEAgc3RhdGljIGludCByeHJwY19zZW5kX2RhdGEoc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LFxuIFx0aWYgKHR4YilcbiBcdFx0cnhycGNfc2VlX3R4YnVmKHR4YiwgcnhycGNfdHhidWZfc2VlX3NlbmRfbW9yZSk7XG4gXG4mIzQzO1x0cmV0ID0gLUVQUk9UTztcbiYjNDM7XHRpZiAodGVzdF9iaXQoUlhSUENfQ0FMTF9UWF9OT19NT1JFLCBcdTAwMjZjYWxsLVx1MDAzZWZsYWdzKSkge1xuJiM0MztcdFx0dHJhY2VfcnhycGNfYWJvcnQoY2FsbC1cdTAwM2VkZWJ1Z19pZCwgcnhycGNfc2VuZG1zZ19sYXRlX3NlbmQsXG4mIzQzO1x0XHRcdFx0ICBjYWxsLVx1MDAzZWNpZCwgY2FsbC1cdTAwM2VjYWxsX2lkLCBjYWxsLVx1MDAzZXJ4X2NvbnN1bWVkLFxuJiM0MztcdFx0XHRcdCAgMCwgLUVQUk9UTyk7XG4mIzQzO1x0XHRnb3RvIG1heWJlX2Vycm9yO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXQgPSAtRVBJUEU7XG4gXHRpZiAoc2stXHUwMDNlc2tfc2h1dGRvd24gXHUwMDI2IFNFTkRfU0hVVERPV04pXG4gXHRcdGdvdG8gbWF5YmVfZXJyb3I7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDg6MDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FGX1JYUlBDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnhycGNfZG9fc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtyeHJwY19rZXJuZWxfc2VuZF9kYXRhJiMzNDssCiAgICAmIzM0O3J4cnBjX2lucHV0X2NhbGxfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGxvZ2ljIGluIGByeHJwY19zZXFfaW5fdHhxYCBmb3IgY2hlY2tpbmcgaWYgYSBzZXF1ZW5jZSBudW1iZXIgaXMgaW4gYSB0cmFuc21pc3Npb24gcXVldWUsIGFkZHMgYSBjaGVjayBmb3IgYFJYUlBDX0NBTExfVFhfTk9fTU9SRWAgaW4gYHJ4cnBjX3NlbmRfZGF0YWAgdG8gcHJldmVudCBsYXRlIHNlbmRzLCBhbmQgZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnNgIGJ5IG1vdmluZyB0aGUgYEFTU0VSVGAgYWZ0ZXIgd2FpdGluZyBmb3IgY29ubmVjdGlvbnMgdG8gYmUgZGVzdHJveWVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSByeHJwYyBuZXR3b3JraW5nIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiOTYwYzI2ZjYwMzNjMGNhYjRjYzc2NjE0Mjc4ZmNmNDAyZGQzY2MzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAwODowMDoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9hci1pbnRlcm5hbC5oIGIvbmV0L3J4cnBjL2FyLWludGVybmFsLmgKaW5kZXggODY1ZjA1ZmUzN2FiOS4uMjc5OTJlMTBkODJhZCAxMDA2NDQKLS0tIGEvbmV0L3J4cnBjL2FyLWludGVybmFsLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3J4cnBjL2FyLWludGVybmFsLmgKQEAgLTE1ODAsNyAmIzQzOzE1ODAsOCBAQCBzdGF0aWMgaW5saW5lIHUzMiBsYXRlc3QodTMyIHNlcTEsIHUzMiBzZXEyKQogCiBzdGF0aWMgaW5saW5lIGJvb2wgcnhycGNfc2VxX2luX3R4cShjb25zdCBzdHJ1Y3QgcnhycGNfdHhxdWV1ZSAqdHEsIHJ4cnBjX3NlcV90IHNlcSkKIHsKLQlyZXR1cm4gKHNlcSAmYW1wOyAoUlhSUENfTlJfVFhRVUVVRSAtIDEpKSA9PSB0cS0mZ3Q7cWJhc2U7CiYjNDM7CXJldHVybiBhZnRlcl9lcShzZXEsIHRxLSZndDtxYmFzZSkgJmFtcDsmYW1wOwomIzQzOwkgICAgICAgYmVmb3JlKHNlcSwgdHEtJmd0O3FiYXNlICYjNDM7IFJYUlBDX05SX1RYUVVFVUUpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgcnhycGNfcXVldWVfcnhfY2FsbF9wYWNrZXQoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpCmRpZmYgLS1naXQgYS9uZXQvcnhycGMvY29ubl9vYmplY3QuYyBiL25ldC9yeHJwYy9jb25uX29iamVjdC5jCmluZGV4IDBlY2U3MTdkYjBmODUuLmRmM2Y5MmIxYTQyZTkgMTAwNjQ0Ci0tLSBhL25ldC9yeHJwYy9jb25uX29iamVjdC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yeHJwYy9jb25uX29iamVjdC5jCkBAIC00ODUsMTEgJiM0Mzs0ODUsMTMgQEAgdm9pZCByeHJwY19kZXN0cm95X2FsbF9jb25uZWN0aW9ucyhzdHJ1Y3QgcnhycGNfbmV0ICpyeG5ldCkKIAl3cml0ZV91bmxvY2soJmFtcDtyeG5ldC0mZ3Q7Y29ubl9sb2NrKTsKIAlCVUdfT04obGVhayk7CiAKLQlBU1NFUlQobGlzdF9lbXB0eSgmYW1wO3J4bmV0LSZndDtjb25uX3Byb2NfbGlzdCkpOwotCi0JLyogV2UgbmVlZCB0byB3YWl0IGZvciB0aGUgY29ubmVjdGlvbnMgdG8gYmUgZGVzdHJveWVkIGJ5IFJDVSBhcyB0aGV5Ci0JICogcGluIHRoaW5ncyB0aGF0IHdlIHN0aWxsIG5lZWQgdG8gZ2V0IHJpZCBvZi4KJiM0MzsJLyogQ29ubmVjdGlvbiBkZXN0cnVjdGlvbiBpcyBub3JtYWxseSBkZWZlcnJlZCB0byBzeXN0ZW1fd3EgYmVjYXVzZQomIzQzOwkgKiB0aGUgZmluYWwtQUNLIHRpbWVyIGlzIHN0aWxsIHBlbmRpbmcgd2hlbiB0aGUgbGFzdCByZWYgaXMgZHJvcHBlZC4KJiM0MzsJICogV2FpdCBmb3IgdGhlIGRlZmVycmVkIGRlc3RydWN0b3JzIChhbmQgdGhlIFJDVSBmcmVlcykgdG8gY29tcGxldGUKJiM0MzsJICogYmVmb3JlIGNoZWNraW5nIGNvbm5fcHJvY19saXN0OyB0aGV5IHJlbW92ZSBjb25ucyBmcm9tIGl0LgogCSAqLwogCXdhaXRfdmFyX2V2ZW50KCZhbXA7cnhuZXQtJmd0O25yX2Nvbm5zLCAhYXRvbWljX3JlYWQoJmFtcDtyeG5ldC0mZ3Q7bnJfY29ubnMpKTsKJiM0MzsKJiM0MzsJQVNTRVJUKGxpc3RfZW1wdHkoJmFtcDtyeG5ldC0mZ3Q7Y29ubl9wcm9jX2xpc3QpKTsKIAlfbGVhdmUoJiMzNDsmIzM0Oyk7CiB9CmRpZmYgLS1naXQgYS9uZXQvcnhycGMvc2VuZG1zZy5jIGIvbmV0L3J4cnBjL3NlbmRtc2cuYwppbmRleCBlZDJjOWE1MTAwNWFkLi5iMzlhZjU1MmM2YjQ2IDEwMDY0NAotLS0gYS9uZXQvcnhycGMvc2VuZG1zZy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yeHJwYy9zZW5kbXNnLmMKQEAgLTM1OCw2ICYjNDM7MzU4LDE0IEBAIHN0YXRpYyBpbnQgcnhycGNfc2VuZF9kYXRhKHN0cnVjdCByeHJwY19zb2NrICpyeCwKIAlpZiAodHhiKQogCQlyeHJwY19zZWVfdHhidWYodHhiLCByeHJwY190eGJ1Zl9zZWVfc2VuZF9tb3JlKTsKIAomIzQzOwlyZXQgPSAtRVBST1RPOwomIzQzOwlpZiAodGVzdF9iaXQoUlhSUENfQ0FMTF9UWF9OT19NT1JFLCAmYW1wO2NhbGwtJmd0O2ZsYWdzKSkgewomIzQzOwkJdHJhY2VfcnhycGNfYWJvcnQoY2FsbC0mZ3Q7ZGVidWdfaWQsIHJ4cnBjX3NlbmRtc2dfbGF0ZV9zZW5kLAomIzQzOwkJCQkgIGNhbGwtJmd0O2NpZCwgY2FsbC0mZ3Q7Y2FsbF9pZCwgY2FsbC0mZ3Q7cnhfY29uc3VtZWQsCiYjNDM7CQkJCSAgMCwgLUVQUk9UTyk7CiYjNDM7CQlnb3RvIG1heWJlX2Vycm9yOwomIzQzOwl9CiYjNDM7CiAJcmV0ID0gLUVQSVBFOwogCWlmIChzay0mZ3Q7c2tfc2h1dGRvd24gJmFtcDsgU0VORF9TSFVURE9XTikKIAkJZ290byBtYXliZV9lcnJvcjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDg6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjczNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSWFJQQyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdG91Y2hpbmcgYSBmZXcgZmlsZXMgd2l0aGluIHRoZSBSWFJQQyBzdWJzeXN0ZW06IGBhci1pbnRlcm5hbC5oYCwgYGNvbm5fb2JqZWN0LmNgLCBhbmQgYHNlbmRtc2cuY2AuIFRoZSBjaGFuZ2VzIGxvb2sgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmcm9tIHRoZSBmaWxlIGxpc3QuIEZpcnN0LCB0aGVyZSYjMzk7cyBhIGZpeCB0byB0aGUgYHJ4cnBjX3NlcV9pbl90eHFgIGxvZ2ljIGluIHRoZSBoZWFkZXIuIFRoYXQmIzM5O3MgZ29vZCwgYWx3YXlzIGdvb2QgdG8gdGlkeSB1cCBwb3RlbnRpYWwgc2VxdWVuY2UtcmVsYXRlZCBpc3N1ZXMuIFNlY29uZCwgdGhlIHBhdGNoIG1vdmVzIGFuIGBBU1NFUlRgIHdpdGhpbiBgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnNgIGluIGBjb25uX29iamVjdC5jYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBndWFyZGluZyBhZ2FpbnN0IGEgcmFjZSBjb25kaXRpb24uIEl0JiMzOTtzIG1vdmluZyB0aGUgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0aGUgYGNvbm5fcHJvY19saXN0YCBpcyBlbXB0eSBhZnRlciB3YWl0aW5nIGZvciB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHRvIGhpdCB6ZXJvLiBUaGF0JiMzOTtzIGEgc29saWQgY2hhbmdlLCBwcm9iYWJseSByZWxhdGVkIHRvIG9iamVjdCBsaWZlY3ljbGUgbWFuYWdlbWVudC4gQW5kIGZpbmFsbHksIGEgY2hlY2sgZm9yIGBSWFJQQ19DQUxMX1RYX05PX01PUkVgIGhhcyBiZWVuIGFkZGVkIHRvIGByeHJwY19zZW5kX2RhdGFgIGluIGBzZW5kbXNnLmNgLiBUaGlzIGlzIGxpa2VseSB0byBwcmV2ZW50IGRhdGEgYmVpbmcgdHJhbnNtaXR0ZWQgd2hlbiB3ZSBhcmUgZXhwZWN0ZWQgbm90IHRvIHRyYW5zbWl0LgoKRnVuY3Rpb25hbGx5LCB0aGVzZSBhcmUgYWxsIGNoYW5nZXMgaW4gdGhlIFJYUlBDIG5ldHdvcmtpbmcgc3Vic3lzdGVtLiBUaGlzIGlzIHRoZSBraW5kIG9mIHBhdGNoIHRoYXQgKmRlbWFuZHMqIGZ1enppbmcuIFdlIG5lZWQgdG8gdGhyb3cgZXZlcnl0aGluZyB3ZSBjYW4gYXQgaXQgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBzdWJ0bGUgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciB1bmRlciBsb2FkLCBlc3BlY2lhbGx5IHdpdGggdGhvc2UgY29uY3VycmVuY3ktcmVsYXRlZCBmaXhlcy4KClRpbWUgdG8gbG9vayBpbnRvIHRoZSBjb25maWd1cmF0aW9uLiBUaGUgcHJpbWFyeSBjb25maWcgb3B0aW9uIGZvciBSWFJQQyBpcyBgQ09ORklHX0FGX1JYUlBDYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMuIEkmIzM5O2xsIGNoZWNrIGBuZXQvcnhycGMvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZGVwZW5kZW5jaWVzIG9yIHJlbGF0ZWQgZmVhdHVyZXMgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQgZHVyaW5nIHRlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDg6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFGX1JYUlBDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3J4cnBjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3J4cnBjL0tjb25maWctNS1cbm5ldC9yeHJwYy9LY29uZmlnOjY6Y29uZmlnIEFGX1JYUlBDXG5uZXQvcnhycGMvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7UnhSUEMgc2Vzc2lvbiBzb2NrZXRzXCYjMzQ7XG4tLVxubmV0L3J4cnBjL0tjb25maWc9MjU9aWYgQUZfUlhSUENcbm5ldC9yeHJwYy9LY29uZmlnLTI2LVxubmV0L3J4cnBjL0tjb25maWc6Mjc6Y29uZmlnIEFGX1JYUlBDX0lQVjZcbm5ldC9yeHJwYy9LY29uZmlnLTI4LVx0Ym9vbCBcJiMzNDtJUHY2IHN1cHBvcnQgZm9yIFJ4UlBDXCYjMzQ7XG4tLVxubmV0L3J4cnBjL0tjb25maWctMzMtXG5uZXQvcnhycGMvS2NvbmZpZzozNDpjb25maWcgQUZfUlhSUENfSU5KRUNUX0xPU1Ncbm5ldC9yeHJwYy9LY29uZmlnLTM1LVx0Ym9vbCBcJiMzNDtJbmplY3QgcGFja2V0IGxvc3MgaW50byBSeFJQQyBwYWNrZXQgc3RyZWFtXCYjMzQ7XG4tLVxubmV0L3J4cnBjL0tjb25maWctMzktXG5uZXQvcnhycGMvS2NvbmZpZzo0MDpjb25maWcgQUZfUlhSUENfSU5KRUNUX1JYX0RFTEFZXG5uZXQvcnhycGMvS2NvbmZpZy00MS1cdGJvb2wgXCYjMzQ7SW5qZWN0IGRlbGF5IGludG8gcGFja2V0IHJlY2VwdGlvblwmIzM0O1xuLS1cbm5ldC9yeHJwYy9LY29uZmlnLTQ5LVxubmV0L3J4cnBjL0tjb25maWc6NTA6Y29uZmlnIEFGX1JYUlBDX0RFQlVHXG5uZXQvcnhycGMvS2NvbmZpZy01MS1cdGJvb2wgXCYjMzQ7UnhSUEMgZHluYW1pYyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvcnhycGMvS2NvbmZpZz04OT1jb25maWcgUlhQRVJGXG4tLVxubmV0L3J4cnBjL0tjb25maWctOTUtXG5uZXQvcnhycGMvS2NvbmZpZzo5Njpjb25maWcgQUZfUlhSUENfS1VOSVRfVEVTVFxubmV0L3J4cnBjL0tjb25maWctOTctXHR0cmlzdGF0ZSBcJiMzNDtSeFJQQyBjcnlwdG8gS1VuaXQgdGVzdFwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDg6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc5NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipGb2N1c2luZyBvbiBSWFJQQyBQYXRjaCBQb2ludHMqKgoKQWxyaWdodCwgc28gd2UmIzM5O3JlIGRpdmluZyBpbnRvIHRoZSBgQUZfUlhSUENgIGNvbmZpZy4gR29vZCwgdGhhdCYjMzk7cyBvdXIgc3RhcnRpbmcgcG9pbnQuIExldCYjMzk7cyBnZXQgcmlnaHQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIgYW5kIHplcm8gaW4gb24gdGhlIGtleSBzeW1ib2xzIGludm9sdmVkIGluIHRoaXMgcGF0Y2guCgpSaWdodCwgdGhlIHBhdGNoIGluY2x1ZGVzIGByeHJwY19kZXN0cm95X2FsbF9jb25uZWN0aW9uc2AuIEhtbSwgdGhhdCYjMzk7cyBhIHRlYXJkb3duIGZ1bmN0aW9uLCBzbyB3aGlsZSByZWxldmFudCBmb3IgY2xlYW51cCwgaXQmIzM5O3MgcHJvYmFibHkgbm90IHRoZSBtb3N0ICppbnRlcmVzdGluZyogcGxhY2UgdG8gYmVnaW4gb3VyIGludmVzdGlnYXRpb24uIEl0JiMzOTtzIHBhcnQgb2YgdGhlIHBpY3R1cmUsIGJ1dCBsaWtlbHkgYSBjb25zZXF1ZW5jZSByYXRoZXIgdGhhbiBhIHJvb3QgY2F1c2UuCgpOb3csIGByeHJwY19zZW5kX2RhdGFgLi4uIHRoYXQgbG9va3MgbW9yZSBwcm9taXNpbmcuIEl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCBuZXN0bGVkIGF3YXkgaW4gYG5ldC9yeHJwYy9zZW5kbXNnLmNgLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGluIGBzZW5kbXNnLmNgIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdDsgbGlrZWx5IGRlYWxpbmcgd2l0aCBvdXRnb2luZyBkYXRhLCBzbyBsZXQmIzM5O3MgdHJhY2sgZG93biB0aGUgY2FsbGVycyBhbmQgdW5kZXJzdGFuZCB0aGUgZGF0YSBwYXRocy4gVW5kZXJzdGFuZGluZyB3aG8gKmNhbGxzKiB0aGlzIGZ1bmN0aW9uIHdpbGwgdGVsbCBtZSBhIGxvdCBhYm91dCB0aGUgY29yZSBsb2dpYyBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZS4gTGV0JiMzOTtzIHNlZSBob3cgdGhlIGZsb3cgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwODowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyeHJwY19zZW5kX2RhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcnhycGMvc2VuZG1zZy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9yeHJwYy9zZW5kbXNnLmM9MjI5PXN0YXRpYyB2b2lkIHJ4cnBjX25vdGlmeV9lbmRfdHgoc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LCBzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcbi0tXG5uZXQvcnhycGMvc2VuZG1zZy5jLTIzNy0gKiBRdWV1ZSBhIERBVEEgcGFja2V0IGZvciB0cmFuc21pc3Npb24sIHNldCB0aGUgcmVzZW5kIHRpbWVvdXQgYW5kIHNlbmRcbm5ldC9yeHJwYy9zZW5kbXNnLmM6MjM4OiAqIHRoZSBwYWNrZXQgaW1tZWRpYXRlbHkuICBSZXR1cm5zIHRoZSBlcnJvciBmcm9tIHJ4cnBjX3NlbmRfZGF0YV9wYWNrZXQoKVxubmV0L3J4cnBjL3NlbmRtc2cuYy0yMzktICogaW4gY2FzZSB0aGUgY2FsbGVyIHdhbnRzIHRvIGRvIHNvbWV0aGluZyB3aXRoIGl0LlxuLS1cbm5ldC9yeHJwYy9zZW5kbXNnLmM9MjgxPXN0YXRpYyBpbnQgcnhycGNfYWxsb2NfdHhxdWV1ZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxuLS1cbm5ldC9yeHJwYy9zZW5kbXNnLmMtMzE5LSAqL1xubmV0L3J4cnBjL3NlbmRtc2cuYzozMjA6c3RhdGljIGludCByeHJwY19zZW5kX2RhdGEoc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LFxubmV0L3J4cnBjL3NlbmRtc2cuYy0zMjEtXHRcdFx0ICAgc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsXG4tLVxubmV0L3J4cnBjL3NlbmRtc2cuYz02Njg9aW50IHJ4cnBjX2RvX3NlbmRtc2coc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG4tLVxubmV0L3J4cnBjL3NlbmRtc2cuYy03NzktXHRjYXNlIFJYUlBDX0NNRF9TRU5EX0RBVEE6XG5uZXQvcnhycGMvc2VuZG1zZy5jOjc4MDpcdFx0cmV0ID0gcnhycGNfc2VuZF9kYXRhKHJ4LCBjYWxsLCBtc2csIGxlbiwgTlVMTCwgXHUwMDI2ZHJvcHBlZF9sb2NrKTtcbm5ldC9yeHJwYy9zZW5kbXNnLmMtNzgxLVx0XHRicmVhaztcbi0tXG5uZXQvcnhycGMvc2VuZG1zZy5jPTgxNT1pbnQgcnhycGNfa2VybmVsX3NlbmRfZGF0YShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcbi0tXG5uZXQvcnhycGMvc2VuZG1zZy5jLTgyOC1cbm5ldC9yeHJwYy9zZW5kbXNnLmM6ODI5Olx0cmV0ID0gcnhycGNfc2VuZF9kYXRhKHJ4cnBjX3NrKHNvY2stXHUwMDNlc2spLCBjYWxsLCBtc2csIGxlbixcbm5ldC9yeHJwYy9zZW5kbXNnLmMtODMwLVx0XHRcdCAgICAgIG5vdGlmeV9lbmRfdHgsIFx1MDAyNmRyb3BwZWRfbG9jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDg6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY5MQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpczoKCioqQW5hbHl6aW5nIHRoZSBSeFJQQyBTZW5kIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIFJ4UlBDIHNlbmQgcGF0aC4gSSYjMzk7dmUgZ290IGByeHJwY19kb19zZW5kbXNnYCBhbmQgYHJ4cnBjX2tlcm5lbF9zZW5kX2RhdGFgIGZsYWdnZWQgYXMgdGhlIGtleSBjYWxsZXJzIGhlcmUuIEdpdmVuIHRoYXQgYHJ4cnBjX2RvX3NlbmRtc2dgIGlzIGxpa2VseSB0aGUgZW50cnkgcG9pbnQsIGl0IGxvb2tzIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGRlZXAgZGl2ZS4KCk5vdywgSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IHNlcXVlbmNpbmcgd29ya3MgZHVyaW5nIHNlbmQuIFRoZSBjb2RlIHN1Z2dlc3RzIHRoYXQgYHJ4cnBjX3NlcV9pbl90eHFgIGlzIGlubGluZSwgd2hpY2ggbWVhbnMgaXQgd2lsbCBiZSBleHBhbmRlZCB3aGVyZXZlciBpdCYjMzk7cyBjYWxsZWQuIFRoYXQgbWVhbnMgdG8gc2VlIGl0JiMzOTtzIGJlaGF2aW9yLCBJIGhhdmUgdG8gZmluZCBhbGwgdGhlIHBsYWNlcyBpdCYjMzk7cyB1c2VkLiBMZXQgbWUgZ28gZmluZCB0aG9zZSBjYWxsIHNpdGVzIGluIHRoZSBoZWFkZXJzLiBJdCB3aWxsIHF1aWNrbHkgZ2l2ZSBtZSBjb250ZXh0IHRvIHRoZSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA4OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J4cnBjX3NlcV9pbl90eHEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcnhycGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9yeHJwYy9hci1pbnRlcm5hbC5oPTE1NzY9c3RhdGljIGlubGluZSB1MzIgbGF0ZXN0KHUzMiBzZXExLCB1MzIgc2VxMilcbi0tXG5uZXQvcnhycGMvYXItaW50ZXJuYWwuaC0xNTgwLVxubmV0L3J4cnBjL2FyLWludGVybmFsLmg6MTU4MTpzdGF0aWMgaW5saW5lIGJvb2wgcnhycGNfc2VxX2luX3R4cShjb25zdCBzdHJ1Y3QgcnhycGNfdHhxdWV1ZSAqdHEsIHJ4cnBjX3NlcV90IHNlcSlcbm5ldC9yeHJwYy9hci1pbnRlcm5hbC5oLTE1ODIte1xuLS1cbm5ldC9yeHJwYy9pbnB1dC5jPTg4Mj1zdGF0aWMgdm9pZCByeHJwY19pbnB1dF9zb2Z0X2Fja190cShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcbi0tXG5uZXQvcnhycGMvaW5wdXQuYy05NTctXHRpZiAoY2FsbC1cdTAwM2V0bHBfc2VyaWFsIFx1MDAyNlx1MDAyNlxubmV0L3J4cnBjL2lucHV0LmM6OTU4Olx0ICAgIHJ4cnBjX3NlcV9pbl90eHEodHEsIGNhbGwtXHUwMDNldGxwX3NlcSkgXHUwMDI2XHUwMDI2XG5uZXQvcnhycGMvaW5wdXQuYy05NTktXHQgICAgdGVzdF9iaXQoY2FsbC1cdTAwM2V0bHBfc2VxIC0gdHEtXHUwMDNlcWJhc2UsIFx1MDAyNm5ld19hY2tzKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwODowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjY3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIFJvbGUgb2YgYHJ4cnBjX2lucHV0X3NvZnRfYWNrX3RxYCBhbmQgYHJ4cnBjX2lucHV0X3NvZnRfYWNrc2AqKgoKUmlnaHQsIHRoZXNlIGZ1bmN0aW9ucyBhcmUgY2xlYXJseSBzaWduaWZpY2FudCwgbGlrZWx5IGRlYWxpbmcgd2l0aCBzb2Z0IGFja25vd2xlZGdlbWVudHMgd2l0aGluIHRoZSBSeFJQQyBpbnB1dCBwcm9jZXNzaW5nIHBhdGguIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCB0aGV5IGhhbmRsZSBzb21lIGtpbmQgb2YgcXVldWluZyBvciBkZWZlcnJlZCBhY2tub3dsZWRnZW1lbnQgbWVjaGFuaXNtLCBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBncmFjZWZ1bCBoYW5kbGluZyBvZiBpbmNvbWluZyBwYWNrZXRzLCBwb3RlbnRpYWxseSBtYW5hZ2luZyBjb25nZXN0aW9uIG9yIHJlb3JkZXJpbmcuIFRoZSBuYW1pbmcgY29udmVudGlvbiBzdWdnZXN0cyBhIHNvZnQgYWNrbm93bGVkZ2VtZW50LCBpbmRpY2F0aW5nIHBlcmhhcHMgYSBsZXNzIGltbWVkaWF0ZSBjb25maXJtYXRpb24gY29tcGFyZWQgdG8gYSBoYXJkIEFDSywgYW5kIHRoaXMgdXN1YWxseSBpbXBsaWVzIHNvbWUgbGV2ZWwgb2YgYnVmZmVyaW5nIG9yIGRlbGF5ZWQgcHJvY2Vzc2luZy4KClRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UgY29kZS4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYG5ldC9yeHJwYy9pbnB1dC5jYC4gVGhhdCBzaG91bGQgcHJvdmlkZSB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbiBhbmQgY29udGV4dCBmb3IgdGhlc2UgZnVuY3Rpb25zLiBJ4oCZbGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocywgdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGVzZSBmdW5jdGlvbnMgYXJlIGludm9rZWQsIGFuZCBpZGVudGlmeSB3aGF0IGRhdGEgc3RydWN0dXJlcyB0aGV5IGludGVyYWN0IHdpdGguIFVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgZmxvdyB3aWxsIGJlIGtleSB0byBncmFzcGluZyB0aGVpciBvdmVyYWxsIGZ1bmN0aW9uIGFuZCB0aGUgcmVhc29ucyBmb3IgdGhlaXIgZXhpc3RlbmNlLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSAmIzM0O3doeSYjMzQ7IGFuZCAmIzM0O2hvdyYjMzQ7IG9mIHRoaXMgZGVzaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwODowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyeHJwY19zZXFfaW5fdHhxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3J4cnBjL2lucHV0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3J4cnBjL2lucHV0LmM9ODgyPXN0YXRpYyB2b2lkIHJ4cnBjX2lucHV0X3NvZnRfYWNrX3RxKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLFxuLS1cbm5ldC9yeHJwYy9pbnB1dC5jLTk1Ny1cdGlmIChjYWxsLVx1MDAzZXRscF9zZXJpYWwgXHUwMDI2XHUwMDI2XG5uZXQvcnhycGMvaW5wdXQuYzo5NTg6XHQgICAgcnhycGNfc2VxX2luX3R4cSh0cSwgY2FsbC1cdTAwM2V0bHBfc2VxKSBcdTAwMjZcdTAwMjZcbm5ldC9yeHJwYy9pbnB1dC5jLTk1OS1cdCAgICB0ZXN0X2JpdChjYWxsLVx1MDAzZXRscF9zZXEgLSB0cS1cdTAwM2VxYmFzZSwgXHUwMDI2bmV3X2Fja3MpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwODowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzQ5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgYSBDb2RlIExvY2F0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIG91dCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhdCBsaW5lIDk1NyB3aXRoaW4gdGhlIGBuZXQvcnhycGMvaW5wdXQuY2AgZmlsZS4gR2l2ZW4gbXkgZXhwZXJ0aXNlIGluIHRoaXMgYXJlYSwgbXkgZmlyc3QgdGhvdWdodCBpcyB0byB1c2UgbXkgdG9vbHMgZWZmaWNpZW50bHkuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB3aGljaCBmdW5jdGlvbiB0aGlzIGxpbmUgaXMgd2l0aGluLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBlaXRoZXIgbXkgSURFJiMzOTtzICYjMzQ7ZmluZCBzeW1ib2wmIzM0OyBvciAmIzM0O2dvIHRvIGRlZmluaXRpb24mIzM0OyBmdW5jdGlvbnMsIG9yIEkmIzM5O2xsIHF1aWNrbHkgbGV2ZXJhZ2UgYGdyZXBgIG9yIGBhY2tgIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgd2l0aCBhIHNlYXJjaCBmb2N1c2VkIG9uIHRoZSBmdW5jdGlvbiBjb250YWluaW5nIHRoZSBsaW5lIG51bWJlci4gSSB3aWxsIHN0YXJ0IGJ5IHVzaW5nIG15IGZhbWlsaWFyIElERSB0b29scywgYW5kIGlmIHRoYXQgaXMgdG9vIHNsb3csIEkgd2lsbCBtb3ZlIHRvIHRoZSBjb21tYW5kIGxpbmUsIGtub3dpbmcgdGhlIGFwcHJvcHJpYXRlIGNvbW1hbmRzIHRvIG5hcnJvdyBteSByZXN1bHRzLiBUaGVuIEkgY2FuIGRldGVybWluZSwgYmFzZWQgb24gdGhhdCBmdW5jdGlvbiYjMzk7cyBwdXJwb3NlLCB3aGF0IHRoZSBjb2RlIGF0IHRoYXQgc3BlY2lmaWMgbGluZSBpcyBsaWtlbHkgZG9pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA4OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NhbGwtXHUwMDNldGxwX3NlcmlhbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9yeHJwYy9pbnB1dC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9yeHJwYy9pbnB1dC5jPTg4Mj1zdGF0aWMgdm9pZCByeHJwY19pbnB1dF9zb2Z0X2Fja190cShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcbi0tXG5uZXQvcnhycGMvaW5wdXQuYy05NTYtXG5uZXQvcnhycGMvaW5wdXQuYzo5NTc6XHRpZiAoY2FsbC1cdTAwM2V0bHBfc2VyaWFsIFx1MDAyNlx1MDAyNlxubmV0L3J4cnBjL2lucHV0LmMtOTU4LVx0ICAgIHJ4cnBjX3NlcV9pbl90eHEodHEsIGNhbGwtXHUwMDNldGxwX3NlcSkgXHUwMDI2XHUwMDI2XG4tLVxubmV0L3J4cnBjL2lucHV0LmM9MTA4MD1zdGF0aWMgdm9pZCByeHJwY19pbnB1dF9hY2soc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3J4cnBjL2lucHV0LmMtMTIxMy1cdHJ4cnBjX3RscF9wcm9jZXNzX2FjayhjYWxsLCBcdTAwMjZzdW1tYXJ5KTtcbm5ldC9yeHJwYy9pbnB1dC5jOjEyMTQ6XHRpZiAoY2FsbC1cdTAwM2V0bHBfc2VyaWFsIFx1MDAyNlx1MDAyNiBhZnRlcl9lcShzdW1tYXJ5LmFja2VkX3NlcmlhbCwgY2FsbC1cdTAwM2V0bHBfc2VyaWFsKSlcbm5ldC9yeHJwYy9pbnB1dC5jOjEyMTU6XHRcdGNhbGwtXHUwMDNldGxwX3NlcmlhbCA9IDA7XG5uZXQvcnhycGMvaW5wdXQuYy0xMjE2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwODowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Mjg4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmcsIGFuZCBhc3N1bWluZyBJJiMzOTttIHdlbGwtdmVyc2VkIGluIHRoaXMgYXJlYToKCioqQW5hbHl6aW5nIFBvdGVudGlhbCBJbnB1dCBBY2tub3dsZWRnZW1lbnQgTWVjaGFuaXNtcyoqCgpBbHJpZ2h0LCBJJiMzOTttIHRyeWluZyB0byBuYWlsIGRvd24gdGhlIHByZWNpc2UgZnVuY3Rpb24gaW52b2x2ZWQgaW4gYWNrbm93bGVkZ2luZyBpbmNvbWluZyBSUEMgZGF0YS4gVGhlIGtleSBoZXJlIHNlZW1zIHRvIGJlIGRpZmZlcmVudGlhdGluZyBiZXR3ZWVuIHRoZSBzb2Z0IGFja25vd2xlZGdlbWVudCB2ZXJzdXMgYSByZWd1bGFyIGFja25vd2xlZGdlbWVudC4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0JiMzOTtzIGVpdGhlciBgcnhycGNfaW5wdXRfc29mdF9hY2tfdHFgIG9yIHNpbXBseSBgcnhycGNfaW5wdXRfYWNrYCwgYnV0IEkgbmVlZCB0byBiZSBzdXJlLiBHaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb25zIHVzZWQgaW4gdGhpcyBjb2RlYmFzZSwgdGhlIGRpc3RpbmN0aW9uIGlzIHNpZ25pZmljYW50LiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGUgc3BlY2lmaWNzIG9mIGByeHJwY19pbnB1dF9zb2Z0X2Fja190cWAgZmlyc3QuIEkgd2FudCB0byBzZWUgcHJlY2lzZWx5IGhvdyBpdCBoYW5kbGVzIHRoZSBhY2tub3dsZWRnbWVudCBwcm9jZXNzIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgdGFzayBxdWV1ZS4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIHdoZXJlIHRoaXMgc3BlY2lmaWMgYWNrbm93bGVkZ2VtZW50IG1lY2hhbmlzbSBmaXRzIGludG8gdGhlIG92ZXJhbGwgc2NoZW1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwODowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyeHJwY19pbnB1dF9zb2Z0X2Fja190cSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9yeHJwYy9pbnB1dC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9yeHJwYy9pbnB1dC5jPTg3MD1zdGF0aWMgdm9pZCByeHJwY19pbnB1dF9zb2Z0X3J0dChzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcbi0tXG5uZXQvcnhycGMvaW5wdXQuYy04ODEtICovXG5uZXQvcnhycGMvaW5wdXQuYzo4ODI6c3RhdGljIHZvaWQgcnhycGNfaW5wdXRfc29mdF9hY2tfdHEoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsXG5uZXQvcnhycGMvaW5wdXQuYy04ODMtXHRcdFx0XHQgICAgc3RydWN0IHJ4cnBjX2Fja19zdW1tYXJ5ICpzdW1tYXJ5LFxuLS1cbm5ldC9yeHJwYy9pbnB1dC5jPTk3Mj1zdGF0aWMgdm9pZCByeHJwY19pbnB1dF9zb2Z0X2Fja3Moc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsXG4tLVxubmV0L3J4cnBjL2lucHV0LmMtMTAxMy1cbm5ldC9yeHJwYy9pbnB1dC5jOjEwMTQ6XHRcdHJ4cnBjX2lucHV0X3NvZnRfYWNrX3RxKGNhbGwsIHN1bW1hcnksIHRxLCBleHRyYWN0ZWQsIFJYUlBDX05SX1RYUVVFVUUsXG5uZXQvcnhycGMvaW5wdXQuYy0xMDE1LVx0XHRcdFx0XHRzZXEgLSBSWFJQQ19OUl9UWFFVRVVFLCBcdTAwMjZsb3dlc3RfbmFrKTtcbi0tXG5uZXQvcnhycGMvaW5wdXQuYy0xMDI2LVx0XHRfZGVidWcoXCYjMzQ7dGFpbCAgJTE2bHggJXVcJiMzNDssIGV4dHJhY3RlZCwgbnJfcmVwb3J0ZWQpO1xubmV0L3J4cnBjL2lucHV0LmM6MTAyNzpcdFx0cnhycGNfaW5wdXRfc29mdF9hY2tfdHEoY2FsbCwgc3VtbWFyeSwgdHEsIGV4dHJhY3RlZCwgbnJfcmVwb3J0ZWQsXG5uZXQvcnhycGMvaW5wdXQuYy0xMDI4LVx0XHRcdFx0XHRzZXEgXHUwMDI2IH5SWFJQQ19UWFFfTUFTSywgXHUwMDI2bG93ZXN0X25hayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA4OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGF0IGNvZGUgc2VxdWVuY2U6CgoqKkRlY29kaW5nIHRoZSBSeFJQQyBBY2tub3dsZWRnbWVudCBQYXRod2F5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgYWNrbm93bGVkZ21lbnRzIGFyZSBoYW5kbGVkIGluIHRoaXMgUnhSUEMgc3lzdGVtLiBUaGUgdHJhaWwgc3RhcnRzIHdpdGggYHJ4cnBjX2lucHV0X3NvZnRfYWNrc2AsIHdoaWNoIHNlZW1zIHRvIGJlIHRoZSBmdW5jdGlvbiB0aGF0IGFjdHVhbGx5ICpkb2VzKiB0aGUgc29mdCBhY2tub3dsZWRnbWVudCBwcm9jZXNzaW5nLiBOb3csIHdoZXJlIGlzICp0aGlzKiBjYWxsZWQgZnJvbT8gQWhhLCBpdCYjMzk7cyBjYWxsZWQgYnkgYHJ4cnBjX2lucHV0X2Fja2AuIFRoYXQgbWFrZXMgc2Vuc2U7IGByeHJwY19pbnB1dF9hY2tgIHByb2JhYmx5IGhhbmRsZXMgdGhlIGluaXRpYWwgcGFyc2luZyBhbmQgZGlzcGF0Y2ggb2YgYWNrbm93bGVkZ21lbnQtcmVsYXRlZCBwYWNrZXRzLiBHb29kLCBnb29kLiBCdXQgd2UgbmVlZCB0byB0cmFjZSB0aGlzIGZ1cnRoZXIuIFdoZXJlIGRvZXMgKnRoYXQqIGdldCBjYWxsZWQ/IFJpZ2h0LCBgcnhycGNfaW5wdXRfYWNrYCBpcyBjYWxsZWQgYnkgYHJ4cnBjX2lucHV0X2NhbGxfcGFja2V0YCBvciBzaW1pbGFyIGZ1bmN0aW9ucywgdGhlIHByaW1hcnkgaGFuZGxlcnMgZm9yIGluY29taW5nIFJ4UlBDIGNhbGwgcGFja2V0cy4gVGhpcyBnaXZlcyBhIG5pY2UgY2hhaW4uIE5vdywgSSBzaG91bGQgZGl2ZSBpbnRvIHRoZSBkZXRhaWxzIG9mIGByeHJwY19pbnB1dF9hY2tgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIG9mIHRoaXMgYWNrIHByb2Nlc3Mgd2lsbCBsaXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwODowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyeHJwY19pbnB1dF9hY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcnhycGMvaW5wdXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcnhycGMvaW5wdXQuYz03NDk9c3RhdGljIHZvaWQgcnhycGNfY29tcGxldGVfcnR0X3Byb2JlKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLFxuLS1cbm5ldC9yeHJwYy9pbnB1dC5jLTc5OC0gKi9cbm5ldC9yeHJwYy9pbnB1dC5jOjc5OTpzdGF0aWMgdm9pZCByeHJwY19pbnB1dF9hY2tfdHJhaWxlcihzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9yeHJwYy9pbnB1dC5jLTgwMC1cdFx0XHRcdCAgICBzdHJ1Y3QgcnhycGNfYWNrdHJhaWxlciAqdHJhaWxlcilcbi0tXG5uZXQvcnhycGMvaW5wdXQuYz0xMDUwPXN0YXRpYyBib29sIHJ4cnBjX2lzX2Fja192YWxpZChzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcbi0tXG5uZXQvcnhycGMvaW5wdXQuYy0xMDc5LSAqL1xubmV0L3J4cnBjL2lucHV0LmM6MTA4MDpzdGF0aWMgdm9pZCByeHJwY19pbnB1dF9hY2soc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvcnhycGMvaW5wdXQuYy0xMDgxLXtcbi0tXG5uZXQvcnhycGMvaW5wdXQuYy0xMTY0LVx0aWYgKHRyYWlsZXIubWF4TVRVKVxubmV0L3J4cnBjL2lucHV0LmM6MTE2NTpcdFx0cnhycGNfaW5wdXRfYWNrX3RyYWlsZXIoY2FsbCwgc2tiLCBcdTAwMjZ0cmFpbGVyKTtcbm5ldC9yeHJwYy9pbnB1dC5jLTExNjYtXG4tLVxubmV0L3J4cnBjL2lucHV0LmMtMTIyOC0gKi9cbm5ldC9yeHJwYy9pbnB1dC5jOjEyMjk6c3RhdGljIHZvaWQgcnhycGNfaW5wdXRfYWNrYWxsKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L3J4cnBjL2lucHV0LmMtMTIzMC17XG4tLVxubmV0L3J4cnBjL2lucHV0LmM9MTI2Mz12b2lkIHJ4cnBjX2lucHV0X2NhbGxfcGFja2V0KHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9yeHJwYy9pbnB1dC5jLTEyODktXHRjYXNlIFJYUlBDX1BBQ0tFVF9UWVBFX0FDSzpcbm5ldC9yeHJwYy9pbnB1dC5jOjEyOTA6XHRcdHJldHVybiByeHJwY19pbnB1dF9hY2soY2FsbCwgc2tiKTtcbm5ldC9yeHJwYy9pbnB1dC5jLTEyOTEtXG4tLVxubmV0L3J4cnBjL2lucHV0LmMtMTMwMi1cdGNhc2UgUlhSUENfUEFDS0VUX1RZUEVfQUNLQUxMOlxubmV0L3J4cnBjL2lucHV0LmM6MTMwMzpcdFx0cmV0dXJuIHJ4cnBjX2lucHV0X2Fja2FsbChjYWxsLCBza2IpO1xubmV0L3J4cnBjL2lucHV0LmMtMTMwNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDg6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzgxOAoJCQkJCQkJb3V0cHV0OiAxNzUKCQkJCQkJCXRob3VnaHRzOiA4NDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggQW5hbHlzaXMgYW5kIEZ1enppbmcgU3RyYXRlZ3kgZm9yIFJ4UlBDKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaHVuY2ggYWJvdXQgZm9jdXNpbmcgb24gYHJ4cnBjX2lucHV0X2NhbGxfcGFja2V0YCBzZWVtcyBzcG90IG9uLCBhbG9uZyB3aXRoIGByeHJwY19kb19zZW5kbXNnYCBhbmQgYHJ4cnBjX2tlcm5lbF9zZW5kX2RhdGFgLiBUaGVzZSBsb29rIGxpa2UgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIHRoaXMgcGF0Y2guCgpSZXZpZXdpbmcgdGhlIGNoYW5nZXMsIEkgc2VlIHRocmVlIGNyaXRpY2FsIGFyZWFzOgoKMS4gICoqYHJ4cnBjX3NlcV9pbl90eHFgKio6IFRoZSBsb2dpYyBoZXJlIGlzIHR3ZWFrZWQuIEl0JiMzOTtzIHVzZWQgaW4gYHJ4cnBjX2lucHV0X3NvZnRfYWNrX3RxYCwgc28gYW55IG1pc2JlaGF2aW9yIGhlcmUgY291bGQgaGF2ZSBjYXNjYWRpbmcgZWZmZWN0cyBvbiBBQ0sgcHJvY2Vzc2luZy4KMi4gICoqYHJ4cnBjX2Rlc3Ryb3lfYWxsX2Nvbm5lY3Rpb25zYCoqOiBUaGlzIGlzIGEgdGVhcmRvd24gZnVuY3Rpb24sIGNydWNpYWwgZm9yIHJlc291cmNlIGNsZWFudXAuIFRoZSBjaGFuZ2UgaW52b2x2ZXMgYSBjcnVjaWFsIHdhaXQgdG8gZW5zdXJlIGFsbCBkZWZlcnJlZCBkZXN0cnVjdG9ycyBjb21wbGV0ZSBiZWZvcmUgdmFsaWRhdGluZyB0aGUgY29ubmVjdGlvbiBsaXN0LiBUaGlzIGFkZHJlc3NlcyBhIHBvdGVudGlhbCByYWNlLgozLiAgKipgcnhycGNfc2VuZF9kYXRhYCoqOiBUaGUgZml4IHNwZWNpZmljYWxseSBhZGRyZXNzZXMgYW4gaXNzdWUgd2l0aCBgUlhSUENfQ0FMTF9UWF9OT19NT1JFYCBwcmV2ZW50aW5nIGxhdGUgc2VuZHMsIHdoaWNoIHJlbGF0ZXMgdG8gYm90aCBgcnhycGNfZG9fc2VuZG1zZ2AgYW5kIGByeHJwY19rZXJuZWxfc2VuZF9kYXRhYC4gVGhpcyBpcyBhIGNsZWFyIGJ1ZyBmaXguCgpUaGVyZWZvcmUsIHRoZSBtYWluIGFyZWFzIG9mIGZvY3VzIGZvciBmdXp6aW5nIHdpbGwgYmU6CgoqICAgYHJ4cnBjX2RvX3NlbmRtc2dgCiogICBgcnhycGNfa2VybmVsX3NlbmRfZGF0YWAKKiAgIGByeHJwY19pbnB1dF9jYWxsX3BhY2tldGAKCkNvbmZpZy13aXNlLCB0aGUgcGF0Y2ggdGFyZ2V0cyBgQUZfUlhSUENgLiBTaW5jZSBpdCYjMzk7cyBhIHRyaXN0YXRlLCBhbmQgY2FuIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLCBpdCYjMzk7cyB0aGUgb25seSBvbmUgSSBzaG91bGQgY2FyZSBhYm91dC4KCk5vdywgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIGNvZGUgY2hhbmdlcy4gSSYjMzk7dmUgcmUtZXhhbWluZWQgdGhlIGNvZGUgaW4gYG5ldC9yeHJwYy9hci1pbnRlcm5hbC5oYCBhbmQgYG5ldC9yeHJwYy9zZW5kbXNnLmNgIGFuZCBgbmV0L3J4cnBjL2Nvbm5fb2JqZWN0LmNgLiBUaGUgYHJ4cnBjX3NlcV9pbl90eHFgIGNoZWNrIGluIGBhci1pbnRlcm5hbC5oYCBpcyBpbmRlZWQgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYXMgaXMgdGhlIGByeHJwY19zZW5kX2RhdGFgIGZpeCBmb3IgYEVQUk9UT2AgYW5kIHRoZSBtb2RpZmljYXRpb24gaW4gYHJ4cnBjX2Rlc3Ryb3lfYWxsX2Nvbm5lY3Rpb25zYC4KClRoZSBgQVNTRVJUYCBjYWxsIGFmdGVyIHRoZSB3YWl0IGluIGByeHJwY19kZXN0cm95X2FsbF9jb25uZWN0aW9uc2AgaW5kaWNhdGVzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIHdoaWNoIGlzIGEgY29tbW9uIHNvdXJjZSBvZiBidWdzIHRoYXQgSSYjMzk7bGwgbG9vayBmb3IuCgpJbiBteSBleHBlcnQgb3BpbmlvbiwgdGhpcyBwYXRjaCBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVGhlIGNoYW5nZXMgYXJlIGFsbCBmdW5jdGlvbmFsIGFuZCB0b3VjaCBjb3JlIFJ4UlBDIG5ldHdvcmsgYmVoYXZpb3IuIFRoZSBmb2N1cyBhcmVhcywgYXMgSSYjMzk7dmUgbWVudGlvbmVkIGFyZToKCiogICBgcnhycGNfZG9fc2VuZG1zZ2AKKiAgIGByeHJwY19rZXJuZWxfc2VuZF9kYXRhYAoqICAgYHJ4cnBjX2lucHV0X2NhbGxfcGFja2V0YAoKVGhlIGNvbmZpZ3VyYXRpb24gSSYjMzk7bSBjb25jZXJuZWQgd2l0aCBpczoKCiogICBgQUZfUlhSUENgCgpHaXZlbiB0aGlzIGFuYWx5c2lzLCBJJiMzOTttIGNvbmZpZGVudCBpbiBzZXR0aW5nIHVwIHRoZSBmdXp6aW5nIGVudmlyb25tZW50IHdpdGggdGhlc2UgcGFyYW1ldGVycy4gTGV0JiMzOTtzIGdldCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDg6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FGX1JYUlBDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnhycGNfZG9fc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtyeHJwY19rZXJuZWxfc2VuZF9kYXRhJiMzNDssCiAgICAmIzM0O3J4cnBjX2lucHV0X2NhbGxfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGxvZ2ljIGluIGByeHJwY19zZXFfaW5fdHhxYCBmb3IgY2hlY2tpbmcgaWYgYSBzZXF1ZW5jZSBudW1iZXIgaXMgaW4gYSB0cmFuc21pc3Npb24gcXVldWUsIGFkZHMgYSBjaGVjayBmb3IgYFJYUlBDX0NBTExfVFhfTk9fTU9SRWAgaW4gYHJ4cnBjX3NlbmRfZGF0YWAgdG8gcHJldmVudCBsYXRlIHNlbmRzLCBhbmQgZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnNgIGJ5IG1vdmluZyB0aGUgYEFTU0VSVGAgYWZ0ZXIgd2FpdGluZyBmb3IgY29ubmVjdGlvbnMgdG8gYmUgZGVzdHJveWVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSByeHJwYyBuZXR3b3JraW5nIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FGX1JYUlBDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnhycGNfZG9fc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtyeHJwY19rZXJuZWxfc2VuZF9kYXRhJiMzNDssCiAgICAmIzM0O3J4cnBjX2lucHV0X2NhbGxfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGxvZ2ljIGluIGByeHJwY19zZXFfaW5fdHhxYCBmb3IgY2hlY2tpbmcgaWYgYSBzZXF1ZW5jZSBudW1iZXIgaXMgaW4gYSB0cmFuc21pc3Npb24gcXVldWUsIGFkZHMgYSBjaGVjayBmb3IgYFJYUlBDX0NBTExfVFhfTk9fTU9SRWAgaW4gYHJ4cnBjX3NlbmRfZGF0YWAgdG8gcHJldmVudCBsYXRlIHNlbmRzLCBhbmQgZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnNgIGJ5IG1vdmluZyB0aGUgYEFTU0VSVGAgYWZ0ZXIgd2FpdGluZyBmb3IgY29ubmVjdGlvbnMgdG8gYmUgZGVzdHJveWVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSByeHJwYyBuZXR3b3JraW5nIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwODowMDoxNS4zMjMxMDEzODRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjU5OTIxNjczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBRl9SWFJQQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ4cnBjX2RvX3NlbmRtc2dcIixcbiAgICBcInJ4cnBjX2tlcm5lbF9zZW5kX2RhdGFcIixcbiAgICBcInJ4cnBjX2lucHV0X2NhbGxfcGFja2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgbG9naWMgaW4gYHJ4cnBjX3NlcV9pbl90eHFgIGZvciBjaGVja2luZyBpZiBhIHNlcXVlbmNlIG51bWJlciBpcyBpbiBhIHRyYW5zbWlzc2lvbiBxdWV1ZSwgYWRkcyBhIGNoZWNrIGZvciBgUlhSUENfQ0FMTF9UWF9OT19NT1JFYCBpbiBgcnhycGNfc2VuZF9kYXRhYCB0byBwcmV2ZW50IGxhdGUgc2VuZHMsIGFuZCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIGByeHJwY19kZXN0cm95X2FsbF9jb25uZWN0aW9uc2AgYnkgbW92aW5nIHRoZSBgQVNTRVJUYCBhZnRlciB3YWl0aW5nIGZvciBjb25uZWN0aW9ucyB0byBiZSBkZXN0cm95ZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIHJ4cnBjIG5ldHdvcmtpbmcgc3Vic3lzdGVtIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6MDA6MTUuMzIzMTA5MjM0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDEyNzcxMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiOTYwYzI2ZjYwMzNjMGNhYjRjYzc2NjE0Mjc4ZmNmNDAyZGQzY2MzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMgMDg6MDA6MTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL2FyLWludGVybmFsLmggYi9uZXQvcnhycGMvYXItaW50ZXJuYWwuaFxcbmluZGV4IDg2NWYwNWZlMzdhYjkuLjI3OTkyZTEwZDgyYWQgMTAwNjQ0XFxuLS0tIGEvbmV0L3J4cnBjL2FyLWludGVybmFsLmhcXG4rKysgYi9uZXQvcnhycGMvYXItaW50ZXJuYWwuaFxcbkBAIC0xNTgwLDcgKzE1ODAsOCBAQCBzdGF0aWMgaW5saW5lIHUzMiBsYXRlc3QodTMyIHNlcTEsIHUzMiBzZXEyKVxcbiBcXG4gc3RhdGljIGlubGluZSBib29sIHJ4cnBjX3NlcV9pbl90eHEoY29uc3Qgc3RydWN0IHJ4cnBjX3R4cXVldWUgKnRxLCByeHJwY19zZXFfdCBzZXEpXFxuIHtcXG4tXFx0cmV0dXJuIChzZXEgXFx1MDAyNiAoUlhSUENfTlJfVFhRVUVVRSAtIDEpKSA9PSB0cS1cXHUwMDNlcWJhc2U7XFxuK1xcdHJldHVybiBhZnRlcl9lcShzZXEsIHRxLVxcdTAwM2VxYmFzZSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICAgIGJlZm9yZShzZXEsIHRxLVxcdTAwM2VxYmFzZSArIFJYUlBDX05SX1RYUVVFVUUpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHZvaWQgcnhycGNfcXVldWVfcnhfY2FsbF9wYWNrZXQoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpXFxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9jb25uX29iamVjdC5jIGIvbmV0L3J4cnBjL2Nvbm5fb2JqZWN0LmNcXG5pbmRleCAwZWNlNzE3ZGIwZjg1Li5kZjNmOTJiMWE0MmU5IDEwMDY0NFxcbi0tLSBhL25ldC9yeHJwYy9jb25uX29iamVjdC5jXFxuKysrIGIvbmV0L3J4cnBjL2Nvbm5fb2JqZWN0LmNcXG5AQCAtNDg1LDExICs0ODUsMTMgQEAgdm9pZCByeHJwY19kZXN0cm95X2FsbF9jb25uZWN0aW9ucyhzdHJ1Y3QgcnhycGNfbmV0ICpyeG5ldClcXG4gXFx0d3JpdGVfdW5sb2NrKFxcdTAwMjZyeG5ldC1cXHUwMDNlY29ubl9sb2NrKTtcXG4gXFx0QlVHX09OKGxlYWspO1xcbiBcXG4tXFx0QVNTRVJUKGxpc3RfZW1wdHkoXFx1MDAyNnJ4bmV0LVxcdTAwM2Vjb25uX3Byb2NfbGlzdCkpO1xcbi1cXG4tXFx0LyogV2UgbmVlZCB0byB3YWl0IGZvciB0aGUgY29ubmVjdGlvbnMgdG8gYmUgZGVzdHJveWVkIGJ5IFJDVSBhcyB0aGV5XFxuLVxcdCAqIHBpbiB0aGluZ3MgdGhhdCB3ZSBzdGlsbCBuZWVkIHRvIGdldCByaWQgb2YuXFxuK1xcdC8qIENvbm5lY3Rpb24gZGVzdHJ1Y3Rpb24gaXMgbm9ybWFsbHkgZGVmZXJyZWQgdG8gc3lzdGVtX3dxIGJlY2F1c2VcXG4rXFx0ICogdGhlIGZpbmFsLUFDSyB0aW1lciBpcyBzdGlsbCBwZW5kaW5nIHdoZW4gdGhlIGxhc3QgcmVmIGlzIGRyb3BwZWQuXFxuK1xcdCAqIFdhaXQgZm9yIHRoZSBkZWZlcnJlZCBkZXN0cnVjdG9ycyAoYW5kIHRoZSBSQ1UgZnJlZXMpIHRvIGNvbXBsZXRlXFxuK1xcdCAqIGJlZm9yZSBjaGVja2luZyBjb25uX3Byb2NfbGlzdDsgdGhleSByZW1vdmUgY29ubnMgZnJvbSBpdC5cXG4gXFx0ICovXFxuIFxcdHdhaXRfdmFyX2V2ZW50KFxcdTAwMjZyeG5ldC1cXHUwMDNlbnJfY29ubnMsICFhdG9taWNfcmVhZChcXHUwMDI2cnhuZXQtXFx1MDAzZW5yX2Nvbm5zKSk7XFxuK1xcbitcXHRBU1NFUlQobGlzdF9lbXB0eShcXHUwMDI2cnhuZXQtXFx1MDAzZWNvbm5fcHJvY19saXN0KSk7XFxuIFxcdF9sZWF2ZShcXFwiXFxcIik7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3NlbmRtc2cuYyBiL25ldC9yeHJwYy9zZW5kbXNnLmNcXG5pbmRleCBlZDJjOWE1MTAwNWFkLi5iMzlhZjU1MmM2YjQ2IDEwMDY0NFxcbi0tLSBhL25ldC9yeHJwYy9zZW5kbXNnLmNcXG4rKysgYi9uZXQvcnhycGMvc2VuZG1zZy5jXFxuQEAgLTM1OCw2ICszNTgsMTQgQEAgc3RhdGljIGludCByeHJwY19zZW5kX2RhdGEoc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LFxcbiBcXHRpZiAodHhiKVxcbiBcXHRcXHRyeHJwY19zZWVfdHhidWYodHhiLCByeHJwY190eGJ1Zl9zZWVfc2VuZF9tb3JlKTtcXG4gXFxuK1xcdHJldCA9IC1FUFJPVE87XFxuK1xcdGlmICh0ZXN0X2JpdChSWFJQQ19DQUxMX1RYX05PX01PUkUsIFxcdTAwMjZjYWxsLVxcdTAwM2VmbGFncykpIHtcXG4rXFx0XFx0dHJhY2VfcnhycGNfYWJvcnQoY2FsbC1cXHUwMDNlZGVidWdfaWQsIHJ4cnBjX3NlbmRtc2dfbGF0ZV9zZW5kLFxcbitcXHRcXHRcXHRcXHQgIGNhbGwtXFx1MDAzZWNpZCwgY2FsbC1cXHUwMDNlY2FsbF9pZCwgY2FsbC1cXHUwMDNlcnhfY29uc3VtZWQsXFxuK1xcdFxcdFxcdFxcdCAgMCwgLUVQUk9UTyk7XFxuK1xcdFxcdGdvdG8gbWF5YmVfZXJyb3I7XFxuK1xcdH1cXG4rXFxuIFxcdHJldCA9IC1FUElQRTtcXG4gXFx0aWYgKHNrLVxcdTAwM2Vza19zaHV0ZG93biBcXHUwMDI2IFNFTkRfU0hVVERPV04pXFxuIFxcdFxcdGdvdG8gbWF5YmVfZXJyb3I7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA4OjAwOjE1Ljc2NTI5NTY2NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQyMTU3MDEyNzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFGX1JYUlBDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnhycGNfZG9fc2VuZG1zZ1wiLFxuICAgIFwicnhycGNfa2VybmVsX3NlbmRfZGF0YVwiLFxuICAgIFwicnhycGNfaW5wdXRfY2FsbF9wYWNrZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBsb2dpYyBpbiBgcnhycGNfc2VxX2luX3R4cWAgZm9yIGNoZWNraW5nIGlmIGEgc2VxdWVuY2UgbnVtYmVyIGlzIGluIGEgdHJhbnNtaXNzaW9uIHF1ZXVlLCBhZGRzIGEgY2hlY2sgZm9yIGBSWFJQQ19DQUxMX1RYX05PX01PUkVgIGluIGByeHJwY19zZW5kX2RhdGFgIHRvIHByZXZlbnQgbGF0ZSBzZW5kcywgYW5kIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gYHJ4cnBjX2Rlc3Ryb3lfYWxsX2Nvbm5lY3Rpb25zYCBieSBtb3ZpbmcgdGhlIGBBU1NFUlRgIGFmdGVyIHdhaXRpbmcgZm9yIGNvbm5lY3Rpb25zIHRvIGJlIGRlc3Ryb3llZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgcnhycGMgbmV0d29ya2luZyBzdWJzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiOTYwYzI2ZjYwMzNjMGNhYjRjYzc2NjE0Mjc4ZmNmNDAyZGQzY2MzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwODowMDoxNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9hci1pbnRlcm5hbC5oIGIvbmV0L3J4cnBjL2FyLWludGVybmFsLmhcbmluZGV4IDg2NWYwNWZlMzdhYjkuLjI3OTkyZTEwZDgyYWQgMTAwNjQ0XG4tLS0gYS9uZXQvcnhycGMvYXItaW50ZXJuYWwuaFxuKysrIGIvbmV0L3J4cnBjL2FyLWludGVybmFsLmhcbkBAIC0xNTgwLDcgKzE1ODAsOCBAQCBzdGF0aWMgaW5saW5lIHUzMiBsYXRlc3QodTMyIHNlcTEsIHUzMiBzZXEyKVxuIFxuIHN0YXRpYyBpbmxpbmUgYm9vbCByeHJwY19zZXFfaW5fdHhxKGNvbnN0IHN0cnVjdCByeHJwY190eHF1ZXVlICp0cSwgcnhycGNfc2VxX3Qgc2VxKVxuIHtcbi1cdHJldHVybiAoc2VxIFx1MDAyNiAoUlhSUENfTlJfVFhRVUVVRSAtIDEpKSA9PSB0cS1cdTAwM2VxYmFzZTtcbitcdHJldHVybiBhZnRlcl9lcShzZXEsIHRxLVx1MDAzZXFiYXNlKSBcdTAwMjZcdTAwMjZcbitcdCAgICAgICBiZWZvcmUoc2VxLCB0cS1cdTAwM2VxYmFzZSArIFJYUlBDX05SX1RYUVVFVUUpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgcnhycGNfcXVldWVfcnhfY2FsbF9wYWNrZXQoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpXG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL2Nvbm5fb2JqZWN0LmMgYi9uZXQvcnhycGMvY29ubl9vYmplY3QuY1xuaW5kZXggMGVjZTcxN2RiMGY4NS4uZGYzZjkyYjFhNDJlOSAxMDA2NDRcbi0tLSBhL25ldC9yeHJwYy9jb25uX29iamVjdC5jXG4rKysgYi9uZXQvcnhycGMvY29ubl9vYmplY3QuY1xuQEAgLTQ4NSwxMSArNDg1LDEzIEBAIHZvaWQgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnMoc3RydWN0IHJ4cnBjX25ldCAqcnhuZXQpXG4gXHR3cml0ZV91bmxvY2soXHUwMDI2cnhuZXQtXHUwMDNlY29ubl9sb2NrKTtcbiBcdEJVR19PTihsZWFrKTtcbiBcbi1cdEFTU0VSVChsaXN0X2VtcHR5KFx1MDAyNnJ4bmV0LVx1MDAzZWNvbm5fcHJvY19saXN0KSk7XG4tXG4tXHQvKiBXZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBjb25uZWN0aW9ucyB0byBiZSBkZXN0cm95ZWQgYnkgUkNVIGFzIHRoZXlcbi1cdCAqIHBpbiB0aGluZ3MgdGhhdCB3ZSBzdGlsbCBuZWVkIHRvIGdldCByaWQgb2YuXG4rXHQvKiBDb25uZWN0aW9uIGRlc3RydWN0aW9uIGlzIG5vcm1hbGx5IGRlZmVycmVkIHRvIHN5c3RlbV93cSBiZWNhdXNlXG4rXHQgKiB0aGUgZmluYWwtQUNLIHRpbWVyIGlzIHN0aWxsIHBlbmRpbmcgd2hlbiB0aGUgbGFzdCByZWYgaXMgZHJvcHBlZC5cbitcdCAqIFdhaXQgZm9yIHRoZSBkZWZlcnJlZCBkZXN0cnVjdG9ycyAoYW5kIHRoZSBSQ1UgZnJlZXMpIHRvIGNvbXBsZXRlXG4rXHQgKiBiZWZvcmUgY2hlY2tpbmcgY29ubl9wcm9jX2xpc3Q7IHRoZXkgcmVtb3ZlIGNvbm5zIGZyb20gaXQuXG4gXHQgKi9cbiBcdHdhaXRfdmFyX2V2ZW50KFx1MDAyNnJ4bmV0LVx1MDAzZW5yX2Nvbm5zLCAhYXRvbWljX3JlYWQoXHUwMDI2cnhuZXQtXHUwMDNlbnJfY29ubnMpKTtcbitcbitcdEFTU0VSVChsaXN0X2VtcHR5KFx1MDAyNnJ4bmV0LVx1MDAzZWNvbm5fcHJvY19saXN0KSk7XG4gXHRfbGVhdmUoXCJcIik7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9zZW5kbXNnLmMgYi9uZXQvcnhycGMvc2VuZG1zZy5jXG5pbmRleCBlZDJjOWE1MTAwNWFkLi5iMzlhZjU1MmM2YjQ2IDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL3NlbmRtc2cuY1xuKysrIGIvbmV0L3J4cnBjL3NlbmRtc2cuY1xuQEAgLTM1OCw2ICszNTgsMTQgQEAgc3RhdGljIGludCByeHJwY19zZW5kX2RhdGEoc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LFxuIFx0aWYgKHR4YilcbiBcdFx0cnhycGNfc2VlX3R4YnVmKHR4YiwgcnhycGNfdHhidWZfc2VlX3NlbmRfbW9yZSk7XG4gXG4rXHRyZXQgPSAtRVBST1RPO1xuK1x0aWYgKHRlc3RfYml0KFJYUlBDX0NBTExfVFhfTk9fTU9SRSwgXHUwMDI2Y2FsbC1cdTAwM2VmbGFncykpIHtcbitcdFx0dHJhY2VfcnhycGNfYWJvcnQoY2FsbC1cdTAwM2VkZWJ1Z19pZCwgcnhycGNfc2VuZG1zZ19sYXRlX3NlbmQsXG4rXHRcdFx0XHQgIGNhbGwtXHUwMDNlY2lkLCBjYWxsLVx1MDAzZWNhbGxfaWQsIGNhbGwtXHUwMDNlcnhfY29uc3VtZWQsXG4rXHRcdFx0XHQgIDAsIC1FUFJPVE8pO1xuK1x0XHRnb3RvIG1heWJlX2Vycm9yO1xuK1x0fVxuK1xuIFx0cmV0ID0gLUVQSVBFO1xuIFx0aWYgKHNrLVx1MDAzZXNrX3NodXRkb3duIFx1MDAyNiBTRU5EX1NIVVRET1dOKVxuIFx0XHRnb3RvIG1heWJlX2Vycm9yO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6MDA6MTUuNzY1Mjk5NjE2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM1ODk3Nzg0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSWFJQQyBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgdG91Y2hpbmcgYSBmZXcgZmlsZXMgd2l0aGluIHRoZSBSWFJQQyBzdWJzeXN0ZW06IGBhci1pbnRlcm5hbC5oYCwgYGNvbm5fb2JqZWN0LmNgLCBhbmQgYHNlbmRtc2cuY2AuIFRoZSBjaGFuZ2VzIGxvb2sgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmcm9tIHRoZSBmaWxlIGxpc3QuIEZpcnN0LCB0aGVyZSdzIGEgZml4IHRvIHRoZSBgcnhycGNfc2VxX2luX3R4cWAgbG9naWMgaW4gdGhlIGhlYWRlci4gVGhhdCdzIGdvb2QsIGFsd2F5cyBnb29kIHRvIHRpZHkgdXAgcG90ZW50aWFsIHNlcXVlbmNlLXJlbGF0ZWQgaXNzdWVzLiBTZWNvbmQsIHRoZSBwYXRjaCBtb3ZlcyBhbiBgQVNTRVJUYCB3aXRoaW4gYHJ4cnBjX2Rlc3Ryb3lfYWxsX2Nvbm5lY3Rpb25zYCBpbiBgY29ubl9vYmplY3QuY2AuIEl0IGxvb2tzIGxpa2UgaXQncyBndWFyZGluZyBhZ2FpbnN0IGEgcmFjZSBjb25kaXRpb24uIEl0J3MgbW92aW5nIHRoZSBhc3NlcnRpb24gdG8gZW5zdXJlIHRoZSBgY29ubl9wcm9jX2xpc3RgIGlzIGVtcHR5IGFmdGVyIHdhaXRpbmcgZm9yIHRoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMgdG8gaGl0IHplcm8uIFRoYXQncyBhIHNvbGlkIGNoYW5nZSwgcHJvYmFibHkgcmVsYXRlZCB0byBvYmplY3QgbGlmZWN5Y2xlIG1hbmFnZW1lbnQuIEFuZCBmaW5hbGx5LCBhIGNoZWNrIGZvciBgUlhSUENfQ0FMTF9UWF9OT19NT1JFYCBoYXMgYmVlbiBhZGRlZCB0byBgcnhycGNfc2VuZF9kYXRhYCBpbiBgc2VuZG1zZy5jYC4gVGhpcyBpcyBsaWtlbHkgdG8gcHJldmVudCBkYXRhIGJlaW5nIHRyYW5zbWl0dGVkIHdoZW4gd2UgYXJlIGV4cGVjdGVkIG5vdCB0byB0cmFuc21pdC5cblxuRnVuY3Rpb25hbGx5LCB0aGVzZSBhcmUgYWxsIGNoYW5nZXMgaW4gdGhlIFJYUlBDIG5ldHdvcmtpbmcgc3Vic3lzdGVtLiBUaGlzIGlzIHRoZSBraW5kIG9mIHBhdGNoIHRoYXQgKmRlbWFuZHMqIGZ1enppbmcuIFdlIG5lZWQgdG8gdGhyb3cgZXZlcnl0aGluZyB3ZSBjYW4gYXQgaXQgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBzdWJ0bGUgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciB1bmRlciBsb2FkLCBlc3BlY2lhbGx5IHdpdGggdGhvc2UgY29uY3VycmVuY3ktcmVsYXRlZCBmaXhlcy5cblxuVGltZSB0byBsb29rIGludG8gdGhlIGNvbmZpZ3VyYXRpb24uIFRoZSBwcmltYXJ5IGNvbmZpZyBvcHRpb24gZm9yIFJYUlBDIGlzIGBDT05GSUdfQUZfUlhSUENgLiBMZXQncyBjb25maXJtIHRoYXQgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zLiBJJ2xsIGNoZWNrIGBuZXQvcnhycGMvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZGVwZW5kZW5jaWVzIG9yIHJlbGF0ZWQgZmVhdHVyZXMgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQgZHVyaW5nIHRlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MzcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwODowMDoyMS4xMjQyODEzNzJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkxOTE5MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFGX1JYUlBDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9yeHJwYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yeHJwYy9LY29uZmlnLTUtXFxubmV0L3J4cnBjL0tjb25maWc6Njpjb25maWcgQUZfUlhSUENcXG5uZXQvcnhycGMvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJSeFJQQyBzZXNzaW9uIHNvY2tldHNcXFwiXFxuLS1cXG5uZXQvcnhycGMvS2NvbmZpZz0yNT1pZiBBRl9SWFJQQ1xcbm5ldC9yeHJwYy9LY29uZmlnLTI2LVxcbm5ldC9yeHJwYy9LY29uZmlnOjI3OmNvbmZpZyBBRl9SWFJQQ19JUFY2XFxubmV0L3J4cnBjL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiSVB2NiBzdXBwb3J0IGZvciBSeFJQQ1xcXCJcXG4tLVxcbm5ldC9yeHJwYy9LY29uZmlnLTMzLVxcbm5ldC9yeHJwYy9LY29uZmlnOjM0OmNvbmZpZyBBRl9SWFJQQ19JTkpFQ1RfTE9TU1xcbm5ldC9yeHJwYy9LY29uZmlnLTM1LVxcdGJvb2wgXFxcIkluamVjdCBwYWNrZXQgbG9zcyBpbnRvIFJ4UlBDIHBhY2tldCBzdHJlYW1cXFwiXFxuLS1cXG5uZXQvcnhycGMvS2NvbmZpZy0zOS1cXG5uZXQvcnhycGMvS2NvbmZpZzo0MDpjb25maWcgQUZfUlhSUENfSU5KRUNUX1JYX0RFTEFZXFxubmV0L3J4cnBjL0tjb25maWctNDEtXFx0Ym9vbCBcXFwiSW5qZWN0IGRlbGF5IGludG8gcGFja2V0IHJlY2VwdGlvblxcXCJcXG4tLVxcbm5ldC9yeHJwYy9LY29uZmlnLTQ5LVxcbm5ldC9yeHJwYy9LY29uZmlnOjUwOmNvbmZpZyBBRl9SWFJQQ19ERUJVR1xcbm5ldC9yeHJwYy9LY29uZmlnLTUxLVxcdGJvb2wgXFxcIlJ4UlBDIGR5bmFtaWMgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L3J4cnBjL0tjb25maWc9ODk9Y29uZmlnIFJYUEVSRlxcbi0tXFxubmV0L3J4cnBjL0tjb25maWctOTUtXFxubmV0L3J4cnBjL0tjb25maWc6OTY6Y29uZmlnIEFGX1JYUlBDX0tVTklUX1RFU1RcXG5uZXQvcnhycGMvS2NvbmZpZy05Ny1cXHR0cmlzdGF0ZSBcXFwiUnhSUEMgY3J5cHRvIEtVbml0IHRlc3RcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6MDA6MjEuMTgzNDgyNDg4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk4MjkxNjcwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRm9jdXNpbmcgb24gUlhSUEMgUGF0Y2ggUG9pbnRzKipcblxuQWxyaWdodCwgc28gd2UncmUgZGl2aW5nIGludG8gdGhlIGBBRl9SWFJQQ2AgY29uZmlnLiBHb29kLCB0aGF0J3Mgb3VyIHN0YXJ0aW5nIHBvaW50LiBMZXQncyBnZXQgcmlnaHQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIgYW5kIHplcm8gaW4gb24gdGhlIGtleSBzeW1ib2xzIGludm9sdmVkIGluIHRoaXMgcGF0Y2guXG5cblJpZ2h0LCB0aGUgcGF0Y2ggaW5jbHVkZXMgYHJ4cnBjX2Rlc3Ryb3lfYWxsX2Nvbm5lY3Rpb25zYC4gSG1tLCB0aGF0J3MgYSB0ZWFyZG93biBmdW5jdGlvbiwgc28gd2hpbGUgcmVsZXZhbnQgZm9yIGNsZWFudXAsIGl0J3MgcHJvYmFibHkgbm90IHRoZSBtb3N0ICppbnRlcmVzdGluZyogcGxhY2UgdG8gYmVnaW4gb3VyIGludmVzdGlnYXRpb24uIEl0J3MgcGFydCBvZiB0aGUgcGljdHVyZSwgYnV0IGxpa2VseSBhIGNvbnNlcXVlbmNlIHJhdGhlciB0aGFuIGEgcm9vdCBjYXVzZS5cblxuTm93LCBgcnhycGNfc2VuZF9kYXRhYC4uLiB0aGF0IGxvb2tzIG1vcmUgcHJvbWlzaW5nLiBJdCdzIGEgc3RhdGljIGZ1bmN0aW9uLCBuZXN0bGVkIGF3YXkgaW4gYG5ldC9yeHJwYy9zZW5kbXNnLmNgLiBUaGUgZmFjdCB0aGF0IGl0J3MgaW4gYHNlbmRtc2cuY2AgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0OyBsaWtlbHkgZGVhbGluZyB3aXRoIG91dGdvaW5nIGRhdGEsIHNvIGxldCdzIHRyYWNrIGRvd24gdGhlIGNhbGxlcnMgYW5kIHVuZGVyc3RhbmQgdGhlIGRhdGEgcGF0aHMuIFVuZGVyc3RhbmRpbmcgd2hvICpjYWxscyogdGhpcyBmdW5jdGlvbiB3aWxsIHRlbGwgbWUgYSBsb3QgYWJvdXQgdGhlIGNvcmUgbG9naWMgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuIExldCdzIHNlZSBob3cgdGhlIGZsb3cgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc5NSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA4OjAwOjI2LjE2NjQwMjgxN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTcyNDQzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyeHJwY19zZW5kX2RhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3J4cnBjL3NlbmRtc2cuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcnhycGMvc2VuZG1zZy5jPTIyOT1zdGF0aWMgdm9pZCByeHJwY19ub3RpZnlfZW5kX3R4KHN0cnVjdCByeHJwY19zb2NrICpyeCwgc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsXFxuLS1cXG5uZXQvcnhycGMvc2VuZG1zZy5jLTIzNy0gKiBRdWV1ZSBhIERBVEEgcGFja2V0IGZvciB0cmFuc21pc3Npb24sIHNldCB0aGUgcmVzZW5kIHRpbWVvdXQgYW5kIHNlbmRcXG5uZXQvcnhycGMvc2VuZG1zZy5jOjIzODogKiB0aGUgcGFja2V0IGltbWVkaWF0ZWx5LiAgUmV0dXJucyB0aGUgZXJyb3IgZnJvbSByeHJwY19zZW5kX2RhdGFfcGFja2V0KClcXG5uZXQvcnhycGMvc2VuZG1zZy5jLTIzOS0gKiBpbiBjYXNlIHRoZSBjYWxsZXIgd2FudHMgdG8gZG8gc29tZXRoaW5nIHdpdGggaXQuXFxuLS1cXG5uZXQvcnhycGMvc2VuZG1zZy5jPTI4MT1zdGF0aWMgaW50IHJ4cnBjX2FsbG9jX3R4cXVldWUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbClcXG4tLVxcbm5ldC9yeHJwYy9zZW5kbXNnLmMtMzE5LSAqL1xcbm5ldC9yeHJwYy9zZW5kbXNnLmM6MzIwOnN0YXRpYyBpbnQgcnhycGNfc2VuZF9kYXRhKHN0cnVjdCByeHJwY19zb2NrICpyeCxcXG5uZXQvcnhycGMvc2VuZG1zZy5jLTMyMS1cXHRcXHRcXHQgICBzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcXG4tLVxcbm5ldC9yeHJwYy9zZW5kbXNnLmM9NjY4PWludCByeHJwY19kb19zZW5kbXNnKHN0cnVjdCByeHJwY19zb2NrICpyeCwgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbi0tXFxubmV0L3J4cnBjL3NlbmRtc2cuYy03NzktXFx0Y2FzZSBSWFJQQ19DTURfU0VORF9EQVRBOlxcbm5ldC9yeHJwYy9zZW5kbXNnLmM6NzgwOlxcdFxcdHJldCA9IHJ4cnBjX3NlbmRfZGF0YShyeCwgY2FsbCwgbXNnLCBsZW4sIE5VTEwsIFxcdTAwMjZkcm9wcGVkX2xvY2spO1xcbm5ldC9yeHJwYy9zZW5kbXNnLmMtNzgxLVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L3J4cnBjL3NlbmRtc2cuYz04MTU9aW50IHJ4cnBjX2tlcm5lbF9zZW5kX2RhdGEoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsXFxuLS1cXG5uZXQvcnhycGMvc2VuZG1zZy5jLTgyOC1cXG5uZXQvcnhycGMvc2VuZG1zZy5jOjgyOTpcXHRyZXQgPSByeHJwY19zZW5kX2RhdGEocnhycGNfc2soc29jay1cXHUwMDNlc2spLCBjYWxsLCBtc2csIGxlbixcXG5uZXQvcnhycGMvc2VuZG1zZy5jLTgzMC1cXHRcXHRcXHQgICAgICBub3RpZnlfZW5kX3R4LCBcXHUwMDI2ZHJvcHBlZF9sb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6MDA6MjYuMjUyMTUxNzgyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3NjUwNDQzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzOlxuXG4qKkFuYWx5emluZyB0aGUgUnhSUEMgU2VuZCBQYXRoKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgUnhSUEMgc2VuZCBwYXRoLiBJJ3ZlIGdvdCBgcnhycGNfZG9fc2VuZG1zZ2AgYW5kIGByeHJwY19rZXJuZWxfc2VuZF9kYXRhYCBmbGFnZ2VkIGFzIHRoZSBrZXkgY2FsbGVycyBoZXJlLiBHaXZlbiB0aGF0IGByeHJwY19kb19zZW5kbXNnYCBpcyBsaWtlbHkgdGhlIGVudHJ5IHBvaW50LCBpdCBsb29rcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBkZWVwIGRpdmUuXG5cbk5vdywgSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IHNlcXVlbmNpbmcgd29ya3MgZHVyaW5nIHNlbmQuIFRoZSBjb2RlIHN1Z2dlc3RzIHRoYXQgYHJ4cnBjX3NlcV9pbl90eHFgIGlzIGlubGluZSwgd2hpY2ggbWVhbnMgaXQgd2lsbCBiZSBleHBhbmRlZCB3aGVyZXZlciBpdCdzIGNhbGxlZC4gVGhhdCBtZWFucyB0byBzZWUgaXQncyBiZWhhdmlvciwgSSBoYXZlIHRvIGZpbmQgYWxsIHRoZSBwbGFjZXMgaXQncyB1c2VkLiBMZXQgbWUgZ28gZmluZCB0aG9zZSBjYWxsIHNpdGVzIGluIHRoZSBoZWFkZXJzLiBJdCB3aWxsIHF1aWNrbHkgZ2l2ZSBtZSBjb250ZXh0IHRvIHRoZSBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjkxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6MDA6MjkuNzI4NjU5Mjc1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNTQyNzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ4cnBjX3NlcV9pbl90eHFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3J4cnBjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcnhycGMvYXItaW50ZXJuYWwuaD0xNTc2PXN0YXRpYyBpbmxpbmUgdTMyIGxhdGVzdCh1MzIgc2VxMSwgdTMyIHNlcTIpXFxuLS1cXG5uZXQvcnhycGMvYXItaW50ZXJuYWwuaC0xNTgwLVxcbm5ldC9yeHJwYy9hci1pbnRlcm5hbC5oOjE1ODE6c3RhdGljIGlubGluZSBib29sIHJ4cnBjX3NlcV9pbl90eHEoY29uc3Qgc3RydWN0IHJ4cnBjX3R4cXVldWUgKnRxLCByeHJwY19zZXFfdCBzZXEpXFxubmV0L3J4cnBjL2FyLWludGVybmFsLmgtMTU4Mi17XFxuLS1cXG5uZXQvcnhycGMvaW5wdXQuYz04ODI9c3RhdGljIHZvaWQgcnhycGNfaW5wdXRfc29mdF9hY2tfdHEoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsXFxuLS1cXG5uZXQvcnhycGMvaW5wdXQuYy05NTctXFx0aWYgKGNhbGwtXFx1MDAzZXRscF9zZXJpYWwgXFx1MDAyNlxcdTAwMjZcXG5uZXQvcnhycGMvaW5wdXQuYzo5NTg6XFx0ICAgIHJ4cnBjX3NlcV9pbl90eHEodHEsIGNhbGwtXFx1MDAzZXRscF9zZXEpIFxcdTAwMjZcXHUwMDI2XFxubmV0L3J4cnBjL2lucHV0LmMtOTU5LVxcdCAgICB0ZXN0X2JpdChjYWxsLVxcdTAwM2V0bHBfc2VxIC0gdHEtXFx1MDAzZXFiYXNlLCBcXHUwMDI2bmV3X2Fja3MpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwODowMDoyOS43NzkyMTM2NTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTc4MzgzNDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBSb2xlIG9mIGByeHJwY19pbnB1dF9zb2Z0X2Fja190cWAgYW5kIGByeHJwY19pbnB1dF9zb2Z0X2Fja3NgKipcblxuUmlnaHQsIHRoZXNlIGZ1bmN0aW9ucyBhcmUgY2xlYXJseSBzaWduaWZpY2FudCwgbGlrZWx5IGRlYWxpbmcgd2l0aCBzb2Z0IGFja25vd2xlZGdlbWVudHMgd2l0aGluIHRoZSBSeFJQQyBpbnB1dCBwcm9jZXNzaW5nIHBhdGguIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCB0aGV5IGhhbmRsZSBzb21lIGtpbmQgb2YgcXVldWluZyBvciBkZWZlcnJlZCBhY2tub3dsZWRnZW1lbnQgbWVjaGFuaXNtLCBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBncmFjZWZ1bCBoYW5kbGluZyBvZiBpbmNvbWluZyBwYWNrZXRzLCBwb3RlbnRpYWxseSBtYW5hZ2luZyBjb25nZXN0aW9uIG9yIHJlb3JkZXJpbmcuIFRoZSBuYW1pbmcgY29udmVudGlvbiBzdWdnZXN0cyBhIHNvZnQgYWNrbm93bGVkZ2VtZW50LCBpbmRpY2F0aW5nIHBlcmhhcHMgYSBsZXNzIGltbWVkaWF0ZSBjb25maXJtYXRpb24gY29tcGFyZWQgdG8gYSBoYXJkIEFDSywgYW5kIHRoaXMgdXN1YWxseSBpbXBsaWVzIHNvbWUgbGV2ZWwgb2YgYnVmZmVyaW5nIG9yIGRlbGF5ZWQgcHJvY2Vzc2luZy5cblxuVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLCBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHNvdXJjZSBjb2RlLiBMZXQncyBzdGFydCB3aXRoIGBuZXQvcnhycGMvaW5wdXQuY2AuIFRoYXQgc2hvdWxkIHByb3ZpZGUgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gYW5kIGNvbnRleHQgZm9yIHRoZXNlIGZ1bmN0aW9ucy4gSeKAmWxsIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMsIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlc2UgZnVuY3Rpb25zIGFyZSBpbnZva2VkLCBhbmQgaWRlbnRpZnkgd2hhdCBkYXRhIHN0cnVjdHVyZXMgdGhleSBpbnRlcmFjdCB3aXRoLiBVbmRlcnN0YW5kaW5nIHRoZSBkYXRhIGZsb3cgd2lsbCBiZSBrZXkgdG8gZ3Jhc3BpbmcgdGhlaXIgb3ZlcmFsbCBmdW5jdGlvbiBhbmQgdGhlIHJlYXNvbnMgZm9yIHRoZWlyIGV4aXN0ZW5jZS4gSSdtIGxvb2tpbmcgZm9yIHRoZSBcIndoeVwiIGFuZCBcImhvd1wiIG9mIHRoaXMgZGVzaWduLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjY3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6MDA6MzMuMzU3NjAxMTQ4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODU3Nzc1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyeHJwY19zZXFfaW5fdHhxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9yeHJwYy9pbnB1dC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yeHJwYy9pbnB1dC5jPTg4Mj1zdGF0aWMgdm9pZCByeHJwY19pbnB1dF9zb2Z0X2Fja190cShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcXG4tLVxcbm5ldC9yeHJwYy9pbnB1dC5jLTk1Ny1cXHRpZiAoY2FsbC1cXHUwMDNldGxwX3NlcmlhbCBcXHUwMDI2XFx1MDAyNlxcbm5ldC9yeHJwYy9pbnB1dC5jOjk1ODpcXHQgICAgcnhycGNfc2VxX2luX3R4cSh0cSwgY2FsbC1cXHUwMDNldGxwX3NlcSkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvcnhycGMvaW5wdXQuYy05NTktXFx0ICAgIHRlc3RfYml0KGNhbGwtXFx1MDAzZXRscF9zZXEgLSB0cS1cXHUwMDNlcWJhc2UsIFxcdTAwMjZuZXdfYWNrcykpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA4OjAwOjMzLjQwNjE5MzQxNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDI1NjgyNTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyBhIENvZGUgTG9jYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmluZCBvdXQgd2hhdCdzIGhhcHBlbmluZyBhdCBsaW5lIDk1NyB3aXRoaW4gdGhlIGBuZXQvcnhycGMvaW5wdXQuY2AgZmlsZS4gR2l2ZW4gbXkgZXhwZXJ0aXNlIGluIHRoaXMgYXJlYSwgbXkgZmlyc3QgdGhvdWdodCBpcyB0byB1c2UgbXkgdG9vbHMgZWZmaWNpZW50bHkuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHdoaWNoIGZ1bmN0aW9uIHRoaXMgbGluZSBpcyB3aXRoaW4uIEknbGwgbmVlZCB0byB1c2UgZWl0aGVyIG15IElERSdzIFwiZmluZCBzeW1ib2xcIiBvciBcImdvIHRvIGRlZmluaXRpb25cIiBmdW5jdGlvbnMsIG9yIEknbGwgcXVpY2tseSBsZXZlcmFnZSBgZ3JlcGAgb3IgYGFja2AgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCB3aXRoIGEgc2VhcmNoIGZvY3VzZWQgb24gdGhlIGZ1bmN0aW9uIGNvbnRhaW5pbmcgdGhlIGxpbmUgbnVtYmVyLiBJIHdpbGwgc3RhcnQgYnkgdXNpbmcgbXkgZmFtaWxpYXIgSURFIHRvb2xzLCBhbmQgaWYgdGhhdCBpcyB0b28gc2xvdywgSSB3aWxsIG1vdmUgdG8gdGhlIGNvbW1hbmQgbGluZSwga25vd2luZyB0aGUgYXBwcm9wcmlhdGUgY29tbWFuZHMgdG8gbmFycm93IG15IHJlc3VsdHMuIFRoZW4gSSBjYW4gZGV0ZXJtaW5lLCBiYXNlZCBvbiB0aGF0IGZ1bmN0aW9uJ3MgcHVycG9zZSwgd2hhdCB0aGUgY29kZSBhdCB0aGF0IHNwZWNpZmljIGxpbmUgaXMgbGlrZWx5IGRvaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzQ5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6MDA6MzYuODMxODc5ODcyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzMzNzI5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjYWxsLVxcdTAwM2V0bHBfc2VyaWFsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9yeHJwYy9pbnB1dC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yeHJwYy9pbnB1dC5jPTg4Mj1zdGF0aWMgdm9pZCByeHJwY19pbnB1dF9zb2Z0X2Fja190cShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcXG4tLVxcbm5ldC9yeHJwYy9pbnB1dC5jLTk1Ni1cXG5uZXQvcnhycGMvaW5wdXQuYzo5NTc6XFx0aWYgKGNhbGwtXFx1MDAzZXRscF9zZXJpYWwgXFx1MDAyNlxcdTAwMjZcXG5uZXQvcnhycGMvaW5wdXQuYy05NTgtXFx0ICAgIHJ4cnBjX3NlcV9pbl90eHEodHEsIGNhbGwtXFx1MDAzZXRscF9zZXEpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvcnhycGMvaW5wdXQuYz0xMDgwPXN0YXRpYyB2b2lkIHJ4cnBjX2lucHV0X2FjayhzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9yeHJwYy9pbnB1dC5jLTEyMTMtXFx0cnhycGNfdGxwX3Byb2Nlc3NfYWNrKGNhbGwsIFxcdTAwMjZzdW1tYXJ5KTtcXG5uZXQvcnhycGMvaW5wdXQuYzoxMjE0OlxcdGlmIChjYWxsLVxcdTAwM2V0bHBfc2VyaWFsIFxcdTAwMjZcXHUwMDI2IGFmdGVyX2VxKHN1bW1hcnkuYWNrZWRfc2VyaWFsLCBjYWxsLVxcdTAwM2V0bHBfc2VyaWFsKSlcXG5uZXQvcnhycGMvaW5wdXQuYzoxMjE1OlxcdFxcdGNhbGwtXFx1MDAzZXRscF9zZXJpYWwgPSAwO1xcbm5ldC9yeHJwYy9pbnB1dC5jLTEyMTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA4OjAwOjM2Ljg3OTIyMzg0OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDc4MzYyNTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmcsIGFuZCBhc3N1bWluZyBJJ20gd2VsbC12ZXJzZWQgaW4gdGhpcyBhcmVhOlxuXG4qKkFuYWx5emluZyBQb3RlbnRpYWwgSW5wdXQgQWNrbm93bGVkZ2VtZW50IE1lY2hhbmlzbXMqKlxuXG5BbHJpZ2h0LCBJJ20gdHJ5aW5nIHRvIG5haWwgZG93biB0aGUgcHJlY2lzZSBmdW5jdGlvbiBpbnZvbHZlZCBpbiBhY2tub3dsZWRnaW5nIGluY29taW5nIFJQQyBkYXRhLiBUaGUga2V5IGhlcmUgc2VlbXMgdG8gYmUgZGlmZmVyZW50aWF0aW5nIGJldHdlZW4gdGhlIHNvZnQgYWNrbm93bGVkZ2VtZW50IHZlcnN1cyBhIHJlZ3VsYXIgYWNrbm93bGVkZ2VtZW50LiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgaXQncyBlaXRoZXIgYHJ4cnBjX2lucHV0X3NvZnRfYWNrX3RxYCBvciBzaW1wbHkgYHJ4cnBjX2lucHV0X2Fja2AsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZS4gR2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9ucyB1c2VkIGluIHRoaXMgY29kZWJhc2UsIHRoZSBkaXN0aW5jdGlvbiBpcyBzaWduaWZpY2FudC4gTGV0J3MgZGVsdmUgaW50byB0aGUgc3BlY2lmaWNzIG9mIGByeHJwY19pbnB1dF9zb2Z0X2Fja190cWAgZmlyc3QuIEkgd2FudCB0byBzZWUgcHJlY2lzZWx5IGhvdyBpdCBoYW5kbGVzIHRoZSBhY2tub3dsZWRnbWVudCBwcm9jZXNzIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgdGFzayBxdWV1ZS4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIHdoZXJlIHRoaXMgc3BlY2lmaWMgYWNrbm93bGVkZ2VtZW50IG1lY2hhbmlzbSBmaXRzIGludG8gdGhlIG92ZXJhbGwgc2NoZW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Mjg4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6MDA6NDAuOTU3NTg5MjY0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTA3NDYyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyeHJwY19pbnB1dF9zb2Z0X2Fja190cVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcnhycGMvaW5wdXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcnhycGMvaW5wdXQuYz04NzA9c3RhdGljIHZvaWQgcnhycGNfaW5wdXRfc29mdF9ydHQoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsXFxuLS1cXG5uZXQvcnhycGMvaW5wdXQuYy04ODEtICovXFxubmV0L3J4cnBjL2lucHV0LmM6ODgyOnN0YXRpYyB2b2lkIHJ4cnBjX2lucHV0X3NvZnRfYWNrX3RxKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLFxcbm5ldC9yeHJwYy9pbnB1dC5jLTg4My1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHJ4cnBjX2Fja19zdW1tYXJ5ICpzdW1tYXJ5LFxcbi0tXFxubmV0L3J4cnBjL2lucHV0LmM9OTcyPXN0YXRpYyB2b2lkIHJ4cnBjX2lucHV0X3NvZnRfYWNrcyhzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcXG4tLVxcbm5ldC9yeHJwYy9pbnB1dC5jLTEwMTMtXFxubmV0L3J4cnBjL2lucHV0LmM6MTAxNDpcXHRcXHRyeHJwY19pbnB1dF9zb2Z0X2Fja190cShjYWxsLCBzdW1tYXJ5LCB0cSwgZXh0cmFjdGVkLCBSWFJQQ19OUl9UWFFVRVVFLFxcbm5ldC9yeHJwYy9pbnB1dC5jLTEwMTUtXFx0XFx0XFx0XFx0XFx0c2VxIC0gUlhSUENfTlJfVFhRVUVVRSwgXFx1MDAyNmxvd2VzdF9uYWspO1xcbi0tXFxubmV0L3J4cnBjL2lucHV0LmMtMTAyNi1cXHRcXHRfZGVidWcoXFxcInRhaWwgICUxNmx4ICV1XFxcIiwgZXh0cmFjdGVkLCBucl9yZXBvcnRlZCk7XFxubmV0L3J4cnBjL2lucHV0LmM6MTAyNzpcXHRcXHRyeHJwY19pbnB1dF9zb2Z0X2Fja190cShjYWxsLCBzdW1tYXJ5LCB0cSwgZXh0cmFjdGVkLCBucl9yZXBvcnRlZCxcXG5uZXQvcnhycGMvaW5wdXQuYy0xMDI4LVxcdFxcdFxcdFxcdFxcdHNlcSBcXHUwMDI2IH5SWFJQQ19UWFFfTUFTSywgXFx1MDAyNmxvd2VzdF9uYWspO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwODowMDo0MS4wMDY2NzI0NjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ1MzUyMDYxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoYXQgY29kZSBzZXF1ZW5jZTpcblxuKipEZWNvZGluZyB0aGUgUnhSUEMgQWNrbm93bGVkZ21lbnQgUGF0aHdheSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBhY2tub3dsZWRnbWVudHMgYXJlIGhhbmRsZWQgaW4gdGhpcyBSeFJQQyBzeXN0ZW0uIFRoZSB0cmFpbCBzdGFydHMgd2l0aCBgcnhycGNfaW5wdXRfc29mdF9hY2tzYCwgd2hpY2ggc2VlbXMgdG8gYmUgdGhlIGZ1bmN0aW9uIHRoYXQgYWN0dWFsbHkgKmRvZXMqIHRoZSBzb2Z0IGFja25vd2xlZGdtZW50IHByb2Nlc3NpbmcuIE5vdywgd2hlcmUgaXMgKnRoaXMqIGNhbGxlZCBmcm9tPyBBaGEsIGl0J3MgY2FsbGVkIGJ5IGByeHJwY19pbnB1dF9hY2tgLiBUaGF0IG1ha2VzIHNlbnNlOyBgcnhycGNfaW5wdXRfYWNrYCBwcm9iYWJseSBoYW5kbGVzIHRoZSBpbml0aWFsIHBhcnNpbmcgYW5kIGRpc3BhdGNoIG9mIGFja25vd2xlZGdtZW50LXJlbGF0ZWQgcGFja2V0cy4gR29vZCwgZ29vZC4gQnV0IHdlIG5lZWQgdG8gdHJhY2UgdGhpcyBmdXJ0aGVyLiBXaGVyZSBkb2VzICp0aGF0KiBnZXQgY2FsbGVkPyBSaWdodCwgYHJ4cnBjX2lucHV0X2Fja2AgaXMgY2FsbGVkIGJ5IGByeHJwY19pbnB1dF9jYWxsX3BhY2tldGAgb3Igc2ltaWxhciBmdW5jdGlvbnMsIHRoZSBwcmltYXJ5IGhhbmRsZXJzIGZvciBpbmNvbWluZyBSeFJQQyBjYWxsIHBhY2tldHMuIFRoaXMgZ2l2ZXMgYSBuaWNlIGNoYWluLiBOb3csIEkgc2hvdWxkIGRpdmUgaW50byB0aGUgZGV0YWlscyBvZiBgcnhycGNfaW5wdXRfYWNrYC4gVGhhdCdzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIG9mIHRoaXMgYWNrIHByb2Nlc3Mgd2lsbCBsaXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTE4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6MDA6NDYuNDYwMTk3NTYxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTAwNTQzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyeHJwY19pbnB1dF9hY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3J4cnBjL2lucHV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3J4cnBjL2lucHV0LmM9NzQ5PXN0YXRpYyB2b2lkIHJ4cnBjX2NvbXBsZXRlX3J0dF9wcm9iZShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCxcXG4tLVxcbm5ldC9yeHJwYy9pbnB1dC5jLTc5OC0gKi9cXG5uZXQvcnhycGMvaW5wdXQuYzo3OTk6c3RhdGljIHZvaWQgcnhycGNfaW5wdXRfYWNrX3RyYWlsZXIoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L3J4cnBjL2lucHV0LmMtODAwLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcnhycGNfYWNrdHJhaWxlciAqdHJhaWxlcilcXG4tLVxcbm5ldC9yeHJwYy9pbnB1dC5jPTEwNTA9c3RhdGljIGJvb2wgcnhycGNfaXNfYWNrX3ZhbGlkKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLFxcbi0tXFxubmV0L3J4cnBjL2lucHV0LmMtMTA3OS0gKi9cXG5uZXQvcnhycGMvaW5wdXQuYzoxMDgwOnN0YXRpYyB2b2lkIHJ4cnBjX2lucHV0X2FjayhzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvcnhycGMvaW5wdXQuYy0xMDgxLXtcXG4tLVxcbm5ldC9yeHJwYy9pbnB1dC5jLTExNjQtXFx0aWYgKHRyYWlsZXIubWF4TVRVKVxcbm5ldC9yeHJwYy9pbnB1dC5jOjExNjU6XFx0XFx0cnhycGNfaW5wdXRfYWNrX3RyYWlsZXIoY2FsbCwgc2tiLCBcXHUwMDI2dHJhaWxlcik7XFxubmV0L3J4cnBjL2lucHV0LmMtMTE2Ni1cXG4tLVxcbm5ldC9yeHJwYy9pbnB1dC5jLTEyMjgtICovXFxubmV0L3J4cnBjL2lucHV0LmM6MTIyOTpzdGF0aWMgdm9pZCByeHJwY19pbnB1dF9hY2thbGwoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3J4cnBjL2lucHV0LmMtMTIzMC17XFxuLS1cXG5uZXQvcnhycGMvaW5wdXQuYz0xMjYzPXZvaWQgcnhycGNfaW5wdXRfY2FsbF9wYWNrZXQoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvcnhycGMvaW5wdXQuYy0xMjg5LVxcdGNhc2UgUlhSUENfUEFDS0VUX1RZUEVfQUNLOlxcbm5ldC9yeHJwYy9pbnB1dC5jOjEyOTA6XFx0XFx0cmV0dXJuIHJ4cnBjX2lucHV0X2FjayhjYWxsLCBza2IpO1xcbm5ldC9yeHJwYy9pbnB1dC5jLTEyOTEtXFxuLS1cXG5uZXQvcnhycGMvaW5wdXQuYy0xMzAyLVxcdGNhc2UgUlhSUENfUEFDS0VUX1RZUEVfQUNLQUxMOlxcbm5ldC9yeHJwYy9pbnB1dC5jOjEzMDM6XFx0XFx0cmV0dXJuIHJ4cnBjX2lucHV0X2Fja2FsbChjYWxsLCBza2IpO1xcbm5ldC9yeHJwYy9pbnB1dC5jLTEzMDQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA4OjAwOjQ2LjUwOTIwOTYzOFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTMyNjAyOTEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBBbmFseXNpcyBhbmQgRnV6emluZyBTdHJhdGVneSBmb3IgUnhSUEMqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaHVuY2ggYWJvdXQgZm9jdXNpbmcgb24gYHJ4cnBjX2lucHV0X2NhbGxfcGFja2V0YCBzZWVtcyBzcG90IG9uLCBhbG9uZyB3aXRoIGByeHJwY19kb19zZW5kbXNnYCBhbmQgYHJ4cnBjX2tlcm5lbF9zZW5kX2RhdGFgLiBUaGVzZSBsb29rIGxpa2UgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIHRoaXMgcGF0Y2guXG5cblJldmlld2luZyB0aGUgY2hhbmdlcywgSSBzZWUgdGhyZWUgY3JpdGljYWwgYXJlYXM6XG5cbjEuICAqKmByeHJwY19zZXFfaW5fdHhxYCoqOiBUaGUgbG9naWMgaGVyZSBpcyB0d2Vha2VkLiBJdCdzIHVzZWQgaW4gYHJ4cnBjX2lucHV0X3NvZnRfYWNrX3RxYCwgc28gYW55IG1pc2JlaGF2aW9yIGhlcmUgY291bGQgaGF2ZSBjYXNjYWRpbmcgZWZmZWN0cyBvbiBBQ0sgcHJvY2Vzc2luZy5cbjIuICAqKmByeHJwY19kZXN0cm95X2FsbF9jb25uZWN0aW9uc2AqKjogVGhpcyBpcyBhIHRlYXJkb3duIGZ1bmN0aW9uLCBjcnVjaWFsIGZvciByZXNvdXJjZSBjbGVhbnVwLiBUaGUgY2hhbmdlIGludm9sdmVzIGEgY3J1Y2lhbCB3YWl0IHRvIGVuc3VyZSBhbGwgZGVmZXJyZWQgZGVzdHJ1Y3RvcnMgY29tcGxldGUgYmVmb3JlIHZhbGlkYXRpbmcgdGhlIGNvbm5lY3Rpb24gbGlzdC4gVGhpcyBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgcmFjZS5cbjMuICAqKmByeHJwY19zZW5kX2RhdGFgKio6IFRoZSBmaXggc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyBhbiBpc3N1ZSB3aXRoIGBSWFJQQ19DQUxMX1RYX05PX01PUkVgIHByZXZlbnRpbmcgbGF0ZSBzZW5kcywgd2hpY2ggcmVsYXRlcyB0byBib3RoIGByeHJwY19kb19zZW5kbXNnYCBhbmQgYHJ4cnBjX2tlcm5lbF9zZW5kX2RhdGFgLiBUaGlzIGlzIGEgY2xlYXIgYnVnIGZpeC5cblxuVGhlcmVmb3JlLCB0aGUgbWFpbiBhcmVhcyBvZiBmb2N1cyBmb3IgZnV6emluZyB3aWxsIGJlOlxuXG4qICAgYHJ4cnBjX2RvX3NlbmRtc2dgXG4qICAgYHJ4cnBjX2tlcm5lbF9zZW5kX2RhdGFgXG4qICAgYHJ4cnBjX2lucHV0X2NhbGxfcGFja2V0YFxuXG5Db25maWctd2lzZSwgdGhlIHBhdGNoIHRhcmdldHMgYEFGX1JYUlBDYC4gU2luY2UgaXQncyBhIHRyaXN0YXRlLCBhbmQgY2FuIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLCBpdCdzIHRoZSBvbmx5IG9uZSBJIHNob3VsZCBjYXJlIGFib3V0LlxuXG5Ob3csIGxldCdzIGNvbmZpcm0gdGhlIGNvZGUgY2hhbmdlcy4gSSd2ZSByZS1leGFtaW5lZCB0aGUgY29kZSBpbiBgbmV0L3J4cnBjL2FyLWludGVybmFsLmhgIGFuZCBgbmV0L3J4cnBjL3NlbmRtc2cuY2AgYW5kIGBuZXQvcnhycGMvY29ubl9vYmplY3QuY2AuIFRoZSBgcnhycGNfc2VxX2luX3R4cWAgY2hlY2sgaW4gYGFyLWludGVybmFsLmhgIGlzIGluZGVlZCBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhcyBpcyB0aGUgYHJ4cnBjX3NlbmRfZGF0YWAgZml4IGZvciBgRVBST1RPYCBhbmQgdGhlIG1vZGlmaWNhdGlvbiBpbiBgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnNgLlxuXG5UaGUgYEFTU0VSVGAgY2FsbCBhZnRlciB0aGUgd2FpdCBpbiBgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnNgIGluZGljYXRlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiB3aGljaCBpcyBhIGNvbW1vbiBzb3VyY2Ugb2YgYnVncyB0aGF0IEknbGwgbG9vayBmb3IuXG5cbkluIG15IGV4cGVydCBvcGluaW9uLCB0aGlzIHBhdGNoIGlzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBUaGUgY2hhbmdlcyBhcmUgYWxsIGZ1bmN0aW9uYWwgYW5kIHRvdWNoIGNvcmUgUnhSUEMgbmV0d29yayBiZWhhdmlvci4gVGhlIGZvY3VzIGFyZWFzLCBhcyBJJ3ZlIG1lbnRpb25lZCBhcmU6XG5cbiogICBgcnhycGNfZG9fc2VuZG1zZ2BcbiogICBgcnhycGNfa2VybmVsX3NlbmRfZGF0YWBcbiogICBgcnhycGNfaW5wdXRfY2FsbF9wYWNrZXRgXG5cblRoZSBjb25maWd1cmF0aW9uIEknbSBjb25jZXJuZWQgd2l0aCBpczpcblxuKiAgIGBBRl9SWFJQQ2BcblxuR2l2ZW4gdGhpcyBhbmFseXNpcywgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIHVwIHRoZSBmdXp6aW5nIGVudmlyb25tZW50IHdpdGggdGhlc2UgcGFyYW1ldGVycy4gTGV0J3MgZ2V0IHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODE4LCJPdXRwdXRUb2tlbnMiOjE3NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwODowMDo1Ny44MzUyNDE5NzFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzA2MTkwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQUZfUlhSUENcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyeHJwY19kb19zZW5kbXNnXCIsXG4gICAgXCJyeHJwY19rZXJuZWxfc2VuZF9kYXRhXCIsXG4gICAgXCJyeHJwY19pbnB1dF9jYWxsX3BhY2tldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGxvZ2ljIGluIGByeHJwY19zZXFfaW5fdHhxYCBmb3IgY2hlY2tpbmcgaWYgYSBzZXF1ZW5jZSBudW1iZXIgaXMgaW4gYSB0cmFuc21pc3Npb24gcXVldWUsIGFkZHMgYSBjaGVjayBmb3IgYFJYUlBDX0NBTExfVFhfTk9fTU9SRWAgaW4gYHJ4cnBjX3NlbmRfZGF0YWAgdG8gcHJldmVudCBsYXRlIHNlbmRzLCBhbmQgZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnNgIGJ5IG1vdmluZyB0aGUgYEFTU0VSVGAgYWZ0ZXIgd2FpdGluZyBmb3IgY29ubmVjdGlvbnMgdG8gYmUgZGVzdHJveWVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSByeHJwYyBuZXR3b3JraW5nIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQUZfUlhSUENcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyeHJwY19kb19zZW5kbXNnXCIsXG4gICAgXCJyeHJwY19rZXJuZWxfc2VuZF9kYXRhXCIsXG4gICAgXCJyeHJwY19pbnB1dF9jYWxsX3BhY2tldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGxvZ2ljIGluIGByeHJwY19zZXFfaW5fdHhxYCBmb3IgY2hlY2tpbmcgaWYgYSBzZXF1ZW5jZSBudW1iZXIgaXMgaW4gYSB0cmFuc21pc3Npb24gcXVldWUsIGFkZHMgYSBjaGVjayBmb3IgYFJYUlBDX0NBTExfVFhfTk9fTU9SRWAgaW4gYHJ4cnBjX3NlbmRfZGF0YWAgdG8gcHJldmVudCBsYXRlIHNlbmRzLCBhbmQgZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBgcnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnNgIGJ5IG1vdmluZyB0aGUgYEFTU0VSVGAgYWZ0ZXIgd2FpdGluZyBmb3IgY29ubmVjdGlvbnMgdG8gYmUgZGVzdHJveWVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSByeHJwYyBuZXR3b3JraW5nIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowfsjz7[1] Phase: Succeeded StartedAt: 2026-08-03 08:01:09 +0000 UTC FinishedAt: 2026-08-03 08:01:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 08:01:09 +0000 UTC FinishedAt: 2026-08-03 08:01:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[2] Phase: Succeeded StartedAt: 2026-08-03 08:01:09 +0000 UTC FinishedAt: 2026-08-03 08:46:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-08-03 08:01:09 +0000 UTC FinishedAt: 2026-08-03 08:46:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-03 08:01:09 +0000 UTC FinishedAt: 2026-08-03 08:01:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-03 08:01:09 +0000 UTC FinishedAt: 2026-08-03 08:01:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfsjz7/series-workflowfsjz7-convert-artifact-3365365863/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-03 08:01:19 +0000 UTC FinishedAt: 2026-08-03 08:19:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-03 08:01:19 +0000 UTC FinishedAt: 2026-08-03 08:19:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*16eb17d6-2c90-4ec3-af0c-9ff9cb24dd09,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-workflowfsjz7/series-workflowfsjz7-convert-artifact-3365365863/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": "038d961a-ffb9-4e90-aa5a-3737f353e6b0", "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-workflowfsjz7/series-workflowfsjz7-build-action-3344064253/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-03 08:01:19 +0000 UTC FinishedAt: 2026-08-03 08:19:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*16eb17d6-2c90-4ec3-af0c-9ff9cb24dd09,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-workflowfsjz7/series-workflowfsjz7-convert-artifact-3365365863/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": "038d961a-ffb9-4e90-aa5a-3737f353e6b0", "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-workflowfsjz7/series-workflowfsjz7-build-action-3344064253/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-03 08:19:29 +0000 UTC FinishedAt: 2026-08-03 08:19:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-03 08:19:29 +0000 UTC FinishedAt: 2026-08-03 08:19:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-03 08:19:29 +0000 UTC FinishedAt: 2026-08-03 08:19:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-03 08:19:29 +0000 UTC FinishedAt: 2026-08-03 08:19:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfsjz7/series-workflowfsjz7-convert-artifact-858383894/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-03 08:19:39 +0000 UTC FinishedAt: 2026-08-03 08:21:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-03 08:19:39 +0000 UTC FinishedAt: 2026-08-03 08:21:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*038d961a-ffb9-4e90-aa5a-3737f353e6b0,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-workflowfsjz7/series-workflowfsjz7-build-action-3344064253/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-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-03 08:21:44 +0000 UTC FinishedAt: 2026-08-03 08:21:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-03 08:21:44 +0000 UTC FinishedAt: 2026-08-03 08:21:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-03 08:21:44 +0000 UTC FinishedAt: 2026-08-03 08:40:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-03 08:21:44 +0000 UTC FinishedAt: 2026-08-03 08:40:18 +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:*16eb17d6-2c90-4ec3-af0c-9ff9cb24dd09,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-workflowfsjz7/series-workflowfsjz7-convert-artifact-858383894/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": "815dc093-2f8c-470b-b697-da6ea2126c0d", "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-workflowfsjz7/series-workflowfsjz7-build-action-2637735706/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-03 08:21:44 +0000 UTC FinishedAt: 2026-08-03 08:40:08 +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:*16eb17d6-2c90-4ec3-af0c-9ff9cb24dd09,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-workflowfsjz7/series-workflowfsjz7-convert-artifact-858383894/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": "815dc093-2f8c-470b-b697-da6ea2126c0d", "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-workflowfsjz7/series-workflowfsjz7-build-action-2637735706/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-03 08:40:18 +0000 UTC FinishedAt: 2026-08-03 08:40:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-03 08:40:18 +0000 UTC FinishedAt: 2026-08-03 08:40:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-03 08:40:18 +0000 UTC FinishedAt: 2026-08-03 08:42:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-03 08:40:18 +0000 UTC FinishedAt: 2026-08-03 08:42:13 +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:*815dc093-2f8c-470b-b697-da6ea2126c0d,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-workflowfsjz7/series-workflowfsjz7-build-action-2637735706/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-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Failed StartedAt: 2026-08-03 08:42:23 +0000 UTC FinishedAt: 2026-08-03 08:46:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Failed StartedAt: 2026-08-03 08:42:23 +0000 UTC FinishedAt: 2026-08-03 08:46:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"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:*038d961a-ffb9-4e90-aa5a-3737f353e6b0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*815dc093-2f8c-470b-b697-da6ea2126c0d,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-workflowfsjz7/series-workflowfsjz7-build-action-3344064253/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-workflowfsjz7/series-workflowfsjz7-build-action-2637735706/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-03 08:42:23 +0000 UTC FinishedAt: 2026-08-03 08:42:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-03 08:42:23 +0000 UTC FinishedAt: 2026-08-03 08:42:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"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-workflowfsjz7/series-workflowfsjz7-convert-artifact-114371259/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-03 08:42:23 +0000 UTC FinishedAt: 2026-08-03 08:42:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-03 08:42:23 +0000 UTC FinishedAt: 2026-08-03 08:42:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-03 08:42:23 +0000 UTC FinishedAt: 2026-08-03 08:42:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Failed StartedAt: 2026-08-03 08:42:33 +0000 UTC FinishedAt: 2026-08-03 08:46:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfsjz7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_do_sendmsg","rxrpc_kernel_send_data","rxrpc_input_call_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC"],"series_id":"85ee0843-85ff-4d16-a8df-d14fc7138c1b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Failed StartedAt: 2026-08-03 08:42:33 +0000 UTC FinishedAt: 2026-08-03 08:46:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*038d961a-ffb9-4e90-aa5a-3737f353e6b0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*815dc093-2f8c-470b-b697-da6ea2126c0d,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-workflowfsjz7/series-workflowfsjz7-build-action-3344064253/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-workflowfsjz7/series-workflowfsjz7-build-action-2637735706/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-workflowfsjz7/series-workflowfsjz7-convert-artifact-114371259/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil