Name: series-workflow2ndsh Phase: Failed StartedAt: 2026-09-07 17:44:01 +0000 UTC FinishedAt: 2026-09-07 17:48:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2ndsh[0] Phase: Succeeded StartedAt: 2026-09-07 17:44:01 +0000 UTC FinishedAt: 2026-09-07 17:47:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2ndsh[0].run-triage Phase: Succeeded StartedAt: 2026-09-07 17:44:01 +0000 UTC FinishedAt: 2026-09-07 17:47:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIG9ubHkgYWRkcyB1c2VyLXNwYWNlIG1hbi1wYWdlIGRvY3VtZW50YXRpb24gZmlsZXMgdW5kZXIgdGhlIG1hbi8gZGlyZWN0b3J5IChtYW4vbWFuMi9maWxlX2dldGF0dHIuMiwgbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIsIGFuZCBtYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlKSBhbmQgZG9lcyBub3QgbW9kaWZ5IGFueSBleGVjdXRhYmxlIGtlcm5lbCBzb3VyY2UgY29kZSBvciBkYXRhIHN0cnVjdHVyZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjQ3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjA0N2RhZDAxMDU3ODY4OWUyZTZlMDQ4YzdlM2NiYWU2YTZkOGNkZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDcgMTc6NDc6MzIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbWFuL21hbjIvZmlsZV9nZXRhdHRyLjIgYi9tYW4vbWFuMi9maWxlX2dldGF0dHIuMlxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmYxYWVjMmFkOGM0MjVcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL21hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yXG5AQCAtMCwwICYjNDM7MSwyODYgQEBcbiYjNDM7LlxcXCYjMzQ7IENvcHlyaWdodCwgdGhlIGF1dGhvcnMgb2YgdGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0XG4mIzQzOy5cXFwmIzM0O1xuJiM0MzsuXFxcJiMzNDsgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExpbnV4LW1hbi1wYWdlcy1jb3B5bGVmdFxuJiM0MzsuXFxcJiMzNDtcbiYjNDM7LlRIIGZpbGVfZ2V0YXR0ciAyIChkYXRlKSBcJiMzNDtMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpXCYjMzQ7XG4mIzQzOy5TSCBOQU1FXG4mIzQzO2ZpbGVfZ2V0YXR0ciBcXC0gZ2V0IGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlc1xuJiM0MzsuU0ggU1lOT1BTSVNcbiYjNDM7Lm5mXG4mIzQzOy5CUiBcJiMzNDsjaW5jbHVkZSBcdTAwM2NsaW51eC9mY250bC5oXHUwMDNlXCYjMzQ7IFwmIzM0OyAgICAgIC8qIFwmIzM0OyBBVF8qIFwmIzM0OyBjb25zdGFudHMgKi9cJiMzNDtcbiYjNDM7LkJSIFwmIzM0OyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzLmhcdTAwM2VcJiMzNDsgXCYjMzQ7ICAgICAgICAgLyogc3RydWN0IFwmIzM0OyBmaWxlX2F0dHIgXCYjMzQ7IGFuZCBcJiMzNDsgRlNfWEZMQUdfKiBcJiMzNDsgY29uc3RhbnRzICovXCYjMzQ7XG4mIzQzOy5CUiBcJiMzNDsjaW5jbHVkZSBcdTAwM2NzeXMvc3lzY2FsbC5oXHUwMDNlXCYjMzQ7IFwmIzM0OyAgICAgIC8qIFwmIzM0OyBTWVNfKiBcJiMzNDsgY29uc3RhbnRzICovXCYjMzQ7XG4mIzQzOy5CICNpbmNsdWRlIFx1MDAzY3VuaXN0ZC5oXHUwMDNlXG4mIzQzOy5QXG4mIzQzOy5CIGxvbmcgc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLFxuJiM0MzsuQkkgXCYjMzQ7ICAgICAgICAgICAgICAgaW50IFwmIzM0OyBkaXJmZCBcJiMzNDssIGNvbnN0IGNoYXIgKlwmIzM0OyBwYXRobmFtZSAsXG4mIzQzOy5CSSBcJiMzNDsgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZV9hdHRyICpcJiMzNDsgZmF0dHIgXCYjMzQ7LCBzaXplX3QgXCYjMzQ7IHNpemUgLFxuJiM0MzsuQkkgXCYjMzQ7ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IFwmIzM0OyBmbGFncyApO1xuJiM0MzsuZmlcbiYjNDM7LlBcbiYjNDM7LklSIE5vdGUgOlxuJiM0MztnbGliYyBwcm92aWRlcyBubyB3cmFwcGVyIGZvclxuJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgpLFxuJiM0Mzt1c2VcbiYjNDM7LkJSIHN5c2NhbGwgKDIpXG4mIzQzO2luc3RlYWQuXG4mIzQzOy5TSCBERVNDUklQVElPTlxuJiM0MztUaGVcbiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoKVxuJiM0MztzeXN0ZW0gY2FsbCByZXRyaWV2ZXMgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXNcbiYjNDM7ZnJvbSB0aGUgZmlsZSBzcGVjaWZpZWQgYnlcbiYjNDM7LklSIHBhdGhuYW1lIC5cbiYjNDM7LlBcbiYjNDM7VGhpcyBzeXN0ZW0gY2FsbCBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gdGhlXG4mIzQzOy5CIEZTX0lPQ19GU0dFVFhBVFRSXG4mIzQzOy5CUiBpb2N0bCAoMilcbiYjNDM7b3BlcmF0aW9uLFxuJiM0MztidXQgd2l0aCB0aGUgYWR2YW50YWdlIHRoYXQgdGhlIGZpbGUgZG9lcyBub3QgbmVlZCB0byBiZSBvcGVuZWQuXG4mIzQzO0J5IHVzaW5nIGEgcGF0aG5hbWUsXG4mIzQzOy5CUiBmaWxlX2dldGF0dHIgKClcbiYjNDM7Y2FuIHJldHJpZXZlIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzXG4mIzQzO2Zyb20gYWxsIGZpbGUgdHlwZXMsXG4mIzQzO2luY2x1ZGluZyBzcGVjaWFsIGZpbGVzIHN1Y2ggYXMgRklGT3MsIHNvY2tldHMsIGJsb2NrIGRldmljZXMsIGNoYXJhY3RlclxuJiM0MztkZXZpY2VzLCBhbmQgc3ltbGlua3MsIHdoZXJlIG9wZW5pbmcgdGFyZ2V0ZWQgaW5vZGUgbWF5IG5vdCBiZSBwb3NzaWJsZS5cbiYjNDM7LlBcbiYjNDM7QXMgd2l0aFxuJiM0MzsuQlIgb3BlbmF0ICgyKSxcbiYjNDM7aWZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgcmVsYXRpdmUsXG4mIzQzO3RoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeVxuJiM0MztyZWZlcnJlZCB0byBieSB0aGUgZmlsZSBkZXNjcmlwdG9yXG4mIzQzOy5JUiBkaXJmZCAuXG4mIzQzO1RoZSBzcGVjaWFsIHZhbHVlXG4mIzQzOy5CIEFUX0ZEQ1dEXG4mIzQzO2NvdWxkIGJlIHVzZWQgdG8gcmVmZXIgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb2YgdGhlIGNhbGxpbmcgcHJvY2Vzcy5cbiYjNDM7SWZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgYWJzb2x1dGUsXG4mIzQzO3RoZW5cbiYjNDM7LkkgZGlyZmRcbiYjNDM7aXMgaWdub3JlZC5cbiYjNDM7LlBcbiYjNDM7VGhlXG4mIzQzOy5JIGZhdHRyXG4mIzQzO2FyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBhXG4mIzQzOy5JIGZpbGVfYXR0clxuJiM0MztzdHJ1Y3R1cmUuXG4mIzQzO1RoaXMgc3RydWN0dXJlIHdpbGwgYmUgZmlsbGVkIHdpdGggZmlsZSBhdHRyaWJ1dGVzLlxuJiM0MztUaGlzIHN0cnVjdHVyZSBpcyBkZXNjcmliZWQgaW5cbiYjNDM7LkJSIGZpbGVfYXR0cigydHlwZSkgLlxuJiM0MzsuUFxuJiM0MztUaGVcbiYjNDM7Lkkgc2l6ZVxuJiM0Mzthcmd1bWVudCBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5XG4mIzQzOy5JUiBmYXR0ciAuXG4mIzQzO1RoZSBzaXplIGluZGljYXRlcyB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gdXNlLCByZWZlciB0b1xuJiM0MzsuQiBmaWxlX2F0dHIoMnR5cGUpXG4mIzQzO2ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHZlcnNpb25pbmcuXG4mIzQzOy5QXG4mIzQzO1VzZXJzcGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIHplcm8taW5pdGlhbGl6ZVxuJiM0MzsuSSBzdHJ1Y3QgZmlsZV9hdHRyXG4mIzQzO2JlZm9yZSBjYWxsaW5nXG4mIzQzOy5CUiBmaWxlX2dldGF0dHIgKClcbiYjNDM7dG8gZW5zdXJlIHRoYXQgZmllbGRzIG5vdCBmaWxsZWQgaW4gYnkgb2xkZXIga2VybmVsc1xuJiM0Mzt3aWxsIGhhdmUgcHJlZGljdGFibGUgdmFsdWVzLlxuJiM0MzsuUFxuJiM0MztUaGVcbiYjNDM7LkkgZmxhZ3NcbiYjNDM7YXJndW1lbnQgaXMgYSBiaXQgbWFzaywgYXZhaWxhYmxlIGZsYWdzIGFyZTpcbiYjNDM7LlRQXG4mIzQzOy5CIEFUX0VNUFRZX1BBVEhcbiYjNDM7SWZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nLFxuJiM0MztvcGVyYXRlIG9uIHRoZSBmaWxlIHJlZmVycmVkIHRvIGJ5XG4mIzQzOy5JUiBkaXJmZCAuXG4mIzQzO0luIHRoaXMgY2FzZSxcbiYjNDM7LkkgZGlyZmRcbiYjNDM7Y2FuIHJlZmVyIHRvIGFueSB0eXBlIG9mIGZpbGUsXG4mIzQzO25vdCBqdXN0IGEgZGlyZWN0b3J5LlxuJiM0MztJZlxuJiM0MzsuSSBkaXJmZFxuJiM0Mztpc1xuJiM0MzsuQlIgQVRfRkRDV0QgLFxuJiM0Mzt0aGUgY2FsbCBmYWlscyB3aXRoIHRoZSBlcnJvclxuJiM0MzsuQlIgRUJBREYgLlxuJiM0MzsuVFBcbiYjNDM7LkIgQVRfU1lNTElOS19OT0ZPTExPV1xuJiM0MztJZlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyBhIHN5bWJvbGljIGxpbmssXG4mIzQzO2RvIG5vdCBkZXJlZmVyZW5jZSBpdDtcbiYjNDM7aW5zdGVhZCBnZXQgYXR0cmlidXRlcyBvZiB0aGUgc3ltYm9saWMgbGluayBpbm9kZSBpdHNlbGYuXG4mIzQzO0J5IGRlZmF1bHQsIHN5bWJvbGljIGxpbmtzIGFyZSBkZXJlZmVyZW5jZWQuXG4mIzQzOy5TSCBSRVRVUk4gVkFMVUVcbiYjNDM7T24gc3VjY2VzcyxcbiYjNDM7emVybyBpcyByZXR1cm5lZC5cbiYjNDM7T24gZXJyb3IsXG4mIzQzO1xcLTEgaXMgcmV0dXJuZWQsXG4mIzQzO2FuZFxuJiM0MzsuSSBlcnJub1xuJiM0MztpcyBzZXQgdG8gaW5kaWNhdGUgdGhlIGVycm9yLlxuJiM0MzsuU0ggRVJST1JTXG4mIzQzOy5UUFxuJiM0MzsuQiBFMkJJR1xuJiM0MzsuSSBzaXplXG4mIzQzO2lzIHRvbyBiaWcgKGxhcmdlciB0aGFuXG4mIzQzOy5CUiBQQUdFX1NJWkUgKS5cbiYjNDM7LlRQXG4mIzQzOy5CIEVBQ0NFU1xuJiM0MztTZWFyY2ggcGVybWlzc2lvbiBpcyBkZW5pZWQgZm9yIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXNcbiYjNDM7aW4gdGhlIHBhdGggcHJlZml4IG9mXG4mIzQzOy5JUiBwYXRobmFtZSAuXG4mIzQzOy5UUFxuJiM0MzsuQiBFQkFERlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyByZWxhdGl2ZSBidXRcbiYjNDM7LkkgZGlyZmRcbiYjNDM7aXMgbmVpdGhlclxuJiM0MzsuQiBBVF9GRENXRFxuJiM0Mztub3IgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IuXG4mIzQzOy5UUFxuJiM0MzsuQiBFQkFERlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyBhbiBlbXB0eSBzdHJpbmcsXG4mIzQzOy5CIEFUX0VNUFRZX1BBVEhcbiYjNDM7d2FzIHNwZWNpZmllZCxcbiYjNDM7YnV0XG4mIzQzOy5JIGRpcmZkXG4mIzQzO2lzIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLlxuJiM0MzsuVFBcbiYjNDM7LkIgRUZBVUxUXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO29yXG4mIzQzOy5JIGZhdHRyXG4mIzQzO2lzIGFuIGludmFsaWQgcG9pbnRlci5cbiYjNDM7LlRQXG4mIzQzOy5CIEVJTlZBTFxuJiM0MztJbnZhbGlkIGZsYWcgc3BlY2lmaWVkIGluXG4mIzQzOy5JUiBmbGFncyAuXG4mIzQzOy5UUFxuJiM0MzsuQiBFSU5WQUxcbiYjNDM7Lkkgc2l6ZVxuJiM0MztpcyBzbWFsbGVyIHRoYW5cbiYjNDM7LkJSIEZJTEVfQVRUUl9TSVpFX1ZFUjAgLlxuJiM0MzsuVFBcbiYjNDM7LkIgRUxPT1BcbiYjNDM7VG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQgd2hpbGUgcmVzb2x2aW5nXG4mIzQzOy5JUiBwYXRobmFtZSAuXG4mIzQzOy5UUFxuJiM0MzsuQiBFTkFNRVRPT0xPTkdcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgdG9vIGxvbmcuXG4mIzQzOy5UUFxuJiM0MzsuQiBFTk9FTlRcbiYjNDM7QSBjb21wb25lbnQgb2ZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7ZG9lcyBub3QgZXhpc3QsXG4mIzQzO29yXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2lzIGFuIGVtcHR5IHN0cmluZyBhbmRcbiYjNDM7LkIgQVRfRU1QVFlfUEFUSFxuJiM0Mzt3YXMgbm90IHNwZWNpZmllZCBpblxuJiM0MzsuSVIgZmxhZ3MgLlxuJiM0MzsuVFBcbiYjNDM7LkIgRU5PTUVNXG4mIzQzO0luc3VmZmljaWVudCBrZXJuZWwgbWVtb3J5IHdhcyBhdmFpbGFibGUuXG4mIzQzOy5UUFxuJiM0MzsuQiBFTk9URElSXG4mIzQzO0EgY29tcG9uZW50IG9mIHRoZSBwYXRoIHByZWZpeCBvZlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyBub3QgYSBkaXJlY3Rvcnkgb3IsXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2lzIHJlbGF0aXZlIGFuZFxuJiM0MzsuSSBkaXJmZFxuJiM0MztpcyBhIGZpbGUgZGVzY3JpcHRvciByZWZlcnJpbmcgdG8gYSBmaWxlIG90aGVyIHRoYW4gYSBkaXJlY3RvcnkuXG4mIzQzOy5UUFxuJiM0MzsuQiBFT1BOT1RTVVBQXG4mIzQzO1RoZSBmaWxlc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgZ2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoaXMgdHlwZSBvZiBpbm9kZS5cbiYjNDM7LlNIIEhJU1RPUllcbiYjNDM7LlNTIExpbnV4IDYuMTdcbiYjNDM7VGhpcyBzeXN0ZW0gY2FsbCBpcyBpbnRyb2R1Y2VkIGFzIGEgbW9yZSBmbGV4aWJsZSBhbHRlcm5hdGl2ZSB0byB0aGVcbiYjNDM7RlNfSU9DX0ZTR0VUWEFUVFJcbiYjNDM7LkJSIGlvY3RsICgyKVxuJiM0Mzt3aGljaCBjb3VsZCB3b3JrIG9uIGFueSB0eXBlIG9mIGZpbGVzLlxuJiM0MzsuU0ggTk9URVNcbiYjNDM7VGhpcyBzeXN0ZW0gY2FsbCBpcyBkZXNpZ25lZCB0byBiZSBleHRlbnNpYmxlLlxuJiM0MztUaGVcbiYjNDM7Lkkgc2l6ZVxuJiM0Mzthcmd1bWVudCBhbGxvd3MgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucyB0byBpbmRpY2F0ZVxuJiM0Mzt3aGljaCB2ZXJzaW9uIG9mIHRoZVxuJiM0MzsuSSBmaWxlX2F0dHJcbiYjNDM7c3RydWN0dXJlIHRoZXkgYXJlIHVzaW5nLFxuJiM0MztlbmFibGluZyB0aGUga2VybmVsIHRvIHN1cHBvcnQgYm90aCBvbGQgYW5kIG5ldyB2ZXJzaW9uc1xuJiM0MztvZiB0aGUgc3RydWN0dXJlIHNpbXVsdGFuZW91c2x5LlxuJiM0MzsuUFxuJiM0MztJZlxuJiM0MzsuSSBzaXplXG4mIzQzO2lzIHNtYWxsZXIgdGhhbiB0aGUgc3RydWN0dXJlIHNpemUgdGhlIGtlcm5lbCBleHBlY3RzLFxuJiM0Mztvbmx5IHRoZSBmaWVsZHMgdGhhdCBmaXQgd2l0aGluXG4mIzQzOy5JIHNpemVcbiYjNDM7d2lsbCBiZSBmaWxsZWQgaW4uXG4mIzQzO0lmXG4mIzQzOy5JIHNpemVcbiYjNDM7aXMgbGFyZ2VyIHRoYW4gdGhlIGtlcm5lbCYjMzk7cyBzdHJ1Y3R1cmUgc2l6ZSxcbiYjNDM7dGhlIGV4dHJhIGJ5dGVzIGFyZSB6ZXJvZWQuXG4mIzQzOy5TSCBFWEFNUExFU1xuJiM0MztUaGUgcHJvZ3JhbSBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIHVzZSBvZlxuJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgpXG4mIzQzO3RvIHJldHJpZXZlIGFuZCBkaXNwbGF5IGZpbGUgYXR0cmlidXRlcy5cbiYjNDM7LlBcbiYjNDM7LmluICYjNDM7NG5cbiYjNDM7LkVYXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2ZjbnRsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZnMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NzdGRpby5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N0ZGxpYi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbiYjNDM7XG4mIzQzOyNpZm5kZWYgU1lTX2ZpbGVfZ2V0YXR0clxuJiM0MzsjZGVmaW5lIFNZU19maWxlX2dldGF0dHIgNDY3XG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7aW50XG4mIzQzO21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiYjNDM7e1xuJiM0MzsgICAgc3RydWN0IGZpbGVfYXR0ciBmYSA9IHsgMCB9O1xuJiM0MzsgICAgaW50IGRmZDtcbiYjNDM7ICAgIGxvbmcgcmV0O1xuJiM0MztcbiYjNDM7ICAgIGlmIChhcmdjICE9IDIpIHtcbiYjNDM7ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7VXNhZ2U6ICVzIFx1MDAzY2ZpbGVuYW1lXHUwMDNlXFxcXG5cJiMzNDssIGFyZ3ZbMF0pO1xuJiM0MzsgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbiYjNDM7ICAgIH1cbiYjNDM7XG4mIzQzOyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIEFUX0ZEQ1dELCBhcmd2WzFdLCBcdTAwMjZmYSwgc2l6ZW9mKGZhKSwgMCk7XG4mIzQzOyAgICBpZiAocmV0ID09IFxcLTEpIHtcbiYjNDM7ICAgICAgICBwZXJyb3IoXCYjMzQ7ZmlsZV9nZXRhdHRyXCYjMzQ7KTtcbiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgcHJpbnRmKFwmIzM0O0ZpbGUgYXR0cmlidXRlczpcXFxcblwmIzM0Oyk7XG4mIzQzOyAgICBwcmludGYoXCYjMzQ7ICB4ZmxhZ3M6ICAgICAweCVsbHhcXFxcblwmIzM0OywgKHVuc2lnbmVkIGxvbmcgbG9uZylmYS5mYV94ZmxhZ3MpO1xuJiM0MzsgICAgcHJpbnRmKFwmIzM0OyAgZXh0c2l6ZTogICAgJXVcXFxcblwmIzM0OywgZmEuZmFfZXh0c2l6ZSk7XG4mIzQzOyAgICBwcmludGYoXCYjMzQ7ICBuZXh0ZW50czogICAldVxcXFxuXCYjMzQ7LCBmYS5mYV9uZXh0ZW50cyk7XG4mIzQzOyAgICBwcmludGYoXCYjMzQ7ICBwcm9qaWQ6ICAgICAldVxcXFxuXCYjMzQ7LCBmYS5mYV9wcm9qaWQpO1xuJiM0MzsgICAgcHJpbnRmKFwmIzM0OyAgY293ZXh0c2l6ZTogJXVcXFxcblwmIzM0OywgZmEuZmFfY293ZXh0c2l6ZSk7XG4mIzQzO1xuJiM0MzsgICAgLypcbiYjNDM7ICAgICAqIFRyeSBzZXR0aW5nIE5PRFVNUCBmbGFnIHdpdGggY2hhdHRyICYjNDM7ZCAuL2ZvbyB0byBzZWUgdGhlIGRpZmZlcmVuY2VcbiYjNDM7ICAgICAqL1xuJiM0MzsgICAgaWYgKGZhLmZhX3hmbGFncyBcdTAwMjYgRlNfWEZMQUdfTk9EVU1QKVxuJiM0MzsgICAgICAgIHByaW50ZihcJiMzNDsgIE5PRFVNUCBmbGFnIGlzIHNldFxcXFxuXCYjMzQ7KTtcbiYjNDM7XG4mIzQzOyAgICBleGl0KEVYSVRfU1VDQ0VTUyk7XG4mIzQzO31cbiYjNDM7LkVFXG4mIzQzOy5pblxuJiM0MzsuU0ggU0VFIEFMU09cbiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoMiksXG4mIzQzOy5CUiBmaWxlX2F0dHIgKDJ0eXBlKSxcbiYjNDM7LkJSIGlvY3RsICgyKSxcbiYjNDM7LkJSIGlvY3RsX2ZzICgyKSxcbiYjNDM7LkJSIG9wZW5hdCAoMilcbmRpZmYgLS1naXQgYS9tYW4vbWFuMi9maWxlX3NldGF0dHIuMiBiL21hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNTk2NzUwZGM3OWM4MVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvbWFuL21hbjIvZmlsZV9zZXRhdHRyLjJcbkBAIC0wLDAgJiM0MzsxLDM0MCBAQFxuJiM0MzsuXFxcJiMzNDsgQ29weXJpZ2h0LCB0aGUgYXV0aG9ycyBvZiB0aGUgTGludXggbWFuLXBhZ2VzIHByb2plY3RcbiYjNDM7LlxcXCYjMzQ7XG4mIzQzOy5cXFwmIzM0OyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTGludXgtbWFuLXBhZ2VzLWNvcHlsZWZ0XG4mIzQzOy5cXFwmIzM0O1xuJiM0MzsuVEggZmlsZV9zZXRhdHRyIDIgKGRhdGUpIFwmIzM0O0xpbnV4IG1hbi1wYWdlcyAodW5yZWxlYXNlZClcJiMzNDtcbiYjNDM7LlNIIE5BTUVcbiYjNDM7ZmlsZV9zZXRhdHRyIFxcLSBzZXQgZmlsZXN5c3RlbSBpbm9kZSBhdHRyaWJ1dGVzXG4mIzQzOy5TSCBTWU5PUFNJU1xuJiM0MzsubmZcbiYjNDM7LkJSIFwmIzM0OyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZjbnRsLmhcdTAwM2VcJiMzNDsgXCYjMzQ7ICAgICAgLyogRGVmaW5pdGlvbiBvZiBcJiMzNDsgQVRfKiBcJiMzNDsgY29uc3RhbnRzICovXCYjMzQ7XG4mIzQzOy5CUiBcJiMzNDsjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXCYjMzQ7IFwmIzM0OyAgICAgICAgIC8qIERlZmluaXRpb24gb2YgXCYjMzQ7IEZJTEVfQVRUUl8qIFxcXG4mIzQzO1wmIzM0OyBhbmQgXCYjMzQ7IEZTX1hGTEFHXyogXCYjMzQ7IGNvbnN0YW50cyAqL1wmIzM0O1xuJiM0MzsuQlIgXCYjMzQ7I2luY2x1ZGUgXHUwMDNjc3lzL3N5c2NhbGwuaFx1MDAzZVwmIzM0OyBcJiMzNDsgICAgICAvKiBEZWZpbml0aW9uIG9mIFwmIzM0OyBTWVNfKiBcJiMzNDsgY29uc3RhbnRzICovXCYjMzQ7XG4mIzQzOy5CICNpbmNsdWRlIFx1MDAzY3VuaXN0ZC5oXHUwMDNlXG4mIzQzOy5QXG4mIzQzOy5CIGxvbmcgc3lzY2FsbChTWVNfZmlsZV9zZXRhdHRyLFxuJiM0MzsuQkkgXCYjMzQ7ICAgICAgICAgICAgICAgaW50IFwmIzM0OyBkaXJmZCBcJiMzNDssIGNvbnN0IGNoYXIgKlwmIzM0OyBwYXRobmFtZSAsXG4mIzQzOy5CSSBcJiMzNDsgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZV9hdHRyICpcJiMzNDsgZmF0dHIgXCYjMzQ7LCBzaXplX3QgXCYjMzQ7IHNpemUgLFxuJiM0MzsuQkkgXCYjMzQ7ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IFwmIzM0OyBmbGFncyApO1xuJiM0MzsuZmlcbiYjNDM7LlBcbiYjNDM7LklSIE5vdGUgOlxuJiM0MztnbGliYyBwcm92aWRlcyBubyB3cmFwcGVyIGZvclxuJiM0MzsuQlIgZmlsZV9zZXRhdHRyICgpLFxuJiM0MztuZWNlc3NpdGF0aW5nIHRoZSB1c2Ugb2ZcbiYjNDM7LkJSIHN5c2NhbGwgKDIpLlxuJiM0MzsuU0ggREVTQ1JJUFRJT05cbiYjNDM7VGhlXG4mIzQzOy5CUiBmaWxlX3NldGF0dHIgKClcbiYjNDM7c3lzdGVtIGNhbGwgc2V0cyBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcbiYjNDM7b24gdGhlIGZpbGUgc3BlY2lmaWVkIGJ5XG4mIzQzOy5JUiBwYXRobmFtZSAuXG4mIzQzOy5QXG4mIzQzO1RoaXMgc3lzdGVtIGNhbGwgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHRoZVxuJiM0MzsuQiBGU19JT0NfRlNTRVRYQVRUUlxuJiM0MzsuQlIgaW9jdGwgKDIpXG4mIzQzO29wZXJhdGlvbixcbiYjNDM7YnV0IHdpdGggdGhlIGFkdmFudGFnZSB0aGF0IHRoZSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gYmUgb3BlbmVkLlxuJiM0MztCeSB1c2luZyBhIHBhdGhuYW1lIGluc3RlYWQgb2YgcmVxdWlyaW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLFxuJiM0MzsuQlIgZmlsZV9zZXRhdHRyICgpXG4mIzQzO2NhbiBtYW5pcHVsYXRlIGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlc1xuJiM0MztvbiBhbGwgZmlsZSB0eXBlcyxcbiYjNDM7aW5jbHVkaW5nIHNwZWNpYWwgZmlsZXMgKEZJRk9zLCBzb2NrZXRzLCBibG9jayBkZXZpY2VzLCBjaGFyYWN0ZXIgZGV2aWNlcylcbiYjNDM7d2hlcmUgb3BlbmluZyB0aGUgZmlsZSBtYXkgaGF2ZSBzaWRlIGVmZmVjdHMgb3IgbWF5IG5vdCBiZSBwb3NzaWJsZS5cbiYjNDM7V2l0aFxuJiM0MzsuQlIgaW9jdGwgKDIpLFxuJiM0MztpdCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIG9idGFpbiBhIGZpbGUgZGVzY3JpcHRvciB0aGF0IHJlZmVyc1xuJiM0MztkaXJlY3RseSB0byB0aGUgZmlsZXN5c3RlbSBpbm9kZSBmb3Igc3BlY2lhbCBmaWxlcy5cbiYjNDM7LlBcbiYjNDM7QXMgd2l0aFxuJiM0MzsuQlIgb3BlbmF0ICgyKSxcbiYjNDM7aWZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgcmVsYXRpdmUsXG4mIzQzO3RoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeVxuJiM0MztyZWZlcnJlZCB0byBieSB0aGUgZmlsZSBkZXNjcmlwdG9yXG4mIzQzOy5JIGRpcmZkXG4mIzQzOyhvciB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvZiB0aGUgY2FsbGluZyBwcm9jZXNzLFxuJiM0MztpZlxuJiM0MzsuSSBkaXJmZFxuJiM0MztpcyB0aGUgc3BlY2lhbCB2YWx1ZVxuJiM0MzsuQlIgQVRfRkRDV0QgKS5cbiYjNDM7SWZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgYWJzb2x1dGUsXG4mIzQzO3RoZW5cbiYjNDM7LkkgZGlyZmRcbiYjNDM7aXMgaWdub3JlZC5cbiYjNDM7LlBcbiYjNDM7VGhlXG4mIzQzOy5JIGZhdHRyXG4mIzQzO2FyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBhXG4mIzQzOy5JIGZpbGVfYXR0clxuJiM0MztzdHJ1Y3R1cmUsXG4mIzQzO3doaWNoIHNwZWNpZmllcyB0aGUgYXR0cmlidXRlcyB0byBzZXQgb24gdGhlIGZpbGUuXG4mIzQzO1RoaXMgc3RydWN0dXJlIGlzIGRlc2NyaWJlZCBpblxuJiM0MzsuQlIgZmlsZV9hdHRyICgydHlwZSkuXG4mIzQzOy5QXG4mIzQzO1RoZVxuJiM0MzsuSSBzaXplXG4mIzQzO2FyZ3VtZW50IHNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnlcbiYjNDM7LklSIGZhdHRyIC5cbiYjNDM7VGhlIHNpemUgaW5kaWNhdGVzIHZlcnNpb24gb2YgdGhlIHN0cnVjdHVyZSBpbiB1c2UsIHJlZmVyIHRvXG4mIzQzOy5CIGZpbGVfYXR0cigydHlwZSlcbiYjNDM7Zm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdmVyc2lvbmluZy5cbiYjNDM7LlBcbiYjNDM7VXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIHplcm8taW5pdGlhbGl6ZVxuJiM0MzsuSSBzdHJ1Y3QgZmlsZV9hdHRyXG4mIzQzO3RvIGVuc3VyZSB0aGF0IGZ1dHVyZSBmaWVsZHMgYWRkZWQgdG8gdGhlIHN0cnVjdHVyZVxuJiM0Mzt3aWxsIGJlIHRyZWF0ZWQgYXMgbm8tb3BzIGlmIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBpcyB1cGRhdGVkXG4mIzQzO2J1dCB0aGUgYXBwbGljYXRpb24gaXMgbm90LlxuJiM0MzsuUFxuJiM0MztUaGVcbiYjNDM7LkkgZmxhZ3NcbiYjNDM7YXJndW1lbnQgaXMgYSBiaXQgbWFzayB0aGF0IGNhbiBpbmNsdWRlIHplcm8gb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcbiYjNDM7LlRQXG4mIzQzOy5CIEFUX0VNUFRZX1BBVEhcbiYjNDM7SWZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nLFxuJiM0MztvcGVyYXRlIG9uIHRoZSBmaWxlIHJlZmVycmVkIHRvIGJ5XG4mIzQzOy5JIGRpcmZkXG4mIzQzOyh3aGljaCBtYXkgaGF2ZSBiZWVuIG9idGFpbmVkIHVzaW5nIHRoZVxuJiM0MzsuQlIgb3BlbiAoMilcbiYjNDM7LkIgT19QQVRIXG4mIzQzO2ZsYWcpLlxuJiM0MztJbiB0aGlzIGNhc2UsXG4mIzQzOy5JIGRpcmZkXG4mIzQzO2NhbiByZWZlciB0byBhbnkgdHlwZSBvZiBmaWxlLFxuJiM0Mztub3QganVzdCBhIGRpcmVjdG9yeS5cbiYjNDM7SWZcbiYjNDM7LkkgZGlyZmRcbiYjNDM7aXNcbiYjNDM7LkJSIEFUX0ZEQ1dEICxcbiYjNDM7dGhlIGNhbGwgZmFpbHMgd2l0aCB0aGUgZXJyb3JcbiYjNDM7LkJSIEVCQURGIC5cbiYjNDM7LlRQXG4mIzQzOy5CIEFUX1NZTUxJTktfTk9GT0xMT1dcbiYjNDM7SWZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgYSBzeW1ib2xpYyBsaW5rLFxuJiM0MztkbyBub3QgZGVyZWZlcmVuY2UgaXQ6XG4mIzQzO2luc3RlYWQgc2V0IGF0dHJpYnV0ZXMgb24gdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmLlxuJiM0MztCeSBkZWZhdWx0IChpLmUuLCBpZiB0aGlzIGZsYWcgaXMgbm90IHNwZWNpZmllZCksXG4mIzQzO3N5bWJvbGljIGxpbmtzIGFyZSBkZXJlZmVyZW5jZWQuXG4mIzQzOy5TSCBSRVRVUk4gVkFMVUVcbiYjNDM7T24gc3VjY2VzcyxcbiYjNDM7emVybyBpcyByZXR1cm5lZC5cbiYjNDM7T24gZXJyb3IsXG4mIzQzO1xcLTEgaXMgcmV0dXJuZWQsXG4mIzQzO2FuZFxuJiM0MzsuSSBlcnJub1xuJiM0MztpcyBzZXQgdG8gaW5kaWNhdGUgdGhlIGVycm9yLlxuJiM0MzsuU0ggRVJST1JTXG4mIzQzOy5UUFxuJiM0MzsuQiBFMkJJR1xuJiM0MzsuSSBzaXplXG4mIzQzO2lzIGxhcmdlciB0aGFuXG4mIzQzOy5CUiBQQUdFX1NJWkUgLlxuJiM0MzsuVFBcbiYjNDM7LkIgRTJCSUdcbiYjNDM7Lkkgc2l6ZVxuJiM0MztpbmRpY2F0ZXMgdGhlIHZlcnNpb24gd2hpY2gga2VybmVsIGRvZXNuJiMzOTt0IHN1cHBvcnQgKHRoZSBzaXplIGlzIGxhcmdlciB0aGFuIHRoZVxuJiM0MztrZXJuZWwgZXhwZWN0cykgYW5kIG5ldyBmaWVsZHMgYXJlIG5vbi16ZXJvLlxuJiM0MzsuVFBcbiYjNDM7LkIgRUFDQ0VTXG4mIzQzO1NlYXJjaCBwZXJtaXNzaW9uIGlzIGRlbmllZCBmb3Igb25lIG9mIHRoZSBkaXJlY3Rvcmllc1xuJiM0MztpbiB0aGUgcGF0aCBwcmVmaXggb2ZcbiYjNDM7LklSIHBhdGhuYW1lIC5cbiYjNDM7KFNlZSBhbHNvXG4mIzQzOy5CUiBwYXRoX3Jlc29sdXRpb24gKDcpLilcbiYjNDM7LlRQXG4mIzQzOy5CIEVCQURGXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2lzIHJlbGF0aXZlIGJ1dFxuJiM0MzsuSSBkaXJmZFxuJiM0MztpcyBuZWl0aGVyXG4mIzQzOy5CIEFUX0ZEQ1dEXG4mIzQzO25vciBhIHZhbGlkIGZpbGUgZGVzY3JpcHRvci5cbiYjNDM7LlRQXG4mIzQzOy5CIEVCQURGXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2lzIGFuIGVtcHR5IHN0cmluZyxcbiYjNDM7LkIgQVRfRU1QVFlfUEFUSFxuJiM0Mzt3YXMgc3BlY2lmaWVkIGluXG4mIzQzOy5JUiBmbGFncyAsXG4mIzQzO2FuZFxuJiM0MzsuSSBkaXJmZFxuJiM0MztpcyBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvci5cbiYjNDM7LlRQXG4mIzQzOy5CIEVGQVVMVFxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztvclxuJiM0MzsuSSBmYXR0clxuJiM0MztpcyBhbiBpbnZhbGlkIHBvaW50ZXIuXG4mIzQzOy5UUFxuJiM0MzsuQiBFSU5WQUxcbiYjNDM7SW52YWxpZCBmbGFnIHNwZWNpZmllZCBpblxuJiM0MzsuSVIgZmxhZ3MgLlxuJiM0MzsuVFBcbiYjNDM7LkIgRUlOVkFMXG4mIzQzOy5JIHNpemVcbiYjNDM7aXMgc21hbGxlciB0aGFuXG4mIzQzOy5CUiBGSUxFX0FUVFJfU0laRV9WRVIwIC5cbiYjNDM7LlRQXG4mIzQzOy5CIEVJTlZBTFxuJiM0MztJbnZhbGlkIGNvbWJpbmF0aW9uIG9mIHBhcmFtZXRlcnMgcHJvdmlkZWQgaW5cbiYjNDM7LkkgZmF0dHJcbiYjNDM7Zm9yIHRoaXMgdHlwZSBvZiBmaWxlIG9yIGZpbGVzeXN0ZW0uXG4mIzQzOy5UUFxuJiM0MzsuQiBFTE9PUFxuJiM0MztUb28gbWFueSBzeW1ib2xpYyBsaW5rcyBlbmNvdW50ZXJlZCB3aGlsZSByZXNvbHZpbmdcbiYjNDM7LklSIHBhdGhuYW1lIC5cbiYjNDM7LlRQXG4mIzQzOy5CIEVOQU1FVE9PTE9OR1xuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyB0b28gbG9uZy5cbiYjNDM7LlRQXG4mIzQzOy5CIEVOT0VOVFxuJiM0MztBIGNvbXBvbmVudCBvZlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0Mztkb2VzIG5vdCBleGlzdCxcbiYjNDM7b3JcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nIGFuZFxuJiM0MzsuQiBBVF9FTVBUWV9QQVRIXG4mIzQzO3dhcyBub3Qgc3BlY2lmaWVkIGluXG4mIzQzOy5JUiBmbGFncyAuXG4mIzQzOy5UUFxuJiM0MzsuQiBFTk9NRU1cbiYjNDM7SW5zdWZmaWNpZW50IGtlcm5lbCBtZW1vcnkgd2FzIGF2YWlsYWJsZS5cbiYjNDM7LlRQXG4mIzQzOy5CIEVOT1RESVJcbiYjNDM7QSBjb21wb25lbnQgb2YgdGhlIHBhdGggcHJlZml4IG9mXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2lzIG5vdCBhIGRpcmVjdG9yeSBvcixcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgcmVsYXRpdmUgYW5kXG4mIzQzOy5JIGRpcmZkXG4mIzQzO2lzIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVycmluZyB0byBhIGZpbGUgb3RoZXIgdGhhbiBhIGRpcmVjdG9yeS5cbiYjNDM7LlRQXG4mIzQzOy5CIEVPUE5PVFNVUFBcbiYjNDM7VGhlIGZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBzZXR0aW5nIGF0dHJpYnV0ZXMgb24gdGhpcyB0eXBlIG9mIGlub2RlLlxuJiM0MzsuVFBcbiYjNDM7LkIgRVBFUk1cbiYjNDM7VGhlIGNhbGxlciBkb2VzIG5vdCBoYXZlIHRoZSBuZWNlc3NhcnkgcGVybWlzc2lvbnNcbiYjNDM7dG8gY2hhbmdlIHRoZSBmaWxlIGF0dHJpYnV0ZXMuXG4mIzQzOy5UUFxuJiM0MzsuQiBFUk9GU1xuJiM0MztUaGUgZmlsZSBpcyBvbiBhIHJlYWQtb25seSBmaWxlc3lzdGVtLlxuJiM0MzsuU0ggSElTVE9SWVxuJiM0MzsuU1MgTGludXggNi4xN1xuJiM0MztUaGlzIHN5c3RlbSBjYWxsIGlzIGludHJvZHVjZWQgYXMgYSBtb3JlIGZsZXhpYmxlIGFsdGVybmF0aXZlIHRvIHRoZVxuJiM0MztGU19JT0NfRlNTRVRYQVRUUlxuJiM0MzsuQlIgaW9jdGwgKDIpXG4mIzQzO3doaWNoIGNvdWxkIHdvcmsgb24gYW55IHR5cGUgb2YgZmlsZXMuXG4mIzQzOy5TSCBOT1RFU1xuJiM0MztUaGlzIHN5c3RlbSBjYWxsIGlzIGRlc2lnbmVkIHRvIGJlIGV4dGVuc2libGUuXG4mIzQzO1RoZVxuJiM0MzsuSSBzaXplXG4mIzQzO2FyZ3VtZW50IGFsbG93cyB1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucyB0byBpbmRpY2F0ZVxuJiM0Mzt3aGljaCB2ZXJzaW9uIG9mIHRoZVxuJiM0MzsuSSBmaWxlX2F0dHJcbiYjNDM7c3RydWN0dXJlIHRoZXkgYXJlIHVzaW5nLFxuJiM0MztlbmFibGluZyB0aGUga2VybmVsIHRvIHN1cHBvcnQgYm90aCBvbGQgYW5kIG5ldyB2ZXJzaW9uc1xuJiM0MztvZiB0aGUgc3RydWN0dXJlIHNpbXVsdGFuZW91c2x5LlxuJiM0MzsuUFxuJiM0MztJZlxuJiM0MzsuSSBzaXplXG4mIzQzO2lzIHNtYWxsZXIgdGhhbiB0aGUgc3RydWN0dXJlIHNpemUgdGhlIGtlcm5lbCBleHBlY3RzLFxuJiM0Mzt0aGUga2VybmVsIHRyZWF0cyB0aGUgbWlzc2luZyBmaWVsZHMgYXMgaGF2aW5nIHplcm8gdmFsdWVzXG4mIzQzOyh3aGljaCBpcyBhIG5vLW9wKS5cbiYjNDM7SWZcbiYjNDM7Lkkgc2l6ZVxuJiM0MztpcyBsYXJnZXIgdGhhbiBleHBlY3RlZCxcbiYjNDM7dGhlIGtlcm5lbCBjaGVja3MgdGhhdCBhbGwgdW5rbm93biAodG8gdGhlIGtlcm5lbCkgZmllbGRzIGFyZSB6ZXJvO1xuJiM0MztpZiBub3QsXG4mIzQzO3RoZSBjYWxsIGZhaWxzIHdpdGhcbiYjNDM7LkJSIEUyQklHIC5cbiYjNDM7LlNIIEVYQU1QTEVTXG4mIzQzO1RoZSBwcm9ncmFtIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mXG4mIzQzOy5CUiBmaWxlX3NldGF0dHIgKClcbiYjNDM7dG8gc2V0IHRoZVxuJiM0MzsuQiBGU19YRkxBR19OT0RVTVBcbiYjNDM7ZmxhZyBvbiBhIGZpbGUuXG4mIzQzOy5QXG4mIzQzOy5pbiAmIzQzOzRuXG4mIzQzOy5FWFxuJiM0MzsjaW5jbHVkZSBcdTAwM2NmY250bC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZjbnRsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZnMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NzdGRpby5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N0ZGxpYi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N0cmluZy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbiYjNDM7XG4mIzQzOyNpZm5kZWYgU1lTX2ZpbGVfZ2V0YXR0clxuJiM0MzsjZGVmaW5lIFNZU19maWxlX2dldGF0dHIgNDY3XG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7I2lmbmRlZiBTWVNfZmlsZV9zZXRhdHRyXG4mIzQzOyNkZWZpbmUgU1lTX2ZpbGVfc2V0YXR0ciA0NjhcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MztpbnRcbiYjNDM7bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuJiM0Mzt7XG4mIzQzOyAgICBzdHJ1Y3QgZmlsZV9hdHRyIGZhID0geyAwIH07XG4mIzQzOyAgICBpbnQgZGZkO1xuJiM0MzsgICAgbG9uZyByZXQ7XG4mIzQzO1xuJiM0MzsgICAgaWYgKGFyZ2MgIT0gMikge1xuJiM0MzsgICAgICAgIGZwcmludGYoc3RkZXJyLCBcJiMzNDtVc2FnZTogJXMgXHUwMDNjZmlsZW5hbWVcdTAwM2VcXFxcblwmIzM0OywgYXJndlswXSk7XG4mIzQzOyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xuJiM0MzsgICAgfVxuJiM0MztcbiYjNDM7ICAgIGRmZCA9IG9wZW4oYXJndlsxXSwgT19SRE9OTFkpO1xuJiM0MzsgICAgaWYgKGRmZCA9PSBcXC0xKSB7XG4mIzQzOyAgICAgICAgcGVycm9yKFwmIzM0O29wZW5cJiMzNDspO1xuJiM0MzsgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbiYjNDM7ICAgIH1cbiYjNDM7XG4mIzQzOyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIGRmZCwgXCYjMzQ7XCYjMzQ7LCBcdTAwMjZmYSwgc2l6ZW9mKGZhKSwgQVRfRU1QVFlfUEFUSCk7XG4mIzQzOyAgICBpZiAocmV0ID09IFxcLTEpIHtcbiYjNDM7ICAgICAgICBwZXJyb3IoXCYjMzQ7ZmlsZV9nZXRhdHRyXCYjMzQ7KTtcbiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgcHJpbnRmKFwmIzM0O0N1cnJlbnQgZmxhZ3M6IDB4JWxseFxcXFxuXCYjMzQ7LCAodW5zaWduZWQgbG9uZyBsb25nKWZhLmZhX3hmbGFncyk7XG4mIzQzO1xuJiM0MzsgICAgZmEuZmFfeGZsYWdzIHw9IEZTX1hGTEFHX05PRFVNUDtcbiYjNDM7XG4mIzQzOyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX3NldGF0dHIsIGRmZCwgXCYjMzQ7XCYjMzQ7LCBcdTAwMjZmYSwgc2l6ZW9mKGZhKSwgQVRfRU1QVFlfUEFUSCk7XG4mIzQzOyAgICBpZiAocmV0ID09IFxcLTEpIHtcbiYjNDM7ICAgICAgICBwZXJyb3IoXCYjMzQ7ZmlsZV9zZXRhdHRyXCYjMzQ7KTtcbiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBkZmQsIFwmIzM0O1wmIzM0OywgXHUwMDI2ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpO1xuJiM0MzsgICAgaWYgKHJldCA9PSBcXC0xKSB7XG4mIzQzOyAgICAgICAgcGVycm9yKFwmIzM0O2ZpbGVfZ2V0YXR0clwmIzM0Oyk7XG4mIzQzOyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xuJiM0MzsgICAgfVxuJiM0MztcbiYjNDM7ICAgIGlmIChmYS5mYV94ZmxhZ3MgXHUwMDI2IEZTX1hGTEFHX05PRFVNUClcbiYjNDM7ICAgICAgICBwcmludGYoXCYjMzQ7ZmxhZ3MgMHglbGx4IChOT0RVTVAgZmxhZyBpcyBzZXQpXFxcXG5cJiMzNDssXG4mIzQzOyAgICAgICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpZmEuZmFfeGZsYWdzKTtcbiYjNDM7XG4mIzQzOyAgICBleGl0KEVYSVRfU1VDQ0VTUyk7XG4mIzQzO31cbiYjNDM7LkVFXG4mIzQzOy5pblxuJiM0MzsuU0ggU0VFIEFMU09cbiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoMiksXG4mIzQzOy5CUiBpb2N0bCAoMiksXG4mIzQzOy5CUiBpb2N0bF9mcyAoMiksXG4mIzQzOy5CUiBvcGVuYXQgKDIpLFxuJiM0MzsuQlIgZmlsZV9hdHRyICgydHlwZSksXG4mIzQzOy5CUiBwYXRoX3Jlc29sdXRpb24gKDcpXG5kaWZmIC0tZ2l0IGEvbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSBiL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGVcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mZDQyNmMxOWY1ZjBiXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlXG5AQCAtMCwwICYjNDM7MSwxODcgQEBcbiYjNDM7LlxcXCYjMzQ7IENvcHlyaWdodCwgdGhlIGF1dGhvcnMgb2YgdGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0XG4mIzQzOy5cXFwmIzM0O1xuJiM0MzsuXFxcJiMzNDsgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExpbnV4LW1hbi1wYWdlcy1jb3B5bGVmdFxuJiM0MzsuXFxcJiMzNDtcbiYjNDM7LlRIIGZpbGVfYXR0ciAydHlwZSAoZGF0ZSkgXCYjMzQ7TGludXggbWFuLXBhZ2VzICh1bnJlbGVhc2VkKVwmIzM0O1xuJiM0MzsuU0ggTkFNRVxuJiM0MztmaWxlX2F0dHIgXFwtIGRlc2NyaWJlIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzIHRvIGdldCBvciBzZXRcbiYjNDM7LlNIIFNZTk9QU0lTXG4mIzQzOy5FWFxuJiM0MzsuQiAjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG4mIzQzOy5QXG4mIzQzOy5CIHN0cnVjdCBmaWxlX2F0dHIge1xuJiM0MzsuQlIgXCYjMzQ7ICAgIHU2NCAgZmFfeGZsYWdzO1wmIzM0OyBcJiMzNDsgICAgIC8qIEV4dGVuZGVkIGZsYWdzICovXCYjMzQ7XG4mIzQzOy5CUiBcJiMzNDsgICAgdTMyICBmYV9leHRzaXplO1wmIzM0OyBcJiMzNDsgICAgLyogRXh0ZW50IHNpemUgaGludCAqL1wmIzM0O1xuJiM0MzsuQlIgXCYjMzQ7ICAgIHUzMiAgZmFfbmV4dGVudHM7XCYjMzQ7IFwmIzM0OyAgIC8qIE51bWJlciBvZiBleHRlbnRzIChyZWFkLW9ubHkpICovXCYjMzQ7XG4mIzQzOy5CUiBcJiMzNDsgICAgdTMyICBmYV9wcm9qaWQ7XCYjMzQ7IFwmIzM0OyAgICAgLyogUHJvamVjdCBpZGVudGlmaWVyICovXCYjMzQ7XG4mIzQzOy5CUiBcJiMzNDsgICAgdTMyICBmYV9jb3dleHRzaXplO1wmIzM0OyBcJiMzNDsgLyogQ29XIGV4dGVudCBzaXplIGhpbnQgKi9cJiMzNDtcbiYjNDM7LkIgfTtcbiYjNDM7LkVFXG4mIzQzOy5TSCBERVNDUklQVElPTlxuJiM0MztEZXNjcmliZXMgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXNcbiYjNDM7Zm9yIHVzZSB3aXRoIHRoZVxuJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgyKVxuJiM0MzthbmRcbiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoMilcbiYjNDM7c3lzdGVtIGNhbGxzLlxuJiM0MzsuUFxuJiM0MztUaGUgZmllbGRzIGFyZSBhcyBmb2xsb3dzOlxuJiM0MzsuVFBcbiYjNDM7LkkgZmFfeGZsYWdzXG4mIzQzO1RoaXMgZmllbGQgY29udGFpbnMgZmlsZSBhdHRyaWJ1dGUgZmxhZ3MuXG4mIzQzO0l0IGlzIGEgYml0IG1hc2sgY29uc2lzdGluZyBvZiB6ZXJvIG9yIG1vcmUgb2YgdGhlXG4mIzQzOy5CIEZTX1hGTEFHXypcbiYjNDM7ZmxhZ3MuXG4mIzQzO1JlZmVyIHRvIHRoZSBzZWN0aW9uXG4mIzQzOy5CIEZMQUdTXG4mIzQzO2JlbG93IGZvciBhIGxpc3Qgb2YgYWxsIGZsYWdzLlxuJiM0MzsuVFBcbiYjNDM7LkkgZmFfZXh0c2l6ZVxuJiM0MztFeHRlbnQgc2l6ZSBhbGxvY2F0b3IgaGludCBpbiBieXRlcy5cbiYjNDM7VGhpcyB2YWx1ZSBzdWdnZXN0cyBhIHByZWZlcnJlZCBleHRlbnQgc2l6ZVxuJiM0Mztmb3IgbmV3IGFsbG9jYXRpb25zIHRvIHRoaXMgZmlsZS5cbiYjNDM7LlRQXG4mIzQzOy5JIGZhX25leHRlbnRzXG4mIzQzO051bWJlciBvZiBkYXRhIGV4dGVudHMgaW4gdGhlIGZpbGUgKHJlYWQtb25seSkuXG4mIzQzO1RoaXMgZmllbGQgaXMgZmlsbGVkIGluIGJ5XG4mIzQzOy5CUiBmaWxlX2dldGF0dHIgKDIpXG4mIzQzO2FuZCBpcyBpZ25vcmVkIGJ5XG4mIzQzOy5CUiBmaWxlX3NldGF0dHIgKDIpLlxuJiM0MzsuVFBcbiYjNDM7LkkgZmFfcHJvamlkXG4mIzQzO1Byb2plY3QgaWRlbnRpZmllci5cbiYjNDM7VXNlZCBieSBxdW90YSBzeXN0ZW1zIHRvIGdyb3VwIHJlbGF0ZWQgZmlsZXMuXG4mIzQzOy5UUFxuJiM0MzsuSSBmYV9jb3dleHRzaXplXG4mIzQzO0NvcHktb24tV3JpdGUgKENvVykgZXh0ZW50IHNpemUgaGludCBpbiBieXRlcy5cbiYjNDM7VGhpcyB2YWx1ZSBzdWdnZXN0cyBhIHByZWZlcnJlZCBleHRlbnQgc2l6ZVxuJiM0Mztmb3IgQ29XIG9wZXJhdGlvbnMuXG4mIzQzOy5TSCBGTEFHU1xuJiM0MztGbGFncyBjYW4gYmU6XG4mIzQzOy5SU1xuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfUkVBTFRJTUVcbiYjNDM7RGF0YSBpcyBzdG9yZWQgaW4gYSByZWFsdGltZSB2b2x1bWUuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19JTU1VVEFCTEVcbiYjNDM7RmlsZSBjYW5ub3QgYmUgbW9kaWZpZWQuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19BUFBFTkRcbiYjNDM7QWxsIHdyaXRlcyBtdXN0IGFwcGVuZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlLlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfU1lOQ1xuJiM0MztBbGwgd3JpdGVzIGFyZSBzeW5jaHJvbm91cy5cbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX05PQVRJTUVcbiYjNDM7RG8gbm90IHVwZGF0ZSBmaWxlIGFjY2VzcyB0aW1lIG9uIHJlYWRzLlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfTk9EVU1QXG4mIzQzO0RvIG5vdCBpbmNsdWRlIGZpbGUgaW4gYmFja3Vwcy5cbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX0RBWFxuJiM0MztVc2UgRGlyZWN0IEFjY2VzcyAoREFYKSBmb3IgSS9PIG9wZXJhdGlvbnMuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19OT0RFRlJBR1xuJiM0MztFeGNsdWRlIHRoaXMgZmlsZSBmcm9tIGRlZnJhZ21lbnRhdGlvbiBvcGVyYXRpb25zLlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfRklMRVNUUkVBTVxuJiM0MztVc2UgZmlsZXN0cmVhbSBhbGxvY2F0b3IgZm9yIHRoaXMgZmlsZS5cbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX0VYVFNJWkVcbiYjNDM7VXNlIHRoZSBleHRlbnQgc2l6ZSBoaW50IGZyb20gdGhlXG4mIzQzOy5JIGZhX2V4dHNpemVcbiYjNDM7ZmllbGQuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19DT1dFWFRTSVpFXG4mIzQzO1VzZSB0aGUgQ29XIGV4dGVudCBzaXplIGhpbnQgZnJvbSB0aGVcbiYjNDM7LkkgZmFfY293ZXh0c2l6ZVxuJiM0MztmaWVsZC5cbiYjNDM7LlJFXG4mIzQzOy5QXG4mIzQzO0RpcmVjdG9yeSBvbmx5IGZsYWdzOlxuJiM0MzsuUlNcbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX1JUSU5IRVJJVFxuJiM0MztOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSByZWFsdGltZSBmbGFnLlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfTk9TWU1MSU5LU1xuJiM0MztEaXNhbGxvdyBjcmVhdGlvbiBvZiBzeW1ib2xpYyBsaW5rcyBpbiB0aGlzIGRpcmVjdG9yeS5cbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX0VYVFNaSU5IRVJJVFxuJiM0MztOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSBleHRlbnQgc2l6ZSBoaW50LlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfUFJPSklOSEVSSVRcbiYjNDM7TmV3IGZpbGVzIGNyZWF0ZWQgaW4gdGhpcyBkaXJlY3RvcnkgaW5oZXJpdCB0aGUgcHJvamVjdCBpZGVudGlmaWVyLlxuJiM0MzsuUkVcbiYjNDM7LlBcbiYjNDM7VGhlIGZvbGxvd2luZyBmbGFncyBhcmUgcmVhZC1vbmx5OlxuJiM0MzsuUlNcbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX1BSRUFMTE9DXG4mIzQzO0ZpbGUgaGFzIHByZWFsbG9jYXRlZCBleHRlbnRzLlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfSEFTQVRUUlxuJiM0MztGaWxlIGhhcyBleHRlbmRlZCBhdHRyaWJ1dGVzLlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfVkVSSVRZXG4mIzQzO0ZpbGUgaGFzIGZzLXZlcml0eSBlbmFibGVkLlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfQ0FTRUZPTERcbiYjNDM7VGhlIGZpbGVzeXN0ZW0gcGVyZm9ybXMgY2FzZS1pbnNlbnNpdGl2ZSBsb29rdXBzIChmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZVxuJiM0Mztjb21wYXJpc29ucyBpZ25vcmUgY2FzZSkuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19DQVNFTk9OUFJFU0VSVklOR1xuJiM0MztUaGUgZmlsZXN5c3RlbSBkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUgY2FzZSBvZiBmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZXMuXG4mIzQzOy5SRVxuJiM0MzsuUFxuJiM0MztOb3QgYWxsIGZpbGVzeXN0ZW1zIHN1cHBvcnQgYWxsIGZsYWdzLlxuJiM0MztTZXR0aW5nIHVuc3VwcG9ydGVkIGZsYWdzIG1heSByZXN1bHQgaW4gYW5cbiYjNDM7LkIgRUlOVkFMXG4mIzQzO29yXG4mIzQzOy5CIEVPUE5PVFNVUFBcbiYjNDM7ZXJyb3IuXG4mIzQzOy5TSCBWRVJTSU9OU1xuJiM0MzsuU1MgU3RydWN0dXJlIHNpemVcbiYjNDM7VGhlIHN0cnVjdHVyZSBzaXplIGlzIGRlZmluZWQgYnlcbiYjNDM7LkIgRklMRV9BVFRSX1NJWkVfVkVSKlxuJiM0Mzt3aGljaCBpcyBhbHNvIGEgdmVyc2lvbiBvZiB0aGUgc3RydWN0dXJlIGJlaW5nIHVzZWQuXG4mIzQzO1RoZVxuJiM0MzsuSSBzaXplXG4mIzQzO3BhcmFtZXRlciBwYXNzZWQgdG9cbiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoMilcbiYjNDM7YW5kXG4mIzQzOy5CUiBmaWxlX3NldGF0dHIgKDIpXG4mIzQzO2luZGljYXRlcyB0aGUgdmVyc2lvbiBvZlxuJiM0MzsuSSBzdHJ1Y3QgZmlsZV9hdHRyXFxmUC5cbiYjNDM7LlNTIEZJTEVfQVRUUl9TSVpFX1ZFUjBcbiYjNDM7U2l6ZSBpcyAyNCBieXRlcy5cbiYjNDM7LlNIIEhJU1RPUllcbiYjNDM7LlNTIExpbnV4IHY2LjE3XG4mIzQzO1RoaXMgc3RydWN0dXJlIGlzIGludHJvZHVjZWQuXG4mIzQzO1RoZVxuJiM0MzsuSSBzdHJ1Y3QgZmlsZV9hdHRyXG4mIzQzO3Byb3ZpZGVzIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSB0b1xuJiM0MzsuSSBzdHJ1Y3QgZnN4YXR0clxuJiM0Mzt1c2VkIGJ5IHRoZVxuJiM0MzsuQiBGU19JT0NfRlNHRVRYQVRUUlxuJiM0MzthbmRcbiYjNDM7LkIgRlNfSU9DX0ZTU0VUWEFUVFJcbiYjNDM7LkJSIGlvY3RsICgyKVxuJiM0MztvcGVyYXRpb25zLFxuJiM0MztidXQgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZSB0aHJvdWdoIHRoZVxuJiM0MzsuSSBzaXplXG4mIzQzO3BhcmFtZXRlciBvZiB0aGUgc3lzdGVtIGNhbGxzLlxuJiM0MzsuUFxuJiM0MztFeHRyYSBmaWVsZHMgbWF5IGJlIGFwcGVuZGVkIHRvIHRoZSBzdHJ1Y3R1cmUgaW4gZnV0dXJlIGtlcm5lbCB2ZXJzaW9ucy5cbiYjNDM7VGhlIGtlcm5lbCB3aWxsIGV4cGVjdCBuZXcgZmllbGRzIHRvIGJlIHplcm9zXG4mIzQzO2ZvciBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgc3RydWN0dXJlLlxuJiM0MztUaGVyZWZvcmUsIGEgdXNlclxuJiM0MzsuSSBtdXN0XG4mIzQzO3plcm8tZmlsbCB0aGUgc3RydWN0dXJlIG9uIGluaXRpYWxpemF0aW9uIHRvIGtlZXAgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyXG4mIzQzO2tlcm5lbHMuXG4mIzQzOy5TUyBMaW51eCB2Ny4yXG4mIzQzO1RoZSBGU19YRkxBR19DQVNFRk9MRCBhbmQgRlNfWEZMQUdfQ0FTRU5PTlBSRVNFUlZJTkcgYXJlIGludHJvZHVjZWQgdG8gZW5hYmxlXG4mIzQzO3VwcGVyIGxheWVycywgc3VjaCBhcyBORlNELCB0byByZXRyaWV2ZSBjYXNlIHNlbnNpdGl2aXR5IGluZm9ybWF0aW9uLlxuJiM0MzsuU0ggU0VFIEFMU09cbiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoMiksXG4mIzQzOy5CUiBmaWxlX3NldGF0dHIgKDIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIG9ubHkgYWRkcyB1c2VyLXNwYWNlIG1hbi1wYWdlIGRvY3VtZW50YXRpb24gZmlsZXMgdW5kZXIgdGhlIG1hbi8gZGlyZWN0b3J5IChtYW4vbWFuMi9maWxlX2dldGF0dHIuMiwgbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIsIGFuZCBtYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlKSBhbmQgZG9lcyBub3QgbW9kaWZ5IGFueSBleGVjdXRhYmxlIGtlcm5lbCBzb3VyY2UgY29kZSBvciBkYXRhIHN0cnVjdHVyZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjA0N2RhZDAxMDU3ODY4OWUyZTZlMDQ4YzdlM2NiYWU2YTZkOGNkZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gU2VwIDcgMTc6NDc6MzIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tYW4vbWFuMi9maWxlX2dldGF0dHIuMiBiL21hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmYxYWVjMmFkOGM0MjUKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9tYW4vbWFuMi9maWxlX2dldGF0dHIuMgpAQCAtMCwwICYjNDM7MSwyODYgQEAKJiM0MzsuXCYjMzQ7IENvcHlyaWdodCwgdGhlIGF1dGhvcnMgb2YgdGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0CiYjNDM7LlwmIzM0OwomIzQzOy5cJiMzNDsgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExpbnV4LW1hbi1wYWdlcy1jb3B5bGVmdAomIzQzOy5cJiMzNDsKJiM0MzsuVEggZmlsZV9nZXRhdHRyIDIgKGRhdGUpICYjMzQ7TGludXggbWFuLXBhZ2VzICh1bnJlbGVhc2VkKSYjMzQ7CiYjNDM7LlNIIE5BTUUKJiM0MztmaWxlX2dldGF0dHIgXC0gZ2V0IGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlcwomIzQzOy5TSCBTWU5PUFNJUwomIzQzOy5uZgomIzQzOy5CUiAmIzM0OyNpbmNsdWRlICZsdDtsaW51eC9mY250bC5oJmd0OyYjMzQ7ICYjMzQ7ICAgICAgLyogJiMzNDsgQVRfKiAmIzM0OyBjb25zdGFudHMgKi8mIzM0OwomIzQzOy5CUiAmIzM0OyNpbmNsdWRlICZsdDtsaW51eC9mcy5oJmd0OyYjMzQ7ICYjMzQ7ICAgICAgICAgLyogc3RydWN0ICYjMzQ7IGZpbGVfYXR0ciAmIzM0OyBhbmQgJiMzNDsgRlNfWEZMQUdfKiAmIzM0OyBjb25zdGFudHMgKi8mIzM0OwomIzQzOy5CUiAmIzM0OyNpbmNsdWRlICZsdDtzeXMvc3lzY2FsbC5oJmd0OyYjMzQ7ICYjMzQ7ICAgICAgLyogJiMzNDsgU1lTXyogJiMzNDsgY29uc3RhbnRzICovJiMzNDsKJiM0MzsuQiAjaW5jbHVkZSAmbHQ7dW5pc3RkLmgmZ3Q7CiYjNDM7LlAKJiM0MzsuQiBsb25nIHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwKJiM0MzsuQkkgJiMzNDsgICAgICAgICAgICAgICBpbnQgJiMzNDsgZGlyZmQgJiMzNDssIGNvbnN0IGNoYXIgKiYjMzQ7IHBhdGhuYW1lICwKJiM0MzsuQkkgJiMzNDsgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZV9hdHRyIComIzM0OyBmYXR0ciAmIzM0Oywgc2l6ZV90ICYjMzQ7IHNpemUgLAomIzQzOy5CSSAmIzM0OyAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAmIzM0OyBmbGFncyApOwomIzQzOy5maQomIzQzOy5QCiYjNDM7LklSIE5vdGUgOgomIzQzO2dsaWJjIHByb3ZpZGVzIG5vIHdyYXBwZXIgZm9yCiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoKSwKJiM0Mzt1c2UKJiM0MzsuQlIgc3lzY2FsbCAoMikKJiM0MztpbnN0ZWFkLgomIzQzOy5TSCBERVNDUklQVElPTgomIzQzO1RoZQomIzQzOy5CUiBmaWxlX2dldGF0dHIgKCkKJiM0MztzeXN0ZW0gY2FsbCByZXRyaWV2ZXMgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXMKJiM0Mztmcm9tIHRoZSBmaWxlIHNwZWNpZmllZCBieQomIzQzOy5JUiBwYXRobmFtZSAuCiYjNDM7LlAKJiM0MztUaGlzIHN5c3RlbSBjYWxsIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byB0aGUKJiM0MzsuQiBGU19JT0NfRlNHRVRYQVRUUgomIzQzOy5CUiBpb2N0bCAoMikKJiM0MztvcGVyYXRpb24sCiYjNDM7YnV0IHdpdGggdGhlIGFkdmFudGFnZSB0aGF0IHRoZSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gYmUgb3BlbmVkLgomIzQzO0J5IHVzaW5nIGEgcGF0aG5hbWUsCiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoKQomIzQzO2NhbiByZXRyaWV2ZSBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlcwomIzQzO2Zyb20gYWxsIGZpbGUgdHlwZXMsCiYjNDM7aW5jbHVkaW5nIHNwZWNpYWwgZmlsZXMgc3VjaCBhcyBGSUZPcywgc29ja2V0cywgYmxvY2sgZGV2aWNlcywgY2hhcmFjdGVyCiYjNDM7ZGV2aWNlcywgYW5kIHN5bWxpbmtzLCB3aGVyZSBvcGVuaW5nIHRhcmdldGVkIGlub2RlIG1heSBub3QgYmUgcG9zc2libGUuCiYjNDM7LlAKJiM0MztBcyB3aXRoCiYjNDM7LkJSIG9wZW5hdCAoMiksCiYjNDM7aWYKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIHJlbGF0aXZlLAomIzQzO3RoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeQomIzQzO3JlZmVycmVkIHRvIGJ5IHRoZSBmaWxlIGRlc2NyaXB0b3IKJiM0MzsuSVIgZGlyZmQgLgomIzQzO1RoZSBzcGVjaWFsIHZhbHVlCiYjNDM7LkIgQVRfRkRDV0QKJiM0Mztjb3VsZCBiZSB1c2VkIHRvIHJlZmVyIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IG9mIHRoZSBjYWxsaW5nIHByb2Nlc3MuCiYjNDM7SWYKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIGFic29sdXRlLAomIzQzO3RoZW4KJiM0MzsuSSBkaXJmZAomIzQzO2lzIGlnbm9yZWQuCiYjNDM7LlAKJiM0MztUaGUKJiM0MzsuSSBmYXR0cgomIzQzO2FyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBhCiYjNDM7LkkgZmlsZV9hdHRyCiYjNDM7c3RydWN0dXJlLgomIzQzO1RoaXMgc3RydWN0dXJlIHdpbGwgYmUgZmlsbGVkIHdpdGggZmlsZSBhdHRyaWJ1dGVzLgomIzQzO1RoaXMgc3RydWN0dXJlIGlzIGRlc2NyaWJlZCBpbgomIzQzOy5CUiBmaWxlX2F0dHIoMnR5cGUpIC4KJiM0MzsuUAomIzQzO1RoZQomIzQzOy5JIHNpemUKJiM0Mzthcmd1bWVudCBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5CiYjNDM7LklSIGZhdHRyIC4KJiM0MztUaGUgc2l6ZSBpbmRpY2F0ZXMgdmVyc2lvbiBvZiB0aGUgc3RydWN0dXJlIGluIHVzZSwgcmVmZXIgdG8KJiM0MzsuQiBmaWxlX2F0dHIoMnR5cGUpCiYjNDM7Zm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdmVyc2lvbmluZy4KJiM0MzsuUAomIzQzO1VzZXJzcGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIHplcm8taW5pdGlhbGl6ZQomIzQzOy5JIHN0cnVjdCBmaWxlX2F0dHIKJiM0MztiZWZvcmUgY2FsbGluZwomIzQzOy5CUiBmaWxlX2dldGF0dHIgKCkKJiM0Mzt0byBlbnN1cmUgdGhhdCBmaWVsZHMgbm90IGZpbGxlZCBpbiBieSBvbGRlciBrZXJuZWxzCiYjNDM7d2lsbCBoYXZlIHByZWRpY3RhYmxlIHZhbHVlcy4KJiM0MzsuUAomIzQzO1RoZQomIzQzOy5JIGZsYWdzCiYjNDM7YXJndW1lbnQgaXMgYSBiaXQgbWFzaywgYXZhaWxhYmxlIGZsYWdzIGFyZToKJiM0MzsuVFAKJiM0MzsuQiBBVF9FTVBUWV9QQVRICiYjNDM7SWYKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIGFuIGVtcHR5IHN0cmluZywKJiM0MztvcGVyYXRlIG9uIHRoZSBmaWxlIHJlZmVycmVkIHRvIGJ5CiYjNDM7LklSIGRpcmZkIC4KJiM0MztJbiB0aGlzIGNhc2UsCiYjNDM7LkkgZGlyZmQKJiM0MztjYW4gcmVmZXIgdG8gYW55IHR5cGUgb2YgZmlsZSwKJiM0Mztub3QganVzdCBhIGRpcmVjdG9yeS4KJiM0MztJZgomIzQzOy5JIGRpcmZkCiYjNDM7aXMKJiM0MzsuQlIgQVRfRkRDV0QgLAomIzQzO3RoZSBjYWxsIGZhaWxzIHdpdGggdGhlIGVycm9yCiYjNDM7LkJSIEVCQURGIC4KJiM0MzsuVFAKJiM0MzsuQiBBVF9TWU1MSU5LX05PRk9MTE9XCiYjNDM7SWYKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIGEgc3ltYm9saWMgbGluaywKJiM0MztkbyBub3QgZGVyZWZlcmVuY2UgaXQ7CiYjNDM7aW5zdGVhZCBnZXQgYXR0cmlidXRlcyBvZiB0aGUgc3ltYm9saWMgbGluayBpbm9kZSBpdHNlbGYuCiYjNDM7QnkgZGVmYXVsdCwgc3ltYm9saWMgbGlua3MgYXJlIGRlcmVmZXJlbmNlZC4KJiM0MzsuU0ggUkVUVVJOIFZBTFVFCiYjNDM7T24gc3VjY2VzcywKJiM0Mzt6ZXJvIGlzIHJldHVybmVkLgomIzQzO09uIGVycm9yLAomIzQzO1wtMSBpcyByZXR1cm5lZCwKJiM0MzthbmQKJiM0MzsuSSBlcnJubwomIzQzO2lzIHNldCB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuCiYjNDM7LlNIIEVSUk9SUwomIzQzOy5UUAomIzQzOy5CIEUyQklHCiYjNDM7Lkkgc2l6ZQomIzQzO2lzIHRvbyBiaWcgKGxhcmdlciB0aGFuCiYjNDM7LkJSIFBBR0VfU0laRSApLgomIzQzOy5UUAomIzQzOy5CIEVBQ0NFUwomIzQzO1NlYXJjaCBwZXJtaXNzaW9uIGlzIGRlbmllZCBmb3Igb25lIG9mIHRoZSBkaXJlY3RvcmllcwomIzQzO2luIHRoZSBwYXRoIHByZWZpeCBvZgomIzQzOy5JUiBwYXRobmFtZSAuCiYjNDM7LlRQCiYjNDM7LkIgRUJBREYKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIHJlbGF0aXZlIGJ1dAomIzQzOy5JIGRpcmZkCiYjNDM7aXMgbmVpdGhlcgomIzQzOy5CIEFUX0ZEQ1dECiYjNDM7bm9yIGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yLgomIzQzOy5UUAomIzQzOy5CIEVCQURGCiYjNDM7LkkgcGF0aG5hbWUKJiM0MztpcyBhbiBlbXB0eSBzdHJpbmcsCiYjNDM7LkIgQVRfRU1QVFlfUEFUSAomIzQzO3dhcyBzcGVjaWZpZWQsCiYjNDM7YnV0CiYjNDM7LkkgZGlyZmQKJiM0MztpcyBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvci4KJiM0MzsuVFAKJiM0MzsuQiBFRkFVTFQKJiM0MzsuSSBwYXRobmFtZQomIzQzO29yCiYjNDM7LkkgZmF0dHIKJiM0MztpcyBhbiBpbnZhbGlkIHBvaW50ZXIuCiYjNDM7LlRQCiYjNDM7LkIgRUlOVkFMCiYjNDM7SW52YWxpZCBmbGFnIHNwZWNpZmllZCBpbgomIzQzOy5JUiBmbGFncyAuCiYjNDM7LlRQCiYjNDM7LkIgRUlOVkFMCiYjNDM7Lkkgc2l6ZQomIzQzO2lzIHNtYWxsZXIgdGhhbgomIzQzOy5CUiBGSUxFX0FUVFJfU0laRV9WRVIwIC4KJiM0MzsuVFAKJiM0MzsuQiBFTE9PUAomIzQzO1RvbyBtYW55IHN5bWJvbGljIGxpbmtzIGVuY291bnRlcmVkIHdoaWxlIHJlc29sdmluZwomIzQzOy5JUiBwYXRobmFtZSAuCiYjNDM7LlRQCiYjNDM7LkIgRU5BTUVUT09MT05HCiYjNDM7LkkgcGF0aG5hbWUKJiM0MztpcyB0b28gbG9uZy4KJiM0MzsuVFAKJiM0MzsuQiBFTk9FTlQKJiM0MztBIGNvbXBvbmVudCBvZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7ZG9lcyBub3QgZXhpc3QsCiYjNDM7b3IKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIGFuIGVtcHR5IHN0cmluZyBhbmQKJiM0MzsuQiBBVF9FTVBUWV9QQVRICiYjNDM7d2FzIG5vdCBzcGVjaWZpZWQgaW4KJiM0MzsuSVIgZmxhZ3MgLgomIzQzOy5UUAomIzQzOy5CIEVOT01FTQomIzQzO0luc3VmZmljaWVudCBrZXJuZWwgbWVtb3J5IHdhcyBhdmFpbGFibGUuCiYjNDM7LlRQCiYjNDM7LkIgRU5PVERJUgomIzQzO0EgY29tcG9uZW50IG9mIHRoZSBwYXRoIHByZWZpeCBvZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgbm90IGEgZGlyZWN0b3J5IG9yLAomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgcmVsYXRpdmUgYW5kCiYjNDM7LkkgZGlyZmQKJiM0MztpcyBhIGZpbGUgZGVzY3JpcHRvciByZWZlcnJpbmcgdG8gYSBmaWxlIG90aGVyIHRoYW4gYSBkaXJlY3RvcnkuCiYjNDM7LlRQCiYjNDM7LkIgRU9QTk9UU1VQUAomIzQzO1RoZSBmaWxlc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgZ2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoaXMgdHlwZSBvZiBpbm9kZS4KJiM0MzsuU0ggSElTVE9SWQomIzQzOy5TUyBMaW51eCA2LjE3CiYjNDM7VGhpcyBzeXN0ZW0gY2FsbCBpcyBpbnRyb2R1Y2VkIGFzIGEgbW9yZSBmbGV4aWJsZSBhbHRlcm5hdGl2ZSB0byB0aGUKJiM0MztGU19JT0NfRlNHRVRYQVRUUgomIzQzOy5CUiBpb2N0bCAoMikKJiM0Mzt3aGljaCBjb3VsZCB3b3JrIG9uIGFueSB0eXBlIG9mIGZpbGVzLgomIzQzOy5TSCBOT1RFUwomIzQzO1RoaXMgc3lzdGVtIGNhbGwgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZS4KJiM0MztUaGUKJiM0MzsuSSBzaXplCiYjNDM7YXJndW1lbnQgYWxsb3dzIHVzZXJzcGFjZSBhcHBsaWNhdGlvbnMgdG8gaW5kaWNhdGUKJiM0Mzt3aGljaCB2ZXJzaW9uIG9mIHRoZQomIzQzOy5JIGZpbGVfYXR0cgomIzQzO3N0cnVjdHVyZSB0aGV5IGFyZSB1c2luZywKJiM0MztlbmFibGluZyB0aGUga2VybmVsIHRvIHN1cHBvcnQgYm90aCBvbGQgYW5kIG5ldyB2ZXJzaW9ucwomIzQzO29mIHRoZSBzdHJ1Y3R1cmUgc2ltdWx0YW5lb3VzbHkuCiYjNDM7LlAKJiM0MztJZgomIzQzOy5JIHNpemUKJiM0MztpcyBzbWFsbGVyIHRoYW4gdGhlIHN0cnVjdHVyZSBzaXplIHRoZSBrZXJuZWwgZXhwZWN0cywKJiM0Mztvbmx5IHRoZSBmaWVsZHMgdGhhdCBmaXQgd2l0aGluCiYjNDM7Lkkgc2l6ZQomIzQzO3dpbGwgYmUgZmlsbGVkIGluLgomIzQzO0lmCiYjNDM7Lkkgc2l6ZQomIzQzO2lzIGxhcmdlciB0aGFuIHRoZSBrZXJuZWwmIzM5O3Mgc3RydWN0dXJlIHNpemUsCiYjNDM7dGhlIGV4dHJhIGJ5dGVzIGFyZSB6ZXJvZWQuCiYjNDM7LlNIIEVYQU1QTEVTCiYjNDM7VGhlIHByb2dyYW0gYmVsb3cgZGVtb25zdHJhdGVzIHRoZSB1c2Ugb2YKJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgpCiYjNDM7dG8gcmV0cmlldmUgYW5kIGRpc3BsYXkgZmlsZSBhdHRyaWJ1dGVzLgomIzQzOy5QCiYjNDM7LmluICYjNDM7NG4KJiM0MzsuRVgKJiM0MzsjaW5jbHVkZSAmbHQ7ZmNudGwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZnMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7c3RkaW8uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7c3RkbGliLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N5cy9zeXNjYWxsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3VuaXN0ZC5oJmd0OwomIzQzOwomIzQzOyNpZm5kZWYgU1lTX2ZpbGVfZ2V0YXR0cgomIzQzOyNkZWZpbmUgU1lTX2ZpbGVfZ2V0YXR0ciA0NjcKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MztpbnQKJiM0MzttYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiYjNDM7ewomIzQzOyAgICBzdHJ1Y3QgZmlsZV9hdHRyIGZhID0geyAwIH07CiYjNDM7ICAgIGludCBkZmQ7CiYjNDM7ICAgIGxvbmcgcmV0OwomIzQzOwomIzQzOyAgICBpZiAoYXJnYyAhPSAyKSB7CiYjNDM7ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgJiMzNDtVc2FnZTogJXMgJmx0O2ZpbGVuYW1lJmd0O1xcbiYjMzQ7LCBhcmd2WzBdKTsKJiM0MzsgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKJiM0MzsgICAgfQomIzQzOwomIzQzOyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIEFUX0ZEQ1dELCBhcmd2WzFdLCAmYW1wO2ZhLCBzaXplb2YoZmEpLCAwKTsKJiM0MzsgICAgaWYgKHJldCA9PSBcLTEpIHsKJiM0MzsgICAgICAgIHBlcnJvcigmIzM0O2ZpbGVfZ2V0YXR0ciYjMzQ7KTsKJiM0MzsgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKJiM0MzsgICAgfQomIzQzOwomIzQzOyAgICBwcmludGYoJiMzNDtGaWxlIGF0dHJpYnV0ZXM6XFxuJiMzNDspOwomIzQzOyAgICBwcmludGYoJiMzNDsgIHhmbGFnczogICAgIDB4JWxseFxcbiYjMzQ7LCAodW5zaWduZWQgbG9uZyBsb25nKWZhLmZhX3hmbGFncyk7CiYjNDM7ICAgIHByaW50ZigmIzM0OyAgZXh0c2l6ZTogICAgJXVcXG4mIzM0OywgZmEuZmFfZXh0c2l6ZSk7CiYjNDM7ICAgIHByaW50ZigmIzM0OyAgbmV4dGVudHM6ICAgJXVcXG4mIzM0OywgZmEuZmFfbmV4dGVudHMpOwomIzQzOyAgICBwcmludGYoJiMzNDsgIHByb2ppZDogICAgICV1XFxuJiMzNDssIGZhLmZhX3Byb2ppZCk7CiYjNDM7ICAgIHByaW50ZigmIzM0OyAgY293ZXh0c2l6ZTogJXVcXG4mIzM0OywgZmEuZmFfY293ZXh0c2l6ZSk7CiYjNDM7CiYjNDM7ICAgIC8qCiYjNDM7ICAgICAqIFRyeSBzZXR0aW5nIE5PRFVNUCBmbGFnIHdpdGggY2hhdHRyICYjNDM7ZCAuL2ZvbyB0byBzZWUgdGhlIGRpZmZlcmVuY2UKJiM0MzsgICAgICovCiYjNDM7ICAgIGlmIChmYS5mYV94ZmxhZ3MgJmFtcDsgRlNfWEZMQUdfTk9EVU1QKQomIzQzOyAgICAgICAgcHJpbnRmKCYjMzQ7ICBOT0RVTVAgZmxhZyBpcyBzZXRcXG4mIzM0Oyk7CiYjNDM7CiYjNDM7ICAgIGV4aXQoRVhJVF9TVUNDRVNTKTsKJiM0Mzt9CiYjNDM7LkVFCiYjNDM7LmluCiYjNDM7LlNIIFNFRSBBTFNPCiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoMiksCiYjNDM7LkJSIGZpbGVfYXR0ciAoMnR5cGUpLAomIzQzOy5CUiBpb2N0bCAoMiksCiYjNDM7LkJSIGlvY3RsX2ZzICgyKSwKJiM0MzsuQlIgb3BlbmF0ICgyKQpkaWZmIC0tZ2l0IGEvbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIgYi9tYW4vbWFuMi9maWxlX3NldGF0dHIuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi41OTY3NTBkYzc5YzgxCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIKQEAgLTAsMCAmIzQzOzEsMzQwIEBACiYjNDM7LlwmIzM0OyBDb3B5cmlnaHQsIHRoZSBhdXRob3JzIG9mIHRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdAomIzQzOy5cJiMzNDsKJiM0MzsuXCYjMzQ7IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMaW51eC1tYW4tcGFnZXMtY29weWxlZnQKJiM0MzsuXCYjMzQ7CiYjNDM7LlRIIGZpbGVfc2V0YXR0ciAyIChkYXRlKSAmIzM0O0xpbnV4IG1hbi1wYWdlcyAodW5yZWxlYXNlZCkmIzM0OwomIzQzOy5TSCBOQU1FCiYjNDM7ZmlsZV9zZXRhdHRyIFwtIHNldCBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXMKJiM0MzsuU0ggU1lOT1BTSVMKJiM0MzsubmYKJiM0MzsuQlIgJiMzNDsjaW5jbHVkZSAmbHQ7bGludXgvZmNudGwuaCZndDsmIzM0OyAmIzM0OyAgICAgIC8qIERlZmluaXRpb24gb2YgJiMzNDsgQVRfKiAmIzM0OyBjb25zdGFudHMgKi8mIzM0OwomIzQzOy5CUiAmIzM0OyNpbmNsdWRlICZsdDtsaW51eC9mcy5oJmd0OyYjMzQ7ICYjMzQ7ICAgICAgICAgLyogRGVmaW5pdGlvbiBvZiAmIzM0OyBGSUxFX0FUVFJfKiBcCiYjNDM7JiMzNDsgYW5kICYjMzQ7IEZTX1hGTEFHXyogJiMzNDsgY29uc3RhbnRzICovJiMzNDsKJiM0MzsuQlIgJiMzNDsjaW5jbHVkZSAmbHQ7c3lzL3N5c2NhbGwuaCZndDsmIzM0OyAmIzM0OyAgICAgIC8qIERlZmluaXRpb24gb2YgJiMzNDsgU1lTXyogJiMzNDsgY29uc3RhbnRzICovJiMzNDsKJiM0MzsuQiAjaW5jbHVkZSAmbHQ7dW5pc3RkLmgmZ3Q7CiYjNDM7LlAKJiM0MzsuQiBsb25nIHN5c2NhbGwoU1lTX2ZpbGVfc2V0YXR0ciwKJiM0MzsuQkkgJiMzNDsgICAgICAgICAgICAgICBpbnQgJiMzNDsgZGlyZmQgJiMzNDssIGNvbnN0IGNoYXIgKiYjMzQ7IHBhdGhuYW1lICwKJiM0MzsuQkkgJiMzNDsgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZV9hdHRyIComIzM0OyBmYXR0ciAmIzM0Oywgc2l6ZV90ICYjMzQ7IHNpemUgLAomIzQzOy5CSSAmIzM0OyAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAmIzM0OyBmbGFncyApOwomIzQzOy5maQomIzQzOy5QCiYjNDM7LklSIE5vdGUgOgomIzQzO2dsaWJjIHByb3ZpZGVzIG5vIHdyYXBwZXIgZm9yCiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoKSwKJiM0MztuZWNlc3NpdGF0aW5nIHRoZSB1c2Ugb2YKJiM0MzsuQlIgc3lzY2FsbCAoMikuCiYjNDM7LlNIIERFU0NSSVBUSU9OCiYjNDM7VGhlCiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoKQomIzQzO3N5c3RlbSBjYWxsIHNldHMgZmlsZXN5c3RlbSBpbm9kZSBhdHRyaWJ1dGVzCiYjNDM7b24gdGhlIGZpbGUgc3BlY2lmaWVkIGJ5CiYjNDM7LklSIHBhdGhuYW1lIC4KJiM0MzsuUAomIzQzO1RoaXMgc3lzdGVtIGNhbGwgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHRoZQomIzQzOy5CIEZTX0lPQ19GU1NFVFhBVFRSCiYjNDM7LkJSIGlvY3RsICgyKQomIzQzO29wZXJhdGlvbiwKJiM0MztidXQgd2l0aCB0aGUgYWR2YW50YWdlIHRoYXQgdGhlIGZpbGUgZG9lcyBub3QgbmVlZCB0byBiZSBvcGVuZWQuCiYjNDM7QnkgdXNpbmcgYSBwYXRobmFtZSBpbnN0ZWFkIG9mIHJlcXVpcmluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciwKJiM0MzsuQlIgZmlsZV9zZXRhdHRyICgpCiYjNDM7Y2FuIG1hbmlwdWxhdGUgZmlsZXN5c3RlbSBpbm9kZSBhdHRyaWJ1dGVzCiYjNDM7b24gYWxsIGZpbGUgdHlwZXMsCiYjNDM7aW5jbHVkaW5nIHNwZWNpYWwgZmlsZXMgKEZJRk9zLCBzb2NrZXRzLCBibG9jayBkZXZpY2VzLCBjaGFyYWN0ZXIgZGV2aWNlcykKJiM0Mzt3aGVyZSBvcGVuaW5nIHRoZSBmaWxlIG1heSBoYXZlIHNpZGUgZWZmZWN0cyBvciBtYXkgbm90IGJlIHBvc3NpYmxlLgomIzQzO1dpdGgKJiM0MzsuQlIgaW9jdGwgKDIpLAomIzQzO2l0IGlzIG5vdCBhbHdheXMgcG9zc2libGUgdG8gb2J0YWluIGEgZmlsZSBkZXNjcmlwdG9yIHRoYXQgcmVmZXJzCiYjNDM7ZGlyZWN0bHkgdG8gdGhlIGZpbGVzeXN0ZW0gaW5vZGUgZm9yIHNwZWNpYWwgZmlsZXMuCiYjNDM7LlAKJiM0MztBcyB3aXRoCiYjNDM7LkJSIG9wZW5hdCAoMiksCiYjNDM7aWYKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIHJlbGF0aXZlLAomIzQzO3RoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeQomIzQzO3JlZmVycmVkIHRvIGJ5IHRoZSBmaWxlIGRlc2NyaXB0b3IKJiM0MzsuSSBkaXJmZAomIzQzOyhvciB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvZiB0aGUgY2FsbGluZyBwcm9jZXNzLAomIzQzO2lmCiYjNDM7LkkgZGlyZmQKJiM0MztpcyB0aGUgc3BlY2lhbCB2YWx1ZQomIzQzOy5CUiBBVF9GRENXRCApLgomIzQzO0lmCiYjNDM7LkkgcGF0aG5hbWUKJiM0MztpcyBhYnNvbHV0ZSwKJiM0Mzt0aGVuCiYjNDM7LkkgZGlyZmQKJiM0MztpcyBpZ25vcmVkLgomIzQzOy5QCiYjNDM7VGhlCiYjNDM7LkkgZmF0dHIKJiM0Mzthcmd1bWVudCBpcyBhIHBvaW50ZXIgdG8gYQomIzQzOy5JIGZpbGVfYXR0cgomIzQzO3N0cnVjdHVyZSwKJiM0Mzt3aGljaCBzcGVjaWZpZXMgdGhlIGF0dHJpYnV0ZXMgdG8gc2V0IG9uIHRoZSBmaWxlLgomIzQzO1RoaXMgc3RydWN0dXJlIGlzIGRlc2NyaWJlZCBpbgomIzQzOy5CUiBmaWxlX2F0dHIgKDJ0eXBlKS4KJiM0MzsuUAomIzQzO1RoZQomIzQzOy5JIHNpemUKJiM0Mzthcmd1bWVudCBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5CiYjNDM7LklSIGZhdHRyIC4KJiM0MztUaGUgc2l6ZSBpbmRpY2F0ZXMgdmVyc2lvbiBvZiB0aGUgc3RydWN0dXJlIGluIHVzZSwgcmVmZXIgdG8KJiM0MzsuQiBmaWxlX2F0dHIoMnR5cGUpCiYjNDM7Zm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdmVyc2lvbmluZy4KJiM0MzsuUAomIzQzO1VzZXItc3BhY2UgYXBwbGljYXRpb25zIHNob3VsZCB6ZXJvLWluaXRpYWxpemUKJiM0MzsuSSBzdHJ1Y3QgZmlsZV9hdHRyCiYjNDM7dG8gZW5zdXJlIHRoYXQgZnV0dXJlIGZpZWxkcyBhZGRlZCB0byB0aGUgc3RydWN0dXJlCiYjNDM7d2lsbCBiZSB0cmVhdGVkIGFzIG5vLW9wcyBpZiB0aGUgc3RydWN0dXJlIGRlZmluaXRpb24gaXMgdXBkYXRlZAomIzQzO2J1dCB0aGUgYXBwbGljYXRpb24gaXMgbm90LgomIzQzOy5QCiYjNDM7VGhlCiYjNDM7LkkgZmxhZ3MKJiM0Mzthcmd1bWVudCBpcyBhIGJpdCBtYXNrIHRoYXQgY2FuIGluY2x1ZGUgemVybyBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgomIzQzOy5UUAomIzQzOy5CIEFUX0VNUFRZX1BBVEgKJiM0MztJZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nLAomIzQzO29wZXJhdGUgb24gdGhlIGZpbGUgcmVmZXJyZWQgdG8gYnkKJiM0MzsuSSBkaXJmZAomIzQzOyh3aGljaCBtYXkgaGF2ZSBiZWVuIG9idGFpbmVkIHVzaW5nIHRoZQomIzQzOy5CUiBvcGVuICgyKQomIzQzOy5CIE9fUEFUSAomIzQzO2ZsYWcpLgomIzQzO0luIHRoaXMgY2FzZSwKJiM0MzsuSSBkaXJmZAomIzQzO2NhbiByZWZlciB0byBhbnkgdHlwZSBvZiBmaWxlLAomIzQzO25vdCBqdXN0IGEgZGlyZWN0b3J5LgomIzQzO0lmCiYjNDM7LkkgZGlyZmQKJiM0MztpcwomIzQzOy5CUiBBVF9GRENXRCAsCiYjNDM7dGhlIGNhbGwgZmFpbHMgd2l0aCB0aGUgZXJyb3IKJiM0MzsuQlIgRUJBREYgLgomIzQzOy5UUAomIzQzOy5CIEFUX1NZTUxJTktfTk9GT0xMT1cKJiM0MztJZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYSBzeW1ib2xpYyBsaW5rLAomIzQzO2RvIG5vdCBkZXJlZmVyZW5jZSBpdDoKJiM0MztpbnN0ZWFkIHNldCBhdHRyaWJ1dGVzIG9uIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZi4KJiM0MztCeSBkZWZhdWx0IChpLmUuLCBpZiB0aGlzIGZsYWcgaXMgbm90IHNwZWNpZmllZCksCiYjNDM7c3ltYm9saWMgbGlua3MgYXJlIGRlcmVmZXJlbmNlZC4KJiM0MzsuU0ggUkVUVVJOIFZBTFVFCiYjNDM7T24gc3VjY2VzcywKJiM0Mzt6ZXJvIGlzIHJldHVybmVkLgomIzQzO09uIGVycm9yLAomIzQzO1wtMSBpcyByZXR1cm5lZCwKJiM0MzthbmQKJiM0MzsuSSBlcnJubwomIzQzO2lzIHNldCB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuCiYjNDM7LlNIIEVSUk9SUwomIzQzOy5UUAomIzQzOy5CIEUyQklHCiYjNDM7Lkkgc2l6ZQomIzQzO2lzIGxhcmdlciB0aGFuCiYjNDM7LkJSIFBBR0VfU0laRSAuCiYjNDM7LlRQCiYjNDM7LkIgRTJCSUcKJiM0MzsuSSBzaXplCiYjNDM7aW5kaWNhdGVzIHRoZSB2ZXJzaW9uIHdoaWNoIGtlcm5lbCBkb2VzbiYjMzk7dCBzdXBwb3J0ICh0aGUgc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUKJiM0MztrZXJuZWwgZXhwZWN0cykgYW5kIG5ldyBmaWVsZHMgYXJlIG5vbi16ZXJvLgomIzQzOy5UUAomIzQzOy5CIEVBQ0NFUwomIzQzO1NlYXJjaCBwZXJtaXNzaW9uIGlzIGRlbmllZCBmb3Igb25lIG9mIHRoZSBkaXJlY3RvcmllcwomIzQzO2luIHRoZSBwYXRoIHByZWZpeCBvZgomIzQzOy5JUiBwYXRobmFtZSAuCiYjNDM7KFNlZSBhbHNvCiYjNDM7LkJSIHBhdGhfcmVzb2x1dGlvbiAoNykuKQomIzQzOy5UUAomIzQzOy5CIEVCQURGCiYjNDM7LkkgcGF0aG5hbWUKJiM0MztpcyByZWxhdGl2ZSBidXQKJiM0MzsuSSBkaXJmZAomIzQzO2lzIG5laXRoZXIKJiM0MzsuQiBBVF9GRENXRAomIzQzO25vciBhIHZhbGlkIGZpbGUgZGVzY3JpcHRvci4KJiM0MzsuVFAKJiM0MzsuQiBFQkFERgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nLAomIzQzOy5CIEFUX0VNUFRZX1BBVEgKJiM0Mzt3YXMgc3BlY2lmaWVkIGluCiYjNDM7LklSIGZsYWdzICwKJiM0MzthbmQKJiM0MzsuSSBkaXJmZAomIzQzO2lzIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLgomIzQzOy5UUAomIzQzOy5CIEVGQVVMVAomIzQzOy5JIHBhdGhuYW1lCiYjNDM7b3IKJiM0MzsuSSBmYXR0cgomIzQzO2lzIGFuIGludmFsaWQgcG9pbnRlci4KJiM0MzsuVFAKJiM0MzsuQiBFSU5WQUwKJiM0MztJbnZhbGlkIGZsYWcgc3BlY2lmaWVkIGluCiYjNDM7LklSIGZsYWdzIC4KJiM0MzsuVFAKJiM0MzsuQiBFSU5WQUwKJiM0MzsuSSBzaXplCiYjNDM7aXMgc21hbGxlciB0aGFuCiYjNDM7LkJSIEZJTEVfQVRUUl9TSVpFX1ZFUjAgLgomIzQzOy5UUAomIzQzOy5CIEVJTlZBTAomIzQzO0ludmFsaWQgY29tYmluYXRpb24gb2YgcGFyYW1ldGVycyBwcm92aWRlZCBpbgomIzQzOy5JIGZhdHRyCiYjNDM7Zm9yIHRoaXMgdHlwZSBvZiBmaWxlIG9yIGZpbGVzeXN0ZW0uCiYjNDM7LlRQCiYjNDM7LkIgRUxPT1AKJiM0MztUb28gbWFueSBzeW1ib2xpYyBsaW5rcyBlbmNvdW50ZXJlZCB3aGlsZSByZXNvbHZpbmcKJiM0MzsuSVIgcGF0aG5hbWUgLgomIzQzOy5UUAomIzQzOy5CIEVOQU1FVE9PTE9ORwomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgdG9vIGxvbmcuCiYjNDM7LlRQCiYjNDM7LkIgRU5PRU5UCiYjNDM7QSBjb21wb25lbnQgb2YKJiM0MzsuSSBwYXRobmFtZQomIzQzO2RvZXMgbm90IGV4aXN0LAomIzQzO29yCiYjNDM7LkkgcGF0aG5hbWUKJiM0MztpcyBhbiBlbXB0eSBzdHJpbmcgYW5kCiYjNDM7LkIgQVRfRU1QVFlfUEFUSAomIzQzO3dhcyBub3Qgc3BlY2lmaWVkIGluCiYjNDM7LklSIGZsYWdzIC4KJiM0MzsuVFAKJiM0MzsuQiBFTk9NRU0KJiM0MztJbnN1ZmZpY2llbnQga2VybmVsIG1lbW9yeSB3YXMgYXZhaWxhYmxlLgomIzQzOy5UUAomIzQzOy5CIEVOT1RESVIKJiM0MztBIGNvbXBvbmVudCBvZiB0aGUgcGF0aCBwcmVmaXggb2YKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIG5vdCBhIGRpcmVjdG9yeSBvciwKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIHJlbGF0aXZlIGFuZAomIzQzOy5JIGRpcmZkCiYjNDM7aXMgYSBmaWxlIGRlc2NyaXB0b3IgcmVmZXJyaW5nIHRvIGEgZmlsZSBvdGhlciB0aGFuIGEgZGlyZWN0b3J5LgomIzQzOy5UUAomIzQzOy5CIEVPUE5PVFNVUFAKJiM0MztUaGUgZmlsZXN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IHNldHRpbmcgYXR0cmlidXRlcyBvbiB0aGlzIHR5cGUgb2YgaW5vZGUuCiYjNDM7LlRQCiYjNDM7LkIgRVBFUk0KJiM0MztUaGUgY2FsbGVyIGRvZXMgbm90IGhhdmUgdGhlIG5lY2Vzc2FyeSBwZXJtaXNzaW9ucwomIzQzO3RvIGNoYW5nZSB0aGUgZmlsZSBhdHRyaWJ1dGVzLgomIzQzOy5UUAomIzQzOy5CIEVST0ZTCiYjNDM7VGhlIGZpbGUgaXMgb24gYSByZWFkLW9ubHkgZmlsZXN5c3RlbS4KJiM0MzsuU0ggSElTVE9SWQomIzQzOy5TUyBMaW51eCA2LjE3CiYjNDM7VGhpcyBzeXN0ZW0gY2FsbCBpcyBpbnRyb2R1Y2VkIGFzIGEgbW9yZSBmbGV4aWJsZSBhbHRlcm5hdGl2ZSB0byB0aGUKJiM0MztGU19JT0NfRlNTRVRYQVRUUgomIzQzOy5CUiBpb2N0bCAoMikKJiM0Mzt3aGljaCBjb3VsZCB3b3JrIG9uIGFueSB0eXBlIG9mIGZpbGVzLgomIzQzOy5TSCBOT1RFUwomIzQzO1RoaXMgc3lzdGVtIGNhbGwgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZS4KJiM0MztUaGUKJiM0MzsuSSBzaXplCiYjNDM7YXJndW1lbnQgYWxsb3dzIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIHRvIGluZGljYXRlCiYjNDM7d2hpY2ggdmVyc2lvbiBvZiB0aGUKJiM0MzsuSSBmaWxlX2F0dHIKJiM0MztzdHJ1Y3R1cmUgdGhleSBhcmUgdXNpbmcsCiYjNDM7ZW5hYmxpbmcgdGhlIGtlcm5lbCB0byBzdXBwb3J0IGJvdGggb2xkIGFuZCBuZXcgdmVyc2lvbnMKJiM0MztvZiB0aGUgc3RydWN0dXJlIHNpbXVsdGFuZW91c2x5LgomIzQzOy5QCiYjNDM7SWYKJiM0MzsuSSBzaXplCiYjNDM7aXMgc21hbGxlciB0aGFuIHRoZSBzdHJ1Y3R1cmUgc2l6ZSB0aGUga2VybmVsIGV4cGVjdHMsCiYjNDM7dGhlIGtlcm5lbCB0cmVhdHMgdGhlIG1pc3NpbmcgZmllbGRzIGFzIGhhdmluZyB6ZXJvIHZhbHVlcwomIzQzOyh3aGljaCBpcyBhIG5vLW9wKS4KJiM0MztJZgomIzQzOy5JIHNpemUKJiM0MztpcyBsYXJnZXIgdGhhbiBleHBlY3RlZCwKJiM0Mzt0aGUga2VybmVsIGNoZWNrcyB0aGF0IGFsbCB1bmtub3duICh0byB0aGUga2VybmVsKSBmaWVsZHMgYXJlIHplcm87CiYjNDM7aWYgbm90LAomIzQzO3RoZSBjYWxsIGZhaWxzIHdpdGgKJiM0MzsuQlIgRTJCSUcgLgomIzQzOy5TSCBFWEFNUExFUwomIzQzO1RoZSBwcm9ncmFtIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mCiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoKQomIzQzO3RvIHNldCB0aGUKJiM0MzsuQiBGU19YRkxBR19OT0RVTVAKJiM0MztmbGFnIG9uIGEgZmlsZS4KJiM0MzsuUAomIzQzOy5pbiAmIzQzOzRuCiYjNDM7LkVYCiYjNDM7I2luY2x1ZGUgJmx0O2ZjbnRsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2ZjbnRsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2ZzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N0ZGlvLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N0ZGxpYi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtzdHJpbmcuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7c3lzL3N5c2NhbGwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7dW5pc3RkLmgmZ3Q7CiYjNDM7CiYjNDM7I2lmbmRlZiBTWVNfZmlsZV9nZXRhdHRyCiYjNDM7I2RlZmluZSBTWVNfZmlsZV9nZXRhdHRyIDQ2NwomIzQzOyNlbmRpZgomIzQzOwomIzQzOyNpZm5kZWYgU1lTX2ZpbGVfc2V0YXR0cgomIzQzOyNkZWZpbmUgU1lTX2ZpbGVfc2V0YXR0ciA0NjgKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MztpbnQKJiM0MzttYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiYjNDM7ewomIzQzOyAgICBzdHJ1Y3QgZmlsZV9hdHRyIGZhID0geyAwIH07CiYjNDM7ICAgIGludCBkZmQ7CiYjNDM7ICAgIGxvbmcgcmV0OwomIzQzOwomIzQzOyAgICBpZiAoYXJnYyAhPSAyKSB7CiYjNDM7ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgJiMzNDtVc2FnZTogJXMgJmx0O2ZpbGVuYW1lJmd0O1xcbiYjMzQ7LCBhcmd2WzBdKTsKJiM0MzsgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKJiM0MzsgICAgfQomIzQzOwomIzQzOyAgICBkZmQgPSBvcGVuKGFyZ3ZbMV0sIE9fUkRPTkxZKTsKJiM0MzsgICAgaWYgKGRmZCA9PSBcLTEpIHsKJiM0MzsgICAgICAgIHBlcnJvcigmIzM0O29wZW4mIzM0Oyk7CiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiYjNDM7ICAgIH0KJiM0MzsKJiM0MzsgICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBkZmQsICYjMzQ7JiMzNDssICZhbXA7ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpOwomIzQzOyAgICBpZiAocmV0ID09IFwtMSkgewomIzQzOyAgICAgICAgcGVycm9yKCYjMzQ7ZmlsZV9nZXRhdHRyJiMzNDspOwomIzQzOyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwomIzQzOyAgICB9CiYjNDM7CiYjNDM7ICAgIHByaW50ZigmIzM0O0N1cnJlbnQgZmxhZ3M6IDB4JWxseFxcbiYjMzQ7LCAodW5zaWduZWQgbG9uZyBsb25nKWZhLmZhX3hmbGFncyk7CiYjNDM7CiYjNDM7ICAgIGZhLmZhX3hmbGFncyB8PSBGU19YRkxBR19OT0RVTVA7CiYjNDM7CiYjNDM7ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfc2V0YXR0ciwgZGZkLCAmIzM0OyYjMzQ7LCAmYW1wO2ZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTsKJiM0MzsgICAgaWYgKHJldCA9PSBcLTEpIHsKJiM0MzsgICAgICAgIHBlcnJvcigmIzM0O2ZpbGVfc2V0YXR0ciYjMzQ7KTsKJiM0MzsgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKJiM0MzsgICAgfQomIzQzOwomIzQzOyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIGRmZCwgJiMzNDsmIzM0OywgJmFtcDtmYSwgc2l6ZW9mKGZhKSwgQVRfRU1QVFlfUEFUSCk7CiYjNDM7ICAgIGlmIChyZXQgPT0gXC0xKSB7CiYjNDM7ICAgICAgICBwZXJyb3IoJiMzNDtmaWxlX2dldGF0dHImIzM0Oyk7CiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiYjNDM7ICAgIH0KJiM0MzsKJiM0MzsgICAgaWYgKGZhLmZhX3hmbGFncyAmYW1wOyBGU19YRkxBR19OT0RVTVApCiYjNDM7ICAgICAgICBwcmludGYoJiMzNDtmbGFncyAweCVsbHggKE5PRFVNUCBmbGFnIGlzIHNldClcXG4mIzM0OywKJiM0MzsgICAgICAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWZhLmZhX3hmbGFncyk7CiYjNDM7CiYjNDM7ICAgIGV4aXQoRVhJVF9TVUNDRVNTKTsKJiM0Mzt9CiYjNDM7LkVFCiYjNDM7LmluCiYjNDM7LlNIIFNFRSBBTFNPCiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoMiksCiYjNDM7LkJSIGlvY3RsICgyKSwKJiM0MzsuQlIgaW9jdGxfZnMgKDIpLAomIzQzOy5CUiBvcGVuYXQgKDIpLAomIzQzOy5CUiBmaWxlX2F0dHIgKDJ0eXBlKSwKJiM0MzsuQlIgcGF0aF9yZXNvbHV0aW9uICg3KQpkaWZmIC0tZ2l0IGEvbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSBiL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uZmQ0MjZjMTlmNWYwYgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUKQEAgLTAsMCAmIzQzOzEsMTg3IEBACiYjNDM7LlwmIzM0OyBDb3B5cmlnaHQsIHRoZSBhdXRob3JzIG9mIHRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdAomIzQzOy5cJiMzNDsKJiM0MzsuXCYjMzQ7IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMaW51eC1tYW4tcGFnZXMtY29weWxlZnQKJiM0MzsuXCYjMzQ7CiYjNDM7LlRIIGZpbGVfYXR0ciAydHlwZSAoZGF0ZSkgJiMzNDtMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpJiMzNDsKJiM0MzsuU0ggTkFNRQomIzQzO2ZpbGVfYXR0ciBcLSBkZXNjcmliZSBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlcyB0byBnZXQgb3Igc2V0CiYjNDM7LlNIIFNZTk9QU0lTCiYjNDM7LkVYCiYjNDM7LkIgI2luY2x1ZGUgJmx0O2xpbnV4L2ZzLmgmZ3Q7CiYjNDM7LlAKJiM0MzsuQiBzdHJ1Y3QgZmlsZV9hdHRyIHsKJiM0MzsuQlIgJiMzNDsgICAgdTY0ICBmYV94ZmxhZ3M7JiMzNDsgJiMzNDsgICAgIC8qIEV4dGVuZGVkIGZsYWdzICovJiMzNDsKJiM0MzsuQlIgJiMzNDsgICAgdTMyICBmYV9leHRzaXplOyYjMzQ7ICYjMzQ7ICAgIC8qIEV4dGVudCBzaXplIGhpbnQgKi8mIzM0OwomIzQzOy5CUiAmIzM0OyAgICB1MzIgIGZhX25leHRlbnRzOyYjMzQ7ICYjMzQ7ICAgLyogTnVtYmVyIG9mIGV4dGVudHMgKHJlYWQtb25seSkgKi8mIzM0OwomIzQzOy5CUiAmIzM0OyAgICB1MzIgIGZhX3Byb2ppZDsmIzM0OyAmIzM0OyAgICAgLyogUHJvamVjdCBpZGVudGlmaWVyICovJiMzNDsKJiM0MzsuQlIgJiMzNDsgICAgdTMyICBmYV9jb3dleHRzaXplOyYjMzQ7ICYjMzQ7IC8qIENvVyBleHRlbnQgc2l6ZSBoaW50ICovJiMzNDsKJiM0MzsuQiB9OwomIzQzOy5FRQomIzQzOy5TSCBERVNDUklQVElPTgomIzQzO0Rlc2NyaWJlcyBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlcwomIzQzO2ZvciB1c2Ugd2l0aCB0aGUKJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgyKQomIzQzO2FuZAomIzQzOy5CUiBmaWxlX3NldGF0dHIgKDIpCiYjNDM7c3lzdGVtIGNhbGxzLgomIzQzOy5QCiYjNDM7VGhlIGZpZWxkcyBhcmUgYXMgZm9sbG93czoKJiM0MzsuVFAKJiM0MzsuSSBmYV94ZmxhZ3MKJiM0MztUaGlzIGZpZWxkIGNvbnRhaW5zIGZpbGUgYXR0cmlidXRlIGZsYWdzLgomIzQzO0l0IGlzIGEgYml0IG1hc2sgY29uc2lzdGluZyBvZiB6ZXJvIG9yIG1vcmUgb2YgdGhlCiYjNDM7LkIgRlNfWEZMQUdfKgomIzQzO2ZsYWdzLgomIzQzO1JlZmVyIHRvIHRoZSBzZWN0aW9uCiYjNDM7LkIgRkxBR1MKJiM0MztiZWxvdyBmb3IgYSBsaXN0IG9mIGFsbCBmbGFncy4KJiM0MzsuVFAKJiM0MzsuSSBmYV9leHRzaXplCiYjNDM7RXh0ZW50IHNpemUgYWxsb2NhdG9yIGhpbnQgaW4gYnl0ZXMuCiYjNDM7VGhpcyB2YWx1ZSBzdWdnZXN0cyBhIHByZWZlcnJlZCBleHRlbnQgc2l6ZQomIzQzO2ZvciBuZXcgYWxsb2NhdGlvbnMgdG8gdGhpcyBmaWxlLgomIzQzOy5UUAomIzQzOy5JIGZhX25leHRlbnRzCiYjNDM7TnVtYmVyIG9mIGRhdGEgZXh0ZW50cyBpbiB0aGUgZmlsZSAocmVhZC1vbmx5KS4KJiM0MztUaGlzIGZpZWxkIGlzIGZpbGxlZCBpbiBieQomIzQzOy5CUiBmaWxlX2dldGF0dHIgKDIpCiYjNDM7YW5kIGlzIGlnbm9yZWQgYnkKJiM0MzsuQlIgZmlsZV9zZXRhdHRyICgyKS4KJiM0MzsuVFAKJiM0MzsuSSBmYV9wcm9qaWQKJiM0MztQcm9qZWN0IGlkZW50aWZpZXIuCiYjNDM7VXNlZCBieSBxdW90YSBzeXN0ZW1zIHRvIGdyb3VwIHJlbGF0ZWQgZmlsZXMuCiYjNDM7LlRQCiYjNDM7LkkgZmFfY293ZXh0c2l6ZQomIzQzO0NvcHktb24tV3JpdGUgKENvVykgZXh0ZW50IHNpemUgaGludCBpbiBieXRlcy4KJiM0MztUaGlzIHZhbHVlIHN1Z2dlc3RzIGEgcHJlZmVycmVkIGV4dGVudCBzaXplCiYjNDM7Zm9yIENvVyBvcGVyYXRpb25zLgomIzQzOy5TSCBGTEFHUwomIzQzO0ZsYWdzIGNhbiBiZToKJiM0MzsuUlMKJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19SRUFMVElNRQomIzQzO0RhdGEgaXMgc3RvcmVkIGluIGEgcmVhbHRpbWUgdm9sdW1lLgomIzQzOy5UUAomIzQzOy5CIEZTX1hGTEFHX0lNTVVUQUJMRQomIzQzO0ZpbGUgY2Fubm90IGJlIG1vZGlmaWVkLgomIzQzOy5UUAomIzQzOy5CIEZTX1hGTEFHX0FQUEVORAomIzQzO0FsbCB3cml0ZXMgbXVzdCBhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19TWU5DCiYjNDM7QWxsIHdyaXRlcyBhcmUgc3luY2hyb25vdXMuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfTk9BVElNRQomIzQzO0RvIG5vdCB1cGRhdGUgZmlsZSBhY2Nlc3MgdGltZSBvbiByZWFkcy4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19OT0RVTVAKJiM0MztEbyBub3QgaW5jbHVkZSBmaWxlIGluIGJhY2t1cHMuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfREFYCiYjNDM7VXNlIERpcmVjdCBBY2Nlc3MgKERBWCkgZm9yIEkvTyBvcGVyYXRpb25zLgomIzQzOy5UUAomIzQzOy5CIEZTX1hGTEFHX05PREVGUkFHCiYjNDM7RXhjbHVkZSB0aGlzIGZpbGUgZnJvbSBkZWZyYWdtZW50YXRpb24gb3BlcmF0aW9ucy4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19GSUxFU1RSRUFNCiYjNDM7VXNlIGZpbGVzdHJlYW0gYWxsb2NhdG9yIGZvciB0aGlzIGZpbGUuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfRVhUU0laRQomIzQzO1VzZSB0aGUgZXh0ZW50IHNpemUgaGludCBmcm9tIHRoZQomIzQzOy5JIGZhX2V4dHNpemUKJiM0MztmaWVsZC4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19DT1dFWFRTSVpFCiYjNDM7VXNlIHRoZSBDb1cgZXh0ZW50IHNpemUgaGludCBmcm9tIHRoZQomIzQzOy5JIGZhX2Nvd2V4dHNpemUKJiM0MztmaWVsZC4KJiM0MzsuUkUKJiM0MzsuUAomIzQzO0RpcmVjdG9yeSBvbmx5IGZsYWdzOgomIzQzOy5SUwomIzQzOy5UUAomIzQzOy5CIEZTX1hGTEFHX1JUSU5IRVJJVAomIzQzO05ldyBmaWxlcyBjcmVhdGVkIGluIHRoaXMgZGlyZWN0b3J5IGluaGVyaXQgdGhlIHJlYWx0aW1lIGZsYWcuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfTk9TWU1MSU5LUwomIzQzO0Rpc2FsbG93IGNyZWF0aW9uIG9mIHN5bWJvbGljIGxpbmtzIGluIHRoaXMgZGlyZWN0b3J5LgomIzQzOy5UUAomIzQzOy5CIEZTX1hGTEFHX0VYVFNaSU5IRVJJVAomIzQzO05ldyBmaWxlcyBjcmVhdGVkIGluIHRoaXMgZGlyZWN0b3J5IGluaGVyaXQgdGhlIGV4dGVudCBzaXplIGhpbnQuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfUFJPSklOSEVSSVQKJiM0MztOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSBwcm9qZWN0IGlkZW50aWZpZXIuCiYjNDM7LlJFCiYjNDM7LlAKJiM0MztUaGUgZm9sbG93aW5nIGZsYWdzIGFyZSByZWFkLW9ubHk6CiYjNDM7LlJTCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfUFJFQUxMT0MKJiM0MztGaWxlIGhhcyBwcmVhbGxvY2F0ZWQgZXh0ZW50cy4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19IQVNBVFRSCiYjNDM7RmlsZSBoYXMgZXh0ZW5kZWQgYXR0cmlidXRlcy4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19WRVJJVFkKJiM0MztGaWxlIGhhcyBmcy12ZXJpdHkgZW5hYmxlZC4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19DQVNFRk9MRAomIzQzO1RoZSBmaWxlc3lzdGVtIHBlcmZvcm1zIGNhc2UtaW5zZW5zaXRpdmUgbG9va3VwcyAoZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWUKJiM0Mztjb21wYXJpc29ucyBpZ25vcmUgY2FzZSkuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfQ0FTRU5PTlBSRVNFUlZJTkcKJiM0MztUaGUgZmlsZXN5c3RlbSBkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUgY2FzZSBvZiBmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZXMuCiYjNDM7LlJFCiYjNDM7LlAKJiM0MztOb3QgYWxsIGZpbGVzeXN0ZW1zIHN1cHBvcnQgYWxsIGZsYWdzLgomIzQzO1NldHRpbmcgdW5zdXBwb3J0ZWQgZmxhZ3MgbWF5IHJlc3VsdCBpbiBhbgomIzQzOy5CIEVJTlZBTAomIzQzO29yCiYjNDM7LkIgRU9QTk9UU1VQUAomIzQzO2Vycm9yLgomIzQzOy5TSCBWRVJTSU9OUwomIzQzOy5TUyBTdHJ1Y3R1cmUgc2l6ZQomIzQzO1RoZSBzdHJ1Y3R1cmUgc2l6ZSBpcyBkZWZpbmVkIGJ5CiYjNDM7LkIgRklMRV9BVFRSX1NJWkVfVkVSKgomIzQzO3doaWNoIGlzIGFsc28gYSB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgYmVpbmcgdXNlZC4KJiM0MztUaGUKJiM0MzsuSSBzaXplCiYjNDM7cGFyYW1ldGVyIHBhc3NlZCB0bwomIzQzOy5CUiBmaWxlX2dldGF0dHIgKDIpCiYjNDM7YW5kCiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoMikKJiM0MztpbmRpY2F0ZXMgdGhlIHZlcnNpb24gb2YKJiM0MzsuSSBzdHJ1Y3QgZmlsZV9hdHRyXGZQLgomIzQzOy5TUyBGSUxFX0FUVFJfU0laRV9WRVIwCiYjNDM7U2l6ZSBpcyAyNCBieXRlcy4KJiM0MzsuU0ggSElTVE9SWQomIzQzOy5TUyBMaW51eCB2Ni4xNwomIzQzO1RoaXMgc3RydWN0dXJlIGlzIGludHJvZHVjZWQuCiYjNDM7VGhlCiYjNDM7Lkkgc3RydWN0IGZpbGVfYXR0cgomIzQzO3Byb3ZpZGVzIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSB0bwomIzQzOy5JIHN0cnVjdCBmc3hhdHRyCiYjNDM7dXNlZCBieSB0aGUKJiM0MzsuQiBGU19JT0NfRlNHRVRYQVRUUgomIzQzO2FuZAomIzQzOy5CIEZTX0lPQ19GU1NFVFhBVFRSCiYjNDM7LkJSIGlvY3RsICgyKQomIzQzO29wZXJhdGlvbnMsCiYjNDM7YnV0IGlzIGRlc2lnbmVkIHRvIGJlIGV4dGVuc2libGUgdGhyb3VnaCB0aGUKJiM0MzsuSSBzaXplCiYjNDM7cGFyYW1ldGVyIG9mIHRoZSBzeXN0ZW0gY2FsbHMuCiYjNDM7LlAKJiM0MztFeHRyYSBmaWVsZHMgbWF5IGJlIGFwcGVuZGVkIHRvIHRoZSBzdHJ1Y3R1cmUgaW4gZnV0dXJlIGtlcm5lbCB2ZXJzaW9ucy4KJiM0MztUaGUga2VybmVsIHdpbGwgZXhwZWN0IG5ldyBmaWVsZHMgdG8gYmUgemVyb3MKJiM0Mztmb3Igb2xkZXIgdmVyc2lvbnMgb2YgdGhlIHN0cnVjdHVyZS4KJiM0MztUaGVyZWZvcmUsIGEgdXNlcgomIzQzOy5JIG11c3QKJiM0Mzt6ZXJvLWZpbGwgdGhlIHN0cnVjdHVyZSBvbiBpbml0aWFsaXphdGlvbiB0byBrZWVwIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlcgomIzQzO2tlcm5lbHMuCiYjNDM7LlNTIExpbnV4IHY3LjIKJiM0MztUaGUgRlNfWEZMQUdfQ0FTRUZPTEQgYW5kIEZTX1hGTEFHX0NBU0VOT05QUkVTRVJWSU5HIGFyZSBpbnRyb2R1Y2VkIHRvIGVuYWJsZQomIzQzO3VwcGVyIGxheWVycywgc3VjaCBhcyBORlNELCB0byByZXRyaWV2ZSBjYXNlIHNlbnNpdGl2aXR5IGluZm9ybWF0aW9uLgomIzQzOy5TSCBTRUUgQUxTTwomIzQzOy5CUiBmaWxlX2dldGF0dHIgKDIpLAomIzQzOy5CUiBmaWxlX3NldGF0dHIgKDIpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwODcKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFRoaXMgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgYmFzZWQgb24gdGhpcyBkaWZmIGlzIHRoYXQgd2UmIzM5O3ZlIGdvdCBhIGRvY3VtZW50YXRpb24gdXBkYXRlLCBzcGVjaWZpY2FsbHkgbmV3IG1hbiBwYWdlcy4gSSBzZWUgdGhlIGFkZGl0aW9uIG9mIGBtYW4vbWFuMi9maWxlX2dldGF0dHIuMmAsIGBtYW4vbWFuMi9maWxlX3NldGF0dHIuMmAsIGFuZCBgbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZWAuIEludGVyZXN0aW5nLgoKQnV0IEkgbmVlZCB0byBiZSAqc3VyZSogdGhpcyBpcyBqdXN0IGRvY3VtZW50YXRpb24uIE15IGd1dCBzYXlzIGl0IHByb2JhYmx5IGlzLCBidXQgSSBjYW4mIzM5O3QgYmUgY29tcGxhY2VudC4gSSBuZWVkIHRvIHF1aWNrbHkgYW5kIGNvbXByZWhlbnNpdmVseSBjb25maXJtIHRoYXQgdGhlc2UgYXJlIHRoZSBvbmx5IGNoYW5nZXMgcmVsYXRlZCB0byBmaWxlIGF0dHJpYnV0ZXMuIFNvLCBiZWZvcmUgSSBzaWduIG9mZiBvbiB0aGlzLCBJJiMzOTttIGdvaW5nIHRvIHJ1biBhIHF1aWNrIGNoZWNrLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBgZ2l0YCB0byBsb29rIGF0IHRoZSBjb21taXQsIG9yIHBlcmhhcHMganVtcCBvdmVyIHRvIGEgY29kZXNlYXJjaC9ncmVwcGVyIHRvIHNlYXJjaCB0aGUgZW50aXJlIGNvZGViYXNlLiBJJiMzOTttIGxvb2tpbmcgZm9yIGFueSBvdGhlciBtb2RpZmljYXRpb25zIHJlbGF0ZWQgdG8gZmlsZSBhdHRyaWJ1dGUgaGFuZGxpbmcgb3IgYW55IGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGhhdmUgYmVlbiBpbXBhY3RlZC4gSSBuZWVkIGEgY2xlYW4gYmlsbCBvZiBoZWFsdGggYmVmb3JlIEkgbW92ZSBvbi4gTm8gc3VycHJpc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZpbGVfZ2V0YXR0ciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2ZzdmVyaXR5LnJzdD0zNTA9cGFyYW1ldGVycy4gU2VlIEZTX0lPQ19FTkFCTEVfVkVSSVRZLlxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzUxLVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3Q6MzUyOmZpbGVfZ2V0YXR0clxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzUzLS0tLS0tLS0tLS0tLVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzU0LVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3Q6MzU1OlNpbmNlIExpbnV4IHY3LjAsIHRoZSBmaWxlX2dldGF0dHIoKSBzeXNjYWxsIHNldHMgRlNfWEZMQUdfVkVSSVRZICgweDAwMDIwMDAwKVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzU2LWluIHRoZSByZXR1cm5lZCBmbGFncyB3aGVuIHRoZSBmaWxlIGhhcyB2ZXJpdHkgZW5hYmxlZC4gTm90ZSB0aGF0IHRoaXMgYXR0cmlidXRlXG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTA5LTU3N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTEwOjU3OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL2FscGhhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01MTEtNTc5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC00ODQtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibDo0ODU6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsLTQ4Ni00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtNDgxLTQ2N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibDo0ODI6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtNDgzLTQ2OVx0Y29tbW9uXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NjktNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ3MDo0NjhcdGNvbW1vblx0ZmlsZV9nZXRhdHRyXHRcdFx0c3lzX2ZpbGVfZ2V0YXR0clxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NzEtNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3NS00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDc2OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3Ny00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsLTQwOC00NjdcdG4zMlx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsOjQwOTo0NjhcdG4zMlx0ZmlsZV9nZXRhdHRyXHRcdFx0c3lzX2ZpbGVfZ2V0YXR0clxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtNDEwLTQ2OVx0bjMyXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzg0LTQ2N1x0bjY0XHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6Mzg1OjQ2OFx0bjY0XHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zODYtNDY5XHRuNjRcdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC00NTctNDY3XHRvMzJcdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibDo0NTg6NDY4XHRvMzJcdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9vMzIudGJsLTQ1OS00NjlcdG8zMlx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NjgtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDY5OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDcwLTQ2OVx0Y29tbW9uXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01NjAtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjU2MTo0NjhcdGNvbW1vblx0ZmlsZV9nZXRhdHRyXHRcdFx0c3lzX2ZpbGVfZ2V0YXR0clxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01NjItNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5Ni00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6Mzk3OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5OC00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3My00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ3NDo0NjhcdGNvbW1vblx0ZmlsZV9nZXRhdHRyXHRcdFx0c3lzX2ZpbGVfZ2V0YXR0clxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDc1LTQ2OVx0Y29tbW9uXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTE1LTQ2N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTE2OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01MTctNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NzUtNDY3XHRpMzg2XHRvcGVuX3RyZWVfYXR0clx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjQ3Njo0NjhcdGkzODZcdGZpbGVfZ2V0YXR0clx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NzctNDY5XHRpMzg2XHRmaWxlX3NldGF0dHJcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTM5NC00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibDozOTU6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibC0zOTYtNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ0MC00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NDE6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NDItNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5mcy9leHQ0L2V4dDQuaD0zMTg4PWV4dGVybiB2b2lkIGV4dDRfY2xlYXJfaW5vZGUoc3RydWN0IGlub2RlICopO1xuZnMvZXh0NC9leHQ0Lmg6MzE4OTpleHRlcm4gaW50ICBleHQ0X2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgbW50X2lkbWFwICosIGNvbnN0IHN0cnVjdCBwYXRoICosXG5mcy9leHQ0L2V4dDQuaC0zMTkwLVx0XHRcdCAgICAgIHN0cnVjdCBrc3RhdCAqLCB1MzIsIHVuc2lnbmVkIGludCk7XG4tLVxuZnMvZXh0NC9maWxlLmM9MTA1OD1jb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBleHQ0X2ZpbGVfaW5vZGVfb3BlcmF0aW9ucyA9IHtcbmZzL2V4dDQvZmlsZS5jLTEwNTktXHQuc2V0YXR0clx0PSBleHQ0X3NldGF0dHIsXG5mcy9leHQ0L2ZpbGUuYzoxMDYwOlx0LmdldGF0dHJcdD0gZXh0NF9maWxlX2dldGF0dHIsXG5mcy9leHQ0L2ZpbGUuYy0xMDYxLVx0Lmxpc3R4YXR0clx0PSBleHQ0X2xpc3R4YXR0cixcbi0tXG5mcy9leHQ0L2lub2RlLmM9NjI2Nj1pbnQgZXh0NF9nZXRhdHRyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCxcbi0tXG5mcy9leHQ0L2lub2RlLmMtNjMzNC1cbmZzL2V4dDQvaW5vZGUuYzo2MzM1OmludCBleHQ0X2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcbmZzL2V4dDQvaW5vZGUuYy02MzM2LVx0XHQgICAgICBjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCwgc3RydWN0IGtzdGF0ICpzdGF0LFxuLS1cbmZzL2ZpbGVfYXR0ci5jPTg2PWludCB2ZnNfZmlsZWF0dHJfZ2V0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxuLS1cbmZzL2ZpbGVfYXR0ci5jLTkzLVxuZnMvZmlsZV9hdHRyLmM6OTQ6XHRlcnJvciA9IHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cihkZW50cnksIGZhKTtcbmZzL2ZpbGVfYXR0ci5jLTk1LVx0aWYgKGVycm9yKVxuLS1cbmZzL2ZpbGVfYXR0ci5jPTM1Nj1pbnQgaW9jdGxfZnNzZXR4YXR0cihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCBfX3VzZXIgKmFyZ3ApXG4tLVxuZnMvZmlsZV9hdHRyLmMtMzczLVxuZnMvZmlsZV9hdHRyLmM6Mzc0OlNZU0NBTExfREVGSU5FNShmaWxlX2dldGF0dHIsIGludCwgZGZkLCBjb25zdCBjaGFyIF9fdXNlciAqLCBmaWxlbmFtZSxcbmZzL2ZpbGVfYXR0ci5jLTM3NS1cdFx0c3RydWN0IGZpbGVfYXR0ciBfX3VzZXIgKiwgdWZhdHRyLCBzaXplX3QsIHVzaXplLFxuLS1cbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oPTIyPV9fTlJfcmVhZGxpbmthdCxcbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oLTIzLSNlbmRpZlxuaW5jbHVkZS9hc20tZ2VuZXJpYy9hdWRpdF9yZWFkLmg6MjQ6I2lmZGVmIF9fTlJfZmlsZV9nZXRhdHRyXG5pbmNsdWRlL2FzbS1nZW5lcmljL2F1ZGl0X3JlYWQuaDoyNTpfX05SX2ZpbGVfZ2V0YXR0cixcbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oLTI2LSNlbmRpZlxuLS1cbmluY2x1ZGUvbGludXgvbHNtX2hvb2tfZGVmcy5oPTE2MD1MU01fSE9PSyhpbnQsIDAsIGlub2RlX2ZpbGVfc2V0YXR0ciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXG5pbmNsdWRlL2xpbnV4L2xzbV9ob29rX2RlZnMuaDoxNjE6TFNNX0hPT0soaW50LCAwLCBpbm9kZV9maWxlX2dldGF0dHIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxuaW5jbHVkZS9saW51eC9sc21faG9va19kZWZzLmgtMTYyLUxTTV9IT09LKGludCwgMCwgaW5vZGVfc2V0X2FjbCwgc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsXG4tLVxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oPTQ1Mj1pbnQgc2VjdXJpdHlfaW5vZGVfZmlsZV9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaC00NTMtXHRcdFx0ICAgICAgc3RydWN0IGZpbGVfa2F0dHIgKmZhKTtcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaDo0NTQ6aW50IHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgtNDU1LVx0XHRcdCAgICAgIHN0cnVjdCBmaWxlX2thdHRyICpmYSk7XG4tLVxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oPTEwNjQ9c3RhdGljIGlubGluZSBpbnQgc2VjdXJpdHlfaW5vZGVfZmlsZV9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgtMTA2OS1cbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaDoxMDcwOnN0YXRpYyBpbmxpbmUgaW50IHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgtMTA3MS1cdFx0XHRcdFx0ICAgICAgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxuLS1cbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaD0zNzg9YXNtbGlua2FnZSBsb25nIHN5c19mcmVtb3ZleGF0dHIoaW50IGZkLCBjb25zdCBjaGFyIF9fdXNlciAqbmFtZSk7XG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg6Mzc5OmFzbWxpbmthZ2UgbG9uZyBzeXNfZmlsZV9nZXRhdHRyKGludCBkZmQsIGNvbnN0IGNoYXIgX191c2VyICpmaWxlbmFtZSxcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaC0zODAtXHRcdFx0XHQgc3RydWN0IGZpbGVfYXR0ciBfX3VzZXIgKmF0dHIsIHNpemVfdCB1c2l6ZSxcbi0tXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9ODUzPV9fU1lTQ0FMTChfX05SX29wZW5fdHJlZV9hdHRyLCBzeXNfb3Blbl90cmVlX2F0dHIpXG4tLVxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTg1NS0vKiBmcy9pbm9kZS5jICovXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODU2OiNkZWZpbmUgX19OUl9maWxlX2dldGF0dHIgNDY4XG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODU3Ol9fU1lTQ0FMTChfX05SX2ZpbGVfZ2V0YXR0ciwgc3lzX2ZpbGVfZ2V0YXR0cilcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC04NTgtI2RlZmluZSBfX05SX2ZpbGVfc2V0YXR0ciA0Njlcbi0tXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi00LS5cXFwmIzM0O1xubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6NTouVEggZmlsZV9nZXRhdHRyIDIgKGRhdGUpIFwmIzM0O0xpbnV4IG1hbi1wYWdlcyAodW5yZWxlYXNlZClcJiMzNDtcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTYtLlNIIE5BTUVcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yOjc6ZmlsZV9nZXRhdHRyIFxcLSBnZXQgZmlsZXN5c3RlbSBpbm9kZSBhdHRyaWJ1dGVzXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi04LS5TSCBTWU5PUFNJU1xuLS1cbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTE0LS5QXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoxNTouQiBsb25nIHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0cixcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTE2LS5CSSBcJiMzNDsgICAgICAgICAgICAgICBpbnQgXCYjMzQ7IGRpcmZkIFwmIzM0OywgY29uc3QgY2hhciAqXCYjMzQ7IHBhdGhuYW1lICxcbi0tXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMj0yMj1nbGliYyBwcm92aWRlcyBubyB3cmFwcGVyIGZvclxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MjM6LkJSIGZpbGVfZ2V0YXR0ciAoKSxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTI0LXVzZVxuLS1cbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yPTI4PVRoZVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6Mjk6LkJSIGZpbGVfZ2V0YXR0ciAoKVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMzAtc3lzdGVtIGNhbGwgcmV0cmlldmVzIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzXG4tLVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI9Mzk9QnkgdXNpbmcgYSBwYXRobmFtZSxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yOjQwOi5CUiBmaWxlX2dldGF0dHIgKClcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTQxLWNhbiByZXRyaWV2ZSBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlc1xuLS1cbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yPTgzPWJlZm9yZSBjYWxsaW5nXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjo4NDouQlIgZmlsZV9nZXRhdHRyICgpXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi04NS10byBlbnN1cmUgdGhhdCBmaWVsZHMgbm90IGZpbGxlZCBpbiBieSBvbGRlciBrZXJuZWxzXG4tLVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI9MjI5PVRoZSBwcm9ncmFtIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyMzA6LkJSIGZpbGVfZ2V0YXR0ciAoKVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMjMxLXRvIHJldHJpZXZlIGFuZCBkaXNwbGF5IGZpbGUgYXR0cmlidXRlcy5cbi0tXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0yNDEtXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyNDI6I2lmbmRlZiBTWVNfZmlsZV9nZXRhdHRyXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyNDM6I2RlZmluZSBTWVNfZmlsZV9nZXRhdHRyIDQ2N1xubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMjQ0LSNlbmRpZlxuLS1cbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yPTI0Nz1tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4tLVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMjU3LVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MjU4OiAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIEFUX0ZEQ1dELCBhcmd2WzFdLCBcdTAwMjZmYSwgc2l6ZW9mKGZhKSwgMCk7XG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0yNTktICAgIGlmIChyZXQgPT0gXFwtMSkge1xubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MjYwOiAgICAgICAgcGVycm9yKFwmIzM0O2ZpbGVfZ2V0YXR0clwmIzM0Oyk7XG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0yNjEtICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4tLVxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI9MjY1PWZsYWcgb24gYSBmaWxlLlxuLS1cbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTI3Ny1cbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yOjI3ODojaWZuZGVmIFNZU19maWxlX2dldGF0dHJcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yOjI3OTojZGVmaW5lIFNZU19maWxlX2dldGF0dHIgNDY3XG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0yODAtI2VuZGlmXG4tLVxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI9Mjg3PW1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbi0tXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMDMtXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMDQ6ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwgZGZkLCBcJiMzNDtcJiMzNDssIFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMwNS0gICAgaWYgKHJldCA9PSBcXC0xKSB7XG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMDY6ICAgICAgICBwZXJyb3IoXCYjMzQ7ZmlsZV9nZXRhdHRyXCYjMzQ7KTtcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMwNy0gICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbi0tXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMTktXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMjA6ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwgZGZkLCBcJiMzNDtcJiMzNDssIFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMyMS0gICAgaWYgKHJldCA9PSBcXC0xKSB7XG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMjI6ICAgICAgICBwZXJyb3IoXCYjMzQ7ZmlsZV9nZXRhdHRyXCYjMzQ7KTtcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMyMy0gICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbi0tXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMzQtLlNIIFNFRSBBTFNPXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMzU6LkJSIGZpbGVfZ2V0YXR0ciAoMiksXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMzYtLkJSIGlvY3RsICgyKSxcbi0tXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlPTIyPWZvciB1c2Ugd2l0aCB0aGVcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGU6MjM6LkJSIGZpbGVfZ2V0YXR0ciAoMilcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUtMjQtYW5kXG4tLVxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZT00Nj1UaGlzIGZpZWxkIGlzIGZpbGxlZCBpbiBieVxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZTo0NzouQlIgZmlsZV9nZXRhdHRyICgyKVxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZS00OC1hbmQgaXMgaWdub3JlZCBieVxuLS1cbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGU9MTUwPXBhcmFtZXRlciBwYXNzZWQgdG9cbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGU6MTUxOi5CUiBmaWxlX2dldGF0dHIgKDIpXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlLTE1Mi1hbmRcbi0tXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlPTE4ND11cHBlciBsYXllcnMsIHN1Y2ggYXMgTkZTRCwgdG8gcmV0cmlldmUgY2FzZSBzZW5zaXRpdml0eSBpbmZvcm1hdGlvbi5cbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUtMTg1LS5TSCBTRUUgQUxTT1xubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZToxODY6LkJSIGZpbGVfZ2V0YXR0ciAoMiksXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlLTE4Ny0uQlIgZmlsZV9zZXRhdHRyICgyKVxuLS1cbnNjcmlwdHMvc3lzY2FsbC50YmwtNDEwLTQ2N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxuc2NyaXB0cy9zeXNjYWxsLnRibDo0MTE6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbnNjcmlwdHMvc3lzY2FsbC50YmwtNDEyLTQ2OVx0Y29tbW9uXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuc2VjdXJpdHkvc2VjdXJpdHkuYz0yMTUzPWludCBzZWN1cml0eV9pbm9kZV9maWxlX3NldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXG4tLVxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTU4LS8qKlxuc2VjdXJpdHkvc2VjdXJpdHkuYzoyMTU5OiAqIHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cigpIC0gY2hlY2sgaWYgcmV0cmlldmluZyBmc3hhdHRyIGlzIGFsbG93ZWRcbnNlY3VyaXR5L3NlY3VyaXR5LmMtMjE2MC0gKiBAZGVudHJ5OiBmaWxlIHRvIHJldHJpZXZlIGZpbGVzeXN0ZW0gZXh0ZW5kZWQgYXR0cmlidXRlcyBmcm9tXG4tLVxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTYyLSAqXG5zZWN1cml0eS9zZWN1cml0eS5jOjIxNjM6ICogQ2FsbGVkIHdoZW4gZmlsZV9nZXRhdHRyKCkgc3lzY2FsbCBvciBGU19JT0NfRlNHRVRYQVRUUiBpb2N0bCgpIGlzIGNhbGxlZCBvblxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTY0LSAqIGlub2RlXG4tLVxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTY3LSAqL1xuc2VjdXJpdHkvc2VjdXJpdHkuYzoyMTY4OmludCBzZWN1cml0eV9pbm9kZV9maWxlX2dldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXG5zZWN1cml0eS9zZWN1cml0eS5jLTIxNjkte1xuc2VjdXJpdHkvc2VjdXJpdHkuYzoyMTcwOlx0cmV0dXJuIGNhbGxfaW50X2hvb2soaW5vZGVfZmlsZV9nZXRhdHRyLCBkZW50cnksIGZhKTtcbnNlY3VyaXR5L3NlY3VyaXR5LmMtMjE3MS19XG4tLVxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jPTM1NDQ9c3RhdGljIGludCBzZWxpbnV4X2lub2RlX2ZpbGVfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG4tLVxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jLTM1NDktXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmM6MzU1MDpzdGF0aWMgaW50IHNlbGludXhfaW5vZGVfZmlsZV9nZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYy0zNTUxLVx0XHRcdFx0ICAgICAgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxuLS1cbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYz03NTYwPXN0YXRpYyBzdHJ1Y3Qgc2VjdXJpdHlfaG9va19saXN0IHNlbGludXhfaG9va3NbXSBfX3JvX2FmdGVyX2luaXQgPSB7XG4tLVxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jLTc2MTktXHRMU01fSE9PS19JTklUKGlub2RlX3JlbW92ZXhhdHRyLCBzZWxpbnV4X2lub2RlX3JlbW92ZXhhdHRyKSxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYzo3NjIwOlx0TFNNX0hPT0tfSU5JVChpbm9kZV9maWxlX2dldGF0dHIsIHNlbGludXhfaW5vZGVfZmlsZV9nZXRhdHRyKSxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYy03NjIxLVx0TFNNX0hPT0tfSU5JVChpbm9kZV9maWxlX3NldGF0dHIsIHNlbGludXhfaW5vZGVfZmlsZV9zZXRhdHRyKSxcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9ODUzPV9fU1lTQ0FMTChfX05SX29wZW5fdHJlZV9hdHRyLCBzeXNfb3Blbl90cmVlX2F0dHIpXG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTg1NS0vKiBmcy9pbm9kZS5jICovXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODU2OiNkZWZpbmUgX19OUl9maWxlX2dldGF0dHIgNDY4XG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODU3Ol9fU1lTQ0FMTChfX05SX2ZpbGVfZ2V0YXR0ciwgc3lzX2ZpbGVfZ2V0YXR0cilcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC04NTgtI2RlZmluZSBfX05SX2ZpbGVfc2V0YXR0ciA0Njlcbi0tXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ4NC00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDg1OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ4Ni00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbnRvb2xzL3BlcmYvYXJjaC9taXBzL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zODQtNDY3XHRuNjRcdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6Mzg1OjQ2OFx0bjY0XHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzg2LTQ2OVx0bjY0XHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTYwLTQ2N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTYxOjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC01NjItNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zOTYtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDozOTc6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbnRvb2xzL3BlcmYvYXJjaC9zMzkwL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5OC00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NzMtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDc0OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDc1LTQ2OVx0Y29tbW9uXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTUxNS00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo1MTY6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC01MTctNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQ3NS00NjdcdGkzODZcdG9wZW5fdHJlZV9hdHRyXHRcdHN5c19vcGVuX3RyZWVfYXR0clxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0NzY6NDY4XHRpMzg2XHRmaWxlX2dldGF0dHJcdFx0c3lzX2ZpbGVfZ2V0YXR0clxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NzctNDY5XHRpMzg2XHRmaWxlX3NldGF0dHJcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzk0LTQ2N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50Ymw6Mzk1OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0c3lzX2ZpbGVfZ2V0YXR0clxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibC0zOTYtNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NDAtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG50b29scy9wZXJmL2FyY2gveHRlbnNhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ0MTo0NjhcdGNvbW1vblx0ZmlsZV9nZXRhdHRyXHRcdFx0c3lzX2ZpbGVfZ2V0YXR0clxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NDItNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsLTQxMC00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50Ymw6NDExOjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsLTQxMi00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MzQ0CgkJCQkJCQlvdXRwdXQ6IDEwMAoJCQkJCQkJdGhvdWdodHM6IDUxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRGVjaXNpb246IEEgUXVpY2sgUmV2aWV3KioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGlzIGNvbW1pdCYjMzk7cyBkaWZmIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gKkNoZWNrcyBkaWZmKjogUmlnaHQsIGl0JiMzOTtzIGp1c3QgYWRkaW5nIG5ldyBtYW4gcGFnZXM6IGBmaWxlX2dldGF0dHIuMmAsIGBmaWxlX3NldGF0dHIuMmAsIGFuZCBgZmlsZV9hdHRyLjJ0eXBlYC4gQWxsIHdpdGhpbiB0aGUgYG1hbi9gIGRpcmVjdG9yeS4gTm8gY2hhbmdlcyB0byBhY3R1YWwgY29kZSwganVzdCBkb2N1bWVudGF0aW9uLgoKTm93LCBsZXQmIzM5O3MgcnVuIHRocm91Z2ggU2VjdGlvbiAyJiMzOTtzIG5lZ2F0aXZlIGNyaXRlcmlhLiAqUmVhZHMgU2VjdGlvbiAyKjogSG1tLCAmIzM0O05vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMuLi4mIzM0OyBPa2F5LCB0aGF0IHNlY3Rpb24gY292ZXJzICYjMzQ7TW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLCYjMzQ7IGFuZCAmIzM0O1VzZXItc3BhY2UgZGlyZWN0b3JpZXMuLi4gdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UuLi4mIzM0OyBCaW5nbyEgVGhpcyBwYXRjaCBmYWxscyBzcXVhcmVseSBpbnRvIHRoYXQgY2F0ZWdvcnkuIEl0JiMzOTtzICpwdXJlbHkqIGFkZGluZyBkb2N1bWVudGF0aW9uOyBubyBleGVjdXRhYmxlIGNvZGUgaXMgdG91Y2hlZCwgYW5kIGNlcnRhaW5seSBubyBrZXJuZWwgY29kZS4KClRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2AgaGFzIHRvIGJlIGBmYWxzZWAuIE5vIG5lZWQgdG8gZW5hYmxlIGFueSBzcGVjaWZpYyBjb25maWdzIChgRW5hYmxlQ29uZmlncyA9IFtdYCksIGFuZCB0aGVyZSBhcmUgbm8gZm9jYWwgc3ltYm9scyB0byB0cmFjayAoYEZvY3VzU3ltYm9scyA9IFtdYCkuIFRoZSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIGlzIGRvY3VtZW50YXRpb24sIHBsYWluIGFuZCBzaW1wbGUsIGFuZCBpdCBkb2VzbiYjMzk7dCBhZmZlY3QgdGhlIGtlcm5lbCYjMzk7cyBydW50aW1lIGJlaGF2aW9yLiAqRGV0ZXJtaW5lcyo6IGBSZWFzb25pbmc6IFRoZSBwYXRjaCBvbmx5IGFkZHMgbWFuIHBhZ2VzIChkb2N1bWVudGF0aW9uKSBpbiBtYW4vbWFuMi8gYW5kIG1hbi9tYW4ydHlwZS8gYW5kIGRvZXMgbm90IG1vZGlmeSBhbnkga2VybmVsIHNvdXJjZSBjb2RlLmAKCkFscmlnaHQsIHRpbWUgdG8gZXhlY3V0ZSBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIG9ubHkgYWRkcyB1c2VyLXNwYWNlIG1hbi1wYWdlIGRvY3VtZW50YXRpb24gZmlsZXMgdW5kZXIgdGhlIG1hbi8gZGlyZWN0b3J5IChtYW4vbWFuMi9maWxlX2dldGF0dHIuMiwgbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIsIGFuZCBtYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlKSBhbmQgZG9lcyBub3QgbW9kaWZ5IGFueSBleGVjdXRhYmxlIGtlcm5lbCBzb3VyY2UgY29kZSBvciBkYXRhIHN0cnVjdHVyZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgb25seSBhZGRzIHVzZXItc3BhY2UgbWFuLXBhZ2UgZG9jdW1lbnRhdGlvbiBmaWxlcyB1bmRlciB0aGUgbWFuLyBkaXJlY3RvcnkgKG1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLCBtYW4vbWFuMi9maWxlX3NldGF0dHIuMiwgYW5kIG1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUpIGFuZCBkb2VzIG5vdCBtb2RpZnkgYW55IGV4ZWN1dGFibGUga2VybmVsIHNvdXJjZSBjb2RlIG9yIGRhdGEgc3RydWN0dXJlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6NDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjQ3OjMzLjg1MTYxNjAzN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODYwNjU1MTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIG9ubHkgYWRkcyB1c2VyLXNwYWNlIG1hbi1wYWdlIGRvY3VtZW50YXRpb24gZmlsZXMgdW5kZXIgdGhlIG1hbi8gZGlyZWN0b3J5IChtYW4vbWFuMi9maWxlX2dldGF0dHIuMiwgbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIsIGFuZCBtYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlKSBhbmQgZG9lcyBub3QgbW9kaWZ5IGFueSBleGVjdXRhYmxlIGtlcm5lbCBzb3VyY2UgY29kZSBvciBkYXRhIHN0cnVjdHVyZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzo0NzozMy44NTE2MjI3ODdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODc2Mzg5ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyMDQ3ZGFkMDEwNTc4Njg5ZTJlNmUwNDhjN2UzY2JhZTZhNmQ4Y2RmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gU2VwIDcgMTc6NDc6MzIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbWFuL21hbjIvZmlsZV9nZXRhdHRyLjIgYi9tYW4vbWFuMi9maWxlX2dldGF0dHIuMlxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uZjFhZWMyYWQ4YzQyNVxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9tYW4vbWFuMi9maWxlX2dldGF0dHIuMlxcbkBAIC0wLDAgKzEsMjg2IEBAXFxuKy5cXFxcXFxcIiBDb3B5cmlnaHQsIHRoZSBhdXRob3JzIG9mIHRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdFxcbisuXFxcXFxcXCJcXG4rLlxcXFxcXFwiIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMaW51eC1tYW4tcGFnZXMtY29weWxlZnRcXG4rLlxcXFxcXFwiXFxuKy5USCBmaWxlX2dldGF0dHIgMiAoZGF0ZSkgXFxcIkxpbnV4IG1hbi1wYWdlcyAodW5yZWxlYXNlZClcXFwiXFxuKy5TSCBOQU1FXFxuK2ZpbGVfZ2V0YXR0ciBcXFxcLSBnZXQgZmlsZXN5c3RlbSBpbm9kZSBhdHRyaWJ1dGVzXFxuKy5TSCBTWU5PUFNJU1xcbisubmZcXG4rLkJSIFxcXCIjaW5jbHVkZSBcXHUwMDNjbGludXgvZmNudGwuaFxcdTAwM2VcXFwiIFxcXCIgICAgICAvKiBcXFwiIEFUXyogXFxcIiBjb25zdGFudHMgKi9cXFwiXFxuKy5CUiBcXFwiI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ZzLmhcXHUwMDNlXFxcIiBcXFwiICAgICAgICAgLyogc3RydWN0IFxcXCIgZmlsZV9hdHRyIFxcXCIgYW5kIFxcXCIgRlNfWEZMQUdfKiBcXFwiIGNvbnN0YW50cyAqL1xcXCJcXG4rLkJSIFxcXCIjaW5jbHVkZSBcXHUwMDNjc3lzL3N5c2NhbGwuaFxcdTAwM2VcXFwiIFxcXCIgICAgICAvKiBcXFwiIFNZU18qIFxcXCIgY29uc3RhbnRzICovXFxcIlxcbisuQiAjaW5jbHVkZSBcXHUwMDNjdW5pc3RkLmhcXHUwMDNlXFxuKy5QXFxuKy5CIGxvbmcgc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLFxcbisuQkkgXFxcIiAgICAgICAgICAgICAgIGludCBcXFwiIGRpcmZkIFxcXCIsIGNvbnN0IGNoYXIgKlxcXCIgcGF0aG5hbWUgLFxcbisuQkkgXFxcIiAgICAgICAgICAgICAgIHN0cnVjdCBmaWxlX2F0dHIgKlxcXCIgZmF0dHIgXFxcIiwgc2l6ZV90IFxcXCIgc2l6ZSAsXFxuKy5CSSBcXFwiICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IFxcXCIgZmxhZ3MgKTtcXG4rLmZpXFxuKy5QXFxuKy5JUiBOb3RlIDpcXG4rZ2xpYmMgcHJvdmlkZXMgbm8gd3JhcHBlciBmb3JcXG4rLkJSIGZpbGVfZ2V0YXR0ciAoKSxcXG4rdXNlXFxuKy5CUiBzeXNjYWxsICgyKVxcbitpbnN0ZWFkLlxcbisuU0ggREVTQ1JJUFRJT05cXG4rVGhlXFxuKy5CUiBmaWxlX2dldGF0dHIgKClcXG4rc3lzdGVtIGNhbGwgcmV0cmlldmVzIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzXFxuK2Zyb20gdGhlIGZpbGUgc3BlY2lmaWVkIGJ5XFxuKy5JUiBwYXRobmFtZSAuXFxuKy5QXFxuK1RoaXMgc3lzdGVtIGNhbGwgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHRoZVxcbisuQiBGU19JT0NfRlNHRVRYQVRUUlxcbisuQlIgaW9jdGwgKDIpXFxuK29wZXJhdGlvbixcXG4rYnV0IHdpdGggdGhlIGFkdmFudGFnZSB0aGF0IHRoZSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gYmUgb3BlbmVkLlxcbitCeSB1c2luZyBhIHBhdGhuYW1lLFxcbisuQlIgZmlsZV9nZXRhdHRyICgpXFxuK2NhbiByZXRyaWV2ZSBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlc1xcbitmcm9tIGFsbCBmaWxlIHR5cGVzLFxcbitpbmNsdWRpbmcgc3BlY2lhbCBmaWxlcyBzdWNoIGFzIEZJRk9zLCBzb2NrZXRzLCBibG9jayBkZXZpY2VzLCBjaGFyYWN0ZXJcXG4rZGV2aWNlcywgYW5kIHN5bWxpbmtzLCB3aGVyZSBvcGVuaW5nIHRhcmdldGVkIGlub2RlIG1heSBub3QgYmUgcG9zc2libGUuXFxuKy5QXFxuK0FzIHdpdGhcXG4rLkJSIG9wZW5hdCAoMiksXFxuK2lmXFxuKy5JIHBhdGhuYW1lXFxuK2lzIHJlbGF0aXZlLFxcbit0aGVuIGl0IGlzIGludGVycHJldGVkIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnlcXG4rcmVmZXJyZWQgdG8gYnkgdGhlIGZpbGUgZGVzY3JpcHRvclxcbisuSVIgZGlyZmQgLlxcbitUaGUgc3BlY2lhbCB2YWx1ZVxcbisuQiBBVF9GRENXRFxcbitjb3VsZCBiZSB1c2VkIHRvIHJlZmVyIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IG9mIHRoZSBjYWxsaW5nIHByb2Nlc3MuXFxuK0lmXFxuKy5JIHBhdGhuYW1lXFxuK2lzIGFic29sdXRlLFxcbit0aGVuXFxuKy5JIGRpcmZkXFxuK2lzIGlnbm9yZWQuXFxuKy5QXFxuK1RoZVxcbisuSSBmYXR0clxcbithcmd1bWVudCBpcyBhIHBvaW50ZXIgdG8gYVxcbisuSSBmaWxlX2F0dHJcXG4rc3RydWN0dXJlLlxcbitUaGlzIHN0cnVjdHVyZSB3aWxsIGJlIGZpbGxlZCB3aXRoIGZpbGUgYXR0cmlidXRlcy5cXG4rVGhpcyBzdHJ1Y3R1cmUgaXMgZGVzY3JpYmVkIGluXFxuKy5CUiBmaWxlX2F0dHIoMnR5cGUpIC5cXG4rLlBcXG4rVGhlXFxuKy5JIHNpemVcXG4rYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgcG9pbnRlZCB0byBieVxcbisuSVIgZmF0dHIgLlxcbitUaGUgc2l6ZSBpbmRpY2F0ZXMgdmVyc2lvbiBvZiB0aGUgc3RydWN0dXJlIGluIHVzZSwgcmVmZXIgdG9cXG4rLkIgZmlsZV9hdHRyKDJ0eXBlKVxcbitmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB2ZXJzaW9uaW5nLlxcbisuUFxcbitVc2Vyc3BhY2UgYXBwbGljYXRpb25zIHNob3VsZCB6ZXJvLWluaXRpYWxpemVcXG4rLkkgc3RydWN0IGZpbGVfYXR0clxcbitiZWZvcmUgY2FsbGluZ1xcbisuQlIgZmlsZV9nZXRhdHRyICgpXFxuK3RvIGVuc3VyZSB0aGF0IGZpZWxkcyBub3QgZmlsbGVkIGluIGJ5IG9sZGVyIGtlcm5lbHNcXG4rd2lsbCBoYXZlIHByZWRpY3RhYmxlIHZhbHVlcy5cXG4rLlBcXG4rVGhlXFxuKy5JIGZsYWdzXFxuK2FyZ3VtZW50IGlzIGEgYml0IG1hc2ssIGF2YWlsYWJsZSBmbGFncyBhcmU6XFxuKy5UUFxcbisuQiBBVF9FTVBUWV9QQVRIXFxuK0lmXFxuKy5JIHBhdGhuYW1lXFxuK2lzIGFuIGVtcHR5IHN0cmluZyxcXG4rb3BlcmF0ZSBvbiB0aGUgZmlsZSByZWZlcnJlZCB0byBieVxcbisuSVIgZGlyZmQgLlxcbitJbiB0aGlzIGNhc2UsXFxuKy5JIGRpcmZkXFxuK2NhbiByZWZlciB0byBhbnkgdHlwZSBvZiBmaWxlLFxcbitub3QganVzdCBhIGRpcmVjdG9yeS5cXG4rSWZcXG4rLkkgZGlyZmRcXG4raXNcXG4rLkJSIEFUX0ZEQ1dEICxcXG4rdGhlIGNhbGwgZmFpbHMgd2l0aCB0aGUgZXJyb3JcXG4rLkJSIEVCQURGIC5cXG4rLlRQXFxuKy5CIEFUX1NZTUxJTktfTk9GT0xMT1dcXG4rSWZcXG4rLkkgcGF0aG5hbWVcXG4raXMgYSBzeW1ib2xpYyBsaW5rLFxcbitkbyBub3QgZGVyZWZlcmVuY2UgaXQ7XFxuK2luc3RlYWQgZ2V0IGF0dHJpYnV0ZXMgb2YgdGhlIHN5bWJvbGljIGxpbmsgaW5vZGUgaXRzZWxmLlxcbitCeSBkZWZhdWx0LCBzeW1ib2xpYyBsaW5rcyBhcmUgZGVyZWZlcmVuY2VkLlxcbisuU0ggUkVUVVJOIFZBTFVFXFxuK09uIHN1Y2Nlc3MsXFxuK3plcm8gaXMgcmV0dXJuZWQuXFxuK09uIGVycm9yLFxcbitcXFxcLTEgaXMgcmV0dXJuZWQsXFxuK2FuZFxcbisuSSBlcnJub1xcbitpcyBzZXQgdG8gaW5kaWNhdGUgdGhlIGVycm9yLlxcbisuU0ggRVJST1JTXFxuKy5UUFxcbisuQiBFMkJJR1xcbisuSSBzaXplXFxuK2lzIHRvbyBiaWcgKGxhcmdlciB0aGFuXFxuKy5CUiBQQUdFX1NJWkUgKS5cXG4rLlRQXFxuKy5CIEVBQ0NFU1xcbitTZWFyY2ggcGVybWlzc2lvbiBpcyBkZW5pZWQgZm9yIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXNcXG4raW4gdGhlIHBhdGggcHJlZml4IG9mXFxuKy5JUiBwYXRobmFtZSAuXFxuKy5UUFxcbisuQiBFQkFERlxcbisuSSBwYXRobmFtZVxcbitpcyByZWxhdGl2ZSBidXRcXG4rLkkgZGlyZmRcXG4raXMgbmVpdGhlclxcbisuQiBBVF9GRENXRFxcbitub3IgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IuXFxuKy5UUFxcbisuQiBFQkFERlxcbisuSSBwYXRobmFtZVxcbitpcyBhbiBlbXB0eSBzdHJpbmcsXFxuKy5CIEFUX0VNUFRZX1BBVEhcXG4rd2FzIHNwZWNpZmllZCxcXG4rYnV0XFxuKy5JIGRpcmZkXFxuK2lzIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLlxcbisuVFBcXG4rLkIgRUZBVUxUXFxuKy5JIHBhdGhuYW1lXFxuK29yXFxuKy5JIGZhdHRyXFxuK2lzIGFuIGludmFsaWQgcG9pbnRlci5cXG4rLlRQXFxuKy5CIEVJTlZBTFxcbitJbnZhbGlkIGZsYWcgc3BlY2lmaWVkIGluXFxuKy5JUiBmbGFncyAuXFxuKy5UUFxcbisuQiBFSU5WQUxcXG4rLkkgc2l6ZVxcbitpcyBzbWFsbGVyIHRoYW5cXG4rLkJSIEZJTEVfQVRUUl9TSVpFX1ZFUjAgLlxcbisuVFBcXG4rLkIgRUxPT1BcXG4rVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQgd2hpbGUgcmVzb2x2aW5nXFxuKy5JUiBwYXRobmFtZSAuXFxuKy5UUFxcbisuQiBFTkFNRVRPT0xPTkdcXG4rLkkgcGF0aG5hbWVcXG4raXMgdG9vIGxvbmcuXFxuKy5UUFxcbisuQiBFTk9FTlRcXG4rQSBjb21wb25lbnQgb2ZcXG4rLkkgcGF0aG5hbWVcXG4rZG9lcyBub3QgZXhpc3QsXFxuK29yXFxuKy5JIHBhdGhuYW1lXFxuK2lzIGFuIGVtcHR5IHN0cmluZyBhbmRcXG4rLkIgQVRfRU1QVFlfUEFUSFxcbit3YXMgbm90IHNwZWNpZmllZCBpblxcbisuSVIgZmxhZ3MgLlxcbisuVFBcXG4rLkIgRU5PTUVNXFxuK0luc3VmZmljaWVudCBrZXJuZWwgbWVtb3J5IHdhcyBhdmFpbGFibGUuXFxuKy5UUFxcbisuQiBFTk9URElSXFxuK0EgY29tcG9uZW50IG9mIHRoZSBwYXRoIHByZWZpeCBvZlxcbisuSSBwYXRobmFtZVxcbitpcyBub3QgYSBkaXJlY3Rvcnkgb3IsXFxuKy5JIHBhdGhuYW1lXFxuK2lzIHJlbGF0aXZlIGFuZFxcbisuSSBkaXJmZFxcbitpcyBhIGZpbGUgZGVzY3JpcHRvciByZWZlcnJpbmcgdG8gYSBmaWxlIG90aGVyIHRoYW4gYSBkaXJlY3RvcnkuXFxuKy5UUFxcbisuQiBFT1BOT1RTVVBQXFxuK1RoZSBmaWxlc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgZ2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoaXMgdHlwZSBvZiBpbm9kZS5cXG4rLlNIIEhJU1RPUllcXG4rLlNTIExpbnV4IDYuMTdcXG4rVGhpcyBzeXN0ZW0gY2FsbCBpcyBpbnRyb2R1Y2VkIGFzIGEgbW9yZSBmbGV4aWJsZSBhbHRlcm5hdGl2ZSB0byB0aGVcXG4rRlNfSU9DX0ZTR0VUWEFUVFJcXG4rLkJSIGlvY3RsICgyKVxcbit3aGljaCBjb3VsZCB3b3JrIG9uIGFueSB0eXBlIG9mIGZpbGVzLlxcbisuU0ggTk9URVNcXG4rVGhpcyBzeXN0ZW0gY2FsbCBpcyBkZXNpZ25lZCB0byBiZSBleHRlbnNpYmxlLlxcbitUaGVcXG4rLkkgc2l6ZVxcbithcmd1bWVudCBhbGxvd3MgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucyB0byBpbmRpY2F0ZVxcbit3aGljaCB2ZXJzaW9uIG9mIHRoZVxcbisuSSBmaWxlX2F0dHJcXG4rc3RydWN0dXJlIHRoZXkgYXJlIHVzaW5nLFxcbitlbmFibGluZyB0aGUga2VybmVsIHRvIHN1cHBvcnQgYm90aCBvbGQgYW5kIG5ldyB2ZXJzaW9uc1xcbitvZiB0aGUgc3RydWN0dXJlIHNpbXVsdGFuZW91c2x5LlxcbisuUFxcbitJZlxcbisuSSBzaXplXFxuK2lzIHNtYWxsZXIgdGhhbiB0aGUgc3RydWN0dXJlIHNpemUgdGhlIGtlcm5lbCBleHBlY3RzLFxcbitvbmx5IHRoZSBmaWVsZHMgdGhhdCBmaXQgd2l0aGluXFxuKy5JIHNpemVcXG4rd2lsbCBiZSBmaWxsZWQgaW4uXFxuK0lmXFxuKy5JIHNpemVcXG4raXMgbGFyZ2VyIHRoYW4gdGhlIGtlcm5lbCdzIHN0cnVjdHVyZSBzaXplLFxcbit0aGUgZXh0cmEgYnl0ZXMgYXJlIHplcm9lZC5cXG4rLlNIIEVYQU1QTEVTXFxuK1RoZSBwcm9ncmFtIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mXFxuKy5CUiBmaWxlX2dldGF0dHIgKClcXG4rdG8gcmV0cmlldmUgYW5kIGRpc3BsYXkgZmlsZSBhdHRyaWJ1dGVzLlxcbisuUFxcbisuaW4gKzRuXFxuKy5FWFxcbisjaW5jbHVkZSBcXHUwMDNjZmNudGwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ZzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzdGRpby5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3RkbGliLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzeXMvc3lzY2FsbC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjdW5pc3RkLmhcXHUwMDNlXFxuK1xcbisjaWZuZGVmIFNZU19maWxlX2dldGF0dHJcXG4rI2RlZmluZSBTWVNfZmlsZV9nZXRhdHRyIDQ2N1xcbisjZW5kaWZcXG4rXFxuK2ludFxcbittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXFxuK3tcXG4rICAgIHN0cnVjdCBmaWxlX2F0dHIgZmEgPSB7IDAgfTtcXG4rICAgIGludCBkZmQ7XFxuKyAgICBsb25nIHJldDtcXG4rXFxuKyAgICBpZiAoYXJnYyAhPSAyKSB7XFxuKyAgICAgICAgZnByaW50ZihzdGRlcnIsIFxcXCJVc2FnZTogJXMgXFx1MDAzY2ZpbGVuYW1lXFx1MDAzZVxcXFxcXFxcblxcXCIsIGFyZ3ZbMF0pO1xcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcXG4rICAgIH1cXG4rXFxuKyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIEFUX0ZEQ1dELCBhcmd2WzFdLCBcXHUwMDI2ZmEsIHNpemVvZihmYSksIDApO1xcbisgICAgaWYgKHJldCA9PSBcXFxcLTEpIHtcXG4rICAgICAgICBwZXJyb3IoXFxcImZpbGVfZ2V0YXR0clxcXCIpO1xcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcXG4rICAgIH1cXG4rXFxuKyAgICBwcmludGYoXFxcIkZpbGUgYXR0cmlidXRlczpcXFxcXFxcXG5cXFwiKTtcXG4rICAgIHByaW50ZihcXFwiICB4ZmxhZ3M6ICAgICAweCVsbHhcXFxcXFxcXG5cXFwiLCAodW5zaWduZWQgbG9uZyBsb25nKWZhLmZhX3hmbGFncyk7XFxuKyAgICBwcmludGYoXFxcIiAgZXh0c2l6ZTogICAgJXVcXFxcXFxcXG5cXFwiLCBmYS5mYV9leHRzaXplKTtcXG4rICAgIHByaW50ZihcXFwiICBuZXh0ZW50czogICAldVxcXFxcXFxcblxcXCIsIGZhLmZhX25leHRlbnRzKTtcXG4rICAgIHByaW50ZihcXFwiICBwcm9qaWQ6ICAgICAldVxcXFxcXFxcblxcXCIsIGZhLmZhX3Byb2ppZCk7XFxuKyAgICBwcmludGYoXFxcIiAgY293ZXh0c2l6ZTogJXVcXFxcXFxcXG5cXFwiLCBmYS5mYV9jb3dleHRzaXplKTtcXG4rXFxuKyAgICAvKlxcbisgICAgICogVHJ5IHNldHRpbmcgTk9EVU1QIGZsYWcgd2l0aCBjaGF0dHIgK2QgLi9mb28gdG8gc2VlIHRoZSBkaWZmZXJlbmNlXFxuKyAgICAgKi9cXG4rICAgIGlmIChmYS5mYV94ZmxhZ3MgXFx1MDAyNiBGU19YRkxBR19OT0RVTVApXFxuKyAgICAgICAgcHJpbnRmKFxcXCIgIE5PRFVNUCBmbGFnIGlzIHNldFxcXFxcXFxcblxcXCIpO1xcbitcXG4rICAgIGV4aXQoRVhJVF9TVUNDRVNTKTtcXG4rfVxcbisuRUVcXG4rLmluXFxuKy5TSCBTRUUgQUxTT1xcbisuQlIgZmlsZV9zZXRhdHRyICgyKSxcXG4rLkJSIGZpbGVfYXR0ciAoMnR5cGUpLFxcbisuQlIgaW9jdGwgKDIpLFxcbisuQlIgaW9jdGxfZnMgKDIpLFxcbisuQlIgb3BlbmF0ICgyKVxcbmRpZmYgLS1naXQgYS9tYW4vbWFuMi9maWxlX3NldGF0dHIuMiBiL21hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi41OTY3NTBkYzc5YzgxXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL21hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yXFxuQEAgLTAsMCArMSwzNDAgQEBcXG4rLlxcXFxcXFwiIENvcHlyaWdodCwgdGhlIGF1dGhvcnMgb2YgdGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0XFxuKy5cXFxcXFxcIlxcbisuXFxcXFxcXCIgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExpbnV4LW1hbi1wYWdlcy1jb3B5bGVmdFxcbisuXFxcXFxcXCJcXG4rLlRIIGZpbGVfc2V0YXR0ciAyIChkYXRlKSBcXFwiTGludXggbWFuLXBhZ2VzICh1bnJlbGVhc2VkKVxcXCJcXG4rLlNIIE5BTUVcXG4rZmlsZV9zZXRhdHRyIFxcXFwtIHNldCBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcXG4rLlNIIFNZTk9QU0lTXFxuKy5uZlxcbisuQlIgXFxcIiNpbmNsdWRlIFxcdTAwM2NsaW51eC9mY250bC5oXFx1MDAzZVxcXCIgXFxcIiAgICAgIC8qIERlZmluaXRpb24gb2YgXFxcIiBBVF8qIFxcXCIgY29uc3RhbnRzICovXFxcIlxcbisuQlIgXFxcIiNpbmNsdWRlIFxcdTAwM2NsaW51eC9mcy5oXFx1MDAzZVxcXCIgXFxcIiAgICAgICAgIC8qIERlZmluaXRpb24gb2YgXFxcIiBGSUxFX0FUVFJfKiBcXFxcXFxuK1xcXCIgYW5kIFxcXCIgRlNfWEZMQUdfKiBcXFwiIGNvbnN0YW50cyAqL1xcXCJcXG4rLkJSIFxcXCIjaW5jbHVkZSBcXHUwMDNjc3lzL3N5c2NhbGwuaFxcdTAwM2VcXFwiIFxcXCIgICAgICAvKiBEZWZpbml0aW9uIG9mIFxcXCIgU1lTXyogXFxcIiBjb25zdGFudHMgKi9cXFwiXFxuKy5CICNpbmNsdWRlIFxcdTAwM2N1bmlzdGQuaFxcdTAwM2VcXG4rLlBcXG4rLkIgbG9uZyBzeXNjYWxsKFNZU19maWxlX3NldGF0dHIsXFxuKy5CSSBcXFwiICAgICAgICAgICAgICAgaW50IFxcXCIgZGlyZmQgXFxcIiwgY29uc3QgY2hhciAqXFxcIiBwYXRobmFtZSAsXFxuKy5CSSBcXFwiICAgICAgICAgICAgICAgc3RydWN0IGZpbGVfYXR0ciAqXFxcIiBmYXR0ciBcXFwiLCBzaXplX3QgXFxcIiBzaXplICxcXG4rLkJJIFxcXCIgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgXFxcIiBmbGFncyApO1xcbisuZmlcXG4rLlBcXG4rLklSIE5vdGUgOlxcbitnbGliYyBwcm92aWRlcyBubyB3cmFwcGVyIGZvclxcbisuQlIgZmlsZV9zZXRhdHRyICgpLFxcbituZWNlc3NpdGF0aW5nIHRoZSB1c2Ugb2ZcXG4rLkJSIHN5c2NhbGwgKDIpLlxcbisuU0ggREVTQ1JJUFRJT05cXG4rVGhlXFxuKy5CUiBmaWxlX3NldGF0dHIgKClcXG4rc3lzdGVtIGNhbGwgc2V0cyBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcXG4rb24gdGhlIGZpbGUgc3BlY2lmaWVkIGJ5XFxuKy5JUiBwYXRobmFtZSAuXFxuKy5QXFxuK1RoaXMgc3lzdGVtIGNhbGwgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHRoZVxcbisuQiBGU19JT0NfRlNTRVRYQVRUUlxcbisuQlIgaW9jdGwgKDIpXFxuK29wZXJhdGlvbixcXG4rYnV0IHdpdGggdGhlIGFkdmFudGFnZSB0aGF0IHRoZSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gYmUgb3BlbmVkLlxcbitCeSB1c2luZyBhIHBhdGhuYW1lIGluc3RlYWQgb2YgcmVxdWlyaW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLFxcbisuQlIgZmlsZV9zZXRhdHRyICgpXFxuK2NhbiBtYW5pcHVsYXRlIGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlc1xcbitvbiBhbGwgZmlsZSB0eXBlcyxcXG4raW5jbHVkaW5nIHNwZWNpYWwgZmlsZXMgKEZJRk9zLCBzb2NrZXRzLCBibG9jayBkZXZpY2VzLCBjaGFyYWN0ZXIgZGV2aWNlcylcXG4rd2hlcmUgb3BlbmluZyB0aGUgZmlsZSBtYXkgaGF2ZSBzaWRlIGVmZmVjdHMgb3IgbWF5IG5vdCBiZSBwb3NzaWJsZS5cXG4rV2l0aFxcbisuQlIgaW9jdGwgKDIpLFxcbitpdCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIG9idGFpbiBhIGZpbGUgZGVzY3JpcHRvciB0aGF0IHJlZmVyc1xcbitkaXJlY3RseSB0byB0aGUgZmlsZXN5c3RlbSBpbm9kZSBmb3Igc3BlY2lhbCBmaWxlcy5cXG4rLlBcXG4rQXMgd2l0aFxcbisuQlIgb3BlbmF0ICgyKSxcXG4raWZcXG4rLkkgcGF0aG5hbWVcXG4raXMgcmVsYXRpdmUsXFxuK3RoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeVxcbityZWZlcnJlZCB0byBieSB0aGUgZmlsZSBkZXNjcmlwdG9yXFxuKy5JIGRpcmZkXFxuKyhvciB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvZiB0aGUgY2FsbGluZyBwcm9jZXNzLFxcbitpZlxcbisuSSBkaXJmZFxcbitpcyB0aGUgc3BlY2lhbCB2YWx1ZVxcbisuQlIgQVRfRkRDV0QgKS5cXG4rSWZcXG4rLkkgcGF0aG5hbWVcXG4raXMgYWJzb2x1dGUsXFxuK3RoZW5cXG4rLkkgZGlyZmRcXG4raXMgaWdub3JlZC5cXG4rLlBcXG4rVGhlXFxuKy5JIGZhdHRyXFxuK2FyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBhXFxuKy5JIGZpbGVfYXR0clxcbitzdHJ1Y3R1cmUsXFxuK3doaWNoIHNwZWNpZmllcyB0aGUgYXR0cmlidXRlcyB0byBzZXQgb24gdGhlIGZpbGUuXFxuK1RoaXMgc3RydWN0dXJlIGlzIGRlc2NyaWJlZCBpblxcbisuQlIgZmlsZV9hdHRyICgydHlwZSkuXFxuKy5QXFxuK1RoZVxcbisuSSBzaXplXFxuK2FyZ3VtZW50IHNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnlcXG4rLklSIGZhdHRyIC5cXG4rVGhlIHNpemUgaW5kaWNhdGVzIHZlcnNpb24gb2YgdGhlIHN0cnVjdHVyZSBpbiB1c2UsIHJlZmVyIHRvXFxuKy5CIGZpbGVfYXR0cigydHlwZSlcXG4rZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdmVyc2lvbmluZy5cXG4rLlBcXG4rVXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIHplcm8taW5pdGlhbGl6ZVxcbisuSSBzdHJ1Y3QgZmlsZV9hdHRyXFxuK3RvIGVuc3VyZSB0aGF0IGZ1dHVyZSBmaWVsZHMgYWRkZWQgdG8gdGhlIHN0cnVjdHVyZVxcbit3aWxsIGJlIHRyZWF0ZWQgYXMgbm8tb3BzIGlmIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBpcyB1cGRhdGVkXFxuK2J1dCB0aGUgYXBwbGljYXRpb24gaXMgbm90LlxcbisuUFxcbitUaGVcXG4rLkkgZmxhZ3NcXG4rYXJndW1lbnQgaXMgYSBiaXQgbWFzayB0aGF0IGNhbiBpbmNsdWRlIHplcm8gb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcXG4rLlRQXFxuKy5CIEFUX0VNUFRZX1BBVEhcXG4rSWZcXG4rLkkgcGF0aG5hbWVcXG4raXMgYW4gZW1wdHkgc3RyaW5nLFxcbitvcGVyYXRlIG9uIHRoZSBmaWxlIHJlZmVycmVkIHRvIGJ5XFxuKy5JIGRpcmZkXFxuKyh3aGljaCBtYXkgaGF2ZSBiZWVuIG9idGFpbmVkIHVzaW5nIHRoZVxcbisuQlIgb3BlbiAoMilcXG4rLkIgT19QQVRIXFxuK2ZsYWcpLlxcbitJbiB0aGlzIGNhc2UsXFxuKy5JIGRpcmZkXFxuK2NhbiByZWZlciB0byBhbnkgdHlwZSBvZiBmaWxlLFxcbitub3QganVzdCBhIGRpcmVjdG9yeS5cXG4rSWZcXG4rLkkgZGlyZmRcXG4raXNcXG4rLkJSIEFUX0ZEQ1dEICxcXG4rdGhlIGNhbGwgZmFpbHMgd2l0aCB0aGUgZXJyb3JcXG4rLkJSIEVCQURGIC5cXG4rLlRQXFxuKy5CIEFUX1NZTUxJTktfTk9GT0xMT1dcXG4rSWZcXG4rLkkgcGF0aG5hbWVcXG4raXMgYSBzeW1ib2xpYyBsaW5rLFxcbitkbyBub3QgZGVyZWZlcmVuY2UgaXQ6XFxuK2luc3RlYWQgc2V0IGF0dHJpYnV0ZXMgb24gdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmLlxcbitCeSBkZWZhdWx0IChpLmUuLCBpZiB0aGlzIGZsYWcgaXMgbm90IHNwZWNpZmllZCksXFxuK3N5bWJvbGljIGxpbmtzIGFyZSBkZXJlZmVyZW5jZWQuXFxuKy5TSCBSRVRVUk4gVkFMVUVcXG4rT24gc3VjY2VzcyxcXG4remVybyBpcyByZXR1cm5lZC5cXG4rT24gZXJyb3IsXFxuK1xcXFwtMSBpcyByZXR1cm5lZCxcXG4rYW5kXFxuKy5JIGVycm5vXFxuK2lzIHNldCB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuXFxuKy5TSCBFUlJPUlNcXG4rLlRQXFxuKy5CIEUyQklHXFxuKy5JIHNpemVcXG4raXMgbGFyZ2VyIHRoYW5cXG4rLkJSIFBBR0VfU0laRSAuXFxuKy5UUFxcbisuQiBFMkJJR1xcbisuSSBzaXplXFxuK2luZGljYXRlcyB0aGUgdmVyc2lvbiB3aGljaCBrZXJuZWwgZG9lc24ndCBzdXBwb3J0ICh0aGUgc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGVcXG4ra2VybmVsIGV4cGVjdHMpIGFuZCBuZXcgZmllbGRzIGFyZSBub24temVyby5cXG4rLlRQXFxuKy5CIEVBQ0NFU1xcbitTZWFyY2ggcGVybWlzc2lvbiBpcyBkZW5pZWQgZm9yIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXNcXG4raW4gdGhlIHBhdGggcHJlZml4IG9mXFxuKy5JUiBwYXRobmFtZSAuXFxuKyhTZWUgYWxzb1xcbisuQlIgcGF0aF9yZXNvbHV0aW9uICg3KS4pXFxuKy5UUFxcbisuQiBFQkFERlxcbisuSSBwYXRobmFtZVxcbitpcyByZWxhdGl2ZSBidXRcXG4rLkkgZGlyZmRcXG4raXMgbmVpdGhlclxcbisuQiBBVF9GRENXRFxcbitub3IgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IuXFxuKy5UUFxcbisuQiBFQkFERlxcbisuSSBwYXRobmFtZVxcbitpcyBhbiBlbXB0eSBzdHJpbmcsXFxuKy5CIEFUX0VNUFRZX1BBVEhcXG4rd2FzIHNwZWNpZmllZCBpblxcbisuSVIgZmxhZ3MgLFxcbithbmRcXG4rLkkgZGlyZmRcXG4raXMgYW4gaW52YWxpZCBmaWxlIGRlc2NyaXB0b3IuXFxuKy5UUFxcbisuQiBFRkFVTFRcXG4rLkkgcGF0aG5hbWVcXG4rb3JcXG4rLkkgZmF0dHJcXG4raXMgYW4gaW52YWxpZCBwb2ludGVyLlxcbisuVFBcXG4rLkIgRUlOVkFMXFxuK0ludmFsaWQgZmxhZyBzcGVjaWZpZWQgaW5cXG4rLklSIGZsYWdzIC5cXG4rLlRQXFxuKy5CIEVJTlZBTFxcbisuSSBzaXplXFxuK2lzIHNtYWxsZXIgdGhhblxcbisuQlIgRklMRV9BVFRSX1NJWkVfVkVSMCAuXFxuKy5UUFxcbisuQiBFSU5WQUxcXG4rSW52YWxpZCBjb21iaW5hdGlvbiBvZiBwYXJhbWV0ZXJzIHByb3ZpZGVkIGluXFxuKy5JIGZhdHRyXFxuK2ZvciB0aGlzIHR5cGUgb2YgZmlsZSBvciBmaWxlc3lzdGVtLlxcbisuVFBcXG4rLkIgRUxPT1BcXG4rVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQgd2hpbGUgcmVzb2x2aW5nXFxuKy5JUiBwYXRobmFtZSAuXFxuKy5UUFxcbisuQiBFTkFNRVRPT0xPTkdcXG4rLkkgcGF0aG5hbWVcXG4raXMgdG9vIGxvbmcuXFxuKy5UUFxcbisuQiBFTk9FTlRcXG4rQSBjb21wb25lbnQgb2ZcXG4rLkkgcGF0aG5hbWVcXG4rZG9lcyBub3QgZXhpc3QsXFxuK29yXFxuKy5JIHBhdGhuYW1lXFxuK2lzIGFuIGVtcHR5IHN0cmluZyBhbmRcXG4rLkIgQVRfRU1QVFlfUEFUSFxcbit3YXMgbm90IHNwZWNpZmllZCBpblxcbisuSVIgZmxhZ3MgLlxcbisuVFBcXG4rLkIgRU5PTUVNXFxuK0luc3VmZmljaWVudCBrZXJuZWwgbWVtb3J5IHdhcyBhdmFpbGFibGUuXFxuKy5UUFxcbisuQiBFTk9URElSXFxuK0EgY29tcG9uZW50IG9mIHRoZSBwYXRoIHByZWZpeCBvZlxcbisuSSBwYXRobmFtZVxcbitpcyBub3QgYSBkaXJlY3Rvcnkgb3IsXFxuKy5JIHBhdGhuYW1lXFxuK2lzIHJlbGF0aXZlIGFuZFxcbisuSSBkaXJmZFxcbitpcyBhIGZpbGUgZGVzY3JpcHRvciByZWZlcnJpbmcgdG8gYSBmaWxlIG90aGVyIHRoYW4gYSBkaXJlY3RvcnkuXFxuKy5UUFxcbisuQiBFT1BOT1RTVVBQXFxuK1RoZSBmaWxlc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgc2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoaXMgdHlwZSBvZiBpbm9kZS5cXG4rLlRQXFxuKy5CIEVQRVJNXFxuK1RoZSBjYWxsZXIgZG9lcyBub3QgaGF2ZSB0aGUgbmVjZXNzYXJ5IHBlcm1pc3Npb25zXFxuK3RvIGNoYW5nZSB0aGUgZmlsZSBhdHRyaWJ1dGVzLlxcbisuVFBcXG4rLkIgRVJPRlNcXG4rVGhlIGZpbGUgaXMgb24gYSByZWFkLW9ubHkgZmlsZXN5c3RlbS5cXG4rLlNIIEhJU1RPUllcXG4rLlNTIExpbnV4IDYuMTdcXG4rVGhpcyBzeXN0ZW0gY2FsbCBpcyBpbnRyb2R1Y2VkIGFzIGEgbW9yZSBmbGV4aWJsZSBhbHRlcm5hdGl2ZSB0byB0aGVcXG4rRlNfSU9DX0ZTU0VUWEFUVFJcXG4rLkJSIGlvY3RsICgyKVxcbit3aGljaCBjb3VsZCB3b3JrIG9uIGFueSB0eXBlIG9mIGZpbGVzLlxcbisuU0ggTk9URVNcXG4rVGhpcyBzeXN0ZW0gY2FsbCBpcyBkZXNpZ25lZCB0byBiZSBleHRlbnNpYmxlLlxcbitUaGVcXG4rLkkgc2l6ZVxcbithcmd1bWVudCBhbGxvd3MgdXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgdG8gaW5kaWNhdGVcXG4rd2hpY2ggdmVyc2lvbiBvZiB0aGVcXG4rLkkgZmlsZV9hdHRyXFxuK3N0cnVjdHVyZSB0aGV5IGFyZSB1c2luZyxcXG4rZW5hYmxpbmcgdGhlIGtlcm5lbCB0byBzdXBwb3J0IGJvdGggb2xkIGFuZCBuZXcgdmVyc2lvbnNcXG4rb2YgdGhlIHN0cnVjdHVyZSBzaW11bHRhbmVvdXNseS5cXG4rLlBcXG4rSWZcXG4rLkkgc2l6ZVxcbitpcyBzbWFsbGVyIHRoYW4gdGhlIHN0cnVjdHVyZSBzaXplIHRoZSBrZXJuZWwgZXhwZWN0cyxcXG4rdGhlIGtlcm5lbCB0cmVhdHMgdGhlIG1pc3NpbmcgZmllbGRzIGFzIGhhdmluZyB6ZXJvIHZhbHVlc1xcbisod2hpY2ggaXMgYSBuby1vcCkuXFxuK0lmXFxuKy5JIHNpemVcXG4raXMgbGFyZ2VyIHRoYW4gZXhwZWN0ZWQsXFxuK3RoZSBrZXJuZWwgY2hlY2tzIHRoYXQgYWxsIHVua25vd24gKHRvIHRoZSBrZXJuZWwpIGZpZWxkcyBhcmUgemVybztcXG4raWYgbm90LFxcbit0aGUgY2FsbCBmYWlscyB3aXRoXFxuKy5CUiBFMkJJRyAuXFxuKy5TSCBFWEFNUExFU1xcbitUaGUgcHJvZ3JhbSBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIHVzZSBvZlxcbisuQlIgZmlsZV9zZXRhdHRyICgpXFxuK3RvIHNldCB0aGVcXG4rLkIgRlNfWEZMQUdfTk9EVU1QXFxuK2ZsYWcgb24gYSBmaWxlLlxcbisuUFxcbisuaW4gKzRuXFxuKy5FWFxcbisjaW5jbHVkZSBcXHUwMDNjZmNudGwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ZjbnRsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9mcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3RkaW8uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3N0ZGxpYi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3RyaW5nLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzeXMvc3lzY2FsbC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjdW5pc3RkLmhcXHUwMDNlXFxuK1xcbisjaWZuZGVmIFNZU19maWxlX2dldGF0dHJcXG4rI2RlZmluZSBTWVNfZmlsZV9nZXRhdHRyIDQ2N1xcbisjZW5kaWZcXG4rXFxuKyNpZm5kZWYgU1lTX2ZpbGVfc2V0YXR0clxcbisjZGVmaW5lIFNZU19maWxlX3NldGF0dHIgNDY4XFxuKyNlbmRpZlxcbitcXG4raW50XFxuK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4re1xcbisgICAgc3RydWN0IGZpbGVfYXR0ciBmYSA9IHsgMCB9O1xcbisgICAgaW50IGRmZDtcXG4rICAgIGxvbmcgcmV0O1xcbitcXG4rICAgIGlmIChhcmdjICE9IDIpIHtcXG4rICAgICAgICBmcHJpbnRmKHN0ZGVyciwgXFxcIlVzYWdlOiAlcyBcXHUwMDNjZmlsZW5hbWVcXHUwMDNlXFxcXFxcXFxuXFxcIiwgYXJndlswXSk7XFxuKyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xcbisgICAgfVxcbitcXG4rICAgIGRmZCA9IG9wZW4oYXJndlsxXSwgT19SRE9OTFkpO1xcbisgICAgaWYgKGRmZCA9PSBcXFxcLTEpIHtcXG4rICAgICAgICBwZXJyb3IoXFxcIm9wZW5cXFwiKTtcXG4rICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XFxuKyAgICB9XFxuK1xcbisgICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBkZmQsIFxcXCJcXFwiLCBcXHUwMDI2ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpO1xcbisgICAgaWYgKHJldCA9PSBcXFxcLTEpIHtcXG4rICAgICAgICBwZXJyb3IoXFxcImZpbGVfZ2V0YXR0clxcXCIpO1xcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcXG4rICAgIH1cXG4rXFxuKyAgICBwcmludGYoXFxcIkN1cnJlbnQgZmxhZ3M6IDB4JWxseFxcXFxcXFxcblxcXCIsICh1bnNpZ25lZCBsb25nIGxvbmcpZmEuZmFfeGZsYWdzKTtcXG4rXFxuKyAgICBmYS5mYV94ZmxhZ3MgfD0gRlNfWEZMQUdfTk9EVU1QO1xcbitcXG4rICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfc2V0YXR0ciwgZGZkLCBcXFwiXFxcIiwgXFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcXG4rICAgIGlmIChyZXQgPT0gXFxcXC0xKSB7XFxuKyAgICAgICAgcGVycm9yKFxcXCJmaWxlX3NldGF0dHJcXFwiKTtcXG4rICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XFxuKyAgICB9XFxuK1xcbisgICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBkZmQsIFxcXCJcXFwiLCBcXHUwMDI2ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpO1xcbisgICAgaWYgKHJldCA9PSBcXFxcLTEpIHtcXG4rICAgICAgICBwZXJyb3IoXFxcImZpbGVfZ2V0YXR0clxcXCIpO1xcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcXG4rICAgIH1cXG4rXFxuKyAgICBpZiAoZmEuZmFfeGZsYWdzIFxcdTAwMjYgRlNfWEZMQUdfTk9EVU1QKVxcbisgICAgICAgIHByaW50ZihcXFwiZmxhZ3MgMHglbGx4IChOT0RVTVAgZmxhZyBpcyBzZXQpXFxcXFxcXFxuXFxcIixcXG4rICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylmYS5mYV94ZmxhZ3MpO1xcbitcXG4rICAgIGV4aXQoRVhJVF9TVUNDRVNTKTtcXG4rfVxcbisuRUVcXG4rLmluXFxuKy5TSCBTRUUgQUxTT1xcbisuQlIgZmlsZV9nZXRhdHRyICgyKSxcXG4rLkJSIGlvY3RsICgyKSxcXG4rLkJSIGlvY3RsX2ZzICgyKSxcXG4rLkJSIG9wZW5hdCAoMiksXFxuKy5CUiBmaWxlX2F0dHIgKDJ0eXBlKSxcXG4rLkJSIHBhdGhfcmVzb2x1dGlvbiAoNylcXG5kaWZmIC0tZ2l0IGEvbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSBiL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGVcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmZkNDI2YzE5ZjVmMGJcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZVxcbkBAIC0wLDAgKzEsMTg3IEBAXFxuKy5cXFxcXFxcIiBDb3B5cmlnaHQsIHRoZSBhdXRob3JzIG9mIHRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdFxcbisuXFxcXFxcXCJcXG4rLlxcXFxcXFwiIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMaW51eC1tYW4tcGFnZXMtY29weWxlZnRcXG4rLlxcXFxcXFwiXFxuKy5USCBmaWxlX2F0dHIgMnR5cGUgKGRhdGUpIFxcXCJMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpXFxcIlxcbisuU0ggTkFNRVxcbitmaWxlX2F0dHIgXFxcXC0gZGVzY3JpYmUgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXMgdG8gZ2V0IG9yIHNldFxcbisuU0ggU1lOT1BTSVNcXG4rLkVYXFxuKy5CICNpbmNsdWRlIFxcdTAwM2NsaW51eC9mcy5oXFx1MDAzZVxcbisuUFxcbisuQiBzdHJ1Y3QgZmlsZV9hdHRyIHtcXG4rLkJSIFxcXCIgICAgdTY0ICBmYV94ZmxhZ3M7XFxcIiBcXFwiICAgICAvKiBFeHRlbmRlZCBmbGFncyAqL1xcXCJcXG4rLkJSIFxcXCIgICAgdTMyICBmYV9leHRzaXplO1xcXCIgXFxcIiAgICAvKiBFeHRlbnQgc2l6ZSBoaW50ICovXFxcIlxcbisuQlIgXFxcIiAgICB1MzIgIGZhX25leHRlbnRzO1xcXCIgXFxcIiAgIC8qIE51bWJlciBvZiBleHRlbnRzIChyZWFkLW9ubHkpICovXFxcIlxcbisuQlIgXFxcIiAgICB1MzIgIGZhX3Byb2ppZDtcXFwiIFxcXCIgICAgIC8qIFByb2plY3QgaWRlbnRpZmllciAqL1xcXCJcXG4rLkJSIFxcXCIgICAgdTMyICBmYV9jb3dleHRzaXplO1xcXCIgXFxcIiAvKiBDb1cgZXh0ZW50IHNpemUgaGludCAqL1xcXCJcXG4rLkIgfTtcXG4rLkVFXFxuKy5TSCBERVNDUklQVElPTlxcbitEZXNjcmliZXMgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXNcXG4rZm9yIHVzZSB3aXRoIHRoZVxcbisuQlIgZmlsZV9nZXRhdHRyICgyKVxcbithbmRcXG4rLkJSIGZpbGVfc2V0YXR0ciAoMilcXG4rc3lzdGVtIGNhbGxzLlxcbisuUFxcbitUaGUgZmllbGRzIGFyZSBhcyBmb2xsb3dzOlxcbisuVFBcXG4rLkkgZmFfeGZsYWdzXFxuK1RoaXMgZmllbGQgY29udGFpbnMgZmlsZSBhdHRyaWJ1dGUgZmxhZ3MuXFxuK0l0IGlzIGEgYml0IG1hc2sgY29uc2lzdGluZyBvZiB6ZXJvIG9yIG1vcmUgb2YgdGhlXFxuKy5CIEZTX1hGTEFHXypcXG4rZmxhZ3MuXFxuK1JlZmVyIHRvIHRoZSBzZWN0aW9uXFxuKy5CIEZMQUdTXFxuK2JlbG93IGZvciBhIGxpc3Qgb2YgYWxsIGZsYWdzLlxcbisuVFBcXG4rLkkgZmFfZXh0c2l6ZVxcbitFeHRlbnQgc2l6ZSBhbGxvY2F0b3IgaGludCBpbiBieXRlcy5cXG4rVGhpcyB2YWx1ZSBzdWdnZXN0cyBhIHByZWZlcnJlZCBleHRlbnQgc2l6ZVxcbitmb3IgbmV3IGFsbG9jYXRpb25zIHRvIHRoaXMgZmlsZS5cXG4rLlRQXFxuKy5JIGZhX25leHRlbnRzXFxuK051bWJlciBvZiBkYXRhIGV4dGVudHMgaW4gdGhlIGZpbGUgKHJlYWQtb25seSkuXFxuK1RoaXMgZmllbGQgaXMgZmlsbGVkIGluIGJ5XFxuKy5CUiBmaWxlX2dldGF0dHIgKDIpXFxuK2FuZCBpcyBpZ25vcmVkIGJ5XFxuKy5CUiBmaWxlX3NldGF0dHIgKDIpLlxcbisuVFBcXG4rLkkgZmFfcHJvamlkXFxuK1Byb2plY3QgaWRlbnRpZmllci5cXG4rVXNlZCBieSBxdW90YSBzeXN0ZW1zIHRvIGdyb3VwIHJlbGF0ZWQgZmlsZXMuXFxuKy5UUFxcbisuSSBmYV9jb3dleHRzaXplXFxuK0NvcHktb24tV3JpdGUgKENvVykgZXh0ZW50IHNpemUgaGludCBpbiBieXRlcy5cXG4rVGhpcyB2YWx1ZSBzdWdnZXN0cyBhIHByZWZlcnJlZCBleHRlbnQgc2l6ZVxcbitmb3IgQ29XIG9wZXJhdGlvbnMuXFxuKy5TSCBGTEFHU1xcbitGbGFncyBjYW4gYmU6XFxuKy5SU1xcbisuVFBcXG4rLkIgRlNfWEZMQUdfUkVBTFRJTUVcXG4rRGF0YSBpcyBzdG9yZWQgaW4gYSByZWFsdGltZSB2b2x1bWUuXFxuKy5UUFxcbisuQiBGU19YRkxBR19JTU1VVEFCTEVcXG4rRmlsZSBjYW5ub3QgYmUgbW9kaWZpZWQuXFxuKy5UUFxcbisuQiBGU19YRkxBR19BUFBFTkRcXG4rQWxsIHdyaXRlcyBtdXN0IGFwcGVuZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfU1lOQ1xcbitBbGwgd3JpdGVzIGFyZSBzeW5jaHJvbm91cy5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX05PQVRJTUVcXG4rRG8gbm90IHVwZGF0ZSBmaWxlIGFjY2VzcyB0aW1lIG9uIHJlYWRzLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfTk9EVU1QXFxuK0RvIG5vdCBpbmNsdWRlIGZpbGUgaW4gYmFja3Vwcy5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX0RBWFxcbitVc2UgRGlyZWN0IEFjY2VzcyAoREFYKSBmb3IgSS9PIG9wZXJhdGlvbnMuXFxuKy5UUFxcbisuQiBGU19YRkxBR19OT0RFRlJBR1xcbitFeGNsdWRlIHRoaXMgZmlsZSBmcm9tIGRlZnJhZ21lbnRhdGlvbiBvcGVyYXRpb25zLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfRklMRVNUUkVBTVxcbitVc2UgZmlsZXN0cmVhbSBhbGxvY2F0b3IgZm9yIHRoaXMgZmlsZS5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX0VYVFNJWkVcXG4rVXNlIHRoZSBleHRlbnQgc2l6ZSBoaW50IGZyb20gdGhlXFxuKy5JIGZhX2V4dHNpemVcXG4rZmllbGQuXFxuKy5UUFxcbisuQiBGU19YRkxBR19DT1dFWFRTSVpFXFxuK1VzZSB0aGUgQ29XIGV4dGVudCBzaXplIGhpbnQgZnJvbSB0aGVcXG4rLkkgZmFfY293ZXh0c2l6ZVxcbitmaWVsZC5cXG4rLlJFXFxuKy5QXFxuK0RpcmVjdG9yeSBvbmx5IGZsYWdzOlxcbisuUlNcXG4rLlRQXFxuKy5CIEZTX1hGTEFHX1JUSU5IRVJJVFxcbitOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSByZWFsdGltZSBmbGFnLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfTk9TWU1MSU5LU1xcbitEaXNhbGxvdyBjcmVhdGlvbiBvZiBzeW1ib2xpYyBsaW5rcyBpbiB0aGlzIGRpcmVjdG9yeS5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX0VYVFNaSU5IRVJJVFxcbitOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSBleHRlbnQgc2l6ZSBoaW50LlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfUFJPSklOSEVSSVRcXG4rTmV3IGZpbGVzIGNyZWF0ZWQgaW4gdGhpcyBkaXJlY3RvcnkgaW5oZXJpdCB0aGUgcHJvamVjdCBpZGVudGlmaWVyLlxcbisuUkVcXG4rLlBcXG4rVGhlIGZvbGxvd2luZyBmbGFncyBhcmUgcmVhZC1vbmx5OlxcbisuUlNcXG4rLlRQXFxuKy5CIEZTX1hGTEFHX1BSRUFMTE9DXFxuK0ZpbGUgaGFzIHByZWFsbG9jYXRlZCBleHRlbnRzLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfSEFTQVRUUlxcbitGaWxlIGhhcyBleHRlbmRlZCBhdHRyaWJ1dGVzLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfVkVSSVRZXFxuK0ZpbGUgaGFzIGZzLXZlcml0eSBlbmFibGVkLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfQ0FTRUZPTERcXG4rVGhlIGZpbGVzeXN0ZW0gcGVyZm9ybXMgY2FzZS1pbnNlbnNpdGl2ZSBsb29rdXBzIChmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZVxcbitjb21wYXJpc29ucyBpZ25vcmUgY2FzZSkuXFxuKy5UUFxcbisuQiBGU19YRkxBR19DQVNFTk9OUFJFU0VSVklOR1xcbitUaGUgZmlsZXN5c3RlbSBkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUgY2FzZSBvZiBmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZXMuXFxuKy5SRVxcbisuUFxcbitOb3QgYWxsIGZpbGVzeXN0ZW1zIHN1cHBvcnQgYWxsIGZsYWdzLlxcbitTZXR0aW5nIHVuc3VwcG9ydGVkIGZsYWdzIG1heSByZXN1bHQgaW4gYW5cXG4rLkIgRUlOVkFMXFxuK29yXFxuKy5CIEVPUE5PVFNVUFBcXG4rZXJyb3IuXFxuKy5TSCBWRVJTSU9OU1xcbisuU1MgU3RydWN0dXJlIHNpemVcXG4rVGhlIHN0cnVjdHVyZSBzaXplIGlzIGRlZmluZWQgYnlcXG4rLkIgRklMRV9BVFRSX1NJWkVfVkVSKlxcbit3aGljaCBpcyBhbHNvIGEgdmVyc2lvbiBvZiB0aGUgc3RydWN0dXJlIGJlaW5nIHVzZWQuXFxuK1RoZVxcbisuSSBzaXplXFxuK3BhcmFtZXRlciBwYXNzZWQgdG9cXG4rLkJSIGZpbGVfZ2V0YXR0ciAoMilcXG4rYW5kXFxuKy5CUiBmaWxlX3NldGF0dHIgKDIpXFxuK2luZGljYXRlcyB0aGUgdmVyc2lvbiBvZlxcbisuSSBzdHJ1Y3QgZmlsZV9hdHRyXFxcXGZQLlxcbisuU1MgRklMRV9BVFRSX1NJWkVfVkVSMFxcbitTaXplIGlzIDI0IGJ5dGVzLlxcbisuU0ggSElTVE9SWVxcbisuU1MgTGludXggdjYuMTdcXG4rVGhpcyBzdHJ1Y3R1cmUgaXMgaW50cm9kdWNlZC5cXG4rVGhlXFxuKy5JIHN0cnVjdCBmaWxlX2F0dHJcXG4rcHJvdmlkZXMgc2ltaWxhciBmdW5jdGlvbmFsaXR5IHRvXFxuKy5JIHN0cnVjdCBmc3hhdHRyXFxuK3VzZWQgYnkgdGhlXFxuKy5CIEZTX0lPQ19GU0dFVFhBVFRSXFxuK2FuZFxcbisuQiBGU19JT0NfRlNTRVRYQVRUUlxcbisuQlIgaW9jdGwgKDIpXFxuK29wZXJhdGlvbnMsXFxuK2J1dCBpcyBkZXNpZ25lZCB0byBiZSBleHRlbnNpYmxlIHRocm91Z2ggdGhlXFxuKy5JIHNpemVcXG4rcGFyYW1ldGVyIG9mIHRoZSBzeXN0ZW0gY2FsbHMuXFxuKy5QXFxuK0V4dHJhIGZpZWxkcyBtYXkgYmUgYXBwZW5kZWQgdG8gdGhlIHN0cnVjdHVyZSBpbiBmdXR1cmUga2VybmVsIHZlcnNpb25zLlxcbitUaGUga2VybmVsIHdpbGwgZXhwZWN0IG5ldyBmaWVsZHMgdG8gYmUgemVyb3NcXG4rZm9yIG9sZGVyIHZlcnNpb25zIG9mIHRoZSBzdHJ1Y3R1cmUuXFxuK1RoZXJlZm9yZSwgYSB1c2VyXFxuKy5JIG11c3RcXG4remVyby1maWxsIHRoZSBzdHJ1Y3R1cmUgb24gaW5pdGlhbGl6YXRpb24gdG8ga2VlcCBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXJcXG4ra2VybmVscy5cXG4rLlNTIExpbnV4IHY3LjJcXG4rVGhlIEZTX1hGTEFHX0NBU0VGT0xEIGFuZCBGU19YRkxBR19DQVNFTk9OUFJFU0VSVklORyBhcmUgaW50cm9kdWNlZCB0byBlbmFibGVcXG4rdXBwZXIgbGF5ZXJzLCBzdWNoIGFzIE5GU0QsIHRvIHJldHJpZXZlIGNhc2Ugc2Vuc2l0aXZpdHkgaW5mb3JtYXRpb24uXFxuKy5TSCBTRUUgQUxTT1xcbisuQlIgZmlsZV9nZXRhdHRyICgyKSxcXG4rLkJSIGZpbGVfc2V0YXR0ciAoMilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6NDc6MzUuMzM5OTMxNzg2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo5MzcyMzI2MTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgb25seSBhZGRzIHVzZXItc3BhY2UgbWFuLXBhZ2UgZG9jdW1lbnRhdGlvbiBmaWxlcyB1bmRlciB0aGUgbWFuLyBkaXJlY3RvcnkgKG1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLCBtYW4vbWFuMi9maWxlX3NldGF0dHIuMiwgYW5kIG1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUpIGFuZCBkb2VzIG5vdCBtb2RpZnkgYW55IGV4ZWN1dGFibGUga2VybmVsIHNvdXJjZSBjb2RlIG9yIGRhdGEgc3RydWN0dXJlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjA0N2RhZDAxMDU3ODY4OWUyZTZlMDQ4YzdlM2NiYWU2YTZkOGNkZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDcgMTc6NDc6MzIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tYW4vbWFuMi9maWxlX2dldGF0dHIuMiBiL21hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uZjFhZWMyYWQ4YzQyNVxuLS0tIC9kZXYvbnVsbFxuKysrIGIvbWFuL21hbjIvZmlsZV9nZXRhdHRyLjJcbkBAIC0wLDAgKzEsMjg2IEBAXG4rLlxcXCIgQ29weXJpZ2h0LCB0aGUgYXV0aG9ycyBvZiB0aGUgTGludXggbWFuLXBhZ2VzIHByb2plY3RcbisuXFxcIlxuKy5cXFwiIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMaW51eC1tYW4tcGFnZXMtY29weWxlZnRcbisuXFxcIlxuKy5USCBmaWxlX2dldGF0dHIgMiAoZGF0ZSkgXCJMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpXCJcbisuU0ggTkFNRVxuK2ZpbGVfZ2V0YXR0ciBcXC0gZ2V0IGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlc1xuKy5TSCBTWU5PUFNJU1xuKy5uZlxuKy5CUiBcIiNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZjbnRsLmhcdTAwM2VcIiBcIiAgICAgIC8qIFwiIEFUXyogXCIgY29uc3RhbnRzICovXCJcbisuQlIgXCIjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXCIgXCIgICAgICAgICAvKiBzdHJ1Y3QgXCIgZmlsZV9hdHRyIFwiIGFuZCBcIiBGU19YRkxBR18qIFwiIGNvbnN0YW50cyAqL1wiXG4rLkJSIFwiI2luY2x1ZGUgXHUwMDNjc3lzL3N5c2NhbGwuaFx1MDAzZVwiIFwiICAgICAgLyogXCIgU1lTXyogXCIgY29uc3RhbnRzICovXCJcbisuQiAjaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxuKy5QXG4rLkIgbG9uZyBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsXG4rLkJJIFwiICAgICAgICAgICAgICAgaW50IFwiIGRpcmZkIFwiLCBjb25zdCBjaGFyICpcIiBwYXRobmFtZSAsXG4rLkJJIFwiICAgICAgICAgICAgICAgc3RydWN0IGZpbGVfYXR0ciAqXCIgZmF0dHIgXCIsIHNpemVfdCBcIiBzaXplICxcbisuQkkgXCIgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgXCIgZmxhZ3MgKTtcbisuZmlcbisuUFxuKy5JUiBOb3RlIDpcbitnbGliYyBwcm92aWRlcyBubyB3cmFwcGVyIGZvclxuKy5CUiBmaWxlX2dldGF0dHIgKCksXG4rdXNlXG4rLkJSIHN5c2NhbGwgKDIpXG4raW5zdGVhZC5cbisuU0ggREVTQ1JJUFRJT05cbitUaGVcbisuQlIgZmlsZV9nZXRhdHRyICgpXG4rc3lzdGVtIGNhbGwgcmV0cmlldmVzIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzXG4rZnJvbSB0aGUgZmlsZSBzcGVjaWZpZWQgYnlcbisuSVIgcGF0aG5hbWUgLlxuKy5QXG4rVGhpcyBzeXN0ZW0gY2FsbCBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gdGhlXG4rLkIgRlNfSU9DX0ZTR0VUWEFUVFJcbisuQlIgaW9jdGwgKDIpXG4rb3BlcmF0aW9uLFxuK2J1dCB3aXRoIHRoZSBhZHZhbnRhZ2UgdGhhdCB0aGUgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGJlIG9wZW5lZC5cbitCeSB1c2luZyBhIHBhdGhuYW1lLFxuKy5CUiBmaWxlX2dldGF0dHIgKClcbitjYW4gcmV0cmlldmUgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXNcbitmcm9tIGFsbCBmaWxlIHR5cGVzLFxuK2luY2x1ZGluZyBzcGVjaWFsIGZpbGVzIHN1Y2ggYXMgRklGT3MsIHNvY2tldHMsIGJsb2NrIGRldmljZXMsIGNoYXJhY3RlclxuK2RldmljZXMsIGFuZCBzeW1saW5rcywgd2hlcmUgb3BlbmluZyB0YXJnZXRlZCBpbm9kZSBtYXkgbm90IGJlIHBvc3NpYmxlLlxuKy5QXG4rQXMgd2l0aFxuKy5CUiBvcGVuYXQgKDIpLFxuK2lmXG4rLkkgcGF0aG5hbWVcbitpcyByZWxhdGl2ZSxcbit0aGVuIGl0IGlzIGludGVycHJldGVkIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnlcbityZWZlcnJlZCB0byBieSB0aGUgZmlsZSBkZXNjcmlwdG9yXG4rLklSIGRpcmZkIC5cbitUaGUgc3BlY2lhbCB2YWx1ZVxuKy5CIEFUX0ZEQ1dEXG4rY291bGQgYmUgdXNlZCB0byByZWZlciB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvZiB0aGUgY2FsbGluZyBwcm9jZXNzLlxuK0lmXG4rLkkgcGF0aG5hbWVcbitpcyBhYnNvbHV0ZSxcbit0aGVuXG4rLkkgZGlyZmRcbitpcyBpZ25vcmVkLlxuKy5QXG4rVGhlXG4rLkkgZmF0dHJcbithcmd1bWVudCBpcyBhIHBvaW50ZXIgdG8gYVxuKy5JIGZpbGVfYXR0clxuK3N0cnVjdHVyZS5cbitUaGlzIHN0cnVjdHVyZSB3aWxsIGJlIGZpbGxlZCB3aXRoIGZpbGUgYXR0cmlidXRlcy5cbitUaGlzIHN0cnVjdHVyZSBpcyBkZXNjcmliZWQgaW5cbisuQlIgZmlsZV9hdHRyKDJ0eXBlKSAuXG4rLlBcbitUaGVcbisuSSBzaXplXG4rYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgcG9pbnRlZCB0byBieVxuKy5JUiBmYXR0ciAuXG4rVGhlIHNpemUgaW5kaWNhdGVzIHZlcnNpb24gb2YgdGhlIHN0cnVjdHVyZSBpbiB1c2UsIHJlZmVyIHRvXG4rLkIgZmlsZV9hdHRyKDJ0eXBlKVxuK2ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHZlcnNpb25pbmcuXG4rLlBcbitVc2Vyc3BhY2UgYXBwbGljYXRpb25zIHNob3VsZCB6ZXJvLWluaXRpYWxpemVcbisuSSBzdHJ1Y3QgZmlsZV9hdHRyXG4rYmVmb3JlIGNhbGxpbmdcbisuQlIgZmlsZV9nZXRhdHRyICgpXG4rdG8gZW5zdXJlIHRoYXQgZmllbGRzIG5vdCBmaWxsZWQgaW4gYnkgb2xkZXIga2VybmVsc1xuK3dpbGwgaGF2ZSBwcmVkaWN0YWJsZSB2YWx1ZXMuXG4rLlBcbitUaGVcbisuSSBmbGFnc1xuK2FyZ3VtZW50IGlzIGEgYml0IG1hc2ssIGF2YWlsYWJsZSBmbGFncyBhcmU6XG4rLlRQXG4rLkIgQVRfRU1QVFlfUEFUSFxuK0lmXG4rLkkgcGF0aG5hbWVcbitpcyBhbiBlbXB0eSBzdHJpbmcsXG4rb3BlcmF0ZSBvbiB0aGUgZmlsZSByZWZlcnJlZCB0byBieVxuKy5JUiBkaXJmZCAuXG4rSW4gdGhpcyBjYXNlLFxuKy5JIGRpcmZkXG4rY2FuIHJlZmVyIHRvIGFueSB0eXBlIG9mIGZpbGUsXG4rbm90IGp1c3QgYSBkaXJlY3RvcnkuXG4rSWZcbisuSSBkaXJmZFxuK2lzXG4rLkJSIEFUX0ZEQ1dEICxcbit0aGUgY2FsbCBmYWlscyB3aXRoIHRoZSBlcnJvclxuKy5CUiBFQkFERiAuXG4rLlRQXG4rLkIgQVRfU1lNTElOS19OT0ZPTExPV1xuK0lmXG4rLkkgcGF0aG5hbWVcbitpcyBhIHN5bWJvbGljIGxpbmssXG4rZG8gbm90IGRlcmVmZXJlbmNlIGl0O1xuK2luc3RlYWQgZ2V0IGF0dHJpYnV0ZXMgb2YgdGhlIHN5bWJvbGljIGxpbmsgaW5vZGUgaXRzZWxmLlxuK0J5IGRlZmF1bHQsIHN5bWJvbGljIGxpbmtzIGFyZSBkZXJlZmVyZW5jZWQuXG4rLlNIIFJFVFVSTiBWQUxVRVxuK09uIHN1Y2Nlc3MsXG4remVybyBpcyByZXR1cm5lZC5cbitPbiBlcnJvcixcbitcXC0xIGlzIHJldHVybmVkLFxuK2FuZFxuKy5JIGVycm5vXG4raXMgc2V0IHRvIGluZGljYXRlIHRoZSBlcnJvci5cbisuU0ggRVJST1JTXG4rLlRQXG4rLkIgRTJCSUdcbisuSSBzaXplXG4raXMgdG9vIGJpZyAobGFyZ2VyIHRoYW5cbisuQlIgUEFHRV9TSVpFICkuXG4rLlRQXG4rLkIgRUFDQ0VTXG4rU2VhcmNoIHBlcm1pc3Npb24gaXMgZGVuaWVkIGZvciBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzXG4raW4gdGhlIHBhdGggcHJlZml4IG9mXG4rLklSIHBhdGhuYW1lIC5cbisuVFBcbisuQiBFQkFERlxuKy5JIHBhdGhuYW1lXG4raXMgcmVsYXRpdmUgYnV0XG4rLkkgZGlyZmRcbitpcyBuZWl0aGVyXG4rLkIgQVRfRkRDV0Rcbitub3IgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IuXG4rLlRQXG4rLkIgRUJBREZcbisuSSBwYXRobmFtZVxuK2lzIGFuIGVtcHR5IHN0cmluZyxcbisuQiBBVF9FTVBUWV9QQVRIXG4rd2FzIHNwZWNpZmllZCxcbitidXRcbisuSSBkaXJmZFxuK2lzIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLlxuKy5UUFxuKy5CIEVGQVVMVFxuKy5JIHBhdGhuYW1lXG4rb3JcbisuSSBmYXR0clxuK2lzIGFuIGludmFsaWQgcG9pbnRlci5cbisuVFBcbisuQiBFSU5WQUxcbitJbnZhbGlkIGZsYWcgc3BlY2lmaWVkIGluXG4rLklSIGZsYWdzIC5cbisuVFBcbisuQiBFSU5WQUxcbisuSSBzaXplXG4raXMgc21hbGxlciB0aGFuXG4rLkJSIEZJTEVfQVRUUl9TSVpFX1ZFUjAgLlxuKy5UUFxuKy5CIEVMT09QXG4rVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQgd2hpbGUgcmVzb2x2aW5nXG4rLklSIHBhdGhuYW1lIC5cbisuVFBcbisuQiBFTkFNRVRPT0xPTkdcbisuSSBwYXRobmFtZVxuK2lzIHRvbyBsb25nLlxuKy5UUFxuKy5CIEVOT0VOVFxuK0EgY29tcG9uZW50IG9mXG4rLkkgcGF0aG5hbWVcbitkb2VzIG5vdCBleGlzdCxcbitvclxuKy5JIHBhdGhuYW1lXG4raXMgYW4gZW1wdHkgc3RyaW5nIGFuZFxuKy5CIEFUX0VNUFRZX1BBVEhcbit3YXMgbm90IHNwZWNpZmllZCBpblxuKy5JUiBmbGFncyAuXG4rLlRQXG4rLkIgRU5PTUVNXG4rSW5zdWZmaWNpZW50IGtlcm5lbCBtZW1vcnkgd2FzIGF2YWlsYWJsZS5cbisuVFBcbisuQiBFTk9URElSXG4rQSBjb21wb25lbnQgb2YgdGhlIHBhdGggcHJlZml4IG9mXG4rLkkgcGF0aG5hbWVcbitpcyBub3QgYSBkaXJlY3Rvcnkgb3IsXG4rLkkgcGF0aG5hbWVcbitpcyByZWxhdGl2ZSBhbmRcbisuSSBkaXJmZFxuK2lzIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVycmluZyB0byBhIGZpbGUgb3RoZXIgdGhhbiBhIGRpcmVjdG9yeS5cbisuVFBcbisuQiBFT1BOT1RTVVBQXG4rVGhlIGZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBnZXR0aW5nIGF0dHJpYnV0ZXMgb24gdGhpcyB0eXBlIG9mIGlub2RlLlxuKy5TSCBISVNUT1JZXG4rLlNTIExpbnV4IDYuMTdcbitUaGlzIHN5c3RlbSBjYWxsIGlzIGludHJvZHVjZWQgYXMgYSBtb3JlIGZsZXhpYmxlIGFsdGVybmF0aXZlIHRvIHRoZVxuK0ZTX0lPQ19GU0dFVFhBVFRSXG4rLkJSIGlvY3RsICgyKVxuK3doaWNoIGNvdWxkIHdvcmsgb24gYW55IHR5cGUgb2YgZmlsZXMuXG4rLlNIIE5PVEVTXG4rVGhpcyBzeXN0ZW0gY2FsbCBpcyBkZXNpZ25lZCB0byBiZSBleHRlbnNpYmxlLlxuK1RoZVxuKy5JIHNpemVcbithcmd1bWVudCBhbGxvd3MgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucyB0byBpbmRpY2F0ZVxuK3doaWNoIHZlcnNpb24gb2YgdGhlXG4rLkkgZmlsZV9hdHRyXG4rc3RydWN0dXJlIHRoZXkgYXJlIHVzaW5nLFxuK2VuYWJsaW5nIHRoZSBrZXJuZWwgdG8gc3VwcG9ydCBib3RoIG9sZCBhbmQgbmV3IHZlcnNpb25zXG4rb2YgdGhlIHN0cnVjdHVyZSBzaW11bHRhbmVvdXNseS5cbisuUFxuK0lmXG4rLkkgc2l6ZVxuK2lzIHNtYWxsZXIgdGhhbiB0aGUgc3RydWN0dXJlIHNpemUgdGhlIGtlcm5lbCBleHBlY3RzLFxuK29ubHkgdGhlIGZpZWxkcyB0aGF0IGZpdCB3aXRoaW5cbisuSSBzaXplXG4rd2lsbCBiZSBmaWxsZWQgaW4uXG4rSWZcbisuSSBzaXplXG4raXMgbGFyZ2VyIHRoYW4gdGhlIGtlcm5lbCdzIHN0cnVjdHVyZSBzaXplLFxuK3RoZSBleHRyYSBieXRlcyBhcmUgemVyb2VkLlxuKy5TSCBFWEFNUExFU1xuK1RoZSBwcm9ncmFtIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mXG4rLkJSIGZpbGVfZ2V0YXR0ciAoKVxuK3RvIHJldHJpZXZlIGFuZCBkaXNwbGF5IGZpbGUgYXR0cmlidXRlcy5cbisuUFxuKy5pbiArNG5cbisuRVhcbisjaW5jbHVkZSBcdTAwM2NmY250bC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZnMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3N0ZGlvLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzdGRsaWIuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxuK1xuKyNpZm5kZWYgU1lTX2ZpbGVfZ2V0YXR0clxuKyNkZWZpbmUgU1lTX2ZpbGVfZ2V0YXR0ciA0NjdcbisjZW5kaWZcbitcbitpbnRcbittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4re1xuKyAgICBzdHJ1Y3QgZmlsZV9hdHRyIGZhID0geyAwIH07XG4rICAgIGludCBkZmQ7XG4rICAgIGxvbmcgcmV0O1xuK1xuKyAgICBpZiAoYXJnYyAhPSAyKSB7XG4rICAgICAgICBmcHJpbnRmKHN0ZGVyciwgXCJVc2FnZTogJXMgXHUwMDNjZmlsZW5hbWVcdTAwM2VcXFxcblwiLCBhcmd2WzBdKTtcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbisgICAgfVxuK1xuKyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIEFUX0ZEQ1dELCBhcmd2WzFdLCBcdTAwMjZmYSwgc2l6ZW9mKGZhKSwgMCk7XG4rICAgIGlmIChyZXQgPT0gXFwtMSkge1xuKyAgICAgICAgcGVycm9yKFwiZmlsZV9nZXRhdHRyXCIpO1xuKyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xuKyAgICB9XG4rXG4rICAgIHByaW50ZihcIkZpbGUgYXR0cmlidXRlczpcXFxcblwiKTtcbisgICAgcHJpbnRmKFwiICB4ZmxhZ3M6ICAgICAweCVsbHhcXFxcblwiLCAodW5zaWduZWQgbG9uZyBsb25nKWZhLmZhX3hmbGFncyk7XG4rICAgIHByaW50ZihcIiAgZXh0c2l6ZTogICAgJXVcXFxcblwiLCBmYS5mYV9leHRzaXplKTtcbisgICAgcHJpbnRmKFwiICBuZXh0ZW50czogICAldVxcXFxuXCIsIGZhLmZhX25leHRlbnRzKTtcbisgICAgcHJpbnRmKFwiICBwcm9qaWQ6ICAgICAldVxcXFxuXCIsIGZhLmZhX3Byb2ppZCk7XG4rICAgIHByaW50ZihcIiAgY293ZXh0c2l6ZTogJXVcXFxcblwiLCBmYS5mYV9jb3dleHRzaXplKTtcbitcbisgICAgLypcbisgICAgICogVHJ5IHNldHRpbmcgTk9EVU1QIGZsYWcgd2l0aCBjaGF0dHIgK2QgLi9mb28gdG8gc2VlIHRoZSBkaWZmZXJlbmNlXG4rICAgICAqL1xuKyAgICBpZiAoZmEuZmFfeGZsYWdzIFx1MDAyNiBGU19YRkxBR19OT0RVTVApXG4rICAgICAgICBwcmludGYoXCIgIE5PRFVNUCBmbGFnIGlzIHNldFxcXFxuXCIpO1xuK1xuKyAgICBleGl0KEVYSVRfU1VDQ0VTUyk7XG4rfVxuKy5FRVxuKy5pblxuKy5TSCBTRUUgQUxTT1xuKy5CUiBmaWxlX3NldGF0dHIgKDIpLFxuKy5CUiBmaWxlX2F0dHIgKDJ0eXBlKSxcbisuQlIgaW9jdGwgKDIpLFxuKy5CUiBpb2N0bF9mcyAoMiksXG4rLkJSIG9wZW5hdCAoMilcbmRpZmYgLS1naXQgYS9tYW4vbWFuMi9maWxlX3NldGF0dHIuMiBiL21hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNTk2NzUwZGM3OWM4MVxuLS0tIC9kZXYvbnVsbFxuKysrIGIvbWFuL21hbjIvZmlsZV9zZXRhdHRyLjJcbkBAIC0wLDAgKzEsMzQwIEBAXG4rLlxcXCIgQ29weXJpZ2h0LCB0aGUgYXV0aG9ycyBvZiB0aGUgTGludXggbWFuLXBhZ2VzIHByb2plY3RcbisuXFxcIlxuKy5cXFwiIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMaW51eC1tYW4tcGFnZXMtY29weWxlZnRcbisuXFxcIlxuKy5USCBmaWxlX3NldGF0dHIgMiAoZGF0ZSkgXCJMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpXCJcbisuU0ggTkFNRVxuK2ZpbGVfc2V0YXR0ciBcXC0gc2V0IGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlc1xuKy5TSCBTWU5PUFNJU1xuKy5uZlxuKy5CUiBcIiNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZjbnRsLmhcdTAwM2VcIiBcIiAgICAgIC8qIERlZmluaXRpb24gb2YgXCIgQVRfKiBcIiBjb25zdGFudHMgKi9cIlxuKy5CUiBcIiNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzLmhcdTAwM2VcIiBcIiAgICAgICAgIC8qIERlZmluaXRpb24gb2YgXCIgRklMRV9BVFRSXyogXFxcbitcIiBhbmQgXCIgRlNfWEZMQUdfKiBcIiBjb25zdGFudHMgKi9cIlxuKy5CUiBcIiNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcIiBcIiAgICAgIC8qIERlZmluaXRpb24gb2YgXCIgU1lTXyogXCIgY29uc3RhbnRzICovXCJcbisuQiAjaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxuKy5QXG4rLkIgbG9uZyBzeXNjYWxsKFNZU19maWxlX3NldGF0dHIsXG4rLkJJIFwiICAgICAgICAgICAgICAgaW50IFwiIGRpcmZkIFwiLCBjb25zdCBjaGFyICpcIiBwYXRobmFtZSAsXG4rLkJJIFwiICAgICAgICAgICAgICAgc3RydWN0IGZpbGVfYXR0ciAqXCIgZmF0dHIgXCIsIHNpemVfdCBcIiBzaXplICxcbisuQkkgXCIgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgXCIgZmxhZ3MgKTtcbisuZmlcbisuUFxuKy5JUiBOb3RlIDpcbitnbGliYyBwcm92aWRlcyBubyB3cmFwcGVyIGZvclxuKy5CUiBmaWxlX3NldGF0dHIgKCksXG4rbmVjZXNzaXRhdGluZyB0aGUgdXNlIG9mXG4rLkJSIHN5c2NhbGwgKDIpLlxuKy5TSCBERVNDUklQVElPTlxuK1RoZVxuKy5CUiBmaWxlX3NldGF0dHIgKClcbitzeXN0ZW0gY2FsbCBzZXRzIGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlc1xuK29uIHRoZSBmaWxlIHNwZWNpZmllZCBieVxuKy5JUiBwYXRobmFtZSAuXG4rLlBcbitUaGlzIHN5c3RlbSBjYWxsIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byB0aGVcbisuQiBGU19JT0NfRlNTRVRYQVRUUlxuKy5CUiBpb2N0bCAoMilcbitvcGVyYXRpb24sXG4rYnV0IHdpdGggdGhlIGFkdmFudGFnZSB0aGF0IHRoZSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gYmUgb3BlbmVkLlxuK0J5IHVzaW5nIGEgcGF0aG5hbWUgaW5zdGVhZCBvZiByZXF1aXJpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IsXG4rLkJSIGZpbGVfc2V0YXR0ciAoKVxuK2NhbiBtYW5pcHVsYXRlIGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlc1xuK29uIGFsbCBmaWxlIHR5cGVzLFxuK2luY2x1ZGluZyBzcGVjaWFsIGZpbGVzIChGSUZPcywgc29ja2V0cywgYmxvY2sgZGV2aWNlcywgY2hhcmFjdGVyIGRldmljZXMpXG4rd2hlcmUgb3BlbmluZyB0aGUgZmlsZSBtYXkgaGF2ZSBzaWRlIGVmZmVjdHMgb3IgbWF5IG5vdCBiZSBwb3NzaWJsZS5cbitXaXRoXG4rLkJSIGlvY3RsICgyKSxcbitpdCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIG9idGFpbiBhIGZpbGUgZGVzY3JpcHRvciB0aGF0IHJlZmVyc1xuK2RpcmVjdGx5IHRvIHRoZSBmaWxlc3lzdGVtIGlub2RlIGZvciBzcGVjaWFsIGZpbGVzLlxuKy5QXG4rQXMgd2l0aFxuKy5CUiBvcGVuYXQgKDIpLFxuK2lmXG4rLkkgcGF0aG5hbWVcbitpcyByZWxhdGl2ZSxcbit0aGVuIGl0IGlzIGludGVycHJldGVkIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnlcbityZWZlcnJlZCB0byBieSB0aGUgZmlsZSBkZXNjcmlwdG9yXG4rLkkgZGlyZmRcbisob3IgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb2YgdGhlIGNhbGxpbmcgcHJvY2VzcyxcbitpZlxuKy5JIGRpcmZkXG4raXMgdGhlIHNwZWNpYWwgdmFsdWVcbisuQlIgQVRfRkRDV0QgKS5cbitJZlxuKy5JIHBhdGhuYW1lXG4raXMgYWJzb2x1dGUsXG4rdGhlblxuKy5JIGRpcmZkXG4raXMgaWdub3JlZC5cbisuUFxuK1RoZVxuKy5JIGZhdHRyXG4rYXJndW1lbnQgaXMgYSBwb2ludGVyIHRvIGFcbisuSSBmaWxlX2F0dHJcbitzdHJ1Y3R1cmUsXG4rd2hpY2ggc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGVzIHRvIHNldCBvbiB0aGUgZmlsZS5cbitUaGlzIHN0cnVjdHVyZSBpcyBkZXNjcmliZWQgaW5cbisuQlIgZmlsZV9hdHRyICgydHlwZSkuXG4rLlBcbitUaGVcbisuSSBzaXplXG4rYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgcG9pbnRlZCB0byBieVxuKy5JUiBmYXR0ciAuXG4rVGhlIHNpemUgaW5kaWNhdGVzIHZlcnNpb24gb2YgdGhlIHN0cnVjdHVyZSBpbiB1c2UsIHJlZmVyIHRvXG4rLkIgZmlsZV9hdHRyKDJ0eXBlKVxuK2ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHZlcnNpb25pbmcuXG4rLlBcbitVc2VyLXNwYWNlIGFwcGxpY2F0aW9ucyBzaG91bGQgemVyby1pbml0aWFsaXplXG4rLkkgc3RydWN0IGZpbGVfYXR0clxuK3RvIGVuc3VyZSB0aGF0IGZ1dHVyZSBmaWVsZHMgYWRkZWQgdG8gdGhlIHN0cnVjdHVyZVxuK3dpbGwgYmUgdHJlYXRlZCBhcyBuby1vcHMgaWYgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIGlzIHVwZGF0ZWRcbitidXQgdGhlIGFwcGxpY2F0aW9uIGlzIG5vdC5cbisuUFxuK1RoZVxuKy5JIGZsYWdzXG4rYXJndW1lbnQgaXMgYSBiaXQgbWFzayB0aGF0IGNhbiBpbmNsdWRlIHplcm8gb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcbisuVFBcbisuQiBBVF9FTVBUWV9QQVRIXG4rSWZcbisuSSBwYXRobmFtZVxuK2lzIGFuIGVtcHR5IHN0cmluZyxcbitvcGVyYXRlIG9uIHRoZSBmaWxlIHJlZmVycmVkIHRvIGJ5XG4rLkkgZGlyZmRcbisod2hpY2ggbWF5IGhhdmUgYmVlbiBvYnRhaW5lZCB1c2luZyB0aGVcbisuQlIgb3BlbiAoMilcbisuQiBPX1BBVEhcbitmbGFnKS5cbitJbiB0aGlzIGNhc2UsXG4rLkkgZGlyZmRcbitjYW4gcmVmZXIgdG8gYW55IHR5cGUgb2YgZmlsZSxcbitub3QganVzdCBhIGRpcmVjdG9yeS5cbitJZlxuKy5JIGRpcmZkXG4raXNcbisuQlIgQVRfRkRDV0QgLFxuK3RoZSBjYWxsIGZhaWxzIHdpdGggdGhlIGVycm9yXG4rLkJSIEVCQURGIC5cbisuVFBcbisuQiBBVF9TWU1MSU5LX05PRk9MTE9XXG4rSWZcbisuSSBwYXRobmFtZVxuK2lzIGEgc3ltYm9saWMgbGluayxcbitkbyBub3QgZGVyZWZlcmVuY2UgaXQ6XG4raW5zdGVhZCBzZXQgYXR0cmlidXRlcyBvbiB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYuXG4rQnkgZGVmYXVsdCAoaS5lLiwgaWYgdGhpcyBmbGFnIGlzIG5vdCBzcGVjaWZpZWQpLFxuK3N5bWJvbGljIGxpbmtzIGFyZSBkZXJlZmVyZW5jZWQuXG4rLlNIIFJFVFVSTiBWQUxVRVxuK09uIHN1Y2Nlc3MsXG4remVybyBpcyByZXR1cm5lZC5cbitPbiBlcnJvcixcbitcXC0xIGlzIHJldHVybmVkLFxuK2FuZFxuKy5JIGVycm5vXG4raXMgc2V0IHRvIGluZGljYXRlIHRoZSBlcnJvci5cbisuU0ggRVJST1JTXG4rLlRQXG4rLkIgRTJCSUdcbisuSSBzaXplXG4raXMgbGFyZ2VyIHRoYW5cbisuQlIgUEFHRV9TSVpFIC5cbisuVFBcbisuQiBFMkJJR1xuKy5JIHNpemVcbitpbmRpY2F0ZXMgdGhlIHZlcnNpb24gd2hpY2gga2VybmVsIGRvZXNuJ3Qgc3VwcG9ydCAodGhlIHNpemUgaXMgbGFyZ2VyIHRoYW4gdGhlXG4ra2VybmVsIGV4cGVjdHMpIGFuZCBuZXcgZmllbGRzIGFyZSBub24temVyby5cbisuVFBcbisuQiBFQUNDRVNcbitTZWFyY2ggcGVybWlzc2lvbiBpcyBkZW5pZWQgZm9yIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXNcbitpbiB0aGUgcGF0aCBwcmVmaXggb2ZcbisuSVIgcGF0aG5hbWUgLlxuKyhTZWUgYWxzb1xuKy5CUiBwYXRoX3Jlc29sdXRpb24gKDcpLilcbisuVFBcbisuQiBFQkFERlxuKy5JIHBhdGhuYW1lXG4raXMgcmVsYXRpdmUgYnV0XG4rLkkgZGlyZmRcbitpcyBuZWl0aGVyXG4rLkIgQVRfRkRDV0Rcbitub3IgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IuXG4rLlRQXG4rLkIgRUJBREZcbisuSSBwYXRobmFtZVxuK2lzIGFuIGVtcHR5IHN0cmluZyxcbisuQiBBVF9FTVBUWV9QQVRIXG4rd2FzIHNwZWNpZmllZCBpblxuKy5JUiBmbGFncyAsXG4rYW5kXG4rLkkgZGlyZmRcbitpcyBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvci5cbisuVFBcbisuQiBFRkFVTFRcbisuSSBwYXRobmFtZVxuK29yXG4rLkkgZmF0dHJcbitpcyBhbiBpbnZhbGlkIHBvaW50ZXIuXG4rLlRQXG4rLkIgRUlOVkFMXG4rSW52YWxpZCBmbGFnIHNwZWNpZmllZCBpblxuKy5JUiBmbGFncyAuXG4rLlRQXG4rLkIgRUlOVkFMXG4rLkkgc2l6ZVxuK2lzIHNtYWxsZXIgdGhhblxuKy5CUiBGSUxFX0FUVFJfU0laRV9WRVIwIC5cbisuVFBcbisuQiBFSU5WQUxcbitJbnZhbGlkIGNvbWJpbmF0aW9uIG9mIHBhcmFtZXRlcnMgcHJvdmlkZWQgaW5cbisuSSBmYXR0clxuK2ZvciB0aGlzIHR5cGUgb2YgZmlsZSBvciBmaWxlc3lzdGVtLlxuKy5UUFxuKy5CIEVMT09QXG4rVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQgd2hpbGUgcmVzb2x2aW5nXG4rLklSIHBhdGhuYW1lIC5cbisuVFBcbisuQiBFTkFNRVRPT0xPTkdcbisuSSBwYXRobmFtZVxuK2lzIHRvbyBsb25nLlxuKy5UUFxuKy5CIEVOT0VOVFxuK0EgY29tcG9uZW50IG9mXG4rLkkgcGF0aG5hbWVcbitkb2VzIG5vdCBleGlzdCxcbitvclxuKy5JIHBhdGhuYW1lXG4raXMgYW4gZW1wdHkgc3RyaW5nIGFuZFxuKy5CIEFUX0VNUFRZX1BBVEhcbit3YXMgbm90IHNwZWNpZmllZCBpblxuKy5JUiBmbGFncyAuXG4rLlRQXG4rLkIgRU5PTUVNXG4rSW5zdWZmaWNpZW50IGtlcm5lbCBtZW1vcnkgd2FzIGF2YWlsYWJsZS5cbisuVFBcbisuQiBFTk9URElSXG4rQSBjb21wb25lbnQgb2YgdGhlIHBhdGggcHJlZml4IG9mXG4rLkkgcGF0aG5hbWVcbitpcyBub3QgYSBkaXJlY3Rvcnkgb3IsXG4rLkkgcGF0aG5hbWVcbitpcyByZWxhdGl2ZSBhbmRcbisuSSBkaXJmZFxuK2lzIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVycmluZyB0byBhIGZpbGUgb3RoZXIgdGhhbiBhIGRpcmVjdG9yeS5cbisuVFBcbisuQiBFT1BOT1RTVVBQXG4rVGhlIGZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBzZXR0aW5nIGF0dHJpYnV0ZXMgb24gdGhpcyB0eXBlIG9mIGlub2RlLlxuKy5UUFxuKy5CIEVQRVJNXG4rVGhlIGNhbGxlciBkb2VzIG5vdCBoYXZlIHRoZSBuZWNlc3NhcnkgcGVybWlzc2lvbnNcbit0byBjaGFuZ2UgdGhlIGZpbGUgYXR0cmlidXRlcy5cbisuVFBcbisuQiBFUk9GU1xuK1RoZSBmaWxlIGlzIG9uIGEgcmVhZC1vbmx5IGZpbGVzeXN0ZW0uXG4rLlNIIEhJU1RPUllcbisuU1MgTGludXggNi4xN1xuK1RoaXMgc3lzdGVtIGNhbGwgaXMgaW50cm9kdWNlZCBhcyBhIG1vcmUgZmxleGlibGUgYWx0ZXJuYXRpdmUgdG8gdGhlXG4rRlNfSU9DX0ZTU0VUWEFUVFJcbisuQlIgaW9jdGwgKDIpXG4rd2hpY2ggY291bGQgd29yayBvbiBhbnkgdHlwZSBvZiBmaWxlcy5cbisuU0ggTk9URVNcbitUaGlzIHN5c3RlbSBjYWxsIGlzIGRlc2lnbmVkIHRvIGJlIGV4dGVuc2libGUuXG4rVGhlXG4rLkkgc2l6ZVxuK2FyZ3VtZW50IGFsbG93cyB1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucyB0byBpbmRpY2F0ZVxuK3doaWNoIHZlcnNpb24gb2YgdGhlXG4rLkkgZmlsZV9hdHRyXG4rc3RydWN0dXJlIHRoZXkgYXJlIHVzaW5nLFxuK2VuYWJsaW5nIHRoZSBrZXJuZWwgdG8gc3VwcG9ydCBib3RoIG9sZCBhbmQgbmV3IHZlcnNpb25zXG4rb2YgdGhlIHN0cnVjdHVyZSBzaW11bHRhbmVvdXNseS5cbisuUFxuK0lmXG4rLkkgc2l6ZVxuK2lzIHNtYWxsZXIgdGhhbiB0aGUgc3RydWN0dXJlIHNpemUgdGhlIGtlcm5lbCBleHBlY3RzLFxuK3RoZSBrZXJuZWwgdHJlYXRzIHRoZSBtaXNzaW5nIGZpZWxkcyBhcyBoYXZpbmcgemVybyB2YWx1ZXNcbisod2hpY2ggaXMgYSBuby1vcCkuXG4rSWZcbisuSSBzaXplXG4raXMgbGFyZ2VyIHRoYW4gZXhwZWN0ZWQsXG4rdGhlIGtlcm5lbCBjaGVja3MgdGhhdCBhbGwgdW5rbm93biAodG8gdGhlIGtlcm5lbCkgZmllbGRzIGFyZSB6ZXJvO1xuK2lmIG5vdCxcbit0aGUgY2FsbCBmYWlscyB3aXRoXG4rLkJSIEUyQklHIC5cbisuU0ggRVhBTVBMRVNcbitUaGUgcHJvZ3JhbSBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIHVzZSBvZlxuKy5CUiBmaWxlX3NldGF0dHIgKClcbit0byBzZXQgdGhlXG4rLkIgRlNfWEZMQUdfTk9EVU1QXG4rZmxhZyBvbiBhIGZpbGUuXG4rLlBcbisuaW4gKzRuXG4rLkVYXG4rI2luY2x1ZGUgXHUwMDNjZmNudGwuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZjbnRsLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjc3RkaW8uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3N0ZGxpYi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjc3RyaW5nLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzeXMvc3lzY2FsbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbitcbisjaWZuZGVmIFNZU19maWxlX2dldGF0dHJcbisjZGVmaW5lIFNZU19maWxlX2dldGF0dHIgNDY3XG4rI2VuZGlmXG4rXG4rI2lmbmRlZiBTWVNfZmlsZV9zZXRhdHRyXG4rI2RlZmluZSBTWVNfZmlsZV9zZXRhdHRyIDQ2OFxuKyNlbmRpZlxuK1xuK2ludFxuK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbit7XG4rICAgIHN0cnVjdCBmaWxlX2F0dHIgZmEgPSB7IDAgfTtcbisgICAgaW50IGRmZDtcbisgICAgbG9uZyByZXQ7XG4rXG4rICAgIGlmIChhcmdjICE9IDIpIHtcbisgICAgICAgIGZwcmludGYoc3RkZXJyLCBcIlVzYWdlOiAlcyBcdTAwM2NmaWxlbmFtZVx1MDAzZVxcXFxuXCIsIGFyZ3ZbMF0pO1xuKyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xuKyAgICB9XG4rXG4rICAgIGRmZCA9IG9wZW4oYXJndlsxXSwgT19SRE9OTFkpO1xuKyAgICBpZiAoZGZkID09IFxcLTEpIHtcbisgICAgICAgIHBlcnJvcihcIm9wZW5cIik7XG4rICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4rICAgIH1cbitcbisgICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBkZmQsIFwiXCIsIFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcbisgICAgaWYgKHJldCA9PSBcXC0xKSB7XG4rICAgICAgICBwZXJyb3IoXCJmaWxlX2dldGF0dHJcIik7XG4rICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4rICAgIH1cbitcbisgICAgcHJpbnRmKFwiQ3VycmVudCBmbGFnczogMHglbGx4XFxcXG5cIiwgKHVuc2lnbmVkIGxvbmcgbG9uZylmYS5mYV94ZmxhZ3MpO1xuK1xuKyAgICBmYS5mYV94ZmxhZ3MgfD0gRlNfWEZMQUdfTk9EVU1QO1xuK1xuKyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX3NldGF0dHIsIGRmZCwgXCJcIiwgXHUwMDI2ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpO1xuKyAgICBpZiAocmV0ID09IFxcLTEpIHtcbisgICAgICAgIHBlcnJvcihcImZpbGVfc2V0YXR0clwiKTtcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbisgICAgfVxuK1xuKyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIGRmZCwgXCJcIiwgXHUwMDI2ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpO1xuKyAgICBpZiAocmV0ID09IFxcLTEpIHtcbisgICAgICAgIHBlcnJvcihcImZpbGVfZ2V0YXR0clwiKTtcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbisgICAgfVxuK1xuKyAgICBpZiAoZmEuZmFfeGZsYWdzIFx1MDAyNiBGU19YRkxBR19OT0RVTVApXG4rICAgICAgICBwcmludGYoXCJmbGFncyAweCVsbHggKE5PRFVNUCBmbGFnIGlzIHNldClcXFxcblwiLFxuKyAgICAgICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpZmEuZmFfeGZsYWdzKTtcbitcbisgICAgZXhpdChFWElUX1NVQ0NFU1MpO1xuK31cbisuRUVcbisuaW5cbisuU0ggU0VFIEFMU09cbisuQlIgZmlsZV9nZXRhdHRyICgyKSxcbisuQlIgaW9jdGwgKDIpLFxuKy5CUiBpb2N0bF9mcyAoMiksXG4rLkJSIG9wZW5hdCAoMiksXG4rLkJSIGZpbGVfYXR0ciAoMnR5cGUpLFxuKy5CUiBwYXRoX3Jlc29sdXRpb24gKDcpXG5kaWZmIC0tZ2l0IGEvbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSBiL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGVcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mZDQyNmMxOWY1ZjBiXG4tLS0gL2Rldi9udWxsXG4rKysgYi9tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlXG5AQCAtMCwwICsxLDE4NyBAQFxuKy5cXFwiIENvcHlyaWdodCwgdGhlIGF1dGhvcnMgb2YgdGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0XG4rLlxcXCJcbisuXFxcIiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTGludXgtbWFuLXBhZ2VzLWNvcHlsZWZ0XG4rLlxcXCJcbisuVEggZmlsZV9hdHRyIDJ0eXBlIChkYXRlKSBcIkxpbnV4IG1hbi1wYWdlcyAodW5yZWxlYXNlZClcIlxuKy5TSCBOQU1FXG4rZmlsZV9hdHRyIFxcLSBkZXNjcmliZSBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlcyB0byBnZXQgb3Igc2V0XG4rLlNIIFNZTk9QU0lTXG4rLkVYXG4rLkIgI2luY2x1ZGUgXHUwMDNjbGludXgvZnMuaFx1MDAzZVxuKy5QXG4rLkIgc3RydWN0IGZpbGVfYXR0ciB7XG4rLkJSIFwiICAgIHU2NCAgZmFfeGZsYWdzO1wiIFwiICAgICAvKiBFeHRlbmRlZCBmbGFncyAqL1wiXG4rLkJSIFwiICAgIHUzMiAgZmFfZXh0c2l6ZTtcIiBcIiAgICAvKiBFeHRlbnQgc2l6ZSBoaW50ICovXCJcbisuQlIgXCIgICAgdTMyICBmYV9uZXh0ZW50cztcIiBcIiAgIC8qIE51bWJlciBvZiBleHRlbnRzIChyZWFkLW9ubHkpICovXCJcbisuQlIgXCIgICAgdTMyICBmYV9wcm9qaWQ7XCIgXCIgICAgIC8qIFByb2plY3QgaWRlbnRpZmllciAqL1wiXG4rLkJSIFwiICAgIHUzMiAgZmFfY293ZXh0c2l6ZTtcIiBcIiAvKiBDb1cgZXh0ZW50IHNpemUgaGludCAqL1wiXG4rLkIgfTtcbisuRUVcbisuU0ggREVTQ1JJUFRJT05cbitEZXNjcmliZXMgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXNcbitmb3IgdXNlIHdpdGggdGhlXG4rLkJSIGZpbGVfZ2V0YXR0ciAoMilcbithbmRcbisuQlIgZmlsZV9zZXRhdHRyICgyKVxuK3N5c3RlbSBjYWxscy5cbisuUFxuK1RoZSBmaWVsZHMgYXJlIGFzIGZvbGxvd3M6XG4rLlRQXG4rLkkgZmFfeGZsYWdzXG4rVGhpcyBmaWVsZCBjb250YWlucyBmaWxlIGF0dHJpYnV0ZSBmbGFncy5cbitJdCBpcyBhIGJpdCBtYXNrIGNvbnNpc3Rpbmcgb2YgemVybyBvciBtb3JlIG9mIHRoZVxuKy5CIEZTX1hGTEFHXypcbitmbGFncy5cbitSZWZlciB0byB0aGUgc2VjdGlvblxuKy5CIEZMQUdTXG4rYmVsb3cgZm9yIGEgbGlzdCBvZiBhbGwgZmxhZ3MuXG4rLlRQXG4rLkkgZmFfZXh0c2l6ZVxuK0V4dGVudCBzaXplIGFsbG9jYXRvciBoaW50IGluIGJ5dGVzLlxuK1RoaXMgdmFsdWUgc3VnZ2VzdHMgYSBwcmVmZXJyZWQgZXh0ZW50IHNpemVcbitmb3IgbmV3IGFsbG9jYXRpb25zIHRvIHRoaXMgZmlsZS5cbisuVFBcbisuSSBmYV9uZXh0ZW50c1xuK051bWJlciBvZiBkYXRhIGV4dGVudHMgaW4gdGhlIGZpbGUgKHJlYWQtb25seSkuXG4rVGhpcyBmaWVsZCBpcyBmaWxsZWQgaW4gYnlcbisuQlIgZmlsZV9nZXRhdHRyICgyKVxuK2FuZCBpcyBpZ25vcmVkIGJ5XG4rLkJSIGZpbGVfc2V0YXR0ciAoMikuXG4rLlRQXG4rLkkgZmFfcHJvamlkXG4rUHJvamVjdCBpZGVudGlmaWVyLlxuK1VzZWQgYnkgcXVvdGEgc3lzdGVtcyB0byBncm91cCByZWxhdGVkIGZpbGVzLlxuKy5UUFxuKy5JIGZhX2Nvd2V4dHNpemVcbitDb3B5LW9uLVdyaXRlIChDb1cpIGV4dGVudCBzaXplIGhpbnQgaW4gYnl0ZXMuXG4rVGhpcyB2YWx1ZSBzdWdnZXN0cyBhIHByZWZlcnJlZCBleHRlbnQgc2l6ZVxuK2ZvciBDb1cgb3BlcmF0aW9ucy5cbisuU0ggRkxBR1NcbitGbGFncyBjYW4gYmU6XG4rLlJTXG4rLlRQXG4rLkIgRlNfWEZMQUdfUkVBTFRJTUVcbitEYXRhIGlzIHN0b3JlZCBpbiBhIHJlYWx0aW1lIHZvbHVtZS5cbisuVFBcbisuQiBGU19YRkxBR19JTU1VVEFCTEVcbitGaWxlIGNhbm5vdCBiZSBtb2RpZmllZC5cbisuVFBcbisuQiBGU19YRkxBR19BUFBFTkRcbitBbGwgd3JpdGVzIG11c3QgYXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUuXG4rLlRQXG4rLkIgRlNfWEZMQUdfU1lOQ1xuK0FsbCB3cml0ZXMgYXJlIHN5bmNocm9ub3VzLlxuKy5UUFxuKy5CIEZTX1hGTEFHX05PQVRJTUVcbitEbyBub3QgdXBkYXRlIGZpbGUgYWNjZXNzIHRpbWUgb24gcmVhZHMuXG4rLlRQXG4rLkIgRlNfWEZMQUdfTk9EVU1QXG4rRG8gbm90IGluY2x1ZGUgZmlsZSBpbiBiYWNrdXBzLlxuKy5UUFxuKy5CIEZTX1hGTEFHX0RBWFxuK1VzZSBEaXJlY3QgQWNjZXNzIChEQVgpIGZvciBJL08gb3BlcmF0aW9ucy5cbisuVFBcbisuQiBGU19YRkxBR19OT0RFRlJBR1xuK0V4Y2x1ZGUgdGhpcyBmaWxlIGZyb20gZGVmcmFnbWVudGF0aW9uIG9wZXJhdGlvbnMuXG4rLlRQXG4rLkIgRlNfWEZMQUdfRklMRVNUUkVBTVxuK1VzZSBmaWxlc3RyZWFtIGFsbG9jYXRvciBmb3IgdGhpcyBmaWxlLlxuKy5UUFxuKy5CIEZTX1hGTEFHX0VYVFNJWkVcbitVc2UgdGhlIGV4dGVudCBzaXplIGhpbnQgZnJvbSB0aGVcbisuSSBmYV9leHRzaXplXG4rZmllbGQuXG4rLlRQXG4rLkIgRlNfWEZMQUdfQ09XRVhUU0laRVxuK1VzZSB0aGUgQ29XIGV4dGVudCBzaXplIGhpbnQgZnJvbSB0aGVcbisuSSBmYV9jb3dleHRzaXplXG4rZmllbGQuXG4rLlJFXG4rLlBcbitEaXJlY3Rvcnkgb25seSBmbGFnczpcbisuUlNcbisuVFBcbisuQiBGU19YRkxBR19SVElOSEVSSVRcbitOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSByZWFsdGltZSBmbGFnLlxuKy5UUFxuKy5CIEZTX1hGTEFHX05PU1lNTElOS1NcbitEaXNhbGxvdyBjcmVhdGlvbiBvZiBzeW1ib2xpYyBsaW5rcyBpbiB0aGlzIGRpcmVjdG9yeS5cbisuVFBcbisuQiBGU19YRkxBR19FWFRTWklOSEVSSVRcbitOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSBleHRlbnQgc2l6ZSBoaW50LlxuKy5UUFxuKy5CIEZTX1hGTEFHX1BST0pJTkhFUklUXG4rTmV3IGZpbGVzIGNyZWF0ZWQgaW4gdGhpcyBkaXJlY3RvcnkgaW5oZXJpdCB0aGUgcHJvamVjdCBpZGVudGlmaWVyLlxuKy5SRVxuKy5QXG4rVGhlIGZvbGxvd2luZyBmbGFncyBhcmUgcmVhZC1vbmx5OlxuKy5SU1xuKy5UUFxuKy5CIEZTX1hGTEFHX1BSRUFMTE9DXG4rRmlsZSBoYXMgcHJlYWxsb2NhdGVkIGV4dGVudHMuXG4rLlRQXG4rLkIgRlNfWEZMQUdfSEFTQVRUUlxuK0ZpbGUgaGFzIGV4dGVuZGVkIGF0dHJpYnV0ZXMuXG4rLlRQXG4rLkIgRlNfWEZMQUdfVkVSSVRZXG4rRmlsZSBoYXMgZnMtdmVyaXR5IGVuYWJsZWQuXG4rLlRQXG4rLkIgRlNfWEZMQUdfQ0FTRUZPTERcbitUaGUgZmlsZXN5c3RlbSBwZXJmb3JtcyBjYXNlLWluc2Vuc2l0aXZlIGxvb2t1cHMgKGZpbGUgYW5kIGRpcmVjdG9yeSBuYW1lXG4rY29tcGFyaXNvbnMgaWdub3JlIGNhc2UpLlxuKy5UUFxuKy5CIEZTX1hGTEFHX0NBU0VOT05QUkVTRVJWSU5HXG4rVGhlIGZpbGVzeXN0ZW0gZG9lcyBub3QgcHJlc2VydmUgdGhlIGNhc2Ugb2YgZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWVzLlxuKy5SRVxuKy5QXG4rTm90IGFsbCBmaWxlc3lzdGVtcyBzdXBwb3J0IGFsbCBmbGFncy5cbitTZXR0aW5nIHVuc3VwcG9ydGVkIGZsYWdzIG1heSByZXN1bHQgaW4gYW5cbisuQiBFSU5WQUxcbitvclxuKy5CIEVPUE5PVFNVUFBcbitlcnJvci5cbisuU0ggVkVSU0lPTlNcbisuU1MgU3RydWN0dXJlIHNpemVcbitUaGUgc3RydWN0dXJlIHNpemUgaXMgZGVmaW5lZCBieVxuKy5CIEZJTEVfQVRUUl9TSVpFX1ZFUipcbit3aGljaCBpcyBhbHNvIGEgdmVyc2lvbiBvZiB0aGUgc3RydWN0dXJlIGJlaW5nIHVzZWQuXG4rVGhlXG4rLkkgc2l6ZVxuK3BhcmFtZXRlciBwYXNzZWQgdG9cbisuQlIgZmlsZV9nZXRhdHRyICgyKVxuK2FuZFxuKy5CUiBmaWxlX3NldGF0dHIgKDIpXG4raW5kaWNhdGVzIHRoZSB2ZXJzaW9uIG9mXG4rLkkgc3RydWN0IGZpbGVfYXR0clxcZlAuXG4rLlNTIEZJTEVfQVRUUl9TSVpFX1ZFUjBcbitTaXplIGlzIDI0IGJ5dGVzLlxuKy5TSCBISVNUT1JZXG4rLlNTIExpbnV4IHY2LjE3XG4rVGhpcyBzdHJ1Y3R1cmUgaXMgaW50cm9kdWNlZC5cbitUaGVcbisuSSBzdHJ1Y3QgZmlsZV9hdHRyXG4rcHJvdmlkZXMgc2ltaWxhciBmdW5jdGlvbmFsaXR5IHRvXG4rLkkgc3RydWN0IGZzeGF0dHJcbit1c2VkIGJ5IHRoZVxuKy5CIEZTX0lPQ19GU0dFVFhBVFRSXG4rYW5kXG4rLkIgRlNfSU9DX0ZTU0VUWEFUVFJcbisuQlIgaW9jdGwgKDIpXG4rb3BlcmF0aW9ucyxcbitidXQgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZSB0aHJvdWdoIHRoZVxuKy5JIHNpemVcbitwYXJhbWV0ZXIgb2YgdGhlIHN5c3RlbSBjYWxscy5cbisuUFxuK0V4dHJhIGZpZWxkcyBtYXkgYmUgYXBwZW5kZWQgdG8gdGhlIHN0cnVjdHVyZSBpbiBmdXR1cmUga2VybmVsIHZlcnNpb25zLlxuK1RoZSBrZXJuZWwgd2lsbCBleHBlY3QgbmV3IGZpZWxkcyB0byBiZSB6ZXJvc1xuK2ZvciBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgc3RydWN0dXJlLlxuK1RoZXJlZm9yZSwgYSB1c2VyXG4rLkkgbXVzdFxuK3plcm8tZmlsbCB0aGUgc3RydWN0dXJlIG9uIGluaXRpYWxpemF0aW9uIHRvIGtlZXAgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyXG4ra2VybmVscy5cbisuU1MgTGludXggdjcuMlxuK1RoZSBGU19YRkxBR19DQVNFRk9MRCBhbmQgRlNfWEZMQUdfQ0FTRU5PTlBSRVNFUlZJTkcgYXJlIGludHJvZHVjZWQgdG8gZW5hYmxlXG4rdXBwZXIgbGF5ZXJzLCBzdWNoIGFzIE5GU0QsIHRvIHJldHJpZXZlIGNhc2Ugc2Vuc2l0aXZpdHkgaW5mb3JtYXRpb24uXG4rLlNIIFNFRSBBTFNPXG4rLkJSIGZpbGVfZ2V0YXR0ciAoMiksXG4rLkJSIGZpbGVfc2V0YXR0ciAoMilcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjQ3OjM1LjMzOTkzMzA3NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzNTAxMDU2MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFRoaXMgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGJhc2VkIG9uIHRoaXMgZGlmZiBpcyB0aGF0IHdlJ3ZlIGdvdCBhIGRvY3VtZW50YXRpb24gdXBkYXRlLCBzcGVjaWZpY2FsbHkgbmV3IG1hbiBwYWdlcy4gSSBzZWUgdGhlIGFkZGl0aW9uIG9mIGBtYW4vbWFuMi9maWxlX2dldGF0dHIuMmAsIGBtYW4vbWFuMi9maWxlX3NldGF0dHIuMmAsIGFuZCBgbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZWAuIEludGVyZXN0aW5nLlxuXG5CdXQgSSBuZWVkIHRvIGJlICpzdXJlKiB0aGlzIGlzIGp1c3QgZG9jdW1lbnRhdGlvbi4gTXkgZ3V0IHNheXMgaXQgcHJvYmFibHkgaXMsIGJ1dCBJIGNhbid0IGJlIGNvbXBsYWNlbnQuIEkgbmVlZCB0byBxdWlja2x5IGFuZCBjb21wcmVoZW5zaXZlbHkgY29uZmlybSB0aGF0IHRoZXNlIGFyZSB0aGUgb25seSBjaGFuZ2VzIHJlbGF0ZWQgdG8gZmlsZSBhdHRyaWJ1dGVzLiBTbywgYmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgSSdtIGdvaW5nIHRvIHJ1biBhIHF1aWNrIGNoZWNrLiBJJ2xsIG5lZWQgdG8gdXNlIGBnaXRgIHRvIGxvb2sgYXQgdGhlIGNvbW1pdCwgb3IgcGVyaGFwcyBqdW1wIG92ZXIgdG8gYSBjb2Rlc2VhcmNoL2dyZXBwZXIgdG8gc2VhcmNoIHRoZSBlbnRpcmUgY29kZWJhc2UuIEknbSBsb29raW5nIGZvciBhbnkgb3RoZXIgbW9kaWZpY2F0aW9ucyByZWxhdGVkIHRvIGZpbGUgYXR0cmlidXRlIGhhbmRsaW5nIG9yIGFueSBkZXBlbmRlbmNpZXMgdGhhdCBtaWdodCBoYXZlIGJlZW4gaW1wYWN0ZWQuIEkgbmVlZCBhIGNsZWFuIGJpbGwgb2YgaGVhbHRoIGJlZm9yZSBJIG1vdmUgb24uIE5vIHN1cnByaXNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA4NywiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjQ3OjM3LjY5MDA0MDI5M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzAyMjc5MDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZpbGVfZ2V0YXR0clwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2ZzdmVyaXR5LnJzdD0zNTA9cGFyYW1ldGVycy4gU2VlIEZTX0lPQ19FTkFCTEVfVkVSSVRZLlxcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZnN2ZXJpdHkucnN0LTM1MS1cXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2ZzdmVyaXR5LnJzdDozNTI6ZmlsZV9nZXRhdHRyXFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzUzLS0tLS0tLS0tLS0tLVxcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZnN2ZXJpdHkucnN0LTM1NC1cXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2ZzdmVyaXR5LnJzdDozNTU6U2luY2UgTGludXggdjcuMCwgdGhlIGZpbGVfZ2V0YXR0cigpIHN5c2NhbGwgc2V0cyBGU19YRkxBR19WRVJJVFkgKDB4MDAwMjAwMDApXFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzU2LWluIHRoZSByZXR1cm5lZCBmbGFncyB3aGVuIHRoZSBmaWxlIGhhcyB2ZXJpdHkgZW5hYmxlZC4gTm90ZSB0aGF0IHRoaXMgYXR0cmlidXRlXFxuLS1cXG5hcmNoL2FscGhhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01MDktNTc3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL2FscGhhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo1MTA6NTc4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvYWxwaGEva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTUxMS01NzlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC00ODQtNDY3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibDo0ODU6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsLTQ4Ni00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsLTQ4MS00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50Ymw6NDgyOjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsLTQ4My00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ2OS00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDcwOjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3MS00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3NS00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDc2OjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3Ny00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjMyLnRibC00MDgtNDY3XFx0bjMyXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjMyLnRibDo0MDk6NDY4XFx0bjMyXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsLTQxMC00NjlcXHRuMzJcXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zODQtNDY3XFx0bjY0XFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibDozODU6NDY4XFx0bjY0XFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsLTM4Ni00NjlcXHRuNjRcXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC00NTctNDY3XFx0bzMyXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibDo0NTg6NDY4XFx0bzMyXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9vMzIudGJsLTQ1OS00NjlcXHRvMzJcXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDY4LTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxuYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ2OTo0NjhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3MC00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTU2MC00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTYxOjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTU2Mi00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5Ni00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6Mzk3OjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5OC00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NzMtNDY3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NzQ6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3NS00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01MTUtNDY3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo1MTY6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvc3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTUxNy00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NzUtNDY3XFx0aTM4NlxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6NDc2OjQ2OFxcdGkzODZcXHRmaWxlX2dldGF0dHJcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDc3LTQ2OVxcdGkzODZcXHRmaWxlX3NldGF0dHJcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibC0zOTQtNDY3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibDozOTU6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTM5Ni00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL3h0ZW5zYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDQwLTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ0MTo0NjhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ0Mi00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5mcy9leHQ0L2V4dDQuaD0zMTg4PWV4dGVybiB2b2lkIGV4dDRfY2xlYXJfaW5vZGUoc3RydWN0IGlub2RlICopO1xcbmZzL2V4dDQvZXh0NC5oOjMxODk6ZXh0ZXJuIGludCAgZXh0NF9maWxlX2dldGF0dHIoc3RydWN0IG1udF9pZG1hcCAqLCBjb25zdCBzdHJ1Y3QgcGF0aCAqLFxcbmZzL2V4dDQvZXh0NC5oLTMxOTAtXFx0XFx0XFx0ICAgICAgc3RydWN0IGtzdGF0ICosIHUzMiwgdW5zaWduZWQgaW50KTtcXG4tLVxcbmZzL2V4dDQvZmlsZS5jPTEwNTg9Y29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgZXh0NF9maWxlX2lub2RlX29wZXJhdGlvbnMgPSB7XFxuZnMvZXh0NC9maWxlLmMtMTA1OS1cXHQuc2V0YXR0clxcdD0gZXh0NF9zZXRhdHRyLFxcbmZzL2V4dDQvZmlsZS5jOjEwNjA6XFx0LmdldGF0dHJcXHQ9IGV4dDRfZmlsZV9nZXRhdHRyLFxcbmZzL2V4dDQvZmlsZS5jLTEwNjEtXFx0Lmxpc3R4YXR0clxcdD0gZXh0NF9saXN0eGF0dHIsXFxuLS1cXG5mcy9leHQ0L2lub2RlLmM9NjI2Nj1pbnQgZXh0NF9nZXRhdHRyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCxcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy02MzM0LVxcbmZzL2V4dDQvaW5vZGUuYzo2MzM1OmludCBleHQ0X2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcXG5mcy9leHQ0L2lub2RlLmMtNjMzNi1cXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCwgc3RydWN0IGtzdGF0ICpzdGF0LFxcbi0tXFxuZnMvZmlsZV9hdHRyLmM9ODY9aW50IHZmc19maWxlYXR0cl9nZXQoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXFxuLS1cXG5mcy9maWxlX2F0dHIuYy05My1cXG5mcy9maWxlX2F0dHIuYzo5NDpcXHRlcnJvciA9IHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cihkZW50cnksIGZhKTtcXG5mcy9maWxlX2F0dHIuYy05NS1cXHRpZiAoZXJyb3IpXFxuLS1cXG5mcy9maWxlX2F0dHIuYz0zNTY9aW50IGlvY3RsX2Zzc2V0eGF0dHIoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgX191c2VyICphcmdwKVxcbi0tXFxuZnMvZmlsZV9hdHRyLmMtMzczLVxcbmZzL2ZpbGVfYXR0ci5jOjM3NDpTWVNDQUxMX0RFRklORTUoZmlsZV9nZXRhdHRyLCBpbnQsIGRmZCwgY29uc3QgY2hhciBfX3VzZXIgKiwgZmlsZW5hbWUsXFxuZnMvZmlsZV9hdHRyLmMtMzc1LVxcdFxcdHN0cnVjdCBmaWxlX2F0dHIgX191c2VyICosIHVmYXR0ciwgc2l6ZV90LCB1c2l6ZSxcXG4tLVxcbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oPTIyPV9fTlJfcmVhZGxpbmthdCxcXG5pbmNsdWRlL2FzbS1nZW5lcmljL2F1ZGl0X3JlYWQuaC0yMy0jZW5kaWZcXG5pbmNsdWRlL2FzbS1nZW5lcmljL2F1ZGl0X3JlYWQuaDoyNDojaWZkZWYgX19OUl9maWxlX2dldGF0dHJcXG5pbmNsdWRlL2FzbS1nZW5lcmljL2F1ZGl0X3JlYWQuaDoyNTpfX05SX2ZpbGVfZ2V0YXR0cixcXG5pbmNsdWRlL2FzbS1nZW5lcmljL2F1ZGl0X3JlYWQuaC0yNi0jZW5kaWZcXG4tLVxcbmluY2x1ZGUvbGludXgvbHNtX2hvb2tfZGVmcy5oPTE2MD1MU01fSE9PSyhpbnQsIDAsIGlub2RlX2ZpbGVfc2V0YXR0ciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXFxuaW5jbHVkZS9saW51eC9sc21faG9va19kZWZzLmg6MTYxOkxTTV9IT09LKGludCwgMCwgaW5vZGVfZmlsZV9nZXRhdHRyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBmaWxlX2thdHRyICpmYSlcXG5pbmNsdWRlL2xpbnV4L2xzbV9ob29rX2RlZnMuaC0xNjItTFNNX0hPT0soaW50LCAwLCBpbm9kZV9zZXRfYWNsLCBzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcXG4tLVxcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaD00NTI9aW50IHNlY3VyaXR5X2lub2RlX2ZpbGVfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oLTQ1My1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpO1xcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaDo0NTQ6aW50IHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oLTQ1NS1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oPTEwNjQ9c3RhdGljIGlubGluZSBpbnQgc2VjdXJpdHlfaW5vZGVfZmlsZV9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG4tLVxcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaC0xMDY5LVxcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaDoxMDcwOnN0YXRpYyBpbmxpbmUgaW50IHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oLTEwNzEtXFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxcbi0tXFxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oPTM3OD1hc21saW5rYWdlIGxvbmcgc3lzX2ZyZW1vdmV4YXR0cihpbnQgZmQsIGNvbnN0IGNoYXIgX191c2VyICpuYW1lKTtcXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg6Mzc5OmFzbWxpbmthZ2UgbG9uZyBzeXNfZmlsZV9nZXRhdHRyKGludCBkZmQsIGNvbnN0IGNoYXIgX191c2VyICpmaWxlbmFtZSxcXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgtMzgwLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgZmlsZV9hdHRyIF9fdXNlciAqYXR0ciwgc2l6ZV90IHVzaXplLFxcbi0tXFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oPTg1Mz1fX1NZU0NBTEwoX19OUl9vcGVuX3RyZWVfYXR0ciwgc3lzX29wZW5fdHJlZV9hdHRyKVxcbi0tXFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTg1NS0vKiBmcy9pbm9kZS5jICovXFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjg1NjojZGVmaW5lIF9fTlJfZmlsZV9nZXRhdHRyIDQ2OFxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo4NTc6X19TWVNDQUxMKF9fTlJfZmlsZV9nZXRhdHRyLCBzeXNfZmlsZV9nZXRhdHRyKVxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC04NTgtI2RlZmluZSBfX05SX2ZpbGVfc2V0YXR0ciA0NjlcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTQtLlxcXFxcXFwiXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6NTouVEggZmlsZV9nZXRhdHRyIDIgKGRhdGUpIFxcXCJMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpXFxcIlxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTYtLlNIIE5BTUVcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjo3OmZpbGVfZ2V0YXR0ciBcXFxcLSBnZXQgZmlsZXN5c3RlbSBpbm9kZSBhdHRyaWJ1dGVzXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItOC0uU0ggU1lOT1BTSVNcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTE0LS5QXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MTU6LkIgbG9uZyBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMTYtLkJJIFxcXCIgICAgICAgICAgICAgICBpbnQgXFxcIiBkaXJmZCBcXFwiLCBjb25zdCBjaGFyICpcXFwiIHBhdGhuYW1lICxcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yPTIyPWdsaWJjIHByb3ZpZGVzIG5vIHdyYXBwZXIgZm9yXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MjM6LkJSIGZpbGVfZ2V0YXR0ciAoKSxcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0yNC11c2VcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yPTI4PVRoZVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yOjI5Oi5CUiBmaWxlX2dldGF0dHIgKClcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0zMC1zeXN0ZW0gY2FsbCByZXRyaWV2ZXMgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXNcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yPTM5PUJ5IHVzaW5nIGEgcGF0aG5hbWUsXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6NDA6LkJSIGZpbGVfZ2V0YXR0ciAoKVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTQxLWNhbiByZXRyaWV2ZSBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlc1xcbi0tXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI9ODM9YmVmb3JlIGNhbGxpbmdcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjo4NDouQlIgZmlsZV9nZXRhdHRyICgpXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItODUtdG8gZW5zdXJlIHRoYXQgZmllbGRzIG5vdCBmaWxsZWQgaW4gYnkgb2xkZXIga2VybmVsc1xcbi0tXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI9MjI5PVRoZSBwcm9ncmFtIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MjMwOi5CUiBmaWxlX2dldGF0dHIgKClcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0yMzEtdG8gcmV0cmlldmUgYW5kIGRpc3BsYXkgZmlsZSBhdHRyaWJ1dGVzLlxcbi0tXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMjQxLVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yOjI0MjojaWZuZGVmIFNZU19maWxlX2dldGF0dHJcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyNDM6I2RlZmluZSBTWVNfZmlsZV9nZXRhdHRyIDQ2N1xcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTI0NC0jZW5kaWZcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yPTI0Nz1tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXFxuLS1cXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0yNTctXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MjU4OiAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIEFUX0ZEQ1dELCBhcmd2WzFdLCBcXHUwMDI2ZmEsIHNpemVvZihmYSksIDApO1xcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTI1OS0gICAgaWYgKHJldCA9PSBcXFxcLTEpIHtcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyNjA6ICAgICAgICBwZXJyb3IoXFxcImZpbGVfZ2V0YXR0clxcXCIpO1xcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTI2MS0gICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yPTI2NT1mbGFnIG9uIGEgZmlsZS5cXG4tLVxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTI3Ny1cXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjoyNzg6I2lmbmRlZiBTWVNfZmlsZV9nZXRhdHRyXFxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI6Mjc5OiNkZWZpbmUgU1lTX2ZpbGVfZ2V0YXR0ciA0NjdcXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0yODAtI2VuZGlmXFxuLS1cXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMj0yODc9bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbi0tXFxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjItMzAzLVxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yOjMwNDogICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBkZmQsIFxcXCJcXFwiLCBcXHUwMDI2ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpO1xcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMwNS0gICAgaWYgKHJldCA9PSBcXFxcLTEpIHtcXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMDY6ICAgICAgICBwZXJyb3IoXFxcImZpbGVfZ2V0YXR0clxcXCIpO1xcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMwNy0gICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMxOS1cXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMjA6ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwgZGZkLCBcXFwiXFxcIiwgXFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMjEtICAgIGlmIChyZXQgPT0gXFxcXC0xKSB7XFxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI6MzIyOiAgICAgICAgcGVycm9yKFxcXCJmaWxlX2dldGF0dHJcXFwiKTtcXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMjMtICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XFxuLS1cXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMzQtLlNIIFNFRSBBTFNPXFxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI6MzM1Oi5CUiBmaWxlX2dldGF0dHIgKDIpLFxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMzNi0uQlIgaW9jdGwgKDIpLFxcbi0tXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZT0yMj1mb3IgdXNlIHdpdGggdGhlXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZToyMzouQlIgZmlsZV9nZXRhdHRyICgyKVxcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUtMjQtYW5kXFxuLS1cXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlPTQ2PVRoaXMgZmllbGQgaXMgZmlsbGVkIGluIGJ5XFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZTo0NzouQlIgZmlsZV9nZXRhdHRyICgyKVxcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUtNDgtYW5kIGlzIGlnbm9yZWQgYnlcXG4tLVxcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGU9MTUwPXBhcmFtZXRlciBwYXNzZWQgdG9cXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlOjE1MTouQlIgZmlsZV9nZXRhdHRyICgyKVxcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUtMTUyLWFuZFxcbi0tXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZT0xODQ9dXBwZXIgbGF5ZXJzLCBzdWNoIGFzIE5GU0QsIHRvIHJldHJpZXZlIGNhc2Ugc2Vuc2l0aXZpdHkgaW5mb3JtYXRpb24uXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZS0xODUtLlNIIFNFRSBBTFNPXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZToxODY6LkJSIGZpbGVfZ2V0YXR0ciAoMiksXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZS0xODctLkJSIGZpbGVfc2V0YXR0ciAoMilcXG4tLVxcbnNjcmlwdHMvc3lzY2FsbC50YmwtNDEwLTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxuc2NyaXB0cy9zeXNjYWxsLnRibDo0MTE6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbnNjcmlwdHMvc3lzY2FsbC50YmwtNDEyLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnNlY3VyaXR5L3NlY3VyaXR5LmM9MjE1Mz1pbnQgc2VjdXJpdHlfaW5vZGVfZmlsZV9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxcbi0tXFxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTU4LS8qKlxcbnNlY3VyaXR5L3NlY3VyaXR5LmM6MjE1OTogKiBzZWN1cml0eV9pbm9kZV9maWxlX2dldGF0dHIoKSAtIGNoZWNrIGlmIHJldHJpZXZpbmcgZnN4YXR0ciBpcyBhbGxvd2VkXFxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTYwLSAqIEBkZW50cnk6IGZpbGUgdG8gcmV0cmlldmUgZmlsZXN5c3RlbSBleHRlbmRlZCBhdHRyaWJ1dGVzIGZyb21cXG4tLVxcbnNlY3VyaXR5L3NlY3VyaXR5LmMtMjE2Mi0gKlxcbnNlY3VyaXR5L3NlY3VyaXR5LmM6MjE2MzogKiBDYWxsZWQgd2hlbiBmaWxlX2dldGF0dHIoKSBzeXNjYWxsIG9yIEZTX0lPQ19GU0dFVFhBVFRSIGlvY3RsKCkgaXMgY2FsbGVkIG9uXFxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTY0LSAqIGlub2RlXFxuLS1cXG5zZWN1cml0eS9zZWN1cml0eS5jLTIxNjctICovXFxuc2VjdXJpdHkvc2VjdXJpdHkuYzoyMTY4OmludCBzZWN1cml0eV9pbm9kZV9maWxlX2dldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXFxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTY5LXtcXG5zZWN1cml0eS9zZWN1cml0eS5jOjIxNzA6XFx0cmV0dXJuIGNhbGxfaW50X2hvb2soaW5vZGVfZmlsZV9nZXRhdHRyLCBkZW50cnksIGZhKTtcXG5zZWN1cml0eS9zZWN1cml0eS5jLTIxNzEtfVxcbi0tXFxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jPTM1NDQ9c3RhdGljIGludCBzZWxpbnV4X2lub2RlX2ZpbGVfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuLS1cXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMtMzU0OS1cXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmM6MzU1MDpzdGF0aWMgaW50IHNlbGludXhfaW5vZGVfZmlsZV9nZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMtMzU1MS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXFxuLS1cXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmM9NzU2MD1zdGF0aWMgc3RydWN0IHNlY3VyaXR5X2hvb2tfbGlzdCBzZWxpbnV4X2hvb2tzW10gX19yb19hZnRlcl9pbml0ID0ge1xcbi0tXFxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jLTc2MTktXFx0TFNNX0hPT0tfSU5JVChpbm9kZV9yZW1vdmV4YXR0ciwgc2VsaW51eF9pbm9kZV9yZW1vdmV4YXR0ciksXFxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jOjc2MjA6XFx0TFNNX0hPT0tfSU5JVChpbm9kZV9maWxlX2dldGF0dHIsIHNlbGludXhfaW5vZGVfZmlsZV9nZXRhdHRyKSxcXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMtNzYyMS1cXHRMU01fSE9PS19JTklUKGlub2RlX2ZpbGVfc2V0YXR0ciwgc2VsaW51eF9pbm9kZV9maWxlX3NldGF0dHIpLFxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oPTg1Mz1fX1NZU0NBTEwoX19OUl9vcGVuX3RyZWVfYXR0ciwgc3lzX29wZW5fdHJlZV9hdHRyKVxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTg1NS0vKiBmcy9pbm9kZS5jICovXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjg1NjojZGVmaW5lIF9fTlJfZmlsZV9nZXRhdHRyIDQ2OFxcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo4NTc6X19TWVNDQUxMKF9fTlJfZmlsZV9nZXRhdHRyLCBzeXNfZmlsZV9nZXRhdHRyKVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC04NTgtI2RlZmluZSBfX05SX2ZpbGVfc2V0YXR0ciA0NjlcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDg0LTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxudG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0ODU6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDg2LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9taXBzL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zODQtNDY3XFx0bjY0XFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6Mzg1OjQ2OFxcdG42NFxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzg2LTQ2OVxcdG42NFxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTU2MC00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjU2MTo0NjhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTYyLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zMzkwL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5Ni00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbnRvb2xzL3BlcmYvYXJjaC9zMzkwL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjM5Nzo0NjhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxudG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzk4LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NzMtNDY3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDc0OjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDc1LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC01MTUtNDY3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTE2OjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTE3LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDc1LTQ2N1xcdGkzODZcXHRvcGVuX3RyZWVfYXR0clxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6NDc2OjQ2OFxcdGkzODZcXHRmaWxlX2dldGF0dHJcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NzctNDY5XFx0aTM4NlxcdGZpbGVfc2V0YXR0clxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzk0LTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibDozOTU6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzk2LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDQwLTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0NDE6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDQyLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtNDEwLTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibDo0MTE6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtNDEyLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6NDc6MzkuOTkyMzI1NDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NzE5OTA4OTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBEZWNpc2lvbjogQSBRdWljayBSZXZpZXcqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzIGNvbW1pdCdzIGRpZmYgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiAqQ2hlY2tzIGRpZmYqOiBSaWdodCwgaXQncyBqdXN0IGFkZGluZyBuZXcgbWFuIHBhZ2VzOiBgZmlsZV9nZXRhdHRyLjJgLCBgZmlsZV9zZXRhdHRyLjJgLCBhbmQgYGZpbGVfYXR0ci4ydHlwZWAuIEFsbCB3aXRoaW4gdGhlIGBtYW4vYCBkaXJlY3RvcnkuIE5vIGNoYW5nZXMgdG8gYWN0dWFsIGNvZGUsIGp1c3QgZG9jdW1lbnRhdGlvbi5cblxuTm93LCBsZXQncyBydW4gdGhyb3VnaCBTZWN0aW9uIDIncyBuZWdhdGl2ZSBjcml0ZXJpYS4gKlJlYWRzIFNlY3Rpb24gMio6IEhtbSwgXCJOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzLi4uXCIgT2theSwgdGhhdCBzZWN0aW9uIGNvdmVycyBcIk1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbixcIiBhbmQgXCJVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLi4uIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlLi4uXCIgQmluZ28hIFRoaXMgcGF0Y2ggZmFsbHMgc3F1YXJlbHkgaW50byB0aGF0IGNhdGVnb3J5LiBJdCdzICpwdXJlbHkqIGFkZGluZyBkb2N1bWVudGF0aW9uOyBubyBleGVjdXRhYmxlIGNvZGUgaXMgdG91Y2hlZCwgYW5kIGNlcnRhaW5seSBubyBrZXJuZWwgY29kZS5cblxuVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBoYXMgdG8gYmUgYGZhbHNlYC4gTm8gbmVlZCB0byBlbmFibGUgYW55IHNwZWNpZmljIGNvbmZpZ3MgKGBFbmFibGVDb25maWdzID0gW11gKSwgYW5kIHRoZXJlIGFyZSBubyBmb2NhbCBzeW1ib2xzIHRvIHRyYWNrIChgRm9jdXNTeW1ib2xzID0gW11gKS4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgaXMgZG9jdW1lbnRhdGlvbiwgcGxhaW4gYW5kIHNpbXBsZSwgYW5kIGl0IGRvZXNuJ3QgYWZmZWN0IHRoZSBrZXJuZWwncyBydW50aW1lIGJlaGF2aW9yLiAqRGV0ZXJtaW5lcyo6IGBSZWFzb25pbmc6IFRoZSBwYXRjaCBvbmx5IGFkZHMgbWFuIHBhZ2VzIChkb2N1bWVudGF0aW9uKSBpbiBtYW4vbWFuMi8gYW5kIG1hbi9tYW4ydHlwZS8gYW5kIGRvZXMgbm90IG1vZGlmeSBhbnkga2VybmVsIHNvdXJjZSBjb2RlLmBcblxuQWxyaWdodCwgdGltZSB0byBleGVjdXRlIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MzQ0LCJPdXRwdXRUb2tlbnMiOjEwMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzo0Nzo0NC43MTIyMzcyNjJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4ODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBvbmx5IGFkZHMgdXNlci1zcGFjZSBtYW4tcGFnZSBkb2N1bWVudGF0aW9uIGZpbGVzIHVuZGVyIHRoZSBtYW4vIGRpcmVjdG9yeSAobWFuL21hbjIvZmlsZV9nZXRhdHRyLjIsIG1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLCBhbmQgbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSkgYW5kIGRvZXMgbm90IG1vZGlmeSBhbnkgZXhlY3V0YWJsZSBrZXJuZWwgc291cmNlIGNvZGUgb3IgZGF0YSBzdHJ1Y3R1cmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIG9ubHkgYWRkcyB1c2VyLXNwYWNlIG1hbi1wYWdlIGRvY3VtZW50YXRpb24gZmlsZXMgdW5kZXIgdGhlIG1hbi8gZGlyZWN0b3J5IChtYW4vbWFuMi9maWxlX2dldGF0dHIuMiwgbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIsIGFuZCBtYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlKSBhbmQgZG9lcyBub3QgbW9kaWZ5IGFueSBleGVjdXRhYmxlIGtlcm5lbCBzb3VyY2UgY29kZSBvciBkYXRhIHN0cnVjdHVyZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzo0Nzo0NC43MTIyNTk0NTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2ndsh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-07 17:44:01 +0000 UTC FinishedAt: 2026-09-07 17:47:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIG9ubHkgYWRkcyB1c2VyLXNwYWNlIG1hbi1wYWdlIGRvY3VtZW50YXRpb24gZmlsZXMgdW5kZXIgdGhlIG1hbi8gZGlyZWN0b3J5IChtYW4vbWFuMi9maWxlX2dldGF0dHIuMiwgbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIsIGFuZCBtYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlKSBhbmQgZG9lcyBub3QgbW9kaWZ5IGFueSBleGVjdXRhYmxlIGtlcm5lbCBzb3VyY2UgY29kZSBvciBkYXRhIHN0cnVjdHVyZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjQ3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjA0N2RhZDAxMDU3ODY4OWUyZTZlMDQ4YzdlM2NiYWU2YTZkOGNkZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDcgMTc6NDc6MzIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbWFuL21hbjIvZmlsZV9nZXRhdHRyLjIgYi9tYW4vbWFuMi9maWxlX2dldGF0dHIuMlxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmYxYWVjMmFkOGM0MjVcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL21hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yXG5AQCAtMCwwICYjNDM7MSwyODYgQEBcbiYjNDM7LlxcXCYjMzQ7IENvcHlyaWdodCwgdGhlIGF1dGhvcnMgb2YgdGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0XG4mIzQzOy5cXFwmIzM0O1xuJiM0MzsuXFxcJiMzNDsgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExpbnV4LW1hbi1wYWdlcy1jb3B5bGVmdFxuJiM0MzsuXFxcJiMzNDtcbiYjNDM7LlRIIGZpbGVfZ2V0YXR0ciAyIChkYXRlKSBcJiMzNDtMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpXCYjMzQ7XG4mIzQzOy5TSCBOQU1FXG4mIzQzO2ZpbGVfZ2V0YXR0ciBcXC0gZ2V0IGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlc1xuJiM0MzsuU0ggU1lOT1BTSVNcbiYjNDM7Lm5mXG4mIzQzOy5CUiBcJiMzNDsjaW5jbHVkZSBcdTAwM2NsaW51eC9mY250bC5oXHUwMDNlXCYjMzQ7IFwmIzM0OyAgICAgIC8qIFwmIzM0OyBBVF8qIFwmIzM0OyBjb25zdGFudHMgKi9cJiMzNDtcbiYjNDM7LkJSIFwmIzM0OyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzLmhcdTAwM2VcJiMzNDsgXCYjMzQ7ICAgICAgICAgLyogc3RydWN0IFwmIzM0OyBmaWxlX2F0dHIgXCYjMzQ7IGFuZCBcJiMzNDsgRlNfWEZMQUdfKiBcJiMzNDsgY29uc3RhbnRzICovXCYjMzQ7XG4mIzQzOy5CUiBcJiMzNDsjaW5jbHVkZSBcdTAwM2NzeXMvc3lzY2FsbC5oXHUwMDNlXCYjMzQ7IFwmIzM0OyAgICAgIC8qIFwmIzM0OyBTWVNfKiBcJiMzNDsgY29uc3RhbnRzICovXCYjMzQ7XG4mIzQzOy5CICNpbmNsdWRlIFx1MDAzY3VuaXN0ZC5oXHUwMDNlXG4mIzQzOy5QXG4mIzQzOy5CIGxvbmcgc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLFxuJiM0MzsuQkkgXCYjMzQ7ICAgICAgICAgICAgICAgaW50IFwmIzM0OyBkaXJmZCBcJiMzNDssIGNvbnN0IGNoYXIgKlwmIzM0OyBwYXRobmFtZSAsXG4mIzQzOy5CSSBcJiMzNDsgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZV9hdHRyICpcJiMzNDsgZmF0dHIgXCYjMzQ7LCBzaXplX3QgXCYjMzQ7IHNpemUgLFxuJiM0MzsuQkkgXCYjMzQ7ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IFwmIzM0OyBmbGFncyApO1xuJiM0MzsuZmlcbiYjNDM7LlBcbiYjNDM7LklSIE5vdGUgOlxuJiM0MztnbGliYyBwcm92aWRlcyBubyB3cmFwcGVyIGZvclxuJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgpLFxuJiM0Mzt1c2VcbiYjNDM7LkJSIHN5c2NhbGwgKDIpXG4mIzQzO2luc3RlYWQuXG4mIzQzOy5TSCBERVNDUklQVElPTlxuJiM0MztUaGVcbiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoKVxuJiM0MztzeXN0ZW0gY2FsbCByZXRyaWV2ZXMgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXNcbiYjNDM7ZnJvbSB0aGUgZmlsZSBzcGVjaWZpZWQgYnlcbiYjNDM7LklSIHBhdGhuYW1lIC5cbiYjNDM7LlBcbiYjNDM7VGhpcyBzeXN0ZW0gY2FsbCBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gdGhlXG4mIzQzOy5CIEZTX0lPQ19GU0dFVFhBVFRSXG4mIzQzOy5CUiBpb2N0bCAoMilcbiYjNDM7b3BlcmF0aW9uLFxuJiM0MztidXQgd2l0aCB0aGUgYWR2YW50YWdlIHRoYXQgdGhlIGZpbGUgZG9lcyBub3QgbmVlZCB0byBiZSBvcGVuZWQuXG4mIzQzO0J5IHVzaW5nIGEgcGF0aG5hbWUsXG4mIzQzOy5CUiBmaWxlX2dldGF0dHIgKClcbiYjNDM7Y2FuIHJldHJpZXZlIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzXG4mIzQzO2Zyb20gYWxsIGZpbGUgdHlwZXMsXG4mIzQzO2luY2x1ZGluZyBzcGVjaWFsIGZpbGVzIHN1Y2ggYXMgRklGT3MsIHNvY2tldHMsIGJsb2NrIGRldmljZXMsIGNoYXJhY3RlclxuJiM0MztkZXZpY2VzLCBhbmQgc3ltbGlua3MsIHdoZXJlIG9wZW5pbmcgdGFyZ2V0ZWQgaW5vZGUgbWF5IG5vdCBiZSBwb3NzaWJsZS5cbiYjNDM7LlBcbiYjNDM7QXMgd2l0aFxuJiM0MzsuQlIgb3BlbmF0ICgyKSxcbiYjNDM7aWZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgcmVsYXRpdmUsXG4mIzQzO3RoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeVxuJiM0MztyZWZlcnJlZCB0byBieSB0aGUgZmlsZSBkZXNjcmlwdG9yXG4mIzQzOy5JUiBkaXJmZCAuXG4mIzQzO1RoZSBzcGVjaWFsIHZhbHVlXG4mIzQzOy5CIEFUX0ZEQ1dEXG4mIzQzO2NvdWxkIGJlIHVzZWQgdG8gcmVmZXIgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb2YgdGhlIGNhbGxpbmcgcHJvY2Vzcy5cbiYjNDM7SWZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgYWJzb2x1dGUsXG4mIzQzO3RoZW5cbiYjNDM7LkkgZGlyZmRcbiYjNDM7aXMgaWdub3JlZC5cbiYjNDM7LlBcbiYjNDM7VGhlXG4mIzQzOy5JIGZhdHRyXG4mIzQzO2FyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBhXG4mIzQzOy5JIGZpbGVfYXR0clxuJiM0MztzdHJ1Y3R1cmUuXG4mIzQzO1RoaXMgc3RydWN0dXJlIHdpbGwgYmUgZmlsbGVkIHdpdGggZmlsZSBhdHRyaWJ1dGVzLlxuJiM0MztUaGlzIHN0cnVjdHVyZSBpcyBkZXNjcmliZWQgaW5cbiYjNDM7LkJSIGZpbGVfYXR0cigydHlwZSkgLlxuJiM0MzsuUFxuJiM0MztUaGVcbiYjNDM7Lkkgc2l6ZVxuJiM0Mzthcmd1bWVudCBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5XG4mIzQzOy5JUiBmYXR0ciAuXG4mIzQzO1RoZSBzaXplIGluZGljYXRlcyB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gdXNlLCByZWZlciB0b1xuJiM0MzsuQiBmaWxlX2F0dHIoMnR5cGUpXG4mIzQzO2ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHZlcnNpb25pbmcuXG4mIzQzOy5QXG4mIzQzO1VzZXJzcGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIHplcm8taW5pdGlhbGl6ZVxuJiM0MzsuSSBzdHJ1Y3QgZmlsZV9hdHRyXG4mIzQzO2JlZm9yZSBjYWxsaW5nXG4mIzQzOy5CUiBmaWxlX2dldGF0dHIgKClcbiYjNDM7dG8gZW5zdXJlIHRoYXQgZmllbGRzIG5vdCBmaWxsZWQgaW4gYnkgb2xkZXIga2VybmVsc1xuJiM0Mzt3aWxsIGhhdmUgcHJlZGljdGFibGUgdmFsdWVzLlxuJiM0MzsuUFxuJiM0MztUaGVcbiYjNDM7LkkgZmxhZ3NcbiYjNDM7YXJndW1lbnQgaXMgYSBiaXQgbWFzaywgYXZhaWxhYmxlIGZsYWdzIGFyZTpcbiYjNDM7LlRQXG4mIzQzOy5CIEFUX0VNUFRZX1BBVEhcbiYjNDM7SWZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nLFxuJiM0MztvcGVyYXRlIG9uIHRoZSBmaWxlIHJlZmVycmVkIHRvIGJ5XG4mIzQzOy5JUiBkaXJmZCAuXG4mIzQzO0luIHRoaXMgY2FzZSxcbiYjNDM7LkkgZGlyZmRcbiYjNDM7Y2FuIHJlZmVyIHRvIGFueSB0eXBlIG9mIGZpbGUsXG4mIzQzO25vdCBqdXN0IGEgZGlyZWN0b3J5LlxuJiM0MztJZlxuJiM0MzsuSSBkaXJmZFxuJiM0Mztpc1xuJiM0MzsuQlIgQVRfRkRDV0QgLFxuJiM0Mzt0aGUgY2FsbCBmYWlscyB3aXRoIHRoZSBlcnJvclxuJiM0MzsuQlIgRUJBREYgLlxuJiM0MzsuVFBcbiYjNDM7LkIgQVRfU1lNTElOS19OT0ZPTExPV1xuJiM0MztJZlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyBhIHN5bWJvbGljIGxpbmssXG4mIzQzO2RvIG5vdCBkZXJlZmVyZW5jZSBpdDtcbiYjNDM7aW5zdGVhZCBnZXQgYXR0cmlidXRlcyBvZiB0aGUgc3ltYm9saWMgbGluayBpbm9kZSBpdHNlbGYuXG4mIzQzO0J5IGRlZmF1bHQsIHN5bWJvbGljIGxpbmtzIGFyZSBkZXJlZmVyZW5jZWQuXG4mIzQzOy5TSCBSRVRVUk4gVkFMVUVcbiYjNDM7T24gc3VjY2VzcyxcbiYjNDM7emVybyBpcyByZXR1cm5lZC5cbiYjNDM7T24gZXJyb3IsXG4mIzQzO1xcLTEgaXMgcmV0dXJuZWQsXG4mIzQzO2FuZFxuJiM0MzsuSSBlcnJub1xuJiM0MztpcyBzZXQgdG8gaW5kaWNhdGUgdGhlIGVycm9yLlxuJiM0MzsuU0ggRVJST1JTXG4mIzQzOy5UUFxuJiM0MzsuQiBFMkJJR1xuJiM0MzsuSSBzaXplXG4mIzQzO2lzIHRvbyBiaWcgKGxhcmdlciB0aGFuXG4mIzQzOy5CUiBQQUdFX1NJWkUgKS5cbiYjNDM7LlRQXG4mIzQzOy5CIEVBQ0NFU1xuJiM0MztTZWFyY2ggcGVybWlzc2lvbiBpcyBkZW5pZWQgZm9yIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXNcbiYjNDM7aW4gdGhlIHBhdGggcHJlZml4IG9mXG4mIzQzOy5JUiBwYXRobmFtZSAuXG4mIzQzOy5UUFxuJiM0MzsuQiBFQkFERlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyByZWxhdGl2ZSBidXRcbiYjNDM7LkkgZGlyZmRcbiYjNDM7aXMgbmVpdGhlclxuJiM0MzsuQiBBVF9GRENXRFxuJiM0Mztub3IgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IuXG4mIzQzOy5UUFxuJiM0MzsuQiBFQkFERlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyBhbiBlbXB0eSBzdHJpbmcsXG4mIzQzOy5CIEFUX0VNUFRZX1BBVEhcbiYjNDM7d2FzIHNwZWNpZmllZCxcbiYjNDM7YnV0XG4mIzQzOy5JIGRpcmZkXG4mIzQzO2lzIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLlxuJiM0MzsuVFBcbiYjNDM7LkIgRUZBVUxUXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO29yXG4mIzQzOy5JIGZhdHRyXG4mIzQzO2lzIGFuIGludmFsaWQgcG9pbnRlci5cbiYjNDM7LlRQXG4mIzQzOy5CIEVJTlZBTFxuJiM0MztJbnZhbGlkIGZsYWcgc3BlY2lmaWVkIGluXG4mIzQzOy5JUiBmbGFncyAuXG4mIzQzOy5UUFxuJiM0MzsuQiBFSU5WQUxcbiYjNDM7Lkkgc2l6ZVxuJiM0MztpcyBzbWFsbGVyIHRoYW5cbiYjNDM7LkJSIEZJTEVfQVRUUl9TSVpFX1ZFUjAgLlxuJiM0MzsuVFBcbiYjNDM7LkIgRUxPT1BcbiYjNDM7VG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQgd2hpbGUgcmVzb2x2aW5nXG4mIzQzOy5JUiBwYXRobmFtZSAuXG4mIzQzOy5UUFxuJiM0MzsuQiBFTkFNRVRPT0xPTkdcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgdG9vIGxvbmcuXG4mIzQzOy5UUFxuJiM0MzsuQiBFTk9FTlRcbiYjNDM7QSBjb21wb25lbnQgb2ZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7ZG9lcyBub3QgZXhpc3QsXG4mIzQzO29yXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2lzIGFuIGVtcHR5IHN0cmluZyBhbmRcbiYjNDM7LkIgQVRfRU1QVFlfUEFUSFxuJiM0Mzt3YXMgbm90IHNwZWNpZmllZCBpblxuJiM0MzsuSVIgZmxhZ3MgLlxuJiM0MzsuVFBcbiYjNDM7LkIgRU5PTUVNXG4mIzQzO0luc3VmZmljaWVudCBrZXJuZWwgbWVtb3J5IHdhcyBhdmFpbGFibGUuXG4mIzQzOy5UUFxuJiM0MzsuQiBFTk9URElSXG4mIzQzO0EgY29tcG9uZW50IG9mIHRoZSBwYXRoIHByZWZpeCBvZlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyBub3QgYSBkaXJlY3Rvcnkgb3IsXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2lzIHJlbGF0aXZlIGFuZFxuJiM0MzsuSSBkaXJmZFxuJiM0MztpcyBhIGZpbGUgZGVzY3JpcHRvciByZWZlcnJpbmcgdG8gYSBmaWxlIG90aGVyIHRoYW4gYSBkaXJlY3RvcnkuXG4mIzQzOy5UUFxuJiM0MzsuQiBFT1BOT1RTVVBQXG4mIzQzO1RoZSBmaWxlc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgZ2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoaXMgdHlwZSBvZiBpbm9kZS5cbiYjNDM7LlNIIEhJU1RPUllcbiYjNDM7LlNTIExpbnV4IDYuMTdcbiYjNDM7VGhpcyBzeXN0ZW0gY2FsbCBpcyBpbnRyb2R1Y2VkIGFzIGEgbW9yZSBmbGV4aWJsZSBhbHRlcm5hdGl2ZSB0byB0aGVcbiYjNDM7RlNfSU9DX0ZTR0VUWEFUVFJcbiYjNDM7LkJSIGlvY3RsICgyKVxuJiM0Mzt3aGljaCBjb3VsZCB3b3JrIG9uIGFueSB0eXBlIG9mIGZpbGVzLlxuJiM0MzsuU0ggTk9URVNcbiYjNDM7VGhpcyBzeXN0ZW0gY2FsbCBpcyBkZXNpZ25lZCB0byBiZSBleHRlbnNpYmxlLlxuJiM0MztUaGVcbiYjNDM7Lkkgc2l6ZVxuJiM0Mzthcmd1bWVudCBhbGxvd3MgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucyB0byBpbmRpY2F0ZVxuJiM0Mzt3aGljaCB2ZXJzaW9uIG9mIHRoZVxuJiM0MzsuSSBmaWxlX2F0dHJcbiYjNDM7c3RydWN0dXJlIHRoZXkgYXJlIHVzaW5nLFxuJiM0MztlbmFibGluZyB0aGUga2VybmVsIHRvIHN1cHBvcnQgYm90aCBvbGQgYW5kIG5ldyB2ZXJzaW9uc1xuJiM0MztvZiB0aGUgc3RydWN0dXJlIHNpbXVsdGFuZW91c2x5LlxuJiM0MzsuUFxuJiM0MztJZlxuJiM0MzsuSSBzaXplXG4mIzQzO2lzIHNtYWxsZXIgdGhhbiB0aGUgc3RydWN0dXJlIHNpemUgdGhlIGtlcm5lbCBleHBlY3RzLFxuJiM0Mztvbmx5IHRoZSBmaWVsZHMgdGhhdCBmaXQgd2l0aGluXG4mIzQzOy5JIHNpemVcbiYjNDM7d2lsbCBiZSBmaWxsZWQgaW4uXG4mIzQzO0lmXG4mIzQzOy5JIHNpemVcbiYjNDM7aXMgbGFyZ2VyIHRoYW4gdGhlIGtlcm5lbCYjMzk7cyBzdHJ1Y3R1cmUgc2l6ZSxcbiYjNDM7dGhlIGV4dHJhIGJ5dGVzIGFyZSB6ZXJvZWQuXG4mIzQzOy5TSCBFWEFNUExFU1xuJiM0MztUaGUgcHJvZ3JhbSBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIHVzZSBvZlxuJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgpXG4mIzQzO3RvIHJldHJpZXZlIGFuZCBkaXNwbGF5IGZpbGUgYXR0cmlidXRlcy5cbiYjNDM7LlBcbiYjNDM7LmluICYjNDM7NG5cbiYjNDM7LkVYXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2ZjbnRsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZnMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NzdGRpby5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N0ZGxpYi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbiYjNDM7XG4mIzQzOyNpZm5kZWYgU1lTX2ZpbGVfZ2V0YXR0clxuJiM0MzsjZGVmaW5lIFNZU19maWxlX2dldGF0dHIgNDY3XG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7aW50XG4mIzQzO21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiYjNDM7e1xuJiM0MzsgICAgc3RydWN0IGZpbGVfYXR0ciBmYSA9IHsgMCB9O1xuJiM0MzsgICAgaW50IGRmZDtcbiYjNDM7ICAgIGxvbmcgcmV0O1xuJiM0MztcbiYjNDM7ICAgIGlmIChhcmdjICE9IDIpIHtcbiYjNDM7ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7VXNhZ2U6ICVzIFx1MDAzY2ZpbGVuYW1lXHUwMDNlXFxcXG5cJiMzNDssIGFyZ3ZbMF0pO1xuJiM0MzsgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbiYjNDM7ICAgIH1cbiYjNDM7XG4mIzQzOyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIEFUX0ZEQ1dELCBhcmd2WzFdLCBcdTAwMjZmYSwgc2l6ZW9mKGZhKSwgMCk7XG4mIzQzOyAgICBpZiAocmV0ID09IFxcLTEpIHtcbiYjNDM7ICAgICAgICBwZXJyb3IoXCYjMzQ7ZmlsZV9nZXRhdHRyXCYjMzQ7KTtcbiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgcHJpbnRmKFwmIzM0O0ZpbGUgYXR0cmlidXRlczpcXFxcblwmIzM0Oyk7XG4mIzQzOyAgICBwcmludGYoXCYjMzQ7ICB4ZmxhZ3M6ICAgICAweCVsbHhcXFxcblwmIzM0OywgKHVuc2lnbmVkIGxvbmcgbG9uZylmYS5mYV94ZmxhZ3MpO1xuJiM0MzsgICAgcHJpbnRmKFwmIzM0OyAgZXh0c2l6ZTogICAgJXVcXFxcblwmIzM0OywgZmEuZmFfZXh0c2l6ZSk7XG4mIzQzOyAgICBwcmludGYoXCYjMzQ7ICBuZXh0ZW50czogICAldVxcXFxuXCYjMzQ7LCBmYS5mYV9uZXh0ZW50cyk7XG4mIzQzOyAgICBwcmludGYoXCYjMzQ7ICBwcm9qaWQ6ICAgICAldVxcXFxuXCYjMzQ7LCBmYS5mYV9wcm9qaWQpO1xuJiM0MzsgICAgcHJpbnRmKFwmIzM0OyAgY293ZXh0c2l6ZTogJXVcXFxcblwmIzM0OywgZmEuZmFfY293ZXh0c2l6ZSk7XG4mIzQzO1xuJiM0MzsgICAgLypcbiYjNDM7ICAgICAqIFRyeSBzZXR0aW5nIE5PRFVNUCBmbGFnIHdpdGggY2hhdHRyICYjNDM7ZCAuL2ZvbyB0byBzZWUgdGhlIGRpZmZlcmVuY2VcbiYjNDM7ICAgICAqL1xuJiM0MzsgICAgaWYgKGZhLmZhX3hmbGFncyBcdTAwMjYgRlNfWEZMQUdfTk9EVU1QKVxuJiM0MzsgICAgICAgIHByaW50ZihcJiMzNDsgIE5PRFVNUCBmbGFnIGlzIHNldFxcXFxuXCYjMzQ7KTtcbiYjNDM7XG4mIzQzOyAgICBleGl0KEVYSVRfU1VDQ0VTUyk7XG4mIzQzO31cbiYjNDM7LkVFXG4mIzQzOy5pblxuJiM0MzsuU0ggU0VFIEFMU09cbiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoMiksXG4mIzQzOy5CUiBmaWxlX2F0dHIgKDJ0eXBlKSxcbiYjNDM7LkJSIGlvY3RsICgyKSxcbiYjNDM7LkJSIGlvY3RsX2ZzICgyKSxcbiYjNDM7LkJSIG9wZW5hdCAoMilcbmRpZmYgLS1naXQgYS9tYW4vbWFuMi9maWxlX3NldGF0dHIuMiBiL21hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNTk2NzUwZGM3OWM4MVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvbWFuL21hbjIvZmlsZV9zZXRhdHRyLjJcbkBAIC0wLDAgJiM0MzsxLDM0MCBAQFxuJiM0MzsuXFxcJiMzNDsgQ29weXJpZ2h0LCB0aGUgYXV0aG9ycyBvZiB0aGUgTGludXggbWFuLXBhZ2VzIHByb2plY3RcbiYjNDM7LlxcXCYjMzQ7XG4mIzQzOy5cXFwmIzM0OyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTGludXgtbWFuLXBhZ2VzLWNvcHlsZWZ0XG4mIzQzOy5cXFwmIzM0O1xuJiM0MzsuVEggZmlsZV9zZXRhdHRyIDIgKGRhdGUpIFwmIzM0O0xpbnV4IG1hbi1wYWdlcyAodW5yZWxlYXNlZClcJiMzNDtcbiYjNDM7LlNIIE5BTUVcbiYjNDM7ZmlsZV9zZXRhdHRyIFxcLSBzZXQgZmlsZXN5c3RlbSBpbm9kZSBhdHRyaWJ1dGVzXG4mIzQzOy5TSCBTWU5PUFNJU1xuJiM0MzsubmZcbiYjNDM7LkJSIFwmIzM0OyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZjbnRsLmhcdTAwM2VcJiMzNDsgXCYjMzQ7ICAgICAgLyogRGVmaW5pdGlvbiBvZiBcJiMzNDsgQVRfKiBcJiMzNDsgY29uc3RhbnRzICovXCYjMzQ7XG4mIzQzOy5CUiBcJiMzNDsjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXCYjMzQ7IFwmIzM0OyAgICAgICAgIC8qIERlZmluaXRpb24gb2YgXCYjMzQ7IEZJTEVfQVRUUl8qIFxcXG4mIzQzO1wmIzM0OyBhbmQgXCYjMzQ7IEZTX1hGTEFHXyogXCYjMzQ7IGNvbnN0YW50cyAqL1wmIzM0O1xuJiM0MzsuQlIgXCYjMzQ7I2luY2x1ZGUgXHUwMDNjc3lzL3N5c2NhbGwuaFx1MDAzZVwmIzM0OyBcJiMzNDsgICAgICAvKiBEZWZpbml0aW9uIG9mIFwmIzM0OyBTWVNfKiBcJiMzNDsgY29uc3RhbnRzICovXCYjMzQ7XG4mIzQzOy5CICNpbmNsdWRlIFx1MDAzY3VuaXN0ZC5oXHUwMDNlXG4mIzQzOy5QXG4mIzQzOy5CIGxvbmcgc3lzY2FsbChTWVNfZmlsZV9zZXRhdHRyLFxuJiM0MzsuQkkgXCYjMzQ7ICAgICAgICAgICAgICAgaW50IFwmIzM0OyBkaXJmZCBcJiMzNDssIGNvbnN0IGNoYXIgKlwmIzM0OyBwYXRobmFtZSAsXG4mIzQzOy5CSSBcJiMzNDsgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZV9hdHRyICpcJiMzNDsgZmF0dHIgXCYjMzQ7LCBzaXplX3QgXCYjMzQ7IHNpemUgLFxuJiM0MzsuQkkgXCYjMzQ7ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IFwmIzM0OyBmbGFncyApO1xuJiM0MzsuZmlcbiYjNDM7LlBcbiYjNDM7LklSIE5vdGUgOlxuJiM0MztnbGliYyBwcm92aWRlcyBubyB3cmFwcGVyIGZvclxuJiM0MzsuQlIgZmlsZV9zZXRhdHRyICgpLFxuJiM0MztuZWNlc3NpdGF0aW5nIHRoZSB1c2Ugb2ZcbiYjNDM7LkJSIHN5c2NhbGwgKDIpLlxuJiM0MzsuU0ggREVTQ1JJUFRJT05cbiYjNDM7VGhlXG4mIzQzOy5CUiBmaWxlX3NldGF0dHIgKClcbiYjNDM7c3lzdGVtIGNhbGwgc2V0cyBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcbiYjNDM7b24gdGhlIGZpbGUgc3BlY2lmaWVkIGJ5XG4mIzQzOy5JUiBwYXRobmFtZSAuXG4mIzQzOy5QXG4mIzQzO1RoaXMgc3lzdGVtIGNhbGwgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHRoZVxuJiM0MzsuQiBGU19JT0NfRlNTRVRYQVRUUlxuJiM0MzsuQlIgaW9jdGwgKDIpXG4mIzQzO29wZXJhdGlvbixcbiYjNDM7YnV0IHdpdGggdGhlIGFkdmFudGFnZSB0aGF0IHRoZSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gYmUgb3BlbmVkLlxuJiM0MztCeSB1c2luZyBhIHBhdGhuYW1lIGluc3RlYWQgb2YgcmVxdWlyaW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLFxuJiM0MzsuQlIgZmlsZV9zZXRhdHRyICgpXG4mIzQzO2NhbiBtYW5pcHVsYXRlIGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlc1xuJiM0MztvbiBhbGwgZmlsZSB0eXBlcyxcbiYjNDM7aW5jbHVkaW5nIHNwZWNpYWwgZmlsZXMgKEZJRk9zLCBzb2NrZXRzLCBibG9jayBkZXZpY2VzLCBjaGFyYWN0ZXIgZGV2aWNlcylcbiYjNDM7d2hlcmUgb3BlbmluZyB0aGUgZmlsZSBtYXkgaGF2ZSBzaWRlIGVmZmVjdHMgb3IgbWF5IG5vdCBiZSBwb3NzaWJsZS5cbiYjNDM7V2l0aFxuJiM0MzsuQlIgaW9jdGwgKDIpLFxuJiM0MztpdCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIG9idGFpbiBhIGZpbGUgZGVzY3JpcHRvciB0aGF0IHJlZmVyc1xuJiM0MztkaXJlY3RseSB0byB0aGUgZmlsZXN5c3RlbSBpbm9kZSBmb3Igc3BlY2lhbCBmaWxlcy5cbiYjNDM7LlBcbiYjNDM7QXMgd2l0aFxuJiM0MzsuQlIgb3BlbmF0ICgyKSxcbiYjNDM7aWZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgcmVsYXRpdmUsXG4mIzQzO3RoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeVxuJiM0MztyZWZlcnJlZCB0byBieSB0aGUgZmlsZSBkZXNjcmlwdG9yXG4mIzQzOy5JIGRpcmZkXG4mIzQzOyhvciB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvZiB0aGUgY2FsbGluZyBwcm9jZXNzLFxuJiM0MztpZlxuJiM0MzsuSSBkaXJmZFxuJiM0MztpcyB0aGUgc3BlY2lhbCB2YWx1ZVxuJiM0MzsuQlIgQVRfRkRDV0QgKS5cbiYjNDM7SWZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgYWJzb2x1dGUsXG4mIzQzO3RoZW5cbiYjNDM7LkkgZGlyZmRcbiYjNDM7aXMgaWdub3JlZC5cbiYjNDM7LlBcbiYjNDM7VGhlXG4mIzQzOy5JIGZhdHRyXG4mIzQzO2FyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBhXG4mIzQzOy5JIGZpbGVfYXR0clxuJiM0MztzdHJ1Y3R1cmUsXG4mIzQzO3doaWNoIHNwZWNpZmllcyB0aGUgYXR0cmlidXRlcyB0byBzZXQgb24gdGhlIGZpbGUuXG4mIzQzO1RoaXMgc3RydWN0dXJlIGlzIGRlc2NyaWJlZCBpblxuJiM0MzsuQlIgZmlsZV9hdHRyICgydHlwZSkuXG4mIzQzOy5QXG4mIzQzO1RoZVxuJiM0MzsuSSBzaXplXG4mIzQzO2FyZ3VtZW50IHNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnlcbiYjNDM7LklSIGZhdHRyIC5cbiYjNDM7VGhlIHNpemUgaW5kaWNhdGVzIHZlcnNpb24gb2YgdGhlIHN0cnVjdHVyZSBpbiB1c2UsIHJlZmVyIHRvXG4mIzQzOy5CIGZpbGVfYXR0cigydHlwZSlcbiYjNDM7Zm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdmVyc2lvbmluZy5cbiYjNDM7LlBcbiYjNDM7VXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIHplcm8taW5pdGlhbGl6ZVxuJiM0MzsuSSBzdHJ1Y3QgZmlsZV9hdHRyXG4mIzQzO3RvIGVuc3VyZSB0aGF0IGZ1dHVyZSBmaWVsZHMgYWRkZWQgdG8gdGhlIHN0cnVjdHVyZVxuJiM0Mzt3aWxsIGJlIHRyZWF0ZWQgYXMgbm8tb3BzIGlmIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBpcyB1cGRhdGVkXG4mIzQzO2J1dCB0aGUgYXBwbGljYXRpb24gaXMgbm90LlxuJiM0MzsuUFxuJiM0MztUaGVcbiYjNDM7LkkgZmxhZ3NcbiYjNDM7YXJndW1lbnQgaXMgYSBiaXQgbWFzayB0aGF0IGNhbiBpbmNsdWRlIHplcm8gb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcbiYjNDM7LlRQXG4mIzQzOy5CIEFUX0VNUFRZX1BBVEhcbiYjNDM7SWZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nLFxuJiM0MztvcGVyYXRlIG9uIHRoZSBmaWxlIHJlZmVycmVkIHRvIGJ5XG4mIzQzOy5JIGRpcmZkXG4mIzQzOyh3aGljaCBtYXkgaGF2ZSBiZWVuIG9idGFpbmVkIHVzaW5nIHRoZVxuJiM0MzsuQlIgb3BlbiAoMilcbiYjNDM7LkIgT19QQVRIXG4mIzQzO2ZsYWcpLlxuJiM0MztJbiB0aGlzIGNhc2UsXG4mIzQzOy5JIGRpcmZkXG4mIzQzO2NhbiByZWZlciB0byBhbnkgdHlwZSBvZiBmaWxlLFxuJiM0Mztub3QganVzdCBhIGRpcmVjdG9yeS5cbiYjNDM7SWZcbiYjNDM7LkkgZGlyZmRcbiYjNDM7aXNcbiYjNDM7LkJSIEFUX0ZEQ1dEICxcbiYjNDM7dGhlIGNhbGwgZmFpbHMgd2l0aCB0aGUgZXJyb3JcbiYjNDM7LkJSIEVCQURGIC5cbiYjNDM7LlRQXG4mIzQzOy5CIEFUX1NZTUxJTktfTk9GT0xMT1dcbiYjNDM7SWZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgYSBzeW1ib2xpYyBsaW5rLFxuJiM0MztkbyBub3QgZGVyZWZlcmVuY2UgaXQ6XG4mIzQzO2luc3RlYWQgc2V0IGF0dHJpYnV0ZXMgb24gdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmLlxuJiM0MztCeSBkZWZhdWx0IChpLmUuLCBpZiB0aGlzIGZsYWcgaXMgbm90IHNwZWNpZmllZCksXG4mIzQzO3N5bWJvbGljIGxpbmtzIGFyZSBkZXJlZmVyZW5jZWQuXG4mIzQzOy5TSCBSRVRVUk4gVkFMVUVcbiYjNDM7T24gc3VjY2VzcyxcbiYjNDM7emVybyBpcyByZXR1cm5lZC5cbiYjNDM7T24gZXJyb3IsXG4mIzQzO1xcLTEgaXMgcmV0dXJuZWQsXG4mIzQzO2FuZFxuJiM0MzsuSSBlcnJub1xuJiM0MztpcyBzZXQgdG8gaW5kaWNhdGUgdGhlIGVycm9yLlxuJiM0MzsuU0ggRVJST1JTXG4mIzQzOy5UUFxuJiM0MzsuQiBFMkJJR1xuJiM0MzsuSSBzaXplXG4mIzQzO2lzIGxhcmdlciB0aGFuXG4mIzQzOy5CUiBQQUdFX1NJWkUgLlxuJiM0MzsuVFBcbiYjNDM7LkIgRTJCSUdcbiYjNDM7Lkkgc2l6ZVxuJiM0MztpbmRpY2F0ZXMgdGhlIHZlcnNpb24gd2hpY2gga2VybmVsIGRvZXNuJiMzOTt0IHN1cHBvcnQgKHRoZSBzaXplIGlzIGxhcmdlciB0aGFuIHRoZVxuJiM0MztrZXJuZWwgZXhwZWN0cykgYW5kIG5ldyBmaWVsZHMgYXJlIG5vbi16ZXJvLlxuJiM0MzsuVFBcbiYjNDM7LkIgRUFDQ0VTXG4mIzQzO1NlYXJjaCBwZXJtaXNzaW9uIGlzIGRlbmllZCBmb3Igb25lIG9mIHRoZSBkaXJlY3Rvcmllc1xuJiM0MztpbiB0aGUgcGF0aCBwcmVmaXggb2ZcbiYjNDM7LklSIHBhdGhuYW1lIC5cbiYjNDM7KFNlZSBhbHNvXG4mIzQzOy5CUiBwYXRoX3Jlc29sdXRpb24gKDcpLilcbiYjNDM7LlRQXG4mIzQzOy5CIEVCQURGXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2lzIHJlbGF0aXZlIGJ1dFxuJiM0MzsuSSBkaXJmZFxuJiM0MztpcyBuZWl0aGVyXG4mIzQzOy5CIEFUX0ZEQ1dEXG4mIzQzO25vciBhIHZhbGlkIGZpbGUgZGVzY3JpcHRvci5cbiYjNDM7LlRQXG4mIzQzOy5CIEVCQURGXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2lzIGFuIGVtcHR5IHN0cmluZyxcbiYjNDM7LkIgQVRfRU1QVFlfUEFUSFxuJiM0Mzt3YXMgc3BlY2lmaWVkIGluXG4mIzQzOy5JUiBmbGFncyAsXG4mIzQzO2FuZFxuJiM0MzsuSSBkaXJmZFxuJiM0MztpcyBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvci5cbiYjNDM7LlRQXG4mIzQzOy5CIEVGQVVMVFxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztvclxuJiM0MzsuSSBmYXR0clxuJiM0MztpcyBhbiBpbnZhbGlkIHBvaW50ZXIuXG4mIzQzOy5UUFxuJiM0MzsuQiBFSU5WQUxcbiYjNDM7SW52YWxpZCBmbGFnIHNwZWNpZmllZCBpblxuJiM0MzsuSVIgZmxhZ3MgLlxuJiM0MzsuVFBcbiYjNDM7LkIgRUlOVkFMXG4mIzQzOy5JIHNpemVcbiYjNDM7aXMgc21hbGxlciB0aGFuXG4mIzQzOy5CUiBGSUxFX0FUVFJfU0laRV9WRVIwIC5cbiYjNDM7LlRQXG4mIzQzOy5CIEVJTlZBTFxuJiM0MztJbnZhbGlkIGNvbWJpbmF0aW9uIG9mIHBhcmFtZXRlcnMgcHJvdmlkZWQgaW5cbiYjNDM7LkkgZmF0dHJcbiYjNDM7Zm9yIHRoaXMgdHlwZSBvZiBmaWxlIG9yIGZpbGVzeXN0ZW0uXG4mIzQzOy5UUFxuJiM0MzsuQiBFTE9PUFxuJiM0MztUb28gbWFueSBzeW1ib2xpYyBsaW5rcyBlbmNvdW50ZXJlZCB3aGlsZSByZXNvbHZpbmdcbiYjNDM7LklSIHBhdGhuYW1lIC5cbiYjNDM7LlRQXG4mIzQzOy5CIEVOQU1FVE9PTE9OR1xuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyB0b28gbG9uZy5cbiYjNDM7LlRQXG4mIzQzOy5CIEVOT0VOVFxuJiM0MztBIGNvbXBvbmVudCBvZlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0Mztkb2VzIG5vdCBleGlzdCxcbiYjNDM7b3JcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nIGFuZFxuJiM0MzsuQiBBVF9FTVBUWV9QQVRIXG4mIzQzO3dhcyBub3Qgc3BlY2lmaWVkIGluXG4mIzQzOy5JUiBmbGFncyAuXG4mIzQzOy5UUFxuJiM0MzsuQiBFTk9NRU1cbiYjNDM7SW5zdWZmaWNpZW50IGtlcm5lbCBtZW1vcnkgd2FzIGF2YWlsYWJsZS5cbiYjNDM7LlRQXG4mIzQzOy5CIEVOT1RESVJcbiYjNDM7QSBjb21wb25lbnQgb2YgdGhlIHBhdGggcHJlZml4IG9mXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2lzIG5vdCBhIGRpcmVjdG9yeSBvcixcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgcmVsYXRpdmUgYW5kXG4mIzQzOy5JIGRpcmZkXG4mIzQzO2lzIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVycmluZyB0byBhIGZpbGUgb3RoZXIgdGhhbiBhIGRpcmVjdG9yeS5cbiYjNDM7LlRQXG4mIzQzOy5CIEVPUE5PVFNVUFBcbiYjNDM7VGhlIGZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBzZXR0aW5nIGF0dHJpYnV0ZXMgb24gdGhpcyB0eXBlIG9mIGlub2RlLlxuJiM0MzsuVFBcbiYjNDM7LkIgRVBFUk1cbiYjNDM7VGhlIGNhbGxlciBkb2VzIG5vdCBoYXZlIHRoZSBuZWNlc3NhcnkgcGVybWlzc2lvbnNcbiYjNDM7dG8gY2hhbmdlIHRoZSBmaWxlIGF0dHJpYnV0ZXMuXG4mIzQzOy5UUFxuJiM0MzsuQiBFUk9GU1xuJiM0MztUaGUgZmlsZSBpcyBvbiBhIHJlYWQtb25seSBmaWxlc3lzdGVtLlxuJiM0MzsuU0ggSElTVE9SWVxuJiM0MzsuU1MgTGludXggNi4xN1xuJiM0MztUaGlzIHN5c3RlbSBjYWxsIGlzIGludHJvZHVjZWQgYXMgYSBtb3JlIGZsZXhpYmxlIGFsdGVybmF0aXZlIHRvIHRoZVxuJiM0MztGU19JT0NfRlNTRVRYQVRUUlxuJiM0MzsuQlIgaW9jdGwgKDIpXG4mIzQzO3doaWNoIGNvdWxkIHdvcmsgb24gYW55IHR5cGUgb2YgZmlsZXMuXG4mIzQzOy5TSCBOT1RFU1xuJiM0MztUaGlzIHN5c3RlbSBjYWxsIGlzIGRlc2lnbmVkIHRvIGJlIGV4dGVuc2libGUuXG4mIzQzO1RoZVxuJiM0MzsuSSBzaXplXG4mIzQzO2FyZ3VtZW50IGFsbG93cyB1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucyB0byBpbmRpY2F0ZVxuJiM0Mzt3aGljaCB2ZXJzaW9uIG9mIHRoZVxuJiM0MzsuSSBmaWxlX2F0dHJcbiYjNDM7c3RydWN0dXJlIHRoZXkgYXJlIHVzaW5nLFxuJiM0MztlbmFibGluZyB0aGUga2VybmVsIHRvIHN1cHBvcnQgYm90aCBvbGQgYW5kIG5ldyB2ZXJzaW9uc1xuJiM0MztvZiB0aGUgc3RydWN0dXJlIHNpbXVsdGFuZW91c2x5LlxuJiM0MzsuUFxuJiM0MztJZlxuJiM0MzsuSSBzaXplXG4mIzQzO2lzIHNtYWxsZXIgdGhhbiB0aGUgc3RydWN0dXJlIHNpemUgdGhlIGtlcm5lbCBleHBlY3RzLFxuJiM0Mzt0aGUga2VybmVsIHRyZWF0cyB0aGUgbWlzc2luZyBmaWVsZHMgYXMgaGF2aW5nIHplcm8gdmFsdWVzXG4mIzQzOyh3aGljaCBpcyBhIG5vLW9wKS5cbiYjNDM7SWZcbiYjNDM7Lkkgc2l6ZVxuJiM0MztpcyBsYXJnZXIgdGhhbiBleHBlY3RlZCxcbiYjNDM7dGhlIGtlcm5lbCBjaGVja3MgdGhhdCBhbGwgdW5rbm93biAodG8gdGhlIGtlcm5lbCkgZmllbGRzIGFyZSB6ZXJvO1xuJiM0MztpZiBub3QsXG4mIzQzO3RoZSBjYWxsIGZhaWxzIHdpdGhcbiYjNDM7LkJSIEUyQklHIC5cbiYjNDM7LlNIIEVYQU1QTEVTXG4mIzQzO1RoZSBwcm9ncmFtIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mXG4mIzQzOy5CUiBmaWxlX3NldGF0dHIgKClcbiYjNDM7dG8gc2V0IHRoZVxuJiM0MzsuQiBGU19YRkxBR19OT0RVTVBcbiYjNDM7ZmxhZyBvbiBhIGZpbGUuXG4mIzQzOy5QXG4mIzQzOy5pbiAmIzQzOzRuXG4mIzQzOy5FWFxuJiM0MzsjaW5jbHVkZSBcdTAwM2NmY250bC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZjbnRsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZnMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NzdGRpby5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N0ZGxpYi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N0cmluZy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbiYjNDM7XG4mIzQzOyNpZm5kZWYgU1lTX2ZpbGVfZ2V0YXR0clxuJiM0MzsjZGVmaW5lIFNZU19maWxlX2dldGF0dHIgNDY3XG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7I2lmbmRlZiBTWVNfZmlsZV9zZXRhdHRyXG4mIzQzOyNkZWZpbmUgU1lTX2ZpbGVfc2V0YXR0ciA0NjhcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MztpbnRcbiYjNDM7bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuJiM0Mzt7XG4mIzQzOyAgICBzdHJ1Y3QgZmlsZV9hdHRyIGZhID0geyAwIH07XG4mIzQzOyAgICBpbnQgZGZkO1xuJiM0MzsgICAgbG9uZyByZXQ7XG4mIzQzO1xuJiM0MzsgICAgaWYgKGFyZ2MgIT0gMikge1xuJiM0MzsgICAgICAgIGZwcmludGYoc3RkZXJyLCBcJiMzNDtVc2FnZTogJXMgXHUwMDNjZmlsZW5hbWVcdTAwM2VcXFxcblwmIzM0OywgYXJndlswXSk7XG4mIzQzOyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xuJiM0MzsgICAgfVxuJiM0MztcbiYjNDM7ICAgIGRmZCA9IG9wZW4oYXJndlsxXSwgT19SRE9OTFkpO1xuJiM0MzsgICAgaWYgKGRmZCA9PSBcXC0xKSB7XG4mIzQzOyAgICAgICAgcGVycm9yKFwmIzM0O29wZW5cJiMzNDspO1xuJiM0MzsgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbiYjNDM7ICAgIH1cbiYjNDM7XG4mIzQzOyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIGRmZCwgXCYjMzQ7XCYjMzQ7LCBcdTAwMjZmYSwgc2l6ZW9mKGZhKSwgQVRfRU1QVFlfUEFUSCk7XG4mIzQzOyAgICBpZiAocmV0ID09IFxcLTEpIHtcbiYjNDM7ICAgICAgICBwZXJyb3IoXCYjMzQ7ZmlsZV9nZXRhdHRyXCYjMzQ7KTtcbiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgcHJpbnRmKFwmIzM0O0N1cnJlbnQgZmxhZ3M6IDB4JWxseFxcXFxuXCYjMzQ7LCAodW5zaWduZWQgbG9uZyBsb25nKWZhLmZhX3hmbGFncyk7XG4mIzQzO1xuJiM0MzsgICAgZmEuZmFfeGZsYWdzIHw9IEZTX1hGTEFHX05PRFVNUDtcbiYjNDM7XG4mIzQzOyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX3NldGF0dHIsIGRmZCwgXCYjMzQ7XCYjMzQ7LCBcdTAwMjZmYSwgc2l6ZW9mKGZhKSwgQVRfRU1QVFlfUEFUSCk7XG4mIzQzOyAgICBpZiAocmV0ID09IFxcLTEpIHtcbiYjNDM7ICAgICAgICBwZXJyb3IoXCYjMzQ7ZmlsZV9zZXRhdHRyXCYjMzQ7KTtcbiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBkZmQsIFwmIzM0O1wmIzM0OywgXHUwMDI2ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpO1xuJiM0MzsgICAgaWYgKHJldCA9PSBcXC0xKSB7XG4mIzQzOyAgICAgICAgcGVycm9yKFwmIzM0O2ZpbGVfZ2V0YXR0clwmIzM0Oyk7XG4mIzQzOyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xuJiM0MzsgICAgfVxuJiM0MztcbiYjNDM7ICAgIGlmIChmYS5mYV94ZmxhZ3MgXHUwMDI2IEZTX1hGTEFHX05PRFVNUClcbiYjNDM7ICAgICAgICBwcmludGYoXCYjMzQ7ZmxhZ3MgMHglbGx4IChOT0RVTVAgZmxhZyBpcyBzZXQpXFxcXG5cJiMzNDssXG4mIzQzOyAgICAgICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpZmEuZmFfeGZsYWdzKTtcbiYjNDM7XG4mIzQzOyAgICBleGl0KEVYSVRfU1VDQ0VTUyk7XG4mIzQzO31cbiYjNDM7LkVFXG4mIzQzOy5pblxuJiM0MzsuU0ggU0VFIEFMU09cbiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoMiksXG4mIzQzOy5CUiBpb2N0bCAoMiksXG4mIzQzOy5CUiBpb2N0bF9mcyAoMiksXG4mIzQzOy5CUiBvcGVuYXQgKDIpLFxuJiM0MzsuQlIgZmlsZV9hdHRyICgydHlwZSksXG4mIzQzOy5CUiBwYXRoX3Jlc29sdXRpb24gKDcpXG5kaWZmIC0tZ2l0IGEvbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSBiL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGVcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mZDQyNmMxOWY1ZjBiXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlXG5AQCAtMCwwICYjNDM7MSwxODcgQEBcbiYjNDM7LlxcXCYjMzQ7IENvcHlyaWdodCwgdGhlIGF1dGhvcnMgb2YgdGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0XG4mIzQzOy5cXFwmIzM0O1xuJiM0MzsuXFxcJiMzNDsgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExpbnV4LW1hbi1wYWdlcy1jb3B5bGVmdFxuJiM0MzsuXFxcJiMzNDtcbiYjNDM7LlRIIGZpbGVfYXR0ciAydHlwZSAoZGF0ZSkgXCYjMzQ7TGludXggbWFuLXBhZ2VzICh1bnJlbGVhc2VkKVwmIzM0O1xuJiM0MzsuU0ggTkFNRVxuJiM0MztmaWxlX2F0dHIgXFwtIGRlc2NyaWJlIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzIHRvIGdldCBvciBzZXRcbiYjNDM7LlNIIFNZTk9QU0lTXG4mIzQzOy5FWFxuJiM0MzsuQiAjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG4mIzQzOy5QXG4mIzQzOy5CIHN0cnVjdCBmaWxlX2F0dHIge1xuJiM0MzsuQlIgXCYjMzQ7ICAgIHU2NCAgZmFfeGZsYWdzO1wmIzM0OyBcJiMzNDsgICAgIC8qIEV4dGVuZGVkIGZsYWdzICovXCYjMzQ7XG4mIzQzOy5CUiBcJiMzNDsgICAgdTMyICBmYV9leHRzaXplO1wmIzM0OyBcJiMzNDsgICAgLyogRXh0ZW50IHNpemUgaGludCAqL1wmIzM0O1xuJiM0MzsuQlIgXCYjMzQ7ICAgIHUzMiAgZmFfbmV4dGVudHM7XCYjMzQ7IFwmIzM0OyAgIC8qIE51bWJlciBvZiBleHRlbnRzIChyZWFkLW9ubHkpICovXCYjMzQ7XG4mIzQzOy5CUiBcJiMzNDsgICAgdTMyICBmYV9wcm9qaWQ7XCYjMzQ7IFwmIzM0OyAgICAgLyogUHJvamVjdCBpZGVudGlmaWVyICovXCYjMzQ7XG4mIzQzOy5CUiBcJiMzNDsgICAgdTMyICBmYV9jb3dleHRzaXplO1wmIzM0OyBcJiMzNDsgLyogQ29XIGV4dGVudCBzaXplIGhpbnQgKi9cJiMzNDtcbiYjNDM7LkIgfTtcbiYjNDM7LkVFXG4mIzQzOy5TSCBERVNDUklQVElPTlxuJiM0MztEZXNjcmliZXMgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXNcbiYjNDM7Zm9yIHVzZSB3aXRoIHRoZVxuJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgyKVxuJiM0MzthbmRcbiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoMilcbiYjNDM7c3lzdGVtIGNhbGxzLlxuJiM0MzsuUFxuJiM0MztUaGUgZmllbGRzIGFyZSBhcyBmb2xsb3dzOlxuJiM0MzsuVFBcbiYjNDM7LkkgZmFfeGZsYWdzXG4mIzQzO1RoaXMgZmllbGQgY29udGFpbnMgZmlsZSBhdHRyaWJ1dGUgZmxhZ3MuXG4mIzQzO0l0IGlzIGEgYml0IG1hc2sgY29uc2lzdGluZyBvZiB6ZXJvIG9yIG1vcmUgb2YgdGhlXG4mIzQzOy5CIEZTX1hGTEFHXypcbiYjNDM7ZmxhZ3MuXG4mIzQzO1JlZmVyIHRvIHRoZSBzZWN0aW9uXG4mIzQzOy5CIEZMQUdTXG4mIzQzO2JlbG93IGZvciBhIGxpc3Qgb2YgYWxsIGZsYWdzLlxuJiM0MzsuVFBcbiYjNDM7LkkgZmFfZXh0c2l6ZVxuJiM0MztFeHRlbnQgc2l6ZSBhbGxvY2F0b3IgaGludCBpbiBieXRlcy5cbiYjNDM7VGhpcyB2YWx1ZSBzdWdnZXN0cyBhIHByZWZlcnJlZCBleHRlbnQgc2l6ZVxuJiM0Mztmb3IgbmV3IGFsbG9jYXRpb25zIHRvIHRoaXMgZmlsZS5cbiYjNDM7LlRQXG4mIzQzOy5JIGZhX25leHRlbnRzXG4mIzQzO051bWJlciBvZiBkYXRhIGV4dGVudHMgaW4gdGhlIGZpbGUgKHJlYWQtb25seSkuXG4mIzQzO1RoaXMgZmllbGQgaXMgZmlsbGVkIGluIGJ5XG4mIzQzOy5CUiBmaWxlX2dldGF0dHIgKDIpXG4mIzQzO2FuZCBpcyBpZ25vcmVkIGJ5XG4mIzQzOy5CUiBmaWxlX3NldGF0dHIgKDIpLlxuJiM0MzsuVFBcbiYjNDM7LkkgZmFfcHJvamlkXG4mIzQzO1Byb2plY3QgaWRlbnRpZmllci5cbiYjNDM7VXNlZCBieSBxdW90YSBzeXN0ZW1zIHRvIGdyb3VwIHJlbGF0ZWQgZmlsZXMuXG4mIzQzOy5UUFxuJiM0MzsuSSBmYV9jb3dleHRzaXplXG4mIzQzO0NvcHktb24tV3JpdGUgKENvVykgZXh0ZW50IHNpemUgaGludCBpbiBieXRlcy5cbiYjNDM7VGhpcyB2YWx1ZSBzdWdnZXN0cyBhIHByZWZlcnJlZCBleHRlbnQgc2l6ZVxuJiM0Mztmb3IgQ29XIG9wZXJhdGlvbnMuXG4mIzQzOy5TSCBGTEFHU1xuJiM0MztGbGFncyBjYW4gYmU6XG4mIzQzOy5SU1xuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfUkVBTFRJTUVcbiYjNDM7RGF0YSBpcyBzdG9yZWQgaW4gYSByZWFsdGltZSB2b2x1bWUuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19JTU1VVEFCTEVcbiYjNDM7RmlsZSBjYW5ub3QgYmUgbW9kaWZpZWQuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19BUFBFTkRcbiYjNDM7QWxsIHdyaXRlcyBtdXN0IGFwcGVuZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlLlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfU1lOQ1xuJiM0MztBbGwgd3JpdGVzIGFyZSBzeW5jaHJvbm91cy5cbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX05PQVRJTUVcbiYjNDM7RG8gbm90IHVwZGF0ZSBmaWxlIGFjY2VzcyB0aW1lIG9uIHJlYWRzLlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfTk9EVU1QXG4mIzQzO0RvIG5vdCBpbmNsdWRlIGZpbGUgaW4gYmFja3Vwcy5cbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX0RBWFxuJiM0MztVc2UgRGlyZWN0IEFjY2VzcyAoREFYKSBmb3IgSS9PIG9wZXJhdGlvbnMuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19OT0RFRlJBR1xuJiM0MztFeGNsdWRlIHRoaXMgZmlsZSBmcm9tIGRlZnJhZ21lbnRhdGlvbiBvcGVyYXRpb25zLlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfRklMRVNUUkVBTVxuJiM0MztVc2UgZmlsZXN0cmVhbSBhbGxvY2F0b3IgZm9yIHRoaXMgZmlsZS5cbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX0VYVFNJWkVcbiYjNDM7VXNlIHRoZSBleHRlbnQgc2l6ZSBoaW50IGZyb20gdGhlXG4mIzQzOy5JIGZhX2V4dHNpemVcbiYjNDM7ZmllbGQuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19DT1dFWFRTSVpFXG4mIzQzO1VzZSB0aGUgQ29XIGV4dGVudCBzaXplIGhpbnQgZnJvbSB0aGVcbiYjNDM7LkkgZmFfY293ZXh0c2l6ZVxuJiM0MztmaWVsZC5cbiYjNDM7LlJFXG4mIzQzOy5QXG4mIzQzO0RpcmVjdG9yeSBvbmx5IGZsYWdzOlxuJiM0MzsuUlNcbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX1JUSU5IRVJJVFxuJiM0MztOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSByZWFsdGltZSBmbGFnLlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfTk9TWU1MSU5LU1xuJiM0MztEaXNhbGxvdyBjcmVhdGlvbiBvZiBzeW1ib2xpYyBsaW5rcyBpbiB0aGlzIGRpcmVjdG9yeS5cbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX0VYVFNaSU5IRVJJVFxuJiM0MztOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSBleHRlbnQgc2l6ZSBoaW50LlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfUFJPSklOSEVSSVRcbiYjNDM7TmV3IGZpbGVzIGNyZWF0ZWQgaW4gdGhpcyBkaXJlY3RvcnkgaW5oZXJpdCB0aGUgcHJvamVjdCBpZGVudGlmaWVyLlxuJiM0MzsuUkVcbiYjNDM7LlBcbiYjNDM7VGhlIGZvbGxvd2luZyBmbGFncyBhcmUgcmVhZC1vbmx5OlxuJiM0MzsuUlNcbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX1BSRUFMTE9DXG4mIzQzO0ZpbGUgaGFzIHByZWFsbG9jYXRlZCBleHRlbnRzLlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfSEFTQVRUUlxuJiM0MztGaWxlIGhhcyBleHRlbmRlZCBhdHRyaWJ1dGVzLlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfVkVSSVRZXG4mIzQzO0ZpbGUgaGFzIGZzLXZlcml0eSBlbmFibGVkLlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfQ0FTRUZPTERcbiYjNDM7VGhlIGZpbGVzeXN0ZW0gcGVyZm9ybXMgY2FzZS1pbnNlbnNpdGl2ZSBsb29rdXBzIChmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZVxuJiM0Mztjb21wYXJpc29ucyBpZ25vcmUgY2FzZSkuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19DQVNFTk9OUFJFU0VSVklOR1xuJiM0MztUaGUgZmlsZXN5c3RlbSBkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUgY2FzZSBvZiBmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZXMuXG4mIzQzOy5SRVxuJiM0MzsuUFxuJiM0MztOb3QgYWxsIGZpbGVzeXN0ZW1zIHN1cHBvcnQgYWxsIGZsYWdzLlxuJiM0MztTZXR0aW5nIHVuc3VwcG9ydGVkIGZsYWdzIG1heSByZXN1bHQgaW4gYW5cbiYjNDM7LkIgRUlOVkFMXG4mIzQzO29yXG4mIzQzOy5CIEVPUE5PVFNVUFBcbiYjNDM7ZXJyb3IuXG4mIzQzOy5TSCBWRVJTSU9OU1xuJiM0MzsuU1MgU3RydWN0dXJlIHNpemVcbiYjNDM7VGhlIHN0cnVjdHVyZSBzaXplIGlzIGRlZmluZWQgYnlcbiYjNDM7LkIgRklMRV9BVFRSX1NJWkVfVkVSKlxuJiM0Mzt3aGljaCBpcyBhbHNvIGEgdmVyc2lvbiBvZiB0aGUgc3RydWN0dXJlIGJlaW5nIHVzZWQuXG4mIzQzO1RoZVxuJiM0MzsuSSBzaXplXG4mIzQzO3BhcmFtZXRlciBwYXNzZWQgdG9cbiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoMilcbiYjNDM7YW5kXG4mIzQzOy5CUiBmaWxlX3NldGF0dHIgKDIpXG4mIzQzO2luZGljYXRlcyB0aGUgdmVyc2lvbiBvZlxuJiM0MzsuSSBzdHJ1Y3QgZmlsZV9hdHRyXFxmUC5cbiYjNDM7LlNTIEZJTEVfQVRUUl9TSVpFX1ZFUjBcbiYjNDM7U2l6ZSBpcyAyNCBieXRlcy5cbiYjNDM7LlNIIEhJU1RPUllcbiYjNDM7LlNTIExpbnV4IHY2LjE3XG4mIzQzO1RoaXMgc3RydWN0dXJlIGlzIGludHJvZHVjZWQuXG4mIzQzO1RoZVxuJiM0MzsuSSBzdHJ1Y3QgZmlsZV9hdHRyXG4mIzQzO3Byb3ZpZGVzIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSB0b1xuJiM0MzsuSSBzdHJ1Y3QgZnN4YXR0clxuJiM0Mzt1c2VkIGJ5IHRoZVxuJiM0MzsuQiBGU19JT0NfRlNHRVRYQVRUUlxuJiM0MzthbmRcbiYjNDM7LkIgRlNfSU9DX0ZTU0VUWEFUVFJcbiYjNDM7LkJSIGlvY3RsICgyKVxuJiM0MztvcGVyYXRpb25zLFxuJiM0MztidXQgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZSB0aHJvdWdoIHRoZVxuJiM0MzsuSSBzaXplXG4mIzQzO3BhcmFtZXRlciBvZiB0aGUgc3lzdGVtIGNhbGxzLlxuJiM0MzsuUFxuJiM0MztFeHRyYSBmaWVsZHMgbWF5IGJlIGFwcGVuZGVkIHRvIHRoZSBzdHJ1Y3R1cmUgaW4gZnV0dXJlIGtlcm5lbCB2ZXJzaW9ucy5cbiYjNDM7VGhlIGtlcm5lbCB3aWxsIGV4cGVjdCBuZXcgZmllbGRzIHRvIGJlIHplcm9zXG4mIzQzO2ZvciBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgc3RydWN0dXJlLlxuJiM0MztUaGVyZWZvcmUsIGEgdXNlclxuJiM0MzsuSSBtdXN0XG4mIzQzO3plcm8tZmlsbCB0aGUgc3RydWN0dXJlIG9uIGluaXRpYWxpemF0aW9uIHRvIGtlZXAgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyXG4mIzQzO2tlcm5lbHMuXG4mIzQzOy5TUyBMaW51eCB2Ny4yXG4mIzQzO1RoZSBGU19YRkxBR19DQVNFRk9MRCBhbmQgRlNfWEZMQUdfQ0FTRU5PTlBSRVNFUlZJTkcgYXJlIGludHJvZHVjZWQgdG8gZW5hYmxlXG4mIzQzO3VwcGVyIGxheWVycywgc3VjaCBhcyBORlNELCB0byByZXRyaWV2ZSBjYXNlIHNlbnNpdGl2aXR5IGluZm9ybWF0aW9uLlxuJiM0MzsuU0ggU0VFIEFMU09cbiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoMiksXG4mIzQzOy5CUiBmaWxlX3NldGF0dHIgKDIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIG9ubHkgYWRkcyB1c2VyLXNwYWNlIG1hbi1wYWdlIGRvY3VtZW50YXRpb24gZmlsZXMgdW5kZXIgdGhlIG1hbi8gZGlyZWN0b3J5IChtYW4vbWFuMi9maWxlX2dldGF0dHIuMiwgbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIsIGFuZCBtYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlKSBhbmQgZG9lcyBub3QgbW9kaWZ5IGFueSBleGVjdXRhYmxlIGtlcm5lbCBzb3VyY2UgY29kZSBvciBkYXRhIHN0cnVjdHVyZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjA0N2RhZDAxMDU3ODY4OWUyZTZlMDQ4YzdlM2NiYWU2YTZkOGNkZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gU2VwIDcgMTc6NDc6MzIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tYW4vbWFuMi9maWxlX2dldGF0dHIuMiBiL21hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmYxYWVjMmFkOGM0MjUKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9tYW4vbWFuMi9maWxlX2dldGF0dHIuMgpAQCAtMCwwICYjNDM7MSwyODYgQEAKJiM0MzsuXCYjMzQ7IENvcHlyaWdodCwgdGhlIGF1dGhvcnMgb2YgdGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0CiYjNDM7LlwmIzM0OwomIzQzOy5cJiMzNDsgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExpbnV4LW1hbi1wYWdlcy1jb3B5bGVmdAomIzQzOy5cJiMzNDsKJiM0MzsuVEggZmlsZV9nZXRhdHRyIDIgKGRhdGUpICYjMzQ7TGludXggbWFuLXBhZ2VzICh1bnJlbGVhc2VkKSYjMzQ7CiYjNDM7LlNIIE5BTUUKJiM0MztmaWxlX2dldGF0dHIgXC0gZ2V0IGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlcwomIzQzOy5TSCBTWU5PUFNJUwomIzQzOy5uZgomIzQzOy5CUiAmIzM0OyNpbmNsdWRlICZsdDtsaW51eC9mY250bC5oJmd0OyYjMzQ7ICYjMzQ7ICAgICAgLyogJiMzNDsgQVRfKiAmIzM0OyBjb25zdGFudHMgKi8mIzM0OwomIzQzOy5CUiAmIzM0OyNpbmNsdWRlICZsdDtsaW51eC9mcy5oJmd0OyYjMzQ7ICYjMzQ7ICAgICAgICAgLyogc3RydWN0ICYjMzQ7IGZpbGVfYXR0ciAmIzM0OyBhbmQgJiMzNDsgRlNfWEZMQUdfKiAmIzM0OyBjb25zdGFudHMgKi8mIzM0OwomIzQzOy5CUiAmIzM0OyNpbmNsdWRlICZsdDtzeXMvc3lzY2FsbC5oJmd0OyYjMzQ7ICYjMzQ7ICAgICAgLyogJiMzNDsgU1lTXyogJiMzNDsgY29uc3RhbnRzICovJiMzNDsKJiM0MzsuQiAjaW5jbHVkZSAmbHQ7dW5pc3RkLmgmZ3Q7CiYjNDM7LlAKJiM0MzsuQiBsb25nIHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwKJiM0MzsuQkkgJiMzNDsgICAgICAgICAgICAgICBpbnQgJiMzNDsgZGlyZmQgJiMzNDssIGNvbnN0IGNoYXIgKiYjMzQ7IHBhdGhuYW1lICwKJiM0MzsuQkkgJiMzNDsgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZV9hdHRyIComIzM0OyBmYXR0ciAmIzM0Oywgc2l6ZV90ICYjMzQ7IHNpemUgLAomIzQzOy5CSSAmIzM0OyAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAmIzM0OyBmbGFncyApOwomIzQzOy5maQomIzQzOy5QCiYjNDM7LklSIE5vdGUgOgomIzQzO2dsaWJjIHByb3ZpZGVzIG5vIHdyYXBwZXIgZm9yCiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoKSwKJiM0Mzt1c2UKJiM0MzsuQlIgc3lzY2FsbCAoMikKJiM0MztpbnN0ZWFkLgomIzQzOy5TSCBERVNDUklQVElPTgomIzQzO1RoZQomIzQzOy5CUiBmaWxlX2dldGF0dHIgKCkKJiM0MztzeXN0ZW0gY2FsbCByZXRyaWV2ZXMgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXMKJiM0Mztmcm9tIHRoZSBmaWxlIHNwZWNpZmllZCBieQomIzQzOy5JUiBwYXRobmFtZSAuCiYjNDM7LlAKJiM0MztUaGlzIHN5c3RlbSBjYWxsIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byB0aGUKJiM0MzsuQiBGU19JT0NfRlNHRVRYQVRUUgomIzQzOy5CUiBpb2N0bCAoMikKJiM0MztvcGVyYXRpb24sCiYjNDM7YnV0IHdpdGggdGhlIGFkdmFudGFnZSB0aGF0IHRoZSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gYmUgb3BlbmVkLgomIzQzO0J5IHVzaW5nIGEgcGF0aG5hbWUsCiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoKQomIzQzO2NhbiByZXRyaWV2ZSBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlcwomIzQzO2Zyb20gYWxsIGZpbGUgdHlwZXMsCiYjNDM7aW5jbHVkaW5nIHNwZWNpYWwgZmlsZXMgc3VjaCBhcyBGSUZPcywgc29ja2V0cywgYmxvY2sgZGV2aWNlcywgY2hhcmFjdGVyCiYjNDM7ZGV2aWNlcywgYW5kIHN5bWxpbmtzLCB3aGVyZSBvcGVuaW5nIHRhcmdldGVkIGlub2RlIG1heSBub3QgYmUgcG9zc2libGUuCiYjNDM7LlAKJiM0MztBcyB3aXRoCiYjNDM7LkJSIG9wZW5hdCAoMiksCiYjNDM7aWYKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIHJlbGF0aXZlLAomIzQzO3RoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeQomIzQzO3JlZmVycmVkIHRvIGJ5IHRoZSBmaWxlIGRlc2NyaXB0b3IKJiM0MzsuSVIgZGlyZmQgLgomIzQzO1RoZSBzcGVjaWFsIHZhbHVlCiYjNDM7LkIgQVRfRkRDV0QKJiM0Mztjb3VsZCBiZSB1c2VkIHRvIHJlZmVyIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IG9mIHRoZSBjYWxsaW5nIHByb2Nlc3MuCiYjNDM7SWYKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIGFic29sdXRlLAomIzQzO3RoZW4KJiM0MzsuSSBkaXJmZAomIzQzO2lzIGlnbm9yZWQuCiYjNDM7LlAKJiM0MztUaGUKJiM0MzsuSSBmYXR0cgomIzQzO2FyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBhCiYjNDM7LkkgZmlsZV9hdHRyCiYjNDM7c3RydWN0dXJlLgomIzQzO1RoaXMgc3RydWN0dXJlIHdpbGwgYmUgZmlsbGVkIHdpdGggZmlsZSBhdHRyaWJ1dGVzLgomIzQzO1RoaXMgc3RydWN0dXJlIGlzIGRlc2NyaWJlZCBpbgomIzQzOy5CUiBmaWxlX2F0dHIoMnR5cGUpIC4KJiM0MzsuUAomIzQzO1RoZQomIzQzOy5JIHNpemUKJiM0Mzthcmd1bWVudCBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5CiYjNDM7LklSIGZhdHRyIC4KJiM0MztUaGUgc2l6ZSBpbmRpY2F0ZXMgdmVyc2lvbiBvZiB0aGUgc3RydWN0dXJlIGluIHVzZSwgcmVmZXIgdG8KJiM0MzsuQiBmaWxlX2F0dHIoMnR5cGUpCiYjNDM7Zm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdmVyc2lvbmluZy4KJiM0MzsuUAomIzQzO1VzZXJzcGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIHplcm8taW5pdGlhbGl6ZQomIzQzOy5JIHN0cnVjdCBmaWxlX2F0dHIKJiM0MztiZWZvcmUgY2FsbGluZwomIzQzOy5CUiBmaWxlX2dldGF0dHIgKCkKJiM0Mzt0byBlbnN1cmUgdGhhdCBmaWVsZHMgbm90IGZpbGxlZCBpbiBieSBvbGRlciBrZXJuZWxzCiYjNDM7d2lsbCBoYXZlIHByZWRpY3RhYmxlIHZhbHVlcy4KJiM0MzsuUAomIzQzO1RoZQomIzQzOy5JIGZsYWdzCiYjNDM7YXJndW1lbnQgaXMgYSBiaXQgbWFzaywgYXZhaWxhYmxlIGZsYWdzIGFyZToKJiM0MzsuVFAKJiM0MzsuQiBBVF9FTVBUWV9QQVRICiYjNDM7SWYKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIGFuIGVtcHR5IHN0cmluZywKJiM0MztvcGVyYXRlIG9uIHRoZSBmaWxlIHJlZmVycmVkIHRvIGJ5CiYjNDM7LklSIGRpcmZkIC4KJiM0MztJbiB0aGlzIGNhc2UsCiYjNDM7LkkgZGlyZmQKJiM0MztjYW4gcmVmZXIgdG8gYW55IHR5cGUgb2YgZmlsZSwKJiM0Mztub3QganVzdCBhIGRpcmVjdG9yeS4KJiM0MztJZgomIzQzOy5JIGRpcmZkCiYjNDM7aXMKJiM0MzsuQlIgQVRfRkRDV0QgLAomIzQzO3RoZSBjYWxsIGZhaWxzIHdpdGggdGhlIGVycm9yCiYjNDM7LkJSIEVCQURGIC4KJiM0MzsuVFAKJiM0MzsuQiBBVF9TWU1MSU5LX05PRk9MTE9XCiYjNDM7SWYKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIGEgc3ltYm9saWMgbGluaywKJiM0MztkbyBub3QgZGVyZWZlcmVuY2UgaXQ7CiYjNDM7aW5zdGVhZCBnZXQgYXR0cmlidXRlcyBvZiB0aGUgc3ltYm9saWMgbGluayBpbm9kZSBpdHNlbGYuCiYjNDM7QnkgZGVmYXVsdCwgc3ltYm9saWMgbGlua3MgYXJlIGRlcmVmZXJlbmNlZC4KJiM0MzsuU0ggUkVUVVJOIFZBTFVFCiYjNDM7T24gc3VjY2VzcywKJiM0Mzt6ZXJvIGlzIHJldHVybmVkLgomIzQzO09uIGVycm9yLAomIzQzO1wtMSBpcyByZXR1cm5lZCwKJiM0MzthbmQKJiM0MzsuSSBlcnJubwomIzQzO2lzIHNldCB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuCiYjNDM7LlNIIEVSUk9SUwomIzQzOy5UUAomIzQzOy5CIEUyQklHCiYjNDM7Lkkgc2l6ZQomIzQzO2lzIHRvbyBiaWcgKGxhcmdlciB0aGFuCiYjNDM7LkJSIFBBR0VfU0laRSApLgomIzQzOy5UUAomIzQzOy5CIEVBQ0NFUwomIzQzO1NlYXJjaCBwZXJtaXNzaW9uIGlzIGRlbmllZCBmb3Igb25lIG9mIHRoZSBkaXJlY3RvcmllcwomIzQzO2luIHRoZSBwYXRoIHByZWZpeCBvZgomIzQzOy5JUiBwYXRobmFtZSAuCiYjNDM7LlRQCiYjNDM7LkIgRUJBREYKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIHJlbGF0aXZlIGJ1dAomIzQzOy5JIGRpcmZkCiYjNDM7aXMgbmVpdGhlcgomIzQzOy5CIEFUX0ZEQ1dECiYjNDM7bm9yIGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yLgomIzQzOy5UUAomIzQzOy5CIEVCQURGCiYjNDM7LkkgcGF0aG5hbWUKJiM0MztpcyBhbiBlbXB0eSBzdHJpbmcsCiYjNDM7LkIgQVRfRU1QVFlfUEFUSAomIzQzO3dhcyBzcGVjaWZpZWQsCiYjNDM7YnV0CiYjNDM7LkkgZGlyZmQKJiM0MztpcyBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvci4KJiM0MzsuVFAKJiM0MzsuQiBFRkFVTFQKJiM0MzsuSSBwYXRobmFtZQomIzQzO29yCiYjNDM7LkkgZmF0dHIKJiM0MztpcyBhbiBpbnZhbGlkIHBvaW50ZXIuCiYjNDM7LlRQCiYjNDM7LkIgRUlOVkFMCiYjNDM7SW52YWxpZCBmbGFnIHNwZWNpZmllZCBpbgomIzQzOy5JUiBmbGFncyAuCiYjNDM7LlRQCiYjNDM7LkIgRUlOVkFMCiYjNDM7Lkkgc2l6ZQomIzQzO2lzIHNtYWxsZXIgdGhhbgomIzQzOy5CUiBGSUxFX0FUVFJfU0laRV9WRVIwIC4KJiM0MzsuVFAKJiM0MzsuQiBFTE9PUAomIzQzO1RvbyBtYW55IHN5bWJvbGljIGxpbmtzIGVuY291bnRlcmVkIHdoaWxlIHJlc29sdmluZwomIzQzOy5JUiBwYXRobmFtZSAuCiYjNDM7LlRQCiYjNDM7LkIgRU5BTUVUT09MT05HCiYjNDM7LkkgcGF0aG5hbWUKJiM0MztpcyB0b28gbG9uZy4KJiM0MzsuVFAKJiM0MzsuQiBFTk9FTlQKJiM0MztBIGNvbXBvbmVudCBvZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7ZG9lcyBub3QgZXhpc3QsCiYjNDM7b3IKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIGFuIGVtcHR5IHN0cmluZyBhbmQKJiM0MzsuQiBBVF9FTVBUWV9QQVRICiYjNDM7d2FzIG5vdCBzcGVjaWZpZWQgaW4KJiM0MzsuSVIgZmxhZ3MgLgomIzQzOy5UUAomIzQzOy5CIEVOT01FTQomIzQzO0luc3VmZmljaWVudCBrZXJuZWwgbWVtb3J5IHdhcyBhdmFpbGFibGUuCiYjNDM7LlRQCiYjNDM7LkIgRU5PVERJUgomIzQzO0EgY29tcG9uZW50IG9mIHRoZSBwYXRoIHByZWZpeCBvZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgbm90IGEgZGlyZWN0b3J5IG9yLAomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgcmVsYXRpdmUgYW5kCiYjNDM7LkkgZGlyZmQKJiM0MztpcyBhIGZpbGUgZGVzY3JpcHRvciByZWZlcnJpbmcgdG8gYSBmaWxlIG90aGVyIHRoYW4gYSBkaXJlY3RvcnkuCiYjNDM7LlRQCiYjNDM7LkIgRU9QTk9UU1VQUAomIzQzO1RoZSBmaWxlc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgZ2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoaXMgdHlwZSBvZiBpbm9kZS4KJiM0MzsuU0ggSElTVE9SWQomIzQzOy5TUyBMaW51eCA2LjE3CiYjNDM7VGhpcyBzeXN0ZW0gY2FsbCBpcyBpbnRyb2R1Y2VkIGFzIGEgbW9yZSBmbGV4aWJsZSBhbHRlcm5hdGl2ZSB0byB0aGUKJiM0MztGU19JT0NfRlNHRVRYQVRUUgomIzQzOy5CUiBpb2N0bCAoMikKJiM0Mzt3aGljaCBjb3VsZCB3b3JrIG9uIGFueSB0eXBlIG9mIGZpbGVzLgomIzQzOy5TSCBOT1RFUwomIzQzO1RoaXMgc3lzdGVtIGNhbGwgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZS4KJiM0MztUaGUKJiM0MzsuSSBzaXplCiYjNDM7YXJndW1lbnQgYWxsb3dzIHVzZXJzcGFjZSBhcHBsaWNhdGlvbnMgdG8gaW5kaWNhdGUKJiM0Mzt3aGljaCB2ZXJzaW9uIG9mIHRoZQomIzQzOy5JIGZpbGVfYXR0cgomIzQzO3N0cnVjdHVyZSB0aGV5IGFyZSB1c2luZywKJiM0MztlbmFibGluZyB0aGUga2VybmVsIHRvIHN1cHBvcnQgYm90aCBvbGQgYW5kIG5ldyB2ZXJzaW9ucwomIzQzO29mIHRoZSBzdHJ1Y3R1cmUgc2ltdWx0YW5lb3VzbHkuCiYjNDM7LlAKJiM0MztJZgomIzQzOy5JIHNpemUKJiM0MztpcyBzbWFsbGVyIHRoYW4gdGhlIHN0cnVjdHVyZSBzaXplIHRoZSBrZXJuZWwgZXhwZWN0cywKJiM0Mztvbmx5IHRoZSBmaWVsZHMgdGhhdCBmaXQgd2l0aGluCiYjNDM7Lkkgc2l6ZQomIzQzO3dpbGwgYmUgZmlsbGVkIGluLgomIzQzO0lmCiYjNDM7Lkkgc2l6ZQomIzQzO2lzIGxhcmdlciB0aGFuIHRoZSBrZXJuZWwmIzM5O3Mgc3RydWN0dXJlIHNpemUsCiYjNDM7dGhlIGV4dHJhIGJ5dGVzIGFyZSB6ZXJvZWQuCiYjNDM7LlNIIEVYQU1QTEVTCiYjNDM7VGhlIHByb2dyYW0gYmVsb3cgZGVtb25zdHJhdGVzIHRoZSB1c2Ugb2YKJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgpCiYjNDM7dG8gcmV0cmlldmUgYW5kIGRpc3BsYXkgZmlsZSBhdHRyaWJ1dGVzLgomIzQzOy5QCiYjNDM7LmluICYjNDM7NG4KJiM0MzsuRVgKJiM0MzsjaW5jbHVkZSAmbHQ7ZmNudGwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZnMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7c3RkaW8uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7c3RkbGliLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N5cy9zeXNjYWxsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3VuaXN0ZC5oJmd0OwomIzQzOwomIzQzOyNpZm5kZWYgU1lTX2ZpbGVfZ2V0YXR0cgomIzQzOyNkZWZpbmUgU1lTX2ZpbGVfZ2V0YXR0ciA0NjcKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MztpbnQKJiM0MzttYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiYjNDM7ewomIzQzOyAgICBzdHJ1Y3QgZmlsZV9hdHRyIGZhID0geyAwIH07CiYjNDM7ICAgIGludCBkZmQ7CiYjNDM7ICAgIGxvbmcgcmV0OwomIzQzOwomIzQzOyAgICBpZiAoYXJnYyAhPSAyKSB7CiYjNDM7ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgJiMzNDtVc2FnZTogJXMgJmx0O2ZpbGVuYW1lJmd0O1xcbiYjMzQ7LCBhcmd2WzBdKTsKJiM0MzsgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKJiM0MzsgICAgfQomIzQzOwomIzQzOyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIEFUX0ZEQ1dELCBhcmd2WzFdLCAmYW1wO2ZhLCBzaXplb2YoZmEpLCAwKTsKJiM0MzsgICAgaWYgKHJldCA9PSBcLTEpIHsKJiM0MzsgICAgICAgIHBlcnJvcigmIzM0O2ZpbGVfZ2V0YXR0ciYjMzQ7KTsKJiM0MzsgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKJiM0MzsgICAgfQomIzQzOwomIzQzOyAgICBwcmludGYoJiMzNDtGaWxlIGF0dHJpYnV0ZXM6XFxuJiMzNDspOwomIzQzOyAgICBwcmludGYoJiMzNDsgIHhmbGFnczogICAgIDB4JWxseFxcbiYjMzQ7LCAodW5zaWduZWQgbG9uZyBsb25nKWZhLmZhX3hmbGFncyk7CiYjNDM7ICAgIHByaW50ZigmIzM0OyAgZXh0c2l6ZTogICAgJXVcXG4mIzM0OywgZmEuZmFfZXh0c2l6ZSk7CiYjNDM7ICAgIHByaW50ZigmIzM0OyAgbmV4dGVudHM6ICAgJXVcXG4mIzM0OywgZmEuZmFfbmV4dGVudHMpOwomIzQzOyAgICBwcmludGYoJiMzNDsgIHByb2ppZDogICAgICV1XFxuJiMzNDssIGZhLmZhX3Byb2ppZCk7CiYjNDM7ICAgIHByaW50ZigmIzM0OyAgY293ZXh0c2l6ZTogJXVcXG4mIzM0OywgZmEuZmFfY293ZXh0c2l6ZSk7CiYjNDM7CiYjNDM7ICAgIC8qCiYjNDM7ICAgICAqIFRyeSBzZXR0aW5nIE5PRFVNUCBmbGFnIHdpdGggY2hhdHRyICYjNDM7ZCAuL2ZvbyB0byBzZWUgdGhlIGRpZmZlcmVuY2UKJiM0MzsgICAgICovCiYjNDM7ICAgIGlmIChmYS5mYV94ZmxhZ3MgJmFtcDsgRlNfWEZMQUdfTk9EVU1QKQomIzQzOyAgICAgICAgcHJpbnRmKCYjMzQ7ICBOT0RVTVAgZmxhZyBpcyBzZXRcXG4mIzM0Oyk7CiYjNDM7CiYjNDM7ICAgIGV4aXQoRVhJVF9TVUNDRVNTKTsKJiM0Mzt9CiYjNDM7LkVFCiYjNDM7LmluCiYjNDM7LlNIIFNFRSBBTFNPCiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoMiksCiYjNDM7LkJSIGZpbGVfYXR0ciAoMnR5cGUpLAomIzQzOy5CUiBpb2N0bCAoMiksCiYjNDM7LkJSIGlvY3RsX2ZzICgyKSwKJiM0MzsuQlIgb3BlbmF0ICgyKQpkaWZmIC0tZ2l0IGEvbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIgYi9tYW4vbWFuMi9maWxlX3NldGF0dHIuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi41OTY3NTBkYzc5YzgxCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIKQEAgLTAsMCAmIzQzOzEsMzQwIEBACiYjNDM7LlwmIzM0OyBDb3B5cmlnaHQsIHRoZSBhdXRob3JzIG9mIHRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdAomIzQzOy5cJiMzNDsKJiM0MzsuXCYjMzQ7IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMaW51eC1tYW4tcGFnZXMtY29weWxlZnQKJiM0MzsuXCYjMzQ7CiYjNDM7LlRIIGZpbGVfc2V0YXR0ciAyIChkYXRlKSAmIzM0O0xpbnV4IG1hbi1wYWdlcyAodW5yZWxlYXNlZCkmIzM0OwomIzQzOy5TSCBOQU1FCiYjNDM7ZmlsZV9zZXRhdHRyIFwtIHNldCBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXMKJiM0MzsuU0ggU1lOT1BTSVMKJiM0MzsubmYKJiM0MzsuQlIgJiMzNDsjaW5jbHVkZSAmbHQ7bGludXgvZmNudGwuaCZndDsmIzM0OyAmIzM0OyAgICAgIC8qIERlZmluaXRpb24gb2YgJiMzNDsgQVRfKiAmIzM0OyBjb25zdGFudHMgKi8mIzM0OwomIzQzOy5CUiAmIzM0OyNpbmNsdWRlICZsdDtsaW51eC9mcy5oJmd0OyYjMzQ7ICYjMzQ7ICAgICAgICAgLyogRGVmaW5pdGlvbiBvZiAmIzM0OyBGSUxFX0FUVFJfKiBcCiYjNDM7JiMzNDsgYW5kICYjMzQ7IEZTX1hGTEFHXyogJiMzNDsgY29uc3RhbnRzICovJiMzNDsKJiM0MzsuQlIgJiMzNDsjaW5jbHVkZSAmbHQ7c3lzL3N5c2NhbGwuaCZndDsmIzM0OyAmIzM0OyAgICAgIC8qIERlZmluaXRpb24gb2YgJiMzNDsgU1lTXyogJiMzNDsgY29uc3RhbnRzICovJiMzNDsKJiM0MzsuQiAjaW5jbHVkZSAmbHQ7dW5pc3RkLmgmZ3Q7CiYjNDM7LlAKJiM0MzsuQiBsb25nIHN5c2NhbGwoU1lTX2ZpbGVfc2V0YXR0ciwKJiM0MzsuQkkgJiMzNDsgICAgICAgICAgICAgICBpbnQgJiMzNDsgZGlyZmQgJiMzNDssIGNvbnN0IGNoYXIgKiYjMzQ7IHBhdGhuYW1lICwKJiM0MzsuQkkgJiMzNDsgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZV9hdHRyIComIzM0OyBmYXR0ciAmIzM0Oywgc2l6ZV90ICYjMzQ7IHNpemUgLAomIzQzOy5CSSAmIzM0OyAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAmIzM0OyBmbGFncyApOwomIzQzOy5maQomIzQzOy5QCiYjNDM7LklSIE5vdGUgOgomIzQzO2dsaWJjIHByb3ZpZGVzIG5vIHdyYXBwZXIgZm9yCiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoKSwKJiM0MztuZWNlc3NpdGF0aW5nIHRoZSB1c2Ugb2YKJiM0MzsuQlIgc3lzY2FsbCAoMikuCiYjNDM7LlNIIERFU0NSSVBUSU9OCiYjNDM7VGhlCiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoKQomIzQzO3N5c3RlbSBjYWxsIHNldHMgZmlsZXN5c3RlbSBpbm9kZSBhdHRyaWJ1dGVzCiYjNDM7b24gdGhlIGZpbGUgc3BlY2lmaWVkIGJ5CiYjNDM7LklSIHBhdGhuYW1lIC4KJiM0MzsuUAomIzQzO1RoaXMgc3lzdGVtIGNhbGwgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHRoZQomIzQzOy5CIEZTX0lPQ19GU1NFVFhBVFRSCiYjNDM7LkJSIGlvY3RsICgyKQomIzQzO29wZXJhdGlvbiwKJiM0MztidXQgd2l0aCB0aGUgYWR2YW50YWdlIHRoYXQgdGhlIGZpbGUgZG9lcyBub3QgbmVlZCB0byBiZSBvcGVuZWQuCiYjNDM7QnkgdXNpbmcgYSBwYXRobmFtZSBpbnN0ZWFkIG9mIHJlcXVpcmluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciwKJiM0MzsuQlIgZmlsZV9zZXRhdHRyICgpCiYjNDM7Y2FuIG1hbmlwdWxhdGUgZmlsZXN5c3RlbSBpbm9kZSBhdHRyaWJ1dGVzCiYjNDM7b24gYWxsIGZpbGUgdHlwZXMsCiYjNDM7aW5jbHVkaW5nIHNwZWNpYWwgZmlsZXMgKEZJRk9zLCBzb2NrZXRzLCBibG9jayBkZXZpY2VzLCBjaGFyYWN0ZXIgZGV2aWNlcykKJiM0Mzt3aGVyZSBvcGVuaW5nIHRoZSBmaWxlIG1heSBoYXZlIHNpZGUgZWZmZWN0cyBvciBtYXkgbm90IGJlIHBvc3NpYmxlLgomIzQzO1dpdGgKJiM0MzsuQlIgaW9jdGwgKDIpLAomIzQzO2l0IGlzIG5vdCBhbHdheXMgcG9zc2libGUgdG8gb2J0YWluIGEgZmlsZSBkZXNjcmlwdG9yIHRoYXQgcmVmZXJzCiYjNDM7ZGlyZWN0bHkgdG8gdGhlIGZpbGVzeXN0ZW0gaW5vZGUgZm9yIHNwZWNpYWwgZmlsZXMuCiYjNDM7LlAKJiM0MztBcyB3aXRoCiYjNDM7LkJSIG9wZW5hdCAoMiksCiYjNDM7aWYKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIHJlbGF0aXZlLAomIzQzO3RoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeQomIzQzO3JlZmVycmVkIHRvIGJ5IHRoZSBmaWxlIGRlc2NyaXB0b3IKJiM0MzsuSSBkaXJmZAomIzQzOyhvciB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvZiB0aGUgY2FsbGluZyBwcm9jZXNzLAomIzQzO2lmCiYjNDM7LkkgZGlyZmQKJiM0MztpcyB0aGUgc3BlY2lhbCB2YWx1ZQomIzQzOy5CUiBBVF9GRENXRCApLgomIzQzO0lmCiYjNDM7LkkgcGF0aG5hbWUKJiM0MztpcyBhYnNvbHV0ZSwKJiM0Mzt0aGVuCiYjNDM7LkkgZGlyZmQKJiM0MztpcyBpZ25vcmVkLgomIzQzOy5QCiYjNDM7VGhlCiYjNDM7LkkgZmF0dHIKJiM0Mzthcmd1bWVudCBpcyBhIHBvaW50ZXIgdG8gYQomIzQzOy5JIGZpbGVfYXR0cgomIzQzO3N0cnVjdHVyZSwKJiM0Mzt3aGljaCBzcGVjaWZpZXMgdGhlIGF0dHJpYnV0ZXMgdG8gc2V0IG9uIHRoZSBmaWxlLgomIzQzO1RoaXMgc3RydWN0dXJlIGlzIGRlc2NyaWJlZCBpbgomIzQzOy5CUiBmaWxlX2F0dHIgKDJ0eXBlKS4KJiM0MzsuUAomIzQzO1RoZQomIzQzOy5JIHNpemUKJiM0Mzthcmd1bWVudCBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5CiYjNDM7LklSIGZhdHRyIC4KJiM0MztUaGUgc2l6ZSBpbmRpY2F0ZXMgdmVyc2lvbiBvZiB0aGUgc3RydWN0dXJlIGluIHVzZSwgcmVmZXIgdG8KJiM0MzsuQiBmaWxlX2F0dHIoMnR5cGUpCiYjNDM7Zm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdmVyc2lvbmluZy4KJiM0MzsuUAomIzQzO1VzZXItc3BhY2UgYXBwbGljYXRpb25zIHNob3VsZCB6ZXJvLWluaXRpYWxpemUKJiM0MzsuSSBzdHJ1Y3QgZmlsZV9hdHRyCiYjNDM7dG8gZW5zdXJlIHRoYXQgZnV0dXJlIGZpZWxkcyBhZGRlZCB0byB0aGUgc3RydWN0dXJlCiYjNDM7d2lsbCBiZSB0cmVhdGVkIGFzIG5vLW9wcyBpZiB0aGUgc3RydWN0dXJlIGRlZmluaXRpb24gaXMgdXBkYXRlZAomIzQzO2J1dCB0aGUgYXBwbGljYXRpb24gaXMgbm90LgomIzQzOy5QCiYjNDM7VGhlCiYjNDM7LkkgZmxhZ3MKJiM0Mzthcmd1bWVudCBpcyBhIGJpdCBtYXNrIHRoYXQgY2FuIGluY2x1ZGUgemVybyBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgomIzQzOy5UUAomIzQzOy5CIEFUX0VNUFRZX1BBVEgKJiM0MztJZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nLAomIzQzO29wZXJhdGUgb24gdGhlIGZpbGUgcmVmZXJyZWQgdG8gYnkKJiM0MzsuSSBkaXJmZAomIzQzOyh3aGljaCBtYXkgaGF2ZSBiZWVuIG9idGFpbmVkIHVzaW5nIHRoZQomIzQzOy5CUiBvcGVuICgyKQomIzQzOy5CIE9fUEFUSAomIzQzO2ZsYWcpLgomIzQzO0luIHRoaXMgY2FzZSwKJiM0MzsuSSBkaXJmZAomIzQzO2NhbiByZWZlciB0byBhbnkgdHlwZSBvZiBmaWxlLAomIzQzO25vdCBqdXN0IGEgZGlyZWN0b3J5LgomIzQzO0lmCiYjNDM7LkkgZGlyZmQKJiM0MztpcwomIzQzOy5CUiBBVF9GRENXRCAsCiYjNDM7dGhlIGNhbGwgZmFpbHMgd2l0aCB0aGUgZXJyb3IKJiM0MzsuQlIgRUJBREYgLgomIzQzOy5UUAomIzQzOy5CIEFUX1NZTUxJTktfTk9GT0xMT1cKJiM0MztJZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYSBzeW1ib2xpYyBsaW5rLAomIzQzO2RvIG5vdCBkZXJlZmVyZW5jZSBpdDoKJiM0MztpbnN0ZWFkIHNldCBhdHRyaWJ1dGVzIG9uIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZi4KJiM0MztCeSBkZWZhdWx0IChpLmUuLCBpZiB0aGlzIGZsYWcgaXMgbm90IHNwZWNpZmllZCksCiYjNDM7c3ltYm9saWMgbGlua3MgYXJlIGRlcmVmZXJlbmNlZC4KJiM0MzsuU0ggUkVUVVJOIFZBTFVFCiYjNDM7T24gc3VjY2VzcywKJiM0Mzt6ZXJvIGlzIHJldHVybmVkLgomIzQzO09uIGVycm9yLAomIzQzO1wtMSBpcyByZXR1cm5lZCwKJiM0MzthbmQKJiM0MzsuSSBlcnJubwomIzQzO2lzIHNldCB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuCiYjNDM7LlNIIEVSUk9SUwomIzQzOy5UUAomIzQzOy5CIEUyQklHCiYjNDM7Lkkgc2l6ZQomIzQzO2lzIGxhcmdlciB0aGFuCiYjNDM7LkJSIFBBR0VfU0laRSAuCiYjNDM7LlRQCiYjNDM7LkIgRTJCSUcKJiM0MzsuSSBzaXplCiYjNDM7aW5kaWNhdGVzIHRoZSB2ZXJzaW9uIHdoaWNoIGtlcm5lbCBkb2VzbiYjMzk7dCBzdXBwb3J0ICh0aGUgc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUKJiM0MztrZXJuZWwgZXhwZWN0cykgYW5kIG5ldyBmaWVsZHMgYXJlIG5vbi16ZXJvLgomIzQzOy5UUAomIzQzOy5CIEVBQ0NFUwomIzQzO1NlYXJjaCBwZXJtaXNzaW9uIGlzIGRlbmllZCBmb3Igb25lIG9mIHRoZSBkaXJlY3RvcmllcwomIzQzO2luIHRoZSBwYXRoIHByZWZpeCBvZgomIzQzOy5JUiBwYXRobmFtZSAuCiYjNDM7KFNlZSBhbHNvCiYjNDM7LkJSIHBhdGhfcmVzb2x1dGlvbiAoNykuKQomIzQzOy5UUAomIzQzOy5CIEVCQURGCiYjNDM7LkkgcGF0aG5hbWUKJiM0MztpcyByZWxhdGl2ZSBidXQKJiM0MzsuSSBkaXJmZAomIzQzO2lzIG5laXRoZXIKJiM0MzsuQiBBVF9GRENXRAomIzQzO25vciBhIHZhbGlkIGZpbGUgZGVzY3JpcHRvci4KJiM0MzsuVFAKJiM0MzsuQiBFQkFERgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nLAomIzQzOy5CIEFUX0VNUFRZX1BBVEgKJiM0Mzt3YXMgc3BlY2lmaWVkIGluCiYjNDM7LklSIGZsYWdzICwKJiM0MzthbmQKJiM0MzsuSSBkaXJmZAomIzQzO2lzIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLgomIzQzOy5UUAomIzQzOy5CIEVGQVVMVAomIzQzOy5JIHBhdGhuYW1lCiYjNDM7b3IKJiM0MzsuSSBmYXR0cgomIzQzO2lzIGFuIGludmFsaWQgcG9pbnRlci4KJiM0MzsuVFAKJiM0MzsuQiBFSU5WQUwKJiM0MztJbnZhbGlkIGZsYWcgc3BlY2lmaWVkIGluCiYjNDM7LklSIGZsYWdzIC4KJiM0MzsuVFAKJiM0MzsuQiBFSU5WQUwKJiM0MzsuSSBzaXplCiYjNDM7aXMgc21hbGxlciB0aGFuCiYjNDM7LkJSIEZJTEVfQVRUUl9TSVpFX1ZFUjAgLgomIzQzOy5UUAomIzQzOy5CIEVJTlZBTAomIzQzO0ludmFsaWQgY29tYmluYXRpb24gb2YgcGFyYW1ldGVycyBwcm92aWRlZCBpbgomIzQzOy5JIGZhdHRyCiYjNDM7Zm9yIHRoaXMgdHlwZSBvZiBmaWxlIG9yIGZpbGVzeXN0ZW0uCiYjNDM7LlRQCiYjNDM7LkIgRUxPT1AKJiM0MztUb28gbWFueSBzeW1ib2xpYyBsaW5rcyBlbmNvdW50ZXJlZCB3aGlsZSByZXNvbHZpbmcKJiM0MzsuSVIgcGF0aG5hbWUgLgomIzQzOy5UUAomIzQzOy5CIEVOQU1FVE9PTE9ORwomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgdG9vIGxvbmcuCiYjNDM7LlRQCiYjNDM7LkIgRU5PRU5UCiYjNDM7QSBjb21wb25lbnQgb2YKJiM0MzsuSSBwYXRobmFtZQomIzQzO2RvZXMgbm90IGV4aXN0LAomIzQzO29yCiYjNDM7LkkgcGF0aG5hbWUKJiM0MztpcyBhbiBlbXB0eSBzdHJpbmcgYW5kCiYjNDM7LkIgQVRfRU1QVFlfUEFUSAomIzQzO3dhcyBub3Qgc3BlY2lmaWVkIGluCiYjNDM7LklSIGZsYWdzIC4KJiM0MzsuVFAKJiM0MzsuQiBFTk9NRU0KJiM0MztJbnN1ZmZpY2llbnQga2VybmVsIG1lbW9yeSB3YXMgYXZhaWxhYmxlLgomIzQzOy5UUAomIzQzOy5CIEVOT1RESVIKJiM0MztBIGNvbXBvbmVudCBvZiB0aGUgcGF0aCBwcmVmaXggb2YKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIG5vdCBhIGRpcmVjdG9yeSBvciwKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIHJlbGF0aXZlIGFuZAomIzQzOy5JIGRpcmZkCiYjNDM7aXMgYSBmaWxlIGRlc2NyaXB0b3IgcmVmZXJyaW5nIHRvIGEgZmlsZSBvdGhlciB0aGFuIGEgZGlyZWN0b3J5LgomIzQzOy5UUAomIzQzOy5CIEVPUE5PVFNVUFAKJiM0MztUaGUgZmlsZXN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IHNldHRpbmcgYXR0cmlidXRlcyBvbiB0aGlzIHR5cGUgb2YgaW5vZGUuCiYjNDM7LlRQCiYjNDM7LkIgRVBFUk0KJiM0MztUaGUgY2FsbGVyIGRvZXMgbm90IGhhdmUgdGhlIG5lY2Vzc2FyeSBwZXJtaXNzaW9ucwomIzQzO3RvIGNoYW5nZSB0aGUgZmlsZSBhdHRyaWJ1dGVzLgomIzQzOy5UUAomIzQzOy5CIEVST0ZTCiYjNDM7VGhlIGZpbGUgaXMgb24gYSByZWFkLW9ubHkgZmlsZXN5c3RlbS4KJiM0MzsuU0ggSElTVE9SWQomIzQzOy5TUyBMaW51eCA2LjE3CiYjNDM7VGhpcyBzeXN0ZW0gY2FsbCBpcyBpbnRyb2R1Y2VkIGFzIGEgbW9yZSBmbGV4aWJsZSBhbHRlcm5hdGl2ZSB0byB0aGUKJiM0MztGU19JT0NfRlNTRVRYQVRUUgomIzQzOy5CUiBpb2N0bCAoMikKJiM0Mzt3aGljaCBjb3VsZCB3b3JrIG9uIGFueSB0eXBlIG9mIGZpbGVzLgomIzQzOy5TSCBOT1RFUwomIzQzO1RoaXMgc3lzdGVtIGNhbGwgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZS4KJiM0MztUaGUKJiM0MzsuSSBzaXplCiYjNDM7YXJndW1lbnQgYWxsb3dzIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIHRvIGluZGljYXRlCiYjNDM7d2hpY2ggdmVyc2lvbiBvZiB0aGUKJiM0MzsuSSBmaWxlX2F0dHIKJiM0MztzdHJ1Y3R1cmUgdGhleSBhcmUgdXNpbmcsCiYjNDM7ZW5hYmxpbmcgdGhlIGtlcm5lbCB0byBzdXBwb3J0IGJvdGggb2xkIGFuZCBuZXcgdmVyc2lvbnMKJiM0MztvZiB0aGUgc3RydWN0dXJlIHNpbXVsdGFuZW91c2x5LgomIzQzOy5QCiYjNDM7SWYKJiM0MzsuSSBzaXplCiYjNDM7aXMgc21hbGxlciB0aGFuIHRoZSBzdHJ1Y3R1cmUgc2l6ZSB0aGUga2VybmVsIGV4cGVjdHMsCiYjNDM7dGhlIGtlcm5lbCB0cmVhdHMgdGhlIG1pc3NpbmcgZmllbGRzIGFzIGhhdmluZyB6ZXJvIHZhbHVlcwomIzQzOyh3aGljaCBpcyBhIG5vLW9wKS4KJiM0MztJZgomIzQzOy5JIHNpemUKJiM0MztpcyBsYXJnZXIgdGhhbiBleHBlY3RlZCwKJiM0Mzt0aGUga2VybmVsIGNoZWNrcyB0aGF0IGFsbCB1bmtub3duICh0byB0aGUga2VybmVsKSBmaWVsZHMgYXJlIHplcm87CiYjNDM7aWYgbm90LAomIzQzO3RoZSBjYWxsIGZhaWxzIHdpdGgKJiM0MzsuQlIgRTJCSUcgLgomIzQzOy5TSCBFWEFNUExFUwomIzQzO1RoZSBwcm9ncmFtIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mCiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoKQomIzQzO3RvIHNldCB0aGUKJiM0MzsuQiBGU19YRkxBR19OT0RVTVAKJiM0MztmbGFnIG9uIGEgZmlsZS4KJiM0MzsuUAomIzQzOy5pbiAmIzQzOzRuCiYjNDM7LkVYCiYjNDM7I2luY2x1ZGUgJmx0O2ZjbnRsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2ZjbnRsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2ZzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N0ZGlvLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N0ZGxpYi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtzdHJpbmcuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7c3lzL3N5c2NhbGwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7dW5pc3RkLmgmZ3Q7CiYjNDM7CiYjNDM7I2lmbmRlZiBTWVNfZmlsZV9nZXRhdHRyCiYjNDM7I2RlZmluZSBTWVNfZmlsZV9nZXRhdHRyIDQ2NwomIzQzOyNlbmRpZgomIzQzOwomIzQzOyNpZm5kZWYgU1lTX2ZpbGVfc2V0YXR0cgomIzQzOyNkZWZpbmUgU1lTX2ZpbGVfc2V0YXR0ciA0NjgKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MztpbnQKJiM0MzttYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiYjNDM7ewomIzQzOyAgICBzdHJ1Y3QgZmlsZV9hdHRyIGZhID0geyAwIH07CiYjNDM7ICAgIGludCBkZmQ7CiYjNDM7ICAgIGxvbmcgcmV0OwomIzQzOwomIzQzOyAgICBpZiAoYXJnYyAhPSAyKSB7CiYjNDM7ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgJiMzNDtVc2FnZTogJXMgJmx0O2ZpbGVuYW1lJmd0O1xcbiYjMzQ7LCBhcmd2WzBdKTsKJiM0MzsgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKJiM0MzsgICAgfQomIzQzOwomIzQzOyAgICBkZmQgPSBvcGVuKGFyZ3ZbMV0sIE9fUkRPTkxZKTsKJiM0MzsgICAgaWYgKGRmZCA9PSBcLTEpIHsKJiM0MzsgICAgICAgIHBlcnJvcigmIzM0O29wZW4mIzM0Oyk7CiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiYjNDM7ICAgIH0KJiM0MzsKJiM0MzsgICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBkZmQsICYjMzQ7JiMzNDssICZhbXA7ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpOwomIzQzOyAgICBpZiAocmV0ID09IFwtMSkgewomIzQzOyAgICAgICAgcGVycm9yKCYjMzQ7ZmlsZV9nZXRhdHRyJiMzNDspOwomIzQzOyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwomIzQzOyAgICB9CiYjNDM7CiYjNDM7ICAgIHByaW50ZigmIzM0O0N1cnJlbnQgZmxhZ3M6IDB4JWxseFxcbiYjMzQ7LCAodW5zaWduZWQgbG9uZyBsb25nKWZhLmZhX3hmbGFncyk7CiYjNDM7CiYjNDM7ICAgIGZhLmZhX3hmbGFncyB8PSBGU19YRkxBR19OT0RVTVA7CiYjNDM7CiYjNDM7ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfc2V0YXR0ciwgZGZkLCAmIzM0OyYjMzQ7LCAmYW1wO2ZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTsKJiM0MzsgICAgaWYgKHJldCA9PSBcLTEpIHsKJiM0MzsgICAgICAgIHBlcnJvcigmIzM0O2ZpbGVfc2V0YXR0ciYjMzQ7KTsKJiM0MzsgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKJiM0MzsgICAgfQomIzQzOwomIzQzOyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIGRmZCwgJiMzNDsmIzM0OywgJmFtcDtmYSwgc2l6ZW9mKGZhKSwgQVRfRU1QVFlfUEFUSCk7CiYjNDM7ICAgIGlmIChyZXQgPT0gXC0xKSB7CiYjNDM7ICAgICAgICBwZXJyb3IoJiMzNDtmaWxlX2dldGF0dHImIzM0Oyk7CiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiYjNDM7ICAgIH0KJiM0MzsKJiM0MzsgICAgaWYgKGZhLmZhX3hmbGFncyAmYW1wOyBGU19YRkxBR19OT0RVTVApCiYjNDM7ICAgICAgICBwcmludGYoJiMzNDtmbGFncyAweCVsbHggKE5PRFVNUCBmbGFnIGlzIHNldClcXG4mIzM0OywKJiM0MzsgICAgICAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWZhLmZhX3hmbGFncyk7CiYjNDM7CiYjNDM7ICAgIGV4aXQoRVhJVF9TVUNDRVNTKTsKJiM0Mzt9CiYjNDM7LkVFCiYjNDM7LmluCiYjNDM7LlNIIFNFRSBBTFNPCiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoMiksCiYjNDM7LkJSIGlvY3RsICgyKSwKJiM0MzsuQlIgaW9jdGxfZnMgKDIpLAomIzQzOy5CUiBvcGVuYXQgKDIpLAomIzQzOy5CUiBmaWxlX2F0dHIgKDJ0eXBlKSwKJiM0MzsuQlIgcGF0aF9yZXNvbHV0aW9uICg3KQpkaWZmIC0tZ2l0IGEvbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSBiL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uZmQ0MjZjMTlmNWYwYgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUKQEAgLTAsMCAmIzQzOzEsMTg3IEBACiYjNDM7LlwmIzM0OyBDb3B5cmlnaHQsIHRoZSBhdXRob3JzIG9mIHRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdAomIzQzOy5cJiMzNDsKJiM0MzsuXCYjMzQ7IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMaW51eC1tYW4tcGFnZXMtY29weWxlZnQKJiM0MzsuXCYjMzQ7CiYjNDM7LlRIIGZpbGVfYXR0ciAydHlwZSAoZGF0ZSkgJiMzNDtMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpJiMzNDsKJiM0MzsuU0ggTkFNRQomIzQzO2ZpbGVfYXR0ciBcLSBkZXNjcmliZSBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlcyB0byBnZXQgb3Igc2V0CiYjNDM7LlNIIFNZTk9QU0lTCiYjNDM7LkVYCiYjNDM7LkIgI2luY2x1ZGUgJmx0O2xpbnV4L2ZzLmgmZ3Q7CiYjNDM7LlAKJiM0MzsuQiBzdHJ1Y3QgZmlsZV9hdHRyIHsKJiM0MzsuQlIgJiMzNDsgICAgdTY0ICBmYV94ZmxhZ3M7JiMzNDsgJiMzNDsgICAgIC8qIEV4dGVuZGVkIGZsYWdzICovJiMzNDsKJiM0MzsuQlIgJiMzNDsgICAgdTMyICBmYV9leHRzaXplOyYjMzQ7ICYjMzQ7ICAgIC8qIEV4dGVudCBzaXplIGhpbnQgKi8mIzM0OwomIzQzOy5CUiAmIzM0OyAgICB1MzIgIGZhX25leHRlbnRzOyYjMzQ7ICYjMzQ7ICAgLyogTnVtYmVyIG9mIGV4dGVudHMgKHJlYWQtb25seSkgKi8mIzM0OwomIzQzOy5CUiAmIzM0OyAgICB1MzIgIGZhX3Byb2ppZDsmIzM0OyAmIzM0OyAgICAgLyogUHJvamVjdCBpZGVudGlmaWVyICovJiMzNDsKJiM0MzsuQlIgJiMzNDsgICAgdTMyICBmYV9jb3dleHRzaXplOyYjMzQ7ICYjMzQ7IC8qIENvVyBleHRlbnQgc2l6ZSBoaW50ICovJiMzNDsKJiM0MzsuQiB9OwomIzQzOy5FRQomIzQzOy5TSCBERVNDUklQVElPTgomIzQzO0Rlc2NyaWJlcyBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlcwomIzQzO2ZvciB1c2Ugd2l0aCB0aGUKJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgyKQomIzQzO2FuZAomIzQzOy5CUiBmaWxlX3NldGF0dHIgKDIpCiYjNDM7c3lzdGVtIGNhbGxzLgomIzQzOy5QCiYjNDM7VGhlIGZpZWxkcyBhcmUgYXMgZm9sbG93czoKJiM0MzsuVFAKJiM0MzsuSSBmYV94ZmxhZ3MKJiM0MztUaGlzIGZpZWxkIGNvbnRhaW5zIGZpbGUgYXR0cmlidXRlIGZsYWdzLgomIzQzO0l0IGlzIGEgYml0IG1hc2sgY29uc2lzdGluZyBvZiB6ZXJvIG9yIG1vcmUgb2YgdGhlCiYjNDM7LkIgRlNfWEZMQUdfKgomIzQzO2ZsYWdzLgomIzQzO1JlZmVyIHRvIHRoZSBzZWN0aW9uCiYjNDM7LkIgRkxBR1MKJiM0MztiZWxvdyBmb3IgYSBsaXN0IG9mIGFsbCBmbGFncy4KJiM0MzsuVFAKJiM0MzsuSSBmYV9leHRzaXplCiYjNDM7RXh0ZW50IHNpemUgYWxsb2NhdG9yIGhpbnQgaW4gYnl0ZXMuCiYjNDM7VGhpcyB2YWx1ZSBzdWdnZXN0cyBhIHByZWZlcnJlZCBleHRlbnQgc2l6ZQomIzQzO2ZvciBuZXcgYWxsb2NhdGlvbnMgdG8gdGhpcyBmaWxlLgomIzQzOy5UUAomIzQzOy5JIGZhX25leHRlbnRzCiYjNDM7TnVtYmVyIG9mIGRhdGEgZXh0ZW50cyBpbiB0aGUgZmlsZSAocmVhZC1vbmx5KS4KJiM0MztUaGlzIGZpZWxkIGlzIGZpbGxlZCBpbiBieQomIzQzOy5CUiBmaWxlX2dldGF0dHIgKDIpCiYjNDM7YW5kIGlzIGlnbm9yZWQgYnkKJiM0MzsuQlIgZmlsZV9zZXRhdHRyICgyKS4KJiM0MzsuVFAKJiM0MzsuSSBmYV9wcm9qaWQKJiM0MztQcm9qZWN0IGlkZW50aWZpZXIuCiYjNDM7VXNlZCBieSBxdW90YSBzeXN0ZW1zIHRvIGdyb3VwIHJlbGF0ZWQgZmlsZXMuCiYjNDM7LlRQCiYjNDM7LkkgZmFfY293ZXh0c2l6ZQomIzQzO0NvcHktb24tV3JpdGUgKENvVykgZXh0ZW50IHNpemUgaGludCBpbiBieXRlcy4KJiM0MztUaGlzIHZhbHVlIHN1Z2dlc3RzIGEgcHJlZmVycmVkIGV4dGVudCBzaXplCiYjNDM7Zm9yIENvVyBvcGVyYXRpb25zLgomIzQzOy5TSCBGTEFHUwomIzQzO0ZsYWdzIGNhbiBiZToKJiM0MzsuUlMKJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19SRUFMVElNRQomIzQzO0RhdGEgaXMgc3RvcmVkIGluIGEgcmVhbHRpbWUgdm9sdW1lLgomIzQzOy5UUAomIzQzOy5CIEZTX1hGTEFHX0lNTVVUQUJMRQomIzQzO0ZpbGUgY2Fubm90IGJlIG1vZGlmaWVkLgomIzQzOy5UUAomIzQzOy5CIEZTX1hGTEFHX0FQUEVORAomIzQzO0FsbCB3cml0ZXMgbXVzdCBhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19TWU5DCiYjNDM7QWxsIHdyaXRlcyBhcmUgc3luY2hyb25vdXMuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfTk9BVElNRQomIzQzO0RvIG5vdCB1cGRhdGUgZmlsZSBhY2Nlc3MgdGltZSBvbiByZWFkcy4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19OT0RVTVAKJiM0MztEbyBub3QgaW5jbHVkZSBmaWxlIGluIGJhY2t1cHMuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfREFYCiYjNDM7VXNlIERpcmVjdCBBY2Nlc3MgKERBWCkgZm9yIEkvTyBvcGVyYXRpb25zLgomIzQzOy5UUAomIzQzOy5CIEZTX1hGTEFHX05PREVGUkFHCiYjNDM7RXhjbHVkZSB0aGlzIGZpbGUgZnJvbSBkZWZyYWdtZW50YXRpb24gb3BlcmF0aW9ucy4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19GSUxFU1RSRUFNCiYjNDM7VXNlIGZpbGVzdHJlYW0gYWxsb2NhdG9yIGZvciB0aGlzIGZpbGUuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfRVhUU0laRQomIzQzO1VzZSB0aGUgZXh0ZW50IHNpemUgaGludCBmcm9tIHRoZQomIzQzOy5JIGZhX2V4dHNpemUKJiM0MztmaWVsZC4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19DT1dFWFRTSVpFCiYjNDM7VXNlIHRoZSBDb1cgZXh0ZW50IHNpemUgaGludCBmcm9tIHRoZQomIzQzOy5JIGZhX2Nvd2V4dHNpemUKJiM0MztmaWVsZC4KJiM0MzsuUkUKJiM0MzsuUAomIzQzO0RpcmVjdG9yeSBvbmx5IGZsYWdzOgomIzQzOy5SUwomIzQzOy5UUAomIzQzOy5CIEZTX1hGTEFHX1JUSU5IRVJJVAomIzQzO05ldyBmaWxlcyBjcmVhdGVkIGluIHRoaXMgZGlyZWN0b3J5IGluaGVyaXQgdGhlIHJlYWx0aW1lIGZsYWcuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfTk9TWU1MSU5LUwomIzQzO0Rpc2FsbG93IGNyZWF0aW9uIG9mIHN5bWJvbGljIGxpbmtzIGluIHRoaXMgZGlyZWN0b3J5LgomIzQzOy5UUAomIzQzOy5CIEZTX1hGTEFHX0VYVFNaSU5IRVJJVAomIzQzO05ldyBmaWxlcyBjcmVhdGVkIGluIHRoaXMgZGlyZWN0b3J5IGluaGVyaXQgdGhlIGV4dGVudCBzaXplIGhpbnQuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfUFJPSklOSEVSSVQKJiM0MztOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSBwcm9qZWN0IGlkZW50aWZpZXIuCiYjNDM7LlJFCiYjNDM7LlAKJiM0MztUaGUgZm9sbG93aW5nIGZsYWdzIGFyZSByZWFkLW9ubHk6CiYjNDM7LlJTCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfUFJFQUxMT0MKJiM0MztGaWxlIGhhcyBwcmVhbGxvY2F0ZWQgZXh0ZW50cy4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19IQVNBVFRSCiYjNDM7RmlsZSBoYXMgZXh0ZW5kZWQgYXR0cmlidXRlcy4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19WRVJJVFkKJiM0MztGaWxlIGhhcyBmcy12ZXJpdHkgZW5hYmxlZC4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19DQVNFRk9MRAomIzQzO1RoZSBmaWxlc3lzdGVtIHBlcmZvcm1zIGNhc2UtaW5zZW5zaXRpdmUgbG9va3VwcyAoZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWUKJiM0Mztjb21wYXJpc29ucyBpZ25vcmUgY2FzZSkuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfQ0FTRU5PTlBSRVNFUlZJTkcKJiM0MztUaGUgZmlsZXN5c3RlbSBkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUgY2FzZSBvZiBmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZXMuCiYjNDM7LlJFCiYjNDM7LlAKJiM0MztOb3QgYWxsIGZpbGVzeXN0ZW1zIHN1cHBvcnQgYWxsIGZsYWdzLgomIzQzO1NldHRpbmcgdW5zdXBwb3J0ZWQgZmxhZ3MgbWF5IHJlc3VsdCBpbiBhbgomIzQzOy5CIEVJTlZBTAomIzQzO29yCiYjNDM7LkIgRU9QTk9UU1VQUAomIzQzO2Vycm9yLgomIzQzOy5TSCBWRVJTSU9OUwomIzQzOy5TUyBTdHJ1Y3R1cmUgc2l6ZQomIzQzO1RoZSBzdHJ1Y3R1cmUgc2l6ZSBpcyBkZWZpbmVkIGJ5CiYjNDM7LkIgRklMRV9BVFRSX1NJWkVfVkVSKgomIzQzO3doaWNoIGlzIGFsc28gYSB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgYmVpbmcgdXNlZC4KJiM0MztUaGUKJiM0MzsuSSBzaXplCiYjNDM7cGFyYW1ldGVyIHBhc3NlZCB0bwomIzQzOy5CUiBmaWxlX2dldGF0dHIgKDIpCiYjNDM7YW5kCiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoMikKJiM0MztpbmRpY2F0ZXMgdGhlIHZlcnNpb24gb2YKJiM0MzsuSSBzdHJ1Y3QgZmlsZV9hdHRyXGZQLgomIzQzOy5TUyBGSUxFX0FUVFJfU0laRV9WRVIwCiYjNDM7U2l6ZSBpcyAyNCBieXRlcy4KJiM0MzsuU0ggSElTVE9SWQomIzQzOy5TUyBMaW51eCB2Ni4xNwomIzQzO1RoaXMgc3RydWN0dXJlIGlzIGludHJvZHVjZWQuCiYjNDM7VGhlCiYjNDM7Lkkgc3RydWN0IGZpbGVfYXR0cgomIzQzO3Byb3ZpZGVzIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSB0bwomIzQzOy5JIHN0cnVjdCBmc3hhdHRyCiYjNDM7dXNlZCBieSB0aGUKJiM0MzsuQiBGU19JT0NfRlNHRVRYQVRUUgomIzQzO2FuZAomIzQzOy5CIEZTX0lPQ19GU1NFVFhBVFRSCiYjNDM7LkJSIGlvY3RsICgyKQomIzQzO29wZXJhdGlvbnMsCiYjNDM7YnV0IGlzIGRlc2lnbmVkIHRvIGJlIGV4dGVuc2libGUgdGhyb3VnaCB0aGUKJiM0MzsuSSBzaXplCiYjNDM7cGFyYW1ldGVyIG9mIHRoZSBzeXN0ZW0gY2FsbHMuCiYjNDM7LlAKJiM0MztFeHRyYSBmaWVsZHMgbWF5IGJlIGFwcGVuZGVkIHRvIHRoZSBzdHJ1Y3R1cmUgaW4gZnV0dXJlIGtlcm5lbCB2ZXJzaW9ucy4KJiM0MztUaGUga2VybmVsIHdpbGwgZXhwZWN0IG5ldyBmaWVsZHMgdG8gYmUgemVyb3MKJiM0Mztmb3Igb2xkZXIgdmVyc2lvbnMgb2YgdGhlIHN0cnVjdHVyZS4KJiM0MztUaGVyZWZvcmUsIGEgdXNlcgomIzQzOy5JIG11c3QKJiM0Mzt6ZXJvLWZpbGwgdGhlIHN0cnVjdHVyZSBvbiBpbml0aWFsaXphdGlvbiB0byBrZWVwIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlcgomIzQzO2tlcm5lbHMuCiYjNDM7LlNTIExpbnV4IHY3LjIKJiM0MztUaGUgRlNfWEZMQUdfQ0FTRUZPTEQgYW5kIEZTX1hGTEFHX0NBU0VOT05QUkVTRVJWSU5HIGFyZSBpbnRyb2R1Y2VkIHRvIGVuYWJsZQomIzQzO3VwcGVyIGxheWVycywgc3VjaCBhcyBORlNELCB0byByZXRyaWV2ZSBjYXNlIHNlbnNpdGl2aXR5IGluZm9ybWF0aW9uLgomIzQzOy5TSCBTRUUgQUxTTwomIzQzOy5CUiBmaWxlX2dldGF0dHIgKDIpLAomIzQzOy5CUiBmaWxlX3NldGF0dHIgKDIpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwODcKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFRoaXMgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgYmFzZWQgb24gdGhpcyBkaWZmIGlzIHRoYXQgd2UmIzM5O3ZlIGdvdCBhIGRvY3VtZW50YXRpb24gdXBkYXRlLCBzcGVjaWZpY2FsbHkgbmV3IG1hbiBwYWdlcy4gSSBzZWUgdGhlIGFkZGl0aW9uIG9mIGBtYW4vbWFuMi9maWxlX2dldGF0dHIuMmAsIGBtYW4vbWFuMi9maWxlX3NldGF0dHIuMmAsIGFuZCBgbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZWAuIEludGVyZXN0aW5nLgoKQnV0IEkgbmVlZCB0byBiZSAqc3VyZSogdGhpcyBpcyBqdXN0IGRvY3VtZW50YXRpb24uIE15IGd1dCBzYXlzIGl0IHByb2JhYmx5IGlzLCBidXQgSSBjYW4mIzM5O3QgYmUgY29tcGxhY2VudC4gSSBuZWVkIHRvIHF1aWNrbHkgYW5kIGNvbXByZWhlbnNpdmVseSBjb25maXJtIHRoYXQgdGhlc2UgYXJlIHRoZSBvbmx5IGNoYW5nZXMgcmVsYXRlZCB0byBmaWxlIGF0dHJpYnV0ZXMuIFNvLCBiZWZvcmUgSSBzaWduIG9mZiBvbiB0aGlzLCBJJiMzOTttIGdvaW5nIHRvIHJ1biBhIHF1aWNrIGNoZWNrLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBgZ2l0YCB0byBsb29rIGF0IHRoZSBjb21taXQsIG9yIHBlcmhhcHMganVtcCBvdmVyIHRvIGEgY29kZXNlYXJjaC9ncmVwcGVyIHRvIHNlYXJjaCB0aGUgZW50aXJlIGNvZGViYXNlLiBJJiMzOTttIGxvb2tpbmcgZm9yIGFueSBvdGhlciBtb2RpZmljYXRpb25zIHJlbGF0ZWQgdG8gZmlsZSBhdHRyaWJ1dGUgaGFuZGxpbmcgb3IgYW55IGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGhhdmUgYmVlbiBpbXBhY3RlZC4gSSBuZWVkIGEgY2xlYW4gYmlsbCBvZiBoZWFsdGggYmVmb3JlIEkgbW92ZSBvbi4gTm8gc3VycHJpc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZpbGVfZ2V0YXR0ciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2ZzdmVyaXR5LnJzdD0zNTA9cGFyYW1ldGVycy4gU2VlIEZTX0lPQ19FTkFCTEVfVkVSSVRZLlxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzUxLVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3Q6MzUyOmZpbGVfZ2V0YXR0clxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzUzLS0tLS0tLS0tLS0tLVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzU0LVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3Q6MzU1OlNpbmNlIExpbnV4IHY3LjAsIHRoZSBmaWxlX2dldGF0dHIoKSBzeXNjYWxsIHNldHMgRlNfWEZMQUdfVkVSSVRZICgweDAwMDIwMDAwKVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzU2LWluIHRoZSByZXR1cm5lZCBmbGFncyB3aGVuIHRoZSBmaWxlIGhhcyB2ZXJpdHkgZW5hYmxlZC4gTm90ZSB0aGF0IHRoaXMgYXR0cmlidXRlXG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTA5LTU3N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTEwOjU3OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL2FscGhhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01MTEtNTc5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC00ODQtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibDo0ODU6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsLTQ4Ni00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtNDgxLTQ2N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibDo0ODI6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtNDgzLTQ2OVx0Y29tbW9uXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NjktNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ3MDo0NjhcdGNvbW1vblx0ZmlsZV9nZXRhdHRyXHRcdFx0c3lzX2ZpbGVfZ2V0YXR0clxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NzEtNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3NS00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDc2OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3Ny00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsLTQwOC00NjdcdG4zMlx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsOjQwOTo0NjhcdG4zMlx0ZmlsZV9nZXRhdHRyXHRcdFx0c3lzX2ZpbGVfZ2V0YXR0clxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtNDEwLTQ2OVx0bjMyXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzg0LTQ2N1x0bjY0XHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6Mzg1OjQ2OFx0bjY0XHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zODYtNDY5XHRuNjRcdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC00NTctNDY3XHRvMzJcdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibDo0NTg6NDY4XHRvMzJcdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9vMzIudGJsLTQ1OS00NjlcdG8zMlx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NjgtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDY5OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDcwLTQ2OVx0Y29tbW9uXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01NjAtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjU2MTo0NjhcdGNvbW1vblx0ZmlsZV9nZXRhdHRyXHRcdFx0c3lzX2ZpbGVfZ2V0YXR0clxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01NjItNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5Ni00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6Mzk3OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5OC00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3My00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ3NDo0NjhcdGNvbW1vblx0ZmlsZV9nZXRhdHRyXHRcdFx0c3lzX2ZpbGVfZ2V0YXR0clxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDc1LTQ2OVx0Y29tbW9uXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTE1LTQ2N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTE2OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01MTctNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NzUtNDY3XHRpMzg2XHRvcGVuX3RyZWVfYXR0clx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjQ3Njo0NjhcdGkzODZcdGZpbGVfZ2V0YXR0clx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NzctNDY5XHRpMzg2XHRmaWxlX3NldGF0dHJcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTM5NC00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibDozOTU6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibC0zOTYtNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ0MC00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NDE6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NDItNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5mcy9leHQ0L2V4dDQuaD0zMTg4PWV4dGVybiB2b2lkIGV4dDRfY2xlYXJfaW5vZGUoc3RydWN0IGlub2RlICopO1xuZnMvZXh0NC9leHQ0Lmg6MzE4OTpleHRlcm4gaW50ICBleHQ0X2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgbW50X2lkbWFwICosIGNvbnN0IHN0cnVjdCBwYXRoICosXG5mcy9leHQ0L2V4dDQuaC0zMTkwLVx0XHRcdCAgICAgIHN0cnVjdCBrc3RhdCAqLCB1MzIsIHVuc2lnbmVkIGludCk7XG4tLVxuZnMvZXh0NC9maWxlLmM9MTA1OD1jb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBleHQ0X2ZpbGVfaW5vZGVfb3BlcmF0aW9ucyA9IHtcbmZzL2V4dDQvZmlsZS5jLTEwNTktXHQuc2V0YXR0clx0PSBleHQ0X3NldGF0dHIsXG5mcy9leHQ0L2ZpbGUuYzoxMDYwOlx0LmdldGF0dHJcdD0gZXh0NF9maWxlX2dldGF0dHIsXG5mcy9leHQ0L2ZpbGUuYy0xMDYxLVx0Lmxpc3R4YXR0clx0PSBleHQ0X2xpc3R4YXR0cixcbi0tXG5mcy9leHQ0L2lub2RlLmM9NjI2Nj1pbnQgZXh0NF9nZXRhdHRyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCxcbi0tXG5mcy9leHQ0L2lub2RlLmMtNjMzNC1cbmZzL2V4dDQvaW5vZGUuYzo2MzM1OmludCBleHQ0X2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcbmZzL2V4dDQvaW5vZGUuYy02MzM2LVx0XHQgICAgICBjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCwgc3RydWN0IGtzdGF0ICpzdGF0LFxuLS1cbmZzL2ZpbGVfYXR0ci5jPTg2PWludCB2ZnNfZmlsZWF0dHJfZ2V0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxuLS1cbmZzL2ZpbGVfYXR0ci5jLTkzLVxuZnMvZmlsZV9hdHRyLmM6OTQ6XHRlcnJvciA9IHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cihkZW50cnksIGZhKTtcbmZzL2ZpbGVfYXR0ci5jLTk1LVx0aWYgKGVycm9yKVxuLS1cbmZzL2ZpbGVfYXR0ci5jPTM1Nj1pbnQgaW9jdGxfZnNzZXR4YXR0cihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCBfX3VzZXIgKmFyZ3ApXG4tLVxuZnMvZmlsZV9hdHRyLmMtMzczLVxuZnMvZmlsZV9hdHRyLmM6Mzc0OlNZU0NBTExfREVGSU5FNShmaWxlX2dldGF0dHIsIGludCwgZGZkLCBjb25zdCBjaGFyIF9fdXNlciAqLCBmaWxlbmFtZSxcbmZzL2ZpbGVfYXR0ci5jLTM3NS1cdFx0c3RydWN0IGZpbGVfYXR0ciBfX3VzZXIgKiwgdWZhdHRyLCBzaXplX3QsIHVzaXplLFxuLS1cbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oPTIyPV9fTlJfcmVhZGxpbmthdCxcbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oLTIzLSNlbmRpZlxuaW5jbHVkZS9hc20tZ2VuZXJpYy9hdWRpdF9yZWFkLmg6MjQ6I2lmZGVmIF9fTlJfZmlsZV9nZXRhdHRyXG5pbmNsdWRlL2FzbS1nZW5lcmljL2F1ZGl0X3JlYWQuaDoyNTpfX05SX2ZpbGVfZ2V0YXR0cixcbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oLTI2LSNlbmRpZlxuLS1cbmluY2x1ZGUvbGludXgvbHNtX2hvb2tfZGVmcy5oPTE2MD1MU01fSE9PSyhpbnQsIDAsIGlub2RlX2ZpbGVfc2V0YXR0ciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXG5pbmNsdWRlL2xpbnV4L2xzbV9ob29rX2RlZnMuaDoxNjE6TFNNX0hPT0soaW50LCAwLCBpbm9kZV9maWxlX2dldGF0dHIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxuaW5jbHVkZS9saW51eC9sc21faG9va19kZWZzLmgtMTYyLUxTTV9IT09LKGludCwgMCwgaW5vZGVfc2V0X2FjbCwgc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsXG4tLVxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oPTQ1Mj1pbnQgc2VjdXJpdHlfaW5vZGVfZmlsZV9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaC00NTMtXHRcdFx0ICAgICAgc3RydWN0IGZpbGVfa2F0dHIgKmZhKTtcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaDo0NTQ6aW50IHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgtNDU1LVx0XHRcdCAgICAgIHN0cnVjdCBmaWxlX2thdHRyICpmYSk7XG4tLVxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oPTEwNjQ9c3RhdGljIGlubGluZSBpbnQgc2VjdXJpdHlfaW5vZGVfZmlsZV9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgtMTA2OS1cbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaDoxMDcwOnN0YXRpYyBpbmxpbmUgaW50IHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgtMTA3MS1cdFx0XHRcdFx0ICAgICAgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxuLS1cbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaD0zNzg9YXNtbGlua2FnZSBsb25nIHN5c19mcmVtb3ZleGF0dHIoaW50IGZkLCBjb25zdCBjaGFyIF9fdXNlciAqbmFtZSk7XG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg6Mzc5OmFzbWxpbmthZ2UgbG9uZyBzeXNfZmlsZV9nZXRhdHRyKGludCBkZmQsIGNvbnN0IGNoYXIgX191c2VyICpmaWxlbmFtZSxcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaC0zODAtXHRcdFx0XHQgc3RydWN0IGZpbGVfYXR0ciBfX3VzZXIgKmF0dHIsIHNpemVfdCB1c2l6ZSxcbi0tXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9ODUzPV9fU1lTQ0FMTChfX05SX29wZW5fdHJlZV9hdHRyLCBzeXNfb3Blbl90cmVlX2F0dHIpXG4tLVxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTg1NS0vKiBmcy9pbm9kZS5jICovXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODU2OiNkZWZpbmUgX19OUl9maWxlX2dldGF0dHIgNDY4XG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODU3Ol9fU1lTQ0FMTChfX05SX2ZpbGVfZ2V0YXR0ciwgc3lzX2ZpbGVfZ2V0YXR0cilcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC04NTgtI2RlZmluZSBfX05SX2ZpbGVfc2V0YXR0ciA0Njlcbi0tXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi00LS5cXFwmIzM0O1xubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6NTouVEggZmlsZV9nZXRhdHRyIDIgKGRhdGUpIFwmIzM0O0xpbnV4IG1hbi1wYWdlcyAodW5yZWxlYXNlZClcJiMzNDtcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTYtLlNIIE5BTUVcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yOjc6ZmlsZV9nZXRhdHRyIFxcLSBnZXQgZmlsZXN5c3RlbSBpbm9kZSBhdHRyaWJ1dGVzXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi04LS5TSCBTWU5PUFNJU1xuLS1cbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTE0LS5QXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoxNTouQiBsb25nIHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0cixcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTE2LS5CSSBcJiMzNDsgICAgICAgICAgICAgICBpbnQgXCYjMzQ7IGRpcmZkIFwmIzM0OywgY29uc3QgY2hhciAqXCYjMzQ7IHBhdGhuYW1lICxcbi0tXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMj0yMj1nbGliYyBwcm92aWRlcyBubyB3cmFwcGVyIGZvclxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MjM6LkJSIGZpbGVfZ2V0YXR0ciAoKSxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTI0LXVzZVxuLS1cbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yPTI4PVRoZVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6Mjk6LkJSIGZpbGVfZ2V0YXR0ciAoKVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMzAtc3lzdGVtIGNhbGwgcmV0cmlldmVzIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzXG4tLVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI9Mzk9QnkgdXNpbmcgYSBwYXRobmFtZSxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yOjQwOi5CUiBmaWxlX2dldGF0dHIgKClcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTQxLWNhbiByZXRyaWV2ZSBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlc1xuLS1cbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yPTgzPWJlZm9yZSBjYWxsaW5nXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjo4NDouQlIgZmlsZV9nZXRhdHRyICgpXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi04NS10byBlbnN1cmUgdGhhdCBmaWVsZHMgbm90IGZpbGxlZCBpbiBieSBvbGRlciBrZXJuZWxzXG4tLVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI9MjI5PVRoZSBwcm9ncmFtIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyMzA6LkJSIGZpbGVfZ2V0YXR0ciAoKVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMjMxLXRvIHJldHJpZXZlIGFuZCBkaXNwbGF5IGZpbGUgYXR0cmlidXRlcy5cbi0tXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0yNDEtXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyNDI6I2lmbmRlZiBTWVNfZmlsZV9nZXRhdHRyXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyNDM6I2RlZmluZSBTWVNfZmlsZV9nZXRhdHRyIDQ2N1xubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMjQ0LSNlbmRpZlxuLS1cbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yPTI0Nz1tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4tLVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMjU3LVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MjU4OiAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIEFUX0ZEQ1dELCBhcmd2WzFdLCBcdTAwMjZmYSwgc2l6ZW9mKGZhKSwgMCk7XG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0yNTktICAgIGlmIChyZXQgPT0gXFwtMSkge1xubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MjYwOiAgICAgICAgcGVycm9yKFwmIzM0O2ZpbGVfZ2V0YXR0clwmIzM0Oyk7XG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0yNjEtICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4tLVxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI9MjY1PWZsYWcgb24gYSBmaWxlLlxuLS1cbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTI3Ny1cbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yOjI3ODojaWZuZGVmIFNZU19maWxlX2dldGF0dHJcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yOjI3OTojZGVmaW5lIFNZU19maWxlX2dldGF0dHIgNDY3XG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0yODAtI2VuZGlmXG4tLVxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI9Mjg3PW1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbi0tXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMDMtXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMDQ6ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwgZGZkLCBcJiMzNDtcJiMzNDssIFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMwNS0gICAgaWYgKHJldCA9PSBcXC0xKSB7XG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMDY6ICAgICAgICBwZXJyb3IoXCYjMzQ7ZmlsZV9nZXRhdHRyXCYjMzQ7KTtcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMwNy0gICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbi0tXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMTktXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMjA6ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwgZGZkLCBcJiMzNDtcJiMzNDssIFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMyMS0gICAgaWYgKHJldCA9PSBcXC0xKSB7XG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMjI6ICAgICAgICBwZXJyb3IoXCYjMzQ7ZmlsZV9nZXRhdHRyXCYjMzQ7KTtcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMyMy0gICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbi0tXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMzQtLlNIIFNFRSBBTFNPXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMzU6LkJSIGZpbGVfZ2V0YXR0ciAoMiksXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMzYtLkJSIGlvY3RsICgyKSxcbi0tXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlPTIyPWZvciB1c2Ugd2l0aCB0aGVcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGU6MjM6LkJSIGZpbGVfZ2V0YXR0ciAoMilcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUtMjQtYW5kXG4tLVxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZT00Nj1UaGlzIGZpZWxkIGlzIGZpbGxlZCBpbiBieVxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZTo0NzouQlIgZmlsZV9nZXRhdHRyICgyKVxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZS00OC1hbmQgaXMgaWdub3JlZCBieVxuLS1cbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGU9MTUwPXBhcmFtZXRlciBwYXNzZWQgdG9cbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGU6MTUxOi5CUiBmaWxlX2dldGF0dHIgKDIpXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlLTE1Mi1hbmRcbi0tXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlPTE4ND11cHBlciBsYXllcnMsIHN1Y2ggYXMgTkZTRCwgdG8gcmV0cmlldmUgY2FzZSBzZW5zaXRpdml0eSBpbmZvcm1hdGlvbi5cbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUtMTg1LS5TSCBTRUUgQUxTT1xubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZToxODY6LkJSIGZpbGVfZ2V0YXR0ciAoMiksXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlLTE4Ny0uQlIgZmlsZV9zZXRhdHRyICgyKVxuLS1cbnNjcmlwdHMvc3lzY2FsbC50YmwtNDEwLTQ2N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxuc2NyaXB0cy9zeXNjYWxsLnRibDo0MTE6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbnNjcmlwdHMvc3lzY2FsbC50YmwtNDEyLTQ2OVx0Y29tbW9uXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuc2VjdXJpdHkvc2VjdXJpdHkuYz0yMTUzPWludCBzZWN1cml0eV9pbm9kZV9maWxlX3NldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXG4tLVxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTU4LS8qKlxuc2VjdXJpdHkvc2VjdXJpdHkuYzoyMTU5OiAqIHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cigpIC0gY2hlY2sgaWYgcmV0cmlldmluZyBmc3hhdHRyIGlzIGFsbG93ZWRcbnNlY3VyaXR5L3NlY3VyaXR5LmMtMjE2MC0gKiBAZGVudHJ5OiBmaWxlIHRvIHJldHJpZXZlIGZpbGVzeXN0ZW0gZXh0ZW5kZWQgYXR0cmlidXRlcyBmcm9tXG4tLVxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTYyLSAqXG5zZWN1cml0eS9zZWN1cml0eS5jOjIxNjM6ICogQ2FsbGVkIHdoZW4gZmlsZV9nZXRhdHRyKCkgc3lzY2FsbCBvciBGU19JT0NfRlNHRVRYQVRUUiBpb2N0bCgpIGlzIGNhbGxlZCBvblxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTY0LSAqIGlub2RlXG4tLVxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTY3LSAqL1xuc2VjdXJpdHkvc2VjdXJpdHkuYzoyMTY4OmludCBzZWN1cml0eV9pbm9kZV9maWxlX2dldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXG5zZWN1cml0eS9zZWN1cml0eS5jLTIxNjkte1xuc2VjdXJpdHkvc2VjdXJpdHkuYzoyMTcwOlx0cmV0dXJuIGNhbGxfaW50X2hvb2soaW5vZGVfZmlsZV9nZXRhdHRyLCBkZW50cnksIGZhKTtcbnNlY3VyaXR5L3NlY3VyaXR5LmMtMjE3MS19XG4tLVxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jPTM1NDQ9c3RhdGljIGludCBzZWxpbnV4X2lub2RlX2ZpbGVfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG4tLVxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jLTM1NDktXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmM6MzU1MDpzdGF0aWMgaW50IHNlbGludXhfaW5vZGVfZmlsZV9nZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYy0zNTUxLVx0XHRcdFx0ICAgICAgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxuLS1cbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYz03NTYwPXN0YXRpYyBzdHJ1Y3Qgc2VjdXJpdHlfaG9va19saXN0IHNlbGludXhfaG9va3NbXSBfX3JvX2FmdGVyX2luaXQgPSB7XG4tLVxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jLTc2MTktXHRMU01fSE9PS19JTklUKGlub2RlX3JlbW92ZXhhdHRyLCBzZWxpbnV4X2lub2RlX3JlbW92ZXhhdHRyKSxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYzo3NjIwOlx0TFNNX0hPT0tfSU5JVChpbm9kZV9maWxlX2dldGF0dHIsIHNlbGludXhfaW5vZGVfZmlsZV9nZXRhdHRyKSxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYy03NjIxLVx0TFNNX0hPT0tfSU5JVChpbm9kZV9maWxlX3NldGF0dHIsIHNlbGludXhfaW5vZGVfZmlsZV9zZXRhdHRyKSxcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9ODUzPV9fU1lTQ0FMTChfX05SX29wZW5fdHJlZV9hdHRyLCBzeXNfb3Blbl90cmVlX2F0dHIpXG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTg1NS0vKiBmcy9pbm9kZS5jICovXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODU2OiNkZWZpbmUgX19OUl9maWxlX2dldGF0dHIgNDY4XG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODU3Ol9fU1lTQ0FMTChfX05SX2ZpbGVfZ2V0YXR0ciwgc3lzX2ZpbGVfZ2V0YXR0cilcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC04NTgtI2RlZmluZSBfX05SX2ZpbGVfc2V0YXR0ciA0Njlcbi0tXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ4NC00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDg1OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ4Ni00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbnRvb2xzL3BlcmYvYXJjaC9taXBzL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zODQtNDY3XHRuNjRcdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6Mzg1OjQ2OFx0bjY0XHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzg2LTQ2OVx0bjY0XHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTYwLTQ2N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTYxOjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC01NjItNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zOTYtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDozOTc6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbnRvb2xzL3BlcmYvYXJjaC9zMzkwL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5OC00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NzMtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDc0OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDc1LTQ2OVx0Y29tbW9uXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTUxNS00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo1MTY6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC01MTctNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQ3NS00NjdcdGkzODZcdG9wZW5fdHJlZV9hdHRyXHRcdHN5c19vcGVuX3RyZWVfYXR0clxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0NzY6NDY4XHRpMzg2XHRmaWxlX2dldGF0dHJcdFx0c3lzX2ZpbGVfZ2V0YXR0clxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NzctNDY5XHRpMzg2XHRmaWxlX3NldGF0dHJcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzk0LTQ2N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50Ymw6Mzk1OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0c3lzX2ZpbGVfZ2V0YXR0clxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibC0zOTYtNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NDAtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG50b29scy9wZXJmL2FyY2gveHRlbnNhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ0MTo0NjhcdGNvbW1vblx0ZmlsZV9nZXRhdHRyXHRcdFx0c3lzX2ZpbGVfZ2V0YXR0clxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NDItNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsLTQxMC00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50Ymw6NDExOjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsLTQxMi00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MzQ0CgkJCQkJCQlvdXRwdXQ6IDEwMAoJCQkJCQkJdGhvdWdodHM6IDUxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRGVjaXNpb246IEEgUXVpY2sgUmV2aWV3KioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGlzIGNvbW1pdCYjMzk7cyBkaWZmIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gKkNoZWNrcyBkaWZmKjogUmlnaHQsIGl0JiMzOTtzIGp1c3QgYWRkaW5nIG5ldyBtYW4gcGFnZXM6IGBmaWxlX2dldGF0dHIuMmAsIGBmaWxlX3NldGF0dHIuMmAsIGFuZCBgZmlsZV9hdHRyLjJ0eXBlYC4gQWxsIHdpdGhpbiB0aGUgYG1hbi9gIGRpcmVjdG9yeS4gTm8gY2hhbmdlcyB0byBhY3R1YWwgY29kZSwganVzdCBkb2N1bWVudGF0aW9uLgoKTm93LCBsZXQmIzM5O3MgcnVuIHRocm91Z2ggU2VjdGlvbiAyJiMzOTtzIG5lZ2F0aXZlIGNyaXRlcmlhLiAqUmVhZHMgU2VjdGlvbiAyKjogSG1tLCAmIzM0O05vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMuLi4mIzM0OyBPa2F5LCB0aGF0IHNlY3Rpb24gY292ZXJzICYjMzQ7TW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLCYjMzQ7IGFuZCAmIzM0O1VzZXItc3BhY2UgZGlyZWN0b3JpZXMuLi4gdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UuLi4mIzM0OyBCaW5nbyEgVGhpcyBwYXRjaCBmYWxscyBzcXVhcmVseSBpbnRvIHRoYXQgY2F0ZWdvcnkuIEl0JiMzOTtzICpwdXJlbHkqIGFkZGluZyBkb2N1bWVudGF0aW9uOyBubyBleGVjdXRhYmxlIGNvZGUgaXMgdG91Y2hlZCwgYW5kIGNlcnRhaW5seSBubyBrZXJuZWwgY29kZS4KClRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2AgaGFzIHRvIGJlIGBmYWxzZWAuIE5vIG5lZWQgdG8gZW5hYmxlIGFueSBzcGVjaWZpYyBjb25maWdzIChgRW5hYmxlQ29uZmlncyA9IFtdYCksIGFuZCB0aGVyZSBhcmUgbm8gZm9jYWwgc3ltYm9scyB0byB0cmFjayAoYEZvY3VzU3ltYm9scyA9IFtdYCkuIFRoZSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIGlzIGRvY3VtZW50YXRpb24sIHBsYWluIGFuZCBzaW1wbGUsIGFuZCBpdCBkb2VzbiYjMzk7dCBhZmZlY3QgdGhlIGtlcm5lbCYjMzk7cyBydW50aW1lIGJlaGF2aW9yLiAqRGV0ZXJtaW5lcyo6IGBSZWFzb25pbmc6IFRoZSBwYXRjaCBvbmx5IGFkZHMgbWFuIHBhZ2VzIChkb2N1bWVudGF0aW9uKSBpbiBtYW4vbWFuMi8gYW5kIG1hbi9tYW4ydHlwZS8gYW5kIGRvZXMgbm90IG1vZGlmeSBhbnkga2VybmVsIHNvdXJjZSBjb2RlLmAKCkFscmlnaHQsIHRpbWUgdG8gZXhlY3V0ZSBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIG9ubHkgYWRkcyB1c2VyLXNwYWNlIG1hbi1wYWdlIGRvY3VtZW50YXRpb24gZmlsZXMgdW5kZXIgdGhlIG1hbi8gZGlyZWN0b3J5IChtYW4vbWFuMi9maWxlX2dldGF0dHIuMiwgbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIsIGFuZCBtYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlKSBhbmQgZG9lcyBub3QgbW9kaWZ5IGFueSBleGVjdXRhYmxlIGtlcm5lbCBzb3VyY2UgY29kZSBvciBkYXRhIHN0cnVjdHVyZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgb25seSBhZGRzIHVzZXItc3BhY2UgbWFuLXBhZ2UgZG9jdW1lbnRhdGlvbiBmaWxlcyB1bmRlciB0aGUgbWFuLyBkaXJlY3RvcnkgKG1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLCBtYW4vbWFuMi9maWxlX3NldGF0dHIuMiwgYW5kIG1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUpIGFuZCBkb2VzIG5vdCBtb2RpZnkgYW55IGV4ZWN1dGFibGUga2VybmVsIHNvdXJjZSBjb2RlIG9yIGRhdGEgc3RydWN0dXJlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6NDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjQ3OjMzLjg1MTYxNjAzN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODYwNjU1MTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIG9ubHkgYWRkcyB1c2VyLXNwYWNlIG1hbi1wYWdlIGRvY3VtZW50YXRpb24gZmlsZXMgdW5kZXIgdGhlIG1hbi8gZGlyZWN0b3J5IChtYW4vbWFuMi9maWxlX2dldGF0dHIuMiwgbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIsIGFuZCBtYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlKSBhbmQgZG9lcyBub3QgbW9kaWZ5IGFueSBleGVjdXRhYmxlIGtlcm5lbCBzb3VyY2UgY29kZSBvciBkYXRhIHN0cnVjdHVyZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzo0NzozMy44NTE2MjI3ODdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODc2Mzg5ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyMDQ3ZGFkMDEwNTc4Njg5ZTJlNmUwNDhjN2UzY2JhZTZhNmQ4Y2RmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gU2VwIDcgMTc6NDc6MzIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbWFuL21hbjIvZmlsZV9nZXRhdHRyLjIgYi9tYW4vbWFuMi9maWxlX2dldGF0dHIuMlxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uZjFhZWMyYWQ4YzQyNVxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9tYW4vbWFuMi9maWxlX2dldGF0dHIuMlxcbkBAIC0wLDAgKzEsMjg2IEBAXFxuKy5cXFxcXFxcIiBDb3B5cmlnaHQsIHRoZSBhdXRob3JzIG9mIHRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdFxcbisuXFxcXFxcXCJcXG4rLlxcXFxcXFwiIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMaW51eC1tYW4tcGFnZXMtY29weWxlZnRcXG4rLlxcXFxcXFwiXFxuKy5USCBmaWxlX2dldGF0dHIgMiAoZGF0ZSkgXFxcIkxpbnV4IG1hbi1wYWdlcyAodW5yZWxlYXNlZClcXFwiXFxuKy5TSCBOQU1FXFxuK2ZpbGVfZ2V0YXR0ciBcXFxcLSBnZXQgZmlsZXN5c3RlbSBpbm9kZSBhdHRyaWJ1dGVzXFxuKy5TSCBTWU5PUFNJU1xcbisubmZcXG4rLkJSIFxcXCIjaW5jbHVkZSBcXHUwMDNjbGludXgvZmNudGwuaFxcdTAwM2VcXFwiIFxcXCIgICAgICAvKiBcXFwiIEFUXyogXFxcIiBjb25zdGFudHMgKi9cXFwiXFxuKy5CUiBcXFwiI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ZzLmhcXHUwMDNlXFxcIiBcXFwiICAgICAgICAgLyogc3RydWN0IFxcXCIgZmlsZV9hdHRyIFxcXCIgYW5kIFxcXCIgRlNfWEZMQUdfKiBcXFwiIGNvbnN0YW50cyAqL1xcXCJcXG4rLkJSIFxcXCIjaW5jbHVkZSBcXHUwMDNjc3lzL3N5c2NhbGwuaFxcdTAwM2VcXFwiIFxcXCIgICAgICAvKiBcXFwiIFNZU18qIFxcXCIgY29uc3RhbnRzICovXFxcIlxcbisuQiAjaW5jbHVkZSBcXHUwMDNjdW5pc3RkLmhcXHUwMDNlXFxuKy5QXFxuKy5CIGxvbmcgc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLFxcbisuQkkgXFxcIiAgICAgICAgICAgICAgIGludCBcXFwiIGRpcmZkIFxcXCIsIGNvbnN0IGNoYXIgKlxcXCIgcGF0aG5hbWUgLFxcbisuQkkgXFxcIiAgICAgICAgICAgICAgIHN0cnVjdCBmaWxlX2F0dHIgKlxcXCIgZmF0dHIgXFxcIiwgc2l6ZV90IFxcXCIgc2l6ZSAsXFxuKy5CSSBcXFwiICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IFxcXCIgZmxhZ3MgKTtcXG4rLmZpXFxuKy5QXFxuKy5JUiBOb3RlIDpcXG4rZ2xpYmMgcHJvdmlkZXMgbm8gd3JhcHBlciBmb3JcXG4rLkJSIGZpbGVfZ2V0YXR0ciAoKSxcXG4rdXNlXFxuKy5CUiBzeXNjYWxsICgyKVxcbitpbnN0ZWFkLlxcbisuU0ggREVTQ1JJUFRJT05cXG4rVGhlXFxuKy5CUiBmaWxlX2dldGF0dHIgKClcXG4rc3lzdGVtIGNhbGwgcmV0cmlldmVzIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzXFxuK2Zyb20gdGhlIGZpbGUgc3BlY2lmaWVkIGJ5XFxuKy5JUiBwYXRobmFtZSAuXFxuKy5QXFxuK1RoaXMgc3lzdGVtIGNhbGwgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHRoZVxcbisuQiBGU19JT0NfRlNHRVRYQVRUUlxcbisuQlIgaW9jdGwgKDIpXFxuK29wZXJhdGlvbixcXG4rYnV0IHdpdGggdGhlIGFkdmFudGFnZSB0aGF0IHRoZSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gYmUgb3BlbmVkLlxcbitCeSB1c2luZyBhIHBhdGhuYW1lLFxcbisuQlIgZmlsZV9nZXRhdHRyICgpXFxuK2NhbiByZXRyaWV2ZSBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlc1xcbitmcm9tIGFsbCBmaWxlIHR5cGVzLFxcbitpbmNsdWRpbmcgc3BlY2lhbCBmaWxlcyBzdWNoIGFzIEZJRk9zLCBzb2NrZXRzLCBibG9jayBkZXZpY2VzLCBjaGFyYWN0ZXJcXG4rZGV2aWNlcywgYW5kIHN5bWxpbmtzLCB3aGVyZSBvcGVuaW5nIHRhcmdldGVkIGlub2RlIG1heSBub3QgYmUgcG9zc2libGUuXFxuKy5QXFxuK0FzIHdpdGhcXG4rLkJSIG9wZW5hdCAoMiksXFxuK2lmXFxuKy5JIHBhdGhuYW1lXFxuK2lzIHJlbGF0aXZlLFxcbit0aGVuIGl0IGlzIGludGVycHJldGVkIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnlcXG4rcmVmZXJyZWQgdG8gYnkgdGhlIGZpbGUgZGVzY3JpcHRvclxcbisuSVIgZGlyZmQgLlxcbitUaGUgc3BlY2lhbCB2YWx1ZVxcbisuQiBBVF9GRENXRFxcbitjb3VsZCBiZSB1c2VkIHRvIHJlZmVyIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IG9mIHRoZSBjYWxsaW5nIHByb2Nlc3MuXFxuK0lmXFxuKy5JIHBhdGhuYW1lXFxuK2lzIGFic29sdXRlLFxcbit0aGVuXFxuKy5JIGRpcmZkXFxuK2lzIGlnbm9yZWQuXFxuKy5QXFxuK1RoZVxcbisuSSBmYXR0clxcbithcmd1bWVudCBpcyBhIHBvaW50ZXIgdG8gYVxcbisuSSBmaWxlX2F0dHJcXG4rc3RydWN0dXJlLlxcbitUaGlzIHN0cnVjdHVyZSB3aWxsIGJlIGZpbGxlZCB3aXRoIGZpbGUgYXR0cmlidXRlcy5cXG4rVGhpcyBzdHJ1Y3R1cmUgaXMgZGVzY3JpYmVkIGluXFxuKy5CUiBmaWxlX2F0dHIoMnR5cGUpIC5cXG4rLlBcXG4rVGhlXFxuKy5JIHNpemVcXG4rYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgcG9pbnRlZCB0byBieVxcbisuSVIgZmF0dHIgLlxcbitUaGUgc2l6ZSBpbmRpY2F0ZXMgdmVyc2lvbiBvZiB0aGUgc3RydWN0dXJlIGluIHVzZSwgcmVmZXIgdG9cXG4rLkIgZmlsZV9hdHRyKDJ0eXBlKVxcbitmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB2ZXJzaW9uaW5nLlxcbisuUFxcbitVc2Vyc3BhY2UgYXBwbGljYXRpb25zIHNob3VsZCB6ZXJvLWluaXRpYWxpemVcXG4rLkkgc3RydWN0IGZpbGVfYXR0clxcbitiZWZvcmUgY2FsbGluZ1xcbisuQlIgZmlsZV9nZXRhdHRyICgpXFxuK3RvIGVuc3VyZSB0aGF0IGZpZWxkcyBub3QgZmlsbGVkIGluIGJ5IG9sZGVyIGtlcm5lbHNcXG4rd2lsbCBoYXZlIHByZWRpY3RhYmxlIHZhbHVlcy5cXG4rLlBcXG4rVGhlXFxuKy5JIGZsYWdzXFxuK2FyZ3VtZW50IGlzIGEgYml0IG1hc2ssIGF2YWlsYWJsZSBmbGFncyBhcmU6XFxuKy5UUFxcbisuQiBBVF9FTVBUWV9QQVRIXFxuK0lmXFxuKy5JIHBhdGhuYW1lXFxuK2lzIGFuIGVtcHR5IHN0cmluZyxcXG4rb3BlcmF0ZSBvbiB0aGUgZmlsZSByZWZlcnJlZCB0byBieVxcbisuSVIgZGlyZmQgLlxcbitJbiB0aGlzIGNhc2UsXFxuKy5JIGRpcmZkXFxuK2NhbiByZWZlciB0byBhbnkgdHlwZSBvZiBmaWxlLFxcbitub3QganVzdCBhIGRpcmVjdG9yeS5cXG4rSWZcXG4rLkkgZGlyZmRcXG4raXNcXG4rLkJSIEFUX0ZEQ1dEICxcXG4rdGhlIGNhbGwgZmFpbHMgd2l0aCB0aGUgZXJyb3JcXG4rLkJSIEVCQURGIC5cXG4rLlRQXFxuKy5CIEFUX1NZTUxJTktfTk9GT0xMT1dcXG4rSWZcXG4rLkkgcGF0aG5hbWVcXG4raXMgYSBzeW1ib2xpYyBsaW5rLFxcbitkbyBub3QgZGVyZWZlcmVuY2UgaXQ7XFxuK2luc3RlYWQgZ2V0IGF0dHJpYnV0ZXMgb2YgdGhlIHN5bWJvbGljIGxpbmsgaW5vZGUgaXRzZWxmLlxcbitCeSBkZWZhdWx0LCBzeW1ib2xpYyBsaW5rcyBhcmUgZGVyZWZlcmVuY2VkLlxcbisuU0ggUkVUVVJOIFZBTFVFXFxuK09uIHN1Y2Nlc3MsXFxuK3plcm8gaXMgcmV0dXJuZWQuXFxuK09uIGVycm9yLFxcbitcXFxcLTEgaXMgcmV0dXJuZWQsXFxuK2FuZFxcbisuSSBlcnJub1xcbitpcyBzZXQgdG8gaW5kaWNhdGUgdGhlIGVycm9yLlxcbisuU0ggRVJST1JTXFxuKy5UUFxcbisuQiBFMkJJR1xcbisuSSBzaXplXFxuK2lzIHRvbyBiaWcgKGxhcmdlciB0aGFuXFxuKy5CUiBQQUdFX1NJWkUgKS5cXG4rLlRQXFxuKy5CIEVBQ0NFU1xcbitTZWFyY2ggcGVybWlzc2lvbiBpcyBkZW5pZWQgZm9yIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXNcXG4raW4gdGhlIHBhdGggcHJlZml4IG9mXFxuKy5JUiBwYXRobmFtZSAuXFxuKy5UUFxcbisuQiBFQkFERlxcbisuSSBwYXRobmFtZVxcbitpcyByZWxhdGl2ZSBidXRcXG4rLkkgZGlyZmRcXG4raXMgbmVpdGhlclxcbisuQiBBVF9GRENXRFxcbitub3IgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IuXFxuKy5UUFxcbisuQiBFQkFERlxcbisuSSBwYXRobmFtZVxcbitpcyBhbiBlbXB0eSBzdHJpbmcsXFxuKy5CIEFUX0VNUFRZX1BBVEhcXG4rd2FzIHNwZWNpZmllZCxcXG4rYnV0XFxuKy5JIGRpcmZkXFxuK2lzIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLlxcbisuVFBcXG4rLkIgRUZBVUxUXFxuKy5JIHBhdGhuYW1lXFxuK29yXFxuKy5JIGZhdHRyXFxuK2lzIGFuIGludmFsaWQgcG9pbnRlci5cXG4rLlRQXFxuKy5CIEVJTlZBTFxcbitJbnZhbGlkIGZsYWcgc3BlY2lmaWVkIGluXFxuKy5JUiBmbGFncyAuXFxuKy5UUFxcbisuQiBFSU5WQUxcXG4rLkkgc2l6ZVxcbitpcyBzbWFsbGVyIHRoYW5cXG4rLkJSIEZJTEVfQVRUUl9TSVpFX1ZFUjAgLlxcbisuVFBcXG4rLkIgRUxPT1BcXG4rVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQgd2hpbGUgcmVzb2x2aW5nXFxuKy5JUiBwYXRobmFtZSAuXFxuKy5UUFxcbisuQiBFTkFNRVRPT0xPTkdcXG4rLkkgcGF0aG5hbWVcXG4raXMgdG9vIGxvbmcuXFxuKy5UUFxcbisuQiBFTk9FTlRcXG4rQSBjb21wb25lbnQgb2ZcXG4rLkkgcGF0aG5hbWVcXG4rZG9lcyBub3QgZXhpc3QsXFxuK29yXFxuKy5JIHBhdGhuYW1lXFxuK2lzIGFuIGVtcHR5IHN0cmluZyBhbmRcXG4rLkIgQVRfRU1QVFlfUEFUSFxcbit3YXMgbm90IHNwZWNpZmllZCBpblxcbisuSVIgZmxhZ3MgLlxcbisuVFBcXG4rLkIgRU5PTUVNXFxuK0luc3VmZmljaWVudCBrZXJuZWwgbWVtb3J5IHdhcyBhdmFpbGFibGUuXFxuKy5UUFxcbisuQiBFTk9URElSXFxuK0EgY29tcG9uZW50IG9mIHRoZSBwYXRoIHByZWZpeCBvZlxcbisuSSBwYXRobmFtZVxcbitpcyBub3QgYSBkaXJlY3Rvcnkgb3IsXFxuKy5JIHBhdGhuYW1lXFxuK2lzIHJlbGF0aXZlIGFuZFxcbisuSSBkaXJmZFxcbitpcyBhIGZpbGUgZGVzY3JpcHRvciByZWZlcnJpbmcgdG8gYSBmaWxlIG90aGVyIHRoYW4gYSBkaXJlY3RvcnkuXFxuKy5UUFxcbisuQiBFT1BOT1RTVVBQXFxuK1RoZSBmaWxlc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgZ2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoaXMgdHlwZSBvZiBpbm9kZS5cXG4rLlNIIEhJU1RPUllcXG4rLlNTIExpbnV4IDYuMTdcXG4rVGhpcyBzeXN0ZW0gY2FsbCBpcyBpbnRyb2R1Y2VkIGFzIGEgbW9yZSBmbGV4aWJsZSBhbHRlcm5hdGl2ZSB0byB0aGVcXG4rRlNfSU9DX0ZTR0VUWEFUVFJcXG4rLkJSIGlvY3RsICgyKVxcbit3aGljaCBjb3VsZCB3b3JrIG9uIGFueSB0eXBlIG9mIGZpbGVzLlxcbisuU0ggTk9URVNcXG4rVGhpcyBzeXN0ZW0gY2FsbCBpcyBkZXNpZ25lZCB0byBiZSBleHRlbnNpYmxlLlxcbitUaGVcXG4rLkkgc2l6ZVxcbithcmd1bWVudCBhbGxvd3MgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucyB0byBpbmRpY2F0ZVxcbit3aGljaCB2ZXJzaW9uIG9mIHRoZVxcbisuSSBmaWxlX2F0dHJcXG4rc3RydWN0dXJlIHRoZXkgYXJlIHVzaW5nLFxcbitlbmFibGluZyB0aGUga2VybmVsIHRvIHN1cHBvcnQgYm90aCBvbGQgYW5kIG5ldyB2ZXJzaW9uc1xcbitvZiB0aGUgc3RydWN0dXJlIHNpbXVsdGFuZW91c2x5LlxcbisuUFxcbitJZlxcbisuSSBzaXplXFxuK2lzIHNtYWxsZXIgdGhhbiB0aGUgc3RydWN0dXJlIHNpemUgdGhlIGtlcm5lbCBleHBlY3RzLFxcbitvbmx5IHRoZSBmaWVsZHMgdGhhdCBmaXQgd2l0aGluXFxuKy5JIHNpemVcXG4rd2lsbCBiZSBmaWxsZWQgaW4uXFxuK0lmXFxuKy5JIHNpemVcXG4raXMgbGFyZ2VyIHRoYW4gdGhlIGtlcm5lbCdzIHN0cnVjdHVyZSBzaXplLFxcbit0aGUgZXh0cmEgYnl0ZXMgYXJlIHplcm9lZC5cXG4rLlNIIEVYQU1QTEVTXFxuK1RoZSBwcm9ncmFtIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mXFxuKy5CUiBmaWxlX2dldGF0dHIgKClcXG4rdG8gcmV0cmlldmUgYW5kIGRpc3BsYXkgZmlsZSBhdHRyaWJ1dGVzLlxcbisuUFxcbisuaW4gKzRuXFxuKy5FWFxcbisjaW5jbHVkZSBcXHUwMDNjZmNudGwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ZzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzdGRpby5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3RkbGliLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzeXMvc3lzY2FsbC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjdW5pc3RkLmhcXHUwMDNlXFxuK1xcbisjaWZuZGVmIFNZU19maWxlX2dldGF0dHJcXG4rI2RlZmluZSBTWVNfZmlsZV9nZXRhdHRyIDQ2N1xcbisjZW5kaWZcXG4rXFxuK2ludFxcbittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXFxuK3tcXG4rICAgIHN0cnVjdCBmaWxlX2F0dHIgZmEgPSB7IDAgfTtcXG4rICAgIGludCBkZmQ7XFxuKyAgICBsb25nIHJldDtcXG4rXFxuKyAgICBpZiAoYXJnYyAhPSAyKSB7XFxuKyAgICAgICAgZnByaW50ZihzdGRlcnIsIFxcXCJVc2FnZTogJXMgXFx1MDAzY2ZpbGVuYW1lXFx1MDAzZVxcXFxcXFxcblxcXCIsIGFyZ3ZbMF0pO1xcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcXG4rICAgIH1cXG4rXFxuKyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIEFUX0ZEQ1dELCBhcmd2WzFdLCBcXHUwMDI2ZmEsIHNpemVvZihmYSksIDApO1xcbisgICAgaWYgKHJldCA9PSBcXFxcLTEpIHtcXG4rICAgICAgICBwZXJyb3IoXFxcImZpbGVfZ2V0YXR0clxcXCIpO1xcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcXG4rICAgIH1cXG4rXFxuKyAgICBwcmludGYoXFxcIkZpbGUgYXR0cmlidXRlczpcXFxcXFxcXG5cXFwiKTtcXG4rICAgIHByaW50ZihcXFwiICB4ZmxhZ3M6ICAgICAweCVsbHhcXFxcXFxcXG5cXFwiLCAodW5zaWduZWQgbG9uZyBsb25nKWZhLmZhX3hmbGFncyk7XFxuKyAgICBwcmludGYoXFxcIiAgZXh0c2l6ZTogICAgJXVcXFxcXFxcXG5cXFwiLCBmYS5mYV9leHRzaXplKTtcXG4rICAgIHByaW50ZihcXFwiICBuZXh0ZW50czogICAldVxcXFxcXFxcblxcXCIsIGZhLmZhX25leHRlbnRzKTtcXG4rICAgIHByaW50ZihcXFwiICBwcm9qaWQ6ICAgICAldVxcXFxcXFxcblxcXCIsIGZhLmZhX3Byb2ppZCk7XFxuKyAgICBwcmludGYoXFxcIiAgY293ZXh0c2l6ZTogJXVcXFxcXFxcXG5cXFwiLCBmYS5mYV9jb3dleHRzaXplKTtcXG4rXFxuKyAgICAvKlxcbisgICAgICogVHJ5IHNldHRpbmcgTk9EVU1QIGZsYWcgd2l0aCBjaGF0dHIgK2QgLi9mb28gdG8gc2VlIHRoZSBkaWZmZXJlbmNlXFxuKyAgICAgKi9cXG4rICAgIGlmIChmYS5mYV94ZmxhZ3MgXFx1MDAyNiBGU19YRkxBR19OT0RVTVApXFxuKyAgICAgICAgcHJpbnRmKFxcXCIgIE5PRFVNUCBmbGFnIGlzIHNldFxcXFxcXFxcblxcXCIpO1xcbitcXG4rICAgIGV4aXQoRVhJVF9TVUNDRVNTKTtcXG4rfVxcbisuRUVcXG4rLmluXFxuKy5TSCBTRUUgQUxTT1xcbisuQlIgZmlsZV9zZXRhdHRyICgyKSxcXG4rLkJSIGZpbGVfYXR0ciAoMnR5cGUpLFxcbisuQlIgaW9jdGwgKDIpLFxcbisuQlIgaW9jdGxfZnMgKDIpLFxcbisuQlIgb3BlbmF0ICgyKVxcbmRpZmYgLS1naXQgYS9tYW4vbWFuMi9maWxlX3NldGF0dHIuMiBiL21hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi41OTY3NTBkYzc5YzgxXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL21hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yXFxuQEAgLTAsMCArMSwzNDAgQEBcXG4rLlxcXFxcXFwiIENvcHlyaWdodCwgdGhlIGF1dGhvcnMgb2YgdGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0XFxuKy5cXFxcXFxcIlxcbisuXFxcXFxcXCIgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExpbnV4LW1hbi1wYWdlcy1jb3B5bGVmdFxcbisuXFxcXFxcXCJcXG4rLlRIIGZpbGVfc2V0YXR0ciAyIChkYXRlKSBcXFwiTGludXggbWFuLXBhZ2VzICh1bnJlbGVhc2VkKVxcXCJcXG4rLlNIIE5BTUVcXG4rZmlsZV9zZXRhdHRyIFxcXFwtIHNldCBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcXG4rLlNIIFNZTk9QU0lTXFxuKy5uZlxcbisuQlIgXFxcIiNpbmNsdWRlIFxcdTAwM2NsaW51eC9mY250bC5oXFx1MDAzZVxcXCIgXFxcIiAgICAgIC8qIERlZmluaXRpb24gb2YgXFxcIiBBVF8qIFxcXCIgY29uc3RhbnRzICovXFxcIlxcbisuQlIgXFxcIiNpbmNsdWRlIFxcdTAwM2NsaW51eC9mcy5oXFx1MDAzZVxcXCIgXFxcIiAgICAgICAgIC8qIERlZmluaXRpb24gb2YgXFxcIiBGSUxFX0FUVFJfKiBcXFxcXFxuK1xcXCIgYW5kIFxcXCIgRlNfWEZMQUdfKiBcXFwiIGNvbnN0YW50cyAqL1xcXCJcXG4rLkJSIFxcXCIjaW5jbHVkZSBcXHUwMDNjc3lzL3N5c2NhbGwuaFxcdTAwM2VcXFwiIFxcXCIgICAgICAvKiBEZWZpbml0aW9uIG9mIFxcXCIgU1lTXyogXFxcIiBjb25zdGFudHMgKi9cXFwiXFxuKy5CICNpbmNsdWRlIFxcdTAwM2N1bmlzdGQuaFxcdTAwM2VcXG4rLlBcXG4rLkIgbG9uZyBzeXNjYWxsKFNZU19maWxlX3NldGF0dHIsXFxuKy5CSSBcXFwiICAgICAgICAgICAgICAgaW50IFxcXCIgZGlyZmQgXFxcIiwgY29uc3QgY2hhciAqXFxcIiBwYXRobmFtZSAsXFxuKy5CSSBcXFwiICAgICAgICAgICAgICAgc3RydWN0IGZpbGVfYXR0ciAqXFxcIiBmYXR0ciBcXFwiLCBzaXplX3QgXFxcIiBzaXplICxcXG4rLkJJIFxcXCIgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgXFxcIiBmbGFncyApO1xcbisuZmlcXG4rLlBcXG4rLklSIE5vdGUgOlxcbitnbGliYyBwcm92aWRlcyBubyB3cmFwcGVyIGZvclxcbisuQlIgZmlsZV9zZXRhdHRyICgpLFxcbituZWNlc3NpdGF0aW5nIHRoZSB1c2Ugb2ZcXG4rLkJSIHN5c2NhbGwgKDIpLlxcbisuU0ggREVTQ1JJUFRJT05cXG4rVGhlXFxuKy5CUiBmaWxlX3NldGF0dHIgKClcXG4rc3lzdGVtIGNhbGwgc2V0cyBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcXG4rb24gdGhlIGZpbGUgc3BlY2lmaWVkIGJ5XFxuKy5JUiBwYXRobmFtZSAuXFxuKy5QXFxuK1RoaXMgc3lzdGVtIGNhbGwgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHRoZVxcbisuQiBGU19JT0NfRlNTRVRYQVRUUlxcbisuQlIgaW9jdGwgKDIpXFxuK29wZXJhdGlvbixcXG4rYnV0IHdpdGggdGhlIGFkdmFudGFnZSB0aGF0IHRoZSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gYmUgb3BlbmVkLlxcbitCeSB1c2luZyBhIHBhdGhuYW1lIGluc3RlYWQgb2YgcmVxdWlyaW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLFxcbisuQlIgZmlsZV9zZXRhdHRyICgpXFxuK2NhbiBtYW5pcHVsYXRlIGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlc1xcbitvbiBhbGwgZmlsZSB0eXBlcyxcXG4raW5jbHVkaW5nIHNwZWNpYWwgZmlsZXMgKEZJRk9zLCBzb2NrZXRzLCBibG9jayBkZXZpY2VzLCBjaGFyYWN0ZXIgZGV2aWNlcylcXG4rd2hlcmUgb3BlbmluZyB0aGUgZmlsZSBtYXkgaGF2ZSBzaWRlIGVmZmVjdHMgb3IgbWF5IG5vdCBiZSBwb3NzaWJsZS5cXG4rV2l0aFxcbisuQlIgaW9jdGwgKDIpLFxcbitpdCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIG9idGFpbiBhIGZpbGUgZGVzY3JpcHRvciB0aGF0IHJlZmVyc1xcbitkaXJlY3RseSB0byB0aGUgZmlsZXN5c3RlbSBpbm9kZSBmb3Igc3BlY2lhbCBmaWxlcy5cXG4rLlBcXG4rQXMgd2l0aFxcbisuQlIgb3BlbmF0ICgyKSxcXG4raWZcXG4rLkkgcGF0aG5hbWVcXG4raXMgcmVsYXRpdmUsXFxuK3RoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeVxcbityZWZlcnJlZCB0byBieSB0aGUgZmlsZSBkZXNjcmlwdG9yXFxuKy5JIGRpcmZkXFxuKyhvciB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvZiB0aGUgY2FsbGluZyBwcm9jZXNzLFxcbitpZlxcbisuSSBkaXJmZFxcbitpcyB0aGUgc3BlY2lhbCB2YWx1ZVxcbisuQlIgQVRfRkRDV0QgKS5cXG4rSWZcXG4rLkkgcGF0aG5hbWVcXG4raXMgYWJzb2x1dGUsXFxuK3RoZW5cXG4rLkkgZGlyZmRcXG4raXMgaWdub3JlZC5cXG4rLlBcXG4rVGhlXFxuKy5JIGZhdHRyXFxuK2FyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBhXFxuKy5JIGZpbGVfYXR0clxcbitzdHJ1Y3R1cmUsXFxuK3doaWNoIHNwZWNpZmllcyB0aGUgYXR0cmlidXRlcyB0byBzZXQgb24gdGhlIGZpbGUuXFxuK1RoaXMgc3RydWN0dXJlIGlzIGRlc2NyaWJlZCBpblxcbisuQlIgZmlsZV9hdHRyICgydHlwZSkuXFxuKy5QXFxuK1RoZVxcbisuSSBzaXplXFxuK2FyZ3VtZW50IHNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnlcXG4rLklSIGZhdHRyIC5cXG4rVGhlIHNpemUgaW5kaWNhdGVzIHZlcnNpb24gb2YgdGhlIHN0cnVjdHVyZSBpbiB1c2UsIHJlZmVyIHRvXFxuKy5CIGZpbGVfYXR0cigydHlwZSlcXG4rZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdmVyc2lvbmluZy5cXG4rLlBcXG4rVXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIHplcm8taW5pdGlhbGl6ZVxcbisuSSBzdHJ1Y3QgZmlsZV9hdHRyXFxuK3RvIGVuc3VyZSB0aGF0IGZ1dHVyZSBmaWVsZHMgYWRkZWQgdG8gdGhlIHN0cnVjdHVyZVxcbit3aWxsIGJlIHRyZWF0ZWQgYXMgbm8tb3BzIGlmIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBpcyB1cGRhdGVkXFxuK2J1dCB0aGUgYXBwbGljYXRpb24gaXMgbm90LlxcbisuUFxcbitUaGVcXG4rLkkgZmxhZ3NcXG4rYXJndW1lbnQgaXMgYSBiaXQgbWFzayB0aGF0IGNhbiBpbmNsdWRlIHplcm8gb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcXG4rLlRQXFxuKy5CIEFUX0VNUFRZX1BBVEhcXG4rSWZcXG4rLkkgcGF0aG5hbWVcXG4raXMgYW4gZW1wdHkgc3RyaW5nLFxcbitvcGVyYXRlIG9uIHRoZSBmaWxlIHJlZmVycmVkIHRvIGJ5XFxuKy5JIGRpcmZkXFxuKyh3aGljaCBtYXkgaGF2ZSBiZWVuIG9idGFpbmVkIHVzaW5nIHRoZVxcbisuQlIgb3BlbiAoMilcXG4rLkIgT19QQVRIXFxuK2ZsYWcpLlxcbitJbiB0aGlzIGNhc2UsXFxuKy5JIGRpcmZkXFxuK2NhbiByZWZlciB0byBhbnkgdHlwZSBvZiBmaWxlLFxcbitub3QganVzdCBhIGRpcmVjdG9yeS5cXG4rSWZcXG4rLkkgZGlyZmRcXG4raXNcXG4rLkJSIEFUX0ZEQ1dEICxcXG4rdGhlIGNhbGwgZmFpbHMgd2l0aCB0aGUgZXJyb3JcXG4rLkJSIEVCQURGIC5cXG4rLlRQXFxuKy5CIEFUX1NZTUxJTktfTk9GT0xMT1dcXG4rSWZcXG4rLkkgcGF0aG5hbWVcXG4raXMgYSBzeW1ib2xpYyBsaW5rLFxcbitkbyBub3QgZGVyZWZlcmVuY2UgaXQ6XFxuK2luc3RlYWQgc2V0IGF0dHJpYnV0ZXMgb24gdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmLlxcbitCeSBkZWZhdWx0IChpLmUuLCBpZiB0aGlzIGZsYWcgaXMgbm90IHNwZWNpZmllZCksXFxuK3N5bWJvbGljIGxpbmtzIGFyZSBkZXJlZmVyZW5jZWQuXFxuKy5TSCBSRVRVUk4gVkFMVUVcXG4rT24gc3VjY2VzcyxcXG4remVybyBpcyByZXR1cm5lZC5cXG4rT24gZXJyb3IsXFxuK1xcXFwtMSBpcyByZXR1cm5lZCxcXG4rYW5kXFxuKy5JIGVycm5vXFxuK2lzIHNldCB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuXFxuKy5TSCBFUlJPUlNcXG4rLlRQXFxuKy5CIEUyQklHXFxuKy5JIHNpemVcXG4raXMgbGFyZ2VyIHRoYW5cXG4rLkJSIFBBR0VfU0laRSAuXFxuKy5UUFxcbisuQiBFMkJJR1xcbisuSSBzaXplXFxuK2luZGljYXRlcyB0aGUgdmVyc2lvbiB3aGljaCBrZXJuZWwgZG9lc24ndCBzdXBwb3J0ICh0aGUgc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGVcXG4ra2VybmVsIGV4cGVjdHMpIGFuZCBuZXcgZmllbGRzIGFyZSBub24temVyby5cXG4rLlRQXFxuKy5CIEVBQ0NFU1xcbitTZWFyY2ggcGVybWlzc2lvbiBpcyBkZW5pZWQgZm9yIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXNcXG4raW4gdGhlIHBhdGggcHJlZml4IG9mXFxuKy5JUiBwYXRobmFtZSAuXFxuKyhTZWUgYWxzb1xcbisuQlIgcGF0aF9yZXNvbHV0aW9uICg3KS4pXFxuKy5UUFxcbisuQiBFQkFERlxcbisuSSBwYXRobmFtZVxcbitpcyByZWxhdGl2ZSBidXRcXG4rLkkgZGlyZmRcXG4raXMgbmVpdGhlclxcbisuQiBBVF9GRENXRFxcbitub3IgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IuXFxuKy5UUFxcbisuQiBFQkFERlxcbisuSSBwYXRobmFtZVxcbitpcyBhbiBlbXB0eSBzdHJpbmcsXFxuKy5CIEFUX0VNUFRZX1BBVEhcXG4rd2FzIHNwZWNpZmllZCBpblxcbisuSVIgZmxhZ3MgLFxcbithbmRcXG4rLkkgZGlyZmRcXG4raXMgYW4gaW52YWxpZCBmaWxlIGRlc2NyaXB0b3IuXFxuKy5UUFxcbisuQiBFRkFVTFRcXG4rLkkgcGF0aG5hbWVcXG4rb3JcXG4rLkkgZmF0dHJcXG4raXMgYW4gaW52YWxpZCBwb2ludGVyLlxcbisuVFBcXG4rLkIgRUlOVkFMXFxuK0ludmFsaWQgZmxhZyBzcGVjaWZpZWQgaW5cXG4rLklSIGZsYWdzIC5cXG4rLlRQXFxuKy5CIEVJTlZBTFxcbisuSSBzaXplXFxuK2lzIHNtYWxsZXIgdGhhblxcbisuQlIgRklMRV9BVFRSX1NJWkVfVkVSMCAuXFxuKy5UUFxcbisuQiBFSU5WQUxcXG4rSW52YWxpZCBjb21iaW5hdGlvbiBvZiBwYXJhbWV0ZXJzIHByb3ZpZGVkIGluXFxuKy5JIGZhdHRyXFxuK2ZvciB0aGlzIHR5cGUgb2YgZmlsZSBvciBmaWxlc3lzdGVtLlxcbisuVFBcXG4rLkIgRUxPT1BcXG4rVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQgd2hpbGUgcmVzb2x2aW5nXFxuKy5JUiBwYXRobmFtZSAuXFxuKy5UUFxcbisuQiBFTkFNRVRPT0xPTkdcXG4rLkkgcGF0aG5hbWVcXG4raXMgdG9vIGxvbmcuXFxuKy5UUFxcbisuQiBFTk9FTlRcXG4rQSBjb21wb25lbnQgb2ZcXG4rLkkgcGF0aG5hbWVcXG4rZG9lcyBub3QgZXhpc3QsXFxuK29yXFxuKy5JIHBhdGhuYW1lXFxuK2lzIGFuIGVtcHR5IHN0cmluZyBhbmRcXG4rLkIgQVRfRU1QVFlfUEFUSFxcbit3YXMgbm90IHNwZWNpZmllZCBpblxcbisuSVIgZmxhZ3MgLlxcbisuVFBcXG4rLkIgRU5PTUVNXFxuK0luc3VmZmljaWVudCBrZXJuZWwgbWVtb3J5IHdhcyBhdmFpbGFibGUuXFxuKy5UUFxcbisuQiBFTk9URElSXFxuK0EgY29tcG9uZW50IG9mIHRoZSBwYXRoIHByZWZpeCBvZlxcbisuSSBwYXRobmFtZVxcbitpcyBub3QgYSBkaXJlY3Rvcnkgb3IsXFxuKy5JIHBhdGhuYW1lXFxuK2lzIHJlbGF0aXZlIGFuZFxcbisuSSBkaXJmZFxcbitpcyBhIGZpbGUgZGVzY3JpcHRvciByZWZlcnJpbmcgdG8gYSBmaWxlIG90aGVyIHRoYW4gYSBkaXJlY3RvcnkuXFxuKy5UUFxcbisuQiBFT1BOT1RTVVBQXFxuK1RoZSBmaWxlc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgc2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoaXMgdHlwZSBvZiBpbm9kZS5cXG4rLlRQXFxuKy5CIEVQRVJNXFxuK1RoZSBjYWxsZXIgZG9lcyBub3QgaGF2ZSB0aGUgbmVjZXNzYXJ5IHBlcm1pc3Npb25zXFxuK3RvIGNoYW5nZSB0aGUgZmlsZSBhdHRyaWJ1dGVzLlxcbisuVFBcXG4rLkIgRVJPRlNcXG4rVGhlIGZpbGUgaXMgb24gYSByZWFkLW9ubHkgZmlsZXN5c3RlbS5cXG4rLlNIIEhJU1RPUllcXG4rLlNTIExpbnV4IDYuMTdcXG4rVGhpcyBzeXN0ZW0gY2FsbCBpcyBpbnRyb2R1Y2VkIGFzIGEgbW9yZSBmbGV4aWJsZSBhbHRlcm5hdGl2ZSB0byB0aGVcXG4rRlNfSU9DX0ZTU0VUWEFUVFJcXG4rLkJSIGlvY3RsICgyKVxcbit3aGljaCBjb3VsZCB3b3JrIG9uIGFueSB0eXBlIG9mIGZpbGVzLlxcbisuU0ggTk9URVNcXG4rVGhpcyBzeXN0ZW0gY2FsbCBpcyBkZXNpZ25lZCB0byBiZSBleHRlbnNpYmxlLlxcbitUaGVcXG4rLkkgc2l6ZVxcbithcmd1bWVudCBhbGxvd3MgdXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgdG8gaW5kaWNhdGVcXG4rd2hpY2ggdmVyc2lvbiBvZiB0aGVcXG4rLkkgZmlsZV9hdHRyXFxuK3N0cnVjdHVyZSB0aGV5IGFyZSB1c2luZyxcXG4rZW5hYmxpbmcgdGhlIGtlcm5lbCB0byBzdXBwb3J0IGJvdGggb2xkIGFuZCBuZXcgdmVyc2lvbnNcXG4rb2YgdGhlIHN0cnVjdHVyZSBzaW11bHRhbmVvdXNseS5cXG4rLlBcXG4rSWZcXG4rLkkgc2l6ZVxcbitpcyBzbWFsbGVyIHRoYW4gdGhlIHN0cnVjdHVyZSBzaXplIHRoZSBrZXJuZWwgZXhwZWN0cyxcXG4rdGhlIGtlcm5lbCB0cmVhdHMgdGhlIG1pc3NpbmcgZmllbGRzIGFzIGhhdmluZyB6ZXJvIHZhbHVlc1xcbisod2hpY2ggaXMgYSBuby1vcCkuXFxuK0lmXFxuKy5JIHNpemVcXG4raXMgbGFyZ2VyIHRoYW4gZXhwZWN0ZWQsXFxuK3RoZSBrZXJuZWwgY2hlY2tzIHRoYXQgYWxsIHVua25vd24gKHRvIHRoZSBrZXJuZWwpIGZpZWxkcyBhcmUgemVybztcXG4raWYgbm90LFxcbit0aGUgY2FsbCBmYWlscyB3aXRoXFxuKy5CUiBFMkJJRyAuXFxuKy5TSCBFWEFNUExFU1xcbitUaGUgcHJvZ3JhbSBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIHVzZSBvZlxcbisuQlIgZmlsZV9zZXRhdHRyICgpXFxuK3RvIHNldCB0aGVcXG4rLkIgRlNfWEZMQUdfTk9EVU1QXFxuK2ZsYWcgb24gYSBmaWxlLlxcbisuUFxcbisuaW4gKzRuXFxuKy5FWFxcbisjaW5jbHVkZSBcXHUwMDNjZmNudGwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ZjbnRsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9mcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3RkaW8uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3N0ZGxpYi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3RyaW5nLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzeXMvc3lzY2FsbC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjdW5pc3RkLmhcXHUwMDNlXFxuK1xcbisjaWZuZGVmIFNZU19maWxlX2dldGF0dHJcXG4rI2RlZmluZSBTWVNfZmlsZV9nZXRhdHRyIDQ2N1xcbisjZW5kaWZcXG4rXFxuKyNpZm5kZWYgU1lTX2ZpbGVfc2V0YXR0clxcbisjZGVmaW5lIFNZU19maWxlX3NldGF0dHIgNDY4XFxuKyNlbmRpZlxcbitcXG4raW50XFxuK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4re1xcbisgICAgc3RydWN0IGZpbGVfYXR0ciBmYSA9IHsgMCB9O1xcbisgICAgaW50IGRmZDtcXG4rICAgIGxvbmcgcmV0O1xcbitcXG4rICAgIGlmIChhcmdjICE9IDIpIHtcXG4rICAgICAgICBmcHJpbnRmKHN0ZGVyciwgXFxcIlVzYWdlOiAlcyBcXHUwMDNjZmlsZW5hbWVcXHUwMDNlXFxcXFxcXFxuXFxcIiwgYXJndlswXSk7XFxuKyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xcbisgICAgfVxcbitcXG4rICAgIGRmZCA9IG9wZW4oYXJndlsxXSwgT19SRE9OTFkpO1xcbisgICAgaWYgKGRmZCA9PSBcXFxcLTEpIHtcXG4rICAgICAgICBwZXJyb3IoXFxcIm9wZW5cXFwiKTtcXG4rICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XFxuKyAgICB9XFxuK1xcbisgICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBkZmQsIFxcXCJcXFwiLCBcXHUwMDI2ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpO1xcbisgICAgaWYgKHJldCA9PSBcXFxcLTEpIHtcXG4rICAgICAgICBwZXJyb3IoXFxcImZpbGVfZ2V0YXR0clxcXCIpO1xcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcXG4rICAgIH1cXG4rXFxuKyAgICBwcmludGYoXFxcIkN1cnJlbnQgZmxhZ3M6IDB4JWxseFxcXFxcXFxcblxcXCIsICh1bnNpZ25lZCBsb25nIGxvbmcpZmEuZmFfeGZsYWdzKTtcXG4rXFxuKyAgICBmYS5mYV94ZmxhZ3MgfD0gRlNfWEZMQUdfTk9EVU1QO1xcbitcXG4rICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfc2V0YXR0ciwgZGZkLCBcXFwiXFxcIiwgXFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcXG4rICAgIGlmIChyZXQgPT0gXFxcXC0xKSB7XFxuKyAgICAgICAgcGVycm9yKFxcXCJmaWxlX3NldGF0dHJcXFwiKTtcXG4rICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XFxuKyAgICB9XFxuK1xcbisgICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBkZmQsIFxcXCJcXFwiLCBcXHUwMDI2ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpO1xcbisgICAgaWYgKHJldCA9PSBcXFxcLTEpIHtcXG4rICAgICAgICBwZXJyb3IoXFxcImZpbGVfZ2V0YXR0clxcXCIpO1xcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcXG4rICAgIH1cXG4rXFxuKyAgICBpZiAoZmEuZmFfeGZsYWdzIFxcdTAwMjYgRlNfWEZMQUdfTk9EVU1QKVxcbisgICAgICAgIHByaW50ZihcXFwiZmxhZ3MgMHglbGx4IChOT0RVTVAgZmxhZyBpcyBzZXQpXFxcXFxcXFxuXFxcIixcXG4rICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylmYS5mYV94ZmxhZ3MpO1xcbitcXG4rICAgIGV4aXQoRVhJVF9TVUNDRVNTKTtcXG4rfVxcbisuRUVcXG4rLmluXFxuKy5TSCBTRUUgQUxTT1xcbisuQlIgZmlsZV9nZXRhdHRyICgyKSxcXG4rLkJSIGlvY3RsICgyKSxcXG4rLkJSIGlvY3RsX2ZzICgyKSxcXG4rLkJSIG9wZW5hdCAoMiksXFxuKy5CUiBmaWxlX2F0dHIgKDJ0eXBlKSxcXG4rLkJSIHBhdGhfcmVzb2x1dGlvbiAoNylcXG5kaWZmIC0tZ2l0IGEvbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSBiL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGVcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmZkNDI2YzE5ZjVmMGJcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZVxcbkBAIC0wLDAgKzEsMTg3IEBAXFxuKy5cXFxcXFxcIiBDb3B5cmlnaHQsIHRoZSBhdXRob3JzIG9mIHRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdFxcbisuXFxcXFxcXCJcXG4rLlxcXFxcXFwiIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMaW51eC1tYW4tcGFnZXMtY29weWxlZnRcXG4rLlxcXFxcXFwiXFxuKy5USCBmaWxlX2F0dHIgMnR5cGUgKGRhdGUpIFxcXCJMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpXFxcIlxcbisuU0ggTkFNRVxcbitmaWxlX2F0dHIgXFxcXC0gZGVzY3JpYmUgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXMgdG8gZ2V0IG9yIHNldFxcbisuU0ggU1lOT1BTSVNcXG4rLkVYXFxuKy5CICNpbmNsdWRlIFxcdTAwM2NsaW51eC9mcy5oXFx1MDAzZVxcbisuUFxcbisuQiBzdHJ1Y3QgZmlsZV9hdHRyIHtcXG4rLkJSIFxcXCIgICAgdTY0ICBmYV94ZmxhZ3M7XFxcIiBcXFwiICAgICAvKiBFeHRlbmRlZCBmbGFncyAqL1xcXCJcXG4rLkJSIFxcXCIgICAgdTMyICBmYV9leHRzaXplO1xcXCIgXFxcIiAgICAvKiBFeHRlbnQgc2l6ZSBoaW50ICovXFxcIlxcbisuQlIgXFxcIiAgICB1MzIgIGZhX25leHRlbnRzO1xcXCIgXFxcIiAgIC8qIE51bWJlciBvZiBleHRlbnRzIChyZWFkLW9ubHkpICovXFxcIlxcbisuQlIgXFxcIiAgICB1MzIgIGZhX3Byb2ppZDtcXFwiIFxcXCIgICAgIC8qIFByb2plY3QgaWRlbnRpZmllciAqL1xcXCJcXG4rLkJSIFxcXCIgICAgdTMyICBmYV9jb3dleHRzaXplO1xcXCIgXFxcIiAvKiBDb1cgZXh0ZW50IHNpemUgaGludCAqL1xcXCJcXG4rLkIgfTtcXG4rLkVFXFxuKy5TSCBERVNDUklQVElPTlxcbitEZXNjcmliZXMgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXNcXG4rZm9yIHVzZSB3aXRoIHRoZVxcbisuQlIgZmlsZV9nZXRhdHRyICgyKVxcbithbmRcXG4rLkJSIGZpbGVfc2V0YXR0ciAoMilcXG4rc3lzdGVtIGNhbGxzLlxcbisuUFxcbitUaGUgZmllbGRzIGFyZSBhcyBmb2xsb3dzOlxcbisuVFBcXG4rLkkgZmFfeGZsYWdzXFxuK1RoaXMgZmllbGQgY29udGFpbnMgZmlsZSBhdHRyaWJ1dGUgZmxhZ3MuXFxuK0l0IGlzIGEgYml0IG1hc2sgY29uc2lzdGluZyBvZiB6ZXJvIG9yIG1vcmUgb2YgdGhlXFxuKy5CIEZTX1hGTEFHXypcXG4rZmxhZ3MuXFxuK1JlZmVyIHRvIHRoZSBzZWN0aW9uXFxuKy5CIEZMQUdTXFxuK2JlbG93IGZvciBhIGxpc3Qgb2YgYWxsIGZsYWdzLlxcbisuVFBcXG4rLkkgZmFfZXh0c2l6ZVxcbitFeHRlbnQgc2l6ZSBhbGxvY2F0b3IgaGludCBpbiBieXRlcy5cXG4rVGhpcyB2YWx1ZSBzdWdnZXN0cyBhIHByZWZlcnJlZCBleHRlbnQgc2l6ZVxcbitmb3IgbmV3IGFsbG9jYXRpb25zIHRvIHRoaXMgZmlsZS5cXG4rLlRQXFxuKy5JIGZhX25leHRlbnRzXFxuK051bWJlciBvZiBkYXRhIGV4dGVudHMgaW4gdGhlIGZpbGUgKHJlYWQtb25seSkuXFxuK1RoaXMgZmllbGQgaXMgZmlsbGVkIGluIGJ5XFxuKy5CUiBmaWxlX2dldGF0dHIgKDIpXFxuK2FuZCBpcyBpZ25vcmVkIGJ5XFxuKy5CUiBmaWxlX3NldGF0dHIgKDIpLlxcbisuVFBcXG4rLkkgZmFfcHJvamlkXFxuK1Byb2plY3QgaWRlbnRpZmllci5cXG4rVXNlZCBieSBxdW90YSBzeXN0ZW1zIHRvIGdyb3VwIHJlbGF0ZWQgZmlsZXMuXFxuKy5UUFxcbisuSSBmYV9jb3dleHRzaXplXFxuK0NvcHktb24tV3JpdGUgKENvVykgZXh0ZW50IHNpemUgaGludCBpbiBieXRlcy5cXG4rVGhpcyB2YWx1ZSBzdWdnZXN0cyBhIHByZWZlcnJlZCBleHRlbnQgc2l6ZVxcbitmb3IgQ29XIG9wZXJhdGlvbnMuXFxuKy5TSCBGTEFHU1xcbitGbGFncyBjYW4gYmU6XFxuKy5SU1xcbisuVFBcXG4rLkIgRlNfWEZMQUdfUkVBTFRJTUVcXG4rRGF0YSBpcyBzdG9yZWQgaW4gYSByZWFsdGltZSB2b2x1bWUuXFxuKy5UUFxcbisuQiBGU19YRkxBR19JTU1VVEFCTEVcXG4rRmlsZSBjYW5ub3QgYmUgbW9kaWZpZWQuXFxuKy5UUFxcbisuQiBGU19YRkxBR19BUFBFTkRcXG4rQWxsIHdyaXRlcyBtdXN0IGFwcGVuZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfU1lOQ1xcbitBbGwgd3JpdGVzIGFyZSBzeW5jaHJvbm91cy5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX05PQVRJTUVcXG4rRG8gbm90IHVwZGF0ZSBmaWxlIGFjY2VzcyB0aW1lIG9uIHJlYWRzLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfTk9EVU1QXFxuK0RvIG5vdCBpbmNsdWRlIGZpbGUgaW4gYmFja3Vwcy5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX0RBWFxcbitVc2UgRGlyZWN0IEFjY2VzcyAoREFYKSBmb3IgSS9PIG9wZXJhdGlvbnMuXFxuKy5UUFxcbisuQiBGU19YRkxBR19OT0RFRlJBR1xcbitFeGNsdWRlIHRoaXMgZmlsZSBmcm9tIGRlZnJhZ21lbnRhdGlvbiBvcGVyYXRpb25zLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfRklMRVNUUkVBTVxcbitVc2UgZmlsZXN0cmVhbSBhbGxvY2F0b3IgZm9yIHRoaXMgZmlsZS5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX0VYVFNJWkVcXG4rVXNlIHRoZSBleHRlbnQgc2l6ZSBoaW50IGZyb20gdGhlXFxuKy5JIGZhX2V4dHNpemVcXG4rZmllbGQuXFxuKy5UUFxcbisuQiBGU19YRkxBR19DT1dFWFRTSVpFXFxuK1VzZSB0aGUgQ29XIGV4dGVudCBzaXplIGhpbnQgZnJvbSB0aGVcXG4rLkkgZmFfY293ZXh0c2l6ZVxcbitmaWVsZC5cXG4rLlJFXFxuKy5QXFxuK0RpcmVjdG9yeSBvbmx5IGZsYWdzOlxcbisuUlNcXG4rLlRQXFxuKy5CIEZTX1hGTEFHX1JUSU5IRVJJVFxcbitOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSByZWFsdGltZSBmbGFnLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfTk9TWU1MSU5LU1xcbitEaXNhbGxvdyBjcmVhdGlvbiBvZiBzeW1ib2xpYyBsaW5rcyBpbiB0aGlzIGRpcmVjdG9yeS5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX0VYVFNaSU5IRVJJVFxcbitOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSBleHRlbnQgc2l6ZSBoaW50LlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfUFJPSklOSEVSSVRcXG4rTmV3IGZpbGVzIGNyZWF0ZWQgaW4gdGhpcyBkaXJlY3RvcnkgaW5oZXJpdCB0aGUgcHJvamVjdCBpZGVudGlmaWVyLlxcbisuUkVcXG4rLlBcXG4rVGhlIGZvbGxvd2luZyBmbGFncyBhcmUgcmVhZC1vbmx5OlxcbisuUlNcXG4rLlRQXFxuKy5CIEZTX1hGTEFHX1BSRUFMTE9DXFxuK0ZpbGUgaGFzIHByZWFsbG9jYXRlZCBleHRlbnRzLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfSEFTQVRUUlxcbitGaWxlIGhhcyBleHRlbmRlZCBhdHRyaWJ1dGVzLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfVkVSSVRZXFxuK0ZpbGUgaGFzIGZzLXZlcml0eSBlbmFibGVkLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfQ0FTRUZPTERcXG4rVGhlIGZpbGVzeXN0ZW0gcGVyZm9ybXMgY2FzZS1pbnNlbnNpdGl2ZSBsb29rdXBzIChmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZVxcbitjb21wYXJpc29ucyBpZ25vcmUgY2FzZSkuXFxuKy5UUFxcbisuQiBGU19YRkxBR19DQVNFTk9OUFJFU0VSVklOR1xcbitUaGUgZmlsZXN5c3RlbSBkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUgY2FzZSBvZiBmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZXMuXFxuKy5SRVxcbisuUFxcbitOb3QgYWxsIGZpbGVzeXN0ZW1zIHN1cHBvcnQgYWxsIGZsYWdzLlxcbitTZXR0aW5nIHVuc3VwcG9ydGVkIGZsYWdzIG1heSByZXN1bHQgaW4gYW5cXG4rLkIgRUlOVkFMXFxuK29yXFxuKy5CIEVPUE5PVFNVUFBcXG4rZXJyb3IuXFxuKy5TSCBWRVJTSU9OU1xcbisuU1MgU3RydWN0dXJlIHNpemVcXG4rVGhlIHN0cnVjdHVyZSBzaXplIGlzIGRlZmluZWQgYnlcXG4rLkIgRklMRV9BVFRSX1NJWkVfVkVSKlxcbit3aGljaCBpcyBhbHNvIGEgdmVyc2lvbiBvZiB0aGUgc3RydWN0dXJlIGJlaW5nIHVzZWQuXFxuK1RoZVxcbisuSSBzaXplXFxuK3BhcmFtZXRlciBwYXNzZWQgdG9cXG4rLkJSIGZpbGVfZ2V0YXR0ciAoMilcXG4rYW5kXFxuKy5CUiBmaWxlX3NldGF0dHIgKDIpXFxuK2luZGljYXRlcyB0aGUgdmVyc2lvbiBvZlxcbisuSSBzdHJ1Y3QgZmlsZV9hdHRyXFxcXGZQLlxcbisuU1MgRklMRV9BVFRSX1NJWkVfVkVSMFxcbitTaXplIGlzIDI0IGJ5dGVzLlxcbisuU0ggSElTVE9SWVxcbisuU1MgTGludXggdjYuMTdcXG4rVGhpcyBzdHJ1Y3R1cmUgaXMgaW50cm9kdWNlZC5cXG4rVGhlXFxuKy5JIHN0cnVjdCBmaWxlX2F0dHJcXG4rcHJvdmlkZXMgc2ltaWxhciBmdW5jdGlvbmFsaXR5IHRvXFxuKy5JIHN0cnVjdCBmc3hhdHRyXFxuK3VzZWQgYnkgdGhlXFxuKy5CIEZTX0lPQ19GU0dFVFhBVFRSXFxuK2FuZFxcbisuQiBGU19JT0NfRlNTRVRYQVRUUlxcbisuQlIgaW9jdGwgKDIpXFxuK29wZXJhdGlvbnMsXFxuK2J1dCBpcyBkZXNpZ25lZCB0byBiZSBleHRlbnNpYmxlIHRocm91Z2ggdGhlXFxuKy5JIHNpemVcXG4rcGFyYW1ldGVyIG9mIHRoZSBzeXN0ZW0gY2FsbHMuXFxuKy5QXFxuK0V4dHJhIGZpZWxkcyBtYXkgYmUgYXBwZW5kZWQgdG8gdGhlIHN0cnVjdHVyZSBpbiBmdXR1cmUga2VybmVsIHZlcnNpb25zLlxcbitUaGUga2VybmVsIHdpbGwgZXhwZWN0IG5ldyBmaWVsZHMgdG8gYmUgemVyb3NcXG4rZm9yIG9sZGVyIHZlcnNpb25zIG9mIHRoZSBzdHJ1Y3R1cmUuXFxuK1RoZXJlZm9yZSwgYSB1c2VyXFxuKy5JIG11c3RcXG4remVyby1maWxsIHRoZSBzdHJ1Y3R1cmUgb24gaW5pdGlhbGl6YXRpb24gdG8ga2VlcCBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXJcXG4ra2VybmVscy5cXG4rLlNTIExpbnV4IHY3LjJcXG4rVGhlIEZTX1hGTEFHX0NBU0VGT0xEIGFuZCBGU19YRkxBR19DQVNFTk9OUFJFU0VSVklORyBhcmUgaW50cm9kdWNlZCB0byBlbmFibGVcXG4rdXBwZXIgbGF5ZXJzLCBzdWNoIGFzIE5GU0QsIHRvIHJldHJpZXZlIGNhc2Ugc2Vuc2l0aXZpdHkgaW5mb3JtYXRpb24uXFxuKy5TSCBTRUUgQUxTT1xcbisuQlIgZmlsZV9nZXRhdHRyICgyKSxcXG4rLkJSIGZpbGVfc2V0YXR0ciAoMilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6NDc6MzUuMzM5OTMxNzg2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo5MzcyMzI2MTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgb25seSBhZGRzIHVzZXItc3BhY2UgbWFuLXBhZ2UgZG9jdW1lbnRhdGlvbiBmaWxlcyB1bmRlciB0aGUgbWFuLyBkaXJlY3RvcnkgKG1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLCBtYW4vbWFuMi9maWxlX3NldGF0dHIuMiwgYW5kIG1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUpIGFuZCBkb2VzIG5vdCBtb2RpZnkgYW55IGV4ZWN1dGFibGUga2VybmVsIHNvdXJjZSBjb2RlIG9yIGRhdGEgc3RydWN0dXJlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjA0N2RhZDAxMDU3ODY4OWUyZTZlMDQ4YzdlM2NiYWU2YTZkOGNkZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDcgMTc6NDc6MzIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tYW4vbWFuMi9maWxlX2dldGF0dHIuMiBiL21hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uZjFhZWMyYWQ4YzQyNVxuLS0tIC9kZXYvbnVsbFxuKysrIGIvbWFuL21hbjIvZmlsZV9nZXRhdHRyLjJcbkBAIC0wLDAgKzEsMjg2IEBAXG4rLlxcXCIgQ29weXJpZ2h0LCB0aGUgYXV0aG9ycyBvZiB0aGUgTGludXggbWFuLXBhZ2VzIHByb2plY3RcbisuXFxcIlxuKy5cXFwiIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMaW51eC1tYW4tcGFnZXMtY29weWxlZnRcbisuXFxcIlxuKy5USCBmaWxlX2dldGF0dHIgMiAoZGF0ZSkgXCJMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpXCJcbisuU0ggTkFNRVxuK2ZpbGVfZ2V0YXR0ciBcXC0gZ2V0IGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlc1xuKy5TSCBTWU5PUFNJU1xuKy5uZlxuKy5CUiBcIiNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZjbnRsLmhcdTAwM2VcIiBcIiAgICAgIC8qIFwiIEFUXyogXCIgY29uc3RhbnRzICovXCJcbisuQlIgXCIjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXCIgXCIgICAgICAgICAvKiBzdHJ1Y3QgXCIgZmlsZV9hdHRyIFwiIGFuZCBcIiBGU19YRkxBR18qIFwiIGNvbnN0YW50cyAqL1wiXG4rLkJSIFwiI2luY2x1ZGUgXHUwMDNjc3lzL3N5c2NhbGwuaFx1MDAzZVwiIFwiICAgICAgLyogXCIgU1lTXyogXCIgY29uc3RhbnRzICovXCJcbisuQiAjaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxuKy5QXG4rLkIgbG9uZyBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsXG4rLkJJIFwiICAgICAgICAgICAgICAgaW50IFwiIGRpcmZkIFwiLCBjb25zdCBjaGFyICpcIiBwYXRobmFtZSAsXG4rLkJJIFwiICAgICAgICAgICAgICAgc3RydWN0IGZpbGVfYXR0ciAqXCIgZmF0dHIgXCIsIHNpemVfdCBcIiBzaXplICxcbisuQkkgXCIgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgXCIgZmxhZ3MgKTtcbisuZmlcbisuUFxuKy5JUiBOb3RlIDpcbitnbGliYyBwcm92aWRlcyBubyB3cmFwcGVyIGZvclxuKy5CUiBmaWxlX2dldGF0dHIgKCksXG4rdXNlXG4rLkJSIHN5c2NhbGwgKDIpXG4raW5zdGVhZC5cbisuU0ggREVTQ1JJUFRJT05cbitUaGVcbisuQlIgZmlsZV9nZXRhdHRyICgpXG4rc3lzdGVtIGNhbGwgcmV0cmlldmVzIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzXG4rZnJvbSB0aGUgZmlsZSBzcGVjaWZpZWQgYnlcbisuSVIgcGF0aG5hbWUgLlxuKy5QXG4rVGhpcyBzeXN0ZW0gY2FsbCBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gdGhlXG4rLkIgRlNfSU9DX0ZTR0VUWEFUVFJcbisuQlIgaW9jdGwgKDIpXG4rb3BlcmF0aW9uLFxuK2J1dCB3aXRoIHRoZSBhZHZhbnRhZ2UgdGhhdCB0aGUgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGJlIG9wZW5lZC5cbitCeSB1c2luZyBhIHBhdGhuYW1lLFxuKy5CUiBmaWxlX2dldGF0dHIgKClcbitjYW4gcmV0cmlldmUgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXNcbitmcm9tIGFsbCBmaWxlIHR5cGVzLFxuK2luY2x1ZGluZyBzcGVjaWFsIGZpbGVzIHN1Y2ggYXMgRklGT3MsIHNvY2tldHMsIGJsb2NrIGRldmljZXMsIGNoYXJhY3RlclxuK2RldmljZXMsIGFuZCBzeW1saW5rcywgd2hlcmUgb3BlbmluZyB0YXJnZXRlZCBpbm9kZSBtYXkgbm90IGJlIHBvc3NpYmxlLlxuKy5QXG4rQXMgd2l0aFxuKy5CUiBvcGVuYXQgKDIpLFxuK2lmXG4rLkkgcGF0aG5hbWVcbitpcyByZWxhdGl2ZSxcbit0aGVuIGl0IGlzIGludGVycHJldGVkIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnlcbityZWZlcnJlZCB0byBieSB0aGUgZmlsZSBkZXNjcmlwdG9yXG4rLklSIGRpcmZkIC5cbitUaGUgc3BlY2lhbCB2YWx1ZVxuKy5CIEFUX0ZEQ1dEXG4rY291bGQgYmUgdXNlZCB0byByZWZlciB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvZiB0aGUgY2FsbGluZyBwcm9jZXNzLlxuK0lmXG4rLkkgcGF0aG5hbWVcbitpcyBhYnNvbHV0ZSxcbit0aGVuXG4rLkkgZGlyZmRcbitpcyBpZ25vcmVkLlxuKy5QXG4rVGhlXG4rLkkgZmF0dHJcbithcmd1bWVudCBpcyBhIHBvaW50ZXIgdG8gYVxuKy5JIGZpbGVfYXR0clxuK3N0cnVjdHVyZS5cbitUaGlzIHN0cnVjdHVyZSB3aWxsIGJlIGZpbGxlZCB3aXRoIGZpbGUgYXR0cmlidXRlcy5cbitUaGlzIHN0cnVjdHVyZSBpcyBkZXNjcmliZWQgaW5cbisuQlIgZmlsZV9hdHRyKDJ0eXBlKSAuXG4rLlBcbitUaGVcbisuSSBzaXplXG4rYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgcG9pbnRlZCB0byBieVxuKy5JUiBmYXR0ciAuXG4rVGhlIHNpemUgaW5kaWNhdGVzIHZlcnNpb24gb2YgdGhlIHN0cnVjdHVyZSBpbiB1c2UsIHJlZmVyIHRvXG4rLkIgZmlsZV9hdHRyKDJ0eXBlKVxuK2ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHZlcnNpb25pbmcuXG4rLlBcbitVc2Vyc3BhY2UgYXBwbGljYXRpb25zIHNob3VsZCB6ZXJvLWluaXRpYWxpemVcbisuSSBzdHJ1Y3QgZmlsZV9hdHRyXG4rYmVmb3JlIGNhbGxpbmdcbisuQlIgZmlsZV9nZXRhdHRyICgpXG4rdG8gZW5zdXJlIHRoYXQgZmllbGRzIG5vdCBmaWxsZWQgaW4gYnkgb2xkZXIga2VybmVsc1xuK3dpbGwgaGF2ZSBwcmVkaWN0YWJsZSB2YWx1ZXMuXG4rLlBcbitUaGVcbisuSSBmbGFnc1xuK2FyZ3VtZW50IGlzIGEgYml0IG1hc2ssIGF2YWlsYWJsZSBmbGFncyBhcmU6XG4rLlRQXG4rLkIgQVRfRU1QVFlfUEFUSFxuK0lmXG4rLkkgcGF0aG5hbWVcbitpcyBhbiBlbXB0eSBzdHJpbmcsXG4rb3BlcmF0ZSBvbiB0aGUgZmlsZSByZWZlcnJlZCB0byBieVxuKy5JUiBkaXJmZCAuXG4rSW4gdGhpcyBjYXNlLFxuKy5JIGRpcmZkXG4rY2FuIHJlZmVyIHRvIGFueSB0eXBlIG9mIGZpbGUsXG4rbm90IGp1c3QgYSBkaXJlY3RvcnkuXG4rSWZcbisuSSBkaXJmZFxuK2lzXG4rLkJSIEFUX0ZEQ1dEICxcbit0aGUgY2FsbCBmYWlscyB3aXRoIHRoZSBlcnJvclxuKy5CUiBFQkFERiAuXG4rLlRQXG4rLkIgQVRfU1lNTElOS19OT0ZPTExPV1xuK0lmXG4rLkkgcGF0aG5hbWVcbitpcyBhIHN5bWJvbGljIGxpbmssXG4rZG8gbm90IGRlcmVmZXJlbmNlIGl0O1xuK2luc3RlYWQgZ2V0IGF0dHJpYnV0ZXMgb2YgdGhlIHN5bWJvbGljIGxpbmsgaW5vZGUgaXRzZWxmLlxuK0J5IGRlZmF1bHQsIHN5bWJvbGljIGxpbmtzIGFyZSBkZXJlZmVyZW5jZWQuXG4rLlNIIFJFVFVSTiBWQUxVRVxuK09uIHN1Y2Nlc3MsXG4remVybyBpcyByZXR1cm5lZC5cbitPbiBlcnJvcixcbitcXC0xIGlzIHJldHVybmVkLFxuK2FuZFxuKy5JIGVycm5vXG4raXMgc2V0IHRvIGluZGljYXRlIHRoZSBlcnJvci5cbisuU0ggRVJST1JTXG4rLlRQXG4rLkIgRTJCSUdcbisuSSBzaXplXG4raXMgdG9vIGJpZyAobGFyZ2VyIHRoYW5cbisuQlIgUEFHRV9TSVpFICkuXG4rLlRQXG4rLkIgRUFDQ0VTXG4rU2VhcmNoIHBlcm1pc3Npb24gaXMgZGVuaWVkIGZvciBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzXG4raW4gdGhlIHBhdGggcHJlZml4IG9mXG4rLklSIHBhdGhuYW1lIC5cbisuVFBcbisuQiBFQkFERlxuKy5JIHBhdGhuYW1lXG4raXMgcmVsYXRpdmUgYnV0XG4rLkkgZGlyZmRcbitpcyBuZWl0aGVyXG4rLkIgQVRfRkRDV0Rcbitub3IgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IuXG4rLlRQXG4rLkIgRUJBREZcbisuSSBwYXRobmFtZVxuK2lzIGFuIGVtcHR5IHN0cmluZyxcbisuQiBBVF9FTVBUWV9QQVRIXG4rd2FzIHNwZWNpZmllZCxcbitidXRcbisuSSBkaXJmZFxuK2lzIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLlxuKy5UUFxuKy5CIEVGQVVMVFxuKy5JIHBhdGhuYW1lXG4rb3JcbisuSSBmYXR0clxuK2lzIGFuIGludmFsaWQgcG9pbnRlci5cbisuVFBcbisuQiBFSU5WQUxcbitJbnZhbGlkIGZsYWcgc3BlY2lmaWVkIGluXG4rLklSIGZsYWdzIC5cbisuVFBcbisuQiBFSU5WQUxcbisuSSBzaXplXG4raXMgc21hbGxlciB0aGFuXG4rLkJSIEZJTEVfQVRUUl9TSVpFX1ZFUjAgLlxuKy5UUFxuKy5CIEVMT09QXG4rVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQgd2hpbGUgcmVzb2x2aW5nXG4rLklSIHBhdGhuYW1lIC5cbisuVFBcbisuQiBFTkFNRVRPT0xPTkdcbisuSSBwYXRobmFtZVxuK2lzIHRvbyBsb25nLlxuKy5UUFxuKy5CIEVOT0VOVFxuK0EgY29tcG9uZW50IG9mXG4rLkkgcGF0aG5hbWVcbitkb2VzIG5vdCBleGlzdCxcbitvclxuKy5JIHBhdGhuYW1lXG4raXMgYW4gZW1wdHkgc3RyaW5nIGFuZFxuKy5CIEFUX0VNUFRZX1BBVEhcbit3YXMgbm90IHNwZWNpZmllZCBpblxuKy5JUiBmbGFncyAuXG4rLlRQXG4rLkIgRU5PTUVNXG4rSW5zdWZmaWNpZW50IGtlcm5lbCBtZW1vcnkgd2FzIGF2YWlsYWJsZS5cbisuVFBcbisuQiBFTk9URElSXG4rQSBjb21wb25lbnQgb2YgdGhlIHBhdGggcHJlZml4IG9mXG4rLkkgcGF0aG5hbWVcbitpcyBub3QgYSBkaXJlY3Rvcnkgb3IsXG4rLkkgcGF0aG5hbWVcbitpcyByZWxhdGl2ZSBhbmRcbisuSSBkaXJmZFxuK2lzIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVycmluZyB0byBhIGZpbGUgb3RoZXIgdGhhbiBhIGRpcmVjdG9yeS5cbisuVFBcbisuQiBFT1BOT1RTVVBQXG4rVGhlIGZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBnZXR0aW5nIGF0dHJpYnV0ZXMgb24gdGhpcyB0eXBlIG9mIGlub2RlLlxuKy5TSCBISVNUT1JZXG4rLlNTIExpbnV4IDYuMTdcbitUaGlzIHN5c3RlbSBjYWxsIGlzIGludHJvZHVjZWQgYXMgYSBtb3JlIGZsZXhpYmxlIGFsdGVybmF0aXZlIHRvIHRoZVxuK0ZTX0lPQ19GU0dFVFhBVFRSXG4rLkJSIGlvY3RsICgyKVxuK3doaWNoIGNvdWxkIHdvcmsgb24gYW55IHR5cGUgb2YgZmlsZXMuXG4rLlNIIE5PVEVTXG4rVGhpcyBzeXN0ZW0gY2FsbCBpcyBkZXNpZ25lZCB0byBiZSBleHRlbnNpYmxlLlxuK1RoZVxuKy5JIHNpemVcbithcmd1bWVudCBhbGxvd3MgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucyB0byBpbmRpY2F0ZVxuK3doaWNoIHZlcnNpb24gb2YgdGhlXG4rLkkgZmlsZV9hdHRyXG4rc3RydWN0dXJlIHRoZXkgYXJlIHVzaW5nLFxuK2VuYWJsaW5nIHRoZSBrZXJuZWwgdG8gc3VwcG9ydCBib3RoIG9sZCBhbmQgbmV3IHZlcnNpb25zXG4rb2YgdGhlIHN0cnVjdHVyZSBzaW11bHRhbmVvdXNseS5cbisuUFxuK0lmXG4rLkkgc2l6ZVxuK2lzIHNtYWxsZXIgdGhhbiB0aGUgc3RydWN0dXJlIHNpemUgdGhlIGtlcm5lbCBleHBlY3RzLFxuK29ubHkgdGhlIGZpZWxkcyB0aGF0IGZpdCB3aXRoaW5cbisuSSBzaXplXG4rd2lsbCBiZSBmaWxsZWQgaW4uXG4rSWZcbisuSSBzaXplXG4raXMgbGFyZ2VyIHRoYW4gdGhlIGtlcm5lbCdzIHN0cnVjdHVyZSBzaXplLFxuK3RoZSBleHRyYSBieXRlcyBhcmUgemVyb2VkLlxuKy5TSCBFWEFNUExFU1xuK1RoZSBwcm9ncmFtIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mXG4rLkJSIGZpbGVfZ2V0YXR0ciAoKVxuK3RvIHJldHJpZXZlIGFuZCBkaXNwbGF5IGZpbGUgYXR0cmlidXRlcy5cbisuUFxuKy5pbiArNG5cbisuRVhcbisjaW5jbHVkZSBcdTAwM2NmY250bC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZnMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3N0ZGlvLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzdGRsaWIuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxuK1xuKyNpZm5kZWYgU1lTX2ZpbGVfZ2V0YXR0clxuKyNkZWZpbmUgU1lTX2ZpbGVfZ2V0YXR0ciA0NjdcbisjZW5kaWZcbitcbitpbnRcbittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4re1xuKyAgICBzdHJ1Y3QgZmlsZV9hdHRyIGZhID0geyAwIH07XG4rICAgIGludCBkZmQ7XG4rICAgIGxvbmcgcmV0O1xuK1xuKyAgICBpZiAoYXJnYyAhPSAyKSB7XG4rICAgICAgICBmcHJpbnRmKHN0ZGVyciwgXCJVc2FnZTogJXMgXHUwMDNjZmlsZW5hbWVcdTAwM2VcXFxcblwiLCBhcmd2WzBdKTtcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbisgICAgfVxuK1xuKyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIEFUX0ZEQ1dELCBhcmd2WzFdLCBcdTAwMjZmYSwgc2l6ZW9mKGZhKSwgMCk7XG4rICAgIGlmIChyZXQgPT0gXFwtMSkge1xuKyAgICAgICAgcGVycm9yKFwiZmlsZV9nZXRhdHRyXCIpO1xuKyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xuKyAgICB9XG4rXG4rICAgIHByaW50ZihcIkZpbGUgYXR0cmlidXRlczpcXFxcblwiKTtcbisgICAgcHJpbnRmKFwiICB4ZmxhZ3M6ICAgICAweCVsbHhcXFxcblwiLCAodW5zaWduZWQgbG9uZyBsb25nKWZhLmZhX3hmbGFncyk7XG4rICAgIHByaW50ZihcIiAgZXh0c2l6ZTogICAgJXVcXFxcblwiLCBmYS5mYV9leHRzaXplKTtcbisgICAgcHJpbnRmKFwiICBuZXh0ZW50czogICAldVxcXFxuXCIsIGZhLmZhX25leHRlbnRzKTtcbisgICAgcHJpbnRmKFwiICBwcm9qaWQ6ICAgICAldVxcXFxuXCIsIGZhLmZhX3Byb2ppZCk7XG4rICAgIHByaW50ZihcIiAgY293ZXh0c2l6ZTogJXVcXFxcblwiLCBmYS5mYV9jb3dleHRzaXplKTtcbitcbisgICAgLypcbisgICAgICogVHJ5IHNldHRpbmcgTk9EVU1QIGZsYWcgd2l0aCBjaGF0dHIgK2QgLi9mb28gdG8gc2VlIHRoZSBkaWZmZXJlbmNlXG4rICAgICAqL1xuKyAgICBpZiAoZmEuZmFfeGZsYWdzIFx1MDAyNiBGU19YRkxBR19OT0RVTVApXG4rICAgICAgICBwcmludGYoXCIgIE5PRFVNUCBmbGFnIGlzIHNldFxcXFxuXCIpO1xuK1xuKyAgICBleGl0KEVYSVRfU1VDQ0VTUyk7XG4rfVxuKy5FRVxuKy5pblxuKy5TSCBTRUUgQUxTT1xuKy5CUiBmaWxlX3NldGF0dHIgKDIpLFxuKy5CUiBmaWxlX2F0dHIgKDJ0eXBlKSxcbisuQlIgaW9jdGwgKDIpLFxuKy5CUiBpb2N0bF9mcyAoMiksXG4rLkJSIG9wZW5hdCAoMilcbmRpZmYgLS1naXQgYS9tYW4vbWFuMi9maWxlX3NldGF0dHIuMiBiL21hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNTk2NzUwZGM3OWM4MVxuLS0tIC9kZXYvbnVsbFxuKysrIGIvbWFuL21hbjIvZmlsZV9zZXRhdHRyLjJcbkBAIC0wLDAgKzEsMzQwIEBAXG4rLlxcXCIgQ29weXJpZ2h0LCB0aGUgYXV0aG9ycyBvZiB0aGUgTGludXggbWFuLXBhZ2VzIHByb2plY3RcbisuXFxcIlxuKy5cXFwiIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMaW51eC1tYW4tcGFnZXMtY29weWxlZnRcbisuXFxcIlxuKy5USCBmaWxlX3NldGF0dHIgMiAoZGF0ZSkgXCJMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpXCJcbisuU0ggTkFNRVxuK2ZpbGVfc2V0YXR0ciBcXC0gc2V0IGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlc1xuKy5TSCBTWU5PUFNJU1xuKy5uZlxuKy5CUiBcIiNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZjbnRsLmhcdTAwM2VcIiBcIiAgICAgIC8qIERlZmluaXRpb24gb2YgXCIgQVRfKiBcIiBjb25zdGFudHMgKi9cIlxuKy5CUiBcIiNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzLmhcdTAwM2VcIiBcIiAgICAgICAgIC8qIERlZmluaXRpb24gb2YgXCIgRklMRV9BVFRSXyogXFxcbitcIiBhbmQgXCIgRlNfWEZMQUdfKiBcIiBjb25zdGFudHMgKi9cIlxuKy5CUiBcIiNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcIiBcIiAgICAgIC8qIERlZmluaXRpb24gb2YgXCIgU1lTXyogXCIgY29uc3RhbnRzICovXCJcbisuQiAjaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxuKy5QXG4rLkIgbG9uZyBzeXNjYWxsKFNZU19maWxlX3NldGF0dHIsXG4rLkJJIFwiICAgICAgICAgICAgICAgaW50IFwiIGRpcmZkIFwiLCBjb25zdCBjaGFyICpcIiBwYXRobmFtZSAsXG4rLkJJIFwiICAgICAgICAgICAgICAgc3RydWN0IGZpbGVfYXR0ciAqXCIgZmF0dHIgXCIsIHNpemVfdCBcIiBzaXplICxcbisuQkkgXCIgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgXCIgZmxhZ3MgKTtcbisuZmlcbisuUFxuKy5JUiBOb3RlIDpcbitnbGliYyBwcm92aWRlcyBubyB3cmFwcGVyIGZvclxuKy5CUiBmaWxlX3NldGF0dHIgKCksXG4rbmVjZXNzaXRhdGluZyB0aGUgdXNlIG9mXG4rLkJSIHN5c2NhbGwgKDIpLlxuKy5TSCBERVNDUklQVElPTlxuK1RoZVxuKy5CUiBmaWxlX3NldGF0dHIgKClcbitzeXN0ZW0gY2FsbCBzZXRzIGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlc1xuK29uIHRoZSBmaWxlIHNwZWNpZmllZCBieVxuKy5JUiBwYXRobmFtZSAuXG4rLlBcbitUaGlzIHN5c3RlbSBjYWxsIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byB0aGVcbisuQiBGU19JT0NfRlNTRVRYQVRUUlxuKy5CUiBpb2N0bCAoMilcbitvcGVyYXRpb24sXG4rYnV0IHdpdGggdGhlIGFkdmFudGFnZSB0aGF0IHRoZSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gYmUgb3BlbmVkLlxuK0J5IHVzaW5nIGEgcGF0aG5hbWUgaW5zdGVhZCBvZiByZXF1aXJpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IsXG4rLkJSIGZpbGVfc2V0YXR0ciAoKVxuK2NhbiBtYW5pcHVsYXRlIGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlc1xuK29uIGFsbCBmaWxlIHR5cGVzLFxuK2luY2x1ZGluZyBzcGVjaWFsIGZpbGVzIChGSUZPcywgc29ja2V0cywgYmxvY2sgZGV2aWNlcywgY2hhcmFjdGVyIGRldmljZXMpXG4rd2hlcmUgb3BlbmluZyB0aGUgZmlsZSBtYXkgaGF2ZSBzaWRlIGVmZmVjdHMgb3IgbWF5IG5vdCBiZSBwb3NzaWJsZS5cbitXaXRoXG4rLkJSIGlvY3RsICgyKSxcbitpdCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIG9idGFpbiBhIGZpbGUgZGVzY3JpcHRvciB0aGF0IHJlZmVyc1xuK2RpcmVjdGx5IHRvIHRoZSBmaWxlc3lzdGVtIGlub2RlIGZvciBzcGVjaWFsIGZpbGVzLlxuKy5QXG4rQXMgd2l0aFxuKy5CUiBvcGVuYXQgKDIpLFxuK2lmXG4rLkkgcGF0aG5hbWVcbitpcyByZWxhdGl2ZSxcbit0aGVuIGl0IGlzIGludGVycHJldGVkIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnlcbityZWZlcnJlZCB0byBieSB0aGUgZmlsZSBkZXNjcmlwdG9yXG4rLkkgZGlyZmRcbisob3IgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb2YgdGhlIGNhbGxpbmcgcHJvY2VzcyxcbitpZlxuKy5JIGRpcmZkXG4raXMgdGhlIHNwZWNpYWwgdmFsdWVcbisuQlIgQVRfRkRDV0QgKS5cbitJZlxuKy5JIHBhdGhuYW1lXG4raXMgYWJzb2x1dGUsXG4rdGhlblxuKy5JIGRpcmZkXG4raXMgaWdub3JlZC5cbisuUFxuK1RoZVxuKy5JIGZhdHRyXG4rYXJndW1lbnQgaXMgYSBwb2ludGVyIHRvIGFcbisuSSBmaWxlX2F0dHJcbitzdHJ1Y3R1cmUsXG4rd2hpY2ggc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGVzIHRvIHNldCBvbiB0aGUgZmlsZS5cbitUaGlzIHN0cnVjdHVyZSBpcyBkZXNjcmliZWQgaW5cbisuQlIgZmlsZV9hdHRyICgydHlwZSkuXG4rLlBcbitUaGVcbisuSSBzaXplXG4rYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgcG9pbnRlZCB0byBieVxuKy5JUiBmYXR0ciAuXG4rVGhlIHNpemUgaW5kaWNhdGVzIHZlcnNpb24gb2YgdGhlIHN0cnVjdHVyZSBpbiB1c2UsIHJlZmVyIHRvXG4rLkIgZmlsZV9hdHRyKDJ0eXBlKVxuK2ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHZlcnNpb25pbmcuXG4rLlBcbitVc2VyLXNwYWNlIGFwcGxpY2F0aW9ucyBzaG91bGQgemVyby1pbml0aWFsaXplXG4rLkkgc3RydWN0IGZpbGVfYXR0clxuK3RvIGVuc3VyZSB0aGF0IGZ1dHVyZSBmaWVsZHMgYWRkZWQgdG8gdGhlIHN0cnVjdHVyZVxuK3dpbGwgYmUgdHJlYXRlZCBhcyBuby1vcHMgaWYgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIGlzIHVwZGF0ZWRcbitidXQgdGhlIGFwcGxpY2F0aW9uIGlzIG5vdC5cbisuUFxuK1RoZVxuKy5JIGZsYWdzXG4rYXJndW1lbnQgaXMgYSBiaXQgbWFzayB0aGF0IGNhbiBpbmNsdWRlIHplcm8gb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcbisuVFBcbisuQiBBVF9FTVBUWV9QQVRIXG4rSWZcbisuSSBwYXRobmFtZVxuK2lzIGFuIGVtcHR5IHN0cmluZyxcbitvcGVyYXRlIG9uIHRoZSBmaWxlIHJlZmVycmVkIHRvIGJ5XG4rLkkgZGlyZmRcbisod2hpY2ggbWF5IGhhdmUgYmVlbiBvYnRhaW5lZCB1c2luZyB0aGVcbisuQlIgb3BlbiAoMilcbisuQiBPX1BBVEhcbitmbGFnKS5cbitJbiB0aGlzIGNhc2UsXG4rLkkgZGlyZmRcbitjYW4gcmVmZXIgdG8gYW55IHR5cGUgb2YgZmlsZSxcbitub3QganVzdCBhIGRpcmVjdG9yeS5cbitJZlxuKy5JIGRpcmZkXG4raXNcbisuQlIgQVRfRkRDV0QgLFxuK3RoZSBjYWxsIGZhaWxzIHdpdGggdGhlIGVycm9yXG4rLkJSIEVCQURGIC5cbisuVFBcbisuQiBBVF9TWU1MSU5LX05PRk9MTE9XXG4rSWZcbisuSSBwYXRobmFtZVxuK2lzIGEgc3ltYm9saWMgbGluayxcbitkbyBub3QgZGVyZWZlcmVuY2UgaXQ6XG4raW5zdGVhZCBzZXQgYXR0cmlidXRlcyBvbiB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYuXG4rQnkgZGVmYXVsdCAoaS5lLiwgaWYgdGhpcyBmbGFnIGlzIG5vdCBzcGVjaWZpZWQpLFxuK3N5bWJvbGljIGxpbmtzIGFyZSBkZXJlZmVyZW5jZWQuXG4rLlNIIFJFVFVSTiBWQUxVRVxuK09uIHN1Y2Nlc3MsXG4remVybyBpcyByZXR1cm5lZC5cbitPbiBlcnJvcixcbitcXC0xIGlzIHJldHVybmVkLFxuK2FuZFxuKy5JIGVycm5vXG4raXMgc2V0IHRvIGluZGljYXRlIHRoZSBlcnJvci5cbisuU0ggRVJST1JTXG4rLlRQXG4rLkIgRTJCSUdcbisuSSBzaXplXG4raXMgbGFyZ2VyIHRoYW5cbisuQlIgUEFHRV9TSVpFIC5cbisuVFBcbisuQiBFMkJJR1xuKy5JIHNpemVcbitpbmRpY2F0ZXMgdGhlIHZlcnNpb24gd2hpY2gga2VybmVsIGRvZXNuJ3Qgc3VwcG9ydCAodGhlIHNpemUgaXMgbGFyZ2VyIHRoYW4gdGhlXG4ra2VybmVsIGV4cGVjdHMpIGFuZCBuZXcgZmllbGRzIGFyZSBub24temVyby5cbisuVFBcbisuQiBFQUNDRVNcbitTZWFyY2ggcGVybWlzc2lvbiBpcyBkZW5pZWQgZm9yIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXNcbitpbiB0aGUgcGF0aCBwcmVmaXggb2ZcbisuSVIgcGF0aG5hbWUgLlxuKyhTZWUgYWxzb1xuKy5CUiBwYXRoX3Jlc29sdXRpb24gKDcpLilcbisuVFBcbisuQiBFQkFERlxuKy5JIHBhdGhuYW1lXG4raXMgcmVsYXRpdmUgYnV0XG4rLkkgZGlyZmRcbitpcyBuZWl0aGVyXG4rLkIgQVRfRkRDV0Rcbitub3IgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IuXG4rLlRQXG4rLkIgRUJBREZcbisuSSBwYXRobmFtZVxuK2lzIGFuIGVtcHR5IHN0cmluZyxcbisuQiBBVF9FTVBUWV9QQVRIXG4rd2FzIHNwZWNpZmllZCBpblxuKy5JUiBmbGFncyAsXG4rYW5kXG4rLkkgZGlyZmRcbitpcyBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvci5cbisuVFBcbisuQiBFRkFVTFRcbisuSSBwYXRobmFtZVxuK29yXG4rLkkgZmF0dHJcbitpcyBhbiBpbnZhbGlkIHBvaW50ZXIuXG4rLlRQXG4rLkIgRUlOVkFMXG4rSW52YWxpZCBmbGFnIHNwZWNpZmllZCBpblxuKy5JUiBmbGFncyAuXG4rLlRQXG4rLkIgRUlOVkFMXG4rLkkgc2l6ZVxuK2lzIHNtYWxsZXIgdGhhblxuKy5CUiBGSUxFX0FUVFJfU0laRV9WRVIwIC5cbisuVFBcbisuQiBFSU5WQUxcbitJbnZhbGlkIGNvbWJpbmF0aW9uIG9mIHBhcmFtZXRlcnMgcHJvdmlkZWQgaW5cbisuSSBmYXR0clxuK2ZvciB0aGlzIHR5cGUgb2YgZmlsZSBvciBmaWxlc3lzdGVtLlxuKy5UUFxuKy5CIEVMT09QXG4rVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQgd2hpbGUgcmVzb2x2aW5nXG4rLklSIHBhdGhuYW1lIC5cbisuVFBcbisuQiBFTkFNRVRPT0xPTkdcbisuSSBwYXRobmFtZVxuK2lzIHRvbyBsb25nLlxuKy5UUFxuKy5CIEVOT0VOVFxuK0EgY29tcG9uZW50IG9mXG4rLkkgcGF0aG5hbWVcbitkb2VzIG5vdCBleGlzdCxcbitvclxuKy5JIHBhdGhuYW1lXG4raXMgYW4gZW1wdHkgc3RyaW5nIGFuZFxuKy5CIEFUX0VNUFRZX1BBVEhcbit3YXMgbm90IHNwZWNpZmllZCBpblxuKy5JUiBmbGFncyAuXG4rLlRQXG4rLkIgRU5PTUVNXG4rSW5zdWZmaWNpZW50IGtlcm5lbCBtZW1vcnkgd2FzIGF2YWlsYWJsZS5cbisuVFBcbisuQiBFTk9URElSXG4rQSBjb21wb25lbnQgb2YgdGhlIHBhdGggcHJlZml4IG9mXG4rLkkgcGF0aG5hbWVcbitpcyBub3QgYSBkaXJlY3Rvcnkgb3IsXG4rLkkgcGF0aG5hbWVcbitpcyByZWxhdGl2ZSBhbmRcbisuSSBkaXJmZFxuK2lzIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVycmluZyB0byBhIGZpbGUgb3RoZXIgdGhhbiBhIGRpcmVjdG9yeS5cbisuVFBcbisuQiBFT1BOT1RTVVBQXG4rVGhlIGZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBzZXR0aW5nIGF0dHJpYnV0ZXMgb24gdGhpcyB0eXBlIG9mIGlub2RlLlxuKy5UUFxuKy5CIEVQRVJNXG4rVGhlIGNhbGxlciBkb2VzIG5vdCBoYXZlIHRoZSBuZWNlc3NhcnkgcGVybWlzc2lvbnNcbit0byBjaGFuZ2UgdGhlIGZpbGUgYXR0cmlidXRlcy5cbisuVFBcbisuQiBFUk9GU1xuK1RoZSBmaWxlIGlzIG9uIGEgcmVhZC1vbmx5IGZpbGVzeXN0ZW0uXG4rLlNIIEhJU1RPUllcbisuU1MgTGludXggNi4xN1xuK1RoaXMgc3lzdGVtIGNhbGwgaXMgaW50cm9kdWNlZCBhcyBhIG1vcmUgZmxleGlibGUgYWx0ZXJuYXRpdmUgdG8gdGhlXG4rRlNfSU9DX0ZTU0VUWEFUVFJcbisuQlIgaW9jdGwgKDIpXG4rd2hpY2ggY291bGQgd29yayBvbiBhbnkgdHlwZSBvZiBmaWxlcy5cbisuU0ggTk9URVNcbitUaGlzIHN5c3RlbSBjYWxsIGlzIGRlc2lnbmVkIHRvIGJlIGV4dGVuc2libGUuXG4rVGhlXG4rLkkgc2l6ZVxuK2FyZ3VtZW50IGFsbG93cyB1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucyB0byBpbmRpY2F0ZVxuK3doaWNoIHZlcnNpb24gb2YgdGhlXG4rLkkgZmlsZV9hdHRyXG4rc3RydWN0dXJlIHRoZXkgYXJlIHVzaW5nLFxuK2VuYWJsaW5nIHRoZSBrZXJuZWwgdG8gc3VwcG9ydCBib3RoIG9sZCBhbmQgbmV3IHZlcnNpb25zXG4rb2YgdGhlIHN0cnVjdHVyZSBzaW11bHRhbmVvdXNseS5cbisuUFxuK0lmXG4rLkkgc2l6ZVxuK2lzIHNtYWxsZXIgdGhhbiB0aGUgc3RydWN0dXJlIHNpemUgdGhlIGtlcm5lbCBleHBlY3RzLFxuK3RoZSBrZXJuZWwgdHJlYXRzIHRoZSBtaXNzaW5nIGZpZWxkcyBhcyBoYXZpbmcgemVybyB2YWx1ZXNcbisod2hpY2ggaXMgYSBuby1vcCkuXG4rSWZcbisuSSBzaXplXG4raXMgbGFyZ2VyIHRoYW4gZXhwZWN0ZWQsXG4rdGhlIGtlcm5lbCBjaGVja3MgdGhhdCBhbGwgdW5rbm93biAodG8gdGhlIGtlcm5lbCkgZmllbGRzIGFyZSB6ZXJvO1xuK2lmIG5vdCxcbit0aGUgY2FsbCBmYWlscyB3aXRoXG4rLkJSIEUyQklHIC5cbisuU0ggRVhBTVBMRVNcbitUaGUgcHJvZ3JhbSBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIHVzZSBvZlxuKy5CUiBmaWxlX3NldGF0dHIgKClcbit0byBzZXQgdGhlXG4rLkIgRlNfWEZMQUdfTk9EVU1QXG4rZmxhZyBvbiBhIGZpbGUuXG4rLlBcbisuaW4gKzRuXG4rLkVYXG4rI2luY2x1ZGUgXHUwMDNjZmNudGwuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZjbnRsLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjc3RkaW8uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3N0ZGxpYi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjc3RyaW5nLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzeXMvc3lzY2FsbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbitcbisjaWZuZGVmIFNZU19maWxlX2dldGF0dHJcbisjZGVmaW5lIFNZU19maWxlX2dldGF0dHIgNDY3XG4rI2VuZGlmXG4rXG4rI2lmbmRlZiBTWVNfZmlsZV9zZXRhdHRyXG4rI2RlZmluZSBTWVNfZmlsZV9zZXRhdHRyIDQ2OFxuKyNlbmRpZlxuK1xuK2ludFxuK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbit7XG4rICAgIHN0cnVjdCBmaWxlX2F0dHIgZmEgPSB7IDAgfTtcbisgICAgaW50IGRmZDtcbisgICAgbG9uZyByZXQ7XG4rXG4rICAgIGlmIChhcmdjICE9IDIpIHtcbisgICAgICAgIGZwcmludGYoc3RkZXJyLCBcIlVzYWdlOiAlcyBcdTAwM2NmaWxlbmFtZVx1MDAzZVxcXFxuXCIsIGFyZ3ZbMF0pO1xuKyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xuKyAgICB9XG4rXG4rICAgIGRmZCA9IG9wZW4oYXJndlsxXSwgT19SRE9OTFkpO1xuKyAgICBpZiAoZGZkID09IFxcLTEpIHtcbisgICAgICAgIHBlcnJvcihcIm9wZW5cIik7XG4rICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4rICAgIH1cbitcbisgICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBkZmQsIFwiXCIsIFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcbisgICAgaWYgKHJldCA9PSBcXC0xKSB7XG4rICAgICAgICBwZXJyb3IoXCJmaWxlX2dldGF0dHJcIik7XG4rICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4rICAgIH1cbitcbisgICAgcHJpbnRmKFwiQ3VycmVudCBmbGFnczogMHglbGx4XFxcXG5cIiwgKHVuc2lnbmVkIGxvbmcgbG9uZylmYS5mYV94ZmxhZ3MpO1xuK1xuKyAgICBmYS5mYV94ZmxhZ3MgfD0gRlNfWEZMQUdfTk9EVU1QO1xuK1xuKyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX3NldGF0dHIsIGRmZCwgXCJcIiwgXHUwMDI2ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpO1xuKyAgICBpZiAocmV0ID09IFxcLTEpIHtcbisgICAgICAgIHBlcnJvcihcImZpbGVfc2V0YXR0clwiKTtcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbisgICAgfVxuK1xuKyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIGRmZCwgXCJcIiwgXHUwMDI2ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpO1xuKyAgICBpZiAocmV0ID09IFxcLTEpIHtcbisgICAgICAgIHBlcnJvcihcImZpbGVfZ2V0YXR0clwiKTtcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbisgICAgfVxuK1xuKyAgICBpZiAoZmEuZmFfeGZsYWdzIFx1MDAyNiBGU19YRkxBR19OT0RVTVApXG4rICAgICAgICBwcmludGYoXCJmbGFncyAweCVsbHggKE5PRFVNUCBmbGFnIGlzIHNldClcXFxcblwiLFxuKyAgICAgICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpZmEuZmFfeGZsYWdzKTtcbitcbisgICAgZXhpdChFWElUX1NVQ0NFU1MpO1xuK31cbisuRUVcbisuaW5cbisuU0ggU0VFIEFMU09cbisuQlIgZmlsZV9nZXRhdHRyICgyKSxcbisuQlIgaW9jdGwgKDIpLFxuKy5CUiBpb2N0bF9mcyAoMiksXG4rLkJSIG9wZW5hdCAoMiksXG4rLkJSIGZpbGVfYXR0ciAoMnR5cGUpLFxuKy5CUiBwYXRoX3Jlc29sdXRpb24gKDcpXG5kaWZmIC0tZ2l0IGEvbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSBiL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGVcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mZDQyNmMxOWY1ZjBiXG4tLS0gL2Rldi9udWxsXG4rKysgYi9tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlXG5AQCAtMCwwICsxLDE4NyBAQFxuKy5cXFwiIENvcHlyaWdodCwgdGhlIGF1dGhvcnMgb2YgdGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0XG4rLlxcXCJcbisuXFxcIiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTGludXgtbWFuLXBhZ2VzLWNvcHlsZWZ0XG4rLlxcXCJcbisuVEggZmlsZV9hdHRyIDJ0eXBlIChkYXRlKSBcIkxpbnV4IG1hbi1wYWdlcyAodW5yZWxlYXNlZClcIlxuKy5TSCBOQU1FXG4rZmlsZV9hdHRyIFxcLSBkZXNjcmliZSBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlcyB0byBnZXQgb3Igc2V0XG4rLlNIIFNZTk9QU0lTXG4rLkVYXG4rLkIgI2luY2x1ZGUgXHUwMDNjbGludXgvZnMuaFx1MDAzZVxuKy5QXG4rLkIgc3RydWN0IGZpbGVfYXR0ciB7XG4rLkJSIFwiICAgIHU2NCAgZmFfeGZsYWdzO1wiIFwiICAgICAvKiBFeHRlbmRlZCBmbGFncyAqL1wiXG4rLkJSIFwiICAgIHUzMiAgZmFfZXh0c2l6ZTtcIiBcIiAgICAvKiBFeHRlbnQgc2l6ZSBoaW50ICovXCJcbisuQlIgXCIgICAgdTMyICBmYV9uZXh0ZW50cztcIiBcIiAgIC8qIE51bWJlciBvZiBleHRlbnRzIChyZWFkLW9ubHkpICovXCJcbisuQlIgXCIgICAgdTMyICBmYV9wcm9qaWQ7XCIgXCIgICAgIC8qIFByb2plY3QgaWRlbnRpZmllciAqL1wiXG4rLkJSIFwiICAgIHUzMiAgZmFfY293ZXh0c2l6ZTtcIiBcIiAvKiBDb1cgZXh0ZW50IHNpemUgaGludCAqL1wiXG4rLkIgfTtcbisuRUVcbisuU0ggREVTQ1JJUFRJT05cbitEZXNjcmliZXMgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXNcbitmb3IgdXNlIHdpdGggdGhlXG4rLkJSIGZpbGVfZ2V0YXR0ciAoMilcbithbmRcbisuQlIgZmlsZV9zZXRhdHRyICgyKVxuK3N5c3RlbSBjYWxscy5cbisuUFxuK1RoZSBmaWVsZHMgYXJlIGFzIGZvbGxvd3M6XG4rLlRQXG4rLkkgZmFfeGZsYWdzXG4rVGhpcyBmaWVsZCBjb250YWlucyBmaWxlIGF0dHJpYnV0ZSBmbGFncy5cbitJdCBpcyBhIGJpdCBtYXNrIGNvbnNpc3Rpbmcgb2YgemVybyBvciBtb3JlIG9mIHRoZVxuKy5CIEZTX1hGTEFHXypcbitmbGFncy5cbitSZWZlciB0byB0aGUgc2VjdGlvblxuKy5CIEZMQUdTXG4rYmVsb3cgZm9yIGEgbGlzdCBvZiBhbGwgZmxhZ3MuXG4rLlRQXG4rLkkgZmFfZXh0c2l6ZVxuK0V4dGVudCBzaXplIGFsbG9jYXRvciBoaW50IGluIGJ5dGVzLlxuK1RoaXMgdmFsdWUgc3VnZ2VzdHMgYSBwcmVmZXJyZWQgZXh0ZW50IHNpemVcbitmb3IgbmV3IGFsbG9jYXRpb25zIHRvIHRoaXMgZmlsZS5cbisuVFBcbisuSSBmYV9uZXh0ZW50c1xuK051bWJlciBvZiBkYXRhIGV4dGVudHMgaW4gdGhlIGZpbGUgKHJlYWQtb25seSkuXG4rVGhpcyBmaWVsZCBpcyBmaWxsZWQgaW4gYnlcbisuQlIgZmlsZV9nZXRhdHRyICgyKVxuK2FuZCBpcyBpZ25vcmVkIGJ5XG4rLkJSIGZpbGVfc2V0YXR0ciAoMikuXG4rLlRQXG4rLkkgZmFfcHJvamlkXG4rUHJvamVjdCBpZGVudGlmaWVyLlxuK1VzZWQgYnkgcXVvdGEgc3lzdGVtcyB0byBncm91cCByZWxhdGVkIGZpbGVzLlxuKy5UUFxuKy5JIGZhX2Nvd2V4dHNpemVcbitDb3B5LW9uLVdyaXRlIChDb1cpIGV4dGVudCBzaXplIGhpbnQgaW4gYnl0ZXMuXG4rVGhpcyB2YWx1ZSBzdWdnZXN0cyBhIHByZWZlcnJlZCBleHRlbnQgc2l6ZVxuK2ZvciBDb1cgb3BlcmF0aW9ucy5cbisuU0ggRkxBR1NcbitGbGFncyBjYW4gYmU6XG4rLlJTXG4rLlRQXG4rLkIgRlNfWEZMQUdfUkVBTFRJTUVcbitEYXRhIGlzIHN0b3JlZCBpbiBhIHJlYWx0aW1lIHZvbHVtZS5cbisuVFBcbisuQiBGU19YRkxBR19JTU1VVEFCTEVcbitGaWxlIGNhbm5vdCBiZSBtb2RpZmllZC5cbisuVFBcbisuQiBGU19YRkxBR19BUFBFTkRcbitBbGwgd3JpdGVzIG11c3QgYXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUuXG4rLlRQXG4rLkIgRlNfWEZMQUdfU1lOQ1xuK0FsbCB3cml0ZXMgYXJlIHN5bmNocm9ub3VzLlxuKy5UUFxuKy5CIEZTX1hGTEFHX05PQVRJTUVcbitEbyBub3QgdXBkYXRlIGZpbGUgYWNjZXNzIHRpbWUgb24gcmVhZHMuXG4rLlRQXG4rLkIgRlNfWEZMQUdfTk9EVU1QXG4rRG8gbm90IGluY2x1ZGUgZmlsZSBpbiBiYWNrdXBzLlxuKy5UUFxuKy5CIEZTX1hGTEFHX0RBWFxuK1VzZSBEaXJlY3QgQWNjZXNzIChEQVgpIGZvciBJL08gb3BlcmF0aW9ucy5cbisuVFBcbisuQiBGU19YRkxBR19OT0RFRlJBR1xuK0V4Y2x1ZGUgdGhpcyBmaWxlIGZyb20gZGVmcmFnbWVudGF0aW9uIG9wZXJhdGlvbnMuXG4rLlRQXG4rLkIgRlNfWEZMQUdfRklMRVNUUkVBTVxuK1VzZSBmaWxlc3RyZWFtIGFsbG9jYXRvciBmb3IgdGhpcyBmaWxlLlxuKy5UUFxuKy5CIEZTX1hGTEFHX0VYVFNJWkVcbitVc2UgdGhlIGV4dGVudCBzaXplIGhpbnQgZnJvbSB0aGVcbisuSSBmYV9leHRzaXplXG4rZmllbGQuXG4rLlRQXG4rLkIgRlNfWEZMQUdfQ09XRVhUU0laRVxuK1VzZSB0aGUgQ29XIGV4dGVudCBzaXplIGhpbnQgZnJvbSB0aGVcbisuSSBmYV9jb3dleHRzaXplXG4rZmllbGQuXG4rLlJFXG4rLlBcbitEaXJlY3Rvcnkgb25seSBmbGFnczpcbisuUlNcbisuVFBcbisuQiBGU19YRkxBR19SVElOSEVSSVRcbitOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSByZWFsdGltZSBmbGFnLlxuKy5UUFxuKy5CIEZTX1hGTEFHX05PU1lNTElOS1NcbitEaXNhbGxvdyBjcmVhdGlvbiBvZiBzeW1ib2xpYyBsaW5rcyBpbiB0aGlzIGRpcmVjdG9yeS5cbisuVFBcbisuQiBGU19YRkxBR19FWFRTWklOSEVSSVRcbitOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSBleHRlbnQgc2l6ZSBoaW50LlxuKy5UUFxuKy5CIEZTX1hGTEFHX1BST0pJTkhFUklUXG4rTmV3IGZpbGVzIGNyZWF0ZWQgaW4gdGhpcyBkaXJlY3RvcnkgaW5oZXJpdCB0aGUgcHJvamVjdCBpZGVudGlmaWVyLlxuKy5SRVxuKy5QXG4rVGhlIGZvbGxvd2luZyBmbGFncyBhcmUgcmVhZC1vbmx5OlxuKy5SU1xuKy5UUFxuKy5CIEZTX1hGTEFHX1BSRUFMTE9DXG4rRmlsZSBoYXMgcHJlYWxsb2NhdGVkIGV4dGVudHMuXG4rLlRQXG4rLkIgRlNfWEZMQUdfSEFTQVRUUlxuK0ZpbGUgaGFzIGV4dGVuZGVkIGF0dHJpYnV0ZXMuXG4rLlRQXG4rLkIgRlNfWEZMQUdfVkVSSVRZXG4rRmlsZSBoYXMgZnMtdmVyaXR5IGVuYWJsZWQuXG4rLlRQXG4rLkIgRlNfWEZMQUdfQ0FTRUZPTERcbitUaGUgZmlsZXN5c3RlbSBwZXJmb3JtcyBjYXNlLWluc2Vuc2l0aXZlIGxvb2t1cHMgKGZpbGUgYW5kIGRpcmVjdG9yeSBuYW1lXG4rY29tcGFyaXNvbnMgaWdub3JlIGNhc2UpLlxuKy5UUFxuKy5CIEZTX1hGTEFHX0NBU0VOT05QUkVTRVJWSU5HXG4rVGhlIGZpbGVzeXN0ZW0gZG9lcyBub3QgcHJlc2VydmUgdGhlIGNhc2Ugb2YgZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWVzLlxuKy5SRVxuKy5QXG4rTm90IGFsbCBmaWxlc3lzdGVtcyBzdXBwb3J0IGFsbCBmbGFncy5cbitTZXR0aW5nIHVuc3VwcG9ydGVkIGZsYWdzIG1heSByZXN1bHQgaW4gYW5cbisuQiBFSU5WQUxcbitvclxuKy5CIEVPUE5PVFNVUFBcbitlcnJvci5cbisuU0ggVkVSU0lPTlNcbisuU1MgU3RydWN0dXJlIHNpemVcbitUaGUgc3RydWN0dXJlIHNpemUgaXMgZGVmaW5lZCBieVxuKy5CIEZJTEVfQVRUUl9TSVpFX1ZFUipcbit3aGljaCBpcyBhbHNvIGEgdmVyc2lvbiBvZiB0aGUgc3RydWN0dXJlIGJlaW5nIHVzZWQuXG4rVGhlXG4rLkkgc2l6ZVxuK3BhcmFtZXRlciBwYXNzZWQgdG9cbisuQlIgZmlsZV9nZXRhdHRyICgyKVxuK2FuZFxuKy5CUiBmaWxlX3NldGF0dHIgKDIpXG4raW5kaWNhdGVzIHRoZSB2ZXJzaW9uIG9mXG4rLkkgc3RydWN0IGZpbGVfYXR0clxcZlAuXG4rLlNTIEZJTEVfQVRUUl9TSVpFX1ZFUjBcbitTaXplIGlzIDI0IGJ5dGVzLlxuKy5TSCBISVNUT1JZXG4rLlNTIExpbnV4IHY2LjE3XG4rVGhpcyBzdHJ1Y3R1cmUgaXMgaW50cm9kdWNlZC5cbitUaGVcbisuSSBzdHJ1Y3QgZmlsZV9hdHRyXG4rcHJvdmlkZXMgc2ltaWxhciBmdW5jdGlvbmFsaXR5IHRvXG4rLkkgc3RydWN0IGZzeGF0dHJcbit1c2VkIGJ5IHRoZVxuKy5CIEZTX0lPQ19GU0dFVFhBVFRSXG4rYW5kXG4rLkIgRlNfSU9DX0ZTU0VUWEFUVFJcbisuQlIgaW9jdGwgKDIpXG4rb3BlcmF0aW9ucyxcbitidXQgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZSB0aHJvdWdoIHRoZVxuKy5JIHNpemVcbitwYXJhbWV0ZXIgb2YgdGhlIHN5c3RlbSBjYWxscy5cbisuUFxuK0V4dHJhIGZpZWxkcyBtYXkgYmUgYXBwZW5kZWQgdG8gdGhlIHN0cnVjdHVyZSBpbiBmdXR1cmUga2VybmVsIHZlcnNpb25zLlxuK1RoZSBrZXJuZWwgd2lsbCBleHBlY3QgbmV3IGZpZWxkcyB0byBiZSB6ZXJvc1xuK2ZvciBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgc3RydWN0dXJlLlxuK1RoZXJlZm9yZSwgYSB1c2VyXG4rLkkgbXVzdFxuK3plcm8tZmlsbCB0aGUgc3RydWN0dXJlIG9uIGluaXRpYWxpemF0aW9uIHRvIGtlZXAgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyXG4ra2VybmVscy5cbisuU1MgTGludXggdjcuMlxuK1RoZSBGU19YRkxBR19DQVNFRk9MRCBhbmQgRlNfWEZMQUdfQ0FTRU5PTlBSRVNFUlZJTkcgYXJlIGludHJvZHVjZWQgdG8gZW5hYmxlXG4rdXBwZXIgbGF5ZXJzLCBzdWNoIGFzIE5GU0QsIHRvIHJldHJpZXZlIGNhc2Ugc2Vuc2l0aXZpdHkgaW5mb3JtYXRpb24uXG4rLlNIIFNFRSBBTFNPXG4rLkJSIGZpbGVfZ2V0YXR0ciAoMiksXG4rLkJSIGZpbGVfc2V0YXR0ciAoMilcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjQ3OjM1LjMzOTkzMzA3NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzNTAxMDU2MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFRoaXMgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGJhc2VkIG9uIHRoaXMgZGlmZiBpcyB0aGF0IHdlJ3ZlIGdvdCBhIGRvY3VtZW50YXRpb24gdXBkYXRlLCBzcGVjaWZpY2FsbHkgbmV3IG1hbiBwYWdlcy4gSSBzZWUgdGhlIGFkZGl0aW9uIG9mIGBtYW4vbWFuMi9maWxlX2dldGF0dHIuMmAsIGBtYW4vbWFuMi9maWxlX3NldGF0dHIuMmAsIGFuZCBgbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZWAuIEludGVyZXN0aW5nLlxuXG5CdXQgSSBuZWVkIHRvIGJlICpzdXJlKiB0aGlzIGlzIGp1c3QgZG9jdW1lbnRhdGlvbi4gTXkgZ3V0IHNheXMgaXQgcHJvYmFibHkgaXMsIGJ1dCBJIGNhbid0IGJlIGNvbXBsYWNlbnQuIEkgbmVlZCB0byBxdWlja2x5IGFuZCBjb21wcmVoZW5zaXZlbHkgY29uZmlybSB0aGF0IHRoZXNlIGFyZSB0aGUgb25seSBjaGFuZ2VzIHJlbGF0ZWQgdG8gZmlsZSBhdHRyaWJ1dGVzLiBTbywgYmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgSSdtIGdvaW5nIHRvIHJ1biBhIHF1aWNrIGNoZWNrLiBJJ2xsIG5lZWQgdG8gdXNlIGBnaXRgIHRvIGxvb2sgYXQgdGhlIGNvbW1pdCwgb3IgcGVyaGFwcyBqdW1wIG92ZXIgdG8gYSBjb2Rlc2VhcmNoL2dyZXBwZXIgdG8gc2VhcmNoIHRoZSBlbnRpcmUgY29kZWJhc2UuIEknbSBsb29raW5nIGZvciBhbnkgb3RoZXIgbW9kaWZpY2F0aW9ucyByZWxhdGVkIHRvIGZpbGUgYXR0cmlidXRlIGhhbmRsaW5nIG9yIGFueSBkZXBlbmRlbmNpZXMgdGhhdCBtaWdodCBoYXZlIGJlZW4gaW1wYWN0ZWQuIEkgbmVlZCBhIGNsZWFuIGJpbGwgb2YgaGVhbHRoIGJlZm9yZSBJIG1vdmUgb24uIE5vIHN1cnByaXNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA4NywiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjQ3OjM3LjY5MDA0MDI5M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzAyMjc5MDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZpbGVfZ2V0YXR0clwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2ZzdmVyaXR5LnJzdD0zNTA9cGFyYW1ldGVycy4gU2VlIEZTX0lPQ19FTkFCTEVfVkVSSVRZLlxcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZnN2ZXJpdHkucnN0LTM1MS1cXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2ZzdmVyaXR5LnJzdDozNTI6ZmlsZV9nZXRhdHRyXFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzUzLS0tLS0tLS0tLS0tLVxcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZnN2ZXJpdHkucnN0LTM1NC1cXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2ZzdmVyaXR5LnJzdDozNTU6U2luY2UgTGludXggdjcuMCwgdGhlIGZpbGVfZ2V0YXR0cigpIHN5c2NhbGwgc2V0cyBGU19YRkxBR19WRVJJVFkgKDB4MDAwMjAwMDApXFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzU2LWluIHRoZSByZXR1cm5lZCBmbGFncyB3aGVuIHRoZSBmaWxlIGhhcyB2ZXJpdHkgZW5hYmxlZC4gTm90ZSB0aGF0IHRoaXMgYXR0cmlidXRlXFxuLS1cXG5hcmNoL2FscGhhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01MDktNTc3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL2FscGhhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo1MTA6NTc4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvYWxwaGEva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTUxMS01NzlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC00ODQtNDY3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibDo0ODU6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsLTQ4Ni00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsLTQ4MS00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50Ymw6NDgyOjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsLTQ4My00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ2OS00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDcwOjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3MS00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3NS00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDc2OjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3Ny00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjMyLnRibC00MDgtNDY3XFx0bjMyXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjMyLnRibDo0MDk6NDY4XFx0bjMyXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsLTQxMC00NjlcXHRuMzJcXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zODQtNDY3XFx0bjY0XFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibDozODU6NDY4XFx0bjY0XFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsLTM4Ni00NjlcXHRuNjRcXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC00NTctNDY3XFx0bzMyXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibDo0NTg6NDY4XFx0bzMyXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9vMzIudGJsLTQ1OS00NjlcXHRvMzJcXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDY4LTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxuYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ2OTo0NjhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3MC00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTU2MC00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTYxOjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTU2Mi00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5Ni00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6Mzk3OjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5OC00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NzMtNDY3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NzQ6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3NS00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01MTUtNDY3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo1MTY6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvc3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTUxNy00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NzUtNDY3XFx0aTM4NlxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6NDc2OjQ2OFxcdGkzODZcXHRmaWxlX2dldGF0dHJcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDc3LTQ2OVxcdGkzODZcXHRmaWxlX3NldGF0dHJcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibC0zOTQtNDY3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibDozOTU6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTM5Ni00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5hcmNoL3h0ZW5zYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDQwLTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ0MTo0NjhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ0Mi00NjlcXHRjb21tb25cXHRmaWxlX3NldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9zZXRhdHRyXFxuLS1cXG5mcy9leHQ0L2V4dDQuaD0zMTg4PWV4dGVybiB2b2lkIGV4dDRfY2xlYXJfaW5vZGUoc3RydWN0IGlub2RlICopO1xcbmZzL2V4dDQvZXh0NC5oOjMxODk6ZXh0ZXJuIGludCAgZXh0NF9maWxlX2dldGF0dHIoc3RydWN0IG1udF9pZG1hcCAqLCBjb25zdCBzdHJ1Y3QgcGF0aCAqLFxcbmZzL2V4dDQvZXh0NC5oLTMxOTAtXFx0XFx0XFx0ICAgICAgc3RydWN0IGtzdGF0ICosIHUzMiwgdW5zaWduZWQgaW50KTtcXG4tLVxcbmZzL2V4dDQvZmlsZS5jPTEwNTg9Y29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgZXh0NF9maWxlX2lub2RlX29wZXJhdGlvbnMgPSB7XFxuZnMvZXh0NC9maWxlLmMtMTA1OS1cXHQuc2V0YXR0clxcdD0gZXh0NF9zZXRhdHRyLFxcbmZzL2V4dDQvZmlsZS5jOjEwNjA6XFx0LmdldGF0dHJcXHQ9IGV4dDRfZmlsZV9nZXRhdHRyLFxcbmZzL2V4dDQvZmlsZS5jLTEwNjEtXFx0Lmxpc3R4YXR0clxcdD0gZXh0NF9saXN0eGF0dHIsXFxuLS1cXG5mcy9leHQ0L2lub2RlLmM9NjI2Nj1pbnQgZXh0NF9nZXRhdHRyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCxcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy02MzM0LVxcbmZzL2V4dDQvaW5vZGUuYzo2MzM1OmludCBleHQ0X2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcXG5mcy9leHQ0L2lub2RlLmMtNjMzNi1cXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCwgc3RydWN0IGtzdGF0ICpzdGF0LFxcbi0tXFxuZnMvZmlsZV9hdHRyLmM9ODY9aW50IHZmc19maWxlYXR0cl9nZXQoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXFxuLS1cXG5mcy9maWxlX2F0dHIuYy05My1cXG5mcy9maWxlX2F0dHIuYzo5NDpcXHRlcnJvciA9IHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cihkZW50cnksIGZhKTtcXG5mcy9maWxlX2F0dHIuYy05NS1cXHRpZiAoZXJyb3IpXFxuLS1cXG5mcy9maWxlX2F0dHIuYz0zNTY9aW50IGlvY3RsX2Zzc2V0eGF0dHIoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgX191c2VyICphcmdwKVxcbi0tXFxuZnMvZmlsZV9hdHRyLmMtMzczLVxcbmZzL2ZpbGVfYXR0ci5jOjM3NDpTWVNDQUxMX0RFRklORTUoZmlsZV9nZXRhdHRyLCBpbnQsIGRmZCwgY29uc3QgY2hhciBfX3VzZXIgKiwgZmlsZW5hbWUsXFxuZnMvZmlsZV9hdHRyLmMtMzc1LVxcdFxcdHN0cnVjdCBmaWxlX2F0dHIgX191c2VyICosIHVmYXR0ciwgc2l6ZV90LCB1c2l6ZSxcXG4tLVxcbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oPTIyPV9fTlJfcmVhZGxpbmthdCxcXG5pbmNsdWRlL2FzbS1nZW5lcmljL2F1ZGl0X3JlYWQuaC0yMy0jZW5kaWZcXG5pbmNsdWRlL2FzbS1nZW5lcmljL2F1ZGl0X3JlYWQuaDoyNDojaWZkZWYgX19OUl9maWxlX2dldGF0dHJcXG5pbmNsdWRlL2FzbS1nZW5lcmljL2F1ZGl0X3JlYWQuaDoyNTpfX05SX2ZpbGVfZ2V0YXR0cixcXG5pbmNsdWRlL2FzbS1nZW5lcmljL2F1ZGl0X3JlYWQuaC0yNi0jZW5kaWZcXG4tLVxcbmluY2x1ZGUvbGludXgvbHNtX2hvb2tfZGVmcy5oPTE2MD1MU01fSE9PSyhpbnQsIDAsIGlub2RlX2ZpbGVfc2V0YXR0ciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXFxuaW5jbHVkZS9saW51eC9sc21faG9va19kZWZzLmg6MTYxOkxTTV9IT09LKGludCwgMCwgaW5vZGVfZmlsZV9nZXRhdHRyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBmaWxlX2thdHRyICpmYSlcXG5pbmNsdWRlL2xpbnV4L2xzbV9ob29rX2RlZnMuaC0xNjItTFNNX0hPT0soaW50LCAwLCBpbm9kZV9zZXRfYWNsLCBzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcXG4tLVxcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaD00NTI9aW50IHNlY3VyaXR5X2lub2RlX2ZpbGVfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oLTQ1My1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpO1xcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaDo0NTQ6aW50IHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oLTQ1NS1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oPTEwNjQ9c3RhdGljIGlubGluZSBpbnQgc2VjdXJpdHlfaW5vZGVfZmlsZV9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG4tLVxcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaC0xMDY5LVxcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaDoxMDcwOnN0YXRpYyBpbmxpbmUgaW50IHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oLTEwNzEtXFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxcbi0tXFxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oPTM3OD1hc21saW5rYWdlIGxvbmcgc3lzX2ZyZW1vdmV4YXR0cihpbnQgZmQsIGNvbnN0IGNoYXIgX191c2VyICpuYW1lKTtcXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg6Mzc5OmFzbWxpbmthZ2UgbG9uZyBzeXNfZmlsZV9nZXRhdHRyKGludCBkZmQsIGNvbnN0IGNoYXIgX191c2VyICpmaWxlbmFtZSxcXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgtMzgwLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgZmlsZV9hdHRyIF9fdXNlciAqYXR0ciwgc2l6ZV90IHVzaXplLFxcbi0tXFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oPTg1Mz1fX1NZU0NBTEwoX19OUl9vcGVuX3RyZWVfYXR0ciwgc3lzX29wZW5fdHJlZV9hdHRyKVxcbi0tXFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTg1NS0vKiBmcy9pbm9kZS5jICovXFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjg1NjojZGVmaW5lIF9fTlJfZmlsZV9nZXRhdHRyIDQ2OFxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo4NTc6X19TWVNDQUxMKF9fTlJfZmlsZV9nZXRhdHRyLCBzeXNfZmlsZV9nZXRhdHRyKVxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC04NTgtI2RlZmluZSBfX05SX2ZpbGVfc2V0YXR0ciA0NjlcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTQtLlxcXFxcXFwiXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6NTouVEggZmlsZV9nZXRhdHRyIDIgKGRhdGUpIFxcXCJMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpXFxcIlxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTYtLlNIIE5BTUVcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjo3OmZpbGVfZ2V0YXR0ciBcXFxcLSBnZXQgZmlsZXN5c3RlbSBpbm9kZSBhdHRyaWJ1dGVzXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItOC0uU0ggU1lOT1BTSVNcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTE0LS5QXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MTU6LkIgbG9uZyBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMTYtLkJJIFxcXCIgICAgICAgICAgICAgICBpbnQgXFxcIiBkaXJmZCBcXFwiLCBjb25zdCBjaGFyICpcXFwiIHBhdGhuYW1lICxcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yPTIyPWdsaWJjIHByb3ZpZGVzIG5vIHdyYXBwZXIgZm9yXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MjM6LkJSIGZpbGVfZ2V0YXR0ciAoKSxcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0yNC11c2VcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yPTI4PVRoZVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yOjI5Oi5CUiBmaWxlX2dldGF0dHIgKClcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0zMC1zeXN0ZW0gY2FsbCByZXRyaWV2ZXMgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXNcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yPTM5PUJ5IHVzaW5nIGEgcGF0aG5hbWUsXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6NDA6LkJSIGZpbGVfZ2V0YXR0ciAoKVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTQxLWNhbiByZXRyaWV2ZSBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlc1xcbi0tXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI9ODM9YmVmb3JlIGNhbGxpbmdcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjo4NDouQlIgZmlsZV9nZXRhdHRyICgpXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItODUtdG8gZW5zdXJlIHRoYXQgZmllbGRzIG5vdCBmaWxsZWQgaW4gYnkgb2xkZXIga2VybmVsc1xcbi0tXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI9MjI5PVRoZSBwcm9ncmFtIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MjMwOi5CUiBmaWxlX2dldGF0dHIgKClcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0yMzEtdG8gcmV0cmlldmUgYW5kIGRpc3BsYXkgZmlsZSBhdHRyaWJ1dGVzLlxcbi0tXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMjQxLVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yOjI0MjojaWZuZGVmIFNZU19maWxlX2dldGF0dHJcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyNDM6I2RlZmluZSBTWVNfZmlsZV9nZXRhdHRyIDQ2N1xcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTI0NC0jZW5kaWZcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yPTI0Nz1tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXFxuLS1cXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0yNTctXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MjU4OiAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIEFUX0ZEQ1dELCBhcmd2WzFdLCBcXHUwMDI2ZmEsIHNpemVvZihmYSksIDApO1xcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTI1OS0gICAgaWYgKHJldCA9PSBcXFxcLTEpIHtcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyNjA6ICAgICAgICBwZXJyb3IoXFxcImZpbGVfZ2V0YXR0clxcXCIpO1xcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTI2MS0gICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yPTI2NT1mbGFnIG9uIGEgZmlsZS5cXG4tLVxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTI3Ny1cXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjoyNzg6I2lmbmRlZiBTWVNfZmlsZV9nZXRhdHRyXFxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI6Mjc5OiNkZWZpbmUgU1lTX2ZpbGVfZ2V0YXR0ciA0NjdcXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0yODAtI2VuZGlmXFxuLS1cXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMj0yODc9bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbi0tXFxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjItMzAzLVxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yOjMwNDogICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBkZmQsIFxcXCJcXFwiLCBcXHUwMDI2ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpO1xcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMwNS0gICAgaWYgKHJldCA9PSBcXFxcLTEpIHtcXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMDY6ICAgICAgICBwZXJyb3IoXFxcImZpbGVfZ2V0YXR0clxcXCIpO1xcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMwNy0gICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMxOS1cXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMjA6ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwgZGZkLCBcXFwiXFxcIiwgXFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMjEtICAgIGlmIChyZXQgPT0gXFxcXC0xKSB7XFxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI6MzIyOiAgICAgICAgcGVycm9yKFxcXCJmaWxlX2dldGF0dHJcXFwiKTtcXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMjMtICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XFxuLS1cXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMzQtLlNIIFNFRSBBTFNPXFxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI6MzM1Oi5CUiBmaWxlX2dldGF0dHIgKDIpLFxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMzNi0uQlIgaW9jdGwgKDIpLFxcbi0tXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZT0yMj1mb3IgdXNlIHdpdGggdGhlXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZToyMzouQlIgZmlsZV9nZXRhdHRyICgyKVxcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUtMjQtYW5kXFxuLS1cXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlPTQ2PVRoaXMgZmllbGQgaXMgZmlsbGVkIGluIGJ5XFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZTo0NzouQlIgZmlsZV9nZXRhdHRyICgyKVxcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUtNDgtYW5kIGlzIGlnbm9yZWQgYnlcXG4tLVxcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGU9MTUwPXBhcmFtZXRlciBwYXNzZWQgdG9cXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlOjE1MTouQlIgZmlsZV9nZXRhdHRyICgyKVxcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUtMTUyLWFuZFxcbi0tXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZT0xODQ9dXBwZXIgbGF5ZXJzLCBzdWNoIGFzIE5GU0QsIHRvIHJldHJpZXZlIGNhc2Ugc2Vuc2l0aXZpdHkgaW5mb3JtYXRpb24uXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZS0xODUtLlNIIFNFRSBBTFNPXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZToxODY6LkJSIGZpbGVfZ2V0YXR0ciAoMiksXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZS0xODctLkJSIGZpbGVfc2V0YXR0ciAoMilcXG4tLVxcbnNjcmlwdHMvc3lzY2FsbC50YmwtNDEwLTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxuc2NyaXB0cy9zeXNjYWxsLnRibDo0MTE6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbnNjcmlwdHMvc3lzY2FsbC50YmwtNDEyLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnNlY3VyaXR5L3NlY3VyaXR5LmM9MjE1Mz1pbnQgc2VjdXJpdHlfaW5vZGVfZmlsZV9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxcbi0tXFxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTU4LS8qKlxcbnNlY3VyaXR5L3NlY3VyaXR5LmM6MjE1OTogKiBzZWN1cml0eV9pbm9kZV9maWxlX2dldGF0dHIoKSAtIGNoZWNrIGlmIHJldHJpZXZpbmcgZnN4YXR0ciBpcyBhbGxvd2VkXFxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTYwLSAqIEBkZW50cnk6IGZpbGUgdG8gcmV0cmlldmUgZmlsZXN5c3RlbSBleHRlbmRlZCBhdHRyaWJ1dGVzIGZyb21cXG4tLVxcbnNlY3VyaXR5L3NlY3VyaXR5LmMtMjE2Mi0gKlxcbnNlY3VyaXR5L3NlY3VyaXR5LmM6MjE2MzogKiBDYWxsZWQgd2hlbiBmaWxlX2dldGF0dHIoKSBzeXNjYWxsIG9yIEZTX0lPQ19GU0dFVFhBVFRSIGlvY3RsKCkgaXMgY2FsbGVkIG9uXFxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTY0LSAqIGlub2RlXFxuLS1cXG5zZWN1cml0eS9zZWN1cml0eS5jLTIxNjctICovXFxuc2VjdXJpdHkvc2VjdXJpdHkuYzoyMTY4OmludCBzZWN1cml0eV9pbm9kZV9maWxlX2dldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXFxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTY5LXtcXG5zZWN1cml0eS9zZWN1cml0eS5jOjIxNzA6XFx0cmV0dXJuIGNhbGxfaW50X2hvb2soaW5vZGVfZmlsZV9nZXRhdHRyLCBkZW50cnksIGZhKTtcXG5zZWN1cml0eS9zZWN1cml0eS5jLTIxNzEtfVxcbi0tXFxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jPTM1NDQ9c3RhdGljIGludCBzZWxpbnV4X2lub2RlX2ZpbGVfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuLS1cXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMtMzU0OS1cXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmM6MzU1MDpzdGF0aWMgaW50IHNlbGludXhfaW5vZGVfZmlsZV9nZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMtMzU1MS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXFxuLS1cXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmM9NzU2MD1zdGF0aWMgc3RydWN0IHNlY3VyaXR5X2hvb2tfbGlzdCBzZWxpbnV4X2hvb2tzW10gX19yb19hZnRlcl9pbml0ID0ge1xcbi0tXFxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jLTc2MTktXFx0TFNNX0hPT0tfSU5JVChpbm9kZV9yZW1vdmV4YXR0ciwgc2VsaW51eF9pbm9kZV9yZW1vdmV4YXR0ciksXFxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jOjc2MjA6XFx0TFNNX0hPT0tfSU5JVChpbm9kZV9maWxlX2dldGF0dHIsIHNlbGludXhfaW5vZGVfZmlsZV9nZXRhdHRyKSxcXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMtNzYyMS1cXHRMU01fSE9PS19JTklUKGlub2RlX2ZpbGVfc2V0YXR0ciwgc2VsaW51eF9pbm9kZV9maWxlX3NldGF0dHIpLFxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oPTg1Mz1fX1NZU0NBTEwoX19OUl9vcGVuX3RyZWVfYXR0ciwgc3lzX29wZW5fdHJlZV9hdHRyKVxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTg1NS0vKiBmcy9pbm9kZS5jICovXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjg1NjojZGVmaW5lIF9fTlJfZmlsZV9nZXRhdHRyIDQ2OFxcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo4NTc6X19TWVNDQUxMKF9fTlJfZmlsZV9nZXRhdHRyLCBzeXNfZmlsZV9nZXRhdHRyKVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC04NTgtI2RlZmluZSBfX05SX2ZpbGVfc2V0YXR0ciA0NjlcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDg0LTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxudG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0ODU6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDg2LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9taXBzL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zODQtNDY3XFx0bjY0XFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6Mzg1OjQ2OFxcdG42NFxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzg2LTQ2OVxcdG42NFxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTU2MC00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjU2MTo0NjhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTYyLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zMzkwL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5Ni00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbnRvb2xzL3BlcmYvYXJjaC9zMzkwL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjM5Nzo0NjhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxudG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzk4LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NzMtNDY3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDc0OjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDc1LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC01MTUtNDY3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTE2OjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTE3LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDc1LTQ2N1xcdGkzODZcXHRvcGVuX3RyZWVfYXR0clxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6NDc2OjQ2OFxcdGkzODZcXHRmaWxlX2dldGF0dHJcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NzctNDY5XFx0aTM4NlxcdGZpbGVfc2V0YXR0clxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzk0LTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibDozOTU6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzk2LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDQwLTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0NDE6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDQyLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtNDEwLTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibDo0MTE6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtNDEyLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6NDc6MzkuOTkyMzI1NDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NzE5OTA4OTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBEZWNpc2lvbjogQSBRdWljayBSZXZpZXcqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzIGNvbW1pdCdzIGRpZmYgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiAqQ2hlY2tzIGRpZmYqOiBSaWdodCwgaXQncyBqdXN0IGFkZGluZyBuZXcgbWFuIHBhZ2VzOiBgZmlsZV9nZXRhdHRyLjJgLCBgZmlsZV9zZXRhdHRyLjJgLCBhbmQgYGZpbGVfYXR0ci4ydHlwZWAuIEFsbCB3aXRoaW4gdGhlIGBtYW4vYCBkaXJlY3RvcnkuIE5vIGNoYW5nZXMgdG8gYWN0dWFsIGNvZGUsIGp1c3QgZG9jdW1lbnRhdGlvbi5cblxuTm93LCBsZXQncyBydW4gdGhyb3VnaCBTZWN0aW9uIDIncyBuZWdhdGl2ZSBjcml0ZXJpYS4gKlJlYWRzIFNlY3Rpb24gMio6IEhtbSwgXCJOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzLi4uXCIgT2theSwgdGhhdCBzZWN0aW9uIGNvdmVycyBcIk1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbixcIiBhbmQgXCJVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLi4uIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlLi4uXCIgQmluZ28hIFRoaXMgcGF0Y2ggZmFsbHMgc3F1YXJlbHkgaW50byB0aGF0IGNhdGVnb3J5LiBJdCdzICpwdXJlbHkqIGFkZGluZyBkb2N1bWVudGF0aW9uOyBubyBleGVjdXRhYmxlIGNvZGUgaXMgdG91Y2hlZCwgYW5kIGNlcnRhaW5seSBubyBrZXJuZWwgY29kZS5cblxuVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBoYXMgdG8gYmUgYGZhbHNlYC4gTm8gbmVlZCB0byBlbmFibGUgYW55IHNwZWNpZmljIGNvbmZpZ3MgKGBFbmFibGVDb25maWdzID0gW11gKSwgYW5kIHRoZXJlIGFyZSBubyBmb2NhbCBzeW1ib2xzIHRvIHRyYWNrIChgRm9jdXNTeW1ib2xzID0gW11gKS4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgaXMgZG9jdW1lbnRhdGlvbiwgcGxhaW4gYW5kIHNpbXBsZSwgYW5kIGl0IGRvZXNuJ3QgYWZmZWN0IHRoZSBrZXJuZWwncyBydW50aW1lIGJlaGF2aW9yLiAqRGV0ZXJtaW5lcyo6IGBSZWFzb25pbmc6IFRoZSBwYXRjaCBvbmx5IGFkZHMgbWFuIHBhZ2VzIChkb2N1bWVudGF0aW9uKSBpbiBtYW4vbWFuMi8gYW5kIG1hbi9tYW4ydHlwZS8gYW5kIGRvZXMgbm90IG1vZGlmeSBhbnkga2VybmVsIHNvdXJjZSBjb2RlLmBcblxuQWxyaWdodCwgdGltZSB0byBleGVjdXRlIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MzQ0LCJPdXRwdXRUb2tlbnMiOjEwMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzo0Nzo0NC43MTIyMzcyNjJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4ODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBvbmx5IGFkZHMgdXNlci1zcGFjZSBtYW4tcGFnZSBkb2N1bWVudGF0aW9uIGZpbGVzIHVuZGVyIHRoZSBtYW4vIGRpcmVjdG9yeSAobWFuL21hbjIvZmlsZV9nZXRhdHRyLjIsIG1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLCBhbmQgbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSkgYW5kIGRvZXMgbm90IG1vZGlmeSBhbnkgZXhlY3V0YWJsZSBrZXJuZWwgc291cmNlIGNvZGUgb3IgZGF0YSBzdHJ1Y3R1cmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIG9ubHkgYWRkcyB1c2VyLXNwYWNlIG1hbi1wYWdlIGRvY3VtZW50YXRpb24gZmlsZXMgdW5kZXIgdGhlIG1hbi8gZGlyZWN0b3J5IChtYW4vbWFuMi9maWxlX2dldGF0dHIuMiwgbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIsIGFuZCBtYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlKSBhbmQgZG9lcyBub3QgbW9kaWZ5IGFueSBleGVjdXRhYmxlIGtlcm5lbCBzb3VyY2UgY29kZSBvciBkYXRhIHN0cnVjdHVyZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzo0Nzo0NC43MTIyNTk0NTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2ndsh[1] Phase: Running StartedAt: 2026-09-07 17:47:55 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2ndsh[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-07 17:47:55 +0000 UTC FinishedAt: 2026-09-07 17:47:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}