Name: series-workflowdss6h Phase: Succeeded StartedAt: 2026-09-09 08:21:10 +0000 UTC FinishedAt: 2026-09-09 12:40:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[0] Phase: Succeeded StartedAt: 2026-09-09 08:21:10 +0000 UTC FinishedAt: 2026-09-09 08:48:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[0].run-triage Phase: Succeeded StartedAt: 2026-09-09 08:21:10 +0000 UTC FinishedAt: 2026-09-09 08:48:42 +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": "0685630fdccb62dcb0e3f44525a40578da5f6dc8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "0685630fdccb62dcb0e3f44525a40578da5f6dc8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tcp_rcv_established" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfcmN2X2VzdGFibGlzaGVkJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRDUCBoZWFkZXIgcHJlZGljdGlvbiBjb25kaXRpb24gaW4gYHRjcF9yY3ZfZXN0YWJsaXNoZWQoKWAgYnkgcmVwbGFjaW5nIGAhYWZ0ZXIoVENQX1NLQl9DQihza2IpLVx1MDAzZWFja19zZXEsIHRwLVx1MDAzZXNuZF9ueHQpYCB3aXRoIGBiZXR3ZWVuKFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VhY2tfc2VxLCB0cC1cdTAwM2VzbmRfdW5hLCB0cC1cdTAwM2VzbmRfbnh0KWAgdG8gZW5zdXJlIHBhY2tldHMgY2FycnlpbmcgZXhjZXNzaXZlbHkgb2xkIEFDS3MgYnlwYXNzIHRoZSBmYXN0IHBhdGggYW5kIGFyZSBoYW5kbGVkIGJ5IHRoZSBzbG93IHBhdGggYWNjb3JkaW5nIHRvIFJGQyA1OTYxLlxuXG5UaGlzIGNoYW5nZSB0b3VjaGVzIG9ubHkgc3RhbmRhcmQgVENQIHNlcXVlbmNlIG51bWJlciBjb21wYXJpc29uIGxvZ2ljIHVzaW5nIHdlbGwtZGVmaW5lZCwgaW5pdGlhbGl6ZWQgZmllbGRzIG9uIGBzdHJ1Y3Qgc29ja2AgYW5kIGBza19idWZmYC4gVGhlcmUgYXJlIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gZGF0YSB0cmFuc2ZlcnMgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBpbnB1dCBwcm9jZXNzaW5nIGluIHRjcF9yY3ZfZXN0YWJsaXNoZWQoKSBieSB0aWdodGVuaW5nIHRoZSBmYXN0LXBhdGggaGVhZGVyIHByZWRpY3Rpb24gY2hlY2sgdG8gZW5zdXJlIGluY29taW5nIEFDSyBzZXF1ZW5jZXMgZmFsbCBiZXR3ZWVuIHNuZF91bmEgYW5kIHNuZF9ueHQsIHByZXZlbnRpbmcgb3V0LW9mLW9yZGVyL2V4Y2Vzc2l2ZWx5IG9sZCBBQ0tzIGZyb20gaW1wcm9wZXJseSB0YWtpbmcgdGhlIGZhc3QgcGF0aC4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBUQ1AgbmV0d29ya2luZyBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTc0NDFmMzQ4YjY1NGJlNTVhMzczZDFkYzM3ZGUyZWFhMzBkYmVmNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMDg6NDY6MzYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lucHV0LmMgYi9uZXQvaXB2NC90Y3BfaW5wdXQuY1xuaW5kZXggZGFmZjkzZDUxMzQyOC4uNTdmZWM1OGE0ZjE1MyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF9pbnB1dC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfaW5wdXQuY1xuQEAgLTY1MzksNyAmIzQzOzY1MzksNyBAQCB2b2lkIHRjcF9yY3ZfZXN0YWJsaXNoZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFxuIFx0aWYgKCh0Y3BfZmxhZ193b3JkKHRoKSBcdTAwMjYgVENQX0hQX0JJVFMpID09IHRwLVx1MDAzZXByZWRfZmxhZ3MgXHUwMDI2XHUwMDI2XG4gXHQgICAgVENQX1NLQl9DQihza2IpLVx1MDAzZXNlcSA9PSB0cC1cdTAwM2VyY3Zfbnh0IFx1MDAyNlx1MDAyNlxuLVx0ICAgICFhZnRlcihUQ1BfU0tCX0NCKHNrYiktXHUwMDNlYWNrX3NlcSwgdHAtXHUwMDNlc25kX254dCkpIHtcbiYjNDM7XHQgICAgYmV0d2VlbihUQ1BfU0tCX0NCKHNrYiktXHUwMDNlYWNrX3NlcSwgdHAtXHUwMDNlc25kX3VuYSwgdHAtXHUwMDNlc25kX254dCkpIHtcbiBcdFx0aW50IHRjcF9oZWFkZXJfbGVuID0gdHAtXHUwMDNldGNwX2hlYWRlcl9sZW47XG4gXHRcdHMzMiBkZWx0YSA9IDA7XG4gXHRcdGludCBmbGFnID0gMDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcmVqZWN0LW9sZC1hY2sucGt0IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3BhY2tldGRyaWxsL3RjcF9yZmM1OTYxX3JlamVjdC1vbGQtYWNrLnBrdFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjhlNzIyOTEyNzY3MGZcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yZWplY3Qtb2xkLWFjay5wa3RcbkBAIC0wLDAgJiM0MzsxLDIzIEBAXG4mIzQzOy8vIFRlc3QgcmVqZWN0aW9uIG9mIGRhdGEgc2VnbWVudHMgY2FycnlpbmcgZXhjZXNzaXZlbHkgb2xkIEFDS3NcbiYjNDM7XG4mIzQzOzAgc29ja2V0KC4uLiwgU09DS19TVFJFQU0sIElQUFJPVE9fVENQKSA9IDNcbiYjNDM7JiM0MzswIHNldHNvY2tvcHQoMywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCBbMV0sIDQpID0gMFxuJiM0MzsmIzQzOzAgYmluZCgzLCAuLi4sIC4uLikgPSAwXG4mIzQzOyYjNDM7MCBsaXN0ZW4oMywgMTAyNCkgPSAwXG4mIzQzO1xuJiM0MzsvLyAtLS0tLS0tLS0tLS0tLS0tIEhhbmRzaGFrZSAtLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG4mIzQzOyYjNDM7MCBcdTAwM2MgUyAwOjAoMCkgd2luIDY1NTM1XG4mIzQzOyYjNDM7MCBcdTAwM2UgUy4gMDowKDApIGFjayAxIFx1MDAzYy4uLlx1MDAzZVxuJiM0MzsmIzQzOzAgXHUwMDNjIC4gMToxKDApIGFjayAxIHdpbiA2NTUzNVxuJiM0MzsmIzQzOzAgYWNjZXB0KDMsIC4uLiwgLi4uKSA9IDRcbiYjNDM7XG4mIzQzOy8vIFBvcHVsYXRlIHJlY2VpdmUgbWVtb3J5IHNvIHRoZSBmb2xsb3dpbmcgc2VnbWVudCBjYW4gdXNlXG4mIzQzOy8vIGhlYWRlciBwcmVkaWN0aW9uLlxuJiM0MzsmIzQzOzAgXHUwMDNjIFAuIDE6NTAxKDUwMCkgYWNrIDEgd2luIDY1NTM1XG4mIzQzOyYjNDM7MCBcdTAwM2UgLiAxOjEoMCkgYWNrIDUwMVxuJiM0MztcbiYjNDM7Ly8gU2VuZCBhbiBpbi1zZXF1ZW5jZSBkYXRhIHNlZ21lbnQgY2FycnlpbmcgYW4gZXhjZXNzaXZlbHkgb2xkIEFDSy5cbiYjNDM7JiM0MzswIFx1MDAzYyBQLiA1MDE6MTUwMSgxMDAwKSBhY2sgMjc5NDk2NzM5NyB3aW4gNjU1MzVcbiYjNDM7XG4mIzQzOy8vIENoYWxsZW5nZSBBQ0s7IFJDVi5OWFQgbXVzdCByZW1haW4gNTAxLlxuJiM0MzsmIzQzOzAgXHUwMDNlIC4gMToxKDApIGFjayA1MDFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwODo0NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX3Jjdl9lc3RhYmxpc2hlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBUQ1AgaW5wdXQgcHJvY2Vzc2luZyBpbiB0Y3BfcmN2X2VzdGFibGlzaGVkKCkgYnkgdGlnaHRlbmluZyB0aGUgZmFzdC1wYXRoIGhlYWRlciBwcmVkaWN0aW9uIGNoZWNrIHRvIGVuc3VyZSBpbmNvbWluZyBBQ0sgc2VxdWVuY2VzIGZhbGwgYmV0d2VlbiBzbmRfdW5hIGFuZCBzbmRfbnh0LCBwcmV2ZW50aW5nIG91dC1vZi1vcmRlci9leGNlc3NpdmVseSBvbGQgQUNLcyBmcm9tIGltcHJvcGVybHkgdGFraW5nIHRoZSBmYXN0IHBhdGguIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgVENQIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDk3NDQxZjM0OGI2NTRiZTU1YTM3M2QxZGMzN2RlMmVhYTMwZGJlZjQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCA5IDA4OjQ2OjM2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lucHV0LmMgYi9uZXQvaXB2NC90Y3BfaW5wdXQuYwppbmRleCBkYWZmOTNkNTEzNDI4Li41N2ZlYzU4YTRmMTUzIDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfaW5wdXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfaW5wdXQuYwpAQCAtNjUzOSw3ICYjNDM7NjUzOSw3IEBAIHZvaWQgdGNwX3Jjdl9lc3RhYmxpc2hlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpCiAKIAlpZiAoKHRjcF9mbGFnX3dvcmQodGgpICZhbXA7IFRDUF9IUF9CSVRTKSA9PSB0cC0mZ3Q7cHJlZF9mbGFncyAmYW1wOyZhbXA7CiAJICAgIFRDUF9TS0JfQ0Ioc2tiKS0mZ3Q7c2VxID09IHRwLSZndDtyY3Zfbnh0ICZhbXA7JmFtcDsKLQkgICAgIWFmdGVyKFRDUF9TS0JfQ0Ioc2tiKS0mZ3Q7YWNrX3NlcSwgdHAtJmd0O3NuZF9ueHQpKSB7CiYjNDM7CSAgICBiZXR3ZWVuKFRDUF9TS0JfQ0Ioc2tiKS0mZ3Q7YWNrX3NlcSwgdHAtJmd0O3NuZF91bmEsIHRwLSZndDtzbmRfbnh0KSkgewogCQlpbnQgdGNwX2hlYWRlcl9sZW4gPSB0cC0mZ3Q7dGNwX2hlYWRlcl9sZW47CiAJCXMzMiBkZWx0YSA9IDA7CiAJCWludCBmbGFnID0gMDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yZWplY3Qtb2xkLWFjay5wa3QgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcmVqZWN0LW9sZC1hY2sucGt0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjhlNzIyOTEyNzY3MGYKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcmVqZWN0LW9sZC1hY2sucGt0CkBAIC0wLDAgJiM0MzsxLDIzIEBACiYjNDM7Ly8gVGVzdCByZWplY3Rpb24gb2YgZGF0YSBzZWdtZW50cyBjYXJyeWluZyBleGNlc3NpdmVseSBvbGQgQUNLcwomIzQzOwomIzQzOzAgc29ja2V0KC4uLiwgU09DS19TVFJFQU0sIElQUFJPVE9fVENQKSA9IDMKJiM0MzsmIzQzOzAgc2V0c29ja29wdCgzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIFsxXSwgNCkgPSAwCiYjNDM7JiM0MzswIGJpbmQoMywgLi4uLCAuLi4pID0gMAomIzQzOyYjNDM7MCBsaXN0ZW4oMywgMTAyNCkgPSAwCiYjNDM7CiYjNDM7Ly8gLS0tLS0tLS0tLS0tLS0tLSBIYW5kc2hha2UgLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwomIzQzOyYjNDM7MCAmbHQ7IFMgMDowKDApIHdpbiA2NTUzNQomIzQzOyYjNDM7MCAmZ3Q7IFMuIDA6MCgwKSBhY2sgMSAmbHQ7Li4uJmd0OwomIzQzOyYjNDM7MCAmbHQ7IC4gMToxKDApIGFjayAxIHdpbiA2NTUzNQomIzQzOyYjNDM7MCBhY2NlcHQoMywgLi4uLCAuLi4pID0gNAomIzQzOwomIzQzOy8vIFBvcHVsYXRlIHJlY2VpdmUgbWVtb3J5IHNvIHRoZSBmb2xsb3dpbmcgc2VnbWVudCBjYW4gdXNlCiYjNDM7Ly8gaGVhZGVyIHByZWRpY3Rpb24uCiYjNDM7JiM0MzswICZsdDsgUC4gMTo1MDEoNTAwKSBhY2sgMSB3aW4gNjU1MzUKJiM0MzsmIzQzOzAgJmd0OyAuIDE6MSgwKSBhY2sgNTAxCiYjNDM7CiYjNDM7Ly8gU2VuZCBhbiBpbi1zZXF1ZW5jZSBkYXRhIHNlZ21lbnQgY2FycnlpbmcgYW4gZXhjZXNzaXZlbHkgb2xkIEFDSy4KJiM0MzsmIzQzOzAgJmx0OyBQLiA1MDE6MTUwMSgxMDAwKSBhY2sgMjc5NDk2NzM5NyB3aW4gNjU1MzUKJiM0MzsKJiM0MzsvLyBDaGFsbGVuZ2UgQUNLOyBSQ1YuTlhUIG11c3QgcmVtYWluIDUwMS4KJiM0MzsmIzQzOzAgJmd0OyAuIDE6MSgwKSBhY2sgNTAxCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MTYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6CgoqKkRpdmluZyBpbnRvIGB0Y3BfaW5wdXQuY2AgZm9yIENvbnRleHQqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IG1ha2luZyBhIGNoYW5nZSB3aXRoaW4gdGhlIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCBmdW5jdGlvbiwgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIHRhcmdldCBpcyBpbiBgbmV0L2lwdjQvdGNwX2lucHV0LmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgbG9naWMgdG8gcHJvcGVybHkgZXZhbHVhdGUgdGhlIGltcGFjdCwgc28gSSYjMzk7bSBnb2luZyB0byBqdW1wIGludG8gdGhhdCBmaWxlLiBJJiMzOTttIHRoaW5raW5nIGFyb3VuZCBsaW5lIDY1Mzkgc2hvdWxkIGdpdmUgbWUgdGhlIHJlbGV2YW50IGNvbnRleHQgZm9yIHRoaXMgcGF0Y2guIExldCBtZSBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcganVzdCBiZWZvcmUgYW5kIGFmdGVyIHRoYXQgbGluZSB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSBvZiB3aGF0IHRoaXMgY2hhbmdlIGlzIGludGVuZGVkIHRvIGFkZHJlc3MuIEdvdCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcnBsYXkgaGVyZSBiZWZvcmUgZm9ybWluZyBhbiBvcGluaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lucHV0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2NTI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzY1MjU6XHRcdCAqXHRXZSBkbyBjaGVja3N1bSBhbmQgY29weSBhbHNvIGJ1dCBmcm9tIGRldmljZSB0byBrZXJuZWwuXG42NTI2Olx0XHQgKi9cbjY1Mjc6XHRcbjY1Mjg6XHRcdHRwLVx1MDAzZXJ4X29wdC5zYXdfdHN0YW1wID0gMDtcbjY1Mjk6XHRcdHRwLVx1MDAzZXJ4X29wdC5hY2NlY24gPSAwO1xuNjUzMDpcdFxuNjUzMTpcdFx0LypcdHByZWRfZmxhZ3MgaXMgMHhTPzEwIFx1MDAzY1x1MDAzYyAxNiAmIzQzOyBzbmRfd25kXG42NTMyOlx0XHQgKlx0aWYgaGVhZGVyX3ByZWRpY3Rpb24gaXMgdG8gYmUgbWFkZVxuNjUzMzpcdFx0ICpcdCYjMzk7UyYjMzk7IHdpbGwgYWx3YXlzIGJlIHRwLVx1MDAzZXRjcF9oZWFkZXJfbGVuIFx1MDAzZVx1MDAzZSAyXG42NTM0Olx0XHQgKlx0JiMzOTs/JiMzOTsgd2lsbCBiZSAwIGZvciB0aGUgZmFzdCBwYXRoLCBvdGhlcndpc2UgcHJlZF9mbGFncyBpcyAwIHRvXG42NTM1Olx0XHQgKiAgdHVybiBpdCBvZmZcdCh3aGVuIHRoZXJlIGFyZSBob2xlcyBpbiB0aGUgcmVjZWl2ZVxuNjUzNjpcdFx0ICpcdCBzcGFjZSBmb3IgaW5zdGFuY2UpXG42NTM3Olx0XHQgKlx0UFNIIGZsYWcgaXMgaWdub3JlZC5cbjY1Mzg6XHRcdCAqL1xuNjUzOTpcdFxuNjU0MDpcdFx0aWYgKCh0Y3BfZmxhZ193b3JkKHRoKSBcdTAwMjYgVENQX0hQX0JJVFMpID09IHRwLVx1MDAzZXByZWRfZmxhZ3MgXHUwMDI2XHUwMDI2XG42NTQxOlx0XHQgICAgVENQX1NLQl9DQihza2IpLVx1MDAzZXNlcSA9PSB0cC1cdTAwM2VyY3Zfbnh0IFx1MDAyNlx1MDAyNlxuNjU0MjpcdFx0ICAgIGJldHdlZW4oVENQX1NLQl9DQihza2IpLVx1MDAzZWFja19zZXEsIHRwLVx1MDAzZXNuZF91bmEsIHRwLVx1MDAzZXNuZF9ueHQpKSB7XG42NTQzOlx0XHRcdGludCB0Y3BfaGVhZGVyX2xlbiA9IHRwLVx1MDAzZXRjcF9oZWFkZXJfbGVuO1xuNjU0NDpcdFx0XHRzMzIgZGVsdGEgPSAwO1xuNjU0NTpcdFx0XHRpbnQgZmxhZyA9IDA7XG42NTQ2Olx0XG42NTQ3Olx0XHRcdC8qIFRpbWVzdGFtcCBoZWFkZXIgcHJlZGljdGlvbjogdGNwX2hlYWRlcl9sZW5cbjY1NDg6XHRcdFx0ICogaXMgYXV0b21hdGljYWxseSBlcXVhbCB0byB0aC1cdTAwM2Vkb2ZmKjQgZHVlIHRvIHByZWRfZmxhZ3NcbjY1NDk6XHRcdFx0ICogbWF0Y2guXG42NTUwOlx0XHRcdCAqL1xuNjU1MTpcdFxuNjU1MjpcdFx0XHQvKiBDaGVjayB0aW1lc3RhbXAgKi9cbjY1NTM6XHRcdFx0aWYgKHRjcF9oZWFkZXJfbGVuID09IHNpemVvZihzdHJ1Y3QgdGNwaGRyKSAmIzQzOyBUQ1BPTEVOX1RTVEFNUF9BTElHTkVEKSB7XG42NTU0Olx0XHRcdFx0LyogTm8/IFNsb3cgcGF0aCEgKi9cbjY1NTU6XHRcdFx0XHRpZiAoIXRjcF9wYXJzZV9hbGlnbmVkX3RpbWVzdGFtcCh0cCwgdGgpKVxuNjU1NjpcdFx0XHRcdFx0Z290byBzbG93X3BhdGg7XG42NTU3Olx0XG42NTU4Olx0XHRcdFx0ZGVsdGEgPSB0cC1cdTAwM2VyeF9vcHQucmN2X3RzdmFsIC1cbjY1NTk6XHRcdFx0XHRcdHRwLVx1MDAzZXJ4X29wdC50c19yZWNlbnQ7XG42NTYwOlx0XHRcdFx0LyogSWYgUEFXUyBmYWlsZWQsIGNoZWNrIGl0IG1vcmUgY2FyZWZ1bGx5IGluIHNsb3cgcGF0aCAqL1xuNjU2MTpcdFx0XHRcdGlmIChkZWx0YSBcdTAwM2MgMClcbjY1NjI6XHRcdFx0XHRcdGdvdG8gc2xvd19wYXRoO1xuNjU2MzpcdFxuNjU2NDpcdFx0XHRcdC8qIERPIE5PVCB1cGRhdGUgdHNfcmVjZW50IGhlcmUsIGlmIGNoZWNrc3VtIGZhaWxzXG42NTY1Olx0XHRcdFx0ICogYW5kIHRpbWVzdGFtcCB3YXMgY29ycnVwdGVkIHBhcnQsIGl0IHdpbGwgcmVzdWx0XG42NTY2Olx0XHRcdFx0ICogaW4gYSBodW5nIGNvbm5lY3Rpb24gc2luY2Ugd2Ugd2lsbCBkcm9wIGFsbFxuNjU2NzpcdFx0XHRcdCAqIGZ1dHVyZSBwYWNrZXRzIGR1ZSB0byB0aGUgUEFXUyB0ZXN0LlxuNjU2ODpcdFx0XHRcdCAqL1xuNjU2OTpcdFx0XHR9XG42NTcwOlx0XG42NTcxOlx0XHRcdGlmIChsZW4gXHUwMDNjPSB0Y3BfaGVhZGVyX2xlbikge1xuNjU3MjpcdFx0XHRcdC8qIEJ1bGsgZGF0YSB0cmFuc2Zlcjogc2VuZGVyICovXG42NTczOlx0XHRcdFx0aWYgKGxlbiA9PSB0Y3BfaGVhZGVyX2xlbikge1xuNjU3NDpcdFx0XHRcdFx0LyogUHJlZGljdGVkIHBhY2tldCBpcyBpbiB3aW5kb3cgYnkgZGVmaW5pdGlvbi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwODo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDkwCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlY2VudCBUQ1AgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhhdCBwYXRjaCB0byBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgbG9va3MgaW50ZXJlc3RpbmcuIFNwZWNpZmljYWxseSwgdGhhdCBmYXN0LXBhdGggY2hlY2suLi4gYmVmb3JlIGl0IHdhcyBgIWFmdGVyKFRDUF9TS0JfQ0Ioc2tiKS0mZ3Q7YWNrX3NlcSwgdHAtJmd0O3NuZF9ueHQpYCwgYW5kIG5vdyBpdCYjMzk7cyBgYmV0d2VlbihUQ1BfU0tCX0NCKHNrYiktJmd0O2Fja19zZXEsIHRwLSZndDtzbmRfdW5hLCB0cC0mZ3Q7c25kX254dClgLiBFc3NlbnRpYWxseSwgdGhleSYjMzk7cmUgdGlnaHRlbmluZyB1cCB0aGUgY3JpdGVyaWEgZm9yIHRoZSBmYXN0IHBhdGgsIG1ha2luZyBzdXJlIHdlIGRvbiYjMzk7dCBwcmVtYXR1cmVseSBhY2NlcHQgYW4gb2xkIEFDSy4gTWFrZXMgc2Vuc2UuIElmIGBhY2tfc2VxYCBpcyAqbGVzcyogdGhhbiBgc25kX3VuYWAsIGl0JiMzOTtzIHN0YWxlIGFuZCBzaG91bGRuJiMzOTt0IGJlIHNob3J0Y3V0dGluZyB0aHJvdWdoIHRoZSBwcmVkaWN0aW9uIHBhdGguIFRoYXQgYnlwYXNzZXMgdGhlIHByb3BlciBSRkMgNTk2MSB2YWxpZGF0aW9uLCBhbmQgd2UgY291bGQgZW5kIHVwIHdpdGggYSBjaGFsbGVuZ2UgQUNLIGJlaW5nIHNlbnQgaW5jb3JyZWN0bHkuCgpOb3csIGlzIHRoaXMgZXZlbiAqcmVhY2hhYmxlKiBjb2RlPyBBYnNvbHV0ZWx5LiBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgaXMgdGhlIHdvcmtob3JzZSBmb3IgZXN0YWJsaXNoZWQgVENQIGNvbm5lY3Rpb25zIGluIHRoZSBMaW51eCBrZXJuZWwgKGBuZXQvaXB2NC90Y3BfaW5wdXQuY2ApLiBJdCYjMzk7cyB0aGUgY2VudHJhbCBwb2ludCBmb3IgaGFuZGxpbmcgaW5jb21pbmcgZGF0YSBvbiBlc3RhYmxpc2hlZCBzb2NrZXRzIOKAkyB5b3VyIHN0YW5kYXJkIGxvb3BiYWNrLCB0dW4vdGFwLCBvciBuZXRkZXYgY29tbXVuaWNhdGlvbiBhbGwgZ28gdGhyb3VnaCBoZXJlLiBHaXZlbiBpdHMgY29yZSBuZXR3b3JraW5nIG5hdHVyZSwgdGhpcyBpcyAqZGVmaW5pdGVseSogYW4gYXJlYSB3b3J0aCBmdXp6aW5nLCBhbmQgaXQgbWFrZXMgaXQgYSBnb29kIHRhcmdldCBmb3IgYW5hbHlzaXMuCgpJIHNob3VsZCB2ZXJpZnkgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGluIHBsYWNlIGZvciB0aGUgYG5ldC9pcHY0YCBzdGFjaywganVzdCB0byBiZSBzdXJlLiBJJiMzOTttIHByZXR0eSBzdXJlIGBDT05GSUdfSU5FVGAgaXMgdGhlIHN0YW5kYXJkIGZvciBJUHY0L1RDUCwgYnV0IGxldCYjMzk7cyBjaGVjayB0aGUgS2NvbmZpZyBmb3IgYG5ldC9pcHY0L3RjcF9pbnB1dC5jYCB0byBiZSBjb21wbGV0ZWx5IHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9pbnB1dFxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcbi0tXG5uZXQvaXB2NC9NYWtlZmlsZS05LVx0ICAgICBpbmV0X3RpbWV3YWl0X3NvY2subyBpbmV0X2Nvbm5lY3Rpb25fc29jay5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxMDpcdCAgICAgdGNwLm8gdGNwX2lucHV0Lm8gdGNwX291dHB1dC5vIHRjcF90aW1lci5vIHRjcF9pcHY0Lm8gXFxcbm5ldC9pcHY0L01ha2VmaWxlLTExLVx0ICAgICB0Y3BfbWluaXNvY2tzLm8gdGNwX2NvbmcubyB0Y3BfbWV0cmljcy5vIHRjcF9mYXN0b3Blbi5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDg6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMyNAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgcmVsYXRlcyB0byBjaGVja2luZyB0aG9zZSBjb25maWd1cmF0aW9uIGZpbGVzOgoKKipJbnZlc3RpZ2F0aW5nIElQdjQgQnVpbGQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgSVB2NCBpcyBidWlsdCBpbiB0aGlzIGtlcm5lbC4gVGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAgaXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQg4oCTIEkgbmVlZCB0byBzZWUgaG93IHRoZSBvYmplY3QgZmlsZXMgYXJlIGJyb3VnaHQgaW4uIFNwZWNpZmljYWxseSwgSSYjMzk7bSBpbnRlcmVzdGVkIGluIHRoZSBgb2JqLXlgIGRpcmVjdGl2ZXM7IHRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZC4gSSYjMzk7bGwgbmVlZCB0byBjb3JyZWxhdGUgdGhlc2Ugd2l0aCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBodW5jaCBpcyB0aGF0IGBDT05GSUdfSU5FVGAgaXMgdGhlIG1haW4gZW5hYmxlciBmb3IgdGhlIGVudGlyZSBJUHY0IHN0YWNrLgoKQnV0IHdoZXJlIGRvZXMgYENPTkZJR19JTkVUYCBnZXQgaXRzIHZhbHVlIGZyb20/IE5vdyBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMsIGVpdGhlciB0aGUgdG9wLWxldmVsIGBuZXQvS2NvbmZpZ2Agd2hpY2ggaXMgbW9yZSBsaWtlbHksIG9yIHBlcmhhcHMgdGhlIElQdjQgc3BlY2lmaWMgb25lIGF0IGBuZXQvaXB2NC9LY29uZmlnYC4gVGhvc2UgYXJlIHRoZSBmaWxlcyB0aGF0IGRlZmluZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyB3aWxsIGdpdmUgbWUgdGhlIGNsZWFyZXN0IHBpY3R1cmUgb2Ygd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkIHRvIGluY2x1ZGUgdGhlc2UgSVB2NCBjb21wb25lbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJTkVUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZz05OT1jb25maWcgTkVUX0hBTkRTSEFLRV9LVU5JVF9URVNUXG4tLVxubmV0L0tjb25maWctMTEzLVxubmV0L0tjb25maWc6MTE0OmNvbmZpZyBJTkVUXG5uZXQvS2NvbmZpZy0xMTUtXHRib29sIFwmIzM0O1RDUC9JUCBuZXR3b3JraW5nXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zMzA9Y29uZmlnIE5FVF9GT1VfSVBfVFVOTkVMU1xuLS1cbm5ldC9pcHY0L0tjb25maWctMzM4LVxubmV0L2lwdjQvS2NvbmZpZzozMzk6Y29uZmlnIElORVRfQUhcbm5ldC9pcHY0L0tjb25maWctMzQwLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEFIIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zNTMtXG5uZXQvaXB2NC9LY29uZmlnOjM1NDpjb25maWcgSU5FVF9FU1Bcbm5ldC9pcHY0L0tjb25maWctMzU1LVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEVTUCB0cmFuc2Zvcm1hdGlvblwmIzM0O1xuLS1cbm5ldC9pcHY0L0tjb25maWctMzY4LVxubmV0L2lwdjQvS2NvbmZpZzozNjk6Y29uZmlnIElORVRfRVNQX09GRkxPQURcbm5ldC9pcHY0L0tjb25maWctMzcwLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEVTUCB0cmFuc2Zvcm1hdGlvbiBvZmZsb2FkXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zODEtXG5uZXQvaXB2NC9LY29uZmlnOjM4Mjpjb25maWcgSU5FVF9FU1BJTlRDUFxubmV0L2lwdjQvS2NvbmZpZy0zODMtXHRib29sIFwmIzM0O0lQOiBFU1AgaW4gVENQIGVuY2Fwc3VsYXRpb24gKFJGQyA4MjI5KVwmIzM0O1xuLS1cbm5ldC9pcHY0L0tjb25maWctMzkzLVxubmV0L2lwdjQvS2NvbmZpZzozOTQ6Y29uZmlnIElORVRfSVBDT01QXG5uZXQvaXB2NC9LY29uZmlnLTM5NS1cdHRyaXN0YXRlIFwmIzM0O0lQOiBJUENvbXAgdHJhbnNmb3JtYXRpb25cJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTQwMy1cbm5ldC9pcHY0L0tjb25maWc6NDA0OmNvbmZpZyBJTkVUX1RBQkxFX1BFUlRVUkJfT1JERVJcbm5ldC9pcHY0L0tjb25maWctNDA1LVx0aW50IFwmIzM0O0lORVQ6IFNvdXJjZSBwb3J0IHBlcnR1cmJhdGlvbiB0YWJsZSBzaXplIChhcyBwb3dlciBvZiAyKVwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTQxMy1cbm5ldC9pcHY0L0tjb25maWc6NDE0OmNvbmZpZyBJTkVUX1hGUk1fVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnLTQxNS1cdHRyaXN0YXRlXG4tLVxubmV0L2lwdjQvS2NvbmZpZy00MTgtXG5uZXQvaXB2NC9LY29uZmlnOjQxOTpjb25maWcgSU5FVF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWctNDIwLVx0dHJpc3RhdGVcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTQyMi1cbm5ldC9pcHY0L0tjb25maWc6NDIzOmNvbmZpZyBJTkVUX0RJQUdcbm5ldC9pcHY0L0tjb25maWctNDI0LVx0dHJpc3RhdGUgXCYjMzQ7SU5FVDogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy00MzQtXG5uZXQvaXB2NC9LY29uZmlnOjQzNTpjb25maWcgSU5FVF9UQ1BfRElBR1xubmV0L2lwdjQvS2NvbmZpZy00MzYtXHRkZXBlbmRzIG9uIElORVRfRElBR1xuLS1cbm5ldC9pcHY0L0tjb25maWctNDM4LVxubmV0L2lwdjQvS2NvbmZpZzo0Mzk6Y29uZmlnIElORVRfVURQX0RJQUdcbm5ldC9pcHY0L0tjb25maWctNDQwLVx0dHJpc3RhdGUgXCYjMzQ7VURQOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTQ0Ni1cbm5ldC9pcHY0L0tjb25maWc6NDQ3OmNvbmZpZyBJTkVUX1JBV19ESUFHXG5uZXQvaXB2NC9LY29uZmlnLTQ0OC1cdHRyaXN0YXRlIFwmIzM0O1JBVzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy00NTQtXG5uZXQvaXB2NC9LY29uZmlnOjQ1NTpjb25maWcgSU5FVF9ESUFHX0RFU1RST1lcbm5ldC9pcHY0L0tjb25maWctNDU2LVx0Ym9vbCBcJiMzNDtJTkVUOiBhbGxvdyBwcml2aWxlZ2VkIHByb2Nlc3MgdG8gYWRtaW5pc3RyYXRpdmVseSBjbG9zZSBzb2NrZXRzXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0zOT1jb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxuLS1cbm5ldC9pcHY2L0tjb25maWctNDYtXG5uZXQvaXB2Ni9LY29uZmlnOjQ3OmNvbmZpZyBJTkVUNl9BSFxubmV0L2lwdjYvS2NvbmZpZy00OC1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEFIIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy02MS1cbm5ldC9pcHY2L0tjb25maWc6NjI6Y29uZmlnIElORVQ2X0VTUFxubmV0L2lwdjYvS2NvbmZpZy02My1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEVTUCB0cmFuc2Zvcm1hdGlvblwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctNzYtXG5uZXQvaXB2Ni9LY29uZmlnOjc3OmNvbmZpZyBJTkVUNl9FU1BfT0ZGTE9BRFxubmV0L2lwdjYvS2NvbmZpZy03OC1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEVTUCB0cmFuc2Zvcm1hdGlvbiBvZmZsb2FkXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy04OS1cbm5ldC9pcHY2L0tjb25maWc6OTA6Y29uZmlnIElORVQ2X0VTUElOVENQXG5uZXQvaXB2Ni9LY29uZmlnLTkxLVx0Ym9vbCBcJiMzNDtJUHY2OiBFU1AgaW4gVENQIGVuY2Fwc3VsYXRpb24gKFJGQyA4MjI5KVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTAxLVxubmV0L2lwdjYvS2NvbmZpZzoxMDI6Y29uZmlnIElORVQ2X0lQQ09NUFxubmV0L2lwdjYvS2NvbmZpZy0xMDMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBJUENvbXAgdHJhbnNmb3JtYXRpb25cJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTEyMD1jb25maWcgSVBWNl9JTEFcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE0MC1cbm5ldC9pcHY2L0tjb25maWc6MTQxOmNvbmZpZyBJTkVUNl9YRlJNX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0xNDItXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY2L0tjb25maWctMTQ1LVxubmV0L2lwdjYvS2NvbmZpZzoxNDY6Y29uZmlnIElORVQ2X1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0xNDctXHR0cmlzdGF0ZVxuLS1cbm5ldC9tcHRjcC9LY29uZmlnPTE0PWlmIE1QVENQXG5uZXQvbXB0Y3AvS2NvbmZpZy0xNS1cbm5ldC9tcHRjcC9LY29uZmlnOjE2OmNvbmZpZyBJTkVUX01QVENQX0RJQUdcbm5ldC9tcHRjcC9LY29uZmlnLTE3LVx0ZGVwZW5kcyBvbiBJTkVUX0RJQUdcbi0tXG5uZXQvcHNwL0tjb25maWctNC0jXG5uZXQvcHNwL0tjb25maWc6NTpjb25maWcgSU5FVF9QU1Bcbm5ldC9wc3AvS2NvbmZpZy02LVx0Ym9vbCBcJiMzNDtQU1AgU2VjdXJpdHkgUHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9zY3RwL0tjb25maWc9Njg9ZW5kY2hvaWNlXG5uZXQvc2N0cC9LY29uZmlnLTY5LVxubmV0L3NjdHAvS2NvbmZpZzo3MDpjb25maWcgSU5FVF9TQ1RQX0RJQUdcbm5ldC9zY3RwL0tjb25maWctNzEtXHRkZXBlbmRzIG9uIElORVRfRElBR1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNDEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb250ZXh0IG9mIGEgVENQIFJlY2VpdmUgRnVuY3Rpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgc3RhcnRpbmcgcG9pbnQgaXMgYEZvY3VzU3ltYm9sc2Ag4oCTIHRoYXQmIzM5O3Mgb3VyIGluaXRpYWwgY2x1ZS4gSXQgZGlyZWN0cyB1cyB0byB0aGUgYHRjcF9yY3ZfZXN0YWJsaXNoZWRgIGZ1bmN0aW9uLiBJcyBpdCBhIGdlbmVyYWwsIGNvcmUgZnVuY3Rpb24gb3Igc29tZXRoaW5nIG1vcmUgc3BlY2lmaWM/IEFoLCByaWdodCwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoaXMgaXMgZGVkaWNhdGVkIHRvIGhhbmRsaW5nIFRDUCBwYWNrZXRzIHdoZW4gYSBjb25uZWN0aW9uIGhhcyBiZWVuIGVzdGFibGlzaGVkLiBTbywgaXQmIzM5O3Mgbm90IGEgZ2VuZXJpYyBsb3ctbGV2ZWwgcHJpbWl0aXZlOyBpdCYjMzk7cyB3aXRoaW4gYSBoaWdoZXIgbGF5ZXIgb2YgVENQIHByb2Nlc3NpbmcuCgpOb3csIHRoZSBuYXR1cmFsIG5leHQgc3RlcDogd2hhdCBvdGhlciBmdW5jdGlvbnMgaW4gYHRjcF9pbnB1dC5jYCBtaWdodCBiZSB0b3VjaGVkIG9yIGhhdmUgYSBjbG9zZSByZWxhdGlvbnNoaXAgdG8gd2hhdCBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgaXMgZG9pbmc/IEl0IGxvb2tzIGxpa2UgYHRjcF9yY3ZfZXN0YWJsaXNoZWRgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVlbiBhbHRlcmVkIGluIHRoZSBjb2RlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgYSAmIzM0O3N0YW5kYXJkJiMzNDsgc3ltYm9sIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaGVyZSwgc28gYSBxdWljayBncmVwIHNob3VsZCBjb25maXJtIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIHRoZSBleHBlY3RlZCBUQ1AvSVAgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9yY3ZfZXN0YWJsaXNoZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lucHV0LmM9NjMyMj1zdGF0aWMgYm9vbCB0Y3BfdmFsaWRhdGVfaW5jb21pbmcoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTY0OTktICovXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo2NTAwOnZvaWQgdGNwX3Jjdl9lc3RhYmxpc2hlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy02NTAxLXtcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTE4MzA9aW50IHRjcF92NF9kb19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMTg1My1cdFx0fVxubmV0L2lwdjQvdGNwX2lwdjQuYzoxODU0Olx0XHR0Y3BfcmN2X2VzdGFibGlzaGVkKHNrLCBza2IpO1xubmV0L2lwdjQvdGNwX2lwdjQuYy0xODU1LVx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTE5MDE9ZW51bSBza2JfZHJvcF9yZWFzb24gdGNwX2FkZF9iYWNrbG9nKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTE5ODAtXHRcdC8qIFdlIGhhdmUgdG8gdXBkYXRlIGJvdGggVENQX1NLQl9DQih0YWlsKS1cdTAwM2V0Y3BfZmxhZ3MgYW5kXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjE5ODE6XHRcdCAqIHRodGFpbC1cdTAwM2VmaW4sIHNvIHRoYXQgdGhlIGZhc3QgcGF0aCBpbiB0Y3BfcmN2X2VzdGFibGlzaGVkKClcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMTk4Mi1cdFx0ICogaXMgbm90IGVudGVyZWQgaWYgd2UgYXBwZW5kIGEgcGFja2V0IHdpdGggYSBGSU4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5MTAKCQkJCQkJCW91dHB1dDogMTA3CgkJCQkJCQl0aG91Z2h0czogMjA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIGEgVENQIFBhdGNoKioKCk9rYXksIHNvIHRoZSBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgc3ltYm9sIGlzIHRoZSBjcnVjaWFsIHBvaW50IGhlcmUuIFRoYXQmIzM5O3Mgd2hlcmUgdGhleSB0aWdodGVuZWQgdXAgdGhlIGhlYWRlciBwcmVkaWN0aW9uIGxvZ2ljLiBUaGUgY2hhbmdlIGlzIHNwZWNpZmljYWxseSBhcm91bmQgdmFsaWRhdGluZyB0aGUgYFRDUF9TS0JfQ0Ioc2tiKS0mZ3Q7YWNrX3NlcWAgdmFsdWUuIEluc3RlYWQgb2YganVzdCBzYXlpbmcgaXQmIzM5O3MgKm5vdCogJiMzNDthZnRlciYjMzQ7IGEgY2VydGFpbiBzZXF1ZW5jZSwgdGhleSYjMzk7cmUgbm93IHJlcXVpcmluZyBpdCB0byBiZSAqYmV0d2VlbiogYHRwLSZndDtzbmRfdW5hYCBhbmQgYHRwLSZndDtzbmRfbnh0YC4gVGhhdCYjMzk7cyBhIHNpZ25pZmljYW50IHNoaWZ0IGluIHRoZSBmYXN0LXBhdGggY29uZGl0aW9uLgoKTGV0IG1lIGp1c3QgcnVuIHRocm91Z2ggdGhlIGNoZWNrbGlzdCBpbiBteSBoZWFkLi4uIFllcCwgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBUaGUgcGF0Y2ggZGlyZWN0bHkgbW9kaWZpZXMgVENQIHBhY2tldCBwcm9jZXNzaW5nLCBzcGVjaWZpY2FsbHkgd2l0aGluIGB0Y3BfcmN2X2VzdGFibGlzaGVkYC4gSXQmIzM5O3MgdGlnaHRlbmluZyB0aGUgZmFzdC1wYXRoIGNvbmRpdGlvbiwgc28gdGhpcyBkZWZpbml0ZWx5IHRvdWNoZXMgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGFuZCBpcyBhIHJlYWNoYWJsZSBwYXRoLCBpdCYjMzk7cyBub3Qgc29tZSBvYnNjdXJlIGNvcm5lciBjYXNlLiBUaGUgcmVhc29uaW5nIGNoZWNrcyBvdXQuCgpUaGUgbWFpbiBmb2N1cyBoZXJlIGlzIG9idmlvdXNseSBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgaXRzZWxmLgoKQW5kIGZpbmFsbHksIHdlIG5lZWQgYElORVRgIGVuYWJsZWQgdG8gc2VlIHRoaXMuCgpBbHJpZ2h0LCBsb29rcyBnb29kLiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwODo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjcF9yY3ZfZXN0YWJsaXNoZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgVENQIGlucHV0IHByb2Nlc3NpbmcgaW4gdGNwX3Jjdl9lc3RhYmxpc2hlZCgpIGJ5IHRpZ2h0ZW5pbmcgdGhlIGZhc3QtcGF0aCBoZWFkZXIgcHJlZGljdGlvbiBjaGVjayB0byBlbnN1cmUgaW5jb21pbmcgQUNLIHNlcXVlbmNlcyBmYWxsIGJldHdlZW4gc25kX3VuYSBhbmQgc25kX254dCwgcHJldmVudGluZyBvdXQtb2Ytb3JkZXIvZXhjZXNzaXZlbHkgb2xkIEFDS3MgZnJvbSBpbXByb3Blcmx5IHRha2luZyB0aGUgZmFzdCBwYXRoLiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIFRDUCBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfcmN2X2VzdGFibGlzaGVkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBpbnB1dCBwcm9jZXNzaW5nIGluIHRjcF9yY3ZfZXN0YWJsaXNoZWQoKSBieSB0aWdodGVuaW5nIHRoZSBmYXN0LXBhdGggaGVhZGVyIHByZWRpY3Rpb24gY2hlY2sgdG8gZW5zdXJlIGluY29taW5nIEFDSyBzZXF1ZW5jZXMgZmFsbCBiZXR3ZWVuIHNuZF91bmEgYW5kIHNuZF9ueHQsIHByZXZlbnRpbmcgb3V0LW9mLW9yZGVyL2V4Y2Vzc2l2ZWx5IG9sZCBBQ0tzIGZyb20gaW1wcm9wZXJseSB0YWtpbmcgdGhlIGZhc3QgcGF0aC4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBUQ1AgbmV0d29ya2luZyBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwODo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRDUCBoZWFkZXIgcHJlZGljdGlvbiBjb25kaXRpb24gaW4gYHRjcF9yY3ZfZXN0YWJsaXNoZWQoKWAgYnkgcmVwbGFjaW5nIGAhYWZ0ZXIoVENQX1NLQl9DQihza2IpLVx1MDAzZWFja19zZXEsIHRwLVx1MDAzZXNuZF9ueHQpYCB3aXRoIGBiZXR3ZWVuKFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VhY2tfc2VxLCB0cC1cdTAwM2VzbmRfdW5hLCB0cC1cdTAwM2VzbmRfbnh0KWAgdG8gZW5zdXJlIHBhY2tldHMgY2FycnlpbmcgZXhjZXNzaXZlbHkgb2xkIEFDS3MgYnlwYXNzIHRoZSBmYXN0IHBhdGggYW5kIGFyZSBoYW5kbGVkIGJ5IHRoZSBzbG93IHBhdGggYWNjb3JkaW5nIHRvIFJGQyA1OTYxLlxuXG5UaGlzIGNoYW5nZSB0b3VjaGVzIG9ubHkgc3RhbmRhcmQgVENQIHNlcXVlbmNlIG51bWJlciBjb21wYXJpc29uIGxvZ2ljIHVzaW5nIHdlbGwtZGVmaW5lZCwgaW5pdGlhbGl6ZWQgZmllbGRzIG9uIGBzdHJ1Y3Qgc29ja2AgYW5kIGBza19idWZmYC4gVGhlcmUgYXJlIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gZGF0YSB0cmFuc2ZlcnMgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5NzQ0MWYzNDhiNjU0YmU1NWEzNzNkMWRjMzdkZTJlYWEzMGRiZWY0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgOSAwODo0NjozNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0LmMKaW5kZXggZGFmZjkzZDUxMzQyOC4uNTdmZWM1OGE0ZjE1MyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX2lucHV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2lucHV0LmMKQEAgLTY1MzksNyAmIzQzOzY1MzksNyBAQCB2b2lkIHRjcF9yY3ZfZXN0YWJsaXNoZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCiAJaWYgKCh0Y3BfZmxhZ193b3JkKHRoKSAmYW1wOyBUQ1BfSFBfQklUUykgPT0gdHAtJmd0O3ByZWRfZmxhZ3MgJmFtcDsmYW1wOwogCSAgICBUQ1BfU0tCX0NCKHNrYiktJmd0O3NlcSA9PSB0cC0mZ3Q7cmN2X254dCAmYW1wOyZhbXA7Ci0JICAgICFhZnRlcihUQ1BfU0tCX0NCKHNrYiktJmd0O2Fja19zZXEsIHRwLSZndDtzbmRfbnh0KSkgewomIzQzOwkgICAgYmV0d2VlbihUQ1BfU0tCX0NCKHNrYiktJmd0O2Fja19zZXEsIHRwLSZndDtzbmRfdW5hLCB0cC0mZ3Q7c25kX254dCkpIHsKIAkJaW50IHRjcF9oZWFkZXJfbGVuID0gdHAtJmd0O3RjcF9oZWFkZXJfbGVuOwogCQlzMzIgZGVsdGEgPSAwOwogCQlpbnQgZmxhZyA9IDA7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcmVqZWN0LW9sZC1hY2sucGt0IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3BhY2tldGRyaWxsL3RjcF9yZmM1OTYxX3JlamVjdC1vbGQtYWNrLnBrdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi44ZTcyMjkxMjc2NzBmCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3BhY2tldGRyaWxsL3RjcF9yZmM1OTYxX3JlamVjdC1vbGQtYWNrLnBrdApAQCAtMCwwICYjNDM7MSwyMyBAQAomIzQzOy8vIFRlc3QgcmVqZWN0aW9uIG9mIGRhdGEgc2VnbWVudHMgY2FycnlpbmcgZXhjZXNzaXZlbHkgb2xkIEFDS3MKJiM0MzsKJiM0MzswIHNvY2tldCguLi4sIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1RDUCkgPSAzCiYjNDM7JiM0MzswIHNldHNvY2tvcHQoMywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCBbMV0sIDQpID0gMAomIzQzOyYjNDM7MCBiaW5kKDMsIC4uLiwgLi4uKSA9IDAKJiM0MzsmIzQzOzAgbGlzdGVuKDMsIDEwMjQpID0gMAomIzQzOwomIzQzOy8vIC0tLS0tLS0tLS0tLS0tLS0gSGFuZHNoYWtlIC0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KJiM0MzsmIzQzOzAgJmx0OyBTIDA6MCgwKSB3aW4gNjU1MzUKJiM0MzsmIzQzOzAgJmd0OyBTLiAwOjAoMCkgYWNrIDEgJmx0Oy4uLiZndDsKJiM0MzsmIzQzOzAgJmx0OyAuIDE6MSgwKSBhY2sgMSB3aW4gNjU1MzUKJiM0MzsmIzQzOzAgYWNjZXB0KDMsIC4uLiwgLi4uKSA9IDQKJiM0MzsKJiM0MzsvLyBQb3B1bGF0ZSByZWNlaXZlIG1lbW9yeSBzbyB0aGUgZm9sbG93aW5nIHNlZ21lbnQgY2FuIHVzZQomIzQzOy8vIGhlYWRlciBwcmVkaWN0aW9uLgomIzQzOyYjNDM7MCAmbHQ7IFAuIDE6NTAxKDUwMCkgYWNrIDEgd2luIDY1NTM1CiYjNDM7JiM0MzswICZndDsgLiAxOjEoMCkgYWNrIDUwMQomIzQzOwomIzQzOy8vIFNlbmQgYW4gaW4tc2VxdWVuY2UgZGF0YSBzZWdtZW50IGNhcnJ5aW5nIGFuIGV4Y2Vzc2l2ZWx5IG9sZCBBQ0suCiYjNDM7JiM0MzswICZsdDsgUC4gNTAxOjE1MDEoMTAwMCkgYWNrIDI3OTQ5NjczOTcgd2luIDY1NTM1CiYjNDM7CiYjNDM7Ly8gQ2hhbGxlbmdlIEFDSzsgUkNWLk5YVCBtdXN0IHJlbWFpbiA1MDEuCiYjNDM7JiM0MzswICZndDsgLiAxOjEoMCkgYWNrIDUwMQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDg6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYyOAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDM1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRDUCBSZWNlaXZlIEVzdGFibGlzaGVkIEZ1bmN0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTG9va3MgbGlrZSB3ZSYjMzk7cmUgemVyb2luZyBpbiBvbiBhIGNoYW5nZSB3aXRoaW4gYG5ldC9pcHY0L3RjcF9pbnB1dC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgZnVuY3Rpb24uIFRoZSBkaWZmIGhpZ2hsaWdodHMgYSBtb2RpZmljYXRpb24gdG8gdGhlIGxvZ2ljIHN1cnJvdW5kaW5nIGFja25vd2xlZGdtZW50IHByb2Nlc3NpbmcuIExldCYjMzk7cyBzZWUuLi4gaXQgYXBwZWFycyB0aGUgb3JpZ2luYWwgY29kZSBjaGVja2VkIGlmIHRoZSBhY2tub3dsZWRnZWQgc2VxdWVuY2UgbnVtYmVyIChgYWNrX3NlcWApIHdhcyAqbm90KiBhZnRlciBgc25kX254dGAuIFRoZSBwYXRjaCwgaG93ZXZlciwgcmVmYWN0b3JzIHRoaXMgdG8gdXNlIGBiZXR3ZWVuYCwgY2hlY2tpbmcgaWYgYGFja19zZXFgIGlzIGJldHdlZW4gYHNuZF91bmFgIGFuZCBgc25kX254dGAuIFRoaXMgaXMgYSBzdWJ0bGUsIGJ1dCBwb3RlbnRpYWxseSBzaWduaWZpY2FudCwgc2hpZnQgaW4gaG93IHdlIGhhbmRsZSBhY2tub3dsZWRnbWVudHMuIEEgcGFja2V0ZHJpbGwgdGVzdCBpcyBsaWtlbHkgYWRkZWQgdG8gdGVzdCB0aGlzIG5vdy4gV2UgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgY29udGV4dCBvZiB0aGlzIGZ1bmN0aW9uIHRvIGZ1bGx5IGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMsIHRob3VnaCwgc28gbGV0JiMzOTtzIG5hdmlnYXRlIHRvIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCB3aXRoaW4gdGhlIHNhbWUgZmlsZSB0byBnZXQgdGhlIGNvbXBsZXRlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lucHV0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2NTI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzY1MjU6XHRcdCAqXHRXZSBkbyBjaGVja3N1bSBhbmQgY29weSBhbHNvIGJ1dCBmcm9tIGRldmljZSB0byBrZXJuZWwuXG42NTI2Olx0XHQgKi9cbjY1Mjc6XHRcbjY1Mjg6XHRcdHRwLVx1MDAzZXJ4X29wdC5zYXdfdHN0YW1wID0gMDtcbjY1Mjk6XHRcdHRwLVx1MDAzZXJ4X29wdC5hY2NlY24gPSAwO1xuNjUzMDpcdFxuNjUzMTpcdFx0LypcdHByZWRfZmxhZ3MgaXMgMHhTPzEwIFx1MDAzY1x1MDAzYyAxNiAmIzQzOyBzbmRfd25kXG42NTMyOlx0XHQgKlx0aWYgaGVhZGVyX3ByZWRpY3Rpb24gaXMgdG8gYmUgbWFkZVxuNjUzMzpcdFx0ICpcdCYjMzk7UyYjMzk7IHdpbGwgYWx3YXlzIGJlIHRwLVx1MDAzZXRjcF9oZWFkZXJfbGVuIFx1MDAzZVx1MDAzZSAyXG42NTM0Olx0XHQgKlx0JiMzOTs/JiMzOTsgd2lsbCBiZSAwIGZvciB0aGUgZmFzdCBwYXRoLCBvdGhlcndpc2UgcHJlZF9mbGFncyBpcyAwIHRvXG42NTM1Olx0XHQgKiAgdHVybiBpdCBvZmZcdCh3aGVuIHRoZXJlIGFyZSBob2xlcyBpbiB0aGUgcmVjZWl2ZVxuNjUzNjpcdFx0ICpcdCBzcGFjZSBmb3IgaW5zdGFuY2UpXG42NTM3Olx0XHQgKlx0UFNIIGZsYWcgaXMgaWdub3JlZC5cbjY1Mzg6XHRcdCAqL1xuNjUzOTpcdFxuNjU0MDpcdFx0aWYgKCh0Y3BfZmxhZ193b3JkKHRoKSBcdTAwMjYgVENQX0hQX0JJVFMpID09IHRwLVx1MDAzZXByZWRfZmxhZ3MgXHUwMDI2XHUwMDI2XG42NTQxOlx0XHQgICAgVENQX1NLQl9DQihza2IpLVx1MDAzZXNlcSA9PSB0cC1cdTAwM2VyY3Zfbnh0IFx1MDAyNlx1MDAyNlxuNjU0MjpcdFx0ICAgIGJldHdlZW4oVENQX1NLQl9DQihza2IpLVx1MDAzZWFja19zZXEsIHRwLVx1MDAzZXNuZF91bmEsIHRwLVx1MDAzZXNuZF9ueHQpKSB7XG42NTQzOlx0XHRcdGludCB0Y3BfaGVhZGVyX2xlbiA9IHRwLVx1MDAzZXRjcF9oZWFkZXJfbGVuO1xuNjU0NDpcdFx0XHRzMzIgZGVsdGEgPSAwO1xuNjU0NTpcdFx0XHRpbnQgZmxhZyA9IDA7XG42NTQ2Olx0XG42NTQ3Olx0XHRcdC8qIFRpbWVzdGFtcCBoZWFkZXIgcHJlZGljdGlvbjogdGNwX2hlYWRlcl9sZW5cbjY1NDg6XHRcdFx0ICogaXMgYXV0b21hdGljYWxseSBlcXVhbCB0byB0aC1cdTAwM2Vkb2ZmKjQgZHVlIHRvIHByZWRfZmxhZ3NcbjY1NDk6XHRcdFx0ICogbWF0Y2guXG42NTUwOlx0XHRcdCAqL1xuNjU1MTpcdFxuNjU1MjpcdFx0XHQvKiBDaGVjayB0aW1lc3RhbXAgKi9cbjY1NTM6XHRcdFx0aWYgKHRjcF9oZWFkZXJfbGVuID09IHNpemVvZihzdHJ1Y3QgdGNwaGRyKSAmIzQzOyBUQ1BPTEVOX1RTVEFNUF9BTElHTkVEKSB7XG42NTU0Olx0XHRcdFx0LyogTm8/IFNsb3cgcGF0aCEgKi9cbjY1NTU6XHRcdFx0XHRpZiAoIXRjcF9wYXJzZV9hbGlnbmVkX3RpbWVzdGFtcCh0cCwgdGgpKVxuNjU1NjpcdFx0XHRcdFx0Z290byBzbG93X3BhdGg7XG42NTU3Olx0XG42NTU4Olx0XHRcdFx0ZGVsdGEgPSB0cC1cdTAwM2VyeF9vcHQucmN2X3RzdmFsIC1cbjY1NTk6XHRcdFx0XHRcdHRwLVx1MDAzZXJ4X29wdC50c19yZWNlbnQ7XG42NTYwOlx0XHRcdFx0LyogSWYgUEFXUyBmYWlsZWQsIGNoZWNrIGl0IG1vcmUgY2FyZWZ1bGx5IGluIHNsb3cgcGF0aCAqL1xuNjU2MTpcdFx0XHRcdGlmIChkZWx0YSBcdTAwM2MgMClcbjY1NjI6XHRcdFx0XHRcdGdvdG8gc2xvd19wYXRoO1xuNjU2MzpcdFxuNjU2NDpcdFx0XHRcdC8qIERPIE5PVCB1cGRhdGUgdHNfcmVjZW50IGhlcmUsIGlmIGNoZWNrc3VtIGZhaWxzXG42NTY1Olx0XHRcdFx0ICogYW5kIHRpbWVzdGFtcCB3YXMgY29ycnVwdGVkIHBhcnQsIGl0IHdpbGwgcmVzdWx0XG42NTY2Olx0XHRcdFx0ICogaW4gYSBodW5nIGNvbm5lY3Rpb24gc2luY2Ugd2Ugd2lsbCBkcm9wIGFsbFxuNjU2NzpcdFx0XHRcdCAqIGZ1dHVyZSBwYWNrZXRzIGR1ZSB0byB0aGUgUEFXUyB0ZXN0LlxuNjU2ODpcdFx0XHRcdCAqL1xuNjU2OTpcdFx0XHR9XG42NTcwOlx0XG42NTcxOlx0XHRcdGlmIChsZW4gXHUwMDNjPSB0Y3BfaGVhZGVyX2xlbikge1xuNjU3MjpcdFx0XHRcdC8qIEJ1bGsgZGF0YSB0cmFuc2Zlcjogc2VuZGVyICovXG42NTczOlx0XHRcdFx0aWYgKGxlbiA9PSB0Y3BfaGVhZGVyX2xlbikge1xuNjU3NDpcdFx0XHRcdFx0LyogUHJlZGljdGVkIHBhY2tldCBpcyBpbiB3aW5kb3cgYnkgZGVmaW5pdGlvbi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDg6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA0OQoJCQkJCQkJb3V0cHV0OiAxOTQKCQkJCQkJCXRob3VnaHRzOiA2MTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVENQIEZhc3QgUGF0aCBPcHRpbWl6YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBjaGFuZ2UuIEluIHRoZSBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgZnVuY3Rpb24sIHdlJiMzOTtyZSByZWZpbmluZyBob3cgd2UgaGFuZGxlIGluY29taW5nIEFDS3MuIEJlZm9yZSwgdGhlIGZhc3QgcGF0aCBzaW1wbHkgY2hlY2tlZCBpZiB0aGUgQUNLIHNlcXVlbmNlIG51bWJlciB3YXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBzbmRfbnh0YC4gVGhhdCB3YXMgdG9vIGxheDsgQUNLcyBjb3VsZCBiZSAqc3RhbGUqIOKAkyBvbGRlciB0aGFuIGBzbmRfdW5hYCEgVGhpcyBpcyBwcm9ibGVtYXRpYywgYXMgaXQgYnlwYXNzZXMgY3JpdGljYWwgUkZDIDU5NjEgdmFsaWRhdGlvbiAoVENQIGhlYWRlciBwcmVkaWN0aW9uIGZhc3QgcGF0aCkuIE5vdywgd2UmIzM5O3JlIHVzaW5nIGBiZXR3ZWVuKFRDUF9TS0JfQ0Ioc2tiKS0mZ3Q7YWNrX3NlcSwgdHAtJmd0O3NuZF91bmEsIHRwLSZndDtzbmRfbnh0KWAuIElmIHRoZSBBQ0sgZmFsbHMgb3V0c2lkZSB0aGlzIHdpbmRvdyAob2xkZXIgdGhhbiBgc25kX3VuYWApLCB3ZSBjb3JyZWN0bHkgcm91dGUgaXQgdG8gdGhlIHNsb3cgcGF0aCBmb3IgcHJvcGVyIFJGQyA1OTYxIGNoZWNrcyBsaWtlIGB0Y3BfdmFsaWRhdGVfaW5jb21pbmdgIGFuZCBgdGNwX2Fja2AuCgpOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBhcmUgd2UgaW50cm9kdWNpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgd2l0aCB0aGlzIHVwZGF0ZT8gTGV0JiMzOTtzIGJlIHRob3JvdWdoLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBoYXBwZW5pbmcuIFdlJiMzOTtyZSBub3QgYWNjZXNzaW5nIGFueSBuZXcgZmllbGRzIG9yIHN0cnVjdHMgdGhhdCBtaWdodCBjb250YWluIHVuaW5pdGlhbGl6ZWQgZGF0YS4gYHRwLSZndDtzbmRfdW5hYCBhbmQgYHRwLSZndDtzbmRfbnh0YCBhcmUgc3RhbmRhcmQgVENQIHN0YXRlIHZhcmlhYmxlcywgYWx3YXlzIGluaXRpYWxpemVkIHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgRVNUQUJMSVNIRUQuIGBUQ1BfU0tCX0NCKHNrYiktJmd0O2Fja19zZXFgIGlzLCBvZiBjb3Vyc2UsIGRlcml2ZWQgZnJvbSB0aGUgcGFja2V0IGhlYWRlci4gVGhlcmUmIzM5O3Mgbm8ga2VybmVsLXRvLXVzZXIgbWVtb3J5IGNvcHkgaW52b2x2ZWQsIHNvIG5vIHJpc2sgb2YgaW5mb3JtYXRpb24gbGVha3MuIFRoZXJlJiMzOTtzIGFsc28gbm8gYnJhbmNoaW5nIHRoYXQgcmVsaWVzIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YS4gVGhpcyBpcyBwdXJlbHkgYSB0aWdodGVuaW5nIG9mIHByb3RvY29sIHZhbGlkYXRpb24sIGEgcHJvdG9jb2wgbG9naWMgaGFyZGVuaW5nIG9uIHRoZSBmYXN0IHBhdGguCgpJJiMzOTt2ZSBnb3QgdG8gZG91YmxlLWNoZWNrIHRoaXMgZm9yIEtNU0FOIHRob3VnaC4gV2UgbmVlZCBLTVNBTiBpZjogS2VybmVsIHN0cnVjdHMgYXJlIHBhc3NlZCB0byB1c2Vyc3BhY2UgcG90ZW50aWFsbHkgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcy4gTm8uIENvbmRpdGlvbmFsIGxvZ2ljIHJlbGllcyBvbiB1bmluaXRpYWxpemVkIGRhdGE/IE5vLiBBbGxvY2F0aW9ucyBhbmQgaW5pdGlhbGl6YXRpb24gY3JlYXRlIHJpc2tzIG9mIHVuaW5pdGlhbGl6ZWQgcmVhZHM/IE5vLiBCb3VuZHMgY2hlY2tzIHRoYXQgYWxsb3cgcmVhZGluZyB1bmluaXRpYWxpemVkIGJ1ZmZlciBieXRlcz8gTm8uCgpTbywgdGhpcyBjaGFuZ2UgZG9lc24mIzM5O3QgdHJpZ2dlciBhbnkgS01TQU4gY29uY2VybnMuIEl0JiMzOTtzIGp1c3QgdGlnaHRlbmluZyBhIGNvbmRpdGlvbiwgc2VuZGluZyBwb3RlbnRpYWxseSBiYWQgQUNLcyB0byB0aGUgc2xvdyBwYXRoLiBObyBhbGxvY2F0aW9ucywgY29waWVzLCBvciByZWFkcyBmcm9tIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBLQVNBTiBhbmQgc3RhbmRhcmQgZnV6emluZyBzaG91bGQgYmUgcGVyZmVjdGx5IGFkZXF1YXRlLgoKUmlnaHQsIEkmIzM5O20gY29tZm9ydGFibGUgd2l0aCB0aGF0LiBUaW1lIHRvIHRlbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDg6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRDUCBoZWFkZXIgcHJlZGljdGlvbiBjb25kaXRpb24gaW4gYHRjcF9yY3ZfZXN0YWJsaXNoZWQoKWAgYnkgcmVwbGFjaW5nIGAhYWZ0ZXIoVENQX1NLQl9DQihza2IpLVx1MDAzZWFja19zZXEsIHRwLVx1MDAzZXNuZF9ueHQpYCB3aXRoIGBiZXR3ZWVuKFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VhY2tfc2VxLCB0cC1cdTAwM2VzbmRfdW5hLCB0cC1cdTAwM2VzbmRfbnh0KWAgdG8gZW5zdXJlIHBhY2tldHMgY2FycnlpbmcgZXhjZXNzaXZlbHkgb2xkIEFDS3MgYnlwYXNzIHRoZSBmYXN0IHBhdGggYW5kIGFyZSBoYW5kbGVkIGJ5IHRoZSBzbG93IHBhdGggYWNjb3JkaW5nIHRvIFJGQyA1OTYxLlxuXG5UaGlzIGNoYW5nZSB0b3VjaGVzIG9ubHkgc3RhbmRhcmQgVENQIHNlcXVlbmNlIG51bWJlciBjb21wYXJpc29uIGxvZ2ljIHVzaW5nIHdlbGwtZGVmaW5lZCwgaW5pdGlhbGl6ZWQgZmllbGRzIG9uIGBzdHJ1Y3Qgc29ja2AgYW5kIGBza19idWZmYC4gVGhlcmUgYXJlIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gZGF0YSB0cmFuc2ZlcnMgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVENQIGhlYWRlciBwcmVkaWN0aW9uIGNvbmRpdGlvbiBpbiBgdGNwX3Jjdl9lc3RhYmxpc2hlZCgpYCBieSByZXBsYWNpbmcgYCFhZnRlcihUQ1BfU0tCX0NCKHNrYiktXHUwMDNlYWNrX3NlcSwgdHAtXHUwMDNlc25kX254dClgIHdpdGggYGJldHdlZW4oVENQX1NLQl9DQihza2IpLVx1MDAzZWFja19zZXEsIHRwLVx1MDAzZXNuZF91bmEsIHRwLVx1MDAzZXNuZF9ueHQpYCB0byBlbnN1cmUgcGFja2V0cyBjYXJyeWluZyBleGNlc3NpdmVseSBvbGQgQUNLcyBieXBhc3MgdGhlIGZhc3QgcGF0aCBhbmQgYXJlIGhhbmRsZWQgYnkgdGhlIHNsb3cgcGF0aCBhY2NvcmRpbmcgdG8gUkZDIDU5NjEuXG5cblRoaXMgY2hhbmdlIHRvdWNoZXMgb25seSBzdGFuZGFyZCBUQ1Agc2VxdWVuY2UgbnVtYmVyIGNvbXBhcmlzb24gbG9naWMgdXNpbmcgd2VsbC1kZWZpbmVkLCBpbml0aWFsaXplZCBmaWVsZHMgb24gYHN0cnVjdCBzb2NrYCBhbmQgYHNrX2J1ZmZgLiBUaGVyZSBhcmUgbm8gbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIHRyYW5zZmVycyB0byB1c2VyIHNwYWNlLCBhbmQgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDlUMDg6NDY6MzcuODM5ODk3NTEyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg0MDU0NTEzNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjcF9yY3ZfZXN0YWJsaXNoZWRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQ1AgaGVhZGVyIHByZWRpY3Rpb24gY29uZGl0aW9uIGluIGB0Y3BfcmN2X2VzdGFibGlzaGVkKClgIGJ5IHJlcGxhY2luZyBgIWFmdGVyKFRDUF9TS0JfQ0Ioc2tiKS1cXHUwMDNlYWNrX3NlcSwgdHAtXFx1MDAzZXNuZF9ueHQpYCB3aXRoIGBiZXR3ZWVuKFRDUF9TS0JfQ0Ioc2tiKS1cXHUwMDNlYWNrX3NlcSwgdHAtXFx1MDAzZXNuZF91bmEsIHRwLVxcdTAwM2VzbmRfbnh0KWAgdG8gZW5zdXJlIHBhY2tldHMgY2FycnlpbmcgZXhjZXNzaXZlbHkgb2xkIEFDS3MgYnlwYXNzIHRoZSBmYXN0IHBhdGggYW5kIGFyZSBoYW5kbGVkIGJ5IHRoZSBzbG93IHBhdGggYWNjb3JkaW5nIHRvIFJGQyA1OTYxLlxcblxcblRoaXMgY2hhbmdlIHRvdWNoZXMgb25seSBzdGFuZGFyZCBUQ1Agc2VxdWVuY2UgbnVtYmVyIGNvbXBhcmlzb24gbG9naWMgdXNpbmcgd2VsbC1kZWZpbmVkLCBpbml0aWFsaXplZCBmaWVsZHMgb24gYHN0cnVjdCBzb2NrYCBhbmQgYHNrX2J1ZmZgLiBUaGVyZSBhcmUgbm8gbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIHRyYW5zZmVycyB0byB1c2VyIHNwYWNlLCBhbmQgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBUQ1AgaW5wdXQgcHJvY2Vzc2luZyBpbiB0Y3BfcmN2X2VzdGFibGlzaGVkKCkgYnkgdGlnaHRlbmluZyB0aGUgZmFzdC1wYXRoIGhlYWRlciBwcmVkaWN0aW9uIGNoZWNrIHRvIGVuc3VyZSBpbmNvbWluZyBBQ0sgc2VxdWVuY2VzIGZhbGwgYmV0d2VlbiBzbmRfdW5hIGFuZCBzbmRfbnh0LCBwcmV2ZW50aW5nIG91dC1vZi1vcmRlci9leGNlc3NpdmVseSBvbGQgQUNLcyBmcm9tIGltcHJvcGVybHkgdGFraW5nIHRoZSBmYXN0IHBhdGguIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgVENQIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDg6NDY6MzcuODM5OTAxMzgyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDM4MTEyNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5NzQ0MWYzNDhiNjU0YmU1NWEzNzNkMWRjMzdkZTJlYWEzMGRiZWY0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDkgMDg6NDY6MzYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lucHV0LmMgYi9uZXQvaXB2NC90Y3BfaW5wdXQuY1xcbmluZGV4IGRhZmY5M2Q1MTM0MjguLjU3ZmVjNThhNGYxNTMgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdGNwX2lucHV0LmNcXG4rKysgYi9uZXQvaXB2NC90Y3BfaW5wdXQuY1xcbkBAIC02NTM5LDcgKzY1MzksNyBAQCB2b2lkIHRjcF9yY3ZfZXN0YWJsaXNoZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXG4gXFx0aWYgKCh0Y3BfZmxhZ193b3JkKHRoKSBcXHUwMDI2IFRDUF9IUF9CSVRTKSA9PSB0cC1cXHUwMDNlcHJlZF9mbGFncyBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgVENQX1NLQl9DQihza2IpLVxcdTAwM2VzZXEgPT0gdHAtXFx1MDAzZXJjdl9ueHQgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgICFhZnRlcihUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWFja19zZXEsIHRwLVxcdTAwM2VzbmRfbnh0KSkge1xcbitcXHQgICAgYmV0d2VlbihUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWFja19zZXEsIHRwLVxcdTAwM2VzbmRfdW5hLCB0cC1cXHUwMDNlc25kX254dCkpIHtcXG4gXFx0XFx0aW50IHRjcF9oZWFkZXJfbGVuID0gdHAtXFx1MDAzZXRjcF9oZWFkZXJfbGVuO1xcbiBcXHRcXHRzMzIgZGVsdGEgPSAwO1xcbiBcXHRcXHRpbnQgZmxhZyA9IDA7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yZWplY3Qtb2xkLWFjay5wa3QgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcmVqZWN0LW9sZC1hY2sucGt0XFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi44ZTcyMjkxMjc2NzBmXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yZWplY3Qtb2xkLWFjay5wa3RcXG5AQCAtMCwwICsxLDIzIEBAXFxuKy8vIFRlc3QgcmVqZWN0aW9uIG9mIGRhdGEgc2VnbWVudHMgY2FycnlpbmcgZXhjZXNzaXZlbHkgb2xkIEFDS3NcXG4rXFxuKzAgc29ja2V0KC4uLiwgU09DS19TVFJFQU0sIElQUFJPVE9fVENQKSA9IDNcXG4rKzAgc2V0c29ja29wdCgzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIFsxXSwgNCkgPSAwXFxuKyswIGJpbmQoMywgLi4uLCAuLi4pID0gMFxcbisrMCBsaXN0ZW4oMywgMTAyNCkgPSAwXFxuK1xcbisvLyAtLS0tLS0tLS0tLS0tLS0tIEhhbmRzaGFrZSAtLS0tLS0tLS0tLS0tLS0tLS0tIC8vXFxuKyswIFxcdTAwM2MgUyAwOjAoMCkgd2luIDY1NTM1XFxuKyswIFxcdTAwM2UgUy4gMDowKDApIGFjayAxIFxcdTAwM2MuLi5cXHUwMDNlXFxuKyswIFxcdTAwM2MgLiAxOjEoMCkgYWNrIDEgd2luIDY1NTM1XFxuKyswIGFjY2VwdCgzLCAuLi4sIC4uLikgPSA0XFxuK1xcbisvLyBQb3B1bGF0ZSByZWNlaXZlIG1lbW9yeSBzbyB0aGUgZm9sbG93aW5nIHNlZ21lbnQgY2FuIHVzZVxcbisvLyBoZWFkZXIgcHJlZGljdGlvbi5cXG4rKzAgXFx1MDAzYyBQLiAxOjUwMSg1MDApIGFjayAxIHdpbiA2NTUzNVxcbisrMCBcXHUwMDNlIC4gMToxKDApIGFjayA1MDFcXG4rXFxuKy8vIFNlbmQgYW4gaW4tc2VxdWVuY2UgZGF0YSBzZWdtZW50IGNhcnJ5aW5nIGFuIGV4Y2Vzc2l2ZWx5IG9sZCBBQ0suXFxuKyswIFxcdTAwM2MgUC4gNTAxOjE1MDEoMTAwMCkgYWNrIDI3OTQ5NjczOTcgd2luIDY1NTM1XFxuK1xcbisvLyBDaGFsbGVuZ2UgQUNLOyBSQ1YuTlhUIG11c3QgcmVtYWluIDUwMS5cXG4rKzAgXFx1MDAzZSAuIDE6MSgwKSBhY2sgNTAxXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA4OjQ2OjM4LjQ0NDI2NDc2M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6Mzg1MDU0MTMxMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjcF9yY3ZfZXN0YWJsaXNoZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBUQ1AgaW5wdXQgcHJvY2Vzc2luZyBpbiB0Y3BfcmN2X2VzdGFibGlzaGVkKCkgYnkgdGlnaHRlbmluZyB0aGUgZmFzdC1wYXRoIGhlYWRlciBwcmVkaWN0aW9uIGNoZWNrIHRvIGVuc3VyZSBpbmNvbWluZyBBQ0sgc2VxdWVuY2VzIGZhbGwgYmV0d2VlbiBzbmRfdW5hIGFuZCBzbmRfbnh0LCBwcmV2ZW50aW5nIG91dC1vZi1vcmRlci9leGNlc3NpdmVseSBvbGQgQUNLcyBmcm9tIGltcHJvcGVybHkgdGFraW5nIHRoZSBmYXN0IHBhdGguIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgVENQIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5NzQ0MWYzNDhiNjU0YmU1NWEzNzNkMWRjMzdkZTJlYWEzMGRiZWY0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgOSAwODo0NjozNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcbmluZGV4IGRhZmY5M2Q1MTM0MjguLjU3ZmVjNThhNGYxNTMgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfaW5wdXQuY1xuKysrIGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcbkBAIC02NTM5LDcgKzY1MzksNyBAQCB2b2lkIHRjcF9yY3ZfZXN0YWJsaXNoZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFxuIFx0aWYgKCh0Y3BfZmxhZ193b3JkKHRoKSBcdTAwMjYgVENQX0hQX0JJVFMpID09IHRwLVx1MDAzZXByZWRfZmxhZ3MgXHUwMDI2XHUwMDI2XG4gXHQgICAgVENQX1NLQl9DQihza2IpLVx1MDAzZXNlcSA9PSB0cC1cdTAwM2VyY3Zfbnh0IFx1MDAyNlx1MDAyNlxuLVx0ICAgICFhZnRlcihUQ1BfU0tCX0NCKHNrYiktXHUwMDNlYWNrX3NlcSwgdHAtXHUwMDNlc25kX254dCkpIHtcbitcdCAgICBiZXR3ZWVuKFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VhY2tfc2VxLCB0cC1cdTAwM2VzbmRfdW5hLCB0cC1cdTAwM2VzbmRfbnh0KSkge1xuIFx0XHRpbnQgdGNwX2hlYWRlcl9sZW4gPSB0cC1cdTAwM2V0Y3BfaGVhZGVyX2xlbjtcbiBcdFx0czMyIGRlbHRhID0gMDtcbiBcdFx0aW50IGZsYWcgPSAwO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yZWplY3Qtb2xkLWFjay5wa3QgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcmVqZWN0LW9sZC1hY2sucGt0XG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uOGU3MjI5MTI3NjcwZlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3BhY2tldGRyaWxsL3RjcF9yZmM1OTYxX3JlamVjdC1vbGQtYWNrLnBrdFxuQEAgLTAsMCArMSwyMyBAQFxuKy8vIFRlc3QgcmVqZWN0aW9uIG9mIGRhdGEgc2VnbWVudHMgY2FycnlpbmcgZXhjZXNzaXZlbHkgb2xkIEFDS3NcbitcbiswIHNvY2tldCguLi4sIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1RDUCkgPSAzXG4rKzAgc2V0c29ja29wdCgzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIFsxXSwgNCkgPSAwXG4rKzAgYmluZCgzLCAuLi4sIC4uLikgPSAwXG4rKzAgbGlzdGVuKDMsIDEwMjQpID0gMFxuK1xuKy8vIC0tLS0tLS0tLS0tLS0tLS0gSGFuZHNoYWtlIC0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cbisrMCBcdTAwM2MgUyAwOjAoMCkgd2luIDY1NTM1XG4rKzAgXHUwMDNlIFMuIDA6MCgwKSBhY2sgMSBcdTAwM2MuLi5cdTAwM2VcbisrMCBcdTAwM2MgLiAxOjEoMCkgYWNrIDEgd2luIDY1NTM1XG4rKzAgYWNjZXB0KDMsIC4uLiwgLi4uKSA9IDRcbitcbisvLyBQb3B1bGF0ZSByZWNlaXZlIG1lbW9yeSBzbyB0aGUgZm9sbG93aW5nIHNlZ21lbnQgY2FuIHVzZVxuKy8vIGhlYWRlciBwcmVkaWN0aW9uLlxuKyswIFx1MDAzYyBQLiAxOjUwMSg1MDApIGFjayAxIHdpbiA2NTUzNVxuKyswIFx1MDAzZSAuIDE6MSgwKSBhY2sgNTAxXG4rXG4rLy8gU2VuZCBhbiBpbi1zZXF1ZW5jZSBkYXRhIHNlZ21lbnQgY2FycnlpbmcgYW4gZXhjZXNzaXZlbHkgb2xkIEFDSy5cbisrMCBcdTAwM2MgUC4gNTAxOjE1MDEoMTAwMCkgYWNrIDI3OTQ5NjczOTcgd2luIDY1NTM1XG4rXG4rLy8gQ2hhbGxlbmdlIEFDSzsgUkNWLk5YVCBtdXN0IHJlbWFpbiA1MDEuXG4rKzAgXHUwMDNlIC4gMToxKDApIGFjayA1MDFcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA4OjQ2OjM4LjQ0NDI2NjIxM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY1Mzk2Mjg0MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6XG5cbioqRGl2aW5nIGludG8gYHRjcF9pbnB1dC5jYCBmb3IgQ29udGV4dCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBtYWtpbmcgYSBjaGFuZ2Ugd2l0aGluIHRoZSBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgZnVuY3Rpb24sIGFuZCBpdCBsb29rcyBsaWtlIHRoZSB0YXJnZXQgaXMgaW4gYG5ldC9pcHY0L3RjcF9pbnB1dC5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljIHRvIHByb3Blcmx5IGV2YWx1YXRlIHRoZSBpbXBhY3QsIHNvIEknbSBnb2luZyB0byBqdW1wIGludG8gdGhhdCBmaWxlLiBJJ20gdGhpbmtpbmcgYXJvdW5kIGxpbmUgNjUzOSBzaG91bGQgZ2l2ZSBtZSB0aGUgcmVsZXZhbnQgY29udGV4dCBmb3IgdGhpcyBwYXRjaC4gTGV0IG1lIHNlZSB3aGF0J3MgaGFwcGVuaW5nIGp1c3QgYmVmb3JlIGFuZCBhZnRlciB0aGF0IGxpbmUgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUgb2Ygd2hhdCB0aGlzIGNoYW5nZSBpcyBpbnRlbmRlZCB0byBhZGRyZXNzLiBHb3QgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJwbGF5IGhlcmUgYmVmb3JlIGZvcm1pbmcgYW4gb3Bpbmlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQxNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDg6NDY6NDQuOTgzODk4Mzc1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAzOTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY0L3RjcF9pbnB1dC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY1MjUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjY1MjU6XFx0XFx0ICpcXHRXZSBkbyBjaGVja3N1bSBhbmQgY29weSBhbHNvIGJ1dCBmcm9tIGRldmljZSB0byBrZXJuZWwuXFxuNjUyNjpcXHRcXHQgKi9cXG42NTI3OlxcdFxcbjY1Mjg6XFx0XFx0dHAtXFx1MDAzZXJ4X29wdC5zYXdfdHN0YW1wID0gMDtcXG42NTI5OlxcdFxcdHRwLVxcdTAwM2VyeF9vcHQuYWNjZWNuID0gMDtcXG42NTMwOlxcdFxcbjY1MzE6XFx0XFx0LypcXHRwcmVkX2ZsYWdzIGlzIDB4Uz8xMCBcXHUwMDNjXFx1MDAzYyAxNiArIHNuZF93bmRcXG42NTMyOlxcdFxcdCAqXFx0aWYgaGVhZGVyX3ByZWRpY3Rpb24gaXMgdG8gYmUgbWFkZVxcbjY1MzM6XFx0XFx0ICpcXHQnUycgd2lsbCBhbHdheXMgYmUgdHAtXFx1MDAzZXRjcF9oZWFkZXJfbGVuIFxcdTAwM2VcXHUwMDNlIDJcXG42NTM0OlxcdFxcdCAqXFx0Jz8nIHdpbGwgYmUgMCBmb3IgdGhlIGZhc3QgcGF0aCwgb3RoZXJ3aXNlIHByZWRfZmxhZ3MgaXMgMCB0b1xcbjY1MzU6XFx0XFx0ICogIHR1cm4gaXQgb2ZmXFx0KHdoZW4gdGhlcmUgYXJlIGhvbGVzIGluIHRoZSByZWNlaXZlXFxuNjUzNjpcXHRcXHQgKlxcdCBzcGFjZSBmb3IgaW5zdGFuY2UpXFxuNjUzNzpcXHRcXHQgKlxcdFBTSCBmbGFnIGlzIGlnbm9yZWQuXFxuNjUzODpcXHRcXHQgKi9cXG42NTM5OlxcdFxcbjY1NDA6XFx0XFx0aWYgKCh0Y3BfZmxhZ193b3JkKHRoKSBcXHUwMDI2IFRDUF9IUF9CSVRTKSA9PSB0cC1cXHUwMDNlcHJlZF9mbGFncyBcXHUwMDI2XFx1MDAyNlxcbjY1NDE6XFx0XFx0ICAgIFRDUF9TS0JfQ0Ioc2tiKS1cXHUwMDNlc2VxID09IHRwLVxcdTAwM2VyY3Zfbnh0IFxcdTAwMjZcXHUwMDI2XFxuNjU0MjpcXHRcXHQgICAgYmV0d2VlbihUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWFja19zZXEsIHRwLVxcdTAwM2VzbmRfdW5hLCB0cC1cXHUwMDNlc25kX254dCkpIHtcXG42NTQzOlxcdFxcdFxcdGludCB0Y3BfaGVhZGVyX2xlbiA9IHRwLVxcdTAwM2V0Y3BfaGVhZGVyX2xlbjtcXG42NTQ0OlxcdFxcdFxcdHMzMiBkZWx0YSA9IDA7XFxuNjU0NTpcXHRcXHRcXHRpbnQgZmxhZyA9IDA7XFxuNjU0NjpcXHRcXG42NTQ3OlxcdFxcdFxcdC8qIFRpbWVzdGFtcCBoZWFkZXIgcHJlZGljdGlvbjogdGNwX2hlYWRlcl9sZW5cXG42NTQ4OlxcdFxcdFxcdCAqIGlzIGF1dG9tYXRpY2FsbHkgZXF1YWwgdG8gdGgtXFx1MDAzZWRvZmYqNCBkdWUgdG8gcHJlZF9mbGFnc1xcbjY1NDk6XFx0XFx0XFx0ICogbWF0Y2guXFxuNjU1MDpcXHRcXHRcXHQgKi9cXG42NTUxOlxcdFxcbjY1NTI6XFx0XFx0XFx0LyogQ2hlY2sgdGltZXN0YW1wICovXFxuNjU1MzpcXHRcXHRcXHRpZiAodGNwX2hlYWRlcl9sZW4gPT0gc2l6ZW9mKHN0cnVjdCB0Y3BoZHIpICsgVENQT0xFTl9UU1RBTVBfQUxJR05FRCkge1xcbjY1NTQ6XFx0XFx0XFx0XFx0LyogTm8/IFNsb3cgcGF0aCEgKi9cXG42NTU1OlxcdFxcdFxcdFxcdGlmICghdGNwX3BhcnNlX2FsaWduZWRfdGltZXN0YW1wKHRwLCB0aCkpXFxuNjU1NjpcXHRcXHRcXHRcXHRcXHRnb3RvIHNsb3dfcGF0aDtcXG42NTU3OlxcdFxcbjY1NTg6XFx0XFx0XFx0XFx0ZGVsdGEgPSB0cC1cXHUwMDNlcnhfb3B0LnJjdl90c3ZhbCAtXFxuNjU1OTpcXHRcXHRcXHRcXHRcXHR0cC1cXHUwMDNlcnhfb3B0LnRzX3JlY2VudDtcXG42NTYwOlxcdFxcdFxcdFxcdC8qIElmIFBBV1MgZmFpbGVkLCBjaGVjayBpdCBtb3JlIGNhcmVmdWxseSBpbiBzbG93IHBhdGggKi9cXG42NTYxOlxcdFxcdFxcdFxcdGlmIChkZWx0YSBcXHUwMDNjIDApXFxuNjU2MjpcXHRcXHRcXHRcXHRcXHRnb3RvIHNsb3dfcGF0aDtcXG42NTYzOlxcdFxcbjY1NjQ6XFx0XFx0XFx0XFx0LyogRE8gTk9UIHVwZGF0ZSB0c19yZWNlbnQgaGVyZSwgaWYgY2hlY2tzdW0gZmFpbHNcXG42NTY1OlxcdFxcdFxcdFxcdCAqIGFuZCB0aW1lc3RhbXAgd2FzIGNvcnJ1cHRlZCBwYXJ0LCBpdCB3aWxsIHJlc3VsdFxcbjY1NjY6XFx0XFx0XFx0XFx0ICogaW4gYSBodW5nIGNvbm5lY3Rpb24gc2luY2Ugd2Ugd2lsbCBkcm9wIGFsbFxcbjY1Njc6XFx0XFx0XFx0XFx0ICogZnV0dXJlIHBhY2tldHMgZHVlIHRvIHRoZSBQQVdTIHRlc3QuXFxuNjU2ODpcXHRcXHRcXHRcXHQgKi9cXG42NTY5OlxcdFxcdFxcdH1cXG42NTcwOlxcdFxcbjY1NzE6XFx0XFx0XFx0aWYgKGxlbiBcXHUwMDNjPSB0Y3BfaGVhZGVyX2xlbikge1xcbjY1NzI6XFx0XFx0XFx0XFx0LyogQnVsayBkYXRhIHRyYW5zZmVyOiBzZW5kZXIgKi9cXG42NTczOlxcdFxcdFxcdFxcdGlmIChsZW4gPT0gdGNwX2hlYWRlcl9sZW4pIHtcXG42NTc0OlxcdFxcdFxcdFxcdFxcdC8qIFByZWRpY3RlZCBwYWNrZXQgaXMgaW4gd2luZG93IGJ5IGRlZmluaXRpb24uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA4OjQ2OjQ0Ljk4NDUwNTc0NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU1MzIxMDY0NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVjZW50IFRDUCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhhdCBwYXRjaCB0byBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgbG9va3MgaW50ZXJlc3RpbmcuIFNwZWNpZmljYWxseSwgdGhhdCBmYXN0LXBhdGggY2hlY2suLi4gYmVmb3JlIGl0IHdhcyBgIWFmdGVyKFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VhY2tfc2VxLCB0cC1cdTAwM2VzbmRfbnh0KWAsIGFuZCBub3cgaXQncyBgYmV0d2VlbihUQ1BfU0tCX0NCKHNrYiktXHUwMDNlYWNrX3NlcSwgdHAtXHUwMDNlc25kX3VuYSwgdHAtXHUwMDNlc25kX254dClgLiBFc3NlbnRpYWxseSwgdGhleSdyZSB0aWdodGVuaW5nIHVwIHRoZSBjcml0ZXJpYSBmb3IgdGhlIGZhc3QgcGF0aCwgbWFraW5nIHN1cmUgd2UgZG9uJ3QgcHJlbWF0dXJlbHkgYWNjZXB0IGFuIG9sZCBBQ0suIE1ha2VzIHNlbnNlLiBJZiBgYWNrX3NlcWAgaXMgKmxlc3MqIHRoYW4gYHNuZF91bmFgLCBpdCdzIHN0YWxlIGFuZCBzaG91bGRuJ3QgYmUgc2hvcnRjdXR0aW5nIHRocm91Z2ggdGhlIHByZWRpY3Rpb24gcGF0aC4gVGhhdCBieXBhc3NlcyB0aGUgcHJvcGVyIFJGQyA1OTYxIHZhbGlkYXRpb24sIGFuZCB3ZSBjb3VsZCBlbmQgdXAgd2l0aCBhIGNoYWxsZW5nZSBBQ0sgYmVpbmcgc2VudCBpbmNvcnJlY3RseS5cblxuTm93LCBpcyB0aGlzIGV2ZW4gKnJlYWNoYWJsZSogY29kZT8gQWJzb2x1dGVseS4gYHRjcF9yY3ZfZXN0YWJsaXNoZWRgIGlzIHRoZSB3b3JraG9yc2UgZm9yIGVzdGFibGlzaGVkIFRDUCBjb25uZWN0aW9ucyBpbiB0aGUgTGludXgga2VybmVsIChgbmV0L2lwdjQvdGNwX2lucHV0LmNgKS4gSXQncyB0aGUgY2VudHJhbCBwb2ludCBmb3IgaGFuZGxpbmcgaW5jb21pbmcgZGF0YSBvbiBlc3RhYmxpc2hlZCBzb2NrZXRzIOKAkyB5b3VyIHN0YW5kYXJkIGxvb3BiYWNrLCB0dW4vdGFwLCBvciBuZXRkZXYgY29tbXVuaWNhdGlvbiBhbGwgZ28gdGhyb3VnaCBoZXJlLiBHaXZlbiBpdHMgY29yZSBuZXR3b3JraW5nIG5hdHVyZSwgdGhpcyBpcyAqZGVmaW5pdGVseSogYW4gYXJlYSB3b3J0aCBmdXp6aW5nLCBhbmQgaXQgbWFrZXMgaXQgYSBnb29kIHRhcmdldCBmb3IgYW5hbHlzaXMuXG5cbkkgc2hvdWxkIHZlcmlmeSB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgaW4gcGxhY2UgZm9yIHRoZSBgbmV0L2lwdjRgIHN0YWNrLCBqdXN0IHRvIGJlIHN1cmUuIEknbSBwcmV0dHkgc3VyZSBgQ09ORklHX0lORVRgIGlzIHRoZSBzdGFuZGFyZCBmb3IgSVB2NC9UQ1AsIGJ1dCBsZXQncyBjaGVjayB0aGUgS2NvbmZpZyBmb3IgYG5ldC9pcHY0L3RjcF9pbnB1dC5jYCB0byBiZSBjb21wbGV0ZWx5IHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDkwLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDg6NDY6NTAuNTE2NjE1ODEyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTM0NTE3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfaW5wdXRcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlPTY9b2JqLXkgICAgIDo9IHJvdXRlLm8gaW5ldHBlZXIubyBwcm90b2NvbC5vIFxcXFxcXG4tLVxcbm5ldC9pcHY0L01ha2VmaWxlLTktXFx0ICAgICBpbmV0X3RpbWV3YWl0X3NvY2subyBpbmV0X2Nvbm5lY3Rpb25fc29jay5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxMDpcXHQgICAgIHRjcC5vIHRjcF9pbnB1dC5vIHRjcF9vdXRwdXQubyB0Y3BfdGltZXIubyB0Y3BfaXB2NC5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xMS1cXHQgICAgIHRjcF9taW5pc29ja3MubyB0Y3BfY29uZy5vIHRjcF9tZXRyaWNzLm8gdGNwX2Zhc3RvcGVuLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwODo0Njo1MC42MzE5NjUwNjFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NDc5NTU4MzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCByZWxhdGVzIHRvIGNoZWNraW5nIHRob3NlIGNvbmZpZ3VyYXRpb24gZmlsZXM6XG5cbioqSW52ZXN0aWdhdGluZyBJUHY0IEJ1aWxkIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyBJUHY0IGlzIGJ1aWx0IGluIHRoaXMga2VybmVsLiBUaGUgYG5ldC9pcHY0L01ha2VmaWxlYCBpcyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCDigJMgSSBuZWVkIHRvIHNlZSBob3cgdGhlIG9iamVjdCBmaWxlcyBhcmUgYnJvdWdodCBpbi4gU3BlY2lmaWNhbGx5LCBJJ20gaW50ZXJlc3RlZCBpbiB0aGUgYG9iai15YCBkaXJlY3RpdmVzOyB0aGF0J3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZC4gSSdsbCBuZWVkIHRvIGNvcnJlbGF0ZSB0aGVzZSB3aXRoIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE15IGh1bmNoIGlzIHRoYXQgYENPTkZJR19JTkVUYCBpcyB0aGUgbWFpbiBlbmFibGVyIGZvciB0aGUgZW50aXJlIElQdjQgc3RhY2suXG5cbkJ1dCB3aGVyZSBkb2VzIGBDT05GSUdfSU5FVGAgZ2V0IGl0cyB2YWx1ZSBmcm9tPyBOb3cgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzLCBlaXRoZXIgdGhlIHRvcC1sZXZlbCBgbmV0L0tjb25maWdgIHdoaWNoIGlzIG1vcmUgbGlrZWx5LCBvciBwZXJoYXBzIHRoZSBJUHY0IHNwZWNpZmljIG9uZSBhdCBgbmV0L2lwdjQvS2NvbmZpZ2AuIFRob3NlIGFyZSB0aGUgZmlsZXMgdGhhdCBkZWZpbmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgd2lsbCBnaXZlIG1lIHRoZSBjbGVhcmVzdCBwaWN0dXJlIG9mIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCB0byBpbmNsdWRlIHRoZXNlIElQdjQgY29tcG9uZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMyNCwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA4OjQ2OjU3LjExMTUyNjUyNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTkwNDE5ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElORVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz05OT1jb25maWcgTkVUX0hBTkRTSEFLRV9LVU5JVF9URVNUXFxuLS1cXG5uZXQvS2NvbmZpZy0xMTMtXFxubmV0L0tjb25maWc6MTE0OmNvbmZpZyBJTkVUXFxubmV0L0tjb25maWctMTE1LVxcdGJvb2wgXFxcIlRDUC9JUCBuZXR3b3JraW5nXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zMzA9Y29uZmlnIE5FVF9GT1VfSVBfVFVOTkVMU1xcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zMzgtXFxubmV0L2lwdjQvS2NvbmZpZzozMzk6Y29uZmlnIElORVRfQUhcXG5uZXQvaXB2NC9LY29uZmlnLTM0MC1cXHR0cmlzdGF0ZSBcXFwiSVA6IEFIIHRyYW5zZm9ybWF0aW9uXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zNTMtXFxubmV0L2lwdjQvS2NvbmZpZzozNTQ6Y29uZmlnIElORVRfRVNQXFxubmV0L2lwdjQvS2NvbmZpZy0zNTUtXFx0dHJpc3RhdGUgXFxcIklQOiBFU1AgdHJhbnNmb3JtYXRpb25cXFwiXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTM2OC1cXG5uZXQvaXB2NC9LY29uZmlnOjM2OTpjb25maWcgSU5FVF9FU1BfT0ZGTE9BRFxcbm5ldC9pcHY0L0tjb25maWctMzcwLVxcdHRyaXN0YXRlIFxcXCJJUDogRVNQIHRyYW5zZm9ybWF0aW9uIG9mZmxvYWRcXFwiXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTM4MS1cXG5uZXQvaXB2NC9LY29uZmlnOjM4Mjpjb25maWcgSU5FVF9FU1BJTlRDUFxcbm5ldC9pcHY0L0tjb25maWctMzgzLVxcdGJvb2wgXFxcIklQOiBFU1AgaW4gVENQIGVuY2Fwc3VsYXRpb24gKFJGQyA4MjI5KVxcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzkzLVxcbm5ldC9pcHY0L0tjb25maWc6Mzk0OmNvbmZpZyBJTkVUX0lQQ09NUFxcbm5ldC9pcHY0L0tjb25maWctMzk1LVxcdHRyaXN0YXRlIFxcXCJJUDogSVBDb21wIHRyYW5zZm9ybWF0aW9uXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy00MDMtXFxubmV0L2lwdjQvS2NvbmZpZzo0MDQ6Y29uZmlnIElORVRfVEFCTEVfUEVSVFVSQl9PUkRFUlxcbm5ldC9pcHY0L0tjb25maWctNDA1LVxcdGludCBcXFwiSU5FVDogU291cmNlIHBvcnQgcGVydHVyYmF0aW9uIHRhYmxlIHNpemUgKGFzIHBvd2VyIG9mIDIpXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctNDEzLVxcbm5ldC9pcHY0L0tjb25maWc6NDE0OmNvbmZpZyBJTkVUX1hGUk1fVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZy00MTUtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctNDE4LVxcbm5ldC9pcHY0L0tjb25maWc6NDE5OmNvbmZpZyBJTkVUX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWctNDIwLVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTQyMi1cXG5uZXQvaXB2NC9LY29uZmlnOjQyMzpjb25maWcgSU5FVF9ESUFHXFxubmV0L2lwdjQvS2NvbmZpZy00MjQtXFx0dHJpc3RhdGUgXFxcIklORVQ6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctNDM0LVxcbm5ldC9pcHY0L0tjb25maWc6NDM1OmNvbmZpZyBJTkVUX1RDUF9ESUFHXFxubmV0L2lwdjQvS2NvbmZpZy00MzYtXFx0ZGVwZW5kcyBvbiBJTkVUX0RJQUdcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctNDM4LVxcbm5ldC9pcHY0L0tjb25maWc6NDM5OmNvbmZpZyBJTkVUX1VEUF9ESUFHXFxubmV0L2lwdjQvS2NvbmZpZy00NDAtXFx0dHJpc3RhdGUgXFxcIlVEUDogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy00NDYtXFxubmV0L2lwdjQvS2NvbmZpZzo0NDc6Y29uZmlnIElORVRfUkFXX0RJQUdcXG5uZXQvaXB2NC9LY29uZmlnLTQ0OC1cXHR0cmlzdGF0ZSBcXFwiUkFXOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTQ1NC1cXG5uZXQvaXB2NC9LY29uZmlnOjQ1NTpjb25maWcgSU5FVF9ESUFHX0RFU1RST1lcXG5uZXQvaXB2NC9LY29uZmlnLTQ1Ni1cXHRib29sIFxcXCJJTkVUOiBhbGxvdyBwcml2aWxlZ2VkIHByb2Nlc3MgdG8gYWRtaW5pc3RyYXRpdmVseSBjbG9zZSBzb2NrZXRzXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0zOT1jb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy00Ni1cXG5uZXQvaXB2Ni9LY29uZmlnOjQ3OmNvbmZpZyBJTkVUNl9BSFxcbm5ldC9pcHY2L0tjb25maWctNDgtXFx0dHJpc3RhdGUgXFxcIklQdjY6IEFIIHRyYW5zZm9ybWF0aW9uXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy02MS1cXG5uZXQvaXB2Ni9LY29uZmlnOjYyOmNvbmZpZyBJTkVUNl9FU1BcXG5uZXQvaXB2Ni9LY29uZmlnLTYzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBFU1AgdHJhbnNmb3JtYXRpb25cXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTc2LVxcbm5ldC9pcHY2L0tjb25maWc6Nzc6Y29uZmlnIElORVQ2X0VTUF9PRkZMT0FEXFxubmV0L2lwdjYvS2NvbmZpZy03OC1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogRVNQIHRyYW5zZm9ybWF0aW9uIG9mZmxvYWRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTg5LVxcbm5ldC9pcHY2L0tjb25maWc6OTA6Y29uZmlnIElORVQ2X0VTUElOVENQXFxubmV0L2lwdjYvS2NvbmZpZy05MS1cXHRib29sIFxcXCJJUHY2OiBFU1AgaW4gVENQIGVuY2Fwc3VsYXRpb24gKFJGQyA4MjI5KVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTAxLVxcbm5ldC9pcHY2L0tjb25maWc6MTAyOmNvbmZpZyBJTkVUNl9JUENPTVBcXG5uZXQvaXB2Ni9LY29uZmlnLTEwMy1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogSVBDb21wIHRyYW5zZm9ybWF0aW9uXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xMjA9Y29uZmlnIElQVjZfSUxBXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE0MC1cXG5uZXQvaXB2Ni9LY29uZmlnOjE0MTpjb25maWcgSU5FVDZfWEZSTV9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTE0Mi1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xNDUtXFxubmV0L2lwdjYvS2NvbmZpZzoxNDY6Y29uZmlnIElORVQ2X1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMTQ3LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvbXB0Y3AvS2NvbmZpZz0xND1pZiBNUFRDUFxcbm5ldC9tcHRjcC9LY29uZmlnLTE1LVxcbm5ldC9tcHRjcC9LY29uZmlnOjE2OmNvbmZpZyBJTkVUX01QVENQX0RJQUdcXG5uZXQvbXB0Y3AvS2NvbmZpZy0xNy1cXHRkZXBlbmRzIG9uIElORVRfRElBR1xcbi0tXFxubmV0L3BzcC9LY29uZmlnLTQtI1xcbm5ldC9wc3AvS2NvbmZpZzo1OmNvbmZpZyBJTkVUX1BTUFxcbm5ldC9wc3AvS2NvbmZpZy02LVxcdGJvb2wgXFxcIlBTUCBTZWN1cml0eSBQcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L3NjdHAvS2NvbmZpZz02OD1lbmRjaG9pY2VcXG5uZXQvc2N0cC9LY29uZmlnLTY5LVxcbm5ldC9zY3RwL0tjb25maWc6NzA6Y29uZmlnIElORVRfU0NUUF9ESUFHXFxubmV0L3NjdHAvS2NvbmZpZy03MS1cXHRkZXBlbmRzIG9uIElORVRfRElBR1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwODo0Njo1Ny4zMzA1NzI2N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2NTAxNjUzNjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29udGV4dCBvZiBhIFRDUCBSZWNlaXZlIEZ1bmN0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBzdGFydGluZyBwb2ludCBpcyBgRm9jdXNTeW1ib2xzYCDigJMgdGhhdCdzIG91ciBpbml0aWFsIGNsdWUuIEl0IGRpcmVjdHMgdXMgdG8gdGhlIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCBmdW5jdGlvbi4gSXMgaXQgYSBnZW5lcmFsLCBjb3JlIGZ1bmN0aW9uIG9yIHNvbWV0aGluZyBtb3JlIHNwZWNpZmljPyBBaCwgcmlnaHQsIGl0J3MgcHJldHR5IGNsZWFyIHRoaXMgaXMgZGVkaWNhdGVkIHRvIGhhbmRsaW5nIFRDUCBwYWNrZXRzIHdoZW4gYSBjb25uZWN0aW9uIGhhcyBiZWVuIGVzdGFibGlzaGVkLiBTbywgaXQncyBub3QgYSBnZW5lcmljIGxvdy1sZXZlbCBwcmltaXRpdmU7IGl0J3Mgd2l0aGluIGEgaGlnaGVyIGxheWVyIG9mIFRDUCBwcm9jZXNzaW5nLlxuXG5Ob3csIHRoZSBuYXR1cmFsIG5leHQgc3RlcDogd2hhdCBvdGhlciBmdW5jdGlvbnMgaW4gYHRjcF9pbnB1dC5jYCBtaWdodCBiZSB0b3VjaGVkIG9yIGhhdmUgYSBjbG9zZSByZWxhdGlvbnNoaXAgdG8gd2hhdCBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgaXMgZG9pbmc/IEl0IGxvb2tzIGxpa2UgYHRjcF9yY3ZfZXN0YWJsaXNoZWRgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQncyBiZWVuIGFsdGVyZWQgaW4gdGhlIGNvZGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBhIFwic3RhbmRhcmRcIiBzeW1ib2wgd2UncmUgZGVhbGluZyB3aXRoIGhlcmUsIHNvIGEgcXVpY2sgZ3JlcCBzaG91bGQgY29uZmlybSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiB0aGUgZXhwZWN0ZWQgVENQL0lQIGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTQxLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA4OjQ3OjEzLjgzMjIyODk2M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY1NzI4NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX3Jjdl9lc3RhYmxpc2hlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvdGNwX2lucHV0LmM9NjMyMj1zdGF0aWMgYm9vbCB0Y3BfdmFsaWRhdGVfaW5jb21pbmcoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNjQ5OS0gKi9cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo2NTAwOnZvaWQgdGNwX3Jjdl9lc3RhYmxpc2hlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNjUwMS17XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTE4MzA9aW50IHRjcF92NF9kb19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0xODUzLVxcdFxcdH1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjE4NTQ6XFx0XFx0dGNwX3Jjdl9lc3RhYmxpc2hlZChzaywgc2tiKTtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTE4NTUtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTE5MDE9ZW51bSBza2JfZHJvcF9yZWFzb24gdGNwX2FkZF9iYWNrbG9nKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMTk4MC1cXHRcXHQvKiBXZSBoYXZlIHRvIHVwZGF0ZSBib3RoIFRDUF9TS0JfQ0IodGFpbCktXFx1MDAzZXRjcF9mbGFncyBhbmRcXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjE5ODE6XFx0XFx0ICogdGh0YWlsLVxcdTAwM2VmaW4sIHNvIHRoYXQgdGhlIGZhc3QgcGF0aCBpbiB0Y3BfcmN2X2VzdGFibGlzaGVkKClcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTE5ODItXFx0XFx0ICogaXMgbm90IGVudGVyZWQgaWYgd2UgYXBwZW5kIGEgcGFja2V0IHdpdGggYSBGSU4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA4OjQ3OjEzLjkyODgwOTEwMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODU4NDI1NzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIGEgVENQIFBhdGNoKipcblxuT2theSwgc28gdGhlIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCBzeW1ib2wgaXMgdGhlIGNydWNpYWwgcG9pbnQgaGVyZS4gVGhhdCdzIHdoZXJlIHRoZXkgdGlnaHRlbmVkIHVwIHRoZSBoZWFkZXIgcHJlZGljdGlvbiBsb2dpYy4gVGhlIGNoYW5nZSBpcyBzcGVjaWZpY2FsbHkgYXJvdW5kIHZhbGlkYXRpbmcgdGhlIGBUQ1BfU0tCX0NCKHNrYiktXHUwMDNlYWNrX3NlcWAgdmFsdWUuIEluc3RlYWQgb2YganVzdCBzYXlpbmcgaXQncyAqbm90KiBcImFmdGVyXCIgYSBjZXJ0YWluIHNlcXVlbmNlLCB0aGV5J3JlIG5vdyByZXF1aXJpbmcgaXQgdG8gYmUgKmJldHdlZW4qIGB0cC1cdTAwM2VzbmRfdW5hYCBhbmQgYHRwLVx1MDAzZXNuZF9ueHRgLiBUaGF0J3MgYSBzaWduaWZpY2FudCBzaGlmdCBpbiB0aGUgZmFzdC1wYXRoIGNvbmRpdGlvbi5cblxuTGV0IG1lIGp1c3QgcnVuIHRocm91Z2ggdGhlIGNoZWNrbGlzdCBpbiBteSBoZWFkLi4uIFllcCwgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBUaGUgcGF0Y2ggZGlyZWN0bHkgbW9kaWZpZXMgVENQIHBhY2tldCBwcm9jZXNzaW5nLCBzcGVjaWZpY2FsbHkgd2l0aGluIGB0Y3BfcmN2X2VzdGFibGlzaGVkYC4gSXQncyB0aWdodGVuaW5nIHRoZSBmYXN0LXBhdGggY29uZGl0aW9uLCBzbyB0aGlzIGRlZmluaXRlbHkgdG91Y2hlcyBjb3JlIG5ldHdvcmtpbmcgbG9naWMgYW5kIGlzIGEgcmVhY2hhYmxlIHBhdGgsIGl0J3Mgbm90IHNvbWUgb2JzY3VyZSBjb3JuZXIgY2FzZS4gVGhlIHJlYXNvbmluZyBjaGVja3Mgb3V0LlxuXG5UaGUgbWFpbiBmb2N1cyBoZXJlIGlzIG9idmlvdXNseSBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgaXRzZWxmLlxuXG5BbmQgZmluYWxseSwgd2UgbmVlZCBgSU5FVGAgZW5hYmxlZCB0byBzZWUgdGhpcy5cblxuQWxyaWdodCwgbG9va3MgZ29vZC4gTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTEwLCJPdXRwdXRUb2tlbnMiOjEwNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwODo0NzoxNi43ODcyMzg4MTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjI0MzU4MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfcmN2X2VzdGFibGlzaGVkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgVENQIGlucHV0IHByb2Nlc3NpbmcgaW4gdGNwX3Jjdl9lc3RhYmxpc2hlZCgpIGJ5IHRpZ2h0ZW5pbmcgdGhlIGZhc3QtcGF0aCBoZWFkZXIgcHJlZGljdGlvbiBjaGVjayB0byBlbnN1cmUgaW5jb21pbmcgQUNLIHNlcXVlbmNlcyBmYWxsIGJldHdlZW4gc25kX3VuYSBhbmQgc25kX254dCwgcHJldmVudGluZyBvdXQtb2Ytb3JkZXIvZXhjZXNzaXZlbHkgb2xkIEFDS3MgZnJvbSBpbXByb3Blcmx5IHRha2luZyB0aGUgZmFzdCBwYXRoLiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIFRDUCBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjcF9yY3ZfZXN0YWJsaXNoZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBUQ1AgaW5wdXQgcHJvY2Vzc2luZyBpbiB0Y3BfcmN2X2VzdGFibGlzaGVkKCkgYnkgdGlnaHRlbmluZyB0aGUgZmFzdC1wYXRoIGhlYWRlciBwcmVkaWN0aW9uIGNoZWNrIHRvIGVuc3VyZSBpbmNvbWluZyBBQ0sgc2VxdWVuY2VzIGZhbGwgYmV0d2VlbiBzbmRfdW5hIGFuZCBzbmRfbnh0LCBwcmV2ZW50aW5nIG91dC1vZi1vcmRlci9leGNlc3NpdmVseSBvbGQgQUNLcyBmcm9tIGltcHJvcGVybHkgdGFraW5nIHRoZSBmYXN0IHBhdGguIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgVENQIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDg6NDc6MTYuOTQ5NjgyMzA3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTI5NTY1MzM1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA4OjQ3OjE2Ljk1MDE4NzExNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjU5Mjk1MTQ0NjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVENQIGhlYWRlciBwcmVkaWN0aW9uIGNvbmRpdGlvbiBpbiBgdGNwX3Jjdl9lc3RhYmxpc2hlZCgpYCBieSByZXBsYWNpbmcgYCFhZnRlcihUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWFja19zZXEsIHRwLVxcdTAwM2VzbmRfbnh0KWAgd2l0aCBgYmV0d2VlbihUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWFja19zZXEsIHRwLVxcdTAwM2VzbmRfdW5hLCB0cC1cXHUwMDNlc25kX254dClgIHRvIGVuc3VyZSBwYWNrZXRzIGNhcnJ5aW5nIGV4Y2Vzc2l2ZWx5IG9sZCBBQ0tzIGJ5cGFzcyB0aGUgZmFzdCBwYXRoIGFuZCBhcmUgaGFuZGxlZCBieSB0aGUgc2xvdyBwYXRoIGFjY29yZGluZyB0byBSRkMgNTk2MS5cXG5cXG5UaGlzIGNoYW5nZSB0b3VjaGVzIG9ubHkgc3RhbmRhcmQgVENQIHNlcXVlbmNlIG51bWJlciBjb21wYXJpc29uIGxvZ2ljIHVzaW5nIHdlbGwtZGVmaW5lZCwgaW5pdGlhbGl6ZWQgZmllbGRzIG9uIGBzdHJ1Y3Qgc29ja2AgYW5kIGBza19idWZmYC4gVGhlcmUgYXJlIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gZGF0YSB0cmFuc2ZlcnMgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTc0NDFmMzQ4YjY1NGJlNTVhMzczZDFkYzM3ZGUyZWFhMzBkYmVmNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMDg6NDY6MzYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaW5wdXQuYyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jXG5pbmRleCBkYWZmOTNkNTEzNDI4Li41N2ZlYzU4YTRmMTUzIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX2lucHV0LmNcbisrKyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jXG5AQCAtNjUzOSw3ICs2NTM5LDcgQEAgdm9pZCB0Y3BfcmN2X2VzdGFibGlzaGVkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcbiBcdGlmICgodGNwX2ZsYWdfd29yZCh0aCkgXHUwMDI2IFRDUF9IUF9CSVRTKSA9PSB0cC1cdTAwM2VwcmVkX2ZsYWdzIFx1MDAyNlx1MDAyNlxuIFx0ICAgIFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VzZXEgPT0gdHAtXHUwMDNlcmN2X254dCBcdTAwMjZcdTAwMjZcbi1cdCAgICAhYWZ0ZXIoVENQX1NLQl9DQihza2IpLVx1MDAzZWFja19zZXEsIHRwLVx1MDAzZXNuZF9ueHQpKSB7XG4rXHQgICAgYmV0d2VlbihUQ1BfU0tCX0NCKHNrYiktXHUwMDNlYWNrX3NlcSwgdHAtXHUwMDNlc25kX3VuYSwgdHAtXHUwMDNlc25kX254dCkpIHtcbiBcdFx0aW50IHRjcF9oZWFkZXJfbGVuID0gdHAtXHUwMDNldGNwX2hlYWRlcl9sZW47XG4gXHRcdHMzMiBkZWx0YSA9IDA7XG4gXHRcdGludCBmbGFnID0gMDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcmVqZWN0LW9sZC1hY2sucGt0IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3BhY2tldGRyaWxsL3RjcF9yZmM1OTYxX3JlamVjdC1vbGQtYWNrLnBrdFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjhlNzIyOTEyNzY3MGZcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yZWplY3Qtb2xkLWFjay5wa3RcbkBAIC0wLDAgKzEsMjMgQEBcbisvLyBUZXN0IHJlamVjdGlvbiBvZiBkYXRhIHNlZ21lbnRzIGNhcnJ5aW5nIGV4Y2Vzc2l2ZWx5IG9sZCBBQ0tzXG4rXG4rMCBzb2NrZXQoLi4uLCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApID0gM1xuKyswIHNldHNvY2tvcHQoMywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCBbMV0sIDQpID0gMFxuKyswIGJpbmQoMywgLi4uLCAuLi4pID0gMFxuKyswIGxpc3RlbigzLCAxMDI0KSA9IDBcbitcbisvLyAtLS0tLS0tLS0tLS0tLS0tIEhhbmRzaGFrZSAtLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG4rKzAgXHUwMDNjIFMgMDowKDApIHdpbiA2NTUzNVxuKyswIFx1MDAzZSBTLiAwOjAoMCkgYWNrIDEgXHUwMDNjLi4uXHUwMDNlXG4rKzAgXHUwMDNjIC4gMToxKDApIGFjayAxIHdpbiA2NTUzNVxuKyswIGFjY2VwdCgzLCAuLi4sIC4uLikgPSA0XG4rXG4rLy8gUG9wdWxhdGUgcmVjZWl2ZSBtZW1vcnkgc28gdGhlIGZvbGxvd2luZyBzZWdtZW50IGNhbiB1c2VcbisvLyBoZWFkZXIgcHJlZGljdGlvbi5cbisrMCBcdTAwM2MgUC4gMTo1MDEoNTAwKSBhY2sgMSB3aW4gNjU1MzVcbisrMCBcdTAwM2UgLiAxOjEoMCkgYWNrIDUwMVxuK1xuKy8vIFNlbmQgYW4gaW4tc2VxdWVuY2UgZGF0YSBzZWdtZW50IGNhcnJ5aW5nIGFuIGV4Y2Vzc2l2ZWx5IG9sZCBBQ0suXG4rKzAgXHUwMDNjIFAuIDUwMToxNTAxKDEwMDApIGFjayAyNzk0OTY3Mzk3IHdpbiA2NTUzNVxuK1xuKy8vIENoYWxsZW5nZSBBQ0s7IFJDVi5OWFQgbXVzdCByZW1haW4gNTAxLlxuKyswIFx1MDAzZSAuIDE6MSgwKSBhY2sgNTAxXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwODo0NzoxNi45NTAxODk0NTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjA0NDExNzk1OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUQ1AgUmVjZWl2ZSBFc3RhYmxpc2hlZCBGdW5jdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBMb29rcyBsaWtlIHdlJ3JlIHplcm9pbmcgaW4gb24gYSBjaGFuZ2Ugd2l0aGluIGBuZXQvaXB2NC90Y3BfaW5wdXQuY2AsIHNwZWNpZmljYWxseSB0aGUgYHRjcF9yY3ZfZXN0YWJsaXNoZWRgIGZ1bmN0aW9uLiBUaGUgZGlmZiBoaWdobGlnaHRzIGEgbW9kaWZpY2F0aW9uIHRvIHRoZSBsb2dpYyBzdXJyb3VuZGluZyBhY2tub3dsZWRnbWVudCBwcm9jZXNzaW5nLiBMZXQncyBzZWUuLi4gaXQgYXBwZWFycyB0aGUgb3JpZ2luYWwgY29kZSBjaGVja2VkIGlmIHRoZSBhY2tub3dsZWRnZWQgc2VxdWVuY2UgbnVtYmVyIChgYWNrX3NlcWApIHdhcyAqbm90KiBhZnRlciBgc25kX254dGAuIFRoZSBwYXRjaCwgaG93ZXZlciwgcmVmYWN0b3JzIHRoaXMgdG8gdXNlIGBiZXR3ZWVuYCwgY2hlY2tpbmcgaWYgYGFja19zZXFgIGlzIGJldHdlZW4gYHNuZF91bmFgIGFuZCBgc25kX254dGAuIFRoaXMgaXMgYSBzdWJ0bGUsIGJ1dCBwb3RlbnRpYWxseSBzaWduaWZpY2FudCwgc2hpZnQgaW4gaG93IHdlIGhhbmRsZSBhY2tub3dsZWRnbWVudHMuIEEgcGFja2V0ZHJpbGwgdGVzdCBpcyBsaWtlbHkgYWRkZWQgdG8gdGVzdCB0aGlzIG5vdy4gV2UgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgY29udGV4dCBvZiB0aGlzIGZ1bmN0aW9uIHRvIGZ1bGx5IGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMsIHRob3VnaCwgc28gbGV0J3MgbmF2aWdhdGUgdG8gYHRjcF9yY3ZfZXN0YWJsaXNoZWRgIHdpdGhpbiB0aGUgc2FtZSBmaWxlIHRvIGdldCB0aGUgY29tcGxldGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYyOCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA4OjQ3OjM3LjM5MTM3MjE0MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODkwNDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY0L3RjcF9pbnB1dC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY1MjUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjY1MjU6XFx0XFx0ICpcXHRXZSBkbyBjaGVja3N1bSBhbmQgY29weSBhbHNvIGJ1dCBmcm9tIGRldmljZSB0byBrZXJuZWwuXFxuNjUyNjpcXHRcXHQgKi9cXG42NTI3OlxcdFxcbjY1Mjg6XFx0XFx0dHAtXFx1MDAzZXJ4X29wdC5zYXdfdHN0YW1wID0gMDtcXG42NTI5OlxcdFxcdHRwLVxcdTAwM2VyeF9vcHQuYWNjZWNuID0gMDtcXG42NTMwOlxcdFxcbjY1MzE6XFx0XFx0LypcXHRwcmVkX2ZsYWdzIGlzIDB4Uz8xMCBcXHUwMDNjXFx1MDAzYyAxNiArIHNuZF93bmRcXG42NTMyOlxcdFxcdCAqXFx0aWYgaGVhZGVyX3ByZWRpY3Rpb24gaXMgdG8gYmUgbWFkZVxcbjY1MzM6XFx0XFx0ICpcXHQnUycgd2lsbCBhbHdheXMgYmUgdHAtXFx1MDAzZXRjcF9oZWFkZXJfbGVuIFxcdTAwM2VcXHUwMDNlIDJcXG42NTM0OlxcdFxcdCAqXFx0Jz8nIHdpbGwgYmUgMCBmb3IgdGhlIGZhc3QgcGF0aCwgb3RoZXJ3aXNlIHByZWRfZmxhZ3MgaXMgMCB0b1xcbjY1MzU6XFx0XFx0ICogIHR1cm4gaXQgb2ZmXFx0KHdoZW4gdGhlcmUgYXJlIGhvbGVzIGluIHRoZSByZWNlaXZlXFxuNjUzNjpcXHRcXHQgKlxcdCBzcGFjZSBmb3IgaW5zdGFuY2UpXFxuNjUzNzpcXHRcXHQgKlxcdFBTSCBmbGFnIGlzIGlnbm9yZWQuXFxuNjUzODpcXHRcXHQgKi9cXG42NTM5OlxcdFxcbjY1NDA6XFx0XFx0aWYgKCh0Y3BfZmxhZ193b3JkKHRoKSBcXHUwMDI2IFRDUF9IUF9CSVRTKSA9PSB0cC1cXHUwMDNlcHJlZF9mbGFncyBcXHUwMDI2XFx1MDAyNlxcbjY1NDE6XFx0XFx0ICAgIFRDUF9TS0JfQ0Ioc2tiKS1cXHUwMDNlc2VxID09IHRwLVxcdTAwM2VyY3Zfbnh0IFxcdTAwMjZcXHUwMDI2XFxuNjU0MjpcXHRcXHQgICAgYmV0d2VlbihUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWFja19zZXEsIHRwLVxcdTAwM2VzbmRfdW5hLCB0cC1cXHUwMDNlc25kX254dCkpIHtcXG42NTQzOlxcdFxcdFxcdGludCB0Y3BfaGVhZGVyX2xlbiA9IHRwLVxcdTAwM2V0Y3BfaGVhZGVyX2xlbjtcXG42NTQ0OlxcdFxcdFxcdHMzMiBkZWx0YSA9IDA7XFxuNjU0NTpcXHRcXHRcXHRpbnQgZmxhZyA9IDA7XFxuNjU0NjpcXHRcXG42NTQ3OlxcdFxcdFxcdC8qIFRpbWVzdGFtcCBoZWFkZXIgcHJlZGljdGlvbjogdGNwX2hlYWRlcl9sZW5cXG42NTQ4OlxcdFxcdFxcdCAqIGlzIGF1dG9tYXRpY2FsbHkgZXF1YWwgdG8gdGgtXFx1MDAzZWRvZmYqNCBkdWUgdG8gcHJlZF9mbGFnc1xcbjY1NDk6XFx0XFx0XFx0ICogbWF0Y2guXFxuNjU1MDpcXHRcXHRcXHQgKi9cXG42NTUxOlxcdFxcbjY1NTI6XFx0XFx0XFx0LyogQ2hlY2sgdGltZXN0YW1wICovXFxuNjU1MzpcXHRcXHRcXHRpZiAodGNwX2hlYWRlcl9sZW4gPT0gc2l6ZW9mKHN0cnVjdCB0Y3BoZHIpICsgVENQT0xFTl9UU1RBTVBfQUxJR05FRCkge1xcbjY1NTQ6XFx0XFx0XFx0XFx0LyogTm8/IFNsb3cgcGF0aCEgKi9cXG42NTU1OlxcdFxcdFxcdFxcdGlmICghdGNwX3BhcnNlX2FsaWduZWRfdGltZXN0YW1wKHRwLCB0aCkpXFxuNjU1NjpcXHRcXHRcXHRcXHRcXHRnb3RvIHNsb3dfcGF0aDtcXG42NTU3OlxcdFxcbjY1NTg6XFx0XFx0XFx0XFx0ZGVsdGEgPSB0cC1cXHUwMDNlcnhfb3B0LnJjdl90c3ZhbCAtXFxuNjU1OTpcXHRcXHRcXHRcXHRcXHR0cC1cXHUwMDNlcnhfb3B0LnRzX3JlY2VudDtcXG42NTYwOlxcdFxcdFxcdFxcdC8qIElmIFBBV1MgZmFpbGVkLCBjaGVjayBpdCBtb3JlIGNhcmVmdWxseSBpbiBzbG93IHBhdGggKi9cXG42NTYxOlxcdFxcdFxcdFxcdGlmIChkZWx0YSBcXHUwMDNjIDApXFxuNjU2MjpcXHRcXHRcXHRcXHRcXHRnb3RvIHNsb3dfcGF0aDtcXG42NTYzOlxcdFxcbjY1NjQ6XFx0XFx0XFx0XFx0LyogRE8gTk9UIHVwZGF0ZSB0c19yZWNlbnQgaGVyZSwgaWYgY2hlY2tzdW0gZmFpbHNcXG42NTY1OlxcdFxcdFxcdFxcdCAqIGFuZCB0aW1lc3RhbXAgd2FzIGNvcnJ1cHRlZCBwYXJ0LCBpdCB3aWxsIHJlc3VsdFxcbjY1NjY6XFx0XFx0XFx0XFx0ICogaW4gYSBodW5nIGNvbm5lY3Rpb24gc2luY2Ugd2Ugd2lsbCBkcm9wIGFsbFxcbjY1Njc6XFx0XFx0XFx0XFx0ICogZnV0dXJlIHBhY2tldHMgZHVlIHRvIHRoZSBQQVdTIHRlc3QuXFxuNjU2ODpcXHRcXHRcXHRcXHQgKi9cXG42NTY5OlxcdFxcdFxcdH1cXG42NTcwOlxcdFxcbjY1NzE6XFx0XFx0XFx0aWYgKGxlbiBcXHUwMDNjPSB0Y3BfaGVhZGVyX2xlbikge1xcbjY1NzI6XFx0XFx0XFx0XFx0LyogQnVsayBkYXRhIHRyYW5zZmVyOiBzZW5kZXIgKi9cXG42NTczOlxcdFxcdFxcdFxcdGlmIChsZW4gPT0gdGNwX2hlYWRlcl9sZW4pIHtcXG42NTc0OlxcdFxcdFxcdFxcdFxcdC8qIFByZWRpY3RlZCBwYWNrZXQgaXMgaW4gd2luZG93IGJ5IGRlZmluaXRpb24uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA4OjQ3OjM3LjM5MzI2NzQ1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM4ODUyMDQyNTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRDUCBGYXN0IFBhdGggT3B0aW1pemF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIGNoYW5nZS4gSW4gdGhlIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCBmdW5jdGlvbiwgd2UncmUgcmVmaW5pbmcgaG93IHdlIGhhbmRsZSBpbmNvbWluZyBBQ0tzLiBCZWZvcmUsIHRoZSBmYXN0IHBhdGggc2ltcGx5IGNoZWNrZWQgaWYgdGhlIEFDSyBzZXF1ZW5jZSBudW1iZXIgd2FzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgc25kX254dGAuIFRoYXQgd2FzIHRvbyBsYXg7IEFDS3MgY291bGQgYmUgKnN0YWxlKiDigJMgb2xkZXIgdGhhbiBgc25kX3VuYWAhIFRoaXMgaXMgcHJvYmxlbWF0aWMsIGFzIGl0IGJ5cGFzc2VzIGNyaXRpY2FsIFJGQyA1OTYxIHZhbGlkYXRpb24gKFRDUCBoZWFkZXIgcHJlZGljdGlvbiBmYXN0IHBhdGgpLiBOb3csIHdlJ3JlIHVzaW5nIGBiZXR3ZWVuKFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VhY2tfc2VxLCB0cC1cdTAwM2VzbmRfdW5hLCB0cC1cdTAwM2VzbmRfbnh0KWAuIElmIHRoZSBBQ0sgZmFsbHMgb3V0c2lkZSB0aGlzIHdpbmRvdyAob2xkZXIgdGhhbiBgc25kX3VuYWApLCB3ZSBjb3JyZWN0bHkgcm91dGUgaXQgdG8gdGhlIHNsb3cgcGF0aCBmb3IgcHJvcGVyIFJGQyA1OTYxIGNoZWNrcyBsaWtlIGB0Y3BfdmFsaWRhdGVfaW5jb21pbmdgIGFuZCBgdGNwX2Fja2AuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGFyZSB3ZSBpbnRyb2R1Y2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB3aXRoIHRoaXMgdXBkYXRlPyBMZXQncyBiZSB0aG9yb3VnaC4gTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgaGFwcGVuaW5nLiBXZSdyZSBub3QgYWNjZXNzaW5nIGFueSBuZXcgZmllbGRzIG9yIHN0cnVjdHMgdGhhdCBtaWdodCBjb250YWluIHVuaW5pdGlhbGl6ZWQgZGF0YS4gYHRwLVx1MDAzZXNuZF91bmFgIGFuZCBgdHAtXHUwMDNlc25kX254dGAgYXJlIHN0YW5kYXJkIFRDUCBzdGF0ZSB2YXJpYWJsZXMsIGFsd2F5cyBpbml0aWFsaXplZCB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIEVTVEFCTElTSEVELiBgVENQX1NLQl9DQihza2IpLVx1MDAzZWFja19zZXFgIGlzLCBvZiBjb3Vyc2UsIGRlcml2ZWQgZnJvbSB0aGUgcGFja2V0IGhlYWRlci4gVGhlcmUncyBubyBrZXJuZWwtdG8tdXNlciBtZW1vcnkgY29weSBpbnZvbHZlZCwgc28gbm8gcmlzayBvZiBpbmZvcm1hdGlvbiBsZWFrcy4gVGhlcmUncyBhbHNvIG5vIGJyYW5jaGluZyB0aGF0IHJlbGllcyBvbiB1bmluaXRpYWxpemVkIGRhdGEuIFRoaXMgaXMgcHVyZWx5IGEgdGlnaHRlbmluZyBvZiBwcm90b2NvbCB2YWxpZGF0aW9uLCBhIHByb3RvY29sIGxvZ2ljIGhhcmRlbmluZyBvbiB0aGUgZmFzdCBwYXRoLlxuXG5JJ3ZlIGdvdCB0byBkb3VibGUtY2hlY2sgdGhpcyBmb3IgS01TQU4gdGhvdWdoLiBXZSBuZWVkIEtNU0FOIGlmOiBLZXJuZWwgc3RydWN0cyBhcmUgcGFzc2VkIHRvIHVzZXJzcGFjZSBwb3RlbnRpYWxseSB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzLiBOby4gQ29uZGl0aW9uYWwgbG9naWMgcmVsaWVzIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YT8gTm8uIEFsbG9jYXRpb25zIGFuZCBpbml0aWFsaXphdGlvbiBjcmVhdGUgcmlza3Mgb2YgdW5pbml0aWFsaXplZCByZWFkcz8gTm8uIEJvdW5kcyBjaGVja3MgdGhhdCBhbGxvdyByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgYnVmZmVyIGJ5dGVzPyBOby5cblxuU28sIHRoaXMgY2hhbmdlIGRvZXNuJ3QgdHJpZ2dlciBhbnkgS01TQU4gY29uY2VybnMuIEl0J3MganVzdCB0aWdodGVuaW5nIGEgY29uZGl0aW9uLCBzZW5kaW5nIHBvdGVudGlhbGx5IGJhZCBBQ0tzIHRvIHRoZSBzbG93IHBhdGguIE5vIGFsbG9jYXRpb25zLCBjb3BpZXMsIG9yIHJlYWRzIGZyb20gdW5pbml0aWFsaXplZCBtZW1vcnkuIEtBU0FOIGFuZCBzdGFuZGFyZCBmdXp6aW5nIHNob3VsZCBiZSBwZXJmZWN0bHkgYWRlcXVhdGUuXG5cblJpZ2h0LCBJJ20gY29tZm9ydGFibGUgd2l0aCB0aGF0LiBUaW1lIHRvIHRlbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA0OSwiT3V0cHV0VG9rZW5zIjoxOTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwODo0ODoxNi4yNDUzMTIzMTlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQ1AgaGVhZGVyIHByZWRpY3Rpb24gY29uZGl0aW9uIGluIGB0Y3BfcmN2X2VzdGFibGlzaGVkKClgIGJ5IHJlcGxhY2luZyBgIWFmdGVyKFRDUF9TS0JfQ0Ioc2tiKS1cXHUwMDNlYWNrX3NlcSwgdHAtXFx1MDAzZXNuZF9ueHQpYCB3aXRoIGBiZXR3ZWVuKFRDUF9TS0JfQ0Ioc2tiKS1cXHUwMDNlYWNrX3NlcSwgdHAtXFx1MDAzZXNuZF91bmEsIHRwLVxcdTAwM2VzbmRfbnh0KWAgdG8gZW5zdXJlIHBhY2tldHMgY2FycnlpbmcgZXhjZXNzaXZlbHkgb2xkIEFDS3MgYnlwYXNzIHRoZSBmYXN0IHBhdGggYW5kIGFyZSBoYW5kbGVkIGJ5IHRoZSBzbG93IHBhdGggYWNjb3JkaW5nIHRvIFJGQyA1OTYxLlxcblxcblRoaXMgY2hhbmdlIHRvdWNoZXMgb25seSBzdGFuZGFyZCBUQ1Agc2VxdWVuY2UgbnVtYmVyIGNvbXBhcmlzb24gbG9naWMgdXNpbmcgd2VsbC1kZWZpbmVkLCBpbml0aWFsaXplZCBmaWVsZHMgb24gYHN0cnVjdCBzb2NrYCBhbmQgYHNrX2J1ZmZgLiBUaGVyZSBhcmUgbm8gbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIHRyYW5zZmVycyB0byB1c2VyIHNwYWNlLCBhbmQgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVENQIGhlYWRlciBwcmVkaWN0aW9uIGNvbmRpdGlvbiBpbiBgdGNwX3Jjdl9lc3RhYmxpc2hlZCgpYCBieSByZXBsYWNpbmcgYCFhZnRlcihUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWFja19zZXEsIHRwLVxcdTAwM2VzbmRfbnh0KWAgd2l0aCBgYmV0d2VlbihUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWFja19zZXEsIHRwLVxcdTAwM2VzbmRfdW5hLCB0cC1cXHUwMDNlc25kX254dClgIHRvIGVuc3VyZSBwYWNrZXRzIGNhcnJ5aW5nIGV4Y2Vzc2l2ZWx5IG9sZCBBQ0tzIGJ5cGFzcyB0aGUgZmFzdCBwYXRoIGFuZCBhcmUgaGFuZGxlZCBieSB0aGUgc2xvdyBwYXRoIGFjY29yZGluZyB0byBSRkMgNTk2MS5cXG5cXG5UaGlzIGNoYW5nZSB0b3VjaGVzIG9ubHkgc3RhbmRhcmQgVENQIHNlcXVlbmNlIG51bWJlciBjb21wYXJpc29uIGxvZ2ljIHVzaW5nIHdlbGwtZGVmaW5lZCwgaW5pdGlhbGl6ZWQgZmllbGRzIG9uIGBzdHJ1Y3Qgc29ja2AgYW5kIGBza19idWZmYC4gVGhlcmUgYXJlIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gZGF0YSB0cmFuc2ZlcnMgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdss6h[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-09 08:21:10 +0000 UTC FinishedAt: 2026-09-09 08:48:17 +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": "0685630fdccb62dcb0e3f44525a40578da5f6dc8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "0685630fdccb62dcb0e3f44525a40578da5f6dc8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tcp_rcv_established" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfcmN2X2VzdGFibGlzaGVkJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRDUCBoZWFkZXIgcHJlZGljdGlvbiBjb25kaXRpb24gaW4gYHRjcF9yY3ZfZXN0YWJsaXNoZWQoKWAgYnkgcmVwbGFjaW5nIGAhYWZ0ZXIoVENQX1NLQl9DQihza2IpLVx1MDAzZWFja19zZXEsIHRwLVx1MDAzZXNuZF9ueHQpYCB3aXRoIGBiZXR3ZWVuKFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VhY2tfc2VxLCB0cC1cdTAwM2VzbmRfdW5hLCB0cC1cdTAwM2VzbmRfbnh0KWAgdG8gZW5zdXJlIHBhY2tldHMgY2FycnlpbmcgZXhjZXNzaXZlbHkgb2xkIEFDS3MgYnlwYXNzIHRoZSBmYXN0IHBhdGggYW5kIGFyZSBoYW5kbGVkIGJ5IHRoZSBzbG93IHBhdGggYWNjb3JkaW5nIHRvIFJGQyA1OTYxLlxuXG5UaGlzIGNoYW5nZSB0b3VjaGVzIG9ubHkgc3RhbmRhcmQgVENQIHNlcXVlbmNlIG51bWJlciBjb21wYXJpc29uIGxvZ2ljIHVzaW5nIHdlbGwtZGVmaW5lZCwgaW5pdGlhbGl6ZWQgZmllbGRzIG9uIGBzdHJ1Y3Qgc29ja2AgYW5kIGBza19idWZmYC4gVGhlcmUgYXJlIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gZGF0YSB0cmFuc2ZlcnMgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBpbnB1dCBwcm9jZXNzaW5nIGluIHRjcF9yY3ZfZXN0YWJsaXNoZWQoKSBieSB0aWdodGVuaW5nIHRoZSBmYXN0LXBhdGggaGVhZGVyIHByZWRpY3Rpb24gY2hlY2sgdG8gZW5zdXJlIGluY29taW5nIEFDSyBzZXF1ZW5jZXMgZmFsbCBiZXR3ZWVuIHNuZF91bmEgYW5kIHNuZF9ueHQsIHByZXZlbnRpbmcgb3V0LW9mLW9yZGVyL2V4Y2Vzc2l2ZWx5IG9sZCBBQ0tzIGZyb20gaW1wcm9wZXJseSB0YWtpbmcgdGhlIGZhc3QgcGF0aC4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBUQ1AgbmV0d29ya2luZyBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTc0NDFmMzQ4YjY1NGJlNTVhMzczZDFkYzM3ZGUyZWFhMzBkYmVmNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMDg6NDY6MzYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lucHV0LmMgYi9uZXQvaXB2NC90Y3BfaW5wdXQuY1xuaW5kZXggZGFmZjkzZDUxMzQyOC4uNTdmZWM1OGE0ZjE1MyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF9pbnB1dC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfaW5wdXQuY1xuQEAgLTY1MzksNyAmIzQzOzY1MzksNyBAQCB2b2lkIHRjcF9yY3ZfZXN0YWJsaXNoZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFxuIFx0aWYgKCh0Y3BfZmxhZ193b3JkKHRoKSBcdTAwMjYgVENQX0hQX0JJVFMpID09IHRwLVx1MDAzZXByZWRfZmxhZ3MgXHUwMDI2XHUwMDI2XG4gXHQgICAgVENQX1NLQl9DQihza2IpLVx1MDAzZXNlcSA9PSB0cC1cdTAwM2VyY3Zfbnh0IFx1MDAyNlx1MDAyNlxuLVx0ICAgICFhZnRlcihUQ1BfU0tCX0NCKHNrYiktXHUwMDNlYWNrX3NlcSwgdHAtXHUwMDNlc25kX254dCkpIHtcbiYjNDM7XHQgICAgYmV0d2VlbihUQ1BfU0tCX0NCKHNrYiktXHUwMDNlYWNrX3NlcSwgdHAtXHUwMDNlc25kX3VuYSwgdHAtXHUwMDNlc25kX254dCkpIHtcbiBcdFx0aW50IHRjcF9oZWFkZXJfbGVuID0gdHAtXHUwMDNldGNwX2hlYWRlcl9sZW47XG4gXHRcdHMzMiBkZWx0YSA9IDA7XG4gXHRcdGludCBmbGFnID0gMDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcmVqZWN0LW9sZC1hY2sucGt0IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3BhY2tldGRyaWxsL3RjcF9yZmM1OTYxX3JlamVjdC1vbGQtYWNrLnBrdFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjhlNzIyOTEyNzY3MGZcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yZWplY3Qtb2xkLWFjay5wa3RcbkBAIC0wLDAgJiM0MzsxLDIzIEBAXG4mIzQzOy8vIFRlc3QgcmVqZWN0aW9uIG9mIGRhdGEgc2VnbWVudHMgY2FycnlpbmcgZXhjZXNzaXZlbHkgb2xkIEFDS3NcbiYjNDM7XG4mIzQzOzAgc29ja2V0KC4uLiwgU09DS19TVFJFQU0sIElQUFJPVE9fVENQKSA9IDNcbiYjNDM7JiM0MzswIHNldHNvY2tvcHQoMywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCBbMV0sIDQpID0gMFxuJiM0MzsmIzQzOzAgYmluZCgzLCAuLi4sIC4uLikgPSAwXG4mIzQzOyYjNDM7MCBsaXN0ZW4oMywgMTAyNCkgPSAwXG4mIzQzO1xuJiM0MzsvLyAtLS0tLS0tLS0tLS0tLS0tIEhhbmRzaGFrZSAtLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG4mIzQzOyYjNDM7MCBcdTAwM2MgUyAwOjAoMCkgd2luIDY1NTM1XG4mIzQzOyYjNDM7MCBcdTAwM2UgUy4gMDowKDApIGFjayAxIFx1MDAzYy4uLlx1MDAzZVxuJiM0MzsmIzQzOzAgXHUwMDNjIC4gMToxKDApIGFjayAxIHdpbiA2NTUzNVxuJiM0MzsmIzQzOzAgYWNjZXB0KDMsIC4uLiwgLi4uKSA9IDRcbiYjNDM7XG4mIzQzOy8vIFBvcHVsYXRlIHJlY2VpdmUgbWVtb3J5IHNvIHRoZSBmb2xsb3dpbmcgc2VnbWVudCBjYW4gdXNlXG4mIzQzOy8vIGhlYWRlciBwcmVkaWN0aW9uLlxuJiM0MzsmIzQzOzAgXHUwMDNjIFAuIDE6NTAxKDUwMCkgYWNrIDEgd2luIDY1NTM1XG4mIzQzOyYjNDM7MCBcdTAwM2UgLiAxOjEoMCkgYWNrIDUwMVxuJiM0MztcbiYjNDM7Ly8gU2VuZCBhbiBpbi1zZXF1ZW5jZSBkYXRhIHNlZ21lbnQgY2FycnlpbmcgYW4gZXhjZXNzaXZlbHkgb2xkIEFDSy5cbiYjNDM7JiM0MzswIFx1MDAzYyBQLiA1MDE6MTUwMSgxMDAwKSBhY2sgMjc5NDk2NzM5NyB3aW4gNjU1MzVcbiYjNDM7XG4mIzQzOy8vIENoYWxsZW5nZSBBQ0s7IFJDVi5OWFQgbXVzdCByZW1haW4gNTAxLlxuJiM0MzsmIzQzOzAgXHUwMDNlIC4gMToxKDApIGFjayA1MDFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwODo0NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX3Jjdl9lc3RhYmxpc2hlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBUQ1AgaW5wdXQgcHJvY2Vzc2luZyBpbiB0Y3BfcmN2X2VzdGFibGlzaGVkKCkgYnkgdGlnaHRlbmluZyB0aGUgZmFzdC1wYXRoIGhlYWRlciBwcmVkaWN0aW9uIGNoZWNrIHRvIGVuc3VyZSBpbmNvbWluZyBBQ0sgc2VxdWVuY2VzIGZhbGwgYmV0d2VlbiBzbmRfdW5hIGFuZCBzbmRfbnh0LCBwcmV2ZW50aW5nIG91dC1vZi1vcmRlci9leGNlc3NpdmVseSBvbGQgQUNLcyBmcm9tIGltcHJvcGVybHkgdGFraW5nIHRoZSBmYXN0IHBhdGguIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgVENQIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDk3NDQxZjM0OGI2NTRiZTU1YTM3M2QxZGMzN2RlMmVhYTMwZGJlZjQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCA5IDA4OjQ2OjM2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lucHV0LmMgYi9uZXQvaXB2NC90Y3BfaW5wdXQuYwppbmRleCBkYWZmOTNkNTEzNDI4Li41N2ZlYzU4YTRmMTUzIDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfaW5wdXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfaW5wdXQuYwpAQCAtNjUzOSw3ICYjNDM7NjUzOSw3IEBAIHZvaWQgdGNwX3Jjdl9lc3RhYmxpc2hlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpCiAKIAlpZiAoKHRjcF9mbGFnX3dvcmQodGgpICZhbXA7IFRDUF9IUF9CSVRTKSA9PSB0cC0mZ3Q7cHJlZF9mbGFncyAmYW1wOyZhbXA7CiAJICAgIFRDUF9TS0JfQ0Ioc2tiKS0mZ3Q7c2VxID09IHRwLSZndDtyY3Zfbnh0ICZhbXA7JmFtcDsKLQkgICAgIWFmdGVyKFRDUF9TS0JfQ0Ioc2tiKS0mZ3Q7YWNrX3NlcSwgdHAtJmd0O3NuZF9ueHQpKSB7CiYjNDM7CSAgICBiZXR3ZWVuKFRDUF9TS0JfQ0Ioc2tiKS0mZ3Q7YWNrX3NlcSwgdHAtJmd0O3NuZF91bmEsIHRwLSZndDtzbmRfbnh0KSkgewogCQlpbnQgdGNwX2hlYWRlcl9sZW4gPSB0cC0mZ3Q7dGNwX2hlYWRlcl9sZW47CiAJCXMzMiBkZWx0YSA9IDA7CiAJCWludCBmbGFnID0gMDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yZWplY3Qtb2xkLWFjay5wa3QgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcmVqZWN0LW9sZC1hY2sucGt0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjhlNzIyOTEyNzY3MGYKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcmVqZWN0LW9sZC1hY2sucGt0CkBAIC0wLDAgJiM0MzsxLDIzIEBACiYjNDM7Ly8gVGVzdCByZWplY3Rpb24gb2YgZGF0YSBzZWdtZW50cyBjYXJyeWluZyBleGNlc3NpdmVseSBvbGQgQUNLcwomIzQzOwomIzQzOzAgc29ja2V0KC4uLiwgU09DS19TVFJFQU0sIElQUFJPVE9fVENQKSA9IDMKJiM0MzsmIzQzOzAgc2V0c29ja29wdCgzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIFsxXSwgNCkgPSAwCiYjNDM7JiM0MzswIGJpbmQoMywgLi4uLCAuLi4pID0gMAomIzQzOyYjNDM7MCBsaXN0ZW4oMywgMTAyNCkgPSAwCiYjNDM7CiYjNDM7Ly8gLS0tLS0tLS0tLS0tLS0tLSBIYW5kc2hha2UgLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwomIzQzOyYjNDM7MCAmbHQ7IFMgMDowKDApIHdpbiA2NTUzNQomIzQzOyYjNDM7MCAmZ3Q7IFMuIDA6MCgwKSBhY2sgMSAmbHQ7Li4uJmd0OwomIzQzOyYjNDM7MCAmbHQ7IC4gMToxKDApIGFjayAxIHdpbiA2NTUzNQomIzQzOyYjNDM7MCBhY2NlcHQoMywgLi4uLCAuLi4pID0gNAomIzQzOwomIzQzOy8vIFBvcHVsYXRlIHJlY2VpdmUgbWVtb3J5IHNvIHRoZSBmb2xsb3dpbmcgc2VnbWVudCBjYW4gdXNlCiYjNDM7Ly8gaGVhZGVyIHByZWRpY3Rpb24uCiYjNDM7JiM0MzswICZsdDsgUC4gMTo1MDEoNTAwKSBhY2sgMSB3aW4gNjU1MzUKJiM0MzsmIzQzOzAgJmd0OyAuIDE6MSgwKSBhY2sgNTAxCiYjNDM7CiYjNDM7Ly8gU2VuZCBhbiBpbi1zZXF1ZW5jZSBkYXRhIHNlZ21lbnQgY2FycnlpbmcgYW4gZXhjZXNzaXZlbHkgb2xkIEFDSy4KJiM0MzsmIzQzOzAgJmx0OyBQLiA1MDE6MTUwMSgxMDAwKSBhY2sgMjc5NDk2NzM5NyB3aW4gNjU1MzUKJiM0MzsKJiM0MzsvLyBDaGFsbGVuZ2UgQUNLOyBSQ1YuTlhUIG11c3QgcmVtYWluIDUwMS4KJiM0MzsmIzQzOzAgJmd0OyAuIDE6MSgwKSBhY2sgNTAxCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MTYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6CgoqKkRpdmluZyBpbnRvIGB0Y3BfaW5wdXQuY2AgZm9yIENvbnRleHQqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IG1ha2luZyBhIGNoYW5nZSB3aXRoaW4gdGhlIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCBmdW5jdGlvbiwgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIHRhcmdldCBpcyBpbiBgbmV0L2lwdjQvdGNwX2lucHV0LmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgbG9naWMgdG8gcHJvcGVybHkgZXZhbHVhdGUgdGhlIGltcGFjdCwgc28gSSYjMzk7bSBnb2luZyB0byBqdW1wIGludG8gdGhhdCBmaWxlLiBJJiMzOTttIHRoaW5raW5nIGFyb3VuZCBsaW5lIDY1Mzkgc2hvdWxkIGdpdmUgbWUgdGhlIHJlbGV2YW50IGNvbnRleHQgZm9yIHRoaXMgcGF0Y2guIExldCBtZSBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcganVzdCBiZWZvcmUgYW5kIGFmdGVyIHRoYXQgbGluZSB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSBvZiB3aGF0IHRoaXMgY2hhbmdlIGlzIGludGVuZGVkIHRvIGFkZHJlc3MuIEdvdCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcnBsYXkgaGVyZSBiZWZvcmUgZm9ybWluZyBhbiBvcGluaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lucHV0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2NTI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzY1MjU6XHRcdCAqXHRXZSBkbyBjaGVja3N1bSBhbmQgY29weSBhbHNvIGJ1dCBmcm9tIGRldmljZSB0byBrZXJuZWwuXG42NTI2Olx0XHQgKi9cbjY1Mjc6XHRcbjY1Mjg6XHRcdHRwLVx1MDAzZXJ4X29wdC5zYXdfdHN0YW1wID0gMDtcbjY1Mjk6XHRcdHRwLVx1MDAzZXJ4X29wdC5hY2NlY24gPSAwO1xuNjUzMDpcdFxuNjUzMTpcdFx0LypcdHByZWRfZmxhZ3MgaXMgMHhTPzEwIFx1MDAzY1x1MDAzYyAxNiAmIzQzOyBzbmRfd25kXG42NTMyOlx0XHQgKlx0aWYgaGVhZGVyX3ByZWRpY3Rpb24gaXMgdG8gYmUgbWFkZVxuNjUzMzpcdFx0ICpcdCYjMzk7UyYjMzk7IHdpbGwgYWx3YXlzIGJlIHRwLVx1MDAzZXRjcF9oZWFkZXJfbGVuIFx1MDAzZVx1MDAzZSAyXG42NTM0Olx0XHQgKlx0JiMzOTs/JiMzOTsgd2lsbCBiZSAwIGZvciB0aGUgZmFzdCBwYXRoLCBvdGhlcndpc2UgcHJlZF9mbGFncyBpcyAwIHRvXG42NTM1Olx0XHQgKiAgdHVybiBpdCBvZmZcdCh3aGVuIHRoZXJlIGFyZSBob2xlcyBpbiB0aGUgcmVjZWl2ZVxuNjUzNjpcdFx0ICpcdCBzcGFjZSBmb3IgaW5zdGFuY2UpXG42NTM3Olx0XHQgKlx0UFNIIGZsYWcgaXMgaWdub3JlZC5cbjY1Mzg6XHRcdCAqL1xuNjUzOTpcdFxuNjU0MDpcdFx0aWYgKCh0Y3BfZmxhZ193b3JkKHRoKSBcdTAwMjYgVENQX0hQX0JJVFMpID09IHRwLVx1MDAzZXByZWRfZmxhZ3MgXHUwMDI2XHUwMDI2XG42NTQxOlx0XHQgICAgVENQX1NLQl9DQihza2IpLVx1MDAzZXNlcSA9PSB0cC1cdTAwM2VyY3Zfbnh0IFx1MDAyNlx1MDAyNlxuNjU0MjpcdFx0ICAgIGJldHdlZW4oVENQX1NLQl9DQihza2IpLVx1MDAzZWFja19zZXEsIHRwLVx1MDAzZXNuZF91bmEsIHRwLVx1MDAzZXNuZF9ueHQpKSB7XG42NTQzOlx0XHRcdGludCB0Y3BfaGVhZGVyX2xlbiA9IHRwLVx1MDAzZXRjcF9oZWFkZXJfbGVuO1xuNjU0NDpcdFx0XHRzMzIgZGVsdGEgPSAwO1xuNjU0NTpcdFx0XHRpbnQgZmxhZyA9IDA7XG42NTQ2Olx0XG42NTQ3Olx0XHRcdC8qIFRpbWVzdGFtcCBoZWFkZXIgcHJlZGljdGlvbjogdGNwX2hlYWRlcl9sZW5cbjY1NDg6XHRcdFx0ICogaXMgYXV0b21hdGljYWxseSBlcXVhbCB0byB0aC1cdTAwM2Vkb2ZmKjQgZHVlIHRvIHByZWRfZmxhZ3NcbjY1NDk6XHRcdFx0ICogbWF0Y2guXG42NTUwOlx0XHRcdCAqL1xuNjU1MTpcdFxuNjU1MjpcdFx0XHQvKiBDaGVjayB0aW1lc3RhbXAgKi9cbjY1NTM6XHRcdFx0aWYgKHRjcF9oZWFkZXJfbGVuID09IHNpemVvZihzdHJ1Y3QgdGNwaGRyKSAmIzQzOyBUQ1BPTEVOX1RTVEFNUF9BTElHTkVEKSB7XG42NTU0Olx0XHRcdFx0LyogTm8/IFNsb3cgcGF0aCEgKi9cbjY1NTU6XHRcdFx0XHRpZiAoIXRjcF9wYXJzZV9hbGlnbmVkX3RpbWVzdGFtcCh0cCwgdGgpKVxuNjU1NjpcdFx0XHRcdFx0Z290byBzbG93X3BhdGg7XG42NTU3Olx0XG42NTU4Olx0XHRcdFx0ZGVsdGEgPSB0cC1cdTAwM2VyeF9vcHQucmN2X3RzdmFsIC1cbjY1NTk6XHRcdFx0XHRcdHRwLVx1MDAzZXJ4X29wdC50c19yZWNlbnQ7XG42NTYwOlx0XHRcdFx0LyogSWYgUEFXUyBmYWlsZWQsIGNoZWNrIGl0IG1vcmUgY2FyZWZ1bGx5IGluIHNsb3cgcGF0aCAqL1xuNjU2MTpcdFx0XHRcdGlmIChkZWx0YSBcdTAwM2MgMClcbjY1NjI6XHRcdFx0XHRcdGdvdG8gc2xvd19wYXRoO1xuNjU2MzpcdFxuNjU2NDpcdFx0XHRcdC8qIERPIE5PVCB1cGRhdGUgdHNfcmVjZW50IGhlcmUsIGlmIGNoZWNrc3VtIGZhaWxzXG42NTY1Olx0XHRcdFx0ICogYW5kIHRpbWVzdGFtcCB3YXMgY29ycnVwdGVkIHBhcnQsIGl0IHdpbGwgcmVzdWx0XG42NTY2Olx0XHRcdFx0ICogaW4gYSBodW5nIGNvbm5lY3Rpb24gc2luY2Ugd2Ugd2lsbCBkcm9wIGFsbFxuNjU2NzpcdFx0XHRcdCAqIGZ1dHVyZSBwYWNrZXRzIGR1ZSB0byB0aGUgUEFXUyB0ZXN0LlxuNjU2ODpcdFx0XHRcdCAqL1xuNjU2OTpcdFx0XHR9XG42NTcwOlx0XG42NTcxOlx0XHRcdGlmIChsZW4gXHUwMDNjPSB0Y3BfaGVhZGVyX2xlbikge1xuNjU3MjpcdFx0XHRcdC8qIEJ1bGsgZGF0YSB0cmFuc2Zlcjogc2VuZGVyICovXG42NTczOlx0XHRcdFx0aWYgKGxlbiA9PSB0Y3BfaGVhZGVyX2xlbikge1xuNjU3NDpcdFx0XHRcdFx0LyogUHJlZGljdGVkIHBhY2tldCBpcyBpbiB3aW5kb3cgYnkgZGVmaW5pdGlvbi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwODo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDkwCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlY2VudCBUQ1AgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhhdCBwYXRjaCB0byBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgbG9va3MgaW50ZXJlc3RpbmcuIFNwZWNpZmljYWxseSwgdGhhdCBmYXN0LXBhdGggY2hlY2suLi4gYmVmb3JlIGl0IHdhcyBgIWFmdGVyKFRDUF9TS0JfQ0Ioc2tiKS0mZ3Q7YWNrX3NlcSwgdHAtJmd0O3NuZF9ueHQpYCwgYW5kIG5vdyBpdCYjMzk7cyBgYmV0d2VlbihUQ1BfU0tCX0NCKHNrYiktJmd0O2Fja19zZXEsIHRwLSZndDtzbmRfdW5hLCB0cC0mZ3Q7c25kX254dClgLiBFc3NlbnRpYWxseSwgdGhleSYjMzk7cmUgdGlnaHRlbmluZyB1cCB0aGUgY3JpdGVyaWEgZm9yIHRoZSBmYXN0IHBhdGgsIG1ha2luZyBzdXJlIHdlIGRvbiYjMzk7dCBwcmVtYXR1cmVseSBhY2NlcHQgYW4gb2xkIEFDSy4gTWFrZXMgc2Vuc2UuIElmIGBhY2tfc2VxYCBpcyAqbGVzcyogdGhhbiBgc25kX3VuYWAsIGl0JiMzOTtzIHN0YWxlIGFuZCBzaG91bGRuJiMzOTt0IGJlIHNob3J0Y3V0dGluZyB0aHJvdWdoIHRoZSBwcmVkaWN0aW9uIHBhdGguIFRoYXQgYnlwYXNzZXMgdGhlIHByb3BlciBSRkMgNTk2MSB2YWxpZGF0aW9uLCBhbmQgd2UgY291bGQgZW5kIHVwIHdpdGggYSBjaGFsbGVuZ2UgQUNLIGJlaW5nIHNlbnQgaW5jb3JyZWN0bHkuCgpOb3csIGlzIHRoaXMgZXZlbiAqcmVhY2hhYmxlKiBjb2RlPyBBYnNvbHV0ZWx5LiBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgaXMgdGhlIHdvcmtob3JzZSBmb3IgZXN0YWJsaXNoZWQgVENQIGNvbm5lY3Rpb25zIGluIHRoZSBMaW51eCBrZXJuZWwgKGBuZXQvaXB2NC90Y3BfaW5wdXQuY2ApLiBJdCYjMzk7cyB0aGUgY2VudHJhbCBwb2ludCBmb3IgaGFuZGxpbmcgaW5jb21pbmcgZGF0YSBvbiBlc3RhYmxpc2hlZCBzb2NrZXRzIOKAkyB5b3VyIHN0YW5kYXJkIGxvb3BiYWNrLCB0dW4vdGFwLCBvciBuZXRkZXYgY29tbXVuaWNhdGlvbiBhbGwgZ28gdGhyb3VnaCBoZXJlLiBHaXZlbiBpdHMgY29yZSBuZXR3b3JraW5nIG5hdHVyZSwgdGhpcyBpcyAqZGVmaW5pdGVseSogYW4gYXJlYSB3b3J0aCBmdXp6aW5nLCBhbmQgaXQgbWFrZXMgaXQgYSBnb29kIHRhcmdldCBmb3IgYW5hbHlzaXMuCgpJIHNob3VsZCB2ZXJpZnkgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGluIHBsYWNlIGZvciB0aGUgYG5ldC9pcHY0YCBzdGFjaywganVzdCB0byBiZSBzdXJlLiBJJiMzOTttIHByZXR0eSBzdXJlIGBDT05GSUdfSU5FVGAgaXMgdGhlIHN0YW5kYXJkIGZvciBJUHY0L1RDUCwgYnV0IGxldCYjMzk7cyBjaGVjayB0aGUgS2NvbmZpZyBmb3IgYG5ldC9pcHY0L3RjcF9pbnB1dC5jYCB0byBiZSBjb21wbGV0ZWx5IHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9pbnB1dFxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcbi0tXG5uZXQvaXB2NC9NYWtlZmlsZS05LVx0ICAgICBpbmV0X3RpbWV3YWl0X3NvY2subyBpbmV0X2Nvbm5lY3Rpb25fc29jay5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxMDpcdCAgICAgdGNwLm8gdGNwX2lucHV0Lm8gdGNwX291dHB1dC5vIHRjcF90aW1lci5vIHRjcF9pcHY0Lm8gXFxcbm5ldC9pcHY0L01ha2VmaWxlLTExLVx0ICAgICB0Y3BfbWluaXNvY2tzLm8gdGNwX2NvbmcubyB0Y3BfbWV0cmljcy5vIHRjcF9mYXN0b3Blbi5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDg6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMyNAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgcmVsYXRlcyB0byBjaGVja2luZyB0aG9zZSBjb25maWd1cmF0aW9uIGZpbGVzOgoKKipJbnZlc3RpZ2F0aW5nIElQdjQgQnVpbGQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgSVB2NCBpcyBidWlsdCBpbiB0aGlzIGtlcm5lbC4gVGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAgaXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQg4oCTIEkgbmVlZCB0byBzZWUgaG93IHRoZSBvYmplY3QgZmlsZXMgYXJlIGJyb3VnaHQgaW4uIFNwZWNpZmljYWxseSwgSSYjMzk7bSBpbnRlcmVzdGVkIGluIHRoZSBgb2JqLXlgIGRpcmVjdGl2ZXM7IHRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZC4gSSYjMzk7bGwgbmVlZCB0byBjb3JyZWxhdGUgdGhlc2Ugd2l0aCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBodW5jaCBpcyB0aGF0IGBDT05GSUdfSU5FVGAgaXMgdGhlIG1haW4gZW5hYmxlciBmb3IgdGhlIGVudGlyZSBJUHY0IHN0YWNrLgoKQnV0IHdoZXJlIGRvZXMgYENPTkZJR19JTkVUYCBnZXQgaXRzIHZhbHVlIGZyb20/IE5vdyBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMsIGVpdGhlciB0aGUgdG9wLWxldmVsIGBuZXQvS2NvbmZpZ2Agd2hpY2ggaXMgbW9yZSBsaWtlbHksIG9yIHBlcmhhcHMgdGhlIElQdjQgc3BlY2lmaWMgb25lIGF0IGBuZXQvaXB2NC9LY29uZmlnYC4gVGhvc2UgYXJlIHRoZSBmaWxlcyB0aGF0IGRlZmluZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyB3aWxsIGdpdmUgbWUgdGhlIGNsZWFyZXN0IHBpY3R1cmUgb2Ygd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkIHRvIGluY2x1ZGUgdGhlc2UgSVB2NCBjb21wb25lbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJTkVUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZz05OT1jb25maWcgTkVUX0hBTkRTSEFLRV9LVU5JVF9URVNUXG4tLVxubmV0L0tjb25maWctMTEzLVxubmV0L0tjb25maWc6MTE0OmNvbmZpZyBJTkVUXG5uZXQvS2NvbmZpZy0xMTUtXHRib29sIFwmIzM0O1RDUC9JUCBuZXR3b3JraW5nXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zMzA9Y29uZmlnIE5FVF9GT1VfSVBfVFVOTkVMU1xuLS1cbm5ldC9pcHY0L0tjb25maWctMzM4LVxubmV0L2lwdjQvS2NvbmZpZzozMzk6Y29uZmlnIElORVRfQUhcbm5ldC9pcHY0L0tjb25maWctMzQwLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEFIIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zNTMtXG5uZXQvaXB2NC9LY29uZmlnOjM1NDpjb25maWcgSU5FVF9FU1Bcbm5ldC9pcHY0L0tjb25maWctMzU1LVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEVTUCB0cmFuc2Zvcm1hdGlvblwmIzM0O1xuLS1cbm5ldC9pcHY0L0tjb25maWctMzY4LVxubmV0L2lwdjQvS2NvbmZpZzozNjk6Y29uZmlnIElORVRfRVNQX09GRkxPQURcbm5ldC9pcHY0L0tjb25maWctMzcwLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEVTUCB0cmFuc2Zvcm1hdGlvbiBvZmZsb2FkXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zODEtXG5uZXQvaXB2NC9LY29uZmlnOjM4Mjpjb25maWcgSU5FVF9FU1BJTlRDUFxubmV0L2lwdjQvS2NvbmZpZy0zODMtXHRib29sIFwmIzM0O0lQOiBFU1AgaW4gVENQIGVuY2Fwc3VsYXRpb24gKFJGQyA4MjI5KVwmIzM0O1xuLS1cbm5ldC9pcHY0L0tjb25maWctMzkzLVxubmV0L2lwdjQvS2NvbmZpZzozOTQ6Y29uZmlnIElORVRfSVBDT01QXG5uZXQvaXB2NC9LY29uZmlnLTM5NS1cdHRyaXN0YXRlIFwmIzM0O0lQOiBJUENvbXAgdHJhbnNmb3JtYXRpb25cJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTQwMy1cbm5ldC9pcHY0L0tjb25maWc6NDA0OmNvbmZpZyBJTkVUX1RBQkxFX1BFUlRVUkJfT1JERVJcbm5ldC9pcHY0L0tjb25maWctNDA1LVx0aW50IFwmIzM0O0lORVQ6IFNvdXJjZSBwb3J0IHBlcnR1cmJhdGlvbiB0YWJsZSBzaXplIChhcyBwb3dlciBvZiAyKVwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTQxMy1cbm5ldC9pcHY0L0tjb25maWc6NDE0OmNvbmZpZyBJTkVUX1hGUk1fVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnLTQxNS1cdHRyaXN0YXRlXG4tLVxubmV0L2lwdjQvS2NvbmZpZy00MTgtXG5uZXQvaXB2NC9LY29uZmlnOjQxOTpjb25maWcgSU5FVF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWctNDIwLVx0dHJpc3RhdGVcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTQyMi1cbm5ldC9pcHY0L0tjb25maWc6NDIzOmNvbmZpZyBJTkVUX0RJQUdcbm5ldC9pcHY0L0tjb25maWctNDI0LVx0dHJpc3RhdGUgXCYjMzQ7SU5FVDogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy00MzQtXG5uZXQvaXB2NC9LY29uZmlnOjQzNTpjb25maWcgSU5FVF9UQ1BfRElBR1xubmV0L2lwdjQvS2NvbmZpZy00MzYtXHRkZXBlbmRzIG9uIElORVRfRElBR1xuLS1cbm5ldC9pcHY0L0tjb25maWctNDM4LVxubmV0L2lwdjQvS2NvbmZpZzo0Mzk6Y29uZmlnIElORVRfVURQX0RJQUdcbm5ldC9pcHY0L0tjb25maWctNDQwLVx0dHJpc3RhdGUgXCYjMzQ7VURQOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTQ0Ni1cbm5ldC9pcHY0L0tjb25maWc6NDQ3OmNvbmZpZyBJTkVUX1JBV19ESUFHXG5uZXQvaXB2NC9LY29uZmlnLTQ0OC1cdHRyaXN0YXRlIFwmIzM0O1JBVzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy00NTQtXG5uZXQvaXB2NC9LY29uZmlnOjQ1NTpjb25maWcgSU5FVF9ESUFHX0RFU1RST1lcbm5ldC9pcHY0L0tjb25maWctNDU2LVx0Ym9vbCBcJiMzNDtJTkVUOiBhbGxvdyBwcml2aWxlZ2VkIHByb2Nlc3MgdG8gYWRtaW5pc3RyYXRpdmVseSBjbG9zZSBzb2NrZXRzXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0zOT1jb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxuLS1cbm5ldC9pcHY2L0tjb25maWctNDYtXG5uZXQvaXB2Ni9LY29uZmlnOjQ3OmNvbmZpZyBJTkVUNl9BSFxubmV0L2lwdjYvS2NvbmZpZy00OC1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEFIIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy02MS1cbm5ldC9pcHY2L0tjb25maWc6NjI6Y29uZmlnIElORVQ2X0VTUFxubmV0L2lwdjYvS2NvbmZpZy02My1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEVTUCB0cmFuc2Zvcm1hdGlvblwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctNzYtXG5uZXQvaXB2Ni9LY29uZmlnOjc3OmNvbmZpZyBJTkVUNl9FU1BfT0ZGTE9BRFxubmV0L2lwdjYvS2NvbmZpZy03OC1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEVTUCB0cmFuc2Zvcm1hdGlvbiBvZmZsb2FkXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy04OS1cbm5ldC9pcHY2L0tjb25maWc6OTA6Y29uZmlnIElORVQ2X0VTUElOVENQXG5uZXQvaXB2Ni9LY29uZmlnLTkxLVx0Ym9vbCBcJiMzNDtJUHY2OiBFU1AgaW4gVENQIGVuY2Fwc3VsYXRpb24gKFJGQyA4MjI5KVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTAxLVxubmV0L2lwdjYvS2NvbmZpZzoxMDI6Y29uZmlnIElORVQ2X0lQQ09NUFxubmV0L2lwdjYvS2NvbmZpZy0xMDMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBJUENvbXAgdHJhbnNmb3JtYXRpb25cJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTEyMD1jb25maWcgSVBWNl9JTEFcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE0MC1cbm5ldC9pcHY2L0tjb25maWc6MTQxOmNvbmZpZyBJTkVUNl9YRlJNX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0xNDItXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY2L0tjb25maWctMTQ1LVxubmV0L2lwdjYvS2NvbmZpZzoxNDY6Y29uZmlnIElORVQ2X1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0xNDctXHR0cmlzdGF0ZVxuLS1cbm5ldC9tcHRjcC9LY29uZmlnPTE0PWlmIE1QVENQXG5uZXQvbXB0Y3AvS2NvbmZpZy0xNS1cbm5ldC9tcHRjcC9LY29uZmlnOjE2OmNvbmZpZyBJTkVUX01QVENQX0RJQUdcbm5ldC9tcHRjcC9LY29uZmlnLTE3LVx0ZGVwZW5kcyBvbiBJTkVUX0RJQUdcbi0tXG5uZXQvcHNwL0tjb25maWctNC0jXG5uZXQvcHNwL0tjb25maWc6NTpjb25maWcgSU5FVF9QU1Bcbm5ldC9wc3AvS2NvbmZpZy02LVx0Ym9vbCBcJiMzNDtQU1AgU2VjdXJpdHkgUHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9zY3RwL0tjb25maWc9Njg9ZW5kY2hvaWNlXG5uZXQvc2N0cC9LY29uZmlnLTY5LVxubmV0L3NjdHAvS2NvbmZpZzo3MDpjb25maWcgSU5FVF9TQ1RQX0RJQUdcbm5ldC9zY3RwL0tjb25maWctNzEtXHRkZXBlbmRzIG9uIElORVRfRElBR1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNDEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb250ZXh0IG9mIGEgVENQIFJlY2VpdmUgRnVuY3Rpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgc3RhcnRpbmcgcG9pbnQgaXMgYEZvY3VzU3ltYm9sc2Ag4oCTIHRoYXQmIzM5O3Mgb3VyIGluaXRpYWwgY2x1ZS4gSXQgZGlyZWN0cyB1cyB0byB0aGUgYHRjcF9yY3ZfZXN0YWJsaXNoZWRgIGZ1bmN0aW9uLiBJcyBpdCBhIGdlbmVyYWwsIGNvcmUgZnVuY3Rpb24gb3Igc29tZXRoaW5nIG1vcmUgc3BlY2lmaWM/IEFoLCByaWdodCwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoaXMgaXMgZGVkaWNhdGVkIHRvIGhhbmRsaW5nIFRDUCBwYWNrZXRzIHdoZW4gYSBjb25uZWN0aW9uIGhhcyBiZWVuIGVzdGFibGlzaGVkLiBTbywgaXQmIzM5O3Mgbm90IGEgZ2VuZXJpYyBsb3ctbGV2ZWwgcHJpbWl0aXZlOyBpdCYjMzk7cyB3aXRoaW4gYSBoaWdoZXIgbGF5ZXIgb2YgVENQIHByb2Nlc3NpbmcuCgpOb3csIHRoZSBuYXR1cmFsIG5leHQgc3RlcDogd2hhdCBvdGhlciBmdW5jdGlvbnMgaW4gYHRjcF9pbnB1dC5jYCBtaWdodCBiZSB0b3VjaGVkIG9yIGhhdmUgYSBjbG9zZSByZWxhdGlvbnNoaXAgdG8gd2hhdCBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgaXMgZG9pbmc/IEl0IGxvb2tzIGxpa2UgYHRjcF9yY3ZfZXN0YWJsaXNoZWRgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVlbiBhbHRlcmVkIGluIHRoZSBjb2RlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgYSAmIzM0O3N0YW5kYXJkJiMzNDsgc3ltYm9sIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaGVyZSwgc28gYSBxdWljayBncmVwIHNob3VsZCBjb25maXJtIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIHRoZSBleHBlY3RlZCBUQ1AvSVAgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9yY3ZfZXN0YWJsaXNoZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lucHV0LmM9NjMyMj1zdGF0aWMgYm9vbCB0Y3BfdmFsaWRhdGVfaW5jb21pbmcoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTY0OTktICovXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo2NTAwOnZvaWQgdGNwX3Jjdl9lc3RhYmxpc2hlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy02NTAxLXtcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTE4MzA9aW50IHRjcF92NF9kb19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMTg1My1cdFx0fVxubmV0L2lwdjQvdGNwX2lwdjQuYzoxODU0Olx0XHR0Y3BfcmN2X2VzdGFibGlzaGVkKHNrLCBza2IpO1xubmV0L2lwdjQvdGNwX2lwdjQuYy0xODU1LVx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTE5MDE9ZW51bSBza2JfZHJvcF9yZWFzb24gdGNwX2FkZF9iYWNrbG9nKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTE5ODAtXHRcdC8qIFdlIGhhdmUgdG8gdXBkYXRlIGJvdGggVENQX1NLQl9DQih0YWlsKS1cdTAwM2V0Y3BfZmxhZ3MgYW5kXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjE5ODE6XHRcdCAqIHRodGFpbC1cdTAwM2VmaW4sIHNvIHRoYXQgdGhlIGZhc3QgcGF0aCBpbiB0Y3BfcmN2X2VzdGFibGlzaGVkKClcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMTk4Mi1cdFx0ICogaXMgbm90IGVudGVyZWQgaWYgd2UgYXBwZW5kIGEgcGFja2V0IHdpdGggYSBGSU4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5MTAKCQkJCQkJCW91dHB1dDogMTA3CgkJCQkJCQl0aG91Z2h0czogMjA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIGEgVENQIFBhdGNoKioKCk9rYXksIHNvIHRoZSBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgc3ltYm9sIGlzIHRoZSBjcnVjaWFsIHBvaW50IGhlcmUuIFRoYXQmIzM5O3Mgd2hlcmUgdGhleSB0aWdodGVuZWQgdXAgdGhlIGhlYWRlciBwcmVkaWN0aW9uIGxvZ2ljLiBUaGUgY2hhbmdlIGlzIHNwZWNpZmljYWxseSBhcm91bmQgdmFsaWRhdGluZyB0aGUgYFRDUF9TS0JfQ0Ioc2tiKS0mZ3Q7YWNrX3NlcWAgdmFsdWUuIEluc3RlYWQgb2YganVzdCBzYXlpbmcgaXQmIzM5O3MgKm5vdCogJiMzNDthZnRlciYjMzQ7IGEgY2VydGFpbiBzZXF1ZW5jZSwgdGhleSYjMzk7cmUgbm93IHJlcXVpcmluZyBpdCB0byBiZSAqYmV0d2VlbiogYHRwLSZndDtzbmRfdW5hYCBhbmQgYHRwLSZndDtzbmRfbnh0YC4gVGhhdCYjMzk7cyBhIHNpZ25pZmljYW50IHNoaWZ0IGluIHRoZSBmYXN0LXBhdGggY29uZGl0aW9uLgoKTGV0IG1lIGp1c3QgcnVuIHRocm91Z2ggdGhlIGNoZWNrbGlzdCBpbiBteSBoZWFkLi4uIFllcCwgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBUaGUgcGF0Y2ggZGlyZWN0bHkgbW9kaWZpZXMgVENQIHBhY2tldCBwcm9jZXNzaW5nLCBzcGVjaWZpY2FsbHkgd2l0aGluIGB0Y3BfcmN2X2VzdGFibGlzaGVkYC4gSXQmIzM5O3MgdGlnaHRlbmluZyB0aGUgZmFzdC1wYXRoIGNvbmRpdGlvbiwgc28gdGhpcyBkZWZpbml0ZWx5IHRvdWNoZXMgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGFuZCBpcyBhIHJlYWNoYWJsZSBwYXRoLCBpdCYjMzk7cyBub3Qgc29tZSBvYnNjdXJlIGNvcm5lciBjYXNlLiBUaGUgcmVhc29uaW5nIGNoZWNrcyBvdXQuCgpUaGUgbWFpbiBmb2N1cyBoZXJlIGlzIG9idmlvdXNseSBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgaXRzZWxmLgoKQW5kIGZpbmFsbHksIHdlIG5lZWQgYElORVRgIGVuYWJsZWQgdG8gc2VlIHRoaXMuCgpBbHJpZ2h0LCBsb29rcyBnb29kLiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwODo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjcF9yY3ZfZXN0YWJsaXNoZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgVENQIGlucHV0IHByb2Nlc3NpbmcgaW4gdGNwX3Jjdl9lc3RhYmxpc2hlZCgpIGJ5IHRpZ2h0ZW5pbmcgdGhlIGZhc3QtcGF0aCBoZWFkZXIgcHJlZGljdGlvbiBjaGVjayB0byBlbnN1cmUgaW5jb21pbmcgQUNLIHNlcXVlbmNlcyBmYWxsIGJldHdlZW4gc25kX3VuYSBhbmQgc25kX254dCwgcHJldmVudGluZyBvdXQtb2Ytb3JkZXIvZXhjZXNzaXZlbHkgb2xkIEFDS3MgZnJvbSBpbXByb3Blcmx5IHRha2luZyB0aGUgZmFzdCBwYXRoLiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIFRDUCBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfcmN2X2VzdGFibGlzaGVkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBpbnB1dCBwcm9jZXNzaW5nIGluIHRjcF9yY3ZfZXN0YWJsaXNoZWQoKSBieSB0aWdodGVuaW5nIHRoZSBmYXN0LXBhdGggaGVhZGVyIHByZWRpY3Rpb24gY2hlY2sgdG8gZW5zdXJlIGluY29taW5nIEFDSyBzZXF1ZW5jZXMgZmFsbCBiZXR3ZWVuIHNuZF91bmEgYW5kIHNuZF9ueHQsIHByZXZlbnRpbmcgb3V0LW9mLW9yZGVyL2V4Y2Vzc2l2ZWx5IG9sZCBBQ0tzIGZyb20gaW1wcm9wZXJseSB0YWtpbmcgdGhlIGZhc3QgcGF0aC4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBUQ1AgbmV0d29ya2luZyBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwODo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRDUCBoZWFkZXIgcHJlZGljdGlvbiBjb25kaXRpb24gaW4gYHRjcF9yY3ZfZXN0YWJsaXNoZWQoKWAgYnkgcmVwbGFjaW5nIGAhYWZ0ZXIoVENQX1NLQl9DQihza2IpLVx1MDAzZWFja19zZXEsIHRwLVx1MDAzZXNuZF9ueHQpYCB3aXRoIGBiZXR3ZWVuKFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VhY2tfc2VxLCB0cC1cdTAwM2VzbmRfdW5hLCB0cC1cdTAwM2VzbmRfbnh0KWAgdG8gZW5zdXJlIHBhY2tldHMgY2FycnlpbmcgZXhjZXNzaXZlbHkgb2xkIEFDS3MgYnlwYXNzIHRoZSBmYXN0IHBhdGggYW5kIGFyZSBoYW5kbGVkIGJ5IHRoZSBzbG93IHBhdGggYWNjb3JkaW5nIHRvIFJGQyA1OTYxLlxuXG5UaGlzIGNoYW5nZSB0b3VjaGVzIG9ubHkgc3RhbmRhcmQgVENQIHNlcXVlbmNlIG51bWJlciBjb21wYXJpc29uIGxvZ2ljIHVzaW5nIHdlbGwtZGVmaW5lZCwgaW5pdGlhbGl6ZWQgZmllbGRzIG9uIGBzdHJ1Y3Qgc29ja2AgYW5kIGBza19idWZmYC4gVGhlcmUgYXJlIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gZGF0YSB0cmFuc2ZlcnMgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5NzQ0MWYzNDhiNjU0YmU1NWEzNzNkMWRjMzdkZTJlYWEzMGRiZWY0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgOSAwODo0NjozNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0LmMKaW5kZXggZGFmZjkzZDUxMzQyOC4uNTdmZWM1OGE0ZjE1MyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX2lucHV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2lucHV0LmMKQEAgLTY1MzksNyAmIzQzOzY1MzksNyBAQCB2b2lkIHRjcF9yY3ZfZXN0YWJsaXNoZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCiAJaWYgKCh0Y3BfZmxhZ193b3JkKHRoKSAmYW1wOyBUQ1BfSFBfQklUUykgPT0gdHAtJmd0O3ByZWRfZmxhZ3MgJmFtcDsmYW1wOwogCSAgICBUQ1BfU0tCX0NCKHNrYiktJmd0O3NlcSA9PSB0cC0mZ3Q7cmN2X254dCAmYW1wOyZhbXA7Ci0JICAgICFhZnRlcihUQ1BfU0tCX0NCKHNrYiktJmd0O2Fja19zZXEsIHRwLSZndDtzbmRfbnh0KSkgewomIzQzOwkgICAgYmV0d2VlbihUQ1BfU0tCX0NCKHNrYiktJmd0O2Fja19zZXEsIHRwLSZndDtzbmRfdW5hLCB0cC0mZ3Q7c25kX254dCkpIHsKIAkJaW50IHRjcF9oZWFkZXJfbGVuID0gdHAtJmd0O3RjcF9oZWFkZXJfbGVuOwogCQlzMzIgZGVsdGEgPSAwOwogCQlpbnQgZmxhZyA9IDA7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcmVqZWN0LW9sZC1hY2sucGt0IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3BhY2tldGRyaWxsL3RjcF9yZmM1OTYxX3JlamVjdC1vbGQtYWNrLnBrdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi44ZTcyMjkxMjc2NzBmCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3BhY2tldGRyaWxsL3RjcF9yZmM1OTYxX3JlamVjdC1vbGQtYWNrLnBrdApAQCAtMCwwICYjNDM7MSwyMyBAQAomIzQzOy8vIFRlc3QgcmVqZWN0aW9uIG9mIGRhdGEgc2VnbWVudHMgY2FycnlpbmcgZXhjZXNzaXZlbHkgb2xkIEFDS3MKJiM0MzsKJiM0MzswIHNvY2tldCguLi4sIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1RDUCkgPSAzCiYjNDM7JiM0MzswIHNldHNvY2tvcHQoMywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCBbMV0sIDQpID0gMAomIzQzOyYjNDM7MCBiaW5kKDMsIC4uLiwgLi4uKSA9IDAKJiM0MzsmIzQzOzAgbGlzdGVuKDMsIDEwMjQpID0gMAomIzQzOwomIzQzOy8vIC0tLS0tLS0tLS0tLS0tLS0gSGFuZHNoYWtlIC0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KJiM0MzsmIzQzOzAgJmx0OyBTIDA6MCgwKSB3aW4gNjU1MzUKJiM0MzsmIzQzOzAgJmd0OyBTLiAwOjAoMCkgYWNrIDEgJmx0Oy4uLiZndDsKJiM0MzsmIzQzOzAgJmx0OyAuIDE6MSgwKSBhY2sgMSB3aW4gNjU1MzUKJiM0MzsmIzQzOzAgYWNjZXB0KDMsIC4uLiwgLi4uKSA9IDQKJiM0MzsKJiM0MzsvLyBQb3B1bGF0ZSByZWNlaXZlIG1lbW9yeSBzbyB0aGUgZm9sbG93aW5nIHNlZ21lbnQgY2FuIHVzZQomIzQzOy8vIGhlYWRlciBwcmVkaWN0aW9uLgomIzQzOyYjNDM7MCAmbHQ7IFAuIDE6NTAxKDUwMCkgYWNrIDEgd2luIDY1NTM1CiYjNDM7JiM0MzswICZndDsgLiAxOjEoMCkgYWNrIDUwMQomIzQzOwomIzQzOy8vIFNlbmQgYW4gaW4tc2VxdWVuY2UgZGF0YSBzZWdtZW50IGNhcnJ5aW5nIGFuIGV4Y2Vzc2l2ZWx5IG9sZCBBQ0suCiYjNDM7JiM0MzswICZsdDsgUC4gNTAxOjE1MDEoMTAwMCkgYWNrIDI3OTQ5NjczOTcgd2luIDY1NTM1CiYjNDM7CiYjNDM7Ly8gQ2hhbGxlbmdlIEFDSzsgUkNWLk5YVCBtdXN0IHJlbWFpbiA1MDEuCiYjNDM7JiM0MzswICZndDsgLiAxOjEoMCkgYWNrIDUwMQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDg6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYyOAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDM1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRDUCBSZWNlaXZlIEVzdGFibGlzaGVkIEZ1bmN0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTG9va3MgbGlrZSB3ZSYjMzk7cmUgemVyb2luZyBpbiBvbiBhIGNoYW5nZSB3aXRoaW4gYG5ldC9pcHY0L3RjcF9pbnB1dC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgZnVuY3Rpb24uIFRoZSBkaWZmIGhpZ2hsaWdodHMgYSBtb2RpZmljYXRpb24gdG8gdGhlIGxvZ2ljIHN1cnJvdW5kaW5nIGFja25vd2xlZGdtZW50IHByb2Nlc3NpbmcuIExldCYjMzk7cyBzZWUuLi4gaXQgYXBwZWFycyB0aGUgb3JpZ2luYWwgY29kZSBjaGVja2VkIGlmIHRoZSBhY2tub3dsZWRnZWQgc2VxdWVuY2UgbnVtYmVyIChgYWNrX3NlcWApIHdhcyAqbm90KiBhZnRlciBgc25kX254dGAuIFRoZSBwYXRjaCwgaG93ZXZlciwgcmVmYWN0b3JzIHRoaXMgdG8gdXNlIGBiZXR3ZWVuYCwgY2hlY2tpbmcgaWYgYGFja19zZXFgIGlzIGJldHdlZW4gYHNuZF91bmFgIGFuZCBgc25kX254dGAuIFRoaXMgaXMgYSBzdWJ0bGUsIGJ1dCBwb3RlbnRpYWxseSBzaWduaWZpY2FudCwgc2hpZnQgaW4gaG93IHdlIGhhbmRsZSBhY2tub3dsZWRnbWVudHMuIEEgcGFja2V0ZHJpbGwgdGVzdCBpcyBsaWtlbHkgYWRkZWQgdG8gdGVzdCB0aGlzIG5vdy4gV2UgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgY29udGV4dCBvZiB0aGlzIGZ1bmN0aW9uIHRvIGZ1bGx5IGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMsIHRob3VnaCwgc28gbGV0JiMzOTtzIG5hdmlnYXRlIHRvIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCB3aXRoaW4gdGhlIHNhbWUgZmlsZSB0byBnZXQgdGhlIGNvbXBsZXRlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDA4OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lucHV0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2NTI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzY1MjU6XHRcdCAqXHRXZSBkbyBjaGVja3N1bSBhbmQgY29weSBhbHNvIGJ1dCBmcm9tIGRldmljZSB0byBrZXJuZWwuXG42NTI2Olx0XHQgKi9cbjY1Mjc6XHRcbjY1Mjg6XHRcdHRwLVx1MDAzZXJ4X29wdC5zYXdfdHN0YW1wID0gMDtcbjY1Mjk6XHRcdHRwLVx1MDAzZXJ4X29wdC5hY2NlY24gPSAwO1xuNjUzMDpcdFxuNjUzMTpcdFx0LypcdHByZWRfZmxhZ3MgaXMgMHhTPzEwIFx1MDAzY1x1MDAzYyAxNiAmIzQzOyBzbmRfd25kXG42NTMyOlx0XHQgKlx0aWYgaGVhZGVyX3ByZWRpY3Rpb24gaXMgdG8gYmUgbWFkZVxuNjUzMzpcdFx0ICpcdCYjMzk7UyYjMzk7IHdpbGwgYWx3YXlzIGJlIHRwLVx1MDAzZXRjcF9oZWFkZXJfbGVuIFx1MDAzZVx1MDAzZSAyXG42NTM0Olx0XHQgKlx0JiMzOTs/JiMzOTsgd2lsbCBiZSAwIGZvciB0aGUgZmFzdCBwYXRoLCBvdGhlcndpc2UgcHJlZF9mbGFncyBpcyAwIHRvXG42NTM1Olx0XHQgKiAgdHVybiBpdCBvZmZcdCh3aGVuIHRoZXJlIGFyZSBob2xlcyBpbiB0aGUgcmVjZWl2ZVxuNjUzNjpcdFx0ICpcdCBzcGFjZSBmb3IgaW5zdGFuY2UpXG42NTM3Olx0XHQgKlx0UFNIIGZsYWcgaXMgaWdub3JlZC5cbjY1Mzg6XHRcdCAqL1xuNjUzOTpcdFxuNjU0MDpcdFx0aWYgKCh0Y3BfZmxhZ193b3JkKHRoKSBcdTAwMjYgVENQX0hQX0JJVFMpID09IHRwLVx1MDAzZXByZWRfZmxhZ3MgXHUwMDI2XHUwMDI2XG42NTQxOlx0XHQgICAgVENQX1NLQl9DQihza2IpLVx1MDAzZXNlcSA9PSB0cC1cdTAwM2VyY3Zfbnh0IFx1MDAyNlx1MDAyNlxuNjU0MjpcdFx0ICAgIGJldHdlZW4oVENQX1NLQl9DQihza2IpLVx1MDAzZWFja19zZXEsIHRwLVx1MDAzZXNuZF91bmEsIHRwLVx1MDAzZXNuZF9ueHQpKSB7XG42NTQzOlx0XHRcdGludCB0Y3BfaGVhZGVyX2xlbiA9IHRwLVx1MDAzZXRjcF9oZWFkZXJfbGVuO1xuNjU0NDpcdFx0XHRzMzIgZGVsdGEgPSAwO1xuNjU0NTpcdFx0XHRpbnQgZmxhZyA9IDA7XG42NTQ2Olx0XG42NTQ3Olx0XHRcdC8qIFRpbWVzdGFtcCBoZWFkZXIgcHJlZGljdGlvbjogdGNwX2hlYWRlcl9sZW5cbjY1NDg6XHRcdFx0ICogaXMgYXV0b21hdGljYWxseSBlcXVhbCB0byB0aC1cdTAwM2Vkb2ZmKjQgZHVlIHRvIHByZWRfZmxhZ3NcbjY1NDk6XHRcdFx0ICogbWF0Y2guXG42NTUwOlx0XHRcdCAqL1xuNjU1MTpcdFxuNjU1MjpcdFx0XHQvKiBDaGVjayB0aW1lc3RhbXAgKi9cbjY1NTM6XHRcdFx0aWYgKHRjcF9oZWFkZXJfbGVuID09IHNpemVvZihzdHJ1Y3QgdGNwaGRyKSAmIzQzOyBUQ1BPTEVOX1RTVEFNUF9BTElHTkVEKSB7XG42NTU0Olx0XHRcdFx0LyogTm8/IFNsb3cgcGF0aCEgKi9cbjY1NTU6XHRcdFx0XHRpZiAoIXRjcF9wYXJzZV9hbGlnbmVkX3RpbWVzdGFtcCh0cCwgdGgpKVxuNjU1NjpcdFx0XHRcdFx0Z290byBzbG93X3BhdGg7XG42NTU3Olx0XG42NTU4Olx0XHRcdFx0ZGVsdGEgPSB0cC1cdTAwM2VyeF9vcHQucmN2X3RzdmFsIC1cbjY1NTk6XHRcdFx0XHRcdHRwLVx1MDAzZXJ4X29wdC50c19yZWNlbnQ7XG42NTYwOlx0XHRcdFx0LyogSWYgUEFXUyBmYWlsZWQsIGNoZWNrIGl0IG1vcmUgY2FyZWZ1bGx5IGluIHNsb3cgcGF0aCAqL1xuNjU2MTpcdFx0XHRcdGlmIChkZWx0YSBcdTAwM2MgMClcbjY1NjI6XHRcdFx0XHRcdGdvdG8gc2xvd19wYXRoO1xuNjU2MzpcdFxuNjU2NDpcdFx0XHRcdC8qIERPIE5PVCB1cGRhdGUgdHNfcmVjZW50IGhlcmUsIGlmIGNoZWNrc3VtIGZhaWxzXG42NTY1Olx0XHRcdFx0ICogYW5kIHRpbWVzdGFtcCB3YXMgY29ycnVwdGVkIHBhcnQsIGl0IHdpbGwgcmVzdWx0XG42NTY2Olx0XHRcdFx0ICogaW4gYSBodW5nIGNvbm5lY3Rpb24gc2luY2Ugd2Ugd2lsbCBkcm9wIGFsbFxuNjU2NzpcdFx0XHRcdCAqIGZ1dHVyZSBwYWNrZXRzIGR1ZSB0byB0aGUgUEFXUyB0ZXN0LlxuNjU2ODpcdFx0XHRcdCAqL1xuNjU2OTpcdFx0XHR9XG42NTcwOlx0XG42NTcxOlx0XHRcdGlmIChsZW4gXHUwMDNjPSB0Y3BfaGVhZGVyX2xlbikge1xuNjU3MjpcdFx0XHRcdC8qIEJ1bGsgZGF0YSB0cmFuc2Zlcjogc2VuZGVyICovXG42NTczOlx0XHRcdFx0aWYgKGxlbiA9PSB0Y3BfaGVhZGVyX2xlbikge1xuNjU3NDpcdFx0XHRcdFx0LyogUHJlZGljdGVkIHBhY2tldCBpcyBpbiB3aW5kb3cgYnkgZGVmaW5pdGlvbi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDg6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA0OQoJCQkJCQkJb3V0cHV0OiAxOTQKCQkJCQkJCXRob3VnaHRzOiA2MTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVENQIEZhc3QgUGF0aCBPcHRpbWl6YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBjaGFuZ2UuIEluIHRoZSBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgZnVuY3Rpb24sIHdlJiMzOTtyZSByZWZpbmluZyBob3cgd2UgaGFuZGxlIGluY29taW5nIEFDS3MuIEJlZm9yZSwgdGhlIGZhc3QgcGF0aCBzaW1wbHkgY2hlY2tlZCBpZiB0aGUgQUNLIHNlcXVlbmNlIG51bWJlciB3YXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBzbmRfbnh0YC4gVGhhdCB3YXMgdG9vIGxheDsgQUNLcyBjb3VsZCBiZSAqc3RhbGUqIOKAkyBvbGRlciB0aGFuIGBzbmRfdW5hYCEgVGhpcyBpcyBwcm9ibGVtYXRpYywgYXMgaXQgYnlwYXNzZXMgY3JpdGljYWwgUkZDIDU5NjEgdmFsaWRhdGlvbiAoVENQIGhlYWRlciBwcmVkaWN0aW9uIGZhc3QgcGF0aCkuIE5vdywgd2UmIzM5O3JlIHVzaW5nIGBiZXR3ZWVuKFRDUF9TS0JfQ0Ioc2tiKS0mZ3Q7YWNrX3NlcSwgdHAtJmd0O3NuZF91bmEsIHRwLSZndDtzbmRfbnh0KWAuIElmIHRoZSBBQ0sgZmFsbHMgb3V0c2lkZSB0aGlzIHdpbmRvdyAob2xkZXIgdGhhbiBgc25kX3VuYWApLCB3ZSBjb3JyZWN0bHkgcm91dGUgaXQgdG8gdGhlIHNsb3cgcGF0aCBmb3IgcHJvcGVyIFJGQyA1OTYxIGNoZWNrcyBsaWtlIGB0Y3BfdmFsaWRhdGVfaW5jb21pbmdgIGFuZCBgdGNwX2Fja2AuCgpOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBhcmUgd2UgaW50cm9kdWNpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgd2l0aCB0aGlzIHVwZGF0ZT8gTGV0JiMzOTtzIGJlIHRob3JvdWdoLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBoYXBwZW5pbmcuIFdlJiMzOTtyZSBub3QgYWNjZXNzaW5nIGFueSBuZXcgZmllbGRzIG9yIHN0cnVjdHMgdGhhdCBtaWdodCBjb250YWluIHVuaW5pdGlhbGl6ZWQgZGF0YS4gYHRwLSZndDtzbmRfdW5hYCBhbmQgYHRwLSZndDtzbmRfbnh0YCBhcmUgc3RhbmRhcmQgVENQIHN0YXRlIHZhcmlhYmxlcywgYWx3YXlzIGluaXRpYWxpemVkIHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgRVNUQUJMSVNIRUQuIGBUQ1BfU0tCX0NCKHNrYiktJmd0O2Fja19zZXFgIGlzLCBvZiBjb3Vyc2UsIGRlcml2ZWQgZnJvbSB0aGUgcGFja2V0IGhlYWRlci4gVGhlcmUmIzM5O3Mgbm8ga2VybmVsLXRvLXVzZXIgbWVtb3J5IGNvcHkgaW52b2x2ZWQsIHNvIG5vIHJpc2sgb2YgaW5mb3JtYXRpb24gbGVha3MuIFRoZXJlJiMzOTtzIGFsc28gbm8gYnJhbmNoaW5nIHRoYXQgcmVsaWVzIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YS4gVGhpcyBpcyBwdXJlbHkgYSB0aWdodGVuaW5nIG9mIHByb3RvY29sIHZhbGlkYXRpb24sIGEgcHJvdG9jb2wgbG9naWMgaGFyZGVuaW5nIG9uIHRoZSBmYXN0IHBhdGguCgpJJiMzOTt2ZSBnb3QgdG8gZG91YmxlLWNoZWNrIHRoaXMgZm9yIEtNU0FOIHRob3VnaC4gV2UgbmVlZCBLTVNBTiBpZjogS2VybmVsIHN0cnVjdHMgYXJlIHBhc3NlZCB0byB1c2Vyc3BhY2UgcG90ZW50aWFsbHkgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcy4gTm8uIENvbmRpdGlvbmFsIGxvZ2ljIHJlbGllcyBvbiB1bmluaXRpYWxpemVkIGRhdGE/IE5vLiBBbGxvY2F0aW9ucyBhbmQgaW5pdGlhbGl6YXRpb24gY3JlYXRlIHJpc2tzIG9mIHVuaW5pdGlhbGl6ZWQgcmVhZHM/IE5vLiBCb3VuZHMgY2hlY2tzIHRoYXQgYWxsb3cgcmVhZGluZyB1bmluaXRpYWxpemVkIGJ1ZmZlciBieXRlcz8gTm8uCgpTbywgdGhpcyBjaGFuZ2UgZG9lc24mIzM5O3QgdHJpZ2dlciBhbnkgS01TQU4gY29uY2VybnMuIEl0JiMzOTtzIGp1c3QgdGlnaHRlbmluZyBhIGNvbmRpdGlvbiwgc2VuZGluZyBwb3RlbnRpYWxseSBiYWQgQUNLcyB0byB0aGUgc2xvdyBwYXRoLiBObyBhbGxvY2F0aW9ucywgY29waWVzLCBvciByZWFkcyBmcm9tIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBLQVNBTiBhbmQgc3RhbmRhcmQgZnV6emluZyBzaG91bGQgYmUgcGVyZmVjdGx5IGFkZXF1YXRlLgoKUmlnaHQsIEkmIzM5O20gY29tZm9ydGFibGUgd2l0aCB0aGF0LiBUaW1lIHRvIHRlbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDg6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRDUCBoZWFkZXIgcHJlZGljdGlvbiBjb25kaXRpb24gaW4gYHRjcF9yY3ZfZXN0YWJsaXNoZWQoKWAgYnkgcmVwbGFjaW5nIGAhYWZ0ZXIoVENQX1NLQl9DQihza2IpLVx1MDAzZWFja19zZXEsIHRwLVx1MDAzZXNuZF9ueHQpYCB3aXRoIGBiZXR3ZWVuKFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VhY2tfc2VxLCB0cC1cdTAwM2VzbmRfdW5hLCB0cC1cdTAwM2VzbmRfbnh0KWAgdG8gZW5zdXJlIHBhY2tldHMgY2FycnlpbmcgZXhjZXNzaXZlbHkgb2xkIEFDS3MgYnlwYXNzIHRoZSBmYXN0IHBhdGggYW5kIGFyZSBoYW5kbGVkIGJ5IHRoZSBzbG93IHBhdGggYWNjb3JkaW5nIHRvIFJGQyA1OTYxLlxuXG5UaGlzIGNoYW5nZSB0b3VjaGVzIG9ubHkgc3RhbmRhcmQgVENQIHNlcXVlbmNlIG51bWJlciBjb21wYXJpc29uIGxvZ2ljIHVzaW5nIHdlbGwtZGVmaW5lZCwgaW5pdGlhbGl6ZWQgZmllbGRzIG9uIGBzdHJ1Y3Qgc29ja2AgYW5kIGBza19idWZmYC4gVGhlcmUgYXJlIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gZGF0YSB0cmFuc2ZlcnMgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVENQIGhlYWRlciBwcmVkaWN0aW9uIGNvbmRpdGlvbiBpbiBgdGNwX3Jjdl9lc3RhYmxpc2hlZCgpYCBieSByZXBsYWNpbmcgYCFhZnRlcihUQ1BfU0tCX0NCKHNrYiktXHUwMDNlYWNrX3NlcSwgdHAtXHUwMDNlc25kX254dClgIHdpdGggYGJldHdlZW4oVENQX1NLQl9DQihza2IpLVx1MDAzZWFja19zZXEsIHRwLVx1MDAzZXNuZF91bmEsIHRwLVx1MDAzZXNuZF9ueHQpYCB0byBlbnN1cmUgcGFja2V0cyBjYXJyeWluZyBleGNlc3NpdmVseSBvbGQgQUNLcyBieXBhc3MgdGhlIGZhc3QgcGF0aCBhbmQgYXJlIGhhbmRsZWQgYnkgdGhlIHNsb3cgcGF0aCBhY2NvcmRpbmcgdG8gUkZDIDU5NjEuXG5cblRoaXMgY2hhbmdlIHRvdWNoZXMgb25seSBzdGFuZGFyZCBUQ1Agc2VxdWVuY2UgbnVtYmVyIGNvbXBhcmlzb24gbG9naWMgdXNpbmcgd2VsbC1kZWZpbmVkLCBpbml0aWFsaXplZCBmaWVsZHMgb24gYHN0cnVjdCBzb2NrYCBhbmQgYHNrX2J1ZmZgLiBUaGVyZSBhcmUgbm8gbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIHRyYW5zZmVycyB0byB1c2VyIHNwYWNlLCBhbmQgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDlUMDg6NDY6MzcuODM5ODk3NTEyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg0MDU0NTEzNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjcF9yY3ZfZXN0YWJsaXNoZWRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQ1AgaGVhZGVyIHByZWRpY3Rpb24gY29uZGl0aW9uIGluIGB0Y3BfcmN2X2VzdGFibGlzaGVkKClgIGJ5IHJlcGxhY2luZyBgIWFmdGVyKFRDUF9TS0JfQ0Ioc2tiKS1cXHUwMDNlYWNrX3NlcSwgdHAtXFx1MDAzZXNuZF9ueHQpYCB3aXRoIGBiZXR3ZWVuKFRDUF9TS0JfQ0Ioc2tiKS1cXHUwMDNlYWNrX3NlcSwgdHAtXFx1MDAzZXNuZF91bmEsIHRwLVxcdTAwM2VzbmRfbnh0KWAgdG8gZW5zdXJlIHBhY2tldHMgY2FycnlpbmcgZXhjZXNzaXZlbHkgb2xkIEFDS3MgYnlwYXNzIHRoZSBmYXN0IHBhdGggYW5kIGFyZSBoYW5kbGVkIGJ5IHRoZSBzbG93IHBhdGggYWNjb3JkaW5nIHRvIFJGQyA1OTYxLlxcblxcblRoaXMgY2hhbmdlIHRvdWNoZXMgb25seSBzdGFuZGFyZCBUQ1Agc2VxdWVuY2UgbnVtYmVyIGNvbXBhcmlzb24gbG9naWMgdXNpbmcgd2VsbC1kZWZpbmVkLCBpbml0aWFsaXplZCBmaWVsZHMgb24gYHN0cnVjdCBzb2NrYCBhbmQgYHNrX2J1ZmZgLiBUaGVyZSBhcmUgbm8gbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIHRyYW5zZmVycyB0byB1c2VyIHNwYWNlLCBhbmQgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBUQ1AgaW5wdXQgcHJvY2Vzc2luZyBpbiB0Y3BfcmN2X2VzdGFibGlzaGVkKCkgYnkgdGlnaHRlbmluZyB0aGUgZmFzdC1wYXRoIGhlYWRlciBwcmVkaWN0aW9uIGNoZWNrIHRvIGVuc3VyZSBpbmNvbWluZyBBQ0sgc2VxdWVuY2VzIGZhbGwgYmV0d2VlbiBzbmRfdW5hIGFuZCBzbmRfbnh0LCBwcmV2ZW50aW5nIG91dC1vZi1vcmRlci9leGNlc3NpdmVseSBvbGQgQUNLcyBmcm9tIGltcHJvcGVybHkgdGFraW5nIHRoZSBmYXN0IHBhdGguIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgVENQIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDg6NDY6MzcuODM5OTAxMzgyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDM4MTEyNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5NzQ0MWYzNDhiNjU0YmU1NWEzNzNkMWRjMzdkZTJlYWEzMGRiZWY0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDkgMDg6NDY6MzYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lucHV0LmMgYi9uZXQvaXB2NC90Y3BfaW5wdXQuY1xcbmluZGV4IGRhZmY5M2Q1MTM0MjguLjU3ZmVjNThhNGYxNTMgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdGNwX2lucHV0LmNcXG4rKysgYi9uZXQvaXB2NC90Y3BfaW5wdXQuY1xcbkBAIC02NTM5LDcgKzY1MzksNyBAQCB2b2lkIHRjcF9yY3ZfZXN0YWJsaXNoZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXG4gXFx0aWYgKCh0Y3BfZmxhZ193b3JkKHRoKSBcXHUwMDI2IFRDUF9IUF9CSVRTKSA9PSB0cC1cXHUwMDNlcHJlZF9mbGFncyBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgVENQX1NLQl9DQihza2IpLVxcdTAwM2VzZXEgPT0gdHAtXFx1MDAzZXJjdl9ueHQgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgICFhZnRlcihUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWFja19zZXEsIHRwLVxcdTAwM2VzbmRfbnh0KSkge1xcbitcXHQgICAgYmV0d2VlbihUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWFja19zZXEsIHRwLVxcdTAwM2VzbmRfdW5hLCB0cC1cXHUwMDNlc25kX254dCkpIHtcXG4gXFx0XFx0aW50IHRjcF9oZWFkZXJfbGVuID0gdHAtXFx1MDAzZXRjcF9oZWFkZXJfbGVuO1xcbiBcXHRcXHRzMzIgZGVsdGEgPSAwO1xcbiBcXHRcXHRpbnQgZmxhZyA9IDA7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yZWplY3Qtb2xkLWFjay5wa3QgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcmVqZWN0LW9sZC1hY2sucGt0XFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi44ZTcyMjkxMjc2NzBmXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yZWplY3Qtb2xkLWFjay5wa3RcXG5AQCAtMCwwICsxLDIzIEBAXFxuKy8vIFRlc3QgcmVqZWN0aW9uIG9mIGRhdGEgc2VnbWVudHMgY2FycnlpbmcgZXhjZXNzaXZlbHkgb2xkIEFDS3NcXG4rXFxuKzAgc29ja2V0KC4uLiwgU09DS19TVFJFQU0sIElQUFJPVE9fVENQKSA9IDNcXG4rKzAgc2V0c29ja29wdCgzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIFsxXSwgNCkgPSAwXFxuKyswIGJpbmQoMywgLi4uLCAuLi4pID0gMFxcbisrMCBsaXN0ZW4oMywgMTAyNCkgPSAwXFxuK1xcbisvLyAtLS0tLS0tLS0tLS0tLS0tIEhhbmRzaGFrZSAtLS0tLS0tLS0tLS0tLS0tLS0tIC8vXFxuKyswIFxcdTAwM2MgUyAwOjAoMCkgd2luIDY1NTM1XFxuKyswIFxcdTAwM2UgUy4gMDowKDApIGFjayAxIFxcdTAwM2MuLi5cXHUwMDNlXFxuKyswIFxcdTAwM2MgLiAxOjEoMCkgYWNrIDEgd2luIDY1NTM1XFxuKyswIGFjY2VwdCgzLCAuLi4sIC4uLikgPSA0XFxuK1xcbisvLyBQb3B1bGF0ZSByZWNlaXZlIG1lbW9yeSBzbyB0aGUgZm9sbG93aW5nIHNlZ21lbnQgY2FuIHVzZVxcbisvLyBoZWFkZXIgcHJlZGljdGlvbi5cXG4rKzAgXFx1MDAzYyBQLiAxOjUwMSg1MDApIGFjayAxIHdpbiA2NTUzNVxcbisrMCBcXHUwMDNlIC4gMToxKDApIGFjayA1MDFcXG4rXFxuKy8vIFNlbmQgYW4gaW4tc2VxdWVuY2UgZGF0YSBzZWdtZW50IGNhcnJ5aW5nIGFuIGV4Y2Vzc2l2ZWx5IG9sZCBBQ0suXFxuKyswIFxcdTAwM2MgUC4gNTAxOjE1MDEoMTAwMCkgYWNrIDI3OTQ5NjczOTcgd2luIDY1NTM1XFxuK1xcbisvLyBDaGFsbGVuZ2UgQUNLOyBSQ1YuTlhUIG11c3QgcmVtYWluIDUwMS5cXG4rKzAgXFx1MDAzZSAuIDE6MSgwKSBhY2sgNTAxXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA4OjQ2OjM4LjQ0NDI2NDc2M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6Mzg1MDU0MTMxMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjcF9yY3ZfZXN0YWJsaXNoZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBUQ1AgaW5wdXQgcHJvY2Vzc2luZyBpbiB0Y3BfcmN2X2VzdGFibGlzaGVkKCkgYnkgdGlnaHRlbmluZyB0aGUgZmFzdC1wYXRoIGhlYWRlciBwcmVkaWN0aW9uIGNoZWNrIHRvIGVuc3VyZSBpbmNvbWluZyBBQ0sgc2VxdWVuY2VzIGZhbGwgYmV0d2VlbiBzbmRfdW5hIGFuZCBzbmRfbnh0LCBwcmV2ZW50aW5nIG91dC1vZi1vcmRlci9leGNlc3NpdmVseSBvbGQgQUNLcyBmcm9tIGltcHJvcGVybHkgdGFraW5nIHRoZSBmYXN0IHBhdGguIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgVENQIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5NzQ0MWYzNDhiNjU0YmU1NWEzNzNkMWRjMzdkZTJlYWEzMGRiZWY0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgOSAwODo0NjozNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcbmluZGV4IGRhZmY5M2Q1MTM0MjguLjU3ZmVjNThhNGYxNTMgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfaW5wdXQuY1xuKysrIGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcbkBAIC02NTM5LDcgKzY1MzksNyBAQCB2b2lkIHRjcF9yY3ZfZXN0YWJsaXNoZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFxuIFx0aWYgKCh0Y3BfZmxhZ193b3JkKHRoKSBcdTAwMjYgVENQX0hQX0JJVFMpID09IHRwLVx1MDAzZXByZWRfZmxhZ3MgXHUwMDI2XHUwMDI2XG4gXHQgICAgVENQX1NLQl9DQihza2IpLVx1MDAzZXNlcSA9PSB0cC1cdTAwM2VyY3Zfbnh0IFx1MDAyNlx1MDAyNlxuLVx0ICAgICFhZnRlcihUQ1BfU0tCX0NCKHNrYiktXHUwMDNlYWNrX3NlcSwgdHAtXHUwMDNlc25kX254dCkpIHtcbitcdCAgICBiZXR3ZWVuKFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VhY2tfc2VxLCB0cC1cdTAwM2VzbmRfdW5hLCB0cC1cdTAwM2VzbmRfbnh0KSkge1xuIFx0XHRpbnQgdGNwX2hlYWRlcl9sZW4gPSB0cC1cdTAwM2V0Y3BfaGVhZGVyX2xlbjtcbiBcdFx0czMyIGRlbHRhID0gMDtcbiBcdFx0aW50IGZsYWcgPSAwO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yZWplY3Qtb2xkLWFjay5wa3QgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcmVqZWN0LW9sZC1hY2sucGt0XG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uOGU3MjI5MTI3NjcwZlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3BhY2tldGRyaWxsL3RjcF9yZmM1OTYxX3JlamVjdC1vbGQtYWNrLnBrdFxuQEAgLTAsMCArMSwyMyBAQFxuKy8vIFRlc3QgcmVqZWN0aW9uIG9mIGRhdGEgc2VnbWVudHMgY2FycnlpbmcgZXhjZXNzaXZlbHkgb2xkIEFDS3NcbitcbiswIHNvY2tldCguLi4sIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1RDUCkgPSAzXG4rKzAgc2V0c29ja29wdCgzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIFsxXSwgNCkgPSAwXG4rKzAgYmluZCgzLCAuLi4sIC4uLikgPSAwXG4rKzAgbGlzdGVuKDMsIDEwMjQpID0gMFxuK1xuKy8vIC0tLS0tLS0tLS0tLS0tLS0gSGFuZHNoYWtlIC0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cbisrMCBcdTAwM2MgUyAwOjAoMCkgd2luIDY1NTM1XG4rKzAgXHUwMDNlIFMuIDA6MCgwKSBhY2sgMSBcdTAwM2MuLi5cdTAwM2VcbisrMCBcdTAwM2MgLiAxOjEoMCkgYWNrIDEgd2luIDY1NTM1XG4rKzAgYWNjZXB0KDMsIC4uLiwgLi4uKSA9IDRcbitcbisvLyBQb3B1bGF0ZSByZWNlaXZlIG1lbW9yeSBzbyB0aGUgZm9sbG93aW5nIHNlZ21lbnQgY2FuIHVzZVxuKy8vIGhlYWRlciBwcmVkaWN0aW9uLlxuKyswIFx1MDAzYyBQLiAxOjUwMSg1MDApIGFjayAxIHdpbiA2NTUzNVxuKyswIFx1MDAzZSAuIDE6MSgwKSBhY2sgNTAxXG4rXG4rLy8gU2VuZCBhbiBpbi1zZXF1ZW5jZSBkYXRhIHNlZ21lbnQgY2FycnlpbmcgYW4gZXhjZXNzaXZlbHkgb2xkIEFDSy5cbisrMCBcdTAwM2MgUC4gNTAxOjE1MDEoMTAwMCkgYWNrIDI3OTQ5NjczOTcgd2luIDY1NTM1XG4rXG4rLy8gQ2hhbGxlbmdlIEFDSzsgUkNWLk5YVCBtdXN0IHJlbWFpbiA1MDEuXG4rKzAgXHUwMDNlIC4gMToxKDApIGFjayA1MDFcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA4OjQ2OjM4LjQ0NDI2NjIxM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY1Mzk2Mjg0MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6XG5cbioqRGl2aW5nIGludG8gYHRjcF9pbnB1dC5jYCBmb3IgQ29udGV4dCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBtYWtpbmcgYSBjaGFuZ2Ugd2l0aGluIHRoZSBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgZnVuY3Rpb24sIGFuZCBpdCBsb29rcyBsaWtlIHRoZSB0YXJnZXQgaXMgaW4gYG5ldC9pcHY0L3RjcF9pbnB1dC5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljIHRvIHByb3Blcmx5IGV2YWx1YXRlIHRoZSBpbXBhY3QsIHNvIEknbSBnb2luZyB0byBqdW1wIGludG8gdGhhdCBmaWxlLiBJJ20gdGhpbmtpbmcgYXJvdW5kIGxpbmUgNjUzOSBzaG91bGQgZ2l2ZSBtZSB0aGUgcmVsZXZhbnQgY29udGV4dCBmb3IgdGhpcyBwYXRjaC4gTGV0IG1lIHNlZSB3aGF0J3MgaGFwcGVuaW5nIGp1c3QgYmVmb3JlIGFuZCBhZnRlciB0aGF0IGxpbmUgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUgb2Ygd2hhdCB0aGlzIGNoYW5nZSBpcyBpbnRlbmRlZCB0byBhZGRyZXNzLiBHb3QgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJwbGF5IGhlcmUgYmVmb3JlIGZvcm1pbmcgYW4gb3Bpbmlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQxNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDg6NDY6NDQuOTgzODk4Mzc1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAzOTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY0L3RjcF9pbnB1dC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY1MjUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjY1MjU6XFx0XFx0ICpcXHRXZSBkbyBjaGVja3N1bSBhbmQgY29weSBhbHNvIGJ1dCBmcm9tIGRldmljZSB0byBrZXJuZWwuXFxuNjUyNjpcXHRcXHQgKi9cXG42NTI3OlxcdFxcbjY1Mjg6XFx0XFx0dHAtXFx1MDAzZXJ4X29wdC5zYXdfdHN0YW1wID0gMDtcXG42NTI5OlxcdFxcdHRwLVxcdTAwM2VyeF9vcHQuYWNjZWNuID0gMDtcXG42NTMwOlxcdFxcbjY1MzE6XFx0XFx0LypcXHRwcmVkX2ZsYWdzIGlzIDB4Uz8xMCBcXHUwMDNjXFx1MDAzYyAxNiArIHNuZF93bmRcXG42NTMyOlxcdFxcdCAqXFx0aWYgaGVhZGVyX3ByZWRpY3Rpb24gaXMgdG8gYmUgbWFkZVxcbjY1MzM6XFx0XFx0ICpcXHQnUycgd2lsbCBhbHdheXMgYmUgdHAtXFx1MDAzZXRjcF9oZWFkZXJfbGVuIFxcdTAwM2VcXHUwMDNlIDJcXG42NTM0OlxcdFxcdCAqXFx0Jz8nIHdpbGwgYmUgMCBmb3IgdGhlIGZhc3QgcGF0aCwgb3RoZXJ3aXNlIHByZWRfZmxhZ3MgaXMgMCB0b1xcbjY1MzU6XFx0XFx0ICogIHR1cm4gaXQgb2ZmXFx0KHdoZW4gdGhlcmUgYXJlIGhvbGVzIGluIHRoZSByZWNlaXZlXFxuNjUzNjpcXHRcXHQgKlxcdCBzcGFjZSBmb3IgaW5zdGFuY2UpXFxuNjUzNzpcXHRcXHQgKlxcdFBTSCBmbGFnIGlzIGlnbm9yZWQuXFxuNjUzODpcXHRcXHQgKi9cXG42NTM5OlxcdFxcbjY1NDA6XFx0XFx0aWYgKCh0Y3BfZmxhZ193b3JkKHRoKSBcXHUwMDI2IFRDUF9IUF9CSVRTKSA9PSB0cC1cXHUwMDNlcHJlZF9mbGFncyBcXHUwMDI2XFx1MDAyNlxcbjY1NDE6XFx0XFx0ICAgIFRDUF9TS0JfQ0Ioc2tiKS1cXHUwMDNlc2VxID09IHRwLVxcdTAwM2VyY3Zfbnh0IFxcdTAwMjZcXHUwMDI2XFxuNjU0MjpcXHRcXHQgICAgYmV0d2VlbihUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWFja19zZXEsIHRwLVxcdTAwM2VzbmRfdW5hLCB0cC1cXHUwMDNlc25kX254dCkpIHtcXG42NTQzOlxcdFxcdFxcdGludCB0Y3BfaGVhZGVyX2xlbiA9IHRwLVxcdTAwM2V0Y3BfaGVhZGVyX2xlbjtcXG42NTQ0OlxcdFxcdFxcdHMzMiBkZWx0YSA9IDA7XFxuNjU0NTpcXHRcXHRcXHRpbnQgZmxhZyA9IDA7XFxuNjU0NjpcXHRcXG42NTQ3OlxcdFxcdFxcdC8qIFRpbWVzdGFtcCBoZWFkZXIgcHJlZGljdGlvbjogdGNwX2hlYWRlcl9sZW5cXG42NTQ4OlxcdFxcdFxcdCAqIGlzIGF1dG9tYXRpY2FsbHkgZXF1YWwgdG8gdGgtXFx1MDAzZWRvZmYqNCBkdWUgdG8gcHJlZF9mbGFnc1xcbjY1NDk6XFx0XFx0XFx0ICogbWF0Y2guXFxuNjU1MDpcXHRcXHRcXHQgKi9cXG42NTUxOlxcdFxcbjY1NTI6XFx0XFx0XFx0LyogQ2hlY2sgdGltZXN0YW1wICovXFxuNjU1MzpcXHRcXHRcXHRpZiAodGNwX2hlYWRlcl9sZW4gPT0gc2l6ZW9mKHN0cnVjdCB0Y3BoZHIpICsgVENQT0xFTl9UU1RBTVBfQUxJR05FRCkge1xcbjY1NTQ6XFx0XFx0XFx0XFx0LyogTm8/IFNsb3cgcGF0aCEgKi9cXG42NTU1OlxcdFxcdFxcdFxcdGlmICghdGNwX3BhcnNlX2FsaWduZWRfdGltZXN0YW1wKHRwLCB0aCkpXFxuNjU1NjpcXHRcXHRcXHRcXHRcXHRnb3RvIHNsb3dfcGF0aDtcXG42NTU3OlxcdFxcbjY1NTg6XFx0XFx0XFx0XFx0ZGVsdGEgPSB0cC1cXHUwMDNlcnhfb3B0LnJjdl90c3ZhbCAtXFxuNjU1OTpcXHRcXHRcXHRcXHRcXHR0cC1cXHUwMDNlcnhfb3B0LnRzX3JlY2VudDtcXG42NTYwOlxcdFxcdFxcdFxcdC8qIElmIFBBV1MgZmFpbGVkLCBjaGVjayBpdCBtb3JlIGNhcmVmdWxseSBpbiBzbG93IHBhdGggKi9cXG42NTYxOlxcdFxcdFxcdFxcdGlmIChkZWx0YSBcXHUwMDNjIDApXFxuNjU2MjpcXHRcXHRcXHRcXHRcXHRnb3RvIHNsb3dfcGF0aDtcXG42NTYzOlxcdFxcbjY1NjQ6XFx0XFx0XFx0XFx0LyogRE8gTk9UIHVwZGF0ZSB0c19yZWNlbnQgaGVyZSwgaWYgY2hlY2tzdW0gZmFpbHNcXG42NTY1OlxcdFxcdFxcdFxcdCAqIGFuZCB0aW1lc3RhbXAgd2FzIGNvcnJ1cHRlZCBwYXJ0LCBpdCB3aWxsIHJlc3VsdFxcbjY1NjY6XFx0XFx0XFx0XFx0ICogaW4gYSBodW5nIGNvbm5lY3Rpb24gc2luY2Ugd2Ugd2lsbCBkcm9wIGFsbFxcbjY1Njc6XFx0XFx0XFx0XFx0ICogZnV0dXJlIHBhY2tldHMgZHVlIHRvIHRoZSBQQVdTIHRlc3QuXFxuNjU2ODpcXHRcXHRcXHRcXHQgKi9cXG42NTY5OlxcdFxcdFxcdH1cXG42NTcwOlxcdFxcbjY1NzE6XFx0XFx0XFx0aWYgKGxlbiBcXHUwMDNjPSB0Y3BfaGVhZGVyX2xlbikge1xcbjY1NzI6XFx0XFx0XFx0XFx0LyogQnVsayBkYXRhIHRyYW5zZmVyOiBzZW5kZXIgKi9cXG42NTczOlxcdFxcdFxcdFxcdGlmIChsZW4gPT0gdGNwX2hlYWRlcl9sZW4pIHtcXG42NTc0OlxcdFxcdFxcdFxcdFxcdC8qIFByZWRpY3RlZCBwYWNrZXQgaXMgaW4gd2luZG93IGJ5IGRlZmluaXRpb24uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA4OjQ2OjQ0Ljk4NDUwNTc0NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU1MzIxMDY0NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVjZW50IFRDUCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhhdCBwYXRjaCB0byBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgbG9va3MgaW50ZXJlc3RpbmcuIFNwZWNpZmljYWxseSwgdGhhdCBmYXN0LXBhdGggY2hlY2suLi4gYmVmb3JlIGl0IHdhcyBgIWFmdGVyKFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VhY2tfc2VxLCB0cC1cdTAwM2VzbmRfbnh0KWAsIGFuZCBub3cgaXQncyBgYmV0d2VlbihUQ1BfU0tCX0NCKHNrYiktXHUwMDNlYWNrX3NlcSwgdHAtXHUwMDNlc25kX3VuYSwgdHAtXHUwMDNlc25kX254dClgLiBFc3NlbnRpYWxseSwgdGhleSdyZSB0aWdodGVuaW5nIHVwIHRoZSBjcml0ZXJpYSBmb3IgdGhlIGZhc3QgcGF0aCwgbWFraW5nIHN1cmUgd2UgZG9uJ3QgcHJlbWF0dXJlbHkgYWNjZXB0IGFuIG9sZCBBQ0suIE1ha2VzIHNlbnNlLiBJZiBgYWNrX3NlcWAgaXMgKmxlc3MqIHRoYW4gYHNuZF91bmFgLCBpdCdzIHN0YWxlIGFuZCBzaG91bGRuJ3QgYmUgc2hvcnRjdXR0aW5nIHRocm91Z2ggdGhlIHByZWRpY3Rpb24gcGF0aC4gVGhhdCBieXBhc3NlcyB0aGUgcHJvcGVyIFJGQyA1OTYxIHZhbGlkYXRpb24sIGFuZCB3ZSBjb3VsZCBlbmQgdXAgd2l0aCBhIGNoYWxsZW5nZSBBQ0sgYmVpbmcgc2VudCBpbmNvcnJlY3RseS5cblxuTm93LCBpcyB0aGlzIGV2ZW4gKnJlYWNoYWJsZSogY29kZT8gQWJzb2x1dGVseS4gYHRjcF9yY3ZfZXN0YWJsaXNoZWRgIGlzIHRoZSB3b3JraG9yc2UgZm9yIGVzdGFibGlzaGVkIFRDUCBjb25uZWN0aW9ucyBpbiB0aGUgTGludXgga2VybmVsIChgbmV0L2lwdjQvdGNwX2lucHV0LmNgKS4gSXQncyB0aGUgY2VudHJhbCBwb2ludCBmb3IgaGFuZGxpbmcgaW5jb21pbmcgZGF0YSBvbiBlc3RhYmxpc2hlZCBzb2NrZXRzIOKAkyB5b3VyIHN0YW5kYXJkIGxvb3BiYWNrLCB0dW4vdGFwLCBvciBuZXRkZXYgY29tbXVuaWNhdGlvbiBhbGwgZ28gdGhyb3VnaCBoZXJlLiBHaXZlbiBpdHMgY29yZSBuZXR3b3JraW5nIG5hdHVyZSwgdGhpcyBpcyAqZGVmaW5pdGVseSogYW4gYXJlYSB3b3J0aCBmdXp6aW5nLCBhbmQgaXQgbWFrZXMgaXQgYSBnb29kIHRhcmdldCBmb3IgYW5hbHlzaXMuXG5cbkkgc2hvdWxkIHZlcmlmeSB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgaW4gcGxhY2UgZm9yIHRoZSBgbmV0L2lwdjRgIHN0YWNrLCBqdXN0IHRvIGJlIHN1cmUuIEknbSBwcmV0dHkgc3VyZSBgQ09ORklHX0lORVRgIGlzIHRoZSBzdGFuZGFyZCBmb3IgSVB2NC9UQ1AsIGJ1dCBsZXQncyBjaGVjayB0aGUgS2NvbmZpZyBmb3IgYG5ldC9pcHY0L3RjcF9pbnB1dC5jYCB0byBiZSBjb21wbGV0ZWx5IHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDkwLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDg6NDY6NTAuNTE2NjE1ODEyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTM0NTE3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfaW5wdXRcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlPTY9b2JqLXkgICAgIDo9IHJvdXRlLm8gaW5ldHBlZXIubyBwcm90b2NvbC5vIFxcXFxcXG4tLVxcbm5ldC9pcHY0L01ha2VmaWxlLTktXFx0ICAgICBpbmV0X3RpbWV3YWl0X3NvY2subyBpbmV0X2Nvbm5lY3Rpb25fc29jay5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxMDpcXHQgICAgIHRjcC5vIHRjcF9pbnB1dC5vIHRjcF9vdXRwdXQubyB0Y3BfdGltZXIubyB0Y3BfaXB2NC5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xMS1cXHQgICAgIHRjcF9taW5pc29ja3MubyB0Y3BfY29uZy5vIHRjcF9tZXRyaWNzLm8gdGNwX2Zhc3RvcGVuLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwODo0Njo1MC42MzE5NjUwNjFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NDc5NTU4MzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCByZWxhdGVzIHRvIGNoZWNraW5nIHRob3NlIGNvbmZpZ3VyYXRpb24gZmlsZXM6XG5cbioqSW52ZXN0aWdhdGluZyBJUHY0IEJ1aWxkIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyBJUHY0IGlzIGJ1aWx0IGluIHRoaXMga2VybmVsLiBUaGUgYG5ldC9pcHY0L01ha2VmaWxlYCBpcyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCDigJMgSSBuZWVkIHRvIHNlZSBob3cgdGhlIG9iamVjdCBmaWxlcyBhcmUgYnJvdWdodCBpbi4gU3BlY2lmaWNhbGx5LCBJJ20gaW50ZXJlc3RlZCBpbiB0aGUgYG9iai15YCBkaXJlY3RpdmVzOyB0aGF0J3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZC4gSSdsbCBuZWVkIHRvIGNvcnJlbGF0ZSB0aGVzZSB3aXRoIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE15IGh1bmNoIGlzIHRoYXQgYENPTkZJR19JTkVUYCBpcyB0aGUgbWFpbiBlbmFibGVyIGZvciB0aGUgZW50aXJlIElQdjQgc3RhY2suXG5cbkJ1dCB3aGVyZSBkb2VzIGBDT05GSUdfSU5FVGAgZ2V0IGl0cyB2YWx1ZSBmcm9tPyBOb3cgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzLCBlaXRoZXIgdGhlIHRvcC1sZXZlbCBgbmV0L0tjb25maWdgIHdoaWNoIGlzIG1vcmUgbGlrZWx5LCBvciBwZXJoYXBzIHRoZSBJUHY0IHNwZWNpZmljIG9uZSBhdCBgbmV0L2lwdjQvS2NvbmZpZ2AuIFRob3NlIGFyZSB0aGUgZmlsZXMgdGhhdCBkZWZpbmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgd2lsbCBnaXZlIG1lIHRoZSBjbGVhcmVzdCBwaWN0dXJlIG9mIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCB0byBpbmNsdWRlIHRoZXNlIElQdjQgY29tcG9uZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMyNCwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA4OjQ2OjU3LjExMTUyNjUyNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTkwNDE5ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElORVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz05OT1jb25maWcgTkVUX0hBTkRTSEFLRV9LVU5JVF9URVNUXFxuLS1cXG5uZXQvS2NvbmZpZy0xMTMtXFxubmV0L0tjb25maWc6MTE0OmNvbmZpZyBJTkVUXFxubmV0L0tjb25maWctMTE1LVxcdGJvb2wgXFxcIlRDUC9JUCBuZXR3b3JraW5nXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zMzA9Y29uZmlnIE5FVF9GT1VfSVBfVFVOTkVMU1xcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zMzgtXFxubmV0L2lwdjQvS2NvbmZpZzozMzk6Y29uZmlnIElORVRfQUhcXG5uZXQvaXB2NC9LY29uZmlnLTM0MC1cXHR0cmlzdGF0ZSBcXFwiSVA6IEFIIHRyYW5zZm9ybWF0aW9uXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zNTMtXFxubmV0L2lwdjQvS2NvbmZpZzozNTQ6Y29uZmlnIElORVRfRVNQXFxubmV0L2lwdjQvS2NvbmZpZy0zNTUtXFx0dHJpc3RhdGUgXFxcIklQOiBFU1AgdHJhbnNmb3JtYXRpb25cXFwiXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTM2OC1cXG5uZXQvaXB2NC9LY29uZmlnOjM2OTpjb25maWcgSU5FVF9FU1BfT0ZGTE9BRFxcbm5ldC9pcHY0L0tjb25maWctMzcwLVxcdHRyaXN0YXRlIFxcXCJJUDogRVNQIHRyYW5zZm9ybWF0aW9uIG9mZmxvYWRcXFwiXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTM4MS1cXG5uZXQvaXB2NC9LY29uZmlnOjM4Mjpjb25maWcgSU5FVF9FU1BJTlRDUFxcbm5ldC9pcHY0L0tjb25maWctMzgzLVxcdGJvb2wgXFxcIklQOiBFU1AgaW4gVENQIGVuY2Fwc3VsYXRpb24gKFJGQyA4MjI5KVxcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzkzLVxcbm5ldC9pcHY0L0tjb25maWc6Mzk0OmNvbmZpZyBJTkVUX0lQQ09NUFxcbm5ldC9pcHY0L0tjb25maWctMzk1LVxcdHRyaXN0YXRlIFxcXCJJUDogSVBDb21wIHRyYW5zZm9ybWF0aW9uXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy00MDMtXFxubmV0L2lwdjQvS2NvbmZpZzo0MDQ6Y29uZmlnIElORVRfVEFCTEVfUEVSVFVSQl9PUkRFUlxcbm5ldC9pcHY0L0tjb25maWctNDA1LVxcdGludCBcXFwiSU5FVDogU291cmNlIHBvcnQgcGVydHVyYmF0aW9uIHRhYmxlIHNpemUgKGFzIHBvd2VyIG9mIDIpXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctNDEzLVxcbm5ldC9pcHY0L0tjb25maWc6NDE0OmNvbmZpZyBJTkVUX1hGUk1fVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZy00MTUtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctNDE4LVxcbm5ldC9pcHY0L0tjb25maWc6NDE5OmNvbmZpZyBJTkVUX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWctNDIwLVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTQyMi1cXG5uZXQvaXB2NC9LY29uZmlnOjQyMzpjb25maWcgSU5FVF9ESUFHXFxubmV0L2lwdjQvS2NvbmZpZy00MjQtXFx0dHJpc3RhdGUgXFxcIklORVQ6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctNDM0LVxcbm5ldC9pcHY0L0tjb25maWc6NDM1OmNvbmZpZyBJTkVUX1RDUF9ESUFHXFxubmV0L2lwdjQvS2NvbmZpZy00MzYtXFx0ZGVwZW5kcyBvbiBJTkVUX0RJQUdcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctNDM4LVxcbm5ldC9pcHY0L0tjb25maWc6NDM5OmNvbmZpZyBJTkVUX1VEUF9ESUFHXFxubmV0L2lwdjQvS2NvbmZpZy00NDAtXFx0dHJpc3RhdGUgXFxcIlVEUDogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy00NDYtXFxubmV0L2lwdjQvS2NvbmZpZzo0NDc6Y29uZmlnIElORVRfUkFXX0RJQUdcXG5uZXQvaXB2NC9LY29uZmlnLTQ0OC1cXHR0cmlzdGF0ZSBcXFwiUkFXOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTQ1NC1cXG5uZXQvaXB2NC9LY29uZmlnOjQ1NTpjb25maWcgSU5FVF9ESUFHX0RFU1RST1lcXG5uZXQvaXB2NC9LY29uZmlnLTQ1Ni1cXHRib29sIFxcXCJJTkVUOiBhbGxvdyBwcml2aWxlZ2VkIHByb2Nlc3MgdG8gYWRtaW5pc3RyYXRpdmVseSBjbG9zZSBzb2NrZXRzXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0zOT1jb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy00Ni1cXG5uZXQvaXB2Ni9LY29uZmlnOjQ3OmNvbmZpZyBJTkVUNl9BSFxcbm5ldC9pcHY2L0tjb25maWctNDgtXFx0dHJpc3RhdGUgXFxcIklQdjY6IEFIIHRyYW5zZm9ybWF0aW9uXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy02MS1cXG5uZXQvaXB2Ni9LY29uZmlnOjYyOmNvbmZpZyBJTkVUNl9FU1BcXG5uZXQvaXB2Ni9LY29uZmlnLTYzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBFU1AgdHJhbnNmb3JtYXRpb25cXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTc2LVxcbm5ldC9pcHY2L0tjb25maWc6Nzc6Y29uZmlnIElORVQ2X0VTUF9PRkZMT0FEXFxubmV0L2lwdjYvS2NvbmZpZy03OC1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogRVNQIHRyYW5zZm9ybWF0aW9uIG9mZmxvYWRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTg5LVxcbm5ldC9pcHY2L0tjb25maWc6OTA6Y29uZmlnIElORVQ2X0VTUElOVENQXFxubmV0L2lwdjYvS2NvbmZpZy05MS1cXHRib29sIFxcXCJJUHY2OiBFU1AgaW4gVENQIGVuY2Fwc3VsYXRpb24gKFJGQyA4MjI5KVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTAxLVxcbm5ldC9pcHY2L0tjb25maWc6MTAyOmNvbmZpZyBJTkVUNl9JUENPTVBcXG5uZXQvaXB2Ni9LY29uZmlnLTEwMy1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogSVBDb21wIHRyYW5zZm9ybWF0aW9uXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xMjA9Y29uZmlnIElQVjZfSUxBXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE0MC1cXG5uZXQvaXB2Ni9LY29uZmlnOjE0MTpjb25maWcgSU5FVDZfWEZSTV9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTE0Mi1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xNDUtXFxubmV0L2lwdjYvS2NvbmZpZzoxNDY6Y29uZmlnIElORVQ2X1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMTQ3LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvbXB0Y3AvS2NvbmZpZz0xND1pZiBNUFRDUFxcbm5ldC9tcHRjcC9LY29uZmlnLTE1LVxcbm5ldC9tcHRjcC9LY29uZmlnOjE2OmNvbmZpZyBJTkVUX01QVENQX0RJQUdcXG5uZXQvbXB0Y3AvS2NvbmZpZy0xNy1cXHRkZXBlbmRzIG9uIElORVRfRElBR1xcbi0tXFxubmV0L3BzcC9LY29uZmlnLTQtI1xcbm5ldC9wc3AvS2NvbmZpZzo1OmNvbmZpZyBJTkVUX1BTUFxcbm5ldC9wc3AvS2NvbmZpZy02LVxcdGJvb2wgXFxcIlBTUCBTZWN1cml0eSBQcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L3NjdHAvS2NvbmZpZz02OD1lbmRjaG9pY2VcXG5uZXQvc2N0cC9LY29uZmlnLTY5LVxcbm5ldC9zY3RwL0tjb25maWc6NzA6Y29uZmlnIElORVRfU0NUUF9ESUFHXFxubmV0L3NjdHAvS2NvbmZpZy03MS1cXHRkZXBlbmRzIG9uIElORVRfRElBR1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwODo0Njo1Ny4zMzA1NzI2N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2NTAxNjUzNjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29udGV4dCBvZiBhIFRDUCBSZWNlaXZlIEZ1bmN0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBzdGFydGluZyBwb2ludCBpcyBgRm9jdXNTeW1ib2xzYCDigJMgdGhhdCdzIG91ciBpbml0aWFsIGNsdWUuIEl0IGRpcmVjdHMgdXMgdG8gdGhlIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCBmdW5jdGlvbi4gSXMgaXQgYSBnZW5lcmFsLCBjb3JlIGZ1bmN0aW9uIG9yIHNvbWV0aGluZyBtb3JlIHNwZWNpZmljPyBBaCwgcmlnaHQsIGl0J3MgcHJldHR5IGNsZWFyIHRoaXMgaXMgZGVkaWNhdGVkIHRvIGhhbmRsaW5nIFRDUCBwYWNrZXRzIHdoZW4gYSBjb25uZWN0aW9uIGhhcyBiZWVuIGVzdGFibGlzaGVkLiBTbywgaXQncyBub3QgYSBnZW5lcmljIGxvdy1sZXZlbCBwcmltaXRpdmU7IGl0J3Mgd2l0aGluIGEgaGlnaGVyIGxheWVyIG9mIFRDUCBwcm9jZXNzaW5nLlxuXG5Ob3csIHRoZSBuYXR1cmFsIG5leHQgc3RlcDogd2hhdCBvdGhlciBmdW5jdGlvbnMgaW4gYHRjcF9pbnB1dC5jYCBtaWdodCBiZSB0b3VjaGVkIG9yIGhhdmUgYSBjbG9zZSByZWxhdGlvbnNoaXAgdG8gd2hhdCBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgaXMgZG9pbmc/IEl0IGxvb2tzIGxpa2UgYHRjcF9yY3ZfZXN0YWJsaXNoZWRgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQncyBiZWVuIGFsdGVyZWQgaW4gdGhlIGNvZGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBhIFwic3RhbmRhcmRcIiBzeW1ib2wgd2UncmUgZGVhbGluZyB3aXRoIGhlcmUsIHNvIGEgcXVpY2sgZ3JlcCBzaG91bGQgY29uZmlybSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiB0aGUgZXhwZWN0ZWQgVENQL0lQIGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTQxLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA4OjQ3OjEzLjgzMjIyODk2M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY1NzI4NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX3Jjdl9lc3RhYmxpc2hlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvdGNwX2lucHV0LmM9NjMyMj1zdGF0aWMgYm9vbCB0Y3BfdmFsaWRhdGVfaW5jb21pbmcoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNjQ5OS0gKi9cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo2NTAwOnZvaWQgdGNwX3Jjdl9lc3RhYmxpc2hlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNjUwMS17XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTE4MzA9aW50IHRjcF92NF9kb19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0xODUzLVxcdFxcdH1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjE4NTQ6XFx0XFx0dGNwX3Jjdl9lc3RhYmxpc2hlZChzaywgc2tiKTtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTE4NTUtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTE5MDE9ZW51bSBza2JfZHJvcF9yZWFzb24gdGNwX2FkZF9iYWNrbG9nKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMTk4MC1cXHRcXHQvKiBXZSBoYXZlIHRvIHVwZGF0ZSBib3RoIFRDUF9TS0JfQ0IodGFpbCktXFx1MDAzZXRjcF9mbGFncyBhbmRcXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjE5ODE6XFx0XFx0ICogdGh0YWlsLVxcdTAwM2VmaW4sIHNvIHRoYXQgdGhlIGZhc3QgcGF0aCBpbiB0Y3BfcmN2X2VzdGFibGlzaGVkKClcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTE5ODItXFx0XFx0ICogaXMgbm90IGVudGVyZWQgaWYgd2UgYXBwZW5kIGEgcGFja2V0IHdpdGggYSBGSU4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA4OjQ3OjEzLjkyODgwOTEwMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODU4NDI1NzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIGEgVENQIFBhdGNoKipcblxuT2theSwgc28gdGhlIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCBzeW1ib2wgaXMgdGhlIGNydWNpYWwgcG9pbnQgaGVyZS4gVGhhdCdzIHdoZXJlIHRoZXkgdGlnaHRlbmVkIHVwIHRoZSBoZWFkZXIgcHJlZGljdGlvbiBsb2dpYy4gVGhlIGNoYW5nZSBpcyBzcGVjaWZpY2FsbHkgYXJvdW5kIHZhbGlkYXRpbmcgdGhlIGBUQ1BfU0tCX0NCKHNrYiktXHUwMDNlYWNrX3NlcWAgdmFsdWUuIEluc3RlYWQgb2YganVzdCBzYXlpbmcgaXQncyAqbm90KiBcImFmdGVyXCIgYSBjZXJ0YWluIHNlcXVlbmNlLCB0aGV5J3JlIG5vdyByZXF1aXJpbmcgaXQgdG8gYmUgKmJldHdlZW4qIGB0cC1cdTAwM2VzbmRfdW5hYCBhbmQgYHRwLVx1MDAzZXNuZF9ueHRgLiBUaGF0J3MgYSBzaWduaWZpY2FudCBzaGlmdCBpbiB0aGUgZmFzdC1wYXRoIGNvbmRpdGlvbi5cblxuTGV0IG1lIGp1c3QgcnVuIHRocm91Z2ggdGhlIGNoZWNrbGlzdCBpbiBteSBoZWFkLi4uIFllcCwgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBUaGUgcGF0Y2ggZGlyZWN0bHkgbW9kaWZpZXMgVENQIHBhY2tldCBwcm9jZXNzaW5nLCBzcGVjaWZpY2FsbHkgd2l0aGluIGB0Y3BfcmN2X2VzdGFibGlzaGVkYC4gSXQncyB0aWdodGVuaW5nIHRoZSBmYXN0LXBhdGggY29uZGl0aW9uLCBzbyB0aGlzIGRlZmluaXRlbHkgdG91Y2hlcyBjb3JlIG5ldHdvcmtpbmcgbG9naWMgYW5kIGlzIGEgcmVhY2hhYmxlIHBhdGgsIGl0J3Mgbm90IHNvbWUgb2JzY3VyZSBjb3JuZXIgY2FzZS4gVGhlIHJlYXNvbmluZyBjaGVja3Mgb3V0LlxuXG5UaGUgbWFpbiBmb2N1cyBoZXJlIGlzIG9idmlvdXNseSBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgaXRzZWxmLlxuXG5BbmQgZmluYWxseSwgd2UgbmVlZCBgSU5FVGAgZW5hYmxlZCB0byBzZWUgdGhpcy5cblxuQWxyaWdodCwgbG9va3MgZ29vZC4gTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTEwLCJPdXRwdXRUb2tlbnMiOjEwNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwODo0NzoxNi43ODcyMzg4MTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjI0MzU4MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfcmN2X2VzdGFibGlzaGVkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgVENQIGlucHV0IHByb2Nlc3NpbmcgaW4gdGNwX3Jjdl9lc3RhYmxpc2hlZCgpIGJ5IHRpZ2h0ZW5pbmcgdGhlIGZhc3QtcGF0aCBoZWFkZXIgcHJlZGljdGlvbiBjaGVjayB0byBlbnN1cmUgaW5jb21pbmcgQUNLIHNlcXVlbmNlcyBmYWxsIGJldHdlZW4gc25kX3VuYSBhbmQgc25kX254dCwgcHJldmVudGluZyBvdXQtb2Ytb3JkZXIvZXhjZXNzaXZlbHkgb2xkIEFDS3MgZnJvbSBpbXByb3Blcmx5IHRha2luZyB0aGUgZmFzdCBwYXRoLiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIFRDUCBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjcF9yY3ZfZXN0YWJsaXNoZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBUQ1AgaW5wdXQgcHJvY2Vzc2luZyBpbiB0Y3BfcmN2X2VzdGFibGlzaGVkKCkgYnkgdGlnaHRlbmluZyB0aGUgZmFzdC1wYXRoIGhlYWRlciBwcmVkaWN0aW9uIGNoZWNrIHRvIGVuc3VyZSBpbmNvbWluZyBBQ0sgc2VxdWVuY2VzIGZhbGwgYmV0d2VlbiBzbmRfdW5hIGFuZCBzbmRfbnh0LCBwcmV2ZW50aW5nIG91dC1vZi1vcmRlci9leGNlc3NpdmVseSBvbGQgQUNLcyBmcm9tIGltcHJvcGVybHkgdGFraW5nIHRoZSBmYXN0IHBhdGguIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgVENQIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDg6NDc6MTYuOTQ5NjgyMzA3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTI5NTY1MzM1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA4OjQ3OjE2Ljk1MDE4NzExNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjU5Mjk1MTQ0NjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVENQIGhlYWRlciBwcmVkaWN0aW9uIGNvbmRpdGlvbiBpbiBgdGNwX3Jjdl9lc3RhYmxpc2hlZCgpYCBieSByZXBsYWNpbmcgYCFhZnRlcihUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWFja19zZXEsIHRwLVxcdTAwM2VzbmRfbnh0KWAgd2l0aCBgYmV0d2VlbihUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWFja19zZXEsIHRwLVxcdTAwM2VzbmRfdW5hLCB0cC1cXHUwMDNlc25kX254dClgIHRvIGVuc3VyZSBwYWNrZXRzIGNhcnJ5aW5nIGV4Y2Vzc2l2ZWx5IG9sZCBBQ0tzIGJ5cGFzcyB0aGUgZmFzdCBwYXRoIGFuZCBhcmUgaGFuZGxlZCBieSB0aGUgc2xvdyBwYXRoIGFjY29yZGluZyB0byBSRkMgNTk2MS5cXG5cXG5UaGlzIGNoYW5nZSB0b3VjaGVzIG9ubHkgc3RhbmRhcmQgVENQIHNlcXVlbmNlIG51bWJlciBjb21wYXJpc29uIGxvZ2ljIHVzaW5nIHdlbGwtZGVmaW5lZCwgaW5pdGlhbGl6ZWQgZmllbGRzIG9uIGBzdHJ1Y3Qgc29ja2AgYW5kIGBza19idWZmYC4gVGhlcmUgYXJlIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gZGF0YSB0cmFuc2ZlcnMgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTc0NDFmMzQ4YjY1NGJlNTVhMzczZDFkYzM3ZGUyZWFhMzBkYmVmNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMDg6NDY6MzYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaW5wdXQuYyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jXG5pbmRleCBkYWZmOTNkNTEzNDI4Li41N2ZlYzU4YTRmMTUzIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX2lucHV0LmNcbisrKyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jXG5AQCAtNjUzOSw3ICs2NTM5LDcgQEAgdm9pZCB0Y3BfcmN2X2VzdGFibGlzaGVkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcbiBcdGlmICgodGNwX2ZsYWdfd29yZCh0aCkgXHUwMDI2IFRDUF9IUF9CSVRTKSA9PSB0cC1cdTAwM2VwcmVkX2ZsYWdzIFx1MDAyNlx1MDAyNlxuIFx0ICAgIFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VzZXEgPT0gdHAtXHUwMDNlcmN2X254dCBcdTAwMjZcdTAwMjZcbi1cdCAgICAhYWZ0ZXIoVENQX1NLQl9DQihza2IpLVx1MDAzZWFja19zZXEsIHRwLVx1MDAzZXNuZF9ueHQpKSB7XG4rXHQgICAgYmV0d2VlbihUQ1BfU0tCX0NCKHNrYiktXHUwMDNlYWNrX3NlcSwgdHAtXHUwMDNlc25kX3VuYSwgdHAtXHUwMDNlc25kX254dCkpIHtcbiBcdFx0aW50IHRjcF9oZWFkZXJfbGVuID0gdHAtXHUwMDNldGNwX2hlYWRlcl9sZW47XG4gXHRcdHMzMiBkZWx0YSA9IDA7XG4gXHRcdGludCBmbGFnID0gMDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcmVqZWN0LW9sZC1hY2sucGt0IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3BhY2tldGRyaWxsL3RjcF9yZmM1OTYxX3JlamVjdC1vbGQtYWNrLnBrdFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjhlNzIyOTEyNzY3MGZcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yZWplY3Qtb2xkLWFjay5wa3RcbkBAIC0wLDAgKzEsMjMgQEBcbisvLyBUZXN0IHJlamVjdGlvbiBvZiBkYXRhIHNlZ21lbnRzIGNhcnJ5aW5nIGV4Y2Vzc2l2ZWx5IG9sZCBBQ0tzXG4rXG4rMCBzb2NrZXQoLi4uLCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApID0gM1xuKyswIHNldHNvY2tvcHQoMywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCBbMV0sIDQpID0gMFxuKyswIGJpbmQoMywgLi4uLCAuLi4pID0gMFxuKyswIGxpc3RlbigzLCAxMDI0KSA9IDBcbitcbisvLyAtLS0tLS0tLS0tLS0tLS0tIEhhbmRzaGFrZSAtLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG4rKzAgXHUwMDNjIFMgMDowKDApIHdpbiA2NTUzNVxuKyswIFx1MDAzZSBTLiAwOjAoMCkgYWNrIDEgXHUwMDNjLi4uXHUwMDNlXG4rKzAgXHUwMDNjIC4gMToxKDApIGFjayAxIHdpbiA2NTUzNVxuKyswIGFjY2VwdCgzLCAuLi4sIC4uLikgPSA0XG4rXG4rLy8gUG9wdWxhdGUgcmVjZWl2ZSBtZW1vcnkgc28gdGhlIGZvbGxvd2luZyBzZWdtZW50IGNhbiB1c2VcbisvLyBoZWFkZXIgcHJlZGljdGlvbi5cbisrMCBcdTAwM2MgUC4gMTo1MDEoNTAwKSBhY2sgMSB3aW4gNjU1MzVcbisrMCBcdTAwM2UgLiAxOjEoMCkgYWNrIDUwMVxuK1xuKy8vIFNlbmQgYW4gaW4tc2VxdWVuY2UgZGF0YSBzZWdtZW50IGNhcnJ5aW5nIGFuIGV4Y2Vzc2l2ZWx5IG9sZCBBQ0suXG4rKzAgXHUwMDNjIFAuIDUwMToxNTAxKDEwMDApIGFjayAyNzk0OTY3Mzk3IHdpbiA2NTUzNVxuK1xuKy8vIENoYWxsZW5nZSBBQ0s7IFJDVi5OWFQgbXVzdCByZW1haW4gNTAxLlxuKyswIFx1MDAzZSAuIDE6MSgwKSBhY2sgNTAxXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwODo0NzoxNi45NTAxODk0NTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjA0NDExNzk1OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUQ1AgUmVjZWl2ZSBFc3RhYmxpc2hlZCBGdW5jdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBMb29rcyBsaWtlIHdlJ3JlIHplcm9pbmcgaW4gb24gYSBjaGFuZ2Ugd2l0aGluIGBuZXQvaXB2NC90Y3BfaW5wdXQuY2AsIHNwZWNpZmljYWxseSB0aGUgYHRjcF9yY3ZfZXN0YWJsaXNoZWRgIGZ1bmN0aW9uLiBUaGUgZGlmZiBoaWdobGlnaHRzIGEgbW9kaWZpY2F0aW9uIHRvIHRoZSBsb2dpYyBzdXJyb3VuZGluZyBhY2tub3dsZWRnbWVudCBwcm9jZXNzaW5nLiBMZXQncyBzZWUuLi4gaXQgYXBwZWFycyB0aGUgb3JpZ2luYWwgY29kZSBjaGVja2VkIGlmIHRoZSBhY2tub3dsZWRnZWQgc2VxdWVuY2UgbnVtYmVyIChgYWNrX3NlcWApIHdhcyAqbm90KiBhZnRlciBgc25kX254dGAuIFRoZSBwYXRjaCwgaG93ZXZlciwgcmVmYWN0b3JzIHRoaXMgdG8gdXNlIGBiZXR3ZWVuYCwgY2hlY2tpbmcgaWYgYGFja19zZXFgIGlzIGJldHdlZW4gYHNuZF91bmFgIGFuZCBgc25kX254dGAuIFRoaXMgaXMgYSBzdWJ0bGUsIGJ1dCBwb3RlbnRpYWxseSBzaWduaWZpY2FudCwgc2hpZnQgaW4gaG93IHdlIGhhbmRsZSBhY2tub3dsZWRnbWVudHMuIEEgcGFja2V0ZHJpbGwgdGVzdCBpcyBsaWtlbHkgYWRkZWQgdG8gdGVzdCB0aGlzIG5vdy4gV2UgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgY29udGV4dCBvZiB0aGlzIGZ1bmN0aW9uIHRvIGZ1bGx5IGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMsIHRob3VnaCwgc28gbGV0J3MgbmF2aWdhdGUgdG8gYHRjcF9yY3ZfZXN0YWJsaXNoZWRgIHdpdGhpbiB0aGUgc2FtZSBmaWxlIHRvIGdldCB0aGUgY29tcGxldGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYyOCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA4OjQ3OjM3LjM5MTM3MjE0MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODkwNDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY0L3RjcF9pbnB1dC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY1MjUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjY1MjU6XFx0XFx0ICpcXHRXZSBkbyBjaGVja3N1bSBhbmQgY29weSBhbHNvIGJ1dCBmcm9tIGRldmljZSB0byBrZXJuZWwuXFxuNjUyNjpcXHRcXHQgKi9cXG42NTI3OlxcdFxcbjY1Mjg6XFx0XFx0dHAtXFx1MDAzZXJ4X29wdC5zYXdfdHN0YW1wID0gMDtcXG42NTI5OlxcdFxcdHRwLVxcdTAwM2VyeF9vcHQuYWNjZWNuID0gMDtcXG42NTMwOlxcdFxcbjY1MzE6XFx0XFx0LypcXHRwcmVkX2ZsYWdzIGlzIDB4Uz8xMCBcXHUwMDNjXFx1MDAzYyAxNiArIHNuZF93bmRcXG42NTMyOlxcdFxcdCAqXFx0aWYgaGVhZGVyX3ByZWRpY3Rpb24gaXMgdG8gYmUgbWFkZVxcbjY1MzM6XFx0XFx0ICpcXHQnUycgd2lsbCBhbHdheXMgYmUgdHAtXFx1MDAzZXRjcF9oZWFkZXJfbGVuIFxcdTAwM2VcXHUwMDNlIDJcXG42NTM0OlxcdFxcdCAqXFx0Jz8nIHdpbGwgYmUgMCBmb3IgdGhlIGZhc3QgcGF0aCwgb3RoZXJ3aXNlIHByZWRfZmxhZ3MgaXMgMCB0b1xcbjY1MzU6XFx0XFx0ICogIHR1cm4gaXQgb2ZmXFx0KHdoZW4gdGhlcmUgYXJlIGhvbGVzIGluIHRoZSByZWNlaXZlXFxuNjUzNjpcXHRcXHQgKlxcdCBzcGFjZSBmb3IgaW5zdGFuY2UpXFxuNjUzNzpcXHRcXHQgKlxcdFBTSCBmbGFnIGlzIGlnbm9yZWQuXFxuNjUzODpcXHRcXHQgKi9cXG42NTM5OlxcdFxcbjY1NDA6XFx0XFx0aWYgKCh0Y3BfZmxhZ193b3JkKHRoKSBcXHUwMDI2IFRDUF9IUF9CSVRTKSA9PSB0cC1cXHUwMDNlcHJlZF9mbGFncyBcXHUwMDI2XFx1MDAyNlxcbjY1NDE6XFx0XFx0ICAgIFRDUF9TS0JfQ0Ioc2tiKS1cXHUwMDNlc2VxID09IHRwLVxcdTAwM2VyY3Zfbnh0IFxcdTAwMjZcXHUwMDI2XFxuNjU0MjpcXHRcXHQgICAgYmV0d2VlbihUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWFja19zZXEsIHRwLVxcdTAwM2VzbmRfdW5hLCB0cC1cXHUwMDNlc25kX254dCkpIHtcXG42NTQzOlxcdFxcdFxcdGludCB0Y3BfaGVhZGVyX2xlbiA9IHRwLVxcdTAwM2V0Y3BfaGVhZGVyX2xlbjtcXG42NTQ0OlxcdFxcdFxcdHMzMiBkZWx0YSA9IDA7XFxuNjU0NTpcXHRcXHRcXHRpbnQgZmxhZyA9IDA7XFxuNjU0NjpcXHRcXG42NTQ3OlxcdFxcdFxcdC8qIFRpbWVzdGFtcCBoZWFkZXIgcHJlZGljdGlvbjogdGNwX2hlYWRlcl9sZW5cXG42NTQ4OlxcdFxcdFxcdCAqIGlzIGF1dG9tYXRpY2FsbHkgZXF1YWwgdG8gdGgtXFx1MDAzZWRvZmYqNCBkdWUgdG8gcHJlZF9mbGFnc1xcbjY1NDk6XFx0XFx0XFx0ICogbWF0Y2guXFxuNjU1MDpcXHRcXHRcXHQgKi9cXG42NTUxOlxcdFxcbjY1NTI6XFx0XFx0XFx0LyogQ2hlY2sgdGltZXN0YW1wICovXFxuNjU1MzpcXHRcXHRcXHRpZiAodGNwX2hlYWRlcl9sZW4gPT0gc2l6ZW9mKHN0cnVjdCB0Y3BoZHIpICsgVENQT0xFTl9UU1RBTVBfQUxJR05FRCkge1xcbjY1NTQ6XFx0XFx0XFx0XFx0LyogTm8/IFNsb3cgcGF0aCEgKi9cXG42NTU1OlxcdFxcdFxcdFxcdGlmICghdGNwX3BhcnNlX2FsaWduZWRfdGltZXN0YW1wKHRwLCB0aCkpXFxuNjU1NjpcXHRcXHRcXHRcXHRcXHRnb3RvIHNsb3dfcGF0aDtcXG42NTU3OlxcdFxcbjY1NTg6XFx0XFx0XFx0XFx0ZGVsdGEgPSB0cC1cXHUwMDNlcnhfb3B0LnJjdl90c3ZhbCAtXFxuNjU1OTpcXHRcXHRcXHRcXHRcXHR0cC1cXHUwMDNlcnhfb3B0LnRzX3JlY2VudDtcXG42NTYwOlxcdFxcdFxcdFxcdC8qIElmIFBBV1MgZmFpbGVkLCBjaGVjayBpdCBtb3JlIGNhcmVmdWxseSBpbiBzbG93IHBhdGggKi9cXG42NTYxOlxcdFxcdFxcdFxcdGlmIChkZWx0YSBcXHUwMDNjIDApXFxuNjU2MjpcXHRcXHRcXHRcXHRcXHRnb3RvIHNsb3dfcGF0aDtcXG42NTYzOlxcdFxcbjY1NjQ6XFx0XFx0XFx0XFx0LyogRE8gTk9UIHVwZGF0ZSB0c19yZWNlbnQgaGVyZSwgaWYgY2hlY2tzdW0gZmFpbHNcXG42NTY1OlxcdFxcdFxcdFxcdCAqIGFuZCB0aW1lc3RhbXAgd2FzIGNvcnJ1cHRlZCBwYXJ0LCBpdCB3aWxsIHJlc3VsdFxcbjY1NjY6XFx0XFx0XFx0XFx0ICogaW4gYSBodW5nIGNvbm5lY3Rpb24gc2luY2Ugd2Ugd2lsbCBkcm9wIGFsbFxcbjY1Njc6XFx0XFx0XFx0XFx0ICogZnV0dXJlIHBhY2tldHMgZHVlIHRvIHRoZSBQQVdTIHRlc3QuXFxuNjU2ODpcXHRcXHRcXHRcXHQgKi9cXG42NTY5OlxcdFxcdFxcdH1cXG42NTcwOlxcdFxcbjY1NzE6XFx0XFx0XFx0aWYgKGxlbiBcXHUwMDNjPSB0Y3BfaGVhZGVyX2xlbikge1xcbjY1NzI6XFx0XFx0XFx0XFx0LyogQnVsayBkYXRhIHRyYW5zZmVyOiBzZW5kZXIgKi9cXG42NTczOlxcdFxcdFxcdFxcdGlmIChsZW4gPT0gdGNwX2hlYWRlcl9sZW4pIHtcXG42NTc0OlxcdFxcdFxcdFxcdFxcdC8qIFByZWRpY3RlZCBwYWNrZXQgaXMgaW4gd2luZG93IGJ5IGRlZmluaXRpb24uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDA4OjQ3OjM3LjM5MzI2NzQ1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM4ODUyMDQyNTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRDUCBGYXN0IFBhdGggT3B0aW1pemF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIGNoYW5nZS4gSW4gdGhlIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCBmdW5jdGlvbiwgd2UncmUgcmVmaW5pbmcgaG93IHdlIGhhbmRsZSBpbmNvbWluZyBBQ0tzLiBCZWZvcmUsIHRoZSBmYXN0IHBhdGggc2ltcGx5IGNoZWNrZWQgaWYgdGhlIEFDSyBzZXF1ZW5jZSBudW1iZXIgd2FzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgc25kX254dGAuIFRoYXQgd2FzIHRvbyBsYXg7IEFDS3MgY291bGQgYmUgKnN0YWxlKiDigJMgb2xkZXIgdGhhbiBgc25kX3VuYWAhIFRoaXMgaXMgcHJvYmxlbWF0aWMsIGFzIGl0IGJ5cGFzc2VzIGNyaXRpY2FsIFJGQyA1OTYxIHZhbGlkYXRpb24gKFRDUCBoZWFkZXIgcHJlZGljdGlvbiBmYXN0IHBhdGgpLiBOb3csIHdlJ3JlIHVzaW5nIGBiZXR3ZWVuKFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VhY2tfc2VxLCB0cC1cdTAwM2VzbmRfdW5hLCB0cC1cdTAwM2VzbmRfbnh0KWAuIElmIHRoZSBBQ0sgZmFsbHMgb3V0c2lkZSB0aGlzIHdpbmRvdyAob2xkZXIgdGhhbiBgc25kX3VuYWApLCB3ZSBjb3JyZWN0bHkgcm91dGUgaXQgdG8gdGhlIHNsb3cgcGF0aCBmb3IgcHJvcGVyIFJGQyA1OTYxIGNoZWNrcyBsaWtlIGB0Y3BfdmFsaWRhdGVfaW5jb21pbmdgIGFuZCBgdGNwX2Fja2AuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGFyZSB3ZSBpbnRyb2R1Y2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB3aXRoIHRoaXMgdXBkYXRlPyBMZXQncyBiZSB0aG9yb3VnaC4gTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgaGFwcGVuaW5nLiBXZSdyZSBub3QgYWNjZXNzaW5nIGFueSBuZXcgZmllbGRzIG9yIHN0cnVjdHMgdGhhdCBtaWdodCBjb250YWluIHVuaW5pdGlhbGl6ZWQgZGF0YS4gYHRwLVx1MDAzZXNuZF91bmFgIGFuZCBgdHAtXHUwMDNlc25kX254dGAgYXJlIHN0YW5kYXJkIFRDUCBzdGF0ZSB2YXJpYWJsZXMsIGFsd2F5cyBpbml0aWFsaXplZCB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIEVTVEFCTElTSEVELiBgVENQX1NLQl9DQihza2IpLVx1MDAzZWFja19zZXFgIGlzLCBvZiBjb3Vyc2UsIGRlcml2ZWQgZnJvbSB0aGUgcGFja2V0IGhlYWRlci4gVGhlcmUncyBubyBrZXJuZWwtdG8tdXNlciBtZW1vcnkgY29weSBpbnZvbHZlZCwgc28gbm8gcmlzayBvZiBpbmZvcm1hdGlvbiBsZWFrcy4gVGhlcmUncyBhbHNvIG5vIGJyYW5jaGluZyB0aGF0IHJlbGllcyBvbiB1bmluaXRpYWxpemVkIGRhdGEuIFRoaXMgaXMgcHVyZWx5IGEgdGlnaHRlbmluZyBvZiBwcm90b2NvbCB2YWxpZGF0aW9uLCBhIHByb3RvY29sIGxvZ2ljIGhhcmRlbmluZyBvbiB0aGUgZmFzdCBwYXRoLlxuXG5JJ3ZlIGdvdCB0byBkb3VibGUtY2hlY2sgdGhpcyBmb3IgS01TQU4gdGhvdWdoLiBXZSBuZWVkIEtNU0FOIGlmOiBLZXJuZWwgc3RydWN0cyBhcmUgcGFzc2VkIHRvIHVzZXJzcGFjZSBwb3RlbnRpYWxseSB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzLiBOby4gQ29uZGl0aW9uYWwgbG9naWMgcmVsaWVzIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YT8gTm8uIEFsbG9jYXRpb25zIGFuZCBpbml0aWFsaXphdGlvbiBjcmVhdGUgcmlza3Mgb2YgdW5pbml0aWFsaXplZCByZWFkcz8gTm8uIEJvdW5kcyBjaGVja3MgdGhhdCBhbGxvdyByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgYnVmZmVyIGJ5dGVzPyBOby5cblxuU28sIHRoaXMgY2hhbmdlIGRvZXNuJ3QgdHJpZ2dlciBhbnkgS01TQU4gY29uY2VybnMuIEl0J3MganVzdCB0aWdodGVuaW5nIGEgY29uZGl0aW9uLCBzZW5kaW5nIHBvdGVudGlhbGx5IGJhZCBBQ0tzIHRvIHRoZSBzbG93IHBhdGguIE5vIGFsbG9jYXRpb25zLCBjb3BpZXMsIG9yIHJlYWRzIGZyb20gdW5pbml0aWFsaXplZCBtZW1vcnkuIEtBU0FOIGFuZCBzdGFuZGFyZCBmdXp6aW5nIHNob3VsZCBiZSBwZXJmZWN0bHkgYWRlcXVhdGUuXG5cblJpZ2h0LCBJJ20gY29tZm9ydGFibGUgd2l0aCB0aGF0LiBUaW1lIHRvIHRlbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA0OSwiT3V0cHV0VG9rZW5zIjoxOTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwODo0ODoxNi4yNDUzMTIzMTlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQ1AgaGVhZGVyIHByZWRpY3Rpb24gY29uZGl0aW9uIGluIGB0Y3BfcmN2X2VzdGFibGlzaGVkKClgIGJ5IHJlcGxhY2luZyBgIWFmdGVyKFRDUF9TS0JfQ0Ioc2tiKS1cXHUwMDNlYWNrX3NlcSwgdHAtXFx1MDAzZXNuZF9ueHQpYCB3aXRoIGBiZXR3ZWVuKFRDUF9TS0JfQ0Ioc2tiKS1cXHUwMDNlYWNrX3NlcSwgdHAtXFx1MDAzZXNuZF91bmEsIHRwLVxcdTAwM2VzbmRfbnh0KWAgdG8gZW5zdXJlIHBhY2tldHMgY2FycnlpbmcgZXhjZXNzaXZlbHkgb2xkIEFDS3MgYnlwYXNzIHRoZSBmYXN0IHBhdGggYW5kIGFyZSBoYW5kbGVkIGJ5IHRoZSBzbG93IHBhdGggYWNjb3JkaW5nIHRvIFJGQyA1OTYxLlxcblxcblRoaXMgY2hhbmdlIHRvdWNoZXMgb25seSBzdGFuZGFyZCBUQ1Agc2VxdWVuY2UgbnVtYmVyIGNvbXBhcmlzb24gbG9naWMgdXNpbmcgd2VsbC1kZWZpbmVkLCBpbml0aWFsaXplZCBmaWVsZHMgb24gYHN0cnVjdCBzb2NrYCBhbmQgYHNrX2J1ZmZgLiBUaGVyZSBhcmUgbm8gbWVtb3J5IGFsbG9jYXRpb25zLCBubyBkYXRhIHRyYW5zZmVycyB0byB1c2VyIHNwYWNlLCBhbmQgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVENQIGhlYWRlciBwcmVkaWN0aW9uIGNvbmRpdGlvbiBpbiBgdGNwX3Jjdl9lc3RhYmxpc2hlZCgpYCBieSByZXBsYWNpbmcgYCFhZnRlcihUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWFja19zZXEsIHRwLVxcdTAwM2VzbmRfbnh0KWAgd2l0aCBgYmV0d2VlbihUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWFja19zZXEsIHRwLVxcdTAwM2VzbmRfdW5hLCB0cC1cXHUwMDNlc25kX254dClgIHRvIGVuc3VyZSBwYWNrZXRzIGNhcnJ5aW5nIGV4Y2Vzc2l2ZWx5IG9sZCBBQ0tzIGJ5cGFzcyB0aGUgZmFzdCBwYXRoIGFuZCBhcmUgaGFuZGxlZCBieSB0aGUgc2xvdyBwYXRoIGFjY29yZGluZyB0byBSRkMgNTk2MS5cXG5cXG5UaGlzIGNoYW5nZSB0b3VjaGVzIG9ubHkgc3RhbmRhcmQgVENQIHNlcXVlbmNlIG51bWJlciBjb21wYXJpc29uIGxvZ2ljIHVzaW5nIHdlbGwtZGVmaW5lZCwgaW5pdGlhbGl6ZWQgZmllbGRzIG9uIGBzdHJ1Y3Qgc29ja2AgYW5kIGBza19idWZmYC4gVGhlcmUgYXJlIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gZGF0YSB0cmFuc2ZlcnMgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdss6h[1] Phase: Succeeded StartedAt: 2026-09-09 08:48:42 +0000 UTC FinishedAt: 2026-09-09 08:48:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-09 08:48:42 +0000 UTC FinishedAt: 2026-09-09 08:48:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[2] Phase: Succeeded StartedAt: 2026-09-09 08:48:42 +0000 UTC FinishedAt: 2026-09-09 12:40:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 08:48:42 +0000 UTC FinishedAt: 2026-09-09 12:40:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 08:48:42 +0000 UTC FinishedAt: 2026-09-09 08:48:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 08:48:42 +0000 UTC FinishedAt: 2026-09-09 08:48:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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-workflowdss6h/series-workflowdss6h-convert-artifact-4068757714/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 08:48:52 +0000 UTC FinishedAt: 2026-09-09 09:14:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 08:48:52 +0000 UTC FinishedAt: 2026-09-09 09:14:14 +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:*ae6e8b8e-3ed2-459b-b724-4fc6f11df26e,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-workflowdss6h/series-workflowdss6h-convert-artifact-4068757714/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": "0c933ba9-5023-4cc3-8606-d8b3fe03e823", "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-workflowdss6h/series-workflowdss6h-build-action-3986933072/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 08:48:52 +0000 UTC FinishedAt: 2026-09-09 09:13:51 +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:*ae6e8b8e-3ed2-459b-b724-4fc6f11df26e,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-workflowdss6h/series-workflowdss6h-convert-artifact-4068757714/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": "0c933ba9-5023-4cc3-8606-d8b3fe03e823", "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-workflowdss6h/series-workflowdss6h-build-action-3986933072/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:14:14 +0000 UTC FinishedAt: 2026-09-09 09:14:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:14:14 +0000 UTC FinishedAt: 2026-09-09 09:14:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:14:14 +0000 UTC FinishedAt: 2026-09-09 09:14:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:14:14 +0000 UTC FinishedAt: 2026-09-09 09:14:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-workflowdss6h/series-workflowdss6h-convert-artifact-1599266029/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:14:42 +0000 UTC FinishedAt: 2026-09-09 09:16:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:14:42 +0000 UTC FinishedAt: 2026-09-09 09:16:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0c933ba9-5023-4cc3-8606-d8b3fe03e823,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-workflowdss6h/series-workflowdss6h-build-action-3986933072/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-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:16:46 +0000 UTC FinishedAt: 2026-09-09 09:16:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:16:46 +0000 UTC FinishedAt: 2026-09-09 09:16:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:16:46 +0000 UTC FinishedAt: 2026-09-09 09:36:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:16:46 +0000 UTC FinishedAt: 2026-09-09 09:36:42 +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:*ae6e8b8e-3ed2-459b-b724-4fc6f11df26e,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-workflowdss6h/series-workflowdss6h-convert-artifact-1599266029/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": "e0604fef-1e21-4715-be25-2808a05c939d", "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-workflowdss6h/series-workflowdss6h-build-action-3015282249/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:16:46 +0000 UTC FinishedAt: 2026-09-09 09:36:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ae6e8b8e-3ed2-459b-b724-4fc6f11df26e,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-workflowdss6h/series-workflowdss6h-convert-artifact-1599266029/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": "e0604fef-1e21-4715-be25-2808a05c939d", "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-workflowdss6h/series-workflowdss6h-build-action-3015282249/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:36:42 +0000 UTC FinishedAt: 2026-09-09 09:36:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:36:42 +0000 UTC FinishedAt: 2026-09-09 09:36:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:36:42 +0000 UTC FinishedAt: 2026-09-09 09:38:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:36:42 +0000 UTC FinishedAt: 2026-09-09 09:38:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e0604fef-1e21-4715-be25-2808a05c939d,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-workflowdss6h/series-workflowdss6h-build-action-3015282249/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-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:38:49 +0000 UTC FinishedAt: 2026-09-09 12:40:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:38:49 +0000 UTC FinishedAt: 2026-09-09 12:40:13 +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":["tcp_rcv_established"],"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:*0c933ba9-5023-4cc3-8606-d8b3fe03e823,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e0604fef-1e21-4715-be25-2808a05c939d,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-workflowdss6h/series-workflowdss6h-build-action-3986933072/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-workflowdss6h/series-workflowdss6h-build-action-3015282249/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:38:49 +0000 UTC FinishedAt: 2026-09-09 09:38:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:38:49 +0000 UTC FinishedAt: 2026-09-09 09:38:54 +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":["tcp_rcv_established"],"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-workflowdss6h/series-workflowdss6h-convert-artifact-362646098/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:38:49 +0000 UTC FinishedAt: 2026-09-09 09:38:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:38:49 +0000 UTC FinishedAt: 2026-09-09 09:38:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:38:49 +0000 UTC FinishedAt: 2026-09-09 09:38:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:38:59 +0000 UTC FinishedAt: 2026-09-09 12:40:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdss6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"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":["tcp_rcv_established"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0685630fdccb62dcb0e3f44525a40578da5f6dc8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"4dd11f09-4d9d-4eea-a6e5-a6b92f5c7dc7","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-09-09 09:38:59 +0000 UTC FinishedAt: 2026-09-09 12:40:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0c933ba9-5023-4cc3-8606-d8b3fe03e823,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e0604fef-1e21-4715-be25-2808a05c939d,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-workflowdss6h/series-workflowdss6h-build-action-3986933072/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-workflowdss6h/series-workflowdss6h-build-action-3015282249/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-workflowdss6h/series-workflowdss6h-convert-artifact-362646098/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,}