Name: series-workflowxjlnt Phase: Succeeded StartedAt: 2026-08-29 08:20:05 +0000 UTC FinishedAt: 2026-08-29 12:15:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[0] Phase: Succeeded StartedAt: 2026-08-29 08:20:05 +0000 UTC FinishedAt: 2026-08-29 08:37:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[0].run-triage Phase: Succeeded StartedAt: 2026-08-29 08:20:05 +0000 UTC FinishedAt: 2026-08-29 08:37:24 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2188569e7e1b0bc3f3b557dc97ab7a02befc11c8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_DRR", "NET_SCH_DUALPI2", "NET_SCH_ETS", "NET_SCH_FQ", "NET_SCH_FQ_PIE", "NET_SCH_HHF", "NET_SCH_PIE", "NET_SCH_SFQ" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2188569e7e1b0bc3f3b557dc97ab7a02befc11c8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_DRR", "NET_SCH_DUALPI2", "NET_SCH_ETS", "NET_SCH_FQ", "NET_SCH_FQ_PIE", "NET_SCH_HHF", "NET_SCH_PIE", "NET_SCH_SFQ" ], "series_id": "8a9c5930-6499-439f-b86b-ee5f428b958a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "drr_change_class", "ets_qdisc_change", "fq_change", "fq_init", "fq_pie_change", "hhf_change", "hhf_init", "sfq_change", "pie_drop_early" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA4OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0RSUiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0RVQUxQSTImIzM0OywKICAgICYjMzQ7TkVUX1NDSF9FVFMmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9GUSYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0ZRX1BJRSYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0hIRiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1BJRSYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1NGUSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Rycl9jaGFuZ2VfY2xhc3MmIzM0OywKICAgICYjMzQ7ZXRzX3FkaXNjX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtmcV9jaGFuZ2UmIzM0OywKICAgICYjMzQ7ZnFfaW5pdCYjMzQ7LAogICAgJiMzNDtmcV9waWVfY2hhbmdlJiMzNDssCiAgICAmIzM0O2hoZl9jaGFuZ2UmIzM0OywKICAgICYjMzQ7aGhmX2luaXQmIzM0OywKICAgICYjMzQ7c2ZxX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtwaWVfZHJvcF9lYXJseSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlc3RyaWN0cyBhbmQgY2xhbXBzIHF1YW50dW0gYW5kIE1UVSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgaW4gc2V2ZXJhbCBuZXQvc2NoZWQgcWRpc2MgaW1wbGVtZW50YXRpb25zIChzY2hfZHJyLCBzY2hfZHVhbHBpMiwgc2NoX2V0cywgc2NoX2ZxLCBzY2hfZnFfcGllLCBzY2hfaGhmLCBzY2hfcGllLCBzY2hfc2ZxKSB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzIG9yIGRpdmlzaW9uLWJ5LXplcm8vZGVnZW5lcmF0ZSBzY2hlZHVsaW5nIHN0YXRlcy4gQWxsIHRvdWNoZWQgdmFyaWFibGVzIGFyZSBwbGFpbiBzY2FsYXIgaW50ZWdlcnMgKHUzMi9zMzIpIHRoYXQgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGF0IHRoZSBwb2ludCBvZiBkZWZpbml0aW9uL2Fzc2lnbm1lbnQuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZSBwYWRkaW5nLCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzLCBvciBrZXJuZWwtdG8tdXNlciBjb3B5IG9wZXJhdGlvbnMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBhbmQgY2xhbXBpbmcgZm9yIE1UVSBhbmQgcXVhbnR1bSBib3VuZHMgYWNyb3NzIG11bHRpcGxlIHRyYWZmaWMgY29udHJvbCBzY2hlZHVsZXJzIChEUlIsIERVQUxQSTIsIEVUUywgRlEsIEZRLVBJRSwgSEhGLCBQSUUsIGFuZCBTRlEpLiBUaGVzZSBwYWNrZXQgc2NoZWR1bGVycyBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgY29uZmlndXJhYmxlIHZpYSBydG5ldGxpbmsuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDg6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiYmVhZjU5M2Y1ZGM0ZTVhOTBkOGRjODk4Y2U1ODBiZDVlMTAyMjUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMjkgMDg6MzU6NDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9kcnIuYyBiL25ldC9zY2hlZC9zY2hfZHJyLmNcbmluZGV4IDkxYjFlZjgyNGFmYWYuLjg2MjFkMDU3ZWRkOWYgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX2Ryci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2Ryci5jXG5AQCAtODIsOCAmIzQzOzgyLDkgQEAgc3RhdGljIGludCBkcnJfY2hhbmdlX2NsYXNzKHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgY2xhc3NpZCwgdTMyIHBhcmVudGlkLFxuIFx0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCYjMzQ7U3BlY2lmaWVkIERSUiBxdWFudHVtIGNhbm5vdCBiZSB6ZXJvXCYjMzQ7KTtcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0fVxuJiM0MztcdFx0cXVhbnR1bSA9IGNsYW1wX3QodTMyLCBxdWFudHVtLCAyNTYsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcdH0gZWxzZVxuLVx0XHRxdWFudHVtID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7XG4mIzQzO1x0XHRxdWFudHVtID0gY2xhbXBfdCh1MzIsICh1MzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuIFx0aWYgKGNsICE9IE5VTEwpIHtcbiBcdFx0aWYgKHRjYVtUQ0FfUkFURV0pIHtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5pbmRleCA0ZjY3OGQ0ZmYxMGVjLi40OTQ3ZGVmN2M0OWVmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5AQCAtMjA4LDkgJiM0MzsyMDgsMTEgQEAgc3RhdGljIHZvaWQgZHVhbHBpMl9yZXNldF9jX3Byb3RlY3Rpb24oc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSlcbiBzdGF0aWMgdm9pZCBkdWFscGkyX2NhbGN1bGF0ZV9jX3Byb3RlY3Rpb24oc3RydWN0IFFkaXNjICpzY2gsXG4gXHRcdFx0XHRcdCAgIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsIHUzMiB3YylcbiB7XG4mIzQzO1x0dTMyIG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuJiM0MztcbiBcdHEtXHUwMDNlY19wcm90ZWN0aW9uX3djID0gd2M7XG4gXHRxLVx1MDAzZWNfcHJvdGVjdGlvbl93bCA9IE1BWF9XQyAtIHdjO1xuLVx0cS1cdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkgKlxuJiM0MztcdHEtXHUwMDNlY19wcm90ZWN0aW9uX2luaXQgPSAoczMyKW10dSAqXG4gXHRcdCgoaW50KXEtXHUwMDNlY19wcm90ZWN0aW9uX3djIC0gKGludClxLVx1MDAzZWNfcHJvdGVjdGlvbl93bCk7XG4gXHRkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihxKTtcbiB9XG5AQCAtMjg1LDggJiM0MzsyODcsOSBAQCBzdGF0aWMgYm9vbCBtdXN0X2Ryb3Aoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsXG4gXHR1NjQgbG9jYWxfbF9wcm9iO1xuIFx0Ym9vbCBvdmVybG9hZDtcbiBcdHUzMiBwcm9iO1xuJiM0MztcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcbi1cdGlmIChzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgXHUwMDNjIDIgKiBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSlcbiYjNDM7XHRpZiAoc2NoLVx1MDAzZXFzdGF0cy5iYWNrbG9nIFx1MDAzYyAyICogbXR1KVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4gXHRwcm9iID0gUkVBRF9PTkNFKHEtXHUwMDNlcGkyX3Byb2IpO1xuQEAgLTcxMiw3ICYjNDM7NzE1LDggQEAgc3RhdGljIHUzMiBnZXRfbWVtb3J5X2xpbWl0KHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgbGltaXQpXG4gXHQvKiBBcHBseSBydWxlIG9mIHRodW1iLCBpLmUuLCBkb3VibGluZyB0aGUgcGFja2V0IGxlbmd0aCxcbiBcdCAqIHRvIGZ1cnRoZXIgaW5jbHVkZSBwZXIgcGFja2V0IG92ZXJoZWFkIGluIG1lbW9yeV9saW1pdC5cbiBcdCAqL1xuLVx0dTY0IG1lbWxpbSA9IG11bF91MzJfdTMyKGxpbWl0LCAyICogcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkpO1xuJiM0MztcdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAxLCAxIFx1MDAzY1x1MDAzYyAyMCkpO1xuIFxuIFx0aWYgKHVwcGVyXzMyX2JpdHMobWVtbGltKSlcbiBcdFx0cmV0dXJuIFUzMl9NQVg7XG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9ldHMuYyBiL25ldC9zY2hlZC9zY2hfZXRzLmNcbmluZGV4IDI1ZmNmNDA3OWZlY2UuLjZjYzkwMmEwMzgzODcgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX2V0cy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2V0cy5jXG5AQCAtODMsMTEgJiM0Mzs4Myw3IEBAIHN0YXRpYyBpbnQgZXRzX3F1YW50dW1fcGFyc2Uoc3RydWN0IFFkaXNjICpzY2gsIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4gXHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgKnF1YW50dW0sXG4gXHRcdFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4ge1xuLVx0KnF1YW50dW0gPSBubGFfZ2V0X3UzMihhdHRyKTtcbi1cdGlmICghKnF1YW50dW0pIHtcbi1cdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtFVFMgcXVhbnR1bSBjYW5ub3QgYmUgemVyb1wmIzM0Oyk7XG4tXHRcdHJldHVybiAtRUlOVkFMO1xuLVx0fVxuJiM0MztcdCpxdWFudHVtID0gY2xhbXBfdCh1MzIsIG5sYV9nZXRfdTMyKGF0dHIpLCAyNTYsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC02MzIsMTEgJiM0Mzs2MjgsMTMgQEAgc3RhdGljIGludCBldHNfcWRpc2NfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0cmV0dXJuIGVycjtcbiBcdH1cbiBcdC8qIElmIHRoZXJlIGFyZSBtb3JlIGJhbmRzIHRoYW4gc3RyaWN0ICYjNDM7IHF1YW50YSBwcm92aWRlZCwgdGhlIHJlbWFpbmluZ1xuLVx0ICogb25lcyBhcmUgRVRTIHdpdGggcXVhbnR1bSBvZiBNVFUuIEluaXRpYWxpemUgdGhlIG1pc3NpbmcgdmFsdWVzIGhlcmUuXG4mIzQzO1x0ICogb25lcyBhcmUgRVRTIHdpdGggcXVhbnR1bSBvZiBtYXgoTVRVLCAyNTYpLiBJbml0aWFsaXplIHRoZSBtaXNzaW5nXG4mIzQzO1x0ICogdmFsdWVzIGhlcmUuXG4gXHQgKi9cbiBcdGZvciAoaSA9IG5zdHJpY3Q7IGkgXHUwMDNjIG5iYW5kczsgaSYjNDM7JiM0MzspIHtcbiBcdFx0aWYgKCFxdWFudGFbaV0pXG4tXHRcdFx0cXVhbnRhW2ldID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7XG4mIzQzO1x0XHRcdHF1YW50YVtpXSA9IGNsYW1wX3QodTMyLCAodTMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLFxuJiM0MztcdFx0XHRcdFx0ICAgIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0fVxuIFxuIFx0LyogQmVmb3JlIGNvbW1pdCwgbWFrZSBzdXJlIHdlIGNhbiBhbGxvY2F0ZSBhbGwgbmV3IHFkaXNjcyAqL1xuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnEuYyBiL25ldC9zY2hlZC9zY2hfZnEuY1xuaW5kZXggNjE0NGI1Njg2ZjEzZi4uMzVmOTQwYjIyMDVkZiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZnEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9mcS5jXG5AQCAtOTgwLDcgJiM0Mzs5ODAsNyBAQCBzdGF0aWMgaW50IGZxX3Jlc2l6ZShzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxvZylcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRsaW5rX3JhbmdlX3ZhbGlkYXRpb24gaXFfcmFuZ2UgPSB7XG4tXHQubWF4ID0gSU5UX01BWCxcbiYjNDM7XHQubWF4ID0gMSBcdTAwM2NcdTAwM2MgMjAsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZnFfcG9saWN5W1RDQV9GUV9NQVggJiM0MzsgMV0gPSB7XG5AQCAtMTEwNiwxNCAmIzQzOzExMDYsMTAgQEAgc3RhdGljIGludCBmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0XHQgICBubGFfZ2V0X3UzMih0YltUQ0FfRlFfRkxPV19QTElNSVRdKSk7XG4gXG4gXHRpZiAodGJbVENBX0ZRX1FVQU5UVU1dKSB7XG4tXHRcdHUzMiBxdWFudHVtID0gbmxhX2dldF91MzIodGJbVENBX0ZRX1FVQU5UVU1dKTtcbiYjNDM7XHRcdHUzMiBxdWFudHVtID0gY2xhbXBfdCh1MzIsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSksXG4mIzQzO1x0XHRcdFx0ICAgICAyNTYsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcbi1cdFx0aWYgKHF1YW50dW0gXHUwMDNlIDAgXHUwMDI2XHUwMDI2IHF1YW50dW0gXHUwMDNjPSAoMSBcdTAwM2NcdTAwM2MgMjApKSB7XG4tXHRcdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sIHF1YW50dW0pO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O2ludmFsaWQgcXVhbnR1bVwmIzM0Oyk7XG4tXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0fVxuJiM0MztcdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sIHF1YW50dW0pO1xuIFx0fVxuIFxuIFx0aWYgKHRiW1RDQV9GUV9JTklUSUFMX1FVQU5UVU1dKVxuQEAgLTEyMzIsNyAmIzQzOzEyMjgsNyBAQCBzdGF0aWMgaW50IGZxX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdHNjaC1cdTAwM2VsaW1pdFx0XHQ9IDEwMDAwO1xuIFx0cS1cdTAwM2VmbG93X3BsaW1pdFx0XHQ9IDEwMDtcbiBcdG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuLVx0cS1cdTAwM2VxdWFudHVtXHRcdD0gbWluX3QodTMyLCAyICogbXR1LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4mIzQzO1x0cS1cdTAwM2VxdWFudHVtXHRcdD0gY2xhbXBfdCh1MzIsIDIgKiBtdHUsIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0cS1cdTAwM2Vpbml0aWFsX3F1YW50dW1cdD0gbWluX3QodTMyLCAxMCAqIG10dSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0cS1cdTAwM2VmbG93X3JlZmlsbF9kZWxheVx0PSBtc2Vjc190b19qaWZmaWVzKDQwKTtcbiBcdHEtXHUwMDNlZmxvd19tYXhfcmF0ZVx0PSB+MFVMO1xuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnFfcGllLmMgYi9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jXG5pbmRleCBiMjdkOTU0MTg3MDdhLi41OTgyODQ3ZGY4Zjg1IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuQEAgLTM0MSw3ICYjNDM7MzQxLDggQEAgc3RhdGljIGludCBmcV9waWVfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0ICAgbmxhX2dldF91MzIodGJbVENBX0ZRX1BJRV9CRVRBXSkpO1xuIFxuIFx0aWYgKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pXG4tXHRcdFdSSVRFX09OQ0UocS1cdTAwM2VxdWFudHVtLCBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX1FVQU5UVU1dKSk7XG4mIzQzO1x0XHRXUklURV9PTkNFKHEtXHUwMDNlcXVhbnR1bSxcbiYjNDM7XHRcdFx0ICAgbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKSk7XG4gXG4gXHRpZiAodGJbVENBX0ZRX1BJRV9NRU1PUllfTElNSVRdKVxuIFx0XHRXUklURV9PTkNFKHEtXHUwMDNlbWVtb3J5X2xpbWl0LFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfaGhmLmMgYi9uZXQvc2NoZWQvc2NoX2hoZi5jXG5pbmRleCA5NmFjYWI2YThkYTAzLi5mYzcyZjgyNWZiZDkyIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9oaGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9oaGYuY1xuQEAgLTU1MSw3ICYjNDM7NTUxLDcgQEAgc3RhdGljIGludCBoaGZfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdHJldHVybiBlcnI7XG4gXG4gXHRpZiAodGJbVENBX0hIRl9RVUFOVFVNXSlcbi1cdFx0bmV3X3F1YW50dW0gPSBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX1FVQU5UVU1dKTtcbiYjNDM7XHRcdG5ld19xdWFudHVtID0gbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfUVVBTlRVTV0pKTtcbiBcbiBcdGlmICh0YltUQ0FfSEhGX05PTl9ISF9XRUlHSFRdKVxuIFx0XHRuZXdfaGhmX25vbl9oaF93ZWlnaHQgPSBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX05PTl9ISF9XRUlHSFRdKTtcbkBAIC02MTMsNyAmIzQzOzYxMyw3IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdGludCBpO1xuIFxuIFx0c2NoLVx1MDAzZWxpbWl0ID0gMTAwMDtcbi1cdHEtXHUwMDNlcXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuJiM0MztcdHEtXHUwMDNlcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHRnZXRfcmFuZG9tX2J5dGVzKFx1MDAyNnEtXHUwMDNlcGVydHVyYmF0aW9uLCBzaXplb2YocS1cdTAwM2VwZXJ0dXJiYXRpb24pKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNnEtXHUwMDNlbmV3X2J1Y2tldHMpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2cS1cdTAwM2VvbGRfYnVja2V0cyk7XG5AQCAtNjI0LDEwICYjNDM7NjI0LDYgQEAgc3RhdGljIGludCBoaGZfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0cS1cdTAwM2VoaGZfZXZpY3RfdGltZW91dCA9IEhaOyAgICAgIC8qIDEgIHNlYyAqL1xuIFx0cS1cdTAwM2VoaGZfbm9uX2hoX3dlaWdodCA9IDI7XG4gXG4tXHRpZiAoKGludClxLVx1MDAzZXF1YW50dW0gXHUwMDNjPSAwIHx8XG4tXHQgICAgKHU2NClxLVx1MDAzZXF1YW50dW0gKiBxLVx1MDAzZWhoZl9ub25faGhfd2VpZ2h0IFx1MDAzZSBJTlRfTUFYKVxuLVx0XHRxLVx1MDAzZXF1YW50dW0gPSAyNTY7XG4tXG4gXHRpZiAob3B0KSB7XG4gXHRcdGludCBlcnIgPSBoaGZfY2hhbmdlKHNjaCwgb3B0LCBleHRhY2spO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfcGllLmMgYi9uZXQvc2NoZWQvc2NoX3BpZS5jXG5pbmRleCBiNDFmMmRlZjJlMmNjLi4zYjc4NjNmZmQyODRjIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9waWUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9waWUuY1xuQEAgLTM1LDcgJiM0MzszNSw3IEBAIGJvb2wgcGllX2Ryb3BfZWFybHkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBwaWVfcGFyYW1zICpwYXJhbXMsXG4ge1xuIFx0dTY0IHJuZDtcbiBcdHU2NCBsb2NhbF9wcm9iID0gdmFycy1cdTAwM2Vwcm9iO1xuLVx0dTMyIG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuJiM0MztcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcbiBcdC8qIElmIHRoZXJlIGlzIHN0aWxsIGJ1cnN0IGFsbG93YW5jZSBsZWZ0IHNraXAgcmFuZG9tIGVhcmx5IGRyb3AgKi9cbiBcdGlmICh2YXJzLVx1MDAzZWJ1cnN0X3RpbWUgXHUwMDNlIDApXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9zZnEuYyBiL25ldC9zY2hlZC9zY2hfc2ZxLmNcbmluZGV4IDE4N2QzZWQ1NzhmMjYuLjhiYmNmYzllODVkOTQgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX3NmcS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX3NmcS5jXG5AQCAtNjYwLDYgJiM0Mzs2NjAsMTEgQEAgc3RhdGljIGludCBzZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuJiM0MztcdGlmIChjdGwtXHUwMDNlcXVhbnR1bSBcdTAwM2UgMSBcdTAwM2NcdTAwM2MgMjApIHtcbiYjNDM7XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O3F1YW50dW0gdG9vIGxhcmdlXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAoY3RsLVx1MDAzZXBlcnR1cmJfcGVyaW9kIFx1MDAzYyAwIHx8XG4gXHQgICAgY3RsLVx1MDAzZXBlcnR1cmJfcGVyaW9kIFx1MDAzZSBJTlRfTUFYIC8gSFopIHtcbiBcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCYjMzQ7aW52YWxpZCBwZXJ0dXJiIHBlcmlvZFwmIzM0Oyk7XG5AQCAtNjg4LDcgJiM0Mzs2OTMsNyBAQCBzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcbiBcdC8qIHVwZGF0ZSBhbmQgdmFsaWRhdGUgY29uZmlndXJhdGlvbiAqL1xuIFx0aWYgKGN0bC1cdTAwM2VxdWFudHVtKVxuLVx0XHRxdWFudHVtID0gY3RsLVx1MDAzZXF1YW50dW07XG4mIzQzO1x0XHRxdWFudHVtID0gbWF4KDI1NlUsIGN0bC1cdTAwM2VxdWFudHVtKTtcbiBcdGlmIChjdGwtXHUwMDNlZmxvd3MpXG4gXHRcdG1heGZsb3dzID0gbWluX3QodTMyLCBjdGwtXHUwMDNlZmxvd3MsIFNGUV9NQVhfRkxPV1MpO1xuIFx0aWYgKGN0bC1cdTAwM2VkaXZpc29yKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDg6MzU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRFJSJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRFVBTFBJMiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0VUUyYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0ZRJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRlFfUElFJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfSEhGJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfUElFJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfU0ZRJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJyX2NoYW5nZV9jbGFzcyYjMzQ7LAogICAgJiMzNDtldHNfcWRpc2NfY2hhbmdlJiMzNDssCiAgICAmIzM0O2ZxX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtmcV9pbml0JiMzNDssCiAgICAmIzM0O2ZxX3BpZV9jaGFuZ2UmIzM0OywKICAgICYjMzQ7aGhmX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtoaGZfaW5pdCYjMzQ7LAogICAgJiMzNDtzZnFfY2hhbmdlJiMzNDssCiAgICAmIzM0O3BpZV9kcm9wX2Vhcmx5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhcmFtZXRlciB2YWxpZGF0aW9uIGFuZCBjbGFtcGluZyBmb3IgTVRVIGFuZCBxdWFudHVtIGJvdW5kcyBhY3Jvc3MgbXVsdGlwbGUgdHJhZmZpYyBjb250cm9sIHNjaGVkdWxlcnMgKERSUiwgRFVBTFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgYW5kIFNGUSkuIFRoZXNlIHBhY2tldCBzY2hlZHVsZXJzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBjb25maWd1cmFibGUgdmlhIHJ0bmV0bGluay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGJiZWFmNTkzZjVkYzRlNWE5MGQ4ZGM4OThjZTU4MGJkNWUxMDIyNTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAyOSAwODozNTo0NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZHJyLmMgYi9uZXQvc2NoZWQvc2NoX2Ryci5jCmluZGV4IDkxYjFlZjgyNGFmYWYuLjg2MjFkMDU3ZWRkOWYgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZHJyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9kcnIuYwpAQCAtODIsOCAmIzQzOzgyLDkgQEAgc3RhdGljIGludCBkcnJfY2hhbmdlX2NsYXNzKHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgY2xhc3NpZCwgdTMyIHBhcmVudGlkLAogCQkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAmIzM0O1NwZWNpZmllZCBEUlIgcXVhbnR1bSBjYW5ub3QgYmUgemVybyYjMzQ7KTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CiYjNDM7CQlxdWFudHVtID0gY2xhbXBfdCh1MzIsIHF1YW50dW0sIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAJfSBlbHNlCi0JCXF1YW50dW0gPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTsKJiM0MzsJCXF1YW50dW0gPSBjbGFtcF90KHUzMiwgKHUzMilwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMjU2LCAxICZsdDsmbHQ7IDIwKTsKIAogCWlmIChjbCAhPSBOVUxMKSB7CiAJCWlmICh0Y2FbVENBX1JBVEVdKSB7CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jCmluZGV4IDRmNjc4ZDRmZjEwZWMuLjQ5NDdkZWY3YzQ5ZWYgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jCkBAIC0yMDgsOSAmIzQzOzIwOCwxMSBAQCBzdGF0aWMgdm9pZCBkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxKQogc3RhdGljIHZvaWQgZHVhbHBpMl9jYWxjdWxhdGVfY19wcm90ZWN0aW9uKHN0cnVjdCBRZGlzYyAqc2NoLAogCQkJCQkgICBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLCB1MzIgd2MpCiB7CiYjNDM7CXUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgJmx0OyZsdDsgMjApOwomIzQzOwogCXEtJmd0O2NfcHJvdGVjdGlvbl93YyA9IHdjOwogCXEtJmd0O2NfcHJvdGVjdGlvbl93bCA9IE1BWF9XQyAtIHdjOwotCXEtJmd0O2NfcHJvdGVjdGlvbl9pbml0ID0gKHMzMilwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSAqCiYjNDM7CXEtJmd0O2NfcHJvdGVjdGlvbl9pbml0ID0gKHMzMiltdHUgKgogCQkoKGludClxLSZndDtjX3Byb3RlY3Rpb25fd2MgLSAoaW50KXEtJmd0O2NfcHJvdGVjdGlvbl93bCk7CiAJZHVhbHBpMl9yZXNldF9jX3Byb3RlY3Rpb24ocSk7CiB9CkBAIC0yODUsOCAmIzQzOzI4Nyw5IEBAIHN0YXRpYyBib29sIG11c3RfZHJvcChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwKIAl1NjQgbG9jYWxfbF9wcm9iOwogCWJvb2wgb3ZlcmxvYWQ7CiAJdTMyIHByb2I7CiYjNDM7CXUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgJmx0OyZsdDsgMjApOwogCi0JaWYgKHNjaC0mZ3Q7cXN0YXRzLmJhY2tsb2cgJmx0OyAyICogcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkpCiYjNDM7CWlmIChzY2gtJmd0O3FzdGF0cy5iYWNrbG9nICZsdDsgMiAqIG10dSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJcHJvYiA9IFJFQURfT05DRShxLSZndDtwaTJfcHJvYik7CkBAIC03MTIsNyAmIzQzOzcxNSw4IEBAIHN0YXRpYyB1MzIgZ2V0X21lbW9yeV9saW1pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxpbWl0KQogCS8qIEFwcGx5IHJ1bGUgb2YgdGh1bWIsIGkuZS4sIGRvdWJsaW5nIHRoZSBwYWNrZXQgbGVuZ3RoLAogCSAqIHRvIGZ1cnRoZXIgaW5jbHVkZSBwZXIgcGFja2V0IG92ZXJoZWFkIGluIG1lbW9yeV9saW1pdC4KIAkgKi8KLQl1NjQgbWVtbGltID0gbXVsX3UzMl91MzIobGltaXQsIDIgKiBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSk7CiYjNDM7CXU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwKJiM0MzsJCQkJCQkgICAgIDEsIDEgJmx0OyZsdDsgMjApKTsKIAogCWlmICh1cHBlcl8zMl9iaXRzKG1lbWxpbSkpCiAJCXJldHVybiBVMzJfTUFYOwpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9ldHMuYyBiL25ldC9zY2hlZC9zY2hfZXRzLmMKaW5kZXggMjVmY2Y0MDc5ZmVjZS4uNmNjOTAyYTAzODM4NyAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9ldHMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2V0cy5jCkBAIC04MywxMSAmIzQzOzgzLDcgQEAgc3RhdGljIGludCBldHNfcXVhbnR1bV9wYXJzZShzdHJ1Y3QgUWRpc2MgKnNjaCwgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwKIAkJCSAgICAgdW5zaWduZWQgaW50ICpxdWFudHVtLAogCQkJICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiB7Ci0JKnF1YW50dW0gPSBubGFfZ2V0X3UzMihhdHRyKTsKLQlpZiAoISpxdWFudHVtKSB7Ci0JCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDtFVFMgcXVhbnR1bSBjYW5ub3QgYmUgemVybyYjMzQ7KTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQomIzQzOwkqcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMihhdHRyKSwgMjU2LCAxICZsdDsmbHQ7IDIwKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtNjMyLDExICYjNDM7NjI4LDEzIEBAIHN0YXRpYyBpbnQgZXRzX3FkaXNjX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCQkJcmV0dXJuIGVycjsKIAl9CiAJLyogSWYgdGhlcmUgYXJlIG1vcmUgYmFuZHMgdGhhbiBzdHJpY3QgJiM0MzsgcXVhbnRhIHByb3ZpZGVkLCB0aGUgcmVtYWluaW5nCi0JICogb25lcyBhcmUgRVRTIHdpdGggcXVhbnR1bSBvZiBNVFUuIEluaXRpYWxpemUgdGhlIG1pc3NpbmcgdmFsdWVzIGhlcmUuCiYjNDM7CSAqIG9uZXMgYXJlIEVUUyB3aXRoIHF1YW50dW0gb2YgbWF4KE1UVSwgMjU2KS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZwomIzQzOwkgKiB2YWx1ZXMgaGVyZS4KIAkgKi8KIAlmb3IgKGkgPSBuc3RyaWN0OyBpICZsdDsgbmJhbmRzOyBpJiM0MzsmIzQzOykgewogCQlpZiAoIXF1YW50YVtpXSkKLQkJCXF1YW50YVtpXSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpOwomIzQzOwkJCXF1YW50YVtpXSA9IGNsYW1wX3QodTMyLCAodTMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLAomIzQzOwkJCQkJICAgIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAJfQogCiAJLyogQmVmb3JlIGNvbW1pdCwgbWFrZSBzdXJlIHdlIGNhbiBhbGxvY2F0ZSBhbGwgbmV3IHFkaXNjcyAqLwpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9mcS5jIGIvbmV0L3NjaGVkL3NjaF9mcS5jCmluZGV4IDYxNDRiNTY4NmYxM2YuLjM1Zjk0MGIyMjA1ZGYgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZnEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2ZxLmMKQEAgLTk4MCw3ICYjNDM7OTgwLDcgQEAgc3RhdGljIGludCBmcV9yZXNpemUoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBsb2cpCiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0bGlua19yYW5nZV92YWxpZGF0aW9uIGlxX3JhbmdlID0gewotCS5tYXggPSBJTlRfTUFYLAomIzQzOwkubWF4ID0gMSAmbHQ7Jmx0OyAyMCwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBmcV9wb2xpY3lbVENBX0ZRX01BWCAmIzQzOyAxXSA9IHsKQEAgLTExMDYsMTQgJiM0MzsxMTA2LDEwIEBAIHN0YXRpYyBpbnQgZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJCQkgICBubGFfZ2V0X3UzMih0YltUQ0FfRlFfRkxPV19QTElNSVRdKSk7CiAKIAlpZiAodGJbVENBX0ZRX1FVQU5UVU1dKSB7Ci0JCXUzMiBxdWFudHVtID0gbmxhX2dldF91MzIodGJbVENBX0ZRX1FVQU5UVU1dKTsKJiM0MzsJCXUzMiBxdWFudHVtID0gY2xhbXBfdCh1MzIsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSksCiYjNDM7CQkJCSAgICAgMjU2LCAxICZsdDsmbHQ7IDIwKTsKIAotCQlpZiAocXVhbnR1bSAmZ3Q7IDAgJmFtcDsmYW1wOyBxdWFudHVtICZsdDs9ICgxICZsdDsmbHQ7IDIwKSkgewotCQkJV1JJVEVfT05DRShxLSZndDtxdWFudHVtLCBxdWFudHVtKTsKLQkJfSBlbHNlIHsKLQkJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssICYjMzQ7aW52YWxpZCBxdWFudHVtJiMzNDspOwotCQkJZXJyID0gLUVJTlZBTDsKLQkJfQomIzQzOwkJV1JJVEVfT05DRShxLSZndDtxdWFudHVtLCBxdWFudHVtKTsKIAl9CiAKIAlpZiAodGJbVENBX0ZRX0lOSVRJQUxfUVVBTlRVTV0pCkBAIC0xMjMyLDcgJiM0MzsxMjI4LDcgQEAgc3RhdGljIGludCBmcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJc2NoLSZndDtsaW1pdAkJPSAxMDAwMDsKIAlxLSZndDtmbG93X3BsaW1pdAkJPSAxMDA7CiAJbXR1ID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAxLCAxICZsdDsmbHQ7IDIwKTsKLQlxLSZndDtxdWFudHVtCQk9IG1pbl90KHUzMiwgMiAqIG10dSwgMSAmbHQ7Jmx0OyAyMCk7CiYjNDM7CXEtJmd0O3F1YW50dW0JCT0gY2xhbXBfdCh1MzIsIDIgKiBtdHUsIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAJcS0mZ3Q7aW5pdGlhbF9xdWFudHVtCT0gbWluX3QodTMyLCAxMCAqIG10dSwgMSAmbHQ7Jmx0OyAyMCk7CiAJcS0mZ3Q7Zmxvd19yZWZpbGxfZGVsYXkJPSBtc2Vjc190b19qaWZmaWVzKDQwKTsKIAlxLSZndDtmbG93X21heF9yYXRlCT0gfjBVTDsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnFfcGllLmMgYi9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jCmluZGV4IGIyN2Q5NTQxODcwN2EuLjU5ODI4NDdkZjhmODUgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZnFfcGllLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuYwpAQCAtMzQxLDcgJiM0MzszNDEsOCBAQCBzdGF0aWMgaW50IGZxX3BpZV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkJCSAgIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfQkVUQV0pKTsKIAogCWlmICh0YltUQ0FfRlFfUElFX1FVQU5UVU1dKQotCQlXUklURV9PTkNFKHEtJmd0O3F1YW50dW0sIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKTsKJiM0MzsJCVdSSVRFX09OQ0UocS0mZ3Q7cXVhbnR1bSwKJiM0MzsJCQkgICBtYXgoMjU2VSwgbmxhX2dldF91MzIodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSkpKTsKIAogCWlmICh0YltUQ0FfRlFfUElFX01FTU9SWV9MSU1JVF0pCiAJCVdSSVRFX09OQ0UocS0mZ3Q7bWVtb3J5X2xpbWl0LApkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9oaGYuYyBiL25ldC9zY2hlZC9zY2hfaGhmLmMKaW5kZXggOTZhY2FiNmE4ZGEwMy4uZmM3MmY4MjVmYmQ5MiAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9oaGYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2hoZi5jCkBAIC01NTEsNyAmIzQzOzU1MSw3IEBAIHN0YXRpYyBpbnQgaGhmX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCQlyZXR1cm4gZXJyOwogCiAJaWYgKHRiW1RDQV9ISEZfUVVBTlRVTV0pCi0JCW5ld19xdWFudHVtID0gbmxhX2dldF91MzIodGJbVENBX0hIRl9RVUFOVFVNXSk7CiYjNDM7CQluZXdfcXVhbnR1bSA9IG1heCgyNTZVLCBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX1FVQU5UVU1dKSk7CiAKIAlpZiAodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSkKIAkJbmV3X2hoZl9ub25faGhfd2VpZ2h0ID0gbmxhX2dldF91MzIodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSk7CkBAIC02MTMsNyAmIzQzOzYxMyw3IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAlpbnQgaTsKIAogCXNjaC0mZ3Q7bGltaXQgPSAxMDAwOwotCXEtJmd0O3F1YW50dW0gPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTsKJiM0MzsJcS0mZ3Q7cXVhbnR1bSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMjU2LCAxICZsdDsmbHQ7IDIwKTsKIAlnZXRfcmFuZG9tX2J5dGVzKCZhbXA7cS0mZ3Q7cGVydHVyYmF0aW9uLCBzaXplb2YocS0mZ3Q7cGVydHVyYmF0aW9uKSk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtxLSZndDtuZXdfYnVja2V0cyk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtxLSZndDtvbGRfYnVja2V0cyk7CkBAIC02MjQsMTAgJiM0Mzs2MjQsNiBAQCBzdGF0aWMgaW50IGhoZl9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJcS0mZ3Q7aGhmX2V2aWN0X3RpbWVvdXQgPSBIWjsgICAgICAvKiAxICBzZWMgKi8KIAlxLSZndDtoaGZfbm9uX2hoX3dlaWdodCA9IDI7CiAKLQlpZiAoKGludClxLSZndDtxdWFudHVtICZsdDs9IDAgfHwKLQkgICAgKHU2NClxLSZndDtxdWFudHVtICogcS0mZ3Q7aGhmX25vbl9oaF93ZWlnaHQgJmd0OyBJTlRfTUFYKQotCQlxLSZndDtxdWFudHVtID0gMjU2OwotCiAJaWYgKG9wdCkgewogCQlpbnQgZXJyID0gaGhmX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTsKIApkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9waWUuYyBiL25ldC9zY2hlZC9zY2hfcGllLmMKaW5kZXggYjQxZjJkZWYyZTJjYy4uM2I3ODYzZmZkMjg0YyAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9waWUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX3BpZS5jCkBAIC0zNSw3ICYjNDM7MzUsNyBAQCBib29sIHBpZV9kcm9wX2Vhcmx5KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgcGllX3BhcmFtcyAqcGFyYW1zLAogewogCXU2NCBybmQ7CiAJdTY0IGxvY2FsX3Byb2IgPSB2YXJzLSZndDtwcm9iOwotCXUzMiBtdHUgPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTsKJiM0MzsJdTMyIG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSAmbHQ7Jmx0OyAyMCk7CiAKIAkvKiBJZiB0aGVyZSBpcyBzdGlsbCBidXJzdCBhbGxvd2FuY2UgbGVmdCBza2lwIHJhbmRvbSBlYXJseSBkcm9wICovCiAJaWYgKHZhcnMtJmd0O2J1cnN0X3RpbWUgJmd0OyAwKQpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9zZnEuYyBiL25ldC9zY2hlZC9zY2hfc2ZxLmMKaW5kZXggMTg3ZDNlZDU3OGYyNi4uOGJiY2ZjOWU4NWQ5NCAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9zZnEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX3NmcS5jCkBAIC02NjAsNiAmIzQzOzY2MCwxMSBAQCBzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCiYjNDM7CWlmIChjdGwtJmd0O3F1YW50dW0gJmd0OyAxICZsdDsmbHQ7IDIwKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCAmIzM0O3F1YW50dW0gdG9vIGxhcmdlJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlpZiAoY3RsLSZndDtwZXJ0dXJiX3BlcmlvZCAmbHQ7IDAgfHwKIAkgICAgY3RsLSZndDtwZXJ0dXJiX3BlcmlvZCAmZ3Q7IElOVF9NQVggLyBIWikgewogCQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCAmIzM0O2ludmFsaWQgcGVydHVyYiBwZXJpb2QmIzM0Oyk7CkBAIC02ODgsNyAmIzQzOzY5Myw3IEBAIHN0YXRpYyBpbnQgc2ZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCiAJLyogdXBkYXRlIGFuZCB2YWxpZGF0ZSBjb25maWd1cmF0aW9uICovCiAJaWYgKGN0bC0mZ3Q7cXVhbnR1bSkKLQkJcXVhbnR1bSA9IGN0bC0mZ3Q7cXVhbnR1bTsKJiM0MzsJCXF1YW50dW0gPSBtYXgoMjU2VSwgY3RsLSZndDtxdWFudHVtKTsKIAlpZiAoY3RsLSZndDtmbG93cykKIAkJbWF4Zmxvd3MgPSBtaW5fdCh1MzIsIGN0bC0mZ3Q7Zmxvd3MsIFNGUV9NQVhfRkxPV1MpOwogCWlmIChjdGwtJmd0O2Rpdmlzb3IpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDg6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUzOAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKgoKT2theSwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2ggYW5kIGRlY2lkZSBpZiBpdCYjMzk7cyBmdXp6LXdvcnRoeS4gVGhlIGZhY3QgdGhhdCBpdCB0b3VjaGVzIG11bHRpcGxlIGBuZXQvc2NoZWRgIHFkaXNjcyBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEl0IHNlZW1zIHRvIG1vZGlmeSBhIHNsZXcgb2YgdGhlbTogYHNjaF9kcnIuY2AsIGBzY2hfZHVhbHBpMi5jYCwgYHNjaF9ldHMuY2AsIGBzY2hfZnEuY2AsIGBzY2hfZnFfcGllLmNgLCBgc2NoX2hoZi5jYCwgYHNjaF9waWUuY2AsIGFuZCBgc2NoX3NmcS5jYC4KCk5vdywgZGlnZ2luZyBkZWVwZXIsIGl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgb2YgdGhlc2UgY2hhbmdlcyByZXZvbHZlcyBhcm91bmQgY2xhbXBpbmcgYW5kIHNhbml0aXppbmcgYHF1YW50dW1gIGFuZCBgbXR1YCB2YWx1ZXMgYWNyb3NzIHRoZXNlIHRyYWZmaWMgY29udHJvbCBzY2hlZHVsZXJzLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBlbmZvcmNpbmcgbWluaW11bXMgYW5kIG1heGltdW1zLCBlc3NlbnRpYWxseSBib3VuZGluZyB0aGVzZSB2YWx1ZXMgdG8gcHJldmVudCBvdmVyZmxvd3MsIHBvdGVudGlhbCBpbmZpbml0ZSBsb29wcywgZGl2aXNpb24gYnkgemVybyBlcnJvcnMsIG5lZ2F0aXZlIHZhbHVlcywgYW5kIGxhcmdlIGFsbG9jYXRpb24gaXNzdWVzLiBUaGF0JiMzOTtzIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nLCBidXQgaXMgaXQgZnV6emFibGU/CgpUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyByZWFjaGFiaWxpdHkuIFRoYW5rZnVsbHksIHRoZXNlIGFyZSBhbGwgY29yZSBMaW51eCBuZXR3b3JraW5nIHFkaXNjcywgZnVsbHkgY29uZmlndXJhYmxlIHZpYSBuZXRsaW5rICh1c2luZyBgcnRuZXRsaW5rYCBhbmQgYHRjYCkuIFRoaXMgaXNuJiMzOTt0IHNvbWUgbmljaGUgc3Vic3lzdGVtOyBpdCYjMzk7cyByaWdodCBpbiB0aGUgY29yZSBvZiB0cmFmZmljIGNvbnRyb2wuIE1lYW5pbmcgdGhlc2UgY29uZmlndXJhdGlvbiBjaGFuZ2VzIGFyZSBoaWdobHkgYWNjZXNzaWJsZSBpbiBzdGFuZGFyZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhpcyBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyBob3cgdGhlc2Ugc2NoZWR1bGVycyBoYW5kbGUgdGhlIGBxdWFudHVtYC9gbXR1YCBjb25maWd1cmF0aW9uIGxvZ2ljLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIEtjb25maWcgb3B0aW9ucywgYnV0IGJhc2VkIG9uIGFsbCBvZiB0aGlzLCB0aGlzIGlzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBUaGUgY2hhbmdlcyBhcmUgYWNjZXNzaWJsZSBhbmQgbW9kaWZ5IGNyaXRpY2FsIHZhbHVlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1NDSF8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz00Nj1jb21tZW50IFwmIzM0O1F1ZXVlaW5nL1NjaGVkdWxpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnLTQ3LVxubmV0L3NjaGVkL0tjb25maWc6NDg6Y29uZmlnIE5FVF9TQ0hfSFRCXG5uZXQvc2NoZWQvS2NvbmZpZy00OS1cdHRyaXN0YXRlIFwmIzM0O0hpZXJhcmNoaWNhbCBUb2tlbiBCdWNrZXQgKEhUQilcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy02MS1cbm5ldC9zY2hlZC9LY29uZmlnOjYyOmNvbmZpZyBORVRfU0NIX0hGU0Ncbm5ldC9zY2hlZC9LY29uZmlnLTYzLVx0dHJpc3RhdGUgXCYjMzQ7SGllcmFyY2hpY2FsIEZhaXIgU2VydmljZSBDdXJ2ZSAoSEZTQylcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy03MC1cbm5ldC9zY2hlZC9LY29uZmlnOjcxOmNvbmZpZyBORVRfU0NIX1BSSU9cbm5ldC9zY2hlZC9LY29uZmlnLTcyLVx0dHJpc3RhdGUgXCYjMzQ7TXVsdGkgQmFuZCBQcmlvcml0eSBRdWV1ZWluZyAoUFJJTylcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy03OS1cbm5ldC9zY2hlZC9LY29uZmlnOjgwOmNvbmZpZyBORVRfU0NIX01VTFRJUVxubmV0L3NjaGVkL0tjb25maWctODEtXHR0cmlzdGF0ZSBcJiMzNDtIYXJkd2FyZSBNdWx0aXF1ZXVlLWF3YXJlIE11bHRpIEJhbmQgUXVldWluZyAoTVVMVElRKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTg4LVxubmV0L3NjaGVkL0tjb25maWc6ODk6Y29uZmlnIE5FVF9TQ0hfUkVEXG5uZXQvc2NoZWQvS2NvbmZpZy05MC1cdHRyaXN0YXRlIFwmIzM0O1JhbmRvbSBFYXJseSBEZXRlY3Rpb24gKFJFRClcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy05OS1cbm5ldC9zY2hlZC9LY29uZmlnOjEwMDpjb25maWcgTkVUX1NDSF9TRkJcbm5ldC9zY2hlZC9LY29uZmlnLTEwMS1cdHRyaXN0YXRlIFwmIzM0O1N0b2NoYXN0aWMgRmFpciBCbHVlIChTRkIpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMTEwLVxubmV0L3NjaGVkL0tjb25maWc6MTExOmNvbmZpZyBORVRfU0NIX1NGUVxubmV0L3NjaGVkL0tjb25maWctMTEyLVx0dHJpc3RhdGUgXCYjMzQ7U3RvY2hhc3RpYyBGYWlybmVzcyBRdWV1ZWluZyAoU0ZRKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTEyMS1cbm5ldC9zY2hlZC9LY29uZmlnOjEyMjpjb25maWcgTkVUX1NDSF9URVFMXG5uZXQvc2NoZWQvS2NvbmZpZy0xMjMtXHR0cmlzdGF0ZSBcJiMzNDtUcnVlIExpbmsgRXF1YWxpemVyIChURVFMKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTEzMy1cbm5ldC9zY2hlZC9LY29uZmlnOjEzNDpjb25maWcgTkVUX1NDSF9UQkZcbm5ldC9zY2hlZC9LY29uZmlnLTEzNS1cdHRyaXN0YXRlIFwmIzM0O1Rva2VuIEJ1Y2tldCBGaWx0ZXIgKFRCRilcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xNDQtXG5uZXQvc2NoZWQvS2NvbmZpZzoxNDU6Y29uZmlnIE5FVF9TQ0hfQ0JTXG5uZXQvc2NoZWQvS2NvbmZpZy0xNDYtXHR0cmlzdGF0ZSBcJiMzNDtDcmVkaXQgQmFzZWQgU2hhcGVyIChDQlMpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMTU1LVxubmV0L3NjaGVkL0tjb25maWc6MTU2OmNvbmZpZyBORVRfU0NIX0VURlxubmV0L3NjaGVkL0tjb25maWctMTU3LVx0dHJpc3RhdGUgXCYjMzQ7RWFybGllc3QgVHhUaW1lIEZpcnN0IChFVEYpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMTY2LVxubmV0L3NjaGVkL0tjb25maWc6MTY3OmNvbmZpZyBORVRfU0NIX01RUFJJT19MSUJcbm5ldC9zY2hlZC9LY29uZmlnLTE2OC1cdHRyaXN0YXRlXG4tLVxubmV0L3NjaGVkL0tjb25maWctMTcxLVxubmV0L3NjaGVkL0tjb25maWc6MTcyOmNvbmZpZyBORVRfU0NIX1RBUFJJT1xubmV0L3NjaGVkL0tjb25maWctMTczLVx0dHJpc3RhdGUgXCYjMzQ7VGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xODMtXG5uZXQvc2NoZWQvS2NvbmZpZzoxODQ6Y29uZmlnIE5FVF9TQ0hfR1JFRFxubmV0L3NjaGVkL0tjb25maWctMTg1LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uIChHUkVEKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTE5NC1cbm5ldC9zY2hlZC9LY29uZmlnOjE5NTpjb25maWcgTkVUX1NDSF9ORVRFTVxubmV0L3NjaGVkL0tjb25maWctMTk2LVx0dHJpc3RhdGUgXCYjMzQ7TmV0d29yayBlbXVsYXRvciAoTkVURU0pXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMjA2LVxubmV0L3NjaGVkL0tjb25maWc6MjA3OmNvbmZpZyBORVRfU0NIX0RSUlxubmV0L3NjaGVkL0tjb25maWctMjA4LVx0dHJpc3RhdGUgXCYjMzQ7RGVmaWNpdCBSb3VuZCBSb2JpbiBzY2hlZHVsZXIgKERSUilcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0yMTctXG5uZXQvc2NoZWQvS2NvbmZpZzoyMTg6Y29uZmlnIE5FVF9TQ0hfTVFQUklPXG5uZXQvc2NoZWQvS2NvbmZpZy0yMTktXHR0cmlzdGF0ZSBcJiMzNDtNdWx0aS1xdWV1ZSBwcmlvcml0eSBzY2hlZHVsZXIgKE1RUFJJTylcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0yMzAtXG5uZXQvc2NoZWQvS2NvbmZpZzoyMzE6Y29uZmlnIE5FVF9TQ0hfU0tCUFJJT1xubmV0L3NjaGVkL0tjb25maWctMjMyLVx0dHJpc3RhdGUgXCYjMzQ7U0tCIHByaW9yaXR5IHF1ZXVlIHNjaGVkdWxlciAoU0tCUFJJTylcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0yNDMtXG5uZXQvc2NoZWQvS2NvbmZpZzoyNDQ6Y29uZmlnIE5FVF9TQ0hfQ0hPS0Vcbm5ldC9zY2hlZC9LY29uZmlnLTI0NS1cdHRyaXN0YXRlIFwmIzM0O0NIT29zZSBhbmQgS2VlcCByZXNwb25zaXZlIGZsb3cgc2NoZWR1bGVyIChDSE9LRSlcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0yNTQtXG5uZXQvc2NoZWQvS2NvbmZpZzoyNTU6Y29uZmlnIE5FVF9TQ0hfUUZRXG5uZXQvc2NoZWQvS2NvbmZpZy0yNTYtXHR0cmlzdGF0ZSBcJiMzNDtRdWljayBGYWlyIFF1ZXVlaW5nIHNjaGVkdWxlciAoUUZRKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTI2NS1cbm5ldC9zY2hlZC9LY29uZmlnOjI2Njpjb25maWcgTkVUX1NDSF9DT0RFTFxubmV0L3NjaGVkL0tjb25maWctMjY3LVx0dHJpc3RhdGUgXCYjMzQ7Q29udHJvbGxlZCBEZWxheSBBUU0gKENPREVMKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTI3Ni1cbm5ldC9zY2hlZC9LY29uZmlnOjI3Nzpjb25maWcgTkVUX1NDSF9GUV9DT0RFTFxubmV0L3NjaGVkL0tjb25maWctMjc4LVx0dHJpc3RhdGUgXCYjMzQ7RmFpciBRdWV1ZSBDb250cm9sbGVkIERlbGF5IEFRTSAoRlFfQ09ERUwpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMjg3LVxubmV0L3NjaGVkL0tjb25maWc6Mjg4OmNvbmZpZyBORVRfU0NIX0NBS0Vcbm5ldC9zY2hlZC9LY29uZmlnLTI4OS1cdHRyaXN0YXRlIFwmIzM0O0NvbW1vbiBBcHBsaWNhdGlvbnMgS2VwdCBFbmhhbmNlZCAoQ0FLRSlcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0yOTgtXG5uZXQvc2NoZWQvS2NvbmZpZzoyOTk6Y29uZmlnIE5FVF9TQ0hfRlFcbm5ldC9zY2hlZC9LY29uZmlnLTMwMC1cdHRyaXN0YXRlIFwmIzM0O0ZhaXIgUXVldWVcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0zMTItXG5uZXQvc2NoZWQvS2NvbmZpZzozMTM6Y29uZmlnIE5FVF9TQ0hfSEhGXG5uZXQvc2NoZWQvS2NvbmZpZy0zMTQtXHR0cmlzdGF0ZSBcJiMzNDtIZWF2eS1IaXR0ZXIgRmlsdGVyIChISEYpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMzIxLVxubmV0L3NjaGVkL0tjb25maWc6MzIyOmNvbmZpZyBORVRfU0NIX1BJRVxubmV0L3NjaGVkL0tjb25maWctMzIzLVx0dHJpc3RhdGUgXCYjMzQ7UHJvcG9ydGlvbmFsIEludGVncmFsIGNvbnRyb2xsZXIgRW5oYW5jZWQgKFBJRSkgc2NoZWR1bGVyXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMzMzLVxubmV0L3NjaGVkL0tjb25maWc6MzM0OmNvbmZpZyBORVRfU0NIX0ZRX1BJRVxubmV0L3NjaGVkL0tjb25maWctMzM1LVx0ZGVwZW5kcyBvbiBORVRfU0NIX1BJRVxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTM0Ni1cbm5ldC9zY2hlZC9LY29uZmlnOjM0Nzpjb25maWcgTkVUX1NDSF9JTkdSRVNTXG5uZXQvc2NoZWQvS2NvbmZpZy0zNDgtXHR0cmlzdGF0ZSBcJiMzNDtJbmdyZXNzL2NsYXNzaWZpZXItYWN0aW9uIFFkaXNjXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMzYyLVxubmV0L3NjaGVkL0tjb25maWc6MzYzOmNvbmZpZyBORVRfU0NIX1BMVUdcbm5ldC9zY2hlZC9LY29uZmlnLTM2NC1cdHRyaXN0YXRlIFwmIzM0O1BsdWcgbmV0d29yayB0cmFmZmljIHVudGlsIHJlbGVhc2UgKFBMVUcpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMzg4LVxubmV0L3NjaGVkL0tjb25maWc6Mzg5OmNvbmZpZyBORVRfU0NIX0VUU1xubmV0L3NjaGVkL0tjb25maWctMzkwLVx0dHJpc3RhdGUgXCYjMzQ7RW5oYW5jZWQgdHJhbnNtaXNzaW9uIHNlbGVjdGlvbiBzY2hlZHVsZXIgKEVUUylcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy00MDUtXG5uZXQvc2NoZWQvS2NvbmZpZzo0MDY6Y29uZmlnIE5FVF9TQ0hfQlBGXG5uZXQvc2NoZWQvS2NvbmZpZy00MDctXHRib29sIFwmIzM0O0JQRi1iYXNlZCBRZGlzY1wmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTQxNy1cbm5ldC9zY2hlZC9LY29uZmlnOjQxODpjb25maWcgTkVUX1NDSF9EVUFMUEkyXG5uZXQvc2NoZWQvS2NvbmZpZy00MTktXHR0cmlzdGF0ZSBcJiMzNDtEdWFsIFF1ZXVlIFBJIFNxdWFyZSAoRFVBTFBJMikgc2NoZWR1bGVyXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctNDI5LVxubmV0L3NjaGVkL0tjb25maWc6NDMwOm1lbnVjb25maWcgTkVUX1NDSF9ERUZBVUxUXG5uZXQvc2NoZWQvS2NvbmZpZy00MzEtXHRib29sIFwmIzM0O0FsbG93IG92ZXJyaWRlIGRlZmF1bHQgcXVldWUgZGlzY2lwbGluZVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTk2Nj1lbmRpZiAjIE5FVF9TQ0hFRFxubmV0L3NjaGVkL0tjb25maWctOTY3LVxubmV0L3NjaGVkL0tjb25maWc6OTY4OmNvbmZpZyBORVRfU0NIX0ZJRk9cbm5ldC9zY2hlZC9LY29uZmlnLTk2OS1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzMzCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMjI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBOZXR3b3JrIFNjaGVkdWxlciBDaGFuZ2VzKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZXNlIGZpbGUgbW9kaWZpY2F0aW9ucyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBLY29uZmlnIG9wdGlvbnMgd2l0aGluIHRoZSBuZXR3b3JrIHNjaGVkdWxlciBzdWJzeXN0ZW0uIEZpcnN0LCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBsaW5rIHRoZSBmaWxlIGNoYW5nZXMgdG8gdGhlaXIgS2NvbmZpZyBlbnRyaWVzLiBJIHNlZSB0aGF0OgoKKiAgIGBuZXQvc2NoZWQvc2NoX2Ryci5jYCBpcyBjb25uZWN0ZWQgdG8gYE5FVF9TQ0hfRFJSYC4KKiAgIGBuZXQvc2NoZWQvc2NoX2R1YWxwaTIuY2AgY29ycmVzcG9uZHMgdG8gYE5FVF9TQ0hfRFVBTFBJMmAuCiogICBgbmV0L3NjaGVkL3NjaF9ldHMuY2AgaXMgZW5hYmxlZCBieSBgTkVUX1NDSF9FVFNgLgoqICAgYG5ldC9zY2hlZC9zY2hfZnEuY2AgaXMgY29udHJvbGxlZCBieSBgTkVUX1NDSF9GUWAuCiogICBgbmV0L3NjaGVkL3NjaF9mcV9waWUuY2AgcmVsYXRlcyB0byBgTkVUX1NDSF9GUV9QSUVgLgoqICAgYG5ldC9zY2hlZC9zY2hfaGhmLmNgIHNlZW1zIGNvbm5lY3RlZCB0byBgTkVUX1NDSF9ISEZgLgoqICAgYG5ldC9zY2hlZC9zY2hfcGllLmNgIHVzZXMgYE5FVF9TQ0hfUElFYC4KKiAgIEFuZCBmaW5hbGx5LCBgbmV0L3NjaGVkL3NjaF9zZnEuY2AgaXMgdGllZCB0byBgTkVUX1NDSF9TRlFgLgoKTm93LCBJIG5lZWQgdG8gb3BlbiB0aGUgYE1ha2VmaWxlYCBpbiBgbmV0L3NjaGVkYCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBtYXBwaW5nLiBJIHdhbnQgdG8gYmUgMTAwJSBzdXJlIHRoaXMgaXNuJiMzOTt0IGp1c3QgYSBjb2luY2lkZW5jZSBhbmQgdGhhdCB0aGlzIGlzIHRoZSBzeXN0ZW0gZm9yIGNvbm5lY3RpbmcgdGhlc2UgZmlsZXMgdG8gdGhlaXIgb3B0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY2hfKGRycnxkdWFscGkyfGV0c3xmcXxmcV9waWV8aGhmfHBpZXxzZnEpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9NYWtlZmlsZT00MD1vYmotJChDT05GSUdfTkVUX1NDSF9TRkIpXHQmIzQzOz0gc2NoX3NmYi5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDE6b2JqLSQoQ09ORklHX05FVF9TQ0hfU0ZRKVx0JiM0Mzs9IHNjaF9zZnEub1xubmV0L3NjaGVkL01ha2VmaWxlLTQyLW9iai0kKENPTkZJR19ORVRfU0NIX1RCRilcdCYjNDM7PSBzY2hfdGJmLm9cbi0tXG5uZXQvc2NoZWQvTWFrZWZpbGU9NDY9b2JqLSQoQ09ORklHX05FVF9TQ0hfTkVURU0pXHQmIzQzOz0gc2NoX25ldGVtLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0NzpvYmotJChDT05GSUdfTkVUX1NDSF9EUlIpXHQmIzQzOz0gc2NoX2Ryci5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtNDgtb2JqLSQoQ09ORklHX05FVF9TQ0hfUExVRylcdCYjNDM7PSBzY2hfcGx1Zy5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX05FVF9TQ0hfRVRTKVx0JiM0Mzs9IHNjaF9ldHMub1xubmV0L3NjaGVkL01ha2VmaWxlLTUwLW9iai0kKENPTkZJR19ORVRfU0NIX01RUFJJTylcdCYjNDM7PSBzY2hfbXFwcmlvLm9cbi0tXG5uZXQvc2NoZWQvTWFrZWZpbGU9NTU9b2JqLSQoQ09ORklHX05FVF9TQ0hfQ09ERUwpXHQmIzQzOz0gc2NoX2NvZGVsLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo1NjpvYmotJChDT05GSUdfTkVUX1NDSF9GUV9DT0RFTClcdCYjNDM7PSBzY2hfZnFfY29kZWwub1xubmV0L3NjaGVkL01ha2VmaWxlLTU3LW9iai0kKENPTkZJR19ORVRfU0NIX0NBS0UpXHQmIzQzOz0gc2NoX2Nha2Uub1xubmV0L3NjaGVkL01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19ORVRfU0NIX0ZRKVx0JiM0Mzs9IHNjaF9mcS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTk6b2JqLSQoQ09ORklHX05FVF9TQ0hfSEhGKVx0JiM0Mzs9IHNjaF9oaGYub1xubmV0L3NjaGVkL01ha2VmaWxlOjYwOm9iai0kKENPTkZJR19ORVRfU0NIX1BJRSlcdCYjNDM7PSBzY2hfcGllLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo2MTpvYmotJChDT05GSUdfTkVUX1NDSF9GUV9QSUUpXHQmIzQzOz0gc2NoX2ZxX3BpZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtNjItb2JqLSQoQ09ORklHX05FVF9TQ0hfQ0JTKVx0JiM0Mzs9IHNjaF9jYnMub1xuLS1cbm5ldC9zY2hlZC9NYWtlZmlsZT02NT1vYmotJChDT05GSUdfTkVUX1NDSF9CUEYpXHQmIzQzOz0gYnBmX3FkaXNjLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo2NjpvYmotJChDT05GSUdfTkVUX1NDSF9EVUFMUEkyKVx0JiM0Mzs9IHNjaF9kdWFscGkyLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS02Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTA2CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBLZXJuZWwgTmV0d29yayBTY2hlZHVsZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgbmV0d29yayBzY2hlZHVsZXIgY29uZmlndXJhdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIHBhcmVudCBLY29uZmlnIG9wdGlvbnMgZm9yIGFueXRoaW5nIHVuZGVyIGBORVRfU0NIXypgLiBJIGtub3cgdGhhdCBgTkVUX1NDSEVEYCBpcyB0aGUgbGlrZWx5IHN0YXJ0aW5nIHBvaW50LCBzbyBJJiMzOTtsbCBiZWdpbiBieSBsb29raW5nIGluIGBuZXQvc2NoZWQvS2NvbmZpZ2AuIEkgc2VlIHRoZSBgbWVudWNvbmZpZyBORVRfU0NIRURgIGRlZmluaXRpb24sIHdoaWNoIHRlbGxzIG1lIHRoaXMgaXMgYSBwcmltYXJ5IG9wdGlvbi4gVGhlbiBJJiMzOTtsbCB0cmFjZSBpdHMgaW5jbHVzaW9uLiBBaCwgcmlnaHQsIGluIHRoZSB0b3AtbGV2ZWwgYG5ldC9LY29uZmlnYCwgaXQmIzM5O3MgaW5jbHVkaW5nIHRoZSBzY2hlZCBjb25maWcgd2l0aCBhIGBzb3VyY2UgJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7YCBjb21tYW5kLiBUaGF0IG1ha2VzIHNlbnNlLCBrZWVwaW5nIHRoaW5ncyBtb2R1bGFyLiBBbmQgdGhhdCYjMzk7cyB1bmRlciB0aGUgJiMzNDtOZXR3b3JraW5nIG9wdGlvbnMmIzM0OyBtZW51IChORVQpLiBHb29kLgoKTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgcGllX2Ryb3BfZWFybHlgIHZhcmlhYmxlLiBJIHNlZW0gdG8gcmVjYWxsIGRlYWxpbmcgd2l0aCB0aGF0IHJlY2VudGx5LiBJJiMzOTtsbCBvcGVuIHVwIGBuZXQvc2NoZWQvc2NoX3BpZS5jYCBhbmQgbWFrZSBzdXJlIGl0JiMzOTtzIG5vdCBhIHN0YXRpYyBvciBsb2NhbCB2YXJpYWJsZSwgYnV0IHJhdGhlciBhbiBleHBvcnRlZCBvbmUuIEtub3dpbmcgaXRzIHZpc2liaWxpdHkgaXMga2V5IHRvIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBzY2hlZHVsZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDg6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGllX2Ryb3BfZWFybHkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZnFfcGllLmM9MTMwPXN0YXRpYyBpbnQgZnFfcGllX3FkaXNjX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4tLVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy0xNjYtXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jOjE2NzpcdGlmICghcGllX2Ryb3BfZWFybHkoc2NoLCBcdTAwMjZxLVx1MDAzZXBfcGFyYW1zLCBcdTAwMjZzZWxfZmxvdy1cdTAwM2V2YXJzLFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy0xNjgtXHRcdFx0ICAgIHNlbF9mbG93LVx1MDAzZWJhY2tsb2csIHNrYi1cdTAwM2VsZW4pKSB7XG4tLVxubmV0L3NjaGVkL3NjaF9waWUuYz0yNT1zdHJ1Y3QgcGllX3NjaGVkX2RhdGEge1xuLS1cbm5ldC9zY2hlZC9zY2hfcGllLmMtMzItXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjMzOmJvb2wgcGllX2Ryb3BfZWFybHkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBwaWVfcGFyYW1zICpwYXJhbXMsXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTM0LVx0XHQgICAgc3RydWN0IHBpZV92YXJzICp2YXJzLCB1MzIgYmFja2xvZywgdTMyIHBhY2tldF9zaXplKVxuLS1cbm5ldC9zY2hlZC9zY2hfcGllLmMtNTAtXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjUxOlx0LyogSWYgd2UgaGF2ZSBmZXdlciB0aGFuIDIgbXR1LXNpemVkIHBhY2tldHMsIGRpc2FibGUgcGllX2Ryb3BfZWFybHksXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTUyLVx0ICogc2ltaWxhciB0byBtaW5fdGggaW4gUkVEXG4tLVxubmV0L3NjaGVkL3NjaF9waWUuYy04Mi19XG5uZXQvc2NoZWQvc2NoX3BpZS5jOjgzOkVYUE9SVF9TWU1CT0xfR1BMKHBpZV9kcm9wX2Vhcmx5KTtcbm5ldC9zY2hlZC9zY2hfcGllLmMtODQtXG5uZXQvc2NoZWQvc2NoX3BpZS5jPTg1PXN0YXRpYyBpbnQgcGllX3FkaXNjX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4tLVxubmV0L3NjaGVkL3NjaF9waWUuYy05OC1cbm5ldC9zY2hlZC9zY2hfcGllLmM6OTk6XHRpZiAoIXBpZV9kcm9wX2Vhcmx5KHNjaCwgXHUwMDI2cS1cdTAwM2VwYXJhbXMsIFx1MDAyNnEtXHUwMDNldmFycywgc2NoLVx1MDAzZXFzdGF0cy5iYWNrbG9nLFxubmV0L3NjaGVkL3NjaF9waWUuYy0xMDAtXHRcdFx0ICAgIHNrYi1cdTAwM2VsZW4pKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDg6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzNzMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFFkaXNjIEZ1bmN0aW9uIFZpc2liaWxpdHkqKgoKT2theSwgc28gYHBpZV9kcm9wX2Vhcmx5YCBpcyBub3cgZXhwb3J0ZWQgd2l0aCBgRVhQT1JUX1NZTUJPTF9HUExgLiBUaGF0JiMzOTtzIHRoZSBrZXkgY2hhbmdlLiBOb3csIEkgd2FudCB0byBzZWUgd2hhdCBvdGhlciBmdW5jdGlvbnMgYXJlIGFmZmVjdGVkIGluIHRoZXNlIGZpbGVzIGFuZCBob3cgdGhleSYjMzk7cmUgZXhwb3NlZC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgb3RoZXIgUWRpc2MgZnVuY3Rpb25zIGFuZCBzeW1ib2xzIGluIHRoZSBgc2NoXypgIGZpbGVzLiBMZXQgbWUgcnVuIHRocm91Z2ggZWFjaCBmaWxlOgoKKiAgIGBzY2hfZHJyLmNgOiBKdXN0IGBkcnJfY2hhbmdlX2NsYXNzYC4gVGhhdCYjMzk7cyBhIHN0YXRpYyBjYWxsYmFjayB3aXRoaW4gYGRycl9jbGFzc19vcHNgLCBzbyBpdCYjMzk7cyBub3QgZGlyZWN0bHkgZXhwb3NlZC4KKiAgIGBzY2hfZHVhbHBpMi5jYDogSSBzZWUgYSBoYW5kZnVsIG9mIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zOiBgZHVhbHBpMl9jYWxjdWxhdGVfY19wcm90ZWN0aW9uYCwgYG11c3RfZHJvcGAsIGFuZCBgZ2V0X21lbW9yeV9saW1pdGAuIFRoZXkmIzM5O3JlIGludGVybmFsIHRvIGBkdWFscGkyX2NoYW5nZWAsIGBkdWFscGkyX2luaXRgLCBhbmQgYGR1YWxwaTJfZW5xdWV1ZWAuIEZpbmUsIGFsbCBpbnRlcm5hbC4KKiAgIGBzY2hfZXRzLmNgOiBIZXJlLCBgZXRzX3F1YW50dW1fcGFyc2VgIGFuZCBgZXRzX3FkaXNjX2NoYW5nZWAuIFRoZXNlIGFyZSBzdGF0aWMgY2FsbGJhY2tzIHRvbywgcGFydCBvZiB0aGUgYGV0c19xZGlzY19vcHNgIGFuZCBgZXRzX2NsYXNzX29wc2Agc3RydWN0dXJlcy4gVGhleSYjMzk7cmUgbm90IGV4dGVybmFsbHkgdmlzaWJsZS4KKiAgIGBzY2hfZnEuY2A6IEJvdGggYGZxX2NoYW5nZWAgYW5kIGBmcV9pbml0YCBhcmUgc3RhdGljIGNhbGxiYWNrcyB3aXRoaW4gYGZxX3FkaXNjX29wc2AuIFN0aWxsIGludGVybmFsLgoqICAgYHNjaF9mcV9waWUuY2A6IE9ubHkgYGZxX3BpZV9jaGFuZ2VgLiBJdCYjMzk7cyBhIHN0YXRpYyBjYWxsYmFjayBpbiBgZnFfcGllX3FkaXNjX29wc2AsIHNvIHRoYXQmIzM5O3MgYWxzbyBpbnRlcm5hbC4KKiAgIGBzY2hfaGhmLmNgOiBUaGUgYGhoZl9jaGFuZ2VgIGFuZCBgaGhmX2luaXRgIGZ1bmN0aW9ucyBhcmUgYWxzbyBpbnRlcm5hbCBzdGF0aWMgY2FsbGJhY2tzIGluIGBoaGZfcWRpc2Nfb3BzYC4KKiAgIGBzY2hfcGllLmNgOiBPYnZpb3VzbHksIGBwaWVfZHJvcF9lYXJseWAgaXMgdGhlIGV4Y2VwdGlvbiBoZXJlLCBiZWluZyB0aGUgZXhwb3J0ZWQgZnVuY3Rpb24uCiogICBgc2NoX3NmcS5jYDogVGhlIGBzZnFfY2hhbmdlYCBmdW5jdGlvbiBpcyBhbm90aGVyIHN0YXRpYyBjYWxsYmFjayBpbiBgc2ZxX3FkaXNjX29wc2AuCgpBbHJpZ2h0LCBpdCBsb29rcyBsaWtlIG1vc3Qgb2YgdGhlc2UgUWRpc2MgZnVuY3Rpb25zIGFyZSBtYW5hZ2VkIGludGVybmFsbHkgdGhyb3VnaCBgUWRpc2Nfb3BzYCBhbmQgYFFkaXNjX2NsYXNzX29wc2Agc3RydWN0cywgdXNpbmcgY2FsbGJhY2tzLiBNb3N0IG9mIHRoZXNlIGZpbGVzIGFyZSBjb25zaXN0ZW50IHdpdGggdGhpcyBzdHJ1Y3R1cmUsIHNvIEkmIzM5O2xsIGNoZWNrIGhvdyBRZGlzYyBmdW5jdGlvbnMgYXJlIHR5cGljYWxseSByZXByZXNlbnRlZCBhcyBGb2N1c1N5bWJvbHMgYW5kIGlmIGFueSBvZiB0aGVtIGFyZSBleHBvcnRlZCBvciBtYWRlIHZpc2libGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA4OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBRZGlzY19vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9icGZfcWRpc2MuYy0xMC1cbm5ldC9zY2hlZC9icGZfcWRpc2MuYzoxMTojZGVmaW5lIFFESVNDX09QX0lEWChvcClcdChvZmZzZXRvZihzdHJ1Y3QgUWRpc2Nfb3BzLCBvcCkgLyBzaXplb2Yodm9pZCAoKikodm9pZCkpKVxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTEyLSNkZWZpbmUgUURJU0NfTU9GRl9JRFgobW9mZilcdChtb2ZmIC8gc2l6ZW9mKHZvaWQgKCopKHZvaWQpKSlcbi0tXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM9MzM9c3RhdGljIGJvb2wgYnBmX3FkaXNjX2lzX3ZhbGlkX2FjY2VzcyhpbnQgb2ZmLCBpbnQgc2l6ZSxcbi0tXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtNDEtXHRhcmcgPSBidGZfY3R4X2FyZ19pZHgoYnRmLCBwcm9nLVx1MDAzZWF1eC1cdTAwM2VhdHRhY2hfZnVuY19wcm90bywgb2ZmKTtcbm5ldC9zY2hlZC9icGZfcWRpc2MuYzo0MjpcdGlmIChwcm9nLVx1MDAzZWF1eC1cdTAwM2VhdHRhY2hfc3Rfb3BzX21lbWJlcl9vZmYgPT0gb2Zmc2V0b2Yoc3RydWN0IFFkaXNjX29wcywgZW5xdWV1ZSkpIHtcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy00My1cdFx0aWYgKGFyZyA9PSAyIFx1MDAyNlx1MDAyNiB0eXBlID09IEJQRl9SRUFEKSB7XG4tLVxubmV0L3NjaGVkL2JwZl9xZGlzYy5jPTEzNT1zdGF0aWMgaW50IGJwZl9xZGlzY19nZW5fcHJvbG9ndWUoc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZiwgYm9vbCBkaXJlY3Rfd3JpdGUsXG4tLVxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTEzOS1cbm5ldC9zY2hlZC9icGZfcWRpc2MuYzoxNDA6XHRpZiAocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXR0YWNoX3N0X29wc19tZW1iZXJfb2ZmICE9IG9mZnNldG9mKHN0cnVjdCBRZGlzY19vcHMsIGluaXQpKVxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTE0MS1cdFx0cmV0dXJuIDA7XG4tLVxubmV0L3NjaGVkL2JwZl9xZGlzYy5jPTE2NT1zdGF0aWMgaW50IGJwZl9xZGlzY19nZW5fZXBpbG9ndWUoc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZiwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLS1cbm5ldC9zY2hlZC9icGZfcWRpc2MuYy0xNjktXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM6MTcwOlx0aWYgKHByb2ctXHUwMDNlYXV4LVx1MDAzZWF0dGFjaF9zdF9vcHNfbWVtYmVyX29mZiAhPSBvZmZzZXRvZihzdHJ1Y3QgUWRpc2Nfb3BzLCByZXNldCkgXHUwMDI2XHUwMDI2XG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM6MTcxOlx0ICAgIHByb2ctXHUwMDNlYXV4LVx1MDAzZWF0dGFjaF9zdF9vcHNfbWVtYmVyX29mZiAhPSBvZmZzZXRvZihzdHJ1Y3QgUWRpc2Nfb3BzLCBkZXN0cm95KSlcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy0xNzItXHRcdHJldHVybiAwO1xuLS1cbm5ldC9zY2hlZC9icGZfcWRpc2MuYz0zNjE9c3RhdGljIGludCBicGZfcWRpc2NfaW5pdF9tZW1iZXIoY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxuLS1cbm5ldC9zY2hlZC9icGZfcWRpc2MuYy0zNjQte1xubmV0L3NjaGVkL2JwZl9xZGlzYy5jOjM2NTpcdGNvbnN0IHN0cnVjdCBRZGlzY19vcHMgKnVxZGlzY19vcHM7XG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM6MzY2Olx0c3RydWN0IFFkaXNjX29wcyAqcWRpc2Nfb3BzO1xubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTM2Ny1cdHUzMiBtb2ZmO1xubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTM2OC1cbm5ldC9zY2hlZC9icGZfcWRpc2MuYzozNjk6XHR1cWRpc2Nfb3BzID0gKGNvbnN0IHN0cnVjdCBRZGlzY19vcHMgKil1ZGF0YTtcbm5ldC9zY2hlZC9icGZfcWRpc2MuYzozNzA6XHRxZGlzY19vcHMgPSAoc3RydWN0IFFkaXNjX29wcyAqKWtkYXRhO1xubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTM3MS1cbi0tXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtMzczLVx0c3dpdGNoIChtb2ZmKSB7XG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM6Mzc0Olx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3QgUWRpc2Nfb3BzLCBwcml2X3NpemUpOlxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTM3NS1cdFx0aWYgKHVxZGlzY19vcHMtXHUwMDNlcHJpdl9zaXplKVxuLS1cbm5ldC9zY2hlZC9icGZfcWRpc2MuYy0zNzgtXHRcdHJldHVybiAxO1xubmV0L3NjaGVkL2JwZl9xZGlzYy5jOjM3OTpcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IFFkaXNjX29wcywgcGVlayk6XG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtMzgwLVx0XHRxZGlzY19vcHMtXHUwMDNlcGVlayA9IHFkaXNjX3BlZWtfZGVxdWV1ZWQ7XG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtMzgxLVx0XHRyZXR1cm4gMDtcbm5ldC9zY2hlZC9icGZfcWRpc2MuYzozODI6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBRZGlzY19vcHMsIGlkKTpcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy0zODMtXHRcdGlmIChicGZfb2JqX25hbWVfY3B5KHFkaXNjX29wcy1cdTAwM2VpZCwgdXFkaXNjX29wcy1cdTAwM2VpZCxcbi0tXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM9NDAyPXN0YXRpYyBpbnQgYnBmX3FkaXNjX3ZhbGlkYXRlKHZvaWQgKmtkYXRhKVxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTQwMy17XG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM6NDA0Olx0c3RydWN0IFFkaXNjX29wcyAqb3BzID0gKHN0cnVjdCBRZGlzY19vcHMgKilrZGF0YTtcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy00MDUtXG4tLVxubmV0L3NjaGVkL2JwZl9xZGlzYy5jPTQzND1zdGF0aWMgdm9pZCBRZGlzY19vcHNfX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTQzNy1cbm5ldC9zY2hlZC9icGZfcWRpc2MuYzo0Mzg6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgX19icGZfb3BzX3FkaXNjX29wcyA9IHtcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy00MzktXHQuZW5xdWV1ZSA9IFFkaXNjX29wc19fZW5xdWV1ZSxcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTExOT1zdGF0aWMgREVGSU5FX1JXTE9DSyhxZGlzY19tb2RfbG9jayk7XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xMjgtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjEyOTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyAqcWRpc2NfYmFzZTtcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTMwLVxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTMyLVxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMzM6aW50IHJlZ2lzdGVyX3FkaXNjKHN0cnVjdCBRZGlzY19vcHMgKnFvcHMpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEzNC17XG5uZXQvc2NoZWQvc2NoX2FwaS5jOjEzNTpcdHN0cnVjdCBRZGlzY19vcHMgKnEsICoqcXA7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEzNi1cdGludCByYyA9IC1FRVhJU1Q7XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz0xNzU9RVhQT1JUX1NZTUJPTChyZWdpc3Rlcl9xZGlzYyk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE3Ni1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTc3OnZvaWQgdW5yZWdpc3Rlcl9xZGlzYyhzdHJ1Y3QgUWRpc2Nfb3BzICpxb3BzKVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNzgte1xubmV0L3NjaGVkL3NjaF9hcGkuYzoxNzk6XHRzdHJ1Y3QgUWRpc2Nfb3BzICpxLCAqKnFwO1xubmV0L3NjaGVkL3NjaF9hcGkuYy0xODAtXHRpbnQgZXJyID0gLUVOT0VOVDtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE5OD12b2lkIHFkaXNjX2dldF9kZWZhdWx0KGNoYXIgKm5hbWUsIHNpemVfdCBsZW4pXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yMDQtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjIwNTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyAqcWRpc2NfbG9va3VwX2RlZmF1bHQoY29uc3QgY2hhciAqbmFtZSlcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjA2LXtcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjA3Olx0c3RydWN0IFFkaXNjX29wcyAqcSA9IE5VTEw7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTIwOC1cbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTIyMT1pbnQgcWRpc2Nfc2V0X2RlZmF1bHQoY29uc3QgY2hhciAqbmFtZSlcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjIyLXtcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjIzOlx0Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqb3BzO1xubmV0L3NjaGVkL3NjaF9hcGkuYy0yMjQtXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz0zMzk9c3RhdGljIHN0cnVjdCBRZGlzYyAqcWRpc2NfbGVhZihzdHJ1Y3QgUWRpc2MgKnAsIHUzMiBjbGFzc2lkLFxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMzU5LVxubmV0L3NjaGVkL3NjaF9hcGkuYzozNjA6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgKnFkaXNjX2xvb2t1cF9vcHMoc3RydWN0IG5sYXR0ciAqa2luZClcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMzYxLXtcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MzYyOlx0c3RydWN0IFFkaXNjX29wcyAqcSA9IE5VTEw7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTM2My1cbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTEyNzQ9c3RhdGljIHN0cnVjdCBRZGlzYyAqcWRpc2NfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xMjgyLVx0c3RydWN0IFFkaXNjICpzY2g7XG5uZXQvc2NoZWQvc2NoX2FwaS5jOjEyODM6XHRzdHJ1Y3QgUWRpc2Nfb3BzICpvcHM7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEyODQtXHRzdHJ1Y3QgcWRpc2Nfc2l6ZV90YWJsZSAqc3RhYjtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE4MDE9c3RhdGljIHZvaWQgcmVxdWVzdF9xZGlzY19tb2R1bGUoc3RydWN0IG5sYXR0ciAqa2luZClcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTgwMi17XG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE4MDM6XHRzdHJ1Y3QgUWRpc2Nfb3BzICpvcHM7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE4MDQtXHRjaGFyIG5hbWVbSUZOQU1TSVpdO1xuLS1cbm5ldC9zY2hlZC9zY2hfYmxhY2tob2xlLmM9MjM9c3RhdGljIHN0cnVjdCBza19idWZmICpibGFja2hvbGVfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX2JsYWNraG9sZS5jLTI3LVxubmV0L3NjaGVkL3NjaF9ibGFja2hvbGUuYzoyODpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBibGFja2hvbGVfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX2JsYWNraG9sZS5jLTI5LVx0LmlkXHRcdD0gXCYjMzQ7YmxhY2tob2xlXCYjMzQ7LFxuLS1cbm5ldC9zY2hlZC9zY2hfY2FrZS5jPTMyMzE9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgY2FrZV9jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9jYWtlLmMtMzI0MS1cbm5ldC9zY2hlZC9zY2hfY2FrZS5jOjMyNDI6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgY2FrZV9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfY2FrZS5jLTMyNDMtXHQuY2xfb3BzXHRcdD1cdFx1MDAyNmNha2VfY2xhc3Nfb3BzLFxuLS1cbm5ldC9zY2hlZC9zY2hfY2FrZS5jPTMzNDM9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgY2FrZV9tcV9jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9jYWtlLmMtMzM1Mi1cbm5ldC9zY2hlZC9zY2hfY2FrZS5jOjMzNTM6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgY2FrZV9tcV9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfY2FrZS5jLTMzNTQtXHQuY2xfb3BzXHRcdD1cdFx1MDAyNmNha2VfbXFfY2xhc3Nfb3BzLFxuLS1cbm5ldC9zY2hlZC9zY2hfY2JzLmM9NTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIGNic19jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9jYnMuYy01NDgtXG5uZXQvc2NoZWQvc2NoX2Nicy5jOjU0OTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBjYnNfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX2Nicy5jLTU1MC1cdC5pZFx0XHQ9XHRcJiMzNDtjYnNcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9jaG9rZS5jPTQ4Nj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmNob2tlX3BlZWtfaGVhZChzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX2Nob2tlLmMtNDkyLVxubmV0L3NjaGVkL3NjaF9jaG9rZS5jOjQ5MzpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBjaG9rZV9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfY2hva2UuYy00OTQtXHQuaWRcdFx0PVx0XCYjMzQ7Y2hva2VcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9jb2RlbC5jPTI4ND1zdGF0aWMgdm9pZCBjb2RlbF9yZXNldChzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX2NvZGVsLmMtMjkxLVxubmV0L3NjaGVkL3NjaF9jb2RlbC5jOjI5MjpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBjb2RlbF9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfY29kZWwuYy0yOTMtXHQuaWRcdFx0PVx0XCYjMzQ7Y29kZWxcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9kcnIuYz00NjA9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgZHJyX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ3NC1cbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDc1OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIGRycl9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDc2LVx0LmNsX29wc1x0XHQ9IFx1MDAyNmRycl9jbGFzc19vcHMsXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9MTE5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBkdWFscGkyX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjAxLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwMjpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBkdWFscGkyX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIwMy1cdC5pZFx0XHQ9IFwmIzM0O2R1YWxwaTJcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9ldGYuYz00NjA9c3RhdGljIGludCBldGZfZHVtcChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvc2NoZWQvc2NoX2V0Zi5jLTQ5MC1cbm5ldC9zY2hlZC9zY2hfZXRmLmM6NDkxOnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIGV0Zl9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfZXRmLmMtNDkyLVx0LmlkXHRcdD1cdFwmIzM0O2V0ZlwmIzM0Oyxcbi0tXG5uZXQvc2NoZWQvc2NoX2V0cy5jPTgwMD1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBldHNfY2xhc3Nfb3BzID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfZXRzLmMtODEzLVxubmV0L3NjaGVkL3NjaF9ldHMuYzo4MTQ6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgZXRzX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9ldHMuYy04MTUtXHQuY2xfb3BzXHRcdD0gXHUwMDI2ZXRzX2NsYXNzX29wcyxcbi0tXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYz0xODI9c3RhdGljIGludCBmaWZvX2hkX2R1bXAoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3NjaGVkL3NjaF9maWZvLmMtMTg2LVxubmV0L3NjaGVkL3NjaF9maWZvLmM6MTg3OnN0cnVjdCBRZGlzY19vcHMgcGZpZm9fcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX2ZpZm8uYy0xODgtXHQuaWRcdFx0PVx0XCYjMzQ7cGZpZm9cJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9maWZvLmM9MjAwPUVYUE9SVF9TWU1CT0wocGZpZm9fcWRpc2Nfb3BzKTtcbm5ldC9zY2hlZC9zY2hfZmlmby5jLTIwMS1cbm5ldC9zY2hlZC9zY2hfZmlmby5jOjIwMjpzdHJ1Y3QgUWRpc2Nfb3BzIGJmaWZvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9maWZvLmMtMjAzLVx0LmlkXHRcdD1cdFwmIzM0O2JmaWZvXCYjMzQ7LFxuLS1cbm5ldC9zY2hlZC9zY2hfZmlmby5jPTIxNT1FWFBPUlRfU1lNQk9MKGJmaWZvX3FkaXNjX29wcyk7XG5uZXQvc2NoZWQvc2NoX2ZpZm8uYy0yMTYtXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYzoyMTc6c3RydWN0IFFkaXNjX29wcyBwZmlmb19oZWFkX2Ryb3BfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX2ZpZm8uYy0yMTgtXHQuaWRcdFx0PVx0XCYjMzQ7cGZpZm9faGVhZF9kcm9wXCYjMzQ7LFxuLS1cbm5ldC9zY2hlZC9zY2hfZmlmby5jPTI1ND1FWFBPUlRfU1lNQk9MKGZpZm9fc2V0X2xpbWl0KTtcbm5ldC9zY2hlZC9zY2hfZmlmby5jLTI1NS1cbm5ldC9zY2hlZC9zY2hfZmlmby5jOjI1NjpzdHJ1Y3QgUWRpc2MgKmZpZm9fY3JlYXRlX2RmbHQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBRZGlzY19vcHMgKm9wcyxcbm5ldC9zY2hlZC9zY2hfZmlmby5jLTI1Ny1cdFx0XHQgICAgICAgdW5zaWduZWQgaW50IGxpbWl0LFxuLS1cbm5ldC9zY2hlZC9zY2hfZnEuYz0xMzQyPXN0YXRpYyBpbnQgZnFfZHVtcF9zdGF0cyhzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IGduZXRfZHVtcCAqZClcbi0tXG5uZXQvc2NoZWQvc2NoX2ZxLmMtMTM3OC1cbm5ldC9zY2hlZC9zY2hfZnEuYzoxMzc5OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIGZxX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9mcS5jLTEzODAtXHQuaWRcdFx0PVx0XCYjMzQ7ZnFcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9mcV9jb2RlbC5jPTc1MT1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBmcV9jb2RlbF9jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9mcV9jb2RlbC5jLTc2MS1cbm5ldC9zY2hlZC9zY2hfZnFfY29kZWwuYzo3NjI6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgZnFfY29kZWxfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX2ZxX2NvZGVsLmMtNzYzLVx0LmNsX29wc1x0XHQ9XHRcdTAwMjZmcV9jb2RlbF9jbGFzc19vcHMsXG4tLVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYz01NTY9c3RhdGljIHZvaWQgZnFfcGllX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01NjUtXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jOjU2NjpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBmcV9waWVfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTU2Ny1cdC5pZFx0XHQ9IFwmIzM0O2ZxX3BpZVwmIzM0Oyxcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0zNi0vKiBRZGlzYyB0byB1c2UgYnkgZGVmYXVsdCAqL1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6Mzc6Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqZGVmYXVsdF9xZGlzY19vcHMgPSBcdTAwMjZwZmlmb19mYXN0X29wcztcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTM4LUVYUE9SVF9TWU1CT0woZGVmYXVsdF9xZGlzY19vcHMpO1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTY5Mz1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm5vb3BfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTY5Ny1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjY5ODpzdHJ1Y3QgUWRpc2Nfb3BzIG5vb3BfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02OTktXHQuaWRcdFx0PVx0XCYjMzQ7bm9vcFwmIzM0Oyxcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz03MzQ9c3RhdGljIGludCBub3F1ZXVlX2luaXQoc3RydWN0IFFkaXNjICpxZGlzYywgc3RydWN0IG5sYXR0ciAqb3B0LFxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTc0My1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjc0NDpzdHJ1Y3QgUWRpc2Nfb3BzIG5vcXVldWVfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy03NDUtXHQuaWRcdFx0PVx0XCYjMzQ7bm9xdWV1ZVwmIzM0Oyxcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz05NDc9c3RhdGljIGludCBwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IFFkaXNjICpzY2gsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTYzLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTY0OnN0cnVjdCBRZGlzY19vcHMgcGZpZm9fZmFzdF9vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk2NS1cdC5pZFx0XHQ9XHRcJiMzNDtwZmlmb19mYXN0XCYjMzQ7LFxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTk4Mj1zdHJ1Y3QgUWRpc2MgKnFkaXNjX2FsbG9jKHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjk4MzpcdFx0XHQgIGNvbnN0IHN0cnVjdCBRZGlzY19vcHMgKm9wcyxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk4NC1cdFx0XHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMDQxPXN0cnVjdCBRZGlzYyAqcWRpc2NfY3JlYXRlX2RmbHQoc3RydWN0IG5ldGRldl9xdWV1ZSAqZGV2X3F1ZXVlLFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTA0MjpcdFx0XHRcdGNvbnN0IHN0cnVjdCBRZGlzY19vcHMgKm9wcyxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNDMtXHRcdFx0XHR1bnNpZ25lZCBpbnQgcGFyZW50aWQsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTA3Mj12b2lkIHFkaXNjX3Jlc2V0KHN0cnVjdCBRZGlzYyAqcWRpc2MpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDczLXtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEwNzQ6XHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMgPSBxZGlzYy1cdTAwM2VvcHM7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDc1LVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTExMDY9c3RhdGljIHZvaWQgX19xZGlzY19kZXN0cm95KHN0cnVjdCBRZGlzYyAqcWRpc2MpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTA3LXtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExMDg6XHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICAqb3BzID0gcWRpc2MtXHUwMDNlb3BzO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEwOS1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYocWRpc2MpO1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEyMDc9c3RhdGljIHZvaWQgYXR0YWNoX29uZV9kZWZhdWx0X3FkaXNjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTIxMS1cdHN0cnVjdCBRZGlzYyAqcWRpc2M7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMjEyOlx0Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqb3BzID0gZGVmYXVsdF9xZGlzY19vcHM7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjEzLVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTE0MjQ9c3RhdGljIGludCBxZGlzY19jaGFuZ2VfdHhfcXVldWVfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTQyNy1cdHN0cnVjdCBRZGlzYyAqcWRpc2MgPSBydG5sX2RlcmVmZXJlbmNlKGRldl9xdWV1ZS1cdTAwM2VxZGlzY19zbGVlcGluZyk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNDI4Olx0Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqb3BzID0gcWRpc2MtXHUwMDNlb3BzO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTQyOS1cbi0tXG5uZXQvc2NoZWQvc2NoX2dyZWQuYz05MDg9c3RhdGljIHZvaWQgZ3JlZF9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxuLS1cbm5ldC9zY2hlZC9zY2hfZ3JlZC5jLTkyMC1cbm5ldC9zY2hlZC9zY2hfZ3JlZC5jOjkyMTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBncmVkX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9ncmVkLmMtOTIyLVx0LmlkXHRcdD1cdFwmIzM0O2dyZWRcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9oZnNjLmM9MTY1OD1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBoZnNjX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2hmc2MuYy0xNjcyLVxubmV0L3NjaGVkL3NjaF9oZnNjLmM6MTY3MzpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBoZnNjX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9oZnNjLmMtMTY3NC1cdC5pZFx0XHQ9IFwmIzM0O2hmc2NcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9oaGYuYz03MTQ9c3RhdGljIGludCBoaGZfZHVtcF9zdGF0cyhzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IGduZXRfZHVtcCAqZClcbi0tXG5uZXQvc2NoZWQvc2NoX2hoZi5jLTcyNi1cbm5ldC9zY2hlZC9zY2hfaGhmLmM6NzI3OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIGhoZl9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzI4LVx0LmlkXHRcdD1cdFwmIzM0O2hoZlwmIzM0Oyxcbi0tXG5uZXQvc2NoZWQvc2NoX2h0Yi5jPTIxMzA9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgaHRiX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2h0Yi5jLTIxNDUtXG5uZXQvc2NoZWQvc2NoX2h0Yi5jOjIxNDY6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgaHRiX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9odGIuYy0yMTQ3LVx0LmNsX29wc1x0XHQ9XHRcdTAwMjZodGJfY2xhc3Nfb3BzLFxuLS1cbm5ldC9zY2hlZC9zY2hfaW5ncmVzcy5jPTE1MD1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBpbmdyZXNzX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYy0xNTktXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYzoxNjA6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgaW5ncmVzc19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfaW5ncmVzcy5jLTE2MS1cdC5jbF9vcHNcdFx0XHQ9XHRcdTAwMjZpbmdyZXNzX2NsYXNzX29wcyxcbi0tXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYz0zMjY9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgY2xzYWN0X2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYy0zMzUtXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYzozMzY6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgY2xzYWN0X3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmMtMzM3LVx0LmNsX29wc1x0XHRcdD1cdFx1MDAyNmNsc2FjdF9jbGFzc19vcHMsXG4tLVxubmV0L3NjaGVkL3NjaF9tcS5jPTY4PWludCBtcV9pbml0X2NvbW1vbihzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxubmV0L3NjaGVkL3NjaF9tcS5jLTY5LVx0XHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2ssXG5uZXQvc2NoZWQvc2NoX21xLmM6NzA6XHRcdCAgIGNvbnN0IHN0cnVjdCBRZGlzY19vcHMgKnFkaXNjX29wcylcbm5ldC9zY2hlZC9zY2hfbXEuYy03MS17XG4tLVxubmV0L3NjaGVkL3NjaF9tcS5jPTI5ND1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBtcV9jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9tcS5jLTMwMy1cbm5ldC9zY2hlZC9zY2hfbXEuYzozMDQ6c3RydWN0IFFkaXNjX29wcyBtcV9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfbXEuYy0zMDUtXHQuY2xfb3BzXHRcdD0gXHUwMDI2bXFfY2xhc3Nfb3BzLFxuLS1cbm5ldC9zY2hlZC9zY2hfbXFwcmlvLmM9NzU4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIG1xcHJpb19jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9tcXByaW8uYy03NjctXG5uZXQvc2NoZWQvc2NoX21xcHJpby5jOjc2ODpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBtcXByaW9fcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX21xcHJpby5jLTc2OS1cdC5jbF9vcHNcdFx0PSBcdTAwMjZtcXByaW9fY2xhc3Nfb3BzLFxuLS1cbm5ldC9zY2hlZC9zY2hfbXVsdGlxLmM9MzcxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIG11bHRpcV9jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYy0zODItXG5uZXQvc2NoZWQvc2NoX211bHRpcS5jOjM4MzpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBtdWx0aXFfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX211bHRpcS5jLTM4NC1cdC5uZXh0XHRcdD1cdE5VTEwsXG4tLVxubmV0L3NjaGVkL3NjaF9uZXRlbS5jPTEzOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgbmV0ZW1fY2xhc3Nfb3BzID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfbmV0ZW0uYy0xNDAxLVxubmV0L3NjaGVkL3NjaF9uZXRlbS5jOjE0MDI6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgbmV0ZW1fcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX25ldGVtLmMtMTQwMy1cdC5pZFx0XHQ9XHRcJiMzNDtuZXRlbVwmIzM0Oyxcbi0tXG5uZXQvc2NoZWQvc2NoX3BpZS5jPTU0Mz1zdGF0aWMgdm9pZCBwaWVfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTU1MC1cbm5ldC9zY2hlZC9zY2hfcGllLmM6NTUxOnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHBpZV9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTUyLVx0LmlkXHRcdD0gXCYjMzQ7cGllXCYjMzQ7LFxuLS1cbm5ldC9zY2hlZC9zY2hfcGx1Zy5jPTE1OD1zdGF0aWMgaW50IHBsdWdfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4tLVxubmV0L3NjaGVkL3NjaF9wbHVnLmMtMjA0LVxubmV0L3NjaGVkL3NjaF9wbHVnLmM6MjA1OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHBsdWdfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX3BsdWcuYy0yMDYtXHQuaWQgICAgICAgICAgPSAgICAgICBcJiMzNDtwbHVnXCYjMzQ7LFxuLS1cbm5ldC9zY2hlZC9zY2hfcHJpby5jPTM5ND1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBwcmlvX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX3ByaW8uYy00MDUtXG5uZXQvc2NoZWQvc2NoX3ByaW8uYzo0MDY6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgcHJpb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfcHJpby5jLTQwNy1cdC5uZXh0XHRcdD1cdE5VTEwsXG4tLVxubmV0L3NjaGVkL3NjaF9xZnEuYz0xNTEzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIHFmcV9jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9xZnEuYy0xNTI3LVxubmV0L3NjaGVkL3NjaF9xZnEuYzoxNTI4OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHFmcV9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfcWZxLmMtMTUyOS1cdC5jbF9vcHNcdFx0PSBcdTAwMjZxZnFfY2xhc3Nfb3BzLFxuLS1cbm5ldC9zY2hlZC9zY2hfcmVkLmM9NTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIHJlZF9jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9yZWQuYy01NDgtXG5uZXQvc2NoZWQvc2NoX3JlZC5jOjU0OTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyByZWRfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX3JlZC5jLTU1MC1cdC5pZFx0XHQ9XHRcJiMzNDtyZWRcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9zZmIuYz02OTY9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgc2ZiX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX3NmYi5jLTcwOC1cbm5ldC9zY2hlZC9zY2hfc2ZiLmM6NzA5OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHNmYl9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfc2ZiLmMtNzEwLVx0LmlkXHRcdD1cdFwmIzM0O3NmYlwmIzM0Oyxcbi0tXG5uZXQvc2NoZWQvc2NoX3NmcS5jPTk1MT1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBzZnFfY2xhc3Nfb3BzID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfc2ZxLmMtOTYxLVxubmV0L3NjaGVkL3NjaF9zZnEuYzo5NjI6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgc2ZxX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9zZnEuYy05NjMtXHQuY2xfb3BzXHRcdD1cdFx1MDAyNnNmcV9jbGFzc19vcHMsXG4tLVxubmV0L3NjaGVkL3NjaF9za2JwcmlvLmM9MjcyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIHNrYnByaW9fY2xhc3Nfb3BzID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfc2ticHJpby5jLTI3OS1cbm5ldC9zY2hlZC9zY2hfc2ticHJpby5jOjI4MDpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBza2JwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9za2JwcmlvLmMtMjgxLVx0LmNsX29wc1x0XHQ9XHRcdTAwMjZza2JwcmlvX2NsYXNzX29wcyxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTI1MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgdGFwcmlvX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI1NDUtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI1NDY6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTQ3LVx0LmNsX29wc1x0XHQ9IFx1MDAyNnRhcHJpb19jbGFzc19vcHMsXG4tLVxubmV0L3NjaGVkL3NjaF90YmYuYz02MDA9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgdGJmX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX3RiZi5jLTYwNy1cbm5ldC9zY2hlZC9zY2hfdGJmLmM6NjA4OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHRiZl9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfdGJmLmMtNjA5LVx0Lm5leHRcdFx0PVx0TlVMTCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RlcWwuYz01Mj1zdHJ1Y3QgdGVxbF9tYXN0ZXIge1xubmV0L3NjaGVkL3NjaF90ZXFsLmM6NTM6XHRzdHJ1Y3QgUWRpc2Nfb3BzIHFvcHM7XG5uZXQvc2NoZWQvc2NoX3RlcWwuYy01NC1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG4tLVxubmV0L3NjaGVkL3NjaF90ZXFsLmM9NDkwPXN0YXRpYyBfX2luaXQgdm9pZCB0ZXFsX21hc3Rlcl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9zY2hlZC9zY2hfdGVxbC5jLTQ5Mi1cdHN0cnVjdCB0ZXFsX21hc3RlciAqbWFzdGVyID0gbmV0ZGV2X3ByaXYoZGV2KTtcbm5ldC9zY2hlZC9zY2hfdGVxbC5jOjQ5MzpcdHN0cnVjdCBRZGlzY19vcHMgKm9wcyA9IFx1MDAyNm1hc3Rlci1cdTAwM2Vxb3BzO1xubmV0L3NjaGVkL3NjaF90ZXFsLmMtNDk0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTE4NAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDc5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIENhbmRpZGF0ZSBBc3Nlc3NtZW50OiBOZXR3b3JrIFNjaGVkdWxlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2VzLiBJIHNlZSB0aGUgcGF0Y2ggdG91Y2hlcyBhIGJ1bmNoIG9mIHBhY2tldCBzY2hlZHVsZXJzOiBgc2NoX2Ryci5jYCwgYHNjaF9kdWFscGkyLmNgLCBgc2NoX2V0cy5jYCwgYHNjaF9mcS5jYCwgYHNjaF9mcV9waWUuY2AsIGBzY2hfaGhmLmNgLCBgc2NoX3BpZS5jYCwgYW5kIGBzY2hfc2ZxLmNgLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgZ2xhbmNlIGF0IHRoZSBmdW5jdGlvbnMgdGhhdCB3ZXJlIG1vZGlmaWVkIGluIGVhY2ggZmlsZTogaW5pdGlhbGl6YXRpb24sIGNoYW5nZSwgZW5xdWV1ZSwgYW5kIGRlcXVldWUgcm91dGluZXMgYXJlIGFsbCBwb3RlbnRpYWwgYXJlYXMgb2YgaW50ZXJlc3QuCgpOb3csIHRoZSBjb3JlIG9mIHRoZSBwYXRjaCBzZWVtcyB0byBiZSBhcm91bmQgaW5wdXQgdmFsaWRhdGlvbiBhbmQgY2xhbXBpbmcgb2YgcGFyYW1ldGVycywgcGFydGljdWxhcmx5IGBxdWFudHVtYCBhbmQgYG10dWAuIFRoYXQmIzM5O3MgYSByZWQgZmxhZyDigJMgdGhlc2Uga2luZHMgb2YgY2hhbmdlcyBjYW4gb2Z0ZW4gcmV2ZWFsIGludGVyZXN0aW5nIGVkZ2UgY2FzZXMgaW4gcmVzb3VyY2UgYWxsb2NhdGlvbiBvciB0cmFmZmljIHNoYXBpbmcgdGhhdCBhcmUgcGVyZmVjdCBmb3IgZnV6emluZy4gU3BlY2lmaWNhbGx5OgoKKiAgIGBzY2hfZHJyYDogUXVhbnR1bSBjbGFtcC4KKiAgIGBzY2hfZHVhbHBpMmA6IE10dSBjbGFtcCBhbmQgcG90ZW50aWFsbHkgcmVsYXRlZCB0byBgY19wcm90ZWN0aW9uYC4KKiAgIGBzY2hfZXRzYDogUXVhbnR1bSBjbGFtcC4KKiAgIGBzY2hfZnFgOiBgaXFfcmFuZ2VgIGFuZCBxdWFudHVtIGNsYW1waW5nLgoqICAgYHNjaF9mcV9waWVgOiBRdWFudHVtIG1pbmltdW0uCiogICBgc2NoX2hoZmA6IFF1YW50dW0gbWluaW11bSBhbmQgY2xhbXAuCiogICBgc2NoX3BpZWA6IE10dSBjbGFtcC4KKiAgIGBzY2hfc2ZxYDogUXVhbnR1bSBtYXggYW5kIG1pbmltdW0uCgpTbywgdGhlIGltcGFjdCBpcyBwcmV0dHkgZGlyZWN0OiB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBob3cgdGhlc2Ugc2NoZWR1bGVycyAqYmVoYXZlKiBkdXJpbmcgY29uZmlndXJhdGlvbiBhbmQgcnVudGltZSwgY29uY2VybmluZyBDUFUgc3RhbGxzLCBkcm9wcywgb3Igb3RoZXIgbG9naWMgcmVsYXRlZCBwcm9ibGVtcy4gVGhhdCYjMzk7cyBnb29kOyBmdW5jdGlvbmFsIGNoYW5nZXMgYXJlIG9mdGVuIGludGVyZXN0aW5nLgoKQXJlIHRoZSBjaGFuZ2VzIHJlYWNoYWJsZT8gQWJzb2x1dGVseS4gU3RhbmRhcmQgYHRjYCBuZXRsaW5rIGNvbW1hbmRzIHByb3ZpZGUgZGlyZWN0IHVzZXItc3BhY2UgY29udHJvbCBvdmVyIHRoZXNlIHFkaXNjcywgbWVhbmluZyBJIGNhbiBlYXNpbHkgaW5qZWN0IGNyYWZ0ZWQgaW5wdXRzIHZpYSB0b29scyBsaWtlIGBpcHJvdXRlMmAuIFRoaXMgcGF0Y2ggYWZmZWN0cyBsb2dpYyB0aGF0IGlzIGNvbmZpZ3VyZWQgdmlhIGB0Y2AuCgpJcyB0aGlzIHdvcnRoIGZ1enppbmc/IFllcywgd2l0aG91dCBhIGRvdWJ0LiBXZSYjMzk7cmUgbG9va2luZyBhdCBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gY29yZSBuZXR3b3JrIHNjaGVkdWxlciBsb2dpYywgZGlyZWN0bHkgZXhwb3NlZCB0aHJvdWdoIHVzZXItc3BhY2UgbmV0bGluayBpbnRlcmZhY2VzLiBUaGlzIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmaW5kaW5nIGJ1Z3MsIG1lbW9yeSBjb3JydXB0aW9ucywgYW5kIGV2ZW4gcG90ZW50aWFsIGRlbmlhbC1vZi1zZXJ2aWNlIHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIGludmFsaWQgb3IgZXh0cmVtZSBwYXJhbWV0ZXIgdmFsdWVzLgoKRmluYWxseSwgbGV0JiMzOTtzIHZlcmlmeSB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMuIEFsbCB0aGUgYE5FVF9TQ0hfKmAgY29uZmlncyBkZXBlbmQgb24gYE5FVF9TQ0hFRGAgKGFuZCBgTkVUYCkuIFNvLCB0aGUgZmVhdHVyZXMgYXJlIGVuYWJsZWQgYnkgYW4gdW1icmVsbGEgZmVhdHVyZSBhbmQgSSBzaG91bGQgbm90IHdvcnJ5IGFib3V0IGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzLiBJIHdpbGwgY2hlY2sgZm9yIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBgTkVUX1NDSEVEYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDg6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVudWNvbmZpZyBORVRfU0NIRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZy01LVxubmV0L3NjaGVkL0tjb25maWc6NjptZW51Y29uZmlnIE5FVF9TQ0hFRFxubmV0L3NjaGVkL0tjb25maWctNy1cdGJvb2wgXCYjMzQ7UW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA4OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNjI2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBLZXJuZWwmIzM5O3MgU2NoZWR1bGluZyBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCBmaWd1cmUgb3V0IHRoZXNlIGRlcGVuZGVuY2llcyBmb3IgYE5FVF9TQ0hfRlFfUElFYC4gUmlnaHQsIHRoZSBmaXJzdCB0aGluZyBpcyB0byBjb25maXJtIHdoYXQgdGhlIEtjb25maWcgZmlsZXMgYXJlIHRlbGxpbmcgbWUuIFNvLCBgTkVUX1NDSF9GUV9QSUVgICpkZXBlbmRzKiBvbiBgTkVUX1NDSF9QSUVgLiBNYWtlcyBzZW5zZSwgdGhleSYjMzk7cmUgcHJvYmFibHkgYnVpbGRpbmcgb24gZWFjaCBvdGhlci4gTm93LCBJIG5lZWQgdG8gb3BlbiB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlLCB3aGljaCBJIGtub3cgaXMgaW4gYG5ldC9zY2hlZC9LY29uZmlnYC4gVGltZSB0byBnZXQgYSBjbG9zZSBsb29rIGF0IHRob3NlIGVudHJpZXMgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gY2xlYXIgb24gYWxsIHRoZSBvdGhlciBvcHRpb24gZGVwZW5kZW5jaWVzIGFuZCBpbnRlcmFjdGlvbnMgd2l0aGluIHRoYXQgc2VjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDg6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTEwOlx0XG4gMTExOlx0Y29uZmlnIE5FVF9TQ0hfU0ZRXG4gMTEyOlx0XHR0cmlzdGF0ZSBcJiMzNDtTdG9jaGFzdGljIEZhaXJuZXNzIFF1ZXVlaW5nIChTRlEpXCYjMzQ7XG4gMTEzOlx0XHRoZWxwXG4gMTE0Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBTdG9jaGFzdGljIEZhaXJuZXNzIFF1ZXVlaW5nIChTRlEpXG4gMTE1Olx0XHQgIHBhY2tldCBzY2hlZHVsaW5nIGFsZ29yaXRobS5cbiAxMTY6XHRcbiAxMTc6XHRcdCAgU2VlIHRoZSB0b3Agb2YgXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3NmcS5jXHUwMDNlIGZvciBtb3JlIGRldGFpbHMuXG4gMTE4Olx0XG4gMTE5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAxMjA6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF9zZnEuXG4gMTIxOlx0XG4gMTIyOlx0Y29uZmlnIE5FVF9TQ0hfVEVRTFxuIDEyMzpcdFx0dHJpc3RhdGUgXCYjMzQ7VHJ1ZSBMaW5rIEVxdWFsaXplciAoVEVRTClcJiMzNDtcbiAxMjQ6XHRcdGhlbHBcbiAxMjU6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIFRydWUgTGluayBFcXVhbGl6ZXIgKFRMRSkgcGFja2V0XG4gMTI2Olx0XHQgIHNjaGVkdWxpbmcgYWxnb3JpdGhtLiBUaGlzIHF1ZXVlaW5nIGRpc2NpcGxpbmUgYWxsb3dzIHRoZSBjb21iaW5hdGlvblxuIDEyNzpcdFx0ICBvZiBzZXZlcmFsIHBoeXNpY2FsIGRldmljZXMgaW50byBvbmUgdmlydHVhbCBkZXZpY2UuXG4gMTI4Olx0XG4gMTI5Olx0XHQgIFNlZSB0aGUgdG9wIG9mIFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF90ZXFsLmNcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDg6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExOTcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIEtjb25maWcgZW50cmllczoKCioqUmV2aWV3aW5nIE5ldHdvcmsgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBuZXQvc2NoZWQvS2NvbmZpZ2AgZmlsZSBhbmQgcmVmcmVzaCBvdXIgbWVtb3J5IG9uIHNvbWUgb2YgdGhvc2UgdHJhZmZpYyBzaGFwaW5nIGFuZCBxdWV1aW5nIGRpc2NpcGxpbmVzLiBJJiMzOTttIHRoaW5raW5nLCBsZXQmIzM5O3MgcXVpY2tseSBqb2cgdGhyb3VnaCB0aGUgb3RoZXIgS2NvbmZpZyBlbnRyaWVzIGxpa2UgRFJSLCBFVFMsIEZRLCBGUV9QSUUsIEhIRiwgUElFLCBhbmQgRFVBTFBJMi4gSXQmIzM5O3MgYWx3YXlzIGJlbmVmaWNpYWwgdG8gaGF2ZSBhIG1lbnRhbCBtYXAgb2Ygd2hhdCYjMzk7cyBhdmFpbGFibGUgYW5kIGhvdyB0aGV5IHJlbGF0ZS4gSSB3YW50IHRvIHF1aWNrbHkgZXZhbHVhdGUgd2hpY2ggb2YgdGhlc2UgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIGEgcHJvamVjdCBvciBpZiBhbnl0aGluZyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIEkgbG9va2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjA1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMDU6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAyMDY6XHRcbiAyMDc6XHRjb25maWcgTkVUX1NDSF9EUlJcbiAyMDg6XHRcdHRyaXN0YXRlIFwmIzM0O0RlZmljaXQgUm91bmQgUm9iaW4gc2NoZWR1bGVyIChEUlIpXCYjMzQ7XG4gMjA5Olx0XHRoZWxwXG4gMjEwOlx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBEZWZpY2l0IFJvdW5kIFJvYmluIChEUlIpIHBhY2tldFxuIDIxMTpcdFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS5cbiAyMTI6XHRcbiAyMTM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDIxNDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBzY2hfZHJyLlxuIDIxNTpcdFxuIDIxNjpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIDIxNzpcdFxuIDIxODpcdGNvbmZpZyBORVRfU0NIX01RUFJJT1xuIDIxOTpcdFx0dHJpc3RhdGUgXCYjMzQ7TXVsdGktcXVldWUgcHJpb3JpdHkgc2NoZWR1bGVyIChNUVBSSU8pXCYjMzQ7XG4gMjIwOlx0XHRzZWxlY3QgTkVUX1NDSF9NUVBSSU9fTElCXG4gMjIxOlx0XHRoZWxwXG4gMjIyOlx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBNdWx0aS1xdWV1ZSBQcmlvcml0eSBzY2hlZHVsZXIuXG4gMjIzOlx0XHQgIFRoaXMgc2NoZWR1bGVyIGFsbG93cyBRT1MgdG8gYmUgb2ZmbG9hZGVkIG9uIE5JQ3MgdGhhdCBoYXZlIHN1cHBvcnRcbiAyMjQ6XHRcdCAgZm9yIG9mZmxvYWRpbmcgUU9TIHNjaGVkdWxlcnMuXG4gMjI1Olx0XG4gMjI2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbFxuIDIyNzpcdFx0ICBiZSBjYWxsZWQgc2NoX21xcHJpby5cbiAyMjg6XHRcbiAyMjk6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAyMzA6XHRcbiAyMzE6XHRjb25maWcgTkVUX1NDSF9TS0JQUklPXG4gMjMyOlx0XHR0cmlzdGF0ZSBcJiMzNDtTS0IgcHJpb3JpdHkgcXVldWUgc2NoZWR1bGVyIChTS0JQUklPKVwmIzM0O1xuIDIzMzpcdFx0aGVscFxuIDIzNDpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgU0tCIHByaW9yaXR5IHF1ZXVlXG4gMjM1Olx0XHQgIHNjaGVkdWxlci4gVGhpcyBzY2hlZHVsZXMgcGFja2V0cyBhY2NvcmRpbmcgdG8gc2tiLVx1MDAzZXByaW9yaXR5LFxuIDIzNjpcdFx0ICB3aGljaCBpcyB1c2VmdWwgZm9yIHJlcXVlc3QgcGFja2V0cyBpbiBEb1MgbWl0aWdhdGlvbiBzeXN0ZW1zIHN1Y2hcbiAyMzc6XHRcdCAgYXMgR2F0ZWtlZXBlci5cbiAyMzg6XHRcbiAyMzk6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsXG4gMjQwOlx0XHQgIGJlIGNhbGxlZCBzY2hfc2ticHJpby5cbiAyNDE6XHRcbiAyNDI6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAyNDM6XHRcbiAyNDQ6XHRjb25maWcgTkVUX1NDSF9DSE9LRVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjAwNAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgbGluZXMsIHRhaWxvcmVkIGZvciBhIGZlbGxvdyBleHBlcnQ6CgoqKkRpdmluZyBpbnRvIHRoZSBDcml0aWNhbCBTZWN0aW9uIChMaW5lcyAyOTUtNDMwKSoqCgpBbHJpZ2h0LCBzbywgbGV0JiMzOTtzIHplcm8gaW4gb24gbGluZXMgMjk1LTQzMC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgb2YgW2luc2VydCB5b3VyIGZpZWxkJiMzOTtzIHJlbGV2YW50IHByb2Nlc3MvZnVuY3Rpb25dIGlzIGxpa2VseSBpbXBsZW1lbnRlZC4gSSYjMzk7bSBpbW1lZGlhdGVseSBsb29raW5nIGZvciBrZXkgaW5kaWNhdG9ycyDigJMgYW55IGNsdWVzIGFib3V0IGRhdGEgc3RydWN0dXJlcyBiZWluZyBtYW5pcHVsYXRlZCwgYW55IG9idmlvdXMgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIHBvdGVudGlhbCBwb2ludHMgb2YgZmFpbHVyZS4uLiB5b3Uga25vdyB0aGUgZHJpbGwuIEdpdmVuIHRoZSBsZW5ndGggb2YgdGhpcyBzZWN0aW9uLCBJJiMzOTttIGV4cGVjdGluZyBzb21lIGxldmVsIG9mIGNvbXBsZXhpdHkuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGFsZ29yaXRobWljIGZsb3cuIEFyZSB0aGV5IGltcGxlbWVudGluZyBhIGNsYXNzaWMgYWxnb3JpdGhtLCBvciBpcyB0aGVyZSBhIGN1c3RvbSBzb2x1dGlvbiBpbiBwbGF5PyBXaGF0IGFyZSB0aGUgdHJhZGVvZmZzIHRoZXkmIzM5O3ZlIG1hZGU/IEhvdyB3ZWxsIGRvIHRoZXNlIHRyYWRlb2ZmcyBhbGlnbiB3aXRoIGVzdGFibGlzaGVkIGJlc3QgcHJhY3RpY2VzIGluIFt5b3VyIGZpZWxkXT8gSSYjMzk7bSBzY2FubmluZyBmb3IgYW55IHN1YnRsZSBpbmNvbnNpc3RlbmNpZXMgaW4gdmFyaWFibGUgbmFtaW5nIG9yIGNvbW1lbnRzOyB0aGVzZSBvZnRlbiB0ZWxsIGEgc3RvcnkgYWJvdXQgdGhlIGV2b2x1dGlvbiBvZiB0aGUgY29kZS4gSXMgdGhlIGNvZGUgbWFpbnRhaW5hYmxlLCBvciBoYXMgaXQgYmVjb21lIGEgYmVoZW1vdGggdG8gYmUgdGFtZWQuIFRoZSBnb2FsIGhlcmUgaXMgdG8gZXN0YWJsaXNoIGEgY2xlYXIgbWVudGFsIG1hcCBvZiB3aGF0JiMzOTtzIGhhcHBlbmluZy4gQW5kIGltcG9ydGFudGx5LCB0byBsb29rIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IG5lZWQgbXkgZm9jdXNlZCBhdHRlbnRpb24gaW4gdGhlIHByb2plY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA4OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyOTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI5NTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBzY2hfY2FrZS5cbiAyOTY6XHRcbiAyOTc6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAyOTg6XHRcbiAyOTk6XHRjb25maWcgTkVUX1NDSF9GUVxuIDMwMDpcdFx0dHJpc3RhdGUgXCYjMzQ7RmFpciBRdWV1ZVwmIzM0O1xuIDMwMTpcdFx0aGVscFxuIDMwMjpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgRlEgcGFja2V0IHNjaGVkdWxpbmcgYWxnb3JpdGhtLlxuIDMwMzpcdFxuIDMwNDpcdFx0ICBGUSBkb2VzIGZsb3cgc2VwYXJhdGlvbiwgYW5kIGlzIGFibGUgdG8gcmVzcGVjdCBwYWNpbmcgcmVxdWlyZW1lbnRzXG4gMzA1Olx0XHQgIHNldCBieSBUQ1Agc3RhY2sgaW50byBzay1cdTAwM2Vza19wYWNpbmdfcmF0ZSAoZm9yIGxvY2FsbHkgZ2VuZXJhdGVkXG4gMzA2Olx0XHQgIHRyYWZmaWMpXG4gMzA3Olx0XG4gMzA4Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAzMDk6XHRcdCAgd2lsbCBiZSBjYWxsZWQgc2NoX2ZxLlxuIDMxMDpcdFxuIDMxMTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIDMxMjpcdFxuIDMxMzpcdGNvbmZpZyBORVRfU0NIX0hIRlxuIDMxNDpcdFx0dHJpc3RhdGUgXCYjMzQ7SGVhdnktSGl0dGVyIEZpbHRlciAoSEhGKVwmIzM0O1xuIDMxNTpcdFx0aGVscFxuIDMxNjpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgSGVhdnktSGl0dGVyIEZpbHRlciAoSEhGKVxuIDMxNzpcdFx0ICBwYWNrZXQgc2NoZWR1bGluZyBhbGdvcml0aG0uXG4gMzE4Olx0XG4gMzE5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAzMjA6XHRcdCAgd2lsbCBiZSBjYWxsZWQgc2NoX2hoZi5cbiAzMjE6XHRcbiAzMjI6XHRjb25maWcgTkVUX1NDSF9QSUVcbiAzMjM6XHRcdHRyaXN0YXRlIFwmIzM0O1Byb3BvcnRpb25hbCBJbnRlZ3JhbCBjb250cm9sbGVyIEVuaGFuY2VkIChQSUUpIHNjaGVkdWxlclwmIzM0O1xuIDMyNDpcdFx0aGVscFxuIDMyNTpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgUHJvcG9ydGlvbmFsIEludGVncmFsIGNvbnRyb2xsZXJcbiAzMjY6XHRcdCAgRW5oYW5jZWQgc2NoZWR1bGVyIHBhY2tldCBzY2hlZHVsaW5nIGFsZ29yaXRobS5cbiAzMjc6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzgwMzNcbiAzMjg6XHRcbiAzMjk6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDMzMDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBzY2hfcGllLlxuIDMzMTpcdFxuIDMzMjpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIDMzMzpcdFxuIDMzNDpcdGNvbmZpZyBORVRfU0NIX0ZRX1BJRVxuIDMzNTpcdFx0ZGVwZW5kcyBvbiBORVRfU0NIX1BJRVxuIDMzNjpcdFx0dHJpc3RhdGUgXCYjMzQ7RmxvdyBRdWV1ZSBQcm9wb3J0aW9uYWwgSW50ZWdyYWwgY29udHJvbGxlciBFbmhhbmNlZCAoRlEtUElFKVwmIzM0O1xuIDMzNzpcdFx0aGVscFxuIDMzODpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgRmxvdyBRdWV1ZSBQcm9wb3J0aW9uYWwgSW50ZWdyYWxcbiAzMzk6XHRcdCAgY29udHJvbGxlciBFbmhhbmNlZCAoRlEtUElFKSBwYWNrZXQgc2NoZWR1bGluZyBhbGdvcml0aG0uXG4gMzQwOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM4MDMzXG4gMzQxOlx0XG4gMzQyOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAzNDM6XHRcdCAgd2lsbCBiZSBjYWxsZWQgc2NoX2ZxX3BpZS5cbiAzNDQ6XHRcbiAzNDU6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAzNDY6XHRcbiAzNDc6XHRjb25maWcgTkVUX1NDSF9JTkdSRVNTXG4gMzQ4Olx0XHR0cmlzdGF0ZSBcJiMzNDtJbmdyZXNzL2NsYXNzaWZpZXItYWN0aW9uIFFkaXNjXCYjMzQ7XG4gMzQ5Olx0XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG4gMzUwOlx0XHRzZWxlY3QgTkVUX1hHUkVTU1xuIDM1MTpcdFx0aGVscFxuIDM1MjpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBjbGFzc2lmaWVycyBmb3IgaW5jb21pbmcgYW5kL29yIG91dGdvaW5nXG4gMzUzOlx0XHQgIHBhY2tldHMuIFRoaXMgcWRpc2MgZG9lc24mIzM5O3QgZG8gYW55dGhpbmcgZWxzZSBiZXNpZGVzIHJ1bm5pbmcgY2xhc3NpZmllcnMsXG4gMzU0Olx0XHQgIHdoaWNoIGNhbiBhbHNvIGhhdmUgYWN0aW9ucyBhdHRhY2hlZCB0byB0aGVtLiBJbiBjYXNlIG9mIG91dGdvaW5nIHBhY2tldHMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA4OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMjIwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCByZXF1ZXN0LCBmb3JtYXR0ZWQgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBDb2RlYmFzZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gVGhlIHRhc2sgYXQgaGFuZCBjbGVhcmx5IGludm9sdmVzIGEgc3BlY2lmaWMgc2VjdGlvbiBvZiB0aGUgY29kZSwgYW5kIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGFyZWEuIEZvY3VzaW5nIG9uIGxpbmVzIDM4NSB0aHJvdWdoIDQzMCBpcyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC4gVGhpcyBwYXJ0aWN1bGFyIHNlZ21lbnQgbGlrZWx5IGhvbGRzIHRoZSBrZXkgdG8gYWRkcmVzc2luZyB0aGUgY3VycmVudCBwcm9ibGVtIG9yIHVuZGVyc3RhbmRpbmcgdGhlIHJlbGV2YW50IGZ1bmN0aW9uYWxpdHkuIEl0JiMzOTtzIGEgdGFyZ2V0ZWQgYXBwcm9hY2gsIGhvcGVmdWxseSBhdm9pZGluZyB1bm5lY2Vzc2FyeSBzY2FubmluZyBvZiB0aGUgZW50aXJlIG1vZHVsZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGdlbXMgYXJlIGhpZGRlbiBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDg6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzg1Olx0XG4gMzg2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAzODc6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF9wbHVnLlxuIDM4ODpcdFxuIDM4OTpcdGNvbmZpZyBORVRfU0NIX0VUU1xuIDM5MDpcdFx0dHJpc3RhdGUgXCYjMzQ7RW5oYW5jZWQgdHJhbnNtaXNzaW9uIHNlbGVjdGlvbiBzY2hlZHVsZXIgKEVUUylcJiMzNDtcbiAzOTE6XHRcdGhlbHBcbiAzOTI6XHQgICAgICAgICAgVGhlIEVuaGFuY2VkIFRyYW5zbWlzc2lvbiBTZWxlY3Rpb24gc2NoZWR1bGVyIGlzIGEgY2xhc3NmdWxcbiAzOTM6XHQgICAgICAgICAgcXVldWluZyBkaXNjaXBsaW5lIHRoYXQgbWVyZ2VzIGZ1bmN0aW9uYWxpdHkgb2YgUFJJTyBhbmQgRFJSXG4gMzk0Olx0ICAgICAgICAgIHFkaXNjcyBpbiBvbmUgc2NoZWR1bGVyLiBFVFMgbWFrZXMgaXQgZWFzeSB0byBjb25maWd1cmUgYSBzZXQgb2ZcbiAzOTU6XHQgICAgICAgICAgc3RyaWN0IGFuZCBiYW5kd2lkdGgtc2hhcmluZyBiYW5kcyB0byBpbXBsZW1lbnQgdGhlIHRyYW5zbWlzc2lvblxuIDM5NjpcdCAgICAgICAgICBzZWxlY3Rpb24gZGVzY3JpYmVkIGluIDgwMi4xUWF6LlxuIDM5NzpcdFxuIDM5ODpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgRVRTIHBhY2tldCBzY2hlZHVsaW5nXG4gMzk5Olx0XHQgIGFsZ29yaXRobS5cbiA0MDA6XHRcbiA0MDE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDQwMjpcdFx0ICB3aWxsIGJlIGNhbGxlZCBzY2hfZXRzLlxuIDQwMzpcdFxuIDQwNDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIDQwNTpcdFxuIDQwNjpcdGNvbmZpZyBORVRfU0NIX0JQRlxuIDQwNzpcdFx0Ym9vbCBcJiMzNDtCUEYtYmFzZWQgUWRpc2NcJiMzNDtcbiA0MDg6XHRcdGRlcGVuZHMgb24gQlBGX1NZU0NBTEwgXHUwMDI2XHUwMDI2IEJQRl9KSVQgXHUwMDI2XHUwMDI2IERFQlVHX0lORk9fQlRGXG4gNDA5Olx0XHRoZWxwXG4gNDEwOlx0XHQgIFRoaXMgb3B0aW9uIGFsbG93cyBCUEYtYmFzZWQgcXVldWVpbmcgZGlzaXBsaW5lcy4gV2l0aCBCUEYgc3RydWN0X29wcyxcbiA0MTE6XHRcdCAgdXNlcnMgY2FuIGltcGxlbWVudCBzdXBwb3J0ZWQgb3BlcmF0b3JzIGluIFFkaXNjX29wcyB1c2luZyBCUEYgcHJvZ3JhbXMuXG4gNDEyOlx0XHQgIFRoZSBxdWV1ZSBob2xkaW5nIHNrYiBjYW4gYmUgYnVpbHQgd2l0aCBCUEYgbWFwcyBvciBncmFwaHMuXG4gNDEzOlx0XG4gNDE0Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIEJQRi1iYXNlZCBRZGlzYy5cbiA0MTU6XHRcbiA0MTY6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiA0MTc6XHRcbiA0MTg6XHRjb25maWcgTkVUX1NDSF9EVUFMUEkyXG4gNDE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtEdWFsIFF1ZXVlIFBJIFNxdWFyZSAoRFVBTFBJMikgc2NoZWR1bGVyXCYjMzQ7XG4gNDIwOlx0XHRoZWxwXG4gNDIxOlx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBEdWFsIFF1ZXVlIFByb3BvcnRpb25hbCBJbnRlZ3JhbFxuIDQyMjpcdFx0ICBDb250cm9sbGVyIEltcHJvdmVkIHdpdGggYSBTcXVhcmUgc2NoZWR1bGluZyBhbGdvcml0aG0uXG4gNDIzOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM5MzMyXG4gNDI0Olx0XG4gNDI1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiA0MjY6XHRcdCAgd2lsbCBiZSBjYWxsZWQgc2NoX2R1YWxwaTIuXG4gNDI3Olx0XG4gNDI4Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gNDI5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA4OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MDg2CgkJCQkJCQlvdXRwdXQ6IDI0MwoJCQkJCQkJdGhvdWdodHM6IDc4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1cyBTeW1ib2wgQW5hbHlzaXMgYW5kIENvbmZpZ3VyYXRpb24gUmV2aWV3KioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBmb2N1cyBzeW1ib2xzLiBMb29rcyBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzZXQgb2YgbW9kaWZpZWQgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcXVldWluZyBkaXNjaXBsaW5lcyB3aXRoaW4gdGhlIG5ldHdvcmsgc2NoZWR1bGVyOiBgcGllX2Ryb3BfZWFybHlgIGluIGBzY2hfcGllLmNgLCBgZHJyX2NoYW5nZV9jbGFzc2AgaW4gYHNjaF9kcnIuY2AsIGFuZCBhIGZldyBmcm9tIGBzY2hfZXRzLmNgIChgZXRzX3F1YW50dW1fcGFyc2VgLCBgZXRzX3FkaXNjX2NoYW5nZWApLCBhbG9uZyB3aXRoIGNoYW5nZXMgaW4gYHNjaF9mcS5jYCAoYGZxX2NoYW5nZWAsIGBmcV9pbml0YCksIGBzY2hfZnFfcGllLmNgIChgZnFfcGllX2NoYW5nZWApLCBgc2NoX2hoZi5jYCAoYGhoZl9jaGFuZ2VgLCBgaGhmX2luaXRgKSwgYHNjaF9zZnEuY2AgKGBzZnFfY2hhbmdlYCksIGFuZCBmaW5hbGx5IHRoZSBgc2NoX2R1YWxwaTIuY2Agc2V0IGluY2x1ZGluZyBgZHVhbHBpMl9jYWxjdWxhdGVfY19wcm90ZWN0aW9uYCwgYGR1YWxwaTJfaW5pdGAsIGFuZCBgZHVhbHBpMl9jaGFuZ2VgLgoKTm93LCBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgaW4gdGhlc2UgZmlsZXMgdGhhdCBtaWdodCBuZWVkIGZ1cnRoZXIgc2NydXRpbnksIG9yIGlmIHRoZXNlIGlkZW50aWZpZWQgZnVuY3Rpb25zIGFyZSBpbmxpbmVkIG9yIGhhdmUgZGlzdGluY3Qgc3ltYm9scy4gIFNpbmNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW52b2x2ZWQgaW4gb3BlcmF0aW9ucyBsaWtlIGBjaGFuZ2VgIG9yIGBpbml0YCBhbmQgdGhleSBhcmUgbGlrZWx5IGJlaW5nIHJlZmVyZW5jZWQgdmlhIGZ1bmN0aW9uIHBvaW50ZXJzIGluIHN0cnVjdHVyZXMgbGlrZSBgUWRpc2Nfb3BzYCBhbmQgYFFkaXNjX2NsYXNzX29wc2AsIEkgY2FuIGFzc3VtZSB0aGVpciBhZGRyZXNzZXMgYXJlIGJlaW5nIHRha2VuLCB3aGljaCB3b3VsZCBwcmV2ZW50IHRoZSBjb21waWxlciBmcm9tIGlubGluaW5nIHRoZW0uIFRoYXQmIzM5O3MgZ29vZDsgdGhpcyBjb25maXJtcyB0aGV5JiMzOTtyZSBkaXN0aW5jdCBzeW1ib2xzIGFuZCB3YXJyYW50IHNwZWNpZmljIGF0dGVudGlvbi4KCkFscmlnaHQsIHRpbWUgdG8gY3JlYXRlIGEgZGVmaW5pdGl2ZSBsaXN0IG9mIHRoZSByZWxldmFudCBub24taG90LXBhdGggZm9jdXMgc3ltYm9scy4gSSYjMzk7dmUgZ290OiBgZHJyX2NoYW5nZV9jbGFzc2AsIGBldHNfcWRpc2NfY2hhbmdlYCwgYGZxX2NoYW5nZWAsIGBmcV9pbml0YCwgYGZxX3BpZV9jaGFuZ2VgLCBgaGhmX2NoYW5nZWAsIGBoaGZfaW5pdGAsIGBzZnFfY2hhbmdlYCwgYW5kIGBwaWVfZHJvcF9lYXJseWAuCgpOZXh0LCBJIGhhdmUgdG8gZW5zdXJlIHRoZSBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb25zIGFyZSBjb3JyZWN0LiBMZXQmIzM5O3Mgc2VlLi4uICBgTkVUX1NDSEVEYCwgYE5FVF9TQ0hfRFJSYCwgYE5FVF9TQ0hfRFVBTFBJMmAsIGBORVRfU0NIX0VUU2AsIGBORVRfU0NIX0ZRYCwgYE5FVF9TQ0hfRlFfUElFYCwgYE5FVF9TQ0hfSEhGYCwgYE5FVF9TQ0hfUElFYCwgYE5FVF9TQ0hfU0ZRYC4gIE9rYXksIGFsbCBwcmVzZW50LCBhbGwgY29ycmVjdGx5IHdpdGhvdXQgYENPTkZJR19gIHByZWZpeC4KCkRvdWJsZS1jaGVja2luZyB0aGUgV29ydGhGdXp6aW5nIGF0dHJpYnV0ZSAtIFllcywgdGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0byBmdXp6LiBUaGVzZSBjaGFuZ2VzIHRvdWNoIGNvcmUgdHJhZmZpYyBjb250cm9sIHFkaXNjIHF1ZXVlIHBhcmFtZXRlcnMsIHNwZWNpZmljYWxseSBxdWFudHVtIGFuZCBNVFUgaW5wdXRzLCBhbmQgYWZmZWN0IGVpZ2h0IGRpZmZlcmVudCBuZXR3b3JrIHNjaGVkdWxlcnMgKGBzY2hfZHJyYCwgYHNjaF9kdWFscGkyYCwgYHNjaF9ldHNgLCBgc2NoX2ZxYCwgYHNjaF9mcV9waWVgLCBgc2NoX2hoZmAsIGBzY2hfcGllYCwgYHNjaF9zZnFgKSBjb25maWd1cmVkIHZpYSBuZXRsaW5rLiAgVGhlc2UgYXJlIGNyaXRpY2FsIGFyZWFzIGZvciBtYWludGFpbmluZyBuZXR3b3JrIHN0YWJpbGl0eSwgYW5kIHRoaXMgY2xlYXJseSBpbmRpY2F0ZXMgYSBuZWVkIHRvIHZhbGlkYXRlIHRoZSBpbnB1dCBoYW5kbGluZyBhbmQgYm91bmRzLgoKTm93LCBsZXQmIzM5O3MgcHJlcGFyZSB0aGUgYHNldC1yZXN1bHRzYCBjYWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRFJSJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRFVBTFBJMiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0VUUyYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0ZRJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRlFfUElFJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfSEhGJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfUElFJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfU0ZRJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJyX2NoYW5nZV9jbGFzcyYjMzQ7LAogICAgJiMzNDtldHNfcWRpc2NfY2hhbmdlJiMzNDssCiAgICAmIzM0O2ZxX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtmcV9pbml0JiMzNDssCiAgICAmIzM0O2ZxX3BpZV9jaGFuZ2UmIzM0OywKICAgICYjMzQ7aGhmX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtoaGZfaW5pdCYjMzQ7LAogICAgJiMzNDtzZnFfY2hhbmdlJiMzNDssCiAgICAmIzM0O3BpZV9kcm9wX2Vhcmx5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhcmFtZXRlciB2YWxpZGF0aW9uIGFuZCBjbGFtcGluZyBmb3IgTVRVIGFuZCBxdWFudHVtIGJvdW5kcyBhY3Jvc3MgbXVsdGlwbGUgdHJhZmZpYyBjb250cm9sIHNjaGVkdWxlcnMgKERSUiwgRFVBTFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgYW5kIFNGUSkuIFRoZXNlIHBhY2tldCBzY2hlZHVsZXJzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBjb25maWd1cmFibGUgdmlhIHJ0bmV0bGluay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRFJSJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRFVBTFBJMiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0VUUyYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0ZRJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRlFfUElFJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfSEhGJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfUElFJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfU0ZRJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJyX2NoYW5nZV9jbGFzcyYjMzQ7LAogICAgJiMzNDtldHNfcWRpc2NfY2hhbmdlJiMzNDssCiAgICAmIzM0O2ZxX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtmcV9pbml0JiMzNDssCiAgICAmIzM0O2ZxX3BpZV9jaGFuZ2UmIzM0OywKICAgICYjMzQ7aGhmX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtoaGZfaW5pdCYjMzQ7LAogICAgJiMzNDtzZnFfY2hhbmdlJiMzNDssCiAgICAmIzM0O3BpZV9kcm9wX2Vhcmx5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhcmFtZXRlciB2YWxpZGF0aW9uIGFuZCBjbGFtcGluZyBmb3IgTVRVIGFuZCBxdWFudHVtIGJvdW5kcyBhY3Jvc3MgbXVsdGlwbGUgdHJhZmZpYyBjb250cm9sIHNjaGVkdWxlcnMgKERSUiwgRFVBTFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgYW5kIFNGUSkuIFRoZXNlIHBhY2tldCBzY2hlZHVsZXJzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBjb25maWd1cmFibGUgdmlhIHJ0bmV0bGluay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDg6MzY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlc3RyaWN0cyBhbmQgY2xhbXBzIHF1YW50dW0gYW5kIE1UVSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgaW4gc2V2ZXJhbCBuZXQvc2NoZWQgcWRpc2MgaW1wbGVtZW50YXRpb25zIChzY2hfZHJyLCBzY2hfZHVhbHBpMiwgc2NoX2V0cywgc2NoX2ZxLCBzY2hfZnFfcGllLCBzY2hfaGhmLCBzY2hfcGllLCBzY2hfc2ZxKSB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzIG9yIGRpdmlzaW9uLWJ5LXplcm8vZGVnZW5lcmF0ZSBzY2hlZHVsaW5nIHN0YXRlcy4gQWxsIHRvdWNoZWQgdmFyaWFibGVzIGFyZSBwbGFpbiBzY2FsYXIgaW50ZWdlcnMgKHUzMi9zMzIpIHRoYXQgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGF0IHRoZSBwb2ludCBvZiBkZWZpbml0aW9uL2Fzc2lnbm1lbnQuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZSBwYWRkaW5nLCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzLCBvciBrZXJuZWwtdG8tdXNlciBjb3B5IG9wZXJhdGlvbnMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiYmVhZjU5M2Y1ZGM0ZTVhOTBkOGRjODk4Y2U1ODBiZDVlMTAyMjUwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMjkgMDg6MzU6NDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2Ryci5jIGIvbmV0L3NjaGVkL3NjaF9kcnIuYwppbmRleCA5MWIxZWY4MjRhZmFmLi44NjIxZDA1N2VkZDlmIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2Ryci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZHJyLmMKQEAgLTgyLDggJiM0Mzs4Miw5IEBAIHN0YXRpYyBpbnQgZHJyX2NoYW5nZV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQsIHUzMiBwYXJlbnRpZCwKIAkJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDtTcGVjaWZpZWQgRFJSIHF1YW50dW0gY2Fubm90IGJlIHplcm8mIzM0Oyk7CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQomIzQzOwkJcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBxdWFudHVtLCAyNTYsIDEgJmx0OyZsdDsgMjApOwogCX0gZWxzZQotCQlxdWFudHVtID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7CiYjNDM7CQlxdWFudHVtID0gY2xhbXBfdCh1MzIsICh1MzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAKIAlpZiAoY2wgIT0gTlVMTCkgewogCQlpZiAodGNhW1RDQV9SQVRFXSkgewpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmMgYi9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYwppbmRleCA0ZjY3OGQ0ZmYxMGVjLi40OTQ3ZGVmN2M0OWVmIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYwpAQCAtMjA4LDkgJiM0MzsyMDgsMTEgQEAgc3RhdGljIHZvaWQgZHVhbHBpMl9yZXNldF9jX3Byb3RlY3Rpb24oc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSkKIHN0YXRpYyB2b2lkIGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbihzdHJ1Y3QgUWRpc2MgKnNjaCwKIAkJCQkJICAgc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgdTMyIHdjKQogewomIzQzOwl1MzIgbXR1ID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAxLCAxICZsdDsmbHQ7IDIwKTsKJiM0MzsKIAlxLSZndDtjX3Byb3RlY3Rpb25fd2MgPSB3YzsKIAlxLSZndDtjX3Byb3RlY3Rpb25fd2wgPSBNQVhfV0MgLSB3YzsKLQlxLSZndDtjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkgKgomIzQzOwlxLSZndDtjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpbXR1ICoKIAkJKChpbnQpcS0mZ3Q7Y19wcm90ZWN0aW9uX3djIC0gKGludClxLSZndDtjX3Byb3RlY3Rpb25fd2wpOwogCWR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHEpOwogfQpAQCAtMjg1LDggJiM0MzsyODcsOSBAQCBzdGF0aWMgYm9vbCBtdXN0X2Ryb3Aoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsCiAJdTY0IGxvY2FsX2xfcHJvYjsKIAlib29sIG92ZXJsb2FkOwogCXUzMiBwcm9iOwomIzQzOwl1MzIgbXR1ID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAxLCAxICZsdDsmbHQ7IDIwKTsKIAotCWlmIChzY2gtJmd0O3FzdGF0cy5iYWNrbG9nICZsdDsgMiAqIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpKQomIzQzOwlpZiAoc2NoLSZndDtxc3RhdHMuYmFja2xvZyAmbHQ7IDIgKiBtdHUpCiAJCXJldHVybiBmYWxzZTsKIAogCXByb2IgPSBSRUFEX09OQ0UocS0mZ3Q7cGkyX3Byb2IpOwpAQCAtNzEyLDcgJiM0Mzs3MTUsOCBAQCBzdGF0aWMgdTMyIGdldF9tZW1vcnlfbGltaXQoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBsaW1pdCkKIAkvKiBBcHBseSBydWxlIG9mIHRodW1iLCBpLmUuLCBkb3VibGluZyB0aGUgcGFja2V0IGxlbmd0aCwKIAkgKiB0byBmdXJ0aGVyIGluY2x1ZGUgcGVyIHBhY2tldCBvdmVyaGVhZCBpbiBtZW1vcnlfbGltaXQuCiAJICovCi0JdTY0IG1lbWxpbSA9IG11bF91MzJfdTMyKGxpbWl0LCAyICogcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkpOwomIzQzOwl1NjQgbWVtbGltID0gbXVsX3UzMl91MzIobGltaXQsIDIgKiBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksCiYjNDM7CQkJCQkJICAgICAxLCAxICZsdDsmbHQ7IDIwKSk7CiAKIAlpZiAodXBwZXJfMzJfYml0cyhtZW1saW0pKQogCQlyZXR1cm4gVTMyX01BWDsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZXRzLmMgYi9uZXQvc2NoZWQvc2NoX2V0cy5jCmluZGV4IDI1ZmNmNDA3OWZlY2UuLjZjYzkwMmEwMzgzODcgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZXRzLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9ldHMuYwpAQCAtODMsMTEgJiM0Mzs4Myw3IEBAIHN0YXRpYyBpbnQgZXRzX3F1YW50dW1fcGFyc2Uoc3RydWN0IFFkaXNjICpzY2gsIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsCiAJCQkgICAgIHVuc2lnbmVkIGludCAqcXVhbnR1bSwKIAkJCSAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQogewotCSpxdWFudHVtID0gbmxhX2dldF91MzIoYXR0cik7Ci0JaWYgKCEqcXVhbnR1bSkgewotCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7RVRTIHF1YW50dW0gY2Fubm90IGJlIHplcm8mIzM0Oyk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KJiM0MzsJKnF1YW50dW0gPSBjbGFtcF90KHUzMiwgbmxhX2dldF91MzIoYXR0ciksIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTYzMiwxMSAmIzQzOzYyOCwxMyBAQCBzdGF0aWMgaW50IGV0c19xZGlzY19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkJCXJldHVybiBlcnI7CiAJfQogCS8qIElmIHRoZXJlIGFyZSBtb3JlIGJhbmRzIHRoYW4gc3RyaWN0ICYjNDM7IHF1YW50YSBwcm92aWRlZCwgdGhlIHJlbWFpbmluZwotCSAqIG9uZXMgYXJlIEVUUyB3aXRoIHF1YW50dW0gb2YgTVRVLiBJbml0aWFsaXplIHRoZSBtaXNzaW5nIHZhbHVlcyBoZXJlLgomIzQzOwkgKiBvbmVzIGFyZSBFVFMgd2l0aCBxdWFudHVtIG9mIG1heChNVFUsIDI1NikuIEluaXRpYWxpemUgdGhlIG1pc3NpbmcKJiM0MzsJICogdmFsdWVzIGhlcmUuCiAJICovCiAJZm9yIChpID0gbnN0cmljdDsgaSAmbHQ7IG5iYW5kczsgaSYjNDM7JiM0MzspIHsKIAkJaWYgKCFxdWFudGFbaV0pCi0JCQlxdWFudGFbaV0gPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTsKJiM0MzsJCQlxdWFudGFbaV0gPSBjbGFtcF90KHUzMiwgKHUzMilwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwKJiM0MzsJCQkJCSAgICAyNTYsIDEgJmx0OyZsdDsgMjApOwogCX0KIAogCS8qIEJlZm9yZSBjb21taXQsIG1ha2Ugc3VyZSB3ZSBjYW4gYWxsb2NhdGUgYWxsIG5ldyBxZGlzY3MgKi8KZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnEuYyBiL25ldC9zY2hlZC9zY2hfZnEuYwppbmRleCA2MTQ0YjU2ODZmMTNmLi4zNWY5NDBiMjIwNWRmIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2ZxLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9mcS5jCkBAIC05ODAsNyAmIzQzOzk4MCw3IEBAIHN0YXRpYyBpbnQgZnFfcmVzaXplKHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgbG9nKQogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGxpbmtfcmFuZ2VfdmFsaWRhdGlvbiBpcV9yYW5nZSA9IHsKLQkubWF4ID0gSU5UX01BWCwKJiM0MzsJLm1heCA9IDEgJmx0OyZsdDsgMjAsCiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZnFfcG9saWN5W1RDQV9GUV9NQVggJiM0MzsgMV0gPSB7CkBAIC0xMTA2LDE0ICYjNDM7MTEwNiwxMCBAQCBzdGF0aWMgaW50IGZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCQkJICAgbmxhX2dldF91MzIodGJbVENBX0ZRX0ZMT1dfUExJTUlUXSkpOwogCiAJaWYgKHRiW1RDQV9GUV9RVUFOVFVNXSkgewotCQl1MzIgcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSk7CiYjNDM7CQl1MzIgcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUVVBTlRVTV0pLAomIzQzOwkJCQkgICAgIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAKLQkJaWYgKHF1YW50dW0gJmd0OyAwICZhbXA7JmFtcDsgcXVhbnR1bSAmbHQ7PSAoMSAmbHQ7Jmx0OyAyMCkpIHsKLQkJCVdSSVRFX09OQ0UocS0mZ3Q7cXVhbnR1bSwgcXVhbnR1bSk7Ci0JCX0gZWxzZSB7Ci0JCQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCAmIzM0O2ludmFsaWQgcXVhbnR1bSYjMzQ7KTsKLQkJCWVyciA9IC1FSU5WQUw7Ci0JCX0KJiM0MzsJCVdSSVRFX09OQ0UocS0mZ3Q7cXVhbnR1bSwgcXVhbnR1bSk7CiAJfQogCiAJaWYgKHRiW1RDQV9GUV9JTklUSUFMX1FVQU5UVU1dKQpAQCAtMTIzMiw3ICYjNDM7MTIyOCw3IEBAIHN0YXRpYyBpbnQgZnFfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCXNjaC0mZ3Q7bGltaXQJCT0gMTAwMDA7CiAJcS0mZ3Q7Zmxvd19wbGltaXQJCT0gMTAwOwogCW10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSAmbHQ7Jmx0OyAyMCk7Ci0JcS0mZ3Q7cXVhbnR1bQkJPSBtaW5fdCh1MzIsIDIgKiBtdHUsIDEgJmx0OyZsdDsgMjApOwomIzQzOwlxLSZndDtxdWFudHVtCQk9IGNsYW1wX3QodTMyLCAyICogbXR1LCAyNTYsIDEgJmx0OyZsdDsgMjApOwogCXEtJmd0O2luaXRpYWxfcXVhbnR1bQk9IG1pbl90KHUzMiwgMTAgKiBtdHUsIDEgJmx0OyZsdDsgMjApOwogCXEtJmd0O2Zsb3dfcmVmaWxsX2RlbGF5CT0gbXNlY3NfdG9famlmZmllcyg0MCk7CiAJcS0mZ3Q7Zmxvd19tYXhfcmF0ZQk9IH4wVUw7CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuYwppbmRleCBiMjdkOTU0MTg3MDdhLi41OTgyODQ3ZGY4Zjg1IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZnFfcGllLmMKQEAgLTM0MSw3ICYjNDM7MzQxLDggQEAgc3RhdGljIGludCBmcV9waWVfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJCQkgICBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX0JFVEFdKSk7CiAKIAlpZiAodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSkKLQkJV1JJVEVfT05DRShxLSZndDtxdWFudHVtLCBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX1FVQU5UVU1dKSk7CiYjNDM7CQlXUklURV9PTkNFKHEtJmd0O3F1YW50dW0sCiYjNDM7CQkJICAgbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKSk7CiAKIAlpZiAodGJbVENBX0ZRX1BJRV9NRU1PUllfTElNSVRdKQogCQlXUklURV9PTkNFKHEtJmd0O21lbW9yeV9saW1pdCwKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfaGhmLmMgYi9uZXQvc2NoZWQvc2NoX2hoZi5jCmluZGV4IDk2YWNhYjZhOGRhMDMuLmZjNzJmODI1ZmJkOTIgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfaGhmLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9oaGYuYwpAQCAtNTUxLDcgJiM0Mzs1NTEsNyBAQCBzdGF0aWMgaW50IGhoZl9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkJcmV0dXJuIGVycjsKIAogCWlmICh0YltUQ0FfSEhGX1FVQU5UVU1dKQotCQluZXdfcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfUVVBTlRVTV0pOwomIzQzOwkJbmV3X3F1YW50dW0gPSBtYXgoMjU2VSwgbmxhX2dldF91MzIodGJbVENBX0hIRl9RVUFOVFVNXSkpOwogCiAJaWYgKHRiW1RDQV9ISEZfTk9OX0hIX1dFSUdIVF0pCiAJCW5ld19oaGZfbm9uX2hoX3dlaWdodCA9IG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfTk9OX0hIX1dFSUdIVF0pOwpAQCAtNjEzLDcgJiM0Mzs2MTMsNyBAQCBzdGF0aWMgaW50IGhoZl9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJaW50IGk7CiAKIAlzY2gtJmd0O2xpbWl0ID0gMTAwMDsKLQlxLSZndDtxdWFudHVtID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7CiYjNDM7CXEtJmd0O3F1YW50dW0gPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAJZ2V0X3JhbmRvbV9ieXRlcygmYW1wO3EtJmd0O3BlcnR1cmJhdGlvbiwgc2l6ZW9mKHEtJmd0O3BlcnR1cmJhdGlvbikpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7cS0mZ3Q7bmV3X2J1Y2tldHMpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7cS0mZ3Q7b2xkX2J1Y2tldHMpOwpAQCAtNjI0LDEwICYjNDM7NjI0LDYgQEAgc3RhdGljIGludCBoaGZfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCXEtJmd0O2hoZl9ldmljdF90aW1lb3V0ID0gSFo7ICAgICAgLyogMSAgc2VjICovCiAJcS0mZ3Q7aGhmX25vbl9oaF93ZWlnaHQgPSAyOwogCi0JaWYgKChpbnQpcS0mZ3Q7cXVhbnR1bSAmbHQ7PSAwIHx8Ci0JICAgICh1NjQpcS0mZ3Q7cXVhbnR1bSAqIHEtJmd0O2hoZl9ub25faGhfd2VpZ2h0ICZndDsgSU5UX01BWCkKLQkJcS0mZ3Q7cXVhbnR1bSA9IDI1NjsKLQogCWlmIChvcHQpIHsKIAkJaW50IGVyciA9IGhoZl9jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7CiAKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfcGllLmMgYi9uZXQvc2NoZWQvc2NoX3BpZS5jCmluZGV4IGI0MWYyZGVmMmUyY2MuLjNiNzg2M2ZmZDI4NGMgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfcGllLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9waWUuYwpAQCAtMzUsNyAmIzQzOzM1LDcgQEAgYm9vbCBwaWVfZHJvcF9lYXJseShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHBpZV9wYXJhbXMgKnBhcmFtcywKIHsKIAl1NjQgcm5kOwogCXU2NCBsb2NhbF9wcm9iID0gdmFycy0mZ3Q7cHJvYjsKLQl1MzIgbXR1ID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7CiYjNDM7CXUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgJmx0OyZsdDsgMjApOwogCiAJLyogSWYgdGhlcmUgaXMgc3RpbGwgYnVyc3QgYWxsb3dhbmNlIGxlZnQgc2tpcCByYW5kb20gZWFybHkgZHJvcCAqLwogCWlmICh2YXJzLSZndDtidXJzdF90aW1lICZndDsgMCkKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfc2ZxLmMgYi9uZXQvc2NoZWQvc2NoX3NmcS5jCmluZGV4IDE4N2QzZWQ1NzhmMjYuLjhiYmNmYzllODVkOTQgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfc2ZxLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9zZnEuYwpAQCAtNjYwLDYgJiM0Mzs2NjAsMTEgQEAgc3RhdGljIGludCBzZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAomIzQzOwlpZiAoY3RsLSZndDtxdWFudHVtICZndDsgMSAmbHQ7Jmx0OyAyMCkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtxdWFudHVtIHRvbyBsYXJnZSYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiAJaWYgKGN0bC0mZ3Q7cGVydHVyYl9wZXJpb2QgJmx0OyAwIHx8CiAJICAgIGN0bC0mZ3Q7cGVydHVyYl9wZXJpb2QgJmd0OyBJTlRfTUFYIC8gSFopIHsKIAkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtpbnZhbGlkIHBlcnR1cmIgcGVyaW9kJiMzNDspOwpAQCAtNjg4LDcgJiM0Mzs2OTMsNyBAQCBzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAogCS8qIHVwZGF0ZSBhbmQgdmFsaWRhdGUgY29uZmlndXJhdGlvbiAqLwogCWlmIChjdGwtJmd0O3F1YW50dW0pCi0JCXF1YW50dW0gPSBjdGwtJmd0O3F1YW50dW07CiYjNDM7CQlxdWFudHVtID0gbWF4KDI1NlUsIGN0bC0mZ3Q7cXVhbnR1bSk7CiAJaWYgKGN0bC0mZ3Q7Zmxvd3MpCiAJCW1heGZsb3dzID0gbWluX3QodTMyLCBjdGwtJmd0O2Zsb3dzLCBTRlFfTUFYX0ZMT1dTKTsKIAlpZiAoY3RsLSZndDtkaXZpc29yKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTM1CgkJCQkJCQlvdXRwdXQ6IDE3NQoJCQkJCQkJdGhvdWdodHM6IDEwMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gRnV6emluZyBTZXNzaW9uIEFzc2Vzc21lbnQqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2ggYW5kIGRlY2lkZSBpZiB3ZSBuZWVkIHRvIHNjaGVkdWxlIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gVGhlIGNoYW5nZXMgc2VlbSB0byBiZSBjb25jZW50cmF0ZWQgaW4gc2V2ZXJhbCBgbmV0L3NjaGVkYCBxZGlzYyBtb2R1bGVzLgoKSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggcHJpbWFyaWx5IGZvY3VzZXMgb24gY2xhbXBpbmcgdmFyaW91cyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMsIGxpa2UgYHF1YW50dW1gIGFuZCBgbXR1YCwgd2l0aGluIHNwZWNpZmljIHJhbmdlcy4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdGhpbmdzIGxpa2UgYGNsYW1wX3RgIGNhbGxzIGFuZCBgbWF4YCBvcGVyYXRpb25zIHRvIGVuc3VyZSB0aGVzZSB2YWx1ZXMgc3RheSB3aXRoaW4gc2Vuc2libGUgYm91bmRzLiBMZXQgbWUgYnJlYWsgZG93biB3aGF0IEkmIzM5O20gc2VlaW5nOgoKKiAgIGBzY2hfZHJyLmNgLCBgc2NoX2R1YWxwaTIuY2AsIGBzY2hfZXRzLmNgLCBgc2NoX2ZxLmNgLCBgc2NoX2ZxX3BpZS5jYCwgYHNjaF9oaGYuY2AsIGBzY2hfcGllLmNgLCBhbmQgYHNjaF9zZnEuY2A6IEFsbCBvZiB0aGVzZSBtb2R1bGVzIGFyZSBpbnZvbHZlZCwgYW5kIGl0IGFsbCBib2lscyBkb3duIHRvIGNsYW1waW5nIG9yIGVuc3VyaW5nIHRoYXQgdmFsdWVzIGxpa2UgYHF1YW50dW1gIG9yIGBtdHVgIGFyZSB3aXRoaW4gc3BlY2lmaWVkIGxpbWl0cywgdHlwaWNhbGx5IGJldHdlZW4gMjU2IGFuZCAxICZsdDsmbHQ7IDIwLCBvciBhIHNpbWlsYXIgcmFuZ2UuCgpNeSBpbW1lZGlhdGUgY29uY2VybiBpcyBhcm91bmQgdW5pbml0aWFsaXplZCBtZW1vcnkuIExldCYjMzk7cyBtYWtlIHN1cmUgbm90aGluZyYjMzk7cyBiZWluZyByZWFkIGZyb20gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG5vIHVuaW5pdGlhbGl6ZWQgc3RydWN0IGNvcGllcyBhcmUgZ29pbmcgdG8gdXNlcnNwYWNlLCBhbmQgdGhhdCB3ZSBkb24mIzM5O3QgaGF2ZSBhbnkgdW5pbml0aWFsaXplZCBidWZmZXIgdXNhZ2VzLgoKRnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoZSBtb2RpZmljYXRpb25zIGRlYWwgZXhjbHVzaXZlbHkgd2l0aCBudW1lcmljIGNvbmZpZ3VyYXRpb25zLiBUaGVyZSBkb24mIzM5O3Qgc2VlbSB0byBiZSBhbnkgbmV3IHN0cnVjdHMgaW50cm9kdWNlZCwgbm8gbmV3IGJ1ZmZlcnMgYWxsb2NhdGVkIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24sIGFuZCBub3RoaW5nJiMzOTtzIGJlaW5nIGNvcGllZCB0byB1c2Vyc3BhY2Ugd2l0aG91dCBwcm9wZXIgaW5pdGlhbGl6YXRpb24uIFRoZSBjYWxjdWxhdGlvbnMgYXJlIGJhc2ljIGFyaXRobWV0aWMgb3IgY2xhbXBpbmcgb3BlcmF0aW9ucyBvbiBzY2FsYXIgdmFsdWVzLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayBlYWNoIGZpbGUgYW5kIGVhY2ggZnVuY3Rpb24gdG8gZW5zdXJlIG15IG1lbnRhbCBtb2RlbCBpcyBhY2N1cmF0ZToKCiogICBgc2NoX2Ryci5jYDogVGhlIGBxdWFudHVtYCBpcyBqdXN0IGEgYHUzMmAgcGFzc2VkIHRvIGEgZGVzdGluYXRpb24gYGNsLSZndDtxdWFudHVtYC4KKiAgIGBzY2hfZHVhbHBpMi5jYDogVGhlIGBtdHVgIHZhbHVlIGlzIGluaXRpYWxpemVkIHdpdGggYGNsYW1wX3RgLgoqICAgYHNjaF9ldHMuY2A6IFdlJiMzOTtyZSBjbGFtcGluZyBhbmQgaW5pdGlhbGl6aW5nIGAqcXVhbnR1bWAuCiogICBgc2NoX2ZxLmNgLCBgc2NoX2ZxX3BpZS5jYDogYHF1YW50dW1gIGlzIGEgbG9jYWwgYHUzMmAgYW5kIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgY2xhbXBlZCB2YWx1ZS4KKiAgIGBzY2hfaGhmLmNgOiBXZSBpbml0aWFsaXplIGEgYG5ld19xdWFudHVtYCwgd2hpY2ggaXMgdGhlbiBjbGFtcGVkLgoqICAgYHNjaF9waWUuY2A6IFRoZSBgbXR1YCBpcyBiZWluZyBpbml0aWFsaXplZCB3aXRoIGBjbGFtcF90YC4KKiAgIGBzY2hfc2ZxLmNgOiBUaGUgYHF1YW50dW1gIGlzIGJlaW5nIGluaXRpYWxpemVkIHdpdGggYG1heGAuCgpTbywgZnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCB0aGVyZSYjMzk7cyBubyBldmlkZW5jZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgbm8gaGVhcCBhbGxvY2F0aW9ucyB3aXRob3V0IHplcm9pbmcsIGFuZCBubyBkYXRhIGlzIGdldHRpbmcgY29waWVkIHRvIHVzZXJzcGFjZSB3aXRob3V0IHByb3BlciBpbml0aWFsaXphdGlvbi4gQW55IHBvdGVudGlhbCBpc3N1ZXMgd291bGQgbGlrZWx5IGJlIHJlbGF0ZWQgdG8gY2xhbXBpbmcgbG9naWMgb3IgYXJpdGhtZXRpYyBidWdzLCB3aGljaCBzaG91bGQgYmUgY2F1Z2h0IGJ5IHRoZSBzdGFuZGFyZCBzYW5pdGl6ZXJzIG9yIEtBU0FOL1VCU0FOLiBLTVNBTiBkb2VzbiYjMzk7dCBoYXZlIGEgc3BlY2lhbCByb2xlIGhlcmUuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ28gd2l0aCB0aGF0LiBObyBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyByZXF1aXJlZC4gQ2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXN0cmljdHMgYW5kIGNsYW1wcyBxdWFudHVtIGFuZCBNVFUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGluIHNldmVyYWwgbmV0L3NjaGVkIHFkaXNjIGltcGxlbWVudGF0aW9ucyAoc2NoX2Ryciwgc2NoX2R1YWxwaTIsIHNjaF9ldHMsIHNjaF9mcSwgc2NoX2ZxX3BpZSwgc2NoX2hoZiwgc2NoX3BpZSwgc2NoX3NmcSkgdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93cyBvciBkaXZpc2lvbi1ieS16ZXJvL2RlZ2VuZXJhdGUgc2NoZWR1bGluZyBzdGF0ZXMuIEFsbCB0b3VjaGVkIHZhcmlhYmxlcyBhcmUgcGxhaW4gc2NhbGFyIGludGVnZXJzICh1MzIvczMyKSB0aGF0IGFyZSBmdWxseSBpbml0aWFsaXplZCBhdCB0aGUgcG9pbnQgb2YgZGVmaW5pdGlvbi9hc3NpZ25tZW50LiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmUgcGFkZGluZywgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIHZhcmlhYmxlcywgb3Iga2VybmVsLXRvLXVzZXIgY29weSBvcGVyYXRpb25zLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gZnV6emluZy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlc3RyaWN0cyBhbmQgY2xhbXBzIHF1YW50dW0gYW5kIE1UVSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgaW4gc2V2ZXJhbCBuZXQvc2NoZWQgcWRpc2MgaW1wbGVtZW50YXRpb25zIChzY2hfZHJyLCBzY2hfZHVhbHBpMiwgc2NoX2V0cywgc2NoX2ZxLCBzY2hfZnFfcGllLCBzY2hfaGhmLCBzY2hfcGllLCBzY2hfc2ZxKSB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzIG9yIGRpdmlzaW9uLWJ5LXplcm8vZGVnZW5lcmF0ZSBzY2hlZHVsaW5nIHN0YXRlcy4gQWxsIHRvdWNoZWQgdmFyaWFibGVzIGFyZSBwbGFpbiBzY2FsYXIgaW50ZWdlcnMgKHUzMi9zMzIpIHRoYXQgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGF0IHRoZSBwb2ludCBvZiBkZWZpbml0aW9uL2Fzc2lnbm1lbnQuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZSBwYWRkaW5nLCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzLCBvciBrZXJuZWwtdG8tdXNlciBjb3B5IG9wZXJhdGlvbnMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwODozNTo0Ny4xNDU5ODU0NDZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDU4OTM5MTcwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfRFJSXCIsXG4gICAgXCJORVRfU0NIX0RVQUxQSTJcIixcbiAgICBcIk5FVF9TQ0hfRVRTXCIsXG4gICAgXCJORVRfU0NIX0ZRXCIsXG4gICAgXCJORVRfU0NIX0ZRX1BJRVwiLFxuICAgIFwiTkVUX1NDSF9ISEZcIixcbiAgICBcIk5FVF9TQ0hfUElFXCIsXG4gICAgXCJORVRfU0NIX1NGUVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRycl9jaGFuZ2VfY2xhc3NcIixcbiAgICBcImV0c19xZGlzY19jaGFuZ2VcIixcbiAgICBcImZxX2NoYW5nZVwiLFxuICAgIFwiZnFfaW5pdFwiLFxuICAgIFwiZnFfcGllX2NoYW5nZVwiLFxuICAgIFwiaGhmX2NoYW5nZVwiLFxuICAgIFwiaGhmX2luaXRcIixcbiAgICBcInNmcV9jaGFuZ2VcIixcbiAgICBcInBpZV9kcm9wX2Vhcmx5XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXN0cmljdHMgYW5kIGNsYW1wcyBxdWFudHVtIGFuZCBNVFUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGluIHNldmVyYWwgbmV0L3NjaGVkIHFkaXNjIGltcGxlbWVudGF0aW9ucyAoc2NoX2Ryciwgc2NoX2R1YWxwaTIsIHNjaF9ldHMsIHNjaF9mcSwgc2NoX2ZxX3BpZSwgc2NoX2hoZiwgc2NoX3BpZSwgc2NoX3NmcSkgdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93cyBvciBkaXZpc2lvbi1ieS16ZXJvL2RlZ2VuZXJhdGUgc2NoZWR1bGluZyBzdGF0ZXMuIEFsbCB0b3VjaGVkIHZhcmlhYmxlcyBhcmUgcGxhaW4gc2NhbGFyIGludGVnZXJzICh1MzIvczMyKSB0aGF0IGFyZSBmdWxseSBpbml0aWFsaXplZCBhdCB0aGUgcG9pbnQgb2YgZGVmaW5pdGlvbi9hc3NpZ25tZW50LiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmUgcGFkZGluZywgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIHZhcmlhYmxlcywgb3Iga2VybmVsLXRvLXVzZXIgY29weSBvcGVyYXRpb25zLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gZnV6emluZy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBhbmQgY2xhbXBpbmcgZm9yIE1UVSBhbmQgcXVhbnR1bSBib3VuZHMgYWNyb3NzIG11bHRpcGxlIHRyYWZmaWMgY29udHJvbCBzY2hlZHVsZXJzIChEUlIsIERVQUxQSTIsIEVUUywgRlEsIEZRLVBJRSwgSEhGLCBQSUUsIGFuZCBTRlEpLiBUaGVzZSBwYWNrZXQgc2NoZWR1bGVycyBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgY29uZmlndXJhYmxlIHZpYSBydG5ldGxpbmsuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA4OjM1OjQ3LjE0NTk5MDkzNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0OTU0ODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYmJlYWY1OTNmNWRjNGU1YTkwZDhkYzg5OGNlNTgwYmQ1ZTEwMjI1MFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAyOSAwODozNTo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2Ryci5jIGIvbmV0L3NjaGVkL3NjaF9kcnIuY1xcbmluZGV4IDkxYjFlZjgyNGFmYWYuLjg2MjFkMDU3ZWRkOWYgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9kcnIuY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfZHJyLmNcXG5AQCAtODIsOCArODIsOSBAQCBzdGF0aWMgaW50IGRycl9jaGFuZ2VfY2xhc3Moc3RydWN0IFFkaXNjICpzY2gsIHUzMiBjbGFzc2lkLCB1MzIgcGFyZW50aWQsXFxuIFxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcIlNwZWNpZmllZCBEUlIgcXVhbnR1bSBjYW5ub3QgYmUgemVyb1xcXCIpO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0fVxcbitcXHRcXHRxdWFudHVtID0gY2xhbXBfdCh1MzIsIHF1YW50dW0sIDI1NiwgMSBcXHUwMDNjXFx1MDAzYyAyMCk7XFxuIFxcdH0gZWxzZVxcbi1cXHRcXHRxdWFudHVtID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7XFxuK1xcdFxcdHF1YW50dW0gPSBjbGFtcF90KHUzMiwgKHUzMilwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMjU2LCAxIFxcdTAwM2NcXHUwMDNjIDIwKTtcXG4gXFxuIFxcdGlmIChjbCAhPSBOVUxMKSB7XFxuIFxcdFxcdGlmICh0Y2FbVENBX1JBVEVdKSB7XFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jIGIvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcXG5pbmRleCA0ZjY3OGQ0ZmYxMGVjLi40OTQ3ZGVmN2M0OWVmIDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcXG5AQCAtMjA4LDkgKzIwOCwxMSBAQCBzdGF0aWMgdm9pZCBkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxKVxcbiBzdGF0aWMgdm9pZCBkdWFscGkyX2NhbGN1bGF0ZV9jX3Byb3RlY3Rpb24oc3RydWN0IFFkaXNjICpzY2gsXFxuIFxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsIHUzMiB3YylcXG4ge1xcbitcXHR1MzIgbXR1ID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAxLCAxIFxcdTAwM2NcXHUwMDNjIDIwKTtcXG4rXFxuIFxcdHEtXFx1MDAzZWNfcHJvdGVjdGlvbl93YyA9IHdjO1xcbiBcXHRxLVxcdTAwM2VjX3Byb3RlY3Rpb25fd2wgPSBNQVhfV0MgLSB3YztcXG4tXFx0cS1cXHUwMDNlY19wcm90ZWN0aW9uX2luaXQgPSAoczMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpICpcXG4rXFx0cS1cXHUwMDNlY19wcm90ZWN0aW9uX2luaXQgPSAoczMyKW10dSAqXFxuIFxcdFxcdCgoaW50KXEtXFx1MDAzZWNfcHJvdGVjdGlvbl93YyAtIChpbnQpcS1cXHUwMDNlY19wcm90ZWN0aW9uX3dsKTtcXG4gXFx0ZHVhbHBpMl9yZXNldF9jX3Byb3RlY3Rpb24ocSk7XFxuIH1cXG5AQCAtMjg1LDggKzI4Nyw5IEBAIHN0YXRpYyBib29sIG11c3RfZHJvcChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSxcXG4gXFx0dTY0IGxvY2FsX2xfcHJvYjtcXG4gXFx0Ym9vbCBvdmVybG9hZDtcXG4gXFx0dTMyIHByb2I7XFxuK1xcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXFx1MDAzY1xcdTAwM2MgMjApO1xcbiBcXG4tXFx0aWYgKHNjaC1cXHUwMDNlcXN0YXRzLmJhY2tsb2cgXFx1MDAzYyAyICogcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkpXFxuK1xcdGlmIChzY2gtXFx1MDAzZXFzdGF0cy5iYWNrbG9nIFxcdTAwM2MgMiAqIG10dSlcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXG4gXFx0cHJvYiA9IFJFQURfT05DRShxLVxcdTAwM2VwaTJfcHJvYik7XFxuQEAgLTcxMiw3ICs3MTUsOCBAQCBzdGF0aWMgdTMyIGdldF9tZW1vcnlfbGltaXQoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBsaW1pdClcXG4gXFx0LyogQXBwbHkgcnVsZSBvZiB0aHVtYiwgaS5lLiwgZG91YmxpbmcgdGhlIHBhY2tldCBsZW5ndGgsXFxuIFxcdCAqIHRvIGZ1cnRoZXIgaW5jbHVkZSBwZXIgcGFja2V0IG92ZXJoZWFkIGluIG1lbW9yeV9saW1pdC5cXG4gXFx0ICovXFxuLVxcdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpKTtcXG4rXFx0dTY0IG1lbWxpbSA9IG11bF91MzJfdTMyKGxpbWl0LCAyICogY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIDEsIDEgXFx1MDAzY1xcdTAwM2MgMjApKTtcXG4gXFxuIFxcdGlmICh1cHBlcl8zMl9iaXRzKG1lbWxpbSkpXFxuIFxcdFxcdHJldHVybiBVMzJfTUFYO1xcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2V0cy5jIGIvbmV0L3NjaGVkL3NjaF9ldHMuY1xcbmluZGV4IDI1ZmNmNDA3OWZlY2UuLjZjYzkwMmEwMzgzODcgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9ldHMuY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfZXRzLmNcXG5AQCAtODMsMTEgKzgzLDcgQEAgc3RhdGljIGludCBldHNfcXVhbnR1bV9wYXJzZShzdHJ1Y3QgUWRpc2MgKnNjaCwgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcXG4gXFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgKnF1YW50dW0sXFxuIFxcdFxcdFxcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbiB7XFxuLVxcdCpxdWFudHVtID0gbmxhX2dldF91MzIoYXR0cik7XFxuLVxcdGlmICghKnF1YW50dW0pIHtcXG4tXFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwiRVRTIHF1YW50dW0gY2Fubm90IGJlIHplcm9cXFwiKTtcXG4tXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLVxcdH1cXG4rXFx0KnF1YW50dW0gPSBjbGFtcF90KHUzMiwgbmxhX2dldF91MzIoYXR0ciksIDI1NiwgMSBcXHUwMDNjXFx1MDAzYyAyMCk7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbkBAIC02MzIsMTEgKzYyOCwxMyBAQCBzdGF0aWMgaW50IGV0c19xZGlzY19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4gXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gXFx0fVxcbiBcXHQvKiBJZiB0aGVyZSBhcmUgbW9yZSBiYW5kcyB0aGFuIHN0cmljdCArIHF1YW50YSBwcm92aWRlZCwgdGhlIHJlbWFpbmluZ1xcbi1cXHQgKiBvbmVzIGFyZSBFVFMgd2l0aCBxdWFudHVtIG9mIE1UVS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZyB2YWx1ZXMgaGVyZS5cXG4rXFx0ICogb25lcyBhcmUgRVRTIHdpdGggcXVhbnR1bSBvZiBtYXgoTVRVLCAyNTYpLiBJbml0aWFsaXplIHRoZSBtaXNzaW5nXFxuK1xcdCAqIHZhbHVlcyBoZXJlLlxcbiBcXHQgKi9cXG4gXFx0Zm9yIChpID0gbnN0cmljdDsgaSBcXHUwMDNjIG5iYW5kczsgaSsrKSB7XFxuIFxcdFxcdGlmICghcXVhbnRhW2ldKVxcbi1cXHRcXHRcXHRxdWFudGFbaV0gPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTtcXG4rXFx0XFx0XFx0cXVhbnRhW2ldID0gY2xhbXBfdCh1MzIsICh1MzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAyNTYsIDEgXFx1MDAzY1xcdTAwM2MgMjApO1xcbiBcXHR9XFxuIFxcbiBcXHQvKiBCZWZvcmUgY29tbWl0LCBtYWtlIHN1cmUgd2UgY2FuIGFsbG9jYXRlIGFsbCBuZXcgcWRpc2NzICovXFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnEuYyBiL25ldC9zY2hlZC9zY2hfZnEuY1xcbmluZGV4IDYxNDRiNTY4NmYxM2YuLjM1Zjk0MGIyMjA1ZGYgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcS5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF9mcS5jXFxuQEAgLTk4MCw3ICs5ODAsNyBAQCBzdGF0aWMgaW50IGZxX3Jlc2l6ZShzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxvZylcXG4gfVxcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRsaW5rX3JhbmdlX3ZhbGlkYXRpb24gaXFfcmFuZ2UgPSB7XFxuLVxcdC5tYXggPSBJTlRfTUFYLFxcbitcXHQubWF4ID0gMSBcXHUwMDNjXFx1MDAzYyAyMCxcXG4gfTtcXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBmcV9wb2xpY3lbVENBX0ZRX01BWCArIDFdID0ge1xcbkBAIC0xMTA2LDE0ICsxMTA2LDEwIEBAIHN0YXRpYyBpbnQgZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuIFxcdFxcdFxcdCAgIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9GTE9XX1BMSU1JVF0pKTtcXG4gXFxuIFxcdGlmICh0YltUQ0FfRlFfUVVBTlRVTV0pIHtcXG4tXFx0XFx0dTMyIHF1YW50dW0gPSBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUVVBTlRVTV0pO1xcbitcXHRcXHR1MzIgcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUVVBTlRVTV0pLFxcbitcXHRcXHRcXHRcXHQgICAgIDI1NiwgMSBcXHUwMDNjXFx1MDAzYyAyMCk7XFxuIFxcbi1cXHRcXHRpZiAocXVhbnR1bSBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgcXVhbnR1bSBcXHUwMDNjPSAoMSBcXHUwMDNjXFx1MDAzYyAyMCkpIHtcXG4tXFx0XFx0XFx0V1JJVEVfT05DRShxLVxcdTAwM2VxdWFudHVtLCBxdWFudHVtKTtcXG4tXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcImludmFsaWQgcXVhbnR1bVxcXCIpO1xcbi1cXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbi1cXHRcXHR9XFxuK1xcdFxcdFdSSVRFX09OQ0UocS1cXHUwMDNlcXVhbnR1bSwgcXVhbnR1bSk7XFxuIFxcdH1cXG4gXFxuIFxcdGlmICh0YltUQ0FfRlFfSU5JVElBTF9RVUFOVFVNXSlcXG5AQCAtMTIzMiw3ICsxMjI4LDcgQEAgc3RhdGljIGludCBmcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuIFxcdHNjaC1cXHUwMDNlbGltaXRcXHRcXHQ9IDEwMDAwO1xcbiBcXHRxLVxcdTAwM2VmbG93X3BsaW1pdFxcdFxcdD0gMTAwO1xcbiBcXHRtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXFx1MDAzY1xcdTAwM2MgMjApO1xcbi1cXHRxLVxcdTAwM2VxdWFudHVtXFx0XFx0PSBtaW5fdCh1MzIsIDIgKiBtdHUsIDEgXFx1MDAzY1xcdTAwM2MgMjApO1xcbitcXHRxLVxcdTAwM2VxdWFudHVtXFx0XFx0PSBjbGFtcF90KHUzMiwgMiAqIG10dSwgMjU2LCAxIFxcdTAwM2NcXHUwMDNjIDIwKTtcXG4gXFx0cS1cXHUwMDNlaW5pdGlhbF9xdWFudHVtXFx0PSBtaW5fdCh1MzIsIDEwICogbXR1LCAxIFxcdTAwM2NcXHUwMDNjIDIwKTtcXG4gXFx0cS1cXHUwMDNlZmxvd19yZWZpbGxfZGVsYXlcXHQ9IG1zZWNzX3RvX2ppZmZpZXMoNDApO1xcbiBcXHRxLVxcdTAwM2VmbG93X21heF9yYXRlXFx0PSB+MFVMO1xcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xcbmluZGV4IGIyN2Q5NTQxODcwN2EuLjU5ODI4NDdkZjhmODUgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfZnFfcGllLmNcXG5AQCAtMzQxLDcgKzM0MSw4IEBAIHN0YXRpYyBpbnQgZnFfcGllX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbiBcXHRcXHRcXHQgICBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX0JFVEFdKSk7XFxuIFxcbiBcXHRpZiAodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSlcXG4tXFx0XFx0V1JJVEVfT05DRShxLVxcdTAwM2VxdWFudHVtLCBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX1FVQU5UVU1dKSk7XFxuK1xcdFxcdFdSSVRFX09OQ0UocS1cXHUwMDNlcXVhbnR1bSxcXG4rXFx0XFx0XFx0ICAgbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKSk7XFxuIFxcbiBcXHRpZiAodGJbVENBX0ZRX1BJRV9NRU1PUllfTElNSVRdKVxcbiBcXHRcXHRXUklURV9PTkNFKHEtXFx1MDAzZW1lbW9yeV9saW1pdCxcXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9oaGYuYyBiL25ldC9zY2hlZC9zY2hfaGhmLmNcXG5pbmRleCA5NmFjYWI2YThkYTAzLi5mYzcyZjgyNWZiZDkyIDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9zY2hfaGhmLmNcXG4rKysgYi9uZXQvc2NoZWQvc2NoX2hoZi5jXFxuQEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgaW50IGhoZl9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuIFxcdGlmICh0YltUQ0FfSEhGX1FVQU5UVU1dKVxcbi1cXHRcXHRuZXdfcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfUVVBTlRVTV0pO1xcbitcXHRcXHRuZXdfcXVhbnR1bSA9IG1heCgyNTZVLCBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX1FVQU5UVU1dKSk7XFxuIFxcbiBcXHRpZiAodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSlcXG4gXFx0XFx0bmV3X2hoZl9ub25faGhfd2VpZ2h0ID0gbmxhX2dldF91MzIodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSk7XFxuQEAgLTYxMyw3ICs2MTMsNyBAQCBzdGF0aWMgaW50IGhoZl9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuIFxcdGludCBpO1xcbiBcXG4gXFx0c2NoLVxcdTAwM2VsaW1pdCA9IDEwMDA7XFxuLVxcdHEtXFx1MDAzZXF1YW50dW0gPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTtcXG4rXFx0cS1cXHUwMDNlcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMjU2LCAxIFxcdTAwM2NcXHUwMDNjIDIwKTtcXG4gXFx0Z2V0X3JhbmRvbV9ieXRlcyhcXHUwMDI2cS1cXHUwMDNlcGVydHVyYmF0aW9uLCBzaXplb2YocS1cXHUwMDNlcGVydHVyYmF0aW9uKSk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZxLVxcdTAwM2VuZXdfYnVja2V0cyk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZxLVxcdTAwM2VvbGRfYnVja2V0cyk7XFxuQEAgLTYyNCwxMCArNjI0LDYgQEAgc3RhdGljIGludCBoaGZfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbiBcXHRxLVxcdTAwM2VoaGZfZXZpY3RfdGltZW91dCA9IEhaOyAgICAgIC8qIDEgIHNlYyAqL1xcbiBcXHRxLVxcdTAwM2VoaGZfbm9uX2hoX3dlaWdodCA9IDI7XFxuIFxcbi1cXHRpZiAoKGludClxLVxcdTAwM2VxdWFudHVtIFxcdTAwM2M9IDAgfHxcXG4tXFx0ICAgICh1NjQpcS1cXHUwMDNlcXVhbnR1bSAqIHEtXFx1MDAzZWhoZl9ub25faGhfd2VpZ2h0IFxcdTAwM2UgSU5UX01BWClcXG4tXFx0XFx0cS1cXHUwMDNlcXVhbnR1bSA9IDI1NjtcXG4tXFxuIFxcdGlmIChvcHQpIHtcXG4gXFx0XFx0aW50IGVyciA9IGhoZl9jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9waWUuY1xcbmluZGV4IGI0MWYyZGVmMmUyY2MuLjNiNzg2M2ZmZDI4NGMgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9waWUuY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfcGllLmNcXG5AQCAtMzUsNyArMzUsNyBAQCBib29sIHBpZV9kcm9wX2Vhcmx5KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgcGllX3BhcmFtcyAqcGFyYW1zLFxcbiB7XFxuIFxcdHU2NCBybmQ7XFxuIFxcdHU2NCBsb2NhbF9wcm9iID0gdmFycy1cXHUwMDNlcHJvYjtcXG4tXFx0dTMyIG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xcbitcXHR1MzIgbXR1ID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAxLCAxIFxcdTAwM2NcXHUwMDNjIDIwKTtcXG4gXFxuIFxcdC8qIElmIHRoZXJlIGlzIHN0aWxsIGJ1cnN0IGFsbG93YW5jZSBsZWZ0IHNraXAgcmFuZG9tIGVhcmx5IGRyb3AgKi9cXG4gXFx0aWYgKHZhcnMtXFx1MDAzZWJ1cnN0X3RpbWUgXFx1MDAzZSAwKVxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3NmcS5jIGIvbmV0L3NjaGVkL3NjaF9zZnEuY1xcbmluZGV4IDE4N2QzZWQ1NzhmMjYuLjhiYmNmYzllODVkOTQgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9zZnEuY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfc2ZxLmNcXG5AQCAtNjYwLDYgKzY2MCwxMSBAQCBzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG4gXFxuK1xcdGlmIChjdGwtXFx1MDAzZXF1YW50dW0gXFx1MDAzZSAxIFxcdTAwM2NcXHUwMDNjIDIwKSB7XFxuK1xcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJxdWFudHVtIHRvbyBsYXJnZVxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4gXFx0aWYgKGN0bC1cXHUwMDNlcGVydHVyYl9wZXJpb2QgXFx1MDAzYyAwIHx8XFxuIFxcdCAgICBjdGwtXFx1MDAzZXBlcnR1cmJfcGVyaW9kIFxcdTAwM2UgSU5UX01BWCAvIEhaKSB7XFxuIFxcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJpbnZhbGlkIHBlcnR1cmIgcGVyaW9kXFxcIik7XFxuQEAgLTY4OCw3ICs2OTMsNyBAQCBzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4gXFxuIFxcdC8qIHVwZGF0ZSBhbmQgdmFsaWRhdGUgY29uZmlndXJhdGlvbiAqL1xcbiBcXHRpZiAoY3RsLVxcdTAwM2VxdWFudHVtKVxcbi1cXHRcXHRxdWFudHVtID0gY3RsLVxcdTAwM2VxdWFudHVtO1xcbitcXHRcXHRxdWFudHVtID0gbWF4KDI1NlUsIGN0bC1cXHUwMDNlcXVhbnR1bSk7XFxuIFxcdGlmIChjdGwtXFx1MDAzZWZsb3dzKVxcbiBcXHRcXHRtYXhmbG93cyA9IG1pbl90KHUzMiwgY3RsLVxcdTAwM2VmbG93cywgU0ZRX01BWF9GTE9XUyk7XFxuIFxcdGlmIChjdGwtXFx1MDAzZWRpdmlzb3IpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDg6MzU6NDcuNjk0MDQ0NjY1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1NzM1MzMyNTM3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfRFJSXCIsXG4gICAgXCJORVRfU0NIX0RVQUxQSTJcIixcbiAgICBcIk5FVF9TQ0hfRVRTXCIsXG4gICAgXCJORVRfU0NIX0ZRXCIsXG4gICAgXCJORVRfU0NIX0ZRX1BJRVwiLFxuICAgIFwiTkVUX1NDSF9ISEZcIixcbiAgICBcIk5FVF9TQ0hfUElFXCIsXG4gICAgXCJORVRfU0NIX1NGUVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRycl9jaGFuZ2VfY2xhc3NcIixcbiAgICBcImV0c19xZGlzY19jaGFuZ2VcIixcbiAgICBcImZxX2NoYW5nZVwiLFxuICAgIFwiZnFfaW5pdFwiLFxuICAgIFwiZnFfcGllX2NoYW5nZVwiLFxuICAgIFwiaGhmX2NoYW5nZVwiLFxuICAgIFwiaGhmX2luaXRcIixcbiAgICBcInNmcV9jaGFuZ2VcIixcbiAgICBcInBpZV9kcm9wX2Vhcmx5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFyYW1ldGVyIHZhbGlkYXRpb24gYW5kIGNsYW1waW5nIGZvciBNVFUgYW5kIHF1YW50dW0gYm91bmRzIGFjcm9zcyBtdWx0aXBsZSB0cmFmZmljIGNvbnRyb2wgc2NoZWR1bGVycyAoRFJSLCBEVUFMUEkyLCBFVFMsIEZRLCBGUS1QSUUsIEhIRiwgUElFLCBhbmQgU0ZRKS4gVGhlc2UgcGFja2V0IHNjaGVkdWxlcnMgYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIGNvbmZpZ3VyYWJsZSB2aWEgcnRuZXRsaW5rLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiYmVhZjU5M2Y1ZGM0ZTVhOTBkOGRjODk4Y2U1ODBiZDVlMTAyMjUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMjkgMDg6MzU6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2Ryci5jIGIvbmV0L3NjaGVkL3NjaF9kcnIuY1xuaW5kZXggOTFiMWVmODI0YWZhZi4uODYyMWQwNTdlZGQ5ZiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZHJyLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZHJyLmNcbkBAIC04Miw4ICs4Miw5IEBAIHN0YXRpYyBpbnQgZHJyX2NoYW5nZV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQsIHUzMiBwYXJlbnRpZCxcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiU3BlY2lmaWVkIERSUiBxdWFudHVtIGNhbm5vdCBiZSB6ZXJvXCIpO1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHR9XG4rXHRcdHF1YW50dW0gPSBjbGFtcF90KHUzMiwgcXVhbnR1bSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHR9IGVsc2Vcbi1cdFx0cXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0XHRxdWFudHVtID0gY2xhbXBfdCh1MzIsICh1MzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuIFx0aWYgKGNsICE9IE5VTEwpIHtcbiBcdFx0aWYgKHRjYVtUQ0FfUkFURV0pIHtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5pbmRleCA0ZjY3OGQ0ZmYxMGVjLi40OTQ3ZGVmN2M0OWVmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5AQCAtMjA4LDkgKzIwOCwxMSBAQCBzdGF0aWMgdm9pZCBkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxKVxuIHN0YXRpYyB2b2lkIGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbihzdHJ1Y3QgUWRpc2MgKnNjaCxcbiBcdFx0XHRcdFx0ICAgc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgdTMyIHdjKVxuIHtcbitcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbitcbiBcdHEtXHUwMDNlY19wcm90ZWN0aW9uX3djID0gd2M7XG4gXHRxLVx1MDAzZWNfcHJvdGVjdGlvbl93bCA9IE1BWF9XQyAtIHdjO1xuLVx0cS1cdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkgKlxuK1x0cS1cdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpbXR1ICpcbiBcdFx0KChpbnQpcS1cdTAwM2VjX3Byb3RlY3Rpb25fd2MgLSAoaW50KXEtXHUwMDNlY19wcm90ZWN0aW9uX3dsKTtcbiBcdGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHEpO1xuIH1cbkBAIC0yODUsOCArMjg3LDkgQEAgc3RhdGljIGJvb2wgbXVzdF9kcm9wKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxuIFx0dTY0IGxvY2FsX2xfcHJvYjtcbiBcdGJvb2wgb3ZlcmxvYWQ7XG4gXHR1MzIgcHJvYjtcbitcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcbi1cdGlmIChzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgXHUwMDNjIDIgKiBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSlcbitcdGlmIChzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgXHUwMDNjIDIgKiBtdHUpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdHByb2IgPSBSRUFEX09OQ0UocS1cdTAwM2VwaTJfcHJvYik7XG5AQCAtNzEyLDcgKzcxNSw4IEBAIHN0YXRpYyB1MzIgZ2V0X21lbW9yeV9saW1pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxpbWl0KVxuIFx0LyogQXBwbHkgcnVsZSBvZiB0aHVtYiwgaS5lLiwgZG91YmxpbmcgdGhlIHBhY2tldCBsZW5ndGgsXG4gXHQgKiB0byBmdXJ0aGVyIGluY2x1ZGUgcGVyIHBhY2tldCBvdmVyaGVhZCBpbiBtZW1vcnlfbGltaXQuXG4gXHQgKi9cbi1cdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpKTtcbitcdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSxcbitcdFx0XHRcdFx0XHQgICAgIDEsIDEgXHUwMDNjXHUwMDNjIDIwKSk7XG4gXG4gXHRpZiAodXBwZXJfMzJfYml0cyhtZW1saW0pKVxuIFx0XHRyZXR1cm4gVTMyX01BWDtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2V0cy5jIGIvbmV0L3NjaGVkL3NjaF9ldHMuY1xuaW5kZXggMjVmY2Y0MDc5ZmVjZS4uNmNjOTAyYTAzODM4NyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZXRzLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZXRzLmNcbkBAIC04MywxMSArODMsNyBAQCBzdGF0aWMgaW50IGV0c19xdWFudHVtX3BhcnNlKHN0cnVjdCBRZGlzYyAqc2NoLCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxuIFx0XHRcdCAgICAgdW5zaWduZWQgaW50ICpxdWFudHVtLFxuIFx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbi1cdCpxdWFudHVtID0gbmxhX2dldF91MzIoYXR0cik7XG4tXHRpZiAoISpxdWFudHVtKSB7XG4tXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJFVFMgcXVhbnR1bSBjYW5ub3QgYmUgemVyb1wiKTtcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHR9XG4rXHQqcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMihhdHRyKSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNjMyLDExICs2MjgsMTMgQEAgc3RhdGljIGludCBldHNfcWRpc2NfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0cmV0dXJuIGVycjtcbiBcdH1cbiBcdC8qIElmIHRoZXJlIGFyZSBtb3JlIGJhbmRzIHRoYW4gc3RyaWN0ICsgcXVhbnRhIHByb3ZpZGVkLCB0aGUgcmVtYWluaW5nXG4tXHQgKiBvbmVzIGFyZSBFVFMgd2l0aCBxdWFudHVtIG9mIE1UVS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZyB2YWx1ZXMgaGVyZS5cbitcdCAqIG9uZXMgYXJlIEVUUyB3aXRoIHF1YW50dW0gb2YgbWF4KE1UVSwgMjU2KS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZ1xuK1x0ICogdmFsdWVzIGhlcmUuXG4gXHQgKi9cbiBcdGZvciAoaSA9IG5zdHJpY3Q7IGkgXHUwMDNjIG5iYW5kczsgaSsrKSB7XG4gXHRcdGlmICghcXVhbnRhW2ldKVxuLVx0XHRcdHF1YW50YVtpXSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0XHRcdHF1YW50YVtpXSA9IGNsYW1wX3QodTMyLCAodTMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLFxuK1x0XHRcdFx0XHQgICAgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHR9XG4gXG4gXHQvKiBCZWZvcmUgY29tbWl0LCBtYWtlIHN1cmUgd2UgY2FuIGFsbG9jYXRlIGFsbCBuZXcgcWRpc2NzICovXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9mcS5jIGIvbmV0L3NjaGVkL3NjaF9mcS5jXG5pbmRleCA2MTQ0YjU2ODZmMTNmLi4zNWY5NDBiMjIwNWRmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcS5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX2ZxLmNcbkBAIC05ODAsNyArOTgwLDcgQEAgc3RhdGljIGludCBmcV9yZXNpemUoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBsb2cpXG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0bGlua19yYW5nZV92YWxpZGF0aW9uIGlxX3JhbmdlID0ge1xuLVx0Lm1heCA9IElOVF9NQVgsXG4rXHQubWF4ID0gMSBcdTAwM2NcdTAwM2MgMjAsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZnFfcG9saWN5W1RDQV9GUV9NQVggKyAxXSA9IHtcbkBAIC0xMTA2LDE0ICsxMTA2LDEwIEBAIHN0YXRpYyBpbnQgZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0ICAgbmxhX2dldF91MzIodGJbVENBX0ZRX0ZMT1dfUExJTUlUXSkpO1xuIFxuIFx0aWYgKHRiW1RDQV9GUV9RVUFOVFVNXSkge1xuLVx0XHR1MzIgcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSk7XG4rXHRcdHUzMiBxdWFudHVtID0gY2xhbXBfdCh1MzIsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSksXG4rXHRcdFx0XHQgICAgIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuLVx0XHRpZiAocXVhbnR1bSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgcXVhbnR1bSBcdTAwM2M9ICgxIFx1MDAzY1x1MDAzYyAyMCkpIHtcbi1cdFx0XHRXUklURV9PTkNFKHEtXHUwMDNlcXVhbnR1bSwgcXVhbnR1bSk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJpbnZhbGlkIHF1YW50dW1cIik7XG4tXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0fVxuK1x0XHRXUklURV9PTkNFKHEtXHUwMDNlcXVhbnR1bSwgcXVhbnR1bSk7XG4gXHR9XG4gXG4gXHRpZiAodGJbVENBX0ZRX0lOSVRJQUxfUVVBTlRVTV0pXG5AQCAtMTIzMiw3ICsxMjI4LDcgQEAgc3RhdGljIGludCBmcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRzY2gtXHUwMDNlbGltaXRcdFx0PSAxMDAwMDtcbiBcdHEtXHUwMDNlZmxvd19wbGltaXRcdFx0PSAxMDA7XG4gXHRtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbi1cdHEtXHUwMDNlcXVhbnR1bVx0XHQ9IG1pbl90KHUzMiwgMiAqIG10dSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuK1x0cS1cdTAwM2VxdWFudHVtXHRcdD0gY2xhbXBfdCh1MzIsIDIgKiBtdHUsIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0cS1cdTAwM2Vpbml0aWFsX3F1YW50dW1cdD0gbWluX3QodTMyLCAxMCAqIG10dSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0cS1cdTAwM2VmbG93X3JlZmlsbF9kZWxheVx0PSBtc2Vjc190b19qaWZmaWVzKDQwKTtcbiBcdHEtXHUwMDNlZmxvd19tYXhfcmF0ZVx0PSB+MFVMO1xuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnFfcGllLmMgYi9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jXG5pbmRleCBiMjdkOTU0MTg3MDdhLi41OTgyODQ3ZGY4Zjg1IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuQEAgLTM0MSw3ICszNDEsOCBAQCBzdGF0aWMgaW50IGZxX3BpZV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0XHQgICBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX0JFVEFdKSk7XG4gXG4gXHRpZiAodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSlcbi1cdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKTtcbitcdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sXG4rXHRcdFx0ICAgbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKSk7XG4gXG4gXHRpZiAodGJbVENBX0ZRX1BJRV9NRU1PUllfTElNSVRdKVxuIFx0XHRXUklURV9PTkNFKHEtXHUwMDNlbWVtb3J5X2xpbWl0LFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfaGhmLmMgYi9uZXQvc2NoZWQvc2NoX2hoZi5jXG5pbmRleCA5NmFjYWI2YThkYTAzLi5mYzcyZjgyNWZiZDkyIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9oaGYuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9oaGYuY1xuQEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgaW50IGhoZl9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0cmV0dXJuIGVycjtcbiBcbiBcdGlmICh0YltUQ0FfSEhGX1FVQU5UVU1dKVxuLVx0XHRuZXdfcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfUVVBTlRVTV0pO1xuK1x0XHRuZXdfcXVhbnR1bSA9IG1heCgyNTZVLCBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX1FVQU5UVU1dKSk7XG4gXG4gXHRpZiAodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSlcbiBcdFx0bmV3X2hoZl9ub25faGhfd2VpZ2h0ID0gbmxhX2dldF91MzIodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSk7XG5AQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdGludCBpO1xuIFxuIFx0c2NoLVx1MDAzZWxpbWl0ID0gMTAwMDtcbi1cdHEtXHUwMDNlcXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0cS1cdTAwM2VxdWFudHVtID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAyNTYsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcdGdldF9yYW5kb21fYnl0ZXMoXHUwMDI2cS1cdTAwM2VwZXJ0dXJiYXRpb24sIHNpemVvZihxLVx1MDAzZXBlcnR1cmJhdGlvbikpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2cS1cdTAwM2VuZXdfYnVja2V0cyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZxLVx1MDAzZW9sZF9idWNrZXRzKTtcbkBAIC02MjQsMTAgKzYyNCw2IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdHEtXHUwMDNlaGhmX2V2aWN0X3RpbWVvdXQgPSBIWjsgICAgICAvKiAxICBzZWMgKi9cbiBcdHEtXHUwMDNlaGhmX25vbl9oaF93ZWlnaHQgPSAyO1xuIFxuLVx0aWYgKChpbnQpcS1cdTAwM2VxdWFudHVtIFx1MDAzYz0gMCB8fFxuLVx0ICAgICh1NjQpcS1cdTAwM2VxdWFudHVtICogcS1cdTAwM2VoaGZfbm9uX2hoX3dlaWdodCBcdTAwM2UgSU5UX01BWClcbi1cdFx0cS1cdTAwM2VxdWFudHVtID0gMjU2O1xuLVxuIFx0aWYgKG9wdCkge1xuIFx0XHRpbnQgZXJyID0gaGhmX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9waWUuY1xuaW5kZXggYjQxZjJkZWYyZTJjYy4uM2I3ODYzZmZkMjg0YyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfcGllLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfcGllLmNcbkBAIC0zNSw3ICszNSw3IEBAIGJvb2wgcGllX2Ryb3BfZWFybHkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBwaWVfcGFyYW1zICpwYXJhbXMsXG4ge1xuIFx0dTY0IHJuZDtcbiBcdHU2NCBsb2NhbF9wcm9iID0gdmFycy1cdTAwM2Vwcm9iO1xuLVx0dTMyIG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0dTMyIG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuIFx0LyogSWYgdGhlcmUgaXMgc3RpbGwgYnVyc3QgYWxsb3dhbmNlIGxlZnQgc2tpcCByYW5kb20gZWFybHkgZHJvcCAqL1xuIFx0aWYgKHZhcnMtXHUwMDNlYnVyc3RfdGltZSBcdTAwM2UgMClcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3NmcS5jIGIvbmV0L3NjaGVkL3NjaF9zZnEuY1xuaW5kZXggMTg3ZDNlZDU3OGYyNi4uOGJiY2ZjOWU4NWQ5NCAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfc2ZxLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfc2ZxLmNcbkBAIC02NjAsNiArNjYwLDExIEBAIHN0YXRpYyBpbnQgc2ZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbitcdGlmIChjdGwtXHUwMDNlcXVhbnR1bSBcdTAwM2UgMSBcdTAwM2NcdTAwM2MgMjApIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJxdWFudHVtIHRvbyBsYXJnZVwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4gXHRpZiAoY3RsLVx1MDAzZXBlcnR1cmJfcGVyaW9kIFx1MDAzYyAwIHx8XG4gXHQgICAgY3RsLVx1MDAzZXBlcnR1cmJfcGVyaW9kIFx1MDAzZSBJTlRfTUFYIC8gSFopIHtcbiBcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJpbnZhbGlkIHBlcnR1cmIgcGVyaW9kXCIpO1xuQEAgLTY4OCw3ICs2OTMsNyBAQCBzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcbiBcdC8qIHVwZGF0ZSBhbmQgdmFsaWRhdGUgY29uZmlndXJhdGlvbiAqL1xuIFx0aWYgKGN0bC1cdTAwM2VxdWFudHVtKVxuLVx0XHRxdWFudHVtID0gY3RsLVx1MDAzZXF1YW50dW07XG4rXHRcdHF1YW50dW0gPSBtYXgoMjU2VSwgY3RsLVx1MDAzZXF1YW50dW0pO1xuIFx0aWYgKGN0bC1cdTAwM2VmbG93cylcbiBcdFx0bWF4Zmxvd3MgPSBtaW5fdCh1MzIsIGN0bC1cdTAwM2VmbG93cywgU0ZRX01BWF9GTE9XUyk7XG4gXHRpZiAoY3RsLVx1MDAzZWRpdmlzb3IpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA4OjM1OjQ3LjY5NDA0NzA0NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE1MTQ0MjAyNjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2ggYW5kIGRlY2lkZSBpZiBpdCdzIGZ1enotd29ydGh5LiBUaGUgZmFjdCB0aGF0IGl0IHRvdWNoZXMgbXVsdGlwbGUgYG5ldC9zY2hlZGAgcWRpc2NzIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSXQgc2VlbXMgdG8gbW9kaWZ5IGEgc2xldyBvZiB0aGVtOiBgc2NoX2Ryci5jYCwgYHNjaF9kdWFscGkyLmNgLCBgc2NoX2V0cy5jYCwgYHNjaF9mcS5jYCwgYHNjaF9mcV9waWUuY2AsIGBzY2hfaGhmLmNgLCBgc2NoX3BpZS5jYCwgYW5kIGBzY2hfc2ZxLmNgLlxuXG5Ob3csIGRpZ2dpbmcgZGVlcGVyLCBpdCBsb29rcyBsaWtlIHRoZSBjb3JlIG9mIHRoZXNlIGNoYW5nZXMgcmV2b2x2ZXMgYXJvdW5kIGNsYW1waW5nIGFuZCBzYW5pdGl6aW5nIGBxdWFudHVtYCBhbmQgYG10dWAgdmFsdWVzIGFjcm9zcyB0aGVzZSB0cmFmZmljIGNvbnRyb2wgc2NoZWR1bGVycy4gV2UncmUgdGFsa2luZyBhYm91dCBlbmZvcmNpbmcgbWluaW11bXMgYW5kIG1heGltdW1zLCBlc3NlbnRpYWxseSBib3VuZGluZyB0aGVzZSB2YWx1ZXMgdG8gcHJldmVudCBvdmVyZmxvd3MsIHBvdGVudGlhbCBpbmZpbml0ZSBsb29wcywgZGl2aXNpb24gYnkgemVybyBlcnJvcnMsIG5lZ2F0aXZlIHZhbHVlcywgYW5kIGxhcmdlIGFsbG9jYXRpb24gaXNzdWVzLiBUaGF0J3MgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcsIGJ1dCBpcyBpdCBmdXp6YWJsZT9cblxuVGhlIGNydWNpYWwgcXVlc3Rpb24gaXMgcmVhY2hhYmlsaXR5LiBUaGFua2Z1bGx5LCB0aGVzZSBhcmUgYWxsIGNvcmUgTGludXggbmV0d29ya2luZyBxZGlzY3MsIGZ1bGx5IGNvbmZpZ3VyYWJsZSB2aWEgbmV0bGluayAodXNpbmcgYHJ0bmV0bGlua2AgYW5kIGB0Y2ApLiBUaGlzIGlzbid0IHNvbWUgbmljaGUgc3Vic3lzdGVtOyBpdCdzIHJpZ2h0IGluIHRoZSBjb3JlIG9mIHRyYWZmaWMgY29udHJvbC4gTWVhbmluZyB0aGVzZSBjb25maWd1cmF0aW9uIGNoYW5nZXMgYXJlIGhpZ2hseSBhY2Nlc3NpYmxlIGluIHN0YW5kYXJkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGlzIHBhdGNoIGZ1bmRhbWVudGFsbHkgYWx0ZXJzIGhvdyB0aGVzZSBzY2hlZHVsZXJzIGhhbmRsZSB0aGUgYHF1YW50dW1gL2BtdHVgIGNvbmZpZ3VyYXRpb24gbG9naWMuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZSBLY29uZmlnIG9wdGlvbnMsIGJ1dCBiYXNlZCBvbiBhbGwgb2YgdGhpcywgdGhpcyBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVGhlIGNoYW5nZXMgYXJlIGFjY2Vzc2libGUgYW5kIG1vZGlmeSBjcml0aWNhbCB2YWx1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MzgsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwODozNjowMi44MzgyNTMwODNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODk4MzY1MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9TQ0hfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTQ2PWNvbW1lbnQgXFxcIlF1ZXVlaW5nL1NjaGVkdWxpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWctNDctXFxubmV0L3NjaGVkL0tjb25maWc6NDg6Y29uZmlnIE5FVF9TQ0hfSFRCXFxubmV0L3NjaGVkL0tjb25maWctNDktXFx0dHJpc3RhdGUgXFxcIkhpZXJhcmNoaWNhbCBUb2tlbiBCdWNrZXQgKEhUQilcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy02MS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo2Mjpjb25maWcgTkVUX1NDSF9IRlNDXFxubmV0L3NjaGVkL0tjb25maWctNjMtXFx0dHJpc3RhdGUgXFxcIkhpZXJhcmNoaWNhbCBGYWlyIFNlcnZpY2UgQ3VydmUgKEhGU0MpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNzAtXFxubmV0L3NjaGVkL0tjb25maWc6NzE6Y29uZmlnIE5FVF9TQ0hfUFJJT1xcbm5ldC9zY2hlZC9LY29uZmlnLTcyLVxcdHRyaXN0YXRlIFxcXCJNdWx0aSBCYW5kIFByaW9yaXR5IFF1ZXVlaW5nIChQUklPKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTc5LVxcbm5ldC9zY2hlZC9LY29uZmlnOjgwOmNvbmZpZyBORVRfU0NIX01VTFRJUVxcbm5ldC9zY2hlZC9LY29uZmlnLTgxLVxcdHRyaXN0YXRlIFxcXCJIYXJkd2FyZSBNdWx0aXF1ZXVlLWF3YXJlIE11bHRpIEJhbmQgUXVldWluZyAoTVVMVElRKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTg4LVxcbm5ldC9zY2hlZC9LY29uZmlnOjg5OmNvbmZpZyBORVRfU0NIX1JFRFxcbm5ldC9zY2hlZC9LY29uZmlnLTkwLVxcdHRyaXN0YXRlIFxcXCJSYW5kb20gRWFybHkgRGV0ZWN0aW9uIChSRUQpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctOTktXFxubmV0L3NjaGVkL0tjb25maWc6MTAwOmNvbmZpZyBORVRfU0NIX1NGQlxcbm5ldC9zY2hlZC9LY29uZmlnLTEwMS1cXHR0cmlzdGF0ZSBcXFwiU3RvY2hhc3RpYyBGYWlyIEJsdWUgKFNGQilcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xMTAtXFxubmV0L3NjaGVkL0tjb25maWc6MTExOmNvbmZpZyBORVRfU0NIX1NGUVxcbm5ldC9zY2hlZC9LY29uZmlnLTExMi1cXHR0cmlzdGF0ZSBcXFwiU3RvY2hhc3RpYyBGYWlybmVzcyBRdWV1ZWluZyAoU0ZRKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTEyMS1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxMjI6Y29uZmlnIE5FVF9TQ0hfVEVRTFxcbm5ldC9zY2hlZC9LY29uZmlnLTEyMy1cXHR0cmlzdGF0ZSBcXFwiVHJ1ZSBMaW5rIEVxdWFsaXplciAoVEVRTClcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xMzMtXFxubmV0L3NjaGVkL0tjb25maWc6MTM0OmNvbmZpZyBORVRfU0NIX1RCRlxcbm5ldC9zY2hlZC9LY29uZmlnLTEzNS1cXHR0cmlzdGF0ZSBcXFwiVG9rZW4gQnVja2V0IEZpbHRlciAoVEJGKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTE0NC1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxNDU6Y29uZmlnIE5FVF9TQ0hfQ0JTXFxubmV0L3NjaGVkL0tjb25maWctMTQ2LVxcdHRyaXN0YXRlIFxcXCJDcmVkaXQgQmFzZWQgU2hhcGVyIChDQlMpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTU1LVxcbm5ldC9zY2hlZC9LY29uZmlnOjE1Njpjb25maWcgTkVUX1NDSF9FVEZcXG5uZXQvc2NoZWQvS2NvbmZpZy0xNTctXFx0dHJpc3RhdGUgXFxcIkVhcmxpZXN0IFR4VGltZSBGaXJzdCAoRVRGKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTE2Ni1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxNjc6Y29uZmlnIE5FVF9TQ0hfTVFQUklPX0xJQlxcbm5ldC9zY2hlZC9LY29uZmlnLTE2OC1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTcxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjE3Mjpjb25maWcgTkVUX1NDSF9UQVBSSU9cXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIlRpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgU2NoZWR1bGVyXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTgzLVxcbm5ldC9zY2hlZC9LY29uZmlnOjE4NDpjb25maWcgTkVUX1NDSF9HUkVEXFxubmV0L3NjaGVkL0tjb25maWctMTg1LVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIFJhbmRvbSBFYXJseSBEZXRlY3Rpb24gKEdSRUQpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTk0LVxcbm5ldC9zY2hlZC9LY29uZmlnOjE5NTpjb25maWcgTkVUX1NDSF9ORVRFTVxcbm5ldC9zY2hlZC9LY29uZmlnLTE5Ni1cXHR0cmlzdGF0ZSBcXFwiTmV0d29yayBlbXVsYXRvciAoTkVURU0pXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMjA2LVxcbm5ldC9zY2hlZC9LY29uZmlnOjIwNzpjb25maWcgTkVUX1NDSF9EUlJcXG5uZXQvc2NoZWQvS2NvbmZpZy0yMDgtXFx0dHJpc3RhdGUgXFxcIkRlZmljaXQgUm91bmQgUm9iaW4gc2NoZWR1bGVyIChEUlIpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMjE3LVxcbm5ldC9zY2hlZC9LY29uZmlnOjIxODpjb25maWcgTkVUX1NDSF9NUVBSSU9cXG5uZXQvc2NoZWQvS2NvbmZpZy0yMTktXFx0dHJpc3RhdGUgXFxcIk11bHRpLXF1ZXVlIHByaW9yaXR5IHNjaGVkdWxlciAoTVFQUklPKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTIzMC1cXG5uZXQvc2NoZWQvS2NvbmZpZzoyMzE6Y29uZmlnIE5FVF9TQ0hfU0tCUFJJT1xcbm5ldC9zY2hlZC9LY29uZmlnLTIzMi1cXHR0cmlzdGF0ZSBcXFwiU0tCIHByaW9yaXR5IHF1ZXVlIHNjaGVkdWxlciAoU0tCUFJJTylcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0yNDMtXFxubmV0L3NjaGVkL0tjb25maWc6MjQ0OmNvbmZpZyBORVRfU0NIX0NIT0tFXFxubmV0L3NjaGVkL0tjb25maWctMjQ1LVxcdHRyaXN0YXRlIFxcXCJDSE9vc2UgYW5kIEtlZXAgcmVzcG9uc2l2ZSBmbG93IHNjaGVkdWxlciAoQ0hPS0UpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMjU0LVxcbm5ldC9zY2hlZC9LY29uZmlnOjI1NTpjb25maWcgTkVUX1NDSF9RRlFcXG5uZXQvc2NoZWQvS2NvbmZpZy0yNTYtXFx0dHJpc3RhdGUgXFxcIlF1aWNrIEZhaXIgUXVldWVpbmcgc2NoZWR1bGVyIChRRlEpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMjY1LVxcbm5ldC9zY2hlZC9LY29uZmlnOjI2Njpjb25maWcgTkVUX1NDSF9DT0RFTFxcbm5ldC9zY2hlZC9LY29uZmlnLTI2Ny1cXHR0cmlzdGF0ZSBcXFwiQ29udHJvbGxlZCBEZWxheSBBUU0gKENPREVMKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTI3Ni1cXG5uZXQvc2NoZWQvS2NvbmZpZzoyNzc6Y29uZmlnIE5FVF9TQ0hfRlFfQ09ERUxcXG5uZXQvc2NoZWQvS2NvbmZpZy0yNzgtXFx0dHJpc3RhdGUgXFxcIkZhaXIgUXVldWUgQ29udHJvbGxlZCBEZWxheSBBUU0gKEZRX0NPREVMKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTI4Ny1cXG5uZXQvc2NoZWQvS2NvbmZpZzoyODg6Y29uZmlnIE5FVF9TQ0hfQ0FLRVxcbm5ldC9zY2hlZC9LY29uZmlnLTI4OS1cXHR0cmlzdGF0ZSBcXFwiQ29tbW9uIEFwcGxpY2F0aW9ucyBLZXB0IEVuaGFuY2VkIChDQUtFKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTI5OC1cXG5uZXQvc2NoZWQvS2NvbmZpZzoyOTk6Y29uZmlnIE5FVF9TQ0hfRlFcXG5uZXQvc2NoZWQvS2NvbmZpZy0zMDAtXFx0dHJpc3RhdGUgXFxcIkZhaXIgUXVldWVcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0zMTItXFxubmV0L3NjaGVkL0tjb25maWc6MzEzOmNvbmZpZyBORVRfU0NIX0hIRlxcbm5ldC9zY2hlZC9LY29uZmlnLTMxNC1cXHR0cmlzdGF0ZSBcXFwiSGVhdnktSGl0dGVyIEZpbHRlciAoSEhGKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTMyMS1cXG5uZXQvc2NoZWQvS2NvbmZpZzozMjI6Y29uZmlnIE5FVF9TQ0hfUElFXFxubmV0L3NjaGVkL0tjb25maWctMzIzLVxcdHRyaXN0YXRlIFxcXCJQcm9wb3J0aW9uYWwgSW50ZWdyYWwgY29udHJvbGxlciBFbmhhbmNlZCAoUElFKSBzY2hlZHVsZXJcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0zMzMtXFxubmV0L3NjaGVkL0tjb25maWc6MzM0OmNvbmZpZyBORVRfU0NIX0ZRX1BJRVxcbm5ldC9zY2hlZC9LY29uZmlnLTMzNS1cXHRkZXBlbmRzIG9uIE5FVF9TQ0hfUElFXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0zNDYtXFxubmV0L3NjaGVkL0tjb25maWc6MzQ3OmNvbmZpZyBORVRfU0NIX0lOR1JFU1NcXG5uZXQvc2NoZWQvS2NvbmZpZy0zNDgtXFx0dHJpc3RhdGUgXFxcIkluZ3Jlc3MvY2xhc3NpZmllci1hY3Rpb24gUWRpc2NcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0zNjItXFxubmV0L3NjaGVkL0tjb25maWc6MzYzOmNvbmZpZyBORVRfU0NIX1BMVUdcXG5uZXQvc2NoZWQvS2NvbmZpZy0zNjQtXFx0dHJpc3RhdGUgXFxcIlBsdWcgbmV0d29yayB0cmFmZmljIHVudGlsIHJlbGVhc2UgKFBMVUcpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMzg4LVxcbm5ldC9zY2hlZC9LY29uZmlnOjM4OTpjb25maWcgTkVUX1NDSF9FVFNcXG5uZXQvc2NoZWQvS2NvbmZpZy0zOTAtXFx0dHJpc3RhdGUgXFxcIkVuaGFuY2VkIHRyYW5zbWlzc2lvbiBzZWxlY3Rpb24gc2NoZWR1bGVyIChFVFMpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNDA1LVxcbm5ldC9zY2hlZC9LY29uZmlnOjQwNjpjb25maWcgTkVUX1NDSF9CUEZcXG5uZXQvc2NoZWQvS2NvbmZpZy00MDctXFx0Ym9vbCBcXFwiQlBGLWJhc2VkIFFkaXNjXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNDE3LVxcbm5ldC9zY2hlZC9LY29uZmlnOjQxODpjb25maWcgTkVUX1NDSF9EVUFMUEkyXFxubmV0L3NjaGVkL0tjb25maWctNDE5LVxcdHRyaXN0YXRlIFxcXCJEdWFsIFF1ZXVlIFBJIFNxdWFyZSAoRFVBTFBJMikgc2NoZWR1bGVyXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNDI5LVxcbm5ldC9zY2hlZC9LY29uZmlnOjQzMDptZW51Y29uZmlnIE5FVF9TQ0hfREVGQVVMVFxcbm5ldC9zY2hlZC9LY29uZmlnLTQzMS1cXHRib29sIFxcXCJBbGxvdyBvdmVycmlkZSBkZWZhdWx0IHF1ZXVlIGRpc2NpcGxpbmVcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz05NjY9ZW5kaWYgIyBORVRfU0NIRURcXG5uZXQvc2NoZWQvS2NvbmZpZy05NjctXFxubmV0L3NjaGVkL0tjb25maWc6OTY4OmNvbmZpZyBORVRfU0NIX0ZJRk9cXG5uZXQvc2NoZWQvS2NvbmZpZy05NjktXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwODozNjowMi45MjgwOTYwODdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MTA2ODc0NzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBOZXR3b3JrIFNjaGVkdWxlciBDaGFuZ2VzKipcblxuT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGVzZSBmaWxlIG1vZGlmaWNhdGlvbnMgYW5kIHRoZWlyIGFzc29jaWF0ZWQgS2NvbmZpZyBvcHRpb25zIHdpdGhpbiB0aGUgbmV0d29yayBzY2hlZHVsZXIgc3Vic3lzdGVtLiBGaXJzdCwgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gbGluayB0aGUgZmlsZSBjaGFuZ2VzIHRvIHRoZWlyIEtjb25maWcgZW50cmllcy4gSSBzZWUgdGhhdDpcblxuKiAgIGBuZXQvc2NoZWQvc2NoX2Ryci5jYCBpcyBjb25uZWN0ZWQgdG8gYE5FVF9TQ0hfRFJSYC5cbiogICBgbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNgIGNvcnJlc3BvbmRzIHRvIGBORVRfU0NIX0RVQUxQSTJgLlxuKiAgIGBuZXQvc2NoZWQvc2NoX2V0cy5jYCBpcyBlbmFibGVkIGJ5IGBORVRfU0NIX0VUU2AuXG4qICAgYG5ldC9zY2hlZC9zY2hfZnEuY2AgaXMgY29udHJvbGxlZCBieSBgTkVUX1NDSF9GUWAuXG4qICAgYG5ldC9zY2hlZC9zY2hfZnFfcGllLmNgIHJlbGF0ZXMgdG8gYE5FVF9TQ0hfRlFfUElFYC5cbiogICBgbmV0L3NjaGVkL3NjaF9oaGYuY2Agc2VlbXMgY29ubmVjdGVkIHRvIGBORVRfU0NIX0hIRmAuXG4qICAgYG5ldC9zY2hlZC9zY2hfcGllLmNgIHVzZXMgYE5FVF9TQ0hfUElFYC5cbiogICBBbmQgZmluYWxseSwgYG5ldC9zY2hlZC9zY2hfc2ZxLmNgIGlzIHRpZWQgdG8gYE5FVF9TQ0hfU0ZRYC5cblxuTm93LCBJIG5lZWQgdG8gb3BlbiB0aGUgYE1ha2VmaWxlYCBpbiBgbmV0L3NjaGVkYCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBtYXBwaW5nLiBJIHdhbnQgdG8gYmUgMTAwJSBzdXJlIHRoaXMgaXNuJ3QganVzdCBhIGNvaW5jaWRlbmNlIGFuZCB0aGF0IHRoaXMgaXMgdGhlIHN5c3RlbSBmb3IgY29ubmVjdGluZyB0aGVzZSBmaWxlcyB0byB0aGVpciBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MzMzLCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA4OjM2OjA3LjAzNDk3MzU4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxNTk2OTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjaF8oZHJyfGR1YWxwaTJ8ZXRzfGZxfGZxX3BpZXxoaGZ8cGllfHNmcSlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9NYWtlZmlsZT00MD1vYmotJChDT05GSUdfTkVUX1NDSF9TRkIpXFx0Kz0gc2NoX3NmYi5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjQxOm9iai0kKENPTkZJR19ORVRfU0NIX1NGUSlcXHQrPSBzY2hfc2ZxLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNDItb2JqLSQoQ09ORklHX05FVF9TQ0hfVEJGKVxcdCs9IHNjaF90YmYub1xcbi0tXFxubmV0L3NjaGVkL01ha2VmaWxlPTQ2PW9iai0kKENPTkZJR19ORVRfU0NIX05FVEVNKVxcdCs9IHNjaF9uZXRlbS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjQ3Om9iai0kKENPTkZJR19ORVRfU0NIX0RSUilcXHQrPSBzY2hfZHJyLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNDgtb2JqLSQoQ09ORklHX05FVF9TQ0hfUExVRylcXHQrPSBzY2hfcGx1Zy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjQ5Om9iai0kKENPTkZJR19ORVRfU0NIX0VUUylcXHQrPSBzY2hfZXRzLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNTAtb2JqLSQoQ09ORklHX05FVF9TQ0hfTVFQUklPKVxcdCs9IHNjaF9tcXByaW8ub1xcbi0tXFxubmV0L3NjaGVkL01ha2VmaWxlPTU1PW9iai0kKENPTkZJR19ORVRfU0NIX0NPREVMKVxcdCs9IHNjaF9jb2RlbC5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjU2Om9iai0kKENPTkZJR19ORVRfU0NIX0ZRX0NPREVMKVxcdCs9IHNjaF9mcV9jb2RlbC5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTU3LW9iai0kKENPTkZJR19ORVRfU0NIX0NBS0UpXFx0Kz0gc2NoX2Nha2Uub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo1ODpvYmotJChDT05GSUdfTkVUX1NDSF9GUSlcXHQrPSBzY2hfZnEub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo1OTpvYmotJChDT05GSUdfTkVUX1NDSF9ISEYpXFx0Kz0gc2NoX2hoZi5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjYwOm9iai0kKENPTkZJR19ORVRfU0NIX1BJRSlcXHQrPSBzY2hfcGllLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX05FVF9TQ0hfRlFfUElFKVxcdCs9IHNjaF9mcV9waWUub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS02Mi1vYmotJChDT05GSUdfTkVUX1NDSF9DQlMpXFx0Kz0gc2NoX2Nicy5vXFxuLS1cXG5uZXQvc2NoZWQvTWFrZWZpbGU9NjU9b2JqLSQoQ09ORklHX05FVF9TQ0hfQlBGKVxcdCs9IGJwZl9xZGlzYy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19ORVRfU0NIX0RVQUxQSTIpXFx0Kz0gc2NoX2R1YWxwaTIub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS02Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDg6MzY6MDcuMTI2NTc1ODIzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTU0NTg5NTg5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIEtlcm5lbCBOZXR3b3JrIFNjaGVkdWxlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgbmV0d29yayBzY2hlZHVsZXIgY29uZmlndXJhdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIHBhcmVudCBLY29uZmlnIG9wdGlvbnMgZm9yIGFueXRoaW5nIHVuZGVyIGBORVRfU0NIXypgLiBJIGtub3cgdGhhdCBgTkVUX1NDSEVEYCBpcyB0aGUgbGlrZWx5IHN0YXJ0aW5nIHBvaW50LCBzbyBJJ2xsIGJlZ2luIGJ5IGxvb2tpbmcgaW4gYG5ldC9zY2hlZC9LY29uZmlnYC4gSSBzZWUgdGhlIGBtZW51Y29uZmlnIE5FVF9TQ0hFRGAgZGVmaW5pdGlvbiwgd2hpY2ggdGVsbHMgbWUgdGhpcyBpcyBhIHByaW1hcnkgb3B0aW9uLiBUaGVuIEknbGwgdHJhY2UgaXRzIGluY2x1c2lvbi4gQWgsIHJpZ2h0LCBpbiB0aGUgdG9wLWxldmVsIGBuZXQvS2NvbmZpZ2AsIGl0J3MgaW5jbHVkaW5nIHRoZSBzY2hlZCBjb25maWcgd2l0aCBhIGBzb3VyY2UgXCJuZXQvc2NoZWQvS2NvbmZpZ1wiYCBjb21tYW5kLiBUaGF0IG1ha2VzIHNlbnNlLCBrZWVwaW5nIHRoaW5ncyBtb2R1bGFyLiBBbmQgdGhhdCdzIHVuZGVyIHRoZSBcIk5ldHdvcmtpbmcgb3B0aW9uc1wiIG1lbnUgKE5FVCkuIEdvb2QuXG5cbk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYHBpZV9kcm9wX2Vhcmx5YCB2YXJpYWJsZS4gSSBzZWVtIHRvIHJlY2FsbCBkZWFsaW5nIHdpdGggdGhhdCByZWNlbnRseS4gSSdsbCBvcGVuIHVwIGBuZXQvc2NoZWQvc2NoX3BpZS5jYCBhbmQgbWFrZSBzdXJlIGl0J3Mgbm90IGEgc3RhdGljIG9yIGxvY2FsIHZhcmlhYmxlLCBidXQgcmF0aGVyIGFuIGV4cG9ydGVkIG9uZS4gS25vd2luZyBpdHMgdmlzaWJpbGl0eSBpcyBrZXkgdG8gaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHNjaGVkdWxlci5cblxuXG4iLCJJbnB1dFRva2VucyI6OTUwNiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA4OjM2OjEyLjY3MjQ3NTI5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NDU1NDU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBpZV9kcm9wX2Vhcmx5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9mcV9waWUuYz0xMzA9c3RhdGljIGludCBmcV9waWVfcWRpc2NfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtMTY2LVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM6MTY3OlxcdGlmICghcGllX2Ryb3BfZWFybHkoc2NoLCBcXHUwMDI2cS1cXHUwMDNlcF9wYXJhbXMsIFxcdTAwMjZzZWxfZmxvdy1cXHUwMDNldmFycyxcXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTE2OC1cXHRcXHRcXHQgICAgc2VsX2Zsb3ctXFx1MDAzZWJhY2tsb2csIHNrYi1cXHUwMDNlbGVuKSkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9waWUuYz0yNT1zdHJ1Y3QgcGllX3NjaGVkX2RhdGEge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9waWUuYy0zMi1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjMzOmJvb2wgcGllX2Ryb3BfZWFybHkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBwaWVfcGFyYW1zICpwYXJhbXMsXFxubmV0L3NjaGVkL3NjaF9waWUuYy0zNC1cXHRcXHQgICAgc3RydWN0IHBpZV92YXJzICp2YXJzLCB1MzIgYmFja2xvZywgdTMyIHBhY2tldF9zaXplKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9waWUuYy01MC1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjUxOlxcdC8qIElmIHdlIGhhdmUgZmV3ZXIgdGhhbiAyIG10dS1zaXplZCBwYWNrZXRzLCBkaXNhYmxlIHBpZV9kcm9wX2Vhcmx5LFxcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTItXFx0ICogc2ltaWxhciB0byBtaW5fdGggaW4gUkVEXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTgyLX1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjgzOkVYUE9SVF9TWU1CT0xfR1BMKHBpZV9kcm9wX2Vhcmx5KTtcXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTg0LVxcbm5ldC9zY2hlZC9zY2hfcGllLmM9ODU9c3RhdGljIGludCBwaWVfcWRpc2NfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcGllLmMtOTgtXFxubmV0L3NjaGVkL3NjaF9waWUuYzo5OTpcXHRpZiAoIXBpZV9kcm9wX2Vhcmx5KHNjaCwgXFx1MDAyNnEtXFx1MDAzZXBhcmFtcywgXFx1MDAyNnEtXFx1MDAzZXZhcnMsIHNjaC1cXHUwMDNlcXN0YXRzLmJhY2tsb2csXFxubmV0L3NjaGVkL3NjaF9waWUuYy0xMDAtXFx0XFx0XFx0ICAgIHNrYi1cXHUwMDNlbGVuKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwODozNjoxMi43MzY5NDUyOTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1Nzg4ODk0ODM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBRZGlzYyBGdW5jdGlvbiBWaXNpYmlsaXR5KipcblxuT2theSwgc28gYHBpZV9kcm9wX2Vhcmx5YCBpcyBub3cgZXhwb3J0ZWQgd2l0aCBgRVhQT1JUX1NZTUJPTF9HUExgLiBUaGF0J3MgdGhlIGtleSBjaGFuZ2UuIE5vdywgSSB3YW50IHRvIHNlZSB3aGF0IG90aGVyIGZ1bmN0aW9ucyBhcmUgYWZmZWN0ZWQgaW4gdGhlc2UgZmlsZXMgYW5kIGhvdyB0aGV5J3JlIGV4cG9zZWQuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgb3RoZXIgUWRpc2MgZnVuY3Rpb25zIGFuZCBzeW1ib2xzIGluIHRoZSBgc2NoXypgIGZpbGVzLiBMZXQgbWUgcnVuIHRocm91Z2ggZWFjaCBmaWxlOlxuXG4qICAgYHNjaF9kcnIuY2A6IEp1c3QgYGRycl9jaGFuZ2VfY2xhc3NgLiBUaGF0J3MgYSBzdGF0aWMgY2FsbGJhY2sgd2l0aGluIGBkcnJfY2xhc3Nfb3BzYCwgc28gaXQncyBub3QgZGlyZWN0bHkgZXhwb3NlZC5cbiogICBgc2NoX2R1YWxwaTIuY2A6IEkgc2VlIGEgaGFuZGZ1bCBvZiBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uczogYGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbmAsIGBtdXN0X2Ryb3BgLCBhbmQgYGdldF9tZW1vcnlfbGltaXRgLiBUaGV5J3JlIGludGVybmFsIHRvIGBkdWFscGkyX2NoYW5nZWAsIGBkdWFscGkyX2luaXRgLCBhbmQgYGR1YWxwaTJfZW5xdWV1ZWAuIEZpbmUsIGFsbCBpbnRlcm5hbC5cbiogICBgc2NoX2V0cy5jYDogSGVyZSwgYGV0c19xdWFudHVtX3BhcnNlYCBhbmQgYGV0c19xZGlzY19jaGFuZ2VgLiBUaGVzZSBhcmUgc3RhdGljIGNhbGxiYWNrcyB0b28sIHBhcnQgb2YgdGhlIGBldHNfcWRpc2Nfb3BzYCBhbmQgYGV0c19jbGFzc19vcHNgIHN0cnVjdHVyZXMuIFRoZXkncmUgbm90IGV4dGVybmFsbHkgdmlzaWJsZS5cbiogICBgc2NoX2ZxLmNgOiBCb3RoIGBmcV9jaGFuZ2VgIGFuZCBgZnFfaW5pdGAgYXJlIHN0YXRpYyBjYWxsYmFja3Mgd2l0aGluIGBmcV9xZGlzY19vcHNgLiBTdGlsbCBpbnRlcm5hbC5cbiogICBgc2NoX2ZxX3BpZS5jYDogT25seSBgZnFfcGllX2NoYW5nZWAuIEl0J3MgYSBzdGF0aWMgY2FsbGJhY2sgaW4gYGZxX3BpZV9xZGlzY19vcHNgLCBzbyB0aGF0J3MgYWxzbyBpbnRlcm5hbC5cbiogICBgc2NoX2hoZi5jYDogVGhlIGBoaGZfY2hhbmdlYCBhbmQgYGhoZl9pbml0YCBmdW5jdGlvbnMgYXJlIGFsc28gaW50ZXJuYWwgc3RhdGljIGNhbGxiYWNrcyBpbiBgaGhmX3FkaXNjX29wc2AuXG4qICAgYHNjaF9waWUuY2A6IE9idmlvdXNseSwgYHBpZV9kcm9wX2Vhcmx5YCBpcyB0aGUgZXhjZXB0aW9uIGhlcmUsIGJlaW5nIHRoZSBleHBvcnRlZCBmdW5jdGlvbi5cbiogICBgc2NoX3NmcS5jYDogVGhlIGBzZnFfY2hhbmdlYCBmdW5jdGlvbiBpcyBhbm90aGVyIHN0YXRpYyBjYWxsYmFjayBpbiBgc2ZxX3FkaXNjX29wc2AuXG5cbkFscmlnaHQsIGl0IGxvb2tzIGxpa2UgbW9zdCBvZiB0aGVzZSBRZGlzYyBmdW5jdGlvbnMgYXJlIG1hbmFnZWQgaW50ZXJuYWxseSB0aHJvdWdoIGBRZGlzY19vcHNgIGFuZCBgUWRpc2NfY2xhc3Nfb3BzYCBzdHJ1Y3RzLCB1c2luZyBjYWxsYmFja3MuIE1vc3Qgb2YgdGhlc2UgZmlsZXMgYXJlIGNvbnNpc3RlbnQgd2l0aCB0aGlzIHN0cnVjdHVyZSwgc28gSSdsbCBjaGVjayBob3cgUWRpc2MgZnVuY3Rpb25zIGFyZSB0eXBpY2FsbHkgcmVwcmVzZW50ZWQgYXMgRm9jdXNTeW1ib2xzIGFuZCBpZiBhbnkgb2YgdGhlbSBhcmUgZXhwb3J0ZWQgb3IgbWFkZSB2aXNpYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDM3MywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwODozNjoxOC41MjU4NDQxOTJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1NzUyMzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBRZGlzY19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvYnBmX3FkaXNjLmMtMTAtXFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jOjExOiNkZWZpbmUgUURJU0NfT1BfSURYKG9wKVxcdChvZmZzZXRvZihzdHJ1Y3QgUWRpc2Nfb3BzLCBvcCkgLyBzaXplb2Yodm9pZCAoKikodm9pZCkpKVxcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy0xMi0jZGVmaW5lIFFESVNDX01PRkZfSURYKG1vZmYpXFx0KG1vZmYgLyBzaXplb2Yodm9pZCAoKikodm9pZCkpKVxcbi0tXFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jPTMzPXN0YXRpYyBib29sIGJwZl9xZGlzY19pc192YWxpZF9hY2Nlc3MoaW50IG9mZiwgaW50IHNpemUsXFxuLS1cXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtNDEtXFx0YXJnID0gYnRmX2N0eF9hcmdfaWR4KGJ0ZiwgcHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VhdHRhY2hfZnVuY19wcm90bywgb2ZmKTtcXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM6NDI6XFx0aWYgKHByb2ctXFx1MDAzZWF1eC1cXHUwMDNlYXR0YWNoX3N0X29wc19tZW1iZXJfb2ZmID09IG9mZnNldG9mKHN0cnVjdCBRZGlzY19vcHMsIGVucXVldWUpKSB7XFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTQzLVxcdFxcdGlmIChhcmcgPT0gMiBcXHUwMDI2XFx1MDAyNiB0eXBlID09IEJQRl9SRUFEKSB7XFxuLS1cXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM9MTM1PXN0YXRpYyBpbnQgYnBmX3FkaXNjX2dlbl9wcm9sb2d1ZShzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmLCBib29sIGRpcmVjdF93cml0ZSxcXG4tLVxcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy0xMzktXFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jOjE0MDpcXHRpZiAocHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VhdHRhY2hfc3Rfb3BzX21lbWJlcl9vZmYgIT0gb2Zmc2V0b2Yoc3RydWN0IFFkaXNjX29wcywgaW5pdCkpXFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTE0MS1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9zY2hlZC9icGZfcWRpc2MuYz0xNjU9c3RhdGljIGludCBicGZfcWRpc2NfZ2VuX2VwaWxvZ3VlKHN0cnVjdCBicGZfaW5zbiAqaW5zbl9idWYsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy0xNjktXFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jOjE3MDpcXHRpZiAocHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VhdHRhY2hfc3Rfb3BzX21lbWJlcl9vZmYgIT0gb2Zmc2V0b2Yoc3RydWN0IFFkaXNjX29wcywgcmVzZXQpIFxcdTAwMjZcXHUwMDI2XFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jOjE3MTpcXHQgICAgcHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VhdHRhY2hfc3Rfb3BzX21lbWJlcl9vZmYgIT0gb2Zmc2V0b2Yoc3RydWN0IFFkaXNjX29wcywgZGVzdHJveSkpXFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTE3Mi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9zY2hlZC9icGZfcWRpc2MuYz0zNjE9c3RhdGljIGludCBicGZfcWRpc2NfaW5pdF9tZW1iZXIoY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxcbi0tXFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTM2NC17XFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jOjM2NTpcXHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICp1cWRpc2Nfb3BzO1xcbm5ldC9zY2hlZC9icGZfcWRpc2MuYzozNjY6XFx0c3RydWN0IFFkaXNjX29wcyAqcWRpc2Nfb3BzO1xcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy0zNjctXFx0dTMyIG1vZmY7XFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTM2OC1cXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM6MzY5OlxcdHVxZGlzY19vcHMgPSAoY29uc3Qgc3RydWN0IFFkaXNjX29wcyAqKXVkYXRhO1xcbm5ldC9zY2hlZC9icGZfcWRpc2MuYzozNzA6XFx0cWRpc2Nfb3BzID0gKHN0cnVjdCBRZGlzY19vcHMgKilrZGF0YTtcXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtMzcxLVxcbi0tXFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTM3My1cXHRzd2l0Y2ggKG1vZmYpIHtcXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM6Mzc0OlxcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IFFkaXNjX29wcywgcHJpdl9zaXplKTpcXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtMzc1LVxcdFxcdGlmICh1cWRpc2Nfb3BzLVxcdTAwM2Vwcml2X3NpemUpXFxuLS1cXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtMzc4LVxcdFxcdHJldHVybiAxO1xcbm5ldC9zY2hlZC9icGZfcWRpc2MuYzozNzk6XFx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3QgUWRpc2Nfb3BzLCBwZWVrKTpcXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtMzgwLVxcdFxcdHFkaXNjX29wcy1cXHUwMDNlcGVlayA9IHFkaXNjX3BlZWtfZGVxdWV1ZWQ7XFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTM4MS1cXHRcXHRyZXR1cm4gMDtcXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM6MzgyOlxcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IFFkaXNjX29wcywgaWQpOlxcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy0zODMtXFx0XFx0aWYgKGJwZl9vYmpfbmFtZV9jcHkocWRpc2Nfb3BzLVxcdTAwM2VpZCwgdXFkaXNjX29wcy1cXHUwMDNlaWQsXFxuLS1cXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM9NDAyPXN0YXRpYyBpbnQgYnBmX3FkaXNjX3ZhbGlkYXRlKHZvaWQgKmtkYXRhKVxcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy00MDMte1xcbm5ldC9zY2hlZC9icGZfcWRpc2MuYzo0MDQ6XFx0c3RydWN0IFFkaXNjX29wcyAqb3BzID0gKHN0cnVjdCBRZGlzY19vcHMgKilrZGF0YTtcXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtNDA1LVxcbi0tXFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jPTQzND1zdGF0aWMgdm9pZCBRZGlzY19vcHNfX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtNDM3LVxcbm5ldC9zY2hlZC9icGZfcWRpc2MuYzo0Mzg6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgX19icGZfb3BzX3FkaXNjX29wcyA9IHtcXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtNDM5LVxcdC5lbnF1ZXVlID0gUWRpc2Nfb3BzX19lbnF1ZXVlLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz0xMTk9c3RhdGljIERFRklORV9SV0xPQ0socWRpc2NfbW9kX2xvY2spO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xMjgtXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMjk6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgKnFkaXNjX2Jhc2U7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xMzAtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEzMi1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjEzMzppbnQgcmVnaXN0ZXJfcWRpc2Moc3RydWN0IFFkaXNjX29wcyAqcW9wcylcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEzNC17XFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMzU6XFx0c3RydWN0IFFkaXNjX29wcyAqcSwgKipxcDtcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEzNi1cXHRpbnQgcmMgPSAtRUVYSVNUO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz0xNzU9RVhQT1JUX1NZTUJPTChyZWdpc3Rlcl9xZGlzYyk7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNzYtXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxNzc6dm9pZCB1bnJlZ2lzdGVyX3FkaXNjKHN0cnVjdCBRZGlzY19vcHMgKnFvcHMpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNzgte1xcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTc5OlxcdHN0cnVjdCBRZGlzY19vcHMgKnEsICoqcXA7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xODAtXFx0aW50IGVyciA9IC1FTk9FTlQ7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE5OD12b2lkIHFkaXNjX2dldF9kZWZhdWx0KGNoYXIgKm5hbWUsIHNpemVfdCBsZW4pXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTIwNC1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjIwNTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyAqcWRpc2NfbG9va3VwX2RlZmF1bHQoY29uc3QgY2hhciAqbmFtZSlcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTIwNi17XFxubmV0L3NjaGVkL3NjaF9hcGkuYzoyMDc6XFx0c3RydWN0IFFkaXNjX29wcyAqcSA9IE5VTEw7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yMDgtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTIyMT1pbnQgcWRpc2Nfc2V0X2RlZmF1bHQoY29uc3QgY2hhciAqbmFtZSlcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTIyMi17XFxubmV0L3NjaGVkL3NjaF9hcGkuYzoyMjM6XFx0Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqb3BzO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjI0LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz0zMzk9c3RhdGljIHN0cnVjdCBRZGlzYyAqcWRpc2NfbGVhZihzdHJ1Y3QgUWRpc2MgKnAsIHUzMiBjbGFzc2lkLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0zNTktXFxubmV0L3NjaGVkL3NjaF9hcGkuYzozNjA6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgKnFkaXNjX2xvb2t1cF9vcHMoc3RydWN0IG5sYXR0ciAqa2luZClcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTM2MS17XFxubmV0L3NjaGVkL3NjaF9hcGkuYzozNjI6XFx0c3RydWN0IFFkaXNjX29wcyAqcSA9IE5VTEw7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0zNjMtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTEyNzQ9c3RhdGljIHN0cnVjdCBRZGlzYyAqcWRpc2NfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEyODItXFx0c3RydWN0IFFkaXNjICpzY2g7XFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMjgzOlxcdHN0cnVjdCBRZGlzY19vcHMgKm9wcztcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEyODQtXFx0c3RydWN0IHFkaXNjX3NpemVfdGFibGUgKnN0YWI7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE4MDE9c3RhdGljIHZvaWQgcmVxdWVzdF9xZGlzY19tb2R1bGUoc3RydWN0IG5sYXR0ciAqa2luZClcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE4MDIte1xcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTgwMzpcXHRzdHJ1Y3QgUWRpc2Nfb3BzICpvcHM7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xODA0LVxcdGNoYXIgbmFtZVtJRk5BTVNJWl07XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2JsYWNraG9sZS5jPTIzPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYmxhY2tob2xlX2RlcXVldWUoc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2JsYWNraG9sZS5jLTI3LVxcbm5ldC9zY2hlZC9zY2hfYmxhY2tob2xlLmM6Mjg6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgYmxhY2tob2xlX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfYmxhY2tob2xlLmMtMjktXFx0LmlkXFx0XFx0PSBcXFwiYmxhY2tob2xlXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfY2FrZS5jPTMyMzE9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgY2FrZV9jbGFzc19vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2Nha2UuYy0zMjQxLVxcbm5ldC9zY2hlZC9zY2hfY2FrZS5jOjMyNDI6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgY2FrZV9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2Nha2UuYy0zMjQzLVxcdC5jbF9vcHNcXHRcXHQ9XFx0XFx1MDAyNmNha2VfY2xhc3Nfb3BzLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9jYWtlLmM9MzM0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBjYWtlX21xX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfY2FrZS5jLTMzNTItXFxubmV0L3NjaGVkL3NjaF9jYWtlLmM6MzM1MzpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBjYWtlX21xX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfY2FrZS5jLTMzNTQtXFx0LmNsX29wc1xcdFxcdD1cXHRcXHUwMDI2Y2FrZV9tcV9jbGFzc19vcHMsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2Nicy5jPTU0MT1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBjYnNfY2xhc3Nfb3BzID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9jYnMuYy01NDgtXFxubmV0L3NjaGVkL3NjaF9jYnMuYzo1NDk6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgY2JzX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfY2JzLmMtNTUwLVxcdC5pZFxcdFxcdD1cXHRcXFwiY2JzXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfY2hva2UuYz00ODY9c3RhdGljIHN0cnVjdCBza19idWZmICpjaG9rZV9wZWVrX2hlYWQoc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2Nob2tlLmMtNDkyLVxcbm5ldC9zY2hlZC9zY2hfY2hva2UuYzo0OTM6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgY2hva2VfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9jaG9rZS5jLTQ5NC1cXHQuaWRcXHRcXHQ9XFx0XFxcImNob2tlXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfY29kZWwuYz0yODQ9c3RhdGljIHZvaWQgY29kZWxfcmVzZXQoc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2NvZGVsLmMtMjkxLVxcbm5ldC9zY2hlZC9zY2hfY29kZWwuYzoyOTI6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgY29kZWxfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9jb2RlbC5jLTI5My1cXHQuaWRcXHRcXHQ9XFx0XFxcImNvZGVsXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHJyLmM9NDYwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIGRycl9jbGFzc19vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ3NC1cXG5uZXQvc2NoZWQvc2NoX2Ryci5jOjQ3NTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBkcnJfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9kcnIuYy00NzYtXFx0LmNsX29wc1xcdFxcdD0gXFx1MDAyNmRycl9jbGFzc19vcHMsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz0xMTkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIGR1YWxwaTJfY2xhc3Nfb3BzID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIwMS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjAyOnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIGR1YWxwaTJfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIwMy1cXHQuaWRcXHRcXHQ9IFxcXCJkdWFscGkyXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZXRmLmM9NDYwPXN0YXRpYyBpbnQgZXRmX2R1bXAoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2V0Zi5jLTQ5MC1cXG5uZXQvc2NoZWQvc2NoX2V0Zi5jOjQ5MTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBldGZfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9ldGYuYy00OTItXFx0LmlkXFx0XFx0PVxcdFxcXCJldGZcXFwiLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9ldHMuYz04MDA9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgZXRzX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZXRzLmMtODEzLVxcbm5ldC9zY2hlZC9zY2hfZXRzLmM6ODE0OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIGV0c19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgxNS1cXHQuY2xfb3BzXFx0XFx0PSBcXHUwMDI2ZXRzX2NsYXNzX29wcyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZmlmby5jPTE4Mj1zdGF0aWMgaW50IGZpZm9faGRfZHVtcChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZmlmby5jLTE4Ni1cXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYzoxODc6c3RydWN0IFFkaXNjX29wcyBwZmlmb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYy0xODgtXFx0LmlkXFx0XFx0PVxcdFxcXCJwZmlmb1xcXCIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYz0yMDA9RVhQT1JUX1NZTUJPTChwZmlmb19xZGlzY19vcHMpO1xcbm5ldC9zY2hlZC9zY2hfZmlmby5jLTIwMS1cXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYzoyMDI6c3RydWN0IFFkaXNjX29wcyBiZmlmb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYy0yMDMtXFx0LmlkXFx0XFx0PVxcdFxcXCJiZmlmb1xcXCIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYz0yMTU9RVhQT1JUX1NZTUJPTChiZmlmb19xZGlzY19vcHMpO1xcbm5ldC9zY2hlZC9zY2hfZmlmby5jLTIxNi1cXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYzoyMTc6c3RydWN0IFFkaXNjX29wcyBwZmlmb19oZWFkX2Ryb3BfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9maWZvLmMtMjE4LVxcdC5pZFxcdFxcdD1cXHRcXFwicGZpZm9faGVhZF9kcm9wXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZmlmby5jPTI1ND1FWFBPUlRfU1lNQk9MKGZpZm9fc2V0X2xpbWl0KTtcXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYy0yNTUtXFxubmV0L3NjaGVkL3NjaF9maWZvLmM6MjU2OnN0cnVjdCBRZGlzYyAqZmlmb19jcmVhdGVfZGZsdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IFFkaXNjX29wcyAqb3BzLFxcbm5ldC9zY2hlZC9zY2hfZmlmby5jLTI1Ny1cXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGxpbWl0LFxcbi0tXFxubmV0L3NjaGVkL3NjaF9mcS5jPTEzNDI9c3RhdGljIGludCBmcV9kdW1wX3N0YXRzKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZ25ldF9kdW1wICpkKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9mcS5jLTEzNzgtXFxubmV0L3NjaGVkL3NjaF9mcS5jOjEzNzk6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgZnFfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9mcS5jLTEzODAtXFx0LmlkXFx0XFx0PVxcdFxcXCJmcVxcXCIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxX2NvZGVsLmM9NzUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIGZxX2NvZGVsX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfY29kZWwuYy03NjEtXFxubmV0L3NjaGVkL3NjaF9mcV9jb2RlbC5jOjc2MjpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBmcV9jb2RlbF9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2ZxX2NvZGVsLmMtNzYzLVxcdC5jbF9vcHNcXHRcXHQ9XFx0XFx1MDAyNmZxX2NvZGVsX2NsYXNzX29wcyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM9NTU2PXN0YXRpYyB2b2lkIGZxX3BpZV9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01NjUtXFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYzo1NjY6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgZnFfcGllX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNTY3LVxcdC5pZFxcdFxcdD0gXFxcImZxX3BpZVxcXCIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0zNi0vKiBRZGlzYyB0byB1c2UgYnkgZGVmYXVsdCAqL1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjM3OmNvbnN0IHN0cnVjdCBRZGlzY19vcHMgKmRlZmF1bHRfcWRpc2Nfb3BzID0gXFx1MDAyNnBmaWZvX2Zhc3Rfb3BzO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTM4LUVYUE9SVF9TWU1CT0woZGVmYXVsdF9xZGlzY19vcHMpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9NjkzPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbm9vcF9kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02OTctXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6Njk4OnN0cnVjdCBRZGlzY19vcHMgbm9vcF9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02OTktXFx0LmlkXFx0XFx0PVxcdFxcXCJub29wXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTczND1zdGF0aWMgaW50IG5vcXVldWVfaW5pdChzdHJ1Y3QgUWRpc2MgKnFkaXNjLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy03NDMtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NzQ0OnN0cnVjdCBRZGlzY19vcHMgbm9xdWV1ZV9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy03NDUtXFx0LmlkXFx0XFx0PVxcdFxcXCJub3F1ZXVlXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTk0Nz1zdGF0aWMgaW50IHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbihzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk2My1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo5NjQ6c3RydWN0IFFkaXNjX29wcyBwZmlmb19mYXN0X29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk2NS1cXHQuaWRcXHRcXHQ9XFx0XFxcInBmaWZvX2Zhc3RcXFwiLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9OTgyPXN0cnVjdCBRZGlzYyAqcWRpc2NfYWxsb2Moc3RydWN0IG5ldGRldl9xdWV1ZSAqZGV2X3F1ZXVlLFxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjk4MzpcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBRZGlzY19vcHMgKm9wcyxcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05ODQtXFx0XFx0XFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMDQxPXN0cnVjdCBRZGlzYyAqcWRpc2NfY3JlYXRlX2RmbHQoc3RydWN0IG5ldGRldl9xdWV1ZSAqZGV2X3F1ZXVlLFxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEwNDI6XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqb3BzLFxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNDMtXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IHBhcmVudGlkLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTA3Mj12b2lkIHFkaXNjX3Jlc2V0KHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTA3My17XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTA3NDpcXHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMgPSBxZGlzYy1cXHUwMDNlb3BzO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNzUtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMTA2PXN0YXRpYyB2b2lkIF9fcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMDcte1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExMDg6XFx0Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAgKm9wcyA9IHFkaXNjLVxcdTAwM2VvcHM7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEwOS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHFkaXNjKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEyMDc9c3RhdGljIHZvaWQgYXR0YWNoX29uZV9kZWZhdWx0X3FkaXNjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjExLVxcdHN0cnVjdCBRZGlzYyAqcWRpc2M7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTIxMjpcXHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMgPSBkZWZhdWx0X3FkaXNjX29wcztcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjEzLVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTQyND1zdGF0aWMgaW50IHFkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0MjctXFx0c3RydWN0IFFkaXNjICpxZGlzYyA9IHJ0bmxfZGVyZWZlcmVuY2UoZGV2X3F1ZXVlLVxcdTAwM2VxZGlzY19zbGVlcGluZyk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTQyODpcXHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMgPSBxZGlzYy1cXHUwMDNlb3BzO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0MjktXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dyZWQuYz05MDg9c3RhdGljIHZvaWQgZ3JlZF9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9ncmVkLmMtOTIwLVxcbm5ldC9zY2hlZC9zY2hfZ3JlZC5jOjkyMTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBncmVkX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfZ3JlZC5jLTkyMi1cXHQuaWRcXHRcXHQ9XFx0XFxcImdyZWRcXFwiLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9oZnNjLmM9MTY1OD1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBoZnNjX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaGZzYy5jLTE2NzItXFxubmV0L3NjaGVkL3NjaF9oZnNjLmM6MTY3MzpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBoZnNjX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfaGZzYy5jLTE2NzQtXFx0LmlkXFx0XFx0PSBcXFwiaGZzY1xcXCIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2hoZi5jPTcxND1zdGF0aWMgaW50IGhoZl9kdW1wX3N0YXRzKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZ25ldF9kdW1wICpkKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9oaGYuYy03MjYtXFxubmV0L3NjaGVkL3NjaF9oaGYuYzo3Mjc6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgaGhmX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzI4LVxcdC5pZFxcdFxcdD1cXHRcXFwiaGhmXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaHRiLmM9MjEzMD1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBodGJfY2xhc3Nfb3BzID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9odGIuYy0yMTQ1LVxcbm5ldC9zY2hlZC9zY2hfaHRiLmM6MjE0NjpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBodGJfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9odGIuYy0yMTQ3LVxcdC5jbF9vcHNcXHRcXHQ9XFx0XFx1MDAyNmh0Yl9jbGFzc19vcHMsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYz0xNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgaW5ncmVzc19jbGFzc19vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYy0xNTktXFxubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmM6MTYwOnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIGluZ3Jlc3NfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmMtMTYxLVxcdC5jbF9vcHNcXHRcXHRcXHQ9XFx0XFx1MDAyNmluZ3Jlc3NfY2xhc3Nfb3BzLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmM9MzI2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIGNsc2FjdF9jbGFzc19vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYy0zMzUtXFxubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmM6MzM2OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIGNsc2FjdF9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYy0zMzctXFx0LmNsX29wc1xcdFxcdFxcdD1cXHRcXHUwMDI2Y2xzYWN0X2NsYXNzX29wcyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfbXEuYz02OD1pbnQgbXFfaW5pdF9jb21tb24oc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG5uZXQvc2NoZWQvc2NoX21xLmMtNjktXFx0XFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrLFxcbm5ldC9zY2hlZC9zY2hfbXEuYzo3MDpcXHRcXHQgICBjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpxZGlzY19vcHMpXFxubmV0L3NjaGVkL3NjaF9tcS5jLTcxLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfbXEuYz0yOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgbXFfY2xhc3Nfb3BzID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9tcS5jLTMwMy1cXG5uZXQvc2NoZWQvc2NoX21xLmM6MzA0OnN0cnVjdCBRZGlzY19vcHMgbXFfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9tcS5jLTMwNS1cXHQuY2xfb3BzXFx0XFx0PSBcXHUwMDI2bXFfY2xhc3Nfb3BzLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9tcXByaW8uYz03NTg9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgbXFwcmlvX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfbXFwcmlvLmMtNzY3LVxcbm5ldC9zY2hlZC9zY2hfbXFwcmlvLmM6NzY4OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIG1xcHJpb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX21xcHJpby5jLTc2OS1cXHQuY2xfb3BzXFx0XFx0PSBcXHUwMDI2bXFwcmlvX2NsYXNzX29wcyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfbXVsdGlxLmM9MzcxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIG11bHRpcV9jbGFzc19vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX211bHRpcS5jLTM4Mi1cXG5uZXQvc2NoZWQvc2NoX211bHRpcS5jOjM4MzpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBtdWx0aXFfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYy0zODQtXFx0Lm5leHRcXHRcXHQ9XFx0TlVMTCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfbmV0ZW0uYz0xMzk0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIG5ldGVtX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfbmV0ZW0uYy0xNDAxLVxcbm5ldC9zY2hlZC9zY2hfbmV0ZW0uYzoxNDAyOnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIG5ldGVtX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfbmV0ZW0uYy0xNDAzLVxcdC5pZFxcdFxcdD1cXHRcXFwibmV0ZW1cXFwiLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9waWUuYz01NDM9c3RhdGljIHZvaWQgcGllX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTU1MC1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjU1MTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBwaWVfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9waWUuYy01NTItXFx0LmlkXFx0XFx0PSBcXFwicGllXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcGx1Zy5jPTE1OD1zdGF0aWMgaW50IHBsdWdfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3BsdWcuYy0yMDQtXFxubmV0L3NjaGVkL3NjaF9wbHVnLmM6MjA1OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHBsdWdfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9wbHVnLmMtMjA2LVxcdC5pZCAgICAgICAgICA9ICAgICAgIFxcXCJwbHVnXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcHJpby5jPTM5ND1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBwcmlvX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcHJpby5jLTQwNS1cXG5uZXQvc2NoZWQvc2NoX3ByaW8uYzo0MDY6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgcHJpb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX3ByaW8uYy00MDctXFx0Lm5leHRcXHRcXHQ9XFx0TlVMTCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcWZxLmM9MTUxMz1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBxZnFfY2xhc3Nfb3BzID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9xZnEuYy0xNTI3LVxcbm5ldC9zY2hlZC9zY2hfcWZxLmM6MTUyODpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBxZnFfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9xZnEuYy0xNTI5LVxcdC5jbF9vcHNcXHRcXHQ9IFxcdTAwMjZxZnFfY2xhc3Nfb3BzLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9yZWQuYz01NDE9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgcmVkX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcmVkLmMtNTQ4LVxcbm5ldC9zY2hlZC9zY2hfcmVkLmM6NTQ5OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHJlZF9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX3JlZC5jLTU1MC1cXHQuaWRcXHRcXHQ9XFx0XFxcInJlZFxcXCIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3NmYi5jPTY5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBzZmJfY2xhc3Nfb3BzID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9zZmIuYy03MDgtXFxubmV0L3NjaGVkL3NjaF9zZmIuYzo3MDk6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgc2ZiX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfc2ZiLmMtNzEwLVxcdC5pZFxcdFxcdD1cXHRcXFwic2ZiXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfc2ZxLmM9OTUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIHNmcV9jbGFzc19vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTk2MS1cXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjk2MjpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBzZnFfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9zZnEuYy05NjMtXFx0LmNsX29wc1xcdFxcdD1cXHRcXHUwMDI2c2ZxX2NsYXNzX29wcyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfc2ticHJpby5jPTI3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBza2JwcmlvX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfc2ticHJpby5jLTI3OS1cXG5uZXQvc2NoZWQvc2NoX3NrYnByaW8uYzoyODA6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgc2ticHJpb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX3NrYnByaW8uYy0yODEtXFx0LmNsX29wc1xcdFxcdD1cXHRcXHUwMDI2c2ticHJpb19jbGFzc19vcHMsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTI1MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgdGFwcmlvX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU0NS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI1NDY6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU0Ny1cXHQuY2xfb3BzXFx0XFx0PSBcXHUwMDI2dGFwcmlvX2NsYXNzX29wcyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGJmLmM9NjAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIHRiZl9jbGFzc19vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RiZi5jLTYwNy1cXG5uZXQvc2NoZWQvc2NoX3RiZi5jOjYwODpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyB0YmZfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF90YmYuYy02MDktXFx0Lm5leHRcXHRcXHQ9XFx0TlVMTCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGVxbC5jPTUyPXN0cnVjdCB0ZXFsX21hc3RlciB7XFxubmV0L3NjaGVkL3NjaF90ZXFsLmM6NTM6XFx0c3RydWN0IFFkaXNjX29wcyBxb3BzO1xcbm5ldC9zY2hlZC9zY2hfdGVxbC5jLTU0LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RlcWwuYz00OTA9c3RhdGljIF9faW5pdCB2b2lkIHRlcWxfbWFzdGVyX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RlcWwuYy00OTItXFx0c3RydWN0IHRlcWxfbWFzdGVyICptYXN0ZXIgPSBuZXRkZXZfcHJpdihkZXYpO1xcbm5ldC9zY2hlZC9zY2hfdGVxbC5jOjQ5MzpcXHRzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMgPSBcXHUwMDI2bWFzdGVyLVxcdTAwM2Vxb3BzO1xcbm5ldC9zY2hlZC9zY2hfdGVxbC5jLTQ5NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDg6MzY6MTguNjExNjAyNzM2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY3OTgyMTIzODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBDYW5kaWRhdGUgQXNzZXNzbWVudDogTmV0d29yayBTY2hlZHVsZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZXMuIEkgc2VlIHRoZSBwYXRjaCB0b3VjaGVzIGEgYnVuY2ggb2YgcGFja2V0IHNjaGVkdWxlcnM6IGBzY2hfZHJyLmNgLCBgc2NoX2R1YWxwaTIuY2AsIGBzY2hfZXRzLmNgLCBgc2NoX2ZxLmNgLCBgc2NoX2ZxX3BpZS5jYCwgYHNjaF9oaGYuY2AsIGBzY2hfcGllLmNgLCBhbmQgYHNjaF9zZnEuY2AuIEknbSBnb2luZyB0byBxdWlja2x5IGdsYW5jZSBhdCB0aGUgZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZCBpbiBlYWNoIGZpbGU6IGluaXRpYWxpemF0aW9uLCBjaGFuZ2UsIGVucXVldWUsIGFuZCBkZXF1ZXVlIHJvdXRpbmVzIGFyZSBhbGwgcG90ZW50aWFsIGFyZWFzIG9mIGludGVyZXN0LlxuXG5Ob3csIHRoZSBjb3JlIG9mIHRoZSBwYXRjaCBzZWVtcyB0byBiZSBhcm91bmQgaW5wdXQgdmFsaWRhdGlvbiBhbmQgY2xhbXBpbmcgb2YgcGFyYW1ldGVycywgcGFydGljdWxhcmx5IGBxdWFudHVtYCBhbmQgYG10dWAuIFRoYXQncyBhIHJlZCBmbGFnIOKAkyB0aGVzZSBraW5kcyBvZiBjaGFuZ2VzIGNhbiBvZnRlbiByZXZlYWwgaW50ZXJlc3RpbmcgZWRnZSBjYXNlcyBpbiByZXNvdXJjZSBhbGxvY2F0aW9uIG9yIHRyYWZmaWMgc2hhcGluZyB0aGF0IGFyZSBwZXJmZWN0IGZvciBmdXp6aW5nLiBTcGVjaWZpY2FsbHk6XG5cbiogICBgc2NoX2RycmA6IFF1YW50dW0gY2xhbXAuXG4qICAgYHNjaF9kdWFscGkyYDogTXR1IGNsYW1wIGFuZCBwb3RlbnRpYWxseSByZWxhdGVkIHRvIGBjX3Byb3RlY3Rpb25gLlxuKiAgIGBzY2hfZXRzYDogUXVhbnR1bSBjbGFtcC5cbiogICBgc2NoX2ZxYDogYGlxX3JhbmdlYCBhbmQgcXVhbnR1bSBjbGFtcGluZy5cbiogICBgc2NoX2ZxX3BpZWA6IFF1YW50dW0gbWluaW11bS5cbiogICBgc2NoX2hoZmA6IFF1YW50dW0gbWluaW11bSBhbmQgY2xhbXAuXG4qICAgYHNjaF9waWVgOiBNdHUgY2xhbXAuXG4qICAgYHNjaF9zZnFgOiBRdWFudHVtIG1heCBhbmQgbWluaW11bS5cblxuU28sIHRoZSBpbXBhY3QgaXMgcHJldHR5IGRpcmVjdDogd2UncmUgdGFsa2luZyBhYm91dCBob3cgdGhlc2Ugc2NoZWR1bGVycyAqYmVoYXZlKiBkdXJpbmcgY29uZmlndXJhdGlvbiBhbmQgcnVudGltZSwgY29uY2VybmluZyBDUFUgc3RhbGxzLCBkcm9wcywgb3Igb3RoZXIgbG9naWMgcmVsYXRlZCBwcm9ibGVtcy4gVGhhdCdzIGdvb2Q7IGZ1bmN0aW9uYWwgY2hhbmdlcyBhcmUgb2Z0ZW4gaW50ZXJlc3RpbmcuXG5cbkFyZSB0aGUgY2hhbmdlcyByZWFjaGFibGU/IEFic29sdXRlbHkuIFN0YW5kYXJkIGB0Y2AgbmV0bGluayBjb21tYW5kcyBwcm92aWRlIGRpcmVjdCB1c2VyLXNwYWNlIGNvbnRyb2wgb3ZlciB0aGVzZSBxZGlzY3MsIG1lYW5pbmcgSSBjYW4gZWFzaWx5IGluamVjdCBjcmFmdGVkIGlucHV0cyB2aWEgdG9vbHMgbGlrZSBgaXByb3V0ZTJgLiBUaGlzIHBhdGNoIGFmZmVjdHMgbG9naWMgdGhhdCBpcyBjb25maWd1cmVkIHZpYSBgdGNgLlxuXG5JcyB0aGlzIHdvcnRoIGZ1enppbmc/IFllcywgd2l0aG91dCBhIGRvdWJ0LiBXZSdyZSBsb29raW5nIGF0IGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBjb3JlIG5ldHdvcmsgc2NoZWR1bGVyIGxvZ2ljLCBkaXJlY3RseSBleHBvc2VkIHRocm91Z2ggdXNlci1zcGFjZSBuZXRsaW5rIGludGVyZmFjZXMuIFRoaXMgaXMgYSBwcmltZSB0YXJnZXQgZm9yIGZpbmRpbmcgYnVncywgbWVtb3J5IGNvcnJ1cHRpb25zLCBhbmQgZXZlbiBwb3RlbnRpYWwgZGVuaWFsLW9mLXNlcnZpY2UgdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gaW52YWxpZCBvciBleHRyZW1lIHBhcmFtZXRlciB2YWx1ZXMuXG5cbkZpbmFsbHksIGxldCdzIHZlcmlmeSB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMuIEFsbCB0aGUgYE5FVF9TQ0hfKmAgY29uZmlncyBkZXBlbmQgb24gYE5FVF9TQ0hFRGAgKGFuZCBgTkVUYCkuIFNvLCB0aGUgZmVhdHVyZXMgYXJlIGVuYWJsZWQgYnkgYW4gdW1icmVsbGEgZmVhdHVyZSBhbmQgSSBzaG91bGQgbm90IHdvcnJ5IGFib3V0IGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzLiBJIHdpbGwgY2hlY2sgZm9yIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBgTkVUX1NDSEVEYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkxODQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDg6MzY6MjUuNDA5ODE3Mjc4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjQ5MzUxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZW51Y29uZmlnIE5FVF9TQ0hFRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZy01LVxcbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcXG5uZXQvc2NoZWQvS2NvbmZpZy03LVxcdGJvb2wgXFxcIlFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDg6MzY6MjUuNDgyMzE3NTQzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI4NzI2NzA1NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBLZXJuZWwncyBTY2hlZHVsaW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCBmaWd1cmUgb3V0IHRoZXNlIGRlcGVuZGVuY2llcyBmb3IgYE5FVF9TQ0hfRlFfUElFYC4gUmlnaHQsIHRoZSBmaXJzdCB0aGluZyBpcyB0byBjb25maXJtIHdoYXQgdGhlIEtjb25maWcgZmlsZXMgYXJlIHRlbGxpbmcgbWUuIFNvLCBgTkVUX1NDSF9GUV9QSUVgICpkZXBlbmRzKiBvbiBgTkVUX1NDSF9QSUVgLiBNYWtlcyBzZW5zZSwgdGhleSdyZSBwcm9iYWJseSBidWlsZGluZyBvbiBlYWNoIG90aGVyLiBOb3csIEkgbmVlZCB0byBvcGVuIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUsIHdoaWNoIEkga25vdyBpcyBpbiBgbmV0L3NjaGVkL0tjb25maWdgLiBUaW1lIHRvIGdldCBhIGNsb3NlIGxvb2sgYXQgdGhvc2UgZW50cmllcyBhbmQgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLiBHb3R0YSBtYWtlIHN1cmUgSSdtIGNsZWFyIG9uIGFsbCB0aGUgb3RoZXIgb3B0aW9uIGRlcGVuZGVuY2llcyBhbmQgaW50ZXJhY3Rpb25zIHdpdGhpbiB0aGF0IHNlY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjI2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDg6MzY6MjguMzU0OTkwODQ3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDE3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMTA6XFx0XFxuIDExMTpcXHRjb25maWcgTkVUX1NDSF9TRlFcXG4gMTEyOlxcdFxcdHRyaXN0YXRlIFxcXCJTdG9jaGFzdGljIEZhaXJuZXNzIFF1ZXVlaW5nIChTRlEpXFxcIlxcbiAxMTM6XFx0XFx0aGVscFxcbiAxMTQ6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgU3RvY2hhc3RpYyBGYWlybmVzcyBRdWV1ZWluZyAoU0ZRKVxcbiAxMTU6XFx0XFx0ICBwYWNrZXQgc2NoZWR1bGluZyBhbGdvcml0aG0uXFxuIDExNjpcXHRcXG4gMTE3OlxcdFxcdCAgU2VlIHRoZSB0b3Agb2YgXFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF9zZnEuY1xcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gMTE4OlxcdFxcbiAxMTk6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuIDEyMDpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfc2ZxLlxcbiAxMjE6XFx0XFxuIDEyMjpcXHRjb25maWcgTkVUX1NDSF9URVFMXFxuIDEyMzpcXHRcXHR0cmlzdGF0ZSBcXFwiVHJ1ZSBMaW5rIEVxdWFsaXplciAoVEVRTClcXFwiXFxuIDEyNDpcXHRcXHRoZWxwXFxuIDEyNTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBUcnVlIExpbmsgRXF1YWxpemVyIChUTEUpIHBhY2tldFxcbiAxMjY6XFx0XFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS4gVGhpcyBxdWV1ZWluZyBkaXNjaXBsaW5lIGFsbG93cyB0aGUgY29tYmluYXRpb25cXG4gMTI3OlxcdFxcdCAgb2Ygc2V2ZXJhbCBwaHlzaWNhbCBkZXZpY2VzIGludG8gb25lIHZpcnR1YWwgZGV2aWNlLlxcbiAxMjg6XFx0XFxuIDEyOTpcXHRcXHQgIFNlZSB0aGUgdG9wIG9mIFxcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfdGVxbC5jXFx1MDAzZSBmb3IgbW9yZSBkZXRhaWxzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwODozNjoyOC4zNTUxNjczMjdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg5NzM4MjY4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgS2NvbmZpZyBlbnRyaWVzOlxuXG4qKlJldmlld2luZyBOZXR3b3JrIFNjaGVkdWxlciBDb25maWd1cmF0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgYG5ldC9zY2hlZC9LY29uZmlnYCBmaWxlIGFuZCByZWZyZXNoIG91ciBtZW1vcnkgb24gc29tZSBvZiB0aG9zZSB0cmFmZmljIHNoYXBpbmcgYW5kIHF1ZXVpbmcgZGlzY2lwbGluZXMuIEknbSB0aGlua2luZywgbGV0J3MgcXVpY2tseSBqb2cgdGhyb3VnaCB0aGUgb3RoZXIgS2NvbmZpZyBlbnRyaWVzIGxpa2UgRFJSLCBFVFMsIEZRLCBGUV9QSUUsIEhIRiwgUElFLCBhbmQgRFVBTFBJMi4gSXQncyBhbHdheXMgYmVuZWZpY2lhbCB0byBoYXZlIGEgbWVudGFsIG1hcCBvZiB3aGF0J3MgYXZhaWxhYmxlIGFuZCBob3cgdGhleSByZWxhdGUuIEkgd2FudCB0byBxdWlja2x5IGV2YWx1YXRlIHdoaWNoIG9mIHRoZXNlIG1pZ2h0IGJlIHJlbGV2YW50IGZvciBhIHByb2plY3Qgb3IgaWYgYW55dGhpbmcgaGFzIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgdGltZSBJIGxvb2tlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExOTcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA4OjM2OjMwLjI1MjU1MjYzNVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODcwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3NjaGVkL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjA1LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjA1OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMjA2OlxcdFxcbiAyMDc6XFx0Y29uZmlnIE5FVF9TQ0hfRFJSXFxuIDIwODpcXHRcXHR0cmlzdGF0ZSBcXFwiRGVmaWNpdCBSb3VuZCBSb2JpbiBzY2hlZHVsZXIgKERSUilcXFwiXFxuIDIwOTpcXHRcXHRoZWxwXFxuIDIxMDpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBEZWZpY2l0IFJvdW5kIFJvYmluIChEUlIpIHBhY2tldFxcbiAyMTE6XFx0XFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS5cXG4gMjEyOlxcdFxcbiAyMTM6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDIxNDpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHNjaF9kcnIuXFxuIDIxNTpcXHRcXG4gMjE2OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMjE3OlxcdFxcbiAyMTg6XFx0Y29uZmlnIE5FVF9TQ0hfTVFQUklPXFxuIDIxOTpcXHRcXHR0cmlzdGF0ZSBcXFwiTXVsdGktcXVldWUgcHJpb3JpdHkgc2NoZWR1bGVyIChNUVBSSU8pXFxcIlxcbiAyMjA6XFx0XFx0c2VsZWN0IE5FVF9TQ0hfTVFQUklPX0xJQlxcbiAyMjE6XFx0XFx0aGVscFxcbiAyMjI6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgTXVsdGktcXVldWUgUHJpb3JpdHkgc2NoZWR1bGVyLlxcbiAyMjM6XFx0XFx0ICBUaGlzIHNjaGVkdWxlciBhbGxvd3MgUU9TIHRvIGJlIG9mZmxvYWRlZCBvbiBOSUNzIHRoYXQgaGF2ZSBzdXBwb3J0XFxuIDIyNDpcXHRcXHQgIGZvciBvZmZsb2FkaW5nIFFPUyBzY2hlZHVsZXJzLlxcbiAyMjU6XFx0XFxuIDIyNjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbFxcbiAyMjc6XFx0XFx0ICBiZSBjYWxsZWQgc2NoX21xcHJpby5cXG4gMjI4OlxcdFxcbiAyMjk6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAyMzA6XFx0XFxuIDIzMTpcXHRjb25maWcgTkVUX1NDSF9TS0JQUklPXFxuIDIzMjpcXHRcXHR0cmlzdGF0ZSBcXFwiU0tCIHByaW9yaXR5IHF1ZXVlIHNjaGVkdWxlciAoU0tCUFJJTylcXFwiXFxuIDIzMzpcXHRcXHRoZWxwXFxuIDIzNDpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBTS0IgcHJpb3JpdHkgcXVldWVcXG4gMjM1OlxcdFxcdCAgc2NoZWR1bGVyLiBUaGlzIHNjaGVkdWxlcyBwYWNrZXRzIGFjY29yZGluZyB0byBza2ItXFx1MDAzZXByaW9yaXR5LFxcbiAyMzY6XFx0XFx0ICB3aGljaCBpcyB1c2VmdWwgZm9yIHJlcXVlc3QgcGFja2V0cyBpbiBEb1MgbWl0aWdhdGlvbiBzeXN0ZW1zIHN1Y2hcXG4gMjM3OlxcdFxcdCAgYXMgR2F0ZWtlZXBlci5cXG4gMjM4OlxcdFxcbiAyMzk6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGxcXG4gMjQwOlxcdFxcdCAgYmUgY2FsbGVkIHNjaF9za2JwcmlvLlxcbiAyNDE6XFx0XFxuIDI0MjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDI0MzpcXHRcXG4gMjQ0OlxcdGNvbmZpZyBORVRfU0NIX0NIT0tFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA4OjM2OjMwLjI1Mjc0MjMxNVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjQ5MzAyNTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBsaW5lcywgdGFpbG9yZWQgZm9yIGEgZmVsbG93IGV4cGVydDpcblxuKipEaXZpbmcgaW50byB0aGUgQ3JpdGljYWwgU2VjdGlvbiAoTGluZXMgMjk1LTQzMCkqKlxuXG5BbHJpZ2h0LCBzbywgbGV0J3MgemVybyBpbiBvbiBsaW5lcyAyOTUtNDMwLiBNeSBndXQgdGVsbHMgbWUgdGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBvZiBbaW5zZXJ0IHlvdXIgZmllbGQncyByZWxldmFudCBwcm9jZXNzL2Z1bmN0aW9uXSBpcyBsaWtlbHkgaW1wbGVtZW50ZWQuIEknbSBpbW1lZGlhdGVseSBsb29raW5nIGZvciBrZXkgaW5kaWNhdG9ycyDigJMgYW55IGNsdWVzIGFib3V0IGRhdGEgc3RydWN0dXJlcyBiZWluZyBtYW5pcHVsYXRlZCwgYW55IG9idmlvdXMgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIHBvdGVudGlhbCBwb2ludHMgb2YgZmFpbHVyZS4uLiB5b3Uga25vdyB0aGUgZHJpbGwuIEdpdmVuIHRoZSBsZW5ndGggb2YgdGhpcyBzZWN0aW9uLCBJJ20gZXhwZWN0aW5nIHNvbWUgbGV2ZWwgb2YgY29tcGxleGl0eS4gSSdtIGZvY3VzaW5nIG9uIHRoZSBhbGdvcml0aG1pYyBmbG93LiBBcmUgdGhleSBpbXBsZW1lbnRpbmcgYSBjbGFzc2ljIGFsZ29yaXRobSwgb3IgaXMgdGhlcmUgYSBjdXN0b20gc29sdXRpb24gaW4gcGxheT8gV2hhdCBhcmUgdGhlIHRyYWRlb2ZmcyB0aGV5J3ZlIG1hZGU/IEhvdyB3ZWxsIGRvIHRoZXNlIHRyYWRlb2ZmcyBhbGlnbiB3aXRoIGVzdGFibGlzaGVkIGJlc3QgcHJhY3RpY2VzIGluIFt5b3VyIGZpZWxkXT8gSSdtIHNjYW5uaW5nIGZvciBhbnkgc3VidGxlIGluY29uc2lzdGVuY2llcyBpbiB2YXJpYWJsZSBuYW1pbmcgb3IgY29tbWVudHM7IHRoZXNlIG9mdGVuIHRlbGwgYSBzdG9yeSBhYm91dCB0aGUgZXZvbHV0aW9uIG9mIHRoZSBjb2RlLiBJcyB0aGUgY29kZSBtYWludGFpbmFibGUsIG9yIGhhcyBpdCBiZWNvbWUgYSBiZWhlbW90aCB0byBiZSB0YW1lZC4gVGhlIGdvYWwgaGVyZSBpcyB0byBlc3RhYmxpc2ggYSBjbGVhciBtZW50YWwgbWFwIG9mIHdoYXQncyBoYXBwZW5pbmcuIEFuZCBpbXBvcnRhbnRseSwgdG8gbG9vayBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCBuZWVkIG15IGZvY3VzZWQgYXR0ZW50aW9uIGluIHRoZSBwcm9qZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjAwNCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDg6MzY6MzIuNTAyMDQ5Mjc3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NzU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyOTUsXG4gIFwiTGluZUNvdW50XCI6IDYwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyOTU6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBzY2hfY2FrZS5cXG4gMjk2OlxcdFxcbiAyOTc6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAyOTg6XFx0XFxuIDI5OTpcXHRjb25maWcgTkVUX1NDSF9GUVxcbiAzMDA6XFx0XFx0dHJpc3RhdGUgXFxcIkZhaXIgUXVldWVcXFwiXFxuIDMwMTpcXHRcXHRoZWxwXFxuIDMwMjpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBGUSBwYWNrZXQgc2NoZWR1bGluZyBhbGdvcml0aG0uXFxuIDMwMzpcXHRcXG4gMzA0OlxcdFxcdCAgRlEgZG9lcyBmbG93IHNlcGFyYXRpb24sIGFuZCBpcyBhYmxlIHRvIHJlc3BlY3QgcGFjaW5nIHJlcXVpcmVtZW50c1xcbiAzMDU6XFx0XFx0ICBzZXQgYnkgVENQIHN0YWNrIGludG8gc2stXFx1MDAzZXNrX3BhY2luZ19yYXRlIChmb3IgbG9jYWxseSBnZW5lcmF0ZWRcXG4gMzA2OlxcdFxcdCAgdHJhZmZpYylcXG4gMzA3OlxcdFxcbiAzMDg6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDMwOTpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHNjaF9mcS5cXG4gMzEwOlxcdFxcbiAzMTE6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAzMTI6XFx0XFxuIDMxMzpcXHRjb25maWcgTkVUX1NDSF9ISEZcXG4gMzE0OlxcdFxcdHRyaXN0YXRlIFxcXCJIZWF2eS1IaXR0ZXIgRmlsdGVyIChISEYpXFxcIlxcbiAzMTU6XFx0XFx0aGVscFxcbiAzMTY6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgSGVhdnktSGl0dGVyIEZpbHRlciAoSEhGKVxcbiAzMTc6XFx0XFx0ICBwYWNrZXQgc2NoZWR1bGluZyBhbGdvcml0aG0uXFxuIDMxODpcXHRcXG4gMzE5OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAzMjA6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBzY2hfaGhmLlxcbiAzMjE6XFx0XFxuIDMyMjpcXHRjb25maWcgTkVUX1NDSF9QSUVcXG4gMzIzOlxcdFxcdHRyaXN0YXRlIFxcXCJQcm9wb3J0aW9uYWwgSW50ZWdyYWwgY29udHJvbGxlciBFbmhhbmNlZCAoUElFKSBzY2hlZHVsZXJcXFwiXFxuIDMyNDpcXHRcXHRoZWxwXFxuIDMyNTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBQcm9wb3J0aW9uYWwgSW50ZWdyYWwgY29udHJvbGxlclxcbiAzMjY6XFx0XFx0ICBFbmhhbmNlZCBzY2hlZHVsZXIgcGFja2V0IHNjaGVkdWxpbmcgYWxnb3JpdGhtLlxcbiAzMjc6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjODAzM1xcbiAzMjg6XFx0XFxuIDMyOTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMzMwOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgc2NoX3BpZS5cXG4gMzMxOlxcdFxcbiAzMzI6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAzMzM6XFx0XFxuIDMzNDpcXHRjb25maWcgTkVUX1NDSF9GUV9QSUVcXG4gMzM1OlxcdFxcdGRlcGVuZHMgb24gTkVUX1NDSF9QSUVcXG4gMzM2OlxcdFxcdHRyaXN0YXRlIFxcXCJGbG93IFF1ZXVlIFByb3BvcnRpb25hbCBJbnRlZ3JhbCBjb250cm9sbGVyIEVuaGFuY2VkIChGUS1QSUUpXFxcIlxcbiAzMzc6XFx0XFx0aGVscFxcbiAzMzg6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgRmxvdyBRdWV1ZSBQcm9wb3J0aW9uYWwgSW50ZWdyYWxcXG4gMzM5OlxcdFxcdCAgY29udHJvbGxlciBFbmhhbmNlZCAoRlEtUElFKSBwYWNrZXQgc2NoZWR1bGluZyBhbGdvcml0aG0uXFxuIDM0MDpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM4MDMzXFxuIDM0MTpcXHRcXG4gMzQyOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAzNDM6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBzY2hfZnFfcGllLlxcbiAzNDQ6XFx0XFxuIDM0NTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDM0NjpcXHRcXG4gMzQ3OlxcdGNvbmZpZyBORVRfU0NIX0lOR1JFU1NcXG4gMzQ4OlxcdFxcdHRyaXN0YXRlIFxcXCJJbmdyZXNzL2NsYXNzaWZpZXItYWN0aW9uIFFkaXNjXFxcIlxcbiAzNDk6XFx0XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbiAzNTA6XFx0XFx0c2VsZWN0IE5FVF9YR1JFU1NcXG4gMzUxOlxcdFxcdGhlbHBcXG4gMzUyOlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgY2xhc3NpZmllcnMgZm9yIGluY29taW5nIGFuZC9vciBvdXRnb2luZ1xcbiAzNTM6XFx0XFx0ICBwYWNrZXRzLiBUaGlzIHFkaXNjIGRvZXNuJ3QgZG8gYW55dGhpbmcgZWxzZSBiZXNpZGVzIHJ1bm5pbmcgY2xhc3NpZmllcnMsXFxuIDM1NDpcXHRcXHQgIHdoaWNoIGNhbiBhbHNvIGhhdmUgYWN0aW9ucyBhdHRhY2hlZCB0byB0aGVtLiBJbiBjYXNlIG9mIG91dGdvaW5nIHBhY2tldHMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA4OjM2OjMyLjUwMjIzMjQ1N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNTkyOTk1MzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCByZXF1ZXN0LCBmb3JtYXR0ZWQgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIENvZGViYXNlKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIFRoZSB0YXNrIGF0IGhhbmQgY2xlYXJseSBpbnZvbHZlcyBhIHNwZWNpZmljIHNlY3Rpb24gb2YgdGhlIGNvZGUsIGFuZCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBhcmVhLiBGb2N1c2luZyBvbiBsaW5lcyAzODUgdGhyb3VnaCA0MzAgaXMgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQuIFRoaXMgcGFydGljdWxhciBzZWdtZW50IGxpa2VseSBob2xkcyB0aGUga2V5IHRvIGFkZHJlc3NpbmcgdGhlIGN1cnJlbnQgcHJvYmxlbSBvciB1bmRlcnN0YW5kaW5nIHRoZSByZWxldmFudCBmdW5jdGlvbmFsaXR5LiBJdCdzIGEgdGFyZ2V0ZWQgYXBwcm9hY2gsIGhvcGVmdWxseSBhdm9pZGluZyB1bm5lY2Vzc2FyeSBzY2FubmluZyBvZiB0aGUgZW50aXJlIG1vZHVsZS4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzIyMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDg6MzY6MzQuMDk1MjMxODI3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjc1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzODUsXG4gIFwiTGluZUNvdW50XCI6IDQ1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzODU6XFx0XFxuIDM4NjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gMzg3OlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF9wbHVnLlxcbiAzODg6XFx0XFxuIDM4OTpcXHRjb25maWcgTkVUX1NDSF9FVFNcXG4gMzkwOlxcdFxcdHRyaXN0YXRlIFxcXCJFbmhhbmNlZCB0cmFuc21pc3Npb24gc2VsZWN0aW9uIHNjaGVkdWxlciAoRVRTKVxcXCJcXG4gMzkxOlxcdFxcdGhlbHBcXG4gMzkyOlxcdCAgICAgICAgICBUaGUgRW5oYW5jZWQgVHJhbnNtaXNzaW9uIFNlbGVjdGlvbiBzY2hlZHVsZXIgaXMgYSBjbGFzc2Z1bFxcbiAzOTM6XFx0ICAgICAgICAgIHF1ZXVpbmcgZGlzY2lwbGluZSB0aGF0IG1lcmdlcyBmdW5jdGlvbmFsaXR5IG9mIFBSSU8gYW5kIERSUlxcbiAzOTQ6XFx0ICAgICAgICAgIHFkaXNjcyBpbiBvbmUgc2NoZWR1bGVyLiBFVFMgbWFrZXMgaXQgZWFzeSB0byBjb25maWd1cmUgYSBzZXQgb2ZcXG4gMzk1OlxcdCAgICAgICAgICBzdHJpY3QgYW5kIGJhbmR3aWR0aC1zaGFyaW5nIGJhbmRzIHRvIGltcGxlbWVudCB0aGUgdHJhbnNtaXNzaW9uXFxuIDM5NjpcXHQgICAgICAgICAgc2VsZWN0aW9uIGRlc2NyaWJlZCBpbiA4MDIuMVFhei5cXG4gMzk3OlxcdFxcbiAzOTg6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgRVRTIHBhY2tldCBzY2hlZHVsaW5nXFxuIDM5OTpcXHRcXHQgIGFsZ29yaXRobS5cXG4gNDAwOlxcdFxcbiA0MDE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDQwMjpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHNjaF9ldHMuXFxuIDQwMzpcXHRcXG4gNDA0OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gNDA1OlxcdFxcbiA0MDY6XFx0Y29uZmlnIE5FVF9TQ0hfQlBGXFxuIDQwNzpcXHRcXHRib29sIFxcXCJCUEYtYmFzZWQgUWRpc2NcXFwiXFxuIDQwODpcXHRcXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMIFxcdTAwMjZcXHUwMDI2IEJQRl9KSVQgXFx1MDAyNlxcdTAwMjYgREVCVUdfSU5GT19CVEZcXG4gNDA5OlxcdFxcdGhlbHBcXG4gNDEwOlxcdFxcdCAgVGhpcyBvcHRpb24gYWxsb3dzIEJQRi1iYXNlZCBxdWV1ZWluZyBkaXNpcGxpbmVzLiBXaXRoIEJQRiBzdHJ1Y3Rfb3BzLFxcbiA0MTE6XFx0XFx0ICB1c2VycyBjYW4gaW1wbGVtZW50IHN1cHBvcnRlZCBvcGVyYXRvcnMgaW4gUWRpc2Nfb3BzIHVzaW5nIEJQRiBwcm9ncmFtcy5cXG4gNDEyOlxcdFxcdCAgVGhlIHF1ZXVlIGhvbGRpbmcgc2tiIGNhbiBiZSBidWlsdCB3aXRoIEJQRiBtYXBzIG9yIGdyYXBocy5cXG4gNDEzOlxcdFxcbiA0MTQ6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBCUEYtYmFzZWQgUWRpc2MuXFxuIDQxNTpcXHRcXG4gNDE2OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gNDE3OlxcdFxcbiA0MTg6XFx0Y29uZmlnIE5FVF9TQ0hfRFVBTFBJMlxcbiA0MTk6XFx0XFx0dHJpc3RhdGUgXFxcIkR1YWwgUXVldWUgUEkgU3F1YXJlIChEVUFMUEkyKSBzY2hlZHVsZXJcXFwiXFxuIDQyMDpcXHRcXHRoZWxwXFxuIDQyMTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBEdWFsIFF1ZXVlIFByb3BvcnRpb25hbCBJbnRlZ3JhbFxcbiA0MjI6XFx0XFx0ICBDb250cm9sbGVyIEltcHJvdmVkIHdpdGggYSBTcXVhcmUgc2NoZWR1bGluZyBhbGdvcml0aG0uXFxuIDQyMzpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM5MzMyXFxuIDQyNDpcXHRcXG4gNDI1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiA0MjY6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBzY2hfZHVhbHBpMi5cXG4gNDI3OlxcdFxcbiA0Mjg6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiA0Mjk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA4OjM2OjM0LjA5NTM3MDg1N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDgyODk0NTY3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1cyBTeW1ib2wgQW5hbHlzaXMgYW5kIENvbmZpZ3VyYXRpb24gUmV2aWV3KipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGZvY3VzIHN5bWJvbHMuIExvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIGEgc2V0IG9mIG1vZGlmaWVkIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHF1ZXVpbmcgZGlzY2lwbGluZXMgd2l0aGluIHRoZSBuZXR3b3JrIHNjaGVkdWxlcjogYHBpZV9kcm9wX2Vhcmx5YCBpbiBgc2NoX3BpZS5jYCwgYGRycl9jaGFuZ2VfY2xhc3NgIGluIGBzY2hfZHJyLmNgLCBhbmQgYSBmZXcgZnJvbSBgc2NoX2V0cy5jYCAoYGV0c19xdWFudHVtX3BhcnNlYCwgYGV0c19xZGlzY19jaGFuZ2VgKSwgYWxvbmcgd2l0aCBjaGFuZ2VzIGluIGBzY2hfZnEuY2AgKGBmcV9jaGFuZ2VgLCBgZnFfaW5pdGApLCBgc2NoX2ZxX3BpZS5jYCAoYGZxX3BpZV9jaGFuZ2VgKSwgYHNjaF9oaGYuY2AgKGBoaGZfY2hhbmdlYCwgYGhoZl9pbml0YCksIGBzY2hfc2ZxLmNgIChgc2ZxX2NoYW5nZWApLCBhbmQgZmluYWxseSB0aGUgYHNjaF9kdWFscGkyLmNgIHNldCBpbmNsdWRpbmcgYGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbmAsIGBkdWFscGkyX2luaXRgLCBhbmQgYGR1YWxwaTJfY2hhbmdlYC5cblxuTm93LCBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgaW4gdGhlc2UgZmlsZXMgdGhhdCBtaWdodCBuZWVkIGZ1cnRoZXIgc2NydXRpbnksIG9yIGlmIHRoZXNlIGlkZW50aWZpZWQgZnVuY3Rpb25zIGFyZSBpbmxpbmVkIG9yIGhhdmUgZGlzdGluY3Qgc3ltYm9scy4gIFNpbmNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW52b2x2ZWQgaW4gb3BlcmF0aW9ucyBsaWtlIGBjaGFuZ2VgIG9yIGBpbml0YCBhbmQgdGhleSBhcmUgbGlrZWx5IGJlaW5nIHJlZmVyZW5jZWQgdmlhIGZ1bmN0aW9uIHBvaW50ZXJzIGluIHN0cnVjdHVyZXMgbGlrZSBgUWRpc2Nfb3BzYCBhbmQgYFFkaXNjX2NsYXNzX29wc2AsIEkgY2FuIGFzc3VtZSB0aGVpciBhZGRyZXNzZXMgYXJlIGJlaW5nIHRha2VuLCB3aGljaCB3b3VsZCBwcmV2ZW50IHRoZSBjb21waWxlciBmcm9tIGlubGluaW5nIHRoZW0uIFRoYXQncyBnb29kOyB0aGlzIGNvbmZpcm1zIHRoZXkncmUgZGlzdGluY3Qgc3ltYm9scyBhbmQgd2FycmFudCBzcGVjaWZpYyBhdHRlbnRpb24uXG5cbkFscmlnaHQsIHRpbWUgdG8gY3JlYXRlIGEgZGVmaW5pdGl2ZSBsaXN0IG9mIHRoZSByZWxldmFudCBub24taG90LXBhdGggZm9jdXMgc3ltYm9scy4gSSd2ZSBnb3Q6IGBkcnJfY2hhbmdlX2NsYXNzYCwgYGV0c19xZGlzY19jaGFuZ2VgLCBgZnFfY2hhbmdlYCwgYGZxX2luaXRgLCBgZnFfcGllX2NoYW5nZWAsIGBoaGZfY2hhbmdlYCwgYGhoZl9pbml0YCwgYHNmcV9jaGFuZ2VgLCBhbmQgYHBpZV9kcm9wX2Vhcmx5YC5cblxuTmV4dCwgSSBoYXZlIHRvIGVuc3VyZSB0aGUgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9ucyBhcmUgY29ycmVjdC4gTGV0J3Mgc2VlLi4uICBgTkVUX1NDSEVEYCwgYE5FVF9TQ0hfRFJSYCwgYE5FVF9TQ0hfRFVBTFBJMmAsIGBORVRfU0NIX0VUU2AsIGBORVRfU0NIX0ZRYCwgYE5FVF9TQ0hfRlFfUElFYCwgYE5FVF9TQ0hfSEhGYCwgYE5FVF9TQ0hfUElFYCwgYE5FVF9TQ0hfU0ZRYC4gIE9rYXksIGFsbCBwcmVzZW50LCBhbGwgY29ycmVjdGx5IHdpdGhvdXQgYENPTkZJR19gIHByZWZpeC5cblxuRG91YmxlLWNoZWNraW5nIHRoZSBXb3J0aEZ1enppbmcgYXR0cmlidXRlIC0gWWVzLCB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRvIGZ1enouIFRoZXNlIGNoYW5nZXMgdG91Y2ggY29yZSB0cmFmZmljIGNvbnRyb2wgcWRpc2MgcXVldWUgcGFyYW1ldGVycywgc3BlY2lmaWNhbGx5IHF1YW50dW0gYW5kIE1UVSBpbnB1dHMsIGFuZCBhZmZlY3QgZWlnaHQgZGlmZmVyZW50IG5ldHdvcmsgc2NoZWR1bGVycyAoYHNjaF9kcnJgLCBgc2NoX2R1YWxwaTJgLCBgc2NoX2V0c2AsIGBzY2hfZnFgLCBgc2NoX2ZxX3BpZWAsIGBzY2hfaGhmYCwgYHNjaF9waWVgLCBgc2NoX3NmcWApIGNvbmZpZ3VyZWQgdmlhIG5ldGxpbmsuICBUaGVzZSBhcmUgY3JpdGljYWwgYXJlYXMgZm9yIG1haW50YWluaW5nIG5ldHdvcmsgc3RhYmlsaXR5LCBhbmQgdGhpcyBjbGVhcmx5IGluZGljYXRlcyBhIG5lZWQgdG8gdmFsaWRhdGUgdGhlIGlucHV0IGhhbmRsaW5nIGFuZCBib3VuZHMuXG5cbk5vdywgbGV0J3MgcHJlcGFyZSB0aGUgYHNldC1yZXN1bHRzYCBjYWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDA4NiwiT3V0cHV0VG9rZW5zIjoyNDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3ODQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwODozNjo0NC45MjQzMTkwMjdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMwNDU5NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9EUlJcIixcbiAgICBcIk5FVF9TQ0hfRFVBTFBJMlwiLFxuICAgIFwiTkVUX1NDSF9FVFNcIixcbiAgICBcIk5FVF9TQ0hfRlFcIixcbiAgICBcIk5FVF9TQ0hfRlFfUElFXCIsXG4gICAgXCJORVRfU0NIX0hIRlwiLFxuICAgIFwiTkVUX1NDSF9QSUVcIixcbiAgICBcIk5FVF9TQ0hfU0ZRXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHJyX2NoYW5nZV9jbGFzc1wiLFxuICAgIFwiZXRzX3FkaXNjX2NoYW5nZVwiLFxuICAgIFwiZnFfY2hhbmdlXCIsXG4gICAgXCJmcV9pbml0XCIsXG4gICAgXCJmcV9waWVfY2hhbmdlXCIsXG4gICAgXCJoaGZfY2hhbmdlXCIsXG4gICAgXCJoaGZfaW5pdFwiLFxuICAgIFwic2ZxX2NoYW5nZVwiLFxuICAgIFwicGllX2Ryb3BfZWFybHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBhbmQgY2xhbXBpbmcgZm9yIE1UVSBhbmQgcXVhbnR1bSBib3VuZHMgYWNyb3NzIG11bHRpcGxlIHRyYWZmaWMgY29udHJvbCBzY2hlZHVsZXJzIChEUlIsIERVQUxQSTIsIEVUUywgRlEsIEZRLVBJRSwgSEhGLCBQSUUsIGFuZCBTRlEpLiBUaGVzZSBwYWNrZXQgc2NoZWR1bGVycyBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgY29uZmlndXJhYmxlIHZpYSBydG5ldGxpbmsuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfU0NIX0RSUlwiLFxuICAgIFwiTkVUX1NDSF9EVUFMUEkyXCIsXG4gICAgXCJORVRfU0NIX0VUU1wiLFxuICAgIFwiTkVUX1NDSF9GUVwiLFxuICAgIFwiTkVUX1NDSF9GUV9QSUVcIixcbiAgICBcIk5FVF9TQ0hfSEhGXCIsXG4gICAgXCJORVRfU0NIX1BJRVwiLFxuICAgIFwiTkVUX1NDSF9TRlFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcnJfY2hhbmdlX2NsYXNzXCIsXG4gICAgXCJldHNfcWRpc2NfY2hhbmdlXCIsXG4gICAgXCJmcV9jaGFuZ2VcIixcbiAgICBcImZxX2luaXRcIixcbiAgICBcImZxX3BpZV9jaGFuZ2VcIixcbiAgICBcImhoZl9jaGFuZ2VcIixcbiAgICBcImhoZl9pbml0XCIsXG4gICAgXCJzZnFfY2hhbmdlXCIsXG4gICAgXCJwaWVfZHJvcF9lYXJseVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHBhcmFtZXRlciB2YWxpZGF0aW9uIGFuZCBjbGFtcGluZyBmb3IgTVRVIGFuZCBxdWFudHVtIGJvdW5kcyBhY3Jvc3MgbXVsdGlwbGUgdHJhZmZpYyBjb250cm9sIHNjaGVkdWxlcnMgKERSUiwgRFVBTFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgYW5kIFNGUSkuIFRoZXNlIHBhY2tldCBzY2hlZHVsZXJzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBjb25maWd1cmFibGUgdmlhIHJ0bmV0bGluay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDg6MzY6NDUuMDQ3Mzc2MzM4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjY4Nzk5MTI1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA4OjM2OjQ1LjA0ODM0MzE2N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI2Njg3MDIwNjc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXN0cmljdHMgYW5kIGNsYW1wcyBxdWFudHVtIGFuZCBNVFUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGluIHNldmVyYWwgbmV0L3NjaGVkIHFkaXNjIGltcGxlbWVudGF0aW9ucyAoc2NoX2Ryciwgc2NoX2R1YWxwaTIsIHNjaF9ldHMsIHNjaF9mcSwgc2NoX2ZxX3BpZSwgc2NoX2hoZiwgc2NoX3BpZSwgc2NoX3NmcSkgdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93cyBvciBkaXZpc2lvbi1ieS16ZXJvL2RlZ2VuZXJhdGUgc2NoZWR1bGluZyBzdGF0ZXMuIEFsbCB0b3VjaGVkIHZhcmlhYmxlcyBhcmUgcGxhaW4gc2NhbGFyIGludGVnZXJzICh1MzIvczMyKSB0aGF0IGFyZSBmdWxseSBpbml0aWFsaXplZCBhdCB0aGUgcG9pbnQgb2YgZGVmaW5pdGlvbi9hc3NpZ25tZW50LiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmUgcGFkZGluZywgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIHZhcmlhYmxlcywgb3Iga2VybmVsLXRvLXVzZXIgY29weSBvcGVyYXRpb25zLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gZnV6emluZy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiYmVhZjU5M2Y1ZGM0ZTVhOTBkOGRjODk4Y2U1ODBiZDVlMTAyMjUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMjkgMDg6MzU6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2Ryci5jIGIvbmV0L3NjaGVkL3NjaF9kcnIuY1xuaW5kZXggOTFiMWVmODI0YWZhZi4uODYyMWQwNTdlZGQ5ZiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZHJyLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZHJyLmNcbkBAIC04Miw4ICs4Miw5IEBAIHN0YXRpYyBpbnQgZHJyX2NoYW5nZV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQsIHUzMiBwYXJlbnRpZCxcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiU3BlY2lmaWVkIERSUiBxdWFudHVtIGNhbm5vdCBiZSB6ZXJvXCIpO1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHR9XG4rXHRcdHF1YW50dW0gPSBjbGFtcF90KHUzMiwgcXVhbnR1bSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHR9IGVsc2Vcbi1cdFx0cXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0XHRxdWFudHVtID0gY2xhbXBfdCh1MzIsICh1MzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuIFx0aWYgKGNsICE9IE5VTEwpIHtcbiBcdFx0aWYgKHRjYVtUQ0FfUkFURV0pIHtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5pbmRleCA0ZjY3OGQ0ZmYxMGVjLi40OTQ3ZGVmN2M0OWVmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5AQCAtMjA4LDkgKzIwOCwxMSBAQCBzdGF0aWMgdm9pZCBkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxKVxuIHN0YXRpYyB2b2lkIGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbihzdHJ1Y3QgUWRpc2MgKnNjaCxcbiBcdFx0XHRcdFx0ICAgc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgdTMyIHdjKVxuIHtcbitcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbitcbiBcdHEtXHUwMDNlY19wcm90ZWN0aW9uX3djID0gd2M7XG4gXHRxLVx1MDAzZWNfcHJvdGVjdGlvbl93bCA9IE1BWF9XQyAtIHdjO1xuLVx0cS1cdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkgKlxuK1x0cS1cdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpbXR1ICpcbiBcdFx0KChpbnQpcS1cdTAwM2VjX3Byb3RlY3Rpb25fd2MgLSAoaW50KXEtXHUwMDNlY19wcm90ZWN0aW9uX3dsKTtcbiBcdGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHEpO1xuIH1cbkBAIC0yODUsOCArMjg3LDkgQEAgc3RhdGljIGJvb2wgbXVzdF9kcm9wKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxuIFx0dTY0IGxvY2FsX2xfcHJvYjtcbiBcdGJvb2wgb3ZlcmxvYWQ7XG4gXHR1MzIgcHJvYjtcbitcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcbi1cdGlmIChzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgXHUwMDNjIDIgKiBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSlcbitcdGlmIChzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgXHUwMDNjIDIgKiBtdHUpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdHByb2IgPSBSRUFEX09OQ0UocS1cdTAwM2VwaTJfcHJvYik7XG5AQCAtNzEyLDcgKzcxNSw4IEBAIHN0YXRpYyB1MzIgZ2V0X21lbW9yeV9saW1pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxpbWl0KVxuIFx0LyogQXBwbHkgcnVsZSBvZiB0aHVtYiwgaS5lLiwgZG91YmxpbmcgdGhlIHBhY2tldCBsZW5ndGgsXG4gXHQgKiB0byBmdXJ0aGVyIGluY2x1ZGUgcGVyIHBhY2tldCBvdmVyaGVhZCBpbiBtZW1vcnlfbGltaXQuXG4gXHQgKi9cbi1cdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpKTtcbitcdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSxcbitcdFx0XHRcdFx0XHQgICAgIDEsIDEgXHUwMDNjXHUwMDNjIDIwKSk7XG4gXG4gXHRpZiAodXBwZXJfMzJfYml0cyhtZW1saW0pKVxuIFx0XHRyZXR1cm4gVTMyX01BWDtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2V0cy5jIGIvbmV0L3NjaGVkL3NjaF9ldHMuY1xuaW5kZXggMjVmY2Y0MDc5ZmVjZS4uNmNjOTAyYTAzODM4NyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZXRzLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZXRzLmNcbkBAIC04MywxMSArODMsNyBAQCBzdGF0aWMgaW50IGV0c19xdWFudHVtX3BhcnNlKHN0cnVjdCBRZGlzYyAqc2NoLCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxuIFx0XHRcdCAgICAgdW5zaWduZWQgaW50ICpxdWFudHVtLFxuIFx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbi1cdCpxdWFudHVtID0gbmxhX2dldF91MzIoYXR0cik7XG4tXHRpZiAoISpxdWFudHVtKSB7XG4tXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJFVFMgcXVhbnR1bSBjYW5ub3QgYmUgemVyb1wiKTtcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHR9XG4rXHQqcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMihhdHRyKSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNjMyLDExICs2MjgsMTMgQEAgc3RhdGljIGludCBldHNfcWRpc2NfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0cmV0dXJuIGVycjtcbiBcdH1cbiBcdC8qIElmIHRoZXJlIGFyZSBtb3JlIGJhbmRzIHRoYW4gc3RyaWN0ICsgcXVhbnRhIHByb3ZpZGVkLCB0aGUgcmVtYWluaW5nXG4tXHQgKiBvbmVzIGFyZSBFVFMgd2l0aCBxdWFudHVtIG9mIE1UVS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZyB2YWx1ZXMgaGVyZS5cbitcdCAqIG9uZXMgYXJlIEVUUyB3aXRoIHF1YW50dW0gb2YgbWF4KE1UVSwgMjU2KS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZ1xuK1x0ICogdmFsdWVzIGhlcmUuXG4gXHQgKi9cbiBcdGZvciAoaSA9IG5zdHJpY3Q7IGkgXHUwMDNjIG5iYW5kczsgaSsrKSB7XG4gXHRcdGlmICghcXVhbnRhW2ldKVxuLVx0XHRcdHF1YW50YVtpXSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0XHRcdHF1YW50YVtpXSA9IGNsYW1wX3QodTMyLCAodTMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLFxuK1x0XHRcdFx0XHQgICAgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHR9XG4gXG4gXHQvKiBCZWZvcmUgY29tbWl0LCBtYWtlIHN1cmUgd2UgY2FuIGFsbG9jYXRlIGFsbCBuZXcgcWRpc2NzICovXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9mcS5jIGIvbmV0L3NjaGVkL3NjaF9mcS5jXG5pbmRleCA2MTQ0YjU2ODZmMTNmLi4zNWY5NDBiMjIwNWRmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcS5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX2ZxLmNcbkBAIC05ODAsNyArOTgwLDcgQEAgc3RhdGljIGludCBmcV9yZXNpemUoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBsb2cpXG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0bGlua19yYW5nZV92YWxpZGF0aW9uIGlxX3JhbmdlID0ge1xuLVx0Lm1heCA9IElOVF9NQVgsXG4rXHQubWF4ID0gMSBcdTAwM2NcdTAwM2MgMjAsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZnFfcG9saWN5W1RDQV9GUV9NQVggKyAxXSA9IHtcbkBAIC0xMTA2LDE0ICsxMTA2LDEwIEBAIHN0YXRpYyBpbnQgZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0ICAgbmxhX2dldF91MzIodGJbVENBX0ZRX0ZMT1dfUExJTUlUXSkpO1xuIFxuIFx0aWYgKHRiW1RDQV9GUV9RVUFOVFVNXSkge1xuLVx0XHR1MzIgcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSk7XG4rXHRcdHUzMiBxdWFudHVtID0gY2xhbXBfdCh1MzIsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSksXG4rXHRcdFx0XHQgICAgIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuLVx0XHRpZiAocXVhbnR1bSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgcXVhbnR1bSBcdTAwM2M9ICgxIFx1MDAzY1x1MDAzYyAyMCkpIHtcbi1cdFx0XHRXUklURV9PTkNFKHEtXHUwMDNlcXVhbnR1bSwgcXVhbnR1bSk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJpbnZhbGlkIHF1YW50dW1cIik7XG4tXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0fVxuK1x0XHRXUklURV9PTkNFKHEtXHUwMDNlcXVhbnR1bSwgcXVhbnR1bSk7XG4gXHR9XG4gXG4gXHRpZiAodGJbVENBX0ZRX0lOSVRJQUxfUVVBTlRVTV0pXG5AQCAtMTIzMiw3ICsxMjI4LDcgQEAgc3RhdGljIGludCBmcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRzY2gtXHUwMDNlbGltaXRcdFx0PSAxMDAwMDtcbiBcdHEtXHUwMDNlZmxvd19wbGltaXRcdFx0PSAxMDA7XG4gXHRtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbi1cdHEtXHUwMDNlcXVhbnR1bVx0XHQ9IG1pbl90KHUzMiwgMiAqIG10dSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuK1x0cS1cdTAwM2VxdWFudHVtXHRcdD0gY2xhbXBfdCh1MzIsIDIgKiBtdHUsIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0cS1cdTAwM2Vpbml0aWFsX3F1YW50dW1cdD0gbWluX3QodTMyLCAxMCAqIG10dSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0cS1cdTAwM2VmbG93X3JlZmlsbF9kZWxheVx0PSBtc2Vjc190b19qaWZmaWVzKDQwKTtcbiBcdHEtXHUwMDNlZmxvd19tYXhfcmF0ZVx0PSB+MFVMO1xuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnFfcGllLmMgYi9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jXG5pbmRleCBiMjdkOTU0MTg3MDdhLi41OTgyODQ3ZGY4Zjg1IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuQEAgLTM0MSw3ICszNDEsOCBAQCBzdGF0aWMgaW50IGZxX3BpZV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0XHQgICBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX0JFVEFdKSk7XG4gXG4gXHRpZiAodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSlcbi1cdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKTtcbitcdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sXG4rXHRcdFx0ICAgbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKSk7XG4gXG4gXHRpZiAodGJbVENBX0ZRX1BJRV9NRU1PUllfTElNSVRdKVxuIFx0XHRXUklURV9PTkNFKHEtXHUwMDNlbWVtb3J5X2xpbWl0LFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfaGhmLmMgYi9uZXQvc2NoZWQvc2NoX2hoZi5jXG5pbmRleCA5NmFjYWI2YThkYTAzLi5mYzcyZjgyNWZiZDkyIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9oaGYuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9oaGYuY1xuQEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgaW50IGhoZl9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0cmV0dXJuIGVycjtcbiBcbiBcdGlmICh0YltUQ0FfSEhGX1FVQU5UVU1dKVxuLVx0XHRuZXdfcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfUVVBTlRVTV0pO1xuK1x0XHRuZXdfcXVhbnR1bSA9IG1heCgyNTZVLCBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX1FVQU5UVU1dKSk7XG4gXG4gXHRpZiAodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSlcbiBcdFx0bmV3X2hoZl9ub25faGhfd2VpZ2h0ID0gbmxhX2dldF91MzIodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSk7XG5AQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdGludCBpO1xuIFxuIFx0c2NoLVx1MDAzZWxpbWl0ID0gMTAwMDtcbi1cdHEtXHUwMDNlcXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0cS1cdTAwM2VxdWFudHVtID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAyNTYsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcdGdldF9yYW5kb21fYnl0ZXMoXHUwMDI2cS1cdTAwM2VwZXJ0dXJiYXRpb24sIHNpemVvZihxLVx1MDAzZXBlcnR1cmJhdGlvbikpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2cS1cdTAwM2VuZXdfYnVja2V0cyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZxLVx1MDAzZW9sZF9idWNrZXRzKTtcbkBAIC02MjQsMTAgKzYyNCw2IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdHEtXHUwMDNlaGhmX2V2aWN0X3RpbWVvdXQgPSBIWjsgICAgICAvKiAxICBzZWMgKi9cbiBcdHEtXHUwMDNlaGhmX25vbl9oaF93ZWlnaHQgPSAyO1xuIFxuLVx0aWYgKChpbnQpcS1cdTAwM2VxdWFudHVtIFx1MDAzYz0gMCB8fFxuLVx0ICAgICh1NjQpcS1cdTAwM2VxdWFudHVtICogcS1cdTAwM2VoaGZfbm9uX2hoX3dlaWdodCBcdTAwM2UgSU5UX01BWClcbi1cdFx0cS1cdTAwM2VxdWFudHVtID0gMjU2O1xuLVxuIFx0aWYgKG9wdCkge1xuIFx0XHRpbnQgZXJyID0gaGhmX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9waWUuY1xuaW5kZXggYjQxZjJkZWYyZTJjYy4uM2I3ODYzZmZkMjg0YyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfcGllLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfcGllLmNcbkBAIC0zNSw3ICszNSw3IEBAIGJvb2wgcGllX2Ryb3BfZWFybHkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBwaWVfcGFyYW1zICpwYXJhbXMsXG4ge1xuIFx0dTY0IHJuZDtcbiBcdHU2NCBsb2NhbF9wcm9iID0gdmFycy1cdTAwM2Vwcm9iO1xuLVx0dTMyIG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0dTMyIG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuIFx0LyogSWYgdGhlcmUgaXMgc3RpbGwgYnVyc3QgYWxsb3dhbmNlIGxlZnQgc2tpcCByYW5kb20gZWFybHkgZHJvcCAqL1xuIFx0aWYgKHZhcnMtXHUwMDNlYnVyc3RfdGltZSBcdTAwM2UgMClcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3NmcS5jIGIvbmV0L3NjaGVkL3NjaF9zZnEuY1xuaW5kZXggMTg3ZDNlZDU3OGYyNi4uOGJiY2ZjOWU4NWQ5NCAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfc2ZxLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfc2ZxLmNcbkBAIC02NjAsNiArNjYwLDExIEBAIHN0YXRpYyBpbnQgc2ZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbitcdGlmIChjdGwtXHUwMDNlcXVhbnR1bSBcdTAwM2UgMSBcdTAwM2NcdTAwM2MgMjApIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJxdWFudHVtIHRvbyBsYXJnZVwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4gXHRpZiAoY3RsLVx1MDAzZXBlcnR1cmJfcGVyaW9kIFx1MDAzYyAwIHx8XG4gXHQgICAgY3RsLVx1MDAzZXBlcnR1cmJfcGVyaW9kIFx1MDAzZSBJTlRfTUFYIC8gSFopIHtcbiBcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJpbnZhbGlkIHBlcnR1cmIgcGVyaW9kXCIpO1xuQEAgLTY4OCw3ICs2OTMsNyBAQCBzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcbiBcdC8qIHVwZGF0ZSBhbmQgdmFsaWRhdGUgY29uZmlndXJhdGlvbiAqL1xuIFx0aWYgKGN0bC1cdTAwM2VxdWFudHVtKVxuLVx0XHRxdWFudHVtID0gY3RsLVx1MDAzZXF1YW50dW07XG4rXHRcdHF1YW50dW0gPSBtYXgoMjU2VSwgY3RsLVx1MDAzZXF1YW50dW0pO1xuIFx0aWYgKGN0bC1cdTAwM2VmbG93cylcbiBcdFx0bWF4Zmxvd3MgPSBtaW5fdCh1MzIsIGN0bC1cdTAwM2VmbG93cywgU0ZRX01BWF9GTE9XUyk7XG4gXHRpZiAoY3RsLVx1MDAzZWRpdmlzb3IpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA4OjM2OjQ1LjA0ODM0NTI3OFoiLCJTZXEiOjI1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjY4Njk5NDUwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBGdXp6aW5nIFNlc3Npb24gQXNzZXNzbWVudCoqXG5cbkFscmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2ggYW5kIGRlY2lkZSBpZiB3ZSBuZWVkIHRvIHNjaGVkdWxlIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gVGhlIGNoYW5nZXMgc2VlbSB0byBiZSBjb25jZW50cmF0ZWQgaW4gc2V2ZXJhbCBgbmV0L3NjaGVkYCBxZGlzYyBtb2R1bGVzLlxuXG5JdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBwcmltYXJpbHkgZm9jdXNlcyBvbiBjbGFtcGluZyB2YXJpb3VzIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycywgbGlrZSBgcXVhbnR1bWAgYW5kIGBtdHVgLCB3aXRoaW4gc3BlY2lmaWMgcmFuZ2VzLiBXZSdyZSB0YWxraW5nIGFib3V0IHRoaW5ncyBsaWtlIGBjbGFtcF90YCBjYWxscyBhbmQgYG1heGAgb3BlcmF0aW9ucyB0byBlbnN1cmUgdGhlc2UgdmFsdWVzIHN0YXkgd2l0aGluIHNlbnNpYmxlIGJvdW5kcy4gTGV0IG1lIGJyZWFrIGRvd24gd2hhdCBJJ20gc2VlaW5nOlxuXG4qICAgYHNjaF9kcnIuY2AsIGBzY2hfZHVhbHBpMi5jYCwgYHNjaF9ldHMuY2AsIGBzY2hfZnEuY2AsIGBzY2hfZnFfcGllLmNgLCBgc2NoX2hoZi5jYCwgYHNjaF9waWUuY2AsIGFuZCBgc2NoX3NmcS5jYDogQWxsIG9mIHRoZXNlIG1vZHVsZXMgYXJlIGludm9sdmVkLCBhbmQgaXQgYWxsIGJvaWxzIGRvd24gdG8gY2xhbXBpbmcgb3IgZW5zdXJpbmcgdGhhdCB2YWx1ZXMgbGlrZSBgcXVhbnR1bWAgb3IgYG10dWAgYXJlIHdpdGhpbiBzcGVjaWZpZWQgbGltaXRzLCB0eXBpY2FsbHkgYmV0d2VlbiAyNTYgYW5kIDEgXHUwMDNjXHUwMDNjIDIwLCBvciBhIHNpbWlsYXIgcmFuZ2UuXG5cbk15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGFyb3VuZCB1bmluaXRpYWxpemVkIG1lbW9yeS4gTGV0J3MgbWFrZSBzdXJlIG5vdGhpbmcncyBiZWluZyByZWFkIGZyb20gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG5vIHVuaW5pdGlhbGl6ZWQgc3RydWN0IGNvcGllcyBhcmUgZ29pbmcgdG8gdXNlcnNwYWNlLCBhbmQgdGhhdCB3ZSBkb24ndCBoYXZlIGFueSB1bmluaXRpYWxpemVkIGJ1ZmZlciB1c2FnZXMuXG5cbkZyb20gd2hhdCBJIGNhbiB0ZWxsLCB0aGUgbW9kaWZpY2F0aW9ucyBkZWFsIGV4Y2x1c2l2ZWx5IHdpdGggbnVtZXJpYyBjb25maWd1cmF0aW9ucy4gVGhlcmUgZG9uJ3Qgc2VlbSB0byBiZSBhbnkgbmV3IHN0cnVjdHMgaW50cm9kdWNlZCwgbm8gbmV3IGJ1ZmZlcnMgYWxsb2NhdGVkIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24sIGFuZCBub3RoaW5nJ3MgYmVpbmcgY29waWVkIHRvIHVzZXJzcGFjZSB3aXRob3V0IHByb3BlciBpbml0aWFsaXphdGlvbi4gVGhlIGNhbGN1bGF0aW9ucyBhcmUgYmFzaWMgYXJpdGhtZXRpYyBvciBjbGFtcGluZyBvcGVyYXRpb25zIG9uIHNjYWxhciB2YWx1ZXMuXG5cbkxldCdzIGRvdWJsZS1jaGVjayBlYWNoIGZpbGUgYW5kIGVhY2ggZnVuY3Rpb24gdG8gZW5zdXJlIG15IG1lbnRhbCBtb2RlbCBpcyBhY2N1cmF0ZTpcblxuKiAgIGBzY2hfZHJyLmNgOiBUaGUgYHF1YW50dW1gIGlzIGp1c3QgYSBgdTMyYCBwYXNzZWQgdG8gYSBkZXN0aW5hdGlvbiBgY2wtXHUwMDNlcXVhbnR1bWAuXG4qICAgYHNjaF9kdWFscGkyLmNgOiBUaGUgYG10dWAgdmFsdWUgaXMgaW5pdGlhbGl6ZWQgd2l0aCBgY2xhbXBfdGAuXG4qICAgYHNjaF9ldHMuY2A6IFdlJ3JlIGNsYW1waW5nIGFuZCBpbml0aWFsaXppbmcgYCpxdWFudHVtYC5cbiogICBgc2NoX2ZxLmNgLCBgc2NoX2ZxX3BpZS5jYDogYHF1YW50dW1gIGlzIGEgbG9jYWwgYHUzMmAgYW5kIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgY2xhbXBlZCB2YWx1ZS5cbiogICBgc2NoX2hoZi5jYDogV2UgaW5pdGlhbGl6ZSBhIGBuZXdfcXVhbnR1bWAsIHdoaWNoIGlzIHRoZW4gY2xhbXBlZC5cbiogICBgc2NoX3BpZS5jYDogVGhlIGBtdHVgIGlzIGJlaW5nIGluaXRpYWxpemVkIHdpdGggYGNsYW1wX3RgLlxuKiAgIGBzY2hfc2ZxLmNgOiBUaGUgYHF1YW50dW1gIGlzIGJlaW5nIGluaXRpYWxpemVkIHdpdGggYG1heGAuXG5cblNvLCBmcm9tIHdoYXQgSSdtIHNlZWluZywgdGhlcmUncyBubyBldmlkZW5jZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgbm8gaGVhcCBhbGxvY2F0aW9ucyB3aXRob3V0IHplcm9pbmcsIGFuZCBubyBkYXRhIGlzIGdldHRpbmcgY29waWVkIHRvIHVzZXJzcGFjZSB3aXRob3V0IHByb3BlciBpbml0aWFsaXphdGlvbi4gQW55IHBvdGVudGlhbCBpc3N1ZXMgd291bGQgbGlrZWx5IGJlIHJlbGF0ZWQgdG8gY2xhbXBpbmcgbG9naWMgb3IgYXJpdGhtZXRpYyBidWdzLCB3aGljaCBzaG91bGQgYmUgY2F1Z2h0IGJ5IHRoZSBzdGFuZGFyZCBzYW5pdGl6ZXJzIG9yIEtBU0FOL1VCU0FOLiBLTVNBTiBkb2Vzbid0IGhhdmUgYSBzcGVjaWFsIHJvbGUgaGVyZS5cblxuQWxyaWdodCwgbGV0J3MgZ28gd2l0aCB0aGF0LiBObyBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyByZXF1aXJlZC4gQ2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTM1LCJPdXRwdXRUb2tlbnMiOjE3NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwODozNzoxMS43MzUzNDM0ODFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlc3RyaWN0cyBhbmQgY2xhbXBzIHF1YW50dW0gYW5kIE1UVSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgaW4gc2V2ZXJhbCBuZXQvc2NoZWQgcWRpc2MgaW1wbGVtZW50YXRpb25zIChzY2hfZHJyLCBzY2hfZHVhbHBpMiwgc2NoX2V0cywgc2NoX2ZxLCBzY2hfZnFfcGllLCBzY2hfaGhmLCBzY2hfcGllLCBzY2hfc2ZxKSB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzIG9yIGRpdmlzaW9uLWJ5LXplcm8vZGVnZW5lcmF0ZSBzY2hlZHVsaW5nIHN0YXRlcy4gQWxsIHRvdWNoZWQgdmFyaWFibGVzIGFyZSBwbGFpbiBzY2FsYXIgaW50ZWdlcnMgKHUzMi9zMzIpIHRoYXQgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGF0IHRoZSBwb2ludCBvZiBkZWZpbml0aW9uL2Fzc2lnbm1lbnQuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZSBwYWRkaW5nLCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzLCBvciBrZXJuZWwtdG8tdXNlciBjb3B5IG9wZXJhdGlvbnMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiBmdXp6aW5nLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlc3RyaWN0cyBhbmQgY2xhbXBzIHF1YW50dW0gYW5kIE1UVSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgaW4gc2V2ZXJhbCBuZXQvc2NoZWQgcWRpc2MgaW1wbGVtZW50YXRpb25zIChzY2hfZHJyLCBzY2hfZHVhbHBpMiwgc2NoX2V0cywgc2NoX2ZxLCBzY2hfZnFfcGllLCBzY2hfaGhmLCBzY2hfcGllLCBzY2hfc2ZxKSB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzIG9yIGRpdmlzaW9uLWJ5LXplcm8vZGVnZW5lcmF0ZSBzY2hlZHVsaW5nIHN0YXRlcy4gQWxsIHRvdWNoZWQgdmFyaWFibGVzIGFyZSBwbGFpbiBzY2FsYXIgaW50ZWdlcnMgKHUzMi9zMzIpIHRoYXQgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGF0IHRoZSBwb2ludCBvZiBkZWZpbml0aW9uL2Fzc2lnbm1lbnQuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZSBwYWRkaW5nLCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzLCBvciBrZXJuZWwtdG8tdXNlciBjb3B5IG9wZXJhdGlvbnMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiBmdXp6aW5nLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjlnt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-29 08:20:05 +0000 UTC FinishedAt: 2026-08-29 08:37:14 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2188569e7e1b0bc3f3b557dc97ab7a02befc11c8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_DRR", "NET_SCH_DUALPI2", "NET_SCH_ETS", "NET_SCH_FQ", "NET_SCH_FQ_PIE", "NET_SCH_HHF", "NET_SCH_PIE", "NET_SCH_SFQ" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2188569e7e1b0bc3f3b557dc97ab7a02befc11c8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_DRR", "NET_SCH_DUALPI2", "NET_SCH_ETS", "NET_SCH_FQ", "NET_SCH_FQ_PIE", "NET_SCH_HHF", "NET_SCH_PIE", "NET_SCH_SFQ" ], "series_id": "8a9c5930-6499-439f-b86b-ee5f428b958a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "drr_change_class", "ets_qdisc_change", "fq_change", "fq_init", "fq_pie_change", "hhf_change", "hhf_init", "sfq_change", "pie_drop_early" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA4OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0RSUiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0RVQUxQSTImIzM0OywKICAgICYjMzQ7TkVUX1NDSF9FVFMmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9GUSYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0ZRX1BJRSYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0hIRiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1BJRSYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1NGUSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Rycl9jaGFuZ2VfY2xhc3MmIzM0OywKICAgICYjMzQ7ZXRzX3FkaXNjX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtmcV9jaGFuZ2UmIzM0OywKICAgICYjMzQ7ZnFfaW5pdCYjMzQ7LAogICAgJiMzNDtmcV9waWVfY2hhbmdlJiMzNDssCiAgICAmIzM0O2hoZl9jaGFuZ2UmIzM0OywKICAgICYjMzQ7aGhmX2luaXQmIzM0OywKICAgICYjMzQ7c2ZxX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtwaWVfZHJvcF9lYXJseSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlc3RyaWN0cyBhbmQgY2xhbXBzIHF1YW50dW0gYW5kIE1UVSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgaW4gc2V2ZXJhbCBuZXQvc2NoZWQgcWRpc2MgaW1wbGVtZW50YXRpb25zIChzY2hfZHJyLCBzY2hfZHVhbHBpMiwgc2NoX2V0cywgc2NoX2ZxLCBzY2hfZnFfcGllLCBzY2hfaGhmLCBzY2hfcGllLCBzY2hfc2ZxKSB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzIG9yIGRpdmlzaW9uLWJ5LXplcm8vZGVnZW5lcmF0ZSBzY2hlZHVsaW5nIHN0YXRlcy4gQWxsIHRvdWNoZWQgdmFyaWFibGVzIGFyZSBwbGFpbiBzY2FsYXIgaW50ZWdlcnMgKHUzMi9zMzIpIHRoYXQgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGF0IHRoZSBwb2ludCBvZiBkZWZpbml0aW9uL2Fzc2lnbm1lbnQuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZSBwYWRkaW5nLCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzLCBvciBrZXJuZWwtdG8tdXNlciBjb3B5IG9wZXJhdGlvbnMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBhbmQgY2xhbXBpbmcgZm9yIE1UVSBhbmQgcXVhbnR1bSBib3VuZHMgYWNyb3NzIG11bHRpcGxlIHRyYWZmaWMgY29udHJvbCBzY2hlZHVsZXJzIChEUlIsIERVQUxQSTIsIEVUUywgRlEsIEZRLVBJRSwgSEhGLCBQSUUsIGFuZCBTRlEpLiBUaGVzZSBwYWNrZXQgc2NoZWR1bGVycyBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgY29uZmlndXJhYmxlIHZpYSBydG5ldGxpbmsuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDg6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiYmVhZjU5M2Y1ZGM0ZTVhOTBkOGRjODk4Y2U1ODBiZDVlMTAyMjUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMjkgMDg6MzU6NDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9kcnIuYyBiL25ldC9zY2hlZC9zY2hfZHJyLmNcbmluZGV4IDkxYjFlZjgyNGFmYWYuLjg2MjFkMDU3ZWRkOWYgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX2Ryci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2Ryci5jXG5AQCAtODIsOCAmIzQzOzgyLDkgQEAgc3RhdGljIGludCBkcnJfY2hhbmdlX2NsYXNzKHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgY2xhc3NpZCwgdTMyIHBhcmVudGlkLFxuIFx0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCYjMzQ7U3BlY2lmaWVkIERSUiBxdWFudHVtIGNhbm5vdCBiZSB6ZXJvXCYjMzQ7KTtcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0fVxuJiM0MztcdFx0cXVhbnR1bSA9IGNsYW1wX3QodTMyLCBxdWFudHVtLCAyNTYsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcdH0gZWxzZVxuLVx0XHRxdWFudHVtID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7XG4mIzQzO1x0XHRxdWFudHVtID0gY2xhbXBfdCh1MzIsICh1MzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuIFx0aWYgKGNsICE9IE5VTEwpIHtcbiBcdFx0aWYgKHRjYVtUQ0FfUkFURV0pIHtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5pbmRleCA0ZjY3OGQ0ZmYxMGVjLi40OTQ3ZGVmN2M0OWVmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5AQCAtMjA4LDkgJiM0MzsyMDgsMTEgQEAgc3RhdGljIHZvaWQgZHVhbHBpMl9yZXNldF9jX3Byb3RlY3Rpb24oc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSlcbiBzdGF0aWMgdm9pZCBkdWFscGkyX2NhbGN1bGF0ZV9jX3Byb3RlY3Rpb24oc3RydWN0IFFkaXNjICpzY2gsXG4gXHRcdFx0XHRcdCAgIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsIHUzMiB3YylcbiB7XG4mIzQzO1x0dTMyIG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuJiM0MztcbiBcdHEtXHUwMDNlY19wcm90ZWN0aW9uX3djID0gd2M7XG4gXHRxLVx1MDAzZWNfcHJvdGVjdGlvbl93bCA9IE1BWF9XQyAtIHdjO1xuLVx0cS1cdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkgKlxuJiM0MztcdHEtXHUwMDNlY19wcm90ZWN0aW9uX2luaXQgPSAoczMyKW10dSAqXG4gXHRcdCgoaW50KXEtXHUwMDNlY19wcm90ZWN0aW9uX3djIC0gKGludClxLVx1MDAzZWNfcHJvdGVjdGlvbl93bCk7XG4gXHRkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihxKTtcbiB9XG5AQCAtMjg1LDggJiM0MzsyODcsOSBAQCBzdGF0aWMgYm9vbCBtdXN0X2Ryb3Aoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsXG4gXHR1NjQgbG9jYWxfbF9wcm9iO1xuIFx0Ym9vbCBvdmVybG9hZDtcbiBcdHUzMiBwcm9iO1xuJiM0MztcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcbi1cdGlmIChzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgXHUwMDNjIDIgKiBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSlcbiYjNDM7XHRpZiAoc2NoLVx1MDAzZXFzdGF0cy5iYWNrbG9nIFx1MDAzYyAyICogbXR1KVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4gXHRwcm9iID0gUkVBRF9PTkNFKHEtXHUwMDNlcGkyX3Byb2IpO1xuQEAgLTcxMiw3ICYjNDM7NzE1LDggQEAgc3RhdGljIHUzMiBnZXRfbWVtb3J5X2xpbWl0KHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgbGltaXQpXG4gXHQvKiBBcHBseSBydWxlIG9mIHRodW1iLCBpLmUuLCBkb3VibGluZyB0aGUgcGFja2V0IGxlbmd0aCxcbiBcdCAqIHRvIGZ1cnRoZXIgaW5jbHVkZSBwZXIgcGFja2V0IG92ZXJoZWFkIGluIG1lbW9yeV9saW1pdC5cbiBcdCAqL1xuLVx0dTY0IG1lbWxpbSA9IG11bF91MzJfdTMyKGxpbWl0LCAyICogcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkpO1xuJiM0MztcdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAxLCAxIFx1MDAzY1x1MDAzYyAyMCkpO1xuIFxuIFx0aWYgKHVwcGVyXzMyX2JpdHMobWVtbGltKSlcbiBcdFx0cmV0dXJuIFUzMl9NQVg7XG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9ldHMuYyBiL25ldC9zY2hlZC9zY2hfZXRzLmNcbmluZGV4IDI1ZmNmNDA3OWZlY2UuLjZjYzkwMmEwMzgzODcgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX2V0cy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2V0cy5jXG5AQCAtODMsMTEgJiM0Mzs4Myw3IEBAIHN0YXRpYyBpbnQgZXRzX3F1YW50dW1fcGFyc2Uoc3RydWN0IFFkaXNjICpzY2gsIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4gXHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgKnF1YW50dW0sXG4gXHRcdFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4ge1xuLVx0KnF1YW50dW0gPSBubGFfZ2V0X3UzMihhdHRyKTtcbi1cdGlmICghKnF1YW50dW0pIHtcbi1cdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtFVFMgcXVhbnR1bSBjYW5ub3QgYmUgemVyb1wmIzM0Oyk7XG4tXHRcdHJldHVybiAtRUlOVkFMO1xuLVx0fVxuJiM0MztcdCpxdWFudHVtID0gY2xhbXBfdCh1MzIsIG5sYV9nZXRfdTMyKGF0dHIpLCAyNTYsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC02MzIsMTEgJiM0Mzs2MjgsMTMgQEAgc3RhdGljIGludCBldHNfcWRpc2NfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0cmV0dXJuIGVycjtcbiBcdH1cbiBcdC8qIElmIHRoZXJlIGFyZSBtb3JlIGJhbmRzIHRoYW4gc3RyaWN0ICYjNDM7IHF1YW50YSBwcm92aWRlZCwgdGhlIHJlbWFpbmluZ1xuLVx0ICogb25lcyBhcmUgRVRTIHdpdGggcXVhbnR1bSBvZiBNVFUuIEluaXRpYWxpemUgdGhlIG1pc3NpbmcgdmFsdWVzIGhlcmUuXG4mIzQzO1x0ICogb25lcyBhcmUgRVRTIHdpdGggcXVhbnR1bSBvZiBtYXgoTVRVLCAyNTYpLiBJbml0aWFsaXplIHRoZSBtaXNzaW5nXG4mIzQzO1x0ICogdmFsdWVzIGhlcmUuXG4gXHQgKi9cbiBcdGZvciAoaSA9IG5zdHJpY3Q7IGkgXHUwMDNjIG5iYW5kczsgaSYjNDM7JiM0MzspIHtcbiBcdFx0aWYgKCFxdWFudGFbaV0pXG4tXHRcdFx0cXVhbnRhW2ldID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7XG4mIzQzO1x0XHRcdHF1YW50YVtpXSA9IGNsYW1wX3QodTMyLCAodTMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLFxuJiM0MztcdFx0XHRcdFx0ICAgIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0fVxuIFxuIFx0LyogQmVmb3JlIGNvbW1pdCwgbWFrZSBzdXJlIHdlIGNhbiBhbGxvY2F0ZSBhbGwgbmV3IHFkaXNjcyAqL1xuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnEuYyBiL25ldC9zY2hlZC9zY2hfZnEuY1xuaW5kZXggNjE0NGI1Njg2ZjEzZi4uMzVmOTQwYjIyMDVkZiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZnEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9mcS5jXG5AQCAtOTgwLDcgJiM0Mzs5ODAsNyBAQCBzdGF0aWMgaW50IGZxX3Jlc2l6ZShzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxvZylcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRsaW5rX3JhbmdlX3ZhbGlkYXRpb24gaXFfcmFuZ2UgPSB7XG4tXHQubWF4ID0gSU5UX01BWCxcbiYjNDM7XHQubWF4ID0gMSBcdTAwM2NcdTAwM2MgMjAsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZnFfcG9saWN5W1RDQV9GUV9NQVggJiM0MzsgMV0gPSB7XG5AQCAtMTEwNiwxNCAmIzQzOzExMDYsMTAgQEAgc3RhdGljIGludCBmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0XHQgICBubGFfZ2V0X3UzMih0YltUQ0FfRlFfRkxPV19QTElNSVRdKSk7XG4gXG4gXHRpZiAodGJbVENBX0ZRX1FVQU5UVU1dKSB7XG4tXHRcdHUzMiBxdWFudHVtID0gbmxhX2dldF91MzIodGJbVENBX0ZRX1FVQU5UVU1dKTtcbiYjNDM7XHRcdHUzMiBxdWFudHVtID0gY2xhbXBfdCh1MzIsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSksXG4mIzQzO1x0XHRcdFx0ICAgICAyNTYsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcbi1cdFx0aWYgKHF1YW50dW0gXHUwMDNlIDAgXHUwMDI2XHUwMDI2IHF1YW50dW0gXHUwMDNjPSAoMSBcdTAwM2NcdTAwM2MgMjApKSB7XG4tXHRcdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sIHF1YW50dW0pO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O2ludmFsaWQgcXVhbnR1bVwmIzM0Oyk7XG4tXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0fVxuJiM0MztcdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sIHF1YW50dW0pO1xuIFx0fVxuIFxuIFx0aWYgKHRiW1RDQV9GUV9JTklUSUFMX1FVQU5UVU1dKVxuQEAgLTEyMzIsNyAmIzQzOzEyMjgsNyBAQCBzdGF0aWMgaW50IGZxX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdHNjaC1cdTAwM2VsaW1pdFx0XHQ9IDEwMDAwO1xuIFx0cS1cdTAwM2VmbG93X3BsaW1pdFx0XHQ9IDEwMDtcbiBcdG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuLVx0cS1cdTAwM2VxdWFudHVtXHRcdD0gbWluX3QodTMyLCAyICogbXR1LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4mIzQzO1x0cS1cdTAwM2VxdWFudHVtXHRcdD0gY2xhbXBfdCh1MzIsIDIgKiBtdHUsIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0cS1cdTAwM2Vpbml0aWFsX3F1YW50dW1cdD0gbWluX3QodTMyLCAxMCAqIG10dSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0cS1cdTAwM2VmbG93X3JlZmlsbF9kZWxheVx0PSBtc2Vjc190b19qaWZmaWVzKDQwKTtcbiBcdHEtXHUwMDNlZmxvd19tYXhfcmF0ZVx0PSB+MFVMO1xuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnFfcGllLmMgYi9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jXG5pbmRleCBiMjdkOTU0MTg3MDdhLi41OTgyODQ3ZGY4Zjg1IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuQEAgLTM0MSw3ICYjNDM7MzQxLDggQEAgc3RhdGljIGludCBmcV9waWVfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0ICAgbmxhX2dldF91MzIodGJbVENBX0ZRX1BJRV9CRVRBXSkpO1xuIFxuIFx0aWYgKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pXG4tXHRcdFdSSVRFX09OQ0UocS1cdTAwM2VxdWFudHVtLCBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX1FVQU5UVU1dKSk7XG4mIzQzO1x0XHRXUklURV9PTkNFKHEtXHUwMDNlcXVhbnR1bSxcbiYjNDM7XHRcdFx0ICAgbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKSk7XG4gXG4gXHRpZiAodGJbVENBX0ZRX1BJRV9NRU1PUllfTElNSVRdKVxuIFx0XHRXUklURV9PTkNFKHEtXHUwMDNlbWVtb3J5X2xpbWl0LFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfaGhmLmMgYi9uZXQvc2NoZWQvc2NoX2hoZi5jXG5pbmRleCA5NmFjYWI2YThkYTAzLi5mYzcyZjgyNWZiZDkyIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9oaGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9oaGYuY1xuQEAgLTU1MSw3ICYjNDM7NTUxLDcgQEAgc3RhdGljIGludCBoaGZfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdHJldHVybiBlcnI7XG4gXG4gXHRpZiAodGJbVENBX0hIRl9RVUFOVFVNXSlcbi1cdFx0bmV3X3F1YW50dW0gPSBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX1FVQU5UVU1dKTtcbiYjNDM7XHRcdG5ld19xdWFudHVtID0gbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfUVVBTlRVTV0pKTtcbiBcbiBcdGlmICh0YltUQ0FfSEhGX05PTl9ISF9XRUlHSFRdKVxuIFx0XHRuZXdfaGhmX25vbl9oaF93ZWlnaHQgPSBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX05PTl9ISF9XRUlHSFRdKTtcbkBAIC02MTMsNyAmIzQzOzYxMyw3IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdGludCBpO1xuIFxuIFx0c2NoLVx1MDAzZWxpbWl0ID0gMTAwMDtcbi1cdHEtXHUwMDNlcXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuJiM0MztcdHEtXHUwMDNlcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHRnZXRfcmFuZG9tX2J5dGVzKFx1MDAyNnEtXHUwMDNlcGVydHVyYmF0aW9uLCBzaXplb2YocS1cdTAwM2VwZXJ0dXJiYXRpb24pKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNnEtXHUwMDNlbmV3X2J1Y2tldHMpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2cS1cdTAwM2VvbGRfYnVja2V0cyk7XG5AQCAtNjI0LDEwICYjNDM7NjI0LDYgQEAgc3RhdGljIGludCBoaGZfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0cS1cdTAwM2VoaGZfZXZpY3RfdGltZW91dCA9IEhaOyAgICAgIC8qIDEgIHNlYyAqL1xuIFx0cS1cdTAwM2VoaGZfbm9uX2hoX3dlaWdodCA9IDI7XG4gXG4tXHRpZiAoKGludClxLVx1MDAzZXF1YW50dW0gXHUwMDNjPSAwIHx8XG4tXHQgICAgKHU2NClxLVx1MDAzZXF1YW50dW0gKiBxLVx1MDAzZWhoZl9ub25faGhfd2VpZ2h0IFx1MDAzZSBJTlRfTUFYKVxuLVx0XHRxLVx1MDAzZXF1YW50dW0gPSAyNTY7XG4tXG4gXHRpZiAob3B0KSB7XG4gXHRcdGludCBlcnIgPSBoaGZfY2hhbmdlKHNjaCwgb3B0LCBleHRhY2spO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfcGllLmMgYi9uZXQvc2NoZWQvc2NoX3BpZS5jXG5pbmRleCBiNDFmMmRlZjJlMmNjLi4zYjc4NjNmZmQyODRjIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9waWUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9waWUuY1xuQEAgLTM1LDcgJiM0MzszNSw3IEBAIGJvb2wgcGllX2Ryb3BfZWFybHkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBwaWVfcGFyYW1zICpwYXJhbXMsXG4ge1xuIFx0dTY0IHJuZDtcbiBcdHU2NCBsb2NhbF9wcm9iID0gdmFycy1cdTAwM2Vwcm9iO1xuLVx0dTMyIG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuJiM0MztcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcbiBcdC8qIElmIHRoZXJlIGlzIHN0aWxsIGJ1cnN0IGFsbG93YW5jZSBsZWZ0IHNraXAgcmFuZG9tIGVhcmx5IGRyb3AgKi9cbiBcdGlmICh2YXJzLVx1MDAzZWJ1cnN0X3RpbWUgXHUwMDNlIDApXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9zZnEuYyBiL25ldC9zY2hlZC9zY2hfc2ZxLmNcbmluZGV4IDE4N2QzZWQ1NzhmMjYuLjhiYmNmYzllODVkOTQgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX3NmcS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX3NmcS5jXG5AQCAtNjYwLDYgJiM0Mzs2NjAsMTEgQEAgc3RhdGljIGludCBzZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuJiM0MztcdGlmIChjdGwtXHUwMDNlcXVhbnR1bSBcdTAwM2UgMSBcdTAwM2NcdTAwM2MgMjApIHtcbiYjNDM7XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O3F1YW50dW0gdG9vIGxhcmdlXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAoY3RsLVx1MDAzZXBlcnR1cmJfcGVyaW9kIFx1MDAzYyAwIHx8XG4gXHQgICAgY3RsLVx1MDAzZXBlcnR1cmJfcGVyaW9kIFx1MDAzZSBJTlRfTUFYIC8gSFopIHtcbiBcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCYjMzQ7aW52YWxpZCBwZXJ0dXJiIHBlcmlvZFwmIzM0Oyk7XG5AQCAtNjg4LDcgJiM0Mzs2OTMsNyBAQCBzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcbiBcdC8qIHVwZGF0ZSBhbmQgdmFsaWRhdGUgY29uZmlndXJhdGlvbiAqL1xuIFx0aWYgKGN0bC1cdTAwM2VxdWFudHVtKVxuLVx0XHRxdWFudHVtID0gY3RsLVx1MDAzZXF1YW50dW07XG4mIzQzO1x0XHRxdWFudHVtID0gbWF4KDI1NlUsIGN0bC1cdTAwM2VxdWFudHVtKTtcbiBcdGlmIChjdGwtXHUwMDNlZmxvd3MpXG4gXHRcdG1heGZsb3dzID0gbWluX3QodTMyLCBjdGwtXHUwMDNlZmxvd3MsIFNGUV9NQVhfRkxPV1MpO1xuIFx0aWYgKGN0bC1cdTAwM2VkaXZpc29yKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDg6MzU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRFJSJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRFVBTFBJMiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0VUUyYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0ZRJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRlFfUElFJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfSEhGJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfUElFJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfU0ZRJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJyX2NoYW5nZV9jbGFzcyYjMzQ7LAogICAgJiMzNDtldHNfcWRpc2NfY2hhbmdlJiMzNDssCiAgICAmIzM0O2ZxX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtmcV9pbml0JiMzNDssCiAgICAmIzM0O2ZxX3BpZV9jaGFuZ2UmIzM0OywKICAgICYjMzQ7aGhmX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtoaGZfaW5pdCYjMzQ7LAogICAgJiMzNDtzZnFfY2hhbmdlJiMzNDssCiAgICAmIzM0O3BpZV9kcm9wX2Vhcmx5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhcmFtZXRlciB2YWxpZGF0aW9uIGFuZCBjbGFtcGluZyBmb3IgTVRVIGFuZCBxdWFudHVtIGJvdW5kcyBhY3Jvc3MgbXVsdGlwbGUgdHJhZmZpYyBjb250cm9sIHNjaGVkdWxlcnMgKERSUiwgRFVBTFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgYW5kIFNGUSkuIFRoZXNlIHBhY2tldCBzY2hlZHVsZXJzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBjb25maWd1cmFibGUgdmlhIHJ0bmV0bGluay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGJiZWFmNTkzZjVkYzRlNWE5MGQ4ZGM4OThjZTU4MGJkNWUxMDIyNTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAyOSAwODozNTo0NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZHJyLmMgYi9uZXQvc2NoZWQvc2NoX2Ryci5jCmluZGV4IDkxYjFlZjgyNGFmYWYuLjg2MjFkMDU3ZWRkOWYgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZHJyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9kcnIuYwpAQCAtODIsOCAmIzQzOzgyLDkgQEAgc3RhdGljIGludCBkcnJfY2hhbmdlX2NsYXNzKHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgY2xhc3NpZCwgdTMyIHBhcmVudGlkLAogCQkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAmIzM0O1NwZWNpZmllZCBEUlIgcXVhbnR1bSBjYW5ub3QgYmUgemVybyYjMzQ7KTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CiYjNDM7CQlxdWFudHVtID0gY2xhbXBfdCh1MzIsIHF1YW50dW0sIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAJfSBlbHNlCi0JCXF1YW50dW0gPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTsKJiM0MzsJCXF1YW50dW0gPSBjbGFtcF90KHUzMiwgKHUzMilwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMjU2LCAxICZsdDsmbHQ7IDIwKTsKIAogCWlmIChjbCAhPSBOVUxMKSB7CiAJCWlmICh0Y2FbVENBX1JBVEVdKSB7CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jCmluZGV4IDRmNjc4ZDRmZjEwZWMuLjQ5NDdkZWY3YzQ5ZWYgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jCkBAIC0yMDgsOSAmIzQzOzIwOCwxMSBAQCBzdGF0aWMgdm9pZCBkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxKQogc3RhdGljIHZvaWQgZHVhbHBpMl9jYWxjdWxhdGVfY19wcm90ZWN0aW9uKHN0cnVjdCBRZGlzYyAqc2NoLAogCQkJCQkgICBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLCB1MzIgd2MpCiB7CiYjNDM7CXUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgJmx0OyZsdDsgMjApOwomIzQzOwogCXEtJmd0O2NfcHJvdGVjdGlvbl93YyA9IHdjOwogCXEtJmd0O2NfcHJvdGVjdGlvbl93bCA9IE1BWF9XQyAtIHdjOwotCXEtJmd0O2NfcHJvdGVjdGlvbl9pbml0ID0gKHMzMilwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSAqCiYjNDM7CXEtJmd0O2NfcHJvdGVjdGlvbl9pbml0ID0gKHMzMiltdHUgKgogCQkoKGludClxLSZndDtjX3Byb3RlY3Rpb25fd2MgLSAoaW50KXEtJmd0O2NfcHJvdGVjdGlvbl93bCk7CiAJZHVhbHBpMl9yZXNldF9jX3Byb3RlY3Rpb24ocSk7CiB9CkBAIC0yODUsOCAmIzQzOzI4Nyw5IEBAIHN0YXRpYyBib29sIG11c3RfZHJvcChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwKIAl1NjQgbG9jYWxfbF9wcm9iOwogCWJvb2wgb3ZlcmxvYWQ7CiAJdTMyIHByb2I7CiYjNDM7CXUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgJmx0OyZsdDsgMjApOwogCi0JaWYgKHNjaC0mZ3Q7cXN0YXRzLmJhY2tsb2cgJmx0OyAyICogcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkpCiYjNDM7CWlmIChzY2gtJmd0O3FzdGF0cy5iYWNrbG9nICZsdDsgMiAqIG10dSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJcHJvYiA9IFJFQURfT05DRShxLSZndDtwaTJfcHJvYik7CkBAIC03MTIsNyAmIzQzOzcxNSw4IEBAIHN0YXRpYyB1MzIgZ2V0X21lbW9yeV9saW1pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxpbWl0KQogCS8qIEFwcGx5IHJ1bGUgb2YgdGh1bWIsIGkuZS4sIGRvdWJsaW5nIHRoZSBwYWNrZXQgbGVuZ3RoLAogCSAqIHRvIGZ1cnRoZXIgaW5jbHVkZSBwZXIgcGFja2V0IG92ZXJoZWFkIGluIG1lbW9yeV9saW1pdC4KIAkgKi8KLQl1NjQgbWVtbGltID0gbXVsX3UzMl91MzIobGltaXQsIDIgKiBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSk7CiYjNDM7CXU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwKJiM0MzsJCQkJCQkgICAgIDEsIDEgJmx0OyZsdDsgMjApKTsKIAogCWlmICh1cHBlcl8zMl9iaXRzKG1lbWxpbSkpCiAJCXJldHVybiBVMzJfTUFYOwpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9ldHMuYyBiL25ldC9zY2hlZC9zY2hfZXRzLmMKaW5kZXggMjVmY2Y0MDc5ZmVjZS4uNmNjOTAyYTAzODM4NyAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9ldHMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2V0cy5jCkBAIC04MywxMSAmIzQzOzgzLDcgQEAgc3RhdGljIGludCBldHNfcXVhbnR1bV9wYXJzZShzdHJ1Y3QgUWRpc2MgKnNjaCwgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwKIAkJCSAgICAgdW5zaWduZWQgaW50ICpxdWFudHVtLAogCQkJICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiB7Ci0JKnF1YW50dW0gPSBubGFfZ2V0X3UzMihhdHRyKTsKLQlpZiAoISpxdWFudHVtKSB7Ci0JCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDtFVFMgcXVhbnR1bSBjYW5ub3QgYmUgemVybyYjMzQ7KTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQomIzQzOwkqcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMihhdHRyKSwgMjU2LCAxICZsdDsmbHQ7IDIwKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtNjMyLDExICYjNDM7NjI4LDEzIEBAIHN0YXRpYyBpbnQgZXRzX3FkaXNjX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCQkJcmV0dXJuIGVycjsKIAl9CiAJLyogSWYgdGhlcmUgYXJlIG1vcmUgYmFuZHMgdGhhbiBzdHJpY3QgJiM0MzsgcXVhbnRhIHByb3ZpZGVkLCB0aGUgcmVtYWluaW5nCi0JICogb25lcyBhcmUgRVRTIHdpdGggcXVhbnR1bSBvZiBNVFUuIEluaXRpYWxpemUgdGhlIG1pc3NpbmcgdmFsdWVzIGhlcmUuCiYjNDM7CSAqIG9uZXMgYXJlIEVUUyB3aXRoIHF1YW50dW0gb2YgbWF4KE1UVSwgMjU2KS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZwomIzQzOwkgKiB2YWx1ZXMgaGVyZS4KIAkgKi8KIAlmb3IgKGkgPSBuc3RyaWN0OyBpICZsdDsgbmJhbmRzOyBpJiM0MzsmIzQzOykgewogCQlpZiAoIXF1YW50YVtpXSkKLQkJCXF1YW50YVtpXSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpOwomIzQzOwkJCXF1YW50YVtpXSA9IGNsYW1wX3QodTMyLCAodTMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLAomIzQzOwkJCQkJICAgIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAJfQogCiAJLyogQmVmb3JlIGNvbW1pdCwgbWFrZSBzdXJlIHdlIGNhbiBhbGxvY2F0ZSBhbGwgbmV3IHFkaXNjcyAqLwpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9mcS5jIGIvbmV0L3NjaGVkL3NjaF9mcS5jCmluZGV4IDYxNDRiNTY4NmYxM2YuLjM1Zjk0MGIyMjA1ZGYgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZnEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2ZxLmMKQEAgLTk4MCw3ICYjNDM7OTgwLDcgQEAgc3RhdGljIGludCBmcV9yZXNpemUoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBsb2cpCiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0bGlua19yYW5nZV92YWxpZGF0aW9uIGlxX3JhbmdlID0gewotCS5tYXggPSBJTlRfTUFYLAomIzQzOwkubWF4ID0gMSAmbHQ7Jmx0OyAyMCwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBmcV9wb2xpY3lbVENBX0ZRX01BWCAmIzQzOyAxXSA9IHsKQEAgLTExMDYsMTQgJiM0MzsxMTA2LDEwIEBAIHN0YXRpYyBpbnQgZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJCQkgICBubGFfZ2V0X3UzMih0YltUQ0FfRlFfRkxPV19QTElNSVRdKSk7CiAKIAlpZiAodGJbVENBX0ZRX1FVQU5UVU1dKSB7Ci0JCXUzMiBxdWFudHVtID0gbmxhX2dldF91MzIodGJbVENBX0ZRX1FVQU5UVU1dKTsKJiM0MzsJCXUzMiBxdWFudHVtID0gY2xhbXBfdCh1MzIsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSksCiYjNDM7CQkJCSAgICAgMjU2LCAxICZsdDsmbHQ7IDIwKTsKIAotCQlpZiAocXVhbnR1bSAmZ3Q7IDAgJmFtcDsmYW1wOyBxdWFudHVtICZsdDs9ICgxICZsdDsmbHQ7IDIwKSkgewotCQkJV1JJVEVfT05DRShxLSZndDtxdWFudHVtLCBxdWFudHVtKTsKLQkJfSBlbHNlIHsKLQkJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssICYjMzQ7aW52YWxpZCBxdWFudHVtJiMzNDspOwotCQkJZXJyID0gLUVJTlZBTDsKLQkJfQomIzQzOwkJV1JJVEVfT05DRShxLSZndDtxdWFudHVtLCBxdWFudHVtKTsKIAl9CiAKIAlpZiAodGJbVENBX0ZRX0lOSVRJQUxfUVVBTlRVTV0pCkBAIC0xMjMyLDcgJiM0MzsxMjI4LDcgQEAgc3RhdGljIGludCBmcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJc2NoLSZndDtsaW1pdAkJPSAxMDAwMDsKIAlxLSZndDtmbG93X3BsaW1pdAkJPSAxMDA7CiAJbXR1ID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAxLCAxICZsdDsmbHQ7IDIwKTsKLQlxLSZndDtxdWFudHVtCQk9IG1pbl90KHUzMiwgMiAqIG10dSwgMSAmbHQ7Jmx0OyAyMCk7CiYjNDM7CXEtJmd0O3F1YW50dW0JCT0gY2xhbXBfdCh1MzIsIDIgKiBtdHUsIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAJcS0mZ3Q7aW5pdGlhbF9xdWFudHVtCT0gbWluX3QodTMyLCAxMCAqIG10dSwgMSAmbHQ7Jmx0OyAyMCk7CiAJcS0mZ3Q7Zmxvd19yZWZpbGxfZGVsYXkJPSBtc2Vjc190b19qaWZmaWVzKDQwKTsKIAlxLSZndDtmbG93X21heF9yYXRlCT0gfjBVTDsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnFfcGllLmMgYi9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jCmluZGV4IGIyN2Q5NTQxODcwN2EuLjU5ODI4NDdkZjhmODUgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZnFfcGllLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuYwpAQCAtMzQxLDcgJiM0MzszNDEsOCBAQCBzdGF0aWMgaW50IGZxX3BpZV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkJCSAgIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfQkVUQV0pKTsKIAogCWlmICh0YltUQ0FfRlFfUElFX1FVQU5UVU1dKQotCQlXUklURV9PTkNFKHEtJmd0O3F1YW50dW0sIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKTsKJiM0MzsJCVdSSVRFX09OQ0UocS0mZ3Q7cXVhbnR1bSwKJiM0MzsJCQkgICBtYXgoMjU2VSwgbmxhX2dldF91MzIodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSkpKTsKIAogCWlmICh0YltUQ0FfRlFfUElFX01FTU9SWV9MSU1JVF0pCiAJCVdSSVRFX09OQ0UocS0mZ3Q7bWVtb3J5X2xpbWl0LApkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9oaGYuYyBiL25ldC9zY2hlZC9zY2hfaGhmLmMKaW5kZXggOTZhY2FiNmE4ZGEwMy4uZmM3MmY4MjVmYmQ5MiAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9oaGYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2hoZi5jCkBAIC01NTEsNyAmIzQzOzU1MSw3IEBAIHN0YXRpYyBpbnQgaGhmX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCQlyZXR1cm4gZXJyOwogCiAJaWYgKHRiW1RDQV9ISEZfUVVBTlRVTV0pCi0JCW5ld19xdWFudHVtID0gbmxhX2dldF91MzIodGJbVENBX0hIRl9RVUFOVFVNXSk7CiYjNDM7CQluZXdfcXVhbnR1bSA9IG1heCgyNTZVLCBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX1FVQU5UVU1dKSk7CiAKIAlpZiAodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSkKIAkJbmV3X2hoZl9ub25faGhfd2VpZ2h0ID0gbmxhX2dldF91MzIodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSk7CkBAIC02MTMsNyAmIzQzOzYxMyw3IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAlpbnQgaTsKIAogCXNjaC0mZ3Q7bGltaXQgPSAxMDAwOwotCXEtJmd0O3F1YW50dW0gPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTsKJiM0MzsJcS0mZ3Q7cXVhbnR1bSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMjU2LCAxICZsdDsmbHQ7IDIwKTsKIAlnZXRfcmFuZG9tX2J5dGVzKCZhbXA7cS0mZ3Q7cGVydHVyYmF0aW9uLCBzaXplb2YocS0mZ3Q7cGVydHVyYmF0aW9uKSk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtxLSZndDtuZXdfYnVja2V0cyk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtxLSZndDtvbGRfYnVja2V0cyk7CkBAIC02MjQsMTAgJiM0Mzs2MjQsNiBAQCBzdGF0aWMgaW50IGhoZl9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJcS0mZ3Q7aGhmX2V2aWN0X3RpbWVvdXQgPSBIWjsgICAgICAvKiAxICBzZWMgKi8KIAlxLSZndDtoaGZfbm9uX2hoX3dlaWdodCA9IDI7CiAKLQlpZiAoKGludClxLSZndDtxdWFudHVtICZsdDs9IDAgfHwKLQkgICAgKHU2NClxLSZndDtxdWFudHVtICogcS0mZ3Q7aGhmX25vbl9oaF93ZWlnaHQgJmd0OyBJTlRfTUFYKQotCQlxLSZndDtxdWFudHVtID0gMjU2OwotCiAJaWYgKG9wdCkgewogCQlpbnQgZXJyID0gaGhmX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTsKIApkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9waWUuYyBiL25ldC9zY2hlZC9zY2hfcGllLmMKaW5kZXggYjQxZjJkZWYyZTJjYy4uM2I3ODYzZmZkMjg0YyAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9waWUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX3BpZS5jCkBAIC0zNSw3ICYjNDM7MzUsNyBAQCBib29sIHBpZV9kcm9wX2Vhcmx5KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgcGllX3BhcmFtcyAqcGFyYW1zLAogewogCXU2NCBybmQ7CiAJdTY0IGxvY2FsX3Byb2IgPSB2YXJzLSZndDtwcm9iOwotCXUzMiBtdHUgPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTsKJiM0MzsJdTMyIG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSAmbHQ7Jmx0OyAyMCk7CiAKIAkvKiBJZiB0aGVyZSBpcyBzdGlsbCBidXJzdCBhbGxvd2FuY2UgbGVmdCBza2lwIHJhbmRvbSBlYXJseSBkcm9wICovCiAJaWYgKHZhcnMtJmd0O2J1cnN0X3RpbWUgJmd0OyAwKQpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9zZnEuYyBiL25ldC9zY2hlZC9zY2hfc2ZxLmMKaW5kZXggMTg3ZDNlZDU3OGYyNi4uOGJiY2ZjOWU4NWQ5NCAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9zZnEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX3NmcS5jCkBAIC02NjAsNiAmIzQzOzY2MCwxMSBAQCBzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCiYjNDM7CWlmIChjdGwtJmd0O3F1YW50dW0gJmd0OyAxICZsdDsmbHQ7IDIwKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCAmIzM0O3F1YW50dW0gdG9vIGxhcmdlJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlpZiAoY3RsLSZndDtwZXJ0dXJiX3BlcmlvZCAmbHQ7IDAgfHwKIAkgICAgY3RsLSZndDtwZXJ0dXJiX3BlcmlvZCAmZ3Q7IElOVF9NQVggLyBIWikgewogCQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCAmIzM0O2ludmFsaWQgcGVydHVyYiBwZXJpb2QmIzM0Oyk7CkBAIC02ODgsNyAmIzQzOzY5Myw3IEBAIHN0YXRpYyBpbnQgc2ZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCiAJLyogdXBkYXRlIGFuZCB2YWxpZGF0ZSBjb25maWd1cmF0aW9uICovCiAJaWYgKGN0bC0mZ3Q7cXVhbnR1bSkKLQkJcXVhbnR1bSA9IGN0bC0mZ3Q7cXVhbnR1bTsKJiM0MzsJCXF1YW50dW0gPSBtYXgoMjU2VSwgY3RsLSZndDtxdWFudHVtKTsKIAlpZiAoY3RsLSZndDtmbG93cykKIAkJbWF4Zmxvd3MgPSBtaW5fdCh1MzIsIGN0bC0mZ3Q7Zmxvd3MsIFNGUV9NQVhfRkxPV1MpOwogCWlmIChjdGwtJmd0O2Rpdmlzb3IpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDg6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUzOAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKgoKT2theSwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2ggYW5kIGRlY2lkZSBpZiBpdCYjMzk7cyBmdXp6LXdvcnRoeS4gVGhlIGZhY3QgdGhhdCBpdCB0b3VjaGVzIG11bHRpcGxlIGBuZXQvc2NoZWRgIHFkaXNjcyBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEl0IHNlZW1zIHRvIG1vZGlmeSBhIHNsZXcgb2YgdGhlbTogYHNjaF9kcnIuY2AsIGBzY2hfZHVhbHBpMi5jYCwgYHNjaF9ldHMuY2AsIGBzY2hfZnEuY2AsIGBzY2hfZnFfcGllLmNgLCBgc2NoX2hoZi5jYCwgYHNjaF9waWUuY2AsIGFuZCBgc2NoX3NmcS5jYC4KCk5vdywgZGlnZ2luZyBkZWVwZXIsIGl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgb2YgdGhlc2UgY2hhbmdlcyByZXZvbHZlcyBhcm91bmQgY2xhbXBpbmcgYW5kIHNhbml0aXppbmcgYHF1YW50dW1gIGFuZCBgbXR1YCB2YWx1ZXMgYWNyb3NzIHRoZXNlIHRyYWZmaWMgY29udHJvbCBzY2hlZHVsZXJzLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBlbmZvcmNpbmcgbWluaW11bXMgYW5kIG1heGltdW1zLCBlc3NlbnRpYWxseSBib3VuZGluZyB0aGVzZSB2YWx1ZXMgdG8gcHJldmVudCBvdmVyZmxvd3MsIHBvdGVudGlhbCBpbmZpbml0ZSBsb29wcywgZGl2aXNpb24gYnkgemVybyBlcnJvcnMsIG5lZ2F0aXZlIHZhbHVlcywgYW5kIGxhcmdlIGFsbG9jYXRpb24gaXNzdWVzLiBUaGF0JiMzOTtzIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nLCBidXQgaXMgaXQgZnV6emFibGU/CgpUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyByZWFjaGFiaWxpdHkuIFRoYW5rZnVsbHksIHRoZXNlIGFyZSBhbGwgY29yZSBMaW51eCBuZXR3b3JraW5nIHFkaXNjcywgZnVsbHkgY29uZmlndXJhYmxlIHZpYSBuZXRsaW5rICh1c2luZyBgcnRuZXRsaW5rYCBhbmQgYHRjYCkuIFRoaXMgaXNuJiMzOTt0IHNvbWUgbmljaGUgc3Vic3lzdGVtOyBpdCYjMzk7cyByaWdodCBpbiB0aGUgY29yZSBvZiB0cmFmZmljIGNvbnRyb2wuIE1lYW5pbmcgdGhlc2UgY29uZmlndXJhdGlvbiBjaGFuZ2VzIGFyZSBoaWdobHkgYWNjZXNzaWJsZSBpbiBzdGFuZGFyZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhpcyBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyBob3cgdGhlc2Ugc2NoZWR1bGVycyBoYW5kbGUgdGhlIGBxdWFudHVtYC9gbXR1YCBjb25maWd1cmF0aW9uIGxvZ2ljLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIEtjb25maWcgb3B0aW9ucywgYnV0IGJhc2VkIG9uIGFsbCBvZiB0aGlzLCB0aGlzIGlzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBUaGUgY2hhbmdlcyBhcmUgYWNjZXNzaWJsZSBhbmQgbW9kaWZ5IGNyaXRpY2FsIHZhbHVlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1NDSF8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz00Nj1jb21tZW50IFwmIzM0O1F1ZXVlaW5nL1NjaGVkdWxpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnLTQ3LVxubmV0L3NjaGVkL0tjb25maWc6NDg6Y29uZmlnIE5FVF9TQ0hfSFRCXG5uZXQvc2NoZWQvS2NvbmZpZy00OS1cdHRyaXN0YXRlIFwmIzM0O0hpZXJhcmNoaWNhbCBUb2tlbiBCdWNrZXQgKEhUQilcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy02MS1cbm5ldC9zY2hlZC9LY29uZmlnOjYyOmNvbmZpZyBORVRfU0NIX0hGU0Ncbm5ldC9zY2hlZC9LY29uZmlnLTYzLVx0dHJpc3RhdGUgXCYjMzQ7SGllcmFyY2hpY2FsIEZhaXIgU2VydmljZSBDdXJ2ZSAoSEZTQylcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy03MC1cbm5ldC9zY2hlZC9LY29uZmlnOjcxOmNvbmZpZyBORVRfU0NIX1BSSU9cbm5ldC9zY2hlZC9LY29uZmlnLTcyLVx0dHJpc3RhdGUgXCYjMzQ7TXVsdGkgQmFuZCBQcmlvcml0eSBRdWV1ZWluZyAoUFJJTylcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy03OS1cbm5ldC9zY2hlZC9LY29uZmlnOjgwOmNvbmZpZyBORVRfU0NIX01VTFRJUVxubmV0L3NjaGVkL0tjb25maWctODEtXHR0cmlzdGF0ZSBcJiMzNDtIYXJkd2FyZSBNdWx0aXF1ZXVlLWF3YXJlIE11bHRpIEJhbmQgUXVldWluZyAoTVVMVElRKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTg4LVxubmV0L3NjaGVkL0tjb25maWc6ODk6Y29uZmlnIE5FVF9TQ0hfUkVEXG5uZXQvc2NoZWQvS2NvbmZpZy05MC1cdHRyaXN0YXRlIFwmIzM0O1JhbmRvbSBFYXJseSBEZXRlY3Rpb24gKFJFRClcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy05OS1cbm5ldC9zY2hlZC9LY29uZmlnOjEwMDpjb25maWcgTkVUX1NDSF9TRkJcbm5ldC9zY2hlZC9LY29uZmlnLTEwMS1cdHRyaXN0YXRlIFwmIzM0O1N0b2NoYXN0aWMgRmFpciBCbHVlIChTRkIpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMTEwLVxubmV0L3NjaGVkL0tjb25maWc6MTExOmNvbmZpZyBORVRfU0NIX1NGUVxubmV0L3NjaGVkL0tjb25maWctMTEyLVx0dHJpc3RhdGUgXCYjMzQ7U3RvY2hhc3RpYyBGYWlybmVzcyBRdWV1ZWluZyAoU0ZRKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTEyMS1cbm5ldC9zY2hlZC9LY29uZmlnOjEyMjpjb25maWcgTkVUX1NDSF9URVFMXG5uZXQvc2NoZWQvS2NvbmZpZy0xMjMtXHR0cmlzdGF0ZSBcJiMzNDtUcnVlIExpbmsgRXF1YWxpemVyIChURVFMKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTEzMy1cbm5ldC9zY2hlZC9LY29uZmlnOjEzNDpjb25maWcgTkVUX1NDSF9UQkZcbm5ldC9zY2hlZC9LY29uZmlnLTEzNS1cdHRyaXN0YXRlIFwmIzM0O1Rva2VuIEJ1Y2tldCBGaWx0ZXIgKFRCRilcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xNDQtXG5uZXQvc2NoZWQvS2NvbmZpZzoxNDU6Y29uZmlnIE5FVF9TQ0hfQ0JTXG5uZXQvc2NoZWQvS2NvbmZpZy0xNDYtXHR0cmlzdGF0ZSBcJiMzNDtDcmVkaXQgQmFzZWQgU2hhcGVyIChDQlMpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMTU1LVxubmV0L3NjaGVkL0tjb25maWc6MTU2OmNvbmZpZyBORVRfU0NIX0VURlxubmV0L3NjaGVkL0tjb25maWctMTU3LVx0dHJpc3RhdGUgXCYjMzQ7RWFybGllc3QgVHhUaW1lIEZpcnN0IChFVEYpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMTY2LVxubmV0L3NjaGVkL0tjb25maWc6MTY3OmNvbmZpZyBORVRfU0NIX01RUFJJT19MSUJcbm5ldC9zY2hlZC9LY29uZmlnLTE2OC1cdHRyaXN0YXRlXG4tLVxubmV0L3NjaGVkL0tjb25maWctMTcxLVxubmV0L3NjaGVkL0tjb25maWc6MTcyOmNvbmZpZyBORVRfU0NIX1RBUFJJT1xubmV0L3NjaGVkL0tjb25maWctMTczLVx0dHJpc3RhdGUgXCYjMzQ7VGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xODMtXG5uZXQvc2NoZWQvS2NvbmZpZzoxODQ6Y29uZmlnIE5FVF9TQ0hfR1JFRFxubmV0L3NjaGVkL0tjb25maWctMTg1LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uIChHUkVEKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTE5NC1cbm5ldC9zY2hlZC9LY29uZmlnOjE5NTpjb25maWcgTkVUX1NDSF9ORVRFTVxubmV0L3NjaGVkL0tjb25maWctMTk2LVx0dHJpc3RhdGUgXCYjMzQ7TmV0d29yayBlbXVsYXRvciAoTkVURU0pXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMjA2LVxubmV0L3NjaGVkL0tjb25maWc6MjA3OmNvbmZpZyBORVRfU0NIX0RSUlxubmV0L3NjaGVkL0tjb25maWctMjA4LVx0dHJpc3RhdGUgXCYjMzQ7RGVmaWNpdCBSb3VuZCBSb2JpbiBzY2hlZHVsZXIgKERSUilcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0yMTctXG5uZXQvc2NoZWQvS2NvbmZpZzoyMTg6Y29uZmlnIE5FVF9TQ0hfTVFQUklPXG5uZXQvc2NoZWQvS2NvbmZpZy0yMTktXHR0cmlzdGF0ZSBcJiMzNDtNdWx0aS1xdWV1ZSBwcmlvcml0eSBzY2hlZHVsZXIgKE1RUFJJTylcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0yMzAtXG5uZXQvc2NoZWQvS2NvbmZpZzoyMzE6Y29uZmlnIE5FVF9TQ0hfU0tCUFJJT1xubmV0L3NjaGVkL0tjb25maWctMjMyLVx0dHJpc3RhdGUgXCYjMzQ7U0tCIHByaW9yaXR5IHF1ZXVlIHNjaGVkdWxlciAoU0tCUFJJTylcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0yNDMtXG5uZXQvc2NoZWQvS2NvbmZpZzoyNDQ6Y29uZmlnIE5FVF9TQ0hfQ0hPS0Vcbm5ldC9zY2hlZC9LY29uZmlnLTI0NS1cdHRyaXN0YXRlIFwmIzM0O0NIT29zZSBhbmQgS2VlcCByZXNwb25zaXZlIGZsb3cgc2NoZWR1bGVyIChDSE9LRSlcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0yNTQtXG5uZXQvc2NoZWQvS2NvbmZpZzoyNTU6Y29uZmlnIE5FVF9TQ0hfUUZRXG5uZXQvc2NoZWQvS2NvbmZpZy0yNTYtXHR0cmlzdGF0ZSBcJiMzNDtRdWljayBGYWlyIFF1ZXVlaW5nIHNjaGVkdWxlciAoUUZRKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTI2NS1cbm5ldC9zY2hlZC9LY29uZmlnOjI2Njpjb25maWcgTkVUX1NDSF9DT0RFTFxubmV0L3NjaGVkL0tjb25maWctMjY3LVx0dHJpc3RhdGUgXCYjMzQ7Q29udHJvbGxlZCBEZWxheSBBUU0gKENPREVMKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTI3Ni1cbm5ldC9zY2hlZC9LY29uZmlnOjI3Nzpjb25maWcgTkVUX1NDSF9GUV9DT0RFTFxubmV0L3NjaGVkL0tjb25maWctMjc4LVx0dHJpc3RhdGUgXCYjMzQ7RmFpciBRdWV1ZSBDb250cm9sbGVkIERlbGF5IEFRTSAoRlFfQ09ERUwpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMjg3LVxubmV0L3NjaGVkL0tjb25maWc6Mjg4OmNvbmZpZyBORVRfU0NIX0NBS0Vcbm5ldC9zY2hlZC9LY29uZmlnLTI4OS1cdHRyaXN0YXRlIFwmIzM0O0NvbW1vbiBBcHBsaWNhdGlvbnMgS2VwdCBFbmhhbmNlZCAoQ0FLRSlcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0yOTgtXG5uZXQvc2NoZWQvS2NvbmZpZzoyOTk6Y29uZmlnIE5FVF9TQ0hfRlFcbm5ldC9zY2hlZC9LY29uZmlnLTMwMC1cdHRyaXN0YXRlIFwmIzM0O0ZhaXIgUXVldWVcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0zMTItXG5uZXQvc2NoZWQvS2NvbmZpZzozMTM6Y29uZmlnIE5FVF9TQ0hfSEhGXG5uZXQvc2NoZWQvS2NvbmZpZy0zMTQtXHR0cmlzdGF0ZSBcJiMzNDtIZWF2eS1IaXR0ZXIgRmlsdGVyIChISEYpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMzIxLVxubmV0L3NjaGVkL0tjb25maWc6MzIyOmNvbmZpZyBORVRfU0NIX1BJRVxubmV0L3NjaGVkL0tjb25maWctMzIzLVx0dHJpc3RhdGUgXCYjMzQ7UHJvcG9ydGlvbmFsIEludGVncmFsIGNvbnRyb2xsZXIgRW5oYW5jZWQgKFBJRSkgc2NoZWR1bGVyXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMzMzLVxubmV0L3NjaGVkL0tjb25maWc6MzM0OmNvbmZpZyBORVRfU0NIX0ZRX1BJRVxubmV0L3NjaGVkL0tjb25maWctMzM1LVx0ZGVwZW5kcyBvbiBORVRfU0NIX1BJRVxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTM0Ni1cbm5ldC9zY2hlZC9LY29uZmlnOjM0Nzpjb25maWcgTkVUX1NDSF9JTkdSRVNTXG5uZXQvc2NoZWQvS2NvbmZpZy0zNDgtXHR0cmlzdGF0ZSBcJiMzNDtJbmdyZXNzL2NsYXNzaWZpZXItYWN0aW9uIFFkaXNjXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMzYyLVxubmV0L3NjaGVkL0tjb25maWc6MzYzOmNvbmZpZyBORVRfU0NIX1BMVUdcbm5ldC9zY2hlZC9LY29uZmlnLTM2NC1cdHRyaXN0YXRlIFwmIzM0O1BsdWcgbmV0d29yayB0cmFmZmljIHVudGlsIHJlbGVhc2UgKFBMVUcpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctMzg4LVxubmV0L3NjaGVkL0tjb25maWc6Mzg5OmNvbmZpZyBORVRfU0NIX0VUU1xubmV0L3NjaGVkL0tjb25maWctMzkwLVx0dHJpc3RhdGUgXCYjMzQ7RW5oYW5jZWQgdHJhbnNtaXNzaW9uIHNlbGVjdGlvbiBzY2hlZHVsZXIgKEVUUylcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy00MDUtXG5uZXQvc2NoZWQvS2NvbmZpZzo0MDY6Y29uZmlnIE5FVF9TQ0hfQlBGXG5uZXQvc2NoZWQvS2NvbmZpZy00MDctXHRib29sIFwmIzM0O0JQRi1iYXNlZCBRZGlzY1wmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTQxNy1cbm5ldC9zY2hlZC9LY29uZmlnOjQxODpjb25maWcgTkVUX1NDSF9EVUFMUEkyXG5uZXQvc2NoZWQvS2NvbmZpZy00MTktXHR0cmlzdGF0ZSBcJiMzNDtEdWFsIFF1ZXVlIFBJIFNxdWFyZSAoRFVBTFBJMikgc2NoZWR1bGVyXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctNDI5LVxubmV0L3NjaGVkL0tjb25maWc6NDMwOm1lbnVjb25maWcgTkVUX1NDSF9ERUZBVUxUXG5uZXQvc2NoZWQvS2NvbmZpZy00MzEtXHRib29sIFwmIzM0O0FsbG93IG92ZXJyaWRlIGRlZmF1bHQgcXVldWUgZGlzY2lwbGluZVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTk2Nj1lbmRpZiAjIE5FVF9TQ0hFRFxubmV0L3NjaGVkL0tjb25maWctOTY3LVxubmV0L3NjaGVkL0tjb25maWc6OTY4OmNvbmZpZyBORVRfU0NIX0ZJRk9cbm5ldC9zY2hlZC9LY29uZmlnLTk2OS1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzMzCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMjI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBOZXR3b3JrIFNjaGVkdWxlciBDaGFuZ2VzKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZXNlIGZpbGUgbW9kaWZpY2F0aW9ucyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBLY29uZmlnIG9wdGlvbnMgd2l0aGluIHRoZSBuZXR3b3JrIHNjaGVkdWxlciBzdWJzeXN0ZW0uIEZpcnN0LCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBsaW5rIHRoZSBmaWxlIGNoYW5nZXMgdG8gdGhlaXIgS2NvbmZpZyBlbnRyaWVzLiBJIHNlZSB0aGF0OgoKKiAgIGBuZXQvc2NoZWQvc2NoX2Ryci5jYCBpcyBjb25uZWN0ZWQgdG8gYE5FVF9TQ0hfRFJSYC4KKiAgIGBuZXQvc2NoZWQvc2NoX2R1YWxwaTIuY2AgY29ycmVzcG9uZHMgdG8gYE5FVF9TQ0hfRFVBTFBJMmAuCiogICBgbmV0L3NjaGVkL3NjaF9ldHMuY2AgaXMgZW5hYmxlZCBieSBgTkVUX1NDSF9FVFNgLgoqICAgYG5ldC9zY2hlZC9zY2hfZnEuY2AgaXMgY29udHJvbGxlZCBieSBgTkVUX1NDSF9GUWAuCiogICBgbmV0L3NjaGVkL3NjaF9mcV9waWUuY2AgcmVsYXRlcyB0byBgTkVUX1NDSF9GUV9QSUVgLgoqICAgYG5ldC9zY2hlZC9zY2hfaGhmLmNgIHNlZW1zIGNvbm5lY3RlZCB0byBgTkVUX1NDSF9ISEZgLgoqICAgYG5ldC9zY2hlZC9zY2hfcGllLmNgIHVzZXMgYE5FVF9TQ0hfUElFYC4KKiAgIEFuZCBmaW5hbGx5LCBgbmV0L3NjaGVkL3NjaF9zZnEuY2AgaXMgdGllZCB0byBgTkVUX1NDSF9TRlFgLgoKTm93LCBJIG5lZWQgdG8gb3BlbiB0aGUgYE1ha2VmaWxlYCBpbiBgbmV0L3NjaGVkYCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBtYXBwaW5nLiBJIHdhbnQgdG8gYmUgMTAwJSBzdXJlIHRoaXMgaXNuJiMzOTt0IGp1c3QgYSBjb2luY2lkZW5jZSBhbmQgdGhhdCB0aGlzIGlzIHRoZSBzeXN0ZW0gZm9yIGNvbm5lY3RpbmcgdGhlc2UgZmlsZXMgdG8gdGhlaXIgb3B0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY2hfKGRycnxkdWFscGkyfGV0c3xmcXxmcV9waWV8aGhmfHBpZXxzZnEpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9NYWtlZmlsZT00MD1vYmotJChDT05GSUdfTkVUX1NDSF9TRkIpXHQmIzQzOz0gc2NoX3NmYi5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDE6b2JqLSQoQ09ORklHX05FVF9TQ0hfU0ZRKVx0JiM0Mzs9IHNjaF9zZnEub1xubmV0L3NjaGVkL01ha2VmaWxlLTQyLW9iai0kKENPTkZJR19ORVRfU0NIX1RCRilcdCYjNDM7PSBzY2hfdGJmLm9cbi0tXG5uZXQvc2NoZWQvTWFrZWZpbGU9NDY9b2JqLSQoQ09ORklHX05FVF9TQ0hfTkVURU0pXHQmIzQzOz0gc2NoX25ldGVtLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0NzpvYmotJChDT05GSUdfTkVUX1NDSF9EUlIpXHQmIzQzOz0gc2NoX2Ryci5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtNDgtb2JqLSQoQ09ORklHX05FVF9TQ0hfUExVRylcdCYjNDM7PSBzY2hfcGx1Zy5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX05FVF9TQ0hfRVRTKVx0JiM0Mzs9IHNjaF9ldHMub1xubmV0L3NjaGVkL01ha2VmaWxlLTUwLW9iai0kKENPTkZJR19ORVRfU0NIX01RUFJJTylcdCYjNDM7PSBzY2hfbXFwcmlvLm9cbi0tXG5uZXQvc2NoZWQvTWFrZWZpbGU9NTU9b2JqLSQoQ09ORklHX05FVF9TQ0hfQ09ERUwpXHQmIzQzOz0gc2NoX2NvZGVsLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo1NjpvYmotJChDT05GSUdfTkVUX1NDSF9GUV9DT0RFTClcdCYjNDM7PSBzY2hfZnFfY29kZWwub1xubmV0L3NjaGVkL01ha2VmaWxlLTU3LW9iai0kKENPTkZJR19ORVRfU0NIX0NBS0UpXHQmIzQzOz0gc2NoX2Nha2Uub1xubmV0L3NjaGVkL01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19ORVRfU0NIX0ZRKVx0JiM0Mzs9IHNjaF9mcS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTk6b2JqLSQoQ09ORklHX05FVF9TQ0hfSEhGKVx0JiM0Mzs9IHNjaF9oaGYub1xubmV0L3NjaGVkL01ha2VmaWxlOjYwOm9iai0kKENPTkZJR19ORVRfU0NIX1BJRSlcdCYjNDM7PSBzY2hfcGllLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo2MTpvYmotJChDT05GSUdfTkVUX1NDSF9GUV9QSUUpXHQmIzQzOz0gc2NoX2ZxX3BpZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtNjItb2JqLSQoQ09ORklHX05FVF9TQ0hfQ0JTKVx0JiM0Mzs9IHNjaF9jYnMub1xuLS1cbm5ldC9zY2hlZC9NYWtlZmlsZT02NT1vYmotJChDT05GSUdfTkVUX1NDSF9CUEYpXHQmIzQzOz0gYnBmX3FkaXNjLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo2NjpvYmotJChDT05GSUdfTkVUX1NDSF9EVUFMUEkyKVx0JiM0Mzs9IHNjaF9kdWFscGkyLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS02Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTA2CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBLZXJuZWwgTmV0d29yayBTY2hlZHVsZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgbmV0d29yayBzY2hlZHVsZXIgY29uZmlndXJhdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIHBhcmVudCBLY29uZmlnIG9wdGlvbnMgZm9yIGFueXRoaW5nIHVuZGVyIGBORVRfU0NIXypgLiBJIGtub3cgdGhhdCBgTkVUX1NDSEVEYCBpcyB0aGUgbGlrZWx5IHN0YXJ0aW5nIHBvaW50LCBzbyBJJiMzOTtsbCBiZWdpbiBieSBsb29raW5nIGluIGBuZXQvc2NoZWQvS2NvbmZpZ2AuIEkgc2VlIHRoZSBgbWVudWNvbmZpZyBORVRfU0NIRURgIGRlZmluaXRpb24sIHdoaWNoIHRlbGxzIG1lIHRoaXMgaXMgYSBwcmltYXJ5IG9wdGlvbi4gVGhlbiBJJiMzOTtsbCB0cmFjZSBpdHMgaW5jbHVzaW9uLiBBaCwgcmlnaHQsIGluIHRoZSB0b3AtbGV2ZWwgYG5ldC9LY29uZmlnYCwgaXQmIzM5O3MgaW5jbHVkaW5nIHRoZSBzY2hlZCBjb25maWcgd2l0aCBhIGBzb3VyY2UgJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7YCBjb21tYW5kLiBUaGF0IG1ha2VzIHNlbnNlLCBrZWVwaW5nIHRoaW5ncyBtb2R1bGFyLiBBbmQgdGhhdCYjMzk7cyB1bmRlciB0aGUgJiMzNDtOZXR3b3JraW5nIG9wdGlvbnMmIzM0OyBtZW51IChORVQpLiBHb29kLgoKTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgcGllX2Ryb3BfZWFybHlgIHZhcmlhYmxlLiBJIHNlZW0gdG8gcmVjYWxsIGRlYWxpbmcgd2l0aCB0aGF0IHJlY2VudGx5LiBJJiMzOTtsbCBvcGVuIHVwIGBuZXQvc2NoZWQvc2NoX3BpZS5jYCBhbmQgbWFrZSBzdXJlIGl0JiMzOTtzIG5vdCBhIHN0YXRpYyBvciBsb2NhbCB2YXJpYWJsZSwgYnV0IHJhdGhlciBhbiBleHBvcnRlZCBvbmUuIEtub3dpbmcgaXRzIHZpc2liaWxpdHkgaXMga2V5IHRvIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBzY2hlZHVsZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDg6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGllX2Ryb3BfZWFybHkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZnFfcGllLmM9MTMwPXN0YXRpYyBpbnQgZnFfcGllX3FkaXNjX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4tLVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy0xNjYtXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jOjE2NzpcdGlmICghcGllX2Ryb3BfZWFybHkoc2NoLCBcdTAwMjZxLVx1MDAzZXBfcGFyYW1zLCBcdTAwMjZzZWxfZmxvdy1cdTAwM2V2YXJzLFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy0xNjgtXHRcdFx0ICAgIHNlbF9mbG93LVx1MDAzZWJhY2tsb2csIHNrYi1cdTAwM2VsZW4pKSB7XG4tLVxubmV0L3NjaGVkL3NjaF9waWUuYz0yNT1zdHJ1Y3QgcGllX3NjaGVkX2RhdGEge1xuLS1cbm5ldC9zY2hlZC9zY2hfcGllLmMtMzItXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjMzOmJvb2wgcGllX2Ryb3BfZWFybHkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBwaWVfcGFyYW1zICpwYXJhbXMsXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTM0LVx0XHQgICAgc3RydWN0IHBpZV92YXJzICp2YXJzLCB1MzIgYmFja2xvZywgdTMyIHBhY2tldF9zaXplKVxuLS1cbm5ldC9zY2hlZC9zY2hfcGllLmMtNTAtXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjUxOlx0LyogSWYgd2UgaGF2ZSBmZXdlciB0aGFuIDIgbXR1LXNpemVkIHBhY2tldHMsIGRpc2FibGUgcGllX2Ryb3BfZWFybHksXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTUyLVx0ICogc2ltaWxhciB0byBtaW5fdGggaW4gUkVEXG4tLVxubmV0L3NjaGVkL3NjaF9waWUuYy04Mi19XG5uZXQvc2NoZWQvc2NoX3BpZS5jOjgzOkVYUE9SVF9TWU1CT0xfR1BMKHBpZV9kcm9wX2Vhcmx5KTtcbm5ldC9zY2hlZC9zY2hfcGllLmMtODQtXG5uZXQvc2NoZWQvc2NoX3BpZS5jPTg1PXN0YXRpYyBpbnQgcGllX3FkaXNjX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG4tLVxubmV0L3NjaGVkL3NjaF9waWUuYy05OC1cbm5ldC9zY2hlZC9zY2hfcGllLmM6OTk6XHRpZiAoIXBpZV9kcm9wX2Vhcmx5KHNjaCwgXHUwMDI2cS1cdTAwM2VwYXJhbXMsIFx1MDAyNnEtXHUwMDNldmFycywgc2NoLVx1MDAzZXFzdGF0cy5iYWNrbG9nLFxubmV0L3NjaGVkL3NjaF9waWUuYy0xMDAtXHRcdFx0ICAgIHNrYi1cdTAwM2VsZW4pKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDg6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzNzMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFFkaXNjIEZ1bmN0aW9uIFZpc2liaWxpdHkqKgoKT2theSwgc28gYHBpZV9kcm9wX2Vhcmx5YCBpcyBub3cgZXhwb3J0ZWQgd2l0aCBgRVhQT1JUX1NZTUJPTF9HUExgLiBUaGF0JiMzOTtzIHRoZSBrZXkgY2hhbmdlLiBOb3csIEkgd2FudCB0byBzZWUgd2hhdCBvdGhlciBmdW5jdGlvbnMgYXJlIGFmZmVjdGVkIGluIHRoZXNlIGZpbGVzIGFuZCBob3cgdGhleSYjMzk7cmUgZXhwb3NlZC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgb3RoZXIgUWRpc2MgZnVuY3Rpb25zIGFuZCBzeW1ib2xzIGluIHRoZSBgc2NoXypgIGZpbGVzLiBMZXQgbWUgcnVuIHRocm91Z2ggZWFjaCBmaWxlOgoKKiAgIGBzY2hfZHJyLmNgOiBKdXN0IGBkcnJfY2hhbmdlX2NsYXNzYC4gVGhhdCYjMzk7cyBhIHN0YXRpYyBjYWxsYmFjayB3aXRoaW4gYGRycl9jbGFzc19vcHNgLCBzbyBpdCYjMzk7cyBub3QgZGlyZWN0bHkgZXhwb3NlZC4KKiAgIGBzY2hfZHVhbHBpMi5jYDogSSBzZWUgYSBoYW5kZnVsIG9mIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zOiBgZHVhbHBpMl9jYWxjdWxhdGVfY19wcm90ZWN0aW9uYCwgYG11c3RfZHJvcGAsIGFuZCBgZ2V0X21lbW9yeV9saW1pdGAuIFRoZXkmIzM5O3JlIGludGVybmFsIHRvIGBkdWFscGkyX2NoYW5nZWAsIGBkdWFscGkyX2luaXRgLCBhbmQgYGR1YWxwaTJfZW5xdWV1ZWAuIEZpbmUsIGFsbCBpbnRlcm5hbC4KKiAgIGBzY2hfZXRzLmNgOiBIZXJlLCBgZXRzX3F1YW50dW1fcGFyc2VgIGFuZCBgZXRzX3FkaXNjX2NoYW5nZWAuIFRoZXNlIGFyZSBzdGF0aWMgY2FsbGJhY2tzIHRvbywgcGFydCBvZiB0aGUgYGV0c19xZGlzY19vcHNgIGFuZCBgZXRzX2NsYXNzX29wc2Agc3RydWN0dXJlcy4gVGhleSYjMzk7cmUgbm90IGV4dGVybmFsbHkgdmlzaWJsZS4KKiAgIGBzY2hfZnEuY2A6IEJvdGggYGZxX2NoYW5nZWAgYW5kIGBmcV9pbml0YCBhcmUgc3RhdGljIGNhbGxiYWNrcyB3aXRoaW4gYGZxX3FkaXNjX29wc2AuIFN0aWxsIGludGVybmFsLgoqICAgYHNjaF9mcV9waWUuY2A6IE9ubHkgYGZxX3BpZV9jaGFuZ2VgLiBJdCYjMzk7cyBhIHN0YXRpYyBjYWxsYmFjayBpbiBgZnFfcGllX3FkaXNjX29wc2AsIHNvIHRoYXQmIzM5O3MgYWxzbyBpbnRlcm5hbC4KKiAgIGBzY2hfaGhmLmNgOiBUaGUgYGhoZl9jaGFuZ2VgIGFuZCBgaGhmX2luaXRgIGZ1bmN0aW9ucyBhcmUgYWxzbyBpbnRlcm5hbCBzdGF0aWMgY2FsbGJhY2tzIGluIGBoaGZfcWRpc2Nfb3BzYC4KKiAgIGBzY2hfcGllLmNgOiBPYnZpb3VzbHksIGBwaWVfZHJvcF9lYXJseWAgaXMgdGhlIGV4Y2VwdGlvbiBoZXJlLCBiZWluZyB0aGUgZXhwb3J0ZWQgZnVuY3Rpb24uCiogICBgc2NoX3NmcS5jYDogVGhlIGBzZnFfY2hhbmdlYCBmdW5jdGlvbiBpcyBhbm90aGVyIHN0YXRpYyBjYWxsYmFjayBpbiBgc2ZxX3FkaXNjX29wc2AuCgpBbHJpZ2h0LCBpdCBsb29rcyBsaWtlIG1vc3Qgb2YgdGhlc2UgUWRpc2MgZnVuY3Rpb25zIGFyZSBtYW5hZ2VkIGludGVybmFsbHkgdGhyb3VnaCBgUWRpc2Nfb3BzYCBhbmQgYFFkaXNjX2NsYXNzX29wc2Agc3RydWN0cywgdXNpbmcgY2FsbGJhY2tzLiBNb3N0IG9mIHRoZXNlIGZpbGVzIGFyZSBjb25zaXN0ZW50IHdpdGggdGhpcyBzdHJ1Y3R1cmUsIHNvIEkmIzM5O2xsIGNoZWNrIGhvdyBRZGlzYyBmdW5jdGlvbnMgYXJlIHR5cGljYWxseSByZXByZXNlbnRlZCBhcyBGb2N1c1N5bWJvbHMgYW5kIGlmIGFueSBvZiB0aGVtIGFyZSBleHBvcnRlZCBvciBtYWRlIHZpc2libGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA4OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBRZGlzY19vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9icGZfcWRpc2MuYy0xMC1cbm5ldC9zY2hlZC9icGZfcWRpc2MuYzoxMTojZGVmaW5lIFFESVNDX09QX0lEWChvcClcdChvZmZzZXRvZihzdHJ1Y3QgUWRpc2Nfb3BzLCBvcCkgLyBzaXplb2Yodm9pZCAoKikodm9pZCkpKVxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTEyLSNkZWZpbmUgUURJU0NfTU9GRl9JRFgobW9mZilcdChtb2ZmIC8gc2l6ZW9mKHZvaWQgKCopKHZvaWQpKSlcbi0tXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM9MzM9c3RhdGljIGJvb2wgYnBmX3FkaXNjX2lzX3ZhbGlkX2FjY2VzcyhpbnQgb2ZmLCBpbnQgc2l6ZSxcbi0tXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtNDEtXHRhcmcgPSBidGZfY3R4X2FyZ19pZHgoYnRmLCBwcm9nLVx1MDAzZWF1eC1cdTAwM2VhdHRhY2hfZnVuY19wcm90bywgb2ZmKTtcbm5ldC9zY2hlZC9icGZfcWRpc2MuYzo0MjpcdGlmIChwcm9nLVx1MDAzZWF1eC1cdTAwM2VhdHRhY2hfc3Rfb3BzX21lbWJlcl9vZmYgPT0gb2Zmc2V0b2Yoc3RydWN0IFFkaXNjX29wcywgZW5xdWV1ZSkpIHtcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy00My1cdFx0aWYgKGFyZyA9PSAyIFx1MDAyNlx1MDAyNiB0eXBlID09IEJQRl9SRUFEKSB7XG4tLVxubmV0L3NjaGVkL2JwZl9xZGlzYy5jPTEzNT1zdGF0aWMgaW50IGJwZl9xZGlzY19nZW5fcHJvbG9ndWUoc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZiwgYm9vbCBkaXJlY3Rfd3JpdGUsXG4tLVxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTEzOS1cbm5ldC9zY2hlZC9icGZfcWRpc2MuYzoxNDA6XHRpZiAocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXR0YWNoX3N0X29wc19tZW1iZXJfb2ZmICE9IG9mZnNldG9mKHN0cnVjdCBRZGlzY19vcHMsIGluaXQpKVxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTE0MS1cdFx0cmV0dXJuIDA7XG4tLVxubmV0L3NjaGVkL2JwZl9xZGlzYy5jPTE2NT1zdGF0aWMgaW50IGJwZl9xZGlzY19nZW5fZXBpbG9ndWUoc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZiwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLS1cbm5ldC9zY2hlZC9icGZfcWRpc2MuYy0xNjktXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM6MTcwOlx0aWYgKHByb2ctXHUwMDNlYXV4LVx1MDAzZWF0dGFjaF9zdF9vcHNfbWVtYmVyX29mZiAhPSBvZmZzZXRvZihzdHJ1Y3QgUWRpc2Nfb3BzLCByZXNldCkgXHUwMDI2XHUwMDI2XG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM6MTcxOlx0ICAgIHByb2ctXHUwMDNlYXV4LVx1MDAzZWF0dGFjaF9zdF9vcHNfbWVtYmVyX29mZiAhPSBvZmZzZXRvZihzdHJ1Y3QgUWRpc2Nfb3BzLCBkZXN0cm95KSlcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy0xNzItXHRcdHJldHVybiAwO1xuLS1cbm5ldC9zY2hlZC9icGZfcWRpc2MuYz0zNjE9c3RhdGljIGludCBicGZfcWRpc2NfaW5pdF9tZW1iZXIoY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxuLS1cbm5ldC9zY2hlZC9icGZfcWRpc2MuYy0zNjQte1xubmV0L3NjaGVkL2JwZl9xZGlzYy5jOjM2NTpcdGNvbnN0IHN0cnVjdCBRZGlzY19vcHMgKnVxZGlzY19vcHM7XG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM6MzY2Olx0c3RydWN0IFFkaXNjX29wcyAqcWRpc2Nfb3BzO1xubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTM2Ny1cdHUzMiBtb2ZmO1xubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTM2OC1cbm5ldC9zY2hlZC9icGZfcWRpc2MuYzozNjk6XHR1cWRpc2Nfb3BzID0gKGNvbnN0IHN0cnVjdCBRZGlzY19vcHMgKil1ZGF0YTtcbm5ldC9zY2hlZC9icGZfcWRpc2MuYzozNzA6XHRxZGlzY19vcHMgPSAoc3RydWN0IFFkaXNjX29wcyAqKWtkYXRhO1xubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTM3MS1cbi0tXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtMzczLVx0c3dpdGNoIChtb2ZmKSB7XG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM6Mzc0Olx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3QgUWRpc2Nfb3BzLCBwcml2X3NpemUpOlxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTM3NS1cdFx0aWYgKHVxZGlzY19vcHMtXHUwMDNlcHJpdl9zaXplKVxuLS1cbm5ldC9zY2hlZC9icGZfcWRpc2MuYy0zNzgtXHRcdHJldHVybiAxO1xubmV0L3NjaGVkL2JwZl9xZGlzYy5jOjM3OTpcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IFFkaXNjX29wcywgcGVlayk6XG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtMzgwLVx0XHRxZGlzY19vcHMtXHUwMDNlcGVlayA9IHFkaXNjX3BlZWtfZGVxdWV1ZWQ7XG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtMzgxLVx0XHRyZXR1cm4gMDtcbm5ldC9zY2hlZC9icGZfcWRpc2MuYzozODI6XHRjYXNlIG9mZnNldG9mKHN0cnVjdCBRZGlzY19vcHMsIGlkKTpcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy0zODMtXHRcdGlmIChicGZfb2JqX25hbWVfY3B5KHFkaXNjX29wcy1cdTAwM2VpZCwgdXFkaXNjX29wcy1cdTAwM2VpZCxcbi0tXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM9NDAyPXN0YXRpYyBpbnQgYnBmX3FkaXNjX3ZhbGlkYXRlKHZvaWQgKmtkYXRhKVxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTQwMy17XG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM6NDA0Olx0c3RydWN0IFFkaXNjX29wcyAqb3BzID0gKHN0cnVjdCBRZGlzY19vcHMgKilrZGF0YTtcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy00MDUtXG4tLVxubmV0L3NjaGVkL2JwZl9xZGlzYy5jPTQzND1zdGF0aWMgdm9pZCBRZGlzY19vcHNfX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTQzNy1cbm5ldC9zY2hlZC9icGZfcWRpc2MuYzo0Mzg6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgX19icGZfb3BzX3FkaXNjX29wcyA9IHtcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy00MzktXHQuZW5xdWV1ZSA9IFFkaXNjX29wc19fZW5xdWV1ZSxcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTExOT1zdGF0aWMgREVGSU5FX1JXTE9DSyhxZGlzY19tb2RfbG9jayk7XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xMjgtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjEyOTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyAqcWRpc2NfYmFzZTtcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTMwLVxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTMyLVxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMzM6aW50IHJlZ2lzdGVyX3FkaXNjKHN0cnVjdCBRZGlzY19vcHMgKnFvcHMpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEzNC17XG5uZXQvc2NoZWQvc2NoX2FwaS5jOjEzNTpcdHN0cnVjdCBRZGlzY19vcHMgKnEsICoqcXA7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEzNi1cdGludCByYyA9IC1FRVhJU1Q7XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz0xNzU9RVhQT1JUX1NZTUJPTChyZWdpc3Rlcl9xZGlzYyk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE3Ni1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTc3OnZvaWQgdW5yZWdpc3Rlcl9xZGlzYyhzdHJ1Y3QgUWRpc2Nfb3BzICpxb3BzKVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNzgte1xubmV0L3NjaGVkL3NjaF9hcGkuYzoxNzk6XHRzdHJ1Y3QgUWRpc2Nfb3BzICpxLCAqKnFwO1xubmV0L3NjaGVkL3NjaF9hcGkuYy0xODAtXHRpbnQgZXJyID0gLUVOT0VOVDtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE5OD12b2lkIHFkaXNjX2dldF9kZWZhdWx0KGNoYXIgKm5hbWUsIHNpemVfdCBsZW4pXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yMDQtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjIwNTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyAqcWRpc2NfbG9va3VwX2RlZmF1bHQoY29uc3QgY2hhciAqbmFtZSlcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjA2LXtcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjA3Olx0c3RydWN0IFFkaXNjX29wcyAqcSA9IE5VTEw7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTIwOC1cbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTIyMT1pbnQgcWRpc2Nfc2V0X2RlZmF1bHQoY29uc3QgY2hhciAqbmFtZSlcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjIyLXtcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjIzOlx0Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqb3BzO1xubmV0L3NjaGVkL3NjaF9hcGkuYy0yMjQtXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz0zMzk9c3RhdGljIHN0cnVjdCBRZGlzYyAqcWRpc2NfbGVhZihzdHJ1Y3QgUWRpc2MgKnAsIHUzMiBjbGFzc2lkLFxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMzU5LVxubmV0L3NjaGVkL3NjaF9hcGkuYzozNjA6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgKnFkaXNjX2xvb2t1cF9vcHMoc3RydWN0IG5sYXR0ciAqa2luZClcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMzYxLXtcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MzYyOlx0c3RydWN0IFFkaXNjX29wcyAqcSA9IE5VTEw7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTM2My1cbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTEyNzQ9c3RhdGljIHN0cnVjdCBRZGlzYyAqcWRpc2NfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xMjgyLVx0c3RydWN0IFFkaXNjICpzY2g7XG5uZXQvc2NoZWQvc2NoX2FwaS5jOjEyODM6XHRzdHJ1Y3QgUWRpc2Nfb3BzICpvcHM7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEyODQtXHRzdHJ1Y3QgcWRpc2Nfc2l6ZV90YWJsZSAqc3RhYjtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE4MDE9c3RhdGljIHZvaWQgcmVxdWVzdF9xZGlzY19tb2R1bGUoc3RydWN0IG5sYXR0ciAqa2luZClcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTgwMi17XG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE4MDM6XHRzdHJ1Y3QgUWRpc2Nfb3BzICpvcHM7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE4MDQtXHRjaGFyIG5hbWVbSUZOQU1TSVpdO1xuLS1cbm5ldC9zY2hlZC9zY2hfYmxhY2tob2xlLmM9MjM9c3RhdGljIHN0cnVjdCBza19idWZmICpibGFja2hvbGVfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX2JsYWNraG9sZS5jLTI3LVxubmV0L3NjaGVkL3NjaF9ibGFja2hvbGUuYzoyODpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBibGFja2hvbGVfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX2JsYWNraG9sZS5jLTI5LVx0LmlkXHRcdD0gXCYjMzQ7YmxhY2tob2xlXCYjMzQ7LFxuLS1cbm5ldC9zY2hlZC9zY2hfY2FrZS5jPTMyMzE9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgY2FrZV9jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9jYWtlLmMtMzI0MS1cbm5ldC9zY2hlZC9zY2hfY2FrZS5jOjMyNDI6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgY2FrZV9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfY2FrZS5jLTMyNDMtXHQuY2xfb3BzXHRcdD1cdFx1MDAyNmNha2VfY2xhc3Nfb3BzLFxuLS1cbm5ldC9zY2hlZC9zY2hfY2FrZS5jPTMzNDM9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgY2FrZV9tcV9jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9jYWtlLmMtMzM1Mi1cbm5ldC9zY2hlZC9zY2hfY2FrZS5jOjMzNTM6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgY2FrZV9tcV9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfY2FrZS5jLTMzNTQtXHQuY2xfb3BzXHRcdD1cdFx1MDAyNmNha2VfbXFfY2xhc3Nfb3BzLFxuLS1cbm5ldC9zY2hlZC9zY2hfY2JzLmM9NTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIGNic19jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9jYnMuYy01NDgtXG5uZXQvc2NoZWQvc2NoX2Nicy5jOjU0OTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBjYnNfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX2Nicy5jLTU1MC1cdC5pZFx0XHQ9XHRcJiMzNDtjYnNcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9jaG9rZS5jPTQ4Nj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmNob2tlX3BlZWtfaGVhZChzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX2Nob2tlLmMtNDkyLVxubmV0L3NjaGVkL3NjaF9jaG9rZS5jOjQ5MzpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBjaG9rZV9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfY2hva2UuYy00OTQtXHQuaWRcdFx0PVx0XCYjMzQ7Y2hva2VcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9jb2RlbC5jPTI4ND1zdGF0aWMgdm9pZCBjb2RlbF9yZXNldChzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX2NvZGVsLmMtMjkxLVxubmV0L3NjaGVkL3NjaF9jb2RlbC5jOjI5MjpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBjb2RlbF9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfY29kZWwuYy0yOTMtXHQuaWRcdFx0PVx0XCYjMzQ7Y29kZWxcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9kcnIuYz00NjA9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgZHJyX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ3NC1cbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDc1OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIGRycl9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDc2LVx0LmNsX29wc1x0XHQ9IFx1MDAyNmRycl9jbGFzc19vcHMsXG4tLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9MTE5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBkdWFscGkyX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMjAxLVxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTIwMjpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBkdWFscGkyX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIwMy1cdC5pZFx0XHQ9IFwmIzM0O2R1YWxwaTJcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9ldGYuYz00NjA9c3RhdGljIGludCBldGZfZHVtcChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvc2NoZWQvc2NoX2V0Zi5jLTQ5MC1cbm5ldC9zY2hlZC9zY2hfZXRmLmM6NDkxOnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIGV0Zl9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfZXRmLmMtNDkyLVx0LmlkXHRcdD1cdFwmIzM0O2V0ZlwmIzM0Oyxcbi0tXG5uZXQvc2NoZWQvc2NoX2V0cy5jPTgwMD1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBldHNfY2xhc3Nfb3BzID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfZXRzLmMtODEzLVxubmV0L3NjaGVkL3NjaF9ldHMuYzo4MTQ6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgZXRzX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9ldHMuYy04MTUtXHQuY2xfb3BzXHRcdD0gXHUwMDI2ZXRzX2NsYXNzX29wcyxcbi0tXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYz0xODI9c3RhdGljIGludCBmaWZvX2hkX2R1bXAoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3NjaGVkL3NjaF9maWZvLmMtMTg2LVxubmV0L3NjaGVkL3NjaF9maWZvLmM6MTg3OnN0cnVjdCBRZGlzY19vcHMgcGZpZm9fcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX2ZpZm8uYy0xODgtXHQuaWRcdFx0PVx0XCYjMzQ7cGZpZm9cJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9maWZvLmM9MjAwPUVYUE9SVF9TWU1CT0wocGZpZm9fcWRpc2Nfb3BzKTtcbm5ldC9zY2hlZC9zY2hfZmlmby5jLTIwMS1cbm5ldC9zY2hlZC9zY2hfZmlmby5jOjIwMjpzdHJ1Y3QgUWRpc2Nfb3BzIGJmaWZvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9maWZvLmMtMjAzLVx0LmlkXHRcdD1cdFwmIzM0O2JmaWZvXCYjMzQ7LFxuLS1cbm5ldC9zY2hlZC9zY2hfZmlmby5jPTIxNT1FWFBPUlRfU1lNQk9MKGJmaWZvX3FkaXNjX29wcyk7XG5uZXQvc2NoZWQvc2NoX2ZpZm8uYy0yMTYtXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYzoyMTc6c3RydWN0IFFkaXNjX29wcyBwZmlmb19oZWFkX2Ryb3BfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX2ZpZm8uYy0yMTgtXHQuaWRcdFx0PVx0XCYjMzQ7cGZpZm9faGVhZF9kcm9wXCYjMzQ7LFxuLS1cbm5ldC9zY2hlZC9zY2hfZmlmby5jPTI1ND1FWFBPUlRfU1lNQk9MKGZpZm9fc2V0X2xpbWl0KTtcbm5ldC9zY2hlZC9zY2hfZmlmby5jLTI1NS1cbm5ldC9zY2hlZC9zY2hfZmlmby5jOjI1NjpzdHJ1Y3QgUWRpc2MgKmZpZm9fY3JlYXRlX2RmbHQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBRZGlzY19vcHMgKm9wcyxcbm5ldC9zY2hlZC9zY2hfZmlmby5jLTI1Ny1cdFx0XHQgICAgICAgdW5zaWduZWQgaW50IGxpbWl0LFxuLS1cbm5ldC9zY2hlZC9zY2hfZnEuYz0xMzQyPXN0YXRpYyBpbnQgZnFfZHVtcF9zdGF0cyhzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IGduZXRfZHVtcCAqZClcbi0tXG5uZXQvc2NoZWQvc2NoX2ZxLmMtMTM3OC1cbm5ldC9zY2hlZC9zY2hfZnEuYzoxMzc5OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIGZxX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9mcS5jLTEzODAtXHQuaWRcdFx0PVx0XCYjMzQ7ZnFcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9mcV9jb2RlbC5jPTc1MT1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBmcV9jb2RlbF9jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9mcV9jb2RlbC5jLTc2MS1cbm5ldC9zY2hlZC9zY2hfZnFfY29kZWwuYzo3NjI6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgZnFfY29kZWxfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX2ZxX2NvZGVsLmMtNzYzLVx0LmNsX29wc1x0XHQ9XHRcdTAwMjZmcV9jb2RlbF9jbGFzc19vcHMsXG4tLVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYz01NTY9c3RhdGljIHZvaWQgZnFfcGllX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01NjUtXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jOjU2NjpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBmcV9waWVfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTU2Ny1cdC5pZFx0XHQ9IFwmIzM0O2ZxX3BpZVwmIzM0Oyxcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0zNi0vKiBRZGlzYyB0byB1c2UgYnkgZGVmYXVsdCAqL1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6Mzc6Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqZGVmYXVsdF9xZGlzY19vcHMgPSBcdTAwMjZwZmlmb19mYXN0X29wcztcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTM4LUVYUE9SVF9TWU1CT0woZGVmYXVsdF9xZGlzY19vcHMpO1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTY5Mz1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm5vb3BfZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTY5Ny1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjY5ODpzdHJ1Y3QgUWRpc2Nfb3BzIG5vb3BfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02OTktXHQuaWRcdFx0PVx0XCYjMzQ7bm9vcFwmIzM0Oyxcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz03MzQ9c3RhdGljIGludCBub3F1ZXVlX2luaXQoc3RydWN0IFFkaXNjICpxZGlzYywgc3RydWN0IG5sYXR0ciAqb3B0LFxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTc0My1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjc0NDpzdHJ1Y3QgUWRpc2Nfb3BzIG5vcXVldWVfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy03NDUtXHQuaWRcdFx0PVx0XCYjMzQ7bm9xdWV1ZVwmIzM0Oyxcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz05NDc9c3RhdGljIGludCBwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IFFkaXNjICpzY2gsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTYzLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTY0OnN0cnVjdCBRZGlzY19vcHMgcGZpZm9fZmFzdF9vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk2NS1cdC5pZFx0XHQ9XHRcJiMzNDtwZmlmb19mYXN0XCYjMzQ7LFxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTk4Mj1zdHJ1Y3QgUWRpc2MgKnFkaXNjX2FsbG9jKHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjk4MzpcdFx0XHQgIGNvbnN0IHN0cnVjdCBRZGlzY19vcHMgKm9wcyxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk4NC1cdFx0XHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMDQxPXN0cnVjdCBRZGlzYyAqcWRpc2NfY3JlYXRlX2RmbHQoc3RydWN0IG5ldGRldl9xdWV1ZSAqZGV2X3F1ZXVlLFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTA0MjpcdFx0XHRcdGNvbnN0IHN0cnVjdCBRZGlzY19vcHMgKm9wcyxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNDMtXHRcdFx0XHR1bnNpZ25lZCBpbnQgcGFyZW50aWQsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTA3Mj12b2lkIHFkaXNjX3Jlc2V0KHN0cnVjdCBRZGlzYyAqcWRpc2MpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDczLXtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEwNzQ6XHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMgPSBxZGlzYy1cdTAwM2VvcHM7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDc1LVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTExMDY9c3RhdGljIHZvaWQgX19xZGlzY19kZXN0cm95KHN0cnVjdCBRZGlzYyAqcWRpc2MpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTA3LXtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExMDg6XHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICAqb3BzID0gcWRpc2MtXHUwMDNlb3BzO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEwOS1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYocWRpc2MpO1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEyMDc9c3RhdGljIHZvaWQgYXR0YWNoX29uZV9kZWZhdWx0X3FkaXNjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTIxMS1cdHN0cnVjdCBRZGlzYyAqcWRpc2M7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMjEyOlx0Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqb3BzID0gZGVmYXVsdF9xZGlzY19vcHM7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjEzLVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTE0MjQ9c3RhdGljIGludCBxZGlzY19jaGFuZ2VfdHhfcXVldWVfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTQyNy1cdHN0cnVjdCBRZGlzYyAqcWRpc2MgPSBydG5sX2RlcmVmZXJlbmNlKGRldl9xdWV1ZS1cdTAwM2VxZGlzY19zbGVlcGluZyk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNDI4Olx0Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqb3BzID0gcWRpc2MtXHUwMDNlb3BzO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTQyOS1cbi0tXG5uZXQvc2NoZWQvc2NoX2dyZWQuYz05MDg9c3RhdGljIHZvaWQgZ3JlZF9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxuLS1cbm5ldC9zY2hlZC9zY2hfZ3JlZC5jLTkyMC1cbm5ldC9zY2hlZC9zY2hfZ3JlZC5jOjkyMTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBncmVkX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9ncmVkLmMtOTIyLVx0LmlkXHRcdD1cdFwmIzM0O2dyZWRcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9oZnNjLmM9MTY1OD1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBoZnNjX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2hmc2MuYy0xNjcyLVxubmV0L3NjaGVkL3NjaF9oZnNjLmM6MTY3MzpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBoZnNjX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9oZnNjLmMtMTY3NC1cdC5pZFx0XHQ9IFwmIzM0O2hmc2NcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9oaGYuYz03MTQ9c3RhdGljIGludCBoaGZfZHVtcF9zdGF0cyhzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IGduZXRfZHVtcCAqZClcbi0tXG5uZXQvc2NoZWQvc2NoX2hoZi5jLTcyNi1cbm5ldC9zY2hlZC9zY2hfaGhmLmM6NzI3OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIGhoZl9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzI4LVx0LmlkXHRcdD1cdFwmIzM0O2hoZlwmIzM0Oyxcbi0tXG5uZXQvc2NoZWQvc2NoX2h0Yi5jPTIxMzA9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgaHRiX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2h0Yi5jLTIxNDUtXG5uZXQvc2NoZWQvc2NoX2h0Yi5jOjIxNDY6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgaHRiX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9odGIuYy0yMTQ3LVx0LmNsX29wc1x0XHQ9XHRcdTAwMjZodGJfY2xhc3Nfb3BzLFxuLS1cbm5ldC9zY2hlZC9zY2hfaW5ncmVzcy5jPTE1MD1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBpbmdyZXNzX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYy0xNTktXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYzoxNjA6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgaW5ncmVzc19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfaW5ncmVzcy5jLTE2MS1cdC5jbF9vcHNcdFx0XHQ9XHRcdTAwMjZpbmdyZXNzX2NsYXNzX29wcyxcbi0tXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYz0zMjY9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgY2xzYWN0X2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYy0zMzUtXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYzozMzY6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgY2xzYWN0X3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmMtMzM3LVx0LmNsX29wc1x0XHRcdD1cdFx1MDAyNmNsc2FjdF9jbGFzc19vcHMsXG4tLVxubmV0L3NjaGVkL3NjaF9tcS5jPTY4PWludCBtcV9pbml0X2NvbW1vbihzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxubmV0L3NjaGVkL3NjaF9tcS5jLTY5LVx0XHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2ssXG5uZXQvc2NoZWQvc2NoX21xLmM6NzA6XHRcdCAgIGNvbnN0IHN0cnVjdCBRZGlzY19vcHMgKnFkaXNjX29wcylcbm5ldC9zY2hlZC9zY2hfbXEuYy03MS17XG4tLVxubmV0L3NjaGVkL3NjaF9tcS5jPTI5ND1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBtcV9jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9tcS5jLTMwMy1cbm5ldC9zY2hlZC9zY2hfbXEuYzozMDQ6c3RydWN0IFFkaXNjX29wcyBtcV9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfbXEuYy0zMDUtXHQuY2xfb3BzXHRcdD0gXHUwMDI2bXFfY2xhc3Nfb3BzLFxuLS1cbm5ldC9zY2hlZC9zY2hfbXFwcmlvLmM9NzU4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIG1xcHJpb19jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9tcXByaW8uYy03NjctXG5uZXQvc2NoZWQvc2NoX21xcHJpby5jOjc2ODpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBtcXByaW9fcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX21xcHJpby5jLTc2OS1cdC5jbF9vcHNcdFx0PSBcdTAwMjZtcXByaW9fY2xhc3Nfb3BzLFxuLS1cbm5ldC9zY2hlZC9zY2hfbXVsdGlxLmM9MzcxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIG11bHRpcV9jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYy0zODItXG5uZXQvc2NoZWQvc2NoX211bHRpcS5jOjM4MzpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBtdWx0aXFfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX211bHRpcS5jLTM4NC1cdC5uZXh0XHRcdD1cdE5VTEwsXG4tLVxubmV0L3NjaGVkL3NjaF9uZXRlbS5jPTEzOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgbmV0ZW1fY2xhc3Nfb3BzID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfbmV0ZW0uYy0xNDAxLVxubmV0L3NjaGVkL3NjaF9uZXRlbS5jOjE0MDI6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgbmV0ZW1fcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX25ldGVtLmMtMTQwMy1cdC5pZFx0XHQ9XHRcJiMzNDtuZXRlbVwmIzM0Oyxcbi0tXG5uZXQvc2NoZWQvc2NoX3BpZS5jPTU0Mz1zdGF0aWMgdm9pZCBwaWVfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTU1MC1cbm5ldC9zY2hlZC9zY2hfcGllLmM6NTUxOnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHBpZV9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTUyLVx0LmlkXHRcdD0gXCYjMzQ7cGllXCYjMzQ7LFxuLS1cbm5ldC9zY2hlZC9zY2hfcGx1Zy5jPTE1OD1zdGF0aWMgaW50IHBsdWdfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4tLVxubmV0L3NjaGVkL3NjaF9wbHVnLmMtMjA0LVxubmV0L3NjaGVkL3NjaF9wbHVnLmM6MjA1OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHBsdWdfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX3BsdWcuYy0yMDYtXHQuaWQgICAgICAgICAgPSAgICAgICBcJiMzNDtwbHVnXCYjMzQ7LFxuLS1cbm5ldC9zY2hlZC9zY2hfcHJpby5jPTM5ND1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBwcmlvX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX3ByaW8uYy00MDUtXG5uZXQvc2NoZWQvc2NoX3ByaW8uYzo0MDY6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgcHJpb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfcHJpby5jLTQwNy1cdC5uZXh0XHRcdD1cdE5VTEwsXG4tLVxubmV0L3NjaGVkL3NjaF9xZnEuYz0xNTEzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIHFmcV9jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9xZnEuYy0xNTI3LVxubmV0L3NjaGVkL3NjaF9xZnEuYzoxNTI4OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHFmcV9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfcWZxLmMtMTUyOS1cdC5jbF9vcHNcdFx0PSBcdTAwMjZxZnFfY2xhc3Nfb3BzLFxuLS1cbm5ldC9zY2hlZC9zY2hfcmVkLmM9NTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIHJlZF9jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9yZWQuYy01NDgtXG5uZXQvc2NoZWQvc2NoX3JlZC5jOjU0OTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyByZWRfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvc2NoZWQvc2NoX3JlZC5jLTU1MC1cdC5pZFx0XHQ9XHRcJiMzNDtyZWRcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9zZmIuYz02OTY9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgc2ZiX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX3NmYi5jLTcwOC1cbm5ldC9zY2hlZC9zY2hfc2ZiLmM6NzA5OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHNmYl9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfc2ZiLmMtNzEwLVx0LmlkXHRcdD1cdFwmIzM0O3NmYlwmIzM0Oyxcbi0tXG5uZXQvc2NoZWQvc2NoX3NmcS5jPTk1MT1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBzZnFfY2xhc3Nfb3BzID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfc2ZxLmMtOTYxLVxubmV0L3NjaGVkL3NjaF9zZnEuYzo5NjI6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgc2ZxX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9zZnEuYy05NjMtXHQuY2xfb3BzXHRcdD1cdFx1MDAyNnNmcV9jbGFzc19vcHMsXG4tLVxubmV0L3NjaGVkL3NjaF9za2JwcmlvLmM9MjcyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIHNrYnByaW9fY2xhc3Nfb3BzID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfc2ticHJpby5jLTI3OS1cbm5ldC9zY2hlZC9zY2hfc2ticHJpby5jOjI4MDpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBza2JwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9za2JwcmlvLmMtMjgxLVx0LmNsX29wc1x0XHQ9XHRcdTAwMjZza2JwcmlvX2NsYXNzX29wcyxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTI1MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgdGFwcmlvX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI1NDUtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI1NDY6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTQ3LVx0LmNsX29wc1x0XHQ9IFx1MDAyNnRhcHJpb19jbGFzc19vcHMsXG4tLVxubmV0L3NjaGVkL3NjaF90YmYuYz02MDA9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgdGJmX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX3RiZi5jLTYwNy1cbm5ldC9zY2hlZC9zY2hfdGJmLmM6NjA4OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHRiZl9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfdGJmLmMtNjA5LVx0Lm5leHRcdFx0PVx0TlVMTCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RlcWwuYz01Mj1zdHJ1Y3QgdGVxbF9tYXN0ZXIge1xubmV0L3NjaGVkL3NjaF90ZXFsLmM6NTM6XHRzdHJ1Y3QgUWRpc2Nfb3BzIHFvcHM7XG5uZXQvc2NoZWQvc2NoX3RlcWwuYy01NC1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG4tLVxubmV0L3NjaGVkL3NjaF90ZXFsLmM9NDkwPXN0YXRpYyBfX2luaXQgdm9pZCB0ZXFsX21hc3Rlcl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9zY2hlZC9zY2hfdGVxbC5jLTQ5Mi1cdHN0cnVjdCB0ZXFsX21hc3RlciAqbWFzdGVyID0gbmV0ZGV2X3ByaXYoZGV2KTtcbm5ldC9zY2hlZC9zY2hfdGVxbC5jOjQ5MzpcdHN0cnVjdCBRZGlzY19vcHMgKm9wcyA9IFx1MDAyNm1hc3Rlci1cdTAwM2Vxb3BzO1xubmV0L3NjaGVkL3NjaF90ZXFsLmMtNDk0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTE4NAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDc5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIENhbmRpZGF0ZSBBc3Nlc3NtZW50OiBOZXR3b3JrIFNjaGVkdWxlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2VzLiBJIHNlZSB0aGUgcGF0Y2ggdG91Y2hlcyBhIGJ1bmNoIG9mIHBhY2tldCBzY2hlZHVsZXJzOiBgc2NoX2Ryci5jYCwgYHNjaF9kdWFscGkyLmNgLCBgc2NoX2V0cy5jYCwgYHNjaF9mcS5jYCwgYHNjaF9mcV9waWUuY2AsIGBzY2hfaGhmLmNgLCBgc2NoX3BpZS5jYCwgYW5kIGBzY2hfc2ZxLmNgLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgZ2xhbmNlIGF0IHRoZSBmdW5jdGlvbnMgdGhhdCB3ZXJlIG1vZGlmaWVkIGluIGVhY2ggZmlsZTogaW5pdGlhbGl6YXRpb24sIGNoYW5nZSwgZW5xdWV1ZSwgYW5kIGRlcXVldWUgcm91dGluZXMgYXJlIGFsbCBwb3RlbnRpYWwgYXJlYXMgb2YgaW50ZXJlc3QuCgpOb3csIHRoZSBjb3JlIG9mIHRoZSBwYXRjaCBzZWVtcyB0byBiZSBhcm91bmQgaW5wdXQgdmFsaWRhdGlvbiBhbmQgY2xhbXBpbmcgb2YgcGFyYW1ldGVycywgcGFydGljdWxhcmx5IGBxdWFudHVtYCBhbmQgYG10dWAuIFRoYXQmIzM5O3MgYSByZWQgZmxhZyDigJMgdGhlc2Uga2luZHMgb2YgY2hhbmdlcyBjYW4gb2Z0ZW4gcmV2ZWFsIGludGVyZXN0aW5nIGVkZ2UgY2FzZXMgaW4gcmVzb3VyY2UgYWxsb2NhdGlvbiBvciB0cmFmZmljIHNoYXBpbmcgdGhhdCBhcmUgcGVyZmVjdCBmb3IgZnV6emluZy4gU3BlY2lmaWNhbGx5OgoKKiAgIGBzY2hfZHJyYDogUXVhbnR1bSBjbGFtcC4KKiAgIGBzY2hfZHVhbHBpMmA6IE10dSBjbGFtcCBhbmQgcG90ZW50aWFsbHkgcmVsYXRlZCB0byBgY19wcm90ZWN0aW9uYC4KKiAgIGBzY2hfZXRzYDogUXVhbnR1bSBjbGFtcC4KKiAgIGBzY2hfZnFgOiBgaXFfcmFuZ2VgIGFuZCBxdWFudHVtIGNsYW1waW5nLgoqICAgYHNjaF9mcV9waWVgOiBRdWFudHVtIG1pbmltdW0uCiogICBgc2NoX2hoZmA6IFF1YW50dW0gbWluaW11bSBhbmQgY2xhbXAuCiogICBgc2NoX3BpZWA6IE10dSBjbGFtcC4KKiAgIGBzY2hfc2ZxYDogUXVhbnR1bSBtYXggYW5kIG1pbmltdW0uCgpTbywgdGhlIGltcGFjdCBpcyBwcmV0dHkgZGlyZWN0OiB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBob3cgdGhlc2Ugc2NoZWR1bGVycyAqYmVoYXZlKiBkdXJpbmcgY29uZmlndXJhdGlvbiBhbmQgcnVudGltZSwgY29uY2VybmluZyBDUFUgc3RhbGxzLCBkcm9wcywgb3Igb3RoZXIgbG9naWMgcmVsYXRlZCBwcm9ibGVtcy4gVGhhdCYjMzk7cyBnb29kOyBmdW5jdGlvbmFsIGNoYW5nZXMgYXJlIG9mdGVuIGludGVyZXN0aW5nLgoKQXJlIHRoZSBjaGFuZ2VzIHJlYWNoYWJsZT8gQWJzb2x1dGVseS4gU3RhbmRhcmQgYHRjYCBuZXRsaW5rIGNvbW1hbmRzIHByb3ZpZGUgZGlyZWN0IHVzZXItc3BhY2UgY29udHJvbCBvdmVyIHRoZXNlIHFkaXNjcywgbWVhbmluZyBJIGNhbiBlYXNpbHkgaW5qZWN0IGNyYWZ0ZWQgaW5wdXRzIHZpYSB0b29scyBsaWtlIGBpcHJvdXRlMmAuIFRoaXMgcGF0Y2ggYWZmZWN0cyBsb2dpYyB0aGF0IGlzIGNvbmZpZ3VyZWQgdmlhIGB0Y2AuCgpJcyB0aGlzIHdvcnRoIGZ1enppbmc/IFllcywgd2l0aG91dCBhIGRvdWJ0LiBXZSYjMzk7cmUgbG9va2luZyBhdCBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gY29yZSBuZXR3b3JrIHNjaGVkdWxlciBsb2dpYywgZGlyZWN0bHkgZXhwb3NlZCB0aHJvdWdoIHVzZXItc3BhY2UgbmV0bGluayBpbnRlcmZhY2VzLiBUaGlzIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmaW5kaW5nIGJ1Z3MsIG1lbW9yeSBjb3JydXB0aW9ucywgYW5kIGV2ZW4gcG90ZW50aWFsIGRlbmlhbC1vZi1zZXJ2aWNlIHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIGludmFsaWQgb3IgZXh0cmVtZSBwYXJhbWV0ZXIgdmFsdWVzLgoKRmluYWxseSwgbGV0JiMzOTtzIHZlcmlmeSB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMuIEFsbCB0aGUgYE5FVF9TQ0hfKmAgY29uZmlncyBkZXBlbmQgb24gYE5FVF9TQ0hFRGAgKGFuZCBgTkVUYCkuIFNvLCB0aGUgZmVhdHVyZXMgYXJlIGVuYWJsZWQgYnkgYW4gdW1icmVsbGEgZmVhdHVyZSBhbmQgSSBzaG91bGQgbm90IHdvcnJ5IGFib3V0IGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzLiBJIHdpbGwgY2hlY2sgZm9yIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBgTkVUX1NDSEVEYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDg6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVudWNvbmZpZyBORVRfU0NIRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZy01LVxubmV0L3NjaGVkL0tjb25maWc6NjptZW51Y29uZmlnIE5FVF9TQ0hFRFxubmV0L3NjaGVkL0tjb25maWctNy1cdGJvb2wgXCYjMzQ7UW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA4OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNjI2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBLZXJuZWwmIzM5O3MgU2NoZWR1bGluZyBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCBmaWd1cmUgb3V0IHRoZXNlIGRlcGVuZGVuY2llcyBmb3IgYE5FVF9TQ0hfRlFfUElFYC4gUmlnaHQsIHRoZSBmaXJzdCB0aGluZyBpcyB0byBjb25maXJtIHdoYXQgdGhlIEtjb25maWcgZmlsZXMgYXJlIHRlbGxpbmcgbWUuIFNvLCBgTkVUX1NDSF9GUV9QSUVgICpkZXBlbmRzKiBvbiBgTkVUX1NDSF9QSUVgLiBNYWtlcyBzZW5zZSwgdGhleSYjMzk7cmUgcHJvYmFibHkgYnVpbGRpbmcgb24gZWFjaCBvdGhlci4gTm93LCBJIG5lZWQgdG8gb3BlbiB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlLCB3aGljaCBJIGtub3cgaXMgaW4gYG5ldC9zY2hlZC9LY29uZmlnYC4gVGltZSB0byBnZXQgYSBjbG9zZSBsb29rIGF0IHRob3NlIGVudHJpZXMgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gY2xlYXIgb24gYWxsIHRoZSBvdGhlciBvcHRpb24gZGVwZW5kZW5jaWVzIGFuZCBpbnRlcmFjdGlvbnMgd2l0aGluIHRoYXQgc2VjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDg6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTEwOlx0XG4gMTExOlx0Y29uZmlnIE5FVF9TQ0hfU0ZRXG4gMTEyOlx0XHR0cmlzdGF0ZSBcJiMzNDtTdG9jaGFzdGljIEZhaXJuZXNzIFF1ZXVlaW5nIChTRlEpXCYjMzQ7XG4gMTEzOlx0XHRoZWxwXG4gMTE0Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBTdG9jaGFzdGljIEZhaXJuZXNzIFF1ZXVlaW5nIChTRlEpXG4gMTE1Olx0XHQgIHBhY2tldCBzY2hlZHVsaW5nIGFsZ29yaXRobS5cbiAxMTY6XHRcbiAxMTc6XHRcdCAgU2VlIHRoZSB0b3Agb2YgXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3NmcS5jXHUwMDNlIGZvciBtb3JlIGRldGFpbHMuXG4gMTE4Olx0XG4gMTE5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAxMjA6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF9zZnEuXG4gMTIxOlx0XG4gMTIyOlx0Y29uZmlnIE5FVF9TQ0hfVEVRTFxuIDEyMzpcdFx0dHJpc3RhdGUgXCYjMzQ7VHJ1ZSBMaW5rIEVxdWFsaXplciAoVEVRTClcJiMzNDtcbiAxMjQ6XHRcdGhlbHBcbiAxMjU6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIFRydWUgTGluayBFcXVhbGl6ZXIgKFRMRSkgcGFja2V0XG4gMTI2Olx0XHQgIHNjaGVkdWxpbmcgYWxnb3JpdGhtLiBUaGlzIHF1ZXVlaW5nIGRpc2NpcGxpbmUgYWxsb3dzIHRoZSBjb21iaW5hdGlvblxuIDEyNzpcdFx0ICBvZiBzZXZlcmFsIHBoeXNpY2FsIGRldmljZXMgaW50byBvbmUgdmlydHVhbCBkZXZpY2UuXG4gMTI4Olx0XG4gMTI5Olx0XHQgIFNlZSB0aGUgdG9wIG9mIFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF90ZXFsLmNcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDg6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExOTcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIEtjb25maWcgZW50cmllczoKCioqUmV2aWV3aW5nIE5ldHdvcmsgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBuZXQvc2NoZWQvS2NvbmZpZ2AgZmlsZSBhbmQgcmVmcmVzaCBvdXIgbWVtb3J5IG9uIHNvbWUgb2YgdGhvc2UgdHJhZmZpYyBzaGFwaW5nIGFuZCBxdWV1aW5nIGRpc2NpcGxpbmVzLiBJJiMzOTttIHRoaW5raW5nLCBsZXQmIzM5O3MgcXVpY2tseSBqb2cgdGhyb3VnaCB0aGUgb3RoZXIgS2NvbmZpZyBlbnRyaWVzIGxpa2UgRFJSLCBFVFMsIEZRLCBGUV9QSUUsIEhIRiwgUElFLCBhbmQgRFVBTFBJMi4gSXQmIzM5O3MgYWx3YXlzIGJlbmVmaWNpYWwgdG8gaGF2ZSBhIG1lbnRhbCBtYXAgb2Ygd2hhdCYjMzk7cyBhdmFpbGFibGUgYW5kIGhvdyB0aGV5IHJlbGF0ZS4gSSB3YW50IHRvIHF1aWNrbHkgZXZhbHVhdGUgd2hpY2ggb2YgdGhlc2UgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIGEgcHJvamVjdCBvciBpZiBhbnl0aGluZyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIEkgbG9va2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjA1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMDU6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAyMDY6XHRcbiAyMDc6XHRjb25maWcgTkVUX1NDSF9EUlJcbiAyMDg6XHRcdHRyaXN0YXRlIFwmIzM0O0RlZmljaXQgUm91bmQgUm9iaW4gc2NoZWR1bGVyIChEUlIpXCYjMzQ7XG4gMjA5Olx0XHRoZWxwXG4gMjEwOlx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBEZWZpY2l0IFJvdW5kIFJvYmluIChEUlIpIHBhY2tldFxuIDIxMTpcdFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS5cbiAyMTI6XHRcbiAyMTM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDIxNDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBzY2hfZHJyLlxuIDIxNTpcdFxuIDIxNjpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIDIxNzpcdFxuIDIxODpcdGNvbmZpZyBORVRfU0NIX01RUFJJT1xuIDIxOTpcdFx0dHJpc3RhdGUgXCYjMzQ7TXVsdGktcXVldWUgcHJpb3JpdHkgc2NoZWR1bGVyIChNUVBSSU8pXCYjMzQ7XG4gMjIwOlx0XHRzZWxlY3QgTkVUX1NDSF9NUVBSSU9fTElCXG4gMjIxOlx0XHRoZWxwXG4gMjIyOlx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBNdWx0aS1xdWV1ZSBQcmlvcml0eSBzY2hlZHVsZXIuXG4gMjIzOlx0XHQgIFRoaXMgc2NoZWR1bGVyIGFsbG93cyBRT1MgdG8gYmUgb2ZmbG9hZGVkIG9uIE5JQ3MgdGhhdCBoYXZlIHN1cHBvcnRcbiAyMjQ6XHRcdCAgZm9yIG9mZmxvYWRpbmcgUU9TIHNjaGVkdWxlcnMuXG4gMjI1Olx0XG4gMjI2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbFxuIDIyNzpcdFx0ICBiZSBjYWxsZWQgc2NoX21xcHJpby5cbiAyMjg6XHRcbiAyMjk6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAyMzA6XHRcbiAyMzE6XHRjb25maWcgTkVUX1NDSF9TS0JQUklPXG4gMjMyOlx0XHR0cmlzdGF0ZSBcJiMzNDtTS0IgcHJpb3JpdHkgcXVldWUgc2NoZWR1bGVyIChTS0JQUklPKVwmIzM0O1xuIDIzMzpcdFx0aGVscFxuIDIzNDpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgU0tCIHByaW9yaXR5IHF1ZXVlXG4gMjM1Olx0XHQgIHNjaGVkdWxlci4gVGhpcyBzY2hlZHVsZXMgcGFja2V0cyBhY2NvcmRpbmcgdG8gc2tiLVx1MDAzZXByaW9yaXR5LFxuIDIzNjpcdFx0ICB3aGljaCBpcyB1c2VmdWwgZm9yIHJlcXVlc3QgcGFja2V0cyBpbiBEb1MgbWl0aWdhdGlvbiBzeXN0ZW1zIHN1Y2hcbiAyMzc6XHRcdCAgYXMgR2F0ZWtlZXBlci5cbiAyMzg6XHRcbiAyMzk6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsXG4gMjQwOlx0XHQgIGJlIGNhbGxlZCBzY2hfc2ticHJpby5cbiAyNDE6XHRcbiAyNDI6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAyNDM6XHRcbiAyNDQ6XHRjb25maWcgTkVUX1NDSF9DSE9LRVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjAwNAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgbGluZXMsIHRhaWxvcmVkIGZvciBhIGZlbGxvdyBleHBlcnQ6CgoqKkRpdmluZyBpbnRvIHRoZSBDcml0aWNhbCBTZWN0aW9uIChMaW5lcyAyOTUtNDMwKSoqCgpBbHJpZ2h0LCBzbywgbGV0JiMzOTtzIHplcm8gaW4gb24gbGluZXMgMjk1LTQzMC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgb2YgW2luc2VydCB5b3VyIGZpZWxkJiMzOTtzIHJlbGV2YW50IHByb2Nlc3MvZnVuY3Rpb25dIGlzIGxpa2VseSBpbXBsZW1lbnRlZC4gSSYjMzk7bSBpbW1lZGlhdGVseSBsb29raW5nIGZvciBrZXkgaW5kaWNhdG9ycyDigJMgYW55IGNsdWVzIGFib3V0IGRhdGEgc3RydWN0dXJlcyBiZWluZyBtYW5pcHVsYXRlZCwgYW55IG9idmlvdXMgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIHBvdGVudGlhbCBwb2ludHMgb2YgZmFpbHVyZS4uLiB5b3Uga25vdyB0aGUgZHJpbGwuIEdpdmVuIHRoZSBsZW5ndGggb2YgdGhpcyBzZWN0aW9uLCBJJiMzOTttIGV4cGVjdGluZyBzb21lIGxldmVsIG9mIGNvbXBsZXhpdHkuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGFsZ29yaXRobWljIGZsb3cuIEFyZSB0aGV5IGltcGxlbWVudGluZyBhIGNsYXNzaWMgYWxnb3JpdGhtLCBvciBpcyB0aGVyZSBhIGN1c3RvbSBzb2x1dGlvbiBpbiBwbGF5PyBXaGF0IGFyZSB0aGUgdHJhZGVvZmZzIHRoZXkmIzM5O3ZlIG1hZGU/IEhvdyB3ZWxsIGRvIHRoZXNlIHRyYWRlb2ZmcyBhbGlnbiB3aXRoIGVzdGFibGlzaGVkIGJlc3QgcHJhY3RpY2VzIGluIFt5b3VyIGZpZWxkXT8gSSYjMzk7bSBzY2FubmluZyBmb3IgYW55IHN1YnRsZSBpbmNvbnNpc3RlbmNpZXMgaW4gdmFyaWFibGUgbmFtaW5nIG9yIGNvbW1lbnRzOyB0aGVzZSBvZnRlbiB0ZWxsIGEgc3RvcnkgYWJvdXQgdGhlIGV2b2x1dGlvbiBvZiB0aGUgY29kZS4gSXMgdGhlIGNvZGUgbWFpbnRhaW5hYmxlLCBvciBoYXMgaXQgYmVjb21lIGEgYmVoZW1vdGggdG8gYmUgdGFtZWQuIFRoZSBnb2FsIGhlcmUgaXMgdG8gZXN0YWJsaXNoIGEgY2xlYXIgbWVudGFsIG1hcCBvZiB3aGF0JiMzOTtzIGhhcHBlbmluZy4gQW5kIGltcG9ydGFudGx5LCB0byBsb29rIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IG5lZWQgbXkgZm9jdXNlZCBhdHRlbnRpb24gaW4gdGhlIHByb2plY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA4OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyOTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI5NTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBzY2hfY2FrZS5cbiAyOTY6XHRcbiAyOTc6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAyOTg6XHRcbiAyOTk6XHRjb25maWcgTkVUX1NDSF9GUVxuIDMwMDpcdFx0dHJpc3RhdGUgXCYjMzQ7RmFpciBRdWV1ZVwmIzM0O1xuIDMwMTpcdFx0aGVscFxuIDMwMjpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgRlEgcGFja2V0IHNjaGVkdWxpbmcgYWxnb3JpdGhtLlxuIDMwMzpcdFxuIDMwNDpcdFx0ICBGUSBkb2VzIGZsb3cgc2VwYXJhdGlvbiwgYW5kIGlzIGFibGUgdG8gcmVzcGVjdCBwYWNpbmcgcmVxdWlyZW1lbnRzXG4gMzA1Olx0XHQgIHNldCBieSBUQ1Agc3RhY2sgaW50byBzay1cdTAwM2Vza19wYWNpbmdfcmF0ZSAoZm9yIGxvY2FsbHkgZ2VuZXJhdGVkXG4gMzA2Olx0XHQgIHRyYWZmaWMpXG4gMzA3Olx0XG4gMzA4Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAzMDk6XHRcdCAgd2lsbCBiZSBjYWxsZWQgc2NoX2ZxLlxuIDMxMDpcdFxuIDMxMTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIDMxMjpcdFxuIDMxMzpcdGNvbmZpZyBORVRfU0NIX0hIRlxuIDMxNDpcdFx0dHJpc3RhdGUgXCYjMzQ7SGVhdnktSGl0dGVyIEZpbHRlciAoSEhGKVwmIzM0O1xuIDMxNTpcdFx0aGVscFxuIDMxNjpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgSGVhdnktSGl0dGVyIEZpbHRlciAoSEhGKVxuIDMxNzpcdFx0ICBwYWNrZXQgc2NoZWR1bGluZyBhbGdvcml0aG0uXG4gMzE4Olx0XG4gMzE5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAzMjA6XHRcdCAgd2lsbCBiZSBjYWxsZWQgc2NoX2hoZi5cbiAzMjE6XHRcbiAzMjI6XHRjb25maWcgTkVUX1NDSF9QSUVcbiAzMjM6XHRcdHRyaXN0YXRlIFwmIzM0O1Byb3BvcnRpb25hbCBJbnRlZ3JhbCBjb250cm9sbGVyIEVuaGFuY2VkIChQSUUpIHNjaGVkdWxlclwmIzM0O1xuIDMyNDpcdFx0aGVscFxuIDMyNTpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgUHJvcG9ydGlvbmFsIEludGVncmFsIGNvbnRyb2xsZXJcbiAzMjY6XHRcdCAgRW5oYW5jZWQgc2NoZWR1bGVyIHBhY2tldCBzY2hlZHVsaW5nIGFsZ29yaXRobS5cbiAzMjc6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzgwMzNcbiAzMjg6XHRcbiAzMjk6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDMzMDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBzY2hfcGllLlxuIDMzMTpcdFxuIDMzMjpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIDMzMzpcdFxuIDMzNDpcdGNvbmZpZyBORVRfU0NIX0ZRX1BJRVxuIDMzNTpcdFx0ZGVwZW5kcyBvbiBORVRfU0NIX1BJRVxuIDMzNjpcdFx0dHJpc3RhdGUgXCYjMzQ7RmxvdyBRdWV1ZSBQcm9wb3J0aW9uYWwgSW50ZWdyYWwgY29udHJvbGxlciBFbmhhbmNlZCAoRlEtUElFKVwmIzM0O1xuIDMzNzpcdFx0aGVscFxuIDMzODpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgRmxvdyBRdWV1ZSBQcm9wb3J0aW9uYWwgSW50ZWdyYWxcbiAzMzk6XHRcdCAgY29udHJvbGxlciBFbmhhbmNlZCAoRlEtUElFKSBwYWNrZXQgc2NoZWR1bGluZyBhbGdvcml0aG0uXG4gMzQwOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM4MDMzXG4gMzQxOlx0XG4gMzQyOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAzNDM6XHRcdCAgd2lsbCBiZSBjYWxsZWQgc2NoX2ZxX3BpZS5cbiAzNDQ6XHRcbiAzNDU6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAzNDY6XHRcbiAzNDc6XHRjb25maWcgTkVUX1NDSF9JTkdSRVNTXG4gMzQ4Olx0XHR0cmlzdGF0ZSBcJiMzNDtJbmdyZXNzL2NsYXNzaWZpZXItYWN0aW9uIFFkaXNjXCYjMzQ7XG4gMzQ5Olx0XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG4gMzUwOlx0XHRzZWxlY3QgTkVUX1hHUkVTU1xuIDM1MTpcdFx0aGVscFxuIDM1MjpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBjbGFzc2lmaWVycyBmb3IgaW5jb21pbmcgYW5kL29yIG91dGdvaW5nXG4gMzUzOlx0XHQgIHBhY2tldHMuIFRoaXMgcWRpc2MgZG9lc24mIzM5O3QgZG8gYW55dGhpbmcgZWxzZSBiZXNpZGVzIHJ1bm5pbmcgY2xhc3NpZmllcnMsXG4gMzU0Olx0XHQgIHdoaWNoIGNhbiBhbHNvIGhhdmUgYWN0aW9ucyBhdHRhY2hlZCB0byB0aGVtLiBJbiBjYXNlIG9mIG91dGdvaW5nIHBhY2tldHMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA4OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMjIwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCByZXF1ZXN0LCBmb3JtYXR0ZWQgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBDb2RlYmFzZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gVGhlIHRhc2sgYXQgaGFuZCBjbGVhcmx5IGludm9sdmVzIGEgc3BlY2lmaWMgc2VjdGlvbiBvZiB0aGUgY29kZSwgYW5kIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGFyZWEuIEZvY3VzaW5nIG9uIGxpbmVzIDM4NSB0aHJvdWdoIDQzMCBpcyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC4gVGhpcyBwYXJ0aWN1bGFyIHNlZ21lbnQgbGlrZWx5IGhvbGRzIHRoZSBrZXkgdG8gYWRkcmVzc2luZyB0aGUgY3VycmVudCBwcm9ibGVtIG9yIHVuZGVyc3RhbmRpbmcgdGhlIHJlbGV2YW50IGZ1bmN0aW9uYWxpdHkuIEl0JiMzOTtzIGEgdGFyZ2V0ZWQgYXBwcm9hY2gsIGhvcGVmdWxseSBhdm9pZGluZyB1bm5lY2Vzc2FyeSBzY2FubmluZyBvZiB0aGUgZW50aXJlIG1vZHVsZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGdlbXMgYXJlIGhpZGRlbiBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDg6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzg1Olx0XG4gMzg2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAzODc6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF9wbHVnLlxuIDM4ODpcdFxuIDM4OTpcdGNvbmZpZyBORVRfU0NIX0VUU1xuIDM5MDpcdFx0dHJpc3RhdGUgXCYjMzQ7RW5oYW5jZWQgdHJhbnNtaXNzaW9uIHNlbGVjdGlvbiBzY2hlZHVsZXIgKEVUUylcJiMzNDtcbiAzOTE6XHRcdGhlbHBcbiAzOTI6XHQgICAgICAgICAgVGhlIEVuaGFuY2VkIFRyYW5zbWlzc2lvbiBTZWxlY3Rpb24gc2NoZWR1bGVyIGlzIGEgY2xhc3NmdWxcbiAzOTM6XHQgICAgICAgICAgcXVldWluZyBkaXNjaXBsaW5lIHRoYXQgbWVyZ2VzIGZ1bmN0aW9uYWxpdHkgb2YgUFJJTyBhbmQgRFJSXG4gMzk0Olx0ICAgICAgICAgIHFkaXNjcyBpbiBvbmUgc2NoZWR1bGVyLiBFVFMgbWFrZXMgaXQgZWFzeSB0byBjb25maWd1cmUgYSBzZXQgb2ZcbiAzOTU6XHQgICAgICAgICAgc3RyaWN0IGFuZCBiYW5kd2lkdGgtc2hhcmluZyBiYW5kcyB0byBpbXBsZW1lbnQgdGhlIHRyYW5zbWlzc2lvblxuIDM5NjpcdCAgICAgICAgICBzZWxlY3Rpb24gZGVzY3JpYmVkIGluIDgwMi4xUWF6LlxuIDM5NzpcdFxuIDM5ODpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgRVRTIHBhY2tldCBzY2hlZHVsaW5nXG4gMzk5Olx0XHQgIGFsZ29yaXRobS5cbiA0MDA6XHRcbiA0MDE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDQwMjpcdFx0ICB3aWxsIGJlIGNhbGxlZCBzY2hfZXRzLlxuIDQwMzpcdFxuIDQwNDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIDQwNTpcdFxuIDQwNjpcdGNvbmZpZyBORVRfU0NIX0JQRlxuIDQwNzpcdFx0Ym9vbCBcJiMzNDtCUEYtYmFzZWQgUWRpc2NcJiMzNDtcbiA0MDg6XHRcdGRlcGVuZHMgb24gQlBGX1NZU0NBTEwgXHUwMDI2XHUwMDI2IEJQRl9KSVQgXHUwMDI2XHUwMDI2IERFQlVHX0lORk9fQlRGXG4gNDA5Olx0XHRoZWxwXG4gNDEwOlx0XHQgIFRoaXMgb3B0aW9uIGFsbG93cyBCUEYtYmFzZWQgcXVldWVpbmcgZGlzaXBsaW5lcy4gV2l0aCBCUEYgc3RydWN0X29wcyxcbiA0MTE6XHRcdCAgdXNlcnMgY2FuIGltcGxlbWVudCBzdXBwb3J0ZWQgb3BlcmF0b3JzIGluIFFkaXNjX29wcyB1c2luZyBCUEYgcHJvZ3JhbXMuXG4gNDEyOlx0XHQgIFRoZSBxdWV1ZSBob2xkaW5nIHNrYiBjYW4gYmUgYnVpbHQgd2l0aCBCUEYgbWFwcyBvciBncmFwaHMuXG4gNDEzOlx0XG4gNDE0Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIEJQRi1iYXNlZCBRZGlzYy5cbiA0MTU6XHRcbiA0MTY6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiA0MTc6XHRcbiA0MTg6XHRjb25maWcgTkVUX1NDSF9EVUFMUEkyXG4gNDE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtEdWFsIFF1ZXVlIFBJIFNxdWFyZSAoRFVBTFBJMikgc2NoZWR1bGVyXCYjMzQ7XG4gNDIwOlx0XHRoZWxwXG4gNDIxOlx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBEdWFsIFF1ZXVlIFByb3BvcnRpb25hbCBJbnRlZ3JhbFxuIDQyMjpcdFx0ICBDb250cm9sbGVyIEltcHJvdmVkIHdpdGggYSBTcXVhcmUgc2NoZWR1bGluZyBhbGdvcml0aG0uXG4gNDIzOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM5MzMyXG4gNDI0Olx0XG4gNDI1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiA0MjY6XHRcdCAgd2lsbCBiZSBjYWxsZWQgc2NoX2R1YWxwaTIuXG4gNDI3Olx0XG4gNDI4Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gNDI5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI5IDA4OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MDg2CgkJCQkJCQlvdXRwdXQ6IDI0MwoJCQkJCQkJdGhvdWdodHM6IDc4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1cyBTeW1ib2wgQW5hbHlzaXMgYW5kIENvbmZpZ3VyYXRpb24gUmV2aWV3KioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBmb2N1cyBzeW1ib2xzLiBMb29rcyBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzZXQgb2YgbW9kaWZpZWQgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcXVldWluZyBkaXNjaXBsaW5lcyB3aXRoaW4gdGhlIG5ldHdvcmsgc2NoZWR1bGVyOiBgcGllX2Ryb3BfZWFybHlgIGluIGBzY2hfcGllLmNgLCBgZHJyX2NoYW5nZV9jbGFzc2AgaW4gYHNjaF9kcnIuY2AsIGFuZCBhIGZldyBmcm9tIGBzY2hfZXRzLmNgIChgZXRzX3F1YW50dW1fcGFyc2VgLCBgZXRzX3FkaXNjX2NoYW5nZWApLCBhbG9uZyB3aXRoIGNoYW5nZXMgaW4gYHNjaF9mcS5jYCAoYGZxX2NoYW5nZWAsIGBmcV9pbml0YCksIGBzY2hfZnFfcGllLmNgIChgZnFfcGllX2NoYW5nZWApLCBgc2NoX2hoZi5jYCAoYGhoZl9jaGFuZ2VgLCBgaGhmX2luaXRgKSwgYHNjaF9zZnEuY2AgKGBzZnFfY2hhbmdlYCksIGFuZCBmaW5hbGx5IHRoZSBgc2NoX2R1YWxwaTIuY2Agc2V0IGluY2x1ZGluZyBgZHVhbHBpMl9jYWxjdWxhdGVfY19wcm90ZWN0aW9uYCwgYGR1YWxwaTJfaW5pdGAsIGFuZCBgZHVhbHBpMl9jaGFuZ2VgLgoKTm93LCBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgaW4gdGhlc2UgZmlsZXMgdGhhdCBtaWdodCBuZWVkIGZ1cnRoZXIgc2NydXRpbnksIG9yIGlmIHRoZXNlIGlkZW50aWZpZWQgZnVuY3Rpb25zIGFyZSBpbmxpbmVkIG9yIGhhdmUgZGlzdGluY3Qgc3ltYm9scy4gIFNpbmNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW52b2x2ZWQgaW4gb3BlcmF0aW9ucyBsaWtlIGBjaGFuZ2VgIG9yIGBpbml0YCBhbmQgdGhleSBhcmUgbGlrZWx5IGJlaW5nIHJlZmVyZW5jZWQgdmlhIGZ1bmN0aW9uIHBvaW50ZXJzIGluIHN0cnVjdHVyZXMgbGlrZSBgUWRpc2Nfb3BzYCBhbmQgYFFkaXNjX2NsYXNzX29wc2AsIEkgY2FuIGFzc3VtZSB0aGVpciBhZGRyZXNzZXMgYXJlIGJlaW5nIHRha2VuLCB3aGljaCB3b3VsZCBwcmV2ZW50IHRoZSBjb21waWxlciBmcm9tIGlubGluaW5nIHRoZW0uIFRoYXQmIzM5O3MgZ29vZDsgdGhpcyBjb25maXJtcyB0aGV5JiMzOTtyZSBkaXN0aW5jdCBzeW1ib2xzIGFuZCB3YXJyYW50IHNwZWNpZmljIGF0dGVudGlvbi4KCkFscmlnaHQsIHRpbWUgdG8gY3JlYXRlIGEgZGVmaW5pdGl2ZSBsaXN0IG9mIHRoZSByZWxldmFudCBub24taG90LXBhdGggZm9jdXMgc3ltYm9scy4gSSYjMzk7dmUgZ290OiBgZHJyX2NoYW5nZV9jbGFzc2AsIGBldHNfcWRpc2NfY2hhbmdlYCwgYGZxX2NoYW5nZWAsIGBmcV9pbml0YCwgYGZxX3BpZV9jaGFuZ2VgLCBgaGhmX2NoYW5nZWAsIGBoaGZfaW5pdGAsIGBzZnFfY2hhbmdlYCwgYW5kIGBwaWVfZHJvcF9lYXJseWAuCgpOZXh0LCBJIGhhdmUgdG8gZW5zdXJlIHRoZSBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb25zIGFyZSBjb3JyZWN0LiBMZXQmIzM5O3Mgc2VlLi4uICBgTkVUX1NDSEVEYCwgYE5FVF9TQ0hfRFJSYCwgYE5FVF9TQ0hfRFVBTFBJMmAsIGBORVRfU0NIX0VUU2AsIGBORVRfU0NIX0ZRYCwgYE5FVF9TQ0hfRlFfUElFYCwgYE5FVF9TQ0hfSEhGYCwgYE5FVF9TQ0hfUElFYCwgYE5FVF9TQ0hfU0ZRYC4gIE9rYXksIGFsbCBwcmVzZW50LCBhbGwgY29ycmVjdGx5IHdpdGhvdXQgYENPTkZJR19gIHByZWZpeC4KCkRvdWJsZS1jaGVja2luZyB0aGUgV29ydGhGdXp6aW5nIGF0dHJpYnV0ZSAtIFllcywgdGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0byBmdXp6LiBUaGVzZSBjaGFuZ2VzIHRvdWNoIGNvcmUgdHJhZmZpYyBjb250cm9sIHFkaXNjIHF1ZXVlIHBhcmFtZXRlcnMsIHNwZWNpZmljYWxseSBxdWFudHVtIGFuZCBNVFUgaW5wdXRzLCBhbmQgYWZmZWN0IGVpZ2h0IGRpZmZlcmVudCBuZXR3b3JrIHNjaGVkdWxlcnMgKGBzY2hfZHJyYCwgYHNjaF9kdWFscGkyYCwgYHNjaF9ldHNgLCBgc2NoX2ZxYCwgYHNjaF9mcV9waWVgLCBgc2NoX2hoZmAsIGBzY2hfcGllYCwgYHNjaF9zZnFgKSBjb25maWd1cmVkIHZpYSBuZXRsaW5rLiAgVGhlc2UgYXJlIGNyaXRpY2FsIGFyZWFzIGZvciBtYWludGFpbmluZyBuZXR3b3JrIHN0YWJpbGl0eSwgYW5kIHRoaXMgY2xlYXJseSBpbmRpY2F0ZXMgYSBuZWVkIHRvIHZhbGlkYXRlIHRoZSBpbnB1dCBoYW5kbGluZyBhbmQgYm91bmRzLgoKTm93LCBsZXQmIzM5O3MgcHJlcGFyZSB0aGUgYHNldC1yZXN1bHRzYCBjYWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRFJSJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRFVBTFBJMiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0VUUyYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0ZRJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRlFfUElFJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfSEhGJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfUElFJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfU0ZRJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJyX2NoYW5nZV9jbGFzcyYjMzQ7LAogICAgJiMzNDtldHNfcWRpc2NfY2hhbmdlJiMzNDssCiAgICAmIzM0O2ZxX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtmcV9pbml0JiMzNDssCiAgICAmIzM0O2ZxX3BpZV9jaGFuZ2UmIzM0OywKICAgICYjMzQ7aGhmX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtoaGZfaW5pdCYjMzQ7LAogICAgJiMzNDtzZnFfY2hhbmdlJiMzNDssCiAgICAmIzM0O3BpZV9kcm9wX2Vhcmx5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhcmFtZXRlciB2YWxpZGF0aW9uIGFuZCBjbGFtcGluZyBmb3IgTVRVIGFuZCBxdWFudHVtIGJvdW5kcyBhY3Jvc3MgbXVsdGlwbGUgdHJhZmZpYyBjb250cm9sIHNjaGVkdWxlcnMgKERSUiwgRFVBTFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgYW5kIFNGUSkuIFRoZXNlIHBhY2tldCBzY2hlZHVsZXJzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBjb25maWd1cmFibGUgdmlhIHJ0bmV0bGluay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRFJSJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRFVBTFBJMiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0VUUyYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0ZRJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfRlFfUElFJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfSEhGJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfUElFJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfU0ZRJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJyX2NoYW5nZV9jbGFzcyYjMzQ7LAogICAgJiMzNDtldHNfcWRpc2NfY2hhbmdlJiMzNDssCiAgICAmIzM0O2ZxX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtmcV9pbml0JiMzNDssCiAgICAmIzM0O2ZxX3BpZV9jaGFuZ2UmIzM0OywKICAgICYjMzQ7aGhmX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtoaGZfaW5pdCYjMzQ7LAogICAgJiMzNDtzZnFfY2hhbmdlJiMzNDssCiAgICAmIzM0O3BpZV9kcm9wX2Vhcmx5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhcmFtZXRlciB2YWxpZGF0aW9uIGFuZCBjbGFtcGluZyBmb3IgTVRVIGFuZCBxdWFudHVtIGJvdW5kcyBhY3Jvc3MgbXVsdGlwbGUgdHJhZmZpYyBjb250cm9sIHNjaGVkdWxlcnMgKERSUiwgRFVBTFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgYW5kIFNGUSkuIFRoZXNlIHBhY2tldCBzY2hlZHVsZXJzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBjb25maWd1cmFibGUgdmlhIHJ0bmV0bGluay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjkgMDg6MzY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlc3RyaWN0cyBhbmQgY2xhbXBzIHF1YW50dW0gYW5kIE1UVSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgaW4gc2V2ZXJhbCBuZXQvc2NoZWQgcWRpc2MgaW1wbGVtZW50YXRpb25zIChzY2hfZHJyLCBzY2hfZHVhbHBpMiwgc2NoX2V0cywgc2NoX2ZxLCBzY2hfZnFfcGllLCBzY2hfaGhmLCBzY2hfcGllLCBzY2hfc2ZxKSB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzIG9yIGRpdmlzaW9uLWJ5LXplcm8vZGVnZW5lcmF0ZSBzY2hlZHVsaW5nIHN0YXRlcy4gQWxsIHRvdWNoZWQgdmFyaWFibGVzIGFyZSBwbGFpbiBzY2FsYXIgaW50ZWdlcnMgKHUzMi9zMzIpIHRoYXQgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGF0IHRoZSBwb2ludCBvZiBkZWZpbml0aW9uL2Fzc2lnbm1lbnQuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZSBwYWRkaW5nLCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzLCBvciBrZXJuZWwtdG8tdXNlciBjb3B5IG9wZXJhdGlvbnMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiYmVhZjU5M2Y1ZGM0ZTVhOTBkOGRjODk4Y2U1ODBiZDVlMTAyMjUwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMjkgMDg6MzU6NDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2Ryci5jIGIvbmV0L3NjaGVkL3NjaF9kcnIuYwppbmRleCA5MWIxZWY4MjRhZmFmLi44NjIxZDA1N2VkZDlmIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2Ryci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZHJyLmMKQEAgLTgyLDggJiM0Mzs4Miw5IEBAIHN0YXRpYyBpbnQgZHJyX2NoYW5nZV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQsIHUzMiBwYXJlbnRpZCwKIAkJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDtTcGVjaWZpZWQgRFJSIHF1YW50dW0gY2Fubm90IGJlIHplcm8mIzM0Oyk7CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQomIzQzOwkJcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBxdWFudHVtLCAyNTYsIDEgJmx0OyZsdDsgMjApOwogCX0gZWxzZQotCQlxdWFudHVtID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7CiYjNDM7CQlxdWFudHVtID0gY2xhbXBfdCh1MzIsICh1MzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAKIAlpZiAoY2wgIT0gTlVMTCkgewogCQlpZiAodGNhW1RDQV9SQVRFXSkgewpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmMgYi9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYwppbmRleCA0ZjY3OGQ0ZmYxMGVjLi40OTQ3ZGVmN2M0OWVmIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYwpAQCAtMjA4LDkgJiM0MzsyMDgsMTEgQEAgc3RhdGljIHZvaWQgZHVhbHBpMl9yZXNldF9jX3Byb3RlY3Rpb24oc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSkKIHN0YXRpYyB2b2lkIGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbihzdHJ1Y3QgUWRpc2MgKnNjaCwKIAkJCQkJICAgc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgdTMyIHdjKQogewomIzQzOwl1MzIgbXR1ID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAxLCAxICZsdDsmbHQ7IDIwKTsKJiM0MzsKIAlxLSZndDtjX3Byb3RlY3Rpb25fd2MgPSB3YzsKIAlxLSZndDtjX3Byb3RlY3Rpb25fd2wgPSBNQVhfV0MgLSB3YzsKLQlxLSZndDtjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkgKgomIzQzOwlxLSZndDtjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpbXR1ICoKIAkJKChpbnQpcS0mZ3Q7Y19wcm90ZWN0aW9uX3djIC0gKGludClxLSZndDtjX3Byb3RlY3Rpb25fd2wpOwogCWR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHEpOwogfQpAQCAtMjg1LDggJiM0MzsyODcsOSBAQCBzdGF0aWMgYm9vbCBtdXN0X2Ryb3Aoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsCiAJdTY0IGxvY2FsX2xfcHJvYjsKIAlib29sIG92ZXJsb2FkOwogCXUzMiBwcm9iOwomIzQzOwl1MzIgbXR1ID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAxLCAxICZsdDsmbHQ7IDIwKTsKIAotCWlmIChzY2gtJmd0O3FzdGF0cy5iYWNrbG9nICZsdDsgMiAqIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpKQomIzQzOwlpZiAoc2NoLSZndDtxc3RhdHMuYmFja2xvZyAmbHQ7IDIgKiBtdHUpCiAJCXJldHVybiBmYWxzZTsKIAogCXByb2IgPSBSRUFEX09OQ0UocS0mZ3Q7cGkyX3Byb2IpOwpAQCAtNzEyLDcgJiM0Mzs3MTUsOCBAQCBzdGF0aWMgdTMyIGdldF9tZW1vcnlfbGltaXQoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBsaW1pdCkKIAkvKiBBcHBseSBydWxlIG9mIHRodW1iLCBpLmUuLCBkb3VibGluZyB0aGUgcGFja2V0IGxlbmd0aCwKIAkgKiB0byBmdXJ0aGVyIGluY2x1ZGUgcGVyIHBhY2tldCBvdmVyaGVhZCBpbiBtZW1vcnlfbGltaXQuCiAJICovCi0JdTY0IG1lbWxpbSA9IG11bF91MzJfdTMyKGxpbWl0LCAyICogcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkpOwomIzQzOwl1NjQgbWVtbGltID0gbXVsX3UzMl91MzIobGltaXQsIDIgKiBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksCiYjNDM7CQkJCQkJICAgICAxLCAxICZsdDsmbHQ7IDIwKSk7CiAKIAlpZiAodXBwZXJfMzJfYml0cyhtZW1saW0pKQogCQlyZXR1cm4gVTMyX01BWDsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZXRzLmMgYi9uZXQvc2NoZWQvc2NoX2V0cy5jCmluZGV4IDI1ZmNmNDA3OWZlY2UuLjZjYzkwMmEwMzgzODcgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZXRzLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9ldHMuYwpAQCAtODMsMTEgJiM0Mzs4Myw3IEBAIHN0YXRpYyBpbnQgZXRzX3F1YW50dW1fcGFyc2Uoc3RydWN0IFFkaXNjICpzY2gsIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsCiAJCQkgICAgIHVuc2lnbmVkIGludCAqcXVhbnR1bSwKIAkJCSAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQogewotCSpxdWFudHVtID0gbmxhX2dldF91MzIoYXR0cik7Ci0JaWYgKCEqcXVhbnR1bSkgewotCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7RVRTIHF1YW50dW0gY2Fubm90IGJlIHplcm8mIzM0Oyk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KJiM0MzsJKnF1YW50dW0gPSBjbGFtcF90KHUzMiwgbmxhX2dldF91MzIoYXR0ciksIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTYzMiwxMSAmIzQzOzYyOCwxMyBAQCBzdGF0aWMgaW50IGV0c19xZGlzY19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkJCXJldHVybiBlcnI7CiAJfQogCS8qIElmIHRoZXJlIGFyZSBtb3JlIGJhbmRzIHRoYW4gc3RyaWN0ICYjNDM7IHF1YW50YSBwcm92aWRlZCwgdGhlIHJlbWFpbmluZwotCSAqIG9uZXMgYXJlIEVUUyB3aXRoIHF1YW50dW0gb2YgTVRVLiBJbml0aWFsaXplIHRoZSBtaXNzaW5nIHZhbHVlcyBoZXJlLgomIzQzOwkgKiBvbmVzIGFyZSBFVFMgd2l0aCBxdWFudHVtIG9mIG1heChNVFUsIDI1NikuIEluaXRpYWxpemUgdGhlIG1pc3NpbmcKJiM0MzsJICogdmFsdWVzIGhlcmUuCiAJICovCiAJZm9yIChpID0gbnN0cmljdDsgaSAmbHQ7IG5iYW5kczsgaSYjNDM7JiM0MzspIHsKIAkJaWYgKCFxdWFudGFbaV0pCi0JCQlxdWFudGFbaV0gPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTsKJiM0MzsJCQlxdWFudGFbaV0gPSBjbGFtcF90KHUzMiwgKHUzMilwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwKJiM0MzsJCQkJCSAgICAyNTYsIDEgJmx0OyZsdDsgMjApOwogCX0KIAogCS8qIEJlZm9yZSBjb21taXQsIG1ha2Ugc3VyZSB3ZSBjYW4gYWxsb2NhdGUgYWxsIG5ldyBxZGlzY3MgKi8KZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnEuYyBiL25ldC9zY2hlZC9zY2hfZnEuYwppbmRleCA2MTQ0YjU2ODZmMTNmLi4zNWY5NDBiMjIwNWRmIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2ZxLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9mcS5jCkBAIC05ODAsNyAmIzQzOzk4MCw3IEBAIHN0YXRpYyBpbnQgZnFfcmVzaXplKHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgbG9nKQogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGxpbmtfcmFuZ2VfdmFsaWRhdGlvbiBpcV9yYW5nZSA9IHsKLQkubWF4ID0gSU5UX01BWCwKJiM0MzsJLm1heCA9IDEgJmx0OyZsdDsgMjAsCiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZnFfcG9saWN5W1RDQV9GUV9NQVggJiM0MzsgMV0gPSB7CkBAIC0xMTA2LDE0ICYjNDM7MTEwNiwxMCBAQCBzdGF0aWMgaW50IGZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCQkJICAgbmxhX2dldF91MzIodGJbVENBX0ZRX0ZMT1dfUExJTUlUXSkpOwogCiAJaWYgKHRiW1RDQV9GUV9RVUFOVFVNXSkgewotCQl1MzIgcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSk7CiYjNDM7CQl1MzIgcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUVVBTlRVTV0pLAomIzQzOwkJCQkgICAgIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAKLQkJaWYgKHF1YW50dW0gJmd0OyAwICZhbXA7JmFtcDsgcXVhbnR1bSAmbHQ7PSAoMSAmbHQ7Jmx0OyAyMCkpIHsKLQkJCVdSSVRFX09OQ0UocS0mZ3Q7cXVhbnR1bSwgcXVhbnR1bSk7Ci0JCX0gZWxzZSB7Ci0JCQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCAmIzM0O2ludmFsaWQgcXVhbnR1bSYjMzQ7KTsKLQkJCWVyciA9IC1FSU5WQUw7Ci0JCX0KJiM0MzsJCVdSSVRFX09OQ0UocS0mZ3Q7cXVhbnR1bSwgcXVhbnR1bSk7CiAJfQogCiAJaWYgKHRiW1RDQV9GUV9JTklUSUFMX1FVQU5UVU1dKQpAQCAtMTIzMiw3ICYjNDM7MTIyOCw3IEBAIHN0YXRpYyBpbnQgZnFfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCXNjaC0mZ3Q7bGltaXQJCT0gMTAwMDA7CiAJcS0mZ3Q7Zmxvd19wbGltaXQJCT0gMTAwOwogCW10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSAmbHQ7Jmx0OyAyMCk7Ci0JcS0mZ3Q7cXVhbnR1bQkJPSBtaW5fdCh1MzIsIDIgKiBtdHUsIDEgJmx0OyZsdDsgMjApOwomIzQzOwlxLSZndDtxdWFudHVtCQk9IGNsYW1wX3QodTMyLCAyICogbXR1LCAyNTYsIDEgJmx0OyZsdDsgMjApOwogCXEtJmd0O2luaXRpYWxfcXVhbnR1bQk9IG1pbl90KHUzMiwgMTAgKiBtdHUsIDEgJmx0OyZsdDsgMjApOwogCXEtJmd0O2Zsb3dfcmVmaWxsX2RlbGF5CT0gbXNlY3NfdG9famlmZmllcyg0MCk7CiAJcS0mZ3Q7Zmxvd19tYXhfcmF0ZQk9IH4wVUw7CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuYwppbmRleCBiMjdkOTU0MTg3MDdhLi41OTgyODQ3ZGY4Zjg1IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZnFfcGllLmMKQEAgLTM0MSw3ICYjNDM7MzQxLDggQEAgc3RhdGljIGludCBmcV9waWVfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJCQkgICBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX0JFVEFdKSk7CiAKIAlpZiAodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSkKLQkJV1JJVEVfT05DRShxLSZndDtxdWFudHVtLCBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX1FVQU5UVU1dKSk7CiYjNDM7CQlXUklURV9PTkNFKHEtJmd0O3F1YW50dW0sCiYjNDM7CQkJICAgbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKSk7CiAKIAlpZiAodGJbVENBX0ZRX1BJRV9NRU1PUllfTElNSVRdKQogCQlXUklURV9PTkNFKHEtJmd0O21lbW9yeV9saW1pdCwKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfaGhmLmMgYi9uZXQvc2NoZWQvc2NoX2hoZi5jCmluZGV4IDk2YWNhYjZhOGRhMDMuLmZjNzJmODI1ZmJkOTIgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfaGhmLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9oaGYuYwpAQCAtNTUxLDcgJiM0Mzs1NTEsNyBAQCBzdGF0aWMgaW50IGhoZl9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkJcmV0dXJuIGVycjsKIAogCWlmICh0YltUQ0FfSEhGX1FVQU5UVU1dKQotCQluZXdfcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfUVVBTlRVTV0pOwomIzQzOwkJbmV3X3F1YW50dW0gPSBtYXgoMjU2VSwgbmxhX2dldF91MzIodGJbVENBX0hIRl9RVUFOVFVNXSkpOwogCiAJaWYgKHRiW1RDQV9ISEZfTk9OX0hIX1dFSUdIVF0pCiAJCW5ld19oaGZfbm9uX2hoX3dlaWdodCA9IG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfTk9OX0hIX1dFSUdIVF0pOwpAQCAtNjEzLDcgJiM0Mzs2MTMsNyBAQCBzdGF0aWMgaW50IGhoZl9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJaW50IGk7CiAKIAlzY2gtJmd0O2xpbWl0ID0gMTAwMDsKLQlxLSZndDtxdWFudHVtID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7CiYjNDM7CXEtJmd0O3F1YW50dW0gPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDI1NiwgMSAmbHQ7Jmx0OyAyMCk7CiAJZ2V0X3JhbmRvbV9ieXRlcygmYW1wO3EtJmd0O3BlcnR1cmJhdGlvbiwgc2l6ZW9mKHEtJmd0O3BlcnR1cmJhdGlvbikpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7cS0mZ3Q7bmV3X2J1Y2tldHMpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7cS0mZ3Q7b2xkX2J1Y2tldHMpOwpAQCAtNjI0LDEwICYjNDM7NjI0LDYgQEAgc3RhdGljIGludCBoaGZfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCXEtJmd0O2hoZl9ldmljdF90aW1lb3V0ID0gSFo7ICAgICAgLyogMSAgc2VjICovCiAJcS0mZ3Q7aGhmX25vbl9oaF93ZWlnaHQgPSAyOwogCi0JaWYgKChpbnQpcS0mZ3Q7cXVhbnR1bSAmbHQ7PSAwIHx8Ci0JICAgICh1NjQpcS0mZ3Q7cXVhbnR1bSAqIHEtJmd0O2hoZl9ub25faGhfd2VpZ2h0ICZndDsgSU5UX01BWCkKLQkJcS0mZ3Q7cXVhbnR1bSA9IDI1NjsKLQogCWlmIChvcHQpIHsKIAkJaW50IGVyciA9IGhoZl9jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7CiAKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfcGllLmMgYi9uZXQvc2NoZWQvc2NoX3BpZS5jCmluZGV4IGI0MWYyZGVmMmUyY2MuLjNiNzg2M2ZmZDI4NGMgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfcGllLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9waWUuYwpAQCAtMzUsNyAmIzQzOzM1LDcgQEAgYm9vbCBwaWVfZHJvcF9lYXJseShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHBpZV9wYXJhbXMgKnBhcmFtcywKIHsKIAl1NjQgcm5kOwogCXU2NCBsb2NhbF9wcm9iID0gdmFycy0mZ3Q7cHJvYjsKLQl1MzIgbXR1ID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7CiYjNDM7CXUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgJmx0OyZsdDsgMjApOwogCiAJLyogSWYgdGhlcmUgaXMgc3RpbGwgYnVyc3QgYWxsb3dhbmNlIGxlZnQgc2tpcCByYW5kb20gZWFybHkgZHJvcCAqLwogCWlmICh2YXJzLSZndDtidXJzdF90aW1lICZndDsgMCkKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfc2ZxLmMgYi9uZXQvc2NoZWQvc2NoX3NmcS5jCmluZGV4IDE4N2QzZWQ1NzhmMjYuLjhiYmNmYzllODVkOTQgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfc2ZxLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF9zZnEuYwpAQCAtNjYwLDYgJiM0Mzs2NjAsMTEgQEAgc3RhdGljIGludCBzZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAomIzQzOwlpZiAoY3RsLSZndDtxdWFudHVtICZndDsgMSAmbHQ7Jmx0OyAyMCkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtxdWFudHVtIHRvbyBsYXJnZSYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiAJaWYgKGN0bC0mZ3Q7cGVydHVyYl9wZXJpb2QgJmx0OyAwIHx8CiAJICAgIGN0bC0mZ3Q7cGVydHVyYl9wZXJpb2QgJmd0OyBJTlRfTUFYIC8gSFopIHsKIAkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtpbnZhbGlkIHBlcnR1cmIgcGVyaW9kJiMzNDspOwpAQCAtNjg4LDcgJiM0Mzs2OTMsNyBAQCBzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAogCS8qIHVwZGF0ZSBhbmQgdmFsaWRhdGUgY29uZmlndXJhdGlvbiAqLwogCWlmIChjdGwtJmd0O3F1YW50dW0pCi0JCXF1YW50dW0gPSBjdGwtJmd0O3F1YW50dW07CiYjNDM7CQlxdWFudHVtID0gbWF4KDI1NlUsIGN0bC0mZ3Q7cXVhbnR1bSk7CiAJaWYgKGN0bC0mZ3Q7Zmxvd3MpCiAJCW1heGZsb3dzID0gbWluX3QodTMyLCBjdGwtJmd0O2Zsb3dzLCBTRlFfTUFYX0ZMT1dTKTsKIAlpZiAoY3RsLSZndDtkaXZpc29yKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTM1CgkJCQkJCQlvdXRwdXQ6IDE3NQoJCQkJCQkJdGhvdWdodHM6IDEwMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gRnV6emluZyBTZXNzaW9uIEFzc2Vzc21lbnQqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2ggYW5kIGRlY2lkZSBpZiB3ZSBuZWVkIHRvIHNjaGVkdWxlIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gVGhlIGNoYW5nZXMgc2VlbSB0byBiZSBjb25jZW50cmF0ZWQgaW4gc2V2ZXJhbCBgbmV0L3NjaGVkYCBxZGlzYyBtb2R1bGVzLgoKSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggcHJpbWFyaWx5IGZvY3VzZXMgb24gY2xhbXBpbmcgdmFyaW91cyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMsIGxpa2UgYHF1YW50dW1gIGFuZCBgbXR1YCwgd2l0aGluIHNwZWNpZmljIHJhbmdlcy4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdGhpbmdzIGxpa2UgYGNsYW1wX3RgIGNhbGxzIGFuZCBgbWF4YCBvcGVyYXRpb25zIHRvIGVuc3VyZSB0aGVzZSB2YWx1ZXMgc3RheSB3aXRoaW4gc2Vuc2libGUgYm91bmRzLiBMZXQgbWUgYnJlYWsgZG93biB3aGF0IEkmIzM5O20gc2VlaW5nOgoKKiAgIGBzY2hfZHJyLmNgLCBgc2NoX2R1YWxwaTIuY2AsIGBzY2hfZXRzLmNgLCBgc2NoX2ZxLmNgLCBgc2NoX2ZxX3BpZS5jYCwgYHNjaF9oaGYuY2AsIGBzY2hfcGllLmNgLCBhbmQgYHNjaF9zZnEuY2A6IEFsbCBvZiB0aGVzZSBtb2R1bGVzIGFyZSBpbnZvbHZlZCwgYW5kIGl0IGFsbCBib2lscyBkb3duIHRvIGNsYW1waW5nIG9yIGVuc3VyaW5nIHRoYXQgdmFsdWVzIGxpa2UgYHF1YW50dW1gIG9yIGBtdHVgIGFyZSB3aXRoaW4gc3BlY2lmaWVkIGxpbWl0cywgdHlwaWNhbGx5IGJldHdlZW4gMjU2IGFuZCAxICZsdDsmbHQ7IDIwLCBvciBhIHNpbWlsYXIgcmFuZ2UuCgpNeSBpbW1lZGlhdGUgY29uY2VybiBpcyBhcm91bmQgdW5pbml0aWFsaXplZCBtZW1vcnkuIExldCYjMzk7cyBtYWtlIHN1cmUgbm90aGluZyYjMzk7cyBiZWluZyByZWFkIGZyb20gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG5vIHVuaW5pdGlhbGl6ZWQgc3RydWN0IGNvcGllcyBhcmUgZ29pbmcgdG8gdXNlcnNwYWNlLCBhbmQgdGhhdCB3ZSBkb24mIzM5O3QgaGF2ZSBhbnkgdW5pbml0aWFsaXplZCBidWZmZXIgdXNhZ2VzLgoKRnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoZSBtb2RpZmljYXRpb25zIGRlYWwgZXhjbHVzaXZlbHkgd2l0aCBudW1lcmljIGNvbmZpZ3VyYXRpb25zLiBUaGVyZSBkb24mIzM5O3Qgc2VlbSB0byBiZSBhbnkgbmV3IHN0cnVjdHMgaW50cm9kdWNlZCwgbm8gbmV3IGJ1ZmZlcnMgYWxsb2NhdGVkIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24sIGFuZCBub3RoaW5nJiMzOTtzIGJlaW5nIGNvcGllZCB0byB1c2Vyc3BhY2Ugd2l0aG91dCBwcm9wZXIgaW5pdGlhbGl6YXRpb24uIFRoZSBjYWxjdWxhdGlvbnMgYXJlIGJhc2ljIGFyaXRobWV0aWMgb3IgY2xhbXBpbmcgb3BlcmF0aW9ucyBvbiBzY2FsYXIgdmFsdWVzLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayBlYWNoIGZpbGUgYW5kIGVhY2ggZnVuY3Rpb24gdG8gZW5zdXJlIG15IG1lbnRhbCBtb2RlbCBpcyBhY2N1cmF0ZToKCiogICBgc2NoX2Ryci5jYDogVGhlIGBxdWFudHVtYCBpcyBqdXN0IGEgYHUzMmAgcGFzc2VkIHRvIGEgZGVzdGluYXRpb24gYGNsLSZndDtxdWFudHVtYC4KKiAgIGBzY2hfZHVhbHBpMi5jYDogVGhlIGBtdHVgIHZhbHVlIGlzIGluaXRpYWxpemVkIHdpdGggYGNsYW1wX3RgLgoqICAgYHNjaF9ldHMuY2A6IFdlJiMzOTtyZSBjbGFtcGluZyBhbmQgaW5pdGlhbGl6aW5nIGAqcXVhbnR1bWAuCiogICBgc2NoX2ZxLmNgLCBgc2NoX2ZxX3BpZS5jYDogYHF1YW50dW1gIGlzIGEgbG9jYWwgYHUzMmAgYW5kIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgY2xhbXBlZCB2YWx1ZS4KKiAgIGBzY2hfaGhmLmNgOiBXZSBpbml0aWFsaXplIGEgYG5ld19xdWFudHVtYCwgd2hpY2ggaXMgdGhlbiBjbGFtcGVkLgoqICAgYHNjaF9waWUuY2A6IFRoZSBgbXR1YCBpcyBiZWluZyBpbml0aWFsaXplZCB3aXRoIGBjbGFtcF90YC4KKiAgIGBzY2hfc2ZxLmNgOiBUaGUgYHF1YW50dW1gIGlzIGJlaW5nIGluaXRpYWxpemVkIHdpdGggYG1heGAuCgpTbywgZnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCB0aGVyZSYjMzk7cyBubyBldmlkZW5jZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgbm8gaGVhcCBhbGxvY2F0aW9ucyB3aXRob3V0IHplcm9pbmcsIGFuZCBubyBkYXRhIGlzIGdldHRpbmcgY29waWVkIHRvIHVzZXJzcGFjZSB3aXRob3V0IHByb3BlciBpbml0aWFsaXphdGlvbi4gQW55IHBvdGVudGlhbCBpc3N1ZXMgd291bGQgbGlrZWx5IGJlIHJlbGF0ZWQgdG8gY2xhbXBpbmcgbG9naWMgb3IgYXJpdGhtZXRpYyBidWdzLCB3aGljaCBzaG91bGQgYmUgY2F1Z2h0IGJ5IHRoZSBzdGFuZGFyZCBzYW5pdGl6ZXJzIG9yIEtBU0FOL1VCU0FOLiBLTVNBTiBkb2VzbiYjMzk7dCBoYXZlIGEgc3BlY2lhbCByb2xlIGhlcmUuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ28gd2l0aCB0aGF0LiBObyBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyByZXF1aXJlZC4gQ2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOSAwODozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXN0cmljdHMgYW5kIGNsYW1wcyBxdWFudHVtIGFuZCBNVFUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGluIHNldmVyYWwgbmV0L3NjaGVkIHFkaXNjIGltcGxlbWVudGF0aW9ucyAoc2NoX2Ryciwgc2NoX2R1YWxwaTIsIHNjaF9ldHMsIHNjaF9mcSwgc2NoX2ZxX3BpZSwgc2NoX2hoZiwgc2NoX3BpZSwgc2NoX3NmcSkgdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93cyBvciBkaXZpc2lvbi1ieS16ZXJvL2RlZ2VuZXJhdGUgc2NoZWR1bGluZyBzdGF0ZXMuIEFsbCB0b3VjaGVkIHZhcmlhYmxlcyBhcmUgcGxhaW4gc2NhbGFyIGludGVnZXJzICh1MzIvczMyKSB0aGF0IGFyZSBmdWxseSBpbml0aWFsaXplZCBhdCB0aGUgcG9pbnQgb2YgZGVmaW5pdGlvbi9hc3NpZ25tZW50LiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmUgcGFkZGluZywgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIHZhcmlhYmxlcywgb3Iga2VybmVsLXRvLXVzZXIgY29weSBvcGVyYXRpb25zLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gZnV6emluZy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlc3RyaWN0cyBhbmQgY2xhbXBzIHF1YW50dW0gYW5kIE1UVSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgaW4gc2V2ZXJhbCBuZXQvc2NoZWQgcWRpc2MgaW1wbGVtZW50YXRpb25zIChzY2hfZHJyLCBzY2hfZHVhbHBpMiwgc2NoX2V0cywgc2NoX2ZxLCBzY2hfZnFfcGllLCBzY2hfaGhmLCBzY2hfcGllLCBzY2hfc2ZxKSB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzIG9yIGRpdmlzaW9uLWJ5LXplcm8vZGVnZW5lcmF0ZSBzY2hlZHVsaW5nIHN0YXRlcy4gQWxsIHRvdWNoZWQgdmFyaWFibGVzIGFyZSBwbGFpbiBzY2FsYXIgaW50ZWdlcnMgKHUzMi9zMzIpIHRoYXQgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGF0IHRoZSBwb2ludCBvZiBkZWZpbml0aW9uL2Fzc2lnbm1lbnQuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZSBwYWRkaW5nLCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzLCBvciBrZXJuZWwtdG8tdXNlciBjb3B5IG9wZXJhdGlvbnMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwODozNTo0Ny4xNDU5ODU0NDZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDU4OTM5MTcwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfRFJSXCIsXG4gICAgXCJORVRfU0NIX0RVQUxQSTJcIixcbiAgICBcIk5FVF9TQ0hfRVRTXCIsXG4gICAgXCJORVRfU0NIX0ZRXCIsXG4gICAgXCJORVRfU0NIX0ZRX1BJRVwiLFxuICAgIFwiTkVUX1NDSF9ISEZcIixcbiAgICBcIk5FVF9TQ0hfUElFXCIsXG4gICAgXCJORVRfU0NIX1NGUVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRycl9jaGFuZ2VfY2xhc3NcIixcbiAgICBcImV0c19xZGlzY19jaGFuZ2VcIixcbiAgICBcImZxX2NoYW5nZVwiLFxuICAgIFwiZnFfaW5pdFwiLFxuICAgIFwiZnFfcGllX2NoYW5nZVwiLFxuICAgIFwiaGhmX2NoYW5nZVwiLFxuICAgIFwiaGhmX2luaXRcIixcbiAgICBcInNmcV9jaGFuZ2VcIixcbiAgICBcInBpZV9kcm9wX2Vhcmx5XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXN0cmljdHMgYW5kIGNsYW1wcyBxdWFudHVtIGFuZCBNVFUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGluIHNldmVyYWwgbmV0L3NjaGVkIHFkaXNjIGltcGxlbWVudGF0aW9ucyAoc2NoX2Ryciwgc2NoX2R1YWxwaTIsIHNjaF9ldHMsIHNjaF9mcSwgc2NoX2ZxX3BpZSwgc2NoX2hoZiwgc2NoX3BpZSwgc2NoX3NmcSkgdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93cyBvciBkaXZpc2lvbi1ieS16ZXJvL2RlZ2VuZXJhdGUgc2NoZWR1bGluZyBzdGF0ZXMuIEFsbCB0b3VjaGVkIHZhcmlhYmxlcyBhcmUgcGxhaW4gc2NhbGFyIGludGVnZXJzICh1MzIvczMyKSB0aGF0IGFyZSBmdWxseSBpbml0aWFsaXplZCBhdCB0aGUgcG9pbnQgb2YgZGVmaW5pdGlvbi9hc3NpZ25tZW50LiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmUgcGFkZGluZywgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIHZhcmlhYmxlcywgb3Iga2VybmVsLXRvLXVzZXIgY29weSBvcGVyYXRpb25zLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gZnV6emluZy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBhbmQgY2xhbXBpbmcgZm9yIE1UVSBhbmQgcXVhbnR1bSBib3VuZHMgYWNyb3NzIG11bHRpcGxlIHRyYWZmaWMgY29udHJvbCBzY2hlZHVsZXJzIChEUlIsIERVQUxQSTIsIEVUUywgRlEsIEZRLVBJRSwgSEhGLCBQSUUsIGFuZCBTRlEpLiBUaGVzZSBwYWNrZXQgc2NoZWR1bGVycyBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgY29uZmlndXJhYmxlIHZpYSBydG5ldGxpbmsuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA4OjM1OjQ3LjE0NTk5MDkzNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0OTU0ODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYmJlYWY1OTNmNWRjNGU1YTkwZDhkYzg5OGNlNTgwYmQ1ZTEwMjI1MFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAyOSAwODozNTo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2Ryci5jIGIvbmV0L3NjaGVkL3NjaF9kcnIuY1xcbmluZGV4IDkxYjFlZjgyNGFmYWYuLjg2MjFkMDU3ZWRkOWYgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9kcnIuY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfZHJyLmNcXG5AQCAtODIsOCArODIsOSBAQCBzdGF0aWMgaW50IGRycl9jaGFuZ2VfY2xhc3Moc3RydWN0IFFkaXNjICpzY2gsIHUzMiBjbGFzc2lkLCB1MzIgcGFyZW50aWQsXFxuIFxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcIlNwZWNpZmllZCBEUlIgcXVhbnR1bSBjYW5ub3QgYmUgemVyb1xcXCIpO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0fVxcbitcXHRcXHRxdWFudHVtID0gY2xhbXBfdCh1MzIsIHF1YW50dW0sIDI1NiwgMSBcXHUwMDNjXFx1MDAzYyAyMCk7XFxuIFxcdH0gZWxzZVxcbi1cXHRcXHRxdWFudHVtID0gcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSk7XFxuK1xcdFxcdHF1YW50dW0gPSBjbGFtcF90KHUzMiwgKHUzMilwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMjU2LCAxIFxcdTAwM2NcXHUwMDNjIDIwKTtcXG4gXFxuIFxcdGlmIChjbCAhPSBOVUxMKSB7XFxuIFxcdFxcdGlmICh0Y2FbVENBX1JBVEVdKSB7XFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jIGIvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcXG5pbmRleCA0ZjY3OGQ0ZmYxMGVjLi40OTQ3ZGVmN2M0OWVmIDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcXG5AQCAtMjA4LDkgKzIwOCwxMSBAQCBzdGF0aWMgdm9pZCBkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxKVxcbiBzdGF0aWMgdm9pZCBkdWFscGkyX2NhbGN1bGF0ZV9jX3Byb3RlY3Rpb24oc3RydWN0IFFkaXNjICpzY2gsXFxuIFxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBkdWFscGkyX3NjaGVkX2RhdGEgKnEsIHUzMiB3YylcXG4ge1xcbitcXHR1MzIgbXR1ID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAxLCAxIFxcdTAwM2NcXHUwMDNjIDIwKTtcXG4rXFxuIFxcdHEtXFx1MDAzZWNfcHJvdGVjdGlvbl93YyA9IHdjO1xcbiBcXHRxLVxcdTAwM2VjX3Byb3RlY3Rpb25fd2wgPSBNQVhfV0MgLSB3YztcXG4tXFx0cS1cXHUwMDNlY19wcm90ZWN0aW9uX2luaXQgPSAoczMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpICpcXG4rXFx0cS1cXHUwMDNlY19wcm90ZWN0aW9uX2luaXQgPSAoczMyKW10dSAqXFxuIFxcdFxcdCgoaW50KXEtXFx1MDAzZWNfcHJvdGVjdGlvbl93YyAtIChpbnQpcS1cXHUwMDNlY19wcm90ZWN0aW9uX3dsKTtcXG4gXFx0ZHVhbHBpMl9yZXNldF9jX3Byb3RlY3Rpb24ocSk7XFxuIH1cXG5AQCAtMjg1LDggKzI4Nyw5IEBAIHN0YXRpYyBib29sIG11c3RfZHJvcChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSxcXG4gXFx0dTY0IGxvY2FsX2xfcHJvYjtcXG4gXFx0Ym9vbCBvdmVybG9hZDtcXG4gXFx0dTMyIHByb2I7XFxuK1xcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXFx1MDAzY1xcdTAwM2MgMjApO1xcbiBcXG4tXFx0aWYgKHNjaC1cXHUwMDNlcXN0YXRzLmJhY2tsb2cgXFx1MDAzYyAyICogcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkpXFxuK1xcdGlmIChzY2gtXFx1MDAzZXFzdGF0cy5iYWNrbG9nIFxcdTAwM2MgMiAqIG10dSlcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXG4gXFx0cHJvYiA9IFJFQURfT05DRShxLVxcdTAwM2VwaTJfcHJvYik7XFxuQEAgLTcxMiw3ICs3MTUsOCBAQCBzdGF0aWMgdTMyIGdldF9tZW1vcnlfbGltaXQoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBsaW1pdClcXG4gXFx0LyogQXBwbHkgcnVsZSBvZiB0aHVtYiwgaS5lLiwgZG91YmxpbmcgdGhlIHBhY2tldCBsZW5ndGgsXFxuIFxcdCAqIHRvIGZ1cnRoZXIgaW5jbHVkZSBwZXIgcGFja2V0IG92ZXJoZWFkIGluIG1lbW9yeV9saW1pdC5cXG4gXFx0ICovXFxuLVxcdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpKTtcXG4rXFx0dTY0IG1lbWxpbSA9IG11bF91MzJfdTMyKGxpbWl0LCAyICogY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIDEsIDEgXFx1MDAzY1xcdTAwM2MgMjApKTtcXG4gXFxuIFxcdGlmICh1cHBlcl8zMl9iaXRzKG1lbWxpbSkpXFxuIFxcdFxcdHJldHVybiBVMzJfTUFYO1xcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2V0cy5jIGIvbmV0L3NjaGVkL3NjaF9ldHMuY1xcbmluZGV4IDI1ZmNmNDA3OWZlY2UuLjZjYzkwMmEwMzgzODcgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9ldHMuY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfZXRzLmNcXG5AQCAtODMsMTEgKzgzLDcgQEAgc3RhdGljIGludCBldHNfcXVhbnR1bV9wYXJzZShzdHJ1Y3QgUWRpc2MgKnNjaCwgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcXG4gXFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgKnF1YW50dW0sXFxuIFxcdFxcdFxcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbiB7XFxuLVxcdCpxdWFudHVtID0gbmxhX2dldF91MzIoYXR0cik7XFxuLVxcdGlmICghKnF1YW50dW0pIHtcXG4tXFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwiRVRTIHF1YW50dW0gY2Fubm90IGJlIHplcm9cXFwiKTtcXG4tXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLVxcdH1cXG4rXFx0KnF1YW50dW0gPSBjbGFtcF90KHUzMiwgbmxhX2dldF91MzIoYXR0ciksIDI1NiwgMSBcXHUwMDNjXFx1MDAzYyAyMCk7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbkBAIC02MzIsMTEgKzYyOCwxMyBAQCBzdGF0aWMgaW50IGV0c19xZGlzY19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4gXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gXFx0fVxcbiBcXHQvKiBJZiB0aGVyZSBhcmUgbW9yZSBiYW5kcyB0aGFuIHN0cmljdCArIHF1YW50YSBwcm92aWRlZCwgdGhlIHJlbWFpbmluZ1xcbi1cXHQgKiBvbmVzIGFyZSBFVFMgd2l0aCBxdWFudHVtIG9mIE1UVS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZyB2YWx1ZXMgaGVyZS5cXG4rXFx0ICogb25lcyBhcmUgRVRTIHdpdGggcXVhbnR1bSBvZiBtYXgoTVRVLCAyNTYpLiBJbml0aWFsaXplIHRoZSBtaXNzaW5nXFxuK1xcdCAqIHZhbHVlcyBoZXJlLlxcbiBcXHQgKi9cXG4gXFx0Zm9yIChpID0gbnN0cmljdDsgaSBcXHUwMDNjIG5iYW5kczsgaSsrKSB7XFxuIFxcdFxcdGlmICghcXVhbnRhW2ldKVxcbi1cXHRcXHRcXHRxdWFudGFbaV0gPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTtcXG4rXFx0XFx0XFx0cXVhbnRhW2ldID0gY2xhbXBfdCh1MzIsICh1MzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAyNTYsIDEgXFx1MDAzY1xcdTAwM2MgMjApO1xcbiBcXHR9XFxuIFxcbiBcXHQvKiBCZWZvcmUgY29tbWl0LCBtYWtlIHN1cmUgd2UgY2FuIGFsbG9jYXRlIGFsbCBuZXcgcWRpc2NzICovXFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnEuYyBiL25ldC9zY2hlZC9zY2hfZnEuY1xcbmluZGV4IDYxNDRiNTY4NmYxM2YuLjM1Zjk0MGIyMjA1ZGYgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcS5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF9mcS5jXFxuQEAgLTk4MCw3ICs5ODAsNyBAQCBzdGF0aWMgaW50IGZxX3Jlc2l6ZShzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxvZylcXG4gfVxcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRsaW5rX3JhbmdlX3ZhbGlkYXRpb24gaXFfcmFuZ2UgPSB7XFxuLVxcdC5tYXggPSBJTlRfTUFYLFxcbitcXHQubWF4ID0gMSBcXHUwMDNjXFx1MDAzYyAyMCxcXG4gfTtcXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBmcV9wb2xpY3lbVENBX0ZRX01BWCArIDFdID0ge1xcbkBAIC0xMTA2LDE0ICsxMTA2LDEwIEBAIHN0YXRpYyBpbnQgZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuIFxcdFxcdFxcdCAgIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9GTE9XX1BMSU1JVF0pKTtcXG4gXFxuIFxcdGlmICh0YltUQ0FfRlFfUVVBTlRVTV0pIHtcXG4tXFx0XFx0dTMyIHF1YW50dW0gPSBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUVVBTlRVTV0pO1xcbitcXHRcXHR1MzIgcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUVVBTlRVTV0pLFxcbitcXHRcXHRcXHRcXHQgICAgIDI1NiwgMSBcXHUwMDNjXFx1MDAzYyAyMCk7XFxuIFxcbi1cXHRcXHRpZiAocXVhbnR1bSBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgcXVhbnR1bSBcXHUwMDNjPSAoMSBcXHUwMDNjXFx1MDAzYyAyMCkpIHtcXG4tXFx0XFx0XFx0V1JJVEVfT05DRShxLVxcdTAwM2VxdWFudHVtLCBxdWFudHVtKTtcXG4tXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcImludmFsaWQgcXVhbnR1bVxcXCIpO1xcbi1cXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbi1cXHRcXHR9XFxuK1xcdFxcdFdSSVRFX09OQ0UocS1cXHUwMDNlcXVhbnR1bSwgcXVhbnR1bSk7XFxuIFxcdH1cXG4gXFxuIFxcdGlmICh0YltUQ0FfRlFfSU5JVElBTF9RVUFOVFVNXSlcXG5AQCAtMTIzMiw3ICsxMjI4LDcgQEAgc3RhdGljIGludCBmcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuIFxcdHNjaC1cXHUwMDNlbGltaXRcXHRcXHQ9IDEwMDAwO1xcbiBcXHRxLVxcdTAwM2VmbG93X3BsaW1pdFxcdFxcdD0gMTAwO1xcbiBcXHRtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXFx1MDAzY1xcdTAwM2MgMjApO1xcbi1cXHRxLVxcdTAwM2VxdWFudHVtXFx0XFx0PSBtaW5fdCh1MzIsIDIgKiBtdHUsIDEgXFx1MDAzY1xcdTAwM2MgMjApO1xcbitcXHRxLVxcdTAwM2VxdWFudHVtXFx0XFx0PSBjbGFtcF90KHUzMiwgMiAqIG10dSwgMjU2LCAxIFxcdTAwM2NcXHUwMDNjIDIwKTtcXG4gXFx0cS1cXHUwMDNlaW5pdGlhbF9xdWFudHVtXFx0PSBtaW5fdCh1MzIsIDEwICogbXR1LCAxIFxcdTAwM2NcXHUwMDNjIDIwKTtcXG4gXFx0cS1cXHUwMDNlZmxvd19yZWZpbGxfZGVsYXlcXHQ9IG1zZWNzX3RvX2ppZmZpZXMoNDApO1xcbiBcXHRxLVxcdTAwM2VmbG93X21heF9yYXRlXFx0PSB+MFVMO1xcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xcbmluZGV4IGIyN2Q5NTQxODcwN2EuLjU5ODI4NDdkZjhmODUgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfZnFfcGllLmNcXG5AQCAtMzQxLDcgKzM0MSw4IEBAIHN0YXRpYyBpbnQgZnFfcGllX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbiBcXHRcXHRcXHQgICBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX0JFVEFdKSk7XFxuIFxcbiBcXHRpZiAodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSlcXG4tXFx0XFx0V1JJVEVfT05DRShxLVxcdTAwM2VxdWFudHVtLCBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX1FVQU5UVU1dKSk7XFxuK1xcdFxcdFdSSVRFX09OQ0UocS1cXHUwMDNlcXVhbnR1bSxcXG4rXFx0XFx0XFx0ICAgbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKSk7XFxuIFxcbiBcXHRpZiAodGJbVENBX0ZRX1BJRV9NRU1PUllfTElNSVRdKVxcbiBcXHRcXHRXUklURV9PTkNFKHEtXFx1MDAzZW1lbW9yeV9saW1pdCxcXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9oaGYuYyBiL25ldC9zY2hlZC9zY2hfaGhmLmNcXG5pbmRleCA5NmFjYWI2YThkYTAzLi5mYzcyZjgyNWZiZDkyIDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9zY2hfaGhmLmNcXG4rKysgYi9uZXQvc2NoZWQvc2NoX2hoZi5jXFxuQEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgaW50IGhoZl9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuIFxcdGlmICh0YltUQ0FfSEhGX1FVQU5UVU1dKVxcbi1cXHRcXHRuZXdfcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfUVVBTlRVTV0pO1xcbitcXHRcXHRuZXdfcXVhbnR1bSA9IG1heCgyNTZVLCBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX1FVQU5UVU1dKSk7XFxuIFxcbiBcXHRpZiAodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSlcXG4gXFx0XFx0bmV3X2hoZl9ub25faGhfd2VpZ2h0ID0gbmxhX2dldF91MzIodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSk7XFxuQEAgLTYxMyw3ICs2MTMsNyBAQCBzdGF0aWMgaW50IGhoZl9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuIFxcdGludCBpO1xcbiBcXG4gXFx0c2NoLVxcdTAwM2VsaW1pdCA9IDEwMDA7XFxuLVxcdHEtXFx1MDAzZXF1YW50dW0gPSBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKTtcXG4rXFx0cS1cXHUwMDNlcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMjU2LCAxIFxcdTAwM2NcXHUwMDNjIDIwKTtcXG4gXFx0Z2V0X3JhbmRvbV9ieXRlcyhcXHUwMDI2cS1cXHUwMDNlcGVydHVyYmF0aW9uLCBzaXplb2YocS1cXHUwMDNlcGVydHVyYmF0aW9uKSk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZxLVxcdTAwM2VuZXdfYnVja2V0cyk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZxLVxcdTAwM2VvbGRfYnVja2V0cyk7XFxuQEAgLTYyNCwxMCArNjI0LDYgQEAgc3RhdGljIGludCBoaGZfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbiBcXHRxLVxcdTAwM2VoaGZfZXZpY3RfdGltZW91dCA9IEhaOyAgICAgIC8qIDEgIHNlYyAqL1xcbiBcXHRxLVxcdTAwM2VoaGZfbm9uX2hoX3dlaWdodCA9IDI7XFxuIFxcbi1cXHRpZiAoKGludClxLVxcdTAwM2VxdWFudHVtIFxcdTAwM2M9IDAgfHxcXG4tXFx0ICAgICh1NjQpcS1cXHUwMDNlcXVhbnR1bSAqIHEtXFx1MDAzZWhoZl9ub25faGhfd2VpZ2h0IFxcdTAwM2UgSU5UX01BWClcXG4tXFx0XFx0cS1cXHUwMDNlcXVhbnR1bSA9IDI1NjtcXG4tXFxuIFxcdGlmIChvcHQpIHtcXG4gXFx0XFx0aW50IGVyciA9IGhoZl9jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9waWUuY1xcbmluZGV4IGI0MWYyZGVmMmUyY2MuLjNiNzg2M2ZmZDI4NGMgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9waWUuY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfcGllLmNcXG5AQCAtMzUsNyArMzUsNyBAQCBib29sIHBpZV9kcm9wX2Vhcmx5KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgcGllX3BhcmFtcyAqcGFyYW1zLFxcbiB7XFxuIFxcdHU2NCBybmQ7XFxuIFxcdHU2NCBsb2NhbF9wcm9iID0gdmFycy1cXHUwMDNlcHJvYjtcXG4tXFx0dTMyIG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xcbitcXHR1MzIgbXR1ID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAxLCAxIFxcdTAwM2NcXHUwMDNjIDIwKTtcXG4gXFxuIFxcdC8qIElmIHRoZXJlIGlzIHN0aWxsIGJ1cnN0IGFsbG93YW5jZSBsZWZ0IHNraXAgcmFuZG9tIGVhcmx5IGRyb3AgKi9cXG4gXFx0aWYgKHZhcnMtXFx1MDAzZWJ1cnN0X3RpbWUgXFx1MDAzZSAwKVxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3NmcS5jIGIvbmV0L3NjaGVkL3NjaF9zZnEuY1xcbmluZGV4IDE4N2QzZWQ1NzhmMjYuLjhiYmNmYzllODVkOTQgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9zZnEuY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfc2ZxLmNcXG5AQCAtNjYwLDYgKzY2MCwxMSBAQCBzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG4gXFxuK1xcdGlmIChjdGwtXFx1MDAzZXF1YW50dW0gXFx1MDAzZSAxIFxcdTAwM2NcXHUwMDNjIDIwKSB7XFxuK1xcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJxdWFudHVtIHRvbyBsYXJnZVxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4gXFx0aWYgKGN0bC1cXHUwMDNlcGVydHVyYl9wZXJpb2QgXFx1MDAzYyAwIHx8XFxuIFxcdCAgICBjdGwtXFx1MDAzZXBlcnR1cmJfcGVyaW9kIFxcdTAwM2UgSU5UX01BWCAvIEhaKSB7XFxuIFxcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJpbnZhbGlkIHBlcnR1cmIgcGVyaW9kXFxcIik7XFxuQEAgLTY4OCw3ICs2OTMsNyBAQCBzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4gXFxuIFxcdC8qIHVwZGF0ZSBhbmQgdmFsaWRhdGUgY29uZmlndXJhdGlvbiAqL1xcbiBcXHRpZiAoY3RsLVxcdTAwM2VxdWFudHVtKVxcbi1cXHRcXHRxdWFudHVtID0gY3RsLVxcdTAwM2VxdWFudHVtO1xcbitcXHRcXHRxdWFudHVtID0gbWF4KDI1NlUsIGN0bC1cXHUwMDNlcXVhbnR1bSk7XFxuIFxcdGlmIChjdGwtXFx1MDAzZWZsb3dzKVxcbiBcXHRcXHRtYXhmbG93cyA9IG1pbl90KHUzMiwgY3RsLVxcdTAwM2VmbG93cywgU0ZRX01BWF9GTE9XUyk7XFxuIFxcdGlmIChjdGwtXFx1MDAzZWRpdmlzb3IpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDg6MzU6NDcuNjk0MDQ0NjY1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1NzM1MzMyNTM3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfRFJSXCIsXG4gICAgXCJORVRfU0NIX0RVQUxQSTJcIixcbiAgICBcIk5FVF9TQ0hfRVRTXCIsXG4gICAgXCJORVRfU0NIX0ZRXCIsXG4gICAgXCJORVRfU0NIX0ZRX1BJRVwiLFxuICAgIFwiTkVUX1NDSF9ISEZcIixcbiAgICBcIk5FVF9TQ0hfUElFXCIsXG4gICAgXCJORVRfU0NIX1NGUVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRycl9jaGFuZ2VfY2xhc3NcIixcbiAgICBcImV0c19xZGlzY19jaGFuZ2VcIixcbiAgICBcImZxX2NoYW5nZVwiLFxuICAgIFwiZnFfaW5pdFwiLFxuICAgIFwiZnFfcGllX2NoYW5nZVwiLFxuICAgIFwiaGhmX2NoYW5nZVwiLFxuICAgIFwiaGhmX2luaXRcIixcbiAgICBcInNmcV9jaGFuZ2VcIixcbiAgICBcInBpZV9kcm9wX2Vhcmx5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFyYW1ldGVyIHZhbGlkYXRpb24gYW5kIGNsYW1waW5nIGZvciBNVFUgYW5kIHF1YW50dW0gYm91bmRzIGFjcm9zcyBtdWx0aXBsZSB0cmFmZmljIGNvbnRyb2wgc2NoZWR1bGVycyAoRFJSLCBEVUFMUEkyLCBFVFMsIEZRLCBGUS1QSUUsIEhIRiwgUElFLCBhbmQgU0ZRKS4gVGhlc2UgcGFja2V0IHNjaGVkdWxlcnMgYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIGNvbmZpZ3VyYWJsZSB2aWEgcnRuZXRsaW5rLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiYmVhZjU5M2Y1ZGM0ZTVhOTBkOGRjODk4Y2U1ODBiZDVlMTAyMjUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMjkgMDg6MzU6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2Ryci5jIGIvbmV0L3NjaGVkL3NjaF9kcnIuY1xuaW5kZXggOTFiMWVmODI0YWZhZi4uODYyMWQwNTdlZGQ5ZiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZHJyLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZHJyLmNcbkBAIC04Miw4ICs4Miw5IEBAIHN0YXRpYyBpbnQgZHJyX2NoYW5nZV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQsIHUzMiBwYXJlbnRpZCxcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiU3BlY2lmaWVkIERSUiBxdWFudHVtIGNhbm5vdCBiZSB6ZXJvXCIpO1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHR9XG4rXHRcdHF1YW50dW0gPSBjbGFtcF90KHUzMiwgcXVhbnR1bSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHR9IGVsc2Vcbi1cdFx0cXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0XHRxdWFudHVtID0gY2xhbXBfdCh1MzIsICh1MzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuIFx0aWYgKGNsICE9IE5VTEwpIHtcbiBcdFx0aWYgKHRjYVtUQ0FfUkFURV0pIHtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5pbmRleCA0ZjY3OGQ0ZmYxMGVjLi40OTQ3ZGVmN2M0OWVmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5AQCAtMjA4LDkgKzIwOCwxMSBAQCBzdGF0aWMgdm9pZCBkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxKVxuIHN0YXRpYyB2b2lkIGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbihzdHJ1Y3QgUWRpc2MgKnNjaCxcbiBcdFx0XHRcdFx0ICAgc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgdTMyIHdjKVxuIHtcbitcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbitcbiBcdHEtXHUwMDNlY19wcm90ZWN0aW9uX3djID0gd2M7XG4gXHRxLVx1MDAzZWNfcHJvdGVjdGlvbl93bCA9IE1BWF9XQyAtIHdjO1xuLVx0cS1cdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkgKlxuK1x0cS1cdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpbXR1ICpcbiBcdFx0KChpbnQpcS1cdTAwM2VjX3Byb3RlY3Rpb25fd2MgLSAoaW50KXEtXHUwMDNlY19wcm90ZWN0aW9uX3dsKTtcbiBcdGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHEpO1xuIH1cbkBAIC0yODUsOCArMjg3LDkgQEAgc3RhdGljIGJvb2wgbXVzdF9kcm9wKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxuIFx0dTY0IGxvY2FsX2xfcHJvYjtcbiBcdGJvb2wgb3ZlcmxvYWQ7XG4gXHR1MzIgcHJvYjtcbitcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcbi1cdGlmIChzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgXHUwMDNjIDIgKiBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSlcbitcdGlmIChzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgXHUwMDNjIDIgKiBtdHUpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdHByb2IgPSBSRUFEX09OQ0UocS1cdTAwM2VwaTJfcHJvYik7XG5AQCAtNzEyLDcgKzcxNSw4IEBAIHN0YXRpYyB1MzIgZ2V0X21lbW9yeV9saW1pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxpbWl0KVxuIFx0LyogQXBwbHkgcnVsZSBvZiB0aHVtYiwgaS5lLiwgZG91YmxpbmcgdGhlIHBhY2tldCBsZW5ndGgsXG4gXHQgKiB0byBmdXJ0aGVyIGluY2x1ZGUgcGVyIHBhY2tldCBvdmVyaGVhZCBpbiBtZW1vcnlfbGltaXQuXG4gXHQgKi9cbi1cdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpKTtcbitcdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSxcbitcdFx0XHRcdFx0XHQgICAgIDEsIDEgXHUwMDNjXHUwMDNjIDIwKSk7XG4gXG4gXHRpZiAodXBwZXJfMzJfYml0cyhtZW1saW0pKVxuIFx0XHRyZXR1cm4gVTMyX01BWDtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2V0cy5jIGIvbmV0L3NjaGVkL3NjaF9ldHMuY1xuaW5kZXggMjVmY2Y0MDc5ZmVjZS4uNmNjOTAyYTAzODM4NyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZXRzLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZXRzLmNcbkBAIC04MywxMSArODMsNyBAQCBzdGF0aWMgaW50IGV0c19xdWFudHVtX3BhcnNlKHN0cnVjdCBRZGlzYyAqc2NoLCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxuIFx0XHRcdCAgICAgdW5zaWduZWQgaW50ICpxdWFudHVtLFxuIFx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbi1cdCpxdWFudHVtID0gbmxhX2dldF91MzIoYXR0cik7XG4tXHRpZiAoISpxdWFudHVtKSB7XG4tXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJFVFMgcXVhbnR1bSBjYW5ub3QgYmUgemVyb1wiKTtcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHR9XG4rXHQqcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMihhdHRyKSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNjMyLDExICs2MjgsMTMgQEAgc3RhdGljIGludCBldHNfcWRpc2NfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0cmV0dXJuIGVycjtcbiBcdH1cbiBcdC8qIElmIHRoZXJlIGFyZSBtb3JlIGJhbmRzIHRoYW4gc3RyaWN0ICsgcXVhbnRhIHByb3ZpZGVkLCB0aGUgcmVtYWluaW5nXG4tXHQgKiBvbmVzIGFyZSBFVFMgd2l0aCBxdWFudHVtIG9mIE1UVS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZyB2YWx1ZXMgaGVyZS5cbitcdCAqIG9uZXMgYXJlIEVUUyB3aXRoIHF1YW50dW0gb2YgbWF4KE1UVSwgMjU2KS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZ1xuK1x0ICogdmFsdWVzIGhlcmUuXG4gXHQgKi9cbiBcdGZvciAoaSA9IG5zdHJpY3Q7IGkgXHUwMDNjIG5iYW5kczsgaSsrKSB7XG4gXHRcdGlmICghcXVhbnRhW2ldKVxuLVx0XHRcdHF1YW50YVtpXSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0XHRcdHF1YW50YVtpXSA9IGNsYW1wX3QodTMyLCAodTMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLFxuK1x0XHRcdFx0XHQgICAgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHR9XG4gXG4gXHQvKiBCZWZvcmUgY29tbWl0LCBtYWtlIHN1cmUgd2UgY2FuIGFsbG9jYXRlIGFsbCBuZXcgcWRpc2NzICovXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9mcS5jIGIvbmV0L3NjaGVkL3NjaF9mcS5jXG5pbmRleCA2MTQ0YjU2ODZmMTNmLi4zNWY5NDBiMjIwNWRmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcS5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX2ZxLmNcbkBAIC05ODAsNyArOTgwLDcgQEAgc3RhdGljIGludCBmcV9yZXNpemUoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBsb2cpXG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0bGlua19yYW5nZV92YWxpZGF0aW9uIGlxX3JhbmdlID0ge1xuLVx0Lm1heCA9IElOVF9NQVgsXG4rXHQubWF4ID0gMSBcdTAwM2NcdTAwM2MgMjAsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZnFfcG9saWN5W1RDQV9GUV9NQVggKyAxXSA9IHtcbkBAIC0xMTA2LDE0ICsxMTA2LDEwIEBAIHN0YXRpYyBpbnQgZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0ICAgbmxhX2dldF91MzIodGJbVENBX0ZRX0ZMT1dfUExJTUlUXSkpO1xuIFxuIFx0aWYgKHRiW1RDQV9GUV9RVUFOVFVNXSkge1xuLVx0XHR1MzIgcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSk7XG4rXHRcdHUzMiBxdWFudHVtID0gY2xhbXBfdCh1MzIsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSksXG4rXHRcdFx0XHQgICAgIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuLVx0XHRpZiAocXVhbnR1bSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgcXVhbnR1bSBcdTAwM2M9ICgxIFx1MDAzY1x1MDAzYyAyMCkpIHtcbi1cdFx0XHRXUklURV9PTkNFKHEtXHUwMDNlcXVhbnR1bSwgcXVhbnR1bSk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJpbnZhbGlkIHF1YW50dW1cIik7XG4tXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0fVxuK1x0XHRXUklURV9PTkNFKHEtXHUwMDNlcXVhbnR1bSwgcXVhbnR1bSk7XG4gXHR9XG4gXG4gXHRpZiAodGJbVENBX0ZRX0lOSVRJQUxfUVVBTlRVTV0pXG5AQCAtMTIzMiw3ICsxMjI4LDcgQEAgc3RhdGljIGludCBmcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRzY2gtXHUwMDNlbGltaXRcdFx0PSAxMDAwMDtcbiBcdHEtXHUwMDNlZmxvd19wbGltaXRcdFx0PSAxMDA7XG4gXHRtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbi1cdHEtXHUwMDNlcXVhbnR1bVx0XHQ9IG1pbl90KHUzMiwgMiAqIG10dSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuK1x0cS1cdTAwM2VxdWFudHVtXHRcdD0gY2xhbXBfdCh1MzIsIDIgKiBtdHUsIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0cS1cdTAwM2Vpbml0aWFsX3F1YW50dW1cdD0gbWluX3QodTMyLCAxMCAqIG10dSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0cS1cdTAwM2VmbG93X3JlZmlsbF9kZWxheVx0PSBtc2Vjc190b19qaWZmaWVzKDQwKTtcbiBcdHEtXHUwMDNlZmxvd19tYXhfcmF0ZVx0PSB+MFVMO1xuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnFfcGllLmMgYi9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jXG5pbmRleCBiMjdkOTU0MTg3MDdhLi41OTgyODQ3ZGY4Zjg1IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuQEAgLTM0MSw3ICszNDEsOCBAQCBzdGF0aWMgaW50IGZxX3BpZV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0XHQgICBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX0JFVEFdKSk7XG4gXG4gXHRpZiAodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSlcbi1cdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKTtcbitcdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sXG4rXHRcdFx0ICAgbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKSk7XG4gXG4gXHRpZiAodGJbVENBX0ZRX1BJRV9NRU1PUllfTElNSVRdKVxuIFx0XHRXUklURV9PTkNFKHEtXHUwMDNlbWVtb3J5X2xpbWl0LFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfaGhmLmMgYi9uZXQvc2NoZWQvc2NoX2hoZi5jXG5pbmRleCA5NmFjYWI2YThkYTAzLi5mYzcyZjgyNWZiZDkyIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9oaGYuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9oaGYuY1xuQEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgaW50IGhoZl9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0cmV0dXJuIGVycjtcbiBcbiBcdGlmICh0YltUQ0FfSEhGX1FVQU5UVU1dKVxuLVx0XHRuZXdfcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfUVVBTlRVTV0pO1xuK1x0XHRuZXdfcXVhbnR1bSA9IG1heCgyNTZVLCBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX1FVQU5UVU1dKSk7XG4gXG4gXHRpZiAodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSlcbiBcdFx0bmV3X2hoZl9ub25faGhfd2VpZ2h0ID0gbmxhX2dldF91MzIodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSk7XG5AQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdGludCBpO1xuIFxuIFx0c2NoLVx1MDAzZWxpbWl0ID0gMTAwMDtcbi1cdHEtXHUwMDNlcXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0cS1cdTAwM2VxdWFudHVtID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAyNTYsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcdGdldF9yYW5kb21fYnl0ZXMoXHUwMDI2cS1cdTAwM2VwZXJ0dXJiYXRpb24sIHNpemVvZihxLVx1MDAzZXBlcnR1cmJhdGlvbikpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2cS1cdTAwM2VuZXdfYnVja2V0cyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZxLVx1MDAzZW9sZF9idWNrZXRzKTtcbkBAIC02MjQsMTAgKzYyNCw2IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdHEtXHUwMDNlaGhmX2V2aWN0X3RpbWVvdXQgPSBIWjsgICAgICAvKiAxICBzZWMgKi9cbiBcdHEtXHUwMDNlaGhmX25vbl9oaF93ZWlnaHQgPSAyO1xuIFxuLVx0aWYgKChpbnQpcS1cdTAwM2VxdWFudHVtIFx1MDAzYz0gMCB8fFxuLVx0ICAgICh1NjQpcS1cdTAwM2VxdWFudHVtICogcS1cdTAwM2VoaGZfbm9uX2hoX3dlaWdodCBcdTAwM2UgSU5UX01BWClcbi1cdFx0cS1cdTAwM2VxdWFudHVtID0gMjU2O1xuLVxuIFx0aWYgKG9wdCkge1xuIFx0XHRpbnQgZXJyID0gaGhmX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9waWUuY1xuaW5kZXggYjQxZjJkZWYyZTJjYy4uM2I3ODYzZmZkMjg0YyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfcGllLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfcGllLmNcbkBAIC0zNSw3ICszNSw3IEBAIGJvb2wgcGllX2Ryb3BfZWFybHkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBwaWVfcGFyYW1zICpwYXJhbXMsXG4ge1xuIFx0dTY0IHJuZDtcbiBcdHU2NCBsb2NhbF9wcm9iID0gdmFycy1cdTAwM2Vwcm9iO1xuLVx0dTMyIG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0dTMyIG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuIFx0LyogSWYgdGhlcmUgaXMgc3RpbGwgYnVyc3QgYWxsb3dhbmNlIGxlZnQgc2tpcCByYW5kb20gZWFybHkgZHJvcCAqL1xuIFx0aWYgKHZhcnMtXHUwMDNlYnVyc3RfdGltZSBcdTAwM2UgMClcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3NmcS5jIGIvbmV0L3NjaGVkL3NjaF9zZnEuY1xuaW5kZXggMTg3ZDNlZDU3OGYyNi4uOGJiY2ZjOWU4NWQ5NCAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfc2ZxLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfc2ZxLmNcbkBAIC02NjAsNiArNjYwLDExIEBAIHN0YXRpYyBpbnQgc2ZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbitcdGlmIChjdGwtXHUwMDNlcXVhbnR1bSBcdTAwM2UgMSBcdTAwM2NcdTAwM2MgMjApIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJxdWFudHVtIHRvbyBsYXJnZVwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4gXHRpZiAoY3RsLVx1MDAzZXBlcnR1cmJfcGVyaW9kIFx1MDAzYyAwIHx8XG4gXHQgICAgY3RsLVx1MDAzZXBlcnR1cmJfcGVyaW9kIFx1MDAzZSBJTlRfTUFYIC8gSFopIHtcbiBcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJpbnZhbGlkIHBlcnR1cmIgcGVyaW9kXCIpO1xuQEAgLTY4OCw3ICs2OTMsNyBAQCBzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcbiBcdC8qIHVwZGF0ZSBhbmQgdmFsaWRhdGUgY29uZmlndXJhdGlvbiAqL1xuIFx0aWYgKGN0bC1cdTAwM2VxdWFudHVtKVxuLVx0XHRxdWFudHVtID0gY3RsLVx1MDAzZXF1YW50dW07XG4rXHRcdHF1YW50dW0gPSBtYXgoMjU2VSwgY3RsLVx1MDAzZXF1YW50dW0pO1xuIFx0aWYgKGN0bC1cdTAwM2VmbG93cylcbiBcdFx0bWF4Zmxvd3MgPSBtaW5fdCh1MzIsIGN0bC1cdTAwM2VmbG93cywgU0ZRX01BWF9GTE9XUyk7XG4gXHRpZiAoY3RsLVx1MDAzZWRpdmlzb3IpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA4OjM1OjQ3LjY5NDA0NzA0NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE1MTQ0MjAyNjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2ggYW5kIGRlY2lkZSBpZiBpdCdzIGZ1enotd29ydGh5LiBUaGUgZmFjdCB0aGF0IGl0IHRvdWNoZXMgbXVsdGlwbGUgYG5ldC9zY2hlZGAgcWRpc2NzIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSXQgc2VlbXMgdG8gbW9kaWZ5IGEgc2xldyBvZiB0aGVtOiBgc2NoX2Ryci5jYCwgYHNjaF9kdWFscGkyLmNgLCBgc2NoX2V0cy5jYCwgYHNjaF9mcS5jYCwgYHNjaF9mcV9waWUuY2AsIGBzY2hfaGhmLmNgLCBgc2NoX3BpZS5jYCwgYW5kIGBzY2hfc2ZxLmNgLlxuXG5Ob3csIGRpZ2dpbmcgZGVlcGVyLCBpdCBsb29rcyBsaWtlIHRoZSBjb3JlIG9mIHRoZXNlIGNoYW5nZXMgcmV2b2x2ZXMgYXJvdW5kIGNsYW1waW5nIGFuZCBzYW5pdGl6aW5nIGBxdWFudHVtYCBhbmQgYG10dWAgdmFsdWVzIGFjcm9zcyB0aGVzZSB0cmFmZmljIGNvbnRyb2wgc2NoZWR1bGVycy4gV2UncmUgdGFsa2luZyBhYm91dCBlbmZvcmNpbmcgbWluaW11bXMgYW5kIG1heGltdW1zLCBlc3NlbnRpYWxseSBib3VuZGluZyB0aGVzZSB2YWx1ZXMgdG8gcHJldmVudCBvdmVyZmxvd3MsIHBvdGVudGlhbCBpbmZpbml0ZSBsb29wcywgZGl2aXNpb24gYnkgemVybyBlcnJvcnMsIG5lZ2F0aXZlIHZhbHVlcywgYW5kIGxhcmdlIGFsbG9jYXRpb24gaXNzdWVzLiBUaGF0J3MgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcsIGJ1dCBpcyBpdCBmdXp6YWJsZT9cblxuVGhlIGNydWNpYWwgcXVlc3Rpb24gaXMgcmVhY2hhYmlsaXR5LiBUaGFua2Z1bGx5LCB0aGVzZSBhcmUgYWxsIGNvcmUgTGludXggbmV0d29ya2luZyBxZGlzY3MsIGZ1bGx5IGNvbmZpZ3VyYWJsZSB2aWEgbmV0bGluayAodXNpbmcgYHJ0bmV0bGlua2AgYW5kIGB0Y2ApLiBUaGlzIGlzbid0IHNvbWUgbmljaGUgc3Vic3lzdGVtOyBpdCdzIHJpZ2h0IGluIHRoZSBjb3JlIG9mIHRyYWZmaWMgY29udHJvbC4gTWVhbmluZyB0aGVzZSBjb25maWd1cmF0aW9uIGNoYW5nZXMgYXJlIGhpZ2hseSBhY2Nlc3NpYmxlIGluIHN0YW5kYXJkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGlzIHBhdGNoIGZ1bmRhbWVudGFsbHkgYWx0ZXJzIGhvdyB0aGVzZSBzY2hlZHVsZXJzIGhhbmRsZSB0aGUgYHF1YW50dW1gL2BtdHVgIGNvbmZpZ3VyYXRpb24gbG9naWMuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZSBLY29uZmlnIG9wdGlvbnMsIGJ1dCBiYXNlZCBvbiBhbGwgb2YgdGhpcywgdGhpcyBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVGhlIGNoYW5nZXMgYXJlIGFjY2Vzc2libGUgYW5kIG1vZGlmeSBjcml0aWNhbCB2YWx1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MzgsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwODozNjowMi44MzgyNTMwODNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODk4MzY1MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9TQ0hfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTQ2PWNvbW1lbnQgXFxcIlF1ZXVlaW5nL1NjaGVkdWxpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWctNDctXFxubmV0L3NjaGVkL0tjb25maWc6NDg6Y29uZmlnIE5FVF9TQ0hfSFRCXFxubmV0L3NjaGVkL0tjb25maWctNDktXFx0dHJpc3RhdGUgXFxcIkhpZXJhcmNoaWNhbCBUb2tlbiBCdWNrZXQgKEhUQilcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy02MS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo2Mjpjb25maWcgTkVUX1NDSF9IRlNDXFxubmV0L3NjaGVkL0tjb25maWctNjMtXFx0dHJpc3RhdGUgXFxcIkhpZXJhcmNoaWNhbCBGYWlyIFNlcnZpY2UgQ3VydmUgKEhGU0MpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNzAtXFxubmV0L3NjaGVkL0tjb25maWc6NzE6Y29uZmlnIE5FVF9TQ0hfUFJJT1xcbm5ldC9zY2hlZC9LY29uZmlnLTcyLVxcdHRyaXN0YXRlIFxcXCJNdWx0aSBCYW5kIFByaW9yaXR5IFF1ZXVlaW5nIChQUklPKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTc5LVxcbm5ldC9zY2hlZC9LY29uZmlnOjgwOmNvbmZpZyBORVRfU0NIX01VTFRJUVxcbm5ldC9zY2hlZC9LY29uZmlnLTgxLVxcdHRyaXN0YXRlIFxcXCJIYXJkd2FyZSBNdWx0aXF1ZXVlLWF3YXJlIE11bHRpIEJhbmQgUXVldWluZyAoTVVMVElRKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTg4LVxcbm5ldC9zY2hlZC9LY29uZmlnOjg5OmNvbmZpZyBORVRfU0NIX1JFRFxcbm5ldC9zY2hlZC9LY29uZmlnLTkwLVxcdHRyaXN0YXRlIFxcXCJSYW5kb20gRWFybHkgRGV0ZWN0aW9uIChSRUQpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctOTktXFxubmV0L3NjaGVkL0tjb25maWc6MTAwOmNvbmZpZyBORVRfU0NIX1NGQlxcbm5ldC9zY2hlZC9LY29uZmlnLTEwMS1cXHR0cmlzdGF0ZSBcXFwiU3RvY2hhc3RpYyBGYWlyIEJsdWUgKFNGQilcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xMTAtXFxubmV0L3NjaGVkL0tjb25maWc6MTExOmNvbmZpZyBORVRfU0NIX1NGUVxcbm5ldC9zY2hlZC9LY29uZmlnLTExMi1cXHR0cmlzdGF0ZSBcXFwiU3RvY2hhc3RpYyBGYWlybmVzcyBRdWV1ZWluZyAoU0ZRKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTEyMS1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxMjI6Y29uZmlnIE5FVF9TQ0hfVEVRTFxcbm5ldC9zY2hlZC9LY29uZmlnLTEyMy1cXHR0cmlzdGF0ZSBcXFwiVHJ1ZSBMaW5rIEVxdWFsaXplciAoVEVRTClcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xMzMtXFxubmV0L3NjaGVkL0tjb25maWc6MTM0OmNvbmZpZyBORVRfU0NIX1RCRlxcbm5ldC9zY2hlZC9LY29uZmlnLTEzNS1cXHR0cmlzdGF0ZSBcXFwiVG9rZW4gQnVja2V0IEZpbHRlciAoVEJGKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTE0NC1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxNDU6Y29uZmlnIE5FVF9TQ0hfQ0JTXFxubmV0L3NjaGVkL0tjb25maWctMTQ2LVxcdHRyaXN0YXRlIFxcXCJDcmVkaXQgQmFzZWQgU2hhcGVyIChDQlMpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTU1LVxcbm5ldC9zY2hlZC9LY29uZmlnOjE1Njpjb25maWcgTkVUX1NDSF9FVEZcXG5uZXQvc2NoZWQvS2NvbmZpZy0xNTctXFx0dHJpc3RhdGUgXFxcIkVhcmxpZXN0IFR4VGltZSBGaXJzdCAoRVRGKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTE2Ni1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxNjc6Y29uZmlnIE5FVF9TQ0hfTVFQUklPX0xJQlxcbm5ldC9zY2hlZC9LY29uZmlnLTE2OC1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTcxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjE3Mjpjb25maWcgTkVUX1NDSF9UQVBSSU9cXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIlRpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgU2NoZWR1bGVyXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTgzLVxcbm5ldC9zY2hlZC9LY29uZmlnOjE4NDpjb25maWcgTkVUX1NDSF9HUkVEXFxubmV0L3NjaGVkL0tjb25maWctMTg1LVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIFJhbmRvbSBFYXJseSBEZXRlY3Rpb24gKEdSRUQpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTk0LVxcbm5ldC9zY2hlZC9LY29uZmlnOjE5NTpjb25maWcgTkVUX1NDSF9ORVRFTVxcbm5ldC9zY2hlZC9LY29uZmlnLTE5Ni1cXHR0cmlzdGF0ZSBcXFwiTmV0d29yayBlbXVsYXRvciAoTkVURU0pXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMjA2LVxcbm5ldC9zY2hlZC9LY29uZmlnOjIwNzpjb25maWcgTkVUX1NDSF9EUlJcXG5uZXQvc2NoZWQvS2NvbmZpZy0yMDgtXFx0dHJpc3RhdGUgXFxcIkRlZmljaXQgUm91bmQgUm9iaW4gc2NoZWR1bGVyIChEUlIpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMjE3LVxcbm5ldC9zY2hlZC9LY29uZmlnOjIxODpjb25maWcgTkVUX1NDSF9NUVBSSU9cXG5uZXQvc2NoZWQvS2NvbmZpZy0yMTktXFx0dHJpc3RhdGUgXFxcIk11bHRpLXF1ZXVlIHByaW9yaXR5IHNjaGVkdWxlciAoTVFQUklPKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTIzMC1cXG5uZXQvc2NoZWQvS2NvbmZpZzoyMzE6Y29uZmlnIE5FVF9TQ0hfU0tCUFJJT1xcbm5ldC9zY2hlZC9LY29uZmlnLTIzMi1cXHR0cmlzdGF0ZSBcXFwiU0tCIHByaW9yaXR5IHF1ZXVlIHNjaGVkdWxlciAoU0tCUFJJTylcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0yNDMtXFxubmV0L3NjaGVkL0tjb25maWc6MjQ0OmNvbmZpZyBORVRfU0NIX0NIT0tFXFxubmV0L3NjaGVkL0tjb25maWctMjQ1LVxcdHRyaXN0YXRlIFxcXCJDSE9vc2UgYW5kIEtlZXAgcmVzcG9uc2l2ZSBmbG93IHNjaGVkdWxlciAoQ0hPS0UpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMjU0LVxcbm5ldC9zY2hlZC9LY29uZmlnOjI1NTpjb25maWcgTkVUX1NDSF9RRlFcXG5uZXQvc2NoZWQvS2NvbmZpZy0yNTYtXFx0dHJpc3RhdGUgXFxcIlF1aWNrIEZhaXIgUXVldWVpbmcgc2NoZWR1bGVyIChRRlEpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMjY1LVxcbm5ldC9zY2hlZC9LY29uZmlnOjI2Njpjb25maWcgTkVUX1NDSF9DT0RFTFxcbm5ldC9zY2hlZC9LY29uZmlnLTI2Ny1cXHR0cmlzdGF0ZSBcXFwiQ29udHJvbGxlZCBEZWxheSBBUU0gKENPREVMKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTI3Ni1cXG5uZXQvc2NoZWQvS2NvbmZpZzoyNzc6Y29uZmlnIE5FVF9TQ0hfRlFfQ09ERUxcXG5uZXQvc2NoZWQvS2NvbmZpZy0yNzgtXFx0dHJpc3RhdGUgXFxcIkZhaXIgUXVldWUgQ29udHJvbGxlZCBEZWxheSBBUU0gKEZRX0NPREVMKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTI4Ny1cXG5uZXQvc2NoZWQvS2NvbmZpZzoyODg6Y29uZmlnIE5FVF9TQ0hfQ0FLRVxcbm5ldC9zY2hlZC9LY29uZmlnLTI4OS1cXHR0cmlzdGF0ZSBcXFwiQ29tbW9uIEFwcGxpY2F0aW9ucyBLZXB0IEVuaGFuY2VkIChDQUtFKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTI5OC1cXG5uZXQvc2NoZWQvS2NvbmZpZzoyOTk6Y29uZmlnIE5FVF9TQ0hfRlFcXG5uZXQvc2NoZWQvS2NvbmZpZy0zMDAtXFx0dHJpc3RhdGUgXFxcIkZhaXIgUXVldWVcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0zMTItXFxubmV0L3NjaGVkL0tjb25maWc6MzEzOmNvbmZpZyBORVRfU0NIX0hIRlxcbm5ldC9zY2hlZC9LY29uZmlnLTMxNC1cXHR0cmlzdGF0ZSBcXFwiSGVhdnktSGl0dGVyIEZpbHRlciAoSEhGKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTMyMS1cXG5uZXQvc2NoZWQvS2NvbmZpZzozMjI6Y29uZmlnIE5FVF9TQ0hfUElFXFxubmV0L3NjaGVkL0tjb25maWctMzIzLVxcdHRyaXN0YXRlIFxcXCJQcm9wb3J0aW9uYWwgSW50ZWdyYWwgY29udHJvbGxlciBFbmhhbmNlZCAoUElFKSBzY2hlZHVsZXJcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0zMzMtXFxubmV0L3NjaGVkL0tjb25maWc6MzM0OmNvbmZpZyBORVRfU0NIX0ZRX1BJRVxcbm5ldC9zY2hlZC9LY29uZmlnLTMzNS1cXHRkZXBlbmRzIG9uIE5FVF9TQ0hfUElFXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0zNDYtXFxubmV0L3NjaGVkL0tjb25maWc6MzQ3OmNvbmZpZyBORVRfU0NIX0lOR1JFU1NcXG5uZXQvc2NoZWQvS2NvbmZpZy0zNDgtXFx0dHJpc3RhdGUgXFxcIkluZ3Jlc3MvY2xhc3NpZmllci1hY3Rpb24gUWRpc2NcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0zNjItXFxubmV0L3NjaGVkL0tjb25maWc6MzYzOmNvbmZpZyBORVRfU0NIX1BMVUdcXG5uZXQvc2NoZWQvS2NvbmZpZy0zNjQtXFx0dHJpc3RhdGUgXFxcIlBsdWcgbmV0d29yayB0cmFmZmljIHVudGlsIHJlbGVhc2UgKFBMVUcpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMzg4LVxcbm5ldC9zY2hlZC9LY29uZmlnOjM4OTpjb25maWcgTkVUX1NDSF9FVFNcXG5uZXQvc2NoZWQvS2NvbmZpZy0zOTAtXFx0dHJpc3RhdGUgXFxcIkVuaGFuY2VkIHRyYW5zbWlzc2lvbiBzZWxlY3Rpb24gc2NoZWR1bGVyIChFVFMpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNDA1LVxcbm5ldC9zY2hlZC9LY29uZmlnOjQwNjpjb25maWcgTkVUX1NDSF9CUEZcXG5uZXQvc2NoZWQvS2NvbmZpZy00MDctXFx0Ym9vbCBcXFwiQlBGLWJhc2VkIFFkaXNjXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNDE3LVxcbm5ldC9zY2hlZC9LY29uZmlnOjQxODpjb25maWcgTkVUX1NDSF9EVUFMUEkyXFxubmV0L3NjaGVkL0tjb25maWctNDE5LVxcdHRyaXN0YXRlIFxcXCJEdWFsIFF1ZXVlIFBJIFNxdWFyZSAoRFVBTFBJMikgc2NoZWR1bGVyXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNDI5LVxcbm5ldC9zY2hlZC9LY29uZmlnOjQzMDptZW51Y29uZmlnIE5FVF9TQ0hfREVGQVVMVFxcbm5ldC9zY2hlZC9LY29uZmlnLTQzMS1cXHRib29sIFxcXCJBbGxvdyBvdmVycmlkZSBkZWZhdWx0IHF1ZXVlIGRpc2NpcGxpbmVcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz05NjY9ZW5kaWYgIyBORVRfU0NIRURcXG5uZXQvc2NoZWQvS2NvbmZpZy05NjctXFxubmV0L3NjaGVkL0tjb25maWc6OTY4OmNvbmZpZyBORVRfU0NIX0ZJRk9cXG5uZXQvc2NoZWQvS2NvbmZpZy05NjktXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwODozNjowMi45MjgwOTYwODdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MTA2ODc0NzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBOZXR3b3JrIFNjaGVkdWxlciBDaGFuZ2VzKipcblxuT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGVzZSBmaWxlIG1vZGlmaWNhdGlvbnMgYW5kIHRoZWlyIGFzc29jaWF0ZWQgS2NvbmZpZyBvcHRpb25zIHdpdGhpbiB0aGUgbmV0d29yayBzY2hlZHVsZXIgc3Vic3lzdGVtLiBGaXJzdCwgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gbGluayB0aGUgZmlsZSBjaGFuZ2VzIHRvIHRoZWlyIEtjb25maWcgZW50cmllcy4gSSBzZWUgdGhhdDpcblxuKiAgIGBuZXQvc2NoZWQvc2NoX2Ryci5jYCBpcyBjb25uZWN0ZWQgdG8gYE5FVF9TQ0hfRFJSYC5cbiogICBgbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNgIGNvcnJlc3BvbmRzIHRvIGBORVRfU0NIX0RVQUxQSTJgLlxuKiAgIGBuZXQvc2NoZWQvc2NoX2V0cy5jYCBpcyBlbmFibGVkIGJ5IGBORVRfU0NIX0VUU2AuXG4qICAgYG5ldC9zY2hlZC9zY2hfZnEuY2AgaXMgY29udHJvbGxlZCBieSBgTkVUX1NDSF9GUWAuXG4qICAgYG5ldC9zY2hlZC9zY2hfZnFfcGllLmNgIHJlbGF0ZXMgdG8gYE5FVF9TQ0hfRlFfUElFYC5cbiogICBgbmV0L3NjaGVkL3NjaF9oaGYuY2Agc2VlbXMgY29ubmVjdGVkIHRvIGBORVRfU0NIX0hIRmAuXG4qICAgYG5ldC9zY2hlZC9zY2hfcGllLmNgIHVzZXMgYE5FVF9TQ0hfUElFYC5cbiogICBBbmQgZmluYWxseSwgYG5ldC9zY2hlZC9zY2hfc2ZxLmNgIGlzIHRpZWQgdG8gYE5FVF9TQ0hfU0ZRYC5cblxuTm93LCBJIG5lZWQgdG8gb3BlbiB0aGUgYE1ha2VmaWxlYCBpbiBgbmV0L3NjaGVkYCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBtYXBwaW5nLiBJIHdhbnQgdG8gYmUgMTAwJSBzdXJlIHRoaXMgaXNuJ3QganVzdCBhIGNvaW5jaWRlbmNlIGFuZCB0aGF0IHRoaXMgaXMgdGhlIHN5c3RlbSBmb3IgY29ubmVjdGluZyB0aGVzZSBmaWxlcyB0byB0aGVpciBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MzMzLCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA4OjM2OjA3LjAzNDk3MzU4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxNTk2OTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjaF8oZHJyfGR1YWxwaTJ8ZXRzfGZxfGZxX3BpZXxoaGZ8cGllfHNmcSlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9NYWtlZmlsZT00MD1vYmotJChDT05GSUdfTkVUX1NDSF9TRkIpXFx0Kz0gc2NoX3NmYi5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjQxOm9iai0kKENPTkZJR19ORVRfU0NIX1NGUSlcXHQrPSBzY2hfc2ZxLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNDItb2JqLSQoQ09ORklHX05FVF9TQ0hfVEJGKVxcdCs9IHNjaF90YmYub1xcbi0tXFxubmV0L3NjaGVkL01ha2VmaWxlPTQ2PW9iai0kKENPTkZJR19ORVRfU0NIX05FVEVNKVxcdCs9IHNjaF9uZXRlbS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjQ3Om9iai0kKENPTkZJR19ORVRfU0NIX0RSUilcXHQrPSBzY2hfZHJyLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNDgtb2JqLSQoQ09ORklHX05FVF9TQ0hfUExVRylcXHQrPSBzY2hfcGx1Zy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjQ5Om9iai0kKENPTkZJR19ORVRfU0NIX0VUUylcXHQrPSBzY2hfZXRzLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNTAtb2JqLSQoQ09ORklHX05FVF9TQ0hfTVFQUklPKVxcdCs9IHNjaF9tcXByaW8ub1xcbi0tXFxubmV0L3NjaGVkL01ha2VmaWxlPTU1PW9iai0kKENPTkZJR19ORVRfU0NIX0NPREVMKVxcdCs9IHNjaF9jb2RlbC5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjU2Om9iai0kKENPTkZJR19ORVRfU0NIX0ZRX0NPREVMKVxcdCs9IHNjaF9mcV9jb2RlbC5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTU3LW9iai0kKENPTkZJR19ORVRfU0NIX0NBS0UpXFx0Kz0gc2NoX2Nha2Uub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo1ODpvYmotJChDT05GSUdfTkVUX1NDSF9GUSlcXHQrPSBzY2hfZnEub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo1OTpvYmotJChDT05GSUdfTkVUX1NDSF9ISEYpXFx0Kz0gc2NoX2hoZi5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjYwOm9iai0kKENPTkZJR19ORVRfU0NIX1BJRSlcXHQrPSBzY2hfcGllLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX05FVF9TQ0hfRlFfUElFKVxcdCs9IHNjaF9mcV9waWUub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS02Mi1vYmotJChDT05GSUdfTkVUX1NDSF9DQlMpXFx0Kz0gc2NoX2Nicy5vXFxuLS1cXG5uZXQvc2NoZWQvTWFrZWZpbGU9NjU9b2JqLSQoQ09ORklHX05FVF9TQ0hfQlBGKVxcdCs9IGJwZl9xZGlzYy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19ORVRfU0NIX0RVQUxQSTIpXFx0Kz0gc2NoX2R1YWxwaTIub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS02Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDg6MzY6MDcuMTI2NTc1ODIzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTU0NTg5NTg5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIEtlcm5lbCBOZXR3b3JrIFNjaGVkdWxlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgbmV0d29yayBzY2hlZHVsZXIgY29uZmlndXJhdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIHBhcmVudCBLY29uZmlnIG9wdGlvbnMgZm9yIGFueXRoaW5nIHVuZGVyIGBORVRfU0NIXypgLiBJIGtub3cgdGhhdCBgTkVUX1NDSEVEYCBpcyB0aGUgbGlrZWx5IHN0YXJ0aW5nIHBvaW50LCBzbyBJJ2xsIGJlZ2luIGJ5IGxvb2tpbmcgaW4gYG5ldC9zY2hlZC9LY29uZmlnYC4gSSBzZWUgdGhlIGBtZW51Y29uZmlnIE5FVF9TQ0hFRGAgZGVmaW5pdGlvbiwgd2hpY2ggdGVsbHMgbWUgdGhpcyBpcyBhIHByaW1hcnkgb3B0aW9uLiBUaGVuIEknbGwgdHJhY2UgaXRzIGluY2x1c2lvbi4gQWgsIHJpZ2h0LCBpbiB0aGUgdG9wLWxldmVsIGBuZXQvS2NvbmZpZ2AsIGl0J3MgaW5jbHVkaW5nIHRoZSBzY2hlZCBjb25maWcgd2l0aCBhIGBzb3VyY2UgXCJuZXQvc2NoZWQvS2NvbmZpZ1wiYCBjb21tYW5kLiBUaGF0IG1ha2VzIHNlbnNlLCBrZWVwaW5nIHRoaW5ncyBtb2R1bGFyLiBBbmQgdGhhdCdzIHVuZGVyIHRoZSBcIk5ldHdvcmtpbmcgb3B0aW9uc1wiIG1lbnUgKE5FVCkuIEdvb2QuXG5cbk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYHBpZV9kcm9wX2Vhcmx5YCB2YXJpYWJsZS4gSSBzZWVtIHRvIHJlY2FsbCBkZWFsaW5nIHdpdGggdGhhdCByZWNlbnRseS4gSSdsbCBvcGVuIHVwIGBuZXQvc2NoZWQvc2NoX3BpZS5jYCBhbmQgbWFrZSBzdXJlIGl0J3Mgbm90IGEgc3RhdGljIG9yIGxvY2FsIHZhcmlhYmxlLCBidXQgcmF0aGVyIGFuIGV4cG9ydGVkIG9uZS4gS25vd2luZyBpdHMgdmlzaWJpbGl0eSBpcyBrZXkgdG8gaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHNjaGVkdWxlci5cblxuXG4iLCJJbnB1dFRva2VucyI6OTUwNiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA4OjM2OjEyLjY3MjQ3NTI5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NDU1NDU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBpZV9kcm9wX2Vhcmx5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9mcV9waWUuYz0xMzA9c3RhdGljIGludCBmcV9waWVfcWRpc2NfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtMTY2LVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM6MTY3OlxcdGlmICghcGllX2Ryb3BfZWFybHkoc2NoLCBcXHUwMDI2cS1cXHUwMDNlcF9wYXJhbXMsIFxcdTAwMjZzZWxfZmxvdy1cXHUwMDNldmFycyxcXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTE2OC1cXHRcXHRcXHQgICAgc2VsX2Zsb3ctXFx1MDAzZWJhY2tsb2csIHNrYi1cXHUwMDNlbGVuKSkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9waWUuYz0yNT1zdHJ1Y3QgcGllX3NjaGVkX2RhdGEge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9waWUuYy0zMi1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjMzOmJvb2wgcGllX2Ryb3BfZWFybHkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBwaWVfcGFyYW1zICpwYXJhbXMsXFxubmV0L3NjaGVkL3NjaF9waWUuYy0zNC1cXHRcXHQgICAgc3RydWN0IHBpZV92YXJzICp2YXJzLCB1MzIgYmFja2xvZywgdTMyIHBhY2tldF9zaXplKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9waWUuYy01MC1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjUxOlxcdC8qIElmIHdlIGhhdmUgZmV3ZXIgdGhhbiAyIG10dS1zaXplZCBwYWNrZXRzLCBkaXNhYmxlIHBpZV9kcm9wX2Vhcmx5LFxcbm5ldC9zY2hlZC9zY2hfcGllLmMtNTItXFx0ICogc2ltaWxhciB0byBtaW5fdGggaW4gUkVEXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTgyLX1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjgzOkVYUE9SVF9TWU1CT0xfR1BMKHBpZV9kcm9wX2Vhcmx5KTtcXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTg0LVxcbm5ldC9zY2hlZC9zY2hfcGllLmM9ODU9c3RhdGljIGludCBwaWVfcWRpc2NfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcGllLmMtOTgtXFxubmV0L3NjaGVkL3NjaF9waWUuYzo5OTpcXHRpZiAoIXBpZV9kcm9wX2Vhcmx5KHNjaCwgXFx1MDAyNnEtXFx1MDAzZXBhcmFtcywgXFx1MDAyNnEtXFx1MDAzZXZhcnMsIHNjaC1cXHUwMDNlcXN0YXRzLmJhY2tsb2csXFxubmV0L3NjaGVkL3NjaF9waWUuYy0xMDAtXFx0XFx0XFx0ICAgIHNrYi1cXHUwMDNlbGVuKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwODozNjoxMi43MzY5NDUyOTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1Nzg4ODk0ODM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBRZGlzYyBGdW5jdGlvbiBWaXNpYmlsaXR5KipcblxuT2theSwgc28gYHBpZV9kcm9wX2Vhcmx5YCBpcyBub3cgZXhwb3J0ZWQgd2l0aCBgRVhQT1JUX1NZTUJPTF9HUExgLiBUaGF0J3MgdGhlIGtleSBjaGFuZ2UuIE5vdywgSSB3YW50IHRvIHNlZSB3aGF0IG90aGVyIGZ1bmN0aW9ucyBhcmUgYWZmZWN0ZWQgaW4gdGhlc2UgZmlsZXMgYW5kIGhvdyB0aGV5J3JlIGV4cG9zZWQuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgb3RoZXIgUWRpc2MgZnVuY3Rpb25zIGFuZCBzeW1ib2xzIGluIHRoZSBgc2NoXypgIGZpbGVzLiBMZXQgbWUgcnVuIHRocm91Z2ggZWFjaCBmaWxlOlxuXG4qICAgYHNjaF9kcnIuY2A6IEp1c3QgYGRycl9jaGFuZ2VfY2xhc3NgLiBUaGF0J3MgYSBzdGF0aWMgY2FsbGJhY2sgd2l0aGluIGBkcnJfY2xhc3Nfb3BzYCwgc28gaXQncyBub3QgZGlyZWN0bHkgZXhwb3NlZC5cbiogICBgc2NoX2R1YWxwaTIuY2A6IEkgc2VlIGEgaGFuZGZ1bCBvZiBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uczogYGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbmAsIGBtdXN0X2Ryb3BgLCBhbmQgYGdldF9tZW1vcnlfbGltaXRgLiBUaGV5J3JlIGludGVybmFsIHRvIGBkdWFscGkyX2NoYW5nZWAsIGBkdWFscGkyX2luaXRgLCBhbmQgYGR1YWxwaTJfZW5xdWV1ZWAuIEZpbmUsIGFsbCBpbnRlcm5hbC5cbiogICBgc2NoX2V0cy5jYDogSGVyZSwgYGV0c19xdWFudHVtX3BhcnNlYCBhbmQgYGV0c19xZGlzY19jaGFuZ2VgLiBUaGVzZSBhcmUgc3RhdGljIGNhbGxiYWNrcyB0b28sIHBhcnQgb2YgdGhlIGBldHNfcWRpc2Nfb3BzYCBhbmQgYGV0c19jbGFzc19vcHNgIHN0cnVjdHVyZXMuIFRoZXkncmUgbm90IGV4dGVybmFsbHkgdmlzaWJsZS5cbiogICBgc2NoX2ZxLmNgOiBCb3RoIGBmcV9jaGFuZ2VgIGFuZCBgZnFfaW5pdGAgYXJlIHN0YXRpYyBjYWxsYmFja3Mgd2l0aGluIGBmcV9xZGlzY19vcHNgLiBTdGlsbCBpbnRlcm5hbC5cbiogICBgc2NoX2ZxX3BpZS5jYDogT25seSBgZnFfcGllX2NoYW5nZWAuIEl0J3MgYSBzdGF0aWMgY2FsbGJhY2sgaW4gYGZxX3BpZV9xZGlzY19vcHNgLCBzbyB0aGF0J3MgYWxzbyBpbnRlcm5hbC5cbiogICBgc2NoX2hoZi5jYDogVGhlIGBoaGZfY2hhbmdlYCBhbmQgYGhoZl9pbml0YCBmdW5jdGlvbnMgYXJlIGFsc28gaW50ZXJuYWwgc3RhdGljIGNhbGxiYWNrcyBpbiBgaGhmX3FkaXNjX29wc2AuXG4qICAgYHNjaF9waWUuY2A6IE9idmlvdXNseSwgYHBpZV9kcm9wX2Vhcmx5YCBpcyB0aGUgZXhjZXB0aW9uIGhlcmUsIGJlaW5nIHRoZSBleHBvcnRlZCBmdW5jdGlvbi5cbiogICBgc2NoX3NmcS5jYDogVGhlIGBzZnFfY2hhbmdlYCBmdW5jdGlvbiBpcyBhbm90aGVyIHN0YXRpYyBjYWxsYmFjayBpbiBgc2ZxX3FkaXNjX29wc2AuXG5cbkFscmlnaHQsIGl0IGxvb2tzIGxpa2UgbW9zdCBvZiB0aGVzZSBRZGlzYyBmdW5jdGlvbnMgYXJlIG1hbmFnZWQgaW50ZXJuYWxseSB0aHJvdWdoIGBRZGlzY19vcHNgIGFuZCBgUWRpc2NfY2xhc3Nfb3BzYCBzdHJ1Y3RzLCB1c2luZyBjYWxsYmFja3MuIE1vc3Qgb2YgdGhlc2UgZmlsZXMgYXJlIGNvbnNpc3RlbnQgd2l0aCB0aGlzIHN0cnVjdHVyZSwgc28gSSdsbCBjaGVjayBob3cgUWRpc2MgZnVuY3Rpb25zIGFyZSB0eXBpY2FsbHkgcmVwcmVzZW50ZWQgYXMgRm9jdXNTeW1ib2xzIGFuZCBpZiBhbnkgb2YgdGhlbSBhcmUgZXhwb3J0ZWQgb3IgbWFkZSB2aXNpYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDM3MywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwODozNjoxOC41MjU4NDQxOTJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1NzUyMzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBRZGlzY19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvYnBmX3FkaXNjLmMtMTAtXFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jOjExOiNkZWZpbmUgUURJU0NfT1BfSURYKG9wKVxcdChvZmZzZXRvZihzdHJ1Y3QgUWRpc2Nfb3BzLCBvcCkgLyBzaXplb2Yodm9pZCAoKikodm9pZCkpKVxcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy0xMi0jZGVmaW5lIFFESVNDX01PRkZfSURYKG1vZmYpXFx0KG1vZmYgLyBzaXplb2Yodm9pZCAoKikodm9pZCkpKVxcbi0tXFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jPTMzPXN0YXRpYyBib29sIGJwZl9xZGlzY19pc192YWxpZF9hY2Nlc3MoaW50IG9mZiwgaW50IHNpemUsXFxuLS1cXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtNDEtXFx0YXJnID0gYnRmX2N0eF9hcmdfaWR4KGJ0ZiwgcHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VhdHRhY2hfZnVuY19wcm90bywgb2ZmKTtcXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM6NDI6XFx0aWYgKHByb2ctXFx1MDAzZWF1eC1cXHUwMDNlYXR0YWNoX3N0X29wc19tZW1iZXJfb2ZmID09IG9mZnNldG9mKHN0cnVjdCBRZGlzY19vcHMsIGVucXVldWUpKSB7XFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTQzLVxcdFxcdGlmIChhcmcgPT0gMiBcXHUwMDI2XFx1MDAyNiB0eXBlID09IEJQRl9SRUFEKSB7XFxuLS1cXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM9MTM1PXN0YXRpYyBpbnQgYnBmX3FkaXNjX2dlbl9wcm9sb2d1ZShzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmLCBib29sIGRpcmVjdF93cml0ZSxcXG4tLVxcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy0xMzktXFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jOjE0MDpcXHRpZiAocHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VhdHRhY2hfc3Rfb3BzX21lbWJlcl9vZmYgIT0gb2Zmc2V0b2Yoc3RydWN0IFFkaXNjX29wcywgaW5pdCkpXFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTE0MS1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9zY2hlZC9icGZfcWRpc2MuYz0xNjU9c3RhdGljIGludCBicGZfcWRpc2NfZ2VuX2VwaWxvZ3VlKHN0cnVjdCBicGZfaW5zbiAqaW5zbl9idWYsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy0xNjktXFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jOjE3MDpcXHRpZiAocHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VhdHRhY2hfc3Rfb3BzX21lbWJlcl9vZmYgIT0gb2Zmc2V0b2Yoc3RydWN0IFFkaXNjX29wcywgcmVzZXQpIFxcdTAwMjZcXHUwMDI2XFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jOjE3MTpcXHQgICAgcHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VhdHRhY2hfc3Rfb3BzX21lbWJlcl9vZmYgIT0gb2Zmc2V0b2Yoc3RydWN0IFFkaXNjX29wcywgZGVzdHJveSkpXFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTE3Mi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9zY2hlZC9icGZfcWRpc2MuYz0zNjE9c3RhdGljIGludCBicGZfcWRpc2NfaW5pdF9tZW1iZXIoY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxcbi0tXFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTM2NC17XFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jOjM2NTpcXHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICp1cWRpc2Nfb3BzO1xcbm5ldC9zY2hlZC9icGZfcWRpc2MuYzozNjY6XFx0c3RydWN0IFFkaXNjX29wcyAqcWRpc2Nfb3BzO1xcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy0zNjctXFx0dTMyIG1vZmY7XFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTM2OC1cXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM6MzY5OlxcdHVxZGlzY19vcHMgPSAoY29uc3Qgc3RydWN0IFFkaXNjX29wcyAqKXVkYXRhO1xcbm5ldC9zY2hlZC9icGZfcWRpc2MuYzozNzA6XFx0cWRpc2Nfb3BzID0gKHN0cnVjdCBRZGlzY19vcHMgKilrZGF0YTtcXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtMzcxLVxcbi0tXFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTM3My1cXHRzd2l0Y2ggKG1vZmYpIHtcXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM6Mzc0OlxcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IFFkaXNjX29wcywgcHJpdl9zaXplKTpcXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtMzc1LVxcdFxcdGlmICh1cWRpc2Nfb3BzLVxcdTAwM2Vwcml2X3NpemUpXFxuLS1cXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtMzc4LVxcdFxcdHJldHVybiAxO1xcbm5ldC9zY2hlZC9icGZfcWRpc2MuYzozNzk6XFx0Y2FzZSBvZmZzZXRvZihzdHJ1Y3QgUWRpc2Nfb3BzLCBwZWVrKTpcXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtMzgwLVxcdFxcdHFkaXNjX29wcy1cXHUwMDNlcGVlayA9IHFkaXNjX3BlZWtfZGVxdWV1ZWQ7XFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jLTM4MS1cXHRcXHRyZXR1cm4gMDtcXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM6MzgyOlxcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IFFkaXNjX29wcywgaWQpOlxcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy0zODMtXFx0XFx0aWYgKGJwZl9vYmpfbmFtZV9jcHkocWRpc2Nfb3BzLVxcdTAwM2VpZCwgdXFkaXNjX29wcy1cXHUwMDNlaWQsXFxuLS1cXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmM9NDAyPXN0YXRpYyBpbnQgYnBmX3FkaXNjX3ZhbGlkYXRlKHZvaWQgKmtkYXRhKVxcbm5ldC9zY2hlZC9icGZfcWRpc2MuYy00MDMte1xcbm5ldC9zY2hlZC9icGZfcWRpc2MuYzo0MDQ6XFx0c3RydWN0IFFkaXNjX29wcyAqb3BzID0gKHN0cnVjdCBRZGlzY19vcHMgKilrZGF0YTtcXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtNDA1LVxcbi0tXFxubmV0L3NjaGVkL2JwZl9xZGlzYy5jPTQzND1zdGF0aWMgdm9pZCBRZGlzY19vcHNfX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtNDM3LVxcbm5ldC9zY2hlZC9icGZfcWRpc2MuYzo0Mzg6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgX19icGZfb3BzX3FkaXNjX29wcyA9IHtcXG5uZXQvc2NoZWQvYnBmX3FkaXNjLmMtNDM5LVxcdC5lbnF1ZXVlID0gUWRpc2Nfb3BzX19lbnF1ZXVlLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz0xMTk9c3RhdGljIERFRklORV9SV0xPQ0socWRpc2NfbW9kX2xvY2spO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xMjgtXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMjk6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgKnFkaXNjX2Jhc2U7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xMzAtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEzMi1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjEzMzppbnQgcmVnaXN0ZXJfcWRpc2Moc3RydWN0IFFkaXNjX29wcyAqcW9wcylcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEzNC17XFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMzU6XFx0c3RydWN0IFFkaXNjX29wcyAqcSwgKipxcDtcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEzNi1cXHRpbnQgcmMgPSAtRUVYSVNUO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz0xNzU9RVhQT1JUX1NZTUJPTChyZWdpc3Rlcl9xZGlzYyk7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNzYtXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxNzc6dm9pZCB1bnJlZ2lzdGVyX3FkaXNjKHN0cnVjdCBRZGlzY19vcHMgKnFvcHMpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNzgte1xcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTc5OlxcdHN0cnVjdCBRZGlzY19vcHMgKnEsICoqcXA7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xODAtXFx0aW50IGVyciA9IC1FTk9FTlQ7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE5OD12b2lkIHFkaXNjX2dldF9kZWZhdWx0KGNoYXIgKm5hbWUsIHNpemVfdCBsZW4pXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTIwNC1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjIwNTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyAqcWRpc2NfbG9va3VwX2RlZmF1bHQoY29uc3QgY2hhciAqbmFtZSlcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTIwNi17XFxubmV0L3NjaGVkL3NjaF9hcGkuYzoyMDc6XFx0c3RydWN0IFFkaXNjX29wcyAqcSA9IE5VTEw7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yMDgtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTIyMT1pbnQgcWRpc2Nfc2V0X2RlZmF1bHQoY29uc3QgY2hhciAqbmFtZSlcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTIyMi17XFxubmV0L3NjaGVkL3NjaF9hcGkuYzoyMjM6XFx0Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqb3BzO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjI0LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz0zMzk9c3RhdGljIHN0cnVjdCBRZGlzYyAqcWRpc2NfbGVhZihzdHJ1Y3QgUWRpc2MgKnAsIHUzMiBjbGFzc2lkLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0zNTktXFxubmV0L3NjaGVkL3NjaF9hcGkuYzozNjA6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgKnFkaXNjX2xvb2t1cF9vcHMoc3RydWN0IG5sYXR0ciAqa2luZClcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTM2MS17XFxubmV0L3NjaGVkL3NjaF9hcGkuYzozNjI6XFx0c3RydWN0IFFkaXNjX29wcyAqcSA9IE5VTEw7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0zNjMtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTEyNzQ9c3RhdGljIHN0cnVjdCBRZGlzYyAqcWRpc2NfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEyODItXFx0c3RydWN0IFFkaXNjICpzY2g7XFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMjgzOlxcdHN0cnVjdCBRZGlzY19vcHMgKm9wcztcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEyODQtXFx0c3RydWN0IHFkaXNjX3NpemVfdGFibGUgKnN0YWI7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE4MDE9c3RhdGljIHZvaWQgcmVxdWVzdF9xZGlzY19tb2R1bGUoc3RydWN0IG5sYXR0ciAqa2luZClcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE4MDIte1xcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTgwMzpcXHRzdHJ1Y3QgUWRpc2Nfb3BzICpvcHM7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xODA0LVxcdGNoYXIgbmFtZVtJRk5BTVNJWl07XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2JsYWNraG9sZS5jPTIzPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYmxhY2tob2xlX2RlcXVldWUoc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2JsYWNraG9sZS5jLTI3LVxcbm5ldC9zY2hlZC9zY2hfYmxhY2tob2xlLmM6Mjg6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgYmxhY2tob2xlX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfYmxhY2tob2xlLmMtMjktXFx0LmlkXFx0XFx0PSBcXFwiYmxhY2tob2xlXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfY2FrZS5jPTMyMzE9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgY2FrZV9jbGFzc19vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2Nha2UuYy0zMjQxLVxcbm5ldC9zY2hlZC9zY2hfY2FrZS5jOjMyNDI6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgY2FrZV9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2Nha2UuYy0zMjQzLVxcdC5jbF9vcHNcXHRcXHQ9XFx0XFx1MDAyNmNha2VfY2xhc3Nfb3BzLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9jYWtlLmM9MzM0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBjYWtlX21xX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfY2FrZS5jLTMzNTItXFxubmV0L3NjaGVkL3NjaF9jYWtlLmM6MzM1MzpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBjYWtlX21xX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfY2FrZS5jLTMzNTQtXFx0LmNsX29wc1xcdFxcdD1cXHRcXHUwMDI2Y2FrZV9tcV9jbGFzc19vcHMsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2Nicy5jPTU0MT1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBjYnNfY2xhc3Nfb3BzID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9jYnMuYy01NDgtXFxubmV0L3NjaGVkL3NjaF9jYnMuYzo1NDk6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgY2JzX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfY2JzLmMtNTUwLVxcdC5pZFxcdFxcdD1cXHRcXFwiY2JzXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfY2hva2UuYz00ODY9c3RhdGljIHN0cnVjdCBza19idWZmICpjaG9rZV9wZWVrX2hlYWQoc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2Nob2tlLmMtNDkyLVxcbm5ldC9zY2hlZC9zY2hfY2hva2UuYzo0OTM6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgY2hva2VfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9jaG9rZS5jLTQ5NC1cXHQuaWRcXHRcXHQ9XFx0XFxcImNob2tlXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfY29kZWwuYz0yODQ9c3RhdGljIHZvaWQgY29kZWxfcmVzZXQoc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2NvZGVsLmMtMjkxLVxcbm5ldC9zY2hlZC9zY2hfY29kZWwuYzoyOTI6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgY29kZWxfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9jb2RlbC5jLTI5My1cXHQuaWRcXHRcXHQ9XFx0XFxcImNvZGVsXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHJyLmM9NDYwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIGRycl9jbGFzc19vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ3NC1cXG5uZXQvc2NoZWQvc2NoX2Ryci5jOjQ3NTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBkcnJfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9kcnIuYy00NzYtXFx0LmNsX29wc1xcdFxcdD0gXFx1MDAyNmRycl9jbGFzc19vcHMsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYz0xMTkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIGR1YWxwaTJfY2xhc3Nfb3BzID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIwMS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMjAyOnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIGR1YWxwaTJfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTIwMy1cXHQuaWRcXHRcXHQ9IFxcXCJkdWFscGkyXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZXRmLmM9NDYwPXN0YXRpYyBpbnQgZXRmX2R1bXAoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2V0Zi5jLTQ5MC1cXG5uZXQvc2NoZWQvc2NoX2V0Zi5jOjQ5MTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBldGZfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9ldGYuYy00OTItXFx0LmlkXFx0XFx0PVxcdFxcXCJldGZcXFwiLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9ldHMuYz04MDA9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgZXRzX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZXRzLmMtODEzLVxcbm5ldC9zY2hlZC9zY2hfZXRzLmM6ODE0OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIGV0c19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2V0cy5jLTgxNS1cXHQuY2xfb3BzXFx0XFx0PSBcXHUwMDI2ZXRzX2NsYXNzX29wcyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZmlmby5jPTE4Mj1zdGF0aWMgaW50IGZpZm9faGRfZHVtcChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZmlmby5jLTE4Ni1cXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYzoxODc6c3RydWN0IFFkaXNjX29wcyBwZmlmb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYy0xODgtXFx0LmlkXFx0XFx0PVxcdFxcXCJwZmlmb1xcXCIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYz0yMDA9RVhQT1JUX1NZTUJPTChwZmlmb19xZGlzY19vcHMpO1xcbm5ldC9zY2hlZC9zY2hfZmlmby5jLTIwMS1cXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYzoyMDI6c3RydWN0IFFkaXNjX29wcyBiZmlmb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYy0yMDMtXFx0LmlkXFx0XFx0PVxcdFxcXCJiZmlmb1xcXCIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYz0yMTU9RVhQT1JUX1NZTUJPTChiZmlmb19xZGlzY19vcHMpO1xcbm5ldC9zY2hlZC9zY2hfZmlmby5jLTIxNi1cXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYzoyMTc6c3RydWN0IFFkaXNjX29wcyBwZmlmb19oZWFkX2Ryb3BfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9maWZvLmMtMjE4LVxcdC5pZFxcdFxcdD1cXHRcXFwicGZpZm9faGVhZF9kcm9wXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZmlmby5jPTI1ND1FWFBPUlRfU1lNQk9MKGZpZm9fc2V0X2xpbWl0KTtcXG5uZXQvc2NoZWQvc2NoX2ZpZm8uYy0yNTUtXFxubmV0L3NjaGVkL3NjaF9maWZvLmM6MjU2OnN0cnVjdCBRZGlzYyAqZmlmb19jcmVhdGVfZGZsdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IFFkaXNjX29wcyAqb3BzLFxcbm5ldC9zY2hlZC9zY2hfZmlmby5jLTI1Ny1cXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGxpbWl0LFxcbi0tXFxubmV0L3NjaGVkL3NjaF9mcS5jPTEzNDI9c3RhdGljIGludCBmcV9kdW1wX3N0YXRzKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZ25ldF9kdW1wICpkKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9mcS5jLTEzNzgtXFxubmV0L3NjaGVkL3NjaF9mcS5jOjEzNzk6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgZnFfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9mcS5jLTEzODAtXFx0LmlkXFx0XFx0PVxcdFxcXCJmcVxcXCIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxX2NvZGVsLmM9NzUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIGZxX2NvZGVsX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfY29kZWwuYy03NjEtXFxubmV0L3NjaGVkL3NjaF9mcV9jb2RlbC5jOjc2MjpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBmcV9jb2RlbF9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2ZxX2NvZGVsLmMtNzYzLVxcdC5jbF9vcHNcXHRcXHQ9XFx0XFx1MDAyNmZxX2NvZGVsX2NsYXNzX29wcyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM9NTU2PXN0YXRpYyB2b2lkIGZxX3BpZV9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYy01NjUtXFxubmV0L3NjaGVkL3NjaF9mcV9waWUuYzo1NjY6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgZnFfcGllX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNTY3LVxcdC5pZFxcdFxcdD0gXFxcImZxX3BpZVxcXCIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0zNi0vKiBRZGlzYyB0byB1c2UgYnkgZGVmYXVsdCAqL1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjM3OmNvbnN0IHN0cnVjdCBRZGlzY19vcHMgKmRlZmF1bHRfcWRpc2Nfb3BzID0gXFx1MDAyNnBmaWZvX2Zhc3Rfb3BzO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTM4LUVYUE9SVF9TWU1CT0woZGVmYXVsdF9xZGlzY19vcHMpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9NjkzPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbm9vcF9kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02OTctXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6Njk4OnN0cnVjdCBRZGlzY19vcHMgbm9vcF9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02OTktXFx0LmlkXFx0XFx0PVxcdFxcXCJub29wXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTczND1zdGF0aWMgaW50IG5vcXVldWVfaW5pdChzdHJ1Y3QgUWRpc2MgKnFkaXNjLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy03NDMtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NzQ0OnN0cnVjdCBRZGlzY19vcHMgbm9xdWV1ZV9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy03NDUtXFx0LmlkXFx0XFx0PVxcdFxcXCJub3F1ZXVlXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTk0Nz1zdGF0aWMgaW50IHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbihzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk2My1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo5NjQ6c3RydWN0IFFkaXNjX29wcyBwZmlmb19mYXN0X29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk2NS1cXHQuaWRcXHRcXHQ9XFx0XFxcInBmaWZvX2Zhc3RcXFwiLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9OTgyPXN0cnVjdCBRZGlzYyAqcWRpc2NfYWxsb2Moc3RydWN0IG5ldGRldl9xdWV1ZSAqZGV2X3F1ZXVlLFxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjk4MzpcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBRZGlzY19vcHMgKm9wcyxcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05ODQtXFx0XFx0XFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMDQxPXN0cnVjdCBRZGlzYyAqcWRpc2NfY3JlYXRlX2RmbHQoc3RydWN0IG5ldGRldl9xdWV1ZSAqZGV2X3F1ZXVlLFxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEwNDI6XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqb3BzLFxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNDMtXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IHBhcmVudGlkLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTA3Mj12b2lkIHFkaXNjX3Jlc2V0KHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTA3My17XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTA3NDpcXHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMgPSBxZGlzYy1cXHUwMDNlb3BzO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNzUtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMTA2PXN0YXRpYyB2b2lkIF9fcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMDcte1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExMDg6XFx0Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAgKm9wcyA9IHFkaXNjLVxcdTAwM2VvcHM7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEwOS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHFkaXNjKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEyMDc9c3RhdGljIHZvaWQgYXR0YWNoX29uZV9kZWZhdWx0X3FkaXNjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjExLVxcdHN0cnVjdCBRZGlzYyAqcWRpc2M7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTIxMjpcXHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMgPSBkZWZhdWx0X3FkaXNjX29wcztcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjEzLVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTQyND1zdGF0aWMgaW50IHFkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0MjctXFx0c3RydWN0IFFkaXNjICpxZGlzYyA9IHJ0bmxfZGVyZWZlcmVuY2UoZGV2X3F1ZXVlLVxcdTAwM2VxZGlzY19zbGVlcGluZyk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTQyODpcXHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMgPSBxZGlzYy1cXHUwMDNlb3BzO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0MjktXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dyZWQuYz05MDg9c3RhdGljIHZvaWQgZ3JlZF9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9ncmVkLmMtOTIwLVxcbm5ldC9zY2hlZC9zY2hfZ3JlZC5jOjkyMTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBncmVkX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfZ3JlZC5jLTkyMi1cXHQuaWRcXHRcXHQ9XFx0XFxcImdyZWRcXFwiLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9oZnNjLmM9MTY1OD1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBoZnNjX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaGZzYy5jLTE2NzItXFxubmV0L3NjaGVkL3NjaF9oZnNjLmM6MTY3MzpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBoZnNjX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfaGZzYy5jLTE2NzQtXFx0LmlkXFx0XFx0PSBcXFwiaGZzY1xcXCIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2hoZi5jPTcxND1zdGF0aWMgaW50IGhoZl9kdW1wX3N0YXRzKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZ25ldF9kdW1wICpkKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9oaGYuYy03MjYtXFxubmV0L3NjaGVkL3NjaF9oaGYuYzo3Mjc6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgaGhmX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfaGhmLmMtNzI4LVxcdC5pZFxcdFxcdD1cXHRcXFwiaGhmXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaHRiLmM9MjEzMD1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBodGJfY2xhc3Nfb3BzID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9odGIuYy0yMTQ1LVxcbm5ldC9zY2hlZC9zY2hfaHRiLmM6MjE0NjpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBodGJfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9odGIuYy0yMTQ3LVxcdC5jbF9vcHNcXHRcXHQ9XFx0XFx1MDAyNmh0Yl9jbGFzc19vcHMsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYz0xNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgaW5ncmVzc19jbGFzc19vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYy0xNTktXFxubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmM6MTYwOnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIGluZ3Jlc3NfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmMtMTYxLVxcdC5jbF9vcHNcXHRcXHRcXHQ9XFx0XFx1MDAyNmluZ3Jlc3NfY2xhc3Nfb3BzLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmM9MzI2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIGNsc2FjdF9jbGFzc19vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYy0zMzUtXFxubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmM6MzM2OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIGNsc2FjdF9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYy0zMzctXFx0LmNsX29wc1xcdFxcdFxcdD1cXHRcXHUwMDI2Y2xzYWN0X2NsYXNzX29wcyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfbXEuYz02OD1pbnQgbXFfaW5pdF9jb21tb24oc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG5uZXQvc2NoZWQvc2NoX21xLmMtNjktXFx0XFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrLFxcbm5ldC9zY2hlZC9zY2hfbXEuYzo3MDpcXHRcXHQgICBjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpxZGlzY19vcHMpXFxubmV0L3NjaGVkL3NjaF9tcS5jLTcxLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfbXEuYz0yOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgbXFfY2xhc3Nfb3BzID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9tcS5jLTMwMy1cXG5uZXQvc2NoZWQvc2NoX21xLmM6MzA0OnN0cnVjdCBRZGlzY19vcHMgbXFfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9tcS5jLTMwNS1cXHQuY2xfb3BzXFx0XFx0PSBcXHUwMDI2bXFfY2xhc3Nfb3BzLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9tcXByaW8uYz03NTg9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgbXFwcmlvX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfbXFwcmlvLmMtNzY3LVxcbm5ldC9zY2hlZC9zY2hfbXFwcmlvLmM6NzY4OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIG1xcHJpb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX21xcHJpby5jLTc2OS1cXHQuY2xfb3BzXFx0XFx0PSBcXHUwMDI2bXFwcmlvX2NsYXNzX29wcyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfbXVsdGlxLmM9MzcxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIG11bHRpcV9jbGFzc19vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX211bHRpcS5jLTM4Mi1cXG5uZXQvc2NoZWQvc2NoX211bHRpcS5jOjM4MzpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBtdWx0aXFfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYy0zODQtXFx0Lm5leHRcXHRcXHQ9XFx0TlVMTCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfbmV0ZW0uYz0xMzk0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIG5ldGVtX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfbmV0ZW0uYy0xNDAxLVxcbm5ldC9zY2hlZC9zY2hfbmV0ZW0uYzoxNDAyOnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIG5ldGVtX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfbmV0ZW0uYy0xNDAzLVxcdC5pZFxcdFxcdD1cXHRcXFwibmV0ZW1cXFwiLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9waWUuYz01NDM9c3RhdGljIHZvaWQgcGllX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jLTU1MC1cXG5uZXQvc2NoZWQvc2NoX3BpZS5jOjU1MTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBwaWVfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9waWUuYy01NTItXFx0LmlkXFx0XFx0PSBcXFwicGllXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcGx1Zy5jPTE1OD1zdGF0aWMgaW50IHBsdWdfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3BsdWcuYy0yMDQtXFxubmV0L3NjaGVkL3NjaF9wbHVnLmM6MjA1OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHBsdWdfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9wbHVnLmMtMjA2LVxcdC5pZCAgICAgICAgICA9ICAgICAgIFxcXCJwbHVnXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcHJpby5jPTM5ND1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBwcmlvX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcHJpby5jLTQwNS1cXG5uZXQvc2NoZWQvc2NoX3ByaW8uYzo0MDY6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgcHJpb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX3ByaW8uYy00MDctXFx0Lm5leHRcXHRcXHQ9XFx0TlVMTCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcWZxLmM9MTUxMz1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBxZnFfY2xhc3Nfb3BzID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9xZnEuYy0xNTI3LVxcbm5ldC9zY2hlZC9zY2hfcWZxLmM6MTUyODpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBxZnFfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9xZnEuYy0xNTI5LVxcdC5jbF9vcHNcXHRcXHQ9IFxcdTAwMjZxZnFfY2xhc3Nfb3BzLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9yZWQuYz01NDE9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgcmVkX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfcmVkLmMtNTQ4LVxcbm5ldC9zY2hlZC9zY2hfcmVkLmM6NTQ5OnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHJlZF9xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX3JlZC5jLTU1MC1cXHQuaWRcXHRcXHQ9XFx0XFxcInJlZFxcXCIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3NmYi5jPTY5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBzZmJfY2xhc3Nfb3BzID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9zZmIuYy03MDgtXFxubmV0L3NjaGVkL3NjaF9zZmIuYzo3MDk6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgc2ZiX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfc2ZiLmMtNzEwLVxcdC5pZFxcdFxcdD1cXHRcXFwic2ZiXFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfc2ZxLmM9OTUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIHNmcV9jbGFzc19vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3NmcS5jLTk2MS1cXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjk2MjpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyBzZnFfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF9zZnEuYy05NjMtXFx0LmNsX29wc1xcdFxcdD1cXHRcXHUwMDI2c2ZxX2NsYXNzX29wcyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfc2ticHJpby5jPTI3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyBza2JwcmlvX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfc2ticHJpby5jLTI3OS1cXG5uZXQvc2NoZWQvc2NoX3NrYnByaW8uYzoyODA6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgc2ticHJpb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX3NrYnByaW8uYy0yODEtXFx0LmNsX29wc1xcdFxcdD1cXHRcXHUwMDI2c2ticHJpb19jbGFzc19vcHMsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTI1MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgdGFwcmlvX2NsYXNzX29wcyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU0NS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI1NDY6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU0Ny1cXHQuY2xfb3BzXFx0XFx0PSBcXHUwMDI2dGFwcmlvX2NsYXNzX29wcyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGJmLmM9NjAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIHRiZl9jbGFzc19vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RiZi5jLTYwNy1cXG5uZXQvc2NoZWQvc2NoX3RiZi5jOjYwODpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyB0YmZfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxubmV0L3NjaGVkL3NjaF90YmYuYy02MDktXFx0Lm5leHRcXHRcXHQ9XFx0TlVMTCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGVxbC5jPTUyPXN0cnVjdCB0ZXFsX21hc3RlciB7XFxubmV0L3NjaGVkL3NjaF90ZXFsLmM6NTM6XFx0c3RydWN0IFFkaXNjX29wcyBxb3BzO1xcbm5ldC9zY2hlZC9zY2hfdGVxbC5jLTU0LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RlcWwuYz00OTA9c3RhdGljIF9faW5pdCB2b2lkIHRlcWxfbWFzdGVyX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RlcWwuYy00OTItXFx0c3RydWN0IHRlcWxfbWFzdGVyICptYXN0ZXIgPSBuZXRkZXZfcHJpdihkZXYpO1xcbm5ldC9zY2hlZC9zY2hfdGVxbC5jOjQ5MzpcXHRzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMgPSBcXHUwMDI2bWFzdGVyLVxcdTAwM2Vxb3BzO1xcbm5ldC9zY2hlZC9zY2hfdGVxbC5jLTQ5NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDg6MzY6MTguNjExNjAyNzM2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY3OTgyMTIzODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBDYW5kaWRhdGUgQXNzZXNzbWVudDogTmV0d29yayBTY2hlZHVsZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZXMuIEkgc2VlIHRoZSBwYXRjaCB0b3VjaGVzIGEgYnVuY2ggb2YgcGFja2V0IHNjaGVkdWxlcnM6IGBzY2hfZHJyLmNgLCBgc2NoX2R1YWxwaTIuY2AsIGBzY2hfZXRzLmNgLCBgc2NoX2ZxLmNgLCBgc2NoX2ZxX3BpZS5jYCwgYHNjaF9oaGYuY2AsIGBzY2hfcGllLmNgLCBhbmQgYHNjaF9zZnEuY2AuIEknbSBnb2luZyB0byBxdWlja2x5IGdsYW5jZSBhdCB0aGUgZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZCBpbiBlYWNoIGZpbGU6IGluaXRpYWxpemF0aW9uLCBjaGFuZ2UsIGVucXVldWUsIGFuZCBkZXF1ZXVlIHJvdXRpbmVzIGFyZSBhbGwgcG90ZW50aWFsIGFyZWFzIG9mIGludGVyZXN0LlxuXG5Ob3csIHRoZSBjb3JlIG9mIHRoZSBwYXRjaCBzZWVtcyB0byBiZSBhcm91bmQgaW5wdXQgdmFsaWRhdGlvbiBhbmQgY2xhbXBpbmcgb2YgcGFyYW1ldGVycywgcGFydGljdWxhcmx5IGBxdWFudHVtYCBhbmQgYG10dWAuIFRoYXQncyBhIHJlZCBmbGFnIOKAkyB0aGVzZSBraW5kcyBvZiBjaGFuZ2VzIGNhbiBvZnRlbiByZXZlYWwgaW50ZXJlc3RpbmcgZWRnZSBjYXNlcyBpbiByZXNvdXJjZSBhbGxvY2F0aW9uIG9yIHRyYWZmaWMgc2hhcGluZyB0aGF0IGFyZSBwZXJmZWN0IGZvciBmdXp6aW5nLiBTcGVjaWZpY2FsbHk6XG5cbiogICBgc2NoX2RycmA6IFF1YW50dW0gY2xhbXAuXG4qICAgYHNjaF9kdWFscGkyYDogTXR1IGNsYW1wIGFuZCBwb3RlbnRpYWxseSByZWxhdGVkIHRvIGBjX3Byb3RlY3Rpb25gLlxuKiAgIGBzY2hfZXRzYDogUXVhbnR1bSBjbGFtcC5cbiogICBgc2NoX2ZxYDogYGlxX3JhbmdlYCBhbmQgcXVhbnR1bSBjbGFtcGluZy5cbiogICBgc2NoX2ZxX3BpZWA6IFF1YW50dW0gbWluaW11bS5cbiogICBgc2NoX2hoZmA6IFF1YW50dW0gbWluaW11bSBhbmQgY2xhbXAuXG4qICAgYHNjaF9waWVgOiBNdHUgY2xhbXAuXG4qICAgYHNjaF9zZnFgOiBRdWFudHVtIG1heCBhbmQgbWluaW11bS5cblxuU28sIHRoZSBpbXBhY3QgaXMgcHJldHR5IGRpcmVjdDogd2UncmUgdGFsa2luZyBhYm91dCBob3cgdGhlc2Ugc2NoZWR1bGVycyAqYmVoYXZlKiBkdXJpbmcgY29uZmlndXJhdGlvbiBhbmQgcnVudGltZSwgY29uY2VybmluZyBDUFUgc3RhbGxzLCBkcm9wcywgb3Igb3RoZXIgbG9naWMgcmVsYXRlZCBwcm9ibGVtcy4gVGhhdCdzIGdvb2Q7IGZ1bmN0aW9uYWwgY2hhbmdlcyBhcmUgb2Z0ZW4gaW50ZXJlc3RpbmcuXG5cbkFyZSB0aGUgY2hhbmdlcyByZWFjaGFibGU/IEFic29sdXRlbHkuIFN0YW5kYXJkIGB0Y2AgbmV0bGluayBjb21tYW5kcyBwcm92aWRlIGRpcmVjdCB1c2VyLXNwYWNlIGNvbnRyb2wgb3ZlciB0aGVzZSBxZGlzY3MsIG1lYW5pbmcgSSBjYW4gZWFzaWx5IGluamVjdCBjcmFmdGVkIGlucHV0cyB2aWEgdG9vbHMgbGlrZSBgaXByb3V0ZTJgLiBUaGlzIHBhdGNoIGFmZmVjdHMgbG9naWMgdGhhdCBpcyBjb25maWd1cmVkIHZpYSBgdGNgLlxuXG5JcyB0aGlzIHdvcnRoIGZ1enppbmc/IFllcywgd2l0aG91dCBhIGRvdWJ0LiBXZSdyZSBsb29raW5nIGF0IGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBjb3JlIG5ldHdvcmsgc2NoZWR1bGVyIGxvZ2ljLCBkaXJlY3RseSBleHBvc2VkIHRocm91Z2ggdXNlci1zcGFjZSBuZXRsaW5rIGludGVyZmFjZXMuIFRoaXMgaXMgYSBwcmltZSB0YXJnZXQgZm9yIGZpbmRpbmcgYnVncywgbWVtb3J5IGNvcnJ1cHRpb25zLCBhbmQgZXZlbiBwb3RlbnRpYWwgZGVuaWFsLW9mLXNlcnZpY2UgdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gaW52YWxpZCBvciBleHRyZW1lIHBhcmFtZXRlciB2YWx1ZXMuXG5cbkZpbmFsbHksIGxldCdzIHZlcmlmeSB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMuIEFsbCB0aGUgYE5FVF9TQ0hfKmAgY29uZmlncyBkZXBlbmQgb24gYE5FVF9TQ0hFRGAgKGFuZCBgTkVUYCkuIFNvLCB0aGUgZmVhdHVyZXMgYXJlIGVuYWJsZWQgYnkgYW4gdW1icmVsbGEgZmVhdHVyZSBhbmQgSSBzaG91bGQgbm90IHdvcnJ5IGFib3V0IGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzLiBJIHdpbGwgY2hlY2sgZm9yIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBgTkVUX1NDSEVEYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkxODQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDg6MzY6MjUuNDA5ODE3Mjc4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjQ5MzUxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZW51Y29uZmlnIE5FVF9TQ0hFRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZy01LVxcbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcXG5uZXQvc2NoZWQvS2NvbmZpZy03LVxcdGJvb2wgXFxcIlFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDg6MzY6MjUuNDgyMzE3NTQzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI4NzI2NzA1NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBLZXJuZWwncyBTY2hlZHVsaW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCBmaWd1cmUgb3V0IHRoZXNlIGRlcGVuZGVuY2llcyBmb3IgYE5FVF9TQ0hfRlFfUElFYC4gUmlnaHQsIHRoZSBmaXJzdCB0aGluZyBpcyB0byBjb25maXJtIHdoYXQgdGhlIEtjb25maWcgZmlsZXMgYXJlIHRlbGxpbmcgbWUuIFNvLCBgTkVUX1NDSF9GUV9QSUVgICpkZXBlbmRzKiBvbiBgTkVUX1NDSF9QSUVgLiBNYWtlcyBzZW5zZSwgdGhleSdyZSBwcm9iYWJseSBidWlsZGluZyBvbiBlYWNoIG90aGVyLiBOb3csIEkgbmVlZCB0byBvcGVuIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUsIHdoaWNoIEkga25vdyBpcyBpbiBgbmV0L3NjaGVkL0tjb25maWdgLiBUaW1lIHRvIGdldCBhIGNsb3NlIGxvb2sgYXQgdGhvc2UgZW50cmllcyBhbmQgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLiBHb3R0YSBtYWtlIHN1cmUgSSdtIGNsZWFyIG9uIGFsbCB0aGUgb3RoZXIgb3B0aW9uIGRlcGVuZGVuY2llcyBhbmQgaW50ZXJhY3Rpb25zIHdpdGhpbiB0aGF0IHNlY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjI2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDg6MzY6MjguMzU0OTkwODQ3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDE3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMTA6XFx0XFxuIDExMTpcXHRjb25maWcgTkVUX1NDSF9TRlFcXG4gMTEyOlxcdFxcdHRyaXN0YXRlIFxcXCJTdG9jaGFzdGljIEZhaXJuZXNzIFF1ZXVlaW5nIChTRlEpXFxcIlxcbiAxMTM6XFx0XFx0aGVscFxcbiAxMTQ6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgU3RvY2hhc3RpYyBGYWlybmVzcyBRdWV1ZWluZyAoU0ZRKVxcbiAxMTU6XFx0XFx0ICBwYWNrZXQgc2NoZWR1bGluZyBhbGdvcml0aG0uXFxuIDExNjpcXHRcXG4gMTE3OlxcdFxcdCAgU2VlIHRoZSB0b3Agb2YgXFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF9zZnEuY1xcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gMTE4OlxcdFxcbiAxMTk6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuIDEyMDpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfc2ZxLlxcbiAxMjE6XFx0XFxuIDEyMjpcXHRjb25maWcgTkVUX1NDSF9URVFMXFxuIDEyMzpcXHRcXHR0cmlzdGF0ZSBcXFwiVHJ1ZSBMaW5rIEVxdWFsaXplciAoVEVRTClcXFwiXFxuIDEyNDpcXHRcXHRoZWxwXFxuIDEyNTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBUcnVlIExpbmsgRXF1YWxpemVyIChUTEUpIHBhY2tldFxcbiAxMjY6XFx0XFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS4gVGhpcyBxdWV1ZWluZyBkaXNjaXBsaW5lIGFsbG93cyB0aGUgY29tYmluYXRpb25cXG4gMTI3OlxcdFxcdCAgb2Ygc2V2ZXJhbCBwaHlzaWNhbCBkZXZpY2VzIGludG8gb25lIHZpcnR1YWwgZGV2aWNlLlxcbiAxMjg6XFx0XFxuIDEyOTpcXHRcXHQgIFNlZSB0aGUgdG9wIG9mIFxcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfdGVxbC5jXFx1MDAzZSBmb3IgbW9yZSBkZXRhaWxzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwODozNjoyOC4zNTUxNjczMjdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg5NzM4MjY4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgS2NvbmZpZyBlbnRyaWVzOlxuXG4qKlJldmlld2luZyBOZXR3b3JrIFNjaGVkdWxlciBDb25maWd1cmF0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgYG5ldC9zY2hlZC9LY29uZmlnYCBmaWxlIGFuZCByZWZyZXNoIG91ciBtZW1vcnkgb24gc29tZSBvZiB0aG9zZSB0cmFmZmljIHNoYXBpbmcgYW5kIHF1ZXVpbmcgZGlzY2lwbGluZXMuIEknbSB0aGlua2luZywgbGV0J3MgcXVpY2tseSBqb2cgdGhyb3VnaCB0aGUgb3RoZXIgS2NvbmZpZyBlbnRyaWVzIGxpa2UgRFJSLCBFVFMsIEZRLCBGUV9QSUUsIEhIRiwgUElFLCBhbmQgRFVBTFBJMi4gSXQncyBhbHdheXMgYmVuZWZpY2lhbCB0byBoYXZlIGEgbWVudGFsIG1hcCBvZiB3aGF0J3MgYXZhaWxhYmxlIGFuZCBob3cgdGhleSByZWxhdGUuIEkgd2FudCB0byBxdWlja2x5IGV2YWx1YXRlIHdoaWNoIG9mIHRoZXNlIG1pZ2h0IGJlIHJlbGV2YW50IGZvciBhIHByb2plY3Qgb3IgaWYgYW55dGhpbmcgaGFzIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgdGltZSBJIGxvb2tlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExOTcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA4OjM2OjMwLjI1MjU1MjYzNVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODcwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3NjaGVkL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjA1LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjA1OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMjA2OlxcdFxcbiAyMDc6XFx0Y29uZmlnIE5FVF9TQ0hfRFJSXFxuIDIwODpcXHRcXHR0cmlzdGF0ZSBcXFwiRGVmaWNpdCBSb3VuZCBSb2JpbiBzY2hlZHVsZXIgKERSUilcXFwiXFxuIDIwOTpcXHRcXHRoZWxwXFxuIDIxMDpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBEZWZpY2l0IFJvdW5kIFJvYmluIChEUlIpIHBhY2tldFxcbiAyMTE6XFx0XFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS5cXG4gMjEyOlxcdFxcbiAyMTM6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDIxNDpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHNjaF9kcnIuXFxuIDIxNTpcXHRcXG4gMjE2OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMjE3OlxcdFxcbiAyMTg6XFx0Y29uZmlnIE5FVF9TQ0hfTVFQUklPXFxuIDIxOTpcXHRcXHR0cmlzdGF0ZSBcXFwiTXVsdGktcXVldWUgcHJpb3JpdHkgc2NoZWR1bGVyIChNUVBSSU8pXFxcIlxcbiAyMjA6XFx0XFx0c2VsZWN0IE5FVF9TQ0hfTVFQUklPX0xJQlxcbiAyMjE6XFx0XFx0aGVscFxcbiAyMjI6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgTXVsdGktcXVldWUgUHJpb3JpdHkgc2NoZWR1bGVyLlxcbiAyMjM6XFx0XFx0ICBUaGlzIHNjaGVkdWxlciBhbGxvd3MgUU9TIHRvIGJlIG9mZmxvYWRlZCBvbiBOSUNzIHRoYXQgaGF2ZSBzdXBwb3J0XFxuIDIyNDpcXHRcXHQgIGZvciBvZmZsb2FkaW5nIFFPUyBzY2hlZHVsZXJzLlxcbiAyMjU6XFx0XFxuIDIyNjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbFxcbiAyMjc6XFx0XFx0ICBiZSBjYWxsZWQgc2NoX21xcHJpby5cXG4gMjI4OlxcdFxcbiAyMjk6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAyMzA6XFx0XFxuIDIzMTpcXHRjb25maWcgTkVUX1NDSF9TS0JQUklPXFxuIDIzMjpcXHRcXHR0cmlzdGF0ZSBcXFwiU0tCIHByaW9yaXR5IHF1ZXVlIHNjaGVkdWxlciAoU0tCUFJJTylcXFwiXFxuIDIzMzpcXHRcXHRoZWxwXFxuIDIzNDpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBTS0IgcHJpb3JpdHkgcXVldWVcXG4gMjM1OlxcdFxcdCAgc2NoZWR1bGVyLiBUaGlzIHNjaGVkdWxlcyBwYWNrZXRzIGFjY29yZGluZyB0byBza2ItXFx1MDAzZXByaW9yaXR5LFxcbiAyMzY6XFx0XFx0ICB3aGljaCBpcyB1c2VmdWwgZm9yIHJlcXVlc3QgcGFja2V0cyBpbiBEb1MgbWl0aWdhdGlvbiBzeXN0ZW1zIHN1Y2hcXG4gMjM3OlxcdFxcdCAgYXMgR2F0ZWtlZXBlci5cXG4gMjM4OlxcdFxcbiAyMzk6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGxcXG4gMjQwOlxcdFxcdCAgYmUgY2FsbGVkIHNjaF9za2JwcmlvLlxcbiAyNDE6XFx0XFxuIDI0MjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDI0MzpcXHRcXG4gMjQ0OlxcdGNvbmZpZyBORVRfU0NIX0NIT0tFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA4OjM2OjMwLjI1Mjc0MjMxNVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjQ5MzAyNTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBsaW5lcywgdGFpbG9yZWQgZm9yIGEgZmVsbG93IGV4cGVydDpcblxuKipEaXZpbmcgaW50byB0aGUgQ3JpdGljYWwgU2VjdGlvbiAoTGluZXMgMjk1LTQzMCkqKlxuXG5BbHJpZ2h0LCBzbywgbGV0J3MgemVybyBpbiBvbiBsaW5lcyAyOTUtNDMwLiBNeSBndXQgdGVsbHMgbWUgdGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBvZiBbaW5zZXJ0IHlvdXIgZmllbGQncyByZWxldmFudCBwcm9jZXNzL2Z1bmN0aW9uXSBpcyBsaWtlbHkgaW1wbGVtZW50ZWQuIEknbSBpbW1lZGlhdGVseSBsb29raW5nIGZvciBrZXkgaW5kaWNhdG9ycyDigJMgYW55IGNsdWVzIGFib3V0IGRhdGEgc3RydWN0dXJlcyBiZWluZyBtYW5pcHVsYXRlZCwgYW55IG9idmlvdXMgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIHBvdGVudGlhbCBwb2ludHMgb2YgZmFpbHVyZS4uLiB5b3Uga25vdyB0aGUgZHJpbGwuIEdpdmVuIHRoZSBsZW5ndGggb2YgdGhpcyBzZWN0aW9uLCBJJ20gZXhwZWN0aW5nIHNvbWUgbGV2ZWwgb2YgY29tcGxleGl0eS4gSSdtIGZvY3VzaW5nIG9uIHRoZSBhbGdvcml0aG1pYyBmbG93LiBBcmUgdGhleSBpbXBsZW1lbnRpbmcgYSBjbGFzc2ljIGFsZ29yaXRobSwgb3IgaXMgdGhlcmUgYSBjdXN0b20gc29sdXRpb24gaW4gcGxheT8gV2hhdCBhcmUgdGhlIHRyYWRlb2ZmcyB0aGV5J3ZlIG1hZGU/IEhvdyB3ZWxsIGRvIHRoZXNlIHRyYWRlb2ZmcyBhbGlnbiB3aXRoIGVzdGFibGlzaGVkIGJlc3QgcHJhY3RpY2VzIGluIFt5b3VyIGZpZWxkXT8gSSdtIHNjYW5uaW5nIGZvciBhbnkgc3VidGxlIGluY29uc2lzdGVuY2llcyBpbiB2YXJpYWJsZSBuYW1pbmcgb3IgY29tbWVudHM7IHRoZXNlIG9mdGVuIHRlbGwgYSBzdG9yeSBhYm91dCB0aGUgZXZvbHV0aW9uIG9mIHRoZSBjb2RlLiBJcyB0aGUgY29kZSBtYWludGFpbmFibGUsIG9yIGhhcyBpdCBiZWNvbWUgYSBiZWhlbW90aCB0byBiZSB0YW1lZC4gVGhlIGdvYWwgaGVyZSBpcyB0byBlc3RhYmxpc2ggYSBjbGVhciBtZW50YWwgbWFwIG9mIHdoYXQncyBoYXBwZW5pbmcuIEFuZCBpbXBvcnRhbnRseSwgdG8gbG9vayBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCBuZWVkIG15IGZvY3VzZWQgYXR0ZW50aW9uIGluIHRoZSBwcm9qZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjAwNCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDg6MzY6MzIuNTAyMDQ5Mjc3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NzU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyOTUsXG4gIFwiTGluZUNvdW50XCI6IDYwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyOTU6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBzY2hfY2FrZS5cXG4gMjk2OlxcdFxcbiAyOTc6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAyOTg6XFx0XFxuIDI5OTpcXHRjb25maWcgTkVUX1NDSF9GUVxcbiAzMDA6XFx0XFx0dHJpc3RhdGUgXFxcIkZhaXIgUXVldWVcXFwiXFxuIDMwMTpcXHRcXHRoZWxwXFxuIDMwMjpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBGUSBwYWNrZXQgc2NoZWR1bGluZyBhbGdvcml0aG0uXFxuIDMwMzpcXHRcXG4gMzA0OlxcdFxcdCAgRlEgZG9lcyBmbG93IHNlcGFyYXRpb24sIGFuZCBpcyBhYmxlIHRvIHJlc3BlY3QgcGFjaW5nIHJlcXVpcmVtZW50c1xcbiAzMDU6XFx0XFx0ICBzZXQgYnkgVENQIHN0YWNrIGludG8gc2stXFx1MDAzZXNrX3BhY2luZ19yYXRlIChmb3IgbG9jYWxseSBnZW5lcmF0ZWRcXG4gMzA2OlxcdFxcdCAgdHJhZmZpYylcXG4gMzA3OlxcdFxcbiAzMDg6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDMwOTpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHNjaF9mcS5cXG4gMzEwOlxcdFxcbiAzMTE6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAzMTI6XFx0XFxuIDMxMzpcXHRjb25maWcgTkVUX1NDSF9ISEZcXG4gMzE0OlxcdFxcdHRyaXN0YXRlIFxcXCJIZWF2eS1IaXR0ZXIgRmlsdGVyIChISEYpXFxcIlxcbiAzMTU6XFx0XFx0aGVscFxcbiAzMTY6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgSGVhdnktSGl0dGVyIEZpbHRlciAoSEhGKVxcbiAzMTc6XFx0XFx0ICBwYWNrZXQgc2NoZWR1bGluZyBhbGdvcml0aG0uXFxuIDMxODpcXHRcXG4gMzE5OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAzMjA6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBzY2hfaGhmLlxcbiAzMjE6XFx0XFxuIDMyMjpcXHRjb25maWcgTkVUX1NDSF9QSUVcXG4gMzIzOlxcdFxcdHRyaXN0YXRlIFxcXCJQcm9wb3J0aW9uYWwgSW50ZWdyYWwgY29udHJvbGxlciBFbmhhbmNlZCAoUElFKSBzY2hlZHVsZXJcXFwiXFxuIDMyNDpcXHRcXHRoZWxwXFxuIDMyNTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBQcm9wb3J0aW9uYWwgSW50ZWdyYWwgY29udHJvbGxlclxcbiAzMjY6XFx0XFx0ICBFbmhhbmNlZCBzY2hlZHVsZXIgcGFja2V0IHNjaGVkdWxpbmcgYWxnb3JpdGhtLlxcbiAzMjc6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjODAzM1xcbiAzMjg6XFx0XFxuIDMyOTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMzMwOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgc2NoX3BpZS5cXG4gMzMxOlxcdFxcbiAzMzI6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAzMzM6XFx0XFxuIDMzNDpcXHRjb25maWcgTkVUX1NDSF9GUV9QSUVcXG4gMzM1OlxcdFxcdGRlcGVuZHMgb24gTkVUX1NDSF9QSUVcXG4gMzM2OlxcdFxcdHRyaXN0YXRlIFxcXCJGbG93IFF1ZXVlIFByb3BvcnRpb25hbCBJbnRlZ3JhbCBjb250cm9sbGVyIEVuaGFuY2VkIChGUS1QSUUpXFxcIlxcbiAzMzc6XFx0XFx0aGVscFxcbiAzMzg6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgRmxvdyBRdWV1ZSBQcm9wb3J0aW9uYWwgSW50ZWdyYWxcXG4gMzM5OlxcdFxcdCAgY29udHJvbGxlciBFbmhhbmNlZCAoRlEtUElFKSBwYWNrZXQgc2NoZWR1bGluZyBhbGdvcml0aG0uXFxuIDM0MDpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM4MDMzXFxuIDM0MTpcXHRcXG4gMzQyOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAzNDM6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBzY2hfZnFfcGllLlxcbiAzNDQ6XFx0XFxuIDM0NTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDM0NjpcXHRcXG4gMzQ3OlxcdGNvbmZpZyBORVRfU0NIX0lOR1JFU1NcXG4gMzQ4OlxcdFxcdHRyaXN0YXRlIFxcXCJJbmdyZXNzL2NsYXNzaWZpZXItYWN0aW9uIFFkaXNjXFxcIlxcbiAzNDk6XFx0XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbiAzNTA6XFx0XFx0c2VsZWN0IE5FVF9YR1JFU1NcXG4gMzUxOlxcdFxcdGhlbHBcXG4gMzUyOlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgY2xhc3NpZmllcnMgZm9yIGluY29taW5nIGFuZC9vciBvdXRnb2luZ1xcbiAzNTM6XFx0XFx0ICBwYWNrZXRzLiBUaGlzIHFkaXNjIGRvZXNuJ3QgZG8gYW55dGhpbmcgZWxzZSBiZXNpZGVzIHJ1bm5pbmcgY2xhc3NpZmllcnMsXFxuIDM1NDpcXHRcXHQgIHdoaWNoIGNhbiBhbHNvIGhhdmUgYWN0aW9ucyBhdHRhY2hlZCB0byB0aGVtLiBJbiBjYXNlIG9mIG91dGdvaW5nIHBhY2tldHMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA4OjM2OjMyLjUwMjIzMjQ1N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNTkyOTk1MzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCByZXF1ZXN0LCBmb3JtYXR0ZWQgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIENvZGViYXNlKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIFRoZSB0YXNrIGF0IGhhbmQgY2xlYXJseSBpbnZvbHZlcyBhIHNwZWNpZmljIHNlY3Rpb24gb2YgdGhlIGNvZGUsIGFuZCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBhcmVhLiBGb2N1c2luZyBvbiBsaW5lcyAzODUgdGhyb3VnaCA0MzAgaXMgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQuIFRoaXMgcGFydGljdWxhciBzZWdtZW50IGxpa2VseSBob2xkcyB0aGUga2V5IHRvIGFkZHJlc3NpbmcgdGhlIGN1cnJlbnQgcHJvYmxlbSBvciB1bmRlcnN0YW5kaW5nIHRoZSByZWxldmFudCBmdW5jdGlvbmFsaXR5LiBJdCdzIGEgdGFyZ2V0ZWQgYXBwcm9hY2gsIGhvcGVmdWxseSBhdm9pZGluZyB1bm5lY2Vzc2FyeSBzY2FubmluZyBvZiB0aGUgZW50aXJlIG1vZHVsZS4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzIyMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDg6MzY6MzQuMDk1MjMxODI3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjc1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzODUsXG4gIFwiTGluZUNvdW50XCI6IDQ1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzODU6XFx0XFxuIDM4NjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gMzg3OlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF9wbHVnLlxcbiAzODg6XFx0XFxuIDM4OTpcXHRjb25maWcgTkVUX1NDSF9FVFNcXG4gMzkwOlxcdFxcdHRyaXN0YXRlIFxcXCJFbmhhbmNlZCB0cmFuc21pc3Npb24gc2VsZWN0aW9uIHNjaGVkdWxlciAoRVRTKVxcXCJcXG4gMzkxOlxcdFxcdGhlbHBcXG4gMzkyOlxcdCAgICAgICAgICBUaGUgRW5oYW5jZWQgVHJhbnNtaXNzaW9uIFNlbGVjdGlvbiBzY2hlZHVsZXIgaXMgYSBjbGFzc2Z1bFxcbiAzOTM6XFx0ICAgICAgICAgIHF1ZXVpbmcgZGlzY2lwbGluZSB0aGF0IG1lcmdlcyBmdW5jdGlvbmFsaXR5IG9mIFBSSU8gYW5kIERSUlxcbiAzOTQ6XFx0ICAgICAgICAgIHFkaXNjcyBpbiBvbmUgc2NoZWR1bGVyLiBFVFMgbWFrZXMgaXQgZWFzeSB0byBjb25maWd1cmUgYSBzZXQgb2ZcXG4gMzk1OlxcdCAgICAgICAgICBzdHJpY3QgYW5kIGJhbmR3aWR0aC1zaGFyaW5nIGJhbmRzIHRvIGltcGxlbWVudCB0aGUgdHJhbnNtaXNzaW9uXFxuIDM5NjpcXHQgICAgICAgICAgc2VsZWN0aW9uIGRlc2NyaWJlZCBpbiA4MDIuMVFhei5cXG4gMzk3OlxcdFxcbiAzOTg6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgRVRTIHBhY2tldCBzY2hlZHVsaW5nXFxuIDM5OTpcXHRcXHQgIGFsZ29yaXRobS5cXG4gNDAwOlxcdFxcbiA0MDE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDQwMjpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHNjaF9ldHMuXFxuIDQwMzpcXHRcXG4gNDA0OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gNDA1OlxcdFxcbiA0MDY6XFx0Y29uZmlnIE5FVF9TQ0hfQlBGXFxuIDQwNzpcXHRcXHRib29sIFxcXCJCUEYtYmFzZWQgUWRpc2NcXFwiXFxuIDQwODpcXHRcXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMIFxcdTAwMjZcXHUwMDI2IEJQRl9KSVQgXFx1MDAyNlxcdTAwMjYgREVCVUdfSU5GT19CVEZcXG4gNDA5OlxcdFxcdGhlbHBcXG4gNDEwOlxcdFxcdCAgVGhpcyBvcHRpb24gYWxsb3dzIEJQRi1iYXNlZCBxdWV1ZWluZyBkaXNpcGxpbmVzLiBXaXRoIEJQRiBzdHJ1Y3Rfb3BzLFxcbiA0MTE6XFx0XFx0ICB1c2VycyBjYW4gaW1wbGVtZW50IHN1cHBvcnRlZCBvcGVyYXRvcnMgaW4gUWRpc2Nfb3BzIHVzaW5nIEJQRiBwcm9ncmFtcy5cXG4gNDEyOlxcdFxcdCAgVGhlIHF1ZXVlIGhvbGRpbmcgc2tiIGNhbiBiZSBidWlsdCB3aXRoIEJQRiBtYXBzIG9yIGdyYXBocy5cXG4gNDEzOlxcdFxcbiA0MTQ6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBCUEYtYmFzZWQgUWRpc2MuXFxuIDQxNTpcXHRcXG4gNDE2OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gNDE3OlxcdFxcbiA0MTg6XFx0Y29uZmlnIE5FVF9TQ0hfRFVBTFBJMlxcbiA0MTk6XFx0XFx0dHJpc3RhdGUgXFxcIkR1YWwgUXVldWUgUEkgU3F1YXJlIChEVUFMUEkyKSBzY2hlZHVsZXJcXFwiXFxuIDQyMDpcXHRcXHRoZWxwXFxuIDQyMTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBEdWFsIFF1ZXVlIFByb3BvcnRpb25hbCBJbnRlZ3JhbFxcbiA0MjI6XFx0XFx0ICBDb250cm9sbGVyIEltcHJvdmVkIHdpdGggYSBTcXVhcmUgc2NoZWR1bGluZyBhbGdvcml0aG0uXFxuIDQyMzpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM5MzMyXFxuIDQyNDpcXHRcXG4gNDI1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiA0MjY6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBzY2hfZHVhbHBpMi5cXG4gNDI3OlxcdFxcbiA0Mjg6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiA0Mjk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA4OjM2OjM0LjA5NTM3MDg1N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDgyODk0NTY3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1cyBTeW1ib2wgQW5hbHlzaXMgYW5kIENvbmZpZ3VyYXRpb24gUmV2aWV3KipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGZvY3VzIHN5bWJvbHMuIExvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIGEgc2V0IG9mIG1vZGlmaWVkIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHF1ZXVpbmcgZGlzY2lwbGluZXMgd2l0aGluIHRoZSBuZXR3b3JrIHNjaGVkdWxlcjogYHBpZV9kcm9wX2Vhcmx5YCBpbiBgc2NoX3BpZS5jYCwgYGRycl9jaGFuZ2VfY2xhc3NgIGluIGBzY2hfZHJyLmNgLCBhbmQgYSBmZXcgZnJvbSBgc2NoX2V0cy5jYCAoYGV0c19xdWFudHVtX3BhcnNlYCwgYGV0c19xZGlzY19jaGFuZ2VgKSwgYWxvbmcgd2l0aCBjaGFuZ2VzIGluIGBzY2hfZnEuY2AgKGBmcV9jaGFuZ2VgLCBgZnFfaW5pdGApLCBgc2NoX2ZxX3BpZS5jYCAoYGZxX3BpZV9jaGFuZ2VgKSwgYHNjaF9oaGYuY2AgKGBoaGZfY2hhbmdlYCwgYGhoZl9pbml0YCksIGBzY2hfc2ZxLmNgIChgc2ZxX2NoYW5nZWApLCBhbmQgZmluYWxseSB0aGUgYHNjaF9kdWFscGkyLmNgIHNldCBpbmNsdWRpbmcgYGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbmAsIGBkdWFscGkyX2luaXRgLCBhbmQgYGR1YWxwaTJfY2hhbmdlYC5cblxuTm93LCBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgaW4gdGhlc2UgZmlsZXMgdGhhdCBtaWdodCBuZWVkIGZ1cnRoZXIgc2NydXRpbnksIG9yIGlmIHRoZXNlIGlkZW50aWZpZWQgZnVuY3Rpb25zIGFyZSBpbmxpbmVkIG9yIGhhdmUgZGlzdGluY3Qgc3ltYm9scy4gIFNpbmNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW52b2x2ZWQgaW4gb3BlcmF0aW9ucyBsaWtlIGBjaGFuZ2VgIG9yIGBpbml0YCBhbmQgdGhleSBhcmUgbGlrZWx5IGJlaW5nIHJlZmVyZW5jZWQgdmlhIGZ1bmN0aW9uIHBvaW50ZXJzIGluIHN0cnVjdHVyZXMgbGlrZSBgUWRpc2Nfb3BzYCBhbmQgYFFkaXNjX2NsYXNzX29wc2AsIEkgY2FuIGFzc3VtZSB0aGVpciBhZGRyZXNzZXMgYXJlIGJlaW5nIHRha2VuLCB3aGljaCB3b3VsZCBwcmV2ZW50IHRoZSBjb21waWxlciBmcm9tIGlubGluaW5nIHRoZW0uIFRoYXQncyBnb29kOyB0aGlzIGNvbmZpcm1zIHRoZXkncmUgZGlzdGluY3Qgc3ltYm9scyBhbmQgd2FycmFudCBzcGVjaWZpYyBhdHRlbnRpb24uXG5cbkFscmlnaHQsIHRpbWUgdG8gY3JlYXRlIGEgZGVmaW5pdGl2ZSBsaXN0IG9mIHRoZSByZWxldmFudCBub24taG90LXBhdGggZm9jdXMgc3ltYm9scy4gSSd2ZSBnb3Q6IGBkcnJfY2hhbmdlX2NsYXNzYCwgYGV0c19xZGlzY19jaGFuZ2VgLCBgZnFfY2hhbmdlYCwgYGZxX2luaXRgLCBgZnFfcGllX2NoYW5nZWAsIGBoaGZfY2hhbmdlYCwgYGhoZl9pbml0YCwgYHNmcV9jaGFuZ2VgLCBhbmQgYHBpZV9kcm9wX2Vhcmx5YC5cblxuTmV4dCwgSSBoYXZlIHRvIGVuc3VyZSB0aGUgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9ucyBhcmUgY29ycmVjdC4gTGV0J3Mgc2VlLi4uICBgTkVUX1NDSEVEYCwgYE5FVF9TQ0hfRFJSYCwgYE5FVF9TQ0hfRFVBTFBJMmAsIGBORVRfU0NIX0VUU2AsIGBORVRfU0NIX0ZRYCwgYE5FVF9TQ0hfRlFfUElFYCwgYE5FVF9TQ0hfSEhGYCwgYE5FVF9TQ0hfUElFYCwgYE5FVF9TQ0hfU0ZRYC4gIE9rYXksIGFsbCBwcmVzZW50LCBhbGwgY29ycmVjdGx5IHdpdGhvdXQgYENPTkZJR19gIHByZWZpeC5cblxuRG91YmxlLWNoZWNraW5nIHRoZSBXb3J0aEZ1enppbmcgYXR0cmlidXRlIC0gWWVzLCB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRvIGZ1enouIFRoZXNlIGNoYW5nZXMgdG91Y2ggY29yZSB0cmFmZmljIGNvbnRyb2wgcWRpc2MgcXVldWUgcGFyYW1ldGVycywgc3BlY2lmaWNhbGx5IHF1YW50dW0gYW5kIE1UVSBpbnB1dHMsIGFuZCBhZmZlY3QgZWlnaHQgZGlmZmVyZW50IG5ldHdvcmsgc2NoZWR1bGVycyAoYHNjaF9kcnJgLCBgc2NoX2R1YWxwaTJgLCBgc2NoX2V0c2AsIGBzY2hfZnFgLCBgc2NoX2ZxX3BpZWAsIGBzY2hfaGhmYCwgYHNjaF9waWVgLCBgc2NoX3NmcWApIGNvbmZpZ3VyZWQgdmlhIG5ldGxpbmsuICBUaGVzZSBhcmUgY3JpdGljYWwgYXJlYXMgZm9yIG1haW50YWluaW5nIG5ldHdvcmsgc3RhYmlsaXR5LCBhbmQgdGhpcyBjbGVhcmx5IGluZGljYXRlcyBhIG5lZWQgdG8gdmFsaWRhdGUgdGhlIGlucHV0IGhhbmRsaW5nIGFuZCBib3VuZHMuXG5cbk5vdywgbGV0J3MgcHJlcGFyZSB0aGUgYHNldC1yZXN1bHRzYCBjYWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDA4NiwiT3V0cHV0VG9rZW5zIjoyNDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3ODQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwODozNjo0NC45MjQzMTkwMjdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMwNDU5NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9EUlJcIixcbiAgICBcIk5FVF9TQ0hfRFVBTFBJMlwiLFxuICAgIFwiTkVUX1NDSF9FVFNcIixcbiAgICBcIk5FVF9TQ0hfRlFcIixcbiAgICBcIk5FVF9TQ0hfRlFfUElFXCIsXG4gICAgXCJORVRfU0NIX0hIRlwiLFxuICAgIFwiTkVUX1NDSF9QSUVcIixcbiAgICBcIk5FVF9TQ0hfU0ZRXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHJyX2NoYW5nZV9jbGFzc1wiLFxuICAgIFwiZXRzX3FkaXNjX2NoYW5nZVwiLFxuICAgIFwiZnFfY2hhbmdlXCIsXG4gICAgXCJmcV9pbml0XCIsXG4gICAgXCJmcV9waWVfY2hhbmdlXCIsXG4gICAgXCJoaGZfY2hhbmdlXCIsXG4gICAgXCJoaGZfaW5pdFwiLFxuICAgIFwic2ZxX2NoYW5nZVwiLFxuICAgIFwicGllX2Ryb3BfZWFybHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBhbmQgY2xhbXBpbmcgZm9yIE1UVSBhbmQgcXVhbnR1bSBib3VuZHMgYWNyb3NzIG11bHRpcGxlIHRyYWZmaWMgY29udHJvbCBzY2hlZHVsZXJzIChEUlIsIERVQUxQSTIsIEVUUywgRlEsIEZRLVBJRSwgSEhGLCBQSUUsIGFuZCBTRlEpLiBUaGVzZSBwYWNrZXQgc2NoZWR1bGVycyBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgY29uZmlndXJhYmxlIHZpYSBydG5ldGxpbmsuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfU0NIX0RSUlwiLFxuICAgIFwiTkVUX1NDSF9EVUFMUEkyXCIsXG4gICAgXCJORVRfU0NIX0VUU1wiLFxuICAgIFwiTkVUX1NDSF9GUVwiLFxuICAgIFwiTkVUX1NDSF9GUV9QSUVcIixcbiAgICBcIk5FVF9TQ0hfSEhGXCIsXG4gICAgXCJORVRfU0NIX1BJRVwiLFxuICAgIFwiTkVUX1NDSF9TRlFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcnJfY2hhbmdlX2NsYXNzXCIsXG4gICAgXCJldHNfcWRpc2NfY2hhbmdlXCIsXG4gICAgXCJmcV9jaGFuZ2VcIixcbiAgICBcImZxX2luaXRcIixcbiAgICBcImZxX3BpZV9jaGFuZ2VcIixcbiAgICBcImhoZl9jaGFuZ2VcIixcbiAgICBcImhoZl9pbml0XCIsXG4gICAgXCJzZnFfY2hhbmdlXCIsXG4gICAgXCJwaWVfZHJvcF9lYXJseVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHBhcmFtZXRlciB2YWxpZGF0aW9uIGFuZCBjbGFtcGluZyBmb3IgTVRVIGFuZCBxdWFudHVtIGJvdW5kcyBhY3Jvc3MgbXVsdGlwbGUgdHJhZmZpYyBjb250cm9sIHNjaGVkdWxlcnMgKERSUiwgRFVBTFBJMiwgRVRTLCBGUSwgRlEtUElFLCBISEYsIFBJRSwgYW5kIFNGUSkuIFRoZXNlIHBhY2tldCBzY2hlZHVsZXJzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBjb25maWd1cmFibGUgdmlhIHJ0bmV0bGluay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjlUMDg6MzY6NDUuMDQ3Mzc2MzM4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjY4Nzk5MTI1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA4OjM2OjQ1LjA0ODM0MzE2N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI2Njg3MDIwNjc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXN0cmljdHMgYW5kIGNsYW1wcyBxdWFudHVtIGFuZCBNVFUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGluIHNldmVyYWwgbmV0L3NjaGVkIHFkaXNjIGltcGxlbWVudGF0aW9ucyAoc2NoX2Ryciwgc2NoX2R1YWxwaTIsIHNjaF9ldHMsIHNjaF9mcSwgc2NoX2ZxX3BpZSwgc2NoX2hoZiwgc2NoX3BpZSwgc2NoX3NmcSkgdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93cyBvciBkaXZpc2lvbi1ieS16ZXJvL2RlZ2VuZXJhdGUgc2NoZWR1bGluZyBzdGF0ZXMuIEFsbCB0b3VjaGVkIHZhcmlhYmxlcyBhcmUgcGxhaW4gc2NhbGFyIGludGVnZXJzICh1MzIvczMyKSB0aGF0IGFyZSBmdWxseSBpbml0aWFsaXplZCBhdCB0aGUgcG9pbnQgb2YgZGVmaW5pdGlvbi9hc3NpZ25tZW50LiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmUgcGFkZGluZywgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIHZhcmlhYmxlcywgb3Iga2VybmVsLXRvLXVzZXIgY29weSBvcGVyYXRpb25zLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gZnV6emluZy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiYmVhZjU5M2Y1ZGM0ZTVhOTBkOGRjODk4Y2U1ODBiZDVlMTAyMjUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMjkgMDg6MzU6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2Ryci5jIGIvbmV0L3NjaGVkL3NjaF9kcnIuY1xuaW5kZXggOTFiMWVmODI0YWZhZi4uODYyMWQwNTdlZGQ5ZiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZHJyLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZHJyLmNcbkBAIC04Miw4ICs4Miw5IEBAIHN0YXRpYyBpbnQgZHJyX2NoYW5nZV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQsIHUzMiBwYXJlbnRpZCxcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiU3BlY2lmaWVkIERSUiBxdWFudHVtIGNhbm5vdCBiZSB6ZXJvXCIpO1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHR9XG4rXHRcdHF1YW50dW0gPSBjbGFtcF90KHUzMiwgcXVhbnR1bSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHR9IGVsc2Vcbi1cdFx0cXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0XHRxdWFudHVtID0gY2xhbXBfdCh1MzIsICh1MzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuIFx0aWYgKGNsICE9IE5VTEwpIHtcbiBcdFx0aWYgKHRjYVtUQ0FfUkFURV0pIHtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5pbmRleCA0ZjY3OGQ0ZmYxMGVjLi40OTQ3ZGVmN2M0OWVmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jXG5AQCAtMjA4LDkgKzIwOCwxMSBAQCBzdGF0aWMgdm9pZCBkdWFscGkyX3Jlc2V0X2NfcHJvdGVjdGlvbihzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxKVxuIHN0YXRpYyB2b2lkIGR1YWxwaTJfY2FsY3VsYXRlX2NfcHJvdGVjdGlvbihzdHJ1Y3QgUWRpc2MgKnNjaCxcbiBcdFx0XHRcdFx0ICAgc3RydWN0IGR1YWxwaTJfc2NoZWRfZGF0YSAqcSwgdTMyIHdjKVxuIHtcbitcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbitcbiBcdHEtXHUwMDNlY19wcm90ZWN0aW9uX3djID0gd2M7XG4gXHRxLVx1MDAzZWNfcHJvdGVjdGlvbl93bCA9IE1BWF9XQyAtIHdjO1xuLVx0cS1cdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSkgKlxuK1x0cS1cdTAwM2VjX3Byb3RlY3Rpb25faW5pdCA9IChzMzIpbXR1ICpcbiBcdFx0KChpbnQpcS1cdTAwM2VjX3Byb3RlY3Rpb25fd2MgLSAoaW50KXEtXHUwMDNlY19wcm90ZWN0aW9uX3dsKTtcbiBcdGR1YWxwaTJfcmVzZXRfY19wcm90ZWN0aW9uKHEpO1xuIH1cbkBAIC0yODUsOCArMjg3LDkgQEAgc3RhdGljIGJvb2wgbXVzdF9kcm9wKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZHVhbHBpMl9zY2hlZF9kYXRhICpxLFxuIFx0dTY0IGxvY2FsX2xfcHJvYjtcbiBcdGJvb2wgb3ZlcmxvYWQ7XG4gXHR1MzIgcHJvYjtcbitcdHUzMiBtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcbi1cdGlmIChzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgXHUwMDNjIDIgKiBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSlcbitcdGlmIChzY2gtXHUwMDNlcXN0YXRzLmJhY2tsb2cgXHUwMDNjIDIgKiBtdHUpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdHByb2IgPSBSRUFEX09OQ0UocS1cdTAwM2VwaTJfcHJvYik7XG5AQCAtNzEyLDcgKzcxNSw4IEBAIHN0YXRpYyB1MzIgZ2V0X21lbW9yeV9saW1pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGxpbWl0KVxuIFx0LyogQXBwbHkgcnVsZSBvZiB0aHVtYiwgaS5lLiwgZG91YmxpbmcgdGhlIHBhY2tldCBsZW5ndGgsXG4gXHQgKiB0byBmdXJ0aGVyIGluY2x1ZGUgcGVyIHBhY2tldCBvdmVyaGVhZCBpbiBtZW1vcnlfbGltaXQuXG4gXHQgKi9cbi1cdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpKTtcbitcdHU2NCBtZW1saW0gPSBtdWxfdTMyX3UzMihsaW1pdCwgMiAqIGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSxcbitcdFx0XHRcdFx0XHQgICAgIDEsIDEgXHUwMDNjXHUwMDNjIDIwKSk7XG4gXG4gXHRpZiAodXBwZXJfMzJfYml0cyhtZW1saW0pKVxuIFx0XHRyZXR1cm4gVTMyX01BWDtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2V0cy5jIGIvbmV0L3NjaGVkL3NjaF9ldHMuY1xuaW5kZXggMjVmY2Y0MDc5ZmVjZS4uNmNjOTAyYTAzODM4NyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZXRzLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZXRzLmNcbkBAIC04MywxMSArODMsNyBAQCBzdGF0aWMgaW50IGV0c19xdWFudHVtX3BhcnNlKHN0cnVjdCBRZGlzYyAqc2NoLCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxuIFx0XHRcdCAgICAgdW5zaWduZWQgaW50ICpxdWFudHVtLFxuIFx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbi1cdCpxdWFudHVtID0gbmxhX2dldF91MzIoYXR0cik7XG4tXHRpZiAoISpxdWFudHVtKSB7XG4tXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJFVFMgcXVhbnR1bSBjYW5ub3QgYmUgemVyb1wiKTtcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHR9XG4rXHQqcXVhbnR1bSA9IGNsYW1wX3QodTMyLCBubGFfZ2V0X3UzMihhdHRyKSwgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNjMyLDExICs2MjgsMTMgQEAgc3RhdGljIGludCBldHNfcWRpc2NfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0cmV0dXJuIGVycjtcbiBcdH1cbiBcdC8qIElmIHRoZXJlIGFyZSBtb3JlIGJhbmRzIHRoYW4gc3RyaWN0ICsgcXVhbnRhIHByb3ZpZGVkLCB0aGUgcmVtYWluaW5nXG4tXHQgKiBvbmVzIGFyZSBFVFMgd2l0aCBxdWFudHVtIG9mIE1UVS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZyB2YWx1ZXMgaGVyZS5cbitcdCAqIG9uZXMgYXJlIEVUUyB3aXRoIHF1YW50dW0gb2YgbWF4KE1UVSwgMjU2KS4gSW5pdGlhbGl6ZSB0aGUgbWlzc2luZ1xuK1x0ICogdmFsdWVzIGhlcmUuXG4gXHQgKi9cbiBcdGZvciAoaSA9IG5zdHJpY3Q7IGkgXHUwMDNjIG5iYW5kczsgaSsrKSB7XG4gXHRcdGlmICghcXVhbnRhW2ldKVxuLVx0XHRcdHF1YW50YVtpXSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0XHRcdHF1YW50YVtpXSA9IGNsYW1wX3QodTMyLCAodTMyKXBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLFxuK1x0XHRcdFx0XHQgICAgMjU2LCAxIFx1MDAzY1x1MDAzYyAyMCk7XG4gXHR9XG4gXG4gXHQvKiBCZWZvcmUgY29tbWl0LCBtYWtlIHN1cmUgd2UgY2FuIGFsbG9jYXRlIGFsbCBuZXcgcWRpc2NzICovXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9mcS5jIGIvbmV0L3NjaGVkL3NjaF9mcS5jXG5pbmRleCA2MTQ0YjU2ODZmMTNmLi4zNWY5NDBiMjIwNWRmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcS5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX2ZxLmNcbkBAIC05ODAsNyArOTgwLDcgQEAgc3RhdGljIGludCBmcV9yZXNpemUoc3RydWN0IFFkaXNjICpzY2gsIHUzMiBsb2cpXG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0bGlua19yYW5nZV92YWxpZGF0aW9uIGlxX3JhbmdlID0ge1xuLVx0Lm1heCA9IElOVF9NQVgsXG4rXHQubWF4ID0gMSBcdTAwM2NcdTAwM2MgMjAsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZnFfcG9saWN5W1RDQV9GUV9NQVggKyAxXSA9IHtcbkBAIC0xMTA2LDE0ICsxMTA2LDEwIEBAIHN0YXRpYyBpbnQgZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRcdFx0ICAgbmxhX2dldF91MzIodGJbVENBX0ZRX0ZMT1dfUExJTUlUXSkpO1xuIFxuIFx0aWYgKHRiW1RDQV9GUV9RVUFOVFVNXSkge1xuLVx0XHR1MzIgcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSk7XG4rXHRcdHUzMiBxdWFudHVtID0gY2xhbXBfdCh1MzIsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9RVUFOVFVNXSksXG4rXHRcdFx0XHQgICAgIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuLVx0XHRpZiAocXVhbnR1bSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgcXVhbnR1bSBcdTAwM2M9ICgxIFx1MDAzY1x1MDAzYyAyMCkpIHtcbi1cdFx0XHRXUklURV9PTkNFKHEtXHUwMDNlcXVhbnR1bSwgcXVhbnR1bSk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJpbnZhbGlkIHF1YW50dW1cIik7XG4tXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0fVxuK1x0XHRXUklURV9PTkNFKHEtXHUwMDNlcXVhbnR1bSwgcXVhbnR1bSk7XG4gXHR9XG4gXG4gXHRpZiAodGJbVENBX0ZRX0lOSVRJQUxfUVVBTlRVTV0pXG5AQCAtMTIzMiw3ICsxMjI4LDcgQEAgc3RhdGljIGludCBmcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRzY2gtXHUwMDNlbGltaXRcdFx0PSAxMDAwMDtcbiBcdHEtXHUwMDNlZmxvd19wbGltaXRcdFx0PSAxMDA7XG4gXHRtdHUgPSBjbGFtcF90KHUzMiwgcHNjaGVkX210dShxZGlzY19kZXYoc2NoKSksIDEsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbi1cdHEtXHUwMDNlcXVhbnR1bVx0XHQ9IG1pbl90KHUzMiwgMiAqIG10dSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuK1x0cS1cdTAwM2VxdWFudHVtXHRcdD0gY2xhbXBfdCh1MzIsIDIgKiBtdHUsIDI1NiwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0cS1cdTAwM2Vpbml0aWFsX3F1YW50dW1cdD0gbWluX3QodTMyLCAxMCAqIG10dSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFx0cS1cdTAwM2VmbG93X3JlZmlsbF9kZWxheVx0PSBtc2Vjc190b19qaWZmaWVzKDQwKTtcbiBcdHEtXHUwMDNlZmxvd19tYXhfcmF0ZVx0PSB+MFVMO1xuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZnFfcGllLmMgYi9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jXG5pbmRleCBiMjdkOTU0MTg3MDdhLi41OTgyODQ3ZGY4Zjg1IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9mcV9waWUuY1xuQEAgLTM0MSw3ICszNDEsOCBAQCBzdGF0aWMgaW50IGZxX3BpZV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0XHQgICBubGFfZ2V0X3UzMih0YltUQ0FfRlFfUElFX0JFVEFdKSk7XG4gXG4gXHRpZiAodGJbVENBX0ZRX1BJRV9RVUFOVFVNXSlcbi1cdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKTtcbitcdFx0V1JJVEVfT05DRShxLVx1MDAzZXF1YW50dW0sXG4rXHRcdFx0ICAgbWF4KDI1NlUsIG5sYV9nZXRfdTMyKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pKSk7XG4gXG4gXHRpZiAodGJbVENBX0ZRX1BJRV9NRU1PUllfTElNSVRdKVxuIFx0XHRXUklURV9PTkNFKHEtXHUwMDNlbWVtb3J5X2xpbWl0LFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfaGhmLmMgYi9uZXQvc2NoZWQvc2NoX2hoZi5jXG5pbmRleCA5NmFjYWI2YThkYTAzLi5mYzcyZjgyNWZiZDkyIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9oaGYuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9oaGYuY1xuQEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgaW50IGhoZl9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdFx0cmV0dXJuIGVycjtcbiBcbiBcdGlmICh0YltUQ0FfSEhGX1FVQU5UVU1dKVxuLVx0XHRuZXdfcXVhbnR1bSA9IG5sYV9nZXRfdTMyKHRiW1RDQV9ISEZfUVVBTlRVTV0pO1xuK1x0XHRuZXdfcXVhbnR1bSA9IG1heCgyNTZVLCBubGFfZ2V0X3UzMih0YltUQ0FfSEhGX1FVQU5UVU1dKSk7XG4gXG4gXHRpZiAodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSlcbiBcdFx0bmV3X2hoZl9ub25faGhfd2VpZ2h0ID0gbmxhX2dldF91MzIodGJbVENBX0hIRl9OT05fSEhfV0VJR0hUXSk7XG5AQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdGludCBpO1xuIFxuIFx0c2NoLVx1MDAzZWxpbWl0ID0gMTAwMDtcbi1cdHEtXHUwMDNlcXVhbnR1bSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0cS1cdTAwM2VxdWFudHVtID0gY2xhbXBfdCh1MzIsIHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpLCAyNTYsIDEgXHUwMDNjXHUwMDNjIDIwKTtcbiBcdGdldF9yYW5kb21fYnl0ZXMoXHUwMDI2cS1cdTAwM2VwZXJ0dXJiYXRpb24sIHNpemVvZihxLVx1MDAzZXBlcnR1cmJhdGlvbikpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2cS1cdTAwM2VuZXdfYnVja2V0cyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZxLVx1MDAzZW9sZF9idWNrZXRzKTtcbkBAIC02MjQsMTAgKzYyNCw2IEBAIHN0YXRpYyBpbnQgaGhmX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdHEtXHUwMDNlaGhmX2V2aWN0X3RpbWVvdXQgPSBIWjsgICAgICAvKiAxICBzZWMgKi9cbiBcdHEtXHUwMDNlaGhmX25vbl9oaF93ZWlnaHQgPSAyO1xuIFxuLVx0aWYgKChpbnQpcS1cdTAwM2VxdWFudHVtIFx1MDAzYz0gMCB8fFxuLVx0ICAgICh1NjQpcS1cdTAwM2VxdWFudHVtICogcS1cdTAwM2VoaGZfbm9uX2hoX3dlaWdodCBcdTAwM2UgSU5UX01BWClcbi1cdFx0cS1cdTAwM2VxdWFudHVtID0gMjU2O1xuLVxuIFx0aWYgKG9wdCkge1xuIFx0XHRpbnQgZXJyID0gaGhmX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3BpZS5jIGIvbmV0L3NjaGVkL3NjaF9waWUuY1xuaW5kZXggYjQxZjJkZWYyZTJjYy4uM2I3ODYzZmZkMjg0YyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfcGllLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfcGllLmNcbkBAIC0zNSw3ICszNSw3IEBAIGJvb2wgcGllX2Ryb3BfZWFybHkoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBwaWVfcGFyYW1zICpwYXJhbXMsXG4ge1xuIFx0dTY0IHJuZDtcbiBcdHU2NCBsb2NhbF9wcm9iID0gdmFycy1cdTAwM2Vwcm9iO1xuLVx0dTMyIG10dSA9IHBzY2hlZF9tdHUocWRpc2NfZGV2KHNjaCkpO1xuK1x0dTMyIG10dSA9IGNsYW1wX3QodTMyLCBwc2NoZWRfbXR1KHFkaXNjX2RldihzY2gpKSwgMSwgMSBcdTAwM2NcdTAwM2MgMjApO1xuIFxuIFx0LyogSWYgdGhlcmUgaXMgc3RpbGwgYnVyc3QgYWxsb3dhbmNlIGxlZnQgc2tpcCByYW5kb20gZWFybHkgZHJvcCAqL1xuIFx0aWYgKHZhcnMtXHUwMDNlYnVyc3RfdGltZSBcdTAwM2UgMClcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3NmcS5jIGIvbmV0L3NjaGVkL3NjaF9zZnEuY1xuaW5kZXggMTg3ZDNlZDU3OGYyNi4uOGJiY2ZjOWU4NWQ5NCAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfc2ZxLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfc2ZxLmNcbkBAIC02NjAsNiArNjYwLDExIEBAIHN0YXRpYyBpbnQgc2ZxX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbitcdGlmIChjdGwtXHUwMDNlcXVhbnR1bSBcdTAwM2UgMSBcdTAwM2NcdTAwM2MgMjApIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJxdWFudHVtIHRvbyBsYXJnZVwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4gXHRpZiAoY3RsLVx1MDAzZXBlcnR1cmJfcGVyaW9kIFx1MDAzYyAwIHx8XG4gXHQgICAgY3RsLVx1MDAzZXBlcnR1cmJfcGVyaW9kIFx1MDAzZSBJTlRfTUFYIC8gSFopIHtcbiBcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJpbnZhbGlkIHBlcnR1cmIgcGVyaW9kXCIpO1xuQEAgLTY4OCw3ICs2OTMsNyBAQCBzdGF0aWMgaW50IHNmcV9jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcbiBcdC8qIHVwZGF0ZSBhbmQgdmFsaWRhdGUgY29uZmlndXJhdGlvbiAqL1xuIFx0aWYgKGN0bC1cdTAwM2VxdWFudHVtKVxuLVx0XHRxdWFudHVtID0gY3RsLVx1MDAzZXF1YW50dW07XG4rXHRcdHF1YW50dW0gPSBtYXgoMjU2VSwgY3RsLVx1MDAzZXF1YW50dW0pO1xuIFx0aWYgKGN0bC1cdTAwM2VmbG93cylcbiBcdFx0bWF4Zmxvd3MgPSBtaW5fdCh1MzIsIGN0bC1cdTAwM2VmbG93cywgU0ZRX01BWF9GTE9XUyk7XG4gXHRpZiAoY3RsLVx1MDAzZWRpdmlzb3IpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI5VDA4OjM2OjQ1LjA0ODM0NTI3OFoiLCJTZXEiOjI1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjY4Njk5NDUwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBGdXp6aW5nIFNlc3Npb24gQXNzZXNzbWVudCoqXG5cbkFscmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2ggYW5kIGRlY2lkZSBpZiB3ZSBuZWVkIHRvIHNjaGVkdWxlIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gVGhlIGNoYW5nZXMgc2VlbSB0byBiZSBjb25jZW50cmF0ZWQgaW4gc2V2ZXJhbCBgbmV0L3NjaGVkYCBxZGlzYyBtb2R1bGVzLlxuXG5JdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBwcmltYXJpbHkgZm9jdXNlcyBvbiBjbGFtcGluZyB2YXJpb3VzIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycywgbGlrZSBgcXVhbnR1bWAgYW5kIGBtdHVgLCB3aXRoaW4gc3BlY2lmaWMgcmFuZ2VzLiBXZSdyZSB0YWxraW5nIGFib3V0IHRoaW5ncyBsaWtlIGBjbGFtcF90YCBjYWxscyBhbmQgYG1heGAgb3BlcmF0aW9ucyB0byBlbnN1cmUgdGhlc2UgdmFsdWVzIHN0YXkgd2l0aGluIHNlbnNpYmxlIGJvdW5kcy4gTGV0IG1lIGJyZWFrIGRvd24gd2hhdCBJJ20gc2VlaW5nOlxuXG4qICAgYHNjaF9kcnIuY2AsIGBzY2hfZHVhbHBpMi5jYCwgYHNjaF9ldHMuY2AsIGBzY2hfZnEuY2AsIGBzY2hfZnFfcGllLmNgLCBgc2NoX2hoZi5jYCwgYHNjaF9waWUuY2AsIGFuZCBgc2NoX3NmcS5jYDogQWxsIG9mIHRoZXNlIG1vZHVsZXMgYXJlIGludm9sdmVkLCBhbmQgaXQgYWxsIGJvaWxzIGRvd24gdG8gY2xhbXBpbmcgb3IgZW5zdXJpbmcgdGhhdCB2YWx1ZXMgbGlrZSBgcXVhbnR1bWAgb3IgYG10dWAgYXJlIHdpdGhpbiBzcGVjaWZpZWQgbGltaXRzLCB0eXBpY2FsbHkgYmV0d2VlbiAyNTYgYW5kIDEgXHUwMDNjXHUwMDNjIDIwLCBvciBhIHNpbWlsYXIgcmFuZ2UuXG5cbk15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGFyb3VuZCB1bmluaXRpYWxpemVkIG1lbW9yeS4gTGV0J3MgbWFrZSBzdXJlIG5vdGhpbmcncyBiZWluZyByZWFkIGZyb20gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG5vIHVuaW5pdGlhbGl6ZWQgc3RydWN0IGNvcGllcyBhcmUgZ29pbmcgdG8gdXNlcnNwYWNlLCBhbmQgdGhhdCB3ZSBkb24ndCBoYXZlIGFueSB1bmluaXRpYWxpemVkIGJ1ZmZlciB1c2FnZXMuXG5cbkZyb20gd2hhdCBJIGNhbiB0ZWxsLCB0aGUgbW9kaWZpY2F0aW9ucyBkZWFsIGV4Y2x1c2l2ZWx5IHdpdGggbnVtZXJpYyBjb25maWd1cmF0aW9ucy4gVGhlcmUgZG9uJ3Qgc2VlbSB0byBiZSBhbnkgbmV3IHN0cnVjdHMgaW50cm9kdWNlZCwgbm8gbmV3IGJ1ZmZlcnMgYWxsb2NhdGVkIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24sIGFuZCBub3RoaW5nJ3MgYmVpbmcgY29waWVkIHRvIHVzZXJzcGFjZSB3aXRob3V0IHByb3BlciBpbml0aWFsaXphdGlvbi4gVGhlIGNhbGN1bGF0aW9ucyBhcmUgYmFzaWMgYXJpdGhtZXRpYyBvciBjbGFtcGluZyBvcGVyYXRpb25zIG9uIHNjYWxhciB2YWx1ZXMuXG5cbkxldCdzIGRvdWJsZS1jaGVjayBlYWNoIGZpbGUgYW5kIGVhY2ggZnVuY3Rpb24gdG8gZW5zdXJlIG15IG1lbnRhbCBtb2RlbCBpcyBhY2N1cmF0ZTpcblxuKiAgIGBzY2hfZHJyLmNgOiBUaGUgYHF1YW50dW1gIGlzIGp1c3QgYSBgdTMyYCBwYXNzZWQgdG8gYSBkZXN0aW5hdGlvbiBgY2wtXHUwMDNlcXVhbnR1bWAuXG4qICAgYHNjaF9kdWFscGkyLmNgOiBUaGUgYG10dWAgdmFsdWUgaXMgaW5pdGlhbGl6ZWQgd2l0aCBgY2xhbXBfdGAuXG4qICAgYHNjaF9ldHMuY2A6IFdlJ3JlIGNsYW1waW5nIGFuZCBpbml0aWFsaXppbmcgYCpxdWFudHVtYC5cbiogICBgc2NoX2ZxLmNgLCBgc2NoX2ZxX3BpZS5jYDogYHF1YW50dW1gIGlzIGEgbG9jYWwgYHUzMmAgYW5kIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgY2xhbXBlZCB2YWx1ZS5cbiogICBgc2NoX2hoZi5jYDogV2UgaW5pdGlhbGl6ZSBhIGBuZXdfcXVhbnR1bWAsIHdoaWNoIGlzIHRoZW4gY2xhbXBlZC5cbiogICBgc2NoX3BpZS5jYDogVGhlIGBtdHVgIGlzIGJlaW5nIGluaXRpYWxpemVkIHdpdGggYGNsYW1wX3RgLlxuKiAgIGBzY2hfc2ZxLmNgOiBUaGUgYHF1YW50dW1gIGlzIGJlaW5nIGluaXRpYWxpemVkIHdpdGggYG1heGAuXG5cblNvLCBmcm9tIHdoYXQgSSdtIHNlZWluZywgdGhlcmUncyBubyBldmlkZW5jZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgbm8gaGVhcCBhbGxvY2F0aW9ucyB3aXRob3V0IHplcm9pbmcsIGFuZCBubyBkYXRhIGlzIGdldHRpbmcgY29waWVkIHRvIHVzZXJzcGFjZSB3aXRob3V0IHByb3BlciBpbml0aWFsaXphdGlvbi4gQW55IHBvdGVudGlhbCBpc3N1ZXMgd291bGQgbGlrZWx5IGJlIHJlbGF0ZWQgdG8gY2xhbXBpbmcgbG9naWMgb3IgYXJpdGhtZXRpYyBidWdzLCB3aGljaCBzaG91bGQgYmUgY2F1Z2h0IGJ5IHRoZSBzdGFuZGFyZCBzYW5pdGl6ZXJzIG9yIEtBU0FOL1VCU0FOLiBLTVNBTiBkb2Vzbid0IGhhdmUgYSBzcGVjaWFsIHJvbGUgaGVyZS5cblxuQWxyaWdodCwgbGV0J3MgZ28gd2l0aCB0aGF0LiBObyBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyByZXF1aXJlZC4gQ2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTM1LCJPdXRwdXRUb2tlbnMiOjE3NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOVQwODozNzoxMS43MzUzNDM0ODFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlc3RyaWN0cyBhbmQgY2xhbXBzIHF1YW50dW0gYW5kIE1UVSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgaW4gc2V2ZXJhbCBuZXQvc2NoZWQgcWRpc2MgaW1wbGVtZW50YXRpb25zIChzY2hfZHJyLCBzY2hfZHVhbHBpMiwgc2NoX2V0cywgc2NoX2ZxLCBzY2hfZnFfcGllLCBzY2hfaGhmLCBzY2hfcGllLCBzY2hfc2ZxKSB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzIG9yIGRpdmlzaW9uLWJ5LXplcm8vZGVnZW5lcmF0ZSBzY2hlZHVsaW5nIHN0YXRlcy4gQWxsIHRvdWNoZWQgdmFyaWFibGVzIGFyZSBwbGFpbiBzY2FsYXIgaW50ZWdlcnMgKHUzMi9zMzIpIHRoYXQgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGF0IHRoZSBwb2ludCBvZiBkZWZpbml0aW9uL2Fzc2lnbm1lbnQuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZSBwYWRkaW5nLCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzLCBvciBrZXJuZWwtdG8tdXNlciBjb3B5IG9wZXJhdGlvbnMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiBmdXp6aW5nLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlc3RyaWN0cyBhbmQgY2xhbXBzIHF1YW50dW0gYW5kIE1UVSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgaW4gc2V2ZXJhbCBuZXQvc2NoZWQgcWRpc2MgaW1wbGVtZW50YXRpb25zIChzY2hfZHJyLCBzY2hfZHVhbHBpMiwgc2NoX2V0cywgc2NoX2ZxLCBzY2hfZnFfcGllLCBzY2hfaGhmLCBzY2hfcGllLCBzY2hfc2ZxKSB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzIG9yIGRpdmlzaW9uLWJ5LXplcm8vZGVnZW5lcmF0ZSBzY2hlZHVsaW5nIHN0YXRlcy4gQWxsIHRvdWNoZWQgdmFyaWFibGVzIGFyZSBwbGFpbiBzY2FsYXIgaW50ZWdlcnMgKHUzMi9zMzIpIHRoYXQgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGF0IHRoZSBwb2ludCBvZiBkZWZpbml0aW9uL2Fzc2lnbm1lbnQuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZSBwYWRkaW5nLCB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzLCBvciBrZXJuZWwtdG8tdXNlciBjb3B5IG9wZXJhdGlvbnMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiBmdXp6aW5nLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjlnt[1] Phase: Succeeded StartedAt: 2026-08-29 08:37:24 +0000 UTC FinishedAt: 2026-08-29 08:37:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-29 08:37:24 +0000 UTC FinishedAt: 2026-08-29 08:37:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[2] Phase: Succeeded StartedAt: 2026-08-29 08:37:24 +0000 UTC FinishedAt: 2026-08-29 12:15:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-29 08:37:24 +0000 UTC FinishedAt: 2026-08-29 12:15:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-29 08:37:24 +0000 UTC FinishedAt: 2026-08-29 08:37:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-29 08:37:24 +0000 UTC FinishedAt: 2026-08-29 08:37:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxjlnt/series-workflowxjlnt-convert-artifact-1511877237/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-29 08:37:45 +0000 UTC FinishedAt: 2026-08-29 08:53:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-29 08:37:45 +0000 UTC FinishedAt: 2026-08-29 08:53:37 +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:*6d9888f1-3e2d-4627-a1c9-40bd252e236a,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-workflowxjlnt/series-workflowxjlnt-convert-artifact-1511877237/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": "bc005e9c-8b86-44e1-bcd9-dd94b65355ee", "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-workflowxjlnt/series-workflowxjlnt-build-action-2655044699/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-29 08:37:45 +0000 UTC FinishedAt: 2026-08-29 08:53:27 +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:*6d9888f1-3e2d-4627-a1c9-40bd252e236a,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-workflowxjlnt/series-workflowxjlnt-convert-artifact-1511877237/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": "bc005e9c-8b86-44e1-bcd9-dd94b65355ee", "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-workflowxjlnt/series-workflowxjlnt-build-action-2655044699/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-29 08:53:37 +0000 UTC FinishedAt: 2026-08-29 08:53:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-29 08:53:37 +0000 UTC FinishedAt: 2026-08-29 08:53:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-29 08:53:37 +0000 UTC FinishedAt: 2026-08-29 08:53:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-29 08:53:37 +0000 UTC FinishedAt: 2026-08-29 08:53:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxjlnt/series-workflowxjlnt-convert-artifact-2701864144/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-29 08:53:47 +0000 UTC FinishedAt: 2026-08-29 08:55:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-29 08:53:47 +0000 UTC FinishedAt: 2026-08-29 08:55:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bc005e9c-8b86-44e1-bcd9-dd94b65355ee,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-workflowxjlnt/series-workflowxjlnt-build-action-2655044699/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-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-29 08:55:32 +0000 UTC FinishedAt: 2026-08-29 08:55:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-29 08:55:32 +0000 UTC FinishedAt: 2026-08-29 08:55:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-29 08:55:32 +0000 UTC FinishedAt: 2026-08-29 09:11:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-29 08:55:32 +0000 UTC FinishedAt: 2026-08-29 09:11:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*6d9888f1-3e2d-4627-a1c9-40bd252e236a,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-workflowxjlnt/series-workflowxjlnt-convert-artifact-2701864144/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": "a9e9f109-42ed-4238-b62f-d8fc94e064fc", "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-workflowxjlnt/series-workflowxjlnt-build-action-3903842892/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-29 08:55:32 +0000 UTC FinishedAt: 2026-08-29 09:11:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*6d9888f1-3e2d-4627-a1c9-40bd252e236a,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-workflowxjlnt/series-workflowxjlnt-convert-artifact-2701864144/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": "a9e9f109-42ed-4238-b62f-d8fc94e064fc", "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-workflowxjlnt/series-workflowxjlnt-build-action-3903842892/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-29 09:11:58 +0000 UTC FinishedAt: 2026-08-29 09:11:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-29 09:11:58 +0000 UTC FinishedAt: 2026-08-29 09:11:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-29 09:11:58 +0000 UTC FinishedAt: 2026-08-29 09:13:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-29 09:11:58 +0000 UTC FinishedAt: 2026-08-29 09:13:34 +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:*a9e9f109-42ed-4238-b62f-d8fc94e064fc,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-workflowxjlnt/series-workflowxjlnt-build-action-3903842892/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-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-29 09:13:44 +0000 UTC FinishedAt: 2026-08-29 12:15:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-29 09:13:44 +0000 UTC FinishedAt: 2026-08-29 12:15:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"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:*bc005e9c-8b86-44e1-bcd9-dd94b65355ee,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a9e9f109-42ed-4238-b62f-d8fc94e064fc,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-workflowxjlnt/series-workflowxjlnt-build-action-2655044699/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-workflowxjlnt/series-workflowxjlnt-build-action-3903842892/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-29 09:13:44 +0000 UTC FinishedAt: 2026-08-29 09:13:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-29 09:13:44 +0000 UTC FinishedAt: 2026-08-29 09:13:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"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-workflowxjlnt/series-workflowxjlnt-convert-artifact-3270891977/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-29 09:13:44 +0000 UTC FinishedAt: 2026-08-29 09:13:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-29 09:13:44 +0000 UTC FinishedAt: 2026-08-29 09:13:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-29 09:13:44 +0000 UTC FinishedAt: 2026-08-29 09:13:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-29 09:13:54 +0000 UTC FinishedAt: 2026-08-29 12:15:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjlnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["drr_change_class","ets_qdisc_change","fq_change","fq_init","fq_pie_change","hhf_change","hhf_init","sfq_change","pie_drop_early"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_DRR","NET_SCH_DUALPI2","NET_SCH_ETS","NET_SCH_FQ","NET_SCH_FQ_PIE","NET_SCH_HHF","NET_SCH_PIE","NET_SCH_SFQ"],"series_id":"8a9c5930-6499-439f-b86b-ee5f428b958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-29 09:13:54 +0000 UTC FinishedAt: 2026-08-29 12:14:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bc005e9c-8b86-44e1-bcd9-dd94b65355ee,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a9e9f109-42ed-4238-b62f-d8fc94e064fc,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-workflowxjlnt/series-workflowxjlnt-build-action-2655044699/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-workflowxjlnt/series-workflowxjlnt-build-action-3903842892/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-workflowxjlnt/series-workflowxjlnt-convert-artifact-3270891977/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,}