Name: series-workflowvnxgd Phase: Succeeded StartedAt: 2026-09-04 02:18:44 +0000 UTC FinishedAt: 2026-09-04 06:17:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[0] Phase: Succeeded StartedAt: 2026-09-04 02:18:44 +0000 UTC FinishedAt: 2026-09-04 02:37:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[0].run-triage Phase: Succeeded StartedAt: 2026-09-04 02:18:44 +0000 UTC FinishedAt: 2026-09-04 02:37:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "9d80aa4617b32f5054c5aa471d06b66704854935", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS", "SMP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "9d80aa4617b32f5054c5aa471d06b66704854935", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS", "SMP" ], "series_id": "cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_orphan_add", "ext4_orphan_del", "__ext4_fill_super" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OywKICAgICYjMzQ7U01QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9vcnBoYW5fYWRkJiMzNDssCiAgICAmIzM0O2V4dDRfb3JwaGFuX2RlbCYjMzQ7LAogICAgJiMzNDtfX2V4dDRfZmlsbF9zdXBlciYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdGhlICYjMzk7X19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcCYjMzk7IGF0dHJpYnV0ZSB0byB0aGUgJiMzOTtzX29ycGhhbl9sb2NrJiMzOTsgbXV0ZXggaW4gJiMzOTtzdHJ1Y3QgZXh0NF9zYl9pbmZvJiMzOTsgdG8gYWxpZ24gaXQgdG8gYSBjYWNoZWxpbmUgaW4gU01QIGNvbmZpZ3VyYXRpb25zIGFuZCByZWR1Y2UgZmFsc2Ugc2hhcmluZy5cblxuJiMzOTtzdHJ1Y3QgZXh0NF9zYl9pbmZvJiMzOTsgaXMgYW4gaW50ZXJuYWwgc3VwZXJibG9jayBzdGF0ZSBzdHJ1Y3R1cmUgYWxsb2NhdGVkIHVzaW5nIGt6YWxsb2Nfb2JqKCkgaW4gZXh0NF9hbGxvY19zYmkoKSwgbWVhbmluZyBhbGwgZmllbGRzIGFuZCBhbnkgYWxpZ25tZW50IHBhZGRpbmcgYXJlIHplcm8taW5pdGlhbGl6ZWQgdXBvbiBhbGxvY2F0aW9uLiBUaGUgc3RydWN0dXJlIGlzIG5ldmVyIGNvcGllZCB0byB1c2Vyc3BhY2UsIG5vciBkb2VzIHRoaXMgYWxpZ25tZW50IGFkanVzdG1lbnQgYWx0ZXIgY29udHJvbCBmbG93LCBsZW5ndGggY2FsY3VsYXRpb25zLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSBoYW5kbGluZy4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzdHJ1Y3QgZXh0NF9zYl9pbmZvIHRvIGNhY2hlbGluZS1hbGlnbiB0aGUgc19vcnBoYW5fbG9jayBtdXRleCBpbiBTTVAgY29uZmlndXJhdGlvbnMuIFRoaXMgYWx0ZXJzIGRhdGEgc3RydWN0dXJlIGxheW91dCBhbmQgc3luY2hyb25pemF0aW9uIGJlaGF2aW9yIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgc3VpdGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6MzY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxM2U0MjdjODc0ZTBhM2E4ZjI5YzZjNmM4OTBkNTc0ZjBiMjljZWIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAwMjozNjo1MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dDQuaCBiL2ZzL2V4dDQvZXh0NC5oXG5pbmRleCA3MjRhMjdlOGJlNjEzLi5hM2YxNmE5ODE2NjQ2IDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9leHQ0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvZXh0NC5oXG5AQCAtMTY0NCw3ICYjNDM7MTY0NCw3IEBAIHN0cnVjdCBleHQ0X3NiX2luZm8ge1xuIFx0LyogSm91cm5hbGluZyAqL1xuIFx0c3RydWN0IGpvdXJuYWxfcyAqc19qb3VybmFsO1xuIFx0dW5zaWduZWQgbG9uZyBzX2V4dDRfZmxhZ3M7XHRcdC8qIEV4dDQgc3VwZXJibG9jayBmbGFncyAqL1xuLVx0c3RydWN0IG11dGV4IHNfb3JwaGFuX2xvY2s7XHQvKiBQcm90ZWN0cyBvbiBkaXNrIGxpc3QgY2hhbmdlcyAqL1xuJiM0MztcdHN0cnVjdCBtdXRleCBzX29ycGhhbl9sb2NrIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHNfb3JwaGFuO1x0LyogTGlzdCBvZiBvcnBoYW5lZCBpbm9kZXMgaW4gb24gZGlza1xuIFx0XHRcdFx0XHQgICBsaXN0ICovXG4gXHRzdHJ1Y3QgZXh0NF9vcnBoYW5faW5mbyBzX29ycGhhbl9pbmZvO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OywKICAgICYjMzQ7U01QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9vcnBoYW5fYWRkJiMzNDssCiAgICAmIzM0O2V4dDRfb3JwaGFuX2RlbCYjMzQ7LAogICAgJiMzNDtfX2V4dDRfZmlsbF9zdXBlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzdHJ1Y3QgZXh0NF9zYl9pbmZvIHRvIGNhY2hlbGluZS1hbGlnbiB0aGUgc19vcnBoYW5fbG9jayBtdXRleCBpbiBTTVAgY29uZmlndXJhdGlvbnMuIFRoaXMgYWx0ZXJzIGRhdGEgc3RydWN0dXJlIGxheW91dCBhbmQgc3luY2hyb25pemF0aW9uIGJlaGF2aW9yIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgc3VpdGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxM2U0MjdjODc0ZTBhM2E4ZjI5YzZjNmM4OTBkNTc0ZjBiMjljZWIwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgNCAwMjozNjo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvZXh0NC5oIGIvZnMvZXh0NC9leHQ0LmgKaW5kZXggNzI0YTI3ZThiZTYxMy4uYTNmMTZhOTgxNjY0NiAxMDA2NDQKLS0tIGEvZnMvZXh0NC9leHQ0LmgKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9leHQ0LmgKQEAgLTE2NDQsNyAmIzQzOzE2NDQsNyBAQCBzdHJ1Y3QgZXh0NF9zYl9pbmZvIHsKIAkvKiBKb3VybmFsaW5nICovCiAJc3RydWN0IGpvdXJuYWxfcyAqc19qb3VybmFsOwogCXVuc2lnbmVkIGxvbmcgc19leHQ0X2ZsYWdzOwkJLyogRXh0NCBzdXBlcmJsb2NrIGZsYWdzICovCi0Jc3RydWN0IG11dGV4IHNfb3JwaGFuX2xvY2s7CS8qIFByb3RlY3RzIG9uIGRpc2sgbGlzdCBjaGFuZ2VzICovCiYjNDM7CXN0cnVjdCBtdXRleCBzX29ycGhhbl9sb2NrIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7CiAJc3RydWN0IGxpc3RfaGVhZCBzX29ycGhhbjsJLyogTGlzdCBvZiBvcnBoYW5lZCBpbm9kZXMgaW4gb24gZGlzawogCQkJCQkgICBsaXN0ICovCiAJc3RydWN0IGV4dDRfb3JwaGFuX2luZm8gc19vcnBoYW5faW5mbzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg5OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDc1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDYWNoZWxpbmUgQWxpZ25tZW50IFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaW4gYGZzL2V4dDQvZXh0NC5oYCBpcyBtb2RpZnlpbmcgdGhlIGBzdHJ1Y3QgZXh0NF9zYl9pbmZvYCB3aXRoaW4gdGhlIGV4dDQgZmlsZXN5c3RlbSBjb2RlLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFkZGluZyBgX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcGAgdG8gdGhlIGBzX29ycGhhbl9sb2NrYCBtdXRleCBkZWNsYXJhdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBqdXN0IGEgY29zbWV0aWMgY2hhbmdlIG9yIGlmIGl0IGFmZmVjdHMgdGhlIGRhdGEgc3RydWN0dXJlIGxheW91dCBvciBleGVjdXRhYmxlIGNvZGUuCgpOb3csIGxldCYjMzk7cyBjYXJlZnVsbHkgcmV2aWV3IHRoZSBmdXp6aW5nIGNyaXRlcmlhLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY2hhbmdlIHRyaWdnZXJzIHRoZSBmdXp6aW5nIHByb2Nlc3MuIEFjY29yZGluZyB0byB0aGUgaW5zdHJ1Y3Rpb25zLCBjaGFuZ2VzIHRoYXQgYXJlICYjMzQ7cmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzJiMzNDsgYXJlIG9mIGludGVyZXN0LiBUaGUgYGV4dDRfc2JfaW5mb2AgaXMgKmRlZmluaXRlbHkqIGEgY29yZSBkYXRhIHN0cnVjdHVyZSwgaW50aW1hdGVseSBpbnZvbHZlZCBpbiB0aGUgZmlsZXN5c3RlbSBvcGVyYXRpb24uIEFkZGluZyBgX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcGAgKmhhcyogdG8gYWx0ZXIgdGhlIGxheW91dC4gQWxpZ25tZW50IGRpcmVjdGl2ZXMgYXJlIGFsbCBhYm91dCBwYWRkaW5nIGFuZCBwbGFjZW1lbnQgd2l0aGluIHRoZSBzdHJ1Y3QsIHJpZ2h0PyBDaGFuZ2luZyBgc19vcnBoYW5fbG9ja2AmIzM5O3MgYWxpZ25tZW50IHdpdGhpbiBgc3RydWN0IGV4dDRfc2JfaW5mb2AgdW5kb3VidGVkbHkgY2hhbmdlcyB0aGUgc3RydWN0JiMzOTtzIGxheW91dC4KCkZ1cnRoZXJtb3JlLCBJIGhhdmUgdG8gZW5zdXJlIHRoYXQgZXh0NCBpcyByZWFjaGFibGUuIEdpdmVuIHRoYXQgZXh0NCBpcyBhIHN0YW5kYXJkIGZpbGVzeXN0ZW0sIGFuZCBJIGNhbiBlYXNpbHkgbW91bnQgYW4gZXh0NCBpbWFnZSBvciBmdXp6IHRocm91Z2ggc3lzY2FsbHMgaW4gUUVNVSBvciBHQ0UsIGl0IGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLgoKR2l2ZW4gdGhlc2UgcG9pbnRzLCB0aGlzIHBhdGNoIGxvb2tzIGxpa2UgaXQgZG9lcyB0cmlnZ2VyIHRoZSBmdXp6aW5nIHByb2Nlc3MuIEl0IHJlc3RydWN0dXJlcyBhIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZSB3aXRoaW4gYSBjb3JlIGZpbGVzeXN0ZW0gY29tcG9uZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvZXh0NC9leHQ0LmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjM1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE2MzU6XHRcdHN0cnVjdCBwZXJjcHVfY291bnRlciBzX3NyYV9leGNlZWRlZF9yZXRyeV9saW1pdDtcbjE2MzY6XHRcdHN0cnVjdCBibG9ja2dyb3VwX2xvY2sgKnNfYmxvY2tncm91cF9sb2NrO1xuMTYzNzpcdFx0c3RydWN0IHByb2NfZGlyX2VudHJ5ICpzX3Byb2M7XG4xNjM4Olx0XHRzdHJ1Y3Qga29iamVjdCBzX2tvYmo7XG4xNjM5Olx0XHRzdHJ1Y3QgY29tcGxldGlvbiBzX2tvYmpfdW5yZWdpc3RlcjtcbjE2NDA6XHRcdHN0cnVjdCBtdXRleCBzX2Vycm9yX25vdGlmeV9tdXRleDsgLyogcHJvdGVjdHMgc3lzZnNfbm90aWZ5IHZzIGtvYmplY3RfZGVsICovXG4xNjQxOlx0XHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNfc2I7XG4xNjQyOlx0XHRzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfbW1wX2JoO1xuMTY0MzpcdFxuMTY0NDpcdFx0LyogSm91cm5hbGluZyAqL1xuMTY0NTpcdFx0c3RydWN0IGpvdXJuYWxfcyAqc19qb3VybmFsO1xuMTY0NjpcdFx0dW5zaWduZWQgbG9uZyBzX2V4dDRfZmxhZ3M7XHRcdC8qIEV4dDQgc3VwZXJibG9jayBmbGFncyAqL1xuMTY0NzpcdFx0c3RydWN0IG11dGV4IHNfb3JwaGFuX2xvY2sgX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcbjE2NDg6XHRcdHN0cnVjdCBsaXN0X2hlYWQgc19vcnBoYW47XHQvKiBMaXN0IG9mIG9ycGhhbmVkIGlub2RlcyBpbiBvbiBkaXNrXG4xNjQ5Olx0XHRcdFx0XHRcdCAgIGxpc3QgKi9cbjE2NTA6XHRcdHN0cnVjdCBleHQ0X29ycGhhbl9pbmZvIHNfb3JwaGFuX2luZm87XG4xNjUxOlx0XHR1bnNpZ25lZCBsb25nIHNfY29tbWl0X2ludGVydmFsO1xuMTY1MjpcdFx0dTMyIHNfbWF4X2JhdGNoX3RpbWU7XG4xNjUzOlx0XHR1MzIgc19taW5fYmF0Y2hfdGltZTtcbjE2NTQ6XHRcdHN0cnVjdCBmaWxlICpzX2pvdXJuYWxfYmRldl9maWxlO1xuMTY1NTpcdCNpZmRlZiBDT05GSUdfUVVPVEFcbjE2NTY6XHRcdC8qIE5hbWVzIG9mIHF1b3RhIGZpbGVzIHdpdGggam91cm5hbGxlZCBxdW90YSAqL1xuMTY1NzpcdFx0Y2hhciBfX3JjdSAqc19xZl9uYW1lc1tFWFQ0X01BWFFVT1RBU107XG4xNjU4Olx0XHRpbnQgc19qcXVvdGFfZm10O1x0XHRcdC8qIEZvcm1hdCBvZiBxdW90YSB0byB1c2UgKi9cbjE2NTk6XHQjZW5kaWZcbjE2NjA6XHRcdHVuc2lnbmVkIGludCBzX3dhbnRfZXh0cmFfaXNpemU7IC8qIE5ldyBpbm9kZXMgc2hvdWxkIHJlc2VydmUgIyBieXRlcyAqL1xuMTY2MTpcdFx0c3RydWN0IGV4dDRfc3lzdGVtX2Jsb2NrcyBfX3JjdSAqc19zeXN0ZW1fYmxrcztcbjE2NjI6XHRcbjE2NjM6XHQjaWZkZWYgRVhURU5UU19TVEFUU1xuMTY2NDpcdFx0LyogZXh0NCBleHRlbnRzIHN0YXRzICovXG4xNjY1Olx0XHR1bnNpZ25lZCBsb25nIHNfZXh0X21pbjtcbjE2NjY6XHRcdHVuc2lnbmVkIGxvbmcgc19leHRfbWF4O1xuMTY2NzpcdFx0dW5zaWduZWQgbG9uZyBzX2RlcHRoX21heDtcbjE2Njg6XHRcdHNwaW5sb2NrX3Qgc19leHRfc3RhdHNfbG9jaztcbjE2Njk6XHRcdHVuc2lnbmVkIGxvbmcgc19leHRfYmxvY2tzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NDAKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhlIGV4dDQgY29kZWJhc2U6CgoqKkFuYWx5emluZyBgc19vcnBoYW5fbG9ja2AgVXNhZ2UgaW4gZXh0NCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcm9sZSBvZiBgc19vcnBoYW5fbG9ja2Agd2l0aGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0uIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIGdldCBhIGJyb2FkIHBpY3R1cmUgb2Ygd2hlcmUgdGhpcyBzcGlubG9jayBpcyBhY3RpdmVseSBlbXBsb3llZC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBqdXN0IGxvb2tpbmcgZm9yIGl0cyB1c2FnZSBhY3Jvc3MgdGhlIGVudGlyZSBleHQ0IHNvdXJjZSB0cmVlLiBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgc2ltcGxlIGBncmVwYCBvciBgZmluZGAgY29tbWFuZCB0byBsb2NhdGUgYWxsIGluc3RhbmNlcyBvZiB0aGUgdmFyaWFibGUgaXRzZWxmLCBgc19vcnBoYW5fbG9ja2AsIG5vdCBqdXN0IHRoZSBkZWZpbml0aW9uLCBidXQgZXZlcnl3aGVyZSBpdCYjMzk7cyAqdXNlZCog4oCTIHJlYWQsIHdyaXR0ZW4sIHRha2VuLCByZWxlYXNlZC4KCk9uY2UgSSBoYXZlIGEgbGlzdCBvZiBjYWxsIHNpdGVzLCBJJiMzOTtsbCBuZWVkIHRvIHNvcnQgYW5kIG9yZ2FuaXplIHRoZW0uIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBmdW5jdGlvbnMgYXJlIG1vc3QgaW1wb3J0YW50LiBXaGljaCBmdW5jdGlvbnMgYXJlIG1vc3QgZnJlcXVlbnRseSBleGVjdXRlZD8gV2hpY2ggYXJlIGxpa2VseSBjcml0aWNhbCB0byBpbnRlZ3JpdHk/IEkmIzM5O2xsIHByb2JhYmx5IGdyb3VwIHRoZW0gYnkgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBJcyBpdCBtb3N0bHkgcmVsYXRlZCB0byBpbm9kZSBvcGVyYXRpb25zPyBPcnBoYW4gaW5vZGUgbGlzdHM/IEpvdXJuYWxpbmc/IEkgbmVlZCB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgdGhlIGxvY2smIzM5O3Mgc2NvcGUuCgpOZXh0LCBJJiMzOTtsbCBkcmlsbCBkb3duIGludG8gdGhlIGNvbnRleHQgb2YgZWFjaCB1c2FnZS4gRm9yIGVhY2ggb2NjdXJyZW5jZSwgSSBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCB0aGUgc3Vycm91bmRpbmcgY29kZS4gV2hhdCBvcGVyYXRpb25zIGFyZSBwcm90ZWN0ZWQgYnkgdGhpcyBsb2NrPyBXaGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgYmVpbmcgZ3VhcmRlZD8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIHRoYXQgdGhpcyBsb2NrIGlzIGRlc2lnbmVkIHRvIHByZXZlbnQ/IFdoYXQmIzM5O3MgdGhlIGxvY2sgaGllcmFyY2h5PyBBcmUgdGhlcmUgYW55IG90aGVyIGxvY2tzIGJlaW5nIGhlbGQgY29uY3VycmVudGx5PyBVbmRlcnN0YW5kaW5nIHRoZSBsb2NraW5nIG9yZGVyIGlzIHBhcmFtb3VudCwgc28gSSBkb24mIzM5O3QgaW50cm9kdWNlIGRlYWRsb2Nrcy4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIGxvY2sgaXMgYWNxdWlyZWQgKGUuZy4sIGBzcGluX2xvY2tfaXJxc2F2ZWAsIGBzcGluX2xvY2tgKSBhbmQgaG93IGl0JiMzOTtzIHJlbGVhc2VkIChlLmcuLCBgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZWAsIGBzcGluX3VubG9ja2ApLgoKVWx0aW1hdGVseSwgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlICpyZWFzb24qIGZvciB0aGlzIGxvY2suIFdoYXQgaXMgaXQgc3luY2hyb25pemluZz8gSXMgaXQgZ3VhcmRpbmcgYSBjcml0aWNhbCBzZWN0aW9uIHJlbGF0ZWQgdG8gb3JwaGFuIGlub2RlcywgZW5zdXJpbmcgZGF0YSBjb25zaXN0ZW5jeSwgcHJldmVudGluZyBkb3VibGUgZnJlZWluZywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBpdHMgcHVycG9zZSBpcyBjcml0aWNhbCBpZiBJIGludGVuZCB0byBtYWtlIGNoYW5nZXMgdG8gdGhlIGNvZGUgdGhhdCBpbnRlcmFjdHMgd2l0aCBpdCwgb3Igb3B0aW1pemUgaXQuIERlcGVuZGluZyBvbiBob3cgZGVlcCBJIG5lZWQgdG8gZ28sIEkgbWF5IHN0YXJ0IGxvb2tpbmcgYXQgcmVsYXRlZCBzdHJ1Y3R1cmVzIGFuZCB0aGUgbGFyZ2VyIHN5c3RlbSBkZXNpZ24uIEkgbWF5IGV4YW1pbmUgdGhlIGpvdXJuYWxpbmcgb3BlcmF0aW9ucyBvciB0aGUgd2F5IGlub2RlIGRhdGEgYXJlIGZsdXNoZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c19vcnBoYW5fbG9jayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9leHQ0Lmg9MTU5Mj1zdHJ1Y3QgZXh0NF9zYl9pbmZvIHtcbi0tXG5mcy9leHQ0L2V4dDQuaC0xNjQ2LVx0dW5zaWduZWQgbG9uZyBzX2V4dDRfZmxhZ3M7XHRcdC8qIEV4dDQgc3VwZXJibG9jayBmbGFncyAqL1xuZnMvZXh0NC9leHQ0Lmg6MTY0NzpcdHN0cnVjdCBtdXRleCBzX29ycGhhbl9sb2NrIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7XG5mcy9leHQ0L2V4dDQuaC0xNjQ4LVx0c3RydWN0IGxpc3RfaGVhZCBzX29ycGhhbjtcdC8qIExpc3Qgb2Ygb3JwaGFuZWQgaW5vZGVzIGluIG9uIGRpc2tcbi0tXG5mcy9leHQ0L29ycGhhbi5jPTEwMj1pbnQgZXh0NF9vcnBoYW5fYWRkKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4tLVxuZnMvZXh0NC9vcnBoYW4uYy0xNDYtXG5mcy9leHQ0L29ycGhhbi5jOjE0NzpcdG11dGV4X2xvY2soXHUwMDI2c2JpLVx1MDAzZXNfb3JwaGFuX2xvY2spO1xuZnMvZXh0NC9vcnBoYW4uYy0xNDgtXHQvKlxuLS1cbmZzL2V4dDQvb3JwaGFuLmMtMTYyLVx0bGlzdF9hZGQoXHUwMDI2RVhUNF9JKGlub2RlKS1cdTAwM2VpX29ycGhhbiwgXHUwMDI2c2JpLVx1MDAzZXNfb3JwaGFuKTtcbmZzL2V4dDQvb3JwaGFuLmM6MTYzOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNnNiaS1cdTAwM2VzX29ycGhhbl9sb2NrKTtcbmZzL2V4dDQvb3JwaGFuLmMtMTY0LVxuLS1cbmZzL2V4dDQvb3JwaGFuLmMtMTc1LVx0XHRcdCAqL1xuZnMvZXh0NC9vcnBoYW4uYzoxNzY6XHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZzYmktXHUwMDNlc19vcnBoYW5fbG9jayk7XG5mcy9leHQ0L29ycGhhbi5jLTE3Ny1cdFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNkVYVDRfSShpbm9kZSktXHUwMDNlaV9vcnBoYW4pO1xuZnMvZXh0NC9vcnBoYW4uYzoxNzg6XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnNiaS1cdTAwM2VzX29ycGhhbl9sb2NrKTtcbmZzL2V4dDQvb3JwaGFuLmMtMTc5LVx0XHR9XG4tLVxuZnMvZXh0NC9vcnBoYW4uYz0yMjY9aW50IGV4dDRfb3JwaGFuX2RlbChoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuLS1cbmZzL2V4dDQvb3JwaGFuLmMtMjQyLVxuZnMvZXh0NC9vcnBoYW4uYzoyNDM6XHQvKiBEbyB0aGlzIHF1aWNrIGNoZWNrIGJlZm9yZSB0YWtpbmcgZ2xvYmFsIHNfb3JwaGFuX2xvY2suICovXG5mcy9leHQ0L29ycGhhbi5jLTI0NC1cdGlmIChsaXN0X2VtcHR5KFx1MDAyNmVpLVx1MDAzZWlfb3JwaGFuKSlcbi0tXG5mcy9leHQ0L29ycGhhbi5jLTI0Ny1cdGlmIChoYW5kbGUpIHtcbmZzL2V4dDQvb3JwaGFuLmM6MjQ4Olx0XHQvKiBHcmFiIGlub2RlIGJ1ZmZlciBlYXJseSBiZWZvcmUgdGFraW5nIGdsb2JhbCBzX29ycGhhbl9sb2NrICovXG5mcy9leHQ0L29ycGhhbi5jLTI0OS1cdFx0ZXJyID0gZXh0NF9yZXNlcnZlX2lub2RlX3dyaXRlKGhhbmRsZSwgaW5vZGUsIFx1MDAyNmlsb2MpO1xuLS1cbmZzL2V4dDQvb3JwaGFuLmMtMjUxLVxuZnMvZXh0NC9vcnBoYW4uYzoyNTI6XHRtdXRleF9sb2NrKFx1MDAyNnNiaS1cdTAwM2VzX29ycGhhbl9sb2NrKTtcbmZzL2V4dDQvb3JwaGFuLmMtMjUzLVx0ZXh0NF9kZWJ1ZyhcJiMzNDtyZW1vdmUgaW5vZGUgJWxsdSBmcm9tIG9ycGhhbiBsaXN0XFxuXCYjMzQ7LCBpbm9kZS1cdTAwM2VpX2lubyk7XG4tLVxuZnMvZXh0NC9vcnBoYW4uYy0yNjItXHRpZiAoIWhhbmRsZSB8fCBlcnIpIHtcbmZzL2V4dDQvb3JwaGFuLmM6MjYzOlx0XHRtdXRleF91bmxvY2soXHUwMDI2c2JpLVx1MDAzZXNfb3JwaGFuX2xvY2spO1xuZnMvZXh0NC9vcnBoYW4uYy0yNjQtXHRcdGdvdG8gb3V0X2Vycjtcbi0tXG5mcy9leHQ0L29ycGhhbi5jLTI3My1cdFx0aWYgKGVycikge1xuZnMvZXh0NC9vcnBoYW4uYzoyNzQ6XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnNiaS1cdTAwM2VzX29ycGhhbl9sb2NrKTtcbmZzL2V4dDQvb3JwaGFuLmMtMjc1LVx0XHRcdGdvdG8gb3V0X2JyZWxzZTtcbi0tXG5mcy9leHQ0L29ycGhhbi5jLTI4MC1cdFx0dW5sb2NrX2J1ZmZlcihzYmktXHUwMDNlc19zYmgpO1xuZnMvZXh0NC9vcnBoYW4uYzoyODE6XHRcdG11dGV4X3VubG9jayhcdTAwMjZzYmktXHUwMDNlc19vcnBoYW5fbG9jayk7XG5mcy9leHQ0L29ycGhhbi5jLTI4Mi1cdFx0ZXJyID0gZXh0NF9oYW5kbGVfZGlydHlfbWV0YWRhdGEoaGFuZGxlLCBOVUxMLCBzYmktXHUwMDNlc19zYmgpO1xuLS1cbmZzL2V4dDQvb3JwaGFuLmMtMjkxLVx0XHRpZiAoZXJyKSB7XG5mcy9leHQ0L29ycGhhbi5jOjI5MjpcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2c2JpLVx1MDAzZXNfb3JwaGFuX2xvY2spO1xuZnMvZXh0NC9vcnBoYW4uYy0yOTMtXHRcdFx0Z290byBvdXRfYnJlbHNlO1xuLS1cbmZzL2V4dDQvb3JwaGFuLmMtMjk2LVx0XHRlcnIgPSBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGUsIGlfcHJldiwgXHUwMDI2aWxvYzIpO1xuZnMvZXh0NC9vcnBoYW4uYzoyOTc6XHRcdG11dGV4X3VubG9jayhcdTAwMjZzYmktXHUwMDNlc19vcnBoYW5fbG9jayk7XG5mcy9leHQ0L29ycGhhbi5jLTI5OC1cdH1cbi0tXG5mcy9leHQ0L3N1cGVyLmM9NTM1Nz1zdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNTUwNS1cdElOSVRfTElTVF9IRUFEKFx1MDAyNnNiaS1cdTAwM2VzX29ycGhhbik7IC8qIHVubGlua2VkIGJ1dCBvcGVuIGZpbGVzICovXG5mcy9leHQ0L3N1cGVyLmM6NTUwNjpcdG11dGV4X2luaXQoXHUwMDI2c2JpLVx1MDAzZXNfb3JwaGFuX2xvY2spO1xuZnMvZXh0NC9zdXBlci5jLTU1MDctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQwMAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgT3JwaGFuIExvY2sgaW4gZXh0NCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBgc19vcnBoYW5fbG9ja2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzY29wZSBhbmQgaG93IGl0JiMzOTtzIGJlaW5nIHV0aWxpemVkIHdpdGhpbiB0aGUgZXh0NCBmaWxlc3lzdGVtIGNvZGUuIFJpZ2h0IG5vdywgSSBzZWUgaXQmIzM5O3MgZGlyZWN0bHkgaW52b2x2ZWQgaW4gdGhyZWUga2V5IGFyZWFzOiBgZXh0NF9vcnBoYW5fYWRkYCwgYGV4dDRfb3JwaGFuX2RlbGAsIGFuZCB0aGUgc3VwZXIgYmxvY2sgaW5pdGlhbGl6YXRpb24sIHdoaWNoIG1pZ2h0IGJlIGBfX2V4dDRfZmlsbF9zdXBlcmAgb3IgcGVyaGFwcyBqdXN0IGBleHQ0X2ZpbGxfc3VwZXJgLiBUaGF0IGdpdmVzIG1lIGEgZnJhbWV3b3JrLgoKTm93LCBJIHdhbnQgdG8gZ2FpbiBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb250ZXh0IHRoYXQgY29udHJvbHMgdGhpcy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUga2VybmVsJiMzOTtzIEtjb25maWcgc2V0dGluZ3MgZm9yIGV4dDQuIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBpbmZsdWVuY2UgaG93IHRoaXMgbG9ja2luZyBtZWNoYW5pc20gaXMgaGFuZGxlZC4gQXJlIHRoZXJlIGFueSBjb25kaXRpb25hbCBjb21waWxlcz8gQXJlIHRoZXJlIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgYmFzZWQgb24gY2VydGFpbiBrZXJuZWwgc2V0dGluZ3M/IFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSB3aGF0IHNldHRpbmdzIG1heSBhZmZlY3QgdGhlIHVzYWdlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgdXNhZ2UgaXMgY29uc3RhbnQsIG9yIGNvbmRpdGlvbmFsLiBUaW1lIHRvIHNlZSB3aGF0IEtjb25maWcgaGFzIHRvIG9mZmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBFWFQ0X0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leHQ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2V4dDQvS2NvbmZpZzoyOmNvbmZpZyBFWFQ0X0ZTXG5mcy9leHQ0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBFeHRlbmRlZCA0IChleHQ0KSBmaWxlc3lzdGVtXCYjMzQ7XG4tLVxuZnMvZXh0NC9LY29uZmlnPTM1PWNvbmZpZyBFWFQ0X1VTRV9GT1JfRVhUMlxuLS1cbmZzL2V4dDQvS2NvbmZpZy00NS1cbmZzL2V4dDQvS2NvbmZpZzo0Njpjb25maWcgRVhUNF9GU19QT1NJWF9BQ0xcbmZzL2V4dDQvS2NvbmZpZy00Ny1cdGJvb2wgXCYjMzQ7RXh0NCBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuLS1cbmZzL2V4dDQvS2NvbmZpZy01NS1cbmZzL2V4dDQvS2NvbmZpZzo1Njpjb25maWcgRVhUNF9GU19TRUNVUklUWVxuZnMvZXh0NC9LY29uZmlnLTU3LVx0Ym9vbCBcJiMzNDtFeHQ0IFNlY3VyaXR5IExhYmVsc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MzMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGZyb20gYW4gZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBFWFQ0IEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgYEVYVDRfRlNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBLbm93aW5nIHdoZXJlIHRvIGZpbmQgaXQgaW4gdGhlIEtjb25maWcgZmlsZXMgaXMgZnVuZGFtZW50YWwuIFRoYXQgbGlrZWx5IG1lYW5zIGRpdmluZyBpbnRvIGBmcy9leHQ0L0tjb25maWdgIGRpcmVjdG9yeS4gSSBzaG91bGQgcXVpY2tseSBjaGVjayB0aGF0IGZpbGUgdG8gY29uZmlybSB3aGVyZSBFWFQ0IGlzIGRlZmluZWQuIEkga25vdyBgS2NvbmZpZ2AgZmlsZXMgYXJlIHRoZSBiYWNrYm9uZSBvZiB0aGUga2VybmVsJiMzOTtzIGJ1aWxkIHN5c3RlbSBhbmQgbWFuYWdlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEtub3dpbmcgdGhpcywgSSBuZWVkIHRvIHF1aWNrbHkgZmluZCBgRVhUNF9GU2AgaW4gaXRzIGxpa2VseSBsb2NhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9leHQ0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgRVhUNF9GU1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7VGhlIEV4dGVuZGVkIDQgKGV4dDQpIGZpbGVzeXN0ZW1cJiMzNDtcbiAgIDQ6XHRcdHNlbGVjdCBCVUZGRVJfSEVBRFxuICAgNTpcdFx0c2VsZWN0IEpCRDJcbiAgIDY6XHRcdHNlbGVjdCBDUkMxNlxuICAgNzpcdFx0c2VsZWN0IENSQzMyXG4gICA4Olx0XHRzZWxlY3QgRlNfSU9NQVBcbiAgIDk6XHRcdHNlbGVjdCBGU19FTkNSWVBUSU9OX0FMR1MgaWYgRlNfRU5DUllQVElPTlxuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBUaGlzIGlzIHRoZSBuZXh0IGdlbmVyYXRpb24gb2YgdGhlIGV4dDMgZmlsZXN5c3RlbS5cbiAgMTI6XHRcbiAgMTM6XHRcdCAgVW5saWtlIHRoZSBjaGFuZ2UgZnJvbSBleHQyIGZpbGVzeXN0ZW0gdG8gZXh0MyBmaWxlc3lzdGVtLFxuICAxNDpcdFx0ICB0aGUgb24tZGlzayBmb3JtYXQgb2YgZXh0NCBpcyBub3QgZm9yd2FyZHMgY29tcGF0aWJsZSB3aXRoXG4gIDE1Olx0XHQgIGV4dDM7IGl0IGlzIGJhc2VkIG9uIGV4dGVudCBtYXBzIGFuZCBpdCBzdXBwb3J0cyA0OC1iaXRcbiAgMTY6XHRcdCAgcGh5c2ljYWwgYmxvY2sgbnVtYmVycy4gIFRoZSBleHQ0IGZpbGVzeXN0ZW0gYWxzbyBzdXBwb3J0cyBkZWxheWVkXG4gIDE3Olx0XHQgIGFsbG9jYXRpb24sIHBlcnNpc3RlbnQgcHJlYWxsb2NhdGlvbiwgaGlnaCByZXNvbHV0aW9uIHRpbWUgc3RhbXBzLFxuICAxODpcdFx0ICBhbmQgYSBudW1iZXIgb2Ygb3RoZXIgZmVhdHVyZXMgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSBhbmQgc3BlZWRcbiAgMTk6XHRcdCAgdXAgZnNjayB0aW1lLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBzZWUgdGhlIHdlYiBwYWdlcyBhdFxuICAyMDpcdFx0ICBodHRwOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcuXG4gIDIxOlx0XG4gIDIyOlx0XHQgIFRoZSBleHQ0IGZpbGVzeXN0ZW0gc3VwcG9ydHMgbW91bnRpbmcgYW4gZXh0MyBmaWxlc3lzdGVtOyB3aGlsZSB0aGVyZVxuICAyMzpcdFx0ICBhcmUgc29tZSBwZXJmb3JtYW5jZSBnYWlucyBmcm9tIHRoZSBkZWxheWVkIGFsbG9jYXRpb24gYW5kIGlub2RlXG4gIDI0Olx0XHQgIHRhYmxlIHJlYWRhaGVhZCwgdGhlIGJlc3QgcGVyZm9ybWFuY2UgZ2FpbnMgcmVxdWlyZSBlbmFibGluZyBleHQ0XG4gIDI1Olx0XHQgIGZlYXR1cmVzIGluIHRoZSBmaWxlc3lzdGVtIHVzaW5nIHR1bmUyZnMsIG9yIGZvcm1hdHRpbmcgYSBuZXdcbiAgMjY6XHRcdCAgZmlsZXN5c3RlbSBhcyBhbiBleHQ0IGZpbGVzeXN0ZW0gaW5pdGlhbGx5LiBXaXRob3V0IGV4cGxpY2l0IGVuYWJsaW5nXG4gIDI3Olx0XHQgIG9mIGV4dDQgZmVhdHVyZXMsIHRoZSBvbiBkaXNrIGZpbGVzeXN0ZW0gZm9ybWF0IHN0YXlzIGZ1bGx5IGJhY2t3YXJkXG4gIDI4Olx0XHQgIGNvbXBhdGlibGUuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBmaWxlIHN5c3RlbSBzdXBwb3J0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGVcbiAgMzE6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGV4dDQuXG4gIDMyOlx0XG4gIDMzOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDM0Olx0XG4gIDM1Olx0Y29uZmlnIEVYVDRfVVNFX0ZPUl9FWFQyXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NTMKCQkJCQkJCW91dHB1dDogMTE3CgkJCQkJCQl0aG91Z2h0czogMzUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFByb3Bvc2VkIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGlzLiBUaGUgcHJpbWFyeSBjb25jZXJuIGhlcmUgaXMgdGhlIGNoYW5nZSBpbiBjYWNoZSBhbGlnbm1lbnQgb2YgYHNfb3JwaGFuX2xvY2tgIHdpdGhpbiB0aGUgYHN0cnVjdCBleHQ0X3NiX2luZm9gIHN0cnVjdHVyZS4gVGhpcyBpcyBzaWduaWZpY2FudCwgZXNwZWNpYWxseSBiZWNhdXNlIHRoZSBjaGFuZ2UgaXMgY29uZGl0aW9uYWwgb24gdGhlIGBTTVBgIGNvbmZpZ3VyYXRpb24uIFNpbmNlIGBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wYCBkZXBlbmRzIG9uIGBTTVBgIGFuZCBgU01QYCBpcyBub3cgc3VjaCBhIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24sIHdlIG5lZWQgdG8gY29uc2lkZXIgaG93IHRoaXMgaW1wYWN0cyBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzLiBXaGlsZSBgU01QYCBpdHNlbGYgaXMgcHJhY3RpY2FsbHkgdWJpcXVpdG91cyB0aGVzZSBkYXlzLCB3ZSBhbHNvIGhhdmUgdGhlIGBFWFQ0X0ZTYCBjb25maWd1cmF0aW9uIHRvIGNvbnNpZGVyLCB3aGljaCBwZXJ0YWlucyBzcGVjaWZpY2FsbHkgdG8gdGhlIGV4dDQgZmlsZXN5c3RlbS4KClRoZSBjcml0ZXJpYSBmb3IgZnV6emluZyBhcHBlYXIgc291bmQuIFRoaXMgcGF0Y2ggZGlyZWN0bHkgbW9kaWZpZXMgdGhlIGxheW91dCBvZiBgZXh0NF9zYl9pbmZvYCBpbiBTTVAgc2V0dXBzLiBgZXh0NGAgaXMgYSBjb3JlIExpbnV4IGZpbGVzeXN0ZW0sIGFuZCBhIHdlbGwtdW5kZXJzdG9vZCB0YXJnZXQgZm9yIHN5emthbGxlci4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY3JpdGljYWwgZnVuY3Rpb25zLiBXZSYjMzk7cmUgbG9va2luZyBhdCBmdW5jdGlvbnMgdGhhdCBhY2Nlc3Mgb3IgaW5pdGlhbGl6ZSBgc19vcnBoYW5fbG9ja2A6IFNwZWNpZmljYWxseSwgYGV4dDRfb3JwaGFuX2FkZGAsIGBleHQ0X29ycGhhbl9kZWxgLCBhbmQgYF9fZXh0NF9maWxsX3N1cGVyYC4gVGhlc2UgYXJlIGFsbCBsb2NhdGVkIGluIHN0YW5kYXJkIGV4dDQgZmlsZSBsb2NhdGlvbnM6IGBmcy9leHQ0L29ycGhhbi5jYCBmb3IgdGhlIGFkZC9kZWwgb3BlcmF0aW9ucyBhbmQgYGZzL2V4dDQvc3VwZXIuY2AgZm9yIHRoZSBzdXBlciBibG9jayBpbml0aWFsaXphdGlvbi4gSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBhbiBleGhhdXN0aXZlIGxpc3QuCgpUaGUgc3VnZ2VzdGVkIGBFbmFibGVDb25maWdzYCBhcmUgYFsmIzM0O0VYVDRfRlMmIzM0O11gIG9yIHBvdGVudGlhbGx5IGBbJiMzNDtFWFQ0X0ZTJiMzNDssICYjMzQ7U01QJiMzNDtdYC4gYEVYVDRfRlNgIHNob3VsZCBiZSBzdWZmaWNpZW50LCBhcyBleHQ0IGlzIGEgd2VsbC10ZXN0ZWQsIGNvbW1vbiBjb25maWd1cmF0aW9uLCBidXQgdGhlIFNNUCBwYXJ0IGlzIGltcG9ydGFudCBpbiByZWxhdGlvbiB0byB0aGUgc3RydWN0dXJlIGFsaWdubWVudC4KCkZpbmFsbHksIGRvZXMgdGhpcyB3YXJyYW50IGZ1enppbmc/IEFic29sdXRlbHkuIE1vZGlmeWluZyBkYXRhIHN0cnVjdHVyZXMsIHBhcnRpY3VsYXJseSB3aXRoaW4gYSBjb3JlIHN1YnN5c3RlbSBsaWtlIGBleHQ0YCwgaXMgYSBoaWdoLXJpc2sgY2hhbmdlLiBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZXNlIGNoYW5nZXMsIGVzcGVjaWFsbHkgcmVsYXRlZCB0byBsYXlvdXQgYW5kIGFsaWdubWVudCwgZG9uJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucywgbWVtb3J5IGNvcnJ1cHRpb24gdnVsbmVyYWJpbGl0aWVzLCBmYWxzZSBzaGFyaW5nLCBvciBhbGlnbm1lbnQgaXNzdWVzLiBUaGVzZSBhcmUgdGhlIGtpbmRzIG9mIHN1YnRsZSBwcm9ibGVtcyB0aGF0IGZ1enppbmcgaXMgZGVzaWduZWQgdG8gY2F0Y2guCgpJJiMzOTttIHNhdGlzZmllZCB3aXRoIHRoZSBhbmFseXNpcywgbGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OywKICAgICYjMzQ7U01QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9vcnBoYW5fYWRkJiMzNDssCiAgICAmIzM0O2V4dDRfb3JwaGFuX2RlbCYjMzQ7LAogICAgJiMzNDtfX2V4dDRfZmlsbF9zdXBlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzdHJ1Y3QgZXh0NF9zYl9pbmZvIHRvIGNhY2hlbGluZS1hbGlnbiB0aGUgc19vcnBoYW5fbG9jayBtdXRleCBpbiBTTVAgY29uZmlndXJhdGlvbnMuIFRoaXMgYWx0ZXJzIGRhdGEgc3RydWN0dXJlIGxheW91dCBhbmQgc3luY2hyb25pemF0aW9uIGJlaGF2aW9yIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgc3VpdGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OywKICAgICYjMzQ7U01QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9vcnBoYW5fYWRkJiMzNDssCiAgICAmIzM0O2V4dDRfb3JwaGFuX2RlbCYjMzQ7LAogICAgJiMzNDtfX2V4dDRfZmlsbF9zdXBlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzdHJ1Y3QgZXh0NF9zYl9pbmZvIHRvIGNhY2hlbGluZS1hbGlnbiB0aGUgc19vcnBoYW5fbG9jayBtdXRleCBpbiBTTVAgY29uZmlndXJhdGlvbnMuIFRoaXMgYWx0ZXJzIGRhdGEgc3RydWN0dXJlIGxheW91dCBhbmQgc3luY2hyb25pemF0aW9uIGJlaGF2aW9yIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgc3VpdGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHRoZSAmIzM5O19fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXAmIzM5OyBhdHRyaWJ1dGUgdG8gdGhlICYjMzk7c19vcnBoYW5fbG9jayYjMzk7IG11dGV4IGluICYjMzk7c3RydWN0IGV4dDRfc2JfaW5mbyYjMzk7IHRvIGFsaWduIGl0IHRvIGEgY2FjaGVsaW5lIGluIFNNUCBjb25maWd1cmF0aW9ucyBhbmQgcmVkdWNlIGZhbHNlIHNoYXJpbmcuXG5cbiYjMzk7c3RydWN0IGV4dDRfc2JfaW5mbyYjMzk7IGlzIGFuIGludGVybmFsIHN1cGVyYmxvY2sgc3RhdGUgc3RydWN0dXJlIGFsbG9jYXRlZCB1c2luZyBremFsbG9jX29iaigpIGluIGV4dDRfYWxsb2Nfc2JpKCksIG1lYW5pbmcgYWxsIGZpZWxkcyBhbmQgYW55IGFsaWdubWVudCBwYWRkaW5nIGFyZSB6ZXJvLWluaXRpYWxpemVkIHVwb24gYWxsb2NhdGlvbi4gVGhlIHN0cnVjdHVyZSBpcyBuZXZlciBjb3BpZWQgdG8gdXNlcnNwYWNlLCBub3IgZG9lcyB0aGlzIGFsaWdubWVudCBhZGp1c3RtZW50IGFsdGVyIGNvbnRyb2wgZmxvdywgbGVuZ3RoIGNhbGN1bGF0aW9ucywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgaGFuZGxpbmcuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDEzZTQyN2M4NzRlMGEzYThmMjljNmM2Yzg5MGQ1NzRmMGIyOWNlYjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIFNlcCA0IDAyOjM2OjUwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHQ0LmggYi9mcy9leHQ0L2V4dDQuaAppbmRleCA3MjRhMjdlOGJlNjEzLi5hM2YxNmE5ODE2NjQ2IDEwMDY0NAotLS0gYS9mcy9leHQ0L2V4dDQuaAomIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L2V4dDQuaApAQCAtMTY0NCw3ICYjNDM7MTY0NCw3IEBAIHN0cnVjdCBleHQ0X3NiX2luZm8gewogCS8qIEpvdXJuYWxpbmcgKi8KIAlzdHJ1Y3Qgam91cm5hbF9zICpzX2pvdXJuYWw7CiAJdW5zaWduZWQgbG9uZyBzX2V4dDRfZmxhZ3M7CQkvKiBFeHQ0IHN1cGVyYmxvY2sgZmxhZ3MgKi8KLQlzdHJ1Y3QgbXV0ZXggc19vcnBoYW5fbG9jazsJLyogUHJvdGVjdHMgb24gZGlzayBsaXN0IGNoYW5nZXMgKi8KJiM0MzsJc3RydWN0IG11dGV4IHNfb3JwaGFuX2xvY2sgX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHNfb3JwaGFuOwkvKiBMaXN0IG9mIG9ycGhhbmVkIGlub2RlcyBpbiBvbiBkaXNrCiAJCQkJCSAgIGxpc3QgKi8KIAlzdHJ1Y3QgZXh0NF9vcnBoYW5faW5mbyBzX29ycGhhbl9pbmZvOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExMAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBGdXp6aW5nIFNlc3Npb24gSnVzdGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgdGhpcyBwYXRjaCBzZXJpZXMgYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIGl0IHdhcnJhbnRzIGRlZGljYXRpbmcgc29tZSBLTVNBTiBmdXp6aW5nIHRpbWUuIExldCYjMzk7cyBzZWUuLi4gdGhlIGRpZmYgbG9va3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbG9va3MgbGlrZSB0aGV5IGFyZSBhZGRpbmcgYF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXBgIHRvIGBzX29ycGhhbl9sb2NrYCwgYSBtdXRleCB3aXRoaW4gYHN0cnVjdCBleHQ0X3NiX2luZm9gIGluIGBmcy9leHQ0L2V4dDQuaGAuIFRoaXMgaXMgbGlrZWx5IGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0byBhdm9pZCBmYWxzZSBzaGFyaW5nLiBCdXQsIGRvZXMgdGhpcyBpbnRyb2R1Y2UgYSBwb3RlbnRpYWwgZm9yIG5ldyBtZW1vcnkgc2FmZXR5IGlzc3VlcyB0aGF0IEtNU0FOIGNvdWxkIGNhdGNoPwoKSSBuZWVkIG1vcmUgY29udGV4dC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHdoYXQgb3RoZXIgdXNlcyBhcmUgYmVpbmcgbWFkZSBvZiB0aGlzIGBleHQ0X3NiX2luZm9gIHN0cnVjdCBhbmQgYHNfb3JwaGFuX2xvY2tgIG11dGV4IHRvIGRldGVybWluZSB3aGF0IHNvcnQgb2YgYWNjZXNzIHBhdHRlcm5zIGFyZSBpbiBwbGF5LiBJJiMzOTtsbCByZWFkIHRoZSBmaWxlIG9yIGdyZXAgZm9yIHJlZmVyZW5jZXMgdG8gc2VlIHdoZXJlIHRoaXMgbXV0ZXggaXMgdXNlZCBhbmQgaG93LiBUaGUgZ29hbCBpcyB0byBzZWUgaWYgdGhpcyBjaGFuZ2UgYWx0ZXJzIGFueSBsb2NraW5nIG9yZGVyIG9yIGlmIGl0IHRvdWNoZXMgYSBzaGFyZWQgZGF0YXN0cnVjdHVyZSBpbiBhIG5vbi1vYnZpb3VzIHdheS4gRGVwZW5kaW5nIG9uIHdoYXQgSSBmaW5kLCBJJiMzOTtsbCB0aGVuIGRlY2lkZSBpZiBhIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyB3YXJyYW50ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBleHQ0X3NiX2luZm8gXFx7JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9leHQ0Lmg9MTU2NT1zdHJ1Y3QgZXh0NF9mY19zbmFwX3N0YXRzIHtcbi0tXG5mcy9leHQ0L2V4dDQuaC0xNTkxLSAqL1xuZnMvZXh0NC9leHQ0Lmg6MTU5MjpzdHJ1Y3QgZXh0NF9zYl9pbmZvIHtcbmZzL2V4dDQvZXh0NC5oLTE1OTMtXHR1bnNpZ25lZCBsb25nIHNfZGVzY19zaXplO1x0LyogU2l6ZSBvZiBhIGdyb3VwIGRlc2NyaXB0b3IgaW4gYnl0ZXMgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgxNAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aGlua2luZywgZXhwcmVzc2VkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBpbnRvIHRoZSBleHQ0IEhlYWRlcioqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYSBzcGVjaWZpYyBhc3BlY3Qgb2YgdGhlIGV4dDQgZmlsZXN5c3RlbSwgc28gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBleGFtaW5pbmcgdGhlIGhlYWRlciBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTY0MCBvZiBgZnMvZXh0NC9leHQ0LmhgLiBUaGlzIGxpa2VseSBjb250YWlucyBzb21lIGNyaXRpY2FsIGRlZmluaXRpb25zIG9yIHN0cnVjdHVyZXMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgdG8gcHJvY2VlZC4gSSBhbnRpY2lwYXRlIGZpbmRpbmcgaW5mb3JtYXRpb24gYWJvdXTigKYgd2VsbCwgSSYjMzk7bSBub3Qgc3VyZSAqZXhhY3RseSogeWV0LCB0aGF0JiMzOTtzIHdoeSBJJiMzOTttIGhlcmUuIEJ1dCBJJiMzOTttIHJlYWR5IHRvIGRpZyBpbiBhbmQgZGVjaXBoZXIgd2hhdCB0aGlzIHNlY3Rpb24gaG9sZHMuIEl0IGNvdWxkIGJlIHJlbGF0ZWQgdG8gaW5vZGUgbWFuYWdlbWVudCwgYmxvY2sgYWxsb2NhdGlvbiwgam91cm5hbGluZyBtZXRhZGF0YSwgb3IgZXZlbiBzb21lIG9ic2N1cmUgZmVhdHVyZS4gVGhlIGh1bnQgYmVnaW5zIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2V4dDQvZXh0NC5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTYzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNjM1Olx0XHRzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIgc19zcmFfZXhjZWVkZWRfcmV0cnlfbGltaXQ7XG4xNjM2Olx0XHRzdHJ1Y3QgYmxvY2tncm91cF9sb2NrICpzX2Jsb2NrZ3JvdXBfbG9jaztcbjE2Mzc6XHRcdHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqc19wcm9jO1xuMTYzODpcdFx0c3RydWN0IGtvYmplY3Qgc19rb2JqO1xuMTYzOTpcdFx0c3RydWN0IGNvbXBsZXRpb24gc19rb2JqX3VucmVnaXN0ZXI7XG4xNjQwOlx0XHRzdHJ1Y3QgbXV0ZXggc19lcnJvcl9ub3RpZnlfbXV0ZXg7IC8qIHByb3RlY3RzIHN5c2ZzX25vdGlmeSB2cyBrb2JqZWN0X2RlbCAqL1xuMTY0MTpcdFx0c3RydWN0IHN1cGVyX2Jsb2NrICpzX3NiO1xuMTY0MjpcdFx0c3RydWN0IGJ1ZmZlcl9oZWFkICpzX21tcF9iaDtcbjE2NDM6XHRcbjE2NDQ6XHRcdC8qIEpvdXJuYWxpbmcgKi9cbjE2NDU6XHRcdHN0cnVjdCBqb3VybmFsX3MgKnNfam91cm5hbDtcbjE2NDY6XHRcdHVuc2lnbmVkIGxvbmcgc19leHQ0X2ZsYWdzO1x0XHQvKiBFeHQ0IHN1cGVyYmxvY2sgZmxhZ3MgKi9cbjE2NDc6XHRcdHN0cnVjdCBtdXRleCBzX29ycGhhbl9sb2NrIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7XG4xNjQ4Olx0XHRzdHJ1Y3QgbGlzdF9oZWFkIHNfb3JwaGFuO1x0LyogTGlzdCBvZiBvcnBoYW5lZCBpbm9kZXMgaW4gb24gZGlza1xuMTY0OTpcdFx0XHRcdFx0XHQgICBsaXN0ICovXG4xNjUwOlx0XHRzdHJ1Y3QgZXh0NF9vcnBoYW5faW5mbyBzX29ycGhhbl9pbmZvO1xuMTY1MTpcdFx0dW5zaWduZWQgbG9uZyBzX2NvbW1pdF9pbnRlcnZhbDtcbjE2NTI6XHRcdHUzMiBzX21heF9iYXRjaF90aW1lO1xuMTY1MzpcdFx0dTMyIHNfbWluX2JhdGNoX3RpbWU7XG4xNjU0Olx0XHRzdHJ1Y3QgZmlsZSAqc19qb3VybmFsX2JkZXZfZmlsZTtcbjE2NTU6XHQjaWZkZWYgQ09ORklHX1FVT1RBXG4xNjU2Olx0XHQvKiBOYW1lcyBvZiBxdW90YSBmaWxlcyB3aXRoIGpvdXJuYWxsZWQgcXVvdGEgKi9cbjE2NTc6XHRcdGNoYXIgX19yY3UgKnNfcWZfbmFtZXNbRVhUNF9NQVhRVU9UQVNdO1xuMTY1ODpcdFx0aW50IHNfanF1b3RhX2ZtdDtcdFx0XHQvKiBGb3JtYXQgb2YgcXVvdGEgdG8gdXNlICovXG4xNjU5Olx0I2VuZGlmXG4xNjYwOlx0XHR1bnNpZ25lZCBpbnQgc193YW50X2V4dHJhX2lzaXplOyAvKiBOZXcgaW5vZGVzIHNob3VsZCByZXNlcnZlICMgYnl0ZXMgKi9cbjE2NjE6XHRcdHN0cnVjdCBleHQ0X3N5c3RlbV9ibG9ja3MgX19yY3UgKnNfc3lzdGVtX2Jsa3M7XG4xNjYyOlx0XG4xNjYzOlx0I2lmZGVmIEVYVEVOVFNfU1RBVFNcbjE2NjQ6XHRcdC8qIGV4dDQgZXh0ZW50cyBzdGF0cyAqL1xuMTY2NTpcdFx0dW5zaWduZWQgbG9uZyBzX2V4dF9taW47XG4xNjY2Olx0XHR1bnNpZ25lZCBsb25nIHNfZXh0X21heDtcbjE2Njc6XHRcdHVuc2lnbmVkIGxvbmcgc19kZXB0aF9tYXg7XG4xNjY4Olx0XHRzcGlubG9ja190IHNfZXh0X3N0YXRzX2xvY2s7XG4xNjY5Olx0XHR1bnNpZ25lZCBsb25nIHNfZXh0X2Jsb2NrcztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY2OQoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqVHJhY2luZyB0aGUgQWxsb2NhdGlvbiBhbmQgSW5pdGlhbGl6YXRpb24gb2YgYHN0cnVjdCBleHQ0X3NiX2luZm9gKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGFuZCBob3cgdGhlIGBzdHJ1Y3QgZXh0NF9zYl9pbmZvYCBpcyBicm91Z2h0IHRvIGxpZmUgd2l0aGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gY29kZS4gVGhhdCBzdHJ1Y3QgaXMgZnVuZGFtZW50YWwgdG8gdGhlIG9wZXJhdGlvbiBvZiB0aGUgZmlsZXN5c3RlbSwgaG9sZGluZyBhbGwgdGhlIHN1cGVyYmxvY2sgaW5mb3JtYXRpb24gYW5kIG1ldGFkYXRhIGFib3V0IHRoZSBleHQ0IHZvbHVtZSwgc28gZ2V0dGluZyBpdHMgYWxsb2NhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gY2xlYXIgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4gSSB3YW50IHRvIHRyYWNlIGl0cyBsaWZlY3ljbGUgZnJvbSBzdGFydCB0byBmaW5pc2guIEkmIzM5O2xsIG5lZWQgdG8gZ28gZGlnZ2luZyB0aHJvdWdoIHRoZSBrZXJuZWwgc291cmNlIHRvIGZpbmQgdGhlIGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIHBvaW50cy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbG9vayBmb3IgZnVuY3Rpb25zIHRoYXQgYXJlIGxpa2VseSByZXNwb25zaWJsZSBmb3IgbW91bnRpbmcgYW4gZXh0NCBmaWxlc3lzdGVtLCBvciBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIHN1cGVyYmxvY2sgaGFuZGxpbmcuIEkgd2lsbCBiZSBsb29raW5nIGZvciBjYWxscyByZWxhdGVkIHRvIGBleHQ0X3NiX2luZm9gIG9yIHNpbWlsYXIgZGF0YSBzdHJ1Y3R1cmVzLCBvciBldmVuIGFsbG9jYXRpb25zIHJlbGF0ZWQgdG8gJiMzNDtzdXBlcmJsb2NrJiMzNDsgb3IgJiMzNDttb3VudCYjMzQ7IG9wZXJhdGlvbnMuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgbW91bnQgY29kZSBwYXRoIHNpbmNlIHRoYXQgaXMgd2hlcmUgYWxsIG9mIHRoZSBmaWxlc3lzdGVtIHN0cnVjdHVyZXMgYXJlIGluaXRpYWxpc2VkLiBJIHNob3VsZCBmaW5kIGl0IHRoZXJlLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGlzIHVuZm9sZHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3phbGxvY1xcKHNpemVvZlxcKHN0cnVjdCBleHQ0X3NiX2luZm9cXCl8c2l6ZW9mXFwoc3RydWN0IGV4dDRfc2JfaW5mb1xcKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk4MwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipUcmFjaW5nIHRoZSBBbGxvY2F0aW9uIG9mIGBleHQ0X3NiX2luZm9gKioKCk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHdoZXJlIHRoaXMgYGV4dDRfc2JfaW5mb2Agc3RydWN0dXJlIGlzIGdldHRpbmcgYWxsb2NhdGVkIGluIHRoZSBrZXJuZWwuIFRoaXMgaXMgYSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgZXh0NCBmaWxlc3lzdGVtJiMzOTtzIHN1cGVyYmxvY2sgaW5mb3JtYXRpb24sIHNvIHVuZGVyc3RhbmRpbmcgaXRzIGxpZmVjeWNsZSBpcyBmdW5kYW1lbnRhbCBmb3IgYW55IGtlcm5lbCBhbmFseXNpcy4gSSYjMzk7bSB0aGlua2luZyBJIGNhbiBzdGFydCBieSBsb29raW5nIGZvciBjYWxscyB0byBga21hbGxvY2AsIGBremFsbG9jYCwgb3IgYGttZW1fY2FjaGVfYWxsb2NgIHdpdGggdGhlIHNpemUgb2YgdGhlIGBleHQ0X3NiX2luZm9gIHN0cnVjdHVyZS4gT3IsIEkgc2hvdWxkIGxvb2sgYXQgdGhlIGV4dDQmIzM5O3Mgc3VwZXJibG9jayBvcGVyYXRpb25zIChgc19vcGApIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgY3VzdG9tIGFsbG9jYXRpb24gcm91dGluZXMgZGVmaW5lZCB0aGVyZS4gSSBjb3VsZCBhbHNvIHNjYW4gdGhlIGNvZGUgZm9yIGRpcmVjdCBjYWxscyB0byBgYWxsb2Nfc3VwZXJgIGFzIHRoYXQgc2VlbXMgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIGEgY29tYmluYXRpb24gb2YgdG9vbHM6IGBncmVwYCB0byBxdWlja2x5IHNlYXJjaCB0aGUgc291cmNlIHRyZWUsIHBvdGVudGlhbGx5IGNyb3NzLXJlZmVyZW5jaW5nIHdpdGggYGNzY29wZWAgb3IgYGMtdGFnc2AgZm9yIGRlZXBlciBjYWxsLWdyYXBoIGFuYWx5c2lzLiBBIHNvdXJjZS1jb2RlIGJyb3dzZXIgd2l0aCB4cmVmIGNhcGFiaWxpdGllcyBpcyBnb2luZyB0byBiZSBteSBiZXN0IGZyaWVuZCBoZXJlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGJhc2ljIGBncmVwYCBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEl0IG1pZ2h0IGJlIGEgb25lLWxpbmVyIG9yIGl0IG1pZ2h0IHJlcXVpcmUgYSBtb3JlIGludm9sdmVkIGRpdmUgdGhyb3VnaCB0aGUgYm9vdCBwcm9jZXNzIGFuZCBtb3VudCBwYXRoLiBUaW1lIHRvIGRpZyBpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0NF9zYl9pbmZvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC9zdXBlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvc3VwZXIuYz00NzI9c3RhdGljIHZvaWQgZXh0NF9tYXliZV91cGRhdGVfc3VwZXJibG9jayhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuZnMvZXh0NC9zdXBlci5jLTQ3My17XG5mcy9leHQ0L3N1cGVyLmM6NDc0Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDc1LVx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzID0gc2JpLVx1MDAzZXNfZXM7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTY0Nz1zdGF0aWMgdm9pZCBzYXZlX2Vycm9yX2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGVycm9yLFxuLS1cbmZzL2V4dDQvc3VwZXIuYy02NTAte1xuZnMvZXh0NC9zdXBlci5jOjY1MTpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTY1Mi1cbi0tXG5mcy9leHQ0L3N1cGVyLmM9NzUxPXN0YXRpYyB2b2lkIHVwZGF0ZV9zdXBlcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmZzL2V4dDQvc3VwZXIuYy03NTIte1xuZnMvZXh0NC9zdXBlci5jOjc1MzpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgZXh0NF9zYl9pbmZvLFxuZnMvZXh0NC9zdXBlci5jLTc1NC1cdFx0XHRcdFx0XHRzX3NiX3VwZF93b3JrKTtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9MTEwNj12b2lkIGV4dDRfbWFya19ncm91cF9iaXRtYXBfY29ycnVwdGVkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4tLVxuZnMvZXh0NC9zdXBlci5jLTExMDkte1xuZnMvZXh0NC9zdXBlci5jOjExMTA6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy0xMTExLVx0c3RydWN0IGV4dDRfZ3JvdXBfaW5mbyAqZ3JwID0gZXh0NF9nZXRfZ3JvdXBfaW5mbyhzYiwgZ3JvdXApO1xuLS1cbmZzL2V4dDQvc3VwZXIuYz0xMTYzPXN0YXRpYyBpbmxpbmUgc3RydWN0IGlub2RlICpvcnBoYW5fbGlzdF9lbnRyeShzdHJ1Y3QgbGlzdF9oZWFkICpsKVxuLS1cbmZzL2V4dDQvc3VwZXIuYy0xMTY3LVxuZnMvZXh0NC9zdXBlci5jOjExNjg6c3RhdGljIHZvaWQgZHVtcF9vcnBoYW5fbGlzdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkpXG5mcy9leHQ0L3N1cGVyLmMtMTE2OS17XG4tLVxuZnMvZXh0NC9zdXBlci5jPTEyMDI9c3RhdGljIGlubGluZSBjaGFyICpnZXRfcWZfbmFtZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuZnMvZXh0NC9zdXBlci5jOjEyMDM6XHRcdFx0XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmksXG5mcy9leHQ0L3N1cGVyLmMtMTIwNC1cdFx0XHRcdGludCB0eXBlKVxuLS1cbmZzL2V4dDQvc3VwZXIuYz0xMjEwPXN0YXRpYyBpbmxpbmUgdm9pZCBleHQ0X3F1b3Rhc19vZmYoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHR5cGUpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTEyMTQtXG5mcy9leHQ0L3N1cGVyLmM6MTIxNTpzdGF0aWMgaW50IGV4dDRfcGVyY3B1X3BhcmFtX2luaXQoc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpKVxuZnMvZXh0NC9zdXBlci5jLTEyMTYte1xuLS1cbmZzL2V4dDQvc3VwZXIuYy0xMjQ3LVxuZnMvZXh0NC9zdXBlci5jOjEyNDg6c3RhdGljIHZvaWQgZXh0NF9wZXJjcHVfcGFyYW1fZGVzdHJveShzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkpXG5mcy9leHQ0L3N1cGVyLmMtMTI0OS17XG4tLVxuZnMvZXh0NC9zdXBlci5jLTEyNTctXG5mcy9leHQ0L3N1cGVyLmM6MTI1ODpzdGF0aWMgdm9pZCBleHQ0X2dyb3VwX2Rlc2NfZnJlZShzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkpXG5mcy9leHQ0L3N1cGVyLmMtMTI1OS17XG4tLVxuZnMvZXh0NC9zdXBlci5jLTEyNjgtXG5mcy9leHQ0L3N1cGVyLmM6MTI2OTpzdGF0aWMgdm9pZCBleHQ0X2ZsZXhfZ3JvdXBzX2ZyZWUoc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpKVxuZnMvZXh0NC9zdXBlci5jLTEyNzAte1xuLS1cbmZzL2V4dDQvc3VwZXIuYz0xMjgyPXN0YXRpYyB2b2lkIGV4dDRfcHV0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9leHQ0L3N1cGVyLmMtMTI4My17XG5mcy9leHQ0L3N1cGVyLmM6MTI4NDpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTEyODUtXHRzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMgPSBzYmktXHUwMDNlc19lcztcbi0tXG5mcy9leHQ0L3N1cGVyLmM9MjUyOD1zdGF0aWMgaW50IHBhcnNlX2FwcGx5X3NiX21vdW50X29wdGlvbnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9leHQ0L3N1cGVyLmMtMjUzMC17XG5mcy9leHQ0L3N1cGVyLmM6MjUzMTpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTI1MzItXHRjaGFyIHNfbW91bnRfb3B0c1s2NF07XG4tLVxuZnMvZXh0NC9zdXBlci5jPTI1ODI9c3RhdGljIHZvaWQgZXh0NF9hcHBseV9xdW90YV9vcHRpb25zKHN0cnVjdCBmc19jb250ZXh0ICpmYyxcbi0tXG5mcy9leHQ0L3N1cGVyLmMtMjU4Ny1cdHN0cnVjdCBleHQ0X2ZzX2NvbnRleHQgKmN0eCA9IGZjLVx1MDAzZWZzX3ByaXZhdGU7XG5mcy9leHQ0L3N1cGVyLmM6MjU4ODpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTI1ODktXHRjaGFyICpxbmFtZTtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9MjYxOT1zdGF0aWMgaW50IGV4dDRfY2hlY2tfcXVvdGFfY29uc2lzdGVuY3koc3RydWN0IGZzX2NvbnRleHQgKmZjLFxuLS1cbmZzL2V4dDQvc3VwZXIuYy0yNjIzLVx0c3RydWN0IGV4dDRfZnNfY29udGV4dCAqY3R4ID0gZmMtXHUwMDNlZnNfcHJpdmF0ZTtcbmZzL2V4dDQvc3VwZXIuYzoyNjI0Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtMjYyNS1cdGJvb2wgcXVvdGFfZmVhdHVyZSA9IGV4dDRfaGFzX2ZlYXR1cmVfcXVvdGEoc2IpO1xuLS1cbmZzL2V4dDQvc3VwZXIuYz0yNzM3PXN0YXRpYyBpbnQgZXh0NF9jaGVja190ZXN0X2R1bW15X2VuY3J5cHRpb24oY29uc3Qgc3RydWN0IGZzX2NvbnRleHQgKmZjLFxuLS1cbmZzL2V4dDQvc3VwZXIuYy0yNzQwLVx0Y29uc3Qgc3RydWN0IGV4dDRfZnNfY29udGV4dCAqY3R4ID0gZmMtXHUwMDNlZnNfcHJpdmF0ZTtcbmZzL2V4dDQvc3VwZXIuYzoyNzQxOlx0Y29uc3Qgc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtMjc0Mi1cbi0tXG5mcy9leHQ0L3N1cGVyLmM9Mjc4OT1zdGF0aWMgaW50IGV4dDRfY2hlY2tfb3B0X2NvbnNpc3RlbmN5KHN0cnVjdCBmc19jb250ZXh0ICpmYyxcbi0tXG5mcy9leHQ0L3N1cGVyLmMtMjc5Mi1cdHN0cnVjdCBleHQ0X2ZzX2NvbnRleHQgKmN0eCA9IGZjLVx1MDAzZWZzX3ByaXZhdGU7XG5mcy9leHQ0L3N1cGVyLmM6Mjc5MzpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IGZjLVx1MDAzZXNfZnNfaW5mbztcbmZzL2V4dDQvc3VwZXIuYy0yNzk0LVx0aW50IGlzX3JlbW91bnQgPSBmYy1cdTAwM2VwdXJwb3NlID09IEZTX0NPTlRFWFRfRk9SX1JFQ09ORklHVVJFO1xuLS1cbmZzL2V4dDQvc3VwZXIuYz0yODcxPXN0YXRpYyB2b2lkIGV4dDRfYXBwbHlfb3B0aW9ucyhzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTI4NzMtXHRzdHJ1Y3QgZXh0NF9mc19jb250ZXh0ICpjdHggPSBmYy1cdTAwM2Vmc19wcml2YXRlO1xuZnMvZXh0NC9zdXBlci5jOjI4NzQ6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBmYy1cdTAwM2VzX2ZzX2luZm87XG5mcy9leHQ0L3N1cGVyLmMtMjg3NS1cbi0tXG5mcy9leHQ0L3N1cGVyLmM9MjkzMT1zdGF0aWMgaW5saW5lIHZvaWQgZXh0NF9zaG93X3F1b3RhX29wdGlvbnMoc3RydWN0IHNlcV9maWxlICpzZXEsXG4tLVxuZnMvZXh0NC9zdXBlci5jLTI5MzQtI2lmIGRlZmluZWQoQ09ORklHX1FVT1RBKVxuZnMvZXh0NC9zdXBlci5jOjI5MzU6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy0yOTM2LVx0Y2hhciAqdXNyX3FmX25hbWUsICpncnBfcWZfbmFtZTtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9Mjk4MT1zdGF0aWMgaW50IF9leHQ0X3Nob3dfb3B0aW9ucyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9leHQ0L3N1cGVyLmMtMjk4My17XG5mcy9leHQ0L3N1cGVyLmM6Mjk4NDpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTI5ODUtXHRzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMgPSBzYmktXHUwMDNlc19lcztcbi0tXG5mcy9leHQ0L3N1cGVyLmM9MzEyMz1zdGF0aWMgaW50IGV4dDRfc2V0dXBfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzLFxuLS1cbmZzL2V4dDQvc3VwZXIuYy0zMTI1LXtcbmZzL2V4dDQvc3VwZXIuYzozMTI2Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtMzEyNy1cdGludCBlcnIgPSAwO1xuLS1cbmZzL2V4dDQvc3VwZXIuYz0zMTgxPWludCBleHQ0X2FsbG9jX2ZsZXhfYmdfYXJyYXkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgZXh0NF9ncm91cF90IG5ncm91cClcbmZzL2V4dDQvc3VwZXIuYy0zMTgyLXtcbmZzL2V4dDQvc3VwZXIuYzozMTgzOlx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtMzE4NC1cdHN0cnVjdCBmbGV4X2dyb3VwcyAqKm9sZF9ncm91cHMsICoqbmV3X2dyb3Vwcztcbi0tXG5mcy9leHQ0L3N1cGVyLmM9MzIyOD1zdGF0aWMgaW50IGV4dDRfZmlsbF9mbGV4X2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbmZzL2V4dDQvc3VwZXIuYy0zMjI5LXtcbmZzL2V4dDQvc3VwZXIuYzozMjMwOlx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtMzIzMS1cdHN0cnVjdCBleHQ0X2dyb3VwX2Rlc2MgKmdkcCA9IE5VTEw7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTMyNjI9c3RhdGljIF9fbGUxNiBleHQ0X2dyb3VwX2Rlc2NfY3N1bShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBfX3UzMiBibG9ja19ncm91cCxcbi0tXG5mcy9leHQ0L3N1cGVyLmMtMzI2Ny1cdF9fbGUzMiBsZV9ncm91cCA9IGNwdV90b19sZTMyKGJsb2NrX2dyb3VwKTtcbmZzL2V4dDQvc3VwZXIuYzozMjY4Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtMzI2OS1cbi0tXG5mcy9leHQ0L3N1cGVyLmM9MzMyNT1zdGF0aWMgaW50IGV4dDRfY2hlY2tfZGVzY3JpcHRvcnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9leHQ0L3N1cGVyLmMtMzMyOC17XG5mcy9leHQ0L3N1cGVyLmM6MzMyOTpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTMzMzAtXHRleHQ0X2ZzYmxrX3QgZmlyc3RfYmxvY2sgPSBsZTMyX3RvX2NwdShzYmktXHUwMDNlc19lcy1cdTAwM2VzX2ZpcnN0X2RhdGFfYmxvY2spO1xuLS1cbmZzL2V4dDQvc3VwZXIuYz0zNTY4PXN0YXRpYyBleHQ0X2ZzYmxrX3QgZGVzY3JpcHRvcl9sb2Moc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9leHQ0L3N1cGVyLmMtMzU3MC17XG5mcy9leHQ0L3N1cGVyLmM6MzU3MTpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTM1NzItXHRleHQ0X2dyb3VwX3QgYmcsIGZpcnN0X21ldGFfYmc7XG4tLVxuZnMvZXh0NC9zdXBlci5jLTM2MDYtICovXG5mcy9leHQ0L3N1cGVyLmM6MzYwNzpzdGF0aWMgdW5zaWduZWQgbG9uZyBleHQ0X2dldF9zdHJpcGVfc2l6ZShzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkpXG5mcy9leHQ0L3N1cGVyLmMtMzYwOC17XG4tLVxuZnMvZXh0NC9zdXBlci5jPTM3MDU9dm9pZCBwcmludF9kYWlseV9lcnJvcl9pbmZvKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuZnMvZXh0NC9zdXBlci5jLTM3MDYte1xuZnMvZXh0NC9zdXBlci5jOjM3MDc6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSB0aW1lcl9jb250YWluZXJfb2Yoc2JpLCB0LCBzX2Vycl9yZXBvcnQpO1xuZnMvZXh0NC9zdXBlci5jLTM3MDgtXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gc2JpLVx1MDAzZXNfc2I7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTQwNTc9aW50IGV4dDRfcmVnaXN0ZXJfbGlfcmVxdWVzdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuLS1cbmZzL2V4dDQvc3VwZXIuYy00MDU5LXtcbmZzL2V4dDQvc3VwZXIuYzo0MDYwOlx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDA2MS1cdHN0cnVjdCBleHQ0X2xpX3JlcXVlc3QgKmVsciA9IE5VTEw7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTQxMzI9c3RhdGljIGludCBzZXRfam91cm5hbF9jc3VtX2ZlYXR1cmVfc2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTQxMzUtXHRpbnQgY29tcGF0LCBpbmNvbXBhdDtcbmZzL2V4dDQvc3VwZXIuYzo0MTM2Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDEzNy1cbi0tXG5mcy9leHQ0L3N1cGVyLmM9NDE4Nj1zdGF0aWMgaW50IGNvdW50X292ZXJoZWFkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGV4dDRfZ3JvdXBfdCBncnAsXG4tLVxuZnMvZXh0NC9zdXBlci5jLTQxODgte1xuZnMvZXh0NC9zdXBlci5jOjQxODk6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvXHQqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDE5MC1cdHN0cnVjdCBleHQ0X2dyb3VwX2Rlc2NcdCpnZHA7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTQyNDk9aW50IGV4dDRfY2FsY3VsYXRlX292ZXJoZWFkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9leHQ0L3N1cGVyLmMtNDI1MC17XG5mcy9leHQ0L3N1cGVyLmM6NDI1MTpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTQyNTItXHRzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMgPSBzYmktXHUwMDNlc19lcztcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NDMwOT1zdGF0aWMgdm9pZCBleHQ0X3NldF9yZXN2X2NsdXN0ZXJzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTQzMTEtXHRleHQ0X2ZzYmxrX3QgcmVzdl9jbHVzdGVycztcbmZzL2V4dDQvc3VwZXIuYzo0MzEyOlx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDMxMy1cbi0tXG5mcy9leHQ0L3N1cGVyLmM9NDM1ND1zdGF0aWMgdm9pZCBleHQ0X3NldHVwX2NzdW1fdHJpZ2dlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuLS1cbmZzL2V4dDQvc3VwZXIuYy00MzYxLXtcbmZzL2V4dDQvc3VwZXIuYzo0MzYyOlx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDM2My1cbi0tXG5mcy9leHQ0L3N1cGVyLmMtNDM2Ny1cbmZzL2V4dDQvc3VwZXIuYzo0MzY4OnN0YXRpYyB2b2lkIGV4dDRfZnJlZV9zYmkoc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpKVxuZnMvZXh0NC9zdXBlci5jLTQzNjkte1xuLS1cbmZzL2V4dDQvc3VwZXIuYy00Mzc3LVxuZnMvZXh0NC9zdXBlci5jOjQzNzg6c3RhdGljIHN0cnVjdCBleHQ0X3NiX2luZm8gKmV4dDRfYWxsb2Nfc2JpKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9leHQ0L3N1cGVyLmMtNDM3OS17XG5mcy9leHQ0L3N1cGVyLmM6NDM4MDpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaTtcbmZzL2V4dDQvc3VwZXIuYy00MzgxLVxuLS1cbmZzL2V4dDQvc3VwZXIuYz00NDYxPXN0YXRpYyBpbnQgZXh0NF9oYW5kbGVfY2x1c3RlcnNpemUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbmZzL2V4dDQvc3VwZXIuYy00NDYyLXtcbmZzL2V4dDQvc3VwZXIuYzo0NDYzOlx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDQ2NC1cdHN0cnVjdCBleHQ0X3N1cGVyX2Jsb2NrICplcyA9IHNiaS1cdTAwM2VzX2VzO1xuLS1cbmZzL2V4dDQvc3VwZXIuYz00NTIzPXN0YXRpYyB2b2lkIGV4dDRfYXRvbWljX3dyaXRlX2luaXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbmZzL2V4dDQvc3VwZXIuYy00NTI0LXtcbmZzL2V4dDQvc3VwZXIuYzo0NTI1Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDUyNi1cdHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYgPSBzYi1cdTAwM2VzX2JkZXY7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTQ1NDk9c3RhdGljIHZvaWQgZXh0NF9mYXN0X2NvbW1pdF9pbml0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9leHQ0L3N1cGVyLmMtNDU1MC17XG5mcy9leHQ0L3N1cGVyLmM6NDU1MTpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTQ1NTItXG4tLVxuZnMvZXh0NC9zdXBlci5jPTQ1NzQ9c3RhdGljIGludCBleHQ0X2lub2RlX2luZm9faW5pdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuLS1cbmZzL2V4dDQvc3VwZXIuYy00NTc2LXtcbmZzL2V4dDQvc3VwZXIuYzo0NTc3Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDU3OC1cbi0tXG5mcy9leHQ0L3N1cGVyLmM9NDY5ND1zdGF0aWMgaW50IGV4dDRfaW5pdF9tZXRhZGF0YV9jc3VtKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBleHQ0X3N1cGVyX2Jsb2NrICplcylcbmZzL2V4dDQvc3VwZXIuYy00Njk1LXtcbmZzL2V4dDQvc3VwZXIuYzo0Njk2Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDY5Ny1cbi0tXG5mcy9leHQ0L3N1cGVyLmM9NDczMD1zdGF0aWMgaW50IGV4dDRfY2hlY2tfZmVhdHVyZV9jb21wYXRpYmlsaXR5KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4tLVxuZnMvZXh0NC9zdXBlci5jLTQ3MzMte1xuZnMvZXh0NC9zdXBlci5jOjQ3MzQ6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy00NzM1LVxuLS1cbmZzL2V4dDQvc3VwZXIuYz00ODM0PXN0YXRpYyBpbnQgZXh0NF9jaGVja19nZW9tZXRyeShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuLS1cbmZzL2V4dDQvc3VwZXIuYy00ODM2LXtcbmZzL2V4dDQvc3VwZXIuYzo0ODM3Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDgzOC1cdF9fdTY0IGJsb2Nrc19jb3VudDtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NDkxMz1zdGF0aWMgaW50IGV4dDRfZ3JvdXBfZGVzY19pbml0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4tLVxuZnMvZXh0NC9zdXBlci5jLTQ5MTcte1xuZnMvZXh0NC9zdXBlci5jOjQ5MTg6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy00OTE5LVx0dW5zaWduZWQgaW50IGRiX2NvdW50O1xuLS1cbmZzL2V4dDQvc3VwZXIuYz00OTczPXN0YXRpYyBpbnQgZXh0NF9sb2FkX2FuZF9pbml0X2pvdXJuYWwoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNDk3Ni17XG5mcy9leHQ0L3N1cGVyLmM6NDk3NzpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTQ5NzgtXHRpbnQgZXJyO1xuLS1cbmZzL2V4dDQvc3VwZXIuYz01MDkwPXN0YXRpYyBjb25zdCBjaGFyICpleHQ0X2hhc19qb3VybmFsX29wdGlvbihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuZnMvZXh0NC9zdXBlci5jLTUwOTEte1xuZnMvZXh0NC9zdXBlci5jOjUwOTI6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy01MDkzLVxuLS1cbmZzL2V4dDQvc3VwZXIuYz01MTE1PXN0YXRpYyB2b2lkIGV4dDRfc2V0X21heF9tYXBwaW5nX29yZGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9leHQ0L3N1cGVyLmMtNTExNi17XG5mcy9leHQ0L3N1cGVyLmM6NTExNzpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTUxMTgtXG4tLVxuZnMvZXh0NC9zdXBlci5jPTUxNDM9c3RhdGljIGludCBleHQ0X2xvYWRfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgZXh0NF9mc2Jsa190ICpsc2IsXG4tLVxuZnMvZXh0NC9zdXBlci5jLTUxNDUte1xuZnMvZXh0NC9zdXBlci5jOjUxNDY6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy01MTQ3LVx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzO1xuLS1cbmZzL2V4dDQvc3VwZXIuYz01MjUzPXN0YXRpYyBpbnQgZXh0NF9oYXNoX2luZm9faW5pdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuZnMvZXh0NC9zdXBlci5jLTUyNTQte1xuZnMvZXh0NC9zdXBlci5jOjUyNTU6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy01MjU2LVx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzID0gc2JpLVx1MDAzZXNfZXM7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTUyOTQ9c3RhdGljIGludCBleHQ0X2Jsb2NrX2dyb3VwX21ldGFfaW5pdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgc2lsZW50KVxuZnMvZXh0NC9zdXBlci5jLTUyOTUte1xuZnMvZXh0NC9zdXBlci5jOjUyOTY6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy01Mjk3LVx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzID0gc2JpLVx1MDAzZXNfZXM7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTUzNTA9c3RhdGljIGJvb2wgZXh0NF9pc19zdHJpcGVfaW5jb21wYXRpYmxlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgc3RyaXBlKVxuZnMvZXh0NC9zdXBlci5jLTUzNTEte1xuZnMvZXh0NC9zdXBlci5jOjUzNTI6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy01MzUzLVx0cmV0dXJuIChzdHJpcGUgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IHNiaS1cdTAwM2VzX2NsdXN0ZXJfcmF0aW8gXHUwMDNlIDEgXHUwMDI2XHUwMDI2XG4tLVxuZnMvZXh0NC9zdXBlci5jPTUzNTc9c3RhdGljIGludCBfX2V4dDRfZmlsbF9zdXBlcihzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTUzNTktXHRzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMgPSBOVUxMO1xuZnMvZXh0NC9zdXBlci5jOjUzNjA6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy01MzYxLVx0ZXh0NF9mc2Jsa190IGxvZ2ljYWxfc2JfYmxvY2s7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTU4MzU9c3RhdGljIGludCBleHQ0X2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuLS1cbmZzL2V4dDQvc3VwZXIuYy01ODM3LVx0c3RydWN0IGV4dDRfZnNfY29udGV4dCAqY3R4ID0gZmMtXHUwMDNlZnNfcHJpdmF0ZTtcbmZzL2V4dDQvc3VwZXIuYzo1ODM4Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpO1xuZnMvZXh0NC9zdXBlci5jLTU4MzktXHRjb25zdCBjaGFyICpkZXNjcjtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NTg5NT1zdGF0aWMgdm9pZCBleHQ0X2luaXRfam91cm5hbF9wYXJhbXMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgam91cm5hbF90ICpqb3VybmFsKVxuZnMvZXh0NC9zdXBlci5jLTU4OTYte1xuZnMvZXh0NC9zdXBlci5jOjU4OTc6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy01ODk4LVxuLS1cbmZzL2V4dDQvc3VwZXIuYz02MjUwPXN0YXRpYyB2b2lkIGV4dDRfdXBkYXRlX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9leHQ0L3N1cGVyLmMtNjI1MS17XG5mcy9leHQ0L3N1cGVyLmM6NjI1MjpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTYyNTMtXHRzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMgPSBzYmktXHUwMDNlc19lcztcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NjQ2ND1zdGF0aWMgaW50IGV4dDRfc3luY19mcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgd2FpdClcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNjQ2OC1cdGJvb2wgbmVlZHNfYmFycmllciA9IGZhbHNlO1xuZnMvZXh0NC9zdXBlci5jOjY0Njk6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy02NDcwLVxuLS1cbmZzL2V4dDQvc3VwZXIuYz02NTg2PXN0YXRpYyBpbnQgX19leHQ0X3JlbW91bnQoc3RydWN0IGZzX2NvbnRleHQgKmZjLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuLS1cbmZzL2V4dDQvc3VwZXIuYy02NTg5LVx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzO1xuZnMvZXh0NC9zdXBlci5jOjY1OTA6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy02NTkxLVx0dW5zaWduZWQgbG9uZyBvbGRfc2JfZmxhZ3M7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTY5ODY9c3RhdGljIGludCBleHQ0X3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTY5ODgtXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gZGVudHJ5LVx1MDAzZWRfc2I7XG5mcy9leHQ0L3N1cGVyLmM6Njk4OTpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTY5OTAtXHRzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMgPSBzYmktXHUwMDNlc19lcztcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NzUyMj1zdGF0aWMgdm9pZCBleHQ0X2tpbGxfc2Ioc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbmZzL2V4dDQvc3VwZXIuYy03NTIzLXtcbmZzL2V4dDQvc3VwZXIuYzo3NTI0Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNzUyNS1cdHN0cnVjdCBmaWxlICpiZGV2X2ZpbGUgPSBzYmkgPyBzYmktXHUwMDNlc19qb3VybmFsX2JkZXZfZmlsZSA6IE5VTEw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODE4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqRGl2aW5nIGludG8gdGhlIGV4dDQgU3VwZXJibG9jayBBbGxvY2F0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQmIzM5O3MgemVybyBpbiBvbiBgZXh0NF9hbGxvY19zYmlgLiBJIHJlbWVtYmVyIGhhdmluZyBhIHF1ZXN0aW9uIGFib3V0IGl0cyBoYW5kbGluZyBvZiBzdXBlcmJsb2NrIGluZm9ybWF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIG5hdmlnYXRlIGRpcmVjdGx5IHRvIGxpbmUgNDM3OCBpbiBgZnMvZXh0NC9zdXBlci5jYC4gVGhhdCBzaG91bGQgYmUgdGhlIHNwb3Qgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBhbGxvY2F0aW9uIG9mIHRoZSBzdXBlciBibG9jayBpbmZvcm1hdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBhbGxvY2F0aW9uIGlzIG1hbmFnZWQgd2l0aGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gc3RydWN0dXJlLiBIb3BlZnVsbHksIHRoZSBjb2RlIGNvbW1lbnRzIGFyZSBjbGVhciEgVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGdvaW5nIG9uIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2V4dDQvc3VwZXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQzNzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDM3NTpcdFx0a2ZyZWUoc2JpKTtcbjQzNzY6XHR9XG40Mzc3Olx0XG40Mzc4Olx0c3RhdGljIHN0cnVjdCBleHQ0X3NiX2luZm8gKmV4dDRfYWxsb2Nfc2JpKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG40Mzc5Olx0e1xuNDM4MDpcdFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpO1xuNDM4MTpcdFxuNDM4MjpcdFx0c2JpID0ga3phbGxvY19vYmooKnNiaSk7XG40MzgzOlx0XHRpZiAoIXNiaSlcbjQzODQ6XHRcdFx0cmV0dXJuIE5VTEw7XG40Mzg1Olx0XG40Mzg2Olx0XHRzYmktXHUwMDNlc19kYXhkZXYgPSBmc19kYXhfZ2V0X2J5X2JkZXYoc2ItXHUwMDNlc19iZGV2LCBcdTAwMjZzYmktXHUwMDNlc19kYXhfcGFydF9vZmYsXG40Mzg3Olx0XHRcdFx0XHRcdCAgIE5VTEwsIE5VTEwpO1xuNDM4ODpcdFxuNDM4OTpcdFx0c2JpLVx1MDAzZXNfYmxvY2tncm91cF9sb2NrID1cbjQzOTA6XHRcdFx0a3phbGxvY19vYmooc3RydWN0IGJsb2NrZ3JvdXBfbG9jayk7XG40MzkxOlx0XG40MzkyOlx0XHRpZiAoIXNiaS1cdTAwM2VzX2Jsb2NrZ3JvdXBfbG9jaylcbjQzOTM6XHRcdFx0Z290byBlcnJfb3V0O1xuNDM5NDpcdFxuNDM5NTpcdFx0c2ItXHUwMDNlc19mc19pbmZvID0gc2JpO1xuNDM5NjpcdFx0c2JpLVx1MDAzZXNfc2IgPSBzYjtcbjQzOTc6XHRcdHJldHVybiBzYmk7XG40Mzk4Olx0ZXJyX291dDpcbjQzOTk6XHRcdGZzX3B1dF9kYXgoc2JpLVx1MDAzZXNfZGF4ZGV2LCBOVUxMKTtcbjQ0MDA6XHRcdGtmcmVlKHNiaSk7XG40NDAxOlx0XHRyZXR1cm4gTlVMTDtcbjQ0MDI6XHR9XG40NDAzOlx0XG40NDA0Olx0c3RhdGljIHZvaWQgZXh0NF9zZXRfZGVmX29wdHMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbjQ0MDU6XHRcdFx0XHQgICAgICBzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMpXG40NDA2Olx0e1xuNDQwNzpcdFx0dW5zaWduZWQgbG9uZyBkZWZfbW91bnRfb3B0cztcbjQ0MDg6XHRcbjQ0MDk6XHRcdC8qIFNldCBkZWZhdWx0cyBiZWZvcmUgd2UgcGFyc2UgdGhlIG1vdW50IG9wdGlvbnMgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE1NDkKCQkJCQkJCW91dHB1dDogMTc0CgkJCQkJCQl0aG91Z2h0czogNTQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEV4dDQgT3JwaGFuIExvY2sgQWxpZ25tZW50IENoYW5nZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBzdHJhaWdodGZvcndhcmQ6IHdlJiMzOTtyZSBhZGRpbmcgYF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXBgIHRvIHRoZSBgc19vcnBoYW5fbG9ja2AgbXV0ZXggd2l0aGluIHRoZSBgZXh0NF9zYl9pbmZvYCBzdHJ1Y3QuIFRoZSBhbGxvY2F0aW9uIG9mIHRoaXMgc3RydWN0IGlzIGhhbmRsZWQgYnkgYGt6YWxsb2Nfb2JqKCpzYmkpYCwgZW5zdXJpbmcgemVybyBpbml0aWFsaXphdGlvbi4gSSYjMzk7dmUgY29uZmlybWVkIGJ5IGV4YW1pbmluZyB0aGUgZGlmZiB0aGF0IHRoaXMgaXMgdGhlICpvbmx5KiBtb2RpZmljYXRpb24gdG8gdGhhdCBzdHJ1Y3QuCgpNeSBhbmFseXNpcyBmb2N1c2VzIG9uIHdoZXRoZXIgdGhpcyBjaGFuZ2UgY291bGQgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMuICBUaGUga2V5IHBvaW50cyBJIGNvbnNpZGVyZWQgYXJlOiBgc3RydWN0IGV4dDRfc2JfaW5mb2AgaXMgYW4gaW50ZXJuYWwga2VybmVsIHN0cnVjdHVyZSwgbm90IGV4cG9zZWQgdG8gdXNlciBzcGFjZS4gV2UmIzM5O3JlICpyZWFsaWduaW5nKiBhIG11dGV4LCBub3QgaW50cm9kdWNpbmcgbmV3IHZhcmlhYmxlcyBvciBzdHJ1Y3RzLiAgYGt6YWxsb2Nfb2JqYCB6ZXJvZXMgdGhlIGVudGlyZSBtZW1vcnkgcmVnaW9uLiBUaGlzIG1lYW5zIHRoYXQgYWZ0ZXIgYWxsb2NhdGlvbiwgbm8gcGFydCBvZiB0aGUgc3RydWN0IGNvbnRhaW5zIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZSBhcmUgbm8gcmVhZHMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnksIG5vIG5ldyBicmFuY2hlcywgYW5kIG5vIGRhdGEgbGVuZ3RoIG1hbmlwdWxhdGlvbiB0aGF0IGNvdWxkIGxlYWQgdG8gYSB2dWxuZXJhYmlsaXR5LiAgVGhpcyBjaGFuZ2Ugb25seSBjb25jZXJucyBjYWNoZWxpbmUgYWxpZ25tZW50IGluIFNNUCBrZXJuZWxzLgoKVGhlcmVmb3JlLCBiZWNhdXNlIHRoaXMgY2hhbmdlIHNvbGVseSBhZmZlY3RzIHRoZSBhbGlnbm1lbnQgb2YgYW4gYWxyZWFkeSBpbml0aWFsaXplZCBtdXRleCB3aXRoaW4gYW4gaW50ZXJuYWwgc3RydWN0dXJlLCBpdCBkb2VzbiYjMzk7dCBjcmVhdGUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiAgR2l2ZW4gdGhpcyBhbmFseXNpcywgcnVubmluZyBhIEtNU0FOIHNlc3Npb24gaXNuJiMzOTt0IG5lY2Vzc2FyeS4gS0FTQU4gd291bGQgYWxzbyBub3QgdHJpZ2dlciBoZXJlLCBhcyB3ZSBoYXZlIGFscmVhZHkgZW5zdXJlZCB6ZXJvZWQgYWxsb2NhdGlvbi4KCk5vdywgbGV0IG1lIGVuc3VyZSBJJiMzOTt2ZSBhZGRyZXNzZWQgYWxsIHJlcXVpcmVtZW50cy4gSSYjMzk7dmUgYW5hbHl6ZWQgdGhlIGNvZGUsIGNvbnNpZGVyZWQgdGhlIGltcGxpY2F0aW9ucywgYW5kIGNvbmNsdWRlZCB0aGF0IEtNU0FOIGlzIG5vdCBuZWNlc3NhcnksIGFzIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZC4gIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHRoZSAmIzM5O19fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXAmIzM5OyBhdHRyaWJ1dGUgdG8gdGhlICYjMzk7c19vcnBoYW5fbG9jayYjMzk7IG11dGV4IGluICYjMzk7c3RydWN0IGV4dDRfc2JfaW5mbyYjMzk7IHRvIGFsaWduIGl0IHRvIGEgY2FjaGVsaW5lIGluIFNNUCBjb25maWd1cmF0aW9ucyBhbmQgcmVkdWNlIGZhbHNlIHNoYXJpbmcuXG5cbiYjMzk7c3RydWN0IGV4dDRfc2JfaW5mbyYjMzk7IGlzIGFuIGludGVybmFsIHN1cGVyYmxvY2sgc3RhdGUgc3RydWN0dXJlIGFsbG9jYXRlZCB1c2luZyBremFsbG9jX29iaigpIGluIGV4dDRfYWxsb2Nfc2JpKCksIG1lYW5pbmcgYWxsIGZpZWxkcyBhbmQgYW55IGFsaWdubWVudCBwYWRkaW5nIGFyZSB6ZXJvLWluaXRpYWxpemVkIHVwb24gYWxsb2NhdGlvbi4gVGhlIHN0cnVjdHVyZSBpcyBuZXZlciBjb3BpZWQgdG8gdXNlcnNwYWNlLCBub3IgZG9lcyB0aGlzIGFsaWdubWVudCBhZGp1c3RtZW50IGFsdGVyIGNvbnRyb2wgZmxvdywgbGVuZ3RoIGNhbGN1bGF0aW9ucywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgaGFuZGxpbmcuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdGhlICYjMzk7X19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcCYjMzk7IGF0dHJpYnV0ZSB0byB0aGUgJiMzOTtzX29ycGhhbl9sb2NrJiMzOTsgbXV0ZXggaW4gJiMzOTtzdHJ1Y3QgZXh0NF9zYl9pbmZvJiMzOTsgdG8gYWxpZ24gaXQgdG8gYSBjYWNoZWxpbmUgaW4gU01QIGNvbmZpZ3VyYXRpb25zIGFuZCByZWR1Y2UgZmFsc2Ugc2hhcmluZy5cblxuJiMzOTtzdHJ1Y3QgZXh0NF9zYl9pbmZvJiMzOTsgaXMgYW4gaW50ZXJuYWwgc3VwZXJibG9jayBzdGF0ZSBzdHJ1Y3R1cmUgYWxsb2NhdGVkIHVzaW5nIGt6YWxsb2Nfb2JqKCkgaW4gZXh0NF9hbGxvY19zYmkoKSwgbWVhbmluZyBhbGwgZmllbGRzIGFuZCBhbnkgYWxpZ25tZW50IHBhZGRpbmcgYXJlIHplcm8taW5pdGlhbGl6ZWQgdXBvbiBhbGxvY2F0aW9uLiBUaGUgc3RydWN0dXJlIGlzIG5ldmVyIGNvcGllZCB0byB1c2Vyc3BhY2UsIG5vciBkb2VzIHRoaXMgYWxpZ25tZW50IGFkanVzdG1lbnQgYWx0ZXIgY29udHJvbCBmbG93LCBsZW5ndGggY2FsY3VsYXRpb25zLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSBoYW5kbGluZy4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNjo1MS4xNDkwNDkzMzlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjQyMDUxNDUzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCIsXG4gICAgXCJTTVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X29ycGhhbl9hZGRcIixcbiAgICBcImV4dDRfb3JwaGFuX2RlbFwiLFxuICAgIFwiX19leHQ0X2ZpbGxfc3VwZXJcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdGhlICdfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wJyBhdHRyaWJ1dGUgdG8gdGhlICdzX29ycGhhbl9sb2NrJyBtdXRleCBpbiAnc3RydWN0IGV4dDRfc2JfaW5mbycgdG8gYWxpZ24gaXQgdG8gYSBjYWNoZWxpbmUgaW4gU01QIGNvbmZpZ3VyYXRpb25zIGFuZCByZWR1Y2UgZmFsc2Ugc2hhcmluZy5cXG5cXG4nc3RydWN0IGV4dDRfc2JfaW5mbycgaXMgYW4gaW50ZXJuYWwgc3VwZXJibG9jayBzdGF0ZSBzdHJ1Y3R1cmUgYWxsb2NhdGVkIHVzaW5nIGt6YWxsb2Nfb2JqKCkgaW4gZXh0NF9hbGxvY19zYmkoKSwgbWVhbmluZyBhbGwgZmllbGRzIGFuZCBhbnkgYWxpZ25tZW50IHBhZGRpbmcgYXJlIHplcm8taW5pdGlhbGl6ZWQgdXBvbiBhbGxvY2F0aW9uLiBUaGUgc3RydWN0dXJlIGlzIG5ldmVyIGNvcGllZCB0byB1c2Vyc3BhY2UsIG5vciBkb2VzIHRoaXMgYWxpZ25tZW50IGFkanVzdG1lbnQgYWx0ZXIgY29udHJvbCBmbG93LCBsZW5ndGggY2FsY3VsYXRpb25zLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSBoYW5kbGluZy4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHN0cnVjdCBleHQ0X3NiX2luZm8gdG8gY2FjaGVsaW5lLWFsaWduIHRoZSBzX29ycGhhbl9sb2NrIG11dGV4IGluIFNNUCBjb25maWd1cmF0aW9ucy4gVGhpcyBhbHRlcnMgZGF0YSBzdHJ1Y3R1cmUgbGF5b3V0IGFuZCBzeW5jaHJvbml6YXRpb24gYmVoYXZpb3IgaW4gdGhlIGV4dDQgZmlsZXN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBzdWl0YWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDI6MzY6NTEuMTQ5MDU0NDg5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjY2NDY5ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxM2U0MjdjODc0ZTBhM2E4ZjI5YzZjNmM4OTBkNTc0ZjBiMjljZWIwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDQgMDI6MzY6NTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHQ0LmggYi9mcy9leHQ0L2V4dDQuaFxcbmluZGV4IDcyNGEyN2U4YmU2MTMuLmEzZjE2YTk4MTY2NDYgMTAwNjQ0XFxuLS0tIGEvZnMvZXh0NC9leHQ0LmhcXG4rKysgYi9mcy9leHQ0L2V4dDQuaFxcbkBAIC0xNjQ0LDcgKzE2NDQsNyBAQCBzdHJ1Y3QgZXh0NF9zYl9pbmZvIHtcXG4gXFx0LyogSm91cm5hbGluZyAqL1xcbiBcXHRzdHJ1Y3Qgam91cm5hbF9zICpzX2pvdXJuYWw7XFxuIFxcdHVuc2lnbmVkIGxvbmcgc19leHQ0X2ZsYWdzO1xcdFxcdC8qIEV4dDQgc3VwZXJibG9jayBmbGFncyAqL1xcbi1cXHRzdHJ1Y3QgbXV0ZXggc19vcnBoYW5fbG9jaztcXHQvKiBQcm90ZWN0cyBvbiBkaXNrIGxpc3QgY2hhbmdlcyAqL1xcbitcXHRzdHJ1Y3QgbXV0ZXggc19vcnBoYW5fbG9jayBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wO1xcbiBcXHRzdHJ1Y3QgbGlzdF9oZWFkIHNfb3JwaGFuO1xcdC8qIExpc3Qgb2Ygb3JwaGFuZWQgaW5vZGVzIGluIG9uIGRpc2tcXG4gXFx0XFx0XFx0XFx0XFx0ICAgbGlzdCAqL1xcbiBcXHRzdHJ1Y3QgZXh0NF9vcnBoYW5faW5mbyBzX29ycGhhbl9pbmZvO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNjo1MS41NzYzNzg3ODZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjIwNzc3Nzk1NDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIixcbiAgICBcIlNNUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfb3JwaGFuX2FkZFwiLFxuICAgIFwiZXh0NF9vcnBoYW5fZGVsXCIsXG4gICAgXCJfX2V4dDRfZmlsbF9zdXBlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHN0cnVjdCBleHQ0X3NiX2luZm8gdG8gY2FjaGVsaW5lLWFsaWduIHRoZSBzX29ycGhhbl9sb2NrIG11dGV4IGluIFNNUCBjb25maWd1cmF0aW9ucy4gVGhpcyBhbHRlcnMgZGF0YSBzdHJ1Y3R1cmUgbGF5b3V0IGFuZCBzeW5jaHJvbml6YXRpb24gYmVoYXZpb3IgaW4gdGhlIGV4dDQgZmlsZXN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBzdWl0YWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxM2U0MjdjODc0ZTBhM2E4ZjI5YzZjNmM4OTBkNTc0ZjBiMjljZWIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAwMjozNjo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvZXh0NC5oIGIvZnMvZXh0NC9leHQ0LmhcbmluZGV4IDcyNGEyN2U4YmU2MTMuLmEzZjE2YTk4MTY2NDYgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L2V4dDQuaFxuKysrIGIvZnMvZXh0NC9leHQ0LmhcbkBAIC0xNjQ0LDcgKzE2NDQsNyBAQCBzdHJ1Y3QgZXh0NF9zYl9pbmZvIHtcbiBcdC8qIEpvdXJuYWxpbmcgKi9cbiBcdHN0cnVjdCBqb3VybmFsX3MgKnNfam91cm5hbDtcbiBcdHVuc2lnbmVkIGxvbmcgc19leHQ0X2ZsYWdzO1x0XHQvKiBFeHQ0IHN1cGVyYmxvY2sgZmxhZ3MgKi9cbi1cdHN0cnVjdCBtdXRleCBzX29ycGhhbl9sb2NrO1x0LyogUHJvdGVjdHMgb24gZGlzayBsaXN0IGNoYW5nZXMgKi9cbitcdHN0cnVjdCBtdXRleCBzX29ycGhhbl9sb2NrIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHNfb3JwaGFuO1x0LyogTGlzdCBvZiBvcnBoYW5lZCBpbm9kZXMgaW4gb24gZGlza1xuIFx0XHRcdFx0XHQgICBsaXN0ICovXG4gXHRzdHJ1Y3QgZXh0NF9vcnBoYW5faW5mbyBzX29ycGhhbl9pbmZvO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDI6MzY6NTEuNTc2MzgwNDc2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjEwOTY2MjI2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDYWNoZWxpbmUgQWxpZ25tZW50IFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGluIGBmcy9leHQ0L2V4dDQuaGAgaXMgbW9kaWZ5aW5nIHRoZSBgc3RydWN0IGV4dDRfc2JfaW5mb2Agd2l0aGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gY29kZS4gU3BlY2lmaWNhbGx5LCBpdCdzIGFkZGluZyBgX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcGAgdG8gdGhlIGBzX29ycGhhbl9sb2NrYCBtdXRleCBkZWNsYXJhdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBqdXN0IGEgY29zbWV0aWMgY2hhbmdlIG9yIGlmIGl0IGFmZmVjdHMgdGhlIGRhdGEgc3RydWN0dXJlIGxheW91dCBvciBleGVjdXRhYmxlIGNvZGUuXG5cbk5vdywgbGV0J3MgY2FyZWZ1bGx5IHJldmlldyB0aGUgZnV6emluZyBjcml0ZXJpYS4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGlzIGNoYW5nZSB0cmlnZ2VycyB0aGUgZnV6emluZyBwcm9jZXNzLiBBY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucywgY2hhbmdlcyB0aGF0IGFyZSBcInJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlc1wiIGFyZSBvZiBpbnRlcmVzdC4gVGhlIGBleHQ0X3NiX2luZm9gIGlzICpkZWZpbml0ZWx5KiBhIGNvcmUgZGF0YSBzdHJ1Y3R1cmUsIGludGltYXRlbHkgaW52b2x2ZWQgaW4gdGhlIGZpbGVzeXN0ZW0gb3BlcmF0aW9uLiBBZGRpbmcgYF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXBgICpoYXMqIHRvIGFsdGVyIHRoZSBsYXlvdXQuIEFsaWdubWVudCBkaXJlY3RpdmVzIGFyZSBhbGwgYWJvdXQgcGFkZGluZyBhbmQgcGxhY2VtZW50IHdpdGhpbiB0aGUgc3RydWN0LCByaWdodD8gQ2hhbmdpbmcgYHNfb3JwaGFuX2xvY2tgJ3MgYWxpZ25tZW50IHdpdGhpbiBgc3RydWN0IGV4dDRfc2JfaW5mb2AgdW5kb3VidGVkbHkgY2hhbmdlcyB0aGUgc3RydWN0J3MgbGF5b3V0LlxuXG5GdXJ0aGVybW9yZSwgSSBoYXZlIHRvIGVuc3VyZSB0aGF0IGV4dDQgaXMgcmVhY2hhYmxlLiBHaXZlbiB0aGF0IGV4dDQgaXMgYSBzdGFuZGFyZCBmaWxlc3lzdGVtLCBhbmQgSSBjYW4gZWFzaWx5IG1vdW50IGFuIGV4dDQgaW1hZ2Ugb3IgZnV6eiB0aHJvdWdoIHN5c2NhbGxzIGluIFFFTVUgb3IgR0NFLCBpdCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZS5cblxuR2l2ZW4gdGhlc2UgcG9pbnRzLCB0aGlzIHBhdGNoIGxvb2tzIGxpa2UgaXQgZG9lcyB0cmlnZ2VyIHRoZSBmdXp6aW5nIHByb2Nlc3MuIEl0IHJlc3RydWN0dXJlcyBhIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZSB3aXRoaW4gYSBjb3JlIGZpbGVzeXN0ZW0gY29tcG9uZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODk4LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDI6MzY6NTcuNjg2MDQ1Njg3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwMDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL2V4dDQvZXh0NC5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2MzUsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE2MzU6XFx0XFx0c3RydWN0IHBlcmNwdV9jb3VudGVyIHNfc3JhX2V4Y2VlZGVkX3JldHJ5X2xpbWl0O1xcbjE2MzY6XFx0XFx0c3RydWN0IGJsb2NrZ3JvdXBfbG9jayAqc19ibG9ja2dyb3VwX2xvY2s7XFxuMTYzNzpcXHRcXHRzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnNfcHJvYztcXG4xNjM4OlxcdFxcdHN0cnVjdCBrb2JqZWN0IHNfa29iajtcXG4xNjM5OlxcdFxcdHN0cnVjdCBjb21wbGV0aW9uIHNfa29ial91bnJlZ2lzdGVyO1xcbjE2NDA6XFx0XFx0c3RydWN0IG11dGV4IHNfZXJyb3Jfbm90aWZ5X211dGV4OyAvKiBwcm90ZWN0cyBzeXNmc19ub3RpZnkgdnMga29iamVjdF9kZWwgKi9cXG4xNjQxOlxcdFxcdHN0cnVjdCBzdXBlcl9ibG9jayAqc19zYjtcXG4xNjQyOlxcdFxcdHN0cnVjdCBidWZmZXJfaGVhZCAqc19tbXBfYmg7XFxuMTY0MzpcXHRcXG4xNjQ0OlxcdFxcdC8qIEpvdXJuYWxpbmcgKi9cXG4xNjQ1OlxcdFxcdHN0cnVjdCBqb3VybmFsX3MgKnNfam91cm5hbDtcXG4xNjQ2OlxcdFxcdHVuc2lnbmVkIGxvbmcgc19leHQ0X2ZsYWdzO1xcdFxcdC8qIEV4dDQgc3VwZXJibG9jayBmbGFncyAqL1xcbjE2NDc6XFx0XFx0c3RydWN0IG11dGV4IHNfb3JwaGFuX2xvY2sgX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcXG4xNjQ4OlxcdFxcdHN0cnVjdCBsaXN0X2hlYWQgc19vcnBoYW47XFx0LyogTGlzdCBvZiBvcnBoYW5lZCBpbm9kZXMgaW4gb24gZGlza1xcbjE2NDk6XFx0XFx0XFx0XFx0XFx0XFx0ICAgbGlzdCAqL1xcbjE2NTA6XFx0XFx0c3RydWN0IGV4dDRfb3JwaGFuX2luZm8gc19vcnBoYW5faW5mbztcXG4xNjUxOlxcdFxcdHVuc2lnbmVkIGxvbmcgc19jb21taXRfaW50ZXJ2YWw7XFxuMTY1MjpcXHRcXHR1MzIgc19tYXhfYmF0Y2hfdGltZTtcXG4xNjUzOlxcdFxcdHUzMiBzX21pbl9iYXRjaF90aW1lO1xcbjE2NTQ6XFx0XFx0c3RydWN0IGZpbGUgKnNfam91cm5hbF9iZGV2X2ZpbGU7XFxuMTY1NTpcXHQjaWZkZWYgQ09ORklHX1FVT1RBXFxuMTY1NjpcXHRcXHQvKiBOYW1lcyBvZiBxdW90YSBmaWxlcyB3aXRoIGpvdXJuYWxsZWQgcXVvdGEgKi9cXG4xNjU3OlxcdFxcdGNoYXIgX19yY3UgKnNfcWZfbmFtZXNbRVhUNF9NQVhRVU9UQVNdO1xcbjE2NTg6XFx0XFx0aW50IHNfanF1b3RhX2ZtdDtcXHRcXHRcXHQvKiBGb3JtYXQgb2YgcXVvdGEgdG8gdXNlICovXFxuMTY1OTpcXHQjZW5kaWZcXG4xNjYwOlxcdFxcdHVuc2lnbmVkIGludCBzX3dhbnRfZXh0cmFfaXNpemU7IC8qIE5ldyBpbm9kZXMgc2hvdWxkIHJlc2VydmUgIyBieXRlcyAqL1xcbjE2NjE6XFx0XFx0c3RydWN0IGV4dDRfc3lzdGVtX2Jsb2NrcyBfX3JjdSAqc19zeXN0ZW1fYmxrcztcXG4xNjYyOlxcdFxcbjE2NjM6XFx0I2lmZGVmIEVYVEVOVFNfU1RBVFNcXG4xNjY0OlxcdFxcdC8qIGV4dDQgZXh0ZW50cyBzdGF0cyAqL1xcbjE2NjU6XFx0XFx0dW5zaWduZWQgbG9uZyBzX2V4dF9taW47XFxuMTY2NjpcXHRcXHR1bnNpZ25lZCBsb25nIHNfZXh0X21heDtcXG4xNjY3OlxcdFxcdHVuc2lnbmVkIGxvbmcgc19kZXB0aF9tYXg7XFxuMTY2ODpcXHRcXHRzcGlubG9ja190IHNfZXh0X3N0YXRzX2xvY2s7XFxuMTY2OTpcXHRcXHR1bnNpZ25lZCBsb25nIHNfZXh0X2Jsb2NrcztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDI6MzY6NTcuNjg2MjM4NTQ3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzU5MzU3NzkyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGUgZXh0NCBjb2RlYmFzZTpcblxuKipBbmFseXppbmcgYHNfb3JwaGFuX2xvY2tgIFVzYWdlIGluIGV4dDQqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcm9sZSBvZiBgc19vcnBoYW5fbG9ja2Agd2l0aGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0uIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIGdldCBhIGJyb2FkIHBpY3R1cmUgb2Ygd2hlcmUgdGhpcyBzcGlubG9jayBpcyBhY3RpdmVseSBlbXBsb3llZC4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGp1c3QgbG9va2luZyBmb3IgaXRzIHVzYWdlIGFjcm9zcyB0aGUgZW50aXJlIGV4dDQgc291cmNlIHRyZWUuIEknbGwgcHJvYmFibHkgc3RhcnQgd2l0aCBhIHNpbXBsZSBgZ3JlcGAgb3IgYGZpbmRgIGNvbW1hbmQgdG8gbG9jYXRlIGFsbCBpbnN0YW5jZXMgb2YgdGhlIHZhcmlhYmxlIGl0c2VsZiwgYHNfb3JwaGFuX2xvY2tgLCBub3QganVzdCB0aGUgZGVmaW5pdGlvbiwgYnV0IGV2ZXJ5d2hlcmUgaXQncyAqdXNlZCog4oCTIHJlYWQsIHdyaXR0ZW4sIHRha2VuLCByZWxlYXNlZC5cblxuT25jZSBJIGhhdmUgYSBsaXN0IG9mIGNhbGwgc2l0ZXMsIEknbGwgbmVlZCB0byBzb3J0IGFuZCBvcmdhbml6ZSB0aGVtLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBmdW5jdGlvbnMgYXJlIG1vc3QgaW1wb3J0YW50LiBXaGljaCBmdW5jdGlvbnMgYXJlIG1vc3QgZnJlcXVlbnRseSBleGVjdXRlZD8gV2hpY2ggYXJlIGxpa2VseSBjcml0aWNhbCB0byBpbnRlZ3JpdHk/IEknbGwgcHJvYmFibHkgZ3JvdXAgdGhlbSBieSByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuIElzIGl0IG1vc3RseSByZWxhdGVkIHRvIGlub2RlIG9wZXJhdGlvbnM/IE9ycGhhbiBpbm9kZSBsaXN0cz8gSm91cm5hbGluZz8gSSBuZWVkIHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB0aGUgbG9jaydzIHNjb3BlLlxuXG5OZXh0LCBJJ2xsIGRyaWxsIGRvd24gaW50byB0aGUgY29udGV4dCBvZiBlYWNoIHVzYWdlLiBGb3IgZWFjaCBvY2N1cnJlbmNlLCBJIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlLiBXaGF0IG9wZXJhdGlvbnMgYXJlIHByb3RlY3RlZCBieSB0aGlzIGxvY2s/IFdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBndWFyZGVkPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgdGhhdCB0aGlzIGxvY2sgaXMgZGVzaWduZWQgdG8gcHJldmVudD8gV2hhdCdzIHRoZSBsb2NrIGhpZXJhcmNoeT8gQXJlIHRoZXJlIGFueSBvdGhlciBsb2NrcyBiZWluZyBoZWxkIGNvbmN1cnJlbnRseT8gVW5kZXJzdGFuZGluZyB0aGUgbG9ja2luZyBvcmRlciBpcyBwYXJhbW91bnQsIHNvIEkgZG9uJ3QgaW50cm9kdWNlIGRlYWRsb2Nrcy4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIGxvY2sgaXMgYWNxdWlyZWQgKGUuZy4sIGBzcGluX2xvY2tfaXJxc2F2ZWAsIGBzcGluX2xvY2tgKSBhbmQgaG93IGl0J3MgcmVsZWFzZWQgKGUuZy4sIGBzcGluX3VubG9ja19pcnFyZXN0b3JlYCwgYHNwaW5fdW5sb2NrYCkuXG5cblVsdGltYXRlbHksIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSAqcmVhc29uKiBmb3IgdGhpcyBsb2NrLiBXaGF0IGlzIGl0IHN5bmNocm9uaXppbmc/IElzIGl0IGd1YXJkaW5nIGEgY3JpdGljYWwgc2VjdGlvbiByZWxhdGVkIHRvIG9ycGhhbiBpbm9kZXMsIGVuc3VyaW5nIGRhdGEgY29uc2lzdGVuY3ksIHByZXZlbnRpbmcgZG91YmxlIGZyZWVpbmcsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBBIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHB1cnBvc2UgaXMgY3JpdGljYWwgaWYgSSBpbnRlbmQgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoZSBjb2RlIHRoYXQgaW50ZXJhY3RzIHdpdGggaXQsIG9yIG9wdGltaXplIGl0LiBEZXBlbmRpbmcgb24gaG93IGRlZXAgSSBuZWVkIHRvIGdvLCBJIG1heSBzdGFydCBsb29raW5nIGF0IHJlbGF0ZWQgc3RydWN0dXJlcyBhbmQgdGhlIGxhcmdlciBzeXN0ZW0gZGVzaWduLiBJIG1heSBleGFtaW5lIHRoZSBqb3VybmFsaW5nIG9wZXJhdGlvbnMgb3IgdGhlIHdheSBpbm9kZSBkYXRhIGFyZSBmbHVzaGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjQwLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNzowMS4yNzk4MTk2MjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY2NjYwMzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic19vcnBoYW5fbG9ja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvZXh0NC5oPTE1OTI9c3RydWN0IGV4dDRfc2JfaW5mbyB7XFxuLS1cXG5mcy9leHQ0L2V4dDQuaC0xNjQ2LVxcdHVuc2lnbmVkIGxvbmcgc19leHQ0X2ZsYWdzO1xcdFxcdC8qIEV4dDQgc3VwZXJibG9jayBmbGFncyAqL1xcbmZzL2V4dDQvZXh0NC5oOjE2NDc6XFx0c3RydWN0IG11dGV4IHNfb3JwaGFuX2xvY2sgX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcXG5mcy9leHQ0L2V4dDQuaC0xNjQ4LVxcdHN0cnVjdCBsaXN0X2hlYWQgc19vcnBoYW47XFx0LyogTGlzdCBvZiBvcnBoYW5lZCBpbm9kZXMgaW4gb24gZGlza1xcbi0tXFxuZnMvZXh0NC9vcnBoYW4uYz0xMDI9aW50IGV4dDRfb3JwaGFuX2FkZChoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKVxcbi0tXFxuZnMvZXh0NC9vcnBoYW4uYy0xNDYtXFxuZnMvZXh0NC9vcnBoYW4uYzoxNDc6XFx0bXV0ZXhfbG9jayhcXHUwMDI2c2JpLVxcdTAwM2VzX29ycGhhbl9sb2NrKTtcXG5mcy9leHQ0L29ycGhhbi5jLTE0OC1cXHQvKlxcbi0tXFxuZnMvZXh0NC9vcnBoYW4uYy0xNjItXFx0bGlzdF9hZGQoXFx1MDAyNkVYVDRfSShpbm9kZSktXFx1MDAzZWlfb3JwaGFuLCBcXHUwMDI2c2JpLVxcdTAwM2VzX29ycGhhbik7XFxuZnMvZXh0NC9vcnBoYW4uYzoxNjM6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzYmktXFx1MDAzZXNfb3JwaGFuX2xvY2spO1xcbmZzL2V4dDQvb3JwaGFuLmMtMTY0LVxcbi0tXFxuZnMvZXh0NC9vcnBoYW4uYy0xNzUtXFx0XFx0XFx0ICovXFxuZnMvZXh0NC9vcnBoYW4uYzoxNzY6XFx0XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2c2JpLVxcdTAwM2VzX29ycGhhbl9sb2NrKTtcXG5mcy9leHQ0L29ycGhhbi5jLTE3Ny1cXHRcXHRcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZFWFQ0X0koaW5vZGUpLVxcdTAwM2VpX29ycGhhbik7XFxuZnMvZXh0NC9vcnBoYW4uYzoxNzg6XFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzYmktXFx1MDAzZXNfb3JwaGFuX2xvY2spO1xcbmZzL2V4dDQvb3JwaGFuLmMtMTc5LVxcdFxcdH1cXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmM9MjI2PWludCBleHQ0X29ycGhhbl9kZWwoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSlcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtMjQyLVxcbmZzL2V4dDQvb3JwaGFuLmM6MjQzOlxcdC8qIERvIHRoaXMgcXVpY2sgY2hlY2sgYmVmb3JlIHRha2luZyBnbG9iYWwgc19vcnBoYW5fbG9jay4gKi9cXG5mcy9leHQ0L29ycGhhbi5jLTI0NC1cXHRpZiAobGlzdF9lbXB0eShcXHUwMDI2ZWktXFx1MDAzZWlfb3JwaGFuKSlcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtMjQ3LVxcdGlmIChoYW5kbGUpIHtcXG5mcy9leHQ0L29ycGhhbi5jOjI0ODpcXHRcXHQvKiBHcmFiIGlub2RlIGJ1ZmZlciBlYXJseSBiZWZvcmUgdGFraW5nIGdsb2JhbCBzX29ycGhhbl9sb2NrICovXFxuZnMvZXh0NC9vcnBoYW4uYy0yNDktXFx0XFx0ZXJyID0gZXh0NF9yZXNlcnZlX2lub2RlX3dyaXRlKGhhbmRsZSwgaW5vZGUsIFxcdTAwMjZpbG9jKTtcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtMjUxLVxcbmZzL2V4dDQvb3JwaGFuLmM6MjUyOlxcdG11dGV4X2xvY2soXFx1MDAyNnNiaS1cXHUwMDNlc19vcnBoYW5fbG9jayk7XFxuZnMvZXh0NC9vcnBoYW4uYy0yNTMtXFx0ZXh0NF9kZWJ1ZyhcXFwicmVtb3ZlIGlub2RlICVsbHUgZnJvbSBvcnBoYW4gbGlzdFxcXFxuXFxcIiwgaW5vZGUtXFx1MDAzZWlfaW5vKTtcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtMjYyLVxcdGlmICghaGFuZGxlIHx8IGVycikge1xcbmZzL2V4dDQvb3JwaGFuLmM6MjYzOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2c2JpLVxcdTAwM2VzX29ycGhhbl9sb2NrKTtcXG5mcy9leHQ0L29ycGhhbi5jLTI2NC1cXHRcXHRnb3RvIG91dF9lcnI7XFxuLS1cXG5mcy9leHQ0L29ycGhhbi5jLTI3My1cXHRcXHRpZiAoZXJyKSB7XFxuZnMvZXh0NC9vcnBoYW4uYzoyNzQ6XFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzYmktXFx1MDAzZXNfb3JwaGFuX2xvY2spO1xcbmZzL2V4dDQvb3JwaGFuLmMtMjc1LVxcdFxcdFxcdGdvdG8gb3V0X2JyZWxzZTtcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtMjgwLVxcdFxcdHVubG9ja19idWZmZXIoc2JpLVxcdTAwM2VzX3NiaCk7XFxuZnMvZXh0NC9vcnBoYW4uYzoyODE6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzYmktXFx1MDAzZXNfb3JwaGFuX2xvY2spO1xcbmZzL2V4dDQvb3JwaGFuLmMtMjgyLVxcdFxcdGVyciA9IGV4dDRfaGFuZGxlX2RpcnR5X21ldGFkYXRhKGhhbmRsZSwgTlVMTCwgc2JpLVxcdTAwM2VzX3NiaCk7XFxuLS1cXG5mcy9leHQ0L29ycGhhbi5jLTI5MS1cXHRcXHRpZiAoZXJyKSB7XFxuZnMvZXh0NC9vcnBoYW4uYzoyOTI6XFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzYmktXFx1MDAzZXNfb3JwaGFuX2xvY2spO1xcbmZzL2V4dDQvb3JwaGFuLmMtMjkzLVxcdFxcdFxcdGdvdG8gb3V0X2JyZWxzZTtcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtMjk2LVxcdFxcdGVyciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaV9wcmV2LCBcXHUwMDI2aWxvYzIpO1xcbmZzL2V4dDQvb3JwaGFuLmM6Mjk3OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2c2JpLVxcdTAwM2VzX29ycGhhbl9sb2NrKTtcXG5mcy9leHQ0L29ycGhhbi5jLTI5OC1cXHR9XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NTM1Nz1zdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy01NTA1LVxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZzYmktXFx1MDAzZXNfb3JwaGFuKTsgLyogdW5saW5rZWQgYnV0IG9wZW4gZmlsZXMgKi9cXG5mcy9leHQ0L3N1cGVyLmM6NTUwNjpcXHRtdXRleF9pbml0KFxcdTAwMjZzYmktXFx1MDAzZXNfb3JwaGFuX2xvY2spO1xcbmZzL2V4dDQvc3VwZXIuYy01NTA3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNzowMS4zMjY0OTM2NzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTA0NjA0MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgT3JwaGFuIExvY2sgaW4gZXh0NCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYHNfb3JwaGFuX2xvY2tgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUgYW5kIGhvdyBpdCdzIGJlaW5nIHV0aWxpemVkIHdpdGhpbiB0aGUgZXh0NCBmaWxlc3lzdGVtIGNvZGUuIFJpZ2h0IG5vdywgSSBzZWUgaXQncyBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aHJlZSBrZXkgYXJlYXM6IGBleHQ0X29ycGhhbl9hZGRgLCBgZXh0NF9vcnBoYW5fZGVsYCwgYW5kIHRoZSBzdXBlciBibG9jayBpbml0aWFsaXphdGlvbiwgd2hpY2ggbWlnaHQgYmUgYF9fZXh0NF9maWxsX3N1cGVyYCBvciBwZXJoYXBzIGp1c3QgYGV4dDRfZmlsbF9zdXBlcmAuIFRoYXQgZ2l2ZXMgbWUgYSBmcmFtZXdvcmsuXG5cbk5vdywgSSB3YW50IHRvIGdhaW4gbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udGV4dCB0aGF0IGNvbnRyb2xzIHRoaXMuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUga2VybmVsJ3MgS2NvbmZpZyBzZXR0aW5ncyBmb3IgZXh0NC4gSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGluZmx1ZW5jZSBob3cgdGhpcyBsb2NraW5nIG1lY2hhbmlzbSBpcyBoYW5kbGVkLiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGVzPyBBcmUgdGhlcmUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBiYXNlZCBvbiBjZXJ0YWluIGtlcm5lbCBzZXR0aW5ncz8gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIHdoYXQgc2V0dGluZ3MgbWF5IGFmZmVjdCB0aGUgdXNhZ2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSB1c2FnZSBpcyBjb25zdGFudCwgb3IgY29uZGl0aW9uYWwuIFRpbWUgdG8gc2VlIHdoYXQgS2NvbmZpZyBoYXMgdG8gb2ZmZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MDAsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNzowMy44MzExMDA5OTZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5MjIwNDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEVYVDRfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9leHQ0L0tjb25maWc6Mjpjb25maWcgRVhUNF9GU1xcbmZzL2V4dDQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJUaGUgRXh0ZW5kZWQgNCAoZXh0NCkgZmlsZXN5c3RlbVxcXCJcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZz0zNT1jb25maWcgRVhUNF9VU0VfRk9SX0VYVDJcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZy00NS1cXG5mcy9leHQ0L0tjb25maWc6NDY6Y29uZmlnIEVYVDRfRlNfUE9TSVhfQUNMXFxuZnMvZXh0NC9LY29uZmlnLTQ3LVxcdGJvb2wgXFxcIkV4dDQgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuLS1cXG5mcy9leHQ0L0tjb25maWctNTUtXFxuZnMvZXh0NC9LY29uZmlnOjU2OmNvbmZpZyBFWFQ0X0ZTX1NFQ1VSSVRZXFxuZnMvZXh0NC9LY29uZmlnLTU3LVxcdGJvb2wgXFxcIkV4dDQgU2VjdXJpdHkgTGFiZWxzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNzowMy44NzgwMzA0MjJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzY2MTY4NDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBmcm9tIGFuIGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBFWFQ0IEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBgRVhUNF9GU2AgY29uZmlndXJhdGlvbiBvcHRpb24uIEtub3dpbmcgd2hlcmUgdG8gZmluZCBpdCBpbiB0aGUgS2NvbmZpZyBmaWxlcyBpcyBmdW5kYW1lbnRhbC4gVGhhdCBsaWtlbHkgbWVhbnMgZGl2aW5nIGludG8gYGZzL2V4dDQvS2NvbmZpZ2AgZGlyZWN0b3J5LiBJIHNob3VsZCBxdWlja2x5IGNoZWNrIHRoYXQgZmlsZSB0byBjb25maXJtIHdoZXJlIEVYVDQgaXMgZGVmaW5lZC4gSSBrbm93IGBLY29uZmlnYCBmaWxlcyBhcmUgdGhlIGJhY2tib25lIG9mIHRoZSBrZXJuZWwncyBidWlsZCBzeXN0ZW0gYW5kIG1hbmFnZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBLbm93aW5nIHRoaXMsIEkgbmVlZCB0byBxdWlja2x5IGZpbmQgYEVYVDRfRlNgIGluIGl0cyBsaWtlbHkgbG9jYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MzMsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNzowNS42NDQyMDI4MTdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTIyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvZXh0NC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgRVhUNF9GU1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlRoZSBFeHRlbmRlZCA0IChleHQ0KSBmaWxlc3lzdGVtXFxcIlxcbiAgIDQ6XFx0XFx0c2VsZWN0IEJVRkZFUl9IRUFEXFxuICAgNTpcXHRcXHRzZWxlY3QgSkJEMlxcbiAgIDY6XFx0XFx0c2VsZWN0IENSQzE2XFxuICAgNzpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gICA4OlxcdFxcdHNlbGVjdCBGU19JT01BUFxcbiAgIDk6XFx0XFx0c2VsZWN0IEZTX0VOQ1JZUFRJT05fQUxHUyBpZiBGU19FTkNSWVBUSU9OXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFRoaXMgaXMgdGhlIG5leHQgZ2VuZXJhdGlvbiBvZiB0aGUgZXh0MyBmaWxlc3lzdGVtLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRcXHQgIFVubGlrZSB0aGUgY2hhbmdlIGZyb20gZXh0MiBmaWxlc3lzdGVtIHRvIGV4dDMgZmlsZXN5c3RlbSxcXG4gIDE0OlxcdFxcdCAgdGhlIG9uLWRpc2sgZm9ybWF0IG9mIGV4dDQgaXMgbm90IGZvcndhcmRzIGNvbXBhdGlibGUgd2l0aFxcbiAgMTU6XFx0XFx0ICBleHQzOyBpdCBpcyBiYXNlZCBvbiBleHRlbnQgbWFwcyBhbmQgaXQgc3VwcG9ydHMgNDgtYml0XFxuICAxNjpcXHRcXHQgIHBoeXNpY2FsIGJsb2NrIG51bWJlcnMuICBUaGUgZXh0NCBmaWxlc3lzdGVtIGFsc28gc3VwcG9ydHMgZGVsYXllZFxcbiAgMTc6XFx0XFx0ICBhbGxvY2F0aW9uLCBwZXJzaXN0ZW50IHByZWFsbG9jYXRpb24sIGhpZ2ggcmVzb2x1dGlvbiB0aW1lIHN0YW1wcyxcXG4gIDE4OlxcdFxcdCAgYW5kIGEgbnVtYmVyIG9mIG90aGVyIGZlYXR1cmVzIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UgYW5kIHNwZWVkXFxuICAxOTpcXHRcXHQgIHVwIGZzY2sgdGltZS4gIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlIHRoZSB3ZWIgcGFnZXMgYXRcXG4gIDIwOlxcdFxcdCAgaHR0cDovL2V4dDQud2lraS5rZXJuZWwub3JnLlxcbiAgMjE6XFx0XFxuICAyMjpcXHRcXHQgIFRoZSBleHQ0IGZpbGVzeXN0ZW0gc3VwcG9ydHMgbW91bnRpbmcgYW4gZXh0MyBmaWxlc3lzdGVtOyB3aGlsZSB0aGVyZVxcbiAgMjM6XFx0XFx0ICBhcmUgc29tZSBwZXJmb3JtYW5jZSBnYWlucyBmcm9tIHRoZSBkZWxheWVkIGFsbG9jYXRpb24gYW5kIGlub2RlXFxuICAyNDpcXHRcXHQgIHRhYmxlIHJlYWRhaGVhZCwgdGhlIGJlc3QgcGVyZm9ybWFuY2UgZ2FpbnMgcmVxdWlyZSBlbmFibGluZyBleHQ0XFxuICAyNTpcXHRcXHQgIGZlYXR1cmVzIGluIHRoZSBmaWxlc3lzdGVtIHVzaW5nIHR1bmUyZnMsIG9yIGZvcm1hdHRpbmcgYSBuZXdcXG4gIDI2OlxcdFxcdCAgZmlsZXN5c3RlbSBhcyBhbiBleHQ0IGZpbGVzeXN0ZW0gaW5pdGlhbGx5LiBXaXRob3V0IGV4cGxpY2l0IGVuYWJsaW5nXFxuICAyNzpcXHRcXHQgIG9mIGV4dDQgZmVhdHVyZXMsIHRoZSBvbiBkaXNrIGZpbGVzeXN0ZW0gZm9ybWF0IHN0YXlzIGZ1bGx5IGJhY2t3YXJkXFxuICAyODpcXHRcXHQgIGNvbXBhdGlibGUuXFxuICAyOTpcXHRcXG4gIDMwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGZpbGUgc3lzdGVtIHN1cHBvcnQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZVxcbiAgMzE6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZXh0NC5cXG4gIDMyOlxcdFxcbiAgMzM6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgMzQ6XFx0XFxuICAzNTpcXHRjb25maWcgRVhUNF9VU0VfRk9SX0VYVDJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDI6Mzc6MDUuNjQ0Mjk4NTM3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY2MjAwOTEyMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUHJvcG9zZWQgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzLiBUaGUgcHJpbWFyeSBjb25jZXJuIGhlcmUgaXMgdGhlIGNoYW5nZSBpbiBjYWNoZSBhbGlnbm1lbnQgb2YgYHNfb3JwaGFuX2xvY2tgIHdpdGhpbiB0aGUgYHN0cnVjdCBleHQ0X3NiX2luZm9gIHN0cnVjdHVyZS4gVGhpcyBpcyBzaWduaWZpY2FudCwgZXNwZWNpYWxseSBiZWNhdXNlIHRoZSBjaGFuZ2UgaXMgY29uZGl0aW9uYWwgb24gdGhlIGBTTVBgIGNvbmZpZ3VyYXRpb24uIFNpbmNlIGBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wYCBkZXBlbmRzIG9uIGBTTVBgIGFuZCBgU01QYCBpcyBub3cgc3VjaCBhIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24sIHdlIG5lZWQgdG8gY29uc2lkZXIgaG93IHRoaXMgaW1wYWN0cyBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzLiBXaGlsZSBgU01QYCBpdHNlbGYgaXMgcHJhY3RpY2FsbHkgdWJpcXVpdG91cyB0aGVzZSBkYXlzLCB3ZSBhbHNvIGhhdmUgdGhlIGBFWFQ0X0ZTYCBjb25maWd1cmF0aW9uIHRvIGNvbnNpZGVyLCB3aGljaCBwZXJ0YWlucyBzcGVjaWZpY2FsbHkgdG8gdGhlIGV4dDQgZmlsZXN5c3RlbS5cblxuVGhlIGNyaXRlcmlhIGZvciBmdXp6aW5nIGFwcGVhciBzb3VuZC4gVGhpcyBwYXRjaCBkaXJlY3RseSBtb2RpZmllcyB0aGUgbGF5b3V0IG9mIGBleHQ0X3NiX2luZm9gIGluIFNNUCBzZXR1cHMuIGBleHQ0YCBpcyBhIGNvcmUgTGludXggZmlsZXN5c3RlbSwgYW5kIGEgd2VsbC11bmRlcnN0b29kIHRhcmdldCBmb3Igc3l6a2FsbGVyLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgY3JpdGljYWwgZnVuY3Rpb25zLiBXZSdyZSBsb29raW5nIGF0IGZ1bmN0aW9ucyB0aGF0IGFjY2VzcyBvciBpbml0aWFsaXplIGBzX29ycGhhbl9sb2NrYDogU3BlY2lmaWNhbGx5LCBgZXh0NF9vcnBoYW5fYWRkYCwgYGV4dDRfb3JwaGFuX2RlbGAsIGFuZCBgX19leHQ0X2ZpbGxfc3VwZXJgLiBUaGVzZSBhcmUgYWxsIGxvY2F0ZWQgaW4gc3RhbmRhcmQgZXh0NCBmaWxlIGxvY2F0aW9uczogYGZzL2V4dDQvb3JwaGFuLmNgIGZvciB0aGUgYWRkL2RlbCBvcGVyYXRpb25zIGFuZCBgZnMvZXh0NC9zdXBlci5jYCBmb3IgdGhlIHN1cGVyIGJsb2NrIGluaXRpYWxpemF0aW9uLiBJJ2xsIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgYW4gZXhoYXVzdGl2ZSBsaXN0LlxuXG5UaGUgc3VnZ2VzdGVkIGBFbmFibGVDb25maWdzYCBhcmUgYFtcIkVYVDRfRlNcIl1gIG9yIHBvdGVudGlhbGx5IGBbXCJFWFQ0X0ZTXCIsIFwiU01QXCJdYC4gYEVYVDRfRlNgIHNob3VsZCBiZSBzdWZmaWNpZW50LCBhcyBleHQ0IGlzIGEgd2VsbC10ZXN0ZWQsIGNvbW1vbiBjb25maWd1cmF0aW9uLCBidXQgdGhlIFNNUCBwYXJ0IGlzIGltcG9ydGFudCBpbiByZWxhdGlvbiB0byB0aGUgc3RydWN0dXJlIGFsaWdubWVudC5cblxuRmluYWxseSwgZG9lcyB0aGlzIHdhcnJhbnQgZnV6emluZz8gQWJzb2x1dGVseS4gTW9kaWZ5aW5nIGRhdGEgc3RydWN0dXJlcywgcGFydGljdWxhcmx5IHdpdGhpbiBhIGNvcmUgc3Vic3lzdGVtIGxpa2UgYGV4dDRgLCBpcyBhIGhpZ2gtcmlzayBjaGFuZ2UuIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlc2UgY2hhbmdlcywgZXNwZWNpYWxseSByZWxhdGVkIHRvIGxheW91dCBhbmQgYWxpZ25tZW50LCBkb24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMsIG1lbW9yeSBjb3JydXB0aW9uIHZ1bG5lcmFiaWxpdGllcywgZmFsc2Ugc2hhcmluZywgb3IgYWxpZ25tZW50IGlzc3Vlcy4gVGhlc2UgYXJlIHRoZSBraW5kcyBvZiBzdWJ0bGUgcHJvYmxlbXMgdGhhdCBmdXp6aW5nIGlzIGRlc2lnbmVkIHRvIGNhdGNoLlxuXG5JJ20gc2F0aXNmaWVkIHdpdGggdGhlIGFuYWx5c2lzLCBsZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2NTMsIk91dHB1dFRva2VucyI6MTE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDI6Mzc6MTIuMjY0MzkyNzk5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODk3NzczOTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIixcbiAgICBcIlNNUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfb3JwaGFuX2FkZFwiLFxuICAgIFwiZXh0NF9vcnBoYW5fZGVsXCIsXG4gICAgXCJfX2V4dDRfZmlsbF9zdXBlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHN0cnVjdCBleHQ0X3NiX2luZm8gdG8gY2FjaGVsaW5lLWFsaWduIHRoZSBzX29ycGhhbl9sb2NrIG11dGV4IGluIFNNUCBjb25maWd1cmF0aW9ucy4gVGhpcyBhbHRlcnMgZGF0YSBzdHJ1Y3R1cmUgbGF5b3V0IGFuZCBzeW5jaHJvbml6YXRpb24gYmVoYXZpb3IgaW4gdGhlIGV4dDQgZmlsZXN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBzdWl0YWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCIsXG4gICAgXCJTTVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X29ycGhhbl9hZGRcIixcbiAgICBcImV4dDRfb3JwaGFuX2RlbFwiLFxuICAgIFwiX19leHQ0X2ZpbGxfc3VwZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBzdHJ1Y3QgZXh0NF9zYl9pbmZvIHRvIGNhY2hlbGluZS1hbGlnbiB0aGUgc19vcnBoYW5fbG9jayBtdXRleCBpbiBTTVAgY29uZmlndXJhdGlvbnMuIFRoaXMgYWx0ZXJzIGRhdGEgc3RydWN0dXJlIGxheW91dCBhbmQgc3luY2hyb25pemF0aW9uIGJlaGF2aW9yIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgc3VpdGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDAyOjM3OjEyLjM1NDE5NDQ0MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEyMTUzNTgzODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNzoxMi4zNTQ2OTkwMjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyMTIxNDg0ODIxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB0aGUgJ19fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXAnIGF0dHJpYnV0ZSB0byB0aGUgJ3Nfb3JwaGFuX2xvY2snIG11dGV4IGluICdzdHJ1Y3QgZXh0NF9zYl9pbmZvJyB0byBhbGlnbiBpdCB0byBhIGNhY2hlbGluZSBpbiBTTVAgY29uZmlndXJhdGlvbnMgYW5kIHJlZHVjZSBmYWxzZSBzaGFyaW5nLlxcblxcbidzdHJ1Y3QgZXh0NF9zYl9pbmZvJyBpcyBhbiBpbnRlcm5hbCBzdXBlcmJsb2NrIHN0YXRlIHN0cnVjdHVyZSBhbGxvY2F0ZWQgdXNpbmcga3phbGxvY19vYmooKSBpbiBleHQ0X2FsbG9jX3NiaSgpLCBtZWFuaW5nIGFsbCBmaWVsZHMgYW5kIGFueSBhbGlnbm1lbnQgcGFkZGluZyBhcmUgemVyby1pbml0aWFsaXplZCB1cG9uIGFsbG9jYXRpb24uIFRoZSBzdHJ1Y3R1cmUgaXMgbmV2ZXIgY29waWVkIHRvIHVzZXJzcGFjZSwgbm9yIGRvZXMgdGhpcyBhbGlnbm1lbnQgYWRqdXN0bWVudCBhbHRlciBjb250cm9sIGZsb3csIGxlbmd0aCBjYWxjdWxhdGlvbnMsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGhhbmRsaW5nLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTNlNDI3Yzg3NGUwYTNhOGYyOWM2YzZjODkwZDU3NGYwYjI5Y2ViMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMDI6MzY6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dDQuaCBiL2ZzL2V4dDQvZXh0NC5oXG5pbmRleCA3MjRhMjdlOGJlNjEzLi5hM2YxNmE5ODE2NjQ2IDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9leHQ0LmhcbisrKyBiL2ZzL2V4dDQvZXh0NC5oXG5AQCAtMTY0NCw3ICsxNjQ0LDcgQEAgc3RydWN0IGV4dDRfc2JfaW5mbyB7XG4gXHQvKiBKb3VybmFsaW5nICovXG4gXHRzdHJ1Y3Qgam91cm5hbF9zICpzX2pvdXJuYWw7XG4gXHR1bnNpZ25lZCBsb25nIHNfZXh0NF9mbGFncztcdFx0LyogRXh0NCBzdXBlcmJsb2NrIGZsYWdzICovXG4tXHRzdHJ1Y3QgbXV0ZXggc19vcnBoYW5fbG9jaztcdC8qIFByb3RlY3RzIG9uIGRpc2sgbGlzdCBjaGFuZ2VzICovXG4rXHRzdHJ1Y3QgbXV0ZXggc19vcnBoYW5fbG9jayBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wO1xuIFx0c3RydWN0IGxpc3RfaGVhZCBzX29ycGhhbjtcdC8qIExpc3Qgb2Ygb3JwaGFuZWQgaW5vZGVzIGluIG9uIGRpc2tcbiBcdFx0XHRcdFx0ICAgbGlzdCAqL1xuIFx0c3RydWN0IGV4dDRfb3JwaGFuX2luZm8gc19vcnBoYW5faW5mbztcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDAyOjM3OjEyLjM1NDcwMjM3MloiLCJTZXEiOjE1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0Mzg3OTk3MDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEZ1enppbmcgU2Vzc2lvbiBKdXN0aWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIHRha2luZyBhIGxvb2sgYXQgdGhpcyBwYXRjaCBzZXJpZXMgYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIGl0IHdhcnJhbnRzIGRlZGljYXRpbmcgc29tZSBLTVNBTiBmdXp6aW5nIHRpbWUuIExldCdzIHNlZS4uLiB0aGUgZGlmZiBsb29rcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJdCBsb29rcyBsaWtlIHRoZXkgYXJlIGFkZGluZyBgX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcGAgdG8gYHNfb3JwaGFuX2xvY2tgLCBhIG11dGV4IHdpdGhpbiBgc3RydWN0IGV4dDRfc2JfaW5mb2AgaW4gYGZzL2V4dDQvZXh0NC5oYC4gVGhpcyBpcyBsaWtlbHkgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRvIGF2b2lkIGZhbHNlIHNoYXJpbmcuIEJ1dCwgZG9lcyB0aGlzIGludHJvZHVjZSBhIHBvdGVudGlhbCBmb3IgbmV3IG1lbW9yeSBzYWZldHkgaXNzdWVzIHRoYXQgS01TQU4gY291bGQgY2F0Y2g/XG5cbkkgbmVlZCBtb3JlIGNvbnRleHQuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHdoYXQgb3RoZXIgdXNlcyBhcmUgYmVpbmcgbWFkZSBvZiB0aGlzIGBleHQ0X3NiX2luZm9gIHN0cnVjdCBhbmQgYHNfb3JwaGFuX2xvY2tgIG11dGV4IHRvIGRldGVybWluZSB3aGF0IHNvcnQgb2YgYWNjZXNzIHBhdHRlcm5zIGFyZSBpbiBwbGF5LiBJJ2xsIHJlYWQgdGhlIGZpbGUgb3IgZ3JlcCBmb3IgcmVmZXJlbmNlcyB0byBzZWUgd2hlcmUgdGhpcyBtdXRleCBpcyB1c2VkIGFuZCBob3cuIFRoZSBnb2FsIGlzIHRvIHNlZSBpZiB0aGlzIGNoYW5nZSBhbHRlcnMgYW55IGxvY2tpbmcgb3JkZXIgb3IgaWYgaXQgdG91Y2hlcyBhIHNoYXJlZCBkYXRhc3RydWN0dXJlIGluIGEgbm9uLW9idmlvdXMgd2F5LiBEZXBlbmRpbmcgb24gd2hhdCBJIGZpbmQsIEknbGwgdGhlbiBkZWNpZGUgaWYgYSBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgd2FycmFudGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTEwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDI6Mzc6MTYuNzQyNzAyNTE1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODI3NjE1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdHJ1Y3QgZXh0NF9zYl9pbmZvIFxcXFx7XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvZXh0NC5oPTE1NjU9c3RydWN0IGV4dDRfZmNfc25hcF9zdGF0cyB7XFxuLS1cXG5mcy9leHQ0L2V4dDQuaC0xNTkxLSAqL1xcbmZzL2V4dDQvZXh0NC5oOjE1OTI6c3RydWN0IGV4dDRfc2JfaW5mbyB7XFxuZnMvZXh0NC9leHQ0LmgtMTU5My1cXHR1bnNpZ25lZCBsb25nIHNfZGVzY19zaXplO1xcdC8qIFNpemUgb2YgYSBncm91cCBkZXNjcmlwdG9yIGluIGJ5dGVzICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDAyOjM3OjE2Ljc5MDk4NjUyMloiLCJTZXEiOjE3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDU4NDE3MTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRoaW5raW5nLCBleHByZXNzZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEaXZpbmcgaW50byB0aGUgZXh0NCBIZWFkZXIqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYSBzcGVjaWZpYyBhc3BlY3Qgb2YgdGhlIGV4dDQgZmlsZXN5c3RlbSwgc28gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgaGVhZGVyIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxNjQwIG9mIGBmcy9leHQ0L2V4dDQuaGAuIFRoaXMgbGlrZWx5IGNvbnRhaW5zIHNvbWUgY3JpdGljYWwgZGVmaW5pdGlvbnMgb3Igc3RydWN0dXJlcyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZiB0byBwcm9jZWVkLiBJIGFudGljaXBhdGUgZmluZGluZyBpbmZvcm1hdGlvbiBhYm91dOKApiB3ZWxsLCBJJ20gbm90IHN1cmUgKmV4YWN0bHkqIHlldCwgdGhhdCdzIHdoeSBJJ20gaGVyZS4gQnV0IEknbSByZWFkeSB0byBkaWcgaW4gYW5kIGRlY2lwaGVyIHdoYXQgdGhpcyBzZWN0aW9uIGhvbGRzLiBJdCBjb3VsZCBiZSByZWxhdGVkIHRvIGlub2RlIG1hbmFnZW1lbnQsIGJsb2NrIGFsbG9jYXRpb24sIGpvdXJuYWxpbmcgbWV0YWRhdGEsIG9yIGV2ZW4gc29tZSBvYnNjdXJlIGZlYXR1cmUuIFRoZSBodW50IGJlZ2lucyFcblxuXG4iLCJJbnB1dFRva2VucyI6MjgxNCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDAyOjM3OjE5LjI0OTQwNjY1M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTY1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvZXh0NC9leHQ0LmhcIixcbiAgXCJGaXJzdExpbmVcIjogMTYzNSxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTYzNTpcXHRcXHRzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIgc19zcmFfZXhjZWVkZWRfcmV0cnlfbGltaXQ7XFxuMTYzNjpcXHRcXHRzdHJ1Y3QgYmxvY2tncm91cF9sb2NrICpzX2Jsb2NrZ3JvdXBfbG9jaztcXG4xNjM3OlxcdFxcdHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqc19wcm9jO1xcbjE2Mzg6XFx0XFx0c3RydWN0IGtvYmplY3Qgc19rb2JqO1xcbjE2Mzk6XFx0XFx0c3RydWN0IGNvbXBsZXRpb24gc19rb2JqX3VucmVnaXN0ZXI7XFxuMTY0MDpcXHRcXHRzdHJ1Y3QgbXV0ZXggc19lcnJvcl9ub3RpZnlfbXV0ZXg7IC8qIHByb3RlY3RzIHN5c2ZzX25vdGlmeSB2cyBrb2JqZWN0X2RlbCAqL1xcbjE2NDE6XFx0XFx0c3RydWN0IHN1cGVyX2Jsb2NrICpzX3NiO1xcbjE2NDI6XFx0XFx0c3RydWN0IGJ1ZmZlcl9oZWFkICpzX21tcF9iaDtcXG4xNjQzOlxcdFxcbjE2NDQ6XFx0XFx0LyogSm91cm5hbGluZyAqL1xcbjE2NDU6XFx0XFx0c3RydWN0IGpvdXJuYWxfcyAqc19qb3VybmFsO1xcbjE2NDY6XFx0XFx0dW5zaWduZWQgbG9uZyBzX2V4dDRfZmxhZ3M7XFx0XFx0LyogRXh0NCBzdXBlcmJsb2NrIGZsYWdzICovXFxuMTY0NzpcXHRcXHRzdHJ1Y3QgbXV0ZXggc19vcnBoYW5fbG9jayBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wO1xcbjE2NDg6XFx0XFx0c3RydWN0IGxpc3RfaGVhZCBzX29ycGhhbjtcXHQvKiBMaXN0IG9mIG9ycGhhbmVkIGlub2RlcyBpbiBvbiBkaXNrXFxuMTY0OTpcXHRcXHRcXHRcXHRcXHRcXHQgICBsaXN0ICovXFxuMTY1MDpcXHRcXHRzdHJ1Y3QgZXh0NF9vcnBoYW5faW5mbyBzX29ycGhhbl9pbmZvO1xcbjE2NTE6XFx0XFx0dW5zaWduZWQgbG9uZyBzX2NvbW1pdF9pbnRlcnZhbDtcXG4xNjUyOlxcdFxcdHUzMiBzX21heF9iYXRjaF90aW1lO1xcbjE2NTM6XFx0XFx0dTMyIHNfbWluX2JhdGNoX3RpbWU7XFxuMTY1NDpcXHRcXHRzdHJ1Y3QgZmlsZSAqc19qb3VybmFsX2JkZXZfZmlsZTtcXG4xNjU1OlxcdCNpZmRlZiBDT05GSUdfUVVPVEFcXG4xNjU2OlxcdFxcdC8qIE5hbWVzIG9mIHF1b3RhIGZpbGVzIHdpdGggam91cm5hbGxlZCBxdW90YSAqL1xcbjE2NTc6XFx0XFx0Y2hhciBfX3JjdSAqc19xZl9uYW1lc1tFWFQ0X01BWFFVT1RBU107XFxuMTY1ODpcXHRcXHRpbnQgc19qcXVvdGFfZm10O1xcdFxcdFxcdC8qIEZvcm1hdCBvZiBxdW90YSB0byB1c2UgKi9cXG4xNjU5OlxcdCNlbmRpZlxcbjE2NjA6XFx0XFx0dW5zaWduZWQgaW50IHNfd2FudF9leHRyYV9pc2l6ZTsgLyogTmV3IGlub2RlcyBzaG91bGQgcmVzZXJ2ZSAjIGJ5dGVzICovXFxuMTY2MTpcXHRcXHRzdHJ1Y3QgZXh0NF9zeXN0ZW1fYmxvY2tzIF9fcmN1ICpzX3N5c3RlbV9ibGtzO1xcbjE2NjI6XFx0XFxuMTY2MzpcXHQjaWZkZWYgRVhURU5UU19TVEFUU1xcbjE2NjQ6XFx0XFx0LyogZXh0NCBleHRlbnRzIHN0YXRzICovXFxuMTY2NTpcXHRcXHR1bnNpZ25lZCBsb25nIHNfZXh0X21pbjtcXG4xNjY2OlxcdFxcdHVuc2lnbmVkIGxvbmcgc19leHRfbWF4O1xcbjE2Njc6XFx0XFx0dW5zaWduZWQgbG9uZyBzX2RlcHRoX21heDtcXG4xNjY4OlxcdFxcdHNwaW5sb2NrX3Qgc19leHRfc3RhdHNfbG9jaztcXG4xNjY5OlxcdFxcdHVuc2lnbmVkIGxvbmcgc19leHRfYmxvY2tzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNzoxOS4yNDk2MDUwNjNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjMxMjc1NTA4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipUcmFjaW5nIHRoZSBBbGxvY2F0aW9uIGFuZCBJbml0aWFsaXphdGlvbiBvZiBgc3RydWN0IGV4dDRfc2JfaW5mb2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBhbmQgaG93IHRoZSBgc3RydWN0IGV4dDRfc2JfaW5mb2AgaXMgYnJvdWdodCB0byBsaWZlIHdpdGhpbiB0aGUgZXh0NCBmaWxlc3lzdGVtIGNvZGUuIFRoYXQgc3RydWN0IGlzIGZ1bmRhbWVudGFsIHRvIHRoZSBvcGVyYXRpb24gb2YgdGhlIGZpbGVzeXN0ZW0sIGhvbGRpbmcgYWxsIHRoZSBzdXBlcmJsb2NrIGluZm9ybWF0aW9uIGFuZCBtZXRhZGF0YSBhYm91dCB0aGUgZXh0NCB2b2x1bWUsIHNvIGdldHRpbmcgaXRzIGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIGNsZWFyIGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIEkgd2FudCB0byB0cmFjZSBpdHMgbGlmZWN5Y2xlIGZyb20gc3RhcnQgdG8gZmluaXNoLiBJJ2xsIG5lZWQgdG8gZ28gZGlnZ2luZyB0aHJvdWdoIHRoZSBrZXJuZWwgc291cmNlIHRvIGZpbmQgdGhlIGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIHBvaW50cy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbG9vayBmb3IgZnVuY3Rpb25zIHRoYXQgYXJlIGxpa2VseSByZXNwb25zaWJsZSBmb3IgbW91bnRpbmcgYW4gZXh0NCBmaWxlc3lzdGVtLCBvciBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIHN1cGVyYmxvY2sgaGFuZGxpbmcuIEkgd2lsbCBiZSBsb29raW5nIGZvciBjYWxscyByZWxhdGVkIHRvIGBleHQ0X3NiX2luZm9gIG9yIHNpbWlsYXIgZGF0YSBzdHJ1Y3R1cmVzLCBvciBldmVuIGFsbG9jYXRpb25zIHJlbGF0ZWQgdG8gXCJzdXBlcmJsb2NrXCIgb3IgXCJtb3VudFwiIG9wZXJhdGlvbnMuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBtb3VudCBjb2RlIHBhdGggc2luY2UgdGhhdCBpcyB3aGVyZSBhbGwgb2YgdGhlIGZpbGVzeXN0ZW0gc3RydWN0dXJlcyBhcmUgaW5pdGlhbGlzZWQuIEkgc2hvdWxkIGZpbmQgaXQgdGhlcmUuIExldCdzIHNlZSBob3cgdGhpcyB1bmZvbGRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjY5LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNzoyMS41NjIzNjM4MDVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDA2NTI1MiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3phbGxvY1xcXFwoc2l6ZW9mXFxcXChzdHJ1Y3QgZXh0NF9zYl9pbmZvXFxcXCl8c2l6ZW9mXFxcXChzdHJ1Y3QgZXh0NF9zYl9pbmZvXFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDAyOjM3OjIxLjY2NjQzNjcxN1oiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNjA0MTg4NTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6XG5cbioqVHJhY2luZyB0aGUgQWxsb2NhdGlvbiBvZiBgZXh0NF9zYl9pbmZvYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHdoZXJlIHRoaXMgYGV4dDRfc2JfaW5mb2Agc3RydWN0dXJlIGlzIGdldHRpbmcgYWxsb2NhdGVkIGluIHRoZSBrZXJuZWwuIFRoaXMgaXMgYSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgZXh0NCBmaWxlc3lzdGVtJ3Mgc3VwZXJibG9jayBpbmZvcm1hdGlvbiwgc28gdW5kZXJzdGFuZGluZyBpdHMgbGlmZWN5Y2xlIGlzIGZ1bmRhbWVudGFsIGZvciBhbnkga2VybmVsIGFuYWx5c2lzLiBJJ20gdGhpbmtpbmcgSSBjYW4gc3RhcnQgYnkgbG9va2luZyBmb3IgY2FsbHMgdG8gYGttYWxsb2NgLCBga3phbGxvY2AsIG9yIGBrbWVtX2NhY2hlX2FsbG9jYCB3aXRoIHRoZSBzaXplIG9mIHRoZSBgZXh0NF9zYl9pbmZvYCBzdHJ1Y3R1cmUuIE9yLCBJIHNob3VsZCBsb29rIGF0IHRoZSBleHQ0J3Mgc3VwZXJibG9jayBvcGVyYXRpb25zIChgc19vcGApIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBjdXN0b20gYWxsb2NhdGlvbiByb3V0aW5lcyBkZWZpbmVkIHRoZXJlLiBJIGNvdWxkIGFsc28gc2NhbiB0aGUgY29kZSBmb3IgZGlyZWN0IGNhbGxzIHRvIGBhbGxvY19zdXBlcmAgYXMgdGhhdCBzZWVtcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gSSdsbCBuZWVkIHRvIHVzZSBhIGNvbWJpbmF0aW9uIG9mIHRvb2xzOiBgZ3JlcGAgdG8gcXVpY2tseSBzZWFyY2ggdGhlIHNvdXJjZSB0cmVlLCBwb3RlbnRpYWxseSBjcm9zcy1yZWZlcmVuY2luZyB3aXRoIGBjc2NvcGVgIG9yIGBjLXRhZ3NgIGZvciBkZWVwZXIgY2FsbC1ncmFwaCBhbmFseXNpcy4gQSBzb3VyY2UtY29kZSBicm93c2VyIHdpdGggeHJlZiBjYXBhYmlsaXRpZXMgaXMgZ29pbmcgdG8gYmUgbXkgYmVzdCBmcmllbmQgaGVyZS4gTGV0J3Mgc3RhcnQgd2l0aCBhIGJhc2ljIGBncmVwYCBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEl0IG1pZ2h0IGJlIGEgb25lLWxpbmVyIG9yIGl0IG1pZ2h0IHJlcXVpcmUgYSBtb3JlIGludm9sdmVkIGRpdmUgdGhyb3VnaCB0aGUgYm9vdCBwcm9jZXNzIGFuZCBtb3VudCBwYXRoLiBUaW1lIHRvIGRpZyBpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6Mzk4MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDAyOjM3OjI1LjI3MDYyODA1MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU0NjM3MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXh0NF9zYl9pbmZvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvc3VwZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L3N1cGVyLmM9NDcyPXN0YXRpYyB2b2lkIGV4dDRfbWF5YmVfdXBkYXRlX3N1cGVyYmxvY2soc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5mcy9leHQ0L3N1cGVyLmMtNDczLXtcXG5mcy9leHQ0L3N1cGVyLmM6NDc0OlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy00NzUtXFx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzID0gc2JpLVxcdTAwM2VzX2VzO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTY0Nz1zdGF0aWMgdm9pZCBzYXZlX2Vycm9yX2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGVycm9yLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTY1MC17XFxuZnMvZXh0NC9zdXBlci5jOjY1MTpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNjUyLVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTc1MT1zdGF0aWMgdm9pZCB1cGRhdGVfc3VwZXJfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZnMvZXh0NC9zdXBlci5jLTc1Mi17XFxuZnMvZXh0NC9zdXBlci5jOjc1MzpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGV4dDRfc2JfaW5mbyxcXG5mcy9leHQ0L3N1cGVyLmMtNzU0LVxcdFxcdFxcdFxcdFxcdFxcdHNfc2JfdXBkX3dvcmspO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTExMDY9dm9pZCBleHQ0X21hcmtfZ3JvdXBfYml0bWFwX2NvcnJ1cHRlZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTExMDkte1xcbmZzL2V4dDQvc3VwZXIuYzoxMTEwOlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy0xMTExLVxcdHN0cnVjdCBleHQ0X2dyb3VwX2luZm8gKmdycCA9IGV4dDRfZ2V0X2dyb3VwX2luZm8oc2IsIGdyb3VwKTtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0xMTYzPXN0YXRpYyBpbmxpbmUgc3RydWN0IGlub2RlICpvcnBoYW5fbGlzdF9lbnRyeShzdHJ1Y3QgbGlzdF9oZWFkICpsKVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTExNjctXFxuZnMvZXh0NC9zdXBlci5jOjExNjg6c3RhdGljIHZvaWQgZHVtcF9vcnBoYW5fbGlzdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkpXFxuZnMvZXh0NC9zdXBlci5jLTExNjkte1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTEyMDI9c3RhdGljIGlubGluZSBjaGFyICpnZXRfcWZfbmFtZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbmZzL2V4dDQvc3VwZXIuYzoxMjAzOlxcdFxcdFxcdFxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSxcXG5mcy9leHQ0L3N1cGVyLmMtMTIwNC1cXHRcXHRcXHRcXHRpbnQgdHlwZSlcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0xMjEwPXN0YXRpYyBpbmxpbmUgdm9pZCBleHQ0X3F1b3Rhc19vZmYoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHR5cGUpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtMTIxNC1cXG5mcy9leHQ0L3N1cGVyLmM6MTIxNTpzdGF0aWMgaW50IGV4dDRfcGVyY3B1X3BhcmFtX2luaXQoc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpKVxcbmZzL2V4dDQvc3VwZXIuYy0xMjE2LXtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy0xMjQ3LVxcbmZzL2V4dDQvc3VwZXIuYzoxMjQ4OnN0YXRpYyB2b2lkIGV4dDRfcGVyY3B1X3BhcmFtX2Rlc3Ryb3koc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpKVxcbmZzL2V4dDQvc3VwZXIuYy0xMjQ5LXtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy0xMjU3LVxcbmZzL2V4dDQvc3VwZXIuYzoxMjU4OnN0YXRpYyB2b2lkIGV4dDRfZ3JvdXBfZGVzY19mcmVlKHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSlcXG5mcy9leHQ0L3N1cGVyLmMtMTI1OS17XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtMTI2OC1cXG5mcy9leHQ0L3N1cGVyLmM6MTI2OTpzdGF0aWMgdm9pZCBleHQ0X2ZsZXhfZ3JvdXBzX2ZyZWUoc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpKVxcbmZzL2V4dDQvc3VwZXIuYy0xMjcwLXtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0xMjgyPXN0YXRpYyB2b2lkIGV4dDRfcHV0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuZnMvZXh0NC9zdXBlci5jLTEyODMte1xcbmZzL2V4dDQvc3VwZXIuYzoxMjg0OlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy0xMjg1LVxcdHN0cnVjdCBleHQ0X3N1cGVyX2Jsb2NrICplcyA9IHNiaS1cXHUwMDNlc19lcztcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0yNTI4PXN0YXRpYyBpbnQgcGFyc2VfYXBwbHlfc2JfbW91bnRfb3B0aW9ucyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTI1MzAte1xcbmZzL2V4dDQvc3VwZXIuYzoyNTMxOlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy0yNTMyLVxcdGNoYXIgc19tb3VudF9vcHRzWzY0XTtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0yNTgyPXN0YXRpYyB2b2lkIGV4dDRfYXBwbHlfcXVvdGFfb3B0aW9ucyhzdHJ1Y3QgZnNfY29udGV4dCAqZmMsXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtMjU4Ny1cXHRzdHJ1Y3QgZXh0NF9mc19jb250ZXh0ICpjdHggPSBmYy1cXHUwMDNlZnNfcHJpdmF0ZTtcXG5mcy9leHQ0L3N1cGVyLmM6MjU4ODpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtMjU4OS1cXHRjaGFyICpxbmFtZTtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0yNjE5PXN0YXRpYyBpbnQgZXh0NF9jaGVja19xdW90YV9jb25zaXN0ZW5jeShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtMjYyMy1cXHRzdHJ1Y3QgZXh0NF9mc19jb250ZXh0ICpjdHggPSBmYy1cXHUwMDNlZnNfcHJpdmF0ZTtcXG5mcy9leHQ0L3N1cGVyLmM6MjYyNDpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtMjYyNS1cXHRib29sIHF1b3RhX2ZlYXR1cmUgPSBleHQ0X2hhc19mZWF0dXJlX3F1b3RhKHNiKTtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0yNzM3PXN0YXRpYyBpbnQgZXh0NF9jaGVja190ZXN0X2R1bW15X2VuY3J5cHRpb24oY29uc3Qgc3RydWN0IGZzX2NvbnRleHQgKmZjLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTI3NDAtXFx0Y29uc3Qgc3RydWN0IGV4dDRfZnNfY29udGV4dCAqY3R4ID0gZmMtXFx1MDAzZWZzX3ByaXZhdGU7XFxuZnMvZXh0NC9zdXBlci5jOjI3NDE6XFx0Y29uc3Qgc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTI3NDItXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9Mjc4OT1zdGF0aWMgaW50IGV4dDRfY2hlY2tfb3B0X2NvbnNpc3RlbmN5KHN0cnVjdCBmc19jb250ZXh0ICpmYyxcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy0yNzkyLVxcdHN0cnVjdCBleHQ0X2ZzX2NvbnRleHQgKmN0eCA9IGZjLVxcdTAwM2Vmc19wcml2YXRlO1xcbmZzL2V4dDQvc3VwZXIuYzoyNzkzOlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IGZjLVxcdTAwM2VzX2ZzX2luZm87XFxuZnMvZXh0NC9zdXBlci5jLTI3OTQtXFx0aW50IGlzX3JlbW91bnQgPSBmYy1cXHUwMDNlcHVycG9zZSA9PSBGU19DT05URVhUX0ZPUl9SRUNPTkZJR1VSRTtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0yODcxPXN0YXRpYyB2b2lkIGV4dDRfYXBwbHlfb3B0aW9ucyhzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtMjg3My1cXHRzdHJ1Y3QgZXh0NF9mc19jb250ZXh0ICpjdHggPSBmYy1cXHUwMDNlZnNfcHJpdmF0ZTtcXG5mcy9leHQ0L3N1cGVyLmM6Mjg3NDpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBmYy1cXHUwMDNlc19mc19pbmZvO1xcbmZzL2V4dDQvc3VwZXIuYy0yODc1LVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTI5MzE9c3RhdGljIGlubGluZSB2b2lkIGV4dDRfc2hvd19xdW90YV9vcHRpb25zKHN0cnVjdCBzZXFfZmlsZSAqc2VxLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTI5MzQtI2lmIGRlZmluZWQoQ09ORklHX1FVT1RBKVxcbmZzL2V4dDQvc3VwZXIuYzoyOTM1OlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy0yOTM2LVxcdGNoYXIgKnVzcl9xZl9uYW1lLCAqZ3JwX3FmX25hbWU7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9Mjk4MT1zdGF0aWMgaW50IF9leHQ0X3Nob3dfb3B0aW9ucyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy0yOTgzLXtcXG5mcy9leHQ0L3N1cGVyLmM6Mjk4NDpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtMjk4NS1cXHRzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMgPSBzYmktXFx1MDAzZXNfZXM7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9MzEyMz1zdGF0aWMgaW50IGV4dDRfc2V0dXBfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTMxMjUte1xcbmZzL2V4dDQvc3VwZXIuYzozMTI2OlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy0zMTI3LVxcdGludCBlcnIgPSAwO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTMxODE9aW50IGV4dDRfYWxsb2NfZmxleF9iZ19hcnJheShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBleHQ0X2dyb3VwX3Qgbmdyb3VwKVxcbmZzL2V4dDQvc3VwZXIuYy0zMTgyLXtcXG5mcy9leHQ0L3N1cGVyLmM6MzE4MzpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtMzE4NC1cXHRzdHJ1Y3QgZmxleF9ncm91cHMgKipvbGRfZ3JvdXBzLCAqKm5ld19ncm91cHM7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9MzIyOD1zdGF0aWMgaW50IGV4dDRfZmlsbF9mbGV4X2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5mcy9leHQ0L3N1cGVyLmMtMzIyOS17XFxuZnMvZXh0NC9zdXBlci5jOjMyMzA6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTMyMzEtXFx0c3RydWN0IGV4dDRfZ3JvdXBfZGVzYyAqZ2RwID0gTlVMTDtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0zMjYyPXN0YXRpYyBfX2xlMTYgZXh0NF9ncm91cF9kZXNjX2NzdW0oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgX191MzIgYmxvY2tfZ3JvdXAsXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtMzI2Ny1cXHRfX2xlMzIgbGVfZ3JvdXAgPSBjcHVfdG9fbGUzMihibG9ja19ncm91cCk7XFxuZnMvZXh0NC9zdXBlci5jOjMyNjg6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTMyNjktXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9MzMyNT1zdGF0aWMgaW50IGV4dDRfY2hlY2tfZGVzY3JpcHRvcnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy0zMzI4LXtcXG5mcy9leHQ0L3N1cGVyLmM6MzMyOTpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtMzMzMC1cXHRleHQ0X2ZzYmxrX3QgZmlyc3RfYmxvY2sgPSBsZTMyX3RvX2NwdShzYmktXFx1MDAzZXNfZXMtXFx1MDAzZXNfZmlyc3RfZGF0YV9ibG9jayk7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9MzU2OD1zdGF0aWMgZXh0NF9mc2Jsa190IGRlc2NyaXB0b3JfbG9jKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtMzU3MC17XFxuZnMvZXh0NC9zdXBlci5jOjM1NzE6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTM1NzItXFx0ZXh0NF9ncm91cF90IGJnLCBmaXJzdF9tZXRhX2JnO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTM2MDYtICovXFxuZnMvZXh0NC9zdXBlci5jOjM2MDc6c3RhdGljIHVuc2lnbmVkIGxvbmcgZXh0NF9nZXRfc3RyaXBlX3NpemUoc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpKVxcbmZzL2V4dDQvc3VwZXIuYy0zNjA4LXtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0zNzA1PXZvaWQgcHJpbnRfZGFpbHlfZXJyb3JfaW5mbyhzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG5mcy9leHQ0L3N1cGVyLmMtMzcwNi17XFxuZnMvZXh0NC9zdXBlci5jOjM3MDc6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gdGltZXJfY29udGFpbmVyX29mKHNiaSwgdCwgc19lcnJfcmVwb3J0KTtcXG5mcy9leHQ0L3N1cGVyLmMtMzcwOC1cXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gc2JpLVxcdTAwM2VzX3NiO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTQwNTc9aW50IGV4dDRfcmVnaXN0ZXJfbGlfcmVxdWVzdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTQwNTkte1xcbmZzL2V4dDQvc3VwZXIuYzo0MDYwOlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy00MDYxLVxcdHN0cnVjdCBleHQ0X2xpX3JlcXVlc3QgKmVsciA9IE5VTEw7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NDEzMj1zdGF0aWMgaW50IHNldF9qb3VybmFsX2NzdW1fZmVhdHVyZV9zZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy00MTM1LVxcdGludCBjb21wYXQsIGluY29tcGF0O1xcbmZzL2V4dDQvc3VwZXIuYzo0MTM2OlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy00MTM3LVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTQxODY9c3RhdGljIGludCBjb3VudF9vdmVyaGVhZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBleHQ0X2dyb3VwX3QgZ3JwLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTQxODgte1xcbmZzL2V4dDQvc3VwZXIuYzo0MTg5OlxcdHN0cnVjdCBleHQ0X3NiX2luZm9cXHQqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTQxOTAtXFx0c3RydWN0IGV4dDRfZ3JvdXBfZGVzY1xcdCpnZHA7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NDI0OT1pbnQgZXh0NF9jYWxjdWxhdGVfb3ZlcmhlYWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5mcy9leHQ0L3N1cGVyLmMtNDI1MC17XFxuZnMvZXh0NC9zdXBlci5jOjQyNTE6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTQyNTItXFx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzID0gc2JpLVxcdTAwM2VzX2VzO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTQzMDk9c3RhdGljIHZvaWQgZXh0NF9zZXRfcmVzdl9jbHVzdGVycyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTQzMTEtXFx0ZXh0NF9mc2Jsa190IHJlc3ZfY2x1c3RlcnM7XFxuZnMvZXh0NC9zdXBlci5jOjQzMTI6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTQzMTMtXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NDM1ND1zdGF0aWMgdm9pZCBleHQ0X3NldHVwX2NzdW1fdHJpZ2dlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTQzNjEte1xcbmZzL2V4dDQvc3VwZXIuYzo0MzYyOlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy00MzYzLVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTQzNjctXFxuZnMvZXh0NC9zdXBlci5jOjQzNjg6c3RhdGljIHZvaWQgZXh0NF9mcmVlX3NiaShzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkpXFxuZnMvZXh0NC9zdXBlci5jLTQzNjkte1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTQzNzctXFxuZnMvZXh0NC9zdXBlci5jOjQzNzg6c3RhdGljIHN0cnVjdCBleHQ0X3NiX2luZm8gKmV4dDRfYWxsb2Nfc2JpKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuZnMvZXh0NC9zdXBlci5jLTQzNzkte1xcbmZzL2V4dDQvc3VwZXIuYzo0MzgwOlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaTtcXG5mcy9leHQ0L3N1cGVyLmMtNDM4MS1cXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz00NDYxPXN0YXRpYyBpbnQgZXh0NF9oYW5kbGVfY2x1c3RlcnNpemUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5mcy9leHQ0L3N1cGVyLmMtNDQ2Mi17XFxuZnMvZXh0NC9zdXBlci5jOjQ0NjM6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTQ0NjQtXFx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzID0gc2JpLVxcdTAwM2VzX2VzO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTQ1MjM9c3RhdGljIHZvaWQgZXh0NF9hdG9taWNfd3JpdGVfaW5pdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbmZzL2V4dDQvc3VwZXIuYy00NTI0LXtcXG5mcy9leHQ0L3N1cGVyLmM6NDUyNTpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNDUyNi1cXHRzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gc2ItXFx1MDAzZXNfYmRldjtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz00NTQ5PXN0YXRpYyB2b2lkIGV4dDRfZmFzdF9jb21taXRfaW5pdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbmZzL2V4dDQvc3VwZXIuYy00NTUwLXtcXG5mcy9leHQ0L3N1cGVyLmM6NDU1MTpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNDU1Mi1cXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz00NTc0PXN0YXRpYyBpbnQgZXh0NF9pbm9kZV9pbmZvX2luaXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy00NTc2LXtcXG5mcy9leHQ0L3N1cGVyLmM6NDU3NzpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNDU3OC1cXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz00Njk0PXN0YXRpYyBpbnQgZXh0NF9pbml0X21ldGFkYXRhX2NzdW0oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzKVxcbmZzL2V4dDQvc3VwZXIuYy00Njk1LXtcXG5mcy9leHQ0L3N1cGVyLmM6NDY5NjpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNDY5Ny1cXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz00NzMwPXN0YXRpYyBpbnQgZXh0NF9jaGVja19mZWF0dXJlX2NvbXBhdGliaWxpdHkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy00NzMzLXtcXG5mcy9leHQ0L3N1cGVyLmM6NDczNDpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNDczNS1cXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz00ODM0PXN0YXRpYyBpbnQgZXh0NF9jaGVja19nZW9tZXRyeShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTQ4MzYte1xcbmZzL2V4dDQvc3VwZXIuYzo0ODM3OlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy00ODM4LVxcdF9fdTY0IGJsb2Nrc19jb3VudDtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz00OTEzPXN0YXRpYyBpbnQgZXh0NF9ncm91cF9kZXNjX2luaXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy00OTE3LXtcXG5mcy9leHQ0L3N1cGVyLmM6NDkxODpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNDkxOS1cXHR1bnNpZ25lZCBpbnQgZGJfY291bnQ7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NDk3Mz1zdGF0aWMgaW50IGV4dDRfbG9hZF9hbmRfaW5pdF9qb3VybmFsKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNDk3Ni17XFxuZnMvZXh0NC9zdXBlci5jOjQ5Nzc6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTQ5NzgtXFx0aW50IGVycjtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz01MDkwPXN0YXRpYyBjb25zdCBjaGFyICpleHQ0X2hhc19qb3VybmFsX29wdGlvbihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbmZzL2V4dDQvc3VwZXIuYy01MDkxLXtcXG5mcy9leHQ0L3N1cGVyLmM6NTA5MjpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNTA5My1cXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz01MTE1PXN0YXRpYyB2b2lkIGV4dDRfc2V0X21heF9tYXBwaW5nX29yZGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuZnMvZXh0NC9zdXBlci5jLTUxMTYte1xcbmZzL2V4dDQvc3VwZXIuYzo1MTE3OlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy01MTE4LVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTUxNDM9c3RhdGljIGludCBleHQ0X2xvYWRfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgZXh0NF9mc2Jsa190ICpsc2IsXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNTE0NS17XFxuZnMvZXh0NC9zdXBlci5jOjUxNDY6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTUxNDctXFx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTUyNTM9c3RhdGljIGludCBleHQ0X2hhc2hfaW5mb19pbml0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuZnMvZXh0NC9zdXBlci5jLTUyNTQte1xcbmZzL2V4dDQvc3VwZXIuYzo1MjU1OlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy01MjU2LVxcdHN0cnVjdCBleHQ0X3N1cGVyX2Jsb2NrICplcyA9IHNiaS1cXHUwMDNlc19lcztcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz01Mjk0PXN0YXRpYyBpbnQgZXh0NF9ibG9ja19ncm91cF9tZXRhX2luaXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHNpbGVudClcXG5mcy9leHQ0L3N1cGVyLmMtNTI5NS17XFxuZnMvZXh0NC9zdXBlci5jOjUyOTY6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTUyOTctXFx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzID0gc2JpLVxcdTAwM2VzX2VzO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTUzNTA9c3RhdGljIGJvb2wgZXh0NF9pc19zdHJpcGVfaW5jb21wYXRpYmxlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgc3RyaXBlKVxcbmZzL2V4dDQvc3VwZXIuYy01MzUxLXtcXG5mcy9leHQ0L3N1cGVyLmM6NTM1MjpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNTM1My1cXHRyZXR1cm4gKHN0cmlwZSBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgc2JpLVxcdTAwM2VzX2NsdXN0ZXJfcmF0aW8gXFx1MDAzZSAxIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NTM1Nz1zdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy01MzU5LVxcdHN0cnVjdCBleHQ0X3N1cGVyX2Jsb2NrICplcyA9IE5VTEw7XFxuZnMvZXh0NC9zdXBlci5jOjUzNjA6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTUzNjEtXFx0ZXh0NF9mc2Jsa190IGxvZ2ljYWxfc2JfYmxvY2s7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NTgzNT1zdGF0aWMgaW50IGV4dDRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNTgzNy1cXHRzdHJ1Y3QgZXh0NF9mc19jb250ZXh0ICpjdHggPSBmYy1cXHUwMDNlZnNfcHJpdmF0ZTtcXG5mcy9leHQ0L3N1cGVyLmM6NTgzODpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmk7XFxuZnMvZXh0NC9zdXBlci5jLTU4MzktXFx0Y29uc3QgY2hhciAqZGVzY3I7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NTg5NT1zdGF0aWMgdm9pZCBleHQ0X2luaXRfam91cm5hbF9wYXJhbXMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgam91cm5hbF90ICpqb3VybmFsKVxcbmZzL2V4dDQvc3VwZXIuYy01ODk2LXtcXG5mcy9leHQ0L3N1cGVyLmM6NTg5NzpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNTg5OC1cXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz02MjUwPXN0YXRpYyB2b2lkIGV4dDRfdXBkYXRlX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuZnMvZXh0NC9zdXBlci5jLTYyNTEte1xcbmZzL2V4dDQvc3VwZXIuYzo2MjUyOlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy02MjUzLVxcdHN0cnVjdCBleHQ0X3N1cGVyX2Jsb2NrICplcyA9IHNiaS1cXHUwMDNlc19lcztcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz02NDY0PXN0YXRpYyBpbnQgZXh0NF9zeW5jX2ZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB3YWl0KVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTY0NjgtXFx0Ym9vbCBuZWVkc19iYXJyaWVyID0gZmFsc2U7XFxuZnMvZXh0NC9zdXBlci5jOjY0Njk6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTY0NzAtXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NjU4Nj1zdGF0aWMgaW50IF9fZXh0NF9yZW1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy02NTg5LVxcdHN0cnVjdCBleHQ0X3N1cGVyX2Jsb2NrICplcztcXG5mcy9leHQ0L3N1cGVyLmM6NjU5MDpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNjU5MS1cXHR1bnNpZ25lZCBsb25nIG9sZF9zYl9mbGFncztcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz02OTg2PXN0YXRpYyBpbnQgZXh0NF9zdGF0ZnMoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTY5ODgtXFx0c3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGRlbnRyeS1cXHUwMDNlZF9zYjtcXG5mcy9leHQ0L3N1cGVyLmM6Njk4OTpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNjk5MC1cXHRzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMgPSBzYmktXFx1MDAzZXNfZXM7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NzUyMj1zdGF0aWMgdm9pZCBleHQ0X2tpbGxfc2Ioc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5mcy9leHQ0L3N1cGVyLmMtNzUyMy17XFxuZnMvZXh0NC9zdXBlci5jOjc1MjQ6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTc1MjUtXFx0c3RydWN0IGZpbGUgKmJkZXZfZmlsZSA9IHNiaSA/IHNiaS1cXHUwMDNlc19qb3VybmFsX2JkZXZfZmlsZSA6IE5VTEw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDAyOjM3OjI1LjMxNjA5Nzc4N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjk3Mjc0MDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipEaXZpbmcgaW50byB0aGUgZXh0NCBTdXBlcmJsb2NrIEFsbG9jYXRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTGV0J3MgemVybyBpbiBvbiBgZXh0NF9hbGxvY19zYmlgLiBJIHJlbWVtYmVyIGhhdmluZyBhIHF1ZXN0aW9uIGFib3V0IGl0cyBoYW5kbGluZyBvZiBzdXBlcmJsb2NrIGluZm9ybWF0aW9uLiBJJ20gZ29pbmcgdG8gbmF2aWdhdGUgZGlyZWN0bHkgdG8gbGluZSA0Mzc4IGluIGBmcy9leHQ0L3N1cGVyLmNgLiBUaGF0IHNob3VsZCBiZSB0aGUgc3BvdCB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIGFsbG9jYXRpb24gb2YgdGhlIHN1cGVyIGJsb2NrIGluZm9ybWF0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIGFsbG9jYXRpb24gaXMgbWFuYWdlZCB3aXRoaW4gdGhlIGV4dDQgZmlsZXN5c3RlbSBzdHJ1Y3R1cmUuIEhvcGVmdWxseSwgdGhlIGNvZGUgY29tbWVudHMgYXJlIGNsZWFyISBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQncyBhY3R1YWxseSBnb2luZyBvbiBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4MTgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNzoyOC4wMTMzNzc4MjFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk3OTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL2V4dDQvc3VwZXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0Mzc1LFxuICBcIkxpbmVDb3VudFwiOiAzNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0Mzc1OlxcdFxcdGtmcmVlKHNiaSk7XFxuNDM3NjpcXHR9XFxuNDM3NzpcXHRcXG40Mzc4OlxcdHN0YXRpYyBzdHJ1Y3QgZXh0NF9zYl9pbmZvICpleHQ0X2FsbG9jX3NiaShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbjQzNzk6XFx0e1xcbjQzODA6XFx0XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpO1xcbjQzODE6XFx0XFxuNDM4MjpcXHRcXHRzYmkgPSBremFsbG9jX29iaigqc2JpKTtcXG40MzgzOlxcdFxcdGlmICghc2JpKVxcbjQzODQ6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuNDM4NTpcXHRcXG40Mzg2OlxcdFxcdHNiaS1cXHUwMDNlc19kYXhkZXYgPSBmc19kYXhfZ2V0X2J5X2JkZXYoc2ItXFx1MDAzZXNfYmRldiwgXFx1MDAyNnNiaS1cXHUwMDNlc19kYXhfcGFydF9vZmYsXFxuNDM4NzpcXHRcXHRcXHRcXHRcXHRcXHQgICBOVUxMLCBOVUxMKTtcXG40Mzg4OlxcdFxcbjQzODk6XFx0XFx0c2JpLVxcdTAwM2VzX2Jsb2NrZ3JvdXBfbG9jayA9XFxuNDM5MDpcXHRcXHRcXHRremFsbG9jX29iaihzdHJ1Y3QgYmxvY2tncm91cF9sb2NrKTtcXG40MzkxOlxcdFxcbjQzOTI6XFx0XFx0aWYgKCFzYmktXFx1MDAzZXNfYmxvY2tncm91cF9sb2NrKVxcbjQzOTM6XFx0XFx0XFx0Z290byBlcnJfb3V0O1xcbjQzOTQ6XFx0XFxuNDM5NTpcXHRcXHRzYi1cXHUwMDNlc19mc19pbmZvID0gc2JpO1xcbjQzOTY6XFx0XFx0c2JpLVxcdTAwM2VzX3NiID0gc2I7XFxuNDM5NzpcXHRcXHRyZXR1cm4gc2JpO1xcbjQzOTg6XFx0ZXJyX291dDpcXG40Mzk5OlxcdFxcdGZzX3B1dF9kYXgoc2JpLVxcdTAwM2VzX2RheGRldiwgTlVMTCk7XFxuNDQwMDpcXHRcXHRrZnJlZShzYmkpO1xcbjQ0MDE6XFx0XFx0cmV0dXJuIE5VTEw7XFxuNDQwMjpcXHR9XFxuNDQwMzpcXHRcXG40NDA0OlxcdHN0YXRpYyB2b2lkIGV4dDRfc2V0X2RlZl9vcHRzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuNDQwNTpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMpXFxuNDQwNjpcXHR7XFxuNDQwNzpcXHRcXHR1bnNpZ25lZCBsb25nIGRlZl9tb3VudF9vcHRzO1xcbjQ0MDg6XFx0XFxuNDQwOTpcXHRcXHQvKiBTZXQgZGVmYXVsdHMgYmVmb3JlIHdlIHBhcnNlIHRoZSBtb3VudCBvcHRpb25zICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDAyOjM3OjI4LjAxMzc3NzU4WiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU1NTU3Mzk1MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRXh0NCBPcnBoYW4gTG9jayBBbGlnbm1lbnQgQ2hhbmdlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBzdHJhaWdodGZvcndhcmQ6IHdlJ3JlIGFkZGluZyBgX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcGAgdG8gdGhlIGBzX29ycGhhbl9sb2NrYCBtdXRleCB3aXRoaW4gdGhlIGBleHQ0X3NiX2luZm9gIHN0cnVjdC4gVGhlIGFsbG9jYXRpb24gb2YgdGhpcyBzdHJ1Y3QgaXMgaGFuZGxlZCBieSBga3phbGxvY19vYmooKnNiaSlgLCBlbnN1cmluZyB6ZXJvIGluaXRpYWxpemF0aW9uLiBJJ3ZlIGNvbmZpcm1lZCBieSBleGFtaW5pbmcgdGhlIGRpZmYgdGhhdCB0aGlzIGlzIHRoZSAqb25seSogbW9kaWZpY2F0aW9uIHRvIHRoYXQgc3RydWN0LlxuXG5NeSBhbmFseXNpcyBmb2N1c2VzIG9uIHdoZXRoZXIgdGhpcyBjaGFuZ2UgY291bGQgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMuICBUaGUga2V5IHBvaW50cyBJIGNvbnNpZGVyZWQgYXJlOiBgc3RydWN0IGV4dDRfc2JfaW5mb2AgaXMgYW4gaW50ZXJuYWwga2VybmVsIHN0cnVjdHVyZSwgbm90IGV4cG9zZWQgdG8gdXNlciBzcGFjZS4gV2UncmUgKnJlYWxpZ25pbmcqIGEgbXV0ZXgsIG5vdCBpbnRyb2R1Y2luZyBuZXcgdmFyaWFibGVzIG9yIHN0cnVjdHMuICBga3phbGxvY19vYmpgIHplcm9lcyB0aGUgZW50aXJlIG1lbW9yeSByZWdpb24uIFRoaXMgbWVhbnMgdGhhdCBhZnRlciBhbGxvY2F0aW9uLCBubyBwYXJ0IG9mIHRoZSBzdHJ1Y3QgY29udGFpbnMgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlIGFyZSBubyByZWFkcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgbm8gbmV3IGJyYW5jaGVzLCBhbmQgbm8gZGF0YSBsZW5ndGggbWFuaXB1bGF0aW9uIHRoYXQgY291bGQgbGVhZCB0byBhIHZ1bG5lcmFiaWxpdHkuICBUaGlzIGNoYW5nZSBvbmx5IGNvbmNlcm5zIGNhY2hlbGluZSBhbGlnbm1lbnQgaW4gU01QIGtlcm5lbHMuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIGNoYW5nZSBzb2xlbHkgYWZmZWN0cyB0aGUgYWxpZ25tZW50IG9mIGFuIGFscmVhZHkgaW5pdGlhbGl6ZWQgbXV0ZXggd2l0aGluIGFuIGludGVybmFsIHN0cnVjdHVyZSwgaXQgZG9lc24ndCBjcmVhdGUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiAgR2l2ZW4gdGhpcyBhbmFseXNpcywgcnVubmluZyBhIEtNU0FOIHNlc3Npb24gaXNuJ3QgbmVjZXNzYXJ5LiBLQVNBTiB3b3VsZCBhbHNvIG5vdCB0cmlnZ2VyIGhlcmUsIGFzIHdlIGhhdmUgYWxyZWFkeSBlbnN1cmVkIHplcm9lZCBhbGxvY2F0aW9uLlxuXG5Ob3csIGxldCBtZSBlbnN1cmUgSSd2ZSBhZGRyZXNzZWQgYWxsIHJlcXVpcmVtZW50cy4gSSd2ZSBhbmFseXplZCB0aGUgY29kZSwgY29uc2lkZXJlZCB0aGUgaW1wbGljYXRpb25zLCBhbmQgY29uY2x1ZGVkIHRoYXQgS01TQU4gaXMgbm90IG5lY2Vzc2FyeSwgYXMgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkLiAgSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1NDksIk91dHB1dFRva2VucyI6MTc0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQ3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDI6Mzc6MzMuNTY5NTE5OTc0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHRoZSAnX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcCcgYXR0cmlidXRlIHRvIHRoZSAnc19vcnBoYW5fbG9jaycgbXV0ZXggaW4gJ3N0cnVjdCBleHQ0X3NiX2luZm8nIHRvIGFsaWduIGl0IHRvIGEgY2FjaGVsaW5lIGluIFNNUCBjb25maWd1cmF0aW9ucyBhbmQgcmVkdWNlIGZhbHNlIHNoYXJpbmcuXFxuXFxuJ3N0cnVjdCBleHQ0X3NiX2luZm8nIGlzIGFuIGludGVybmFsIHN1cGVyYmxvY2sgc3RhdGUgc3RydWN0dXJlIGFsbG9jYXRlZCB1c2luZyBremFsbG9jX29iaigpIGluIGV4dDRfYWxsb2Nfc2JpKCksIG1lYW5pbmcgYWxsIGZpZWxkcyBhbmQgYW55IGFsaWdubWVudCBwYWRkaW5nIGFyZSB6ZXJvLWluaXRpYWxpemVkIHVwb24gYWxsb2NhdGlvbi4gVGhlIHN0cnVjdHVyZSBpcyBuZXZlciBjb3BpZWQgdG8gdXNlcnNwYWNlLCBub3IgZG9lcyB0aGlzIGFsaWdubWVudCBhZGp1c3RtZW50IGFsdGVyIGNvbnRyb2wgZmxvdywgbGVuZ3RoIGNhbGN1bGF0aW9ucywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgaGFuZGxpbmcuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHRoZSAnX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcCcgYXR0cmlidXRlIHRvIHRoZSAnc19vcnBoYW5fbG9jaycgbXV0ZXggaW4gJ3N0cnVjdCBleHQ0X3NiX2luZm8nIHRvIGFsaWduIGl0IHRvIGEgY2FjaGVsaW5lIGluIFNNUCBjb25maWd1cmF0aW9ucyBhbmQgcmVkdWNlIGZhbHNlIHNoYXJpbmcuXFxuXFxuJ3N0cnVjdCBleHQ0X3NiX2luZm8nIGlzIGFuIGludGVybmFsIHN1cGVyYmxvY2sgc3RhdGUgc3RydWN0dXJlIGFsbG9jYXRlZCB1c2luZyBremFsbG9jX29iaigpIGluIGV4dDRfYWxsb2Nfc2JpKCksIG1lYW5pbmcgYWxsIGZpZWxkcyBhbmQgYW55IGFsaWdubWVudCBwYWRkaW5nIGFyZSB6ZXJvLWluaXRpYWxpemVkIHVwb24gYWxsb2NhdGlvbi4gVGhlIHN0cnVjdHVyZSBpcyBuZXZlciBjb3BpZWQgdG8gdXNlcnNwYWNlLCBub3IgZG9lcyB0aGlzIGFsaWdubWVudCBhZGp1c3RtZW50IGFsdGVyIGNvbnRyb2wgZmxvdywgbGVuZ3RoIGNhbGN1bGF0aW9ucywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgaGFuZGxpbmcuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnxgd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-04 02:18:44 +0000 UTC FinishedAt: 2026-09-04 02:37:35 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "9d80aa4617b32f5054c5aa471d06b66704854935", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS", "SMP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "9d80aa4617b32f5054c5aa471d06b66704854935", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS", "SMP" ], "series_id": "cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_orphan_add", "ext4_orphan_del", "__ext4_fill_super" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OywKICAgICYjMzQ7U01QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9vcnBoYW5fYWRkJiMzNDssCiAgICAmIzM0O2V4dDRfb3JwaGFuX2RlbCYjMzQ7LAogICAgJiMzNDtfX2V4dDRfZmlsbF9zdXBlciYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdGhlICYjMzk7X19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcCYjMzk7IGF0dHJpYnV0ZSB0byB0aGUgJiMzOTtzX29ycGhhbl9sb2NrJiMzOTsgbXV0ZXggaW4gJiMzOTtzdHJ1Y3QgZXh0NF9zYl9pbmZvJiMzOTsgdG8gYWxpZ24gaXQgdG8gYSBjYWNoZWxpbmUgaW4gU01QIGNvbmZpZ3VyYXRpb25zIGFuZCByZWR1Y2UgZmFsc2Ugc2hhcmluZy5cblxuJiMzOTtzdHJ1Y3QgZXh0NF9zYl9pbmZvJiMzOTsgaXMgYW4gaW50ZXJuYWwgc3VwZXJibG9jayBzdGF0ZSBzdHJ1Y3R1cmUgYWxsb2NhdGVkIHVzaW5nIGt6YWxsb2Nfb2JqKCkgaW4gZXh0NF9hbGxvY19zYmkoKSwgbWVhbmluZyBhbGwgZmllbGRzIGFuZCBhbnkgYWxpZ25tZW50IHBhZGRpbmcgYXJlIHplcm8taW5pdGlhbGl6ZWQgdXBvbiBhbGxvY2F0aW9uLiBUaGUgc3RydWN0dXJlIGlzIG5ldmVyIGNvcGllZCB0byB1c2Vyc3BhY2UsIG5vciBkb2VzIHRoaXMgYWxpZ25tZW50IGFkanVzdG1lbnQgYWx0ZXIgY29udHJvbCBmbG93LCBsZW5ndGggY2FsY3VsYXRpb25zLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSBoYW5kbGluZy4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzdHJ1Y3QgZXh0NF9zYl9pbmZvIHRvIGNhY2hlbGluZS1hbGlnbiB0aGUgc19vcnBoYW5fbG9jayBtdXRleCBpbiBTTVAgY29uZmlndXJhdGlvbnMuIFRoaXMgYWx0ZXJzIGRhdGEgc3RydWN0dXJlIGxheW91dCBhbmQgc3luY2hyb25pemF0aW9uIGJlaGF2aW9yIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgc3VpdGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6MzY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxM2U0MjdjODc0ZTBhM2E4ZjI5YzZjNmM4OTBkNTc0ZjBiMjljZWIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAwMjozNjo1MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dDQuaCBiL2ZzL2V4dDQvZXh0NC5oXG5pbmRleCA3MjRhMjdlOGJlNjEzLi5hM2YxNmE5ODE2NjQ2IDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9leHQ0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvZXh0NC5oXG5AQCAtMTY0NCw3ICYjNDM7MTY0NCw3IEBAIHN0cnVjdCBleHQ0X3NiX2luZm8ge1xuIFx0LyogSm91cm5hbGluZyAqL1xuIFx0c3RydWN0IGpvdXJuYWxfcyAqc19qb3VybmFsO1xuIFx0dW5zaWduZWQgbG9uZyBzX2V4dDRfZmxhZ3M7XHRcdC8qIEV4dDQgc3VwZXJibG9jayBmbGFncyAqL1xuLVx0c3RydWN0IG11dGV4IHNfb3JwaGFuX2xvY2s7XHQvKiBQcm90ZWN0cyBvbiBkaXNrIGxpc3QgY2hhbmdlcyAqL1xuJiM0MztcdHN0cnVjdCBtdXRleCBzX29ycGhhbl9sb2NrIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHNfb3JwaGFuO1x0LyogTGlzdCBvZiBvcnBoYW5lZCBpbm9kZXMgaW4gb24gZGlza1xuIFx0XHRcdFx0XHQgICBsaXN0ICovXG4gXHRzdHJ1Y3QgZXh0NF9vcnBoYW5faW5mbyBzX29ycGhhbl9pbmZvO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OywKICAgICYjMzQ7U01QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9vcnBoYW5fYWRkJiMzNDssCiAgICAmIzM0O2V4dDRfb3JwaGFuX2RlbCYjMzQ7LAogICAgJiMzNDtfX2V4dDRfZmlsbF9zdXBlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzdHJ1Y3QgZXh0NF9zYl9pbmZvIHRvIGNhY2hlbGluZS1hbGlnbiB0aGUgc19vcnBoYW5fbG9jayBtdXRleCBpbiBTTVAgY29uZmlndXJhdGlvbnMuIFRoaXMgYWx0ZXJzIGRhdGEgc3RydWN0dXJlIGxheW91dCBhbmQgc3luY2hyb25pemF0aW9uIGJlaGF2aW9yIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgc3VpdGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxM2U0MjdjODc0ZTBhM2E4ZjI5YzZjNmM4OTBkNTc0ZjBiMjljZWIwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgNCAwMjozNjo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvZXh0NC5oIGIvZnMvZXh0NC9leHQ0LmgKaW5kZXggNzI0YTI3ZThiZTYxMy4uYTNmMTZhOTgxNjY0NiAxMDA2NDQKLS0tIGEvZnMvZXh0NC9leHQ0LmgKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9leHQ0LmgKQEAgLTE2NDQsNyAmIzQzOzE2NDQsNyBAQCBzdHJ1Y3QgZXh0NF9zYl9pbmZvIHsKIAkvKiBKb3VybmFsaW5nICovCiAJc3RydWN0IGpvdXJuYWxfcyAqc19qb3VybmFsOwogCXVuc2lnbmVkIGxvbmcgc19leHQ0X2ZsYWdzOwkJLyogRXh0NCBzdXBlcmJsb2NrIGZsYWdzICovCi0Jc3RydWN0IG11dGV4IHNfb3JwaGFuX2xvY2s7CS8qIFByb3RlY3RzIG9uIGRpc2sgbGlzdCBjaGFuZ2VzICovCiYjNDM7CXN0cnVjdCBtdXRleCBzX29ycGhhbl9sb2NrIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7CiAJc3RydWN0IGxpc3RfaGVhZCBzX29ycGhhbjsJLyogTGlzdCBvZiBvcnBoYW5lZCBpbm9kZXMgaW4gb24gZGlzawogCQkJCQkgICBsaXN0ICovCiAJc3RydWN0IGV4dDRfb3JwaGFuX2luZm8gc19vcnBoYW5faW5mbzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg5OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDc1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDYWNoZWxpbmUgQWxpZ25tZW50IFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaW4gYGZzL2V4dDQvZXh0NC5oYCBpcyBtb2RpZnlpbmcgdGhlIGBzdHJ1Y3QgZXh0NF9zYl9pbmZvYCB3aXRoaW4gdGhlIGV4dDQgZmlsZXN5c3RlbSBjb2RlLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFkZGluZyBgX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcGAgdG8gdGhlIGBzX29ycGhhbl9sb2NrYCBtdXRleCBkZWNsYXJhdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBqdXN0IGEgY29zbWV0aWMgY2hhbmdlIG9yIGlmIGl0IGFmZmVjdHMgdGhlIGRhdGEgc3RydWN0dXJlIGxheW91dCBvciBleGVjdXRhYmxlIGNvZGUuCgpOb3csIGxldCYjMzk7cyBjYXJlZnVsbHkgcmV2aWV3IHRoZSBmdXp6aW5nIGNyaXRlcmlhLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY2hhbmdlIHRyaWdnZXJzIHRoZSBmdXp6aW5nIHByb2Nlc3MuIEFjY29yZGluZyB0byB0aGUgaW5zdHJ1Y3Rpb25zLCBjaGFuZ2VzIHRoYXQgYXJlICYjMzQ7cmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzJiMzNDsgYXJlIG9mIGludGVyZXN0LiBUaGUgYGV4dDRfc2JfaW5mb2AgaXMgKmRlZmluaXRlbHkqIGEgY29yZSBkYXRhIHN0cnVjdHVyZSwgaW50aW1hdGVseSBpbnZvbHZlZCBpbiB0aGUgZmlsZXN5c3RlbSBvcGVyYXRpb24uIEFkZGluZyBgX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcGAgKmhhcyogdG8gYWx0ZXIgdGhlIGxheW91dC4gQWxpZ25tZW50IGRpcmVjdGl2ZXMgYXJlIGFsbCBhYm91dCBwYWRkaW5nIGFuZCBwbGFjZW1lbnQgd2l0aGluIHRoZSBzdHJ1Y3QsIHJpZ2h0PyBDaGFuZ2luZyBgc19vcnBoYW5fbG9ja2AmIzM5O3MgYWxpZ25tZW50IHdpdGhpbiBgc3RydWN0IGV4dDRfc2JfaW5mb2AgdW5kb3VidGVkbHkgY2hhbmdlcyB0aGUgc3RydWN0JiMzOTtzIGxheW91dC4KCkZ1cnRoZXJtb3JlLCBJIGhhdmUgdG8gZW5zdXJlIHRoYXQgZXh0NCBpcyByZWFjaGFibGUuIEdpdmVuIHRoYXQgZXh0NCBpcyBhIHN0YW5kYXJkIGZpbGVzeXN0ZW0sIGFuZCBJIGNhbiBlYXNpbHkgbW91bnQgYW4gZXh0NCBpbWFnZSBvciBmdXp6IHRocm91Z2ggc3lzY2FsbHMgaW4gUUVNVSBvciBHQ0UsIGl0IGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLgoKR2l2ZW4gdGhlc2UgcG9pbnRzLCB0aGlzIHBhdGNoIGxvb2tzIGxpa2UgaXQgZG9lcyB0cmlnZ2VyIHRoZSBmdXp6aW5nIHByb2Nlc3MuIEl0IHJlc3RydWN0dXJlcyBhIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZSB3aXRoaW4gYSBjb3JlIGZpbGVzeXN0ZW0gY29tcG9uZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvZXh0NC9leHQ0LmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjM1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE2MzU6XHRcdHN0cnVjdCBwZXJjcHVfY291bnRlciBzX3NyYV9leGNlZWRlZF9yZXRyeV9saW1pdDtcbjE2MzY6XHRcdHN0cnVjdCBibG9ja2dyb3VwX2xvY2sgKnNfYmxvY2tncm91cF9sb2NrO1xuMTYzNzpcdFx0c3RydWN0IHByb2NfZGlyX2VudHJ5ICpzX3Byb2M7XG4xNjM4Olx0XHRzdHJ1Y3Qga29iamVjdCBzX2tvYmo7XG4xNjM5Olx0XHRzdHJ1Y3QgY29tcGxldGlvbiBzX2tvYmpfdW5yZWdpc3RlcjtcbjE2NDA6XHRcdHN0cnVjdCBtdXRleCBzX2Vycm9yX25vdGlmeV9tdXRleDsgLyogcHJvdGVjdHMgc3lzZnNfbm90aWZ5IHZzIGtvYmplY3RfZGVsICovXG4xNjQxOlx0XHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNfc2I7XG4xNjQyOlx0XHRzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfbW1wX2JoO1xuMTY0MzpcdFxuMTY0NDpcdFx0LyogSm91cm5hbGluZyAqL1xuMTY0NTpcdFx0c3RydWN0IGpvdXJuYWxfcyAqc19qb3VybmFsO1xuMTY0NjpcdFx0dW5zaWduZWQgbG9uZyBzX2V4dDRfZmxhZ3M7XHRcdC8qIEV4dDQgc3VwZXJibG9jayBmbGFncyAqL1xuMTY0NzpcdFx0c3RydWN0IG11dGV4IHNfb3JwaGFuX2xvY2sgX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcbjE2NDg6XHRcdHN0cnVjdCBsaXN0X2hlYWQgc19vcnBoYW47XHQvKiBMaXN0IG9mIG9ycGhhbmVkIGlub2RlcyBpbiBvbiBkaXNrXG4xNjQ5Olx0XHRcdFx0XHRcdCAgIGxpc3QgKi9cbjE2NTA6XHRcdHN0cnVjdCBleHQ0X29ycGhhbl9pbmZvIHNfb3JwaGFuX2luZm87XG4xNjUxOlx0XHR1bnNpZ25lZCBsb25nIHNfY29tbWl0X2ludGVydmFsO1xuMTY1MjpcdFx0dTMyIHNfbWF4X2JhdGNoX3RpbWU7XG4xNjUzOlx0XHR1MzIgc19taW5fYmF0Y2hfdGltZTtcbjE2NTQ6XHRcdHN0cnVjdCBmaWxlICpzX2pvdXJuYWxfYmRldl9maWxlO1xuMTY1NTpcdCNpZmRlZiBDT05GSUdfUVVPVEFcbjE2NTY6XHRcdC8qIE5hbWVzIG9mIHF1b3RhIGZpbGVzIHdpdGggam91cm5hbGxlZCBxdW90YSAqL1xuMTY1NzpcdFx0Y2hhciBfX3JjdSAqc19xZl9uYW1lc1tFWFQ0X01BWFFVT1RBU107XG4xNjU4Olx0XHRpbnQgc19qcXVvdGFfZm10O1x0XHRcdC8qIEZvcm1hdCBvZiBxdW90YSB0byB1c2UgKi9cbjE2NTk6XHQjZW5kaWZcbjE2NjA6XHRcdHVuc2lnbmVkIGludCBzX3dhbnRfZXh0cmFfaXNpemU7IC8qIE5ldyBpbm9kZXMgc2hvdWxkIHJlc2VydmUgIyBieXRlcyAqL1xuMTY2MTpcdFx0c3RydWN0IGV4dDRfc3lzdGVtX2Jsb2NrcyBfX3JjdSAqc19zeXN0ZW1fYmxrcztcbjE2NjI6XHRcbjE2NjM6XHQjaWZkZWYgRVhURU5UU19TVEFUU1xuMTY2NDpcdFx0LyogZXh0NCBleHRlbnRzIHN0YXRzICovXG4xNjY1Olx0XHR1bnNpZ25lZCBsb25nIHNfZXh0X21pbjtcbjE2NjY6XHRcdHVuc2lnbmVkIGxvbmcgc19leHRfbWF4O1xuMTY2NzpcdFx0dW5zaWduZWQgbG9uZyBzX2RlcHRoX21heDtcbjE2Njg6XHRcdHNwaW5sb2NrX3Qgc19leHRfc3RhdHNfbG9jaztcbjE2Njk6XHRcdHVuc2lnbmVkIGxvbmcgc19leHRfYmxvY2tzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NDAKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhlIGV4dDQgY29kZWJhc2U6CgoqKkFuYWx5emluZyBgc19vcnBoYW5fbG9ja2AgVXNhZ2UgaW4gZXh0NCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcm9sZSBvZiBgc19vcnBoYW5fbG9ja2Agd2l0aGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0uIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIGdldCBhIGJyb2FkIHBpY3R1cmUgb2Ygd2hlcmUgdGhpcyBzcGlubG9jayBpcyBhY3RpdmVseSBlbXBsb3llZC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBqdXN0IGxvb2tpbmcgZm9yIGl0cyB1c2FnZSBhY3Jvc3MgdGhlIGVudGlyZSBleHQ0IHNvdXJjZSB0cmVlLiBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgc2ltcGxlIGBncmVwYCBvciBgZmluZGAgY29tbWFuZCB0byBsb2NhdGUgYWxsIGluc3RhbmNlcyBvZiB0aGUgdmFyaWFibGUgaXRzZWxmLCBgc19vcnBoYW5fbG9ja2AsIG5vdCBqdXN0IHRoZSBkZWZpbml0aW9uLCBidXQgZXZlcnl3aGVyZSBpdCYjMzk7cyAqdXNlZCog4oCTIHJlYWQsIHdyaXR0ZW4sIHRha2VuLCByZWxlYXNlZC4KCk9uY2UgSSBoYXZlIGEgbGlzdCBvZiBjYWxsIHNpdGVzLCBJJiMzOTtsbCBuZWVkIHRvIHNvcnQgYW5kIG9yZ2FuaXplIHRoZW0uIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBmdW5jdGlvbnMgYXJlIG1vc3QgaW1wb3J0YW50LiBXaGljaCBmdW5jdGlvbnMgYXJlIG1vc3QgZnJlcXVlbnRseSBleGVjdXRlZD8gV2hpY2ggYXJlIGxpa2VseSBjcml0aWNhbCB0byBpbnRlZ3JpdHk/IEkmIzM5O2xsIHByb2JhYmx5IGdyb3VwIHRoZW0gYnkgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBJcyBpdCBtb3N0bHkgcmVsYXRlZCB0byBpbm9kZSBvcGVyYXRpb25zPyBPcnBoYW4gaW5vZGUgbGlzdHM/IEpvdXJuYWxpbmc/IEkgbmVlZCB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgdGhlIGxvY2smIzM5O3Mgc2NvcGUuCgpOZXh0LCBJJiMzOTtsbCBkcmlsbCBkb3duIGludG8gdGhlIGNvbnRleHQgb2YgZWFjaCB1c2FnZS4gRm9yIGVhY2ggb2NjdXJyZW5jZSwgSSBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCB0aGUgc3Vycm91bmRpbmcgY29kZS4gV2hhdCBvcGVyYXRpb25zIGFyZSBwcm90ZWN0ZWQgYnkgdGhpcyBsb2NrPyBXaGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgYmVpbmcgZ3VhcmRlZD8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIHRoYXQgdGhpcyBsb2NrIGlzIGRlc2lnbmVkIHRvIHByZXZlbnQ/IFdoYXQmIzM5O3MgdGhlIGxvY2sgaGllcmFyY2h5PyBBcmUgdGhlcmUgYW55IG90aGVyIGxvY2tzIGJlaW5nIGhlbGQgY29uY3VycmVudGx5PyBVbmRlcnN0YW5kaW5nIHRoZSBsb2NraW5nIG9yZGVyIGlzIHBhcmFtb3VudCwgc28gSSBkb24mIzM5O3QgaW50cm9kdWNlIGRlYWRsb2Nrcy4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIGxvY2sgaXMgYWNxdWlyZWQgKGUuZy4sIGBzcGluX2xvY2tfaXJxc2F2ZWAsIGBzcGluX2xvY2tgKSBhbmQgaG93IGl0JiMzOTtzIHJlbGVhc2VkIChlLmcuLCBgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZWAsIGBzcGluX3VubG9ja2ApLgoKVWx0aW1hdGVseSwgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlICpyZWFzb24qIGZvciB0aGlzIGxvY2suIFdoYXQgaXMgaXQgc3luY2hyb25pemluZz8gSXMgaXQgZ3VhcmRpbmcgYSBjcml0aWNhbCBzZWN0aW9uIHJlbGF0ZWQgdG8gb3JwaGFuIGlub2RlcywgZW5zdXJpbmcgZGF0YSBjb25zaXN0ZW5jeSwgcHJldmVudGluZyBkb3VibGUgZnJlZWluZywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBpdHMgcHVycG9zZSBpcyBjcml0aWNhbCBpZiBJIGludGVuZCB0byBtYWtlIGNoYW5nZXMgdG8gdGhlIGNvZGUgdGhhdCBpbnRlcmFjdHMgd2l0aCBpdCwgb3Igb3B0aW1pemUgaXQuIERlcGVuZGluZyBvbiBob3cgZGVlcCBJIG5lZWQgdG8gZ28sIEkgbWF5IHN0YXJ0IGxvb2tpbmcgYXQgcmVsYXRlZCBzdHJ1Y3R1cmVzIGFuZCB0aGUgbGFyZ2VyIHN5c3RlbSBkZXNpZ24uIEkgbWF5IGV4YW1pbmUgdGhlIGpvdXJuYWxpbmcgb3BlcmF0aW9ucyBvciB0aGUgd2F5IGlub2RlIGRhdGEgYXJlIGZsdXNoZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c19vcnBoYW5fbG9jayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9leHQ0Lmg9MTU5Mj1zdHJ1Y3QgZXh0NF9zYl9pbmZvIHtcbi0tXG5mcy9leHQ0L2V4dDQuaC0xNjQ2LVx0dW5zaWduZWQgbG9uZyBzX2V4dDRfZmxhZ3M7XHRcdC8qIEV4dDQgc3VwZXJibG9jayBmbGFncyAqL1xuZnMvZXh0NC9leHQ0Lmg6MTY0NzpcdHN0cnVjdCBtdXRleCBzX29ycGhhbl9sb2NrIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7XG5mcy9leHQ0L2V4dDQuaC0xNjQ4LVx0c3RydWN0IGxpc3RfaGVhZCBzX29ycGhhbjtcdC8qIExpc3Qgb2Ygb3JwaGFuZWQgaW5vZGVzIGluIG9uIGRpc2tcbi0tXG5mcy9leHQ0L29ycGhhbi5jPTEwMj1pbnQgZXh0NF9vcnBoYW5fYWRkKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4tLVxuZnMvZXh0NC9vcnBoYW4uYy0xNDYtXG5mcy9leHQ0L29ycGhhbi5jOjE0NzpcdG11dGV4X2xvY2soXHUwMDI2c2JpLVx1MDAzZXNfb3JwaGFuX2xvY2spO1xuZnMvZXh0NC9vcnBoYW4uYy0xNDgtXHQvKlxuLS1cbmZzL2V4dDQvb3JwaGFuLmMtMTYyLVx0bGlzdF9hZGQoXHUwMDI2RVhUNF9JKGlub2RlKS1cdTAwM2VpX29ycGhhbiwgXHUwMDI2c2JpLVx1MDAzZXNfb3JwaGFuKTtcbmZzL2V4dDQvb3JwaGFuLmM6MTYzOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNnNiaS1cdTAwM2VzX29ycGhhbl9sb2NrKTtcbmZzL2V4dDQvb3JwaGFuLmMtMTY0LVxuLS1cbmZzL2V4dDQvb3JwaGFuLmMtMTc1LVx0XHRcdCAqL1xuZnMvZXh0NC9vcnBoYW4uYzoxNzY6XHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZzYmktXHUwMDNlc19vcnBoYW5fbG9jayk7XG5mcy9leHQ0L29ycGhhbi5jLTE3Ny1cdFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNkVYVDRfSShpbm9kZSktXHUwMDNlaV9vcnBoYW4pO1xuZnMvZXh0NC9vcnBoYW4uYzoxNzg6XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnNiaS1cdTAwM2VzX29ycGhhbl9sb2NrKTtcbmZzL2V4dDQvb3JwaGFuLmMtMTc5LVx0XHR9XG4tLVxuZnMvZXh0NC9vcnBoYW4uYz0yMjY9aW50IGV4dDRfb3JwaGFuX2RlbChoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuLS1cbmZzL2V4dDQvb3JwaGFuLmMtMjQyLVxuZnMvZXh0NC9vcnBoYW4uYzoyNDM6XHQvKiBEbyB0aGlzIHF1aWNrIGNoZWNrIGJlZm9yZSB0YWtpbmcgZ2xvYmFsIHNfb3JwaGFuX2xvY2suICovXG5mcy9leHQ0L29ycGhhbi5jLTI0NC1cdGlmIChsaXN0X2VtcHR5KFx1MDAyNmVpLVx1MDAzZWlfb3JwaGFuKSlcbi0tXG5mcy9leHQ0L29ycGhhbi5jLTI0Ny1cdGlmIChoYW5kbGUpIHtcbmZzL2V4dDQvb3JwaGFuLmM6MjQ4Olx0XHQvKiBHcmFiIGlub2RlIGJ1ZmZlciBlYXJseSBiZWZvcmUgdGFraW5nIGdsb2JhbCBzX29ycGhhbl9sb2NrICovXG5mcy9leHQ0L29ycGhhbi5jLTI0OS1cdFx0ZXJyID0gZXh0NF9yZXNlcnZlX2lub2RlX3dyaXRlKGhhbmRsZSwgaW5vZGUsIFx1MDAyNmlsb2MpO1xuLS1cbmZzL2V4dDQvb3JwaGFuLmMtMjUxLVxuZnMvZXh0NC9vcnBoYW4uYzoyNTI6XHRtdXRleF9sb2NrKFx1MDAyNnNiaS1cdTAwM2VzX29ycGhhbl9sb2NrKTtcbmZzL2V4dDQvb3JwaGFuLmMtMjUzLVx0ZXh0NF9kZWJ1ZyhcJiMzNDtyZW1vdmUgaW5vZGUgJWxsdSBmcm9tIG9ycGhhbiBsaXN0XFxuXCYjMzQ7LCBpbm9kZS1cdTAwM2VpX2lubyk7XG4tLVxuZnMvZXh0NC9vcnBoYW4uYy0yNjItXHRpZiAoIWhhbmRsZSB8fCBlcnIpIHtcbmZzL2V4dDQvb3JwaGFuLmM6MjYzOlx0XHRtdXRleF91bmxvY2soXHUwMDI2c2JpLVx1MDAzZXNfb3JwaGFuX2xvY2spO1xuZnMvZXh0NC9vcnBoYW4uYy0yNjQtXHRcdGdvdG8gb3V0X2Vycjtcbi0tXG5mcy9leHQ0L29ycGhhbi5jLTI3My1cdFx0aWYgKGVycikge1xuZnMvZXh0NC9vcnBoYW4uYzoyNzQ6XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnNiaS1cdTAwM2VzX29ycGhhbl9sb2NrKTtcbmZzL2V4dDQvb3JwaGFuLmMtMjc1LVx0XHRcdGdvdG8gb3V0X2JyZWxzZTtcbi0tXG5mcy9leHQ0L29ycGhhbi5jLTI4MC1cdFx0dW5sb2NrX2J1ZmZlcihzYmktXHUwMDNlc19zYmgpO1xuZnMvZXh0NC9vcnBoYW4uYzoyODE6XHRcdG11dGV4X3VubG9jayhcdTAwMjZzYmktXHUwMDNlc19vcnBoYW5fbG9jayk7XG5mcy9leHQ0L29ycGhhbi5jLTI4Mi1cdFx0ZXJyID0gZXh0NF9oYW5kbGVfZGlydHlfbWV0YWRhdGEoaGFuZGxlLCBOVUxMLCBzYmktXHUwMDNlc19zYmgpO1xuLS1cbmZzL2V4dDQvb3JwaGFuLmMtMjkxLVx0XHRpZiAoZXJyKSB7XG5mcy9leHQ0L29ycGhhbi5jOjI5MjpcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2c2JpLVx1MDAzZXNfb3JwaGFuX2xvY2spO1xuZnMvZXh0NC9vcnBoYW4uYy0yOTMtXHRcdFx0Z290byBvdXRfYnJlbHNlO1xuLS1cbmZzL2V4dDQvb3JwaGFuLmMtMjk2LVx0XHRlcnIgPSBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGUsIGlfcHJldiwgXHUwMDI2aWxvYzIpO1xuZnMvZXh0NC9vcnBoYW4uYzoyOTc6XHRcdG11dGV4X3VubG9jayhcdTAwMjZzYmktXHUwMDNlc19vcnBoYW5fbG9jayk7XG5mcy9leHQ0L29ycGhhbi5jLTI5OC1cdH1cbi0tXG5mcy9leHQ0L3N1cGVyLmM9NTM1Nz1zdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNTUwNS1cdElOSVRfTElTVF9IRUFEKFx1MDAyNnNiaS1cdTAwM2VzX29ycGhhbik7IC8qIHVubGlua2VkIGJ1dCBvcGVuIGZpbGVzICovXG5mcy9leHQ0L3N1cGVyLmM6NTUwNjpcdG11dGV4X2luaXQoXHUwMDI2c2JpLVx1MDAzZXNfb3JwaGFuX2xvY2spO1xuZnMvZXh0NC9zdXBlci5jLTU1MDctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQwMAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgT3JwaGFuIExvY2sgaW4gZXh0NCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBgc19vcnBoYW5fbG9ja2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzY29wZSBhbmQgaG93IGl0JiMzOTtzIGJlaW5nIHV0aWxpemVkIHdpdGhpbiB0aGUgZXh0NCBmaWxlc3lzdGVtIGNvZGUuIFJpZ2h0IG5vdywgSSBzZWUgaXQmIzM5O3MgZGlyZWN0bHkgaW52b2x2ZWQgaW4gdGhyZWUga2V5IGFyZWFzOiBgZXh0NF9vcnBoYW5fYWRkYCwgYGV4dDRfb3JwaGFuX2RlbGAsIGFuZCB0aGUgc3VwZXIgYmxvY2sgaW5pdGlhbGl6YXRpb24sIHdoaWNoIG1pZ2h0IGJlIGBfX2V4dDRfZmlsbF9zdXBlcmAgb3IgcGVyaGFwcyBqdXN0IGBleHQ0X2ZpbGxfc3VwZXJgLiBUaGF0IGdpdmVzIG1lIGEgZnJhbWV3b3JrLgoKTm93LCBJIHdhbnQgdG8gZ2FpbiBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb250ZXh0IHRoYXQgY29udHJvbHMgdGhpcy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUga2VybmVsJiMzOTtzIEtjb25maWcgc2V0dGluZ3MgZm9yIGV4dDQuIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBpbmZsdWVuY2UgaG93IHRoaXMgbG9ja2luZyBtZWNoYW5pc20gaXMgaGFuZGxlZC4gQXJlIHRoZXJlIGFueSBjb25kaXRpb25hbCBjb21waWxlcz8gQXJlIHRoZXJlIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgYmFzZWQgb24gY2VydGFpbiBrZXJuZWwgc2V0dGluZ3M/IFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSB3aGF0IHNldHRpbmdzIG1heSBhZmZlY3QgdGhlIHVzYWdlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgdXNhZ2UgaXMgY29uc3RhbnQsIG9yIGNvbmRpdGlvbmFsLiBUaW1lIHRvIHNlZSB3aGF0IEtjb25maWcgaGFzIHRvIG9mZmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBFWFQ0X0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leHQ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2V4dDQvS2NvbmZpZzoyOmNvbmZpZyBFWFQ0X0ZTXG5mcy9leHQ0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBFeHRlbmRlZCA0IChleHQ0KSBmaWxlc3lzdGVtXCYjMzQ7XG4tLVxuZnMvZXh0NC9LY29uZmlnPTM1PWNvbmZpZyBFWFQ0X1VTRV9GT1JfRVhUMlxuLS1cbmZzL2V4dDQvS2NvbmZpZy00NS1cbmZzL2V4dDQvS2NvbmZpZzo0Njpjb25maWcgRVhUNF9GU19QT1NJWF9BQ0xcbmZzL2V4dDQvS2NvbmZpZy00Ny1cdGJvb2wgXCYjMzQ7RXh0NCBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuLS1cbmZzL2V4dDQvS2NvbmZpZy01NS1cbmZzL2V4dDQvS2NvbmZpZzo1Njpjb25maWcgRVhUNF9GU19TRUNVUklUWVxuZnMvZXh0NC9LY29uZmlnLTU3LVx0Ym9vbCBcJiMzNDtFeHQ0IFNlY3VyaXR5IExhYmVsc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MzMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGZyb20gYW4gZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBFWFQ0IEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgYEVYVDRfRlNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBLbm93aW5nIHdoZXJlIHRvIGZpbmQgaXQgaW4gdGhlIEtjb25maWcgZmlsZXMgaXMgZnVuZGFtZW50YWwuIFRoYXQgbGlrZWx5IG1lYW5zIGRpdmluZyBpbnRvIGBmcy9leHQ0L0tjb25maWdgIGRpcmVjdG9yeS4gSSBzaG91bGQgcXVpY2tseSBjaGVjayB0aGF0IGZpbGUgdG8gY29uZmlybSB3aGVyZSBFWFQ0IGlzIGRlZmluZWQuIEkga25vdyBgS2NvbmZpZ2AgZmlsZXMgYXJlIHRoZSBiYWNrYm9uZSBvZiB0aGUga2VybmVsJiMzOTtzIGJ1aWxkIHN5c3RlbSBhbmQgbWFuYWdlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEtub3dpbmcgdGhpcywgSSBuZWVkIHRvIHF1aWNrbHkgZmluZCBgRVhUNF9GU2AgaW4gaXRzIGxpa2VseSBsb2NhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9leHQ0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgRVhUNF9GU1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7VGhlIEV4dGVuZGVkIDQgKGV4dDQpIGZpbGVzeXN0ZW1cJiMzNDtcbiAgIDQ6XHRcdHNlbGVjdCBCVUZGRVJfSEVBRFxuICAgNTpcdFx0c2VsZWN0IEpCRDJcbiAgIDY6XHRcdHNlbGVjdCBDUkMxNlxuICAgNzpcdFx0c2VsZWN0IENSQzMyXG4gICA4Olx0XHRzZWxlY3QgRlNfSU9NQVBcbiAgIDk6XHRcdHNlbGVjdCBGU19FTkNSWVBUSU9OX0FMR1MgaWYgRlNfRU5DUllQVElPTlxuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBUaGlzIGlzIHRoZSBuZXh0IGdlbmVyYXRpb24gb2YgdGhlIGV4dDMgZmlsZXN5c3RlbS5cbiAgMTI6XHRcbiAgMTM6XHRcdCAgVW5saWtlIHRoZSBjaGFuZ2UgZnJvbSBleHQyIGZpbGVzeXN0ZW0gdG8gZXh0MyBmaWxlc3lzdGVtLFxuICAxNDpcdFx0ICB0aGUgb24tZGlzayBmb3JtYXQgb2YgZXh0NCBpcyBub3QgZm9yd2FyZHMgY29tcGF0aWJsZSB3aXRoXG4gIDE1Olx0XHQgIGV4dDM7IGl0IGlzIGJhc2VkIG9uIGV4dGVudCBtYXBzIGFuZCBpdCBzdXBwb3J0cyA0OC1iaXRcbiAgMTY6XHRcdCAgcGh5c2ljYWwgYmxvY2sgbnVtYmVycy4gIFRoZSBleHQ0IGZpbGVzeXN0ZW0gYWxzbyBzdXBwb3J0cyBkZWxheWVkXG4gIDE3Olx0XHQgIGFsbG9jYXRpb24sIHBlcnNpc3RlbnQgcHJlYWxsb2NhdGlvbiwgaGlnaCByZXNvbHV0aW9uIHRpbWUgc3RhbXBzLFxuICAxODpcdFx0ICBhbmQgYSBudW1iZXIgb2Ygb3RoZXIgZmVhdHVyZXMgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSBhbmQgc3BlZWRcbiAgMTk6XHRcdCAgdXAgZnNjayB0aW1lLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBzZWUgdGhlIHdlYiBwYWdlcyBhdFxuICAyMDpcdFx0ICBodHRwOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcuXG4gIDIxOlx0XG4gIDIyOlx0XHQgIFRoZSBleHQ0IGZpbGVzeXN0ZW0gc3VwcG9ydHMgbW91bnRpbmcgYW4gZXh0MyBmaWxlc3lzdGVtOyB3aGlsZSB0aGVyZVxuICAyMzpcdFx0ICBhcmUgc29tZSBwZXJmb3JtYW5jZSBnYWlucyBmcm9tIHRoZSBkZWxheWVkIGFsbG9jYXRpb24gYW5kIGlub2RlXG4gIDI0Olx0XHQgIHRhYmxlIHJlYWRhaGVhZCwgdGhlIGJlc3QgcGVyZm9ybWFuY2UgZ2FpbnMgcmVxdWlyZSBlbmFibGluZyBleHQ0XG4gIDI1Olx0XHQgIGZlYXR1cmVzIGluIHRoZSBmaWxlc3lzdGVtIHVzaW5nIHR1bmUyZnMsIG9yIGZvcm1hdHRpbmcgYSBuZXdcbiAgMjY6XHRcdCAgZmlsZXN5c3RlbSBhcyBhbiBleHQ0IGZpbGVzeXN0ZW0gaW5pdGlhbGx5LiBXaXRob3V0IGV4cGxpY2l0IGVuYWJsaW5nXG4gIDI3Olx0XHQgIG9mIGV4dDQgZmVhdHVyZXMsIHRoZSBvbiBkaXNrIGZpbGVzeXN0ZW0gZm9ybWF0IHN0YXlzIGZ1bGx5IGJhY2t3YXJkXG4gIDI4Olx0XHQgIGNvbXBhdGlibGUuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBmaWxlIHN5c3RlbSBzdXBwb3J0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGVcbiAgMzE6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGV4dDQuXG4gIDMyOlx0XG4gIDMzOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDM0Olx0XG4gIDM1Olx0Y29uZmlnIEVYVDRfVVNFX0ZPUl9FWFQyXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NTMKCQkJCQkJCW91dHB1dDogMTE3CgkJCQkJCQl0aG91Z2h0czogMzUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFByb3Bvc2VkIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGlzLiBUaGUgcHJpbWFyeSBjb25jZXJuIGhlcmUgaXMgdGhlIGNoYW5nZSBpbiBjYWNoZSBhbGlnbm1lbnQgb2YgYHNfb3JwaGFuX2xvY2tgIHdpdGhpbiB0aGUgYHN0cnVjdCBleHQ0X3NiX2luZm9gIHN0cnVjdHVyZS4gVGhpcyBpcyBzaWduaWZpY2FudCwgZXNwZWNpYWxseSBiZWNhdXNlIHRoZSBjaGFuZ2UgaXMgY29uZGl0aW9uYWwgb24gdGhlIGBTTVBgIGNvbmZpZ3VyYXRpb24uIFNpbmNlIGBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wYCBkZXBlbmRzIG9uIGBTTVBgIGFuZCBgU01QYCBpcyBub3cgc3VjaCBhIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24sIHdlIG5lZWQgdG8gY29uc2lkZXIgaG93IHRoaXMgaW1wYWN0cyBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzLiBXaGlsZSBgU01QYCBpdHNlbGYgaXMgcHJhY3RpY2FsbHkgdWJpcXVpdG91cyB0aGVzZSBkYXlzLCB3ZSBhbHNvIGhhdmUgdGhlIGBFWFQ0X0ZTYCBjb25maWd1cmF0aW9uIHRvIGNvbnNpZGVyLCB3aGljaCBwZXJ0YWlucyBzcGVjaWZpY2FsbHkgdG8gdGhlIGV4dDQgZmlsZXN5c3RlbS4KClRoZSBjcml0ZXJpYSBmb3IgZnV6emluZyBhcHBlYXIgc291bmQuIFRoaXMgcGF0Y2ggZGlyZWN0bHkgbW9kaWZpZXMgdGhlIGxheW91dCBvZiBgZXh0NF9zYl9pbmZvYCBpbiBTTVAgc2V0dXBzLiBgZXh0NGAgaXMgYSBjb3JlIExpbnV4IGZpbGVzeXN0ZW0sIGFuZCBhIHdlbGwtdW5kZXJzdG9vZCB0YXJnZXQgZm9yIHN5emthbGxlci4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY3JpdGljYWwgZnVuY3Rpb25zLiBXZSYjMzk7cmUgbG9va2luZyBhdCBmdW5jdGlvbnMgdGhhdCBhY2Nlc3Mgb3IgaW5pdGlhbGl6ZSBgc19vcnBoYW5fbG9ja2A6IFNwZWNpZmljYWxseSwgYGV4dDRfb3JwaGFuX2FkZGAsIGBleHQ0X29ycGhhbl9kZWxgLCBhbmQgYF9fZXh0NF9maWxsX3N1cGVyYC4gVGhlc2UgYXJlIGFsbCBsb2NhdGVkIGluIHN0YW5kYXJkIGV4dDQgZmlsZSBsb2NhdGlvbnM6IGBmcy9leHQ0L29ycGhhbi5jYCBmb3IgdGhlIGFkZC9kZWwgb3BlcmF0aW9ucyBhbmQgYGZzL2V4dDQvc3VwZXIuY2AgZm9yIHRoZSBzdXBlciBibG9jayBpbml0aWFsaXphdGlvbi4gSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBhbiBleGhhdXN0aXZlIGxpc3QuCgpUaGUgc3VnZ2VzdGVkIGBFbmFibGVDb25maWdzYCBhcmUgYFsmIzM0O0VYVDRfRlMmIzM0O11gIG9yIHBvdGVudGlhbGx5IGBbJiMzNDtFWFQ0X0ZTJiMzNDssICYjMzQ7U01QJiMzNDtdYC4gYEVYVDRfRlNgIHNob3VsZCBiZSBzdWZmaWNpZW50LCBhcyBleHQ0IGlzIGEgd2VsbC10ZXN0ZWQsIGNvbW1vbiBjb25maWd1cmF0aW9uLCBidXQgdGhlIFNNUCBwYXJ0IGlzIGltcG9ydGFudCBpbiByZWxhdGlvbiB0byB0aGUgc3RydWN0dXJlIGFsaWdubWVudC4KCkZpbmFsbHksIGRvZXMgdGhpcyB3YXJyYW50IGZ1enppbmc/IEFic29sdXRlbHkuIE1vZGlmeWluZyBkYXRhIHN0cnVjdHVyZXMsIHBhcnRpY3VsYXJseSB3aXRoaW4gYSBjb3JlIHN1YnN5c3RlbSBsaWtlIGBleHQ0YCwgaXMgYSBoaWdoLXJpc2sgY2hhbmdlLiBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZXNlIGNoYW5nZXMsIGVzcGVjaWFsbHkgcmVsYXRlZCB0byBsYXlvdXQgYW5kIGFsaWdubWVudCwgZG9uJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucywgbWVtb3J5IGNvcnJ1cHRpb24gdnVsbmVyYWJpbGl0aWVzLCBmYWxzZSBzaGFyaW5nLCBvciBhbGlnbm1lbnQgaXNzdWVzLiBUaGVzZSBhcmUgdGhlIGtpbmRzIG9mIHN1YnRsZSBwcm9ibGVtcyB0aGF0IGZ1enppbmcgaXMgZGVzaWduZWQgdG8gY2F0Y2guCgpJJiMzOTttIHNhdGlzZmllZCB3aXRoIHRoZSBhbmFseXNpcywgbGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OywKICAgICYjMzQ7U01QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9vcnBoYW5fYWRkJiMzNDssCiAgICAmIzM0O2V4dDRfb3JwaGFuX2RlbCYjMzQ7LAogICAgJiMzNDtfX2V4dDRfZmlsbF9zdXBlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzdHJ1Y3QgZXh0NF9zYl9pbmZvIHRvIGNhY2hlbGluZS1hbGlnbiB0aGUgc19vcnBoYW5fbG9jayBtdXRleCBpbiBTTVAgY29uZmlndXJhdGlvbnMuIFRoaXMgYWx0ZXJzIGRhdGEgc3RydWN0dXJlIGxheW91dCBhbmQgc3luY2hyb25pemF0aW9uIGJlaGF2aW9yIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgc3VpdGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OywKICAgICYjMzQ7U01QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9vcnBoYW5fYWRkJiMzNDssCiAgICAmIzM0O2V4dDRfb3JwaGFuX2RlbCYjMzQ7LAogICAgJiMzNDtfX2V4dDRfZmlsbF9zdXBlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzdHJ1Y3QgZXh0NF9zYl9pbmZvIHRvIGNhY2hlbGluZS1hbGlnbiB0aGUgc19vcnBoYW5fbG9jayBtdXRleCBpbiBTTVAgY29uZmlndXJhdGlvbnMuIFRoaXMgYWx0ZXJzIGRhdGEgc3RydWN0dXJlIGxheW91dCBhbmQgc3luY2hyb25pemF0aW9uIGJlaGF2aW9yIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgc3VpdGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHRoZSAmIzM5O19fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXAmIzM5OyBhdHRyaWJ1dGUgdG8gdGhlICYjMzk7c19vcnBoYW5fbG9jayYjMzk7IG11dGV4IGluICYjMzk7c3RydWN0IGV4dDRfc2JfaW5mbyYjMzk7IHRvIGFsaWduIGl0IHRvIGEgY2FjaGVsaW5lIGluIFNNUCBjb25maWd1cmF0aW9ucyBhbmQgcmVkdWNlIGZhbHNlIHNoYXJpbmcuXG5cbiYjMzk7c3RydWN0IGV4dDRfc2JfaW5mbyYjMzk7IGlzIGFuIGludGVybmFsIHN1cGVyYmxvY2sgc3RhdGUgc3RydWN0dXJlIGFsbG9jYXRlZCB1c2luZyBremFsbG9jX29iaigpIGluIGV4dDRfYWxsb2Nfc2JpKCksIG1lYW5pbmcgYWxsIGZpZWxkcyBhbmQgYW55IGFsaWdubWVudCBwYWRkaW5nIGFyZSB6ZXJvLWluaXRpYWxpemVkIHVwb24gYWxsb2NhdGlvbi4gVGhlIHN0cnVjdHVyZSBpcyBuZXZlciBjb3BpZWQgdG8gdXNlcnNwYWNlLCBub3IgZG9lcyB0aGlzIGFsaWdubWVudCBhZGp1c3RtZW50IGFsdGVyIGNvbnRyb2wgZmxvdywgbGVuZ3RoIGNhbGN1bGF0aW9ucywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgaGFuZGxpbmcuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDEzZTQyN2M4NzRlMGEzYThmMjljNmM2Yzg5MGQ1NzRmMGIyOWNlYjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIFNlcCA0IDAyOjM2OjUwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHQ0LmggYi9mcy9leHQ0L2V4dDQuaAppbmRleCA3MjRhMjdlOGJlNjEzLi5hM2YxNmE5ODE2NjQ2IDEwMDY0NAotLS0gYS9mcy9leHQ0L2V4dDQuaAomIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L2V4dDQuaApAQCAtMTY0NCw3ICYjNDM7MTY0NCw3IEBAIHN0cnVjdCBleHQ0X3NiX2luZm8gewogCS8qIEpvdXJuYWxpbmcgKi8KIAlzdHJ1Y3Qgam91cm5hbF9zICpzX2pvdXJuYWw7CiAJdW5zaWduZWQgbG9uZyBzX2V4dDRfZmxhZ3M7CQkvKiBFeHQ0IHN1cGVyYmxvY2sgZmxhZ3MgKi8KLQlzdHJ1Y3QgbXV0ZXggc19vcnBoYW5fbG9jazsJLyogUHJvdGVjdHMgb24gZGlzayBsaXN0IGNoYW5nZXMgKi8KJiM0MzsJc3RydWN0IG11dGV4IHNfb3JwaGFuX2xvY2sgX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHNfb3JwaGFuOwkvKiBMaXN0IG9mIG9ycGhhbmVkIGlub2RlcyBpbiBvbiBkaXNrCiAJCQkJCSAgIGxpc3QgKi8KIAlzdHJ1Y3QgZXh0NF9vcnBoYW5faW5mbyBzX29ycGhhbl9pbmZvOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExMAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBGdXp6aW5nIFNlc3Npb24gSnVzdGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgdGhpcyBwYXRjaCBzZXJpZXMgYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIGl0IHdhcnJhbnRzIGRlZGljYXRpbmcgc29tZSBLTVNBTiBmdXp6aW5nIHRpbWUuIExldCYjMzk7cyBzZWUuLi4gdGhlIGRpZmYgbG9va3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbG9va3MgbGlrZSB0aGV5IGFyZSBhZGRpbmcgYF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXBgIHRvIGBzX29ycGhhbl9sb2NrYCwgYSBtdXRleCB3aXRoaW4gYHN0cnVjdCBleHQ0X3NiX2luZm9gIGluIGBmcy9leHQ0L2V4dDQuaGAuIFRoaXMgaXMgbGlrZWx5IGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0byBhdm9pZCBmYWxzZSBzaGFyaW5nLiBCdXQsIGRvZXMgdGhpcyBpbnRyb2R1Y2UgYSBwb3RlbnRpYWwgZm9yIG5ldyBtZW1vcnkgc2FmZXR5IGlzc3VlcyB0aGF0IEtNU0FOIGNvdWxkIGNhdGNoPwoKSSBuZWVkIG1vcmUgY29udGV4dC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHdoYXQgb3RoZXIgdXNlcyBhcmUgYmVpbmcgbWFkZSBvZiB0aGlzIGBleHQ0X3NiX2luZm9gIHN0cnVjdCBhbmQgYHNfb3JwaGFuX2xvY2tgIG11dGV4IHRvIGRldGVybWluZSB3aGF0IHNvcnQgb2YgYWNjZXNzIHBhdHRlcm5zIGFyZSBpbiBwbGF5LiBJJiMzOTtsbCByZWFkIHRoZSBmaWxlIG9yIGdyZXAgZm9yIHJlZmVyZW5jZXMgdG8gc2VlIHdoZXJlIHRoaXMgbXV0ZXggaXMgdXNlZCBhbmQgaG93LiBUaGUgZ29hbCBpcyB0byBzZWUgaWYgdGhpcyBjaGFuZ2UgYWx0ZXJzIGFueSBsb2NraW5nIG9yZGVyIG9yIGlmIGl0IHRvdWNoZXMgYSBzaGFyZWQgZGF0YXN0cnVjdHVyZSBpbiBhIG5vbi1vYnZpb3VzIHdheS4gRGVwZW5kaW5nIG9uIHdoYXQgSSBmaW5kLCBJJiMzOTtsbCB0aGVuIGRlY2lkZSBpZiBhIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyB3YXJyYW50ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBleHQ0X3NiX2luZm8gXFx7JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9leHQ0Lmg9MTU2NT1zdHJ1Y3QgZXh0NF9mY19zbmFwX3N0YXRzIHtcbi0tXG5mcy9leHQ0L2V4dDQuaC0xNTkxLSAqL1xuZnMvZXh0NC9leHQ0Lmg6MTU5MjpzdHJ1Y3QgZXh0NF9zYl9pbmZvIHtcbmZzL2V4dDQvZXh0NC5oLTE1OTMtXHR1bnNpZ25lZCBsb25nIHNfZGVzY19zaXplO1x0LyogU2l6ZSBvZiBhIGdyb3VwIGRlc2NyaXB0b3IgaW4gYnl0ZXMgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgxNAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aGlua2luZywgZXhwcmVzc2VkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBpbnRvIHRoZSBleHQ0IEhlYWRlcioqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYSBzcGVjaWZpYyBhc3BlY3Qgb2YgdGhlIGV4dDQgZmlsZXN5c3RlbSwgc28gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBleGFtaW5pbmcgdGhlIGhlYWRlciBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTY0MCBvZiBgZnMvZXh0NC9leHQ0LmhgLiBUaGlzIGxpa2VseSBjb250YWlucyBzb21lIGNyaXRpY2FsIGRlZmluaXRpb25zIG9yIHN0cnVjdHVyZXMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgdG8gcHJvY2VlZC4gSSBhbnRpY2lwYXRlIGZpbmRpbmcgaW5mb3JtYXRpb24gYWJvdXTigKYgd2VsbCwgSSYjMzk7bSBub3Qgc3VyZSAqZXhhY3RseSogeWV0LCB0aGF0JiMzOTtzIHdoeSBJJiMzOTttIGhlcmUuIEJ1dCBJJiMzOTttIHJlYWR5IHRvIGRpZyBpbiBhbmQgZGVjaXBoZXIgd2hhdCB0aGlzIHNlY3Rpb24gaG9sZHMuIEl0IGNvdWxkIGJlIHJlbGF0ZWQgdG8gaW5vZGUgbWFuYWdlbWVudCwgYmxvY2sgYWxsb2NhdGlvbiwgam91cm5hbGluZyBtZXRhZGF0YSwgb3IgZXZlbiBzb21lIG9ic2N1cmUgZmVhdHVyZS4gVGhlIGh1bnQgYmVnaW5zIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2V4dDQvZXh0NC5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTYzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNjM1Olx0XHRzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIgc19zcmFfZXhjZWVkZWRfcmV0cnlfbGltaXQ7XG4xNjM2Olx0XHRzdHJ1Y3QgYmxvY2tncm91cF9sb2NrICpzX2Jsb2NrZ3JvdXBfbG9jaztcbjE2Mzc6XHRcdHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqc19wcm9jO1xuMTYzODpcdFx0c3RydWN0IGtvYmplY3Qgc19rb2JqO1xuMTYzOTpcdFx0c3RydWN0IGNvbXBsZXRpb24gc19rb2JqX3VucmVnaXN0ZXI7XG4xNjQwOlx0XHRzdHJ1Y3QgbXV0ZXggc19lcnJvcl9ub3RpZnlfbXV0ZXg7IC8qIHByb3RlY3RzIHN5c2ZzX25vdGlmeSB2cyBrb2JqZWN0X2RlbCAqL1xuMTY0MTpcdFx0c3RydWN0IHN1cGVyX2Jsb2NrICpzX3NiO1xuMTY0MjpcdFx0c3RydWN0IGJ1ZmZlcl9oZWFkICpzX21tcF9iaDtcbjE2NDM6XHRcbjE2NDQ6XHRcdC8qIEpvdXJuYWxpbmcgKi9cbjE2NDU6XHRcdHN0cnVjdCBqb3VybmFsX3MgKnNfam91cm5hbDtcbjE2NDY6XHRcdHVuc2lnbmVkIGxvbmcgc19leHQ0X2ZsYWdzO1x0XHQvKiBFeHQ0IHN1cGVyYmxvY2sgZmxhZ3MgKi9cbjE2NDc6XHRcdHN0cnVjdCBtdXRleCBzX29ycGhhbl9sb2NrIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7XG4xNjQ4Olx0XHRzdHJ1Y3QgbGlzdF9oZWFkIHNfb3JwaGFuO1x0LyogTGlzdCBvZiBvcnBoYW5lZCBpbm9kZXMgaW4gb24gZGlza1xuMTY0OTpcdFx0XHRcdFx0XHQgICBsaXN0ICovXG4xNjUwOlx0XHRzdHJ1Y3QgZXh0NF9vcnBoYW5faW5mbyBzX29ycGhhbl9pbmZvO1xuMTY1MTpcdFx0dW5zaWduZWQgbG9uZyBzX2NvbW1pdF9pbnRlcnZhbDtcbjE2NTI6XHRcdHUzMiBzX21heF9iYXRjaF90aW1lO1xuMTY1MzpcdFx0dTMyIHNfbWluX2JhdGNoX3RpbWU7XG4xNjU0Olx0XHRzdHJ1Y3QgZmlsZSAqc19qb3VybmFsX2JkZXZfZmlsZTtcbjE2NTU6XHQjaWZkZWYgQ09ORklHX1FVT1RBXG4xNjU2Olx0XHQvKiBOYW1lcyBvZiBxdW90YSBmaWxlcyB3aXRoIGpvdXJuYWxsZWQgcXVvdGEgKi9cbjE2NTc6XHRcdGNoYXIgX19yY3UgKnNfcWZfbmFtZXNbRVhUNF9NQVhRVU9UQVNdO1xuMTY1ODpcdFx0aW50IHNfanF1b3RhX2ZtdDtcdFx0XHQvKiBGb3JtYXQgb2YgcXVvdGEgdG8gdXNlICovXG4xNjU5Olx0I2VuZGlmXG4xNjYwOlx0XHR1bnNpZ25lZCBpbnQgc193YW50X2V4dHJhX2lzaXplOyAvKiBOZXcgaW5vZGVzIHNob3VsZCByZXNlcnZlICMgYnl0ZXMgKi9cbjE2NjE6XHRcdHN0cnVjdCBleHQ0X3N5c3RlbV9ibG9ja3MgX19yY3UgKnNfc3lzdGVtX2Jsa3M7XG4xNjYyOlx0XG4xNjYzOlx0I2lmZGVmIEVYVEVOVFNfU1RBVFNcbjE2NjQ6XHRcdC8qIGV4dDQgZXh0ZW50cyBzdGF0cyAqL1xuMTY2NTpcdFx0dW5zaWduZWQgbG9uZyBzX2V4dF9taW47XG4xNjY2Olx0XHR1bnNpZ25lZCBsb25nIHNfZXh0X21heDtcbjE2Njc6XHRcdHVuc2lnbmVkIGxvbmcgc19kZXB0aF9tYXg7XG4xNjY4Olx0XHRzcGlubG9ja190IHNfZXh0X3N0YXRzX2xvY2s7XG4xNjY5Olx0XHR1bnNpZ25lZCBsb25nIHNfZXh0X2Jsb2NrcztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY2OQoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqVHJhY2luZyB0aGUgQWxsb2NhdGlvbiBhbmQgSW5pdGlhbGl6YXRpb24gb2YgYHN0cnVjdCBleHQ0X3NiX2luZm9gKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGFuZCBob3cgdGhlIGBzdHJ1Y3QgZXh0NF9zYl9pbmZvYCBpcyBicm91Z2h0IHRvIGxpZmUgd2l0aGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gY29kZS4gVGhhdCBzdHJ1Y3QgaXMgZnVuZGFtZW50YWwgdG8gdGhlIG9wZXJhdGlvbiBvZiB0aGUgZmlsZXN5c3RlbSwgaG9sZGluZyBhbGwgdGhlIHN1cGVyYmxvY2sgaW5mb3JtYXRpb24gYW5kIG1ldGFkYXRhIGFib3V0IHRoZSBleHQ0IHZvbHVtZSwgc28gZ2V0dGluZyBpdHMgYWxsb2NhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gY2xlYXIgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4gSSB3YW50IHRvIHRyYWNlIGl0cyBsaWZlY3ljbGUgZnJvbSBzdGFydCB0byBmaW5pc2guIEkmIzM5O2xsIG5lZWQgdG8gZ28gZGlnZ2luZyB0aHJvdWdoIHRoZSBrZXJuZWwgc291cmNlIHRvIGZpbmQgdGhlIGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIHBvaW50cy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbG9vayBmb3IgZnVuY3Rpb25zIHRoYXQgYXJlIGxpa2VseSByZXNwb25zaWJsZSBmb3IgbW91bnRpbmcgYW4gZXh0NCBmaWxlc3lzdGVtLCBvciBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIHN1cGVyYmxvY2sgaGFuZGxpbmcuIEkgd2lsbCBiZSBsb29raW5nIGZvciBjYWxscyByZWxhdGVkIHRvIGBleHQ0X3NiX2luZm9gIG9yIHNpbWlsYXIgZGF0YSBzdHJ1Y3R1cmVzLCBvciBldmVuIGFsbG9jYXRpb25zIHJlbGF0ZWQgdG8gJiMzNDtzdXBlcmJsb2NrJiMzNDsgb3IgJiMzNDttb3VudCYjMzQ7IG9wZXJhdGlvbnMuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgbW91bnQgY29kZSBwYXRoIHNpbmNlIHRoYXQgaXMgd2hlcmUgYWxsIG9mIHRoZSBmaWxlc3lzdGVtIHN0cnVjdHVyZXMgYXJlIGluaXRpYWxpc2VkLiBJIHNob3VsZCBmaW5kIGl0IHRoZXJlLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGlzIHVuZm9sZHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3phbGxvY1xcKHNpemVvZlxcKHN0cnVjdCBleHQ0X3NiX2luZm9cXCl8c2l6ZW9mXFwoc3RydWN0IGV4dDRfc2JfaW5mb1xcKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk4MwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipUcmFjaW5nIHRoZSBBbGxvY2F0aW9uIG9mIGBleHQ0X3NiX2luZm9gKioKCk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHdoZXJlIHRoaXMgYGV4dDRfc2JfaW5mb2Agc3RydWN0dXJlIGlzIGdldHRpbmcgYWxsb2NhdGVkIGluIHRoZSBrZXJuZWwuIFRoaXMgaXMgYSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgZXh0NCBmaWxlc3lzdGVtJiMzOTtzIHN1cGVyYmxvY2sgaW5mb3JtYXRpb24sIHNvIHVuZGVyc3RhbmRpbmcgaXRzIGxpZmVjeWNsZSBpcyBmdW5kYW1lbnRhbCBmb3IgYW55IGtlcm5lbCBhbmFseXNpcy4gSSYjMzk7bSB0aGlua2luZyBJIGNhbiBzdGFydCBieSBsb29raW5nIGZvciBjYWxscyB0byBga21hbGxvY2AsIGBremFsbG9jYCwgb3IgYGttZW1fY2FjaGVfYWxsb2NgIHdpdGggdGhlIHNpemUgb2YgdGhlIGBleHQ0X3NiX2luZm9gIHN0cnVjdHVyZS4gT3IsIEkgc2hvdWxkIGxvb2sgYXQgdGhlIGV4dDQmIzM5O3Mgc3VwZXJibG9jayBvcGVyYXRpb25zIChgc19vcGApIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgY3VzdG9tIGFsbG9jYXRpb24gcm91dGluZXMgZGVmaW5lZCB0aGVyZS4gSSBjb3VsZCBhbHNvIHNjYW4gdGhlIGNvZGUgZm9yIGRpcmVjdCBjYWxscyB0byBgYWxsb2Nfc3VwZXJgIGFzIHRoYXQgc2VlbXMgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIGEgY29tYmluYXRpb24gb2YgdG9vbHM6IGBncmVwYCB0byBxdWlja2x5IHNlYXJjaCB0aGUgc291cmNlIHRyZWUsIHBvdGVudGlhbGx5IGNyb3NzLXJlZmVyZW5jaW5nIHdpdGggYGNzY29wZWAgb3IgYGMtdGFnc2AgZm9yIGRlZXBlciBjYWxsLWdyYXBoIGFuYWx5c2lzLiBBIHNvdXJjZS1jb2RlIGJyb3dzZXIgd2l0aCB4cmVmIGNhcGFiaWxpdGllcyBpcyBnb2luZyB0byBiZSBteSBiZXN0IGZyaWVuZCBoZXJlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGJhc2ljIGBncmVwYCBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEl0IG1pZ2h0IGJlIGEgb25lLWxpbmVyIG9yIGl0IG1pZ2h0IHJlcXVpcmUgYSBtb3JlIGludm9sdmVkIGRpdmUgdGhyb3VnaCB0aGUgYm9vdCBwcm9jZXNzIGFuZCBtb3VudCBwYXRoLiBUaW1lIHRvIGRpZyBpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0NF9zYl9pbmZvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC9zdXBlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvc3VwZXIuYz00NzI9c3RhdGljIHZvaWQgZXh0NF9tYXliZV91cGRhdGVfc3VwZXJibG9jayhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuZnMvZXh0NC9zdXBlci5jLTQ3My17XG5mcy9leHQ0L3N1cGVyLmM6NDc0Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDc1LVx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzID0gc2JpLVx1MDAzZXNfZXM7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTY0Nz1zdGF0aWMgdm9pZCBzYXZlX2Vycm9yX2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGVycm9yLFxuLS1cbmZzL2V4dDQvc3VwZXIuYy02NTAte1xuZnMvZXh0NC9zdXBlci5jOjY1MTpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTY1Mi1cbi0tXG5mcy9leHQ0L3N1cGVyLmM9NzUxPXN0YXRpYyB2b2lkIHVwZGF0ZV9zdXBlcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmZzL2V4dDQvc3VwZXIuYy03NTIte1xuZnMvZXh0NC9zdXBlci5jOjc1MzpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgZXh0NF9zYl9pbmZvLFxuZnMvZXh0NC9zdXBlci5jLTc1NC1cdFx0XHRcdFx0XHRzX3NiX3VwZF93b3JrKTtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9MTEwNj12b2lkIGV4dDRfbWFya19ncm91cF9iaXRtYXBfY29ycnVwdGVkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4tLVxuZnMvZXh0NC9zdXBlci5jLTExMDkte1xuZnMvZXh0NC9zdXBlci5jOjExMTA6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy0xMTExLVx0c3RydWN0IGV4dDRfZ3JvdXBfaW5mbyAqZ3JwID0gZXh0NF9nZXRfZ3JvdXBfaW5mbyhzYiwgZ3JvdXApO1xuLS1cbmZzL2V4dDQvc3VwZXIuYz0xMTYzPXN0YXRpYyBpbmxpbmUgc3RydWN0IGlub2RlICpvcnBoYW5fbGlzdF9lbnRyeShzdHJ1Y3QgbGlzdF9oZWFkICpsKVxuLS1cbmZzL2V4dDQvc3VwZXIuYy0xMTY3LVxuZnMvZXh0NC9zdXBlci5jOjExNjg6c3RhdGljIHZvaWQgZHVtcF9vcnBoYW5fbGlzdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkpXG5mcy9leHQ0L3N1cGVyLmMtMTE2OS17XG4tLVxuZnMvZXh0NC9zdXBlci5jPTEyMDI9c3RhdGljIGlubGluZSBjaGFyICpnZXRfcWZfbmFtZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuZnMvZXh0NC9zdXBlci5jOjEyMDM6XHRcdFx0XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmksXG5mcy9leHQ0L3N1cGVyLmMtMTIwNC1cdFx0XHRcdGludCB0eXBlKVxuLS1cbmZzL2V4dDQvc3VwZXIuYz0xMjEwPXN0YXRpYyBpbmxpbmUgdm9pZCBleHQ0X3F1b3Rhc19vZmYoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHR5cGUpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTEyMTQtXG5mcy9leHQ0L3N1cGVyLmM6MTIxNTpzdGF0aWMgaW50IGV4dDRfcGVyY3B1X3BhcmFtX2luaXQoc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpKVxuZnMvZXh0NC9zdXBlci5jLTEyMTYte1xuLS1cbmZzL2V4dDQvc3VwZXIuYy0xMjQ3LVxuZnMvZXh0NC9zdXBlci5jOjEyNDg6c3RhdGljIHZvaWQgZXh0NF9wZXJjcHVfcGFyYW1fZGVzdHJveShzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkpXG5mcy9leHQ0L3N1cGVyLmMtMTI0OS17XG4tLVxuZnMvZXh0NC9zdXBlci5jLTEyNTctXG5mcy9leHQ0L3N1cGVyLmM6MTI1ODpzdGF0aWMgdm9pZCBleHQ0X2dyb3VwX2Rlc2NfZnJlZShzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkpXG5mcy9leHQ0L3N1cGVyLmMtMTI1OS17XG4tLVxuZnMvZXh0NC9zdXBlci5jLTEyNjgtXG5mcy9leHQ0L3N1cGVyLmM6MTI2OTpzdGF0aWMgdm9pZCBleHQ0X2ZsZXhfZ3JvdXBzX2ZyZWUoc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpKVxuZnMvZXh0NC9zdXBlci5jLTEyNzAte1xuLS1cbmZzL2V4dDQvc3VwZXIuYz0xMjgyPXN0YXRpYyB2b2lkIGV4dDRfcHV0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9leHQ0L3N1cGVyLmMtMTI4My17XG5mcy9leHQ0L3N1cGVyLmM6MTI4NDpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTEyODUtXHRzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMgPSBzYmktXHUwMDNlc19lcztcbi0tXG5mcy9leHQ0L3N1cGVyLmM9MjUyOD1zdGF0aWMgaW50IHBhcnNlX2FwcGx5X3NiX21vdW50X29wdGlvbnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9leHQ0L3N1cGVyLmMtMjUzMC17XG5mcy9leHQ0L3N1cGVyLmM6MjUzMTpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTI1MzItXHRjaGFyIHNfbW91bnRfb3B0c1s2NF07XG4tLVxuZnMvZXh0NC9zdXBlci5jPTI1ODI9c3RhdGljIHZvaWQgZXh0NF9hcHBseV9xdW90YV9vcHRpb25zKHN0cnVjdCBmc19jb250ZXh0ICpmYyxcbi0tXG5mcy9leHQ0L3N1cGVyLmMtMjU4Ny1cdHN0cnVjdCBleHQ0X2ZzX2NvbnRleHQgKmN0eCA9IGZjLVx1MDAzZWZzX3ByaXZhdGU7XG5mcy9leHQ0L3N1cGVyLmM6MjU4ODpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTI1ODktXHRjaGFyICpxbmFtZTtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9MjYxOT1zdGF0aWMgaW50IGV4dDRfY2hlY2tfcXVvdGFfY29uc2lzdGVuY3koc3RydWN0IGZzX2NvbnRleHQgKmZjLFxuLS1cbmZzL2V4dDQvc3VwZXIuYy0yNjIzLVx0c3RydWN0IGV4dDRfZnNfY29udGV4dCAqY3R4ID0gZmMtXHUwMDNlZnNfcHJpdmF0ZTtcbmZzL2V4dDQvc3VwZXIuYzoyNjI0Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtMjYyNS1cdGJvb2wgcXVvdGFfZmVhdHVyZSA9IGV4dDRfaGFzX2ZlYXR1cmVfcXVvdGEoc2IpO1xuLS1cbmZzL2V4dDQvc3VwZXIuYz0yNzM3PXN0YXRpYyBpbnQgZXh0NF9jaGVja190ZXN0X2R1bW15X2VuY3J5cHRpb24oY29uc3Qgc3RydWN0IGZzX2NvbnRleHQgKmZjLFxuLS1cbmZzL2V4dDQvc3VwZXIuYy0yNzQwLVx0Y29uc3Qgc3RydWN0IGV4dDRfZnNfY29udGV4dCAqY3R4ID0gZmMtXHUwMDNlZnNfcHJpdmF0ZTtcbmZzL2V4dDQvc3VwZXIuYzoyNzQxOlx0Y29uc3Qgc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtMjc0Mi1cbi0tXG5mcy9leHQ0L3N1cGVyLmM9Mjc4OT1zdGF0aWMgaW50IGV4dDRfY2hlY2tfb3B0X2NvbnNpc3RlbmN5KHN0cnVjdCBmc19jb250ZXh0ICpmYyxcbi0tXG5mcy9leHQ0L3N1cGVyLmMtMjc5Mi1cdHN0cnVjdCBleHQ0X2ZzX2NvbnRleHQgKmN0eCA9IGZjLVx1MDAzZWZzX3ByaXZhdGU7XG5mcy9leHQ0L3N1cGVyLmM6Mjc5MzpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IGZjLVx1MDAzZXNfZnNfaW5mbztcbmZzL2V4dDQvc3VwZXIuYy0yNzk0LVx0aW50IGlzX3JlbW91bnQgPSBmYy1cdTAwM2VwdXJwb3NlID09IEZTX0NPTlRFWFRfRk9SX1JFQ09ORklHVVJFO1xuLS1cbmZzL2V4dDQvc3VwZXIuYz0yODcxPXN0YXRpYyB2b2lkIGV4dDRfYXBwbHlfb3B0aW9ucyhzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTI4NzMtXHRzdHJ1Y3QgZXh0NF9mc19jb250ZXh0ICpjdHggPSBmYy1cdTAwM2Vmc19wcml2YXRlO1xuZnMvZXh0NC9zdXBlci5jOjI4NzQ6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBmYy1cdTAwM2VzX2ZzX2luZm87XG5mcy9leHQ0L3N1cGVyLmMtMjg3NS1cbi0tXG5mcy9leHQ0L3N1cGVyLmM9MjkzMT1zdGF0aWMgaW5saW5lIHZvaWQgZXh0NF9zaG93X3F1b3RhX29wdGlvbnMoc3RydWN0IHNlcV9maWxlICpzZXEsXG4tLVxuZnMvZXh0NC9zdXBlci5jLTI5MzQtI2lmIGRlZmluZWQoQ09ORklHX1FVT1RBKVxuZnMvZXh0NC9zdXBlci5jOjI5MzU6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy0yOTM2LVx0Y2hhciAqdXNyX3FmX25hbWUsICpncnBfcWZfbmFtZTtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9Mjk4MT1zdGF0aWMgaW50IF9leHQ0X3Nob3dfb3B0aW9ucyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9leHQ0L3N1cGVyLmMtMjk4My17XG5mcy9leHQ0L3N1cGVyLmM6Mjk4NDpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTI5ODUtXHRzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMgPSBzYmktXHUwMDNlc19lcztcbi0tXG5mcy9leHQ0L3N1cGVyLmM9MzEyMz1zdGF0aWMgaW50IGV4dDRfc2V0dXBfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzLFxuLS1cbmZzL2V4dDQvc3VwZXIuYy0zMTI1LXtcbmZzL2V4dDQvc3VwZXIuYzozMTI2Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtMzEyNy1cdGludCBlcnIgPSAwO1xuLS1cbmZzL2V4dDQvc3VwZXIuYz0zMTgxPWludCBleHQ0X2FsbG9jX2ZsZXhfYmdfYXJyYXkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgZXh0NF9ncm91cF90IG5ncm91cClcbmZzL2V4dDQvc3VwZXIuYy0zMTgyLXtcbmZzL2V4dDQvc3VwZXIuYzozMTgzOlx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtMzE4NC1cdHN0cnVjdCBmbGV4X2dyb3VwcyAqKm9sZF9ncm91cHMsICoqbmV3X2dyb3Vwcztcbi0tXG5mcy9leHQ0L3N1cGVyLmM9MzIyOD1zdGF0aWMgaW50IGV4dDRfZmlsbF9mbGV4X2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbmZzL2V4dDQvc3VwZXIuYy0zMjI5LXtcbmZzL2V4dDQvc3VwZXIuYzozMjMwOlx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtMzIzMS1cdHN0cnVjdCBleHQ0X2dyb3VwX2Rlc2MgKmdkcCA9IE5VTEw7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTMyNjI9c3RhdGljIF9fbGUxNiBleHQ0X2dyb3VwX2Rlc2NfY3N1bShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBfX3UzMiBibG9ja19ncm91cCxcbi0tXG5mcy9leHQ0L3N1cGVyLmMtMzI2Ny1cdF9fbGUzMiBsZV9ncm91cCA9IGNwdV90b19sZTMyKGJsb2NrX2dyb3VwKTtcbmZzL2V4dDQvc3VwZXIuYzozMjY4Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtMzI2OS1cbi0tXG5mcy9leHQ0L3N1cGVyLmM9MzMyNT1zdGF0aWMgaW50IGV4dDRfY2hlY2tfZGVzY3JpcHRvcnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9leHQ0L3N1cGVyLmMtMzMyOC17XG5mcy9leHQ0L3N1cGVyLmM6MzMyOTpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTMzMzAtXHRleHQ0X2ZzYmxrX3QgZmlyc3RfYmxvY2sgPSBsZTMyX3RvX2NwdShzYmktXHUwMDNlc19lcy1cdTAwM2VzX2ZpcnN0X2RhdGFfYmxvY2spO1xuLS1cbmZzL2V4dDQvc3VwZXIuYz0zNTY4PXN0YXRpYyBleHQ0X2ZzYmxrX3QgZGVzY3JpcHRvcl9sb2Moc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9leHQ0L3N1cGVyLmMtMzU3MC17XG5mcy9leHQ0L3N1cGVyLmM6MzU3MTpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTM1NzItXHRleHQ0X2dyb3VwX3QgYmcsIGZpcnN0X21ldGFfYmc7XG4tLVxuZnMvZXh0NC9zdXBlci5jLTM2MDYtICovXG5mcy9leHQ0L3N1cGVyLmM6MzYwNzpzdGF0aWMgdW5zaWduZWQgbG9uZyBleHQ0X2dldF9zdHJpcGVfc2l6ZShzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkpXG5mcy9leHQ0L3N1cGVyLmMtMzYwOC17XG4tLVxuZnMvZXh0NC9zdXBlci5jPTM3MDU9dm9pZCBwcmludF9kYWlseV9lcnJvcl9pbmZvKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuZnMvZXh0NC9zdXBlci5jLTM3MDYte1xuZnMvZXh0NC9zdXBlci5jOjM3MDc6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSB0aW1lcl9jb250YWluZXJfb2Yoc2JpLCB0LCBzX2Vycl9yZXBvcnQpO1xuZnMvZXh0NC9zdXBlci5jLTM3MDgtXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gc2JpLVx1MDAzZXNfc2I7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTQwNTc9aW50IGV4dDRfcmVnaXN0ZXJfbGlfcmVxdWVzdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuLS1cbmZzL2V4dDQvc3VwZXIuYy00MDU5LXtcbmZzL2V4dDQvc3VwZXIuYzo0MDYwOlx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDA2MS1cdHN0cnVjdCBleHQ0X2xpX3JlcXVlc3QgKmVsciA9IE5VTEw7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTQxMzI9c3RhdGljIGludCBzZXRfam91cm5hbF9jc3VtX2ZlYXR1cmVfc2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTQxMzUtXHRpbnQgY29tcGF0LCBpbmNvbXBhdDtcbmZzL2V4dDQvc3VwZXIuYzo0MTM2Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDEzNy1cbi0tXG5mcy9leHQ0L3N1cGVyLmM9NDE4Nj1zdGF0aWMgaW50IGNvdW50X292ZXJoZWFkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGV4dDRfZ3JvdXBfdCBncnAsXG4tLVxuZnMvZXh0NC9zdXBlci5jLTQxODgte1xuZnMvZXh0NC9zdXBlci5jOjQxODk6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvXHQqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDE5MC1cdHN0cnVjdCBleHQ0X2dyb3VwX2Rlc2NcdCpnZHA7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTQyNDk9aW50IGV4dDRfY2FsY3VsYXRlX292ZXJoZWFkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9leHQ0L3N1cGVyLmMtNDI1MC17XG5mcy9leHQ0L3N1cGVyLmM6NDI1MTpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTQyNTItXHRzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMgPSBzYmktXHUwMDNlc19lcztcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NDMwOT1zdGF0aWMgdm9pZCBleHQ0X3NldF9yZXN2X2NsdXN0ZXJzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTQzMTEtXHRleHQ0X2ZzYmxrX3QgcmVzdl9jbHVzdGVycztcbmZzL2V4dDQvc3VwZXIuYzo0MzEyOlx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDMxMy1cbi0tXG5mcy9leHQ0L3N1cGVyLmM9NDM1ND1zdGF0aWMgdm9pZCBleHQ0X3NldHVwX2NzdW1fdHJpZ2dlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuLS1cbmZzL2V4dDQvc3VwZXIuYy00MzYxLXtcbmZzL2V4dDQvc3VwZXIuYzo0MzYyOlx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDM2My1cbi0tXG5mcy9leHQ0L3N1cGVyLmMtNDM2Ny1cbmZzL2V4dDQvc3VwZXIuYzo0MzY4OnN0YXRpYyB2b2lkIGV4dDRfZnJlZV9zYmkoc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpKVxuZnMvZXh0NC9zdXBlci5jLTQzNjkte1xuLS1cbmZzL2V4dDQvc3VwZXIuYy00Mzc3LVxuZnMvZXh0NC9zdXBlci5jOjQzNzg6c3RhdGljIHN0cnVjdCBleHQ0X3NiX2luZm8gKmV4dDRfYWxsb2Nfc2JpKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9leHQ0L3N1cGVyLmMtNDM3OS17XG5mcy9leHQ0L3N1cGVyLmM6NDM4MDpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaTtcbmZzL2V4dDQvc3VwZXIuYy00MzgxLVxuLS1cbmZzL2V4dDQvc3VwZXIuYz00NDYxPXN0YXRpYyBpbnQgZXh0NF9oYW5kbGVfY2x1c3RlcnNpemUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbmZzL2V4dDQvc3VwZXIuYy00NDYyLXtcbmZzL2V4dDQvc3VwZXIuYzo0NDYzOlx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDQ2NC1cdHN0cnVjdCBleHQ0X3N1cGVyX2Jsb2NrICplcyA9IHNiaS1cdTAwM2VzX2VzO1xuLS1cbmZzL2V4dDQvc3VwZXIuYz00NTIzPXN0YXRpYyB2b2lkIGV4dDRfYXRvbWljX3dyaXRlX2luaXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbmZzL2V4dDQvc3VwZXIuYy00NTI0LXtcbmZzL2V4dDQvc3VwZXIuYzo0NTI1Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDUyNi1cdHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYgPSBzYi1cdTAwM2VzX2JkZXY7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTQ1NDk9c3RhdGljIHZvaWQgZXh0NF9mYXN0X2NvbW1pdF9pbml0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9leHQ0L3N1cGVyLmMtNDU1MC17XG5mcy9leHQ0L3N1cGVyLmM6NDU1MTpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTQ1NTItXG4tLVxuZnMvZXh0NC9zdXBlci5jPTQ1NzQ9c3RhdGljIGludCBleHQ0X2lub2RlX2luZm9faW5pdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuLS1cbmZzL2V4dDQvc3VwZXIuYy00NTc2LXtcbmZzL2V4dDQvc3VwZXIuYzo0NTc3Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDU3OC1cbi0tXG5mcy9leHQ0L3N1cGVyLmM9NDY5ND1zdGF0aWMgaW50IGV4dDRfaW5pdF9tZXRhZGF0YV9jc3VtKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBleHQ0X3N1cGVyX2Jsb2NrICplcylcbmZzL2V4dDQvc3VwZXIuYy00Njk1LXtcbmZzL2V4dDQvc3VwZXIuYzo0Njk2Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDY5Ny1cbi0tXG5mcy9leHQ0L3N1cGVyLmM9NDczMD1zdGF0aWMgaW50IGV4dDRfY2hlY2tfZmVhdHVyZV9jb21wYXRpYmlsaXR5KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4tLVxuZnMvZXh0NC9zdXBlci5jLTQ3MzMte1xuZnMvZXh0NC9zdXBlci5jOjQ3MzQ6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy00NzM1LVxuLS1cbmZzL2V4dDQvc3VwZXIuYz00ODM0PXN0YXRpYyBpbnQgZXh0NF9jaGVja19nZW9tZXRyeShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuLS1cbmZzL2V4dDQvc3VwZXIuYy00ODM2LXtcbmZzL2V4dDQvc3VwZXIuYzo0ODM3Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNDgzOC1cdF9fdTY0IGJsb2Nrc19jb3VudDtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NDkxMz1zdGF0aWMgaW50IGV4dDRfZ3JvdXBfZGVzY19pbml0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4tLVxuZnMvZXh0NC9zdXBlci5jLTQ5MTcte1xuZnMvZXh0NC9zdXBlci5jOjQ5MTg6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy00OTE5LVx0dW5zaWduZWQgaW50IGRiX2NvdW50O1xuLS1cbmZzL2V4dDQvc3VwZXIuYz00OTczPXN0YXRpYyBpbnQgZXh0NF9sb2FkX2FuZF9pbml0X2pvdXJuYWwoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNDk3Ni17XG5mcy9leHQ0L3N1cGVyLmM6NDk3NzpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTQ5NzgtXHRpbnQgZXJyO1xuLS1cbmZzL2V4dDQvc3VwZXIuYz01MDkwPXN0YXRpYyBjb25zdCBjaGFyICpleHQ0X2hhc19qb3VybmFsX29wdGlvbihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuZnMvZXh0NC9zdXBlci5jLTUwOTEte1xuZnMvZXh0NC9zdXBlci5jOjUwOTI6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy01MDkzLVxuLS1cbmZzL2V4dDQvc3VwZXIuYz01MTE1PXN0YXRpYyB2b2lkIGV4dDRfc2V0X21heF9tYXBwaW5nX29yZGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9leHQ0L3N1cGVyLmMtNTExNi17XG5mcy9leHQ0L3N1cGVyLmM6NTExNzpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTUxMTgtXG4tLVxuZnMvZXh0NC9zdXBlci5jPTUxNDM9c3RhdGljIGludCBleHQ0X2xvYWRfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgZXh0NF9mc2Jsa190ICpsc2IsXG4tLVxuZnMvZXh0NC9zdXBlci5jLTUxNDUte1xuZnMvZXh0NC9zdXBlci5jOjUxNDY6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy01MTQ3LVx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzO1xuLS1cbmZzL2V4dDQvc3VwZXIuYz01MjUzPXN0YXRpYyBpbnQgZXh0NF9oYXNoX2luZm9faW5pdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuZnMvZXh0NC9zdXBlci5jLTUyNTQte1xuZnMvZXh0NC9zdXBlci5jOjUyNTU6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy01MjU2LVx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzID0gc2JpLVx1MDAzZXNfZXM7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTUyOTQ9c3RhdGljIGludCBleHQ0X2Jsb2NrX2dyb3VwX21ldGFfaW5pdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgc2lsZW50KVxuZnMvZXh0NC9zdXBlci5jLTUyOTUte1xuZnMvZXh0NC9zdXBlci5jOjUyOTY6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy01Mjk3LVx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzID0gc2JpLVx1MDAzZXNfZXM7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTUzNTA9c3RhdGljIGJvb2wgZXh0NF9pc19zdHJpcGVfaW5jb21wYXRpYmxlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgc3RyaXBlKVxuZnMvZXh0NC9zdXBlci5jLTUzNTEte1xuZnMvZXh0NC9zdXBlci5jOjUzNTI6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy01MzUzLVx0cmV0dXJuIChzdHJpcGUgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IHNiaS1cdTAwM2VzX2NsdXN0ZXJfcmF0aW8gXHUwMDNlIDEgXHUwMDI2XHUwMDI2XG4tLVxuZnMvZXh0NC9zdXBlci5jPTUzNTc9c3RhdGljIGludCBfX2V4dDRfZmlsbF9zdXBlcihzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTUzNTktXHRzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMgPSBOVUxMO1xuZnMvZXh0NC9zdXBlci5jOjUzNjA6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy01MzYxLVx0ZXh0NF9mc2Jsa190IGxvZ2ljYWxfc2JfYmxvY2s7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTU4MzU9c3RhdGljIGludCBleHQ0X2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuLS1cbmZzL2V4dDQvc3VwZXIuYy01ODM3LVx0c3RydWN0IGV4dDRfZnNfY29udGV4dCAqY3R4ID0gZmMtXHUwMDNlZnNfcHJpdmF0ZTtcbmZzL2V4dDQvc3VwZXIuYzo1ODM4Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpO1xuZnMvZXh0NC9zdXBlci5jLTU4MzktXHRjb25zdCBjaGFyICpkZXNjcjtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NTg5NT1zdGF0aWMgdm9pZCBleHQ0X2luaXRfam91cm5hbF9wYXJhbXMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgam91cm5hbF90ICpqb3VybmFsKVxuZnMvZXh0NC9zdXBlci5jLTU4OTYte1xuZnMvZXh0NC9zdXBlci5jOjU4OTc6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy01ODk4LVxuLS1cbmZzL2V4dDQvc3VwZXIuYz02MjUwPXN0YXRpYyB2b2lkIGV4dDRfdXBkYXRlX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9leHQ0L3N1cGVyLmMtNjI1MS17XG5mcy9leHQ0L3N1cGVyLmM6NjI1MjpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTYyNTMtXHRzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMgPSBzYmktXHUwMDNlc19lcztcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NjQ2ND1zdGF0aWMgaW50IGV4dDRfc3luY19mcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgd2FpdClcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNjQ2OC1cdGJvb2wgbmVlZHNfYmFycmllciA9IGZhbHNlO1xuZnMvZXh0NC9zdXBlci5jOjY0Njk6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy02NDcwLVxuLS1cbmZzL2V4dDQvc3VwZXIuYz02NTg2PXN0YXRpYyBpbnQgX19leHQ0X3JlbW91bnQoc3RydWN0IGZzX2NvbnRleHQgKmZjLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuLS1cbmZzL2V4dDQvc3VwZXIuYy02NTg5LVx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzO1xuZnMvZXh0NC9zdXBlci5jOjY1OTA6XHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcbmZzL2V4dDQvc3VwZXIuYy02NTkxLVx0dW5zaWduZWQgbG9uZyBvbGRfc2JfZmxhZ3M7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTY5ODY9c3RhdGljIGludCBleHQ0X3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTY5ODgtXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gZGVudHJ5LVx1MDAzZWRfc2I7XG5mcy9leHQ0L3N1cGVyLmM6Njk4OTpcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xuZnMvZXh0NC9zdXBlci5jLTY5OTAtXHRzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMgPSBzYmktXHUwMDNlc19lcztcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NzUyMj1zdGF0aWMgdm9pZCBleHQ0X2tpbGxfc2Ioc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbmZzL2V4dDQvc3VwZXIuYy03NTIzLXtcbmZzL2V4dDQvc3VwZXIuYzo3NTI0Olx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L3N1cGVyLmMtNzUyNS1cdHN0cnVjdCBmaWxlICpiZGV2X2ZpbGUgPSBzYmkgPyBzYmktXHUwMDNlc19qb3VybmFsX2JkZXZfZmlsZSA6IE5VTEw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDAyOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODE4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqRGl2aW5nIGludG8gdGhlIGV4dDQgU3VwZXJibG9jayBBbGxvY2F0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQmIzM5O3MgemVybyBpbiBvbiBgZXh0NF9hbGxvY19zYmlgLiBJIHJlbWVtYmVyIGhhdmluZyBhIHF1ZXN0aW9uIGFib3V0IGl0cyBoYW5kbGluZyBvZiBzdXBlcmJsb2NrIGluZm9ybWF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIG5hdmlnYXRlIGRpcmVjdGx5IHRvIGxpbmUgNDM3OCBpbiBgZnMvZXh0NC9zdXBlci5jYC4gVGhhdCBzaG91bGQgYmUgdGhlIHNwb3Qgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBhbGxvY2F0aW9uIG9mIHRoZSBzdXBlciBibG9jayBpbmZvcm1hdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBhbGxvY2F0aW9uIGlzIG1hbmFnZWQgd2l0aGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gc3RydWN0dXJlLiBIb3BlZnVsbHksIHRoZSBjb2RlIGNvbW1lbnRzIGFyZSBjbGVhciEgVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGdvaW5nIG9uIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2V4dDQvc3VwZXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQzNzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDM3NTpcdFx0a2ZyZWUoc2JpKTtcbjQzNzY6XHR9XG40Mzc3Olx0XG40Mzc4Olx0c3RhdGljIHN0cnVjdCBleHQ0X3NiX2luZm8gKmV4dDRfYWxsb2Nfc2JpKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG40Mzc5Olx0e1xuNDM4MDpcdFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpO1xuNDM4MTpcdFxuNDM4MjpcdFx0c2JpID0ga3phbGxvY19vYmooKnNiaSk7XG40MzgzOlx0XHRpZiAoIXNiaSlcbjQzODQ6XHRcdFx0cmV0dXJuIE5VTEw7XG40Mzg1Olx0XG40Mzg2Olx0XHRzYmktXHUwMDNlc19kYXhkZXYgPSBmc19kYXhfZ2V0X2J5X2JkZXYoc2ItXHUwMDNlc19iZGV2LCBcdTAwMjZzYmktXHUwMDNlc19kYXhfcGFydF9vZmYsXG40Mzg3Olx0XHRcdFx0XHRcdCAgIE5VTEwsIE5VTEwpO1xuNDM4ODpcdFxuNDM4OTpcdFx0c2JpLVx1MDAzZXNfYmxvY2tncm91cF9sb2NrID1cbjQzOTA6XHRcdFx0a3phbGxvY19vYmooc3RydWN0IGJsb2NrZ3JvdXBfbG9jayk7XG40MzkxOlx0XG40MzkyOlx0XHRpZiAoIXNiaS1cdTAwM2VzX2Jsb2NrZ3JvdXBfbG9jaylcbjQzOTM6XHRcdFx0Z290byBlcnJfb3V0O1xuNDM5NDpcdFxuNDM5NTpcdFx0c2ItXHUwMDNlc19mc19pbmZvID0gc2JpO1xuNDM5NjpcdFx0c2JpLVx1MDAzZXNfc2IgPSBzYjtcbjQzOTc6XHRcdHJldHVybiBzYmk7XG40Mzk4Olx0ZXJyX291dDpcbjQzOTk6XHRcdGZzX3B1dF9kYXgoc2JpLVx1MDAzZXNfZGF4ZGV2LCBOVUxMKTtcbjQ0MDA6XHRcdGtmcmVlKHNiaSk7XG40NDAxOlx0XHRyZXR1cm4gTlVMTDtcbjQ0MDI6XHR9XG40NDAzOlx0XG40NDA0Olx0c3RhdGljIHZvaWQgZXh0NF9zZXRfZGVmX29wdHMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbjQ0MDU6XHRcdFx0XHQgICAgICBzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMpXG40NDA2Olx0e1xuNDQwNzpcdFx0dW5zaWduZWQgbG9uZyBkZWZfbW91bnRfb3B0cztcbjQ0MDg6XHRcbjQ0MDk6XHRcdC8qIFNldCBkZWZhdWx0cyBiZWZvcmUgd2UgcGFyc2UgdGhlIG1vdW50IG9wdGlvbnMgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDI6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE1NDkKCQkJCQkJCW91dHB1dDogMTc0CgkJCQkJCQl0aG91Z2h0czogNTQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEV4dDQgT3JwaGFuIExvY2sgQWxpZ25tZW50IENoYW5nZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBzdHJhaWdodGZvcndhcmQ6IHdlJiMzOTtyZSBhZGRpbmcgYF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXBgIHRvIHRoZSBgc19vcnBoYW5fbG9ja2AgbXV0ZXggd2l0aGluIHRoZSBgZXh0NF9zYl9pbmZvYCBzdHJ1Y3QuIFRoZSBhbGxvY2F0aW9uIG9mIHRoaXMgc3RydWN0IGlzIGhhbmRsZWQgYnkgYGt6YWxsb2Nfb2JqKCpzYmkpYCwgZW5zdXJpbmcgemVybyBpbml0aWFsaXphdGlvbi4gSSYjMzk7dmUgY29uZmlybWVkIGJ5IGV4YW1pbmluZyB0aGUgZGlmZiB0aGF0IHRoaXMgaXMgdGhlICpvbmx5KiBtb2RpZmljYXRpb24gdG8gdGhhdCBzdHJ1Y3QuCgpNeSBhbmFseXNpcyBmb2N1c2VzIG9uIHdoZXRoZXIgdGhpcyBjaGFuZ2UgY291bGQgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMuICBUaGUga2V5IHBvaW50cyBJIGNvbnNpZGVyZWQgYXJlOiBgc3RydWN0IGV4dDRfc2JfaW5mb2AgaXMgYW4gaW50ZXJuYWwga2VybmVsIHN0cnVjdHVyZSwgbm90IGV4cG9zZWQgdG8gdXNlciBzcGFjZS4gV2UmIzM5O3JlICpyZWFsaWduaW5nKiBhIG11dGV4LCBub3QgaW50cm9kdWNpbmcgbmV3IHZhcmlhYmxlcyBvciBzdHJ1Y3RzLiAgYGt6YWxsb2Nfb2JqYCB6ZXJvZXMgdGhlIGVudGlyZSBtZW1vcnkgcmVnaW9uLiBUaGlzIG1lYW5zIHRoYXQgYWZ0ZXIgYWxsb2NhdGlvbiwgbm8gcGFydCBvZiB0aGUgc3RydWN0IGNvbnRhaW5zIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZSBhcmUgbm8gcmVhZHMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnksIG5vIG5ldyBicmFuY2hlcywgYW5kIG5vIGRhdGEgbGVuZ3RoIG1hbmlwdWxhdGlvbiB0aGF0IGNvdWxkIGxlYWQgdG8gYSB2dWxuZXJhYmlsaXR5LiAgVGhpcyBjaGFuZ2Ugb25seSBjb25jZXJucyBjYWNoZWxpbmUgYWxpZ25tZW50IGluIFNNUCBrZXJuZWxzLgoKVGhlcmVmb3JlLCBiZWNhdXNlIHRoaXMgY2hhbmdlIHNvbGVseSBhZmZlY3RzIHRoZSBhbGlnbm1lbnQgb2YgYW4gYWxyZWFkeSBpbml0aWFsaXplZCBtdXRleCB3aXRoaW4gYW4gaW50ZXJuYWwgc3RydWN0dXJlLCBpdCBkb2VzbiYjMzk7dCBjcmVhdGUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiAgR2l2ZW4gdGhpcyBhbmFseXNpcywgcnVubmluZyBhIEtNU0FOIHNlc3Npb24gaXNuJiMzOTt0IG5lY2Vzc2FyeS4gS0FTQU4gd291bGQgYWxzbyBub3QgdHJpZ2dlciBoZXJlLCBhcyB3ZSBoYXZlIGFscmVhZHkgZW5zdXJlZCB6ZXJvZWQgYWxsb2NhdGlvbi4KCk5vdywgbGV0IG1lIGVuc3VyZSBJJiMzOTt2ZSBhZGRyZXNzZWQgYWxsIHJlcXVpcmVtZW50cy4gSSYjMzk7dmUgYW5hbHl6ZWQgdGhlIGNvZGUsIGNvbnNpZGVyZWQgdGhlIGltcGxpY2F0aW9ucywgYW5kIGNvbmNsdWRlZCB0aGF0IEtNU0FOIGlzIG5vdCBuZWNlc3NhcnksIGFzIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZC4gIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHRoZSAmIzM5O19fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXAmIzM5OyBhdHRyaWJ1dGUgdG8gdGhlICYjMzk7c19vcnBoYW5fbG9jayYjMzk7IG11dGV4IGluICYjMzk7c3RydWN0IGV4dDRfc2JfaW5mbyYjMzk7IHRvIGFsaWduIGl0IHRvIGEgY2FjaGVsaW5lIGluIFNNUCBjb25maWd1cmF0aW9ucyBhbmQgcmVkdWNlIGZhbHNlIHNoYXJpbmcuXG5cbiYjMzk7c3RydWN0IGV4dDRfc2JfaW5mbyYjMzk7IGlzIGFuIGludGVybmFsIHN1cGVyYmxvY2sgc3RhdGUgc3RydWN0dXJlIGFsbG9jYXRlZCB1c2luZyBremFsbG9jX29iaigpIGluIGV4dDRfYWxsb2Nfc2JpKCksIG1lYW5pbmcgYWxsIGZpZWxkcyBhbmQgYW55IGFsaWdubWVudCBwYWRkaW5nIGFyZSB6ZXJvLWluaXRpYWxpemVkIHVwb24gYWxsb2NhdGlvbi4gVGhlIHN0cnVjdHVyZSBpcyBuZXZlciBjb3BpZWQgdG8gdXNlcnNwYWNlLCBub3IgZG9lcyB0aGlzIGFsaWdubWVudCBhZGp1c3RtZW50IGFsdGVyIGNvbnRyb2wgZmxvdywgbGVuZ3RoIGNhbGN1bGF0aW9ucywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgaGFuZGxpbmcuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdGhlICYjMzk7X19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcCYjMzk7IGF0dHJpYnV0ZSB0byB0aGUgJiMzOTtzX29ycGhhbl9sb2NrJiMzOTsgbXV0ZXggaW4gJiMzOTtzdHJ1Y3QgZXh0NF9zYl9pbmZvJiMzOTsgdG8gYWxpZ24gaXQgdG8gYSBjYWNoZWxpbmUgaW4gU01QIGNvbmZpZ3VyYXRpb25zIGFuZCByZWR1Y2UgZmFsc2Ugc2hhcmluZy5cblxuJiMzOTtzdHJ1Y3QgZXh0NF9zYl9pbmZvJiMzOTsgaXMgYW4gaW50ZXJuYWwgc3VwZXJibG9jayBzdGF0ZSBzdHJ1Y3R1cmUgYWxsb2NhdGVkIHVzaW5nIGt6YWxsb2Nfb2JqKCkgaW4gZXh0NF9hbGxvY19zYmkoKSwgbWVhbmluZyBhbGwgZmllbGRzIGFuZCBhbnkgYWxpZ25tZW50IHBhZGRpbmcgYXJlIHplcm8taW5pdGlhbGl6ZWQgdXBvbiBhbGxvY2F0aW9uLiBUaGUgc3RydWN0dXJlIGlzIG5ldmVyIGNvcGllZCB0byB1c2Vyc3BhY2UsIG5vciBkb2VzIHRoaXMgYWxpZ25tZW50IGFkanVzdG1lbnQgYWx0ZXIgY29udHJvbCBmbG93LCBsZW5ndGggY2FsY3VsYXRpb25zLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSBoYW5kbGluZy4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNjo1MS4xNDkwNDkzMzlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjQyMDUxNDUzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCIsXG4gICAgXCJTTVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X29ycGhhbl9hZGRcIixcbiAgICBcImV4dDRfb3JwaGFuX2RlbFwiLFxuICAgIFwiX19leHQ0X2ZpbGxfc3VwZXJcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdGhlICdfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wJyBhdHRyaWJ1dGUgdG8gdGhlICdzX29ycGhhbl9sb2NrJyBtdXRleCBpbiAnc3RydWN0IGV4dDRfc2JfaW5mbycgdG8gYWxpZ24gaXQgdG8gYSBjYWNoZWxpbmUgaW4gU01QIGNvbmZpZ3VyYXRpb25zIGFuZCByZWR1Y2UgZmFsc2Ugc2hhcmluZy5cXG5cXG4nc3RydWN0IGV4dDRfc2JfaW5mbycgaXMgYW4gaW50ZXJuYWwgc3VwZXJibG9jayBzdGF0ZSBzdHJ1Y3R1cmUgYWxsb2NhdGVkIHVzaW5nIGt6YWxsb2Nfb2JqKCkgaW4gZXh0NF9hbGxvY19zYmkoKSwgbWVhbmluZyBhbGwgZmllbGRzIGFuZCBhbnkgYWxpZ25tZW50IHBhZGRpbmcgYXJlIHplcm8taW5pdGlhbGl6ZWQgdXBvbiBhbGxvY2F0aW9uLiBUaGUgc3RydWN0dXJlIGlzIG5ldmVyIGNvcGllZCB0byB1c2Vyc3BhY2UsIG5vciBkb2VzIHRoaXMgYWxpZ25tZW50IGFkanVzdG1lbnQgYWx0ZXIgY29udHJvbCBmbG93LCBsZW5ndGggY2FsY3VsYXRpb25zLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSBoYW5kbGluZy4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHN0cnVjdCBleHQ0X3NiX2luZm8gdG8gY2FjaGVsaW5lLWFsaWduIHRoZSBzX29ycGhhbl9sb2NrIG11dGV4IGluIFNNUCBjb25maWd1cmF0aW9ucy4gVGhpcyBhbHRlcnMgZGF0YSBzdHJ1Y3R1cmUgbGF5b3V0IGFuZCBzeW5jaHJvbml6YXRpb24gYmVoYXZpb3IgaW4gdGhlIGV4dDQgZmlsZXN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBzdWl0YWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDI6MzY6NTEuMTQ5MDU0NDg5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjY2NDY5ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxM2U0MjdjODc0ZTBhM2E4ZjI5YzZjNmM4OTBkNTc0ZjBiMjljZWIwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDQgMDI6MzY6NTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHQ0LmggYi9mcy9leHQ0L2V4dDQuaFxcbmluZGV4IDcyNGEyN2U4YmU2MTMuLmEzZjE2YTk4MTY2NDYgMTAwNjQ0XFxuLS0tIGEvZnMvZXh0NC9leHQ0LmhcXG4rKysgYi9mcy9leHQ0L2V4dDQuaFxcbkBAIC0xNjQ0LDcgKzE2NDQsNyBAQCBzdHJ1Y3QgZXh0NF9zYl9pbmZvIHtcXG4gXFx0LyogSm91cm5hbGluZyAqL1xcbiBcXHRzdHJ1Y3Qgam91cm5hbF9zICpzX2pvdXJuYWw7XFxuIFxcdHVuc2lnbmVkIGxvbmcgc19leHQ0X2ZsYWdzO1xcdFxcdC8qIEV4dDQgc3VwZXJibG9jayBmbGFncyAqL1xcbi1cXHRzdHJ1Y3QgbXV0ZXggc19vcnBoYW5fbG9jaztcXHQvKiBQcm90ZWN0cyBvbiBkaXNrIGxpc3QgY2hhbmdlcyAqL1xcbitcXHRzdHJ1Y3QgbXV0ZXggc19vcnBoYW5fbG9jayBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wO1xcbiBcXHRzdHJ1Y3QgbGlzdF9oZWFkIHNfb3JwaGFuO1xcdC8qIExpc3Qgb2Ygb3JwaGFuZWQgaW5vZGVzIGluIG9uIGRpc2tcXG4gXFx0XFx0XFx0XFx0XFx0ICAgbGlzdCAqL1xcbiBcXHRzdHJ1Y3QgZXh0NF9vcnBoYW5faW5mbyBzX29ycGhhbl9pbmZvO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNjo1MS41NzYzNzg3ODZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjIwNzc3Nzk1NDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIixcbiAgICBcIlNNUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfb3JwaGFuX2FkZFwiLFxuICAgIFwiZXh0NF9vcnBoYW5fZGVsXCIsXG4gICAgXCJfX2V4dDRfZmlsbF9zdXBlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHN0cnVjdCBleHQ0X3NiX2luZm8gdG8gY2FjaGVsaW5lLWFsaWduIHRoZSBzX29ycGhhbl9sb2NrIG11dGV4IGluIFNNUCBjb25maWd1cmF0aW9ucy4gVGhpcyBhbHRlcnMgZGF0YSBzdHJ1Y3R1cmUgbGF5b3V0IGFuZCBzeW5jaHJvbml6YXRpb24gYmVoYXZpb3IgaW4gdGhlIGV4dDQgZmlsZXN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBzdWl0YWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxM2U0MjdjODc0ZTBhM2E4ZjI5YzZjNmM4OTBkNTc0ZjBiMjljZWIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAwMjozNjo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvZXh0NC5oIGIvZnMvZXh0NC9leHQ0LmhcbmluZGV4IDcyNGEyN2U4YmU2MTMuLmEzZjE2YTk4MTY2NDYgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L2V4dDQuaFxuKysrIGIvZnMvZXh0NC9leHQ0LmhcbkBAIC0xNjQ0LDcgKzE2NDQsNyBAQCBzdHJ1Y3QgZXh0NF9zYl9pbmZvIHtcbiBcdC8qIEpvdXJuYWxpbmcgKi9cbiBcdHN0cnVjdCBqb3VybmFsX3MgKnNfam91cm5hbDtcbiBcdHVuc2lnbmVkIGxvbmcgc19leHQ0X2ZsYWdzO1x0XHQvKiBFeHQ0IHN1cGVyYmxvY2sgZmxhZ3MgKi9cbi1cdHN0cnVjdCBtdXRleCBzX29ycGhhbl9sb2NrO1x0LyogUHJvdGVjdHMgb24gZGlzayBsaXN0IGNoYW5nZXMgKi9cbitcdHN0cnVjdCBtdXRleCBzX29ycGhhbl9sb2NrIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHNfb3JwaGFuO1x0LyogTGlzdCBvZiBvcnBoYW5lZCBpbm9kZXMgaW4gb24gZGlza1xuIFx0XHRcdFx0XHQgICBsaXN0ICovXG4gXHRzdHJ1Y3QgZXh0NF9vcnBoYW5faW5mbyBzX29ycGhhbl9pbmZvO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDI6MzY6NTEuNTc2MzgwNDc2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjEwOTY2MjI2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDYWNoZWxpbmUgQWxpZ25tZW50IFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGluIGBmcy9leHQ0L2V4dDQuaGAgaXMgbW9kaWZ5aW5nIHRoZSBgc3RydWN0IGV4dDRfc2JfaW5mb2Agd2l0aGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gY29kZS4gU3BlY2lmaWNhbGx5LCBpdCdzIGFkZGluZyBgX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcGAgdG8gdGhlIGBzX29ycGhhbl9sb2NrYCBtdXRleCBkZWNsYXJhdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBqdXN0IGEgY29zbWV0aWMgY2hhbmdlIG9yIGlmIGl0IGFmZmVjdHMgdGhlIGRhdGEgc3RydWN0dXJlIGxheW91dCBvciBleGVjdXRhYmxlIGNvZGUuXG5cbk5vdywgbGV0J3MgY2FyZWZ1bGx5IHJldmlldyB0aGUgZnV6emluZyBjcml0ZXJpYS4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGlzIGNoYW5nZSB0cmlnZ2VycyB0aGUgZnV6emluZyBwcm9jZXNzLiBBY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucywgY2hhbmdlcyB0aGF0IGFyZSBcInJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlc1wiIGFyZSBvZiBpbnRlcmVzdC4gVGhlIGBleHQ0X3NiX2luZm9gIGlzICpkZWZpbml0ZWx5KiBhIGNvcmUgZGF0YSBzdHJ1Y3R1cmUsIGludGltYXRlbHkgaW52b2x2ZWQgaW4gdGhlIGZpbGVzeXN0ZW0gb3BlcmF0aW9uLiBBZGRpbmcgYF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXBgICpoYXMqIHRvIGFsdGVyIHRoZSBsYXlvdXQuIEFsaWdubWVudCBkaXJlY3RpdmVzIGFyZSBhbGwgYWJvdXQgcGFkZGluZyBhbmQgcGxhY2VtZW50IHdpdGhpbiB0aGUgc3RydWN0LCByaWdodD8gQ2hhbmdpbmcgYHNfb3JwaGFuX2xvY2tgJ3MgYWxpZ25tZW50IHdpdGhpbiBgc3RydWN0IGV4dDRfc2JfaW5mb2AgdW5kb3VidGVkbHkgY2hhbmdlcyB0aGUgc3RydWN0J3MgbGF5b3V0LlxuXG5GdXJ0aGVybW9yZSwgSSBoYXZlIHRvIGVuc3VyZSB0aGF0IGV4dDQgaXMgcmVhY2hhYmxlLiBHaXZlbiB0aGF0IGV4dDQgaXMgYSBzdGFuZGFyZCBmaWxlc3lzdGVtLCBhbmQgSSBjYW4gZWFzaWx5IG1vdW50IGFuIGV4dDQgaW1hZ2Ugb3IgZnV6eiB0aHJvdWdoIHN5c2NhbGxzIGluIFFFTVUgb3IgR0NFLCBpdCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZS5cblxuR2l2ZW4gdGhlc2UgcG9pbnRzLCB0aGlzIHBhdGNoIGxvb2tzIGxpa2UgaXQgZG9lcyB0cmlnZ2VyIHRoZSBmdXp6aW5nIHByb2Nlc3MuIEl0IHJlc3RydWN0dXJlcyBhIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZSB3aXRoaW4gYSBjb3JlIGZpbGVzeXN0ZW0gY29tcG9uZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODk4LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDI6MzY6NTcuNjg2MDQ1Njg3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwMDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL2V4dDQvZXh0NC5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2MzUsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE2MzU6XFx0XFx0c3RydWN0IHBlcmNwdV9jb3VudGVyIHNfc3JhX2V4Y2VlZGVkX3JldHJ5X2xpbWl0O1xcbjE2MzY6XFx0XFx0c3RydWN0IGJsb2NrZ3JvdXBfbG9jayAqc19ibG9ja2dyb3VwX2xvY2s7XFxuMTYzNzpcXHRcXHRzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnNfcHJvYztcXG4xNjM4OlxcdFxcdHN0cnVjdCBrb2JqZWN0IHNfa29iajtcXG4xNjM5OlxcdFxcdHN0cnVjdCBjb21wbGV0aW9uIHNfa29ial91bnJlZ2lzdGVyO1xcbjE2NDA6XFx0XFx0c3RydWN0IG11dGV4IHNfZXJyb3Jfbm90aWZ5X211dGV4OyAvKiBwcm90ZWN0cyBzeXNmc19ub3RpZnkgdnMga29iamVjdF9kZWwgKi9cXG4xNjQxOlxcdFxcdHN0cnVjdCBzdXBlcl9ibG9jayAqc19zYjtcXG4xNjQyOlxcdFxcdHN0cnVjdCBidWZmZXJfaGVhZCAqc19tbXBfYmg7XFxuMTY0MzpcXHRcXG4xNjQ0OlxcdFxcdC8qIEpvdXJuYWxpbmcgKi9cXG4xNjQ1OlxcdFxcdHN0cnVjdCBqb3VybmFsX3MgKnNfam91cm5hbDtcXG4xNjQ2OlxcdFxcdHVuc2lnbmVkIGxvbmcgc19leHQ0X2ZsYWdzO1xcdFxcdC8qIEV4dDQgc3VwZXJibG9jayBmbGFncyAqL1xcbjE2NDc6XFx0XFx0c3RydWN0IG11dGV4IHNfb3JwaGFuX2xvY2sgX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcXG4xNjQ4OlxcdFxcdHN0cnVjdCBsaXN0X2hlYWQgc19vcnBoYW47XFx0LyogTGlzdCBvZiBvcnBoYW5lZCBpbm9kZXMgaW4gb24gZGlza1xcbjE2NDk6XFx0XFx0XFx0XFx0XFx0XFx0ICAgbGlzdCAqL1xcbjE2NTA6XFx0XFx0c3RydWN0IGV4dDRfb3JwaGFuX2luZm8gc19vcnBoYW5faW5mbztcXG4xNjUxOlxcdFxcdHVuc2lnbmVkIGxvbmcgc19jb21taXRfaW50ZXJ2YWw7XFxuMTY1MjpcXHRcXHR1MzIgc19tYXhfYmF0Y2hfdGltZTtcXG4xNjUzOlxcdFxcdHUzMiBzX21pbl9iYXRjaF90aW1lO1xcbjE2NTQ6XFx0XFx0c3RydWN0IGZpbGUgKnNfam91cm5hbF9iZGV2X2ZpbGU7XFxuMTY1NTpcXHQjaWZkZWYgQ09ORklHX1FVT1RBXFxuMTY1NjpcXHRcXHQvKiBOYW1lcyBvZiBxdW90YSBmaWxlcyB3aXRoIGpvdXJuYWxsZWQgcXVvdGEgKi9cXG4xNjU3OlxcdFxcdGNoYXIgX19yY3UgKnNfcWZfbmFtZXNbRVhUNF9NQVhRVU9UQVNdO1xcbjE2NTg6XFx0XFx0aW50IHNfanF1b3RhX2ZtdDtcXHRcXHRcXHQvKiBGb3JtYXQgb2YgcXVvdGEgdG8gdXNlICovXFxuMTY1OTpcXHQjZW5kaWZcXG4xNjYwOlxcdFxcdHVuc2lnbmVkIGludCBzX3dhbnRfZXh0cmFfaXNpemU7IC8qIE5ldyBpbm9kZXMgc2hvdWxkIHJlc2VydmUgIyBieXRlcyAqL1xcbjE2NjE6XFx0XFx0c3RydWN0IGV4dDRfc3lzdGVtX2Jsb2NrcyBfX3JjdSAqc19zeXN0ZW1fYmxrcztcXG4xNjYyOlxcdFxcbjE2NjM6XFx0I2lmZGVmIEVYVEVOVFNfU1RBVFNcXG4xNjY0OlxcdFxcdC8qIGV4dDQgZXh0ZW50cyBzdGF0cyAqL1xcbjE2NjU6XFx0XFx0dW5zaWduZWQgbG9uZyBzX2V4dF9taW47XFxuMTY2NjpcXHRcXHR1bnNpZ25lZCBsb25nIHNfZXh0X21heDtcXG4xNjY3OlxcdFxcdHVuc2lnbmVkIGxvbmcgc19kZXB0aF9tYXg7XFxuMTY2ODpcXHRcXHRzcGlubG9ja190IHNfZXh0X3N0YXRzX2xvY2s7XFxuMTY2OTpcXHRcXHR1bnNpZ25lZCBsb25nIHNfZXh0X2Jsb2NrcztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDI6MzY6NTcuNjg2MjM4NTQ3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzU5MzU3NzkyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGUgZXh0NCBjb2RlYmFzZTpcblxuKipBbmFseXppbmcgYHNfb3JwaGFuX2xvY2tgIFVzYWdlIGluIGV4dDQqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcm9sZSBvZiBgc19vcnBoYW5fbG9ja2Agd2l0aGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0uIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIGdldCBhIGJyb2FkIHBpY3R1cmUgb2Ygd2hlcmUgdGhpcyBzcGlubG9jayBpcyBhY3RpdmVseSBlbXBsb3llZC4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGp1c3QgbG9va2luZyBmb3IgaXRzIHVzYWdlIGFjcm9zcyB0aGUgZW50aXJlIGV4dDQgc291cmNlIHRyZWUuIEknbGwgcHJvYmFibHkgc3RhcnQgd2l0aCBhIHNpbXBsZSBgZ3JlcGAgb3IgYGZpbmRgIGNvbW1hbmQgdG8gbG9jYXRlIGFsbCBpbnN0YW5jZXMgb2YgdGhlIHZhcmlhYmxlIGl0c2VsZiwgYHNfb3JwaGFuX2xvY2tgLCBub3QganVzdCB0aGUgZGVmaW5pdGlvbiwgYnV0IGV2ZXJ5d2hlcmUgaXQncyAqdXNlZCog4oCTIHJlYWQsIHdyaXR0ZW4sIHRha2VuLCByZWxlYXNlZC5cblxuT25jZSBJIGhhdmUgYSBsaXN0IG9mIGNhbGwgc2l0ZXMsIEknbGwgbmVlZCB0byBzb3J0IGFuZCBvcmdhbml6ZSB0aGVtLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBmdW5jdGlvbnMgYXJlIG1vc3QgaW1wb3J0YW50LiBXaGljaCBmdW5jdGlvbnMgYXJlIG1vc3QgZnJlcXVlbnRseSBleGVjdXRlZD8gV2hpY2ggYXJlIGxpa2VseSBjcml0aWNhbCB0byBpbnRlZ3JpdHk/IEknbGwgcHJvYmFibHkgZ3JvdXAgdGhlbSBieSByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuIElzIGl0IG1vc3RseSByZWxhdGVkIHRvIGlub2RlIG9wZXJhdGlvbnM/IE9ycGhhbiBpbm9kZSBsaXN0cz8gSm91cm5hbGluZz8gSSBuZWVkIHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB0aGUgbG9jaydzIHNjb3BlLlxuXG5OZXh0LCBJJ2xsIGRyaWxsIGRvd24gaW50byB0aGUgY29udGV4dCBvZiBlYWNoIHVzYWdlLiBGb3IgZWFjaCBvY2N1cnJlbmNlLCBJIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlLiBXaGF0IG9wZXJhdGlvbnMgYXJlIHByb3RlY3RlZCBieSB0aGlzIGxvY2s/IFdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBndWFyZGVkPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgdGhhdCB0aGlzIGxvY2sgaXMgZGVzaWduZWQgdG8gcHJldmVudD8gV2hhdCdzIHRoZSBsb2NrIGhpZXJhcmNoeT8gQXJlIHRoZXJlIGFueSBvdGhlciBsb2NrcyBiZWluZyBoZWxkIGNvbmN1cnJlbnRseT8gVW5kZXJzdGFuZGluZyB0aGUgbG9ja2luZyBvcmRlciBpcyBwYXJhbW91bnQsIHNvIEkgZG9uJ3QgaW50cm9kdWNlIGRlYWRsb2Nrcy4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIGxvY2sgaXMgYWNxdWlyZWQgKGUuZy4sIGBzcGluX2xvY2tfaXJxc2F2ZWAsIGBzcGluX2xvY2tgKSBhbmQgaG93IGl0J3MgcmVsZWFzZWQgKGUuZy4sIGBzcGluX3VubG9ja19pcnFyZXN0b3JlYCwgYHNwaW5fdW5sb2NrYCkuXG5cblVsdGltYXRlbHksIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSAqcmVhc29uKiBmb3IgdGhpcyBsb2NrLiBXaGF0IGlzIGl0IHN5bmNocm9uaXppbmc/IElzIGl0IGd1YXJkaW5nIGEgY3JpdGljYWwgc2VjdGlvbiByZWxhdGVkIHRvIG9ycGhhbiBpbm9kZXMsIGVuc3VyaW5nIGRhdGEgY29uc2lzdGVuY3ksIHByZXZlbnRpbmcgZG91YmxlIGZyZWVpbmcsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBBIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHB1cnBvc2UgaXMgY3JpdGljYWwgaWYgSSBpbnRlbmQgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoZSBjb2RlIHRoYXQgaW50ZXJhY3RzIHdpdGggaXQsIG9yIG9wdGltaXplIGl0LiBEZXBlbmRpbmcgb24gaG93IGRlZXAgSSBuZWVkIHRvIGdvLCBJIG1heSBzdGFydCBsb29raW5nIGF0IHJlbGF0ZWQgc3RydWN0dXJlcyBhbmQgdGhlIGxhcmdlciBzeXN0ZW0gZGVzaWduLiBJIG1heSBleGFtaW5lIHRoZSBqb3VybmFsaW5nIG9wZXJhdGlvbnMgb3IgdGhlIHdheSBpbm9kZSBkYXRhIGFyZSBmbHVzaGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjQwLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNzowMS4yNzk4MTk2MjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY2NjYwMzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic19vcnBoYW5fbG9ja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvZXh0NC5oPTE1OTI9c3RydWN0IGV4dDRfc2JfaW5mbyB7XFxuLS1cXG5mcy9leHQ0L2V4dDQuaC0xNjQ2LVxcdHVuc2lnbmVkIGxvbmcgc19leHQ0X2ZsYWdzO1xcdFxcdC8qIEV4dDQgc3VwZXJibG9jayBmbGFncyAqL1xcbmZzL2V4dDQvZXh0NC5oOjE2NDc6XFx0c3RydWN0IG11dGV4IHNfb3JwaGFuX2xvY2sgX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcXG5mcy9leHQ0L2V4dDQuaC0xNjQ4LVxcdHN0cnVjdCBsaXN0X2hlYWQgc19vcnBoYW47XFx0LyogTGlzdCBvZiBvcnBoYW5lZCBpbm9kZXMgaW4gb24gZGlza1xcbi0tXFxuZnMvZXh0NC9vcnBoYW4uYz0xMDI9aW50IGV4dDRfb3JwaGFuX2FkZChoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKVxcbi0tXFxuZnMvZXh0NC9vcnBoYW4uYy0xNDYtXFxuZnMvZXh0NC9vcnBoYW4uYzoxNDc6XFx0bXV0ZXhfbG9jayhcXHUwMDI2c2JpLVxcdTAwM2VzX29ycGhhbl9sb2NrKTtcXG5mcy9leHQ0L29ycGhhbi5jLTE0OC1cXHQvKlxcbi0tXFxuZnMvZXh0NC9vcnBoYW4uYy0xNjItXFx0bGlzdF9hZGQoXFx1MDAyNkVYVDRfSShpbm9kZSktXFx1MDAzZWlfb3JwaGFuLCBcXHUwMDI2c2JpLVxcdTAwM2VzX29ycGhhbik7XFxuZnMvZXh0NC9vcnBoYW4uYzoxNjM6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzYmktXFx1MDAzZXNfb3JwaGFuX2xvY2spO1xcbmZzL2V4dDQvb3JwaGFuLmMtMTY0LVxcbi0tXFxuZnMvZXh0NC9vcnBoYW4uYy0xNzUtXFx0XFx0XFx0ICovXFxuZnMvZXh0NC9vcnBoYW4uYzoxNzY6XFx0XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2c2JpLVxcdTAwM2VzX29ycGhhbl9sb2NrKTtcXG5mcy9leHQ0L29ycGhhbi5jLTE3Ny1cXHRcXHRcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZFWFQ0X0koaW5vZGUpLVxcdTAwM2VpX29ycGhhbik7XFxuZnMvZXh0NC9vcnBoYW4uYzoxNzg6XFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzYmktXFx1MDAzZXNfb3JwaGFuX2xvY2spO1xcbmZzL2V4dDQvb3JwaGFuLmMtMTc5LVxcdFxcdH1cXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmM9MjI2PWludCBleHQ0X29ycGhhbl9kZWwoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSlcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtMjQyLVxcbmZzL2V4dDQvb3JwaGFuLmM6MjQzOlxcdC8qIERvIHRoaXMgcXVpY2sgY2hlY2sgYmVmb3JlIHRha2luZyBnbG9iYWwgc19vcnBoYW5fbG9jay4gKi9cXG5mcy9leHQ0L29ycGhhbi5jLTI0NC1cXHRpZiAobGlzdF9lbXB0eShcXHUwMDI2ZWktXFx1MDAzZWlfb3JwaGFuKSlcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtMjQ3LVxcdGlmIChoYW5kbGUpIHtcXG5mcy9leHQ0L29ycGhhbi5jOjI0ODpcXHRcXHQvKiBHcmFiIGlub2RlIGJ1ZmZlciBlYXJseSBiZWZvcmUgdGFraW5nIGdsb2JhbCBzX29ycGhhbl9sb2NrICovXFxuZnMvZXh0NC9vcnBoYW4uYy0yNDktXFx0XFx0ZXJyID0gZXh0NF9yZXNlcnZlX2lub2RlX3dyaXRlKGhhbmRsZSwgaW5vZGUsIFxcdTAwMjZpbG9jKTtcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtMjUxLVxcbmZzL2V4dDQvb3JwaGFuLmM6MjUyOlxcdG11dGV4X2xvY2soXFx1MDAyNnNiaS1cXHUwMDNlc19vcnBoYW5fbG9jayk7XFxuZnMvZXh0NC9vcnBoYW4uYy0yNTMtXFx0ZXh0NF9kZWJ1ZyhcXFwicmVtb3ZlIGlub2RlICVsbHUgZnJvbSBvcnBoYW4gbGlzdFxcXFxuXFxcIiwgaW5vZGUtXFx1MDAzZWlfaW5vKTtcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtMjYyLVxcdGlmICghaGFuZGxlIHx8IGVycikge1xcbmZzL2V4dDQvb3JwaGFuLmM6MjYzOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2c2JpLVxcdTAwM2VzX29ycGhhbl9sb2NrKTtcXG5mcy9leHQ0L29ycGhhbi5jLTI2NC1cXHRcXHRnb3RvIG91dF9lcnI7XFxuLS1cXG5mcy9leHQ0L29ycGhhbi5jLTI3My1cXHRcXHRpZiAoZXJyKSB7XFxuZnMvZXh0NC9vcnBoYW4uYzoyNzQ6XFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzYmktXFx1MDAzZXNfb3JwaGFuX2xvY2spO1xcbmZzL2V4dDQvb3JwaGFuLmMtMjc1LVxcdFxcdFxcdGdvdG8gb3V0X2JyZWxzZTtcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtMjgwLVxcdFxcdHVubG9ja19idWZmZXIoc2JpLVxcdTAwM2VzX3NiaCk7XFxuZnMvZXh0NC9vcnBoYW4uYzoyODE6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzYmktXFx1MDAzZXNfb3JwaGFuX2xvY2spO1xcbmZzL2V4dDQvb3JwaGFuLmMtMjgyLVxcdFxcdGVyciA9IGV4dDRfaGFuZGxlX2RpcnR5X21ldGFkYXRhKGhhbmRsZSwgTlVMTCwgc2JpLVxcdTAwM2VzX3NiaCk7XFxuLS1cXG5mcy9leHQ0L29ycGhhbi5jLTI5MS1cXHRcXHRpZiAoZXJyKSB7XFxuZnMvZXh0NC9vcnBoYW4uYzoyOTI6XFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzYmktXFx1MDAzZXNfb3JwaGFuX2xvY2spO1xcbmZzL2V4dDQvb3JwaGFuLmMtMjkzLVxcdFxcdFxcdGdvdG8gb3V0X2JyZWxzZTtcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtMjk2LVxcdFxcdGVyciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaV9wcmV2LCBcXHUwMDI2aWxvYzIpO1xcbmZzL2V4dDQvb3JwaGFuLmM6Mjk3OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2c2JpLVxcdTAwM2VzX29ycGhhbl9sb2NrKTtcXG5mcy9leHQ0L29ycGhhbi5jLTI5OC1cXHR9XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NTM1Nz1zdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy01NTA1LVxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZzYmktXFx1MDAzZXNfb3JwaGFuKTsgLyogdW5saW5rZWQgYnV0IG9wZW4gZmlsZXMgKi9cXG5mcy9leHQ0L3N1cGVyLmM6NTUwNjpcXHRtdXRleF9pbml0KFxcdTAwMjZzYmktXFx1MDAzZXNfb3JwaGFuX2xvY2spO1xcbmZzL2V4dDQvc3VwZXIuYy01NTA3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNzowMS4zMjY0OTM2NzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTA0NjA0MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgT3JwaGFuIExvY2sgaW4gZXh0NCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYHNfb3JwaGFuX2xvY2tgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUgYW5kIGhvdyBpdCdzIGJlaW5nIHV0aWxpemVkIHdpdGhpbiB0aGUgZXh0NCBmaWxlc3lzdGVtIGNvZGUuIFJpZ2h0IG5vdywgSSBzZWUgaXQncyBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aHJlZSBrZXkgYXJlYXM6IGBleHQ0X29ycGhhbl9hZGRgLCBgZXh0NF9vcnBoYW5fZGVsYCwgYW5kIHRoZSBzdXBlciBibG9jayBpbml0aWFsaXphdGlvbiwgd2hpY2ggbWlnaHQgYmUgYF9fZXh0NF9maWxsX3N1cGVyYCBvciBwZXJoYXBzIGp1c3QgYGV4dDRfZmlsbF9zdXBlcmAuIFRoYXQgZ2l2ZXMgbWUgYSBmcmFtZXdvcmsuXG5cbk5vdywgSSB3YW50IHRvIGdhaW4gbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udGV4dCB0aGF0IGNvbnRyb2xzIHRoaXMuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUga2VybmVsJ3MgS2NvbmZpZyBzZXR0aW5ncyBmb3IgZXh0NC4gSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGluZmx1ZW5jZSBob3cgdGhpcyBsb2NraW5nIG1lY2hhbmlzbSBpcyBoYW5kbGVkLiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGVzPyBBcmUgdGhlcmUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBiYXNlZCBvbiBjZXJ0YWluIGtlcm5lbCBzZXR0aW5ncz8gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIHdoYXQgc2V0dGluZ3MgbWF5IGFmZmVjdCB0aGUgdXNhZ2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSB1c2FnZSBpcyBjb25zdGFudCwgb3IgY29uZGl0aW9uYWwuIFRpbWUgdG8gc2VlIHdoYXQgS2NvbmZpZyBoYXMgdG8gb2ZmZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MDAsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNzowMy44MzExMDA5OTZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5MjIwNDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEVYVDRfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9leHQ0L0tjb25maWc6Mjpjb25maWcgRVhUNF9GU1xcbmZzL2V4dDQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJUaGUgRXh0ZW5kZWQgNCAoZXh0NCkgZmlsZXN5c3RlbVxcXCJcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZz0zNT1jb25maWcgRVhUNF9VU0VfRk9SX0VYVDJcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZy00NS1cXG5mcy9leHQ0L0tjb25maWc6NDY6Y29uZmlnIEVYVDRfRlNfUE9TSVhfQUNMXFxuZnMvZXh0NC9LY29uZmlnLTQ3LVxcdGJvb2wgXFxcIkV4dDQgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuLS1cXG5mcy9leHQ0L0tjb25maWctNTUtXFxuZnMvZXh0NC9LY29uZmlnOjU2OmNvbmZpZyBFWFQ0X0ZTX1NFQ1VSSVRZXFxuZnMvZXh0NC9LY29uZmlnLTU3LVxcdGJvb2wgXFxcIkV4dDQgU2VjdXJpdHkgTGFiZWxzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNzowMy44NzgwMzA0MjJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzY2MTY4NDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBmcm9tIGFuIGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBFWFQ0IEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBgRVhUNF9GU2AgY29uZmlndXJhdGlvbiBvcHRpb24uIEtub3dpbmcgd2hlcmUgdG8gZmluZCBpdCBpbiB0aGUgS2NvbmZpZyBmaWxlcyBpcyBmdW5kYW1lbnRhbC4gVGhhdCBsaWtlbHkgbWVhbnMgZGl2aW5nIGludG8gYGZzL2V4dDQvS2NvbmZpZ2AgZGlyZWN0b3J5LiBJIHNob3VsZCBxdWlja2x5IGNoZWNrIHRoYXQgZmlsZSB0byBjb25maXJtIHdoZXJlIEVYVDQgaXMgZGVmaW5lZC4gSSBrbm93IGBLY29uZmlnYCBmaWxlcyBhcmUgdGhlIGJhY2tib25lIG9mIHRoZSBrZXJuZWwncyBidWlsZCBzeXN0ZW0gYW5kIG1hbmFnZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBLbm93aW5nIHRoaXMsIEkgbmVlZCB0byBxdWlja2x5IGZpbmQgYEVYVDRfRlNgIGluIGl0cyBsaWtlbHkgbG9jYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MzMsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNzowNS42NDQyMDI4MTdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTIyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvZXh0NC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgRVhUNF9GU1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlRoZSBFeHRlbmRlZCA0IChleHQ0KSBmaWxlc3lzdGVtXFxcIlxcbiAgIDQ6XFx0XFx0c2VsZWN0IEJVRkZFUl9IRUFEXFxuICAgNTpcXHRcXHRzZWxlY3QgSkJEMlxcbiAgIDY6XFx0XFx0c2VsZWN0IENSQzE2XFxuICAgNzpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gICA4OlxcdFxcdHNlbGVjdCBGU19JT01BUFxcbiAgIDk6XFx0XFx0c2VsZWN0IEZTX0VOQ1JZUFRJT05fQUxHUyBpZiBGU19FTkNSWVBUSU9OXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFRoaXMgaXMgdGhlIG5leHQgZ2VuZXJhdGlvbiBvZiB0aGUgZXh0MyBmaWxlc3lzdGVtLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRcXHQgIFVubGlrZSB0aGUgY2hhbmdlIGZyb20gZXh0MiBmaWxlc3lzdGVtIHRvIGV4dDMgZmlsZXN5c3RlbSxcXG4gIDE0OlxcdFxcdCAgdGhlIG9uLWRpc2sgZm9ybWF0IG9mIGV4dDQgaXMgbm90IGZvcndhcmRzIGNvbXBhdGlibGUgd2l0aFxcbiAgMTU6XFx0XFx0ICBleHQzOyBpdCBpcyBiYXNlZCBvbiBleHRlbnQgbWFwcyBhbmQgaXQgc3VwcG9ydHMgNDgtYml0XFxuICAxNjpcXHRcXHQgIHBoeXNpY2FsIGJsb2NrIG51bWJlcnMuICBUaGUgZXh0NCBmaWxlc3lzdGVtIGFsc28gc3VwcG9ydHMgZGVsYXllZFxcbiAgMTc6XFx0XFx0ICBhbGxvY2F0aW9uLCBwZXJzaXN0ZW50IHByZWFsbG9jYXRpb24sIGhpZ2ggcmVzb2x1dGlvbiB0aW1lIHN0YW1wcyxcXG4gIDE4OlxcdFxcdCAgYW5kIGEgbnVtYmVyIG9mIG90aGVyIGZlYXR1cmVzIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UgYW5kIHNwZWVkXFxuICAxOTpcXHRcXHQgIHVwIGZzY2sgdGltZS4gIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlIHRoZSB3ZWIgcGFnZXMgYXRcXG4gIDIwOlxcdFxcdCAgaHR0cDovL2V4dDQud2lraS5rZXJuZWwub3JnLlxcbiAgMjE6XFx0XFxuICAyMjpcXHRcXHQgIFRoZSBleHQ0IGZpbGVzeXN0ZW0gc3VwcG9ydHMgbW91bnRpbmcgYW4gZXh0MyBmaWxlc3lzdGVtOyB3aGlsZSB0aGVyZVxcbiAgMjM6XFx0XFx0ICBhcmUgc29tZSBwZXJmb3JtYW5jZSBnYWlucyBmcm9tIHRoZSBkZWxheWVkIGFsbG9jYXRpb24gYW5kIGlub2RlXFxuICAyNDpcXHRcXHQgIHRhYmxlIHJlYWRhaGVhZCwgdGhlIGJlc3QgcGVyZm9ybWFuY2UgZ2FpbnMgcmVxdWlyZSBlbmFibGluZyBleHQ0XFxuICAyNTpcXHRcXHQgIGZlYXR1cmVzIGluIHRoZSBmaWxlc3lzdGVtIHVzaW5nIHR1bmUyZnMsIG9yIGZvcm1hdHRpbmcgYSBuZXdcXG4gIDI2OlxcdFxcdCAgZmlsZXN5c3RlbSBhcyBhbiBleHQ0IGZpbGVzeXN0ZW0gaW5pdGlhbGx5LiBXaXRob3V0IGV4cGxpY2l0IGVuYWJsaW5nXFxuICAyNzpcXHRcXHQgIG9mIGV4dDQgZmVhdHVyZXMsIHRoZSBvbiBkaXNrIGZpbGVzeXN0ZW0gZm9ybWF0IHN0YXlzIGZ1bGx5IGJhY2t3YXJkXFxuICAyODpcXHRcXHQgIGNvbXBhdGlibGUuXFxuICAyOTpcXHRcXG4gIDMwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGZpbGUgc3lzdGVtIHN1cHBvcnQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZVxcbiAgMzE6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZXh0NC5cXG4gIDMyOlxcdFxcbiAgMzM6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgMzQ6XFx0XFxuICAzNTpcXHRjb25maWcgRVhUNF9VU0VfRk9SX0VYVDJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDI6Mzc6MDUuNjQ0Mjk4NTM3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY2MjAwOTEyMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUHJvcG9zZWQgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzLiBUaGUgcHJpbWFyeSBjb25jZXJuIGhlcmUgaXMgdGhlIGNoYW5nZSBpbiBjYWNoZSBhbGlnbm1lbnQgb2YgYHNfb3JwaGFuX2xvY2tgIHdpdGhpbiB0aGUgYHN0cnVjdCBleHQ0X3NiX2luZm9gIHN0cnVjdHVyZS4gVGhpcyBpcyBzaWduaWZpY2FudCwgZXNwZWNpYWxseSBiZWNhdXNlIHRoZSBjaGFuZ2UgaXMgY29uZGl0aW9uYWwgb24gdGhlIGBTTVBgIGNvbmZpZ3VyYXRpb24uIFNpbmNlIGBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wYCBkZXBlbmRzIG9uIGBTTVBgIGFuZCBgU01QYCBpcyBub3cgc3VjaCBhIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24sIHdlIG5lZWQgdG8gY29uc2lkZXIgaG93IHRoaXMgaW1wYWN0cyBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzLiBXaGlsZSBgU01QYCBpdHNlbGYgaXMgcHJhY3RpY2FsbHkgdWJpcXVpdG91cyB0aGVzZSBkYXlzLCB3ZSBhbHNvIGhhdmUgdGhlIGBFWFQ0X0ZTYCBjb25maWd1cmF0aW9uIHRvIGNvbnNpZGVyLCB3aGljaCBwZXJ0YWlucyBzcGVjaWZpY2FsbHkgdG8gdGhlIGV4dDQgZmlsZXN5c3RlbS5cblxuVGhlIGNyaXRlcmlhIGZvciBmdXp6aW5nIGFwcGVhciBzb3VuZC4gVGhpcyBwYXRjaCBkaXJlY3RseSBtb2RpZmllcyB0aGUgbGF5b3V0IG9mIGBleHQ0X3NiX2luZm9gIGluIFNNUCBzZXR1cHMuIGBleHQ0YCBpcyBhIGNvcmUgTGludXggZmlsZXN5c3RlbSwgYW5kIGEgd2VsbC11bmRlcnN0b29kIHRhcmdldCBmb3Igc3l6a2FsbGVyLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgY3JpdGljYWwgZnVuY3Rpb25zLiBXZSdyZSBsb29raW5nIGF0IGZ1bmN0aW9ucyB0aGF0IGFjY2VzcyBvciBpbml0aWFsaXplIGBzX29ycGhhbl9sb2NrYDogU3BlY2lmaWNhbGx5LCBgZXh0NF9vcnBoYW5fYWRkYCwgYGV4dDRfb3JwaGFuX2RlbGAsIGFuZCBgX19leHQ0X2ZpbGxfc3VwZXJgLiBUaGVzZSBhcmUgYWxsIGxvY2F0ZWQgaW4gc3RhbmRhcmQgZXh0NCBmaWxlIGxvY2F0aW9uczogYGZzL2V4dDQvb3JwaGFuLmNgIGZvciB0aGUgYWRkL2RlbCBvcGVyYXRpb25zIGFuZCBgZnMvZXh0NC9zdXBlci5jYCBmb3IgdGhlIHN1cGVyIGJsb2NrIGluaXRpYWxpemF0aW9uLiBJJ2xsIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgYW4gZXhoYXVzdGl2ZSBsaXN0LlxuXG5UaGUgc3VnZ2VzdGVkIGBFbmFibGVDb25maWdzYCBhcmUgYFtcIkVYVDRfRlNcIl1gIG9yIHBvdGVudGlhbGx5IGBbXCJFWFQ0X0ZTXCIsIFwiU01QXCJdYC4gYEVYVDRfRlNgIHNob3VsZCBiZSBzdWZmaWNpZW50LCBhcyBleHQ0IGlzIGEgd2VsbC10ZXN0ZWQsIGNvbW1vbiBjb25maWd1cmF0aW9uLCBidXQgdGhlIFNNUCBwYXJ0IGlzIGltcG9ydGFudCBpbiByZWxhdGlvbiB0byB0aGUgc3RydWN0dXJlIGFsaWdubWVudC5cblxuRmluYWxseSwgZG9lcyB0aGlzIHdhcnJhbnQgZnV6emluZz8gQWJzb2x1dGVseS4gTW9kaWZ5aW5nIGRhdGEgc3RydWN0dXJlcywgcGFydGljdWxhcmx5IHdpdGhpbiBhIGNvcmUgc3Vic3lzdGVtIGxpa2UgYGV4dDRgLCBpcyBhIGhpZ2gtcmlzayBjaGFuZ2UuIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlc2UgY2hhbmdlcywgZXNwZWNpYWxseSByZWxhdGVkIHRvIGxheW91dCBhbmQgYWxpZ25tZW50LCBkb24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMsIG1lbW9yeSBjb3JydXB0aW9uIHZ1bG5lcmFiaWxpdGllcywgZmFsc2Ugc2hhcmluZywgb3IgYWxpZ25tZW50IGlzc3Vlcy4gVGhlc2UgYXJlIHRoZSBraW5kcyBvZiBzdWJ0bGUgcHJvYmxlbXMgdGhhdCBmdXp6aW5nIGlzIGRlc2lnbmVkIHRvIGNhdGNoLlxuXG5JJ20gc2F0aXNmaWVkIHdpdGggdGhlIGFuYWx5c2lzLCBsZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2NTMsIk91dHB1dFRva2VucyI6MTE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDI6Mzc6MTIuMjY0MzkyNzk5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODk3NzczOTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIixcbiAgICBcIlNNUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfb3JwaGFuX2FkZFwiLFxuICAgIFwiZXh0NF9vcnBoYW5fZGVsXCIsXG4gICAgXCJfX2V4dDRfZmlsbF9zdXBlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHN0cnVjdCBleHQ0X3NiX2luZm8gdG8gY2FjaGVsaW5lLWFsaWduIHRoZSBzX29ycGhhbl9sb2NrIG11dGV4IGluIFNNUCBjb25maWd1cmF0aW9ucy4gVGhpcyBhbHRlcnMgZGF0YSBzdHJ1Y3R1cmUgbGF5b3V0IGFuZCBzeW5jaHJvbml6YXRpb24gYmVoYXZpb3IgaW4gdGhlIGV4dDQgZmlsZXN5c3RlbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBzdWl0YWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCIsXG4gICAgXCJTTVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X29ycGhhbl9hZGRcIixcbiAgICBcImV4dDRfb3JwaGFuX2RlbFwiLFxuICAgIFwiX19leHQ0X2ZpbGxfc3VwZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBzdHJ1Y3QgZXh0NF9zYl9pbmZvIHRvIGNhY2hlbGluZS1hbGlnbiB0aGUgc19vcnBoYW5fbG9jayBtdXRleCBpbiBTTVAgY29uZmlndXJhdGlvbnMuIFRoaXMgYWx0ZXJzIGRhdGEgc3RydWN0dXJlIGxheW91dCBhbmQgc3luY2hyb25pemF0aW9uIGJlaGF2aW9yIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgc3VpdGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDAyOjM3OjEyLjM1NDE5NDQ0MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEyMTUzNTgzODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNzoxMi4zNTQ2OTkwMjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyMTIxNDg0ODIxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB0aGUgJ19fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXAnIGF0dHJpYnV0ZSB0byB0aGUgJ3Nfb3JwaGFuX2xvY2snIG11dGV4IGluICdzdHJ1Y3QgZXh0NF9zYl9pbmZvJyB0byBhbGlnbiBpdCB0byBhIGNhY2hlbGluZSBpbiBTTVAgY29uZmlndXJhdGlvbnMgYW5kIHJlZHVjZSBmYWxzZSBzaGFyaW5nLlxcblxcbidzdHJ1Y3QgZXh0NF9zYl9pbmZvJyBpcyBhbiBpbnRlcm5hbCBzdXBlcmJsb2NrIHN0YXRlIHN0cnVjdHVyZSBhbGxvY2F0ZWQgdXNpbmcga3phbGxvY19vYmooKSBpbiBleHQ0X2FsbG9jX3NiaSgpLCBtZWFuaW5nIGFsbCBmaWVsZHMgYW5kIGFueSBhbGlnbm1lbnQgcGFkZGluZyBhcmUgemVyby1pbml0aWFsaXplZCB1cG9uIGFsbG9jYXRpb24uIFRoZSBzdHJ1Y3R1cmUgaXMgbmV2ZXIgY29waWVkIHRvIHVzZXJzcGFjZSwgbm9yIGRvZXMgdGhpcyBhbGlnbm1lbnQgYWRqdXN0bWVudCBhbHRlciBjb250cm9sIGZsb3csIGxlbmd0aCBjYWxjdWxhdGlvbnMsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGhhbmRsaW5nLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTNlNDI3Yzg3NGUwYTNhOGYyOWM2YzZjODkwZDU3NGYwYjI5Y2ViMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMDI6MzY6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dDQuaCBiL2ZzL2V4dDQvZXh0NC5oXG5pbmRleCA3MjRhMjdlOGJlNjEzLi5hM2YxNmE5ODE2NjQ2IDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9leHQ0LmhcbisrKyBiL2ZzL2V4dDQvZXh0NC5oXG5AQCAtMTY0NCw3ICsxNjQ0LDcgQEAgc3RydWN0IGV4dDRfc2JfaW5mbyB7XG4gXHQvKiBKb3VybmFsaW5nICovXG4gXHRzdHJ1Y3Qgam91cm5hbF9zICpzX2pvdXJuYWw7XG4gXHR1bnNpZ25lZCBsb25nIHNfZXh0NF9mbGFncztcdFx0LyogRXh0NCBzdXBlcmJsb2NrIGZsYWdzICovXG4tXHRzdHJ1Y3QgbXV0ZXggc19vcnBoYW5fbG9jaztcdC8qIFByb3RlY3RzIG9uIGRpc2sgbGlzdCBjaGFuZ2VzICovXG4rXHRzdHJ1Y3QgbXV0ZXggc19vcnBoYW5fbG9jayBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wO1xuIFx0c3RydWN0IGxpc3RfaGVhZCBzX29ycGhhbjtcdC8qIExpc3Qgb2Ygb3JwaGFuZWQgaW5vZGVzIGluIG9uIGRpc2tcbiBcdFx0XHRcdFx0ICAgbGlzdCAqL1xuIFx0c3RydWN0IGV4dDRfb3JwaGFuX2luZm8gc19vcnBoYW5faW5mbztcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDAyOjM3OjEyLjM1NDcwMjM3MloiLCJTZXEiOjE1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0Mzg3OTk3MDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEZ1enppbmcgU2Vzc2lvbiBKdXN0aWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIHRha2luZyBhIGxvb2sgYXQgdGhpcyBwYXRjaCBzZXJpZXMgYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIGl0IHdhcnJhbnRzIGRlZGljYXRpbmcgc29tZSBLTVNBTiBmdXp6aW5nIHRpbWUuIExldCdzIHNlZS4uLiB0aGUgZGlmZiBsb29rcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJdCBsb29rcyBsaWtlIHRoZXkgYXJlIGFkZGluZyBgX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcGAgdG8gYHNfb3JwaGFuX2xvY2tgLCBhIG11dGV4IHdpdGhpbiBgc3RydWN0IGV4dDRfc2JfaW5mb2AgaW4gYGZzL2V4dDQvZXh0NC5oYC4gVGhpcyBpcyBsaWtlbHkgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRvIGF2b2lkIGZhbHNlIHNoYXJpbmcuIEJ1dCwgZG9lcyB0aGlzIGludHJvZHVjZSBhIHBvdGVudGlhbCBmb3IgbmV3IG1lbW9yeSBzYWZldHkgaXNzdWVzIHRoYXQgS01TQU4gY291bGQgY2F0Y2g/XG5cbkkgbmVlZCBtb3JlIGNvbnRleHQuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHdoYXQgb3RoZXIgdXNlcyBhcmUgYmVpbmcgbWFkZSBvZiB0aGlzIGBleHQ0X3NiX2luZm9gIHN0cnVjdCBhbmQgYHNfb3JwaGFuX2xvY2tgIG11dGV4IHRvIGRldGVybWluZSB3aGF0IHNvcnQgb2YgYWNjZXNzIHBhdHRlcm5zIGFyZSBpbiBwbGF5LiBJJ2xsIHJlYWQgdGhlIGZpbGUgb3IgZ3JlcCBmb3IgcmVmZXJlbmNlcyB0byBzZWUgd2hlcmUgdGhpcyBtdXRleCBpcyB1c2VkIGFuZCBob3cuIFRoZSBnb2FsIGlzIHRvIHNlZSBpZiB0aGlzIGNoYW5nZSBhbHRlcnMgYW55IGxvY2tpbmcgb3JkZXIgb3IgaWYgaXQgdG91Y2hlcyBhIHNoYXJlZCBkYXRhc3RydWN0dXJlIGluIGEgbm9uLW9idmlvdXMgd2F5LiBEZXBlbmRpbmcgb24gd2hhdCBJIGZpbmQsIEknbGwgdGhlbiBkZWNpZGUgaWYgYSBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgd2FycmFudGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTEwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDI6Mzc6MTYuNzQyNzAyNTE1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODI3NjE1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdHJ1Y3QgZXh0NF9zYl9pbmZvIFxcXFx7XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvZXh0NC5oPTE1NjU9c3RydWN0IGV4dDRfZmNfc25hcF9zdGF0cyB7XFxuLS1cXG5mcy9leHQ0L2V4dDQuaC0xNTkxLSAqL1xcbmZzL2V4dDQvZXh0NC5oOjE1OTI6c3RydWN0IGV4dDRfc2JfaW5mbyB7XFxuZnMvZXh0NC9leHQ0LmgtMTU5My1cXHR1bnNpZ25lZCBsb25nIHNfZGVzY19zaXplO1xcdC8qIFNpemUgb2YgYSBncm91cCBkZXNjcmlwdG9yIGluIGJ5dGVzICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDAyOjM3OjE2Ljc5MDk4NjUyMloiLCJTZXEiOjE3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDU4NDE3MTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRoaW5raW5nLCBleHByZXNzZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEaXZpbmcgaW50byB0aGUgZXh0NCBIZWFkZXIqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYSBzcGVjaWZpYyBhc3BlY3Qgb2YgdGhlIGV4dDQgZmlsZXN5c3RlbSwgc28gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgaGVhZGVyIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxNjQwIG9mIGBmcy9leHQ0L2V4dDQuaGAuIFRoaXMgbGlrZWx5IGNvbnRhaW5zIHNvbWUgY3JpdGljYWwgZGVmaW5pdGlvbnMgb3Igc3RydWN0dXJlcyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZiB0byBwcm9jZWVkLiBJIGFudGljaXBhdGUgZmluZGluZyBpbmZvcm1hdGlvbiBhYm91dOKApiB3ZWxsLCBJJ20gbm90IHN1cmUgKmV4YWN0bHkqIHlldCwgdGhhdCdzIHdoeSBJJ20gaGVyZS4gQnV0IEknbSByZWFkeSB0byBkaWcgaW4gYW5kIGRlY2lwaGVyIHdoYXQgdGhpcyBzZWN0aW9uIGhvbGRzLiBJdCBjb3VsZCBiZSByZWxhdGVkIHRvIGlub2RlIG1hbmFnZW1lbnQsIGJsb2NrIGFsbG9jYXRpb24sIGpvdXJuYWxpbmcgbWV0YWRhdGEsIG9yIGV2ZW4gc29tZSBvYnNjdXJlIGZlYXR1cmUuIFRoZSBodW50IGJlZ2lucyFcblxuXG4iLCJJbnB1dFRva2VucyI6MjgxNCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDAyOjM3OjE5LjI0OTQwNjY1M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTY1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvZXh0NC9leHQ0LmhcIixcbiAgXCJGaXJzdExpbmVcIjogMTYzNSxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTYzNTpcXHRcXHRzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIgc19zcmFfZXhjZWVkZWRfcmV0cnlfbGltaXQ7XFxuMTYzNjpcXHRcXHRzdHJ1Y3QgYmxvY2tncm91cF9sb2NrICpzX2Jsb2NrZ3JvdXBfbG9jaztcXG4xNjM3OlxcdFxcdHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqc19wcm9jO1xcbjE2Mzg6XFx0XFx0c3RydWN0IGtvYmplY3Qgc19rb2JqO1xcbjE2Mzk6XFx0XFx0c3RydWN0IGNvbXBsZXRpb24gc19rb2JqX3VucmVnaXN0ZXI7XFxuMTY0MDpcXHRcXHRzdHJ1Y3QgbXV0ZXggc19lcnJvcl9ub3RpZnlfbXV0ZXg7IC8qIHByb3RlY3RzIHN5c2ZzX25vdGlmeSB2cyBrb2JqZWN0X2RlbCAqL1xcbjE2NDE6XFx0XFx0c3RydWN0IHN1cGVyX2Jsb2NrICpzX3NiO1xcbjE2NDI6XFx0XFx0c3RydWN0IGJ1ZmZlcl9oZWFkICpzX21tcF9iaDtcXG4xNjQzOlxcdFxcbjE2NDQ6XFx0XFx0LyogSm91cm5hbGluZyAqL1xcbjE2NDU6XFx0XFx0c3RydWN0IGpvdXJuYWxfcyAqc19qb3VybmFsO1xcbjE2NDY6XFx0XFx0dW5zaWduZWQgbG9uZyBzX2V4dDRfZmxhZ3M7XFx0XFx0LyogRXh0NCBzdXBlcmJsb2NrIGZsYWdzICovXFxuMTY0NzpcXHRcXHRzdHJ1Y3QgbXV0ZXggc19vcnBoYW5fbG9jayBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wO1xcbjE2NDg6XFx0XFx0c3RydWN0IGxpc3RfaGVhZCBzX29ycGhhbjtcXHQvKiBMaXN0IG9mIG9ycGhhbmVkIGlub2RlcyBpbiBvbiBkaXNrXFxuMTY0OTpcXHRcXHRcXHRcXHRcXHRcXHQgICBsaXN0ICovXFxuMTY1MDpcXHRcXHRzdHJ1Y3QgZXh0NF9vcnBoYW5faW5mbyBzX29ycGhhbl9pbmZvO1xcbjE2NTE6XFx0XFx0dW5zaWduZWQgbG9uZyBzX2NvbW1pdF9pbnRlcnZhbDtcXG4xNjUyOlxcdFxcdHUzMiBzX21heF9iYXRjaF90aW1lO1xcbjE2NTM6XFx0XFx0dTMyIHNfbWluX2JhdGNoX3RpbWU7XFxuMTY1NDpcXHRcXHRzdHJ1Y3QgZmlsZSAqc19qb3VybmFsX2JkZXZfZmlsZTtcXG4xNjU1OlxcdCNpZmRlZiBDT05GSUdfUVVPVEFcXG4xNjU2OlxcdFxcdC8qIE5hbWVzIG9mIHF1b3RhIGZpbGVzIHdpdGggam91cm5hbGxlZCBxdW90YSAqL1xcbjE2NTc6XFx0XFx0Y2hhciBfX3JjdSAqc19xZl9uYW1lc1tFWFQ0X01BWFFVT1RBU107XFxuMTY1ODpcXHRcXHRpbnQgc19qcXVvdGFfZm10O1xcdFxcdFxcdC8qIEZvcm1hdCBvZiBxdW90YSB0byB1c2UgKi9cXG4xNjU5OlxcdCNlbmRpZlxcbjE2NjA6XFx0XFx0dW5zaWduZWQgaW50IHNfd2FudF9leHRyYV9pc2l6ZTsgLyogTmV3IGlub2RlcyBzaG91bGQgcmVzZXJ2ZSAjIGJ5dGVzICovXFxuMTY2MTpcXHRcXHRzdHJ1Y3QgZXh0NF9zeXN0ZW1fYmxvY2tzIF9fcmN1ICpzX3N5c3RlbV9ibGtzO1xcbjE2NjI6XFx0XFxuMTY2MzpcXHQjaWZkZWYgRVhURU5UU19TVEFUU1xcbjE2NjQ6XFx0XFx0LyogZXh0NCBleHRlbnRzIHN0YXRzICovXFxuMTY2NTpcXHRcXHR1bnNpZ25lZCBsb25nIHNfZXh0X21pbjtcXG4xNjY2OlxcdFxcdHVuc2lnbmVkIGxvbmcgc19leHRfbWF4O1xcbjE2Njc6XFx0XFx0dW5zaWduZWQgbG9uZyBzX2RlcHRoX21heDtcXG4xNjY4OlxcdFxcdHNwaW5sb2NrX3Qgc19leHRfc3RhdHNfbG9jaztcXG4xNjY5OlxcdFxcdHVuc2lnbmVkIGxvbmcgc19leHRfYmxvY2tzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNzoxOS4yNDk2MDUwNjNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjMxMjc1NTA4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipUcmFjaW5nIHRoZSBBbGxvY2F0aW9uIGFuZCBJbml0aWFsaXphdGlvbiBvZiBgc3RydWN0IGV4dDRfc2JfaW5mb2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBhbmQgaG93IHRoZSBgc3RydWN0IGV4dDRfc2JfaW5mb2AgaXMgYnJvdWdodCB0byBsaWZlIHdpdGhpbiB0aGUgZXh0NCBmaWxlc3lzdGVtIGNvZGUuIFRoYXQgc3RydWN0IGlzIGZ1bmRhbWVudGFsIHRvIHRoZSBvcGVyYXRpb24gb2YgdGhlIGZpbGVzeXN0ZW0sIGhvbGRpbmcgYWxsIHRoZSBzdXBlcmJsb2NrIGluZm9ybWF0aW9uIGFuZCBtZXRhZGF0YSBhYm91dCB0aGUgZXh0NCB2b2x1bWUsIHNvIGdldHRpbmcgaXRzIGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIGNsZWFyIGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIEkgd2FudCB0byB0cmFjZSBpdHMgbGlmZWN5Y2xlIGZyb20gc3RhcnQgdG8gZmluaXNoLiBJJ2xsIG5lZWQgdG8gZ28gZGlnZ2luZyB0aHJvdWdoIHRoZSBrZXJuZWwgc291cmNlIHRvIGZpbmQgdGhlIGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIHBvaW50cy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbG9vayBmb3IgZnVuY3Rpb25zIHRoYXQgYXJlIGxpa2VseSByZXNwb25zaWJsZSBmb3IgbW91bnRpbmcgYW4gZXh0NCBmaWxlc3lzdGVtLCBvciBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIHN1cGVyYmxvY2sgaGFuZGxpbmcuIEkgd2lsbCBiZSBsb29raW5nIGZvciBjYWxscyByZWxhdGVkIHRvIGBleHQ0X3NiX2luZm9gIG9yIHNpbWlsYXIgZGF0YSBzdHJ1Y3R1cmVzLCBvciBldmVuIGFsbG9jYXRpb25zIHJlbGF0ZWQgdG8gXCJzdXBlcmJsb2NrXCIgb3IgXCJtb3VudFwiIG9wZXJhdGlvbnMuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBtb3VudCBjb2RlIHBhdGggc2luY2UgdGhhdCBpcyB3aGVyZSBhbGwgb2YgdGhlIGZpbGVzeXN0ZW0gc3RydWN0dXJlcyBhcmUgaW5pdGlhbGlzZWQuIEkgc2hvdWxkIGZpbmQgaXQgdGhlcmUuIExldCdzIHNlZSBob3cgdGhpcyB1bmZvbGRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjY5LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNzoyMS41NjIzNjM4MDVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDA2NTI1MiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3phbGxvY1xcXFwoc2l6ZW9mXFxcXChzdHJ1Y3QgZXh0NF9zYl9pbmZvXFxcXCl8c2l6ZW9mXFxcXChzdHJ1Y3QgZXh0NF9zYl9pbmZvXFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDAyOjM3OjIxLjY2NjQzNjcxN1oiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNjA0MTg4NTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6XG5cbioqVHJhY2luZyB0aGUgQWxsb2NhdGlvbiBvZiBgZXh0NF9zYl9pbmZvYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHdoZXJlIHRoaXMgYGV4dDRfc2JfaW5mb2Agc3RydWN0dXJlIGlzIGdldHRpbmcgYWxsb2NhdGVkIGluIHRoZSBrZXJuZWwuIFRoaXMgaXMgYSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgZXh0NCBmaWxlc3lzdGVtJ3Mgc3VwZXJibG9jayBpbmZvcm1hdGlvbiwgc28gdW5kZXJzdGFuZGluZyBpdHMgbGlmZWN5Y2xlIGlzIGZ1bmRhbWVudGFsIGZvciBhbnkga2VybmVsIGFuYWx5c2lzLiBJJ20gdGhpbmtpbmcgSSBjYW4gc3RhcnQgYnkgbG9va2luZyBmb3IgY2FsbHMgdG8gYGttYWxsb2NgLCBga3phbGxvY2AsIG9yIGBrbWVtX2NhY2hlX2FsbG9jYCB3aXRoIHRoZSBzaXplIG9mIHRoZSBgZXh0NF9zYl9pbmZvYCBzdHJ1Y3R1cmUuIE9yLCBJIHNob3VsZCBsb29rIGF0IHRoZSBleHQ0J3Mgc3VwZXJibG9jayBvcGVyYXRpb25zIChgc19vcGApIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBjdXN0b20gYWxsb2NhdGlvbiByb3V0aW5lcyBkZWZpbmVkIHRoZXJlLiBJIGNvdWxkIGFsc28gc2NhbiB0aGUgY29kZSBmb3IgZGlyZWN0IGNhbGxzIHRvIGBhbGxvY19zdXBlcmAgYXMgdGhhdCBzZWVtcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gSSdsbCBuZWVkIHRvIHVzZSBhIGNvbWJpbmF0aW9uIG9mIHRvb2xzOiBgZ3JlcGAgdG8gcXVpY2tseSBzZWFyY2ggdGhlIHNvdXJjZSB0cmVlLCBwb3RlbnRpYWxseSBjcm9zcy1yZWZlcmVuY2luZyB3aXRoIGBjc2NvcGVgIG9yIGBjLXRhZ3NgIGZvciBkZWVwZXIgY2FsbC1ncmFwaCBhbmFseXNpcy4gQSBzb3VyY2UtY29kZSBicm93c2VyIHdpdGggeHJlZiBjYXBhYmlsaXRpZXMgaXMgZ29pbmcgdG8gYmUgbXkgYmVzdCBmcmllbmQgaGVyZS4gTGV0J3Mgc3RhcnQgd2l0aCBhIGJhc2ljIGBncmVwYCBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEl0IG1pZ2h0IGJlIGEgb25lLWxpbmVyIG9yIGl0IG1pZ2h0IHJlcXVpcmUgYSBtb3JlIGludm9sdmVkIGRpdmUgdGhyb3VnaCB0aGUgYm9vdCBwcm9jZXNzIGFuZCBtb3VudCBwYXRoLiBUaW1lIHRvIGRpZyBpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6Mzk4MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDAyOjM3OjI1LjI3MDYyODA1MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU0NjM3MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXh0NF9zYl9pbmZvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvc3VwZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L3N1cGVyLmM9NDcyPXN0YXRpYyB2b2lkIGV4dDRfbWF5YmVfdXBkYXRlX3N1cGVyYmxvY2soc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5mcy9leHQ0L3N1cGVyLmMtNDczLXtcXG5mcy9leHQ0L3N1cGVyLmM6NDc0OlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy00NzUtXFx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzID0gc2JpLVxcdTAwM2VzX2VzO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTY0Nz1zdGF0aWMgdm9pZCBzYXZlX2Vycm9yX2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGVycm9yLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTY1MC17XFxuZnMvZXh0NC9zdXBlci5jOjY1MTpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNjUyLVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTc1MT1zdGF0aWMgdm9pZCB1cGRhdGVfc3VwZXJfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZnMvZXh0NC9zdXBlci5jLTc1Mi17XFxuZnMvZXh0NC9zdXBlci5jOjc1MzpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGV4dDRfc2JfaW5mbyxcXG5mcy9leHQ0L3N1cGVyLmMtNzU0LVxcdFxcdFxcdFxcdFxcdFxcdHNfc2JfdXBkX3dvcmspO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTExMDY9dm9pZCBleHQ0X21hcmtfZ3JvdXBfYml0bWFwX2NvcnJ1cHRlZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTExMDkte1xcbmZzL2V4dDQvc3VwZXIuYzoxMTEwOlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy0xMTExLVxcdHN0cnVjdCBleHQ0X2dyb3VwX2luZm8gKmdycCA9IGV4dDRfZ2V0X2dyb3VwX2luZm8oc2IsIGdyb3VwKTtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0xMTYzPXN0YXRpYyBpbmxpbmUgc3RydWN0IGlub2RlICpvcnBoYW5fbGlzdF9lbnRyeShzdHJ1Y3QgbGlzdF9oZWFkICpsKVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTExNjctXFxuZnMvZXh0NC9zdXBlci5jOjExNjg6c3RhdGljIHZvaWQgZHVtcF9vcnBoYW5fbGlzdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkpXFxuZnMvZXh0NC9zdXBlci5jLTExNjkte1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTEyMDI9c3RhdGljIGlubGluZSBjaGFyICpnZXRfcWZfbmFtZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbmZzL2V4dDQvc3VwZXIuYzoxMjAzOlxcdFxcdFxcdFxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSxcXG5mcy9leHQ0L3N1cGVyLmMtMTIwNC1cXHRcXHRcXHRcXHRpbnQgdHlwZSlcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0xMjEwPXN0YXRpYyBpbmxpbmUgdm9pZCBleHQ0X3F1b3Rhc19vZmYoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHR5cGUpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtMTIxNC1cXG5mcy9leHQ0L3N1cGVyLmM6MTIxNTpzdGF0aWMgaW50IGV4dDRfcGVyY3B1X3BhcmFtX2luaXQoc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpKVxcbmZzL2V4dDQvc3VwZXIuYy0xMjE2LXtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy0xMjQ3LVxcbmZzL2V4dDQvc3VwZXIuYzoxMjQ4OnN0YXRpYyB2b2lkIGV4dDRfcGVyY3B1X3BhcmFtX2Rlc3Ryb3koc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpKVxcbmZzL2V4dDQvc3VwZXIuYy0xMjQ5LXtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy0xMjU3LVxcbmZzL2V4dDQvc3VwZXIuYzoxMjU4OnN0YXRpYyB2b2lkIGV4dDRfZ3JvdXBfZGVzY19mcmVlKHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSlcXG5mcy9leHQ0L3N1cGVyLmMtMTI1OS17XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtMTI2OC1cXG5mcy9leHQ0L3N1cGVyLmM6MTI2OTpzdGF0aWMgdm9pZCBleHQ0X2ZsZXhfZ3JvdXBzX2ZyZWUoc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpKVxcbmZzL2V4dDQvc3VwZXIuYy0xMjcwLXtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0xMjgyPXN0YXRpYyB2b2lkIGV4dDRfcHV0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuZnMvZXh0NC9zdXBlci5jLTEyODMte1xcbmZzL2V4dDQvc3VwZXIuYzoxMjg0OlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy0xMjg1LVxcdHN0cnVjdCBleHQ0X3N1cGVyX2Jsb2NrICplcyA9IHNiaS1cXHUwMDNlc19lcztcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0yNTI4PXN0YXRpYyBpbnQgcGFyc2VfYXBwbHlfc2JfbW91bnRfb3B0aW9ucyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTI1MzAte1xcbmZzL2V4dDQvc3VwZXIuYzoyNTMxOlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy0yNTMyLVxcdGNoYXIgc19tb3VudF9vcHRzWzY0XTtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0yNTgyPXN0YXRpYyB2b2lkIGV4dDRfYXBwbHlfcXVvdGFfb3B0aW9ucyhzdHJ1Y3QgZnNfY29udGV4dCAqZmMsXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtMjU4Ny1cXHRzdHJ1Y3QgZXh0NF9mc19jb250ZXh0ICpjdHggPSBmYy1cXHUwMDNlZnNfcHJpdmF0ZTtcXG5mcy9leHQ0L3N1cGVyLmM6MjU4ODpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtMjU4OS1cXHRjaGFyICpxbmFtZTtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0yNjE5PXN0YXRpYyBpbnQgZXh0NF9jaGVja19xdW90YV9jb25zaXN0ZW5jeShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtMjYyMy1cXHRzdHJ1Y3QgZXh0NF9mc19jb250ZXh0ICpjdHggPSBmYy1cXHUwMDNlZnNfcHJpdmF0ZTtcXG5mcy9leHQ0L3N1cGVyLmM6MjYyNDpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtMjYyNS1cXHRib29sIHF1b3RhX2ZlYXR1cmUgPSBleHQ0X2hhc19mZWF0dXJlX3F1b3RhKHNiKTtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0yNzM3PXN0YXRpYyBpbnQgZXh0NF9jaGVja190ZXN0X2R1bW15X2VuY3J5cHRpb24oY29uc3Qgc3RydWN0IGZzX2NvbnRleHQgKmZjLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTI3NDAtXFx0Y29uc3Qgc3RydWN0IGV4dDRfZnNfY29udGV4dCAqY3R4ID0gZmMtXFx1MDAzZWZzX3ByaXZhdGU7XFxuZnMvZXh0NC9zdXBlci5jOjI3NDE6XFx0Y29uc3Qgc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTI3NDItXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9Mjc4OT1zdGF0aWMgaW50IGV4dDRfY2hlY2tfb3B0X2NvbnNpc3RlbmN5KHN0cnVjdCBmc19jb250ZXh0ICpmYyxcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy0yNzkyLVxcdHN0cnVjdCBleHQ0X2ZzX2NvbnRleHQgKmN0eCA9IGZjLVxcdTAwM2Vmc19wcml2YXRlO1xcbmZzL2V4dDQvc3VwZXIuYzoyNzkzOlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IGZjLVxcdTAwM2VzX2ZzX2luZm87XFxuZnMvZXh0NC9zdXBlci5jLTI3OTQtXFx0aW50IGlzX3JlbW91bnQgPSBmYy1cXHUwMDNlcHVycG9zZSA9PSBGU19DT05URVhUX0ZPUl9SRUNPTkZJR1VSRTtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0yODcxPXN0YXRpYyB2b2lkIGV4dDRfYXBwbHlfb3B0aW9ucyhzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtMjg3My1cXHRzdHJ1Y3QgZXh0NF9mc19jb250ZXh0ICpjdHggPSBmYy1cXHUwMDNlZnNfcHJpdmF0ZTtcXG5mcy9leHQ0L3N1cGVyLmM6Mjg3NDpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBmYy1cXHUwMDNlc19mc19pbmZvO1xcbmZzL2V4dDQvc3VwZXIuYy0yODc1LVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTI5MzE9c3RhdGljIGlubGluZSB2b2lkIGV4dDRfc2hvd19xdW90YV9vcHRpb25zKHN0cnVjdCBzZXFfZmlsZSAqc2VxLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTI5MzQtI2lmIGRlZmluZWQoQ09ORklHX1FVT1RBKVxcbmZzL2V4dDQvc3VwZXIuYzoyOTM1OlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy0yOTM2LVxcdGNoYXIgKnVzcl9xZl9uYW1lLCAqZ3JwX3FmX25hbWU7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9Mjk4MT1zdGF0aWMgaW50IF9leHQ0X3Nob3dfb3B0aW9ucyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy0yOTgzLXtcXG5mcy9leHQ0L3N1cGVyLmM6Mjk4NDpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtMjk4NS1cXHRzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMgPSBzYmktXFx1MDAzZXNfZXM7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9MzEyMz1zdGF0aWMgaW50IGV4dDRfc2V0dXBfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTMxMjUte1xcbmZzL2V4dDQvc3VwZXIuYzozMTI2OlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy0zMTI3LVxcdGludCBlcnIgPSAwO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTMxODE9aW50IGV4dDRfYWxsb2NfZmxleF9iZ19hcnJheShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBleHQ0X2dyb3VwX3Qgbmdyb3VwKVxcbmZzL2V4dDQvc3VwZXIuYy0zMTgyLXtcXG5mcy9leHQ0L3N1cGVyLmM6MzE4MzpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtMzE4NC1cXHRzdHJ1Y3QgZmxleF9ncm91cHMgKipvbGRfZ3JvdXBzLCAqKm5ld19ncm91cHM7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9MzIyOD1zdGF0aWMgaW50IGV4dDRfZmlsbF9mbGV4X2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5mcy9leHQ0L3N1cGVyLmMtMzIyOS17XFxuZnMvZXh0NC9zdXBlci5jOjMyMzA6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTMyMzEtXFx0c3RydWN0IGV4dDRfZ3JvdXBfZGVzYyAqZ2RwID0gTlVMTDtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0zMjYyPXN0YXRpYyBfX2xlMTYgZXh0NF9ncm91cF9kZXNjX2NzdW0oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgX191MzIgYmxvY2tfZ3JvdXAsXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtMzI2Ny1cXHRfX2xlMzIgbGVfZ3JvdXAgPSBjcHVfdG9fbGUzMihibG9ja19ncm91cCk7XFxuZnMvZXh0NC9zdXBlci5jOjMyNjg6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTMyNjktXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9MzMyNT1zdGF0aWMgaW50IGV4dDRfY2hlY2tfZGVzY3JpcHRvcnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy0zMzI4LXtcXG5mcy9leHQ0L3N1cGVyLmM6MzMyOTpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtMzMzMC1cXHRleHQ0X2ZzYmxrX3QgZmlyc3RfYmxvY2sgPSBsZTMyX3RvX2NwdShzYmktXFx1MDAzZXNfZXMtXFx1MDAzZXNfZmlyc3RfZGF0YV9ibG9jayk7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9MzU2OD1zdGF0aWMgZXh0NF9mc2Jsa190IGRlc2NyaXB0b3JfbG9jKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtMzU3MC17XFxuZnMvZXh0NC9zdXBlci5jOjM1NzE6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTM1NzItXFx0ZXh0NF9ncm91cF90IGJnLCBmaXJzdF9tZXRhX2JnO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTM2MDYtICovXFxuZnMvZXh0NC9zdXBlci5jOjM2MDc6c3RhdGljIHVuc2lnbmVkIGxvbmcgZXh0NF9nZXRfc3RyaXBlX3NpemUoc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpKVxcbmZzL2V4dDQvc3VwZXIuYy0zNjA4LXtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0zNzA1PXZvaWQgcHJpbnRfZGFpbHlfZXJyb3JfaW5mbyhzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG5mcy9leHQ0L3N1cGVyLmMtMzcwNi17XFxuZnMvZXh0NC9zdXBlci5jOjM3MDc6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gdGltZXJfY29udGFpbmVyX29mKHNiaSwgdCwgc19lcnJfcmVwb3J0KTtcXG5mcy9leHQ0L3N1cGVyLmMtMzcwOC1cXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gc2JpLVxcdTAwM2VzX3NiO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTQwNTc9aW50IGV4dDRfcmVnaXN0ZXJfbGlfcmVxdWVzdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTQwNTkte1xcbmZzL2V4dDQvc3VwZXIuYzo0MDYwOlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy00MDYxLVxcdHN0cnVjdCBleHQ0X2xpX3JlcXVlc3QgKmVsciA9IE5VTEw7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NDEzMj1zdGF0aWMgaW50IHNldF9qb3VybmFsX2NzdW1fZmVhdHVyZV9zZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy00MTM1LVxcdGludCBjb21wYXQsIGluY29tcGF0O1xcbmZzL2V4dDQvc3VwZXIuYzo0MTM2OlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy00MTM3LVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTQxODY9c3RhdGljIGludCBjb3VudF9vdmVyaGVhZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBleHQ0X2dyb3VwX3QgZ3JwLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTQxODgte1xcbmZzL2V4dDQvc3VwZXIuYzo0MTg5OlxcdHN0cnVjdCBleHQ0X3NiX2luZm9cXHQqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTQxOTAtXFx0c3RydWN0IGV4dDRfZ3JvdXBfZGVzY1xcdCpnZHA7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NDI0OT1pbnQgZXh0NF9jYWxjdWxhdGVfb3ZlcmhlYWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5mcy9leHQ0L3N1cGVyLmMtNDI1MC17XFxuZnMvZXh0NC9zdXBlci5jOjQyNTE6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTQyNTItXFx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzID0gc2JpLVxcdTAwM2VzX2VzO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTQzMDk9c3RhdGljIHZvaWQgZXh0NF9zZXRfcmVzdl9jbHVzdGVycyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTQzMTEtXFx0ZXh0NF9mc2Jsa190IHJlc3ZfY2x1c3RlcnM7XFxuZnMvZXh0NC9zdXBlci5jOjQzMTI6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTQzMTMtXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NDM1ND1zdGF0aWMgdm9pZCBleHQ0X3NldHVwX2NzdW1fdHJpZ2dlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTQzNjEte1xcbmZzL2V4dDQvc3VwZXIuYzo0MzYyOlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy00MzYzLVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTQzNjctXFxuZnMvZXh0NC9zdXBlci5jOjQzNjg6c3RhdGljIHZvaWQgZXh0NF9mcmVlX3NiaShzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkpXFxuZnMvZXh0NC9zdXBlci5jLTQzNjkte1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTQzNzctXFxuZnMvZXh0NC9zdXBlci5jOjQzNzg6c3RhdGljIHN0cnVjdCBleHQ0X3NiX2luZm8gKmV4dDRfYWxsb2Nfc2JpKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuZnMvZXh0NC9zdXBlci5jLTQzNzkte1xcbmZzL2V4dDQvc3VwZXIuYzo0MzgwOlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaTtcXG5mcy9leHQ0L3N1cGVyLmMtNDM4MS1cXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz00NDYxPXN0YXRpYyBpbnQgZXh0NF9oYW5kbGVfY2x1c3RlcnNpemUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5mcy9leHQ0L3N1cGVyLmMtNDQ2Mi17XFxuZnMvZXh0NC9zdXBlci5jOjQ0NjM6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTQ0NjQtXFx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzID0gc2JpLVxcdTAwM2VzX2VzO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTQ1MjM9c3RhdGljIHZvaWQgZXh0NF9hdG9taWNfd3JpdGVfaW5pdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbmZzL2V4dDQvc3VwZXIuYy00NTI0LXtcXG5mcy9leHQ0L3N1cGVyLmM6NDUyNTpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNDUyNi1cXHRzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gc2ItXFx1MDAzZXNfYmRldjtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz00NTQ5PXN0YXRpYyB2b2lkIGV4dDRfZmFzdF9jb21taXRfaW5pdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbmZzL2V4dDQvc3VwZXIuYy00NTUwLXtcXG5mcy9leHQ0L3N1cGVyLmM6NDU1MTpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNDU1Mi1cXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz00NTc0PXN0YXRpYyBpbnQgZXh0NF9pbm9kZV9pbmZvX2luaXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy00NTc2LXtcXG5mcy9leHQ0L3N1cGVyLmM6NDU3NzpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNDU3OC1cXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz00Njk0PXN0YXRpYyBpbnQgZXh0NF9pbml0X21ldGFkYXRhX2NzdW0oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzKVxcbmZzL2V4dDQvc3VwZXIuYy00Njk1LXtcXG5mcy9leHQ0L3N1cGVyLmM6NDY5NjpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNDY5Ny1cXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz00NzMwPXN0YXRpYyBpbnQgZXh0NF9jaGVja19mZWF0dXJlX2NvbXBhdGliaWxpdHkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy00NzMzLXtcXG5mcy9leHQ0L3N1cGVyLmM6NDczNDpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNDczNS1cXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz00ODM0PXN0YXRpYyBpbnQgZXh0NF9jaGVja19nZW9tZXRyeShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTQ4MzYte1xcbmZzL2V4dDQvc3VwZXIuYzo0ODM3OlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy00ODM4LVxcdF9fdTY0IGJsb2Nrc19jb3VudDtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz00OTEzPXN0YXRpYyBpbnQgZXh0NF9ncm91cF9kZXNjX2luaXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy00OTE3LXtcXG5mcy9leHQ0L3N1cGVyLmM6NDkxODpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNDkxOS1cXHR1bnNpZ25lZCBpbnQgZGJfY291bnQ7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NDk3Mz1zdGF0aWMgaW50IGV4dDRfbG9hZF9hbmRfaW5pdF9qb3VybmFsKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNDk3Ni17XFxuZnMvZXh0NC9zdXBlci5jOjQ5Nzc6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTQ5NzgtXFx0aW50IGVycjtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz01MDkwPXN0YXRpYyBjb25zdCBjaGFyICpleHQ0X2hhc19qb3VybmFsX29wdGlvbihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbmZzL2V4dDQvc3VwZXIuYy01MDkxLXtcXG5mcy9leHQ0L3N1cGVyLmM6NTA5MjpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNTA5My1cXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz01MTE1PXN0YXRpYyB2b2lkIGV4dDRfc2V0X21heF9tYXBwaW5nX29yZGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuZnMvZXh0NC9zdXBlci5jLTUxMTYte1xcbmZzL2V4dDQvc3VwZXIuYzo1MTE3OlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy01MTE4LVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTUxNDM9c3RhdGljIGludCBleHQ0X2xvYWRfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgZXh0NF9mc2Jsa190ICpsc2IsXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNTE0NS17XFxuZnMvZXh0NC9zdXBlci5jOjUxNDY6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTUxNDctXFx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTUyNTM9c3RhdGljIGludCBleHQ0X2hhc2hfaW5mb19pbml0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuZnMvZXh0NC9zdXBlci5jLTUyNTQte1xcbmZzL2V4dDQvc3VwZXIuYzo1MjU1OlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy01MjU2LVxcdHN0cnVjdCBleHQ0X3N1cGVyX2Jsb2NrICplcyA9IHNiaS1cXHUwMDNlc19lcztcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz01Mjk0PXN0YXRpYyBpbnQgZXh0NF9ibG9ja19ncm91cF9tZXRhX2luaXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHNpbGVudClcXG5mcy9leHQ0L3N1cGVyLmMtNTI5NS17XFxuZnMvZXh0NC9zdXBlci5jOjUyOTY6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTUyOTctXFx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzID0gc2JpLVxcdTAwM2VzX2VzO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTUzNTA9c3RhdGljIGJvb2wgZXh0NF9pc19zdHJpcGVfaW5jb21wYXRpYmxlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgc3RyaXBlKVxcbmZzL2V4dDQvc3VwZXIuYy01MzUxLXtcXG5mcy9leHQ0L3N1cGVyLmM6NTM1MjpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNTM1My1cXHRyZXR1cm4gKHN0cmlwZSBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgc2JpLVxcdTAwM2VzX2NsdXN0ZXJfcmF0aW8gXFx1MDAzZSAxIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NTM1Nz1zdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy01MzU5LVxcdHN0cnVjdCBleHQ0X3N1cGVyX2Jsb2NrICplcyA9IE5VTEw7XFxuZnMvZXh0NC9zdXBlci5jOjUzNjA6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTUzNjEtXFx0ZXh0NF9mc2Jsa190IGxvZ2ljYWxfc2JfYmxvY2s7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NTgzNT1zdGF0aWMgaW50IGV4dDRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNTgzNy1cXHRzdHJ1Y3QgZXh0NF9mc19jb250ZXh0ICpjdHggPSBmYy1cXHUwMDNlZnNfcHJpdmF0ZTtcXG5mcy9leHQ0L3N1cGVyLmM6NTgzODpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmk7XFxuZnMvZXh0NC9zdXBlci5jLTU4MzktXFx0Y29uc3QgY2hhciAqZGVzY3I7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NTg5NT1zdGF0aWMgdm9pZCBleHQ0X2luaXRfam91cm5hbF9wYXJhbXMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgam91cm5hbF90ICpqb3VybmFsKVxcbmZzL2V4dDQvc3VwZXIuYy01ODk2LXtcXG5mcy9leHQ0L3N1cGVyLmM6NTg5NzpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNTg5OC1cXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz02MjUwPXN0YXRpYyB2b2lkIGV4dDRfdXBkYXRlX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuZnMvZXh0NC9zdXBlci5jLTYyNTEte1xcbmZzL2V4dDQvc3VwZXIuYzo2MjUyOlxcdHN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaSA9IEVYVDRfU0Ioc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy02MjUzLVxcdHN0cnVjdCBleHQ0X3N1cGVyX2Jsb2NrICplcyA9IHNiaS1cXHUwMDNlc19lcztcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz02NDY0PXN0YXRpYyBpbnQgZXh0NF9zeW5jX2ZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB3YWl0KVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTY0NjgtXFx0Ym9vbCBuZWVkc19iYXJyaWVyID0gZmFsc2U7XFxuZnMvZXh0NC9zdXBlci5jOjY0Njk6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTY0NzAtXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NjU4Nj1zdGF0aWMgaW50IF9fZXh0NF9yZW1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy02NTg5LVxcdHN0cnVjdCBleHQ0X3N1cGVyX2Jsb2NrICplcztcXG5mcy9leHQ0L3N1cGVyLmM6NjU5MDpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNjU5MS1cXHR1bnNpZ25lZCBsb25nIG9sZF9zYl9mbGFncztcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz02OTg2PXN0YXRpYyBpbnQgZXh0NF9zdGF0ZnMoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTY5ODgtXFx0c3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGRlbnRyeS1cXHUwMDNlZF9zYjtcXG5mcy9leHQ0L3N1cGVyLmM6Njk4OTpcXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L3N1cGVyLmMtNjk5MC1cXHRzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMgPSBzYmktXFx1MDAzZXNfZXM7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NzUyMj1zdGF0aWMgdm9pZCBleHQ0X2tpbGxfc2Ioc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5mcy9leHQ0L3N1cGVyLmMtNzUyMy17XFxuZnMvZXh0NC9zdXBlci5jOjc1MjQ6XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XFxuZnMvZXh0NC9zdXBlci5jLTc1MjUtXFx0c3RydWN0IGZpbGUgKmJkZXZfZmlsZSA9IHNiaSA/IHNiaS1cXHUwMDNlc19qb3VybmFsX2JkZXZfZmlsZSA6IE5VTEw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDAyOjM3OjI1LjMxNjA5Nzc4N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjk3Mjc0MDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipEaXZpbmcgaW50byB0aGUgZXh0NCBTdXBlcmJsb2NrIEFsbG9jYXRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTGV0J3MgemVybyBpbiBvbiBgZXh0NF9hbGxvY19zYmlgLiBJIHJlbWVtYmVyIGhhdmluZyBhIHF1ZXN0aW9uIGFib3V0IGl0cyBoYW5kbGluZyBvZiBzdXBlcmJsb2NrIGluZm9ybWF0aW9uLiBJJ20gZ29pbmcgdG8gbmF2aWdhdGUgZGlyZWN0bHkgdG8gbGluZSA0Mzc4IGluIGBmcy9leHQ0L3N1cGVyLmNgLiBUaGF0IHNob3VsZCBiZSB0aGUgc3BvdCB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIGFsbG9jYXRpb24gb2YgdGhlIHN1cGVyIGJsb2NrIGluZm9ybWF0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIGFsbG9jYXRpb24gaXMgbWFuYWdlZCB3aXRoaW4gdGhlIGV4dDQgZmlsZXN5c3RlbSBzdHJ1Y3R1cmUuIEhvcGVmdWxseSwgdGhlIGNvZGUgY29tbWVudHMgYXJlIGNsZWFyISBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQncyBhY3R1YWxseSBnb2luZyBvbiBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4MTgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwMjozNzoyOC4wMTMzNzc4MjFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk3OTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL2V4dDQvc3VwZXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0Mzc1LFxuICBcIkxpbmVDb3VudFwiOiAzNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0Mzc1OlxcdFxcdGtmcmVlKHNiaSk7XFxuNDM3NjpcXHR9XFxuNDM3NzpcXHRcXG40Mzc4OlxcdHN0YXRpYyBzdHJ1Y3QgZXh0NF9zYl9pbmZvICpleHQ0X2FsbG9jX3NiaShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbjQzNzk6XFx0e1xcbjQzODA6XFx0XFx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpO1xcbjQzODE6XFx0XFxuNDM4MjpcXHRcXHRzYmkgPSBremFsbG9jX29iaigqc2JpKTtcXG40MzgzOlxcdFxcdGlmICghc2JpKVxcbjQzODQ6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuNDM4NTpcXHRcXG40Mzg2OlxcdFxcdHNiaS1cXHUwMDNlc19kYXhkZXYgPSBmc19kYXhfZ2V0X2J5X2JkZXYoc2ItXFx1MDAzZXNfYmRldiwgXFx1MDAyNnNiaS1cXHUwMDNlc19kYXhfcGFydF9vZmYsXFxuNDM4NzpcXHRcXHRcXHRcXHRcXHRcXHQgICBOVUxMLCBOVUxMKTtcXG40Mzg4OlxcdFxcbjQzODk6XFx0XFx0c2JpLVxcdTAwM2VzX2Jsb2NrZ3JvdXBfbG9jayA9XFxuNDM5MDpcXHRcXHRcXHRremFsbG9jX29iaihzdHJ1Y3QgYmxvY2tncm91cF9sb2NrKTtcXG40MzkxOlxcdFxcbjQzOTI6XFx0XFx0aWYgKCFzYmktXFx1MDAzZXNfYmxvY2tncm91cF9sb2NrKVxcbjQzOTM6XFx0XFx0XFx0Z290byBlcnJfb3V0O1xcbjQzOTQ6XFx0XFxuNDM5NTpcXHRcXHRzYi1cXHUwMDNlc19mc19pbmZvID0gc2JpO1xcbjQzOTY6XFx0XFx0c2JpLVxcdTAwM2VzX3NiID0gc2I7XFxuNDM5NzpcXHRcXHRyZXR1cm4gc2JpO1xcbjQzOTg6XFx0ZXJyX291dDpcXG40Mzk5OlxcdFxcdGZzX3B1dF9kYXgoc2JpLVxcdTAwM2VzX2RheGRldiwgTlVMTCk7XFxuNDQwMDpcXHRcXHRrZnJlZShzYmkpO1xcbjQ0MDE6XFx0XFx0cmV0dXJuIE5VTEw7XFxuNDQwMjpcXHR9XFxuNDQwMzpcXHRcXG40NDA0OlxcdHN0YXRpYyB2b2lkIGV4dDRfc2V0X2RlZl9vcHRzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuNDQwNTpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMpXFxuNDQwNjpcXHR7XFxuNDQwNzpcXHRcXHR1bnNpZ25lZCBsb25nIGRlZl9tb3VudF9vcHRzO1xcbjQ0MDg6XFx0XFxuNDQwOTpcXHRcXHQvKiBTZXQgZGVmYXVsdHMgYmVmb3JlIHdlIHBhcnNlIHRoZSBtb3VudCBvcHRpb25zICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDAyOjM3OjI4LjAxMzc3NzU4WiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU1NTU3Mzk1MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRXh0NCBPcnBoYW4gTG9jayBBbGlnbm1lbnQgQ2hhbmdlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBzdHJhaWdodGZvcndhcmQ6IHdlJ3JlIGFkZGluZyBgX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcGAgdG8gdGhlIGBzX29ycGhhbl9sb2NrYCBtdXRleCB3aXRoaW4gdGhlIGBleHQ0X3NiX2luZm9gIHN0cnVjdC4gVGhlIGFsbG9jYXRpb24gb2YgdGhpcyBzdHJ1Y3QgaXMgaGFuZGxlZCBieSBga3phbGxvY19vYmooKnNiaSlgLCBlbnN1cmluZyB6ZXJvIGluaXRpYWxpemF0aW9uLiBJJ3ZlIGNvbmZpcm1lZCBieSBleGFtaW5pbmcgdGhlIGRpZmYgdGhhdCB0aGlzIGlzIHRoZSAqb25seSogbW9kaWZpY2F0aW9uIHRvIHRoYXQgc3RydWN0LlxuXG5NeSBhbmFseXNpcyBmb2N1c2VzIG9uIHdoZXRoZXIgdGhpcyBjaGFuZ2UgY291bGQgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMuICBUaGUga2V5IHBvaW50cyBJIGNvbnNpZGVyZWQgYXJlOiBgc3RydWN0IGV4dDRfc2JfaW5mb2AgaXMgYW4gaW50ZXJuYWwga2VybmVsIHN0cnVjdHVyZSwgbm90IGV4cG9zZWQgdG8gdXNlciBzcGFjZS4gV2UncmUgKnJlYWxpZ25pbmcqIGEgbXV0ZXgsIG5vdCBpbnRyb2R1Y2luZyBuZXcgdmFyaWFibGVzIG9yIHN0cnVjdHMuICBga3phbGxvY19vYmpgIHplcm9lcyB0aGUgZW50aXJlIG1lbW9yeSByZWdpb24uIFRoaXMgbWVhbnMgdGhhdCBhZnRlciBhbGxvY2F0aW9uLCBubyBwYXJ0IG9mIHRoZSBzdHJ1Y3QgY29udGFpbnMgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlIGFyZSBubyByZWFkcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgbm8gbmV3IGJyYW5jaGVzLCBhbmQgbm8gZGF0YSBsZW5ndGggbWFuaXB1bGF0aW9uIHRoYXQgY291bGQgbGVhZCB0byBhIHZ1bG5lcmFiaWxpdHkuICBUaGlzIGNoYW5nZSBvbmx5IGNvbmNlcm5zIGNhY2hlbGluZSBhbGlnbm1lbnQgaW4gU01QIGtlcm5lbHMuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIGNoYW5nZSBzb2xlbHkgYWZmZWN0cyB0aGUgYWxpZ25tZW50IG9mIGFuIGFscmVhZHkgaW5pdGlhbGl6ZWQgbXV0ZXggd2l0aGluIGFuIGludGVybmFsIHN0cnVjdHVyZSwgaXQgZG9lc24ndCBjcmVhdGUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiAgR2l2ZW4gdGhpcyBhbmFseXNpcywgcnVubmluZyBhIEtNU0FOIHNlc3Npb24gaXNuJ3QgbmVjZXNzYXJ5LiBLQVNBTiB3b3VsZCBhbHNvIG5vdCB0cmlnZ2VyIGhlcmUsIGFzIHdlIGhhdmUgYWxyZWFkeSBlbnN1cmVkIHplcm9lZCBhbGxvY2F0aW9uLlxuXG5Ob3csIGxldCBtZSBlbnN1cmUgSSd2ZSBhZGRyZXNzZWQgYWxsIHJlcXVpcmVtZW50cy4gSSd2ZSBhbmFseXplZCB0aGUgY29kZSwgY29uc2lkZXJlZCB0aGUgaW1wbGljYXRpb25zLCBhbmQgY29uY2x1ZGVkIHRoYXQgS01TQU4gaXMgbm90IG5lY2Vzc2FyeSwgYXMgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkLiAgSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1NDksIk91dHB1dFRva2VucyI6MTc0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQ3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDI6Mzc6MzMuNTY5NTE5OTc0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHRoZSAnX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcCcgYXR0cmlidXRlIHRvIHRoZSAnc19vcnBoYW5fbG9jaycgbXV0ZXggaW4gJ3N0cnVjdCBleHQ0X3NiX2luZm8nIHRvIGFsaWduIGl0IHRvIGEgY2FjaGVsaW5lIGluIFNNUCBjb25maWd1cmF0aW9ucyBhbmQgcmVkdWNlIGZhbHNlIHNoYXJpbmcuXFxuXFxuJ3N0cnVjdCBleHQ0X3NiX2luZm8nIGlzIGFuIGludGVybmFsIHN1cGVyYmxvY2sgc3RhdGUgc3RydWN0dXJlIGFsbG9jYXRlZCB1c2luZyBremFsbG9jX29iaigpIGluIGV4dDRfYWxsb2Nfc2JpKCksIG1lYW5pbmcgYWxsIGZpZWxkcyBhbmQgYW55IGFsaWdubWVudCBwYWRkaW5nIGFyZSB6ZXJvLWluaXRpYWxpemVkIHVwb24gYWxsb2NhdGlvbi4gVGhlIHN0cnVjdHVyZSBpcyBuZXZlciBjb3BpZWQgdG8gdXNlcnNwYWNlLCBub3IgZG9lcyB0aGlzIGFsaWdubWVudCBhZGp1c3RtZW50IGFsdGVyIGNvbnRyb2wgZmxvdywgbGVuZ3RoIGNhbGN1bGF0aW9ucywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgaGFuZGxpbmcuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHRoZSAnX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcCcgYXR0cmlidXRlIHRvIHRoZSAnc19vcnBoYW5fbG9jaycgbXV0ZXggaW4gJ3N0cnVjdCBleHQ0X3NiX2luZm8nIHRvIGFsaWduIGl0IHRvIGEgY2FjaGVsaW5lIGluIFNNUCBjb25maWd1cmF0aW9ucyBhbmQgcmVkdWNlIGZhbHNlIHNoYXJpbmcuXFxuXFxuJ3N0cnVjdCBleHQ0X3NiX2luZm8nIGlzIGFuIGludGVybmFsIHN1cGVyYmxvY2sgc3RhdGUgc3RydWN0dXJlIGFsbG9jYXRlZCB1c2luZyBremFsbG9jX29iaigpIGluIGV4dDRfYWxsb2Nfc2JpKCksIG1lYW5pbmcgYWxsIGZpZWxkcyBhbmQgYW55IGFsaWdubWVudCBwYWRkaW5nIGFyZSB6ZXJvLWluaXRpYWxpemVkIHVwb24gYWxsb2NhdGlvbi4gVGhlIHN0cnVjdHVyZSBpcyBuZXZlciBjb3BpZWQgdG8gdXNlcnNwYWNlLCBub3IgZG9lcyB0aGlzIGFsaWdubWVudCBhZGp1c3RtZW50IGFsdGVyIGNvbnRyb2wgZmxvdywgbGVuZ3RoIGNhbGN1bGF0aW9ucywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgaGFuZGxpbmcuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnxgd[1] Phase: Succeeded StartedAt: 2026-09-04 02:37:45 +0000 UTC FinishedAt: 2026-09-04 02:37:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-04 02:37:45 +0000 UTC FinishedAt: 2026-09-04 02:37:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[2] Phase: Succeeded StartedAt: 2026-09-04 02:37:45 +0000 UTC FinishedAt: 2026-09-04 06:17:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-04 02:37:45 +0000 UTC FinishedAt: 2026-09-04 06:17:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-04 02:37:45 +0000 UTC FinishedAt: 2026-09-04 02:37:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-04 02:37:45 +0000 UTC FinishedAt: 2026-09-04 02:37:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowvnxgd/series-workflowvnxgd-convert-artifact-1954590546/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-04 02:37:56 +0000 UTC FinishedAt: 2026-09-04 02:54:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-04 02:37:56 +0000 UTC FinishedAt: 2026-09-04 02:54:02 +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:*052df2fa-a4f1-4525-a304-b58cfac70cf3,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-workflowvnxgd/series-workflowvnxgd-convert-artifact-1954590546/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": "e68ccb6c-8c4e-4042-8ee0-28f7c9211ec8", "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-workflowvnxgd/series-workflowvnxgd-build-action-1872765904/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-04 02:37:56 +0000 UTC FinishedAt: 2026-09-04 02:53:52 +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:*052df2fa-a4f1-4525-a304-b58cfac70cf3,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-workflowvnxgd/series-workflowvnxgd-convert-artifact-1954590546/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": "e68ccb6c-8c4e-4042-8ee0-28f7c9211ec8", "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-workflowvnxgd/series-workflowvnxgd-build-action-1872765904/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-04 02:54:02 +0000 UTC FinishedAt: 2026-09-04 02:54:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-04 02:54:02 +0000 UTC FinishedAt: 2026-09-04 02:54:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-04 02:54:02 +0000 UTC FinishedAt: 2026-09-04 02:54:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-04 02:54:02 +0000 UTC FinishedAt: 2026-09-04 02:54:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowvnxgd/series-workflowvnxgd-convert-artifact-3512077421/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-04 02:54:12 +0000 UTC FinishedAt: 2026-09-04 02:56:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-04 02:54:12 +0000 UTC FinishedAt: 2026-09-04 02:55:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e68ccb6c-8c4e-4042-8ee0-28f7c9211ec8,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-workflowvnxgd/series-workflowvnxgd-build-action-1872765904/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-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-04 02:56:03 +0000 UTC FinishedAt: 2026-09-04 02:56:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-04 02:56:03 +0000 UTC FinishedAt: 2026-09-04 02:56:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-04 02:56:03 +0000 UTC FinishedAt: 2026-09-04 03:12:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-04 02:56:03 +0000 UTC FinishedAt: 2026-09-04 03:12:17 +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:*052df2fa-a4f1-4525-a304-b58cfac70cf3,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-workflowvnxgd/series-workflowvnxgd-convert-artifact-3512077421/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": "819cf146-c159-4218-a035-d60f0c09337f", "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-workflowvnxgd/series-workflowvnxgd-build-action-633126345/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-04 02:56:03 +0000 UTC FinishedAt: 2026-09-04 03:12:07 +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:*052df2fa-a4f1-4525-a304-b58cfac70cf3,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-workflowvnxgd/series-workflowvnxgd-convert-artifact-3512077421/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": "819cf146-c159-4218-a035-d60f0c09337f", "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-workflowvnxgd/series-workflowvnxgd-build-action-633126345/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-04 03:12:17 +0000 UTC FinishedAt: 2026-09-04 03:12:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-04 03:12:17 +0000 UTC FinishedAt: 2026-09-04 03:12:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-04 03:12:17 +0000 UTC FinishedAt: 2026-09-04 03:14:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-04 03:12:17 +0000 UTC FinishedAt: 2026-09-04 03:14:00 +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:*819cf146-c159-4218-a035-d60f0c09337f,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-workflowvnxgd/series-workflowvnxgd-build-action-633126345/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-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-04 03:14:10 +0000 UTC FinishedAt: 2026-09-04 06:17:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-04 03:14:10 +0000 UTC FinishedAt: 2026-09-04 06:17:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"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:*e68ccb6c-8c4e-4042-8ee0-28f7c9211ec8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*819cf146-c159-4218-a035-d60f0c09337f,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-workflowvnxgd/series-workflowvnxgd-build-action-1872765904/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-workflowvnxgd/series-workflowvnxgd-build-action-633126345/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-04 03:14:10 +0000 UTC FinishedAt: 2026-09-04 03:14:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-04 03:14:10 +0000 UTC FinishedAt: 2026-09-04 03:14:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"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-workflowvnxgd/series-workflowvnxgd-convert-artifact-3593373906/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-04 03:14:10 +0000 UTC FinishedAt: 2026-09-04 03:14:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-04 03:14:10 +0000 UTC FinishedAt: 2026-09-04 03:14:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-04 03:14:10 +0000 UTC FinishedAt: 2026-09-04 03:14:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-04 03:14:20 +0000 UTC FinishedAt: 2026-09-04 06:17:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnxgd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_add","ext4_orphan_del","__ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d80aa4617b32f5054c5aa471d06b66704854935","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS","SMP"],"series_id":"cacbe552-e25d-4fc2-8e02-a6ec9fe6f8be","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-04 03:14:20 +0000 UTC FinishedAt: 2026-09-04 06:17:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e68ccb6c-8c4e-4042-8ee0-28f7c9211ec8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*819cf146-c159-4218-a035-d60f0c09337f,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-workflowvnxgd/series-workflowvnxgd-build-action-1872765904/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-workflowvnxgd/series-workflowvnxgd-build-action-633126345/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-workflowvnxgd/series-workflowvnxgd-convert-artifact-3593373906/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}