Name: series-workflowkdxvz Phase: Failed StartedAt: 2026-09-02 04:52:57 +0000 UTC FinishedAt: 2026-09-02 05:10:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdxvz[0] Phase: Succeeded StartedAt: 2026-09-02 04:52:57 +0000 UTC FinishedAt: 2026-09-02 05:10:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdxvz[0].run-triage Phase: Succeeded StartedAt: 2026-09-02 04:52:57 +0000 UTC FinishedAt: 2026-09-02 05:10:46 +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+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgc3VwcG9ydCBmb3IgUm9ja2NoaXAgUkszNTY4IFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUGh5c2ljYWwgQ29kaW5nIFN1YmxheWVyIChYUENTKSBhbmQgU0dNSUkgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBSb2NrY2hpcCBEV01BQyBkcml2ZXIsIGFsb25nIHdpdGggbWlub3IgUENTIGluaXQvZXhpdCBoYW5kbGluZyB1cGRhdGVzIGZvciBJbnRlbCBEV01BQyBQQ0kgYW5kIG90aGVyIFNvQyBnbHVlIGRyaXZlcnMgKFJlbmVzYXMsIFNvY2ZwZ2EpLiBUaGVzZSBjaGFuZ2VzIGFyZSByZXN0cmljdGVkIHRvIHZlbmRvci1zcGVjaWZpYyBTb0MgcGxhdGZvcm0gZHJpdmVycyAoUm9ja2NoaXAgUkszNTY4LCBSZW5lc2FzLCBTb2NmcGdhKSBhbmQgSW50ZWwgRFdNQUMgUENJIGhhcmR3YXJlLCBub25lIG9mIHdoaWNoIGFyZSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGVudmlyb25tZW50cyBsaWtlIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBjYW5ub3QgYmUgZXhlY3V0ZWQgZHVyaW5nIHZpcnR1YWxpemVkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjEwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjQ2YThmNGM5OTUyOTYxYjdmOGY5NmFmOGYyZjQ0NjFhOGY5NTk3MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMDU6MTA6MTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3Mvcm9ja2NoaXAtZHd4cGNzLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjA4NTJkMGJjYjY2YTJcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sXG5AQCAtMCwwICYjNDM7MSwxMTAgQEBcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpXG4mIzQzOyVZQU1MIDEuMlxuJiM0MzstLS1cbiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sI1xuJiM0Mzskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbiYjNDM7XG4mIzQzO3RpdGxlOiBSb2NrY2hpcCBSSzM1NjggU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBQQ1NcbiYjNDM7XG4mIzQzO21haW50YWluZXJzOlxuJiM0MzsgIC0gQ29pYSBQcmFudCBcdTAwM2Njb2lhcHJhbnRAZ21haWwuY29tXHUwMDNlXG4mIzQzO1xuJiM0MztkZXNjcmlwdGlvbjogfFxuJiM0MzsgIFJvY2tjaGlwIFJLMzU2OCBTb0MgaW50ZWdyYXRlcyBhIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUGh5c2ljYWxcbiYjNDM7ICBDb2RpbmcgU3VibGF5ZXIgKFhQQ1MpLlxuJiM0MzsgIFRoZSBQQ1MgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGJldHdlZW4gdGhlIE1lZGlhIEFjY2VzcyBDb250cm9sIChNQUMpXG4mIzQzOyAgYW5kIHRoZSBQaHlzaWNhbCBNZWRpdW0gQXR0YWNobWVudCAoUE1BKSBzdWJsYXllciB0aHJvdWdoIGEgTWVkaWFcbiYjNDM7ICBJbmRlcGVuZGVudCBJbnRlcmZhY2UgKEdNSUkpLlxuJiM0MztcbiYjNDM7ICBUaGUgWFBDUyBpcyBhY2Nlc3NlZCBvdmVyIHRoZSBBUEIzIGJ1cyBhbmQgaW50ZXJuYWxseSBjb25uZWN0ZWQgdG8gYVxuJiM0MzsgIE5hbmVuZyBDb21ibyBTZXJEZXMgUEhZLlxuJiM0MzsgIEl0IHN1cHBvcnRzIDEwMDBCQVNFLVgsIFNHTUlJIGFuZCBRU0dNSUkgbW9kZXMuXG4mIzQzO1xuJiM0MzsgIFRoZSBibG9jayBjb250YWlucyBmb3VyIE1JSSBwb3J0cyB0aGF0IGNhbiBiZSBpbmRpdmlkdWFsbHkgZW5hYmxlZCBhbmRcbiYjNDM7ICByb3V0ZWQgdG8gb25lIG9mIHRoZSBFdGhlcm5ldCBHTUFDIGNvbnRyb2xsZXJzIHZpYSB0aGUgcGNzLWhhbmRsZVxuJiM0MzsgIHByb3BlcnR5IGluIHRoZSBNQUMgZGV2aWNlIHRyZWUgbm9kZS5cbiYjNDM7XG4mIzQzO3Byb3BlcnRpZXM6XG4mIzQzOyAgY29tcGF0aWJsZTpcbiYjNDM7ICAgIGNvbnN0OiByb2NrY2hpcCxyazM1NjgteHBjc1xuJiM0MztcbiYjNDM7ICByZWc6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiYjNDM7ICBcJiMzNDsjYWRkcmVzcy1jZWxsc1wmIzM0OzpcbiYjNDM7ICAgIGNvbnN0OiAxXG4mIzQzO1xuJiM0MzsgIFwmIzM0OyNzaXplLWNlbGxzXCYjMzQ7OlxuJiM0MzsgICAgY29uc3Q6IDBcbiYjNDM7XG4mIzQzOyAgY2xvY2tzOlxuJiM0MzsgICAgaXRlbXM6XG4mIzQzOyAgICAgIC0gZGVzY3JpcHRpb246IEFQQjMgYnVzIGludGVyZmFjZSBjbG9jayAoY2xrX2Nzcl9pKSwgcmVxdWlyZWQgZm9yIHJlZ2lzdGVyIGFjY2Vzc1xuJiM0MzsgICAgICAtIGRlc2NyaXB0aW9uOiBFRUUgY2xvY2sgKGNsa19lZWVfaSksIHJlcXVpcmVkIGZvciBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0IG9wZXJhdGlvblxuJiM0MztcbiYjNDM7ICBjbG9jay1uYW1lczpcbiYjNDM7ICAgIGl0ZW1zOlxuJiM0MzsgICAgICAtIGNvbnN0OiBjc3JcbiYjNDM7ICAgICAgLSBjb25zdDogZWVlXG4mIzQzO1xuJiM0MzsgIHBoeXM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiYjNDM7ICBwaHktbmFtZXM6XG4mIzQzOyAgICBjb25zdDogc2VyZGVzXG4mIzQzO1xuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiYjNDM7cGF0dGVyblByb3BlcnRpZXM6XG4mIzQzOyAgXCYjMzQ7XnBjcy1taWlAWzAtM10kXCYjMzQ7OlxuJiM0MzsgICAgdHlwZTogb2JqZWN0XG4mIzQzOyAgICBkZXNjcmlwdGlvbjpcbiYjNDM7ICAgICAgT25lIG9mIHRoZSBmb3VyIE1JSSBwb3J0cyBvZiB0aGUgWFBDUy4gVGhlIHBvcnQgaXMgbGlua2VkIHRvIGFuXG4mIzQzOyAgICAgIEV0aGVybmV0IE1BQyBjb250cm9sbGVyIHZpYSB0aGUgcGNzLWhhbmRsZSBwcm9wZXJ0eSBpbiB0aGUgTUFDJiMzOTtzXG4mIzQzOyAgICAgIGRldmljZSB0cmVlIG5vZGUuXG4mIzQzO1xuJiM0MzsgICAgcHJvcGVydGllczpcbiYjNDM7ICAgICAgcmVnOlxuJiM0MzsgICAgICAgIGRlc2NyaXB0aW9uOiBNSUkgcG9ydCBudW1iZXIuXG4mIzQzOyAgICAgICAgZW51bTogWzAsIDEsIDIsIDNdXG4mIzQzO1xuJiM0MzsgICAgcmVxdWlyZWQ6XG4mIzQzOyAgICAgIC0gcmVnXG4mIzQzO1xuJiM0MzsgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlXG4mIzQzO1xuJiM0MztyZXF1aXJlZDpcbiYjNDM7ICAtIGNvbXBhdGlibGVcbiYjNDM7ICAtIHJlZ1xuJiM0MzsgIC0gXCYjMzQ7I2FkZHJlc3MtY2VsbHNcJiMzNDtcbiYjNDM7ICAtIFwmIzM0OyNzaXplLWNlbGxzXCYjMzQ7XG4mIzQzOyAgLSBjbG9ja3NcbiYjNDM7ICAtIGNsb2NrLW5hbWVzXG4mIzQzOyAgLSBwaHlzXG4mIzQzOyAgLSBwaHktbmFtZXNcbiYjNDM7ICAtIHBvd2VyLWRvbWFpbnNcbiYjNDM7XG4mIzQzO2FkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZVxuJiM0MztcbiYjNDM7ZXhhbXBsZXM6XG4mIzQzOyAgLSB8XG4mIzQzOyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9jbG9jay9yazM1NjgtY3J1LmhcdTAwM2VcbiYjNDM7ICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL3Bvd2VyL3JrMzU2OC1wb3dlci5oXHUwMDNlXG4mIzQzOyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9waHkvcGh5LmhcdTAwM2VcbiYjNDM7XG4mIzQzOyAgICBwY3NAZmRhMDAwMDAge1xuJiM0MzsgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7cm9ja2NoaXAscmszNTY4LXhwY3NcJiMzNDs7XG4mIzQzOyAgICAgIHJlZyA9IFx1MDAzYzB4ZmRhMDAwMDAgMHgyMDAwMDBcdTAwM2U7XG4mIzQzOyAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7ICAgICAgI3NpemUtY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuJiM0MzsgICAgICBjbG9ja3MgPSBcdTAwM2NcdTAwMjZjcnUgUENMS19YUENTXHUwMDNlLCBcdTAwM2NcdTAwMjZjcnUgQ0xLX1hQQ1NfRUVFXHUwMDNlO1xuJiM0MzsgICAgICBjbG9jay1uYW1lcyA9IFwmIzM0O2NzclwmIzM0OywgXCYjMzQ7ZWVlXCYjMzQ7O1xuJiM0MzsgICAgICBwaHlzID0gXHUwMDNjXHUwMDI2Y29tYnBoeTIgUEhZX1RZUEVfU0dNSUlcdTAwM2U7XG4mIzQzOyAgICAgIHBoeS1uYW1lcyA9IFwmIzM0O3NlcmRlc1wmIzM0OztcbiYjNDM7ICAgICAgcG93ZXItZG9tYWlucyA9IFx1MDAzY1x1MDAyNnBvd2VyIFJLMzU2OF9QRF9QSVBFXHUwMDNlO1xuJiM0MztcbiYjNDM7ICAgICAgcGNzLW1paUAwIHtcbiYjNDM7ICAgICAgICByZWcgPSBcdTAwM2MwXHUwMDNlO1xuJiM0MzsgICAgICB9O1xuJiM0MzsgICAgfTtcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkueWFtbFxuaW5kZXggMzc5YjA4YmQ5ZTk3YS4uOGU4OThiY2U5YWY3MyAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWxcbkBAIC04MCw2ICYjNDM7ODAsMTUgQEAgcHJvcGVydGllczpcbiAgICAgZGVzY3JpcHRpb246XG4gICAgICAgU29tZSBhZGRpdGlvbmFsIHBpcGUgc2V0dGluZ3MgYXJlIGFjY2Vzc2VkIHRocm91Z2ggR1JGIHJlZ3MuXG4gXG4mIzQzOyAgcm9ja2NoaXAsc2dtaWktbWFjLXNlbDpcbiYjNDM7ICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQzMlxuJiM0MzsgICAgZW51bTogWzAsIDFdXG4mIzQzOyAgICBkZWZhdWx0OiAxXG4mIzQzOyAgICBkZXNjcmlwdGlvbjpcbiYjNDM7ICAgICAgU2VsZWN0IGdtYWMwIG9yIGdtYWMxIHRvIGJlIHVzZWQgYXMgU0dNSUkgY29udHJvbGxlci5cbiYjNDM7ICAgICAgVGhlIGhhcmR3YXJlIHJlc2V0IHZhbHVlIGlzIEdNQUMxICgxKS4gU2V0IHRoaXMgdG8gMCB0byByb3V0ZVxuJiM0MzsgICAgICBTR01JSSB0byBHTUFDMC5cbiYjNDM7XG4gICBcJiMzNDsjcGh5LWNlbGxzXCYjMzQ7OlxuICAgICBjb25zdDogMVxuIFxuQEAgLTEwNSw2ICYjNDM7MTE0LDEwIEBAIGFsbE9mOlxuICAgICAgICAgICBtYXhJdGVtczogMVxuICAgICAgICAgcmVzZXQtbmFtZXM6XG4gICAgICAgICAgIG1heEl0ZW1zOiAxXG4mIzQzOyAgICAgICAgcm9ja2NoaXAsc2dtaWktbWFjLXNlbDogdHJ1ZVxuJiM0MzsgICAgZWxzZTpcbiYjNDM7ICAgICAgcHJvcGVydGllczpcbiYjNDM7ICAgICAgICByb2NrY2hpcCxzZ21paS1tYWMtc2VsOiBmYWxzZVxuICAgLSBpZjpcbiAgICAgICBwcm9wZXJ0aWVzOlxuICAgICAgICAgY29tcGF0aWJsZTpcbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXG5pbmRleCAzYTE5ZGE3NGQwMGM5Li5jM2IxNzc1MmNjODE3IDEwMDY0NFxuLS0tIGEvTUFJTlRBSU5FUlNcbiYjNDM7JiM0MzsmIzQzOyBiL01BSU5UQUlORVJTXG5AQCAtMjM3NDQsNiAmIzQzOzIzNzQ0LDE1IEBAIFM6XHRNYWludGFpbmVkXG4gRjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9yb2NrY2hpcCxyazM1NzYtc2FpLnlhbWxcbiBGOlx0c291bmQvc29jL3JvY2tjaGlwL3JvY2tjaGlwX3NhaS4qXG4gXG4mIzQzO1JPQ0tDSElQIFhQQ1MgRFJJVkVSXG4mIzQzO006XHRDb2lhIFByYW50IFx1MDAzY2NvaWFwcmFudEBnbWFpbC5jb21cdTAwM2VcbiYjNDM7TDpcdG5ldGRldkB2Z2VyLmtlcm5lbC5vcmdcbiYjNDM7TDpcdGxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmdcbiYjNDM7UzpcdE1haW50YWluZWRcbiYjNDM7RjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sXG4mIzQzO0Y6XHRkcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuY1xuJiM0MztGOlx0aW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaFxuJiM0MztcbiBST0NLRVIgRFJJVkVSXG4gTTpcdEppcmkgUGlya28gXHUwMDNjamlyaUByZXNudWxsaS51c1x1MDAzZVxuIEw6XHRuZXRkZXZAdmdlci5rZXJuZWwub3JnXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC1waG90b25pY2F0LmR0c1xuaW5kZXggNThjMTA1MmJhOGVmMy4uMjVjYWE0NDE5ODg0MyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LXBob3RvbmljYXQuZHRzXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC1waG90b25pY2F0LmR0c1xuQEAgLTMsNiAmIzQzOzMsNyBAQFxuIC9kdHMtdjEvO1xuIFxuICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2xlZHMvY29tbW9uLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9waW5jdHJsL3JvY2tjaGlwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9zb2Mvcm9ja2NoaXAsdm9wMi5oXHUwMDNlXG4gI2luY2x1ZGUgXCYjMzQ7cmszNTY4LmR0c2lcJiMzNDtcbkBAIC0yNDIsNiAmIzQzOzI0Myw3IEBAIFx1MDAyNmNvbWJwaHkxIHtcbiBcbiBcdTAwMjZjb21icGh5MiB7XG4gXHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuJiM0MztcdHJvY2tjaGlwLHNnbWlpLW1hYy1zZWwgPSBcdTAwM2MwXHUwMDNlO1xuIH07XG4gXG4gXHUwMDI2Y3B1MCB7XG5AQCAtMjYwLDkgJiM0MzsyNjIsMTggQEAgXHUwMDI2Y3B1MyB7XG4gXHRjcHUtc3VwcGx5ID0gXHUwMDNjXHUwMDI2dmRkX2NwdVx1MDAzZTtcbiB9O1xuIFxuLS8qIE1vdG9yY29tbSBZVDg1MjFTQyBMQU4gcG9ydCAocmVxdWlyZSBTR01JSSkgKi9cbiYjNDM7LyogTW90b3Jjb21tIFlUODUyMVNDIExBTiBwb3J0ICovXG4gXHUwMDI2Z21hYzAge1xuLVx0c3RhdHVzID0gXCYjMzQ7ZGlzYWJsZWRcJiMzNDs7XG4mIzQzO1x0YXNzaWduZWQtY2xvY2tzID0gXHUwMDNjXHUwMDI2Y3J1IFNDTEtfR01BQzBfUlhfVFhcdTAwM2U7XG4mIzQzO1x0YXNzaWduZWQtY2xvY2stcGFyZW50cyA9IFx1MDAzY1x1MDAyNnhwY3NfZ21hYzBfY2xrXHUwMDNlO1xuJiM0MztcdHBjcy1oYW5kbGUgPSBcdTAwM2NcdTAwMjZ4cGNzX21paTBcdTAwM2U7XG4mIzQzO1x0bWFuYWdlZCA9IFwmIzM0O2luLWJhbmQtc3RhdHVzXCYjMzQ7O1xuJiM0MztcdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzZ21paV9waHlcdTAwM2U7XG4mIzQzO1x0cGh5LW1vZGUgPSBcJiMzNDtzZ21paVwmIzM0OztcbiYjNDM7XHRwaHktc3VwcGx5ID0gXHUwMDNjXHUwMDI2dmNjXzN2M1x1MDAzZTtcbiYjNDM7XHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0OztcbiYjNDM7XHRwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZnbWFjMF9taWltXHUwMDNlO1xuJiM0MztcdHN0YXR1cyA9IFwmIzM0O29rYXlcJiMzNDs7XG4gfTtcbiBcbiAvKiBNb3RvcmNvbW0gWVQ4NTIxU0MgV0FOIHBvcnQgKi9cbkBAIC0zNDEsNiAmIzQzOzM1MiwzNiBAQCBcdTAwMjZpMnMwXzhjaCB7XG4gXHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuIH07XG4gXG4mIzQzO1x1MDAyNm1kaW8wIHtcbiYjNDM7XHRzZ21paV9waHk6IGV0aGVybmV0LXBoeUAzIHtcbiYjNDM7XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtldGhlcm5ldC1waHktaWVlZTgwMi4zLWMyMlwmIzM0OztcbiYjNDM7XHRcdHJlZyA9IFx1MDAzYzB4M1x1MDAzZTtcbiYjNDM7XHRcdG1heC1zcGVlZCA9IFx1MDAzYzEwMDBcdTAwM2U7XG4mIzQzO1x0XHRyZXNldC1hc3NlcnQtdXMgPSBcdTAwM2MyMDAwMFx1MDAzZTtcbiYjNDM7XHRcdHJlc2V0LWRlYXNzZXJ0LXVzID0gXHUwMDNjMTAwMDAwXHUwMDNlO1xuJiM0MztcdFx0cmVzZXQtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvMyBSS19QQzYgR1BJT19BQ1RJVkVfTE9XXHUwMDNlO1xuJiM0MztcbiYjNDM7XHRcdGxlZHMge1xuJiM0MztcdFx0XHQjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4mIzQzO1x0XHRcdCNzaXplLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbiYjNDM7XG4mIzQzO1x0XHRcdGxlZEAxIHtcbiYjNDM7XHRcdFx0XHRyZWcgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MztcdFx0XHRcdGNvbG9yID0gXHUwMDNjTEVEX0NPTE9SX0lEX0FNQkVSXHUwMDNlO1xuJiM0MztcdFx0XHRcdGZ1bmN0aW9uID0gTEVEX0ZVTkNUSU9OX0xBTjtcbiYjNDM7XHRcdFx0XHRkZWZhdWx0LXN0YXRlID0gXCYjMzQ7a2VlcFwmIzM0OztcbiYjNDM7XHRcdFx0fTtcbiYjNDM7XG4mIzQzO1x0XHRcdGxlZEAyIHtcbiYjNDM7XHRcdFx0XHRyZWcgPSBcdTAwM2MyXHUwMDNlO1xuJiM0MztcdFx0XHRcdGNvbG9yID0gXHUwMDNjTEVEX0NPTE9SX0lEX0dSRUVOXHUwMDNlO1xuJiM0MztcdFx0XHRcdGZ1bmN0aW9uID0gTEVEX0ZVTkNUSU9OX0xBTjtcbiYjNDM7XHRcdFx0XHRkZWZhdWx0LXN0YXRlID0gXCYjMzQ7a2VlcFwmIzM0OztcbiYjNDM7XHRcdFx0fTtcbiYjNDM7XHRcdH07XG4mIzQzO1x0fTtcbiYjNDM7fTtcbiYjNDM7XG4gXHUwMDI2bWRpbzEge1xuIFx0cmdtaWlfcGh5OiBldGhlcm5ldC1waHlAMyB7XG4gXHRcdGNvbXBhdGlibGUgPSBcJiMzNDtldGhlcm5ldC1waHktaWVlZTgwMi4zLWMyMlwmIzM0OztcbkBAIC0zNTAsNiAmIzQzOzM5MSwyNSBAQCByZ21paV9waHk6IGV0aGVybmV0LXBoeUAzIHtcbiBcdFx0cmVzZXQtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvNCBSS19QQzAgR1BJT19BQ1RJVkVfTE9XXHUwMDNlO1xuIFx0XHRyeC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzE1MDBcdTAwM2U7XG4gXHRcdHR4LWludGVybmFsLWRlbGF5LXBzID0gXHUwMDNjMTUwMFx1MDAzZTtcbiYjNDM7XG4mIzQzO1x0XHRsZWRzIHtcbiYjNDM7XHRcdFx0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MztcdFx0XHQjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4mIzQzO1xuJiM0MztcdFx0XHRsZWRAMSB7XG4mIzQzO1x0XHRcdFx0cmVnID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7XHRcdFx0XHRjb2xvciA9IFx1MDAzY0xFRF9DT0xPUl9JRF9BTUJFUlx1MDAzZTtcbiYjNDM7XHRcdFx0XHRmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9XQU47XG4mIzQzO1x0XHRcdFx0ZGVmYXVsdC1zdGF0ZSA9IFwmIzM0O2tlZXBcJiMzNDs7XG4mIzQzO1x0XHRcdH07XG4mIzQzO1xuJiM0MztcdFx0XHRsZWRAMiB7XG4mIzQzO1x0XHRcdFx0cmVnID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7XHRcdFx0XHRjb2xvciA9IFx1MDAzY0xFRF9DT0xPUl9JRF9HUkVFTlx1MDAzZTtcbiYjNDM7XHRcdFx0XHRmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9XQU47XG4mIzQzO1x0XHRcdFx0ZGVmYXVsdC1zdGF0ZSA9IFwmIzM0O2tlZXBcJiMzNDs7XG4mIzQzO1x0XHRcdH07XG4mIzQzO1x0XHR9O1xuIFx0fTtcbiB9O1xuIFxuQEAgLTU4NiwzICYjNDM7NjQ2LDEzIEBAIFx1MDAyNnhpbjMyayB7XG4gXHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0OztcbiBcdHBpbmN0cmwtMCA9IFx1MDAzY1x1MDAyNmNsazMya19vdXQxXHUwMDNlO1xuIH07XG4mIzQzO1xuJiM0MztcdTAwMjZ4cGNzIHtcbiYjNDM7XHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuJiM0MztcdHBoeXMgPSBcdTAwM2NcdTAwMjZjb21icGh5MiBQSFlfVFlQRV9TR01JSVx1MDAzZTtcbiYjNDM7XHRwaHktbmFtZXMgPSBcJiMzNDtzZXJkZXNcJiMzNDs7XG4mIzQzO307XG4mIzQzO1xuJiM0MztcdTAwMjZ4cGNzX21paTAge1xuJiM0MztcdHN0YXR1cyA9IFwmIzM0O29rYXlcJiMzNDs7XG4mIzQzO307XG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2lcbmluZGV4IDNiYzY1M2YwMjdmMWYuLjk4OWUxNjRjMGViMzkgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpXG5AQCAtMTEwLDYgJiM0MzsxMTAsNTEgQEAgc2F0YTA6IHNhdGFAZmMwMDAwMDAge1xuIFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0OztcbiBcdH07XG4gXG4mIzQzO1x0eHBjczogcGNzQGZkYTAwMDAwIHtcbiYjNDM7XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtyb2NrY2hpcCxyazM1NjgteHBjc1wmIzM0OztcbiYjNDM7XHRcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7XHRcdCNzaXplLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbiYjNDM7XHRcdHJlZyA9IFx1MDAzYzB4MCAweGZkYTAwMDAwIDB4MCAweDIwMDAwMFx1MDAzZTtcbiYjNDM7XHRcdGNsb2NrcyA9IFx1MDAzY1x1MDAyNmNydSBQQ0xLX1hQQ1NcdTAwM2UsIFx1MDAzY1x1MDAyNmNydSBDTEtfWFBDU19FRUVcdTAwM2U7XG4mIzQzO1x0XHRjbG9jay1uYW1lcyA9IFwmIzM0O2NzclwmIzM0OywgXCYjMzQ7ZWVlXCYjMzQ7O1xuJiM0MztcdFx0cG93ZXItZG9tYWlucyA9IFx1MDAzY1x1MDAyNnBvd2VyIFJLMzU2OF9QRF9QSVBFXHUwMDNlO1xuJiM0MztcdFx0c3RhdHVzID0gXCYjMzQ7ZGlzYWJsZWRcJiMzNDs7XG4mIzQzO1xuJiM0MztcdFx0eHBjc19taWkwOiBwY3MtbWlpQDAge1xuJiM0MztcdFx0XHRyZWcgPSBcdTAwM2MwXHUwMDNlO1xuJiM0MztcdFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0OztcbiYjNDM7XHRcdH07XG4mIzQzO1xuJiM0MztcdFx0eHBjc19taWkxOiBwY3MtbWlpQDEge1xuJiM0MztcdFx0XHRyZWcgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MztcdFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0OztcbiYjNDM7XHRcdH07XG4mIzQzO1xuJiM0MztcdFx0eHBjc19taWkyOiBwY3MtbWlpQDIge1xuJiM0MztcdFx0XHRyZWcgPSBcdTAwM2MyXHUwMDNlO1xuJiM0MztcdFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0OztcbiYjNDM7XHRcdH07XG4mIzQzO1xuJiM0MztcdFx0eHBjc19taWkzOiBwY3MtbWlpQDMge1xuJiM0MztcdFx0XHRyZWcgPSBcdTAwM2MzXHUwMDNlO1xuJiM0MztcdFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0OztcbiYjNDM7XHRcdH07XG4mIzQzO1x0fTtcbiYjNDM7XG4mIzQzO1x0eHBjc19nbWFjMF9jbGs6IHhwY3MtZ21hYzAtY2xvY2sge1xuJiM0MztcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O2ZpeGVkLWNsb2NrXCYjMzQ7O1xuJiM0MztcdFx0Y2xvY2stZnJlcXVlbmN5ID0gXHUwMDNjMTI1MDAwMDAwXHUwMDNlO1xuJiM0MztcdFx0Y2xvY2stb3V0cHV0LW5hbWVzID0gXCYjMzQ7Y2xrX2dtYWMwX3hwY3NfbWlpXCYjMzQ7O1xuJiM0MztcdFx0I2Nsb2NrLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbiYjNDM7XHR9O1xuJiM0MztcbiYjNDM7XHR4cGNzX2dtYWMxX2NsazogeHBjcy1nbWFjMS1jbG9jayB7XG4mIzQzO1x0XHRjb21wYXRpYmxlID0gXCYjMzQ7Zml4ZWQtY2xvY2tcJiMzNDs7XG4mIzQzO1x0XHRjbG9jay1mcmVxdWVuY3kgPSBcdTAwM2MxMjUwMDAwMDBcdTAwM2U7XG4mIzQzO1x0XHRjbG9jay1vdXRwdXQtbmFtZXMgPSBcJiMzNDtjbGtfZ21hYzFfeHBjc19taWlcJiMzNDs7XG4mIzQzO1x0XHQjY2xvY2stY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuJiM0MztcdH07XG4mIzQzO1xuIFx0cGlwZV9waHlfZ3JmMDogc3lzY29uQGZkYzcwMDAwIHtcbiBcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3JvY2tjaGlwLHJrMzU2OC1waXBlLXBoeS1ncmZcJiMzNDssIFwmIzM0O3N5c2NvblwmIzM0OztcbiBcdFx0cmVnID0gXHUwMDNjMHgwIDB4ZmRjNzAwMDAgMHgwIDB4MTAwMFx1MDAzZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1xuaW5kZXggZTNkZDVhZGRhNWFjYS4uNTA4OGFjYzA2OTgyZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcbkBAIC0xNzAsNiAmIzQzOzE3MCw3IEBAIGNvbmZpZyBEV01BQ19ST0NLQ0hJUFxuIFx0ZGVmYXVsdCBBUkNIX1JPQ0tDSElQXG4gXHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1QpXG4gXHRzZWxlY3QgTUZEX1NZU0NPTlxuJiM0MztcdHNlbGVjdCBQQ1NfWFBDU19ST0NLQ0hJUFxuIFx0aGVscFxuIFx0ICBTdXBwb3J0IGZvciBFdGhlcm5ldCBjb250cm9sbGVyIG9uIFJvY2tjaGlwIFJLMzI4OCBTb0MuXG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcbmluZGV4IGY1ZjlmYTY3ZWNkNzcuLmZkNWYwMWM4OTQxYzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG5AQCAtNjAzLDEzICYjNDM7NjAzLDQ3IEBAIHN0YXRpYyB2b2lkIGNvbW1vbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxuIFx0cGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZW5lZWRzX3Jlc2V0ID0gdHJ1ZTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgaW50ZWxfbWdiZV9wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZGV2bm9kZSwgKnBjc25vZGU7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3MgKnhwY3MgPSBOVUxMO1xuJiM0MztcdGludCBhZGRyO1xuJiM0MztcbiYjNDM7XHRkZXZub2RlID0gZGV2X2Z3bm9kZShwcml2LVx1MDAzZWRldmljZSk7XG4mIzQzO1xuJiM0MztcdGlmIChmd25vZGVfcHJvcGVydHlfcHJlc2VudChkZXZub2RlLCBcJiMzNDtwY3MtaGFuZGxlXCYjMzQ7KSkge1xuJiM0MztcdFx0cGNzbm9kZSA9IGZ3bm9kZV9maW5kX3JlZmVyZW5jZShkZXZub2RlLCBcJiMzNDtwY3MtaGFuZGxlXCYjMzQ7LCAwKTtcbiYjNDM7XHRcdHhwY3MgPSB4cGNzX2NyZWF0ZV9md25vZGUocGNzbm9kZSk7XG4mIzQzO1x0XHRmd25vZGVfaGFuZGxlX3B1dChwY3Nub2RlKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0YWRkciA9IGZmcyhwcml2LVx1MDAzZXBsYXQtXHUwMDNlbWRpb19idXNfZGF0YS1cdTAwM2VwY3NfbWFzaykgLSAxO1xuJiM0MztcdFx0eHBjcyA9IHhwY3NfY3JlYXRlX21kaW9kZXYocHJpdi1cdTAwM2VtaWksIGFkZHIpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKElTX0VSUih4cGNzKSlcbiYjNDM7XHRcdHJldHVybiBQVFJfRVJSKHhwY3MpO1xuJiM0MztcbiYjNDM7XHR4cGNzX2NvbmZpZ19lZWVfbXVsdF9mYWN0KHhwY3MsIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtdWx0X2ZhY3RfMTAwbnMpO1xuJiM0MztcbiYjNDM7XHRwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MgPSB4cGNzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBpbnRlbF9tZ2JlX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiYjNDM7e1xuJiM0MztcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHR4cGNzX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKTtcbiYjNDM7XHRwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MgPSBOVUxMO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKmludGVsX21nYmVfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdFx0XHRcdFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuLVx0LyogcGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZWhhc194cGNzIGhhcyBiZWVuIHNldCB0cnVlLCBzbyB0aGVyZVxuLVx0ICogc2hvdWxkIGFsd2F5cyBiZSBhbiBYUENTLiBUaGUgb3JpZ2luYWwgY29kZSB3b3VsZCBhbHdheXNcbi1cdCAqIHJldHVybiB0aGlzIGlmIHByZXNlbnQuXG4tXHQgKi9cbiYjNDM7XHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNleHBjcylcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcbiBcdHJldHVybiB4cGNzX3RvX3BoeWxpbmtfcGNzKHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyk7XG4gfVxuIFxuQEAgLTczMyw2ICYjNDM7NzY3LDggQEAgc3RhdGljIGludCBpbnRlbF9tZ2JlX2NvbW1vbl9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0ICAgIHBsYXQtXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYKSB7XG4gXHRcdHBsYXQtXHUwMDNlbWRpb19idXNfZGF0YS1cdTAwM2VwY3NfbWFzayA9IEJJVF9VMzIoSU5URUxfTUdCRV9YUENTX0FERFIpO1xuIFx0XHRwbGF0LVx1MDAzZWRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcbiYjNDM7XHRcdHBsYXQtXHUwMDNlcGNzX2luaXQgPSBpbnRlbF9tZ2JlX3Bjc19pbml0O1xuJiM0MztcdFx0cGxhdC1cdTAwM2VwY3NfZXhpdCA9IGludGVsX21nYmVfcGNzX2V4aXQ7XG4gXHRcdHBsYXQtXHUwMDNlc2VsZWN0X3BjcyA9IGludGVsX21nYmVfc2VsZWN0X3BjcztcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmNcbmluZGV4IDE5ZjM0ZTE4YmZlZjIuLjlhZjMyYzI2ZjljMTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguY1xuQEAgLTgxLDggJiM0Mzs4MSwxMSBAQCBzdGF0aWMgaW50IHJlbmVzYXNfZ21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXG4gc3RhdGljIHZvaWQgcmVuZXNhc19nbWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiB7XG4tXHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcylcbi1cdFx0bWlpY19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuJiM0MztcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcylcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0bWlpY19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuJiM0MztcdHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MgPSBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpyZW5lc2FzX2dtYWNfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmNcbmluZGV4IDhkNzA0MmU2ODkyNjEuLmU0N2NhMWJlYzViOGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jXG5AQCAtMjAsNiAmIzQzOzIwLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbWZkL3N5c2Nvbi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmVnbWFwLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcGNzL3Bjcy14cGNzLXJrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV9ydW50aW1lLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDtzdG1tYWNfcGxhdGZvcm0uaFwmIzM0O1xuQEAgLTQ3LDYgJiM0Mzs0OCw3IEBAIHN0cnVjdCBya19nbWFjX29wcyB7XG4gXHR2b2lkICgqc2V0X3RvX3JnbWlpKShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdixcbiBcdFx0XHQgICAgIGludCB0eF9kZWxheSwgaW50IHJ4X2RlbGF5KTtcbiBcdHZvaWQgKCpzZXRfdG9fcm1paSkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpO1xuJiM0MztcdHZvaWQgKCpzZXRfdG9fc2dtaWkpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KTtcbiBcdGludCAoKnNldF9zcGVlZCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsXG4gXHRcdFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsIGludCBzcGVlZCk7XG4gXHR2b2lkICgqaW50ZWdyYXRlZF9waHlfcG93ZXJ1cCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpO1xuQEAgLTYzLDYgJiM0Mzs2NSw3IEBAIHN0cnVjdCBya19nbWFjX29wcyB7XG4gXHRib29sIGNsb2NrX2dyZl9yZWdfaW5fcGhwO1xuIFx0Ym9vbCBzdXBwb3J0c19yZ21paTtcbiBcdGJvb2wgc3VwcG9ydHNfcm1paTtcbiYjNDM7XHRib29sIHN1cHBvcnRzX3NnbWlpO1xuIFx0Ym9vbCBwaHBfZ3JmX3JlcXVpcmVkO1xuIFx0Ym9vbCByZWdzX3ZhbGlkO1xuIFx0dTMyIHJlZ3NbXTtcbkBAIC05OCw2ICYjNDM7MTAxLDcgQEAgc3RydWN0IHJrX3ByaXZfZGF0YSB7XG4gXHRib29sIGludGVncmF0ZWRfcGh5O1xuIFx0Ym9vbCBzdXBwb3J0c19yZ21paTtcbiBcdGJvb2wgc3VwcG9ydHNfcm1paTtcbiYjNDM7XHRib29sIHN1cHBvcnRzX3NnbWlpO1xuIFxuIFx0c3RydWN0IGNsa19idWxrX2RhdGEgKmNsa3M7XG4gXHRpbnQgbnVtX2Nsa3M7XG5AQCAtODA5LDYgJiM0Mzs4MTMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJrX2dtYWNfb3BzIHJrMzUyOF9vcHMgPSB7XG4gI2RlZmluZSBSSzM1NjhfR1JGX0dNQUMxX0NPTjFcdFx0MHgwMzhjXG4gXG4gLyogUkszNTY4X0dSRl9HTUFDMF9DT04xIFx1MDAyNlx1MDAyNiBSSzM1NjhfR1JGX0dNQUMxX0NPTjEgKi9cbiYjNDM7I2RlZmluZSBSSzM1NjhfR01BQ19NT0RFX1JNSUlfUkdNSUlcdFx0R1JGX0NMUl9CSVQoNylcbiYjNDM7I2RlZmluZSBSSzM1NjhfR01BQ19NT0RFX1NHTUlJX1FTR01JSVx0XHRHUkZfQklUKDcpXG4gI2RlZmluZSBSSzM1NjhfR01BQ19GTE9XX0NUUkxcdFx0XHRHUkZfQklUKDMpXG4gI2RlZmluZSBSSzM1NjhfR01BQ19GTE9XX0NUUkxfQ0xSXHRcdEdSRl9DTFJfQklUKDMpXG4gI2RlZmluZSBSSzM1NjhfR01BQ19SWENMS19ETFlfRU5BQkxFXHRcdEdSRl9CSVQoMSlcbkBAIC04NTEsMTggJiM0Mzs4NTcsMzIgQEAgc3RhdGljIHZvaWQgcmszNTY4X3NldF90b19yZ21paShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdixcbiBcdFx0ICAgICBSSzM1NjhfR01BQ19DTEtfVFhfRExfQ0ZHKHR4X2RlbGF5KSk7XG4gXG4gXHRyZWdtYXBfd3JpdGUoYnNwX3ByaXYtXHUwMDNlZ3JmLCBjb24xLFxuJiM0MztcdFx0ICAgICBSSzM1NjhfR01BQ19NT0RFX1JNSUlfUkdNSUkgfFxuIFx0XHQgICAgIFJLMzU2OF9HTUFDX1JYQ0xLX0RMWV9FTkFCTEUgfFxuIFx0XHQgICAgIFJLMzU2OF9HTUFDX1RYQ0xLX0RMWV9FTkFCTEUpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgcmszNTY4X3NldF90b19zZ21paShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiYjNDM7e1xuJiM0MztcdHUzMiBjb24xO1xuJiM0MztcbiYjNDM7XHRjb24xID0gKGJzcF9wcml2LVx1MDAzZWlkID09IDEpID8gUkszNTY4X0dSRl9HTUFDMV9DT04xIDpcbiYjNDM7XHRcdFx0XHQgICAgIFJLMzU2OF9HUkZfR01BQzBfQ09OMTtcbiYjNDM7XG4mIzQzO1x0cmVnbWFwX3dyaXRlKGJzcF9wcml2LVx1MDAzZWdyZiwgY29uMSwgUkszNTY4X0dNQUNfTU9ERV9TR01JSV9RU0dNSUkpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmtfZ21hY19vcHMgcmszNTY4X29wcyA9IHtcbiBcdC5pbml0ID0gcmszNTY4X2luaXQsXG4gXHQuc2V0X3RvX3JnbWlpID0gcmszNTY4X3NldF90b19yZ21paSxcbiYjNDM7XHQuc2V0X3RvX3NnbWlpID0gcmszNTY4X3NldF90b19zZ21paSxcbiYjNDM7XG4gXHQuc2V0X3NwZWVkID0gcmtfc2V0X2Nsa19tYWNfc3BlZWQsXG4gXG4gXHQuZ21hY19waHlfaW50Zl9zZWxfbWFzayA9IEdFTk1BU0tfVTE2KDYsIDQpLFxuIFxuIFx0LnN1cHBvcnRzX3JtaWkgPSB0cnVlLFxuJiM0MztcdC5zdXBwb3J0c19zZ21paSA9IHRydWUsXG4gXG4gXHQucmVnc192YWxpZCA9IHRydWUsXG4gXHQucmVncyA9IHtcbkBAIC0xMjA4LDYgJiM0MzsxMjI4LDQzIEBAIHN0YXRpYyB2b2lkIHJrX3BoeV9wb3dlcmRvd24oc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpXG4gXHRcdGRldl9lcnIoYnNwX3ByaXYtXHUwMDNlZGV2LCBcJiMzNDtmYWlsIHRvIGRpc2FibGUgcGh5LXN1cHBseVxcblwmIzM0Oyk7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IHJrX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBwcml2LVx1MDAzZWRldmljZS1cdTAwM2VvZl9ub2RlO1xuJiM0MztcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25vZGU7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3MgKnhwY3M7XG4mIzQzO1xuJiM0MztcdHBjc19ub2RlID0gb2ZfcGFyc2VfcGhhbmRsZShucCwgXCYjMzQ7cGNzLWhhbmRsZVwmIzM0OywgMCk7XG4mIzQzO1x0aWYgKCFwY3Nfbm9kZSlcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcbiYjNDM7XHR4cGNzID0geHBjc19ya19jcmVhdGUocHJpdi1cdTAwM2VkZXZpY2UsIHBjc19ub2RlKTtcbiYjNDM7XHRvZl9ub2RlX3B1dChwY3Nfbm9kZSk7XG4mIzQzO1x0aWYgKElTX0VSUih4cGNzKSlcbiYjNDM7XHRcdHJldHVybiBQVFJfRVJSKHhwY3MpO1xuJiM0MztcbiYjNDM7XHRwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MgPSB4cGNzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBya19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4mIzQzO3tcbiYjNDM7XHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNleHBjcylcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0eHBjc19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyk7XG4mIzQzO1x0cHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzID0gTlVMTDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqcmtfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4mIzQzO1x0XHRcdFx0XHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiYjNDM7e1xuJiM0MztcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKVxuJiM0MztcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1xuJiM0MztcdHJldHVybiB4cGNzX3RvX3BoeWxpbmtfcGNzKHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHN0cnVjdCBya19wcml2X2RhdGEgKnJrX2dtYWNfc2V0dXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbiBcdFx0XHRcdFx0ICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQsXG4gXHRcdFx0XHRcdCAgY29uc3Qgc3RydWN0IHJrX2dtYWNfb3BzICpvcHMpXG5AQCAtMTMzMCw2ICYjNDM7MTM4Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgcmtfcHJpdl9kYXRhICpya19nbWFjX3NldHVwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4gXG4gXHRic3BfcHJpdi1cdTAwM2VzdXBwb3J0c19yZ21paSA9IG9wcy1cdTAwM2VzdXBwb3J0c19yZ21paSB8fCAhIW9wcy1cdTAwM2VzZXRfdG9fcmdtaWk7XG4gXHRic3BfcHJpdi1cdTAwM2VzdXBwb3J0c19ybWlpID0gb3BzLVx1MDAzZXN1cHBvcnRzX3JtaWkgfHwgISFvcHMtXHUwMDNlc2V0X3RvX3JtaWk7XG4mIzQzO1x0YnNwX3ByaXYtXHUwMDNlc3VwcG9ydHNfc2dtaWkgPSBvcHMtXHUwMDNlc3VwcG9ydHNfc2dtaWkgfHwgISFvcHMtXHUwMDNlc2V0X3RvX3NnbWlpO1xuIFxuIFx0aWYgKG9wcy1cdTAwM2Vpbml0KSB7XG4gXHRcdHJldCA9IG9wcy1cdTAwM2Vpbml0KGJzcF9wcml2KTtcbkBAIC0xMzYxLDYgJiM0MzsxNDE5LDEwIEBAIHN0YXRpYyBpbnQgcmtfZ21hY19jaGVja19vcHMoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpXG4gXHRcdGlmICghYnNwX3ByaXYtXHUwMDNlc3VwcG9ydHNfcm1paSlcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4mIzQzO1x0XHRpZiAoIWJzcF9wcml2LVx1MDAzZXN1cHBvcnRzX3NnbWlpKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiBcdFx0ZGV2X2Vycihic3BfcHJpdi1cdTAwM2VkZXYsXG4gXHRcdFx0XCYjMzQ7dW5zdXBwb3J0ZWQgaW50ZXJmYWNlICVkXCYjMzQ7LCBic3BfcHJpdi1cdTAwM2VwaHlfaWZhY2UpO1xuQEAgLTEzNzksMTYgJiM0MzsxNDQxLDE5IEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbiYjNDM7XHRyZXQgPSBnbWFjX2Nsa19lbmFibGUoYnNwX3ByaXYsIHRydWUpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRpZiAoYnNwX3ByaXYtXHUwMDNlcGh5X2lmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSlcbiYjNDM7XHRcdGdvdG8gc2V0X21vZGU7XG4mIzQzO1xuIFx0cmV0ID0gcmtfZ2V0X3BoeV9pbnRmX3NlbChic3BfcHJpdi1cdTAwM2VwaHlfaWZhY2UpO1xuIFx0aWYgKHJldCBcdTAwM2MgMClcbi1cdFx0cmV0dXJuIHJldDtcbiYjNDM7XHRcdGdvdG8gY2xrX2Rpc2FibGU7XG4gXG4gXHRpbnRmID0gcmV0O1xuIFxuLVx0cmV0ID0gZ21hY19jbGtfZW5hYmxlKGJzcF9wcml2LCB0cnVlKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4gXHRpZiAoYnNwX3ByaXYtXHUwMDNlZ21hY19waHlfaW50Zl9zZWxfbWFzayB8fFxuIFx0ICAgIGJzcF9wcml2LVx1MDAzZWdtYWNfcm1paV9tb2RlX21hc2spIHtcbiBcdFx0LyogSWYgZGVmaW5lZCwgZW5jb2RlIHRoZSBwaHlfaW50Zl9zZWwgdmFsdWUgKi9cbkBAIC0xMzk5LDEwICYjNDM7MTQ2NCw4IEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuIFx0XHRcdFx0ICAgICAgYnNwX3ByaXYtXHUwMDNlZ21hY19ybWlpX21vZGVfbWFzayk7XG4gXG4gXHRcdHJldCA9IHJrX3dyaXRlX2dtYWNfZ3JmX3JlZyhic3BfcHJpdiwgdmFsKTtcbi1cdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuLVx0XHRcdGdtYWNfY2xrX2VuYWJsZShic3BfcHJpdiwgZmFsc2UpO1xuLVx0XHRcdHJldHVybiByZXQ7XG4tXHRcdH1cbiYjNDM7XHRcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRcdGdvdG8gY2xrX2Rpc2FibGU7XG4gXHR9XG4gXG4gXHRpZiAoYnNwX3ByaXYtXHUwMDNlY2xvY2sucm1paV9tb2RlX21hc2spIHtcbkBAIC0xNDEwLDEzICYjNDM7MTQ3MywxMiBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcG93ZXJ1cChzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiBcdFx0XHRcdCAgICAgYnNwX3ByaXYtXHUwMDNlY2xvY2sucm1paV9tb2RlX21hc2spO1xuIFxuIFx0XHRyZXQgPSBya193cml0ZV9jbG9ja19ncmZfcmVnKGJzcF9wcml2LCB2YWwpO1xuLVx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tXHRcdFx0Z21hY19jbGtfZW5hYmxlKGJzcF9wcml2LCBmYWxzZSk7XG4tXHRcdFx0cmV0dXJuIHJldDtcbi1cdFx0fVxuJiM0MztcdFx0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdFx0Z290byBjbGtfZGlzYWJsZTtcbiBcdH1cbiBcbi1cdC8qcm1paSBvciByZ21paSovXG4mIzQzO3NldF9tb2RlOlxuJiM0MztcdC8qIHJtaWksIHJnbWlpLCBzZ21paSAqL1xuIFx0c3dpdGNoIChic3BfcHJpdi1cdTAwM2VwaHlfaWZhY2UpIHtcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuIFx0XHRkZXZfaW5mbyhkZXYsIFwmIzM0O2luaXQgZm9yIFJHTUlJXFxuXCYjMzQ7KTtcbkBAIC0xNDQ3LDE1ICYjNDM7MTUwOSwyMCBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcG93ZXJ1cChzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiBcdFx0aWYgKGJzcF9wcml2LVx1MDAzZW9wcy1cdTAwM2VzZXRfdG9fcm1paSlcbiBcdFx0XHRic3BfcHJpdi1cdTAwM2VvcHMtXHUwMDNlc2V0X3RvX3JtaWkoYnNwX3ByaXYpO1xuIFx0XHRicmVhaztcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbiYjNDM7XHRcdGRldl9pbmZvKGRldiwgXCYjMzQ7aW5pdCBmb3IgU0dNSUlcXG5cJiMzNDspO1xuJiM0MztcdFx0aWYgKGJzcF9wcml2LVx1MDAzZW9wcy1cdTAwM2VzZXRfdG9fc2dtaWkpXG4mIzQzO1x0XHRcdGJzcF9wcml2LVx1MDAzZW9wcy1cdTAwM2VzZXRfdG9fc2dtaWkoYnNwX3ByaXYpO1xuJiM0MztcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7Tk8gaW50ZXJmYWNlIGRlZmluZWQhXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldCA9IC1FSU5WQUw7XG4mIzQzO1x0XHRnb3RvIGNsa19kaXNhYmxlO1xuIFx0fVxuIFxuIFx0cmV0ID0gcmtfcGh5X3Bvd2VydXAoYnNwX3ByaXYpO1xuLVx0aWYgKHJldCkge1xuLVx0XHRnbWFjX2Nsa19lbmFibGUoYnNwX3ByaXYsIGZhbHNlKTtcbi1cdFx0cmV0dXJuIHJldDtcbi1cdH1cbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0Z290byBjbGtfZGlzYWJsZTtcbiBcbiBcdHBtX3J1bnRpbWVfZ2V0X3N5bmMoZGV2KTtcbiBcbkBAIC0xNDYzLDYgJiM0MzsxNTMwLDEwIEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuIFx0XHRic3BfcHJpdi1cdTAwM2VvcHMtXHUwMDNlaW50ZWdyYXRlZF9waHlfcG93ZXJ1cChic3BfcHJpdik7XG4gXG4gXHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO2Nsa19kaXNhYmxlOlxuJiM0MztcdGdtYWNfY2xrX2VuYWJsZShic3BfcHJpdiwgZmFsc2UpO1xuJiM0MztcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJrX2dtYWNfcG93ZXJkb3duKHN0cnVjdCBya19wcml2X2RhdGEgKmdtYWMpXG5AQCAtMTQ4Niw2ICYjNDM7MTU1Nyw5IEBAIHN0YXRpYyB2b2lkIHJrX2dldF9pbnRlcmZhY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCAqYnNwX3ByaXYsXG4gXG4gXHRpZiAocmstXHUwMDNlc3VwcG9ydHNfcm1paSlcbiBcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJLCBpbnRlcmZhY2VzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHJrLVx1MDAzZXN1cHBvcnRzX3NnbWlpKVxuJiM0MztcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSwgaW50ZXJmYWNlcyk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgcmtfc2V0X2Nsa190eF9yYXRlKHZvaWQgKmJzcF9wcml2Xywgc3RydWN0IGNsayAqY2xrX3R4X2ksXG5AQCAtMTYwMiw2ICYjNDM7MTY3NiwxNyBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdHBsYXRfZGF0LVx1MDAzZXN1c3BlbmQgPSBya19nbWFjX3N1c3BlbmQ7XG4gXHRwbGF0X2RhdC1cdTAwM2VyZXN1bWUgPSBya19nbWFjX3Jlc3VtZTtcbiBcbiYjNDM7XHRpZiAocGxhdF9kYXQtXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHtcbiYjNDM7XHRcdC8qIFNHTUlJIGNsb2NrIGFsd2F5cyBydW5zIGF0IDEyNSBNSHogKi9cbiYjNDM7XHRcdHBsYXRfZGF0LVx1MDAzZXNldF9jbGtfdHhfcmF0ZSA9IE5VTEw7XG4mIzQzO1xuJiM0MztcdFx0LyogU0dNSUkgcmVxdWlyZXMgYSBQQ1MgKi9cbiYjNDM7XHRcdHBsYXRfZGF0LVx1MDAzZWRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcbiYjNDM7XHRcdHBsYXRfZGF0LVx1MDAzZXBjc19pbml0ID0gcmtfcGNzX2luaXQ7XG4mIzQzO1x0XHRwbGF0X2RhdC1cdTAwM2VwY3NfZXhpdCA9IHJrX3Bjc19leGl0O1xuJiM0MztcdFx0cGxhdF9kYXQtXHUwMDNlc2VsZWN0X3BjcyA9IHJrX3NlbGVjdF9wY3M7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHBsYXRfZGF0LVx1MDAzZWJzcF9wcml2ID0gcmtfZ21hY19zZXR1cChwZGV2LCBwbGF0X2RhdCwgZGF0YSk7XG4gXHRpZiAoSVNfRVJSKHBsYXRfZGF0LVx1MDAzZWJzcF9wcml2KSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIocGxhdF9kYXQtXHUwMDNlYnNwX3ByaXYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuY1xuaW5kZXggMTM2MzQ5NjViYzE5YS4uMDFkZjQ3NzZlZGIzZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jXG5AQCAtMzUsOCAmIzQzOzM1LDExIEBAIHN0YXRpYyBpbnQgcnpuMV9kd21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXG4gc3RhdGljIHZvaWQgcnpuMV9kd21hY19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4ge1xuLVx0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4tXHRcdG1paWNfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKTtcbiYjNDM7XHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdG1paWNfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKTtcbiYjNDM7XHRwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzID0gTlVMTDtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqcnpuMV9kd21hY19zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmNcbmluZGV4IDFkN2YwYTU3ZDI4ODkuLjZkNGJjMWZlOGY3NTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuY1xuQEAgLTUzOSw4ICYjNDM7NTM5LDExIEBAIHN0YXRpYyBpbnQgc29jZnBnYV9kd21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXG4gc3RhdGljIHZvaWQgc29jZnBnYV9kd21hY19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4ge1xuLVx0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4tXHRcdGx5bnhfcGNzX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcyk7XG4mIzQzO1x0aWYgKCFwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRseW54X3Bjc19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuJiM0MztcdHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MgPSBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpzb2NmcGdhX2R3bWFjX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jXG5pbmRleCBhZmU5OGZmNWJkY2IwLi5kMmY3N2YwYzIyM2E3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uY1xuQEAgLTQyNiwzNiAmIzQzOzQyNiwxNSBAQCBpbnQgc3RtbWFjX21kaW9fcmVzZXQoc3RydWN0IG1paV9idXMgKmJ1cylcbiBpbnQgc3RtbWFjX3Bjc19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiB7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbi1cdHN0cnVjdCBmd25vZGVfaGFuZGxlICpkZXZub2RlLCAqcGNzbm9kZTtcbi1cdHN0cnVjdCBkd194cGNzICp4cGNzID0gTlVMTDtcbi1cdGludCBhZGRyLCByZXQ7XG4tXG4tXHRkZXZub2RlID0gZGV2X2Z3bm9kZShwcml2LVx1MDAzZWRldmljZSk7XG4tXG4tXHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19pbml0KSB7XG4tXHRcdHJldCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwY3NfaW5pdChwcml2KTtcbi1cdH0gZWxzZSBpZiAoZndub2RlX3Byb3BlcnR5X3ByZXNlbnQoZGV2bm9kZSwgXCYjMzQ7cGNzLWhhbmRsZVwmIzM0OykpIHtcbi1cdFx0cGNzbm9kZSA9IGZ3bm9kZV9maW5kX3JlZmVyZW5jZShkZXZub2RlLCBcJiMzNDtwY3MtaGFuZGxlXCYjMzQ7LCAwKTtcbi1cdFx0eHBjcyA9IHhwY3NfY3JlYXRlX2Z3bm9kZShwY3Nub2RlKTtcbi1cdFx0Zndub2RlX2hhbmRsZV9wdXQocGNzbm9kZSk7XG4tXHRcdHJldCA9IFBUUl9FUlJfT1JfWkVSTyh4cGNzKTtcbi1cdH0gZWxzZSBpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEgXHUwMDI2XHUwMDI2XG4tXHRcdCAgIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZXBjc19tYXNrKSB7XG4tXHRcdGFkZHIgPSBmZnMocHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEtXHUwMDNlcGNzX21hc2spIC0gMTtcbi1cdFx0eHBjcyA9IHhwY3NfY3JlYXRlX21kaW9kZXYocHJpdi1cdTAwM2VtaWksIGFkZHIpO1xuLVx0XHRyZXQgPSBQVFJfRVJSX09SX1pFUk8oeHBjcyk7XG4tXHR9IGVsc2Uge1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGlmICghcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19pbml0KVxuIFx0XHRyZXR1cm4gMDtcbi1cdH1cbiBcbiYjNDM7XHRyZXQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2luaXQocHJpdik7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2LVx1MDAzZWRldmljZSwgcmV0LCBcJiMzNDtObyB4UENTIGZvdW5kXFxuXCYjMzQ7KTtcbiBcbi1cdGlmICh4cGNzKVxuLVx0XHR4cGNzX2NvbmZpZ19lZWVfbXVsdF9mYWN0KHhwY3MsIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtdWx0X2ZhY3RfMTAwbnMpO1xuLVxuLVx0cHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzID0geHBjcztcbi1cbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC00NjMsMTQgJiM0Mzs0NDIsMTAgQEAgdm9pZCBzdG1tYWNfcGNzX2NsZWFuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIHtcbiBcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuIFxuLVx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwY3NfZXhpdClcbi1cdFx0cHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19leGl0KHByaXYpO1xuLVxuLVx0aWYgKCFwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MpXG4mIzQzO1x0aWYgKCFwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2V4aXQpXG4gXHRcdHJldHVybjtcbiBcbi1cdHhwY3NfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MpO1xuLVx0cHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzID0gTlVMTDtcbiYjNDM7XHRwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2V4aXQocHJpdik7XG4gfVxuIFxuIHN0cnVjdCBzdG1tYWNfY2xrX3JhdGUge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnIGIvZHJpdmVycy9uZXQvcGNzL0tjb25maWdcbmluZGV4IGU0MTdmZDY2ZjY2MGEuLjg4YmM0MDc5MWU2OWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGNzL0tjb25maWdcbkBAIC0xMiw2ICYjNDM7MTIsMjkgQEAgY29uZmlnIFBDU19YUENTXG4gXHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgZHJpdmVyIGFuZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBTeW5vcHN5c1xuIFx0ICBEZXNpZ25XYXJlIFhQQ1MgY29udHJvbGxlcnMuXG4gXG4mIzQzO2lmIFBDU19YUENTXG4mIzQzO1xuJiM0Mztjb25maWcgUENTX1hQQ1NfUExBVEZPUk1cbiYjNDM7XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIFhQQ1MgY29udHJvbGxlciBzdXBwb3J0XCYjMzQ7XG4mIzQzO1x0ZGVmYXVsdCBQQ1NfWFBDU1xuJiM0MztcdGhlbHBcbiYjNDM7XHQgIEdlbmVyaWMgRFdYUENTIGRyaXZlciBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJiMzOTt0IHJlcXVpcmUgYW55XG4mIzQzO1x0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXG4mIzQzO1x0ICBkYXRhIGZvciBzZXR1cC5cbiYjNDM7XG4mIzQzO1x0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuJiM0MztcbiYjNDM7Y29uZmlnIFBDU19YUENTX1JPQ0tDSElQXG4mIzQzO1x0dHJpc3RhdGUgXCYjMzQ7Um9ja2NoaXAgWFBDUyBjb250cm9sbGVyIHN1cHBvcnRcJiMzNDtcbiYjNDM7XHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcbiYjNDM7XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1QpXG4mIzQzO1x0aGVscFxuJiM0MztcdCAgU3VwcG9ydCBmb3IgWFBDUyBjb250cm9sbGVyIG9uIFJvY2tjaGlwIFJLMzU2eCBTb0MuXG4mIzQzO1xuJiM0MztcdCAgSWYgeW91IGhhdmUgYSBSb2NrY2hpcCBTb0Mgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuJiM0MztcbiYjNDM7ZW5kaWYgIyBQQ1NfWFBDU1xuJiM0MztcbiBjb25maWcgUENTX0xZTlhcbiBcdHRyaXN0YXRlXG4gXHRoZWxwXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlIGIvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlXG5pbmRleCA0Zjc5MjA2MThiOTAwLi5jODA5YjdmOTQyYTUxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGVcbkBAIC0xLDEwICYjNDM7MSw5IEBAXG4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICMgTWFrZWZpbGUgZm9yIExpbnV4IFBDUyBkcml2ZXJzXG4gXG4tcGNzX3hwY3MtJChDT05GSUdfUENTX1hQQ1MpXHQ6PSBwY3MteHBjcy5vIHBjcy14cGNzLXBsYXQubyBcXFxuLVx0XHRcdFx0ICAgcGNzLXhwY3MtbnhwLm8gcGNzLXhwY3Mtd3gub1xuLVxuLW9iai0kKENPTkZJR19QQ1NfWFBDUylcdFx0JiM0Mzs9IHBjc194cGNzLm9cbiYjNDM7b2JqLSQoQ09ORklHX1BDU19YUENTKSAmIzQzOz0gcGNzLXhwY3MubyBwY3MteHBjcy1ueHAubyBwY3MteHBjcy13eC5vXG4mIzQzO29iai0kKENPTkZJR19QQ1NfWFBDU19QTEFURk9STSkgJiM0Mzs9IHBjcy14cGNzLXBsYXQub1xuJiM0MztvYmotJChDT05GSUdfUENTX1hQQ1NfUk9DS0NISVApICYjNDM7PSBwY3MteHBjcy1yay5vXG4gb2JqLSQoQ09ORklHX1BDU19MWU5YKVx0XHQmIzQzOz0gcGNzLWx5bngub1xuIG9iai0kKENPTkZJR19QQ1NfTVRLX0xZTlhJKVx0JiM0Mzs9IHBjcy1tdGstbHlueGkub1xuIG9iai0kKENPTkZJR19QQ1NfUlpOMV9NSUlDKVx0JiM0Mzs9IHBjcy1yem4xLW1paWMub1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1yay5jIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi40ZWYyMGIwOTNkYWRhXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuY1xuQEAgLTAsMCAmIzQzOzEsNTYxIEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOy8qXG4mIzQzOyAqIFJvY2tjaGlwIFhQQ1MgcGxhdGZvcm0gZGV2aWNlIGRyaXZlclxuJiM0MzsgKlxuJiM0MzsgKiBCYXNlZCBvbiB0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBYUENTIHBsYXRmb3JtIGRyaXZlci5cbiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDI0IFNlcmdlIFNlbWluXG4mIzQzOyAqXG4mIzQzOyAqIEFkYXB0ZWQgZm9yIFJvY2tjaGlwIFNvQ3MsIHdpdGggcmVmZXJlbmNlIHRvIHRoZSBSb2NrY2hpcCBPRU0gZHJpdmVyLlxuJiM0MzsgKiBDb3B5cmlnaHQgKEMpIDIwMjYgQ29pYSBQcmFudFxuJiM0MzsgKi9cbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2F0b21pYy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY2xrLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZGV2aWNlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaW8uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9pb3BvbGwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9tZGlvLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9wbGF0Zm9ybS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS9waHkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV9kb21haW4uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV9ydW50aW1lLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9zaXplcy5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtwY3MteHBjcy5oXCYjMzQ7XG4mIzQzO1xuJiM0MztzdHJ1Y3QgZHdfeHBjc19yayB7XG4mIzQzO1x0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjtcbiYjNDM7XHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuJiM0MztcdHZvaWQgX19pb21lbSAqcmVnX2Jhc2U7XG4mIzQzO1x0c3RydWN0IHBoeSAqc2VyZGVzX3BoeTtcbiYjNDM7XHRzdHJ1Y3QgY2xrICpjc3JfY2xrO1xuJiM0MztcdHN0cnVjdCBjbGsgKmVlZV9jbGs7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgcHRyZGlmZl90IHhwY3NfcmtfYWRkcl9mb3JtYXQoaW50IGRldiwgaW50IHJlZylcbiYjNDM7e1xuJiM0MztcdHJldHVybiBGSUVMRF9QUkVQKDB4NzAwMDAsIGRldikgfCBGSUVMRF9QUkVQKDB4ZmZmZiwgcmVnKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3JlYWRfcmVnKHN0cnVjdCBkd194cGNzX3JrICpweHBjcywgaW50IGRldiwgaW50IHJlZylcbiYjNDM7e1xuJiM0MztcdHB0cmRpZmZfdCBjc3I7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0Y3NyID0geHBjc19ya19hZGRyX2Zvcm1hdChkZXYsIHJlZyk7XG4mIzQzO1xuJiM0MztcdHJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXYpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSByZWFkbChweHBjcy1cdTAwM2VyZWdfYmFzZSAmIzQzOyAoY3NyIFx1MDAzY1x1MDAzYyAyKSkgXHUwMDI2IDB4ZmZmZjtcbiYjNDM7XG4mIzQzO1x0cG1fcnVudGltZV9wdXQoXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXYpO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgeHBjc19ya193cml0ZV9yZWcoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzLCBpbnQgZGV2LCBpbnQgcmVnLCB1MTYgdmFsKVxuJiM0Mzt7XG4mIzQzO1x0cHRyZGlmZl90IGNzcjtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRjc3IgPSB4cGNzX3JrX2FkZHJfZm9ybWF0KGRldiwgcmVnKTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldChcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldik7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHdyaXRlbCh2YWwsIHB4cGNzLVx1MDAzZXJlZ19iYXNlICYjNDM7IChjc3IgXHUwMDNjXHUwMDNjIDIpKTtcbiYjNDM7XG4mIzQzO1x0cG1fcnVudGltZV9wdXQoXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXYpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsjZGVmaW5lIFJPQ0tDSElQX01NRF9NSUkxXHQyXG4mIzQzOyNkZWZpbmUgUk9DS0NISVBfTU1EX01JSTJcdDNcbiYjNDM7I2RlZmluZSBST0NLQ0hJUF9NTURfTUlJM1x0NFxuJiM0MzsjZGVmaW5lIFJPQ0tDSElQX01NRF9QTUFQTURcdDZcbiYjNDM7I2RlZmluZSBST0NLQ0hJUF9NTURfTUlJXHQ3XG4mIzQzO1xuJiM0MztzdGF0aWMgYm9vbCB4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShpbnQgYWRkcilcbiYjNDM7e1xuJiM0MztcdHJldHVybiAhKGFkZHIgXHUwMDNjIDAgfHwgYWRkciBcdTAwM2UgMyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgeHBjc19ya19tZGlvX3JlYWRfcmVtYXBwaW5nKGludCBhZGRyLCBpbnQgZGV2LCBpbnQgcmVnKVxuJiM0Mzt7XG4mIzQzO1x0c3dpdGNoIChkZXYpIHtcbiYjNDM7XHRjYXNlIE1ESU9fTU1EX1BNQVBNRDpcbiYjNDM7XHRcdHJldHVybiBST0NLQ0hJUF9NTURfUE1BUE1EO1xuJiM0MztcdGNhc2UgTURJT19NTURfVkVORDI6XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIC1FTlhJTztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qIHJlYWQgcmVtYXBwaW5nIHRvIE1JSSBpcyBwZXJmb3JtZWQgYnkgSFcgKi9cbiYjNDM7XHRzd2l0Y2ggKGFkZHIpIHtcbiYjNDM7XHRjYXNlIDA6XG4mIzQzO1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTtcbiYjNDM7XHRjYXNlIDE6XG4mIzQzO1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTE7XG4mIzQzO1x0Y2FzZSAyOlxuJiM0MztcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkyO1xuJiM0MztcdGNhc2UgMzpcbiYjNDM7XHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoaW50IGFkZHIsIGludCBkZXYsIGludCByZWcpXG4mIzQzO3tcbiYjNDM7XHRzd2l0Y2ggKGRldikge1xuJiM0MztcdGNhc2UgTURJT19NTURfUE1BUE1EOlxuJiM0MztcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9QTUFQTUQ7XG4mIzQzO1x0Y2FzZSBNRElPX01NRF9WRU5EMjpcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gLUVOWElPO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogV3JpdGFibGUgb25seSBvbiBNSUkgKi9cbiYjNDM7XHRzd2l0Y2ggKHJlZykge1xuJiM0MztcdGNhc2UgRFdfVlJfTUlJX0FOX0NUUkw6XG4mIzQzO1x0Y2FzZSBEV19WUl9NSUlfQU5fSU5UUl9TVFM6XG4mIzQzO1x0Y2FzZSBEV19WUl9NSUlfRUVFX01DVFJMMDpcbiYjNDM7XHRjYXNlIERXX1ZSX01JSV9FRUVfTUNUUkwxOlxuJiM0MztcdGNhc2UgRFdfVlJfTUlJX0RJR19DVFJMMjpcbiYjNDM7XHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAoYWRkcikge1xuJiM0MztcdGNhc2UgMDpcbiYjNDM7XHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJO1xuJiM0MztcdGNhc2UgMTpcbiYjNDM7XHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMTtcbiYjNDM7XHRjYXNlIDI6XG4mIzQzO1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTI7XG4mIzQzO1x0Y2FzZSAzOlxuJiM0MztcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkzO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGJ1cy1cdTAwM2Vwcml2O1xuJiM0MztcdGludCBkZXY7XG4mIzQzO1xuJiM0MztcdGlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoYWRkcikpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4mIzQzO1x0ZGV2ID0geHBjc19ya19tZGlvX3JlYWRfcmVtYXBwaW5nKGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCByZWcpO1xuJiM0MztcdGlmIChkZXYgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gMHhmZmZmO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4geHBjc19ya19yZWFkX3JlZyhweHBjcywgZGV2LCByZWcpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3Nfcmtfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgdmFsKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLVx1MDAzZXByaXY7XG4mIzQzO1x0aW50IGRldjtcbiYjNDM7XG4mIzQzO1x0aWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShhZGRyKSlcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcbiYjNDM7XHRkZXYgPSB4cGNzX3JrX21kaW9fd3JpdGVfcmVtYXBwaW5nKGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCByZWcpO1xuJiM0MztcdGlmIChkZXYgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHhwY3Nfcmtfd3JpdGVfcmVnKHB4cGNzLCBkZXYsIHJlZywgdmFsKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2LCBpbnQgcmVnKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLVx1MDAzZXByaXY7XG4mIzQzO1xuJiM0MztcdGlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoYWRkcikpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4mIzQzO1x0ZGV2ID0geHBjc19ya19tZGlvX3JlYWRfcmVtYXBwaW5nKGFkZHIsIGRldiwgcmVnKTtcbiYjNDM7XHRpZiAoZGV2IFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIDB4ZmZmZjtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHhwY3NfcmtfcmVhZF9yZWcocHhwY3MsIGRldiwgcmVnKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZywgdTE2IHZhbClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGJ1cy1cdTAwM2Vwcml2O1xuJiM0MztcbiYjNDM7XHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuJiM0MztcdGRldiA9IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoYWRkciwgZGV2LCByZWcpO1xuJiM0MztcdGlmIChkZXYgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHhwY3Nfcmtfd3JpdGVfcmVnKHB4cGNzLCBkZXYsIHJlZywgdmFsKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBkd194cGNzX3JrICp4cGNzX3JrX2NyZWF0ZV9kYXRhKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7XG4mIzQzO1xuJiM0MztcdHB4cGNzID0gZGV2bV9remFsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBzaXplb2YoKnB4cGNzKSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFweHBjcylcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuJiM0MztcbiYjNDM7XHRweHBjcy1cdTAwM2VwZGV2ID0gcGRldjtcbiYjNDM7XG4mIzQzO1x0ZGV2X3NldF9kcnZkYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBweHBjcyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBweHBjcztcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3NlcmRlc19waHlfaW5pdChzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbiYjNDM7XG4mIzQzO1x0cHhwY3MtXHUwMDNlc2VyZGVzX3BoeSA9IGRldm1fcGh5X2dldChkZXYsIFwmIzM0O3NlcmRlc1wmIzM0Oyk7XG4mIzQzO1x0aWYgKElTX0VSUihweHBjcy1cdTAwM2VzZXJkZXNfcGh5KSlcbiYjNDM7XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihweHBjcy1cdTAwM2VzZXJkZXNfcGh5KSxcbiYjNDM7XHRcdFx0XHRcdFwmIzM0O0ZhaWxlZCB0byBnZXQgU2VyRGVzIFBIWVxcblwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvZmYodm9pZCAqZGF0YSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRhdGE7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG4mIzQzO1xuJiM0MztcdHBoeV9wb3dlcl9vZmYocHhwY3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4mIzQzO1x0cGh5X2V4aXQocHhwY3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4mIzQzO1xuJiM0MztcdGRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgZmFsc2UpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9uKHN0cnVjdCBkd194cGNzX3JrICpweHBjcylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2O1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogVGhlIHBvd2VyIGRvbWFpbiBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBlbmFibGVkLCB3aGljaCBhbGxvd3MgdXMgdG9cbiYjNDM7XHQgKiBkeW5hbWljYWxseSB0dXJuIHRoZSBDU1IgY2xvY2sgb24vb2ZmIHVzaW5nIFBNIHdoaWxlIGtlZXBpbmcgdGhlIFBDU1xuJiM0MztcdCAqIHBvd2VyZWQgb24uXG4mIzQzO1x0ICovXG4mIzQzO1x0cmV0ID0gZGV2X3BtX2dlbnBkX3JwbV9hbHdheXNfb24oZGV2LCB0cnVlKTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIHBvd2VyIG9uIHBvd2VyLWRvbWFpbnNcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldCA9IHBoeV9pbml0KHB4cGNzLVx1MDAzZXNlcmRlc19waHkpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gaW5pdCBTZXJEZXMgUEhZXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGdvdG8gcG1fZG9tYWluO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0ID0gcGh5X3Bvd2VyX29uKHB4cGNzLVx1MDAzZXNlcmRlc19waHkpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gcG93ZXIgb24gU2VyRGVzIFBIWVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRnb3RvIHNlcmRlc19waHk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvZmYsIHB4cGNzKTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIGRldm0gZm9yIFNlckRlcyBQSFk6ICVkXFxuXCYjMzQ7LCByZXQpO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7c2VyZGVzX3BoeTpcbiYjNDM7XHRwaHlfZXhpdChweHBjcy1cdTAwM2VzZXJkZXNfcGh5KTtcbiYjNDM7cG1fZG9tYWluOlxuJiM0MztcdGRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgZmFsc2UpO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgeHBjc19ya19pbml0X3JlcyhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gcHhwY3MtXHUwMDNlcGRldjtcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiYjNDM7XHRzdHJ1Y3QgcmVzb3VyY2UgKnJlcztcbiYjNDM7XG4mIzQzO1x0cmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTtcbiYjNDM7XHRpZiAoIXJlcykge1xuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O05vIHJlZy1zcGFjZSBmb3VuZFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChyZXNvdXJjZV9zaXplKHJlcykgXHUwMDNjIFNaXzJNKSB7XG4mIzQzO1x0XHRkZXZfZXJyKGRldiwgXCYjMzQ7SW52YWxpZCByZWctc3BhY2Ugc2l6ZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHB4cGNzLVx1MDAzZXJlZ19iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTtcbiYjNDM7XHRpZiAoSVNfRVJSKHB4cGNzLVx1MDAzZXJlZ19iYXNlKSkge1xuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBtYXAgcmVnLXNwYWNlXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiBQVFJfRVJSKHB4cGNzLVx1MDAzZXJlZ19iYXNlKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB4cGNzX3JrX2V4aXRfY2xrKHZvaWQgKmRhdGEpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBkYXRhO1xuJiM0MztcbiYjNDM7XHRjbGtfZGlzYWJsZV91bnByZXBhcmUocHhwY3MtXHUwMDNlZWVlX2Nsayk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgeHBjc19ya19pbml0X2NsayhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRweHBjcy1cdTAwM2Vjc3JfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgXCYjMzQ7Y3NyXCYjMzQ7KTtcbiYjNDM7XHRpZiAoSVNfRVJSKHB4cGNzLVx1MDAzZWNzcl9jbGspKVxuJiM0MztcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHB4cGNzLVx1MDAzZWNzcl9jbGspLFxuJiM0MztcdFx0XHRcdFx0IFwmIzM0O0ZhaWxlZCB0byBnZXQgQ1NSIGNsb2NrXFxuXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0cG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKGRldik7XG4mIzQzO1x0cmV0ID0gZGV2bV9wbV9ydW50aW1lX2VuYWJsZShkZXYpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gZW5hYmxlIHJ1bnRpbWUtUE1cXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHB4cGNzLVx1MDAzZWVlZV9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCBcJiMzNDtlZWVcJiMzNDspO1xuJiM0MztcdGlmIChJU19FUlIocHhwY3MtXHUwMDNlZWVlX2NsaykpXG4mIzQzO1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHhwY3MtXHUwMDNlZWVlX2NsayksXG4mIzQzO1x0XHRcdFx0XHQgXCYjMzQ7RmFpbGVkIHRvIGdldCBFRUUgY2xvY2tcXG5cJiMzNDspO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocHhwY3MtXHUwMDNlZWVlX2Nsayk7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBlbmFibGUgRUVFIGNsb2NrXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCB4cGNzX3JrX2V4aXRfY2xrLCBweHBjcyk7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBkZXZtIGZvciBFRUUgY2xvY2s6ICVkXFxuXCYjMzQ7LCByZXQpO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9idXMoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG4mIzQzO1x0c3RhdGljIGF0b21pY190IGlkID0gQVRPTUlDX0lOSVQoLTEpO1xuJiM0MztcdHN0cnVjdCBtaWlfYnVzICpidXM7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0YnVzID0gZGV2bV9tZGlvYnVzX2FsbG9jX3NpemUoZGV2LCAwKTtcbiYjNDM7XHRpZiAoIWJ1cylcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiYjNDM7XHRidXMtXHUwMDNlbmFtZSA9IFwmIzM0O1JvY2tjaGlwIERXIFhQQ1MgTUNJL0FQQjNcJiMzNDs7XG4mIzQzO1x0YnVzLVx1MDAzZXJlYWQgPSB4cGNzX3JrX3JlYWRfYzIyO1xuJiM0MztcdGJ1cy1cdTAwM2V3cml0ZSA9IHhwY3Nfcmtfd3JpdGVfYzIyO1xuJiM0MztcdGJ1cy1cdTAwM2VyZWFkX2M0NSA9IHhwY3NfcmtfcmVhZF9jNDU7XG4mIzQzO1x0YnVzLVx1MDAzZXdyaXRlX2M0NSA9IHhwY3Nfcmtfd3JpdGVfYzQ1O1xuJiM0MztcdGJ1cy1cdTAwM2VwaHlfbWFzayA9IH4wO1xuJiM0MztcdGJ1cy1cdTAwM2VwYXJlbnQgPSBkZXY7XG4mIzQzO1x0YnVzLVx1MDAzZXByaXYgPSBweHBjcztcbiYjNDM7XG4mIzQzO1x0c25wcmludGYoYnVzLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsXG4mIzQzO1x0XHQgXCYjMzQ7cm9ja2NoaXBfZHd4cGNzLSV4XCYjMzQ7LCBhdG9taWNfaW5jX3JldHVybihcdTAwMjZpZCkpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIE1ESU8tYnVzIGhlcmUgc2VydmVzIGFzIGp1c3QgYSBiYWNrLWVuZCBlbmdpbmUgYWJzdHJhY3Rpbmcgb3V0XG4mIzQzO1x0ICogdGhlIE1ESU8gYW5kIE1DSS9BUEIzIElPIGludGVyZmFjZXMgdXRpbGl6ZWQgZm9yIHRoZSBSb2NrY2hpcCBEV1hQQ1MgQ1NSc1xuJiM0MztcdCAqIGFjY2Vzcy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gY3JlYXRlIE1ESU8gYnVzXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRweHBjcy1cdTAwM2VidXMgPSBidXM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgeHBjc19ya19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHB4cGNzID0geHBjc19ya19jcmVhdGVfZGF0YShwZGV2KTtcbiYjNDM7XHRpZiAoSVNfRVJSKHB4cGNzKSlcbiYjNDM7XHRcdHJldHVybiBQVFJfRVJSKHB4cGNzKTtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBUaGUgWFBDUyBtYXkgYmUgYXR0YWNoZWQgdG8gYSBwb3dlciBkb21haW4gKGUuZy4gUERfUElQRSkuIFRoZSBkb21haW5cbiYjNDM7XHQgKiBtdXN0IGJlIHBvd2VyZWQgb24gYmVmb3JlIGFueSByZWdpc3RlciBhY2Nlc3MsIG90aGVyd2lzZSB0aGUgU29DIHdpbGxcbiYjNDM7XHQgKiB0cmlnZ2VyIGEgc3luY2hyb25vdXMgZXh0ZXJuYWwgYWJvcnQgKFNFcnJvcikuXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBBY2Nlc3NpbmcgdGhlIFhQQ1MgcmVnaXN0ZXJzIGFsc28gcmVxdWlyZXMgYSBUWCBjbG9jayBmcm9tIHRoZSBTZXJEZXMsXG4mIzQzO1x0ICogd2hpY2ggaXMgbmVlZGVkIGZvciB0aGUgc29mdCByZXNldC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRyZXQgPSB4cGNzX3JrX3NlcmRlc19waHlfaW5pdChweHBjcyk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9uKHB4cGNzKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0geHBjc19ya19pbml0X3JlcyhweHBjcyk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IHhwY3NfcmtfaW5pdF9jbGsocHhwY3MpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSB4cGNzX3JrX2luaXRfYnVzKHB4cGNzKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHhwY3NfcmtfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4mIzQzO3tcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEZvcmNlIHRoZSBkZXZpY2UgaW50byBzdXNwZW5kIHN0YXRlIHRvIGdhdGUgdGhlIENTUiBjbG9jay4gVGhpc1xuJiM0MztcdCAqIHByZXZlbnRzIGNsb2NrIGxlYWthZ2UgYWZ0ZXIgZGV2bSByZXNvdXJjZXMgYXJlIHJlbGVhc2VkLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogVGhpcyBpcyBzYWZlIGJlY2F1c2U6XG4mIzQzO1x0ICogICAxLiBUaGUgZGV2aWNlIGxpbmsgKERMX0ZMQUdfQVVUT1JFTU9WRV9DT05TVU1FUikgcHJldmVudHMgdW5iaW5kXG4mIzQzO1x0ICogICAgICB3aGlsZSBhbnkgY29uc3VtZXIgKE1BQykgaXMgc3RpbGwgYXR0YWNoZWQuXG4mIzQzO1x0ICogICAyLiBObyBNRElPIGFjY2VzcyB3aWxsIG9jY3VyIGFmdGVyIHRoaXMgcG9pbnQsIGFzIHRoZSBNQUMgZHJpdmVyXG4mIzQzO1x0ICogICAgICBoYXMgYWxyZWFkeSBiZWVuIHVuYm91bmQgKG9yIHdlIGFyZSBiZWluZyByZW1vdmVkIGJlY2F1c2Ugbm9cbiYjNDM7XHQgKiAgICAgIGNvbnN1bWVyIGV4aXN0cykuXG4mIzQzO1x0ICovXG4mIzQzO1x0cG1fcnVudGltZV9mb3JjZV9zdXNwZW5kKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgeHBjc19ya19vZl9pZHNbXSA9IHtcbiYjNDM7XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cm9ja2NoaXAscmszNTY4LXhwY3NcJiMzNDsgfSxcbiYjNDM7XHR7IC8qIHNlbnRpbmVsICovIH0sXG4mIzQzO307XG4mIzQzO01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHhwY3Nfcmtfb2ZfaWRzKTtcbiYjNDM7XG4mIzQzO3N0cnVjdCBkd194cGNzICp4cGNzX3JrX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2O1xuJiM0MztcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25wO1xuJiM0MztcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcztcbiYjNDM7XHRzdHJ1Y3QgZHdfeHBjcyAqeHBjcztcbiYjNDM7XHR1MzIgcG9ydDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKG5wKSlcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FTk9ERVYpO1xuJiM0MztcbiYjNDM7XHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobnAsIFwmIzM0O3JlZ1wmIzM0OywgXHUwMDI2cG9ydCkpXG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbiYjNDM7XG4mIzQzO1x0aWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZSgoaW50KXBvcnQpKVxuJiM0MztcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4mIzQzO1xuJiM0MztcdC8qIFRoZSBYUENTIHBkZXYgaXMgYXR0YWNoZWQgdG8gdGhlIHBhcmVudCBub2RlICovXG4mIzQzO1x0cGNzX25wID0gb2ZfZ2V0X3BhcmVudChucCk7XG4mIzQzO1x0aWYgKCFwY3NfbnApXG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PREVWKTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKHBjc19ucCkpIHtcbiYjNDM7XHRcdG9mX25vZGVfcHV0KHBjc19ucCk7XG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PREVWKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmICghb2ZfbWF0Y2hfbm9kZSh4cGNzX3JrX29mX2lkcywgcGNzX25wKSkge1xuJiM0MztcdFx0b2Zfbm9kZV9wdXQocGNzX25wKTtcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cGRldiA9IG9mX2ZpbmRfZGV2aWNlX2J5X25vZGUocGNzX25wKTtcbiYjNDM7XHRvZl9ub2RlX3B1dChwY3NfbnApO1xuJiM0MztcdGlmICghcGRldilcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FUFJPQkVfREVGRVIpO1xuJiM0MztcbiYjNDM7XHRkZXZpY2VfbG9jayhcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4mIzQzO1x0cHhwY3MgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiYjNDM7XHRpZiAoIXB4cGNzIHx8ICFweHBjcy1cdTAwM2VidXMpIHtcbiYjNDM7XHRcdGRldmljZV91bmxvY2soXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuJiM0MztcdFx0cHV0X2RldmljZShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRVBST0JFX0RFRkVSKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHhwY3MgPSB4cGNzX2NyZWF0ZV9tZGlvZGV2KHB4cGNzLVx1MDAzZWJ1cywgKGludClwb3J0KTtcbiYjNDM7XHRkZXZpY2VfdW5sb2NrKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiYjNDM7XHRpZiAoSVNfRVJSKHhwY3MpKSB7XG4mIzQzO1x0XHRwdXRfZGV2aWNlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiYjNDM7XHRcdHJldHVybiB4cGNzO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKCFkZXZpY2VfbGlua19hZGQoZGV2LCBcdTAwMjZwZGV2LVx1MDAzZWRldiwgRExfRkxBR19BVVRPUkVNT1ZFX0NPTlNVTUVSKSkge1xuJiM0MztcdFx0eHBjc19kZXN0cm95KHhwY3MpO1xuJiM0MztcdFx0cHV0X2RldmljZShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHB1dF9kZXZpY2UoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuJiM0MztcdHJldHVybiB4cGNzO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHhwY3NfcmtfY3JlYXRlKTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgeHBjc19ya19wbV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4mIzQzO1xuJiM0MztcdGNsa19kaXNhYmxlX3VucHJlcGFyZShweHBjcy1cdTAwM2Vjc3JfY2xrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgeHBjc19ya19wbV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGNsa19wcmVwYXJlX2VuYWJsZShweHBjcy1cdTAwM2Vjc3JfY2xrKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIERFRklORV9SVU5USU1FX0RFVl9QTV9PUFMoeHBjc19ya19wbV9vcHMsXG4mIzQzO1x0XHRcdCAgIHhwY3NfcmtfcG1fcnVudGltZV9zdXNwZW5kLFxuJiM0MztcdFx0XHQgICB4cGNzX3JrX3BtX3J1bnRpbWVfcmVzdW1lLFxuJiM0MztcdFx0XHQgICBOVUxMKTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHhwY3NfcmtfZHJpdmVyID0ge1xuJiM0MztcdC5wcm9iZSA9IHhwY3NfcmtfcHJvYmUsXG4mIzQzO1x0LnJlbW92ZSA9IHhwY3NfcmtfcmVtb3ZlLFxuJiM0MztcdC5kcml2ZXIgPSB7XG4mIzQzO1x0XHQubmFtZSA9IFwmIzM0O3JrX3hwY3MtZHd4cGNzXCYjMzQ7LFxuJiM0MztcdFx0LnBtID0gcG1fcHRyKFx1MDAyNnhwY3NfcmtfcG1fb3BzKSxcbiYjNDM7XHRcdC5vZl9tYXRjaF90YWJsZSA9IHhwY3Nfcmtfb2ZfaWRzLFxuJiM0MztcdH0sXG4mIzQzO307XG4mIzQzO21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoeHBjc19ya19kcml2ZXIpO1xuJiM0MztcbiYjNDM7TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O1JvY2tjaGlwIFhQQ1MgcGxhdGZvcm0gZGV2aWNlIGRyaXZlclwmIzM0Oyk7XG4mIzQzO01PRFVMRV9BVVRIT1IoXCYjMzQ7Q29pYSBQcmFudCBcdTAwM2Njb2lhcHJhbnRAZ21haWwuY29tXHUwMDNlXCYjMzQ7KTtcbiYjNDM7TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jXG5pbmRleCAwMzM3ZTJiY2MwMTI1Li41MGI5Y2RmOTRmZGFhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jXG5AQCAtODE2LDkgJiM0Mzs4MTYsMTQgQEAgc3RhdGljIGludCB4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdHJldHVybiByZXQ7XG4gXG4mIzQzO1x0LyogQ2xlYXIgQ0wzNyBBTiBjb21wbGV0ZSBzdGF0dXMgKi9cbiYjNDM7XHRyZXQgPSB4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBEV19WUl9NSUlfQU5fSU5UUl9TVFMsIDApO1xuJiM0MztcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiBcdGlmIChuZWdfbW9kZSA9PSBQSFlMSU5LX1BDU19ORUdfSU5CQU5EX0VOQUJMRUQpXG4gXHRcdHJldCA9IHhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIsIE1JSV9CTUNSLFxuLVx0XHRcdFx0IG1kaW9fY3RybCB8IEJNQ1JfQU5FTkFCTEUpO1xuJiM0MztcdFx0XHRcdCBtZGlvX2N0cmwgfCBCTUNSX0FORU5BQkxFIHwgQk1DUl9BTlJFU1RBUlQpO1xuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMTA5MywxMCAmIzQzOzEwOTgsMTUgQEAgc3RhdGljIGludCB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWkoc3RydWN0IGR3X3hwY3MgKnhwY3MsXG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFxuLVx0LyogQ2xlYXIgQU4gY29tcGxldGUgc3RhdHVzIG9yIGludGVycnVwdCAqL1xuLVx0aWYgKHN0YXRlLVx1MDAzZWFuX2NvbXBsZXRlKVxuJiM0MztcdGlmIChzdGF0ZS1cdTAwM2Vhbl9jb21wbGV0ZSkge1xuJiM0MztcdFx0LyogQ2xlYXIgQU4gY29tcGxldGUgc3RhdHVzIG9yIGludGVycnVwdCAqL1xuIFx0XHR4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBEV19WUl9NSUlfQU5fSU5UUl9TVFMsIDApO1xuIFxuJiM0MztcdFx0LyogSW5pdGlhdGUgdGhlIG5leHQgcm91bmQgb2YgQU4gKi9cbiYjNDM7XHRcdHhwY3NfbW9kaWZ5KHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfQk1DUiwgQk1DUl9BTlJFU1RBUlQsXG4mIzQzO1x0XHRcdCAgICBCTUNSX0FOUkVTVEFSVCk7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuYyBiL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jXG5pbmRleCA3ODQzMzU2YTRkZDQ3Li45MTliYjk3YTRiMTgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jXG5AQCAtMTg2LDYgJiM0MzsxODYsNyBAQCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9ncmZjZmcge1xuIFx0c3RydWN0IGNvbWJwaHlfcmVnIHBpcGVfeHBjc19waHlfcmVhZHk7XG4gXHRzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9wY2llMWwwX3NlbDtcbiBcdHN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3BjaWUxbDFfc2VsO1xuJiM0MztcdHN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3NnbWlpX21hY19zZWw7XG4gXHRzdHJ1Y3QgY29tYnBoeV9yZWcgdTNvdGcwX3BvcnRfZW47XG4gXHRzdHJ1Y3QgY29tYnBoeV9yZWcgdTNvdGcxX3BvcnRfZW47XG4gfTtcbkBAIC0yMTIsNiAmIzQzOzIxMyw3IEBAIHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYge1xuIFx0Ym9vbCBlbmFibGVfc3NjO1xuIFx0Ym9vbCBleHRfcmVmY2xrO1xuIFx0c3RydWN0IGNsayAqcmVmY2xrO1xuJiM0MztcdHUzMiBzZ21paV9tYWNfc2VsO1xuIH07XG4gXG4gc3RhdGljIHZvaWQgcm9ja2NoaXBfY29tYnBoeV91cGRhdGVsKHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgKnByaXYsXG5AQCAtMzc1LDYgJiM0MzszNzcsOSBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX2NvbWJwaHlfcGFyc2VfZHQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeVxuIFxuIFx0cHJpdi1cdTAwM2VleHRfcmVmY2xrID0gZGV2aWNlX3Byb3BlcnR5X3ByZXNlbnQoZGV2LCBcJiMzNDtyb2NrY2hpcCxleHQtcmVmY2xrXCYjMzQ7KTtcbiBcbiYjNDM7XHRwcml2LVx1MDAzZXNnbWlpX21hY19zZWwgPSAxO1xuJiM0MztcdGRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsIFwmIzM0O3JvY2tjaGlwLHNnbWlpLW1hYy1zZWxcJiMzNDssIFx1MDAyNnByaXYtXHUwMDNlc2dtaWlfbWFjX3NlbCk7XG4mIzQzO1xuIFx0cHJpdi1cdTAwM2VwaHlfcnN0ID0gZGV2bV9yZXNldF9jb250cm9sX2dldF9leGNsdXNpdmUoZGV2LCBcJiMzNDtwaHlcJiMzNDspO1xuIFx0LyogZmFsbGJhY2sgdG8gb2xkIGJlaGF2aW91ciAqL1xuIFx0aWYgKFBUUl9FUlIocHJpdi1cdTAwM2VwaHlfcnN0KSA9PSAtRU5PRU5UKVxuQEAgLTg3Myw2ICYjNDM7ODc4LDggQEAgc3RhdGljIGludCByazM1NjhfY29tYnBoeV9jZmcoc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAqcHJpdilcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIFBIWV9UWVBFX1NHTUlJOlxuJiM0MztcdFx0cm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LVx1MDAzZXBpcGVfZ3JmLCBcdTAwMjZjZmctXHUwMDNlcGlwZV9zZ21paV9tYWNfc2VsLFxuJiM0MztcdFx0XHRcdFx0cHJpdi1cdTAwM2VzZ21paV9tYWNfc2VsIFx1MDAzZSAwKTtcbiBcdFx0cm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LVx1MDAzZXBpcGVfZ3JmLCBcdTAwMjZjZmctXHUwMDNlcGlwZV94cGNzX3BoeV9yZWFkeSwgdHJ1ZSk7XG4gXHRcdHJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi1cdTAwM2VwaHlfZ3JmLCBcdTAwMjZjZmctXHUwMDNlcGlwZV9waHltb2RlX3NlbCwgdHJ1ZSk7XG4gXHRcdHJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi1cdTAwM2VwaHlfZ3JmLCBcdTAwMjZjZmctXHUwMDNlcGlwZV9zZWxfcXNnbWlpLCB0cnVlKTtcbkBAIC05ODQsNiAmIzQzOzk5MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9ncmZjZmcgcmszNTY4X2NvbWJwaHlfZ3JmY2ZncyA9IHtcbiBcdC5jb24zX2Zvcl9zYXRhXHRcdD0geyAweDAwMGMsIDE1LCAwLCAweDAwLCAweDQ0MDcgfSxcbiBcdC8qIHBpcGUtZ3JmICovXG4gXHQucGlwZV9jb24wX2Zvcl9zYXRhXHQ9IHsgMHgwMDAwLCAxNSwgMCwgMHgwMCwgMHgyMjIwIH0sXG4mIzQzO1x0LnBpcGVfc2dtaWlfbWFjX3NlbFx0PSB7IDB4MDA0MCwgMSwgMSwgMHgwMCwgMHgwMSB9LFxuIFx0LnBpcGVfeHBjc19waHlfcmVhZHlcdD0geyAweDAwNDAsIDIsIDIsIDB4MDAsIDB4MDEgfSxcbiBcdC51M290ZzBfcG9ydF9lblx0XHQ9IHsgMHgwMTA0LCAxNSwgMCwgMHgwMTgxLCAweDExMDAgfSxcbiBcdC51M290ZzFfcG9ydF9lblx0XHQ9IHsgMHgwMTQ0LCAxNSwgMCwgMHgwMTgxLCAweDExMDAgfSxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oIGIvaW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjI4NzIzZDViZDc1Y2Ncbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmhcbkBAIC0wLDAgJiM0MzsxLDExIEBAXG4mIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4mIzQzOyNpZm5kZWYgX19MSU5VWF9QQ1NfWFBDU19ST0NLQ0hJUF9IXG4mIzQzOyNkZWZpbmUgX19MSU5VWF9QQ1NfWFBDU19ST0NLQ0hJUF9IXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9kZXZpY2UuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy9wY3MteHBjcy5oXHUwMDNlXG4mIzQzO1xuJiM0MztzdHJ1Y3QgZHdfeHBjcyAqeHBjc19ya19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcbiYjNDM7XG4mIzQzOyNlbmRpZiAvKiBfX0xJTlVYX1BDU19YUENTX1JPQ0tDSElQX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNToxMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgYWRkcyBzdXBwb3J0IGZvciBSb2NrY2hpcCBSSzM1NjggU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBQaHlzaWNhbCBDb2RpbmcgU3VibGF5ZXIgKFhQQ1MpIGFuZCBTR01JSSBpbnRlcmZhY2UgY29uZmlndXJhdGlvbiBmb3IgdGhlIFJvY2tjaGlwIERXTUFDIGRyaXZlciwgYWxvbmcgd2l0aCBtaW5vciBQQ1MgaW5pdC9leGl0IGhhbmRsaW5nIHVwZGF0ZXMgZm9yIEludGVsIERXTUFDIFBDSSBhbmQgb3RoZXIgU29DIGdsdWUgZHJpdmVycyAoUmVuZXNhcywgU29jZnBnYSkuIFRoZXNlIGNoYW5nZXMgYXJlIHJlc3RyaWN0ZWQgdG8gdmVuZG9yLXNwZWNpZmljIFNvQyBwbGF0Zm9ybSBkcml2ZXJzIChSb2NrY2hpcCBSSzM1NjgsIFJlbmVzYXMsIFNvY2ZwZ2EpIGFuZCBJbnRlbCBEV01BQyBQQ0kgaGFyZHdhcmUsIG5vbmUgb2Ygd2hpY2ggYXJlIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGNhbm5vdCBiZSBleGVjdXRlZCBkdXJpbmcgdmlydHVhbGl6ZWQgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmNDZhOGY0Yzk5NTI5NjFiN2Y4Zjk2YWY4ZjJmNDQ2MWE4Zjk1OTcyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgMiAwNToxMDoxMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3Mvcm9ja2NoaXAtZHd4cGNzLnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMDg1MmQwYmNiNjZhMgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sCkBAIC0wLDAgJiM0MzsxLDExMCBAQAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlKQomIzQzOyVZQU1MIDEuMgomIzQzOy0tLQomIzQzOyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbCMKJiM0Mzskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCMKJiM0MzsKJiM0Mzt0aXRsZTogUm9ja2NoaXAgUkszNTY4IFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUENTCiYjNDM7CiYjNDM7bWFpbnRhaW5lcnM6CiYjNDM7ICAtIENvaWEgUHJhbnQgJmx0O2NvaWFwcmFudEBnbWFpbC5jb20mZ3Q7CiYjNDM7CiYjNDM7ZGVzY3JpcHRpb246IHwKJiM0MzsgIFJvY2tjaGlwIFJLMzU2OCBTb0MgaW50ZWdyYXRlcyBhIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUGh5c2ljYWwKJiM0MzsgIENvZGluZyBTdWJsYXllciAoWFBDUykuCiYjNDM7ICBUaGUgUENTIHByb3ZpZGVzIGFuIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBNZWRpYSBBY2Nlc3MgQ29udHJvbCAoTUFDKQomIzQzOyAgYW5kIHRoZSBQaHlzaWNhbCBNZWRpdW0gQXR0YWNobWVudCAoUE1BKSBzdWJsYXllciB0aHJvdWdoIGEgTWVkaWEKJiM0MzsgIEluZGVwZW5kZW50IEludGVyZmFjZSAoR01JSSkuCiYjNDM7CiYjNDM7ICBUaGUgWFBDUyBpcyBhY2Nlc3NlZCBvdmVyIHRoZSBBUEIzIGJ1cyBhbmQgaW50ZXJuYWxseSBjb25uZWN0ZWQgdG8gYQomIzQzOyAgTmFuZW5nIENvbWJvIFNlckRlcyBQSFkuCiYjNDM7ICBJdCBzdXBwb3J0cyAxMDAwQkFTRS1YLCBTR01JSSBhbmQgUVNHTUlJIG1vZGVzLgomIzQzOwomIzQzOyAgVGhlIGJsb2NrIGNvbnRhaW5zIGZvdXIgTUlJIHBvcnRzIHRoYXQgY2FuIGJlIGluZGl2aWR1YWxseSBlbmFibGVkIGFuZAomIzQzOyAgcm91dGVkIHRvIG9uZSBvZiB0aGUgRXRoZXJuZXQgR01BQyBjb250cm9sbGVycyB2aWEgdGhlIHBjcy1oYW5kbGUKJiM0MzsgIHByb3BlcnR5IGluIHRoZSBNQUMgZGV2aWNlIHRyZWUgbm9kZS4KJiM0MzsKJiM0Mztwcm9wZXJ0aWVzOgomIzQzOyAgY29tcGF0aWJsZToKJiM0MzsgICAgY29uc3Q6IHJvY2tjaGlwLHJrMzU2OC14cGNzCiYjNDM7CiYjNDM7ICByZWc6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiYjNDM7ICAmIzM0OyNhZGRyZXNzLWNlbGxzJiMzNDs6CiYjNDM7ICAgIGNvbnN0OiAxCiYjNDM7CiYjNDM7ICAmIzM0OyNzaXplLWNlbGxzJiMzNDs6CiYjNDM7ICAgIGNvbnN0OiAwCiYjNDM7CiYjNDM7ICBjbG9ja3M6CiYjNDM7ICAgIGl0ZW1zOgomIzQzOyAgICAgIC0gZGVzY3JpcHRpb246IEFQQjMgYnVzIGludGVyZmFjZSBjbG9jayAoY2xrX2Nzcl9pKSwgcmVxdWlyZWQgZm9yIHJlZ2lzdGVyIGFjY2VzcwomIzQzOyAgICAgIC0gZGVzY3JpcHRpb246IEVFRSBjbG9jayAoY2xrX2VlZV9pKSwgcmVxdWlyZWQgZm9yIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgb3BlcmF0aW9uCiYjNDM7CiYjNDM7ICBjbG9jay1uYW1lczoKJiM0MzsgICAgaXRlbXM6CiYjNDM7ICAgICAgLSBjb25zdDogY3NyCiYjNDM7ICAgICAgLSBjb25zdDogZWVlCiYjNDM7CiYjNDM7ICBwaHlzOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwomIzQzOyAgcGh5LW5hbWVzOgomIzQzOyAgICBjb25zdDogc2VyZGVzCiYjNDM7CiYjNDM7ICBwb3dlci1kb21haW5zOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwomIzQzO3BhdHRlcm5Qcm9wZXJ0aWVzOgomIzQzOyAgJiMzNDtecGNzLW1paUBbMC0zXSQmIzM0OzoKJiM0MzsgICAgdHlwZTogb2JqZWN0CiYjNDM7ICAgIGRlc2NyaXB0aW9uOgomIzQzOyAgICAgIE9uZSBvZiB0aGUgZm91ciBNSUkgcG9ydHMgb2YgdGhlIFhQQ1MuIFRoZSBwb3J0IGlzIGxpbmtlZCB0byBhbgomIzQzOyAgICAgIEV0aGVybmV0IE1BQyBjb250cm9sbGVyIHZpYSB0aGUgcGNzLWhhbmRsZSBwcm9wZXJ0eSBpbiB0aGUgTUFDJiMzOTtzCiYjNDM7ICAgICAgZGV2aWNlIHRyZWUgbm9kZS4KJiM0MzsKJiM0MzsgICAgcHJvcGVydGllczoKJiM0MzsgICAgICByZWc6CiYjNDM7ICAgICAgICBkZXNjcmlwdGlvbjogTUlJIHBvcnQgbnVtYmVyLgomIzQzOyAgICAgICAgZW51bTogWzAsIDEsIDIsIDNdCiYjNDM7CiYjNDM7ICAgIHJlcXVpcmVkOgomIzQzOyAgICAgIC0gcmVnCiYjNDM7CiYjNDM7ICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZQomIzQzOwomIzQzO3JlcXVpcmVkOgomIzQzOyAgLSBjb21wYXRpYmxlCiYjNDM7ICAtIHJlZwomIzQzOyAgLSAmIzM0OyNhZGRyZXNzLWNlbGxzJiMzNDsKJiM0MzsgIC0gJiMzNDsjc2l6ZS1jZWxscyYjMzQ7CiYjNDM7ICAtIGNsb2NrcwomIzQzOyAgLSBjbG9jay1uYW1lcwomIzQzOyAgLSBwaHlzCiYjNDM7ICAtIHBoeS1uYW1lcwomIzQzOyAgLSBwb3dlci1kb21haW5zCiYjNDM7CiYjNDM7YWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlCiYjNDM7CiYjNDM7ZXhhbXBsZXM6CiYjNDM7ICAtIHwKJiM0MzsgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2Nsb2NrL3JrMzU2OC1jcnUuaCZndDsKJiM0MzsgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL3Bvd2VyL3JrMzU2OC1wb3dlci5oJmd0OwomIzQzOyAgICAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvcGh5L3BoeS5oJmd0OwomIzQzOwomIzQzOyAgICBwY3NAZmRhMDAwMDAgewomIzQzOyAgICAgIGNvbXBhdGlibGUgPSAmIzM0O3JvY2tjaGlwLHJrMzU2OC14cGNzJiMzNDs7CiYjNDM7ICAgICAgcmVnID0gJmx0OzB4ZmRhMDAwMDAgMHgyMDAwMDAmZ3Q7OwomIzQzOyAgICAgICNhZGRyZXNzLWNlbGxzID0gJmx0OzEmZ3Q7OwomIzQzOyAgICAgICNzaXplLWNlbGxzID0gJmx0OzAmZ3Q7OwomIzQzOyAgICAgIGNsb2NrcyA9ICZsdDsmYW1wO2NydSBQQ0xLX1hQQ1MmZ3Q7LCAmbHQ7JmFtcDtjcnUgQ0xLX1hQQ1NfRUVFJmd0OzsKJiM0MzsgICAgICBjbG9jay1uYW1lcyA9ICYjMzQ7Y3NyJiMzNDssICYjMzQ7ZWVlJiMzNDs7CiYjNDM7ICAgICAgcGh5cyA9ICZsdDsmYW1wO2NvbWJwaHkyIFBIWV9UWVBFX1NHTUlJJmd0OzsKJiM0MzsgICAgICBwaHktbmFtZXMgPSAmIzM0O3NlcmRlcyYjMzQ7OwomIzQzOyAgICAgIHBvd2VyLWRvbWFpbnMgPSAmbHQ7JmFtcDtwb3dlciBSSzM1NjhfUERfUElQRSZndDs7CiYjNDM7CiYjNDM7ICAgICAgcGNzLW1paUAwIHsKJiM0MzsgICAgICAgIHJlZyA9ICZsdDswJmd0OzsKJiM0MzsgICAgICB9OwomIzQzOyAgICB9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWwKaW5kZXggMzc5YjA4YmQ5ZTk3YS4uOGU4OThiY2U5YWY3MyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sCkBAIC04MCw2ICYjNDM7ODAsMTUgQEAgcHJvcGVydGllczoKICAgICBkZXNjcmlwdGlvbjoKICAgICAgIFNvbWUgYWRkaXRpb25hbCBwaXBlIHNldHRpbmdzIGFyZSBhY2Nlc3NlZCB0aHJvdWdoIEdSRiByZWdzLgogCiYjNDM7ICByb2NrY2hpcCxzZ21paS1tYWMtc2VsOgomIzQzOyAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzIKJiM0MzsgICAgZW51bTogWzAsIDFdCiYjNDM7ICAgIGRlZmF1bHQ6IDEKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgU2VsZWN0IGdtYWMwIG9yIGdtYWMxIHRvIGJlIHVzZWQgYXMgU0dNSUkgY29udHJvbGxlci4KJiM0MzsgICAgICBUaGUgaGFyZHdhcmUgcmVzZXQgdmFsdWUgaXMgR01BQzEgKDEpLiBTZXQgdGhpcyB0byAwIHRvIHJvdXRlCiYjNDM7ICAgICAgU0dNSUkgdG8gR01BQzAuCiYjNDM7CiAgICYjMzQ7I3BoeS1jZWxscyYjMzQ7OgogICAgIGNvbnN0OiAxCiAKQEAgLTEwNSw2ICYjNDM7MTE0LDEwIEBAIGFsbE9mOgogICAgICAgICAgIG1heEl0ZW1zOiAxCiAgICAgICAgIHJlc2V0LW5hbWVzOgogICAgICAgICAgIG1heEl0ZW1zOiAxCiYjNDM7ICAgICAgICByb2NrY2hpcCxzZ21paS1tYWMtc2VsOiB0cnVlCiYjNDM7ICAgIGVsc2U6CiYjNDM7ICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgIHJvY2tjaGlwLHNnbWlpLW1hYy1zZWw6IGZhbHNlCiAgIC0gaWY6CiAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICBjb21wYXRpYmxlOgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCAzYTE5ZGE3NGQwMGM5Li5jM2IxNzc1MmNjODE3IDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUwomIzQzOyYjNDM7JiM0MzsgYi9NQUlOVEFJTkVSUwpAQCAtMjM3NDQsNiAmIzQzOzIzNzQ0LDE1IEBAIFM6CU1haW50YWluZWQKIEY6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9yb2NrY2hpcCxyazM1NzYtc2FpLnlhbWwKIEY6CXNvdW5kL3NvYy9yb2NrY2hpcC9yb2NrY2hpcF9zYWkuKgogCiYjNDM7Uk9DS0NISVAgWFBDUyBEUklWRVIKJiM0MztNOglDb2lhIFByYW50ICZsdDtjb2lhcHJhbnRAZ21haWwuY29tJmd0OwomIzQzO0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKJiM0MztMOglsaW51eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnCiYjNDM7UzoJTWFpbnRhaW5lZAomIzQzO0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sCiYjNDM7RjoJZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmMKJiM0MztGOglpbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oCiYjNDM7CiBST0NLRVIgRFJJVkVSCiBNOglKaXJpIFBpcmtvICZsdDtqaXJpQHJlc251bGxpLnVzJmd0OwogTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC1waG90b25pY2F0LmR0cwppbmRleCA1OGMxMDUyYmE4ZWYzLi4yNWNhYTQ0MTk4ODQzIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC1waG90b25pY2F0LmR0cwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC1waG90b25pY2F0LmR0cwpAQCAtMyw2ICYjNDM7Myw3IEBACiAvZHRzLXYxLzsKIAogI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtkdC1iaW5kaW5ncy9sZWRzL2NvbW1vbi5oJmd0OwogI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL3BpbmN0cmwvcm9ja2NoaXAuaCZndDsKICNpbmNsdWRlICZsdDtkdC1iaW5kaW5ncy9zb2Mvcm9ja2NoaXAsdm9wMi5oJmd0OwogI2luY2x1ZGUgJiMzNDtyazM1NjguZHRzaSYjMzQ7CkBAIC0yNDIsNiAmIzQzOzI0Myw3IEBAICZhbXA7Y29tYnBoeTEgewogCiAmYW1wO2NvbWJwaHkyIHsKIAlzdGF0dXMgPSAmIzM0O29rYXkmIzM0OzsKJiM0MzsJcm9ja2NoaXAsc2dtaWktbWFjLXNlbCA9ICZsdDswJmd0OzsKIH07CiAKICZhbXA7Y3B1MCB7CkBAIC0yNjAsOSAmIzQzOzI2MiwxOCBAQCAmYW1wO2NwdTMgewogCWNwdS1zdXBwbHkgPSAmbHQ7JmFtcDt2ZGRfY3B1Jmd0OzsKIH07CiAKLS8qIE1vdG9yY29tbSBZVDg1MjFTQyBMQU4gcG9ydCAocmVxdWlyZSBTR01JSSkgKi8KJiM0MzsvKiBNb3RvcmNvbW0gWVQ4NTIxU0MgTEFOIHBvcnQgKi8KICZhbXA7Z21hYzAgewotCXN0YXR1cyA9ICYjMzQ7ZGlzYWJsZWQmIzM0OzsKJiM0MzsJYXNzaWduZWQtY2xvY2tzID0gJmx0OyZhbXA7Y3J1IFNDTEtfR01BQzBfUlhfVFgmZ3Q7OwomIzQzOwlhc3NpZ25lZC1jbG9jay1wYXJlbnRzID0gJmx0OyZhbXA7eHBjc19nbWFjMF9jbGsmZ3Q7OwomIzQzOwlwY3MtaGFuZGxlID0gJmx0OyZhbXA7eHBjc19taWkwJmd0OzsKJiM0MzsJbWFuYWdlZCA9ICYjMzQ7aW4tYmFuZC1zdGF0dXMmIzM0OzsKJiM0MzsJcGh5LWhhbmRsZSA9ICZsdDsmYW1wO3NnbWlpX3BoeSZndDs7CiYjNDM7CXBoeS1tb2RlID0gJiMzNDtzZ21paSYjMzQ7OwomIzQzOwlwaHktc3VwcGx5ID0gJmx0OyZhbXA7dmNjXzN2MyZndDs7CiYjNDM7CXBpbmN0cmwtbmFtZXMgPSAmIzM0O2RlZmF1bHQmIzM0OzsKJiM0MzsJcGluY3RybC0wID0gJmx0OyZhbXA7Z21hYzBfbWlpbSZndDs7CiYjNDM7CXN0YXR1cyA9ICYjMzQ7b2theSYjMzQ7OwogfTsKIAogLyogTW90b3Jjb21tIFlUODUyMVNDIFdBTiBwb3J0ICovCkBAIC0zNDEsNiAmIzQzOzM1MiwzNiBAQCAmYW1wO2kyczBfOGNoIHsKIAlzdGF0dXMgPSAmIzM0O29rYXkmIzM0OzsKIH07CiAKJiM0MzsmYW1wO21kaW8wIHsKJiM0MzsJc2dtaWlfcGh5OiBldGhlcm5ldC1waHlAMyB7CiYjNDM7CQljb21wYXRpYmxlID0gJiMzNDtldGhlcm5ldC1waHktaWVlZTgwMi4zLWMyMiYjMzQ7OwomIzQzOwkJcmVnID0gJmx0OzB4MyZndDs7CiYjNDM7CQltYXgtc3BlZWQgPSAmbHQ7MTAwMCZndDs7CiYjNDM7CQlyZXNldC1hc3NlcnQtdXMgPSAmbHQ7MjAwMDAmZ3Q7OwomIzQzOwkJcmVzZXQtZGVhc3NlcnQtdXMgPSAmbHQ7MTAwMDAwJmd0OzsKJiM0MzsJCXJlc2V0LWdwaW9zID0gJmx0OyZhbXA7Z3BpbzMgUktfUEM2IEdQSU9fQUNUSVZFX0xPVyZndDs7CiYjNDM7CiYjNDM7CQlsZWRzIHsKJiM0MzsJCQkjYWRkcmVzcy1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsJCQkjc2l6ZS1jZWxscyA9ICZsdDswJmd0OzsKJiM0MzsKJiM0MzsJCQlsZWRAMSB7CiYjNDM7CQkJCXJlZyA9ICZsdDsxJmd0OzsKJiM0MzsJCQkJY29sb3IgPSAmbHQ7TEVEX0NPTE9SX0lEX0FNQkVSJmd0OzsKJiM0MzsJCQkJZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fTEFOOwomIzQzOwkJCQlkZWZhdWx0LXN0YXRlID0gJiMzNDtrZWVwJiMzNDs7CiYjNDM7CQkJfTsKJiM0MzsKJiM0MzsJCQlsZWRAMiB7CiYjNDM7CQkJCXJlZyA9ICZsdDsyJmd0OzsKJiM0MzsJCQkJY29sb3IgPSAmbHQ7TEVEX0NPTE9SX0lEX0dSRUVOJmd0OzsKJiM0MzsJCQkJZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fTEFOOwomIzQzOwkJCQlkZWZhdWx0LXN0YXRlID0gJiMzNDtrZWVwJiMzNDs7CiYjNDM7CQkJfTsKJiM0MzsJCX07CiYjNDM7CX07CiYjNDM7fTsKJiM0MzsKICZhbXA7bWRpbzEgewogCXJnbWlpX3BoeTogZXRoZXJuZXQtcGh5QDMgewogCQljb21wYXRpYmxlID0gJiMzNDtldGhlcm5ldC1waHktaWVlZTgwMi4zLWMyMiYjMzQ7OwpAQCAtMzUwLDYgJiM0MzszOTEsMjUgQEAgcmdtaWlfcGh5OiBldGhlcm5ldC1waHlAMyB7CiAJCXJlc2V0LWdwaW9zID0gJmx0OyZhbXA7Z3BpbzQgUktfUEMwIEdQSU9fQUNUSVZFX0xPVyZndDs7CiAJCXJ4LWludGVybmFsLWRlbGF5LXBzID0gJmx0OzE1MDAmZ3Q7OwogCQl0eC1pbnRlcm5hbC1kZWxheS1wcyA9ICZsdDsxNTAwJmd0OzsKJiM0MzsKJiM0MzsJCWxlZHMgewomIzQzOwkJCSNhZGRyZXNzLWNlbGxzID0gJmx0OzEmZ3Q7OwomIzQzOwkJCSNzaXplLWNlbGxzID0gJmx0OzAmZ3Q7OwomIzQzOwomIzQzOwkJCWxlZEAxIHsKJiM0MzsJCQkJcmVnID0gJmx0OzEmZ3Q7OwomIzQzOwkJCQljb2xvciA9ICZsdDtMRURfQ09MT1JfSURfQU1CRVImZ3Q7OwomIzQzOwkJCQlmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9XQU47CiYjNDM7CQkJCWRlZmF1bHQtc3RhdGUgPSAmIzM0O2tlZXAmIzM0OzsKJiM0MzsJCQl9OwomIzQzOwomIzQzOwkJCWxlZEAyIHsKJiM0MzsJCQkJcmVnID0gJmx0OzImZ3Q7OwomIzQzOwkJCQljb2xvciA9ICZsdDtMRURfQ09MT1JfSURfR1JFRU4mZ3Q7OwomIzQzOwkJCQlmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9XQU47CiYjNDM7CQkJCWRlZmF1bHQtc3RhdGUgPSAmIzM0O2tlZXAmIzM0OzsKJiM0MzsJCQl9OwomIzQzOwkJfTsKIAl9OwogfTsKIApAQCAtNTg2LDMgJiM0Mzs2NDYsMTMgQEAgJmFtcDt4aW4zMmsgewogCXBpbmN0cmwtbmFtZXMgPSAmIzM0O2RlZmF1bHQmIzM0OzsKIAlwaW5jdHJsLTAgPSAmbHQ7JmFtcDtjbGszMmtfb3V0MSZndDs7CiB9OwomIzQzOwomIzQzOyZhbXA7eHBjcyB7CiYjNDM7CXN0YXR1cyA9ICYjMzQ7b2theSYjMzQ7OwomIzQzOwlwaHlzID0gJmx0OyZhbXA7Y29tYnBoeTIgUEhZX1RZUEVfU0dNSUkmZ3Q7OwomIzQzOwlwaHktbmFtZXMgPSAmIzM0O3NlcmRlcyYjMzQ7OwomIzQzO307CiYjNDM7CiYjNDM7JmFtcDt4cGNzX21paTAgewomIzQzOwlzdGF0dXMgPSAmIzM0O29rYXkmIzM0OzsKJiM0Mzt9OwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2kKaW5kZXggM2JjNjUzZjAyN2YxZi4uOTg5ZTE2NGMwZWIzOSAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaQomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpCkBAIC0xMTAsNiAmIzQzOzExMCw1MSBAQCBzYXRhMDogc2F0YUBmYzAwMDAwMCB7CiAJCXN0YXR1cyA9ICYjMzQ7ZGlzYWJsZWQmIzM0OzsKIAl9OwogCiYjNDM7CXhwY3M6IHBjc0BmZGEwMDAwMCB7CiYjNDM7CQljb21wYXRpYmxlID0gJiMzNDtyb2NrY2hpcCxyazM1NjgteHBjcyYjMzQ7OwomIzQzOwkJI2FkZHJlc3MtY2VsbHMgPSAmbHQ7MSZndDs7CiYjNDM7CQkjc2l6ZS1jZWxscyA9ICZsdDswJmd0OzsKJiM0MzsJCXJlZyA9ICZsdDsweDAgMHhmZGEwMDAwMCAweDAgMHgyMDAwMDAmZ3Q7OwomIzQzOwkJY2xvY2tzID0gJmx0OyZhbXA7Y3J1IFBDTEtfWFBDUyZndDssICZsdDsmYW1wO2NydSBDTEtfWFBDU19FRUUmZ3Q7OwomIzQzOwkJY2xvY2stbmFtZXMgPSAmIzM0O2NzciYjMzQ7LCAmIzM0O2VlZSYjMzQ7OwomIzQzOwkJcG93ZXItZG9tYWlucyA9ICZsdDsmYW1wO3Bvd2VyIFJLMzU2OF9QRF9QSVBFJmd0OzsKJiM0MzsJCXN0YXR1cyA9ICYjMzQ7ZGlzYWJsZWQmIzM0OzsKJiM0MzsKJiM0MzsJCXhwY3NfbWlpMDogcGNzLW1paUAwIHsKJiM0MzsJCQlyZWcgPSAmbHQ7MCZndDs7CiYjNDM7CQkJc3RhdHVzID0gJiMzNDtkaXNhYmxlZCYjMzQ7OwomIzQzOwkJfTsKJiM0MzsKJiM0MzsJCXhwY3NfbWlpMTogcGNzLW1paUAxIHsKJiM0MzsJCQlyZWcgPSAmbHQ7MSZndDs7CiYjNDM7CQkJc3RhdHVzID0gJiMzNDtkaXNhYmxlZCYjMzQ7OwomIzQzOwkJfTsKJiM0MzsKJiM0MzsJCXhwY3NfbWlpMjogcGNzLW1paUAyIHsKJiM0MzsJCQlyZWcgPSAmbHQ7MiZndDs7CiYjNDM7CQkJc3RhdHVzID0gJiMzNDtkaXNhYmxlZCYjMzQ7OwomIzQzOwkJfTsKJiM0MzsKJiM0MzsJCXhwY3NfbWlpMzogcGNzLW1paUAzIHsKJiM0MzsJCQlyZWcgPSAmbHQ7MyZndDs7CiYjNDM7CQkJc3RhdHVzID0gJiMzNDtkaXNhYmxlZCYjMzQ7OwomIzQzOwkJfTsKJiM0MzsJfTsKJiM0MzsKJiM0MzsJeHBjc19nbWFjMF9jbGs6IHhwY3MtZ21hYzAtY2xvY2sgewomIzQzOwkJY29tcGF0aWJsZSA9ICYjMzQ7Zml4ZWQtY2xvY2smIzM0OzsKJiM0MzsJCWNsb2NrLWZyZXF1ZW5jeSA9ICZsdDsxMjUwMDAwMDAmZ3Q7OwomIzQzOwkJY2xvY2stb3V0cHV0LW5hbWVzID0gJiMzNDtjbGtfZ21hYzBfeHBjc19taWkmIzM0OzsKJiM0MzsJCSNjbG9jay1jZWxscyA9ICZsdDswJmd0OzsKJiM0MzsJfTsKJiM0MzsKJiM0MzsJeHBjc19nbWFjMV9jbGs6IHhwY3MtZ21hYzEtY2xvY2sgewomIzQzOwkJY29tcGF0aWJsZSA9ICYjMzQ7Zml4ZWQtY2xvY2smIzM0OzsKJiM0MzsJCWNsb2NrLWZyZXF1ZW5jeSA9ICZsdDsxMjUwMDAwMDAmZ3Q7OwomIzQzOwkJY2xvY2stb3V0cHV0LW5hbWVzID0gJiMzNDtjbGtfZ21hYzFfeHBjc19taWkmIzM0OzsKJiM0MzsJCSNjbG9jay1jZWxscyA9ICZsdDswJmd0OzsKJiM0MzsJfTsKJiM0MzsKIAlwaXBlX3BoeV9ncmYwOiBzeXNjb25AZmRjNzAwMDAgewogCQljb21wYXRpYmxlID0gJiMzNDtyb2NrY2hpcCxyazM1NjgtcGlwZS1waHktZ3JmJiMzNDssICYjMzQ7c3lzY29uJiMzNDs7CiAJCXJlZyA9ICZsdDsweDAgMHhmZGM3MDAwMCAweDAgMHgxMDAwJmd0OzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnCmluZGV4IGUzZGQ1YWRkYTVhY2EuLjUwODhhY2MwNjk4MmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZwpAQCAtMTcwLDYgJiM0MzsxNzAsNyBAQCBjb25maWcgRFdNQUNfUk9DS0NISVAKIAlkZWZhdWx0IEFSQ0hfUk9DS0NISVAKIAlkZXBlbmRzIG9uIE9GICZhbXA7JmFtcDsgKEFSQ0hfUk9DS0NISVAgfHwgQ09NUElMRV9URVNUKQogCXNlbGVjdCBNRkRfU1lTQ09OCiYjNDM7CXNlbGVjdCBQQ1NfWFBDU19ST0NLQ0hJUAogCWhlbHAKIAkgIFN1cHBvcnQgZm9yIEV0aGVybmV0IGNvbnRyb2xsZXIgb24gUm9ja2NoaXAgUkszMjg4IFNvQy4KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMKaW5kZXggZjVmOWZhNjdlY2Q3Ny4uZmQ1ZjAxYzg5NDFjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jCkBAIC02MDMsMTMgJiM0Mzs2MDMsNDcgQEAgc3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpCiAJcGxhdC0mZ3Q7bWRpb19idXNfZGF0YS0mZ3Q7bmVlZHNfcmVzZXQgPSB0cnVlOwogfQogCiYjNDM7c3RhdGljIGludCBpbnRlbF9tZ2JlX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBmd25vZGVfaGFuZGxlICpkZXZub2RlLCAqcGNzbm9kZTsKJiM0MzsJc3RydWN0IGR3X3hwY3MgKnhwY3MgPSBOVUxMOwomIzQzOwlpbnQgYWRkcjsKJiM0MzsKJiM0MzsJZGV2bm9kZSA9IGRldl9md25vZGUocHJpdi0mZ3Q7ZGV2aWNlKTsKJiM0MzsKJiM0MzsJaWYgKGZ3bm9kZV9wcm9wZXJ0eV9wcmVzZW50KGRldm5vZGUsICYjMzQ7cGNzLWhhbmRsZSYjMzQ7KSkgewomIzQzOwkJcGNzbm9kZSA9IGZ3bm9kZV9maW5kX3JlZmVyZW5jZShkZXZub2RlLCAmIzM0O3Bjcy1oYW5kbGUmIzM0OywgMCk7CiYjNDM7CQl4cGNzID0geHBjc19jcmVhdGVfZndub2RlKHBjc25vZGUpOwomIzQzOwkJZndub2RlX2hhbmRsZV9wdXQocGNzbm9kZSk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlhZGRyID0gZmZzKHByaXYtJmd0O3BsYXQtJmd0O21kaW9fYnVzX2RhdGEtJmd0O3Bjc19tYXNrKSAtIDE7CiYjNDM7CQl4cGNzID0geHBjc19jcmVhdGVfbWRpb2Rldihwcml2LSZndDttaWksIGFkZHIpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChJU19FUlIoeHBjcykpCiYjNDM7CQlyZXR1cm4gUFRSX0VSUih4cGNzKTsKJiM0MzsKJiM0MzsJeHBjc19jb25maWdfZWVlX211bHRfZmFjdCh4cGNzLCBwcml2LSZndDtwbGF0LSZndDttdWx0X2ZhY3RfMTAwbnMpOwomIzQzOwomIzQzOwlwcml2LSZndDtody0mZ3Q7eHBjcyA9IHhwY3M7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBpbnRlbF9tZ2JlX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKJiM0Mzt7CiYjNDM7CWlmICghcHJpdi0mZ3Q7aHctJmd0O3hwY3MpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXhwY3NfZGVzdHJveShwcml2LSZndDtody0mZ3Q7eHBjcyk7CiYjNDM7CXByaXYtJmd0O2h3LSZndDt4cGNzID0gTlVMTDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICppbnRlbF9tZ2JlX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCQkJCQkJIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCiB7Ci0JLyogcGxhdC0mZ3Q7bWRpb19idXNfZGF0YS0mZ3Q7aGFzX3hwY3MgaGFzIGJlZW4gc2V0IHRydWUsIHNvIHRoZXJlCi0JICogc2hvdWxkIGFsd2F5cyBiZSBhbiBYUENTLiBUaGUgb3JpZ2luYWwgY29kZSB3b3VsZCBhbHdheXMKLQkgKiByZXR1cm4gdGhpcyBpZiBwcmVzZW50LgotCSAqLwomIzQzOwlpZiAoIXByaXYtJmd0O2h3LSZndDt4cGNzKQomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CiAJcmV0dXJuIHhwY3NfdG9fcGh5bGlua19wY3MocHJpdi0mZ3Q7aHctJmd0O3hwY3MpOwogfQogCkBAIC03MzMsNiAmIzQzOzc2Nyw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfbWdiZV9jb21tb25fZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAkgICAgcGxhdC0mZ3Q7cGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYKSB7CiAJCXBsYXQtJmd0O21kaW9fYnVzX2RhdGEtJmd0O3Bjc19tYXNrID0gQklUX1UzMihJTlRFTF9NR0JFX1hQQ1NfQUREUik7CiAJCXBsYXQtJmd0O2RlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTsKJiM0MzsJCXBsYXQtJmd0O3Bjc19pbml0ID0gaW50ZWxfbWdiZV9wY3NfaW5pdDsKJiM0MzsJCXBsYXQtJmd0O3Bjc19leGl0ID0gaW50ZWxfbWdiZV9wY3NfZXhpdDsKIAkJcGxhdC0mZ3Q7c2VsZWN0X3BjcyA9IGludGVsX21nYmVfc2VsZWN0X3BjczsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYwppbmRleCAxOWYzNGUxOGJmZWYyLi45YWYzMmMyNmY5YzE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jCkBAIC04MSw4ICYjNDM7ODEsMTEgQEAgc3RhdGljIGludCByZW5lc2FzX2dtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCiBzdGF0aWMgdm9pZCByZW5lc2FzX2dtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogewotCWlmIChwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3MpCi0JCW1paWNfZGVzdHJveShwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3MpOwomIzQzOwlpZiAoIXByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3BjcykKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJbWlpY19kZXN0cm95KHByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3Bjcyk7CiYjNDM7CXByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3BjcyA9IE5VTEw7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJlbmVzYXNfZ21hY19zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jCmluZGV4IDhkNzA0MmU2ODkyNjEuLmU0N2NhMWJlYzViOGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYwpAQCAtMjAsNiAmIzQzOzIwLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9kZWxheS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21mZC9zeXNjb24uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9yZWdtYXAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGNzL3Bjcy14cGNzLXJrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcG1fcnVudGltZS5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O3N0bW1hY19wbGF0Zm9ybS5oJiMzNDsKQEAgLTQ3LDYgJiM0Mzs0OCw3IEBAIHN0cnVjdCBya19nbWFjX29wcyB7CiAJdm9pZCAoKnNldF90b19yZ21paSkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsCiAJCQkgICAgIGludCB0eF9kZWxheSwgaW50IHJ4X2RlbGF5KTsKIAl2b2lkICgqc2V0X3RvX3JtaWkpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KTsKJiM0MzsJdm9pZCAoKnNldF90b19zZ21paSkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpOwogCWludCAoKnNldF9zcGVlZCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsCiAJCQkgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSwgaW50IHNwZWVkKTsKIAl2b2lkICgqaW50ZWdyYXRlZF9waHlfcG93ZXJ1cCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpOwpAQCAtNjMsNiAmIzQzOzY1LDcgQEAgc3RydWN0IHJrX2dtYWNfb3BzIHsKIAlib29sIGNsb2NrX2dyZl9yZWdfaW5fcGhwOwogCWJvb2wgc3VwcG9ydHNfcmdtaWk7CiAJYm9vbCBzdXBwb3J0c19ybWlpOwomIzQzOwlib29sIHN1cHBvcnRzX3NnbWlpOwogCWJvb2wgcGhwX2dyZl9yZXF1aXJlZDsKIAlib29sIHJlZ3NfdmFsaWQ7CiAJdTMyIHJlZ3NbXTsKQEAgLTk4LDYgJiM0MzsxMDEsNyBAQCBzdHJ1Y3QgcmtfcHJpdl9kYXRhIHsKIAlib29sIGludGVncmF0ZWRfcGh5OwogCWJvb2wgc3VwcG9ydHNfcmdtaWk7CiAJYm9vbCBzdXBwb3J0c19ybWlpOwomIzQzOwlib29sIHN1cHBvcnRzX3NnbWlpOwogCiAJc3RydWN0IGNsa19idWxrX2RhdGEgKmNsa3M7CiAJaW50IG51bV9jbGtzOwpAQCAtODA5LDYgJiM0Mzs4MTMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJrX2dtYWNfb3BzIHJrMzUyOF9vcHMgPSB7CiAjZGVmaW5lIFJLMzU2OF9HUkZfR01BQzFfQ09OMQkJMHgwMzhjCiAKIC8qIFJLMzU2OF9HUkZfR01BQzBfQ09OMSAmYW1wOyZhbXA7IFJLMzU2OF9HUkZfR01BQzFfQ09OMSAqLwomIzQzOyNkZWZpbmUgUkszNTY4X0dNQUNfTU9ERV9STUlJX1JHTUlJCQlHUkZfQ0xSX0JJVCg3KQomIzQzOyNkZWZpbmUgUkszNTY4X0dNQUNfTU9ERV9TR01JSV9RU0dNSUkJCUdSRl9CSVQoNykKICNkZWZpbmUgUkszNTY4X0dNQUNfRkxPV19DVFJMCQkJR1JGX0JJVCgzKQogI2RlZmluZSBSSzM1NjhfR01BQ19GTE9XX0NUUkxfQ0xSCQlHUkZfQ0xSX0JJVCgzKQogI2RlZmluZSBSSzM1NjhfR01BQ19SWENMS19ETFlfRU5BQkxFCQlHUkZfQklUKDEpCkBAIC04NTEsMTggJiM0Mzs4NTcsMzIgQEAgc3RhdGljIHZvaWQgcmszNTY4X3NldF90b19yZ21paShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdiwKIAkJICAgICBSSzM1NjhfR01BQ19DTEtfVFhfRExfQ0ZHKHR4X2RlbGF5KSk7CiAKIAlyZWdtYXBfd3JpdGUoYnNwX3ByaXYtJmd0O2dyZiwgY29uMSwKJiM0MzsJCSAgICAgUkszNTY4X0dNQUNfTU9ERV9STUlJX1JHTUlJIHwKIAkJICAgICBSSzM1NjhfR01BQ19SWENMS19ETFlfRU5BQkxFIHwKIAkJICAgICBSSzM1NjhfR01BQ19UWENMS19ETFlfRU5BQkxFKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHJrMzU2OF9zZXRfdG9fc2dtaWkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpCiYjNDM7ewomIzQzOwl1MzIgY29uMTsKJiM0MzsKJiM0MzsJY29uMSA9IChic3BfcHJpdi0mZ3Q7aWQgPT0gMSkgPyBSSzM1NjhfR1JGX0dNQUMxX0NPTjEgOgomIzQzOwkJCQkgICAgIFJLMzU2OF9HUkZfR01BQzBfQ09OMTsKJiM0MzsKJiM0MzsJcmVnbWFwX3dyaXRlKGJzcF9wcml2LSZndDtncmYsIGNvbjEsIFJLMzU2OF9HTUFDX01PREVfU0dNSUlfUVNHTUlJKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgY29uc3Qgc3RydWN0IHJrX2dtYWNfb3BzIHJrMzU2OF9vcHMgPSB7CiAJLmluaXQgPSByazM1NjhfaW5pdCwKIAkuc2V0X3RvX3JnbWlpID0gcmszNTY4X3NldF90b19yZ21paSwKJiM0MzsJLnNldF90b19zZ21paSA9IHJrMzU2OF9zZXRfdG9fc2dtaWksCiYjNDM7CiAJLnNldF9zcGVlZCA9IHJrX3NldF9jbGtfbWFjX3NwZWVkLAogCiAJLmdtYWNfcGh5X2ludGZfc2VsX21hc2sgPSBHRU5NQVNLX1UxNig2LCA0KSwKIAogCS5zdXBwb3J0c19ybWlpID0gdHJ1ZSwKJiM0MzsJLnN1cHBvcnRzX3NnbWlpID0gdHJ1ZSwKIAogCS5yZWdzX3ZhbGlkID0gdHJ1ZSwKIAkucmVncyA9IHsKQEAgLTEyMDgsNiAmIzQzOzEyMjgsNDMgQEAgc3RhdGljIHZvaWQgcmtfcGh5X3Bvd2VyZG93bihzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdikKIAkJZGV2X2Vycihic3BfcHJpdi0mZ3Q7ZGV2LCAmIzM0O2ZhaWwgdG8gZGlzYWJsZSBwaHktc3VwcGx5XG4mIzM0Oyk7CiB9CiAKJiM0MztzdGF0aWMgaW50IHJrX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBwcml2LSZndDtkZXZpY2UtJmd0O29mX25vZGU7CiYjNDM7CXN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25vZGU7CiYjNDM7CXN0cnVjdCBkd194cGNzICp4cGNzOwomIzQzOwomIzQzOwlwY3Nfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUobnAsICYjMzQ7cGNzLWhhbmRsZSYjMzQ7LCAwKTsKJiM0MzsJaWYgKCFwY3Nfbm9kZSkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwomIzQzOwl4cGNzID0geHBjc19ya19jcmVhdGUocHJpdi0mZ3Q7ZGV2aWNlLCBwY3Nfbm9kZSk7CiYjNDM7CW9mX25vZGVfcHV0KHBjc19ub2RlKTsKJiM0MzsJaWYgKElTX0VSUih4cGNzKSkKJiM0MzsJCXJldHVybiBQVFJfRVJSKHhwY3MpOwomIzQzOwomIzQzOwlwcml2LSZndDtody0mZ3Q7eHBjcyA9IHhwY3M7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBya19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiYjNDM7ewomIzQzOwlpZiAoIXByaXYtJmd0O2h3LSZndDt4cGNzKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwl4cGNzX2Rlc3Ryb3kocHJpdi0mZ3Q7aHctJmd0O3hwY3MpOwomIzQzOwlwcml2LSZndDtody0mZ3Q7eHBjcyA9IE5VTEw7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJrX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAomIzQzOwkJCQkJIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCiYjNDM7ewomIzQzOwlpZiAoIXByaXYtJmd0O2h3LSZndDt4cGNzKQomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CiYjNDM7CXJldHVybiB4cGNzX3RvX3BoeWxpbmtfcGNzKHByaXYtJmd0O2h3LSZndDt4cGNzKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAogCQkJCQkgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCwKIAkJCQkJICBjb25zdCBzdHJ1Y3QgcmtfZ21hY19vcHMgKm9wcykKQEAgLTEzMzAsNiAmIzQzOzEzODcsNyBAQCBzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAogCiAJYnNwX3ByaXYtJmd0O3N1cHBvcnRzX3JnbWlpID0gb3BzLSZndDtzdXBwb3J0c19yZ21paSB8fCAhIW9wcy0mZ3Q7c2V0X3RvX3JnbWlpOwogCWJzcF9wcml2LSZndDtzdXBwb3J0c19ybWlpID0gb3BzLSZndDtzdXBwb3J0c19ybWlpIHx8ICEhb3BzLSZndDtzZXRfdG9fcm1paTsKJiM0MzsJYnNwX3ByaXYtJmd0O3N1cHBvcnRzX3NnbWlpID0gb3BzLSZndDtzdXBwb3J0c19zZ21paSB8fCAhIW9wcy0mZ3Q7c2V0X3RvX3NnbWlpOwogCiAJaWYgKG9wcy0mZ3Q7aW5pdCkgewogCQlyZXQgPSBvcHMtJmd0O2luaXQoYnNwX3ByaXYpOwpAQCAtMTM2MSw2ICYjNDM7MTQxOSwxMCBAQCBzdGF0aWMgaW50IHJrX2dtYWNfY2hlY2tfb3BzKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KQogCQlpZiAoIWJzcF9wcml2LSZndDtzdXBwb3J0c19ybWlpKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCWJyZWFrOwomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSToKJiM0MzsJCWlmICghYnNwX3ByaXYtJmd0O3N1cHBvcnRzX3NnbWlpKQomIzQzOwkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZGV2X2Vycihic3BfcHJpdi0mZ3Q7ZGV2LAogCQkJJiMzNDt1bnN1cHBvcnRlZCBpbnRlcmZhY2UgJWQmIzM0OywgYnNwX3ByaXYtJmd0O3BoeV9pZmFjZSk7CkBAIC0xMzc5LDE2ICYjNDM7MTQ0MSwxOSBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcG93ZXJ1cChzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdikKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCiYjNDM7CXJldCA9IGdtYWNfY2xrX2VuYWJsZShic3BfcHJpdiwgdHJ1ZSk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlpZiAoYnNwX3ByaXYtJmd0O3BoeV9pZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpCiYjNDM7CQlnb3RvIHNldF9tb2RlOwomIzQzOwogCXJldCA9IHJrX2dldF9waHlfaW50Zl9zZWwoYnNwX3ByaXYtJmd0O3BoeV9pZmFjZSk7CiAJaWYgKHJldCAmbHQ7IDApCi0JCXJldHVybiByZXQ7CiYjNDM7CQlnb3RvIGNsa19kaXNhYmxlOwogCiAJaW50ZiA9IHJldDsKIAotCXJldCA9IGdtYWNfY2xrX2VuYWJsZShic3BfcHJpdiwgdHJ1ZSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQogCWlmIChic3BfcHJpdi0mZ3Q7Z21hY19waHlfaW50Zl9zZWxfbWFzayB8fAogCSAgICBic3BfcHJpdi0mZ3Q7Z21hY19ybWlpX21vZGVfbWFzaykgewogCQkvKiBJZiBkZWZpbmVkLCBlbmNvZGUgdGhlIHBoeV9pbnRmX3NlbCB2YWx1ZSAqLwpAQCAtMTM5OSwxMCAmIzQzOzE0NjQsOCBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcG93ZXJ1cChzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdikKIAkJCQkgICAgICBic3BfcHJpdi0mZ3Q7Z21hY19ybWlpX21vZGVfbWFzayk7CiAKIAkJcmV0ID0gcmtfd3JpdGVfZ21hY19ncmZfcmVnKGJzcF9wcml2LCB2YWwpOwotCQlpZiAocmV0ICZsdDsgMCkgewotCQkJZ21hY19jbGtfZW5hYmxlKGJzcF9wcml2LCBmYWxzZSk7Ci0JCQlyZXR1cm4gcmV0OwotCQl9CiYjNDM7CQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCQlnb3RvIGNsa19kaXNhYmxlOwogCX0KIAogCWlmIChic3BfcHJpdi0mZ3Q7Y2xvY2sucm1paV9tb2RlX21hc2spIHsKQEAgLTE0MTAsMTMgJiM0MzsxNDczLDEyIEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KQogCQkJCSAgICAgYnNwX3ByaXYtJmd0O2Nsb2NrLnJtaWlfbW9kZV9tYXNrKTsKIAogCQlyZXQgPSBya193cml0ZV9jbG9ja19ncmZfcmVnKGJzcF9wcml2LCB2YWwpOwotCQlpZiAocmV0ICZsdDsgMCkgewotCQkJZ21hY19jbGtfZW5hYmxlKGJzcF9wcml2LCBmYWxzZSk7Ci0JCQlyZXR1cm4gcmV0OwotCQl9CiYjNDM7CQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCQlnb3RvIGNsa19kaXNhYmxlOwogCX0KIAotCS8qcm1paSBvciByZ21paSovCiYjNDM7c2V0X21vZGU6CiYjNDM7CS8qIHJtaWksIHJnbWlpLCBzZ21paSAqLwogCXN3aXRjaCAoYnNwX3ByaXYtJmd0O3BoeV9pZmFjZSkgewogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOgogCQlkZXZfaW5mbyhkZXYsICYjMzQ7aW5pdCBmb3IgUkdNSUlcbiYjMzQ7KTsKQEAgLTE0NDcsMTUgJiM0MzsxNTA5LDIwIEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KQogCQlpZiAoYnNwX3ByaXYtJmd0O29wcy0mZ3Q7c2V0X3RvX3JtaWkpCiAJCQlic3BfcHJpdi0mZ3Q7b3BzLSZndDtzZXRfdG9fcm1paShic3BfcHJpdik7CiAJCWJyZWFrOwomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSToKJiM0MzsJCWRldl9pbmZvKGRldiwgJiMzNDtpbml0IGZvciBTR01JSVxuJiMzNDspOwomIzQzOwkJaWYgKGJzcF9wcml2LSZndDtvcHMtJmd0O3NldF90b19zZ21paSkKJiM0MzsJCQlic3BfcHJpdi0mZ3Q7b3BzLSZndDtzZXRfdG9fc2dtaWkoYnNwX3ByaXYpOwomIzQzOwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZGV2X2VycihkZXYsICYjMzQ7Tk8gaW50ZXJmYWNlIGRlZmluZWQhXG4mIzM0Oyk7CiYjNDM7CQlyZXQgPSAtRUlOVkFMOwomIzQzOwkJZ290byBjbGtfZGlzYWJsZTsKIAl9CiAKIAlyZXQgPSBya19waHlfcG93ZXJ1cChic3BfcHJpdik7Ci0JaWYgKHJldCkgewotCQlnbWFjX2Nsa19lbmFibGUoYnNwX3ByaXYsIGZhbHNlKTsKLQkJcmV0dXJuIHJldDsKLQl9CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlnb3RvIGNsa19kaXNhYmxlOwogCiAJcG1fcnVudGltZV9nZXRfc3luYyhkZXYpOwogCkBAIC0xNDYzLDYgJiM0MzsxNTMwLDEwIEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KQogCQlic3BfcHJpdi0mZ3Q7b3BzLSZndDtpbnRlZ3JhdGVkX3BoeV9wb3dlcnVwKGJzcF9wcml2KTsKIAogCXJldHVybiAwOwomIzQzOwomIzQzO2Nsa19kaXNhYmxlOgomIzQzOwlnbWFjX2Nsa19lbmFibGUoYnNwX3ByaXYsIGZhbHNlKTsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHZvaWQgcmtfZ21hY19wb3dlcmRvd24oc3RydWN0IHJrX3ByaXZfZGF0YSAqZ21hYykKQEAgLTE0ODYsNiAmIzQzOzE1NTcsOSBAQCBzdGF0aWMgdm9pZCBya19nZXRfaW50ZXJmYWNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgKmJzcF9wcml2LAogCiAJaWYgKHJrLSZndDtzdXBwb3J0c19ybWlpKQogCQlfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUksIGludGVyZmFjZXMpOwomIzQzOwomIzQzOwlpZiAocmstJmd0O3N1cHBvcnRzX3NnbWlpKQomIzQzOwkJX19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSwgaW50ZXJmYWNlcyk7CiB9CiAKIHN0YXRpYyBpbnQgcmtfc2V0X2Nsa190eF9yYXRlKHZvaWQgKmJzcF9wcml2Xywgc3RydWN0IGNsayAqY2xrX3R4X2ksCkBAIC0xNjAyLDYgJiM0MzsxNjc2LDE3IEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXBsYXRfZGF0LSZndDtzdXNwZW5kID0gcmtfZ21hY19zdXNwZW5kOwogCXBsYXRfZGF0LSZndDtyZXN1bWUgPSBya19nbWFjX3Jlc3VtZTsKIAomIzQzOwlpZiAocGxhdF9kYXQtJmd0O3BoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSB7CiYjNDM7CQkvKiBTR01JSSBjbG9jayBhbHdheXMgcnVucyBhdCAxMjUgTUh6ICovCiYjNDM7CQlwbGF0X2RhdC0mZ3Q7c2V0X2Nsa190eF9yYXRlID0gTlVMTDsKJiM0MzsKJiM0MzsJCS8qIFNHTUlJIHJlcXVpcmVzIGEgUENTICovCiYjNDM7CQlwbGF0X2RhdC0mZ3Q7ZGVmYXVsdF9hbl9pbmJhbmQgPSB0cnVlOwomIzQzOwkJcGxhdF9kYXQtJmd0O3Bjc19pbml0ID0gcmtfcGNzX2luaXQ7CiYjNDM7CQlwbGF0X2RhdC0mZ3Q7cGNzX2V4aXQgPSBya19wY3NfZXhpdDsKJiM0MzsJCXBsYXRfZGF0LSZndDtzZWxlY3RfcGNzID0gcmtfc2VsZWN0X3BjczsKJiM0MzsJfQomIzQzOwogCXBsYXRfZGF0LSZndDtic3BfcHJpdiA9IHJrX2dtYWNfc2V0dXAocGRldiwgcGxhdF9kYXQsIGRhdGEpOwogCWlmIChJU19FUlIocGxhdF9kYXQtJmd0O2JzcF9wcml2KSkKIAkJcmV0dXJuIFBUUl9FUlIocGxhdF9kYXQtJmd0O2JzcF9wcml2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYwppbmRleCAxMzYzNDk2NWJjMTlhLi4wMWRmNDc3NmVkYjNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jCkBAIC0zNSw4ICYjNDM7MzUsMTEgQEAgc3RhdGljIGludCByem4xX2R3bWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAogc3RhdGljIHZvaWQgcnpuMV9kd21hY19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiB7Ci0JaWYgKHByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3BjcykKLQkJbWlpY19kZXN0cm95KHByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3Bjcyk7CiYjNDM7CWlmICghcHJpdi0mZ3Q7aHctJmd0O3BoeWxpbmtfcGNzKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwltaWljX2Rlc3Ryb3kocHJpdi0mZ3Q7aHctJmd0O3BoeWxpbmtfcGNzKTsKJiM0MzsJcHJpdi0mZ3Q7aHctJmd0O3BoeWxpbmtfcGNzID0gTlVMTDsKIH0KIAogc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqcnpuMV9kd21hY19zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYwppbmRleCAxZDdmMGE1N2QyODg5Li42ZDRiYzFmZThmNzUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jCkBAIC01MzksOCAmIzQzOzUzOSwxMSBAQCBzdGF0aWMgaW50IHNvY2ZwZ2FfZHdtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCiBzdGF0aWMgdm9pZCBzb2NmcGdhX2R3bWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIHsKLQlpZiAocHJpdi0mZ3Q7aHctJmd0O3BoeWxpbmtfcGNzKQotCQlseW54X3Bjc19kZXN0cm95KHByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3Bjcyk7CiYjNDM7CWlmICghcHJpdi0mZ3Q7aHctJmd0O3BoeWxpbmtfcGNzKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlseW54X3Bjc19kZXN0cm95KHByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3Bjcyk7CiYjNDM7CXByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3BjcyA9IE5VTEw7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnNvY2ZwZ2FfZHdtYWNfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYwppbmRleCBhZmU5OGZmNWJkY2IwLi5kMmY3N2YwYzIyM2E3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMKQEAgLTQyNiwzNiAmIzQzOzQyNiwxNSBAQCBpbnQgc3RtbWFjX21kaW9fcmVzZXQoc3RydWN0IG1paV9idXMgKmJ1cykKIGludCBzdG1tYWNfcGNzX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQogewogCXN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwotCXN0cnVjdCBmd25vZGVfaGFuZGxlICpkZXZub2RlLCAqcGNzbm9kZTsKLQlzdHJ1Y3QgZHdfeHBjcyAqeHBjcyA9IE5VTEw7Ci0JaW50IGFkZHIsIHJldDsKLQotCWRldm5vZGUgPSBkZXZfZndub2RlKHByaXYtJmd0O2RldmljZSk7Ci0KLQlpZiAocHJpdi0mZ3Q7cGxhdC0mZ3Q7cGNzX2luaXQpIHsKLQkJcmV0ID0gcHJpdi0mZ3Q7cGxhdC0mZ3Q7cGNzX2luaXQocHJpdik7Ci0JfSBlbHNlIGlmIChmd25vZGVfcHJvcGVydHlfcHJlc2VudChkZXZub2RlLCAmIzM0O3Bjcy1oYW5kbGUmIzM0OykpIHsKLQkJcGNzbm9kZSA9IGZ3bm9kZV9maW5kX3JlZmVyZW5jZShkZXZub2RlLCAmIzM0O3Bjcy1oYW5kbGUmIzM0OywgMCk7Ci0JCXhwY3MgPSB4cGNzX2NyZWF0ZV9md25vZGUocGNzbm9kZSk7Ci0JCWZ3bm9kZV9oYW5kbGVfcHV0KHBjc25vZGUpOwotCQlyZXQgPSBQVFJfRVJSX09SX1pFUk8oeHBjcyk7Ci0JfSBlbHNlIGlmIChwcml2LSZndDtwbGF0LSZndDttZGlvX2J1c19kYXRhICZhbXA7JmFtcDsKLQkJICAgcHJpdi0mZ3Q7cGxhdC0mZ3Q7bWRpb19idXNfZGF0YS0mZ3Q7cGNzX21hc2spIHsKLQkJYWRkciA9IGZmcyhwcml2LSZndDtwbGF0LSZndDttZGlvX2J1c19kYXRhLSZndDtwY3NfbWFzaykgLSAxOwotCQl4cGNzID0geHBjc19jcmVhdGVfbWRpb2Rldihwcml2LSZndDttaWksIGFkZHIpOwotCQlyZXQgPSBQVFJfRVJSX09SX1pFUk8oeHBjcyk7Ci0JfSBlbHNlIHsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJaWYgKCFwcml2LSZndDtwbGF0LSZndDtwY3NfaW5pdCkKIAkJcmV0dXJuIDA7Ci0JfQogCiYjNDM7CXJldCA9IHByaXYtJmd0O3BsYXQtJmd0O3Bjc19pbml0KHByaXYpOwogCWlmIChyZXQpCiAJCXJldHVybiBkZXZfZXJyX3Byb2JlKHByaXYtJmd0O2RldmljZSwgcmV0LCAmIzM0O05vIHhQQ1MgZm91bmRcbiYjMzQ7KTsKIAotCWlmICh4cGNzKQotCQl4cGNzX2NvbmZpZ19lZWVfbXVsdF9mYWN0KHhwY3MsIHByaXYtJmd0O3BsYXQtJmd0O211bHRfZmFjdF8xMDBucyk7Ci0KLQlwcml2LSZndDtody0mZ3Q7eHBjcyA9IHhwY3M7Ci0KIAlyZXR1cm4gMDsKIH0KIApAQCAtNDYzLDE0ICYjNDM7NDQyLDEwIEBAIHZvaWQgc3RtbWFjX3Bjc19jbGVhbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKIHsKIAlzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTsKIAotCWlmIChwcml2LSZndDtwbGF0LSZndDtwY3NfZXhpdCkKLQkJcHJpdi0mZ3Q7cGxhdC0mZ3Q7cGNzX2V4aXQocHJpdik7Ci0KLQlpZiAoIXByaXYtJmd0O2h3LSZndDt4cGNzKQomIzQzOwlpZiAoIXByaXYtJmd0O3BsYXQtJmd0O3Bjc19leGl0KQogCQlyZXR1cm47CiAKLQl4cGNzX2Rlc3Ryb3kocHJpdi0mZ3Q7aHctJmd0O3hwY3MpOwotCXByaXYtJmd0O2h3LSZndDt4cGNzID0gTlVMTDsKJiM0MzsJcHJpdi0mZ3Q7cGxhdC0mZ3Q7cGNzX2V4aXQocHJpdik7CiB9CiAKIHN0cnVjdCBzdG1tYWNfY2xrX3JhdGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL0tjb25maWcgYi9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZwppbmRleCBlNDE3ZmQ2NmY2NjBhLi44OGJjNDA3OTFlNjlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZwpAQCAtMTIsNiAmIzQzOzEyLDI5IEBAIGNvbmZpZyBQQ1NfWFBDUwogCSAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBkcml2ZXIgYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIFN5bm9wc3lzCiAJICBEZXNpZ25XYXJlIFhQQ1MgY29udHJvbGxlcnMuCiAKJiM0MztpZiBQQ1NfWFBDUwomIzQzOwomIzQzO2NvbmZpZyBQQ1NfWFBDU19QTEFURk9STQomIzQzOwl0cmlzdGF0ZSAmIzM0O0dlbmVyaWMgWFBDUyBjb250cm9sbGVyIHN1cHBvcnQmIzM0OwomIzQzOwlkZWZhdWx0IFBDU19YUENTCiYjNDM7CWhlbHAKJiM0MzsJICBHZW5lcmljIERXWFBDUyBkcml2ZXIgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbiYjMzk7dCByZXF1aXJlIGFueQomIzQzOwkgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgdG8gZnVuY3Rpb24gb3IgaXMgdXNpbmcgcGxhdGZvcm0KJiM0MzsJICBkYXRhIGZvciBzZXR1cC4KJiM0MzsKJiM0MzsJICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLgomIzQzOwomIzQzO2NvbmZpZyBQQ1NfWFBDU19ST0NLQ0hJUAomIzQzOwl0cmlzdGF0ZSAmIzM0O1JvY2tjaGlwIFhQQ1MgY29udHJvbGxlciBzdXBwb3J0JiMzNDsKJiM0MzsJZGVmYXVsdCBBUkNIX1JPQ0tDSElQCiYjNDM7CWRlcGVuZHMgb24gT0YgJmFtcDsmYW1wOyAoQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1QpCiYjNDM7CWhlbHAKJiM0MzsJICBTdXBwb3J0IGZvciBYUENTIGNvbnRyb2xsZXIgb24gUm9ja2NoaXAgUkszNTZ4IFNvQy4KJiM0MzsKJiM0MzsJICBJZiB5b3UgaGF2ZSBhIFJvY2tjaGlwIFNvQyB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuCiYjNDM7CiYjNDM7ZW5kaWYgIyBQQ1NfWFBDUwomIzQzOwogY29uZmlnIFBDU19MWU5YCiAJdHJpc3RhdGUKIAloZWxwCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGUKaW5kZXggNGY3OTIwNjE4YjkwMC4uYzgwOWI3Zjk0MmE1MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZQpAQCAtMSwxMCAmIzQzOzEsOSBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAogIyBNYWtlZmlsZSBmb3IgTGludXggUENTIGRyaXZlcnMKIAotcGNzX3hwY3MtJChDT05GSUdfUENTX1hQQ1MpCTo9IHBjcy14cGNzLm8gcGNzLXhwY3MtcGxhdC5vIFwKLQkJCQkgICBwY3MteHBjcy1ueHAubyBwY3MteHBjcy13eC5vCi0KLW9iai0kKENPTkZJR19QQ1NfWFBDUykJCSYjNDM7PSBwY3NfeHBjcy5vCiYjNDM7b2JqLSQoQ09ORklHX1BDU19YUENTKSAmIzQzOz0gcGNzLXhwY3MubyBwY3MteHBjcy1ueHAubyBwY3MteHBjcy13eC5vCiYjNDM7b2JqLSQoQ09ORklHX1BDU19YUENTX1BMQVRGT1JNKSAmIzQzOz0gcGNzLXhwY3MtcGxhdC5vCiYjNDM7b2JqLSQoQ09ORklHX1BDU19YUENTX1JPQ0tDSElQKSAmIzQzOz0gcGNzLXhwY3Mtcmsubwogb2JqLSQoQ09ORklHX1BDU19MWU5YKQkJJiM0Mzs9IHBjcy1seW54Lm8KIG9iai0kKENPTkZJR19QQ1NfTVRLX0xZTlhJKQkmIzQzOz0gcGNzLW10ay1seW54aS5vCiBvYmotJChDT05GSUdfUENTX1JaTjFfTUlJQykJJiM0Mzs9IHBjcy1yem4xLW1paWMubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi40ZWYyMGIwOTNkYWRhCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmMKQEAgLTAsMCAmIzQzOzEsNTYxIEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsvKgomIzQzOyAqIFJvY2tjaGlwIFhQQ1MgcGxhdGZvcm0gZGV2aWNlIGRyaXZlcgomIzQzOyAqCiYjNDM7ICogQmFzZWQgb24gdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgWFBDUyBwbGF0Zm9ybSBkcml2ZXIuCiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDI0IFNlcmdlIFNlbWluCiYjNDM7ICoKJiM0MzsgKiBBZGFwdGVkIGZvciBSb2NrY2hpcCBTb0NzLCB3aXRoIHJlZmVyZW5jZSB0byB0aGUgUm9ja2NoaXAgT0VNIGRyaXZlci4KJiM0MzsgKiBDb3B5cmlnaHQgKEMpIDIwMjYgQ29pYSBQcmFudAomIzQzOyAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9hdG9taWMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvYml0ZmllbGQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvY2xrLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2RldmljZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pby5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pb3BvbGwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbWRpby5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvb2YuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvb2ZfcGxhdGZvcm0uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGNzL3Bjcy14cGNzLXJrLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BoeS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9waHkvcGh5LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BsYXRmb3JtX2RldmljZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wbV9kb21haW4uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcG1fcnVudGltZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wcm9wZXJ0eS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9zaXplcy5oJmd0OwomIzQzOwomIzQzOyNpbmNsdWRlICYjMzQ7cGNzLXhwY3MuaCYjMzQ7CiYjNDM7CiYjNDM7c3RydWN0IGR3X3hwY3NfcmsgewomIzQzOwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2OwomIzQzOwlzdHJ1Y3QgbWlpX2J1cyAqYnVzOwomIzQzOwl2b2lkIF9faW9tZW0gKnJlZ19iYXNlOwomIzQzOwlzdHJ1Y3QgcGh5ICpzZXJkZXNfcGh5OwomIzQzOwlzdHJ1Y3QgY2xrICpjc3JfY2xrOwomIzQzOwlzdHJ1Y3QgY2xrICplZWVfY2xrOwomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIHB0cmRpZmZfdCB4cGNzX3JrX2FkZHJfZm9ybWF0KGludCBkZXYsIGludCByZWcpCiYjNDM7ewomIzQzOwlyZXR1cm4gRklFTERfUFJFUCgweDcwMDAwLCBkZXYpIHwgRklFTERfUFJFUCgweGZmZmYsIHJlZyk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX3JlZyhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MsIGludCBkZXYsIGludCByZWcpCiYjNDM7ewomIzQzOwlwdHJkaWZmX3QgY3NyOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwljc3IgPSB4cGNzX3JrX2FkZHJfZm9ybWF0KGRldiwgcmVnKTsKJiM0MzsKJiM0MzsJcmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldCgmYW1wO3B4cGNzLSZndDtwZGV2LSZndDtkZXYpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gcmVhZGwocHhwY3MtJmd0O3JlZ19iYXNlICYjNDM7IChjc3IgJmx0OyZsdDsgMikpICZhbXA7IDB4ZmZmZjsKJiM0MzsKJiM0MzsJcG1fcnVudGltZV9wdXQoJmFtcDtweHBjcy0mZ3Q7cGRldi0mZ3Q7ZGV2KTsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3dyaXRlX3JlZyhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MsIGludCBkZXYsIGludCByZWcsIHUxNiB2YWwpCiYjNDM7ewomIzQzOwlwdHJkaWZmX3QgY3NyOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwljc3IgPSB4cGNzX3JrX2FkZHJfZm9ybWF0KGRldiwgcmVnKTsKJiM0MzsKJiM0MzsJcmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldCgmYW1wO3B4cGNzLSZndDtwZGV2LSZndDtkZXYpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJd3JpdGVsKHZhbCwgcHhwY3MtJmd0O3JlZ19iYXNlICYjNDM7IChjc3IgJmx0OyZsdDsgMikpOwomIzQzOwomIzQzOwlwbV9ydW50aW1lX3B1dCgmYW1wO3B4cGNzLSZndDtwZGV2LSZndDtkZXYpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7I2RlZmluZSBST0NLQ0hJUF9NTURfTUlJMQkyCiYjNDM7I2RlZmluZSBST0NLQ0hJUF9NTURfTUlJMgkzCiYjNDM7I2RlZmluZSBST0NLQ0hJUF9NTURfTUlJMwk0CiYjNDM7I2RlZmluZSBST0NLQ0hJUF9NTURfUE1BUE1ECTYKJiM0MzsjZGVmaW5lIFJPQ0tDSElQX01NRF9NSUkJNwomIzQzOwomIzQzO3N0YXRpYyBib29sIHhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGludCBhZGRyKQomIzQzO3sKJiM0MzsJcmV0dXJuICEoYWRkciAmbHQ7IDAgfHwgYWRkciAmZ3Q7IDMpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfbWRpb19yZWFkX3JlbWFwcGluZyhpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZykKJiM0Mzt7CiYjNDM7CXN3aXRjaCAoZGV2KSB7CiYjNDM7CWNhc2UgTURJT19NTURfUE1BUE1EOgomIzQzOwkJcmV0dXJuIFJPQ0tDSElQX01NRF9QTUFQTUQ7CiYjNDM7CWNhc2UgTURJT19NTURfVkVORDI6CiYjNDM7CQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybiAtRU5YSU87CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogcmVhZCByZW1hcHBpbmcgdG8gTUlJIGlzIHBlcmZvcm1lZCBieSBIVyAqLwomIzQzOwlzd2l0Y2ggKGFkZHIpIHsKJiM0MzsJY2FzZSAwOgomIzQzOwkJcmV0dXJuIFJPQ0tDSElQX01NRF9NSUk7CiYjNDM7CWNhc2UgMToKJiM0MzsJCXJldHVybiBST0NLQ0hJUF9NTURfTUlJMTsKJiM0MzsJY2FzZSAyOgomIzQzOwkJcmV0dXJuIFJPQ0tDSElQX01NRF9NSUkyOwomIzQzOwljYXNlIDM6CiYjNDM7CQlyZXR1cm4gUk9DS0NISVBfTU1EX01JSTM7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoaW50IGFkZHIsIGludCBkZXYsIGludCByZWcpCiYjNDM7ewomIzQzOwlzd2l0Y2ggKGRldikgewomIzQzOwljYXNlIE1ESU9fTU1EX1BNQVBNRDoKJiM0MzsJCXJldHVybiBST0NLQ0hJUF9NTURfUE1BUE1EOwomIzQzOwljYXNlIE1ESU9fTU1EX1ZFTkQyOgomIzQzOwkJYnJlYWs7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlyZXR1cm4gLUVOWElPOwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIFdyaXRhYmxlIG9ubHkgb24gTUlJICovCiYjNDM7CXN3aXRjaCAocmVnKSB7CiYjNDM7CWNhc2UgRFdfVlJfTUlJX0FOX0NUUkw6CiYjNDM7CWNhc2UgRFdfVlJfTUlJX0FOX0lOVFJfU1RTOgomIzQzOwljYXNlIERXX1ZSX01JSV9FRUVfTUNUUkwwOgomIzQzOwljYXNlIERXX1ZSX01JSV9FRUVfTUNUUkwxOgomIzQzOwljYXNlIERXX1ZSX01JSV9ESUdfQ1RSTDI6CiYjNDM7CQlyZXR1cm4gUk9DS0NISVBfTU1EX01JSTsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiYjNDM7CiYjNDM7CXN3aXRjaCAoYWRkcikgewomIzQzOwljYXNlIDA6CiYjNDM7CQlyZXR1cm4gUk9DS0NISVBfTU1EX01JSTsKJiM0MzsJY2FzZSAxOgomIzQzOwkJcmV0dXJuIFJPQ0tDSElQX01NRF9NSUkxOwomIzQzOwljYXNlIDI6CiYjNDM7CQlyZXR1cm4gUk9DS0NISVBfTU1EX01JSTI7CiYjNDM7CWNhc2UgMzoKJiM0MzsJCXJldHVybiBST0NLQ0hJUF9NTURfTUlJMzsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGJ1cy0mZ3Q7cHJpdjsKJiM0MzsJaW50IGRldjsKJiM0MzsKJiM0MzsJaWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShhZGRyKSkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwomIzQzOwlkZXYgPSB4cGNzX3JrX21kaW9fcmVhZF9yZW1hcHBpbmcoYWRkciwgTURJT19NTURfVkVORDIsIHJlZyk7CiYjNDM7CWlmIChkZXYgJmx0OyAwKQomIzQzOwkJcmV0dXJuIDB4ZmZmZjsKJiM0MzsKJiM0MzsJcmV0dXJuIHhwY3NfcmtfcmVhZF9yZWcocHhwY3MsIGRldiwgcmVnKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGJ1cy0mZ3Q7cHJpdjsKJiM0MzsJaW50IGRldjsKJiM0MzsKJiM0MzsJaWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShhZGRyKSkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwomIzQzOwlkZXYgPSB4cGNzX3JrX21kaW9fd3JpdGVfcmVtYXBwaW5nKGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCByZWcpOwomIzQzOwlpZiAoZGV2ICZsdDsgMCkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlyZXR1cm4geHBjc19ya193cml0ZV9yZWcocHhwY3MsIGRldiwgcmVnLCB2YWwpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCBkZXYsIGludCByZWcpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtJmd0O3ByaXY7CiYjNDM7CiYjNDM7CWlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoYWRkcikpCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsKJiM0MzsJZGV2ID0geHBjc19ya19tZGlvX3JlYWRfcmVtYXBwaW5nKGFkZHIsIGRldiwgcmVnKTsKJiM0MzsJaWYgKGRldiAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gMHhmZmZmOwomIzQzOwomIzQzOwlyZXR1cm4geHBjc19ya19yZWFkX3JlZyhweHBjcywgZGV2LCByZWcpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3Nfcmtfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2LCBpbnQgcmVnLCB1MTYgdmFsKQomIzQzO3sKJiM0MzsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLSZndDtwcml2OwomIzQzOwomIzQzOwlpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiYjNDM7CWRldiA9IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoYWRkciwgZGV2LCByZWcpOwomIzQzOwlpZiAoZGV2ICZsdDsgMCkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlyZXR1cm4geHBjc19ya193cml0ZV9yZWcocHhwY3MsIGRldiwgcmVnLCB2YWwpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IGR3X3hwY3NfcmsgKnhwY3NfcmtfY3JlYXRlX2RhdGEoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkd194cGNzX3JrICpweHBjczsKJiM0MzsKJiM0MzsJcHhwY3MgPSBkZXZtX2t6YWxsb2MoJmFtcDtwZGV2LSZndDtkZXYsIHNpemVvZigqcHhwY3MpLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCFweHBjcykKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwomIzQzOwomIzQzOwlweHBjcy0mZ3Q7cGRldiA9IHBkZXY7CiYjNDM7CiYjNDM7CWRldl9zZXRfZHJ2ZGF0YSgmYW1wO3BkZXYtJmd0O2RldiwgcHhwY3MpOwomIzQzOwomIzQzOwlyZXR1cm4gcHhwY3M7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgeHBjc19ya19zZXJkZXNfcGh5X2luaXQoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKQomIzQzO3sKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtweHBjcy0mZ3Q7cGRldi0mZ3Q7ZGV2OwomIzQzOwomIzQzOwlweHBjcy0mZ3Q7c2VyZGVzX3BoeSA9IGRldm1fcGh5X2dldChkZXYsICYjMzQ7c2VyZGVzJiMzNDspOwomIzQzOwlpZiAoSVNfRVJSKHB4cGNzLSZndDtzZXJkZXNfcGh5KSkKJiM0MzsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihweHBjcy0mZ3Q7c2VyZGVzX3BoeSksCiYjNDM7CQkJCQkmIzM0O0ZhaWxlZCB0byBnZXQgU2VyRGVzIFBIWVxuJiMzNDspOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgeHBjc19ya19zZXJkZXNfcGh5X3Bvd2Vyb2ZmKHZvaWQgKmRhdGEpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBkYXRhOwomIzQzOwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmYW1wO3B4cGNzLSZndDtwZGV2LSZndDtkZXY7CiYjNDM7CiYjNDM7CXBoeV9wb3dlcl9vZmYocHhwY3MtJmd0O3NlcmRlc19waHkpOwomIzQzOwlwaHlfZXhpdChweHBjcy0mZ3Q7c2VyZGVzX3BoeSk7CiYjNDM7CiYjNDM7CWRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgZmFsc2UpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9uKHN0cnVjdCBkd194cGNzX3JrICpweHBjcykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7cHhwY3MtJmd0O3BkZXYtJmd0O2RldjsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogVGhlIHBvd2VyIGRvbWFpbiBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBlbmFibGVkLCB3aGljaCBhbGxvd3MgdXMgdG8KJiM0MzsJICogZHluYW1pY2FsbHkgdHVybiB0aGUgQ1NSIGNsb2NrIG9uL29mZiB1c2luZyBQTSB3aGlsZSBrZWVwaW5nIHRoZSBQQ1MKJiM0MzsJICogcG93ZXJlZCBvbi4KJiM0MzsJICovCiYjNDM7CXJldCA9IGRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgdHJ1ZSk7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O0ZhaWxlZCB0byBwb3dlciBvbiBwb3dlci1kb21haW5zXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldCA9IHBoeV9pbml0KHB4cGNzLSZndDtzZXJkZXNfcGh5KTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIGluaXQgU2VyRGVzIFBIWVxuJiMzNDspOwomIzQzOwkJZ290byBwbV9kb21haW47CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0ID0gcGh5X3Bvd2VyX29uKHB4cGNzLSZndDtzZXJkZXNfcGh5KTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIHBvd2VyIG9uIFNlckRlcyBQSFlcbiYjMzQ7KTsKJiM0MzsJCWdvdG8gc2VyZGVzX3BoeTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvZmYsIHB4cGNzKTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIGRldm0gZm9yIFNlckRlcyBQSFk6ICVkXG4mIzM0OywgcmV0KTsKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7CiYjNDM7c2VyZGVzX3BoeToKJiM0MzsJcGh5X2V4aXQocHhwY3MtJmd0O3NlcmRlc19waHkpOwomIzQzO3BtX2RvbWFpbjoKJiM0MzsJZGV2X3BtX2dlbnBkX3JwbV9hbHdheXNfb24oZGV2LCBmYWxzZSk7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgeHBjc19ya19pbml0X3JlcyhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gcHhwY3MtJmd0O3BkZXY7CiYjNDM7CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7cGRldi0mZ3Q7ZGV2OwomIzQzOwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKJiM0MzsKJiM0MzsJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKJiM0MzsJaWYgKCFyZXMpIHsKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O05vIHJlZy1zcGFjZSBmb3VuZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKHJlc291cmNlX3NpemUocmVzKSAmbHQ7IFNaXzJNKSB7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtJbnZhbGlkIHJlZy1zcGFjZSBzaXplXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwomIzQzOwlweHBjcy0mZ3Q7cmVnX2Jhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOwomIzQzOwlpZiAoSVNfRVJSKHB4cGNzLSZndDtyZWdfYmFzZSkpIHsKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O0ZhaWxlZCB0byBtYXAgcmVnLXNwYWNlXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gUFRSX0VSUihweHBjcy0mZ3Q7cmVnX2Jhc2UpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB4cGNzX3JrX2V4aXRfY2xrKHZvaWQgKmRhdGEpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBkYXRhOwomIzQzOwomIzQzOwljbGtfZGlzYWJsZV91bnByZXBhcmUocHhwY3MtJmd0O2VlZV9jbGspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9jbGsoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKQomIzQzO3sKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtweHBjcy0mZ3Q7cGRldi0mZ3Q7ZGV2OwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlweHBjcy0mZ3Q7Y3NyX2NsayA9IGRldm1fY2xrX2dldChkZXYsICYjMzQ7Y3NyJiMzNDspOwomIzQzOwlpZiAoSVNfRVJSKHB4cGNzLSZndDtjc3JfY2xrKSkKJiM0MzsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihweHBjcy0mZ3Q7Y3NyX2NsayksCiYjNDM7CQkJCQkgJiMzNDtGYWlsZWQgdG8gZ2V0IENTUiBjbG9ja1xuJiMzNDspOwomIzQzOwomIzQzOwlwbV9ydW50aW1lX3NldF9zdXNwZW5kZWQoZGV2KTsKJiM0MzsJcmV0ID0gZGV2bV9wbV9ydW50aW1lX2VuYWJsZShkZXYpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gZW5hYmxlIHJ1bnRpbWUtUE1cbiYjMzQ7KTsKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcHhwY3MtJmd0O2VlZV9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAmIzM0O2VlZSYjMzQ7KTsKJiM0MzsJaWYgKElTX0VSUihweHBjcy0mZ3Q7ZWVlX2NsaykpCiYjNDM7CQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHhwY3MtJmd0O2VlZV9jbGspLAomIzQzOwkJCQkJICYjMzQ7RmFpbGVkIHRvIGdldCBFRUUgY2xvY2tcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHB4cGNzLSZndDtlZWVfY2xrKTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIGVuYWJsZSBFRUUgY2xvY2tcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgeHBjc19ya19leGl0X2NsaywgcHhwY3MpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgZGV2bSBmb3IgRUVFIGNsb2NrOiAlZFxuJiMzNDssIHJldCk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9idXMoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKQomIzQzO3sKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtweHBjcy0mZ3Q7cGRldi0mZ3Q7ZGV2OwomIzQzOwlzdGF0aWMgYXRvbWljX3QgaWQgPSBBVE9NSUNfSU5JVCgtMSk7CiYjNDM7CXN0cnVjdCBtaWlfYnVzICpidXM7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWJ1cyA9IGRldm1fbWRpb2J1c19hbGxvY19zaXplKGRldiwgMCk7CiYjNDM7CWlmICghYnVzKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CWJ1cy0mZ3Q7bmFtZSA9ICYjMzQ7Um9ja2NoaXAgRFcgWFBDUyBNQ0kvQVBCMyYjMzQ7OwomIzQzOwlidXMtJmd0O3JlYWQgPSB4cGNzX3JrX3JlYWRfYzIyOwomIzQzOwlidXMtJmd0O3dyaXRlID0geHBjc19ya193cml0ZV9jMjI7CiYjNDM7CWJ1cy0mZ3Q7cmVhZF9jNDUgPSB4cGNzX3JrX3JlYWRfYzQ1OwomIzQzOwlidXMtJmd0O3dyaXRlX2M0NSA9IHhwY3Nfcmtfd3JpdGVfYzQ1OwomIzQzOwlidXMtJmd0O3BoeV9tYXNrID0gfjA7CiYjNDM7CWJ1cy0mZ3Q7cGFyZW50ID0gZGV2OwomIzQzOwlidXMtJmd0O3ByaXYgPSBweHBjczsKJiM0MzsKJiM0MzsJc25wcmludGYoYnVzLSZndDtpZCwgTUlJX0JVU19JRF9TSVpFLAomIzQzOwkJICYjMzQ7cm9ja2NoaXBfZHd4cGNzLSV4JiMzNDssIGF0b21pY19pbmNfcmV0dXJuKCZhbXA7aWQpKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogTURJTy1idXMgaGVyZSBzZXJ2ZXMgYXMganVzdCBhIGJhY2stZW5kIGVuZ2luZSBhYnN0cmFjdGluZyBvdXQKJiM0MzsJICogdGhlIE1ESU8gYW5kIE1DSS9BUEIzIElPIGludGVyZmFjZXMgdXRpbGl6ZWQgZm9yIHRoZSBSb2NrY2hpcCBEV1hQQ1MgQ1NScwomIzQzOwkgKiBhY2Nlc3MuCiYjNDM7CSAqLwomIzQzOwlyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gY3JlYXRlIE1ESU8gYnVzXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXB4cGNzLSZndDtidXMgPSBidXM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkd194cGNzX3JrICpweHBjczsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcHhwY3MgPSB4cGNzX3JrX2NyZWF0ZV9kYXRhKHBkZXYpOwomIzQzOwlpZiAoSVNfRVJSKHB4cGNzKSkKJiM0MzsJCXJldHVybiBQVFJfRVJSKHB4cGNzKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogVGhlIFhQQ1MgbWF5IGJlIGF0dGFjaGVkIHRvIGEgcG93ZXIgZG9tYWluIChlLmcuIFBEX1BJUEUpLiBUaGUgZG9tYWluCiYjNDM7CSAqIG11c3QgYmUgcG93ZXJlZCBvbiBiZWZvcmUgYW55IHJlZ2lzdGVyIGFjY2Vzcywgb3RoZXJ3aXNlIHRoZSBTb0Mgd2lsbAomIzQzOwkgKiB0cmlnZ2VyIGEgc3luY2hyb25vdXMgZXh0ZXJuYWwgYWJvcnQgKFNFcnJvcikuCiYjNDM7CSAqCiYjNDM7CSAqIEFjY2Vzc2luZyB0aGUgWFBDUyByZWdpc3RlcnMgYWxzbyByZXF1aXJlcyBhIFRYIGNsb2NrIGZyb20gdGhlIFNlckRlcywKJiM0MzsJICogd2hpY2ggaXMgbmVlZGVkIGZvciB0aGUgc29mdCByZXNldC4KJiM0MzsJICovCiYjNDM7CXJldCA9IHhwY3Nfcmtfc2VyZGVzX3BoeV9pbml0KHB4cGNzKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9uKHB4cGNzKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IHhwY3NfcmtfaW5pdF9yZXMocHhwY3MpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJcmV0ID0geHBjc19ya19pbml0X2NsayhweHBjcyk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXQgPSB4cGNzX3JrX2luaXRfYnVzKHB4cGNzKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB4cGNzX3JrX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQomIzQzO3sKJiM0MzsJLyoKJiM0MzsJICogRm9yY2UgdGhlIGRldmljZSBpbnRvIHN1c3BlbmQgc3RhdGUgdG8gZ2F0ZSB0aGUgQ1NSIGNsb2NrLiBUaGlzCiYjNDM7CSAqIHByZXZlbnRzIGNsb2NrIGxlYWthZ2UgYWZ0ZXIgZGV2bSByZXNvdXJjZXMgYXJlIHJlbGVhc2VkLgomIzQzOwkgKgomIzQzOwkgKiBUaGlzIGlzIHNhZmUgYmVjYXVzZToKJiM0MzsJICogICAxLiBUaGUgZGV2aWNlIGxpbmsgKERMX0ZMQUdfQVVUT1JFTU9WRV9DT05TVU1FUikgcHJldmVudHMgdW5iaW5kCiYjNDM7CSAqICAgICAgd2hpbGUgYW55IGNvbnN1bWVyIChNQUMpIGlzIHN0aWxsIGF0dGFjaGVkLgomIzQzOwkgKiAgIDIuIE5vIE1ESU8gYWNjZXNzIHdpbGwgb2NjdXIgYWZ0ZXIgdGhpcyBwb2ludCwgYXMgdGhlIE1BQyBkcml2ZXIKJiM0MzsJICogICAgICBoYXMgYWxyZWFkeSBiZWVuIHVuYm91bmQgKG9yIHdlIGFyZSBiZWluZyByZW1vdmVkIGJlY2F1c2Ugbm8KJiM0MzsJICogICAgICBjb25zdW1lciBleGlzdHMpLgomIzQzOwkgKi8KJiM0MzsJcG1fcnVudGltZV9mb3JjZV9zdXNwZW5kKCZhbXA7cGRldi0mZ3Q7ZGV2KTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgeHBjc19ya19vZl9pZHNbXSA9IHsKJiM0MzsJeyAuY29tcGF0aWJsZSA9ICYjMzQ7cm9ja2NoaXAscmszNTY4LXhwY3MmIzM0OyB9LAomIzQzOwl7IC8qIHNlbnRpbmVsICovIH0sCiYjNDM7fTsKJiM0MztNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB4cGNzX3JrX29mX2lkcyk7CiYjNDM7CiYjNDM7c3RydWN0IGR3X3hwY3MgKnhwY3NfcmtfY3JlYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9ub2RlICpucCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7CiYjNDM7CXN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25wOwomIzQzOwlzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7CiYjNDM7CXN0cnVjdCBkd194cGNzICp4cGNzOwomIzQzOwl1MzIgcG9ydDsKJiM0MzsKJiM0MzsJaWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKG5wKSkKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwomIzQzOwomIzQzOwlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICYjMzQ7cmVnJiMzNDssICZhbXA7cG9ydCkpCiYjNDM7CQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKJiM0MzsKJiM0MzsJaWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZSgoaW50KXBvcnQpKQomIzQzOwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CiYjNDM7CiYjNDM7CS8qIFRoZSBYUENTIHBkZXYgaXMgYXR0YWNoZWQgdG8gdGhlIHBhcmVudCBub2RlICovCiYjNDM7CXBjc19ucCA9IG9mX2dldF9wYXJlbnQobnApOwomIzQzOwlpZiAoIXBjc19ucCkKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwomIzQzOwomIzQzOwlpZiAoIW9mX2RldmljZV9pc19hdmFpbGFibGUocGNzX25wKSkgewomIzQzOwkJb2Zfbm9kZV9wdXQocGNzX25wKTsKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmICghb2ZfbWF0Y2hfbm9kZSh4cGNzX3JrX29mX2lkcywgcGNzX25wKSkgewomIzQzOwkJb2Zfbm9kZV9wdXQocGNzX25wKTsKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXBkZXYgPSBvZl9maW5kX2RldmljZV9ieV9ub2RlKHBjc19ucCk7CiYjNDM7CW9mX25vZGVfcHV0KHBjc19ucCk7CiYjNDM7CWlmICghcGRldikKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FUFJPQkVfREVGRVIpOwomIzQzOwomIzQzOwlkZXZpY2VfbG9jaygmYW1wO3BkZXYtJmd0O2Rldik7CiYjNDM7CXB4cGNzID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CiYjNDM7CWlmICghcHhwY3MgfHwgIXB4cGNzLSZndDtidXMpIHsKJiM0MzsJCWRldmljZV91bmxvY2soJmFtcDtwZGV2LSZndDtkZXYpOwomIzQzOwkJcHV0X2RldmljZSgmYW1wO3BkZXYtJmd0O2Rldik7CiYjNDM7CQlyZXR1cm4gRVJSX1BUUigtRVBST0JFX0RFRkVSKTsKJiM0MzsJfQomIzQzOwomIzQzOwl4cGNzID0geHBjc19jcmVhdGVfbWRpb2RldihweHBjcy0mZ3Q7YnVzLCAoaW50KXBvcnQpOwomIzQzOwlkZXZpY2VfdW5sb2NrKCZhbXA7cGRldi0mZ3Q7ZGV2KTsKJiM0MzsJaWYgKElTX0VSUih4cGNzKSkgewomIzQzOwkJcHV0X2RldmljZSgmYW1wO3BkZXYtJmd0O2Rldik7CiYjNDM7CQlyZXR1cm4geHBjczsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoIWRldmljZV9saW5rX2FkZChkZXYsICZhbXA7cGRldi0mZ3Q7ZGV2LCBETF9GTEFHX0FVVE9SRU1PVkVfQ09OU1VNRVIpKSB7CiYjNDM7CQl4cGNzX2Rlc3Ryb3koeHBjcyk7CiYjNDM7CQlwdXRfZGV2aWNlKCZhbXA7cGRldi0mZ3Q7ZGV2KTsKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwomIzQzOwl9CiYjNDM7CiYjNDM7CXB1dF9kZXZpY2UoJmFtcDtwZGV2LSZndDtkZXYpOwomIzQzOwlyZXR1cm4geHBjczsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoeHBjc19ya19jcmVhdGUpOwomIzQzOwomIzQzO3N0YXRpYyBpbnQgeHBjc19ya19wbV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiYjNDM7CiYjNDM7CWNsa19kaXNhYmxlX3VucHJlcGFyZShweHBjcy0mZ3Q7Y3NyX2Nsayk7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfcG1fcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiYjNDM7CiYjNDM7CXJldHVybiBjbGtfcHJlcGFyZV9lbmFibGUocHhwY3MtJmd0O2Nzcl9jbGspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgREVGSU5FX1JVTlRJTUVfREVWX1BNX09QUyh4cGNzX3JrX3BtX29wcywKJiM0MzsJCQkgICB4cGNzX3JrX3BtX3J1bnRpbWVfc3VzcGVuZCwKJiM0MzsJCQkgICB4cGNzX3JrX3BtX3J1bnRpbWVfcmVzdW1lLAomIzQzOwkJCSAgIE5VTEwpOwomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHhwY3NfcmtfZHJpdmVyID0gewomIzQzOwkucHJvYmUgPSB4cGNzX3JrX3Byb2JlLAomIzQzOwkucmVtb3ZlID0geHBjc19ya19yZW1vdmUsCiYjNDM7CS5kcml2ZXIgPSB7CiYjNDM7CQkubmFtZSA9ICYjMzQ7cmtfeHBjcy1kd3hwY3MmIzM0OywKJiM0MzsJCS5wbSA9IHBtX3B0cigmYW1wO3hwY3NfcmtfcG1fb3BzKSwKJiM0MzsJCS5vZl9tYXRjaF90YWJsZSA9IHhwY3Nfcmtfb2ZfaWRzLAomIzQzOwl9LAomIzQzO307CiYjNDM7bW9kdWxlX3BsYXRmb3JtX2RyaXZlcih4cGNzX3JrX2RyaXZlcik7CiYjNDM7CiYjNDM7TU9EVUxFX0RFU0NSSVBUSU9OKCYjMzQ7Um9ja2NoaXAgWFBDUyBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyJiMzNDspOwomIzQzO01PRFVMRV9BVVRIT1IoJiMzNDtDb2lhIFByYW50ICZsdDtjb2lhcHJhbnRAZ21haWwuY29tJmd0OyYjMzQ7KTsKJiM0MztNT0RVTEVfTElDRU5TRSgmIzM0O0dQTCYjMzQ7KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMKaW5kZXggMDMzN2UyYmNjMDEyNS4uNTBiOWNkZjk0ZmRhYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMKQEAgLTgxNiw5ICYjNDM7ODE2LDE0IEBAIHN0YXRpYyBpbnQgeHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWkoc3RydWN0IGR3X3hwY3MgKnhwY3MsCiAJaWYgKHJldCAmbHQ7IDApCiAJCXJldHVybiByZXQ7CiAKJiM0MzsJLyogQ2xlYXIgQ0wzNyBBTiBjb21wbGV0ZSBzdGF0dXMgKi8KJiM0MzsJcmV0ID0geHBjc193cml0ZSh4cGNzLCBNRElPX01NRF9WRU5EMiwgRFdfVlJfTUlJX0FOX0lOVFJfU1RTLCAwKTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwogCWlmIChuZWdfbW9kZSA9PSBQSFlMSU5LX1BDU19ORUdfSU5CQU5EX0VOQUJMRUQpCiAJCXJldCA9IHhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIsIE1JSV9CTUNSLAotCQkJCSBtZGlvX2N0cmwgfCBCTUNSX0FORU5BQkxFKTsKJiM0MzsJCQkJIG1kaW9fY3RybCB8IEJNQ1JfQU5FTkFCTEUgfCBCTUNSX0FOUkVTVEFSVCk7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtMTA5MywxMCAmIzQzOzEwOTgsMTUgQEAgc3RhdGljIGludCB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWkoc3RydWN0IGR3X3hwY3MgKnhwY3MsCiAJCXJldHVybiAwOwogCX0KIAotCS8qIENsZWFyIEFOIGNvbXBsZXRlIHN0YXR1cyBvciBpbnRlcnJ1cHQgKi8KLQlpZiAoc3RhdGUtJmd0O2FuX2NvbXBsZXRlKQomIzQzOwlpZiAoc3RhdGUtJmd0O2FuX2NvbXBsZXRlKSB7CiYjNDM7CQkvKiBDbGVhciBBTiBjb21wbGV0ZSBzdGF0dXMgb3IgaW50ZXJydXB0ICovCiAJCXhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIsIERXX1ZSX01JSV9BTl9JTlRSX1NUUywgMCk7CiAKJiM0MzsJCS8qIEluaXRpYXRlIHRoZSBuZXh0IHJvdW5kIG9mIEFOICovCiYjNDM7CQl4cGNzX21vZGlmeSh4cGNzLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsIEJNQ1JfQU5SRVNUQVJULAomIzQzOwkJCSAgICBCTUNSX0FOUkVTVEFSVCk7CiYjNDM7CX0KJiM0MzsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmMgYi9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuYwppbmRleCA3ODQzMzU2YTRkZDQ3Li45MTliYjk3YTRiMTgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuYwpAQCAtMTg2LDYgJiM0MzsxODYsNyBAQCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9ncmZjZmcgewogCXN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3hwY3NfcGh5X3JlYWR5OwogCXN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3BjaWUxbDBfc2VsOwogCXN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3BjaWUxbDFfc2VsOwomIzQzOwlzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9zZ21paV9tYWNfc2VsOwogCXN0cnVjdCBjb21icGh5X3JlZyB1M290ZzBfcG9ydF9lbjsKIAlzdHJ1Y3QgY29tYnBoeV9yZWcgdTNvdGcxX3BvcnRfZW47CiB9OwpAQCAtMjEyLDYgJiM0MzsyMTMsNyBAQCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9wcml2IHsKIAlib29sIGVuYWJsZV9zc2M7CiAJYm9vbCBleHRfcmVmY2xrOwogCXN0cnVjdCBjbGsgKnJlZmNsazsKJiM0MzsJdTMyIHNnbWlpX21hY19zZWw7CiB9OwogCiBzdGF0aWMgdm9pZCByb2NrY2hpcF9jb21icGh5X3VwZGF0ZWwoc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAqcHJpdiwKQEAgLTM3NSw2ICYjNDM7Mzc3LDkgQEAgc3RhdGljIGludCByb2NrY2hpcF9jb21icGh5X3BhcnNlX2R0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHkKIAogCXByaXYtJmd0O2V4dF9yZWZjbGsgPSBkZXZpY2VfcHJvcGVydHlfcHJlc2VudChkZXYsICYjMzQ7cm9ja2NoaXAsZXh0LXJlZmNsayYjMzQ7KTsKIAomIzQzOwlwcml2LSZndDtzZ21paV9tYWNfc2VsID0gMTsKJiM0MzsJZGV2aWNlX3Byb3BlcnR5X3JlYWRfdTMyKGRldiwgJiMzNDtyb2NrY2hpcCxzZ21paS1tYWMtc2VsJiMzNDssICZhbXA7cHJpdi0mZ3Q7c2dtaWlfbWFjX3NlbCk7CiYjNDM7CiAJcHJpdi0mZ3Q7cGh5X3JzdCA9IGRldm1fcmVzZXRfY29udHJvbF9nZXRfZXhjbHVzaXZlKGRldiwgJiMzNDtwaHkmIzM0Oyk7CiAJLyogZmFsbGJhY2sgdG8gb2xkIGJlaGF2aW91ciAqLwogCWlmIChQVFJfRVJSKHByaXYtJmd0O3BoeV9yc3QpID09IC1FTk9FTlQpCkBAIC04NzMsNiAmIzQzOzg3OCw4IEBAIHN0YXRpYyBpbnQgcmszNTY4X2NvbWJwaHlfY2ZnKHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgKnByaXYpCiAJCWJyZWFrOwogCiAJY2FzZSBQSFlfVFlQRV9TR01JSToKJiM0MzsJCXJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi0mZ3Q7cGlwZV9ncmYsICZhbXA7Y2ZnLSZndDtwaXBlX3NnbWlpX21hY19zZWwsCiYjNDM7CQkJCQlwcml2LSZndDtzZ21paV9tYWNfc2VsICZndDsgMCk7CiAJCXJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi0mZ3Q7cGlwZV9ncmYsICZhbXA7Y2ZnLSZndDtwaXBlX3hwY3NfcGh5X3JlYWR5LCB0cnVlKTsKIAkJcm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LSZndDtwaHlfZ3JmLCAmYW1wO2NmZy0mZ3Q7cGlwZV9waHltb2RlX3NlbCwgdHJ1ZSk7CiAJCXJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi0mZ3Q7cGh5X2dyZiwgJmFtcDtjZmctJmd0O3BpcGVfc2VsX3FzZ21paSwgdHJ1ZSk7CkBAIC05ODQsNiAmIzQzOzk5MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9ncmZjZmcgcmszNTY4X2NvbWJwaHlfZ3JmY2ZncyA9IHsKIAkuY29uM19mb3Jfc2F0YQkJPSB7IDB4MDAwYywgMTUsIDAsIDB4MDAsIDB4NDQwNyB9LAogCS8qIHBpcGUtZ3JmICovCiAJLnBpcGVfY29uMF9mb3Jfc2F0YQk9IHsgMHgwMDAwLCAxNSwgMCwgMHgwMCwgMHgyMjIwIH0sCiYjNDM7CS5waXBlX3NnbWlpX21hY19zZWwJPSB7IDB4MDA0MCwgMSwgMSwgMHgwMCwgMHgwMSB9LAogCS5waXBlX3hwY3NfcGh5X3JlYWR5CT0geyAweDAwNDAsIDIsIDIsIDB4MDAsIDB4MDEgfSwKIAkudTNvdGcwX3BvcnRfZW4JCT0geyAweDAxMDQsIDE1LCAwLCAweDAxODEsIDB4MTEwMCB9LAogCS51M290ZzFfcG9ydF9lbgkJPSB7IDB4MDE0NCwgMTUsIDAsIDB4MDE4MSwgMHgxMTAwIH0sCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oIGIvaW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4yODcyM2Q1YmQ3NWNjCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaApAQCAtMCwwICYjNDM7MSwxMSBAQAomIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCiYjNDM7I2lmbmRlZiBfX0xJTlVYX1BDU19YUENTX1JPQ0tDSElQX0gKJiM0MzsjZGVmaW5lIF9fTElOVVhfUENTX1hQQ1NfUk9DS0NISVBfSAomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9kZXZpY2UuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvb2YuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGNzL3Bjcy14cGNzLmgmZ3Q7CiYjNDM7CiYjNDM7c3RydWN0IGR3X3hwY3MgKnhwY3NfcmtfY3JlYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9ub2RlICpucCk7CiYjNDM7CiYjNDM7I2VuZGlmIC8qIF9fTElOVVhfUENTX1hQQ1NfUk9DS0NISVBfSCAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDYyOQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDEyOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBFdmFsdWF0aW9uOiBBIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGVjaWRlIGlmIHRoaXMgcGF0Y2ggc2VyaWVzIHdhcnJhbnRzIGZ1enppbmcuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGFjdHVhbGx5IGJlaW5nIGNoYW5nZWQuIFRoZSBkaWZmIHRvdWNoZXMgYSBmZXcga2V5IGFyZWFzOiBEZXZpY2UgVHJlZSBiaW5kaW5ncyBhbmQgZG9jdW1lbnRhdGlvbiwgdGhlIGBNQUlOVEFJTkVSU2AgZmlsZSwgc29tZSBEVFMgZmlsZXMgZm9yIHRoZSBSb2NrY2hpcCBSSzM1NjgsIGFuZCBhIHNpZ25pZmljYW50IGFtb3VudCBvZiBjb2RlIGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLCBzcGVjaWZpY2FsbHkgYXJvdW5kIEV0aGVybmV0IGRyaXZlcnMgYW5kIFBDUyAoUGh5c2ljYWwgQ29kaW5nIFN1YmxheWVyKSBkcml2ZXJzLgoKTG9va2luZyBhdCB0aGUgY29kZSwgaXQmIzM5O3MgY2xlYXIgdGhpcyBpcyBmb2N1c2VkIG9uIGJyaW5naW5nIHVwIFNHTUlJIHN1cHBvcnQgZm9yIFJvY2tjaGlwJiMzOTtzIERXTUFDLCBhbmQgaW50cm9kdWNpbmcgYSBuZXcgUm9ja2NoaXAgWFBDUyBwbGF0Zm9ybSBkcml2ZXIuIFRoZXJlIGFyZSBhbHNvIGNoYW5nZXMgdG8gSW50ZWwgRFdNQUMgYW5kIGEgZmV3IG90aGVyIHBsYXRmb3JtIGRyaXZlcnMgKFJlbmVzYXMsIFNvY2ZwZ2EpLiBUaGUgcGF0Y2ggYWxzbyBpbmNsdWRlcyByZWZhY3RvcmluZyBvZiBgc3RtbWFjX21kaW8uY2AgYW5kIG1vZGlmaWNhdGlvbnMgdG8gYHBjcy14cGNzLmNgLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBzaG91bGQgdGhpcyBiZSBmdXp6ZWQ/IExldCYjMzk7cyBjb25zaWRlciB0aGUgJiMzNDtXb3J0aEZ1enppbmcmIzM0OyBydWxlcy4gIEkgaW1tZWRpYXRlbHkgbmVlZCB0byBydWxlIG91dCBjaGFuZ2VzIHRoYXQgYXJlIHB1cmVseSBkZWNvcmF0aXZlLCBvciBhZmZlY3QgY29kZSB0aGF0JiMzOTtzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBJIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIChsaWtlIHRob3NlIHJlcXVpcmluZyBzcGVjaWZpYyBQQ0llIGNhcmRzKSBhbmQgZHJpdmVycyB0aGF0IGFyZSBvbmx5IGNvbmNlcm5lZCB3aXRoIHJlbW92YWwgb3Igc2h1dGRvd24gY2FsbGJhY2tzLgoKSGVyZSYjMzk7cyB0aGUgYnJlYWtkb3duIG9mIG15IHRob3VnaHRzOgoKMS4gICoqUm9ja2NoaXAgc3R1ZmY6KiogVGhlIGBwY3MteHBjcy1yay5jYCwgYHBoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jYCwgYW5kIGBkd21hYy1yay5jYCBkcml2ZXJzIGFyZSBhbGwgUm9ja2NoaXAgU29DIHBsYXRmb3JtIGRyaXZlcnMuIFRoZXNlICoqY2Fubm90KiogYmUgZGlyZWN0bHkgcnVuIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgd2hpY2ggZW11bGF0ZXMgeDg2XF82NCBvciBnZW5lcmljIEFSTTY0ICh2aXJ0IG1hY2hpbmVzKSwgYW5kIHNvIHRoZXNlIHNob3VsZCBiZSBleGNsdWRlZC4KMi4gICoqSW50ZWwgRFdNQUM6KiogYGR3bWFjLWludGVsLmNgIGlzIG1vcmUgaW50ZXJlc3RpbmcsIGJ1dCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIEludGVsIG1nYmUvZHdtYWMgUENJIGRldmljZSBkaXJlY3RseS4gVGhhdCYjMzk7cyBhIGJsb2NrZXIuCjMuICAqKk90aGVyIFBsYXRmb3JtIERyaXZlcnM6KiogUmVuZXNhcyBhbmQgU29jZnBnYSBkcml2ZXJzIChgZHdtYWMtcmVuZXNhcy1nYmV0aC5jYCwgYGR3bWFjLXJ6bjEuY2AsIGBkd21hYy1zb2NmcGdhLmNgKSBsaWtlbHkgYWxzbyBmYWxsIGludG8gdGhlIHNhbWUgY2F0ZWdvcnksIGJlaW5nIFNvQy1zcGVjaWZpYy4KNC4gICoqYHN0bW1hY19tZGlvLmNgIGFuZCBgcGNzLXhwY3MuY2A6KiogVGhlc2UgYXJlIHRoZSBjb3JlIHBpZWNlcyB0aGF0IGxvb2sgbW9yZSBnZW5lcmFsLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIFFFTVUsIG9yIGFueSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBJJiMzOTttIGZhbWlsaWFyIHdpdGgsICp1c2VzKiBgc3RtbWFjYCBvciBgcGNzLXhwY3NgLCBvciBpZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdGllZCB0byBwaHlzaWNhbCBTb0MgaGFyZHdhcmUuIFRoaXMgaXMgYSBwb2ludCB0byBjb25maXJtLiAgSSBuZWVkIHRvIGNoZWNrIGhvdyBgc3RtbWFjX3Bjc19zZXR1cGAsIGBzdG1tYWNfcGNzX2NsZWFuYCwgYHhwY3NfY29uZmlnX2FuZWdfYzM3X3NnbWlpYCwgYW5kIGB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWlgIGFyZSBhY3R1YWxseSB1c2VkIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudC4KClRoZXJlZm9yZSwgbXkgbmV4dCBzdGVwIGlzIGEgZGVlcCBkaXZlIHdpdGggYGdyZXBgLiBJIG5lZWQgdG8gc2VhcmNoIHRoZSBRRU1VIHNvdXJjZSBhbmQgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBzdXBwb3J0ZWQgaGFyZHdhcmUgYW5kIGFzc29jaWF0ZWQgZHJpdmVycyB0aGF0IGFyZSB3b3J0aCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY18mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExNTc1IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW44aS1hODN0LWVtYWMueWFtbD0yNTU9ZXhhbXBsZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuOGktYTgzdC1lbWFjLnlhbWwtNDAyLSAgICAgICAgc25wcyxmaXhlZC1idXJzdDtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sOjQwMzogICAgICAgIHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNmdtYWMxX3N0bW1hY19heGlfc2V0dXBcdTAwM2U7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW44aS1hODN0LWVtYWMueWFtbC00MDQtXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sPTEzNz1leGFtcGxlczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwtMTU1LSAgICAgICAgc25wcyx0c287XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWw6MTU2OiAgICAgICAgc25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbC0xNTctXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWw6MTU4OiAgICAgICAgc3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sLTE1OS0gICAgICAgICAgICBzbnBzLGJsZW4gPSBcdTAwM2MwIDAgMCAwIDE2IDggNFx1MDAzZTtcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwtMTgxLSAgICAgICAgc25wcyx0c287XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWw6MTgyOiAgICAgICAgc25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cF9nbWFjMVx1MDAzZTtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbC0xODMtXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWw6MTg0OiAgICAgICAgc3RtbWFjX2F4aV9zZXR1cF9nbWFjMTogc3RtbWFjLWF4aS1jb25maWcge1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sLTE4NS0gICAgICAgICAgICBzbnBzLGJsZW4gPSBcdTAwM2MwIDAgMCAwIDE2IDggNFx1MDAzZTtcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbD01Nz1leGFtcGxlczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbC02Ni1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sOjY3OiAgICBzdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbC02OC0gICAgICAgIHNucHMsbHBpX2VuO1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sLTEyMC0gICAgICAgIHNucHMscGJsID0gXHUwMDNjMHg0XHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWw6MTIxOiAgICAgICAgc25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sLTEyMi0gICAgICAgIHNucHMsbXRsLXJ4LWNvbmZpZyA9IFx1MDAzY1x1MDAyNm10bF9yeF9zZXR1cFx1MDAzZTtcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnp2MmgtZ2JldGgueWFtbD0yNDk9ZXhhbXBsZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6djJoLWdiZXRoLnlhbWwtMjg1LSAgICAgICAgc25wcyxmb3JjZV90aHJlc2hfZG1hX21vZGU7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnp2MmgtZ2JldGgueWFtbDoyODY6ICAgICAgICBzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6djJoLWdiZXRoLnlhbWwtMjg3LSAgICAgICAgc25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X3NldHVwXHUwMDNlO1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sLTI5Mi1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sOjI5MzogICAgICAgIHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sLTI5NC0gICAgICAgICAgICBzbnBzLGxwaV9lbjtcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdtYWMueWFtbD02NTQ9ZXhhbXBsZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWwtNjcwLSAgICAgICAgY2xvY2stbmFtZXMgPSBcJiMzNDtzdG1tYWNldGhcJiMzNDs7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdtYWMueWFtbDo2NzE6ICAgICAgICBzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWwtNjcyLSAgICAgICAgc25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X3NldHVwXHUwMDNlO1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc25wcyxkd21hYy55YW1sLTY3NC1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc25wcyxkd21hYy55YW1sOjY3NTogICAgICAgIHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc25wcyxkd21hYy55YW1sLTY3Ni0gICAgICAgICAgICBzbnBzLHdyX29zcl9sbXQgPSBcdTAwM2MweGZcdTAwM2U7XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sPTY3PWV4YW1wbGVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbC05MC0gICAgICBzbnBzLG10bC10eC1jb25maWcgPSBcdTAwM2NcdTAwMjZnbWFjMF9tdGxfdHhfc2V0dXBcdTAwM2U7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWw6OTE6ICAgICAgc25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2Z21hYzBfc3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbC05Mi1cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWwtMTA4LVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sOjEwOTogICAgICBnbWFjMF9zdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWwtMTEwLSAgICAgICAgc25wcyxibGVuID0gXHUwMDNjMTYgOCA0IDAgMCAwIDBcdTAwM2U7XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWw9OTU9ZXhhbXBsZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWwtMTE4LSAgICAgIHNucHMsbXRsLXR4LWNvbmZpZyA9IFx1MDAzY1x1MDAyNmdtYWMwX210bF90eF9zZXR1cFx1MDAzZTtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sOjExOTogICAgICBzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZnbWFjMF9zdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWwtMTIwLVxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sLTE0NS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sOjE0NjogICAgICBnbWFjMF9zdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxzZzIwNDQtZHdtYWMueWFtbC0xNDctICAgICAgICBzbnBzLGJsZW4gPSBcdTAwM2MxNiA4IDQgMCAwIDAgMFx1MDAzZTtcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sPTE1ND1leGFtcGxlczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sLTE3NS0gICAgICAgIHNucHMsZm9yY2VfdGhyZXNoX2RtYV9tb2RlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbDoxNzY6ICAgICAgICBzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbC0xNzctICAgICAgICBzbnBzLGVuLXR4LWxwaS1jbG9ja2dhdGluZztcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sLTE5Mi1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWw6MTkzOiAgICAgICAgc3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbC0xOTQtICAgICAgICAgICAgc25wcyxscGlfZW47XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG0zMi1kd21hYy55YW1sPTE2Mj1leGFtcGxlczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWwtMTg0LSAgICAgICAgc25wcyxwYmwgPSBcdTAwM2MyXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG0zMi1kd21hYy55YW1sOjE4NTogICAgICAgIHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNnN0bW1hY19heGlfY29uZmlnXzBcdTAwM2U7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWwtMTg2LSAgICAgICAgc25wcyx0c287XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90aGVhZCx0aDE1MjAtZ21hYy55YW1sPTg3PWV4YW1wbGVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGhlYWQsdGgxNTIwLWdtYWMueWFtbC05OC0gICAgICAgIHNucHMsZml4ZWQtYnVyc3Q7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3RoZWFkLHRoMTUyMC1nbWFjLnlhbWw6OTk6ICAgICAgICBzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90aGVhZCx0aDE1MjAtZ21hYy55YW1sLTEwMC0gICAgICAgIHNucHMscGJsID0gXHUwMDNjMzJcdTAwM2U7XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdD0xMDc9c3ludGF4IChlLmcuIGZvciBQQ0kgbW9kdWxlKTo6XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTEwOC1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6MTA5OiAgICBtb2Rwcm9iZSBzdG1tYWNfcGNpIFtcdTAwM2NvcHRpb25cdTAwM2U9XHUwMDNjVkFMMVx1MDAzZSxcdTAwM2NWQUwyXHUwMDNlLC4uLl1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtMTEwLVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9MzUyPWZpbmRzOjpcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTM2MS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6MzYyOiAgICAgICAgc3RydWN0IHN0bW1hY19tZGlvX2J1c19kYXRhICptZGlvX2J1c19kYXRhO1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC0zNjMtXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC0zNjUtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0OjM2NjogICAgICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NmZyAqZG1hX2NmZztcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtMzY3LVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9Mzg3PUpVTUJPIGZyYW1lczo6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC00MzAtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0OjQzMTogICAgICAgIHN0cnVjdCBzdG1tYWNfcnhxX2NmZyByeF9xdWV1ZXNfY2ZnW01UTF9NQVhfUlhfUVVFVUVTXTtcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6NDMyOiAgICAgICAgc3RydWN0IHN0bW1hY190eHFfY2ZnIHR4X3F1ZXVlc19jZmdbTVRMX01BWF9UWF9RVUVVRVNdO1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC00MzMtXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdD00NDg9aXMgdXNlZCB0byBjb25maWd1cmUgdGhlIEFNQkEgYnJpZGdlIHRvIGdlbmVyYXRlIG1vcmUgZWZmaWNpZW50IFNUQnVzIHRyYWZmaWM6OlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtNDU0LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDo0NTU6ICAgICAgICBzdHJ1Y3QgY2xrICpzdG1tYWNfY2xrO1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC00NTYtICAgICAgICBzdHJ1Y3QgY2xrICpwY2xrO1xuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtNDYzLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDo0NjQ6ICAgICAgICBzdHJ1Y3QgcmVzZXRfY29udHJvbCAqc3RtbWFjX3JzdDtcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtNDY1LVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtNDY3LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDo0Njg6ICAgICAgICBzdHJ1Y3Qgc3RtbWFjX2F4aSAqYXhpO1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC00NjktXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdD01MDI9Rm9yIE1ESU8gYnVzIGRhdGEsIHdlIGhhdmU6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC01MDUtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0OjUwNjogICAgc3RydWN0IHN0bW1hY19tZGlvX2J1c19kYXRhIHtcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtNTA3LVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9NTI4PUZvciBETUEgZW5naW5lIGNvbmZpZ3VyYXRpb24sIHdlIGhhdmU6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC01MzEtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0OjUzMjogICAgc3RydWN0IHN0bW1hY19kbWFfY2ZnIHtcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtNTMzLVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9NTY0PUZvciBETUEgQVhJIHBhcmFtZXRlcnMsIHdlIGhhdmU6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC01NjctXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0OjU2ODogICAgc3RydWN0IHN0bW1hY19heGkge1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC01NjktXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdD02MDE9Rm9yIHRoZSBSWCBRdWV1ZXMgY29uZmlndXJhdGlvbiwgd2UgaGF2ZTpcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTYwNC1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6NjA1OiAgICBzdHJ1Y3Qgc3RtbWFjX3J4cV9jZmcge1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC02MDYtXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdD02Mjg9Rm9yIHRoZSBUWCBRdWV1ZXMgY29uZmlndXJhdGlvbiwgd2UgaGF2ZTpcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTYzMS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6NjMyOiAgICBzdHJ1Y3Qgc3RtbWFjX3R4cV9jZmcge1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC02MzMtXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvYXhpcy9hcnRwZWM2LmR0c2k9Mjg3PVx0XHRldGhlcm5ldDogZXRoZXJuZXRAZjgwMTAwMDAge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2F4aXMvYXJ0cGVjNi5kdHNpLTI5Ni1cbmFyY2gvYXJtL2Jvb3QvZHRzL2F4aXMvYXJ0cGVjNi5kdHNpOjI5NzpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm0vYm9vdC9kdHMvYXhpcy9hcnRwZWM2LmR0c2ktMjk4LVx0XHRcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFx1MDAzY1x1MDAyNm10bF9yeF9zZXR1cFx1MDAzZTtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9heGlzL2FydHBlYzYuZHRzaS0zMDctXG5hcmNoL2FybS9ib290L2R0cy9heGlzL2FydHBlYzYuZHRzaTozMDg6XHRcdFx0c3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xuYXJjaC9hcm0vYm9vdC9kdHMvYXhpcy9hcnRwZWM2LmR0c2ktMzA5LVx0XHRcdFx0c25wcyx3cl9vc3JfbG10ID0gXHUwMDNjMVx1MDAzZTtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC5kdHNpPTMyNT1cdFx0c2NtIHtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC5kdHNpLTMyOS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2k6MzMwOlx0c3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaS0zMzEtXHRcdHNucHMsd3Jfb3NyX2xtdCA9IFx1MDAzYzdcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaT0xMjkxPVx0XHRnbWFjMDogZXRoZXJuZXRAMzcwMDAwMDAge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2ktMTI5Ny1cbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2k6MTI5ODpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaS0xMjk5LVx0XHRcdHNucHMscGJsID0gXHUwMDNjMzJcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaT0xMzE1PVx0XHRnbWFjMTogZXRoZXJuZXRAMzcyMDAwMDAge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2ktMTMyMS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2k6MTMyMjpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaS0xMzIzLVx0XHRcdHNucHMscGJsID0gXHUwMDNjMzJcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaT0xMzM5PVx0XHRnbWFjMjogZXRoZXJuZXRAMzc0MDAwMDAge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2ktMTM0NS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2k6MTM0NjpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaS0xMzQ3LVx0XHRcdHNucHMscGJsID0gXHUwMDNjMzJcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaT0xMzYzPVx0XHRnbWFjMzogZXRoZXJuZXRAMzc2MDAwMDAge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2ktMTM2OS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2k6MTM3MDpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaS0xMzcxLVx0XHRcdHNucHMscGJsID0gXHUwMDNjMzJcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcnYxMTI2LmR0c2k9NjMzPVx0Z21hYzogZXRoZXJuZXRAZmZjNDAwMDAge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3J2MTEyNi5kdHNpLTY1My1cbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3J2MTEyNi5kdHNpOjY1NDpcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3J2MTEyNi5kdHNpLTY1NS1cdFx0c25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X3NldHVwXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3J2MTEyNi5kdHNpPTY1OT1cdFx0bWRpbzogbWRpbyB7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcnYxMTI2LmR0c2ktNjY0LVxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcnYxMTI2LmR0c2k6NjY1Olx0XHRzdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9ydjExMjYuZHRzaS02NjYtXHRcdFx0c25wcyx3cl9vc3JfbG10ID0gXHUwMDNjNFx1MDAzZTtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMxLmR0c2k9MTczMD1cdFx0XHRldGhlcm5ldDE6IGV0aGVybmV0QDU4MDBhMDAwIHtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMxLmR0c2ktMTc1MS1cdFx0XHRcdHNucHMscGJsID0gXHUwMDNjMlx1MDAzZTtcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzEuZHRzaToxNzUyOlx0XHRcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9jb25maWdfMVx1MDAzZTtcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzEuZHRzaS0xNzUzLVx0XHRcdFx0c25wcyx0c287XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzMS5kdHNpLTE3NTgtXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMxLmR0c2k6MTc1OTpcdFx0XHRcdHN0bW1hY19heGlfY29uZmlnXzE6IHN0bW1hYy1heGktY29uZmlnIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzEuZHRzaS0xNzYwLVx0XHRcdFx0XHRzbnBzLGJsZW4gPSBcdTAwM2MwIDAgMCAwIDE2IDggNFx1MDAzZTtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMzLmR0c2k9NzQ9XHRldGhlcm5ldDI6IGV0aGVybmV0QDU4MDBlMDAwIHtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMzLmR0c2ktOTQtXHRcdHNucHMscGJsID0gXHUwMDNjMlx1MDAzZTtcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzMuZHRzaTo5NTpcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9jb25maWdfMlx1MDAzZTtcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzMuZHRzaS05Ni1cdFx0c25wcyx0c287XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzMy5kdHNpLTEwMS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzMuZHRzaToxMDI6XHRcdHN0bW1hY19heGlfY29uZmlnXzI6IHN0bW1hYy1heGktY29uZmlnIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzMuZHRzaS0xMDMtXHRcdFx0c25wcyxibGVuID0gXHUwMDNjMCAwIDAgMCAxNiA4IDRcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MS5kdHNpPTE5NjI9XHRcdFx0ZXRoZXJuZXQwOiBldGhlcm5ldEA1ODAwYTAwMCB7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MS5kdHNpLTE5ODItXHRcdFx0XHRzbnBzLHBibCA9IFx1MDAzYzJcdTAwM2U7XG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxLmR0c2k6MTk4MzpcdFx0XHRcdHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNnN0bW1hY19heGlfY29uZmlnXzBcdTAwM2U7XG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxLmR0c2ktMTk4NC1cdFx0XHRcdHNucHMsdHNvO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxNTEuZHRzaS0xOTg3LVxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MS5kdHNpOjE5ODg6XHRcdFx0XHRzdG1tYWNfYXhpX2NvbmZpZ18wOiBzdG1tYWMtYXhpLWNvbmZpZyB7XG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxLmR0c2ktMTk4OS1cdFx0XHRcdFx0c25wcyx3cl9vc3JfbG10ID0gXHUwMDNjMHg3XHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvYWxsd2lubmVyL3N1bjU1aS1hNTIzLmR0c2k9ODU2PVx0XHRnbWFjMTogZXRoZXJuZXRANDUxMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9hbGx3aW5uZXIvc3VuNTVpLWE1MjMuZHRzaS04NzAtXHRcdFx0c25wcyxmaXhlZC1idXJzdDtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYWxsd2lubmVyL3N1bjU1aS1hNTIzLmR0c2k6ODcxOlx0XHRcdHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNmdtYWMxX3N0bW1hY19heGlfc2V0dXBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FsbHdpbm5lci9zdW41NWktYTUyMy5kdHNpLTg3Mi1cdFx0XHRzbnBzLG10bC1yeC1jb25maWcgPSBcdTAwM2NcdTAwMjZnbWFjMV9tdGxfcnhfc2V0dXBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9hbGx3aW5uZXIvc3VuNTVpLWE1MjMuZHRzaT04ODI9XHRcdFx0Z21hYzFfbXRsX3J4X3NldHVwOiByeC1xdWV1ZXMtY29uZmlnIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FsbHdpbm5lci9zdW41NWktYTUyMy5kdHNpLTg4Ny1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvYWxsd2lubmVyL3N1bjU1aS1hNTIzLmR0c2k6ODg4Olx0XHRcdGdtYWMxX3N0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYWxsd2lubmVyL3N1bjU1aS1hNTIzLmR0c2ktODg5LVx0XHRcdFx0c25wcyx3cl9vc3JfbG10ID0gXHUwMDNjMHhmXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2k9NTU1PVx0XHRnbWFjMDogZXRoZXJuZXRAMTA4MTAwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2ktNjAyLVx0XHRcdHNucHMscGVyZmVjdC1maWx0ZXItZW50cmllcyA9IFx1MDAzYzY0XHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaTo2MDM6XHRcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9lbWFjMF9zZXR1cFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2ktNjA0LVx0XHRcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFx1MDAzY1x1MDAyNm10bF9yeF9lbWFjMF9zZXR1cFx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpLTYxMy1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2k6NjE0Olx0XHRcdHN0bW1hY19heGlfZW1hYzBfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2ktNjE1LVx0XHRcdFx0c25wcyx3cl9vc3JfbG10ID0gXHUwMDNjMzFcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaT03MDE9XHRcdGdtYWMxOiBldGhlcm5ldEAxMDgyMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaS03NDgtXHRcdFx0c25wcyxwZXJmZWN0LWZpbHRlci1lbnRyaWVzID0gXHUwMDNjNjRcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpOjc0OTpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX2VtYWMxX3NldHVwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaS03NTAtXHRcdFx0c25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X2VtYWMxX3NldHVwXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2ktNzU5LVxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaTo3NjA6XHRcdFx0c3RtbWFjX2F4aV9lbWFjMV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaS03NjEtXHRcdFx0XHRzbnBzLHdyX29zcl9sbXQgPSBcdTAwM2MzMVx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpPTg0Nz1cdFx0Z21hYzI6IGV0aGVybmV0QDEwODMwMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpLTg5NC1cdFx0XHRzbnBzLHBlcmZlY3QtZmlsdGVyLWVudHJpZXMgPSBcdTAwM2M2NFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2k6ODk1Olx0XHRcdHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNnN0bW1hY19heGlfZW1hYzJfc2V0dXBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpLTg5Ni1cdFx0XHRzbnBzLG10bC1yeC1jb25maWcgPSBcdTAwM2NcdTAwMjZtdGxfcnhfZW1hYzJfc2V0dXBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaS05MDUtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpOjkwNjpcdFx0XHRzdG1tYWNfYXhpX2VtYWMyX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpLTkwNy1cdFx0XHRcdHNucHMsd3Jfb3NyX2xtdCA9IFx1MDAzYzMxXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQyNzEyZS5kdHNpPTY4MT1cdHVhcnQ0OiBzZXJpYWxAMTEwMTkwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQyNzEyZS5kdHNpLTY5My1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQyNzEyZS5kdHNpOjY5NDpcdHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQyNzEyZS5kdHNpLTY5NS1cdFx0c25wcyx3cl9vc3JfbG10ID0gXHUwMDNjMHg3XHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQyNzEyZS5kdHNpPTczMD1cdGV0aDogZXRoZXJuZXRAMTEwMWMwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQyNzEyZS5kdHNpLTc1My1cdFx0bWVkaWF0ZWsscGVyaWNmZyA9IFx1MDAzY1x1MDAyNnBlcmljZmdcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210MjcxMmUuZHRzaTo3NTQ6XHRcdHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNnN0bW1hY19heGlfc2V0dXBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210MjcxMmUuZHRzaS03NTUtXHRcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFx1MDAzY1x1MDAyNm10bF9yeF9zZXR1cFx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE4OC5kdHNpPTE3MzY9XHRcdGV0aDogZXRoZXJuZXRAMTEwMjEwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTg4LmR0c2ktMTc1Ny1cdFx0XHRtZWRpYXRlayxwZXJpY2ZnID0gXHUwMDNjXHUwMDI2aW5mcmFjZmdfYW9cdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE4OC5kdHNpOjE3NTg6XHRcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTg4LmR0c2ktMTc1OS1cdFx0XHRzbnBzLG10bC1yeC1jb25maWcgPSBcdTAwM2NcdTAwMjZtdGxfcnhfc2V0dXBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxODguZHRzaT0xNzY2PVx0XHRcdGV0aF9tZGlvOiBtZGlvIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE4OC5kdHNpLTE3NzEtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE4OC5kdHNpOjE3NzI6XHRcdFx0c3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxODguZHRzaS0xNzczLVx0XHRcdFx0c25wcyxibGVuID0gXHUwMDNjMCAwIDAgMCAxNiA4IDRcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxOTUuZHRzaT0xMzAxPVx0XHRldGg6IGV0aGVybmV0QDExMDIxMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE5NS5kdHNpLTEzMjUtXHRcdFx0bWVkaWF0ZWsscGVyaWNmZyA9IFx1MDAzY1x1MDAyNmluZnJhY2ZnX2FvXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxOTUuZHRzaToxMzI2Olx0XHRcdHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNnN0bW1hY19heGlfc2V0dXBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE5NS5kdHNpLTEzMjctXHRcdFx0c25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X3NldHVwXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTk1LmR0c2k9MTMzND1cdFx0XHRtZGlvIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE5NS5kdHNpLTEzMzktXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE5NS5kdHNpOjEzNDA6XHRcdFx0c3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxOTUuZHRzaS0xMzQxLVx0XHRcdFx0c25wcyx3cl9vc3JfbG10ID0gXHUwMDNjMHg3XHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOGcwNDYuZHRzaT03NzA9XHRcdGV0aDA6IGV0aGVybmV0QDExYzMwMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDhnMDQ2LmR0c2ktODE0LVx0XHRcdHNucHMsZm9yY2VfdGhyZXNoX2RtYV9tb2RlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA4ZzA0Ni5kdHNpOjgxNTpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA4ZzA0Ni5kdHNpLTgxNi1cdFx0XHRzbnBzLG10bC1yeC1jb25maWcgPSBcdTAwM2NcdTAwMjZtdGxfcnhfc2V0dXAwXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOGcwNDYuZHRzaT04ODc9XHRcdGV0aDE6IGV0aGVybmV0QDExYzQwMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDhnMDQ2LmR0c2ktOTMxLVx0XHRcdHNucHMsZm9yY2VfdGhyZXNoX2RtYV9tb2RlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA4ZzA0Ni5kdHNpOjkzMjpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA4ZzA0Ni5kdHNpLTkzMy1cdFx0XHRzbnBzLG10bC1yeC1jb25maWcgPSBcdTAwM2NcdTAwMjZtdGxfcnhfc2V0dXAxXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOGcwNDYuZHRzaT0xMDMyPVx0XHR3ZHQwOiB3YXRjaGRvZ0AxMjgwMDgwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA4ZzA0Ni5kdHNpLTEwNDYtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDhnMDQ2LmR0c2k6MTA0NzpcdHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOGcwNDYuZHRzaS0xMDQ4LVx0XHRzbnBzLGxwaV9lbjtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2k9MTgzOT1cdFx0ZXRoMDogZXRoZXJuZXRAMTVjMzAwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNDcuZHRzaS0xODcxLVx0XHRcdHNucHMsZm9yY2Vfc2ZfZG1hX21vZGU7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2k6MTg3MjpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA0Ny5kdHNpLTE4NzMtXHRcdFx0c25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X3NldHVwMFx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2k9MTkzOT1cdFx0ZXRoMTogZXRoZXJuZXRAMTVjNDAwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNDcuZHRzaS0xOTcxLVx0XHRcdHNucHMsZm9yY2Vfc2ZfZG1hX21vZGU7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2k6MTk3MjpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA0Ny5kdHNpLTE5NzMtXHRcdFx0c25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X3NldHVwMVx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2k9MjE0Nj1cdFx0dnNwZDE6IHZzcEAxNjRiMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA0Ny5kdHNpLTIxNjAtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2k6MjE2MTpcdHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNDcuZHRzaS0yMTYyLVx0XHRzbnBzLGxwaV9lbjtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2k9MTUxMD1cdFx0ZXRoMDogZXRoZXJuZXRAMTVjMzAwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTYuZHRzaS0xNTQzLVx0XHRcdHNucHMsZm9yY2VfdGhyZXNoX2RtYV9tb2RlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ni5kdHNpOjE1NDQ6XHRcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTYuZHRzaS0xNTQ1LVx0XHRcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFx1MDAzY1x1MDAyNm10bF9yeF9zZXR1cDBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ni5kdHNpPTE2MTE9XHRcdGV0aDE6IGV0aGVybmV0QDE1YzQwMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2ktMTY0NC1cdFx0XHRzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTYuZHRzaToxNjQ1Olx0XHRcdHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNnN0bW1hY19heGlfc2V0dXBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2ktMTY0Ni1cdFx0XHRzbnBzLG10bC1yeC1jb25maWcgPSBcdTAwM2NcdTAwMjZtdGxfcnhfc2V0dXAxXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTYuZHRzaT0xNzg4PVx0XHR2c3BkOiB2c3BAMTY0ODAwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTYuZHRzaS0xODAxLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ni5kdHNpOjE4MDI6XHRzdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2ktMTgwMy1cdFx0c25wcyxscGlfZW47XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpPTE2NDA9XHRcdGV0aDA6IGV0aGVybmV0QDE1YzMwMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU3LmR0c2ktMTY3My1cdFx0XHRzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTcuZHRzaToxNjc0Olx0XHRcdHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNnN0bW1hY19heGlfc2V0dXBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU3LmR0c2ktMTY3NS1cdFx0XHRzbnBzLG10bC1yeC1jb25maWcgPSBcdTAwM2NcdTAwMjZtdGxfcnhfc2V0dXAwXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTcuZHRzaT0xNzQxPVx0XHRldGgxOiBldGhlcm5ldEAxNWM0MDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpLTE3NzQtXHRcdFx0c25wcyxmb3JjZV90aHJlc2hfZG1hX21vZGU7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU3LmR0c2k6MTc3NTpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpLTE3NzYtXHRcdFx0c25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X3NldHVwMVx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU3LmR0c2k9MTkxOD1cdFx0dnNwZDogdnNwQDE2NDgwMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU3LmR0c2ktMTkzMS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTcuZHRzaToxOTMyOlx0c3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpLTE5MzMtXHRcdHNucHMsbHBpX2VuO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaT01MzQ9XHRcdGdtYWMwOiBldGhlcm5ldEA4MDEwMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA3Ny5kdHNpLTU3Ni1cdFx0XHRzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaTo1Nzc6XHRcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaS01NzgtXHRcdFx0c25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X3NldHVwMFx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDc3LmR0c2k9NjgwPVx0XHRnbWFjMTogZXRoZXJuZXRAOTIwMDAwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaS03MjItXHRcdFx0c25wcyxmb3JjZV90aHJlc2hfZG1hX21vZGU7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDc3LmR0c2k6NzIzOlx0XHRcdHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNnN0bW1hY19heGlfc2V0dXBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDc3LmR0c2ktNzI0LVx0XHRcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFx1MDAzY1x1MDAyNm10bF9yeF9zZXR1cDFcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA3Ny5kdHNpPTgyNj1cdFx0Z21hYzI6IGV0aGVybmV0QDkyMDEwMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDc3LmR0c2ktODY4LVx0XHRcdHNucHMsZm9yY2VfdGhyZXNoX2RtYV9tb2RlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA3Ny5kdHNpOjg2OTpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA3Ny5kdHNpLTg3MC1cdFx0XHRzbnBzLG10bC1yeC1jb25maWcgPSBcdTAwM2NcdTAwMjZtdGxfcnhfc2V0dXAyXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaT0xMzcyPVx0XHRcdHNkaGkxX3ZxbW1jOiB2cW1tYy1yZWd1bGF0b3Ige1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaS0xMzgwLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA3Ny5kdHNpOjEzODE6XHRzdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDc3LmR0c2ktMTM4Mi1cdFx0c25wcyxscGlfZW47XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpPTUzND1cdFx0Z21hYzA6IGV0aGVybmV0QDgwMTAwMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDg3LmR0c2ktNTc3LVx0XHRcdHNucHMsZm9yY2VfdGhyZXNoX2RtYV9tb2RlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpOjU3ODpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpLTU3OS1cdFx0XHRzbnBzLG10bC1yeC1jb25maWcgPSBcdTAwM2NcdTAwMjZtdGxfcnhfc2V0dXAwXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwODcuZHRzaT02ODE9XHRcdGdtYWMxOiBldGhlcm5ldEA5MjAwMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpLTcyNC1cdFx0XHRzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwODcuZHRzaTo3MjU6XHRcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwODcuZHRzaS03MjYtXHRcdFx0c25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X3NldHVwMVx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDg3LmR0c2k9ODI4PVx0XHRnbWFjMjogZXRoZXJuZXRAOTIwMTAwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwODcuZHRzaS04NzEtXHRcdFx0c25wcyxmb3JjZV90aHJlc2hfZG1hX21vZGU7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDg3LmR0c2k6ODcyOlx0XHRcdHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNnN0bW1hY19heGlfc2V0dXBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDg3LmR0c2ktODczLVx0XHRcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFx1MDAzY1x1MDAyNm10bF9yeF9zZXR1cDJcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpPTEzNzU9XHRcdFx0c2RoaTFfdnFtbWM6IHZxbW1jLXJlZ3VsYXRvciB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpLTEzODMtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDg3LmR0c2k6MTM4NDpcdHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwODcuZHRzaS0xMzg1LVx0XHRzbnBzLGxwaV9lbjtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzUyOC5kdHNpPTEwNTg9XHRcdGdtYWMwOiBldGhlcm5ldEBmZmJkMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaS0xMDc1LVx0XHRcdHJvY2tjaGlwLGdyZiA9IFx1MDAzY1x1MDAyNnZvX2dyZlx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTI4LmR0c2k6MTA3NjpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZnbWFjMF9zdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaS0xMDc3LVx0XHRcdHNucHMsbWl4ZWQtYnVyc3Q7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaT0xMDg4PVx0XHRcdFx0cm1paTBfcGh5OiBldGhlcm5ldC1waHlAMiB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaS0xMDk5LVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaToxMTAwOlx0XHRcdGdtYWMwX3N0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTI4LmR0c2ktMTEwMS1cdFx0XHRcdHNucHMsYmxlbiA9IFx1MDAzYzAgMCAwIDAgMTYgOCA0XHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTI4LmR0c2k9MTExNz1cdFx0Z21hYzE6IGV0aGVybmV0QGZmYmUwMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzUyOC5kdHNpLTExMzQtXHRcdFx0cm9ja2NoaXAsZ3JmID0gXHUwMDNjXHUwMDI2dnB1X2dyZlx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTI4LmR0c2k6MTEzNTpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZnbWFjMV9zdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaS0xMTM2LVx0XHRcdHNucHMsbWl4ZWQtYnVyc3Q7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaT0xMTQyPVx0XHRcdG1kaW8xOiBtZGlvIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzUyOC5kdHNpLTExNDctXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzUyOC5kdHNpOjExNDg6XHRcdFx0Z21hYzFfc3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaS0xMTQ5LVx0XHRcdFx0c25wcyxibGVuID0gXHUwMDNjMCAwIDAgMCAxNiA4IDRcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaT0zMDY9XHRnbWFjMDogZXRoZXJuZXRAZmUyYTAwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2ktMzIyLVx0XHRyb2NrY2hpcCxncmYgPSBcdTAwM2NcdTAwMjZncmZcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpOjMyMzpcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2Z21hYzBfc3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2ktMzI0LVx0XHRzbnBzLG1peGVkLWJ1cnN0O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2k9MzMwPVx0XHRtZGlvMDogbWRpbyB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaS0zMzUtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpOjMzNjpcdFx0Z21hYzBfc3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaS0zMzctXHRcdFx0c25wcyxibGVuID0gXHUwMDNjMCAwIDAgMCAxNiA4IDRcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NngtYmFzZS5kdHNpPTcwMD1cdGdtYWMxOiBldGhlcm5ldEBmZTAxMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NngtYmFzZS5kdHNpLTcxNi1cdFx0cm9ja2NoaXAsZ3JmID0gXHUwMDNjXHUwMDI2Z3JmXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NngtYmFzZS5kdHNpOjcxNzpcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2Z21hYzFfc3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTZ4LWJhc2UuZHRzaS03MTgtXHRcdHNucHMsbWl4ZWQtYnVyc3Q7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NngtYmFzZS5kdHNpPTcyND1cdFx0bWRpbzE6IG1kaW8ge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTZ4LWJhc2UuZHRzaS03MjktXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2eC1iYXNlLmR0c2k6NzMwOlx0XHRnbWFjMV9zdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2eC1iYXNlLmR0c2ktNzMxLVx0XHRcdHNucHMsYmxlbiA9IFx1MDAzYzAgMCAwIDAgMTYgOCA0XHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTc2LmR0c2k9MTgzNT1cdFx0Z21hYzA6IGV0aGVybmV0QDJhMjIwMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU3Ni5kdHNpLTE4NTItXHRcdFx0cm9ja2NoaXAscGhwLWdyZiA9IFx1MDAzY1x1MDAyNmlvY19ncmZcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU3Ni5kdHNpOjE4NTM6XHRcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2Z21hYzBfc3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTc2LmR0c2ktMTg1NC1cdFx0XHRzbnBzLG1peGVkLWJ1cnN0O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTc2LmR0c2k9MTg2MD1cdFx0XHRtZGlvMDogbWRpbyB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NzYuZHRzaS0xODY1LVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NzYuZHRzaToxODY2Olx0XHRcdGdtYWMwX3N0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTc2LmR0c2ktMTg2Ny1cdFx0XHRcdHNucHMsYmxlbiA9IFx1MDAzYzAgMCAwIDAgMTYgOCA0XHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTc2LmR0c2k9MTg4Mz1cdFx0Z21hYzE6IGV0aGVybmV0QDJhMjMwMDAwIHtcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzIxNgoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDM1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFFFTVUgYW5kIHRoZSBgc3RtbWFjYCBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBzdG1tYWNgIOKAkyByaWdodCwgdGhhdCYjMzk7cyB0aGUgZHJpdmVyIGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQ3MuIEl0JiMzOTtzIHViaXF1aXRvdXMgaW4gZW1iZWRkZWQgc3lzdGVtcywgdGhlIFJvY2tjaGlwcywgQWxsd2lubmVycywgU1RNMzJzLCBSZW5lc2FzLCBTb2NmcGdhcywgYW5kIGV2ZW4gSW50ZWwgU29Dcy4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBkb2VzIFFFTVUgZW11bGF0ZSB0aGlzIGRpcmVjdGx5LCBvciBpcyB0aGVyZSBhIHBhdGh3YXkgdG8gaXQgd2l0aGluIHRoZSBzdGFuZGFyZCBlbnZpcm9ubWVudHMsIHBhcnRpY3VsYXJseSB0aGUgb25lcyB0aGF0IHdvdWxkIGJlIHJlbGV2YW50IGZvciBteSB3b3JrIHdpdGggc3l6a2FsbGVyIG9uIHg4Nl82NCBvciBhcm02NCB2aXJ0IG1hY2hpbmVzPwoKTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gc2VlIHdoYXQgbmV0d29yayBkZXZpY2VzIFFFTVUgbmF0aXZlbHkgc3VwcG9ydHMuIEUxMDAwLCBlMTAwMGUsIGlnYiwgcnRsODEzOSwgdGhlIHVzdWFsIHN1c3BlY3RzLiBCdXQsIGhvbGQgb24uLi4gZG9lcyBpdCBhY3R1YWxseSBlbXVsYXRlIGBkd21hY2Agb3IgYHN0bW1hY2AgZGlyZWN0bHk/IEFoLCBvbiAqc3BlY2lmaWMqIEFSTSBib2FyZHMsIGxpa2UgU1RNMzIsIHRoZXJlJiMzOTtzIGBkd2NfZXRoX3Fvc2Agb3IgYHN0bTMyX2R3bWFjYCBvciBzaW1pbGFyLiBIb3dldmVyLCB0aGF0JiMzOTtzIG5vdCB3aGF0IEkmIzM5O20gdGFyZ2V0aW5nIGhlcmU7IHRob3NlIGFyZSBmb3Igc3BlY2lhbGl6ZWQgY2FzZXMuIFNvLCBmb3IgdGhlIGdlbmVyYWwgUUVNVSAvIEdDRSB4ODZfNjQgYW5kIGFybTY0IHZpcnR1YWwgbWFjaGluZXMsIHRoZXJlJiMzOTtzIG5vIGBzdG1tYWNgIGRldmljZSBwcmVzZW50LiBObyB2aXJ0dWFsIG9yIGVtdWxhdGVkIGBzdG1tYWNgIGF0IGFsbCBpbiB0aGUgc3RhbmRhcmQgYnVpbGRzLiBUaGF0JiMzOTtzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLgoKV2FpdCwgdGhlbiB3aGF0IGFib3V0IHRoZSBgZHdtYWMtaW50ZWwuY2AgZmlsZT8gTG9va2luZyBhdCB0aGF0LCBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuIFNvLCBteSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGF0IGluIG1vcmUgZGV0YWlsIGFuZCBzZWUgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlLiBMZXQmIzM5O3MgaW5zcGVjdCBgZHdtYWMtaW50ZWwuY2AgdG8gc2VlIGlmIHRoYXQgaGVscHMgbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TU9EVUxFX0RFVklDRV9UQUJMRVxcKHBjaSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xNDMxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDUwLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjE0NTE6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGludGVsX2V0aF9wY2lfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDUyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MTc3CgkJCQkJCQlvdXRwdXQ6IDE3MQoJCQkJCQkJdGhvdWdodHM6IDEzMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFBhdGNoOiBXb3J0aEZ1enppbmcgRXZhbHVhdGlvbioqCgpPa2F5LCBoZXJlJiMzOTtzIHRoZSBicmVha2Rvd24gb2YgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMgcGF0Y2guIEkmIzM5O20gbG9va2luZyBhdCBhIGNvbXBsZXggc2V0IG9mIGNoYW5nZXMuIEl0IHNlZW1zIGxpa2UgdGhlIHBhdGNoIHRvdWNoZXMgYSBidW5jaCBvZiBkcml2ZXJzOiBgZHdtYWMtaW50ZWwuY2AsIGBkd21hYy1yay5jYCwgYHBjcy14cGNzLXJrLmNgLCBgcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmNgLCBgZHdtYWMtcmVuZXNhcy1nYmV0aC5jYCwgYGR3bWFjLXJ6bjEuY2AsIGBkd21hYy1zb2NmcGdhLmNgLCBgc3RtbWFjX21kaW8uY2AsIGFuZCBgcGNzLXhwY3MuY2AuIFRoZXNlIGFyZSBhbGwgcmVsYXRlZCB0byBFdGhlcm5ldCwgc3BlY2lmaWNhbGx5IGRyaXZlcnMgZm9yIHZhcmlvdXMgaGFyZHdhcmU6IEludGVsIFBDSWUgZGV2aWNlcywgUm9ja2NoaXAgcGxhdGZvcm1zLCBSZW5lc2FzIFNvQ3MsIEludGVsL0FsdGVyYSBTb0MgcGxhdGZvcm1zLCBhbmQgc29tZSBjb21tb24gc3RtbWFjIGFuZCBwY3MgY29kZS4KCkZpcnN0LCBsZXQmIzM5O3MgZXN0YWJsaXNoIHRoZSBjb250ZXh0LCBieSBjYXJlZnVsbHkgcmV2aWV3aW5nIHRoZSBpbnN0cnVjdGlvbnMuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBjb2RlIGlzICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsgb3Igbm90LiBCYXNlZCBvbiB0aGUgcHJvbXB0LCBJIG5lZWQgdG8gbWFrZSBhIGp1ZGdlbWVudCBjYWxsLiBNb2RpZmljYXRpb25zIHRvIGRvY3VtZW50YXRpb24gb3IgS2NvbmZpZy9NYWtlZmlsZT8gQ2hlY2suIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXM/IENoZWNrLiBDb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG9uJiMzOTt0IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdz8gTm90IHlldC4gSW1wb3NzaWJsZSBjb2RlIHBhdGhzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEhtbS4uLiBsZXQmIzM5O3MgZXhwbG9yZS4gVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoL1NtYXJ0TklDL0dQVSBkcml2ZXJzIG5lZWRpbmcgcGh5c2ljYWwgUENJZSBoYXJkd2FyZT8gVGhhdCBpcyBhbHNvIGEgc3Ryb25nIHBvc3NpYmlsaXR5LiBGaW5hbGx5LCBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIHRoYXQgb25seSBleGVjdXRlIGR1cmluZyBob3QtdW5wbHVnIG9wZXJhdGlvbnM/IE5vdCBkaXJlY3RseSByZWxldmFudC4KCk5vdywgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlIHBhdGNoIGNvbXBvbmVudHM6IERldmljZSB0cmVlIGJpbmRpbmdzIGZvciBSb2NrY2hpcCBoYXJkd2FyZSAoYm90aCB4cGNzIGFuZCB0aGUgY29tYnBoeSksIE1BSU5UQUlORVJTLCBtb3JlIGRldmljZSB0cmVlIGZpbGVzLCBLY29uZmlnIGFuZCBNYWtlZmlsZSBjaGFuZ2VzLCBhbmQgdmFyaW91cyBSb2NrY2hpcC1zcGVjaWZpYyBkcml2ZXJzIChsaWtlIHRoZSB4cGNzIGRyaXZlciBhbmQgdGhlIEdNQUMgZHJpdmVyKS4gSSBhbHNvIHNlZSBSZW5lc2FzIGRyaXZlcnMsIEludGVsL0FsdGVyYSBTb0MgZHJpdmVycywgY29tbW9uIHN0bW1hYyBhbmQgcGNzIGNvZGUsIGFuZCBzb21lIEludGVsIFBDSSBkcml2ZXIuIFNvIGl0JiMzOTtzIGEgbWl4IG9mIGhhcmR3YXJlLXNwZWNpZmljIGFuZCBtb3JlIGdlbmVyYWwgc3RtbWFjL3BjcyBjb2RlLgoKVGhlIGNydXggb2YgdGhpcyBhbmFseXNpcyBpcyB3aGV0aGVyIHRoaXMgY29kZSBjYW4gYmUgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gSGVyZSYjMzk7cyB3aGVyZSBpdCBjbGlja3M6IE5vbmUgb2YgdGhpcyBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgYmVjYXVzZSB0aGVzZSBwbGF0Zm9ybXMgZG9uJiMzOTt0IGVtdWxhdGUgdGhlIHNwZWNpZmljIGhhcmR3YXJlIGJlaW5nIHRhcmdldGVkIGhlcmUuIE5vIHZpcnR1YWwgb3IgZW11bGF0ZWQgZGV2aWNlcyBleGlzdCBmb3Igc3RtbWFjIG9yIGR3X3hwY3MsIGFuZCB0aGUgbmV0d29yayBpbnRlcmZhY2VzIHByb3ZpZGVkIGluIFFFTVUgZG9uJiMzOTt0IHVzZSB0aGVzZSBkcml2ZXJzLiBOZWl0aGVyIHRoZSBSb2NrY2hpcCBTb0NzIG5vciB0aGUgSW50ZWwgRFdNQUMgUENJIGRldmljZXMgZXhpc3QgaW4gdGhpcyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gTm8gdmlydHVhbCBvciBlbXVsYXRlZCBkZXZpY2VzIGluc3RhbnRpYXRlIHN0bW1hYyBvciBkd194cGNzLgoKSSYjMzk7dmUgcmUtcmV2aWV3ZWQgZXZlcnl0aGluZyB0byBlbnN1cmUgdGhlIGFuYWx5c2lzIGlzIGNvbXBsZXRlLiBUaGVyZSBhcmUgbm8gY29yZSBuZXR3b3JraW5nIGludGVyZmFjZXMsIGFyY2gtZ2VuZXJpYyBkcml2ZXJzLCBvciBtb2NrIGludGVyZmFjZXMgYWZmZWN0ZWQuIFRoZSBjb2RlIHJlcXVpcmVzIHNwZWNpZmljLCBwaHlzaWNhbCBoYXJkd2FyZS4gSXQgc2VlbXMgbGlrZSB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHRoYXQgaXMgdW5yZWFjaGFibGUgaW4gUUVNVSBvciBHQ0UuCgpUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIHRoZSByaWdodCBjYWxsIGhlcmUuIFRoZSBwYXRjaCBtb2RpZmljYXRpb25zIGFyZSBjb25maW5lZCB0byBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIChSb2NrY2hpcCwgUmVuZXNhcywgSW50ZWwpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBzZXQtcmVzdWx0cyBwYXJhbWV0ZXJzIGFyZSBjbGVhcjogYFdvcnRoRnV6emluZzogZmFsc2VgLCBgRW5hYmxlQ29uZmlnczogW11gLCBgRm9jdXNTeW1ib2xzOiBbXWAsIHdpdGggYSBjb25jaXNlIHJlYXNvbmluZy4gTGV0JiMzOTtzIG1ha2UgdGhlIGNhbGwgdG8gYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBhZGRzIHN1cHBvcnQgZm9yIFJvY2tjaGlwIFJLMzU2OCBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IFBoeXNpY2FsIENvZGluZyBTdWJsYXllciAoWFBDUykgYW5kIFNHTUlJIGludGVyZmFjZSBjb25maWd1cmF0aW9uIGZvciB0aGUgUm9ja2NoaXAgRFdNQUMgZHJpdmVyLCBhbG9uZyB3aXRoIG1pbm9yIFBDUyBpbml0L2V4aXQgaGFuZGxpbmcgdXBkYXRlcyBmb3IgSW50ZWwgRFdNQUMgUENJIGFuZCBvdGhlciBTb0MgZ2x1ZSBkcml2ZXJzIChSZW5lc2FzLCBTb2NmcGdhKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVzdHJpY3RlZCB0byB2ZW5kb3Itc3BlY2lmaWMgU29DIHBsYXRmb3JtIGRyaXZlcnMgKFJvY2tjaGlwIFJLMzU2OCwgUmVuZXNhcywgU29jZnBnYSkgYW5kIEludGVsIERXTUFDIFBDSSBoYXJkd2FyZSwgbm9uZSBvZiB3aGljaCBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBjbG91ZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgY2Fubm90IGJlIGV4ZWN1dGVkIGR1cmluZyB2aXJ0dWFsaXplZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgc3VwcG9ydCBmb3IgUm9ja2NoaXAgUkszNTY4IFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUGh5c2ljYWwgQ29kaW5nIFN1YmxheWVyIChYUENTKSBhbmQgU0dNSUkgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBSb2NrY2hpcCBEV01BQyBkcml2ZXIsIGFsb25nIHdpdGggbWlub3IgUENTIGluaXQvZXhpdCBoYW5kbGluZyB1cGRhdGVzIGZvciBJbnRlbCBEV01BQyBQQ0kgYW5kIG90aGVyIFNvQyBnbHVlIGRyaXZlcnMgKFJlbmVzYXMsIFNvY2ZwZ2EpLiBUaGVzZSBjaGFuZ2VzIGFyZSByZXN0cmljdGVkIHRvIHZlbmRvci1zcGVjaWZpYyBTb0MgcGxhdGZvcm0gZHJpdmVycyAoUm9ja2NoaXAgUkszNTY4LCBSZW5lc2FzLCBTb2NmcGdhKSBhbmQgSW50ZWwgRFdNQUMgUENJIGhhcmR3YXJlLCBub25lIG9mIHdoaWNoIGFyZSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGVudmlyb25tZW50cyBsaWtlIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBjYW5ub3QgYmUgZXhlY3V0ZWQgZHVyaW5nIHZpcnR1YWxpemVkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjEwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNToxMDoxMi4wNzg0NDc3NDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzU3Mzk2ODkwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBhZGRzIHN1cHBvcnQgZm9yIFJvY2tjaGlwIFJLMzU2OCBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IFBoeXNpY2FsIENvZGluZyBTdWJsYXllciAoWFBDUykgYW5kIFNHTUlJIGludGVyZmFjZSBjb25maWd1cmF0aW9uIGZvciB0aGUgUm9ja2NoaXAgRFdNQUMgZHJpdmVyLCBhbG9uZyB3aXRoIG1pbm9yIFBDUyBpbml0L2V4aXQgaGFuZGxpbmcgdXBkYXRlcyBmb3IgSW50ZWwgRFdNQUMgUENJIGFuZCBvdGhlciBTb0MgZ2x1ZSBkcml2ZXJzIChSZW5lc2FzLCBTb2NmcGdhKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVzdHJpY3RlZCB0byB2ZW5kb3Itc3BlY2lmaWMgU29DIHBsYXRmb3JtIGRyaXZlcnMgKFJvY2tjaGlwIFJLMzU2OCwgUmVuZXNhcywgU29jZnBnYSkgYW5kIEludGVsIERXTUFDIFBDSSBoYXJkd2FyZSwgbm9uZSBvZiB3aGljaCBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBjbG91ZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgY2Fubm90IGJlIGV4ZWN1dGVkIGR1cmluZyB2aXJ0dWFsaXplZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDU6MTA6MTIuMDc4NDUzOTM3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjQ2OTM5NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmNDZhOGY0Yzk5NTI5NjFiN2Y4Zjk2YWY4ZjJmNDQ2MWE4Zjk1OTcyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDIgMDU6MTA6MTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3Mvcm9ja2NoaXAtZHd4cGNzLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbFxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMDg1MmQwYmNiNjZhMlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbFxcbkBAIC0wLDAgKzEsMTEwIEBAXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlKVxcbislWUFNTCAxLjJcXG4rLS0tXFxuKyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbCNcXG4rJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuK1xcbit0aXRsZTogUm9ja2NoaXAgUkszNTY4IFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUENTXFxuK1xcbittYWludGFpbmVyczpcXG4rICAtIENvaWEgUHJhbnQgXFx1MDAzY2NvaWFwcmFudEBnbWFpbC5jb21cXHUwMDNlXFxuK1xcbitkZXNjcmlwdGlvbjogfFxcbisgIFJvY2tjaGlwIFJLMzU2OCBTb0MgaW50ZWdyYXRlcyBhIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUGh5c2ljYWxcXG4rICBDb2RpbmcgU3VibGF5ZXIgKFhQQ1MpLlxcbisgIFRoZSBQQ1MgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGJldHdlZW4gdGhlIE1lZGlhIEFjY2VzcyBDb250cm9sIChNQUMpXFxuKyAgYW5kIHRoZSBQaHlzaWNhbCBNZWRpdW0gQXR0YWNobWVudCAoUE1BKSBzdWJsYXllciB0aHJvdWdoIGEgTWVkaWFcXG4rICBJbmRlcGVuZGVudCBJbnRlcmZhY2UgKEdNSUkpLlxcbitcXG4rICBUaGUgWFBDUyBpcyBhY2Nlc3NlZCBvdmVyIHRoZSBBUEIzIGJ1cyBhbmQgaW50ZXJuYWxseSBjb25uZWN0ZWQgdG8gYVxcbisgIE5hbmVuZyBDb21ibyBTZXJEZXMgUEhZLlxcbisgIEl0IHN1cHBvcnRzIDEwMDBCQVNFLVgsIFNHTUlJIGFuZCBRU0dNSUkgbW9kZXMuXFxuK1xcbisgIFRoZSBibG9jayBjb250YWlucyBmb3VyIE1JSSBwb3J0cyB0aGF0IGNhbiBiZSBpbmRpdmlkdWFsbHkgZW5hYmxlZCBhbmRcXG4rICByb3V0ZWQgdG8gb25lIG9mIHRoZSBFdGhlcm5ldCBHTUFDIGNvbnRyb2xsZXJzIHZpYSB0aGUgcGNzLWhhbmRsZVxcbisgIHByb3BlcnR5IGluIHRoZSBNQUMgZGV2aWNlIHRyZWUgbm9kZS5cXG4rXFxuK3Byb3BlcnRpZXM6XFxuKyAgY29tcGF0aWJsZTpcXG4rICAgIGNvbnN0OiByb2NrY2hpcCxyazM1NjgteHBjc1xcbitcXG4rICByZWc6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4rICBcXFwiI2FkZHJlc3MtY2VsbHNcXFwiOlxcbisgICAgY29uc3Q6IDFcXG4rXFxuKyAgXFxcIiNzaXplLWNlbGxzXFxcIjpcXG4rICAgIGNvbnN0OiAwXFxuK1xcbisgIGNsb2NrczpcXG4rICAgIGl0ZW1zOlxcbisgICAgICAtIGRlc2NyaXB0aW9uOiBBUEIzIGJ1cyBpbnRlcmZhY2UgY2xvY2sgKGNsa19jc3JfaSksIHJlcXVpcmVkIGZvciByZWdpc3RlciBhY2Nlc3NcXG4rICAgICAgLSBkZXNjcmlwdGlvbjogRUVFIGNsb2NrIChjbGtfZWVlX2kpLCByZXF1aXJlZCBmb3IgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCBvcGVyYXRpb25cXG4rXFxuKyAgY2xvY2stbmFtZXM6XFxuKyAgICBpdGVtczpcXG4rICAgICAgLSBjb25zdDogY3NyXFxuKyAgICAgIC0gY29uc3Q6IGVlZVxcbitcXG4rICBwaHlzOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuKyAgcGh5LW5hbWVzOlxcbisgICAgY29uc3Q6IHNlcmRlc1xcbitcXG4rICBwb3dlci1kb21haW5zOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuK3BhdHRlcm5Qcm9wZXJ0aWVzOlxcbisgIFxcXCJecGNzLW1paUBbMC0zXSRcXFwiOlxcbisgICAgdHlwZTogb2JqZWN0XFxuKyAgICBkZXNjcmlwdGlvbjpcXG4rICAgICAgT25lIG9mIHRoZSBmb3VyIE1JSSBwb3J0cyBvZiB0aGUgWFBDUy4gVGhlIHBvcnQgaXMgbGlua2VkIHRvIGFuXFxuKyAgICAgIEV0aGVybmV0IE1BQyBjb250cm9sbGVyIHZpYSB0aGUgcGNzLWhhbmRsZSBwcm9wZXJ0eSBpbiB0aGUgTUFDJ3NcXG4rICAgICAgZGV2aWNlIHRyZWUgbm9kZS5cXG4rXFxuKyAgICBwcm9wZXJ0aWVzOlxcbisgICAgICByZWc6XFxuKyAgICAgICAgZGVzY3JpcHRpb246IE1JSSBwb3J0IG51bWJlci5cXG4rICAgICAgICBlbnVtOiBbMCwgMSwgMiwgM11cXG4rXFxuKyAgICByZXF1aXJlZDpcXG4rICAgICAgLSByZWdcXG4rXFxuKyAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2VcXG4rXFxuK3JlcXVpcmVkOlxcbisgIC0gY29tcGF0aWJsZVxcbisgIC0gcmVnXFxuKyAgLSBcXFwiI2FkZHJlc3MtY2VsbHNcXFwiXFxuKyAgLSBcXFwiI3NpemUtY2VsbHNcXFwiXFxuKyAgLSBjbG9ja3NcXG4rICAtIGNsb2NrLW5hbWVzXFxuKyAgLSBwaHlzXFxuKyAgLSBwaHktbmFtZXNcXG4rICAtIHBvd2VyLWRvbWFpbnNcXG4rXFxuK2FkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZVxcbitcXG4rZXhhbXBsZXM6XFxuKyAgLSB8XFxuKyAgICAjaW5jbHVkZSBcXHUwMDNjZHQtYmluZGluZ3MvY2xvY2svcmszNTY4LWNydS5oXFx1MDAzZVxcbisgICAgI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL3Bvd2VyL3JrMzU2OC1wb3dlci5oXFx1MDAzZVxcbisgICAgI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL3BoeS9waHkuaFxcdTAwM2VcXG4rXFxuKyAgICBwY3NAZmRhMDAwMDAge1xcbisgICAgICBjb21wYXRpYmxlID0gXFxcInJvY2tjaGlwLHJrMzU2OC14cGNzXFxcIjtcXG4rICAgICAgcmVnID0gXFx1MDAzYzB4ZmRhMDAwMDAgMHgyMDAwMDBcXHUwMDNlO1xcbisgICAgICAjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rICAgICAgI3NpemUtY2VsbHMgPSBcXHUwMDNjMFxcdTAwM2U7XFxuKyAgICAgIGNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2Y3J1IFBDTEtfWFBDU1xcdTAwM2UsIFxcdTAwM2NcXHUwMDI2Y3J1IENMS19YUENTX0VFRVxcdTAwM2U7XFxuKyAgICAgIGNsb2NrLW5hbWVzID0gXFxcImNzclxcXCIsIFxcXCJlZWVcXFwiO1xcbisgICAgICBwaHlzID0gXFx1MDAzY1xcdTAwMjZjb21icGh5MiBQSFlfVFlQRV9TR01JSVxcdTAwM2U7XFxuKyAgICAgIHBoeS1uYW1lcyA9IFxcXCJzZXJkZXNcXFwiO1xcbisgICAgICBwb3dlci1kb21haW5zID0gXFx1MDAzY1xcdTAwMjZwb3dlciBSSzM1NjhfUERfUElQRVxcdTAwM2U7XFxuK1xcbisgICAgICBwY3MtbWlpQDAge1xcbisgICAgICAgIHJlZyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4rICAgICAgfTtcXG4rICAgIH07XFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sXFxuaW5kZXggMzc5YjA4YmQ5ZTk3YS4uOGU4OThiY2U5YWY3MyAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkueWFtbFxcbkBAIC04MCw2ICs4MCwxNSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgZGVzY3JpcHRpb246XFxuICAgICAgIFNvbWUgYWRkaXRpb25hbCBwaXBlIHNldHRpbmdzIGFyZSBhY2Nlc3NlZCB0aHJvdWdoIEdSRiByZWdzLlxcbiBcXG4rICByb2NrY2hpcCxzZ21paS1tYWMtc2VsOlxcbisgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvdWludDMyXFxuKyAgICBlbnVtOiBbMCwgMV1cXG4rICAgIGRlZmF1bHQ6IDFcXG4rICAgIGRlc2NyaXB0aW9uOlxcbisgICAgICBTZWxlY3QgZ21hYzAgb3IgZ21hYzEgdG8gYmUgdXNlZCBhcyBTR01JSSBjb250cm9sbGVyLlxcbisgICAgICBUaGUgaGFyZHdhcmUgcmVzZXQgdmFsdWUgaXMgR01BQzEgKDEpLiBTZXQgdGhpcyB0byAwIHRvIHJvdXRlXFxuKyAgICAgIFNHTUlJIHRvIEdNQUMwLlxcbitcXG4gICBcXFwiI3BoeS1jZWxsc1xcXCI6XFxuICAgICBjb25zdDogMVxcbiBcXG5AQCAtMTA1LDYgKzExNCwxMCBAQCBhbGxPZjpcXG4gICAgICAgICAgIG1heEl0ZW1zOiAxXFxuICAgICAgICAgcmVzZXQtbmFtZXM6XFxuICAgICAgICAgICBtYXhJdGVtczogMVxcbisgICAgICAgIHJvY2tjaGlwLHNnbWlpLW1hYy1zZWw6IHRydWVcXG4rICAgIGVsc2U6XFxuKyAgICAgIHByb3BlcnRpZXM6XFxuKyAgICAgICAgcm9ja2NoaXAsc2dtaWktbWFjLXNlbDogZmFsc2VcXG4gICAtIGlmOlxcbiAgICAgICBwcm9wZXJ0aWVzOlxcbiAgICAgICAgIGNvbXBhdGlibGU6XFxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcXG5pbmRleCAzYTE5ZGE3NGQwMGM5Li5jM2IxNzc1MmNjODE3IDEwMDY0NFxcbi0tLSBhL01BSU5UQUlORVJTXFxuKysrIGIvTUFJTlRBSU5FUlNcXG5AQCAtMjM3NDQsNiArMjM3NDQsMTUgQEAgUzpcXHRNYWludGFpbmVkXFxuIEY6XFx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3JvY2tjaGlwLHJrMzU3Ni1zYWkueWFtbFxcbiBGOlxcdHNvdW5kL3NvYy9yb2NrY2hpcC9yb2NrY2hpcF9zYWkuKlxcbiBcXG4rUk9DS0NISVAgWFBDUyBEUklWRVJcXG4rTTpcXHRDb2lhIFByYW50IFxcdTAwM2Njb2lhcHJhbnRAZ21haWwuY29tXFx1MDAzZVxcbitMOlxcdG5ldGRldkB2Z2VyLmtlcm5lbC5vcmdcXG4rTDpcXHRsaW51eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnXFxuK1M6XFx0TWFpbnRhaW5lZFxcbitGOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sXFxuK0Y6XFx0ZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmNcXG4rRjpcXHRpbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXFxuK1xcbiBST0NLRVIgRFJJVkVSXFxuIE06XFx0SmlyaSBQaXJrbyBcXHUwMDNjamlyaUByZXNudWxsaS51c1xcdTAwM2VcXG4gTDpcXHRuZXRkZXZAdmdlci5rZXJuZWwub3JnXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LXBob3RvbmljYXQuZHRzIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHNcXG5pbmRleCA1OGMxMDUyYmE4ZWYzLi4yNWNhYTQ0MTk4ODQzIDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LXBob3RvbmljYXQuZHRzXFxuKysrIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHNcXG5AQCAtMyw2ICszLDcgQEBcXG4gL2R0cy12MS87XFxuIFxcbiAjaW5jbHVkZSBcXHUwMDNjZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9sZWRzL2NvbW1vbi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjZHQtYmluZGluZ3MvcGluY3RybC9yb2NrY2hpcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjZHQtYmluZGluZ3Mvc29jL3JvY2tjaGlwLHZvcDIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFxcInJrMzU2OC5kdHNpXFxcIlxcbkBAIC0yNDIsNiArMjQzLDcgQEAgXFx1MDAyNmNvbWJwaHkxIHtcXG4gXFxuIFxcdTAwMjZjb21icGh5MiB7XFxuIFxcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG4rXFx0cm9ja2NoaXAsc2dtaWktbWFjLXNlbCA9IFxcdTAwM2MwXFx1MDAzZTtcXG4gfTtcXG4gXFxuIFxcdTAwMjZjcHUwIHtcXG5AQCAtMjYwLDkgKzI2MiwxOCBAQCBcXHUwMDI2Y3B1MyB7XFxuIFxcdGNwdS1zdXBwbHkgPSBcXHUwMDNjXFx1MDAyNnZkZF9jcHVcXHUwMDNlO1xcbiB9O1xcbiBcXG4tLyogTW90b3Jjb21tIFlUODUyMVNDIExBTiBwb3J0IChyZXF1aXJlIFNHTUlJKSAqL1xcbisvKiBNb3RvcmNvbW0gWVQ4NTIxU0MgTEFOIHBvcnQgKi9cXG4gXFx1MDAyNmdtYWMwIHtcXG4tXFx0c3RhdHVzID0gXFxcImRpc2FibGVkXFxcIjtcXG4rXFx0YXNzaWduZWQtY2xvY2tzID0gXFx1MDAzY1xcdTAwMjZjcnUgU0NMS19HTUFDMF9SWF9UWFxcdTAwM2U7XFxuK1xcdGFzc2lnbmVkLWNsb2NrLXBhcmVudHMgPSBcXHUwMDNjXFx1MDAyNnhwY3NfZ21hYzBfY2xrXFx1MDAzZTtcXG4rXFx0cGNzLWhhbmRsZSA9IFxcdTAwM2NcXHUwMDI2eHBjc19taWkwXFx1MDAzZTtcXG4rXFx0bWFuYWdlZCA9IFxcXCJpbi1iYW5kLXN0YXR1c1xcXCI7XFxuK1xcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNnNnbWlpX3BoeVxcdTAwM2U7XFxuK1xcdHBoeS1tb2RlID0gXFxcInNnbWlpXFxcIjtcXG4rXFx0cGh5LXN1cHBseSA9IFxcdTAwM2NcXHUwMDI2dmNjXzN2M1xcdTAwM2U7XFxuK1xcdHBpbmN0cmwtbmFtZXMgPSBcXFwiZGVmYXVsdFxcXCI7XFxuK1xcdHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2Z21hYzBfbWlpbVxcdTAwM2U7XFxuK1xcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG4gfTtcXG4gXFxuIC8qIE1vdG9yY29tbSBZVDg1MjFTQyBXQU4gcG9ydCAqL1xcbkBAIC0zNDEsNiArMzUyLDM2IEBAIFxcdTAwMjZpMnMwXzhjaCB7XFxuIFxcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG4gfTtcXG4gXFxuK1xcdTAwMjZtZGlvMCB7XFxuK1xcdHNnbWlpX3BoeTogZXRoZXJuZXQtcGh5QDMge1xcbitcXHRcXHRjb21wYXRpYmxlID0gXFxcImV0aGVybmV0LXBoeS1pZWVlODAyLjMtYzIyXFxcIjtcXG4rXFx0XFx0cmVnID0gXFx1MDAzYzB4M1xcdTAwM2U7XFxuK1xcdFxcdG1heC1zcGVlZCA9IFxcdTAwM2MxMDAwXFx1MDAzZTtcXG4rXFx0XFx0cmVzZXQtYXNzZXJ0LXVzID0gXFx1MDAzYzIwMDAwXFx1MDAzZTtcXG4rXFx0XFx0cmVzZXQtZGVhc3NlcnQtdXMgPSBcXHUwMDNjMTAwMDAwXFx1MDAzZTtcXG4rXFx0XFx0cmVzZXQtZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8zIFJLX1BDNiBHUElPX0FDVElWRV9MT1dcXHUwMDNlO1xcbitcXG4rXFx0XFx0bGVkcyB7XFxuK1xcdFxcdFxcdCNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbitcXHRcXHRcXHQjc2l6ZS1jZWxscyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4rXFxuK1xcdFxcdFxcdGxlZEAxIHtcXG4rXFx0XFx0XFx0XFx0cmVnID0gXFx1MDAzYzFcXHUwMDNlO1xcbitcXHRcXHRcXHRcXHRjb2xvciA9IFxcdTAwM2NMRURfQ09MT1JfSURfQU1CRVJcXHUwMDNlO1xcbitcXHRcXHRcXHRcXHRmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9MQU47XFxuK1xcdFxcdFxcdFxcdGRlZmF1bHQtc3RhdGUgPSBcXFwia2VlcFxcXCI7XFxuK1xcdFxcdFxcdH07XFxuK1xcbitcXHRcXHRcXHRsZWRAMiB7XFxuK1xcdFxcdFxcdFxcdHJlZyA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rXFx0XFx0XFx0XFx0Y29sb3IgPSBcXHUwMDNjTEVEX0NPTE9SX0lEX0dSRUVOXFx1MDAzZTtcXG4rXFx0XFx0XFx0XFx0ZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fTEFOO1xcbitcXHRcXHRcXHRcXHRkZWZhdWx0LXN0YXRlID0gXFxcImtlZXBcXFwiO1xcbitcXHRcXHRcXHR9O1xcbitcXHRcXHR9O1xcbitcXHR9O1xcbit9O1xcbitcXG4gXFx1MDAyNm1kaW8xIHtcXG4gXFx0cmdtaWlfcGh5OiBldGhlcm5ldC1waHlAMyB7XFxuIFxcdFxcdGNvbXBhdGlibGUgPSBcXFwiZXRoZXJuZXQtcGh5LWllZWU4MDIuMy1jMjJcXFwiO1xcbkBAIC0zNTAsNiArMzkxLDI1IEBAIHJnbWlpX3BoeTogZXRoZXJuZXQtcGh5QDMge1xcbiBcXHRcXHRyZXNldC1ncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzQgUktfUEMwIEdQSU9fQUNUSVZFX0xPV1xcdTAwM2U7XFxuIFxcdFxcdHJ4LWludGVybmFsLWRlbGF5LXBzID0gXFx1MDAzYzE1MDBcXHUwMDNlO1xcbiBcXHRcXHR0eC1pbnRlcm5hbC1kZWxheS1wcyA9IFxcdTAwM2MxNTAwXFx1MDAzZTtcXG4rXFxuK1xcdFxcdGxlZHMge1xcbitcXHRcXHRcXHQjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rXFx0XFx0XFx0I3NpemUtY2VsbHMgPSBcXHUwMDNjMFxcdTAwM2U7XFxuK1xcbitcXHRcXHRcXHRsZWRAMSB7XFxuK1xcdFxcdFxcdFxcdHJlZyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rXFx0XFx0XFx0XFx0Y29sb3IgPSBcXHUwMDNjTEVEX0NPTE9SX0lEX0FNQkVSXFx1MDAzZTtcXG4rXFx0XFx0XFx0XFx0ZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fV0FOO1xcbitcXHRcXHRcXHRcXHRkZWZhdWx0LXN0YXRlID0gXFxcImtlZXBcXFwiO1xcbitcXHRcXHRcXHR9O1xcbitcXG4rXFx0XFx0XFx0bGVkQDIge1xcbitcXHRcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMlxcdTAwM2U7XFxuK1xcdFxcdFxcdFxcdGNvbG9yID0gXFx1MDAzY0xFRF9DT0xPUl9JRF9HUkVFTlxcdTAwM2U7XFxuK1xcdFxcdFxcdFxcdGZ1bmN0aW9uID0gTEVEX0ZVTkNUSU9OX1dBTjtcXG4rXFx0XFx0XFx0XFx0ZGVmYXVsdC1zdGF0ZSA9IFxcXCJrZWVwXFxcIjtcXG4rXFx0XFx0XFx0fTtcXG4rXFx0XFx0fTtcXG4gXFx0fTtcXG4gfTtcXG4gXFxuQEAgLTU4NiwzICs2NDYsMTMgQEAgXFx1MDAyNnhpbjMyayB7XFxuIFxcdHBpbmN0cmwtbmFtZXMgPSBcXFwiZGVmYXVsdFxcXCI7XFxuIFxcdHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2Y2xrMzJrX291dDFcXHUwMDNlO1xcbiB9O1xcbitcXG4rXFx1MDAyNnhwY3Mge1xcbitcXHRzdGF0dXMgPSBcXFwib2theVxcXCI7XFxuK1xcdHBoeXMgPSBcXHUwMDNjXFx1MDAyNmNvbWJwaHkyIFBIWV9UWVBFX1NHTUlJXFx1MDAzZTtcXG4rXFx0cGh5LW5hbWVzID0gXFxcInNlcmRlc1xcXCI7XFxuK307XFxuK1xcbitcXHUwMDI2eHBjc19taWkwIHtcXG4rXFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbit9O1xcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaVxcbmluZGV4IDNiYzY1M2YwMjdmMWYuLjk4OWUxNjRjMGViMzkgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaVxcbisrKyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2lcXG5AQCAtMTEwLDYgKzExMCw1MSBAQCBzYXRhMDogc2F0YUBmYzAwMDAwMCB7XFxuIFxcdFxcdHN0YXR1cyA9IFxcXCJkaXNhYmxlZFxcXCI7XFxuIFxcdH07XFxuIFxcbitcXHR4cGNzOiBwY3NAZmRhMDAwMDAge1xcbitcXHRcXHRjb21wYXRpYmxlID0gXFxcInJvY2tjaGlwLHJrMzU2OC14cGNzXFxcIjtcXG4rXFx0XFx0I2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuK1xcdFxcdCNzaXplLWNlbGxzID0gXFx1MDAzYzBcXHUwMDNlO1xcbitcXHRcXHRyZWcgPSBcXHUwMDNjMHgwIDB4ZmRhMDAwMDAgMHgwIDB4MjAwMDAwXFx1MDAzZTtcXG4rXFx0XFx0Y2xvY2tzID0gXFx1MDAzY1xcdTAwMjZjcnUgUENMS19YUENTXFx1MDAzZSwgXFx1MDAzY1xcdTAwMjZjcnUgQ0xLX1hQQ1NfRUVFXFx1MDAzZTtcXG4rXFx0XFx0Y2xvY2stbmFtZXMgPSBcXFwiY3NyXFxcIiwgXFxcImVlZVxcXCI7XFxuK1xcdFxcdHBvd2VyLWRvbWFpbnMgPSBcXHUwMDNjXFx1MDAyNnBvd2VyIFJLMzU2OF9QRF9QSVBFXFx1MDAzZTtcXG4rXFx0XFx0c3RhdHVzID0gXFxcImRpc2FibGVkXFxcIjtcXG4rXFxuK1xcdFxcdHhwY3NfbWlpMDogcGNzLW1paUAwIHtcXG4rXFx0XFx0XFx0cmVnID0gXFx1MDAzYzBcXHUwMDNlO1xcbitcXHRcXHRcXHRzdGF0dXMgPSBcXFwiZGlzYWJsZWRcXFwiO1xcbitcXHRcXHR9O1xcbitcXG4rXFx0XFx0eHBjc19taWkxOiBwY3MtbWlpQDEge1xcbitcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMVxcdTAwM2U7XFxuK1xcdFxcdFxcdHN0YXR1cyA9IFxcXCJkaXNhYmxlZFxcXCI7XFxuK1xcdFxcdH07XFxuK1xcbitcXHRcXHR4cGNzX21paTI6IHBjcy1taWlAMiB7XFxuK1xcdFxcdFxcdHJlZyA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rXFx0XFx0XFx0c3RhdHVzID0gXFxcImRpc2FibGVkXFxcIjtcXG4rXFx0XFx0fTtcXG4rXFxuK1xcdFxcdHhwY3NfbWlpMzogcGNzLW1paUAzIHtcXG4rXFx0XFx0XFx0cmVnID0gXFx1MDAzYzNcXHUwMDNlO1xcbitcXHRcXHRcXHRzdGF0dXMgPSBcXFwiZGlzYWJsZWRcXFwiO1xcbitcXHRcXHR9O1xcbitcXHR9O1xcbitcXG4rXFx0eHBjc19nbWFjMF9jbGs6IHhwY3MtZ21hYzAtY2xvY2sge1xcbitcXHRcXHRjb21wYXRpYmxlID0gXFxcImZpeGVkLWNsb2NrXFxcIjtcXG4rXFx0XFx0Y2xvY2stZnJlcXVlbmN5ID0gXFx1MDAzYzEyNTAwMDAwMFxcdTAwM2U7XFxuK1xcdFxcdGNsb2NrLW91dHB1dC1uYW1lcyA9IFxcXCJjbGtfZ21hYzBfeHBjc19taWlcXFwiO1xcbitcXHRcXHQjY2xvY2stY2VsbHMgPSBcXHUwMDNjMFxcdTAwM2U7XFxuK1xcdH07XFxuK1xcbitcXHR4cGNzX2dtYWMxX2NsazogeHBjcy1nbWFjMS1jbG9jayB7XFxuK1xcdFxcdGNvbXBhdGlibGUgPSBcXFwiZml4ZWQtY2xvY2tcXFwiO1xcbitcXHRcXHRjbG9jay1mcmVxdWVuY3kgPSBcXHUwMDNjMTI1MDAwMDAwXFx1MDAzZTtcXG4rXFx0XFx0Y2xvY2stb3V0cHV0LW5hbWVzID0gXFxcImNsa19nbWFjMV94cGNzX21paVxcXCI7XFxuK1xcdFxcdCNjbG9jay1jZWxscyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4rXFx0fTtcXG4rXFxuIFxcdHBpcGVfcGh5X2dyZjA6IHN5c2NvbkBmZGM3MDAwMCB7XFxuIFxcdFxcdGNvbXBhdGlibGUgPSBcXFwicm9ja2NoaXAscmszNTY4LXBpcGUtcGh5LWdyZlxcXCIsIFxcXCJzeXNjb25cXFwiO1xcbiBcXHRcXHRyZWcgPSBcXHUwMDNjMHgwIDB4ZmRjNzAwMDAgMHgwIDB4MTAwMFxcdTAwM2U7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXFxuaW5kZXggZTNkZDVhZGRhNWFjYS4uNTA4OGFjYzA2OTgyZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1xcbkBAIC0xNzAsNiArMTcwLDcgQEAgY29uZmlnIERXTUFDX1JPQ0tDSElQXFxuIFxcdGRlZmF1bHQgQVJDSF9ST0NLQ0hJUFxcbiBcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1JPQ0tDSElQIHx8IENPTVBJTEVfVEVTVClcXG4gXFx0c2VsZWN0IE1GRF9TWVNDT05cXG4rXFx0c2VsZWN0IFBDU19YUENTX1JPQ0tDSElQXFxuIFxcdGhlbHBcXG4gXFx0ICBTdXBwb3J0IGZvciBFdGhlcm5ldCBjb250cm9sbGVyIG9uIFJvY2tjaGlwIFJLMzI4OCBTb0MuXFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xcbmluZGV4IGY1ZjlmYTY3ZWNkNzcuLmZkNWYwMWM4OTQxYzEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcXG5AQCAtNjAzLDEzICs2MDMsNDcgQEAgc3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuIFxcdHBsYXQtXFx1MDAzZW1kaW9fYnVzX2RhdGEtXFx1MDAzZW5lZWRzX3Jlc2V0ID0gdHJ1ZTtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBpbnRlbF9tZ2JlX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4re1xcbitcXHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZGV2bm9kZSwgKnBjc25vZGU7XFxuK1xcdHN0cnVjdCBkd194cGNzICp4cGNzID0gTlVMTDtcXG4rXFx0aW50IGFkZHI7XFxuK1xcbitcXHRkZXZub2RlID0gZGV2X2Z3bm9kZShwcml2LVxcdTAwM2VkZXZpY2UpO1xcbitcXG4rXFx0aWYgKGZ3bm9kZV9wcm9wZXJ0eV9wcmVzZW50KGRldm5vZGUsIFxcXCJwY3MtaGFuZGxlXFxcIikpIHtcXG4rXFx0XFx0cGNzbm9kZSA9IGZ3bm9kZV9maW5kX3JlZmVyZW5jZShkZXZub2RlLCBcXFwicGNzLWhhbmRsZVxcXCIsIDApO1xcbitcXHRcXHR4cGNzID0geHBjc19jcmVhdGVfZndub2RlKHBjc25vZGUpO1xcbitcXHRcXHRmd25vZGVfaGFuZGxlX3B1dChwY3Nub2RlKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0YWRkciA9IGZmcyhwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VtZGlvX2J1c19kYXRhLVxcdTAwM2VwY3NfbWFzaykgLSAxO1xcbitcXHRcXHR4cGNzID0geHBjc19jcmVhdGVfbWRpb2Rldihwcml2LVxcdTAwM2VtaWksIGFkZHIpO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoSVNfRVJSKHhwY3MpKVxcbitcXHRcXHRyZXR1cm4gUFRSX0VSUih4cGNzKTtcXG4rXFxuK1xcdHhwY3NfY29uZmlnX2VlZV9tdWx0X2ZhY3QoeHBjcywgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlbXVsdF9mYWN0XzEwMG5zKTtcXG4rXFxuK1xcdHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzID0geHBjcztcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIGludGVsX21nYmVfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbit7XFxuK1xcdGlmICghcHJpdi1cXHUwMDNlaHctXFx1MDAzZXhwY3MpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdHhwY3NfZGVzdHJveShwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcyk7XFxuK1xcdHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzID0gTlVMTDtcXG4rfVxcbitcXG4gc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqaW50ZWxfbWdiZV9zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuIHtcXG4tXFx0LyogcGxhdC1cXHUwMDNlbWRpb19idXNfZGF0YS1cXHUwMDNlaGFzX3hwY3MgaGFzIGJlZW4gc2V0IHRydWUsIHNvIHRoZXJlXFxuLVxcdCAqIHNob3VsZCBhbHdheXMgYmUgYW4gWFBDUy4gVGhlIG9yaWdpbmFsIGNvZGUgd291bGQgYWx3YXlzXFxuLVxcdCAqIHJldHVybiB0aGlzIGlmIHByZXNlbnQuXFxuLVxcdCAqL1xcbitcXHRpZiAoIXByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzKVxcbitcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFxuIFxcdHJldHVybiB4cGNzX3RvX3BoeWxpbmtfcGNzKHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzKTtcXG4gfVxcbiBcXG5AQCAtNzMzLDYgKzc2Nyw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfbWdiZV9jb21tb25fZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gXFx0ICAgIHBsYXQtXFx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCkge1xcbiBcXHRcXHRwbGF0LVxcdTAwM2VtZGlvX2J1c19kYXRhLVxcdTAwM2VwY3NfbWFzayA9IEJJVF9VMzIoSU5URUxfTUdCRV9YUENTX0FERFIpO1xcbiBcXHRcXHRwbGF0LVxcdTAwM2VkZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XFxuK1xcdFxcdHBsYXQtXFx1MDAzZXBjc19pbml0ID0gaW50ZWxfbWdiZV9wY3NfaW5pdDtcXG4rXFx0XFx0cGxhdC1cXHUwMDNlcGNzX2V4aXQgPSBpbnRlbF9tZ2JlX3Bjc19leGl0O1xcbiBcXHRcXHRwbGF0LVxcdTAwM2VzZWxlY3RfcGNzID0gaW50ZWxfbWdiZV9zZWxlY3RfcGNzO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmNcXG5pbmRleCAxOWYzNGUxOGJmZWYyLi45YWYzMmMyNmY5YzE0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguY1xcbkBAIC04MSw4ICs4MSwxMSBAQCBzdGF0aWMgaW50IHJlbmVzYXNfZ21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIFxcbiBzdGF0aWMgdm9pZCByZW5lc2FzX2dtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiB7XFxuLVxcdGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpXFxuLVxcdFxcdG1paWNfZGVzdHJveShwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpO1xcbitcXHRpZiAoIXByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcylcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0bWlpY19kZXN0cm95KHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3Bjcyk7XFxuK1xcdHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcyA9IE5VTEw7XFxuIH1cXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJlbmVzYXNfZ21hY19zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmNcXG5pbmRleCA4ZDcwNDJlNjg5MjYxLi5lNDdjYTFiZWM1YjhiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jXFxuQEAgLTIwLDYgKzIwLDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RlbGF5LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tZmQvc3lzY29uLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWdtYXAuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcG1fcnVudGltZS5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcInN0bW1hY19wbGF0Zm9ybS5oXFxcIlxcbkBAIC00Nyw2ICs0OCw3IEBAIHN0cnVjdCBya19nbWFjX29wcyB7XFxuIFxcdHZvaWQgKCpzZXRfdG9fcmdtaWkpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2LFxcbiBcXHRcXHRcXHQgICAgIGludCB0eF9kZWxheSwgaW50IHJ4X2RlbGF5KTtcXG4gXFx0dm9pZCAoKnNldF90b19ybWlpKShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdik7XFxuK1xcdHZvaWQgKCpzZXRfdG9fc2dtaWkpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KTtcXG4gXFx0aW50ICgqc2V0X3NwZWVkKShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdixcXG4gXFx0XFx0XFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsIGludCBzcGVlZCk7XFxuIFxcdHZvaWQgKCppbnRlZ3JhdGVkX3BoeV9wb3dlcnVwKShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdik7XFxuQEAgLTYzLDYgKzY1LDcgQEAgc3RydWN0IHJrX2dtYWNfb3BzIHtcXG4gXFx0Ym9vbCBjbG9ja19ncmZfcmVnX2luX3BocDtcXG4gXFx0Ym9vbCBzdXBwb3J0c19yZ21paTtcXG4gXFx0Ym9vbCBzdXBwb3J0c19ybWlpO1xcbitcXHRib29sIHN1cHBvcnRzX3NnbWlpO1xcbiBcXHRib29sIHBocF9ncmZfcmVxdWlyZWQ7XFxuIFxcdGJvb2wgcmVnc192YWxpZDtcXG4gXFx0dTMyIHJlZ3NbXTtcXG5AQCAtOTgsNiArMTAxLDcgQEAgc3RydWN0IHJrX3ByaXZfZGF0YSB7XFxuIFxcdGJvb2wgaW50ZWdyYXRlZF9waHk7XFxuIFxcdGJvb2wgc3VwcG9ydHNfcmdtaWk7XFxuIFxcdGJvb2wgc3VwcG9ydHNfcm1paTtcXG4rXFx0Ym9vbCBzdXBwb3J0c19zZ21paTtcXG4gXFxuIFxcdHN0cnVjdCBjbGtfYnVsa19kYXRhICpjbGtzO1xcbiBcXHRpbnQgbnVtX2Nsa3M7XFxuQEAgLTgwOSw2ICs4MTMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJrX2dtYWNfb3BzIHJrMzUyOF9vcHMgPSB7XFxuICNkZWZpbmUgUkszNTY4X0dSRl9HTUFDMV9DT04xXFx0XFx0MHgwMzhjXFxuIFxcbiAvKiBSSzM1NjhfR1JGX0dNQUMwX0NPTjEgXFx1MDAyNlxcdTAwMjYgUkszNTY4X0dSRl9HTUFDMV9DT04xICovXFxuKyNkZWZpbmUgUkszNTY4X0dNQUNfTU9ERV9STUlJX1JHTUlJXFx0XFx0R1JGX0NMUl9CSVQoNylcXG4rI2RlZmluZSBSSzM1NjhfR01BQ19NT0RFX1NHTUlJX1FTR01JSVxcdFxcdEdSRl9CSVQoNylcXG4gI2RlZmluZSBSSzM1NjhfR01BQ19GTE9XX0NUUkxcXHRcXHRcXHRHUkZfQklUKDMpXFxuICNkZWZpbmUgUkszNTY4X0dNQUNfRkxPV19DVFJMX0NMUlxcdFxcdEdSRl9DTFJfQklUKDMpXFxuICNkZWZpbmUgUkszNTY4X0dNQUNfUlhDTEtfRExZX0VOQUJMRVxcdFxcdEdSRl9CSVQoMSlcXG5AQCAtODUxLDE4ICs4NTcsMzIgQEAgc3RhdGljIHZvaWQgcmszNTY4X3NldF90b19yZ21paShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdixcXG4gXFx0XFx0ICAgICBSSzM1NjhfR01BQ19DTEtfVFhfRExfQ0ZHKHR4X2RlbGF5KSk7XFxuIFxcbiBcXHRyZWdtYXBfd3JpdGUoYnNwX3ByaXYtXFx1MDAzZWdyZiwgY29uMSxcXG4rXFx0XFx0ICAgICBSSzM1NjhfR01BQ19NT0RFX1JNSUlfUkdNSUkgfFxcbiBcXHRcXHQgICAgIFJLMzU2OF9HTUFDX1JYQ0xLX0RMWV9FTkFCTEUgfFxcbiBcXHRcXHQgICAgIFJLMzU2OF9HTUFDX1RYQ0xLX0RMWV9FTkFCTEUpO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCByazM1Njhfc2V0X3RvX3NnbWlpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxcbit7XFxuK1xcdHUzMiBjb24xO1xcbitcXG4rXFx0Y29uMSA9IChic3BfcHJpdi1cXHUwMDNlaWQgPT0gMSkgPyBSSzM1NjhfR1JGX0dNQUMxX0NPTjEgOlxcbitcXHRcXHRcXHRcXHQgICAgIFJLMzU2OF9HUkZfR01BQzBfQ09OMTtcXG4rXFxuK1xcdHJlZ21hcF93cml0ZShic3BfcHJpdi1cXHUwMDNlZ3JmLCBjb24xLCBSSzM1NjhfR01BQ19NT0RFX1NHTUlJX1FTR01JSSk7XFxuK31cXG4rXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmtfZ21hY19vcHMgcmszNTY4X29wcyA9IHtcXG4gXFx0LmluaXQgPSByazM1NjhfaW5pdCxcXG4gXFx0LnNldF90b19yZ21paSA9IHJrMzU2OF9zZXRfdG9fcmdtaWksXFxuK1xcdC5zZXRfdG9fc2dtaWkgPSByazM1Njhfc2V0X3RvX3NnbWlpLFxcbitcXG4gXFx0LnNldF9zcGVlZCA9IHJrX3NldF9jbGtfbWFjX3NwZWVkLFxcbiBcXG4gXFx0LmdtYWNfcGh5X2ludGZfc2VsX21hc2sgPSBHRU5NQVNLX1UxNig2LCA0KSxcXG4gXFxuIFxcdC5zdXBwb3J0c19ybWlpID0gdHJ1ZSxcXG4rXFx0LnN1cHBvcnRzX3NnbWlpID0gdHJ1ZSxcXG4gXFxuIFxcdC5yZWdzX3ZhbGlkID0gdHJ1ZSxcXG4gXFx0LnJlZ3MgPSB7XFxuQEAgLTEyMDgsNiArMTIyOCw0MyBAQCBzdGF0aWMgdm9pZCBya19waHlfcG93ZXJkb3duKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxcbiBcXHRcXHRkZXZfZXJyKGJzcF9wcml2LVxcdTAwM2VkZXYsIFxcXCJmYWlsIHRvIGRpc2FibGUgcGh5LXN1cHBseVxcXFxuXFxcIik7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgcmtfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbit7XFxuK1xcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBwcml2LVxcdTAwM2VkZXZpY2UtXFx1MDAzZW9mX25vZGU7XFxuK1xcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25vZGU7XFxuK1xcdHN0cnVjdCBkd194cGNzICp4cGNzO1xcbitcXG4rXFx0cGNzX25vZGUgPSBvZl9wYXJzZV9waGFuZGxlKG5wLCBcXFwicGNzLWhhbmRsZVxcXCIsIDApO1xcbitcXHRpZiAoIXBjc19ub2RlKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuK1xcdHhwY3MgPSB4cGNzX3JrX2NyZWF0ZShwcml2LVxcdTAwM2VkZXZpY2UsIHBjc19ub2RlKTtcXG4rXFx0b2Zfbm9kZV9wdXQocGNzX25vZGUpO1xcbitcXHRpZiAoSVNfRVJSKHhwY3MpKVxcbitcXHRcXHRyZXR1cm4gUFRSX0VSUih4cGNzKTtcXG4rXFxuK1xcdHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzID0geHBjcztcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHJrX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4re1xcbitcXHRpZiAoIXByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHR4cGNzX2Rlc3Ryb3kocHJpdi1cXHUwMDNlaHctXFx1MDAzZXhwY3MpO1xcbitcXHRwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcyA9IE5VTEw7XFxuK31cXG4rXFxuK3N0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJrX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbitcXHRcXHRcXHRcXHRcXHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4re1xcbitcXHRpZiAoIXByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzKVxcbitcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFxuK1xcdHJldHVybiB4cGNzX3RvX3BoeWxpbmtfcGNzKHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzKTtcXG4rfVxcbitcXG4gc3RhdGljIHN0cnVjdCBya19wcml2X2RhdGEgKnJrX2dtYWNfc2V0dXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG4gXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQsXFxuIFxcdFxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHJrX2dtYWNfb3BzICpvcHMpXFxuQEAgLTEzMzAsNiArMTM4Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgcmtfcHJpdl9kYXRhICpya19nbWFjX3NldHVwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuIFxcbiBcXHRic3BfcHJpdi1cXHUwMDNlc3VwcG9ydHNfcmdtaWkgPSBvcHMtXFx1MDAzZXN1cHBvcnRzX3JnbWlpIHx8ICEhb3BzLVxcdTAwM2VzZXRfdG9fcmdtaWk7XFxuIFxcdGJzcF9wcml2LVxcdTAwM2VzdXBwb3J0c19ybWlpID0gb3BzLVxcdTAwM2VzdXBwb3J0c19ybWlpIHx8ICEhb3BzLVxcdTAwM2VzZXRfdG9fcm1paTtcXG4rXFx0YnNwX3ByaXYtXFx1MDAzZXN1cHBvcnRzX3NnbWlpID0gb3BzLVxcdTAwM2VzdXBwb3J0c19zZ21paSB8fCAhIW9wcy1cXHUwMDNlc2V0X3RvX3NnbWlpO1xcbiBcXG4gXFx0aWYgKG9wcy1cXHUwMDNlaW5pdCkge1xcbiBcXHRcXHRyZXQgPSBvcHMtXFx1MDAzZWluaXQoYnNwX3ByaXYpO1xcbkBAIC0xMzYxLDYgKzE0MTksMTAgQEAgc3RhdGljIGludCBya19nbWFjX2NoZWNrX29wcyhzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcXG4gXFx0XFx0aWYgKCFic3BfcHJpdi1cXHUwMDNlc3VwcG9ydHNfcm1paSlcXG4gXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdFxcdGJyZWFrO1xcbitcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG4rXFx0XFx0aWYgKCFic3BfcHJpdi1cXHUwMDNlc3VwcG9ydHNfc2dtaWkpXFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRicmVhaztcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0ZGV2X2Vycihic3BfcHJpdi1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXFwidW5zdXBwb3J0ZWQgaW50ZXJmYWNlICVkXFxcIiwgYnNwX3ByaXYtXFx1MDAzZXBoeV9pZmFjZSk7XFxuQEAgLTEzNzksMTYgKzE0NDEsMTkgQEAgc3RhdGljIGludCBya19nbWFjX3Bvd2VydXAoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbitcXHRyZXQgPSBnbWFjX2Nsa19lbmFibGUoYnNwX3ByaXYsIHRydWUpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0aWYgKGJzcF9wcml2LVxcdTAwM2VwaHlfaWZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKVxcbitcXHRcXHRnb3RvIHNldF9tb2RlO1xcbitcXG4gXFx0cmV0ID0gcmtfZ2V0X3BoeV9pbnRmX3NlbChic3BfcHJpdi1cXHUwMDNlcGh5X2lmYWNlKTtcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuK1xcdFxcdGdvdG8gY2xrX2Rpc2FibGU7XFxuIFxcbiBcXHRpbnRmID0gcmV0O1xcbiBcXG4tXFx0cmV0ID0gZ21hY19jbGtfZW5hYmxlKGJzcF9wcml2LCB0cnVlKTtcXG4tXFx0aWYgKHJldClcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4tXFxuIFxcdGlmIChic3BfcHJpdi1cXHUwMDNlZ21hY19waHlfaW50Zl9zZWxfbWFzayB8fFxcbiBcXHQgICAgYnNwX3ByaXYtXFx1MDAzZWdtYWNfcm1paV9tb2RlX21hc2spIHtcXG4gXFx0XFx0LyogSWYgZGVmaW5lZCwgZW5jb2RlIHRoZSBwaHlfaW50Zl9zZWwgdmFsdWUgKi9cXG5AQCAtMTM5OSwxMCArMTQ2NCw4IEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxcbiBcXHRcXHRcXHRcXHQgICAgICBic3BfcHJpdi1cXHUwMDNlZ21hY19ybWlpX21vZGVfbWFzayk7XFxuIFxcbiBcXHRcXHRyZXQgPSBya193cml0ZV9nbWFjX2dyZl9yZWcoYnNwX3ByaXYsIHZhbCk7XFxuLVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLVxcdFxcdFxcdGdtYWNfY2xrX2VuYWJsZShic3BfcHJpdiwgZmFsc2UpO1xcbi1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi1cXHRcXHR9XFxuK1xcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHRnb3RvIGNsa19kaXNhYmxlO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoYnNwX3ByaXYtXFx1MDAzZWNsb2NrLnJtaWlfbW9kZV9tYXNrKSB7XFxuQEAgLTE0MTAsMTMgKzE0NzMsMTIgQEAgc3RhdGljIGludCBya19nbWFjX3Bvd2VydXAoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpXFxuIFxcdFxcdFxcdFxcdCAgICAgYnNwX3ByaXYtXFx1MDAzZWNsb2NrLnJtaWlfbW9kZV9tYXNrKTtcXG4gXFxuIFxcdFxcdHJldCA9IHJrX3dyaXRlX2Nsb2NrX2dyZl9yZWcoYnNwX3ByaXYsIHZhbCk7XFxuLVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLVxcdFxcdFxcdGdtYWNfY2xrX2VuYWJsZShic3BfcHJpdiwgZmFsc2UpO1xcbi1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi1cXHRcXHR9XFxuK1xcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHRnb3RvIGNsa19kaXNhYmxlO1xcbiBcXHR9XFxuIFxcbi1cXHQvKnJtaWkgb3IgcmdtaWkqL1xcbitzZXRfbW9kZTpcXG4rXFx0Lyogcm1paSwgcmdtaWksIHNnbWlpICovXFxuIFxcdHN3aXRjaCAoYnNwX3ByaXYtXFx1MDAzZXBoeV9pZmFjZSkge1xcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcXG4gXFx0XFx0ZGV2X2luZm8oZGV2LCBcXFwiaW5pdCBmb3IgUkdNSUlcXFxcblxcXCIpO1xcbkBAIC0xNDQ3LDE1ICsxNTA5LDIwIEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxcbiBcXHRcXHRpZiAoYnNwX3ByaXYtXFx1MDAzZW9wcy1cXHUwMDNlc2V0X3RvX3JtaWkpXFxuIFxcdFxcdFxcdGJzcF9wcml2LVxcdTAwM2VvcHMtXFx1MDAzZXNldF90b19ybWlpKGJzcF9wcml2KTtcXG4gXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbitcXHRcXHRkZXZfaW5mbyhkZXYsIFxcXCJpbml0IGZvciBTR01JSVxcXFxuXFxcIik7XFxuK1xcdFxcdGlmIChic3BfcHJpdi1cXHUwMDNlb3BzLVxcdTAwM2VzZXRfdG9fc2dtaWkpXFxuK1xcdFxcdFxcdGJzcF9wcml2LVxcdTAwM2VvcHMtXFx1MDAzZXNldF90b19zZ21paShic3BfcHJpdik7XFxuK1xcdFxcdGJyZWFrO1xcbiBcXHRkZWZhdWx0OlxcbiBcXHRcXHRkZXZfZXJyKGRldiwgXFxcIk5PIGludGVyZmFjZSBkZWZpbmVkIVxcXFxuXFxcIik7XFxuK1xcdFxcdHJldCA9IC1FSU5WQUw7XFxuK1xcdFxcdGdvdG8gY2xrX2Rpc2FibGU7XFxuIFxcdH1cXG4gXFxuIFxcdHJldCA9IHJrX3BoeV9wb3dlcnVwKGJzcF9wcml2KTtcXG4tXFx0aWYgKHJldCkge1xcbi1cXHRcXHRnbWFjX2Nsa19lbmFibGUoYnNwX3ByaXYsIGZhbHNlKTtcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4tXFx0fVxcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIGNsa19kaXNhYmxlO1xcbiBcXG4gXFx0cG1fcnVudGltZV9nZXRfc3luYyhkZXYpO1xcbiBcXG5AQCAtMTQ2Myw2ICsxNTMwLDEwIEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxcbiBcXHRcXHRic3BfcHJpdi1cXHUwMDNlb3BzLVxcdTAwM2VpbnRlZ3JhdGVkX3BoeV9wb3dlcnVwKGJzcF9wcml2KTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbitcXG4rY2xrX2Rpc2FibGU6XFxuK1xcdGdtYWNfY2xrX2VuYWJsZShic3BfcHJpdiwgZmFsc2UpO1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBya19nbWFjX3Bvd2VyZG93bihzdHJ1Y3QgcmtfcHJpdl9kYXRhICpnbWFjKVxcbkBAIC0xNDg2LDYgKzE1NTcsOSBAQCBzdGF0aWMgdm9pZCBya19nZXRfaW50ZXJmYWNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgKmJzcF9wcml2LFxcbiBcXG4gXFx0aWYgKHJrLVxcdTAwM2VzdXBwb3J0c19ybWlpKVxcbiBcXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUksIGludGVyZmFjZXMpO1xcbitcXG4rXFx0aWYgKHJrLVxcdTAwM2VzdXBwb3J0c19zZ21paSlcXG4rXFx0XFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSwgaW50ZXJmYWNlcyk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgcmtfc2V0X2Nsa190eF9yYXRlKHZvaWQgKmJzcF9wcml2Xywgc3RydWN0IGNsayAqY2xrX3R4X2ksXFxuQEAgLTE2MDIsNiArMTY3NiwxNyBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0cGxhdF9kYXQtXFx1MDAzZXN1c3BlbmQgPSBya19nbWFjX3N1c3BlbmQ7XFxuIFxcdHBsYXRfZGF0LVxcdTAwM2VyZXN1bWUgPSBya19nbWFjX3Jlc3VtZTtcXG4gXFxuK1xcdGlmIChwbGF0X2RhdC1cXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHtcXG4rXFx0XFx0LyogU0dNSUkgY2xvY2sgYWx3YXlzIHJ1bnMgYXQgMTI1IE1IeiAqL1xcbitcXHRcXHRwbGF0X2RhdC1cXHUwMDNlc2V0X2Nsa190eF9yYXRlID0gTlVMTDtcXG4rXFxuK1xcdFxcdC8qIFNHTUlJIHJlcXVpcmVzIGEgUENTICovXFxuK1xcdFxcdHBsYXRfZGF0LVxcdTAwM2VkZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XFxuK1xcdFxcdHBsYXRfZGF0LVxcdTAwM2VwY3NfaW5pdCA9IHJrX3Bjc19pbml0O1xcbitcXHRcXHRwbGF0X2RhdC1cXHUwMDNlcGNzX2V4aXQgPSBya19wY3NfZXhpdDtcXG4rXFx0XFx0cGxhdF9kYXQtXFx1MDAzZXNlbGVjdF9wY3MgPSBya19zZWxlY3RfcGNzO1xcbitcXHR9XFxuK1xcbiBcXHRwbGF0X2RhdC1cXHUwMDNlYnNwX3ByaXYgPSBya19nbWFjX3NldHVwKHBkZXYsIHBsYXRfZGF0LCBkYXRhKTtcXG4gXFx0aWYgKElTX0VSUihwbGF0X2RhdC1cXHUwMDNlYnNwX3ByaXYpKVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihwbGF0X2RhdC1cXHUwMDNlYnNwX3ByaXYpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmNcXG5pbmRleCAxMzYzNDk2NWJjMTlhLi4wMWRmNDc3NmVkYjNmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuY1xcbkBAIC0zNSw4ICszNSwxMSBAQCBzdGF0aWMgaW50IHJ6bjFfZHdtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiBcXG4gc3RhdGljIHZvaWQgcnpuMV9kd21hY19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIHtcXG4tXFx0aWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcylcXG4tXFx0XFx0bWlpY19kZXN0cm95KHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3Bjcyk7XFxuK1xcdGlmICghcHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRtaWljX2Rlc3Ryb3kocHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKTtcXG4rXFx0cHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzID0gTlVMTDtcXG4gfVxcbiBcXG4gc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqcnpuMV9kd21hY19zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jXFxuaW5kZXggMWQ3ZjBhNTdkMjg4OS4uNmQ0YmMxZmU4Zjc1MSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmNcXG5AQCAtNTM5LDggKzUzOSwxMSBAQCBzdGF0aWMgaW50IHNvY2ZwZ2FfZHdtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiBcXG4gc3RhdGljIHZvaWQgc29jZnBnYV9kd21hY19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIHtcXG4tXFx0aWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcylcXG4tXFx0XFx0bHlueF9wY3NfZGVzdHJveShwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpO1xcbitcXHRpZiAoIXByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcylcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0bHlueF9wY3NfZGVzdHJveShwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpO1xcbitcXHRwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MgPSBOVUxMO1xcbiB9XFxuIFxcbiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpzb2NmcGdhX2R3bWFjX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uY1xcbmluZGV4IGFmZTk4ZmY1YmRjYjAuLmQyZjc3ZjBjMjIzYTcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmNcXG5AQCAtNDI2LDM2ICs0MjYsMTUgQEAgaW50IHN0bW1hY19tZGlvX3Jlc2V0KHN0cnVjdCBtaWlfYnVzICpidXMpXFxuIGludCBzdG1tYWNfcGNzX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbi1cXHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZGV2bm9kZSwgKnBjc25vZGU7XFxuLVxcdHN0cnVjdCBkd194cGNzICp4cGNzID0gTlVMTDtcXG4tXFx0aW50IGFkZHIsIHJldDtcXG4tXFxuLVxcdGRldm5vZGUgPSBkZXZfZndub2RlKHByaXYtXFx1MDAzZWRldmljZSk7XFxuLVxcbi1cXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGNzX2luaXQpIHtcXG4tXFx0XFx0cmV0ID0gcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGNzX2luaXQocHJpdik7XFxuLVxcdH0gZWxzZSBpZiAoZndub2RlX3Byb3BlcnR5X3ByZXNlbnQoZGV2bm9kZSwgXFxcInBjcy1oYW5kbGVcXFwiKSkge1xcbi1cXHRcXHRwY3Nub2RlID0gZndub2RlX2ZpbmRfcmVmZXJlbmNlKGRldm5vZGUsIFxcXCJwY3MtaGFuZGxlXFxcIiwgMCk7XFxuLVxcdFxcdHhwY3MgPSB4cGNzX2NyZWF0ZV9md25vZGUocGNzbm9kZSk7XFxuLVxcdFxcdGZ3bm9kZV9oYW5kbGVfcHV0KHBjc25vZGUpO1xcbi1cXHRcXHRyZXQgPSBQVFJfRVJSX09SX1pFUk8oeHBjcyk7XFxuLVxcdH0gZWxzZSBpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlbWRpb19idXNfZGF0YSBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHQgICBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VtZGlvX2J1c19kYXRhLVxcdTAwM2VwY3NfbWFzaykge1xcbi1cXHRcXHRhZGRyID0gZmZzKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZW1kaW9fYnVzX2RhdGEtXFx1MDAzZXBjc19tYXNrKSAtIDE7XFxuLVxcdFxcdHhwY3MgPSB4cGNzX2NyZWF0ZV9tZGlvZGV2KHByaXYtXFx1MDAzZW1paSwgYWRkcik7XFxuLVxcdFxcdHJldCA9IFBUUl9FUlJfT1JfWkVSTyh4cGNzKTtcXG4tXFx0fSBlbHNlIHtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdGlmICghcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGNzX2luaXQpXFxuIFxcdFxcdHJldHVybiAwO1xcbi1cXHR9XFxuIFxcbitcXHRyZXQgPSBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VwY3NfaW5pdChwcml2KTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUocHJpdi1cXHUwMDNlZGV2aWNlLCByZXQsIFxcXCJObyB4UENTIGZvdW5kXFxcXG5cXFwiKTtcXG4gXFxuLVxcdGlmICh4cGNzKVxcbi1cXHRcXHR4cGNzX2NvbmZpZ19lZWVfbXVsdF9mYWN0KHhwY3MsIHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZW11bHRfZmFjdF8xMDBucyk7XFxuLVxcbi1cXHRwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcyA9IHhwY3M7XFxuLVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5AQCAtNDYzLDE0ICs0NDIsMTAgQEAgdm9pZCBzdG1tYWNfcGNzX2NsZWFuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbiBcXG4tXFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXBjc19leGl0KVxcbi1cXHRcXHRwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VwY3NfZXhpdChwcml2KTtcXG4tXFxuLVxcdGlmICghcHJpdi1cXHUwMDNlaHctXFx1MDAzZXhwY3MpXFxuK1xcdGlmICghcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGNzX2V4aXQpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdHhwY3NfZGVzdHJveShwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcyk7XFxuLVxcdHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzID0gTlVMTDtcXG4rXFx0cHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGNzX2V4aXQocHJpdik7XFxuIH1cXG4gXFxuIHN0cnVjdCBzdG1tYWNfY2xrX3JhdGUge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnXFxuaW5kZXggZTQxN2ZkNjZmNjYwYS4uODhiYzQwNzkxZTY5ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZ1xcbisrKyBiL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnXFxuQEAgLTEyLDYgKzEyLDI5IEBAIGNvbmZpZyBQQ1NfWFBDU1xcbiBcXHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgZHJpdmVyIGFuZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBTeW5vcHN5c1xcbiBcXHQgIERlc2lnbldhcmUgWFBDUyBjb250cm9sbGVycy5cXG4gXFxuK2lmIFBDU19YUENTXFxuK1xcbitjb25maWcgUENTX1hQQ1NfUExBVEZPUk1cXG4rXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgWFBDUyBjb250cm9sbGVyIHN1cHBvcnRcXFwiXFxuK1xcdGRlZmF1bHQgUENTX1hQQ1NcXG4rXFx0aGVscFxcbitcXHQgIEdlbmVyaWMgRFdYUENTIGRyaXZlciBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgcmVxdWlyZSBhbnlcXG4rXFx0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXFxuK1xcdCAgZGF0YSBmb3Igc2V0dXAuXFxuK1xcbitcXHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXFxuK1xcbitjb25maWcgUENTX1hQQ1NfUk9DS0NISVBcXG4rXFx0dHJpc3RhdGUgXFxcIlJvY2tjaGlwIFhQQ1MgY29udHJvbGxlciBzdXBwb3J0XFxcIlxcbitcXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcXG4rXFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1QpXFxuK1xcdGhlbHBcXG4rXFx0ICBTdXBwb3J0IGZvciBYUENTIGNvbnRyb2xsZXIgb24gUm9ja2NoaXAgUkszNTZ4IFNvQy5cXG4rXFxuK1xcdCAgSWYgeW91IGhhdmUgYSBSb2NrY2hpcCBTb0Mgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxcbitcXG4rZW5kaWYgIyBQQ1NfWFBDU1xcbitcXG4gY29uZmlnIFBDU19MWU5YXFxuIFxcdHRyaXN0YXRlXFxuIFxcdGhlbHBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlIGIvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlXFxuaW5kZXggNGY3OTIwNjE4YjkwMC4uYzgwOWI3Zjk0MmE1MSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGVcXG4rKysgYi9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGVcXG5AQCAtMSwxMCArMSw5IEBAXFxuICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gIyBNYWtlZmlsZSBmb3IgTGludXggUENTIGRyaXZlcnNcXG4gXFxuLXBjc194cGNzLSQoQ09ORklHX1BDU19YUENTKVxcdDo9IHBjcy14cGNzLm8gcGNzLXhwY3MtcGxhdC5vIFxcXFxcXG4tXFx0XFx0XFx0XFx0ICAgcGNzLXhwY3MtbnhwLm8gcGNzLXhwY3Mtd3gub1xcbi1cXG4tb2JqLSQoQ09ORklHX1BDU19YUENTKVxcdFxcdCs9IHBjc194cGNzLm9cXG4rb2JqLSQoQ09ORklHX1BDU19YUENTKSArPSBwY3MteHBjcy5vIHBjcy14cGNzLW54cC5vIHBjcy14cGNzLXd4Lm9cXG4rb2JqLSQoQ09ORklHX1BDU19YUENTX1BMQVRGT1JNKSArPSBwY3MteHBjcy1wbGF0Lm9cXG4rb2JqLSQoQ09ORklHX1BDU19YUENTX1JPQ0tDSElQKSArPSBwY3MteHBjcy1yay5vXFxuIG9iai0kKENPTkZJR19QQ1NfTFlOWClcXHRcXHQrPSBwY3MtbHlueC5vXFxuIG9iai0kKENPTkZJR19QQ1NfTVRLX0xZTlhJKVxcdCs9IHBjcy1tdGstbHlueGkub1xcbiBvYmotJChDT05GSUdfUENTX1JaTjFfTUlJQylcXHQrPSBwY3MtcnpuMS1taWljLm9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNGVmMjBiMDkzZGFkYVxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuY1xcbkBAIC0wLDAgKzEsNTYxIEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKy8qXFxuKyAqIFJvY2tjaGlwIFhQQ1MgcGxhdGZvcm0gZGV2aWNlIGRyaXZlclxcbisgKlxcbisgKiBCYXNlZCBvbiB0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBYUENTIHBsYXRmb3JtIGRyaXZlci5cXG4rICogQ29weXJpZ2h0IChDKSAyMDI0IFNlcmdlIFNlbWluXFxuKyAqXFxuKyAqIEFkYXB0ZWQgZm9yIFJvY2tjaGlwIFNvQ3MsIHdpdGggcmVmZXJlbmNlIHRvIHRoZSBSb2NrY2hpcCBPRU0gZHJpdmVyLlxcbisgKiBDb3B5cmlnaHQgKEMpIDIwMjYgQ29pYSBQcmFudFxcbisgKi9cXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9hdG9taWMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9jbGsuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RldmljZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaW8uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvcG9sbC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbWRpby5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvb2ZfcGxhdGZvcm0uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkvcGh5LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BtX2RvbWFpbi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcG1fcnVudGltZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcHJvcGVydHkuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NpemVzLmhcXHUwMDNlXFxuK1xcbisjaW5jbHVkZSBcXFwicGNzLXhwY3MuaFxcXCJcXG4rXFxuK3N0cnVjdCBkd194cGNzX3JrIHtcXG4rXFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjtcXG4rXFx0c3RydWN0IG1paV9idXMgKmJ1cztcXG4rXFx0dm9pZCBfX2lvbWVtICpyZWdfYmFzZTtcXG4rXFx0c3RydWN0IHBoeSAqc2VyZGVzX3BoeTtcXG4rXFx0c3RydWN0IGNsayAqY3NyX2NsaztcXG4rXFx0c3RydWN0IGNsayAqZWVlX2NsaztcXG4rfTtcXG4rXFxuK3N0YXRpYyBwdHJkaWZmX3QgeHBjc19ya19hZGRyX2Zvcm1hdChpbnQgZGV2LCBpbnQgcmVnKVxcbit7XFxuK1xcdHJldHVybiBGSUVMRF9QUkVQKDB4NzAwMDAsIGRldikgfCBGSUVMRF9QUkVQKDB4ZmZmZiwgcmVnKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX3JlYWRfcmVnKHN0cnVjdCBkd194cGNzX3JrICpweHBjcywgaW50IGRldiwgaW50IHJlZylcXG4re1xcbitcXHRwdHJkaWZmX3QgY3NyO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0Y3NyID0geHBjc19ya19hZGRyX2Zvcm1hdChkZXYsIHJlZyk7XFxuK1xcbitcXHRyZXQgPSBwbV9ydW50aW1lX3Jlc3VtZV9hbmRfZ2V0KFxcdTAwMjZweHBjcy1cXHUwMDNlcGRldi1cXHUwMDNlZGV2KTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldCA9IHJlYWRsKHB4cGNzLVxcdTAwM2VyZWdfYmFzZSArIChjc3IgXFx1MDAzY1xcdTAwM2MgMikpIFxcdTAwMjYgMHhmZmZmO1xcbitcXG4rXFx0cG1fcnVudGltZV9wdXQoXFx1MDAyNnB4cGNzLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYpO1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHhwY3Nfcmtfd3JpdGVfcmVnKHN0cnVjdCBkd194cGNzX3JrICpweHBjcywgaW50IGRldiwgaW50IHJlZywgdTE2IHZhbClcXG4re1xcbitcXHRwdHJkaWZmX3QgY3NyO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0Y3NyID0geHBjc19ya19hZGRyX2Zvcm1hdChkZXYsIHJlZyk7XFxuK1xcbitcXHRyZXQgPSBwbV9ydW50aW1lX3Jlc3VtZV9hbmRfZ2V0KFxcdTAwMjZweHBjcy1cXHUwMDNlcGRldi1cXHUwMDNlZGV2KTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHdyaXRlbCh2YWwsIHB4cGNzLVxcdTAwM2VyZWdfYmFzZSArIChjc3IgXFx1MDAzY1xcdTAwM2MgMikpO1xcbitcXG4rXFx0cG1fcnVudGltZV9wdXQoXFx1MDAyNnB4cGNzLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYpO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rI2RlZmluZSBST0NLQ0hJUF9NTURfTUlJMVxcdDJcXG4rI2RlZmluZSBST0NLQ0hJUF9NTURfTUlJMlxcdDNcXG4rI2RlZmluZSBST0NLQ0hJUF9NTURfTUlJM1xcdDRcXG4rI2RlZmluZSBST0NLQ0hJUF9NTURfUE1BUE1EXFx0NlxcbisjZGVmaW5lIFJPQ0tDSElQX01NRF9NSUlcXHQ3XFxuK1xcbitzdGF0aWMgYm9vbCB4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShpbnQgYWRkcilcXG4re1xcbitcXHRyZXR1cm4gIShhZGRyIFxcdTAwM2MgMCB8fCBhZGRyIFxcdTAwM2UgMyk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgeHBjc19ya19tZGlvX3JlYWRfcmVtYXBwaW5nKGludCBhZGRyLCBpbnQgZGV2LCBpbnQgcmVnKVxcbit7XFxuK1xcdHN3aXRjaCAoZGV2KSB7XFxuK1xcdGNhc2UgTURJT19NTURfUE1BUE1EOlxcbitcXHRcXHRyZXR1cm4gUk9DS0NISVBfTU1EX1BNQVBNRDtcXG4rXFx0Y2FzZSBNRElPX01NRF9WRU5EMjpcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHJldHVybiAtRU5YSU87XFxuK1xcdH1cXG4rXFxuK1xcdC8qIHJlYWQgcmVtYXBwaW5nIHRvIE1JSSBpcyBwZXJmb3JtZWQgYnkgSFcgKi9cXG4rXFx0c3dpdGNoIChhZGRyKSB7XFxuK1xcdGNhc2UgMDpcXG4rXFx0XFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUk7XFxuK1xcdGNhc2UgMTpcXG4rXFx0XFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkxO1xcbitcXHRjYXNlIDI6XFxuK1xcdFxcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMjtcXG4rXFx0Y2FzZSAzOlxcbitcXHRcXHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTM7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXHR9XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgeHBjc19ya19tZGlvX3dyaXRlX3JlbWFwcGluZyhpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZylcXG4re1xcbitcXHRzd2l0Y2ggKGRldikge1xcbitcXHRjYXNlIE1ESU9fTU1EX1BNQVBNRDpcXG4rXFx0XFx0cmV0dXJuIFJPQ0tDSElQX01NRF9QTUFQTUQ7XFxuK1xcdGNhc2UgTURJT19NTURfVkVORDI6XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gLUVOWElPO1xcbitcXHR9XFxuK1xcbitcXHQvKiBXcml0YWJsZSBvbmx5IG9uIE1JSSAqL1xcbitcXHRzd2l0Y2ggKHJlZykge1xcbitcXHRjYXNlIERXX1ZSX01JSV9BTl9DVFJMOlxcbitcXHRjYXNlIERXX1ZSX01JSV9BTl9JTlRSX1NUUzpcXG4rXFx0Y2FzZSBEV19WUl9NSUlfRUVFX01DVFJMMDpcXG4rXFx0Y2FzZSBEV19WUl9NSUlfRUVFX01DVFJMMTpcXG4rXFx0Y2FzZSBEV19WUl9NSUlfRElHX0NUUkwyOlxcbitcXHRcXHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTtcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdH1cXG4rXFxuK1xcdHN3aXRjaCAoYWRkcikge1xcbitcXHRjYXNlIDA6XFxuK1xcdFxcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJO1xcbitcXHRjYXNlIDE6XFxuK1xcdFxcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMTtcXG4rXFx0Y2FzZSAyOlxcbitcXHRcXHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTI7XFxuK1xcdGNhc2UgMzpcXG4rXFx0XFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkzO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFx0fVxcbit9XFxuK1xcbitzdGF0aWMgaW50IHhwY3NfcmtfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWcpXFxuK3tcXG4rXFx0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLVxcdTAwM2Vwcml2O1xcbitcXHRpbnQgZGV2O1xcbitcXG4rXFx0aWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShhZGRyKSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcbitcXHRkZXYgPSB4cGNzX3JrX21kaW9fcmVhZF9yZW1hcHBpbmcoYWRkciwgTURJT19NTURfVkVORDIsIHJlZyk7XFxuK1xcdGlmIChkZXYgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gMHhmZmZmO1xcbitcXG4rXFx0cmV0dXJuIHhwY3NfcmtfcmVhZF9yZWcocHhwY3MsIGRldiwgcmVnKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcXG4re1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtXFx1MDAzZXByaXY7XFxuK1xcdGludCBkZXY7XFxuK1xcbitcXHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuK1xcdGRldiA9IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoYWRkciwgTURJT19NTURfVkVORDIsIHJlZyk7XFxuK1xcdGlmIChkZXYgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHJldHVybiB4cGNzX3JrX3dyaXRlX3JlZyhweHBjcywgZGV2LCByZWcsIHZhbCk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZylcXG4re1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtXFx1MDAzZXByaXY7XFxuK1xcbitcXHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuK1xcdGRldiA9IHhwY3NfcmtfbWRpb19yZWFkX3JlbWFwcGluZyhhZGRyLCBkZXYsIHJlZyk7XFxuK1xcdGlmIChkZXYgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gMHhmZmZmO1xcbitcXG4rXFx0cmV0dXJuIHhwY3NfcmtfcmVhZF9yZWcocHhwY3MsIGRldiwgcmVnKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZywgdTE2IHZhbClcXG4re1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtXFx1MDAzZXByaXY7XFxuK1xcbitcXHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuK1xcdGRldiA9IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoYWRkciwgZGV2LCByZWcpO1xcbitcXHRpZiAoZGV2IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRyZXR1cm4geHBjc19ya193cml0ZV9yZWcocHhwY3MsIGRldiwgcmVnLCB2YWwpO1xcbit9XFxuK1xcbitzdGF0aWMgc3RydWN0IGR3X3hwY3NfcmsgKnhwY3NfcmtfY3JlYXRlX2RhdGEoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4re1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7XFxuK1xcbitcXHRweHBjcyA9IGRldm1fa3phbGxvYyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBzaXplb2YoKnB4cGNzKSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghcHhwY3MpXFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcbitcXG4rXFx0cHhwY3MtXFx1MDAzZXBkZXYgPSBwZGV2O1xcbitcXG4rXFx0ZGV2X3NldF9kcnZkYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHB4cGNzKTtcXG4rXFxuK1xcdHJldHVybiBweHBjcztcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX3NlcmRlc19waHlfaW5pdChzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXFxuK3tcXG4rXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnB4cGNzLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXY7XFxuK1xcbitcXHRweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSA9IGRldm1fcGh5X2dldChkZXYsIFxcXCJzZXJkZXNcXFwiKTtcXG4rXFx0aWYgKElTX0VSUihweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSkpXFxuK1xcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSksXFxuK1xcdFxcdFxcdFxcdFxcdFxcXCJGYWlsZWQgdG8gZ2V0IFNlckRlcyBQSFlcXFxcblxcXCIpO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9mZih2b2lkICpkYXRhKVxcbit7XFxuK1xcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRhdGE7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZweHBjcy1cXHUwMDNlcGRldi1cXHUwMDNlZGV2O1xcbitcXG4rXFx0cGh5X3Bvd2VyX29mZihweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSk7XFxuK1xcdHBoeV9leGl0KHB4cGNzLVxcdTAwM2VzZXJkZXNfcGh5KTtcXG4rXFxuK1xcdGRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgZmFsc2UpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9uKHN0cnVjdCBkd194cGNzX3JrICpweHBjcylcXG4re1xcbitcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cHhwY3MtXFx1MDAzZXBkZXYtXFx1MDAzZWRldjtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIFRoZSBwb3dlciBkb21haW4gaXMgcmVxdWlyZWQgYW5kIG11c3QgYmUgZW5hYmxlZCwgd2hpY2ggYWxsb3dzIHVzIHRvXFxuK1xcdCAqIGR5bmFtaWNhbGx5IHR1cm4gdGhlIENTUiBjbG9jayBvbi9vZmYgdXNpbmcgUE0gd2hpbGUga2VlcGluZyB0aGUgUENTXFxuK1xcdCAqIHBvd2VyZWQgb24uXFxuK1xcdCAqL1xcbitcXHRyZXQgPSBkZXZfcG1fZ2VucGRfcnBtX2Fsd2F5c19vbihkZXYsIHRydWUpO1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIHBvd2VyIG9uIHBvd2VyLWRvbWFpbnNcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHRyZXQgPSBwaHlfaW5pdChweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSk7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gaW5pdCBTZXJEZXMgUEhZXFxcXG5cXFwiKTtcXG4rXFx0XFx0Z290byBwbV9kb21haW47XFxuK1xcdH1cXG4rXFxuK1xcdHJldCA9IHBoeV9wb3dlcl9vbihweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSk7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gcG93ZXIgb24gU2VyRGVzIFBIWVxcXFxuXFxcIik7XFxuK1xcdFxcdGdvdG8gc2VyZGVzX3BoeTtcXG4rXFx0fVxcbitcXG4rXFx0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgeHBjc19ya19zZXJkZXNfcGh5X3Bvd2Vyb2ZmLCBweHBjcyk7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gcmVnaXN0ZXIgZGV2bSBmb3IgU2VyRGVzIFBIWTogJWRcXFxcblxcXCIsIHJldCk7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAwO1xcbitcXG4rc2VyZGVzX3BoeTpcXG4rXFx0cGh5X2V4aXQocHhwY3MtXFx1MDAzZXNlcmRlc19waHkpO1xcbitwbV9kb21haW46XFxuK1xcdGRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgZmFsc2UpO1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9yZXMoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKVxcbit7XFxuK1xcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSBweHBjcy1cXHUwMDNlcGRldjtcXG4rXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4rXFx0c3RydWN0IHJlc291cmNlICpyZXM7XFxuK1xcbitcXHRyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApO1xcbitcXHRpZiAoIXJlcykge1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIk5vIHJlZy1zcGFjZSBmb3VuZFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbitcXHRpZiAocmVzb3VyY2Vfc2l6ZShyZXMpIFxcdTAwM2MgU1pfMk0pIHtcXG4rXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJJbnZhbGlkIHJlZy1zcGFjZSBzaXplXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuK1xcdHB4cGNzLVxcdTAwM2VyZWdfYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJlcyk7XFxuK1xcdGlmIChJU19FUlIocHhwY3MtXFx1MDAzZXJlZ19iYXNlKSkge1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBtYXAgcmVnLXNwYWNlXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIFBUUl9FUlIocHhwY3MtXFx1MDAzZXJlZ19iYXNlKTtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHhwY3NfcmtfZXhpdF9jbGsodm9pZCAqZGF0YSlcXG4re1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBkYXRhO1xcbitcXG4rXFx0Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKHB4cGNzLVxcdTAwM2VlZWVfY2xrKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX2luaXRfY2xrKHN0cnVjdCBkd194cGNzX3JrICpweHBjcylcXG4re1xcbitcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cHhwY3MtXFx1MDAzZXBkZXYtXFx1MDAzZWRldjtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHB4cGNzLVxcdTAwM2Vjc3JfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgXFxcImNzclxcXCIpO1xcbitcXHRpZiAoSVNfRVJSKHB4cGNzLVxcdTAwM2Vjc3JfY2xrKSlcXG4rXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHB4cGNzLVxcdTAwM2Vjc3JfY2xrKSxcXG4rXFx0XFx0XFx0XFx0XFx0IFxcXCJGYWlsZWQgdG8gZ2V0IENTUiBjbG9ja1xcXFxuXFxcIik7XFxuK1xcbitcXHRwbV9ydW50aW1lX3NldF9zdXNwZW5kZWQoZGV2KTtcXG4rXFx0cmV0ID0gZGV2bV9wbV9ydW50aW1lX2VuYWJsZShkZXYpO1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGVuYWJsZSBydW50aW1lLVBNXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0cHhwY3MtXFx1MDAzZWVlZV9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCBcXFwiZWVlXFxcIik7XFxuK1xcdGlmIChJU19FUlIocHhwY3MtXFx1MDAzZWVlZV9jbGspKVxcbitcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHhwY3MtXFx1MDAzZWVlZV9jbGspLFxcbitcXHRcXHRcXHRcXHRcXHQgXFxcIkZhaWxlZCB0byBnZXQgRUVFIGNsb2NrXFxcXG5cXFwiKTtcXG4rXFxuK1xcdHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShweHBjcy1cXHUwMDNlZWVlX2Nsayk7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gZW5hYmxlIEVFRSBjbG9ja1xcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIHhwY3NfcmtfZXhpdF9jbGssIHB4cGNzKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byByZWdpc3RlciBkZXZtIGZvciBFRUUgY2xvY2s6ICVkXFxcXG5cXFwiLCByZXQpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX2luaXRfYnVzKHN0cnVjdCBkd194cGNzX3JrICpweHBjcylcXG4re1xcbitcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cHhwY3MtXFx1MDAzZXBkZXYtXFx1MDAzZWRldjtcXG4rXFx0c3RhdGljIGF0b21pY190IGlkID0gQVRPTUlDX0lOSVQoLTEpO1xcbitcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0YnVzID0gZGV2bV9tZGlvYnVzX2FsbG9jX3NpemUoZGV2LCAwKTtcXG4rXFx0aWYgKCFidXMpXFxuK1xcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4rXFx0YnVzLVxcdTAwM2VuYW1lID0gXFxcIlJvY2tjaGlwIERXIFhQQ1MgTUNJL0FQQjNcXFwiO1xcbitcXHRidXMtXFx1MDAzZXJlYWQgPSB4cGNzX3JrX3JlYWRfYzIyO1xcbitcXHRidXMtXFx1MDAzZXdyaXRlID0geHBjc19ya193cml0ZV9jMjI7XFxuK1xcdGJ1cy1cXHUwMDNlcmVhZF9jNDUgPSB4cGNzX3JrX3JlYWRfYzQ1O1xcbitcXHRidXMtXFx1MDAzZXdyaXRlX2M0NSA9IHhwY3Nfcmtfd3JpdGVfYzQ1O1xcbitcXHRidXMtXFx1MDAzZXBoeV9tYXNrID0gfjA7XFxuK1xcdGJ1cy1cXHUwMDNlcGFyZW50ID0gZGV2O1xcbitcXHRidXMtXFx1MDAzZXByaXYgPSBweHBjcztcXG4rXFxuK1xcdHNucHJpbnRmKGJ1cy1cXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSxcXG4rXFx0XFx0IFxcXCJyb2NrY2hpcF9kd3hwY3MtJXhcXFwiLCBhdG9taWNfaW5jX3JldHVybihcXHUwMDI2aWQpKTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIE1ESU8tYnVzIGhlcmUgc2VydmVzIGFzIGp1c3QgYSBiYWNrLWVuZCBlbmdpbmUgYWJzdHJhY3Rpbmcgb3V0XFxuK1xcdCAqIHRoZSBNRElPIGFuZCBNQ0kvQVBCMyBJTyBpbnRlcmZhY2VzIHV0aWxpemVkIGZvciB0aGUgUm9ja2NoaXAgRFdYUENTIENTUnNcXG4rXFx0ICogYWNjZXNzLlxcbitcXHQgKi9cXG4rXFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBjcmVhdGUgTURJTyBidXNcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHRweHBjcy1cXHUwMDNlYnVzID0gYnVzO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuK3tcXG4rXFx0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cHhwY3MgPSB4cGNzX3JrX2NyZWF0ZV9kYXRhKHBkZXYpO1xcbitcXHRpZiAoSVNfRVJSKHB4cGNzKSlcXG4rXFx0XFx0cmV0dXJuIFBUUl9FUlIocHhwY3MpO1xcbitcXG4rXFx0LypcXG4rXFx0ICogVGhlIFhQQ1MgbWF5IGJlIGF0dGFjaGVkIHRvIGEgcG93ZXIgZG9tYWluIChlLmcuIFBEX1BJUEUpLiBUaGUgZG9tYWluXFxuK1xcdCAqIG11c3QgYmUgcG93ZXJlZCBvbiBiZWZvcmUgYW55IHJlZ2lzdGVyIGFjY2Vzcywgb3RoZXJ3aXNlIHRoZSBTb0Mgd2lsbFxcbitcXHQgKiB0cmlnZ2VyIGEgc3luY2hyb25vdXMgZXh0ZXJuYWwgYWJvcnQgKFNFcnJvcikuXFxuK1xcdCAqXFxuK1xcdCAqIEFjY2Vzc2luZyB0aGUgWFBDUyByZWdpc3RlcnMgYWxzbyByZXF1aXJlcyBhIFRYIGNsb2NrIGZyb20gdGhlIFNlckRlcyxcXG4rXFx0ICogd2hpY2ggaXMgbmVlZGVkIGZvciB0aGUgc29mdCByZXNldC5cXG4rXFx0ICovXFxuK1xcdHJldCA9IHhwY3Nfcmtfc2VyZGVzX3BoeV9pbml0KHB4cGNzKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldCA9IHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9uKHB4cGNzKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldCA9IHhwY3NfcmtfaW5pdF9yZXMocHhwY3MpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0cmV0ID0geHBjc19ya19pbml0X2NsayhweHBjcyk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRyZXQgPSB4cGNzX3JrX2luaXRfYnVzKHB4cGNzKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCB4cGNzX3JrX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbit7XFxuK1xcdC8qXFxuK1xcdCAqIEZvcmNlIHRoZSBkZXZpY2UgaW50byBzdXNwZW5kIHN0YXRlIHRvIGdhdGUgdGhlIENTUiBjbG9jay4gVGhpc1xcbitcXHQgKiBwcmV2ZW50cyBjbG9jayBsZWFrYWdlIGFmdGVyIGRldm0gcmVzb3VyY2VzIGFyZSByZWxlYXNlZC5cXG4rXFx0ICpcXG4rXFx0ICogVGhpcyBpcyBzYWZlIGJlY2F1c2U6XFxuK1xcdCAqICAgMS4gVGhlIGRldmljZSBsaW5rIChETF9GTEFHX0FVVE9SRU1PVkVfQ09OU1VNRVIpIHByZXZlbnRzIHVuYmluZFxcbitcXHQgKiAgICAgIHdoaWxlIGFueSBjb25zdW1lciAoTUFDKSBpcyBzdGlsbCBhdHRhY2hlZC5cXG4rXFx0ICogICAyLiBObyBNRElPIGFjY2VzcyB3aWxsIG9jY3VyIGFmdGVyIHRoaXMgcG9pbnQsIGFzIHRoZSBNQUMgZHJpdmVyXFxuK1xcdCAqICAgICAgaGFzIGFscmVhZHkgYmVlbiB1bmJvdW5kIChvciB3ZSBhcmUgYmVpbmcgcmVtb3ZlZCBiZWNhdXNlIG5vXFxuK1xcdCAqICAgICAgY29uc3VtZXIgZXhpc3RzKS5cXG4rXFx0ICovXFxuK1xcdHBtX3J1bnRpbWVfZm9yY2Vfc3VzcGVuZChcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4rfVxcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgeHBjc19ya19vZl9pZHNbXSA9IHtcXG4rXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJyb2NrY2hpcCxyazM1NjgteHBjc1xcXCIgfSxcXG4rXFx0eyAvKiBzZW50aW5lbCAqLyB9LFxcbit9O1xcbitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB4cGNzX3JrX29mX2lkcyk7XFxuK1xcbitzdHJ1Y3QgZHdfeHBjcyAqeHBjc19ya19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbit7XFxuK1xcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7XFxuK1xcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25wO1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7XFxuK1xcdHN0cnVjdCBkd194cGNzICp4cGNzO1xcbitcXHR1MzIgcG9ydDtcXG4rXFxuK1xcdGlmICghb2ZfZGV2aWNlX2lzX2F2YWlsYWJsZShucCkpXFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9ERVYpO1xcbitcXG4rXFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcXFwicmVnXFxcIiwgXFx1MDAyNnBvcnQpKVxcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG4rXFxuK1xcdGlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoKGludClwb3J0KSlcXG4rXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxuK1xcbitcXHQvKiBUaGUgWFBDUyBwZGV2IGlzIGF0dGFjaGVkIHRvIHRoZSBwYXJlbnQgbm9kZSAqL1xcbitcXHRwY3NfbnAgPSBvZl9nZXRfcGFyZW50KG5wKTtcXG4rXFx0aWYgKCFwY3NfbnApXFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9ERVYpO1xcbitcXG4rXFx0aWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKHBjc19ucCkpIHtcXG4rXFx0XFx0b2Zfbm9kZV9wdXQocGNzX25wKTtcXG4rXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7XFxuK1xcdH1cXG4rXFxuK1xcdGlmICghb2ZfbWF0Y2hfbm9kZSh4cGNzX3JrX29mX2lkcywgcGNzX25wKSkge1xcbitcXHRcXHRvZl9ub2RlX3B1dChwY3NfbnApO1xcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG4rXFx0fVxcbitcXG4rXFx0cGRldiA9IG9mX2ZpbmRfZGV2aWNlX2J5X25vZGUocGNzX25wKTtcXG4rXFx0b2Zfbm9kZV9wdXQocGNzX25wKTtcXG4rXFx0aWYgKCFwZGV2KVxcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRVBST0JFX0RFRkVSKTtcXG4rXFxuK1xcdGRldmljZV9sb2NrKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbitcXHRweHBjcyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbitcXHRpZiAoIXB4cGNzIHx8ICFweHBjcy1cXHUwMDNlYnVzKSB7XFxuK1xcdFxcdGRldmljZV91bmxvY2soXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuK1xcdFxcdHB1dF9kZXZpY2UoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKC1FUFJPQkVfREVGRVIpO1xcbitcXHR9XFxuK1xcbitcXHR4cGNzID0geHBjc19jcmVhdGVfbWRpb2RldihweHBjcy1cXHUwMDNlYnVzLCAoaW50KXBvcnQpO1xcbitcXHRkZXZpY2VfdW5sb2NrKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbitcXHRpZiAoSVNfRVJSKHhwY3MpKSB7XFxuK1xcdFxcdHB1dF9kZXZpY2UoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuK1xcdFxcdHJldHVybiB4cGNzO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoIWRldmljZV9saW5rX2FkZChkZXYsIFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIERMX0ZMQUdfQVVUT1JFTU9WRV9DT05TVU1FUikpIHtcXG4rXFx0XFx0eHBjc19kZXN0cm95KHhwY3MpO1xcbitcXHRcXHRwdXRfZGV2aWNlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcXG4rXFx0fVxcbitcXG4rXFx0cHV0X2RldmljZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4rXFx0cmV0dXJuIHhwY3M7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoeHBjc19ya19jcmVhdGUpO1xcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX3BtX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuK3tcXG4rXFx0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGV2X2dldF9kcnZkYXRhKGRldik7XFxuK1xcbitcXHRjbGtfZGlzYWJsZV91bnByZXBhcmUocHhwY3MtXFx1MDAzZWNzcl9jbGspO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgeHBjc19ya19wbV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuK3tcXG4rXFx0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGV2X2dldF9kcnZkYXRhKGRldik7XFxuK1xcbitcXHRyZXR1cm4gY2xrX3ByZXBhcmVfZW5hYmxlKHB4cGNzLVxcdTAwM2Vjc3JfY2xrKTtcXG4rfVxcbitcXG4rc3RhdGljIERFRklORV9SVU5USU1FX0RFVl9QTV9PUFMoeHBjc19ya19wbV9vcHMsXFxuK1xcdFxcdFxcdCAgIHhwY3NfcmtfcG1fcnVudGltZV9zdXNwZW5kLFxcbitcXHRcXHRcXHQgICB4cGNzX3JrX3BtX3J1bnRpbWVfcmVzdW1lLFxcbitcXHRcXHRcXHQgICBOVUxMKTtcXG4rXFxuK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHhwY3NfcmtfZHJpdmVyID0ge1xcbitcXHQucHJvYmUgPSB4cGNzX3JrX3Byb2JlLFxcbitcXHQucmVtb3ZlID0geHBjc19ya19yZW1vdmUsXFxuK1xcdC5kcml2ZXIgPSB7XFxuK1xcdFxcdC5uYW1lID0gXFxcInJrX3hwY3MtZHd4cGNzXFxcIixcXG4rXFx0XFx0LnBtID0gcG1fcHRyKFxcdTAwMjZ4cGNzX3JrX3BtX29wcyksXFxuK1xcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHhwY3Nfcmtfb2ZfaWRzLFxcbitcXHR9LFxcbit9O1xcbittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHhwY3NfcmtfZHJpdmVyKTtcXG4rXFxuK01PRFVMRV9ERVNDUklQVElPTihcXFwiUm9ja2NoaXAgWFBDUyBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyXFxcIik7XFxuK01PRFVMRV9BVVRIT1IoXFxcIkNvaWEgUHJhbnQgXFx1MDAzY2NvaWFwcmFudEBnbWFpbC5jb21cXHUwMDNlXFxcIik7XFxuK01PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuY1xcbmluZGV4IDAzMzdlMmJjYzAxMjUuLjUwYjljZGY5NGZkYWEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmNcXG4rKysgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuY1xcbkBAIC04MTYsOSArODE2LDE0IEBAIHN0YXRpYyBpbnQgeHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWkoc3RydWN0IGR3X3hwY3MgKnhwY3MsXFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4rXFx0LyogQ2xlYXIgQ0wzNyBBTiBjb21wbGV0ZSBzdGF0dXMgKi9cXG4rXFx0cmV0ID0geHBjc193cml0ZSh4cGNzLCBNRElPX01NRF9WRU5EMiwgRFdfVlJfTUlJX0FOX0lOVFJfU1RTLCAwKTtcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbiBcXHRpZiAobmVnX21vZGUgPT0gUEhZTElOS19QQ1NfTkVHX0lOQkFORF9FTkFCTEVEKVxcbiBcXHRcXHRyZXQgPSB4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfQk1DUixcXG4tXFx0XFx0XFx0XFx0IG1kaW9fY3RybCB8IEJNQ1JfQU5FTkFCTEUpO1xcbitcXHRcXHRcXHRcXHQgbWRpb19jdHJsIHwgQk1DUl9BTkVOQUJMRSB8IEJNQ1JfQU5SRVNUQVJUKTtcXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5AQCAtMTA5MywxMCArMTA5OCwxNSBAQCBzdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuLVxcdC8qIENsZWFyIEFOIGNvbXBsZXRlIHN0YXR1cyBvciBpbnRlcnJ1cHQgKi9cXG4tXFx0aWYgKHN0YXRlLVxcdTAwM2Vhbl9jb21wbGV0ZSlcXG4rXFx0aWYgKHN0YXRlLVxcdTAwM2Vhbl9jb21wbGV0ZSkge1xcbitcXHRcXHQvKiBDbGVhciBBTiBjb21wbGV0ZSBzdGF0dXMgb3IgaW50ZXJydXB0ICovXFxuIFxcdFxcdHhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIsIERXX1ZSX01JSV9BTl9JTlRSX1NUUywgMCk7XFxuIFxcbitcXHRcXHQvKiBJbml0aWF0ZSB0aGUgbmV4dCByb3VuZCBvZiBBTiAqL1xcbitcXHRcXHR4cGNzX21vZGlmeSh4cGNzLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsIEJNQ1JfQU5SRVNUQVJULFxcbitcXHRcXHRcXHQgICAgQk1DUl9BTlJFU1RBUlQpO1xcbitcXHR9XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmMgYi9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuY1xcbmluZGV4IDc4NDMzNTZhNGRkNDcuLjkxOWJiOTdhNGIxODIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmNcXG4rKysgYi9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuY1xcbkBAIC0xODYsNiArMTg2LDcgQEAgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfZ3JmY2ZnIHtcXG4gXFx0c3RydWN0IGNvbWJwaHlfcmVnIHBpcGVfeHBjc19waHlfcmVhZHk7XFxuIFxcdHN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3BjaWUxbDBfc2VsO1xcbiBcXHRzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9wY2llMWwxX3NlbDtcXG4rXFx0c3RydWN0IGNvbWJwaHlfcmVnIHBpcGVfc2dtaWlfbWFjX3NlbDtcXG4gXFx0c3RydWN0IGNvbWJwaHlfcmVnIHUzb3RnMF9wb3J0X2VuO1xcbiBcXHRzdHJ1Y3QgY29tYnBoeV9yZWcgdTNvdGcxX3BvcnRfZW47XFxuIH07XFxuQEAgLTIxMiw2ICsyMTMsNyBAQCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9wcml2IHtcXG4gXFx0Ym9vbCBlbmFibGVfc3NjO1xcbiBcXHRib29sIGV4dF9yZWZjbGs7XFxuIFxcdHN0cnVjdCBjbGsgKnJlZmNsaztcXG4rXFx0dTMyIHNnbWlpX21hY19zZWw7XFxuIH07XFxuIFxcbiBzdGF0aWMgdm9pZCByb2NrY2hpcF9jb21icGh5X3VwZGF0ZWwoc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAqcHJpdixcXG5AQCAtMzc1LDYgKzM3Nyw5IEBAIHN0YXRpYyBpbnQgcm9ja2NoaXBfY29tYnBoeV9wYXJzZV9kdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCByb2NrY2hpcF9jb21icGh5XFxuIFxcbiBcXHRwcml2LVxcdTAwM2VleHRfcmVmY2xrID0gZGV2aWNlX3Byb3BlcnR5X3ByZXNlbnQoZGV2LCBcXFwicm9ja2NoaXAsZXh0LXJlZmNsa1xcXCIpO1xcbiBcXG4rXFx0cHJpdi1cXHUwMDNlc2dtaWlfbWFjX3NlbCA9IDE7XFxuK1xcdGRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsIFxcXCJyb2NrY2hpcCxzZ21paS1tYWMtc2VsXFxcIiwgXFx1MDAyNnByaXYtXFx1MDAzZXNnbWlpX21hY19zZWwpO1xcbitcXG4gXFx0cHJpdi1cXHUwMDNlcGh5X3JzdCA9IGRldm1fcmVzZXRfY29udHJvbF9nZXRfZXhjbHVzaXZlKGRldiwgXFxcInBoeVxcXCIpO1xcbiBcXHQvKiBmYWxsYmFjayB0byBvbGQgYmVoYXZpb3VyICovXFxuIFxcdGlmIChQVFJfRVJSKHByaXYtXFx1MDAzZXBoeV9yc3QpID09IC1FTk9FTlQpXFxuQEAgLTg3Myw2ICs4NzgsOCBAQCBzdGF0aWMgaW50IHJrMzU2OF9jb21icGh5X2NmZyhzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9wcml2ICpwcml2KVxcbiBcXHRcXHRicmVhaztcXG4gXFxuIFxcdGNhc2UgUEhZX1RZUEVfU0dNSUk6XFxuK1xcdFxcdHJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi1cXHUwMDNlcGlwZV9ncmYsIFxcdTAwMjZjZmctXFx1MDAzZXBpcGVfc2dtaWlfbWFjX3NlbCxcXG4rXFx0XFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNlc2dtaWlfbWFjX3NlbCBcXHUwMDNlIDApO1xcbiBcXHRcXHRyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtXFx1MDAzZXBpcGVfZ3JmLCBcXHUwMDI2Y2ZnLVxcdTAwM2VwaXBlX3hwY3NfcGh5X3JlYWR5LCB0cnVlKTtcXG4gXFx0XFx0cm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LVxcdTAwM2VwaHlfZ3JmLCBcXHUwMDI2Y2ZnLVxcdTAwM2VwaXBlX3BoeW1vZGVfc2VsLCB0cnVlKTtcXG4gXFx0XFx0cm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LVxcdTAwM2VwaHlfZ3JmLCBcXHUwMDI2Y2ZnLVxcdTAwM2VwaXBlX3NlbF9xc2dtaWksIHRydWUpO1xcbkBAIC05ODQsNiArOTkxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCByb2NrY2hpcF9jb21icGh5X2dyZmNmZyByazM1NjhfY29tYnBoeV9ncmZjZmdzID0ge1xcbiBcXHQuY29uM19mb3Jfc2F0YVxcdFxcdD0geyAweDAwMGMsIDE1LCAwLCAweDAwLCAweDQ0MDcgfSxcXG4gXFx0LyogcGlwZS1ncmYgKi9cXG4gXFx0LnBpcGVfY29uMF9mb3Jfc2F0YVxcdD0geyAweDAwMDAsIDE1LCAwLCAweDAwLCAweDIyMjAgfSxcXG4rXFx0LnBpcGVfc2dtaWlfbWFjX3NlbFxcdD0geyAweDAwNDAsIDEsIDEsIDB4MDAsIDB4MDEgfSxcXG4gXFx0LnBpcGVfeHBjc19waHlfcmVhZHlcXHQ9IHsgMHgwMDQwLCAyLCAyLCAweDAwLCAweDAxIH0sXFxuIFxcdC51M290ZzBfcG9ydF9lblxcdFxcdD0geyAweDAxMDQsIDE1LCAwLCAweDAxODEsIDB4MTEwMCB9LFxcbiBcXHQudTNvdGcxX3BvcnRfZW5cXHRcXHQ9IHsgMHgwMTQ0LCAxNSwgMCwgMHgwMTgxLCAweDExMDAgfSxcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaCBiL2luY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmhcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjI4NzIzZDViZDc1Y2NcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvaW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaFxcbkBAIC0wLDAgKzEsMTEgQEBcXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cXG4rI2lmbmRlZiBfX0xJTlVYX1BDU19YUENTX1JPQ0tDSElQX0hcXG4rI2RlZmluZSBfX0xJTlVYX1BDU19YUENTX1JPQ0tDSElQX0hcXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZXZpY2UuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wY3MvcGNzLXhwY3MuaFxcdTAwM2VcXG4rXFxuK3N0cnVjdCBkd194cGNzICp4cGNzX3JrX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApO1xcbitcXG4rI2VuZGlmIC8qIF9fTElOVVhfUENTX1hQQ1NfUk9DS0NISVBfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNToxMDoxMi43MDQ2NjIzMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MjI5NDc3MzcxMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBhZGRzIHN1cHBvcnQgZm9yIFJvY2tjaGlwIFJLMzU2OCBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IFBoeXNpY2FsIENvZGluZyBTdWJsYXllciAoWFBDUykgYW5kIFNHTUlJIGludGVyZmFjZSBjb25maWd1cmF0aW9uIGZvciB0aGUgUm9ja2NoaXAgRFdNQUMgZHJpdmVyLCBhbG9uZyB3aXRoIG1pbm9yIFBDUyBpbml0L2V4aXQgaGFuZGxpbmcgdXBkYXRlcyBmb3IgSW50ZWwgRFdNQUMgUENJIGFuZCBvdGhlciBTb0MgZ2x1ZSBkcml2ZXJzIChSZW5lc2FzLCBTb2NmcGdhKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVzdHJpY3RlZCB0byB2ZW5kb3Itc3BlY2lmaWMgU29DIHBsYXRmb3JtIGRyaXZlcnMgKFJvY2tjaGlwIFJLMzU2OCwgUmVuZXNhcywgU29jZnBnYSkgYW5kIEludGVsIERXTUFDIFBDSSBoYXJkd2FyZSwgbm9uZSBvZiB3aGljaCBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBjbG91ZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgY2Fubm90IGJlIGV4ZWN1dGVkIGR1cmluZyB2aXJ0dWFsaXplZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjQ2YThmNGM5OTUyOTYxYjdmOGY5NmFmOGYyZjQ0NjFhOGY5NTk3MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMDU6MTA6MTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMDg1MmQwYmNiNjZhMlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3Mvcm9ja2NoaXAtZHd4cGNzLnlhbWxcbkBAIC0wLDAgKzEsMTEwIEBAXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpXG4rJVlBTUwgMS4yXG4rLS0tXG4rJGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sI1xuKyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuK1xuK3RpdGxlOiBSb2NrY2hpcCBSSzM1NjggU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBQQ1NcbitcbittYWludGFpbmVyczpcbisgIC0gQ29pYSBQcmFudCBcdTAwM2Njb2lhcHJhbnRAZ21haWwuY29tXHUwMDNlXG4rXG4rZGVzY3JpcHRpb246IHxcbisgIFJvY2tjaGlwIFJLMzU2OCBTb0MgaW50ZWdyYXRlcyBhIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUGh5c2ljYWxcbisgIENvZGluZyBTdWJsYXllciAoWFBDUykuXG4rICBUaGUgUENTIHByb3ZpZGVzIGFuIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBNZWRpYSBBY2Nlc3MgQ29udHJvbCAoTUFDKVxuKyAgYW5kIHRoZSBQaHlzaWNhbCBNZWRpdW0gQXR0YWNobWVudCAoUE1BKSBzdWJsYXllciB0aHJvdWdoIGEgTWVkaWFcbisgIEluZGVwZW5kZW50IEludGVyZmFjZSAoR01JSSkuXG4rXG4rICBUaGUgWFBDUyBpcyBhY2Nlc3NlZCBvdmVyIHRoZSBBUEIzIGJ1cyBhbmQgaW50ZXJuYWxseSBjb25uZWN0ZWQgdG8gYVxuKyAgTmFuZW5nIENvbWJvIFNlckRlcyBQSFkuXG4rICBJdCBzdXBwb3J0cyAxMDAwQkFTRS1YLCBTR01JSSBhbmQgUVNHTUlJIG1vZGVzLlxuK1xuKyAgVGhlIGJsb2NrIGNvbnRhaW5zIGZvdXIgTUlJIHBvcnRzIHRoYXQgY2FuIGJlIGluZGl2aWR1YWxseSBlbmFibGVkIGFuZFxuKyAgcm91dGVkIHRvIG9uZSBvZiB0aGUgRXRoZXJuZXQgR01BQyBjb250cm9sbGVycyB2aWEgdGhlIHBjcy1oYW5kbGVcbisgIHByb3BlcnR5IGluIHRoZSBNQUMgZGV2aWNlIHRyZWUgbm9kZS5cbitcbitwcm9wZXJ0aWVzOlxuKyAgY29tcGF0aWJsZTpcbisgICAgY29uc3Q6IHJvY2tjaGlwLHJrMzU2OC14cGNzXG4rXG4rICByZWc6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4rICBcIiNhZGRyZXNzLWNlbGxzXCI6XG4rICAgIGNvbnN0OiAxXG4rXG4rICBcIiNzaXplLWNlbGxzXCI6XG4rICAgIGNvbnN0OiAwXG4rXG4rICBjbG9ja3M6XG4rICAgIGl0ZW1zOlxuKyAgICAgIC0gZGVzY3JpcHRpb246IEFQQjMgYnVzIGludGVyZmFjZSBjbG9jayAoY2xrX2Nzcl9pKSwgcmVxdWlyZWQgZm9yIHJlZ2lzdGVyIGFjY2Vzc1xuKyAgICAgIC0gZGVzY3JpcHRpb246IEVFRSBjbG9jayAoY2xrX2VlZV9pKSwgcmVxdWlyZWQgZm9yIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgb3BlcmF0aW9uXG4rXG4rICBjbG9jay1uYW1lczpcbisgICAgaXRlbXM6XG4rICAgICAgLSBjb25zdDogY3NyXG4rICAgICAgLSBjb25zdDogZWVlXG4rXG4rICBwaHlzOlxuKyAgICBtYXhJdGVtczogMVxuK1xuKyAgcGh5LW5hbWVzOlxuKyAgICBjb25zdDogc2VyZGVzXG4rXG4rICBwb3dlci1kb21haW5zOlxuKyAgICBtYXhJdGVtczogMVxuK1xuK3BhdHRlcm5Qcm9wZXJ0aWVzOlxuKyAgXCJecGNzLW1paUBbMC0zXSRcIjpcbisgICAgdHlwZTogb2JqZWN0XG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIE9uZSBvZiB0aGUgZm91ciBNSUkgcG9ydHMgb2YgdGhlIFhQQ1MuIFRoZSBwb3J0IGlzIGxpbmtlZCB0byBhblxuKyAgICAgIEV0aGVybmV0IE1BQyBjb250cm9sbGVyIHZpYSB0aGUgcGNzLWhhbmRsZSBwcm9wZXJ0eSBpbiB0aGUgTUFDJ3NcbisgICAgICBkZXZpY2UgdHJlZSBub2RlLlxuK1xuKyAgICBwcm9wZXJ0aWVzOlxuKyAgICAgIHJlZzpcbisgICAgICAgIGRlc2NyaXB0aW9uOiBNSUkgcG9ydCBudW1iZXIuXG4rICAgICAgICBlbnVtOiBbMCwgMSwgMiwgM11cbitcbisgICAgcmVxdWlyZWQ6XG4rICAgICAgLSByZWdcbitcbisgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlXG4rXG4rcmVxdWlyZWQ6XG4rICAtIGNvbXBhdGlibGVcbisgIC0gcmVnXG4rICAtIFwiI2FkZHJlc3MtY2VsbHNcIlxuKyAgLSBcIiNzaXplLWNlbGxzXCJcbisgIC0gY2xvY2tzXG4rICAtIGNsb2NrLW5hbWVzXG4rICAtIHBoeXNcbisgIC0gcGh5LW5hbWVzXG4rICAtIHBvd2VyLWRvbWFpbnNcbitcbithZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2VcbitcbitleGFtcGxlczpcbisgIC0gfFxuKyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9jbG9jay9yazM1NjgtY3J1LmhcdTAwM2VcbisgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvcG93ZXIvcmszNTY4LXBvd2VyLmhcdTAwM2VcbisgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvcGh5L3BoeS5oXHUwMDNlXG4rXG4rICAgIHBjc0BmZGEwMDAwMCB7XG4rICAgICAgY29tcGF0aWJsZSA9IFwicm9ja2NoaXAscmszNTY4LXhwY3NcIjtcbisgICAgICByZWcgPSBcdTAwM2MweGZkYTAwMDAwIDB4MjAwMDAwXHUwMDNlO1xuKyAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbisgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4rICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2Y3J1IFBDTEtfWFBDU1x1MDAzZSwgXHUwMDNjXHUwMDI2Y3J1IENMS19YUENTX0VFRVx1MDAzZTtcbisgICAgICBjbG9jay1uYW1lcyA9IFwiY3NyXCIsIFwiZWVlXCI7XG4rICAgICAgcGh5cyA9IFx1MDAzY1x1MDAyNmNvbWJwaHkyIFBIWV9UWVBFX1NHTUlJXHUwMDNlO1xuKyAgICAgIHBoeS1uYW1lcyA9IFwic2VyZGVzXCI7XG4rICAgICAgcG93ZXItZG9tYWlucyA9IFx1MDAzY1x1MDAyNnBvd2VyIFJLMzU2OF9QRF9QSVBFXHUwMDNlO1xuK1xuKyAgICAgIHBjcy1taWlAMCB7XG4rICAgICAgICByZWcgPSBcdTAwM2MwXHUwMDNlO1xuKyAgICAgIH07XG4rICAgIH07XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWxcbmluZGV4IDM3OWIwOGJkOWU5N2EuLjhlODk4YmNlOWFmNzMgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sXG5AQCAtODAsNiArODAsMTUgQEAgcHJvcGVydGllczpcbiAgICAgZGVzY3JpcHRpb246XG4gICAgICAgU29tZSBhZGRpdGlvbmFsIHBpcGUgc2V0dGluZ3MgYXJlIGFjY2Vzc2VkIHRocm91Z2ggR1JGIHJlZ3MuXG4gXG4rICByb2NrY2hpcCxzZ21paS1tYWMtc2VsOlxuKyAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzJcbisgICAgZW51bTogWzAsIDFdXG4rICAgIGRlZmF1bHQ6IDFcbisgICAgZGVzY3JpcHRpb246XG4rICAgICAgU2VsZWN0IGdtYWMwIG9yIGdtYWMxIHRvIGJlIHVzZWQgYXMgU0dNSUkgY29udHJvbGxlci5cbisgICAgICBUaGUgaGFyZHdhcmUgcmVzZXQgdmFsdWUgaXMgR01BQzEgKDEpLiBTZXQgdGhpcyB0byAwIHRvIHJvdXRlXG4rICAgICAgU0dNSUkgdG8gR01BQzAuXG4rXG4gICBcIiNwaHktY2VsbHNcIjpcbiAgICAgY29uc3Q6IDFcbiBcbkBAIC0xMDUsNiArMTE0LDEwIEBAIGFsbE9mOlxuICAgICAgICAgICBtYXhJdGVtczogMVxuICAgICAgICAgcmVzZXQtbmFtZXM6XG4gICAgICAgICAgIG1heEl0ZW1zOiAxXG4rICAgICAgICByb2NrY2hpcCxzZ21paS1tYWMtc2VsOiB0cnVlXG4rICAgIGVsc2U6XG4rICAgICAgcHJvcGVydGllczpcbisgICAgICAgIHJvY2tjaGlwLHNnbWlpLW1hYy1zZWw6IGZhbHNlXG4gICAtIGlmOlxuICAgICAgIHByb3BlcnRpZXM6XG4gICAgICAgICBjb21wYXRpYmxlOlxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcbmluZGV4IDNhMTlkYTc0ZDAwYzkuLmMzYjE3NzUyY2M4MTcgMTAwNjQ0XG4tLS0gYS9NQUlOVEFJTkVSU1xuKysrIGIvTUFJTlRBSU5FUlNcbkBAIC0yMzc0NCw2ICsyMzc0NCwxNSBAQCBTOlx0TWFpbnRhaW5lZFxuIEY6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvcm9ja2NoaXAscmszNTc2LXNhaS55YW1sXG4gRjpcdHNvdW5kL3NvYy9yb2NrY2hpcC9yb2NrY2hpcF9zYWkuKlxuIFxuK1JPQ0tDSElQIFhQQ1MgRFJJVkVSXG4rTTpcdENvaWEgUHJhbnQgXHUwMDNjY29pYXByYW50QGdtYWlsLmNvbVx1MDAzZVxuK0w6XHRuZXRkZXZAdmdlci5rZXJuZWwub3JnXG4rTDpcdGxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmdcbitTOlx0TWFpbnRhaW5lZFxuK0Y6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbFxuK0Y6XHRkcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuY1xuK0Y6XHRpbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXG4rXG4gUk9DS0VSIERSSVZFUlxuIE06XHRKaXJpIFBpcmtvIFx1MDAzY2ppcmlAcmVzbnVsbGkudXNcdTAwM2VcbiBMOlx0bmV0ZGV2QHZnZXIua2VybmVsLm9yZ1xuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LXBob3RvbmljYXQuZHRzIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHNcbmluZGV4IDU4YzEwNTJiYThlZjMuLjI1Y2FhNDQxOTg4NDMgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC1waG90b25pY2F0LmR0c1xuKysrIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHNcbkBAIC0zLDYgKzMsNyBAQFxuIC9kdHMtdjEvO1xuIFxuICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvbGVkcy9jb21tb24uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL3BpbmN0cmwvcm9ja2NoaXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL3NvYy9yb2NrY2hpcCx2b3AyLmhcdTAwM2VcbiAjaW5jbHVkZSBcInJrMzU2OC5kdHNpXCJcbkBAIC0yNDIsNiArMjQzLDcgQEAgXHUwMDI2Y29tYnBoeTEge1xuIFxuIFx1MDAyNmNvbWJwaHkyIHtcbiBcdHN0YXR1cyA9IFwib2theVwiO1xuK1x0cm9ja2NoaXAsc2dtaWktbWFjLXNlbCA9IFx1MDAzYzBcdTAwM2U7XG4gfTtcbiBcbiBcdTAwMjZjcHUwIHtcbkBAIC0yNjAsOSArMjYyLDE4IEBAIFx1MDAyNmNwdTMge1xuIFx0Y3B1LXN1cHBseSA9IFx1MDAzY1x1MDAyNnZkZF9jcHVcdTAwM2U7XG4gfTtcbiBcbi0vKiBNb3RvcmNvbW0gWVQ4NTIxU0MgTEFOIHBvcnQgKHJlcXVpcmUgU0dNSUkpICovXG4rLyogTW90b3Jjb21tIFlUODUyMVNDIExBTiBwb3J0ICovXG4gXHUwMDI2Z21hYzAge1xuLVx0c3RhdHVzID0gXCJkaXNhYmxlZFwiO1xuK1x0YXNzaWduZWQtY2xvY2tzID0gXHUwMDNjXHUwMDI2Y3J1IFNDTEtfR01BQzBfUlhfVFhcdTAwM2U7XG4rXHRhc3NpZ25lZC1jbG9jay1wYXJlbnRzID0gXHUwMDNjXHUwMDI2eHBjc19nbWFjMF9jbGtcdTAwM2U7XG4rXHRwY3MtaGFuZGxlID0gXHUwMDNjXHUwMDI2eHBjc19taWkwXHUwMDNlO1xuK1x0bWFuYWdlZCA9IFwiaW4tYmFuZC1zdGF0dXNcIjtcbitcdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzZ21paV9waHlcdTAwM2U7XG4rXHRwaHktbW9kZSA9IFwic2dtaWlcIjtcbitcdHBoeS1zdXBwbHkgPSBcdTAwM2NcdTAwMjZ2Y2NfM3YzXHUwMDNlO1xuK1x0cGluY3RybC1uYW1lcyA9IFwiZGVmYXVsdFwiO1xuK1x0cGluY3RybC0wID0gXHUwMDNjXHUwMDI2Z21hYzBfbWlpbVx1MDAzZTtcbitcdHN0YXR1cyA9IFwib2theVwiO1xuIH07XG4gXG4gLyogTW90b3Jjb21tIFlUODUyMVNDIFdBTiBwb3J0ICovXG5AQCAtMzQxLDYgKzM1MiwzNiBAQCBcdTAwMjZpMnMwXzhjaCB7XG4gXHRzdGF0dXMgPSBcIm9rYXlcIjtcbiB9O1xuIFxuK1x1MDAyNm1kaW8wIHtcbitcdHNnbWlpX3BoeTogZXRoZXJuZXQtcGh5QDMge1xuK1x0XHRjb21wYXRpYmxlID0gXCJldGhlcm5ldC1waHktaWVlZTgwMi4zLWMyMlwiO1xuK1x0XHRyZWcgPSBcdTAwM2MweDNcdTAwM2U7XG4rXHRcdG1heC1zcGVlZCA9IFx1MDAzYzEwMDBcdTAwM2U7XG4rXHRcdHJlc2V0LWFzc2VydC11cyA9IFx1MDAzYzIwMDAwXHUwMDNlO1xuK1x0XHRyZXNldC1kZWFzc2VydC11cyA9IFx1MDAzYzEwMDAwMFx1MDAzZTtcbitcdFx0cmVzZXQtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvMyBSS19QQzYgR1BJT19BQ1RJVkVfTE9XXHUwMDNlO1xuK1xuK1x0XHRsZWRzIHtcbitcdFx0XHQjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4rXHRcdFx0I3NpemUtY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuK1xuK1x0XHRcdGxlZEAxIHtcbitcdFx0XHRcdHJlZyA9IFx1MDAzYzFcdTAwM2U7XG4rXHRcdFx0XHRjb2xvciA9IFx1MDAzY0xFRF9DT0xPUl9JRF9BTUJFUlx1MDAzZTtcbitcdFx0XHRcdGZ1bmN0aW9uID0gTEVEX0ZVTkNUSU9OX0xBTjtcbitcdFx0XHRcdGRlZmF1bHQtc3RhdGUgPSBcImtlZXBcIjtcbitcdFx0XHR9O1xuK1xuK1x0XHRcdGxlZEAyIHtcbitcdFx0XHRcdHJlZyA9IFx1MDAzYzJcdTAwM2U7XG4rXHRcdFx0XHRjb2xvciA9IFx1MDAzY0xFRF9DT0xPUl9JRF9HUkVFTlx1MDAzZTtcbitcdFx0XHRcdGZ1bmN0aW9uID0gTEVEX0ZVTkNUSU9OX0xBTjtcbitcdFx0XHRcdGRlZmF1bHQtc3RhdGUgPSBcImtlZXBcIjtcbitcdFx0XHR9O1xuK1x0XHR9O1xuK1x0fTtcbit9O1xuK1xuIFx1MDAyNm1kaW8xIHtcbiBcdHJnbWlpX3BoeTogZXRoZXJuZXQtcGh5QDMge1xuIFx0XHRjb21wYXRpYmxlID0gXCJldGhlcm5ldC1waHktaWVlZTgwMi4zLWMyMlwiO1xuQEAgLTM1MCw2ICszOTEsMjUgQEAgcmdtaWlfcGh5OiBldGhlcm5ldC1waHlAMyB7XG4gXHRcdHJlc2V0LWdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzQgUktfUEMwIEdQSU9fQUNUSVZFX0xPV1x1MDAzZTtcbiBcdFx0cngtaW50ZXJuYWwtZGVsYXktcHMgPSBcdTAwM2MxNTAwXHUwMDNlO1xuIFx0XHR0eC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzE1MDBcdTAwM2U7XG4rXG4rXHRcdGxlZHMge1xuK1x0XHRcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbitcdFx0XHQjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4rXG4rXHRcdFx0bGVkQDEge1xuK1x0XHRcdFx0cmVnID0gXHUwMDNjMVx1MDAzZTtcbitcdFx0XHRcdGNvbG9yID0gXHUwMDNjTEVEX0NPTE9SX0lEX0FNQkVSXHUwMDNlO1xuK1x0XHRcdFx0ZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fV0FOO1xuK1x0XHRcdFx0ZGVmYXVsdC1zdGF0ZSA9IFwia2VlcFwiO1xuK1x0XHRcdH07XG4rXG4rXHRcdFx0bGVkQDIge1xuK1x0XHRcdFx0cmVnID0gXHUwMDNjMlx1MDAzZTtcbitcdFx0XHRcdGNvbG9yID0gXHUwMDNjTEVEX0NPTE9SX0lEX0dSRUVOXHUwMDNlO1xuK1x0XHRcdFx0ZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fV0FOO1xuK1x0XHRcdFx0ZGVmYXVsdC1zdGF0ZSA9IFwia2VlcFwiO1xuK1x0XHRcdH07XG4rXHRcdH07XG4gXHR9O1xuIH07XG4gXG5AQCAtNTg2LDMgKzY0NiwxMyBAQCBcdTAwMjZ4aW4zMmsge1xuIFx0cGluY3RybC1uYW1lcyA9IFwiZGVmYXVsdFwiO1xuIFx0cGluY3RybC0wID0gXHUwMDNjXHUwMDI2Y2xrMzJrX291dDFcdTAwM2U7XG4gfTtcbitcbitcdTAwMjZ4cGNzIHtcbitcdHN0YXR1cyA9IFwib2theVwiO1xuK1x0cGh5cyA9IFx1MDAzY1x1MDAyNmNvbWJwaHkyIFBIWV9UWVBFX1NHTUlJXHUwMDNlO1xuK1x0cGh5LW5hbWVzID0gXCJzZXJkZXNcIjtcbit9O1xuK1xuK1x1MDAyNnhwY3NfbWlpMCB7XG4rXHRzdGF0dXMgPSBcIm9rYXlcIjtcbit9O1xuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2kgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpXG5pbmRleCAzYmM2NTNmMDI3ZjFmLi45ODllMTY0YzBlYjM5IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaVxuKysrIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaVxuQEAgLTExMCw2ICsxMTAsNTEgQEAgc2F0YTA6IHNhdGFAZmMwMDAwMDAge1xuIFx0XHRzdGF0dXMgPSBcImRpc2FibGVkXCI7XG4gXHR9O1xuIFxuK1x0eHBjczogcGNzQGZkYTAwMDAwIHtcbitcdFx0Y29tcGF0aWJsZSA9IFwicm9ja2NoaXAscmszNTY4LXhwY3NcIjtcbitcdFx0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuK1x0XHQjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4rXHRcdHJlZyA9IFx1MDAzYzB4MCAweGZkYTAwMDAwIDB4MCAweDIwMDAwMFx1MDAzZTtcbitcdFx0Y2xvY2tzID0gXHUwMDNjXHUwMDI2Y3J1IFBDTEtfWFBDU1x1MDAzZSwgXHUwMDNjXHUwMDI2Y3J1IENMS19YUENTX0VFRVx1MDAzZTtcbitcdFx0Y2xvY2stbmFtZXMgPSBcImNzclwiLCBcImVlZVwiO1xuK1x0XHRwb3dlci1kb21haW5zID0gXHUwMDNjXHUwMDI2cG93ZXIgUkszNTY4X1BEX1BJUEVcdTAwM2U7XG4rXHRcdHN0YXR1cyA9IFwiZGlzYWJsZWRcIjtcbitcbitcdFx0eHBjc19taWkwOiBwY3MtbWlpQDAge1xuK1x0XHRcdHJlZyA9IFx1MDAzYzBcdTAwM2U7XG4rXHRcdFx0c3RhdHVzID0gXCJkaXNhYmxlZFwiO1xuK1x0XHR9O1xuK1xuK1x0XHR4cGNzX21paTE6IHBjcy1taWlAMSB7XG4rXHRcdFx0cmVnID0gXHUwMDNjMVx1MDAzZTtcbitcdFx0XHRzdGF0dXMgPSBcImRpc2FibGVkXCI7XG4rXHRcdH07XG4rXG4rXHRcdHhwY3NfbWlpMjogcGNzLW1paUAyIHtcbitcdFx0XHRyZWcgPSBcdTAwM2MyXHUwMDNlO1xuK1x0XHRcdHN0YXR1cyA9IFwiZGlzYWJsZWRcIjtcbitcdFx0fTtcbitcbitcdFx0eHBjc19taWkzOiBwY3MtbWlpQDMge1xuK1x0XHRcdHJlZyA9IFx1MDAzYzNcdTAwM2U7XG4rXHRcdFx0c3RhdHVzID0gXCJkaXNhYmxlZFwiO1xuK1x0XHR9O1xuK1x0fTtcbitcbitcdHhwY3NfZ21hYzBfY2xrOiB4cGNzLWdtYWMwLWNsb2NrIHtcbitcdFx0Y29tcGF0aWJsZSA9IFwiZml4ZWQtY2xvY2tcIjtcbitcdFx0Y2xvY2stZnJlcXVlbmN5ID0gXHUwMDNjMTI1MDAwMDAwXHUwMDNlO1xuK1x0XHRjbG9jay1vdXRwdXQtbmFtZXMgPSBcImNsa19nbWFjMF94cGNzX21paVwiO1xuK1x0XHQjY2xvY2stY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuK1x0fTtcbitcbitcdHhwY3NfZ21hYzFfY2xrOiB4cGNzLWdtYWMxLWNsb2NrIHtcbitcdFx0Y29tcGF0aWJsZSA9IFwiZml4ZWQtY2xvY2tcIjtcbitcdFx0Y2xvY2stZnJlcXVlbmN5ID0gXHUwMDNjMTI1MDAwMDAwXHUwMDNlO1xuK1x0XHRjbG9jay1vdXRwdXQtbmFtZXMgPSBcImNsa19nbWFjMV94cGNzX21paVwiO1xuK1x0XHQjY2xvY2stY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuK1x0fTtcbitcbiBcdHBpcGVfcGh5X2dyZjA6IHN5c2NvbkBmZGM3MDAwMCB7XG4gXHRcdGNvbXBhdGlibGUgPSBcInJvY2tjaGlwLHJrMzU2OC1waXBlLXBoeS1ncmZcIiwgXCJzeXNjb25cIjtcbiBcdFx0cmVnID0gXHUwMDNjMHgwIDB4ZmRjNzAwMDAgMHgwIDB4MTAwMFx1MDAzZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1xuaW5kZXggZTNkZDVhZGRhNWFjYS4uNTA4OGFjYzA2OTgyZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcbkBAIC0xNzAsNiArMTcwLDcgQEAgY29uZmlnIERXTUFDX1JPQ0tDSElQXG4gXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcbiBcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1JPQ0tDSElQIHx8IENPTVBJTEVfVEVTVClcbiBcdHNlbGVjdCBNRkRfU1lTQ09OXG4rXHRzZWxlY3QgUENTX1hQQ1NfUk9DS0NISVBcbiBcdGhlbHBcbiBcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBSb2NrY2hpcCBSSzMyODggU29DLlxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG5pbmRleCBmNWY5ZmE2N2VjZDc3Li5mZDVmMDFjODk0MWMxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xuQEAgLTYwMywxMyArNjAzLDQ3IEBAIHN0YXRpYyB2b2lkIGNvbW1vbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxuIFx0cGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZW5lZWRzX3Jlc2V0ID0gdHJ1ZTtcbiB9XG4gXG4rc3RhdGljIGludCBpbnRlbF9tZ2JlX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbit7XG4rXHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZGV2bm9kZSwgKnBjc25vZGU7XG4rXHRzdHJ1Y3QgZHdfeHBjcyAqeHBjcyA9IE5VTEw7XG4rXHRpbnQgYWRkcjtcbitcbitcdGRldm5vZGUgPSBkZXZfZndub2RlKHByaXYtXHUwMDNlZGV2aWNlKTtcbitcbitcdGlmIChmd25vZGVfcHJvcGVydHlfcHJlc2VudChkZXZub2RlLCBcInBjcy1oYW5kbGVcIikpIHtcbitcdFx0cGNzbm9kZSA9IGZ3bm9kZV9maW5kX3JlZmVyZW5jZShkZXZub2RlLCBcInBjcy1oYW5kbGVcIiwgMCk7XG4rXHRcdHhwY3MgPSB4cGNzX2NyZWF0ZV9md25vZGUocGNzbm9kZSk7XG4rXHRcdGZ3bm9kZV9oYW5kbGVfcHV0KHBjc25vZGUpO1xuK1x0fSBlbHNlIHtcbitcdFx0YWRkciA9IGZmcyhwcml2LVx1MDAzZXBsYXQtXHUwMDNlbWRpb19idXNfZGF0YS1cdTAwM2VwY3NfbWFzaykgLSAxO1xuK1x0XHR4cGNzID0geHBjc19jcmVhdGVfbWRpb2Rldihwcml2LVx1MDAzZW1paSwgYWRkcik7XG4rXHR9XG4rXG4rXHRpZiAoSVNfRVJSKHhwY3MpKVxuK1x0XHRyZXR1cm4gUFRSX0VSUih4cGNzKTtcbitcbitcdHhwY3NfY29uZmlnX2VlZV9tdWx0X2ZhY3QoeHBjcywgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZW11bHRfZmFjdF8xMDBucyk7XG4rXG4rXHRwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MgPSB4cGNzO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIGludGVsX21nYmVfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuK3tcbitcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKVxuK1x0XHRyZXR1cm47XG4rXG4rXHR4cGNzX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKTtcbitcdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IE5VTEw7XG4rfVxuK1xuIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKmludGVsX21nYmVfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdFx0XHRcdFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuLVx0LyogcGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZWhhc194cGNzIGhhcyBiZWVuIHNldCB0cnVlLCBzbyB0aGVyZVxuLVx0ICogc2hvdWxkIGFsd2F5cyBiZSBhbiBYUENTLiBUaGUgb3JpZ2luYWwgY29kZSB3b3VsZCBhbHdheXNcbi1cdCAqIHJldHVybiB0aGlzIGlmIHByZXNlbnQuXG4tXHQgKi9cbitcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKVxuK1x0XHRyZXR1cm4gTlVMTDtcbitcbiBcdHJldHVybiB4cGNzX3RvX3BoeWxpbmtfcGNzKHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyk7XG4gfVxuIFxuQEAgLTczMyw2ICs3NjcsOCBAQCBzdGF0aWMgaW50IGludGVsX21nYmVfY29tbW9uX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gXHQgICAgcGxhdC1cdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgpIHtcbiBcdFx0cGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZXBjc19tYXNrID0gQklUX1UzMihJTlRFTF9NR0JFX1hQQ1NfQUREUik7XG4gXHRcdHBsYXQtXHUwMDNlZGVmYXVsdF9hbl9pbmJhbmQgPSB0cnVlO1xuK1x0XHRwbGF0LVx1MDAzZXBjc19pbml0ID0gaW50ZWxfbWdiZV9wY3NfaW5pdDtcbitcdFx0cGxhdC1cdTAwM2VwY3NfZXhpdCA9IGludGVsX21nYmVfcGNzX2V4aXQ7XG4gXHRcdHBsYXQtXHUwMDNlc2VsZWN0X3BjcyA9IGludGVsX21nYmVfc2VsZWN0X3BjcztcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmNcbmluZGV4IDE5ZjM0ZTE4YmZlZjIuLjlhZjMyYzI2ZjljMTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguY1xuQEAgLTgxLDggKzgxLDExIEBAIHN0YXRpYyBpbnQgcmVuZXNhc19nbWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcbiBzdGF0aWMgdm9pZCByZW5lc2FzX2dtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIHtcbi1cdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuLVx0XHRtaWljX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcyk7XG4rXHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4rXHRcdHJldHVybjtcbitcbitcdG1paWNfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKTtcbitcdHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MgPSBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpyZW5lc2FzX2dtYWNfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmNcbmluZGV4IDhkNzA0MmU2ODkyNjEuLmU0N2NhMWJlYzViOGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jXG5AQCAtMjAsNiArMjAsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZmQvc3lzY29uLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcG1fcnVudGltZS5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJzdG1tYWNfcGxhdGZvcm0uaFwiXG5AQCAtNDcsNiArNDgsNyBAQCBzdHJ1Y3QgcmtfZ21hY19vcHMge1xuIFx0dm9pZCAoKnNldF90b19yZ21paSkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsXG4gXHRcdFx0ICAgICBpbnQgdHhfZGVsYXksIGludCByeF9kZWxheSk7XG4gXHR2b2lkICgqc2V0X3RvX3JtaWkpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KTtcbitcdHZvaWQgKCpzZXRfdG9fc2dtaWkpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KTtcbiBcdGludCAoKnNldF9zcGVlZCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsXG4gXHRcdFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsIGludCBzcGVlZCk7XG4gXHR2b2lkICgqaW50ZWdyYXRlZF9waHlfcG93ZXJ1cCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpO1xuQEAgLTYzLDYgKzY1LDcgQEAgc3RydWN0IHJrX2dtYWNfb3BzIHtcbiBcdGJvb2wgY2xvY2tfZ3JmX3JlZ19pbl9waHA7XG4gXHRib29sIHN1cHBvcnRzX3JnbWlpO1xuIFx0Ym9vbCBzdXBwb3J0c19ybWlpO1xuK1x0Ym9vbCBzdXBwb3J0c19zZ21paTtcbiBcdGJvb2wgcGhwX2dyZl9yZXF1aXJlZDtcbiBcdGJvb2wgcmVnc192YWxpZDtcbiBcdHUzMiByZWdzW107XG5AQCAtOTgsNiArMTAxLDcgQEAgc3RydWN0IHJrX3ByaXZfZGF0YSB7XG4gXHRib29sIGludGVncmF0ZWRfcGh5O1xuIFx0Ym9vbCBzdXBwb3J0c19yZ21paTtcbiBcdGJvb2wgc3VwcG9ydHNfcm1paTtcbitcdGJvb2wgc3VwcG9ydHNfc2dtaWk7XG4gXG4gXHRzdHJ1Y3QgY2xrX2J1bGtfZGF0YSAqY2xrcztcbiBcdGludCBudW1fY2xrcztcbkBAIC04MDksNiArODEzLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBya19nbWFjX29wcyByazM1Mjhfb3BzID0ge1xuICNkZWZpbmUgUkszNTY4X0dSRl9HTUFDMV9DT04xXHRcdDB4MDM4Y1xuIFxuIC8qIFJLMzU2OF9HUkZfR01BQzBfQ09OMSBcdTAwMjZcdTAwMjYgUkszNTY4X0dSRl9HTUFDMV9DT04xICovXG4rI2RlZmluZSBSSzM1NjhfR01BQ19NT0RFX1JNSUlfUkdNSUlcdFx0R1JGX0NMUl9CSVQoNylcbisjZGVmaW5lIFJLMzU2OF9HTUFDX01PREVfU0dNSUlfUVNHTUlJXHRcdEdSRl9CSVQoNylcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX0ZMT1dfQ1RSTFx0XHRcdEdSRl9CSVQoMylcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX0ZMT1dfQ1RSTF9DTFJcdFx0R1JGX0NMUl9CSVQoMylcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX1JYQ0xLX0RMWV9FTkFCTEVcdFx0R1JGX0JJVCgxKVxuQEAgLTg1MSwxOCArODU3LDMyIEBAIHN0YXRpYyB2b2lkIHJrMzU2OF9zZXRfdG9fcmdtaWkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsXG4gXHRcdCAgICAgUkszNTY4X0dNQUNfQ0xLX1RYX0RMX0NGRyh0eF9kZWxheSkpO1xuIFxuIFx0cmVnbWFwX3dyaXRlKGJzcF9wcml2LVx1MDAzZWdyZiwgY29uMSxcbitcdFx0ICAgICBSSzM1NjhfR01BQ19NT0RFX1JNSUlfUkdNSUkgfFxuIFx0XHQgICAgIFJLMzU2OF9HTUFDX1JYQ0xLX0RMWV9FTkFCTEUgfFxuIFx0XHQgICAgIFJLMzU2OF9HTUFDX1RYQ0xLX0RMWV9FTkFCTEUpO1xuIH1cbiBcbitzdGF0aWMgdm9pZCByazM1Njhfc2V0X3RvX3NnbWlpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuK3tcbitcdHUzMiBjb24xO1xuK1xuK1x0Y29uMSA9IChic3BfcHJpdi1cdTAwM2VpZCA9PSAxKSA/IFJLMzU2OF9HUkZfR01BQzFfQ09OMSA6XG4rXHRcdFx0XHQgICAgIFJLMzU2OF9HUkZfR01BQzBfQ09OMTtcbitcbitcdHJlZ21hcF93cml0ZShic3BfcHJpdi1cdTAwM2VncmYsIGNvbjEsIFJLMzU2OF9HTUFDX01PREVfU0dNSUlfUVNHTUlJKTtcbit9XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBya19nbWFjX29wcyByazM1Njhfb3BzID0ge1xuIFx0LmluaXQgPSByazM1NjhfaW5pdCxcbiBcdC5zZXRfdG9fcmdtaWkgPSByazM1Njhfc2V0X3RvX3JnbWlpLFxuK1x0LnNldF90b19zZ21paSA9IHJrMzU2OF9zZXRfdG9fc2dtaWksXG4rXG4gXHQuc2V0X3NwZWVkID0gcmtfc2V0X2Nsa19tYWNfc3BlZWQsXG4gXG4gXHQuZ21hY19waHlfaW50Zl9zZWxfbWFzayA9IEdFTk1BU0tfVTE2KDYsIDQpLFxuIFxuIFx0LnN1cHBvcnRzX3JtaWkgPSB0cnVlLFxuK1x0LnN1cHBvcnRzX3NnbWlpID0gdHJ1ZSxcbiBcbiBcdC5yZWdzX3ZhbGlkID0gdHJ1ZSxcbiBcdC5yZWdzID0ge1xuQEAgLTEyMDgsNiArMTIyOCw0MyBAQCBzdGF0aWMgdm9pZCBya19waHlfcG93ZXJkb3duKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuIFx0XHRkZXZfZXJyKGJzcF9wcml2LVx1MDAzZWRldiwgXCJmYWlsIHRvIGRpc2FibGUgcGh5LXN1cHBseVxcblwiKTtcbiB9XG4gXG4rc3RhdGljIGludCBya19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4re1xuK1x0c3RydWN0IGRldmljZV9ub2RlICpucCA9IHByaXYtXHUwMDNlZGV2aWNlLVx1MDAzZW9mX25vZGU7XG4rXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBjc19ub2RlO1xuK1x0c3RydWN0IGR3X3hwY3MgKnhwY3M7XG4rXG4rXHRwY3Nfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUobnAsIFwicGNzLWhhbmRsZVwiLCAwKTtcbitcdGlmICghcGNzX25vZGUpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0eHBjcyA9IHhwY3NfcmtfY3JlYXRlKHByaXYtXHUwMDNlZGV2aWNlLCBwY3Nfbm9kZSk7XG4rXHRvZl9ub2RlX3B1dChwY3Nfbm9kZSk7XG4rXHRpZiAoSVNfRVJSKHhwY3MpKVxuK1x0XHRyZXR1cm4gUFRSX0VSUih4cGNzKTtcbitcbitcdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IHhwY3M7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIHZvaWQgcmtfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuK3tcbitcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKVxuK1x0XHRyZXR1cm47XG4rXG4rXHR4cGNzX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKTtcbitcdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IE5VTEw7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJrX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuK1x0XHRcdFx0XHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbit7XG4rXHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNleHBjcylcbitcdFx0cmV0dXJuIE5VTEw7XG4rXG4rXHRyZXR1cm4geHBjc190b19waHlsaW5rX3Bjcyhwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MpO1xuK31cbitcbiBzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuIFx0XHRcdFx0XHQgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcbiBcdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgcmtfZ21hY19vcHMgKm9wcylcbkBAIC0xMzMwLDYgKzEzODcsNyBAQCBzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuIFxuIFx0YnNwX3ByaXYtXHUwMDNlc3VwcG9ydHNfcmdtaWkgPSBvcHMtXHUwMDNlc3VwcG9ydHNfcmdtaWkgfHwgISFvcHMtXHUwMDNlc2V0X3RvX3JnbWlpO1xuIFx0YnNwX3ByaXYtXHUwMDNlc3VwcG9ydHNfcm1paSA9IG9wcy1cdTAwM2VzdXBwb3J0c19ybWlpIHx8ICEhb3BzLVx1MDAzZXNldF90b19ybWlpO1xuK1x0YnNwX3ByaXYtXHUwMDNlc3VwcG9ydHNfc2dtaWkgPSBvcHMtXHUwMDNlc3VwcG9ydHNfc2dtaWkgfHwgISFvcHMtXHUwMDNlc2V0X3RvX3NnbWlpO1xuIFxuIFx0aWYgKG9wcy1cdTAwM2Vpbml0KSB7XG4gXHRcdHJldCA9IG9wcy1cdTAwM2Vpbml0KGJzcF9wcml2KTtcbkBAIC0xMzYxLDYgKzE0MTksMTAgQEAgc3RhdGljIGludCBya19nbWFjX2NoZWNrX29wcyhzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiBcdFx0aWYgKCFic3BfcHJpdi1cdTAwM2VzdXBwb3J0c19ybWlpKVxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRicmVhaztcbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuK1x0XHRpZiAoIWJzcF9wcml2LVx1MDAzZXN1cHBvcnRzX3NnbWlpKVxuK1x0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGRldl9lcnIoYnNwX3ByaXYtXHUwMDNlZGV2LFxuIFx0XHRcdFwidW5zdXBwb3J0ZWQgaW50ZXJmYWNlICVkXCIsIGJzcF9wcml2LVx1MDAzZXBoeV9pZmFjZSk7XG5AQCAtMTM3OSwxNiArMTQ0MSwxOSBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcG93ZXJ1cChzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4rXHRyZXQgPSBnbWFjX2Nsa19lbmFibGUoYnNwX3ByaXYsIHRydWUpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdGlmIChic3BfcHJpdi1cdTAwM2VwaHlfaWZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKVxuK1x0XHRnb3RvIHNldF9tb2RlO1xuK1xuIFx0cmV0ID0gcmtfZ2V0X3BoeV9pbnRmX3NlbChic3BfcHJpdi1cdTAwM2VwaHlfaWZhY2UpO1xuIFx0aWYgKHJldCBcdTAwM2MgMClcbi1cdFx0cmV0dXJuIHJldDtcbitcdFx0Z290byBjbGtfZGlzYWJsZTtcbiBcbiBcdGludGYgPSByZXQ7XG4gXG4tXHRyZXQgPSBnbWFjX2Nsa19lbmFibGUoYnNwX3ByaXYsIHRydWUpO1xuLVx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbi1cbiBcdGlmIChic3BfcHJpdi1cdTAwM2VnbWFjX3BoeV9pbnRmX3NlbF9tYXNrIHx8XG4gXHQgICAgYnNwX3ByaXYtXHUwMDNlZ21hY19ybWlpX21vZGVfbWFzaykge1xuIFx0XHQvKiBJZiBkZWZpbmVkLCBlbmNvZGUgdGhlIHBoeV9pbnRmX3NlbCB2YWx1ZSAqL1xuQEAgLTEzOTksMTAgKzE0NjQsOCBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcG93ZXJ1cChzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiBcdFx0XHRcdCAgICAgIGJzcF9wcml2LVx1MDAzZWdtYWNfcm1paV9tb2RlX21hc2spO1xuIFxuIFx0XHRyZXQgPSBya193cml0ZV9nbWFjX2dyZl9yZWcoYnNwX3ByaXYsIHZhbCk7XG4tXHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbi1cdFx0XHRnbWFjX2Nsa19lbmFibGUoYnNwX3ByaXYsIGZhbHNlKTtcbi1cdFx0XHRyZXR1cm4gcmV0O1xuLVx0XHR9XG4rXHRcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdFx0Z290byBjbGtfZGlzYWJsZTtcbiBcdH1cbiBcbiBcdGlmIChic3BfcHJpdi1cdTAwM2VjbG9jay5ybWlpX21vZGVfbWFzaykge1xuQEAgLTE0MTAsMTMgKzE0NzMsMTIgQEAgc3RhdGljIGludCBya19nbWFjX3Bvd2VydXAoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpXG4gXHRcdFx0XHQgICAgIGJzcF9wcml2LVx1MDAzZWNsb2NrLnJtaWlfbW9kZV9tYXNrKTtcbiBcbiBcdFx0cmV0ID0gcmtfd3JpdGVfY2xvY2tfZ3JmX3JlZyhic3BfcHJpdiwgdmFsKTtcbi1cdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuLVx0XHRcdGdtYWNfY2xrX2VuYWJsZShic3BfcHJpdiwgZmFsc2UpO1xuLVx0XHRcdHJldHVybiByZXQ7XG4tXHRcdH1cbitcdFx0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0XHRnb3RvIGNsa19kaXNhYmxlO1xuIFx0fVxuIFxuLVx0LypybWlpIG9yIHJnbWlpKi9cbitzZXRfbW9kZTpcbitcdC8qIHJtaWksIHJnbWlpLCBzZ21paSAqL1xuIFx0c3dpdGNoIChic3BfcHJpdi1cdTAwM2VwaHlfaWZhY2UpIHtcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuIFx0XHRkZXZfaW5mbyhkZXYsIFwiaW5pdCBmb3IgUkdNSUlcXG5cIik7XG5AQCAtMTQ0NywxNSArMTUwOSwyMCBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcG93ZXJ1cChzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiBcdFx0aWYgKGJzcF9wcml2LVx1MDAzZW9wcy1cdTAwM2VzZXRfdG9fcm1paSlcbiBcdFx0XHRic3BfcHJpdi1cdTAwM2VvcHMtXHUwMDNlc2V0X3RvX3JtaWkoYnNwX3ByaXYpO1xuIFx0XHRicmVhaztcbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuK1x0XHRkZXZfaW5mbyhkZXYsIFwiaW5pdCBmb3IgU0dNSUlcXG5cIik7XG4rXHRcdGlmIChic3BfcHJpdi1cdTAwM2VvcHMtXHUwMDNlc2V0X3RvX3NnbWlpKVxuK1x0XHRcdGJzcF9wcml2LVx1MDAzZW9wcy1cdTAwM2VzZXRfdG9fc2dtaWkoYnNwX3ByaXYpO1xuK1x0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGRldl9lcnIoZGV2LCBcIk5PIGludGVyZmFjZSBkZWZpbmVkIVxcblwiKTtcbitcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0Z290byBjbGtfZGlzYWJsZTtcbiBcdH1cbiBcbiBcdHJldCA9IHJrX3BoeV9wb3dlcnVwKGJzcF9wcml2KTtcbi1cdGlmIChyZXQpIHtcbi1cdFx0Z21hY19jbGtfZW5hYmxlKGJzcF9wcml2LCBmYWxzZSk7XG4tXHRcdHJldHVybiByZXQ7XG4tXHR9XG4rXHRpZiAocmV0KVxuK1x0XHRnb3RvIGNsa19kaXNhYmxlO1xuIFxuIFx0cG1fcnVudGltZV9nZXRfc3luYyhkZXYpO1xuIFxuQEAgLTE0NjMsNiArMTUzMCwxMCBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcG93ZXJ1cChzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiBcdFx0YnNwX3ByaXYtXHUwMDNlb3BzLVx1MDAzZWludGVncmF0ZWRfcGh5X3Bvd2VydXAoYnNwX3ByaXYpO1xuIFxuIFx0cmV0dXJuIDA7XG4rXG4rY2xrX2Rpc2FibGU6XG4rXHRnbWFjX2Nsa19lbmFibGUoYnNwX3ByaXYsIGZhbHNlKTtcbitcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJrX2dtYWNfcG93ZXJkb3duKHN0cnVjdCBya19wcml2X2RhdGEgKmdtYWMpXG5AQCAtMTQ4Niw2ICsxNTU3LDkgQEAgc3RhdGljIHZvaWQgcmtfZ2V0X2ludGVyZmFjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkICpic3BfcHJpdixcbiBcbiBcdGlmIChyay1cdTAwM2VzdXBwb3J0c19ybWlpKVxuIFx0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUksIGludGVyZmFjZXMpO1xuK1xuK1x0aWYgKHJrLVx1MDAzZXN1cHBvcnRzX3NnbWlpKVxuK1x0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJLCBpbnRlcmZhY2VzKTtcbiB9XG4gXG4gc3RhdGljIGludCBya19zZXRfY2xrX3R4X3JhdGUodm9pZCAqYnNwX3ByaXZfLCBzdHJ1Y3QgY2xrICpjbGtfdHhfaSxcbkBAIC0xNjAyLDYgKzE2NzYsMTcgQEAgc3RhdGljIGludCBya19nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRwbGF0X2RhdC1cdTAwM2VzdXNwZW5kID0gcmtfZ21hY19zdXNwZW5kO1xuIFx0cGxhdF9kYXQtXHUwMDNlcmVzdW1lID0gcmtfZ21hY19yZXN1bWU7XG4gXG4rXHRpZiAocGxhdF9kYXQtXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHtcbitcdFx0LyogU0dNSUkgY2xvY2sgYWx3YXlzIHJ1bnMgYXQgMTI1IE1IeiAqL1xuK1x0XHRwbGF0X2RhdC1cdTAwM2VzZXRfY2xrX3R4X3JhdGUgPSBOVUxMO1xuK1xuK1x0XHQvKiBTR01JSSByZXF1aXJlcyBhIFBDUyAqL1xuK1x0XHRwbGF0X2RhdC1cdTAwM2VkZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XG4rXHRcdHBsYXRfZGF0LVx1MDAzZXBjc19pbml0ID0gcmtfcGNzX2luaXQ7XG4rXHRcdHBsYXRfZGF0LVx1MDAzZXBjc19leGl0ID0gcmtfcGNzX2V4aXQ7XG4rXHRcdHBsYXRfZGF0LVx1MDAzZXNlbGVjdF9wY3MgPSBya19zZWxlY3RfcGNzO1xuK1x0fVxuK1xuIFx0cGxhdF9kYXQtXHUwMDNlYnNwX3ByaXYgPSBya19nbWFjX3NldHVwKHBkZXYsIHBsYXRfZGF0LCBkYXRhKTtcbiBcdGlmIChJU19FUlIocGxhdF9kYXQtXHUwMDNlYnNwX3ByaXYpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihwbGF0X2RhdC1cdTAwM2Vic3BfcHJpdik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jXG5pbmRleCAxMzYzNDk2NWJjMTlhLi4wMWRmNDc3NmVkYjNmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmNcbkBAIC0zNSw4ICszNSwxMSBAQCBzdGF0aWMgaW50IHJ6bjFfZHdtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFxuIHN0YXRpYyB2b2lkIHJ6bjFfZHdtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIHtcbi1cdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuLVx0XHRtaWljX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcyk7XG4rXHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4rXHRcdHJldHVybjtcbitcbitcdG1paWNfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKTtcbitcdHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MgPSBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpyem4xX2R3bWFjX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuY1xuaW5kZXggMWQ3ZjBhNTdkMjg4OS4uNmQ0YmMxZmU4Zjc1MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jXG5AQCAtNTM5LDggKzUzOSwxMSBAQCBzdGF0aWMgaW50IHNvY2ZwZ2FfZHdtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFxuIHN0YXRpYyB2b2lkIHNvY2ZwZ2FfZHdtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIHtcbi1cdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuLVx0XHRseW54X3Bjc19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuK1x0aWYgKCFwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRseW54X3Bjc19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuK1x0cHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcyA9IE5VTEw7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnNvY2ZwZ2FfZHdtYWNfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmNcbmluZGV4IGFmZTk4ZmY1YmRjYjAuLmQyZjc3ZjBjMjIzYTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jXG5AQCAtNDI2LDM2ICs0MjYsMTUgQEAgaW50IHN0bW1hY19tZGlvX3Jlc2V0KHN0cnVjdCBtaWlfYnVzICpidXMpXG4gaW50IHN0bW1hY19wY3Nfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4ge1xuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4tXHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZGV2bm9kZSwgKnBjc25vZGU7XG4tXHRzdHJ1Y3QgZHdfeHBjcyAqeHBjcyA9IE5VTEw7XG4tXHRpbnQgYWRkciwgcmV0O1xuLVxuLVx0ZGV2bm9kZSA9IGRldl9md25vZGUocHJpdi1cdTAwM2VkZXZpY2UpO1xuLVxuLVx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwY3NfaW5pdCkge1xuLVx0XHRyZXQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2luaXQocHJpdik7XG4tXHR9IGVsc2UgaWYgKGZ3bm9kZV9wcm9wZXJ0eV9wcmVzZW50KGRldm5vZGUsIFwicGNzLWhhbmRsZVwiKSkge1xuLVx0XHRwY3Nub2RlID0gZndub2RlX2ZpbmRfcmVmZXJlbmNlKGRldm5vZGUsIFwicGNzLWhhbmRsZVwiLCAwKTtcbi1cdFx0eHBjcyA9IHhwY3NfY3JlYXRlX2Z3bm9kZShwY3Nub2RlKTtcbi1cdFx0Zndub2RlX2hhbmRsZV9wdXQocGNzbm9kZSk7XG4tXHRcdHJldCA9IFBUUl9FUlJfT1JfWkVSTyh4cGNzKTtcbi1cdH0gZWxzZSBpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEgXHUwMDI2XHUwMDI2XG4tXHRcdCAgIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZXBjc19tYXNrKSB7XG4tXHRcdGFkZHIgPSBmZnMocHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEtXHUwMDNlcGNzX21hc2spIC0gMTtcbi1cdFx0eHBjcyA9IHhwY3NfY3JlYXRlX21kaW9kZXYocHJpdi1cdTAwM2VtaWksIGFkZHIpO1xuLVx0XHRyZXQgPSBQVFJfRVJSX09SX1pFUk8oeHBjcyk7XG4tXHR9IGVsc2Uge1xuK1x0aW50IHJldDtcbitcbitcdGlmICghcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19pbml0KVxuIFx0XHRyZXR1cm4gMDtcbi1cdH1cbiBcbitcdHJldCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwY3NfaW5pdChwcml2KTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKHByaXYtXHUwMDNlZGV2aWNlLCByZXQsIFwiTm8geFBDUyBmb3VuZFxcblwiKTtcbiBcbi1cdGlmICh4cGNzKVxuLVx0XHR4cGNzX2NvbmZpZ19lZWVfbXVsdF9mYWN0KHhwY3MsIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtdWx0X2ZhY3RfMTAwbnMpO1xuLVxuLVx0cHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzID0geHBjcztcbi1cbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC00NjMsMTQgKzQ0MiwxMCBAQCB2b2lkIHN0bW1hY19wY3NfY2xlYW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4ge1xuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXG4tXHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19leGl0KVxuLVx0XHRwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2V4aXQocHJpdik7XG4tXG4tXHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNleHBjcylcbitcdGlmICghcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19leGl0KVxuIFx0XHRyZXR1cm47XG4gXG4tXHR4cGNzX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKTtcbi1cdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IE5VTEw7XG4rXHRwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2V4aXQocHJpdik7XG4gfVxuIFxuIHN0cnVjdCBzdG1tYWNfY2xrX3JhdGUge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnIGIvZHJpdmVycy9uZXQvcGNzL0tjb25maWdcbmluZGV4IGU0MTdmZDY2ZjY2MGEuLjg4YmM0MDc5MWU2OWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZ1xuKysrIGIvZHJpdmVycy9uZXQvcGNzL0tjb25maWdcbkBAIC0xMiw2ICsxMiwyOSBAQCBjb25maWcgUENTX1hQQ1NcbiBcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBkcml2ZXIgYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIFN5bm9wc3lzXG4gXHQgIERlc2lnbldhcmUgWFBDUyBjb250cm9sbGVycy5cbiBcbitpZiBQQ1NfWFBDU1xuK1xuK2NvbmZpZyBQQ1NfWFBDU19QTEFURk9STVxuK1x0dHJpc3RhdGUgXCJHZW5lcmljIFhQQ1MgY29udHJvbGxlciBzdXBwb3J0XCJcbitcdGRlZmF1bHQgUENTX1hQQ1NcbitcdGhlbHBcbitcdCAgR2VuZXJpYyBEV1hQQ1MgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCByZXF1aXJlIGFueVxuK1x0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXG4rXHQgIGRhdGEgZm9yIHNldHVwLlxuK1xuK1x0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuK1xuK2NvbmZpZyBQQ1NfWFBDU19ST0NLQ0hJUFxuK1x0dHJpc3RhdGUgXCJSb2NrY2hpcCBYUENTIGNvbnRyb2xsZXIgc3VwcG9ydFwiXG4rXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcbitcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1JPQ0tDSElQIHx8IENPTVBJTEVfVEVTVClcbitcdGhlbHBcbitcdCAgU3VwcG9ydCBmb3IgWFBDUyBjb250cm9sbGVyIG9uIFJvY2tjaGlwIFJLMzU2eCBTb0MuXG4rXG4rXHQgIElmIHlvdSBoYXZlIGEgUm9ja2NoaXAgU29DIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbitcbitlbmRpZiAjIFBDU19YUENTXG4rXG4gY29uZmlnIFBDU19MWU5YXG4gXHR0cmlzdGF0ZVxuIFx0aGVscFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZVxuaW5kZXggNGY3OTIwNjE4YjkwMC4uYzgwOWI3Zjk0MmE1MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZVxuKysrIGIvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlXG5AQCAtMSwxMCArMSw5IEBAXG4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICMgTWFrZWZpbGUgZm9yIExpbnV4IFBDUyBkcml2ZXJzXG4gXG4tcGNzX3hwY3MtJChDT05GSUdfUENTX1hQQ1MpXHQ6PSBwY3MteHBjcy5vIHBjcy14cGNzLXBsYXQubyBcXFxuLVx0XHRcdFx0ICAgcGNzLXhwY3MtbnhwLm8gcGNzLXhwY3Mtd3gub1xuLVxuLW9iai0kKENPTkZJR19QQ1NfWFBDUylcdFx0Kz0gcGNzX3hwY3Mub1xuK29iai0kKENPTkZJR19QQ1NfWFBDUykgKz0gcGNzLXhwY3MubyBwY3MteHBjcy1ueHAubyBwY3MteHBjcy13eC5vXG4rb2JqLSQoQ09ORklHX1BDU19YUENTX1BMQVRGT1JNKSArPSBwY3MteHBjcy1wbGF0Lm9cbitvYmotJChDT05GSUdfUENTX1hQQ1NfUk9DS0NISVApICs9IHBjcy14cGNzLXJrLm9cbiBvYmotJChDT05GSUdfUENTX0xZTlgpXHRcdCs9IHBjcy1seW54Lm9cbiBvYmotJChDT05GSUdfUENTX01US19MWU5YSSlcdCs9IHBjcy1tdGstbHlueGkub1xuIG9iai0kKENPTkZJR19QQ1NfUlpOMV9NSUlDKVx0Kz0gcGNzLXJ6bjEtbWlpYy5vXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjRlZjIwYjA5M2RhZGFcbi0tLSAvZGV2L251bGxcbisrKyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1yay5jXG5AQCAtMCwwICsxLDU2MSBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rLypcbisgKiBSb2NrY2hpcCBYUENTIHBsYXRmb3JtIGRldmljZSBkcml2ZXJcbisgKlxuKyAqIEJhc2VkIG9uIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIFhQQ1MgcGxhdGZvcm0gZHJpdmVyLlxuKyAqIENvcHlyaWdodCAoQykgMjAyNCBTZXJnZSBTZW1pblxuKyAqXG4rICogQWRhcHRlZCBmb3IgUm9ja2NoaXAgU29Dcywgd2l0aCByZWZlcmVuY2UgdG8gdGhlIFJvY2tjaGlwIE9FTSBkcml2ZXIuXG4rICogQ29weXJpZ2h0IChDKSAyMDI2IENvaWEgUHJhbnRcbisgKi9cbitcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9hdG9taWMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9jbGsuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvaW8uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvcG9sbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbWRpby5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfcGxhdGZvcm0uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkvcGh5LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BtX2RvbWFpbi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcG1fcnVudGltZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NpemVzLmhcdTAwM2VcbitcbisjaW5jbHVkZSBcInBjcy14cGNzLmhcIlxuK1xuK3N0cnVjdCBkd194cGNzX3JrIHtcbitcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7XG4rXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuK1x0dm9pZCBfX2lvbWVtICpyZWdfYmFzZTtcbitcdHN0cnVjdCBwaHkgKnNlcmRlc19waHk7XG4rXHRzdHJ1Y3QgY2xrICpjc3JfY2xrO1xuK1x0c3RydWN0IGNsayAqZWVlX2Nsaztcbit9O1xuK1xuK3N0YXRpYyBwdHJkaWZmX3QgeHBjc19ya19hZGRyX2Zvcm1hdChpbnQgZGV2LCBpbnQgcmVnKVxuK3tcbitcdHJldHVybiBGSUVMRF9QUkVQKDB4NzAwMDAsIGRldikgfCBGSUVMRF9QUkVQKDB4ZmZmZiwgcmVnKTtcbit9XG4rXG4rc3RhdGljIGludCB4cGNzX3JrX3JlYWRfcmVnKHN0cnVjdCBkd194cGNzX3JrICpweHBjcywgaW50IGRldiwgaW50IHJlZylcbit7XG4rXHRwdHJkaWZmX3QgY3NyO1xuK1x0aW50IHJldDtcbitcbitcdGNzciA9IHhwY3NfcmtfYWRkcl9mb3JtYXQoZGV2LCByZWcpO1xuK1xuK1x0cmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldChcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldik7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0ID0gcmVhZGwocHhwY3MtXHUwMDNlcmVnX2Jhc2UgKyAoY3NyIFx1MDAzY1x1MDAzYyAyKSkgXHUwMDI2IDB4ZmZmZjtcbitcbitcdHBtX3J1bnRpbWVfcHV0KFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2KTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuK3N0YXRpYyBpbnQgeHBjc19ya193cml0ZV9yZWcoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzLCBpbnQgZGV2LCBpbnQgcmVnLCB1MTYgdmFsKVxuK3tcbitcdHB0cmRpZmZfdCBjc3I7XG4rXHRpbnQgcmV0O1xuK1xuK1x0Y3NyID0geHBjc19ya19hZGRyX2Zvcm1hdChkZXYsIHJlZyk7XG4rXG4rXHRyZXQgPSBwbV9ydW50aW1lX3Jlc3VtZV9hbmRfZ2V0KFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2KTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHR3cml0ZWwodmFsLCBweHBjcy1cdTAwM2VyZWdfYmFzZSArIChjc3IgXHUwMDNjXHUwMDNjIDIpKTtcbitcbitcdHBtX3J1bnRpbWVfcHV0KFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2KTtcbitcdHJldHVybiAwO1xuK31cbitcbisjZGVmaW5lIFJPQ0tDSElQX01NRF9NSUkxXHQyXG4rI2RlZmluZSBST0NLQ0hJUF9NTURfTUlJMlx0M1xuKyNkZWZpbmUgUk9DS0NISVBfTU1EX01JSTNcdDRcbisjZGVmaW5lIFJPQ0tDSElQX01NRF9QTUFQTURcdDZcbisjZGVmaW5lIFJPQ0tDSElQX01NRF9NSUlcdDdcbitcbitzdGF0aWMgYm9vbCB4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShpbnQgYWRkcilcbit7XG4rXHRyZXR1cm4gIShhZGRyIFx1MDAzYyAwIHx8IGFkZHIgXHUwMDNlIDMpO1xuK31cbitcbitzdGF0aWMgaW50IHhwY3NfcmtfbWRpb19yZWFkX3JlbWFwcGluZyhpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZylcbit7XG4rXHRzd2l0Y2ggKGRldikge1xuK1x0Y2FzZSBNRElPX01NRF9QTUFQTUQ6XG4rXHRcdHJldHVybiBST0NLQ0hJUF9NTURfUE1BUE1EO1xuK1x0Y2FzZSBNRElPX01NRF9WRU5EMjpcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHRyZXR1cm4gLUVOWElPO1xuK1x0fVxuK1xuK1x0LyogcmVhZCByZW1hcHBpbmcgdG8gTUlJIGlzIHBlcmZvcm1lZCBieSBIVyAqL1xuK1x0c3dpdGNoIChhZGRyKSB7XG4rXHRjYXNlIDA6XG4rXHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJO1xuK1x0Y2FzZSAxOlxuK1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTE7XG4rXHRjYXNlIDI6XG4rXHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMjtcbitcdGNhc2UgMzpcbitcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkzO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyBpbnQgeHBjc19ya19tZGlvX3dyaXRlX3JlbWFwcGluZyhpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZylcbit7XG4rXHRzd2l0Y2ggKGRldikge1xuK1x0Y2FzZSBNRElPX01NRF9QTUFQTUQ6XG4rXHRcdHJldHVybiBST0NLQ0hJUF9NTURfUE1BUE1EO1xuK1x0Y2FzZSBNRElPX01NRF9WRU5EMjpcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHRyZXR1cm4gLUVOWElPO1xuK1x0fVxuK1xuK1x0LyogV3JpdGFibGUgb25seSBvbiBNSUkgKi9cbitcdHN3aXRjaCAocmVnKSB7XG4rXHRjYXNlIERXX1ZSX01JSV9BTl9DVFJMOlxuK1x0Y2FzZSBEV19WUl9NSUlfQU5fSU5UUl9TVFM6XG4rXHRjYXNlIERXX1ZSX01JSV9FRUVfTUNUUkwwOlxuK1x0Y2FzZSBEV19WUl9NSUlfRUVFX01DVFJMMTpcbitcdGNhc2UgRFdfVlJfTUlJX0RJR19DVFJMMjpcbitcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUk7XG4rXHRkZWZhdWx0OlxuK1x0XHRicmVhaztcbitcdH1cbitcbitcdHN3aXRjaCAoYWRkcikge1xuK1x0Y2FzZSAwOlxuK1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTtcbitcdGNhc2UgMTpcbitcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkxO1xuK1x0Y2FzZSAyOlxuK1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTI7XG4rXHRjYXNlIDM6XG4rXHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMztcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1x0fVxuK31cbitcbitzdGF0aWMgaW50IHhwY3NfcmtfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWcpXG4re1xuK1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLVx1MDAzZXByaXY7XG4rXHRpbnQgZGV2O1xuK1xuK1x0aWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShhZGRyKSlcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4rXHRkZXYgPSB4cGNzX3JrX21kaW9fcmVhZF9yZW1hcHBpbmcoYWRkciwgTURJT19NTURfVkVORDIsIHJlZyk7XG4rXHRpZiAoZGV2IFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gMHhmZmZmO1xuK1xuK1x0cmV0dXJuIHhwY3NfcmtfcmVhZF9yZWcocHhwY3MsIGRldiwgcmVnKTtcbit9XG4rXG4rc3RhdGljIGludCB4cGNzX3JrX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcbit7XG4rXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtXHUwMDNlcHJpdjtcbitcdGludCBkZXY7XG4rXG4rXHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbitcdGRldiA9IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoYWRkciwgTURJT19NTURfVkVORDIsIHJlZyk7XG4rXHRpZiAoZGV2IFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdHJldHVybiB4cGNzX3JrX3dyaXRlX3JlZyhweHBjcywgZGV2LCByZWcsIHZhbCk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZylcbit7XG4rXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtXHUwMDNlcHJpdjtcbitcbitcdGlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoYWRkcikpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0ZGV2ID0geHBjc19ya19tZGlvX3JlYWRfcmVtYXBwaW5nKGFkZHIsIGRldiwgcmVnKTtcbitcdGlmIChkZXYgXHUwMDNjIDApXG4rXHRcdHJldHVybiAweGZmZmY7XG4rXG4rXHRyZXR1cm4geHBjc19ya19yZWFkX3JlZyhweHBjcywgZGV2LCByZWcpO1xuK31cbitcbitzdGF0aWMgaW50IHhwY3Nfcmtfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2LCBpbnQgcmVnLCB1MTYgdmFsKVxuK3tcbitcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGJ1cy1cdTAwM2Vwcml2O1xuK1xuK1x0aWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShhZGRyKSlcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4rXHRkZXYgPSB4cGNzX3JrX21kaW9fd3JpdGVfcmVtYXBwaW5nKGFkZHIsIGRldiwgcmVnKTtcbitcdGlmIChkZXYgXHUwMDNjIDApXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cmV0dXJuIHhwY3Nfcmtfd3JpdGVfcmVnKHB4cGNzLCBkZXYsIHJlZywgdmFsKTtcbit9XG4rXG4rc3RhdGljIHN0cnVjdCBkd194cGNzX3JrICp4cGNzX3JrX2NyZWF0ZV9kYXRhKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4re1xuK1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzO1xuK1xuK1x0cHhwY3MgPSBkZXZtX2t6YWxsb2MoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHNpemVvZigqcHhwY3MpLCBHRlBfS0VSTkVMKTtcbitcdGlmICghcHhwY3MpXG4rXHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuK1xuK1x0cHhwY3MtXHUwMDNlcGRldiA9IHBkZXY7XG4rXG4rXHRkZXZfc2V0X2RydmRhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHB4cGNzKTtcbitcbitcdHJldHVybiBweHBjcztcbit9XG4rXG4rc3RhdGljIGludCB4cGNzX3JrX3NlcmRlc19waHlfaW5pdChzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXG4re1xuK1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG4rXG4rXHRweHBjcy1cdTAwM2VzZXJkZXNfcGh5ID0gZGV2bV9waHlfZ2V0KGRldiwgXCJzZXJkZXNcIik7XG4rXHRpZiAoSVNfRVJSKHB4cGNzLVx1MDAzZXNlcmRlc19waHkpKVxuK1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHhwY3MtXHUwMDNlc2VyZGVzX3BoeSksXG4rXHRcdFx0XHRcdFwiRmFpbGVkIHRvIGdldCBTZXJEZXMgUEhZXFxuXCIpO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9mZih2b2lkICpkYXRhKVxuK3tcbitcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRhdGE7XG4rXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbitcbitcdHBoeV9wb3dlcl9vZmYocHhwY3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4rXHRwaHlfZXhpdChweHBjcy1cdTAwM2VzZXJkZXNfcGh5KTtcbitcbitcdGRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgZmFsc2UpO1xuK31cbitcbitzdGF0aWMgaW50IHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9uKHN0cnVjdCBkd194cGNzX3JrICpweHBjcylcbit7XG4rXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbitcdGludCByZXQ7XG4rXG4rXHQvKlxuK1x0ICogVGhlIHBvd2VyIGRvbWFpbiBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBlbmFibGVkLCB3aGljaCBhbGxvd3MgdXMgdG9cbitcdCAqIGR5bmFtaWNhbGx5IHR1cm4gdGhlIENTUiBjbG9jayBvbi9vZmYgdXNpbmcgUE0gd2hpbGUga2VlcGluZyB0aGUgUENTXG4rXHQgKiBwb3dlcmVkIG9uLlxuK1x0ICovXG4rXHRyZXQgPSBkZXZfcG1fZ2VucGRfcnBtX2Fsd2F5c19vbihkZXYsIHRydWUpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRkZXZfZXJyKGRldiwgXCJGYWlsZWQgdG8gcG93ZXIgb24gcG93ZXItZG9tYWluc1xcblwiKTtcbitcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdHJldCA9IHBoeV9pbml0KHB4cGNzLVx1MDAzZXNlcmRlc19waHkpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRkZXZfZXJyKGRldiwgXCJGYWlsZWQgdG8gaW5pdCBTZXJEZXMgUEhZXFxuXCIpO1xuK1x0XHRnb3RvIHBtX2RvbWFpbjtcbitcdH1cbitcbitcdHJldCA9IHBoeV9wb3dlcl9vbihweHBjcy1cdTAwM2VzZXJkZXNfcGh5KTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2VycihkZXYsIFwiRmFpbGVkIHRvIHBvd2VyIG9uIFNlckRlcyBQSFlcXG5cIik7XG4rXHRcdGdvdG8gc2VyZGVzX3BoeTtcbitcdH1cbitcbitcdHJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9mZiwgcHhwY3MpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRkZXZfZXJyKGRldiwgXCJGYWlsZWQgdG8gcmVnaXN0ZXIgZGV2bSBmb3IgU2VyRGVzIFBIWTogJWRcXG5cIiwgcmV0KTtcbitcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK1xuK3NlcmRlc19waHk6XG4rXHRwaHlfZXhpdChweHBjcy1cdTAwM2VzZXJkZXNfcGh5KTtcbitwbV9kb21haW46XG4rXHRkZXZfcG1fZ2VucGRfcnBtX2Fsd2F5c19vbihkZXYsIGZhbHNlKTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuK3N0YXRpYyBpbnQgeHBjc19ya19pbml0X3JlcyhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXG4re1xuK1x0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHB4cGNzLVx1MDAzZXBkZXY7XG4rXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbitcdHN0cnVjdCByZXNvdXJjZSAqcmVzO1xuK1xuK1x0cmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTtcbitcdGlmICghcmVzKSB7XG4rXHRcdGRldl9lcnIoZGV2LCBcIk5vIHJlZy1zcGFjZSBmb3VuZFxcblwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRpZiAocmVzb3VyY2Vfc2l6ZShyZXMpIFx1MDAzYyBTWl8yTSkge1xuK1x0XHRkZXZfZXJyKGRldiwgXCJJbnZhbGlkIHJlZy1zcGFjZSBzaXplXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbitcdHB4cGNzLVx1MDAzZXJlZ19iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTtcbitcdGlmIChJU19FUlIocHhwY3MtXHUwMDNlcmVnX2Jhc2UpKSB7XG4rXHRcdGRldl9lcnIoZGV2LCBcIkZhaWxlZCB0byBtYXAgcmVnLXNwYWNlXFxuXCIpO1xuK1x0XHRyZXR1cm4gUFRSX0VSUihweHBjcy1cdTAwM2VyZWdfYmFzZSk7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIHZvaWQgeHBjc19ya19leGl0X2Nsayh2b2lkICpkYXRhKVxuK3tcbitcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRhdGE7XG4rXG4rXHRjbGtfZGlzYWJsZV91bnByZXBhcmUocHhwY3MtXHUwMDNlZWVlX2Nsayk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgeHBjc19ya19pbml0X2NsayhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXG4re1xuK1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cHhwY3MtXHUwMDNlY3NyX2NsayA9IGRldm1fY2xrX2dldChkZXYsIFwiY3NyXCIpO1xuK1x0aWYgKElTX0VSUihweHBjcy1cdTAwM2Vjc3JfY2xrKSlcbitcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHB4cGNzLVx1MDAzZWNzcl9jbGspLFxuK1x0XHRcdFx0XHQgXCJGYWlsZWQgdG8gZ2V0IENTUiBjbG9ja1xcblwiKTtcbitcbitcdHBtX3J1bnRpbWVfc2V0X3N1c3BlbmRlZChkZXYpO1xuK1x0cmV0ID0gZGV2bV9wbV9ydW50aW1lX2VuYWJsZShkZXYpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRkZXZfZXJyKGRldiwgXCJGYWlsZWQgdG8gZW5hYmxlIHJ1bnRpbWUtUE1cXG5cIik7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRweHBjcy1cdTAwM2VlZWVfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgXCJlZWVcIik7XG4rXHRpZiAoSVNfRVJSKHB4cGNzLVx1MDAzZWVlZV9jbGspKVxuK1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHhwY3MtXHUwMDNlZWVlX2NsayksXG4rXHRcdFx0XHRcdCBcIkZhaWxlZCB0byBnZXQgRUVFIGNsb2NrXFxuXCIpO1xuK1xuK1x0cmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHB4cGNzLVx1MDAzZWVlZV9jbGspO1xuK1x0aWYgKHJldCkge1xuK1x0XHRkZXZfZXJyKGRldiwgXCJGYWlsZWQgdG8gZW5hYmxlIEVFRSBjbG9ja1xcblwiKTtcbitcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdHJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIHhwY3NfcmtfZXhpdF9jbGssIHB4cGNzKTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2VycihkZXYsIFwiRmFpbGVkIHRvIHJlZ2lzdGVyIGRldm0gZm9yIEVFRSBjbG9jazogJWRcXG5cIiwgcmV0KTtcbitcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9idXMoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKVxuK3tcbitcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2O1xuK1x0c3RhdGljIGF0b21pY190IGlkID0gQVRPTUlDX0lOSVQoLTEpO1xuK1x0c3RydWN0IG1paV9idXMgKmJ1cztcbitcdGludCByZXQ7XG4rXG4rXHRidXMgPSBkZXZtX21kaW9idXNfYWxsb2Nfc2l6ZShkZXYsIDApO1xuK1x0aWYgKCFidXMpXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0YnVzLVx1MDAzZW5hbWUgPSBcIlJvY2tjaGlwIERXIFhQQ1MgTUNJL0FQQjNcIjtcbitcdGJ1cy1cdTAwM2VyZWFkID0geHBjc19ya19yZWFkX2MyMjtcbitcdGJ1cy1cdTAwM2V3cml0ZSA9IHhwY3Nfcmtfd3JpdGVfYzIyO1xuK1x0YnVzLVx1MDAzZXJlYWRfYzQ1ID0geHBjc19ya19yZWFkX2M0NTtcbitcdGJ1cy1cdTAwM2V3cml0ZV9jNDUgPSB4cGNzX3JrX3dyaXRlX2M0NTtcbitcdGJ1cy1cdTAwM2VwaHlfbWFzayA9IH4wO1xuK1x0YnVzLVx1MDAzZXBhcmVudCA9IGRldjtcbitcdGJ1cy1cdTAwM2Vwcml2ID0gcHhwY3M7XG4rXG4rXHRzbnByaW50ZihidXMtXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSxcbitcdFx0IFwicm9ja2NoaXBfZHd4cGNzLSV4XCIsIGF0b21pY19pbmNfcmV0dXJuKFx1MDAyNmlkKSk7XG4rXG4rXHQvKlxuK1x0ICogTURJTy1idXMgaGVyZSBzZXJ2ZXMgYXMganVzdCBhIGJhY2stZW5kIGVuZ2luZSBhYnN0cmFjdGluZyBvdXRcbitcdCAqIHRoZSBNRElPIGFuZCBNQ0kvQVBCMyBJTyBpbnRlcmZhY2VzIHV0aWxpemVkIGZvciB0aGUgUm9ja2NoaXAgRFdYUENTIENTUnNcbitcdCAqIGFjY2Vzcy5cbitcdCAqL1xuK1x0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzKTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2VycihkZXYsIFwiRmFpbGVkIHRvIGNyZWF0ZSBNRElPIGJ1c1xcblwiKTtcbitcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdHB4cGNzLVx1MDAzZWJ1cyA9IGJ1cztcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgaW50IHhwY3NfcmtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbit7XG4rXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cHhwY3MgPSB4cGNzX3JrX2NyZWF0ZV9kYXRhKHBkZXYpO1xuK1x0aWYgKElTX0VSUihweHBjcykpXG4rXHRcdHJldHVybiBQVFJfRVJSKHB4cGNzKTtcbitcbitcdC8qXG4rXHQgKiBUaGUgWFBDUyBtYXkgYmUgYXR0YWNoZWQgdG8gYSBwb3dlciBkb21haW4gKGUuZy4gUERfUElQRSkuIFRoZSBkb21haW5cbitcdCAqIG11c3QgYmUgcG93ZXJlZCBvbiBiZWZvcmUgYW55IHJlZ2lzdGVyIGFjY2Vzcywgb3RoZXJ3aXNlIHRoZSBTb0Mgd2lsbFxuK1x0ICogdHJpZ2dlciBhIHN5bmNocm9ub3VzIGV4dGVybmFsIGFib3J0IChTRXJyb3IpLlxuK1x0ICpcbitcdCAqIEFjY2Vzc2luZyB0aGUgWFBDUyByZWdpc3RlcnMgYWxzbyByZXF1aXJlcyBhIFRYIGNsb2NrIGZyb20gdGhlIFNlckRlcyxcbitcdCAqIHdoaWNoIGlzIG5lZWRlZCBmb3IgdGhlIHNvZnQgcmVzZXQuXG4rXHQgKi9cbitcdHJldCA9IHhwY3Nfcmtfc2VyZGVzX3BoeV9pbml0KHB4cGNzKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRyZXQgPSB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvbihweHBjcyk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0ID0geHBjc19ya19pbml0X3JlcyhweHBjcyk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0ID0geHBjc19ya19pbml0X2NsayhweHBjcyk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0ID0geHBjc19ya19pbml0X2J1cyhweHBjcyk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHhwY3NfcmtfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4re1xuK1x0LypcbitcdCAqIEZvcmNlIHRoZSBkZXZpY2UgaW50byBzdXNwZW5kIHN0YXRlIHRvIGdhdGUgdGhlIENTUiBjbG9jay4gVGhpc1xuK1x0ICogcHJldmVudHMgY2xvY2sgbGVha2FnZSBhZnRlciBkZXZtIHJlc291cmNlcyBhcmUgcmVsZWFzZWQuXG4rXHQgKlxuK1x0ICogVGhpcyBpcyBzYWZlIGJlY2F1c2U6XG4rXHQgKiAgIDEuIFRoZSBkZXZpY2UgbGluayAoRExfRkxBR19BVVRPUkVNT1ZFX0NPTlNVTUVSKSBwcmV2ZW50cyB1bmJpbmRcbitcdCAqICAgICAgd2hpbGUgYW55IGNvbnN1bWVyIChNQUMpIGlzIHN0aWxsIGF0dGFjaGVkLlxuK1x0ICogICAyLiBObyBNRElPIGFjY2VzcyB3aWxsIG9jY3VyIGFmdGVyIHRoaXMgcG9pbnQsIGFzIHRoZSBNQUMgZHJpdmVyXG4rXHQgKiAgICAgIGhhcyBhbHJlYWR5IGJlZW4gdW5ib3VuZCAob3Igd2UgYXJlIGJlaW5nIHJlbW92ZWQgYmVjYXVzZSBub1xuK1x0ICogICAgICBjb25zdW1lciBleGlzdHMpLlxuK1x0ICovXG4rXHRwbV9ydW50aW1lX2ZvcmNlX3N1c3BlbmQoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB4cGNzX3JrX29mX2lkc1tdID0ge1xuK1x0eyAuY29tcGF0aWJsZSA9IFwicm9ja2NoaXAscmszNTY4LXhwY3NcIiB9LFxuK1x0eyAvKiBzZW50aW5lbCAqLyB9LFxuK307XG4rTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgeHBjc19ya19vZl9pZHMpO1xuK1xuK3N0cnVjdCBkd194cGNzICp4cGNzX3JrX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4re1xuK1x0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjtcbitcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25wO1xuK1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzO1xuK1x0c3RydWN0IGR3X3hwY3MgKnhwY3M7XG4rXHR1MzIgcG9ydDtcbitcbitcdGlmICghb2ZfZGV2aWNlX2lzX2F2YWlsYWJsZShucCkpXG4rXHRcdHJldHVybiBFUlJfUFRSKC1FTk9ERVYpO1xuK1xuK1x0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcInJlZ1wiLCBcdTAwMjZwb3J0KSlcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4rXG4rXHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKChpbnQpcG9ydCkpXG4rXHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuK1xuK1x0LyogVGhlIFhQQ1MgcGRldiBpcyBhdHRhY2hlZCB0byB0aGUgcGFyZW50IG5vZGUgKi9cbitcdHBjc19ucCA9IG9mX2dldF9wYXJlbnQobnApO1xuK1x0aWYgKCFwY3NfbnApXG4rXHRcdHJldHVybiBFUlJfUFRSKC1FTk9ERVYpO1xuK1xuK1x0aWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKHBjc19ucCkpIHtcbitcdFx0b2Zfbm9kZV9wdXQocGNzX25wKTtcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7XG4rXHR9XG4rXG4rXHRpZiAoIW9mX21hdGNoX25vZGUoeHBjc19ya19vZl9pZHMsIHBjc19ucCkpIHtcbitcdFx0b2Zfbm9kZV9wdXQocGNzX25wKTtcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4rXHR9XG4rXG4rXHRwZGV2ID0gb2ZfZmluZF9kZXZpY2VfYnlfbm9kZShwY3NfbnApO1xuK1x0b2Zfbm9kZV9wdXQocGNzX25wKTtcbitcdGlmICghcGRldilcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVQUk9CRV9ERUZFUik7XG4rXG4rXHRkZXZpY2VfbG9jayhcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4rXHRweHBjcyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuK1x0aWYgKCFweHBjcyB8fCAhcHhwY3MtXHUwMDNlYnVzKSB7XG4rXHRcdGRldmljZV91bmxvY2soXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuK1x0XHRwdXRfZGV2aWNlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVQUk9CRV9ERUZFUik7XG4rXHR9XG4rXG4rXHR4cGNzID0geHBjc19jcmVhdGVfbWRpb2RldihweHBjcy1cdTAwM2VidXMsIChpbnQpcG9ydCk7XG4rXHRkZXZpY2VfdW5sb2NrKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbitcdGlmIChJU19FUlIoeHBjcykpIHtcbitcdFx0cHV0X2RldmljZShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4rXHRcdHJldHVybiB4cGNzO1xuK1x0fVxuK1xuK1x0aWYgKCFkZXZpY2VfbGlua19hZGQoZGV2LCBcdTAwMjZwZGV2LVx1MDAzZWRldiwgRExfRkxBR19BVVRPUkVNT1ZFX0NPTlNVTUVSKSkge1xuK1x0XHR4cGNzX2Rlc3Ryb3koeHBjcyk7XG4rXHRcdHB1dF9kZXZpY2UoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuK1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbitcdH1cbitcbitcdHB1dF9kZXZpY2UoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuK1x0cmV0dXJuIHhwY3M7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKHhwY3NfcmtfY3JlYXRlKTtcbitcbitzdGF0aWMgaW50IHhwY3NfcmtfcG1fcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcbit7XG4rXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbitcbitcdGNsa19kaXNhYmxlX3VucHJlcGFyZShweHBjcy1cdTAwM2Vjc3JfY2xrKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgaW50IHhwY3NfcmtfcG1fcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuK3tcbitcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuK1xuK1x0cmV0dXJuIGNsa19wcmVwYXJlX2VuYWJsZShweHBjcy1cdTAwM2Vjc3JfY2xrKTtcbit9XG4rXG4rc3RhdGljIERFRklORV9SVU5USU1FX0RFVl9QTV9PUFMoeHBjc19ya19wbV9vcHMsXG4rXHRcdFx0ICAgeHBjc19ya19wbV9ydW50aW1lX3N1c3BlbmQsXG4rXHRcdFx0ICAgeHBjc19ya19wbV9ydW50aW1lX3Jlc3VtZSxcbitcdFx0XHQgICBOVUxMKTtcbitcbitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB4cGNzX3JrX2RyaXZlciA9IHtcbitcdC5wcm9iZSA9IHhwY3NfcmtfcHJvYmUsXG4rXHQucmVtb3ZlID0geHBjc19ya19yZW1vdmUsXG4rXHQuZHJpdmVyID0ge1xuK1x0XHQubmFtZSA9IFwicmtfeHBjcy1kd3hwY3NcIixcbitcdFx0LnBtID0gcG1fcHRyKFx1MDAyNnhwY3NfcmtfcG1fb3BzKSxcbitcdFx0Lm9mX21hdGNoX3RhYmxlID0geHBjc19ya19vZl9pZHMsXG4rXHR9LFxuK307XG4rbW9kdWxlX3BsYXRmb3JtX2RyaXZlcih4cGNzX3JrX2RyaXZlcik7XG4rXG4rTU9EVUxFX0RFU0NSSVBUSU9OKFwiUm9ja2NoaXAgWFBDUyBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyXCIpO1xuK01PRFVMRV9BVVRIT1IoXCJDb2lhIFByYW50IFx1MDAzY2NvaWFwcmFudEBnbWFpbC5jb21cdTAwM2VcIik7XG4rTU9EVUxFX0xJQ0VOU0UoXCJHUExcIik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuY1xuaW5kZXggMDMzN2UyYmNjMDEyNS4uNTBiOWNkZjk0ZmRhYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jXG4rKysgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuY1xuQEAgLTgxNiw5ICs4MTYsMTQgQEAgc3RhdGljIGludCB4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdHJldHVybiByZXQ7XG4gXG4rXHQvKiBDbGVhciBDTDM3IEFOIGNvbXBsZXRlIHN0YXR1cyAqL1xuK1x0cmV0ID0geHBjc193cml0ZSh4cGNzLCBNRElPX01NRF9WRU5EMiwgRFdfVlJfTUlJX0FOX0lOVFJfU1RTLCAwKTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdHJldHVybiByZXQ7XG4rXG4gXHRpZiAobmVnX21vZGUgPT0gUEhZTElOS19QQ1NfTkVHX0lOQkFORF9FTkFCTEVEKVxuIFx0XHRyZXQgPSB4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfQk1DUixcbi1cdFx0XHRcdCBtZGlvX2N0cmwgfCBCTUNSX0FORU5BQkxFKTtcbitcdFx0XHRcdCBtZGlvX2N0cmwgfCBCTUNSX0FORU5BQkxFIHwgQk1DUl9BTlJFU1RBUlQpO1xuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMTA5MywxMCArMTA5OCwxNSBAQCBzdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4tXHQvKiBDbGVhciBBTiBjb21wbGV0ZSBzdGF0dXMgb3IgaW50ZXJydXB0ICovXG4tXHRpZiAoc3RhdGUtXHUwMDNlYW5fY29tcGxldGUpXG4rXHRpZiAoc3RhdGUtXHUwMDNlYW5fY29tcGxldGUpIHtcbitcdFx0LyogQ2xlYXIgQU4gY29tcGxldGUgc3RhdHVzIG9yIGludGVycnVwdCAqL1xuIFx0XHR4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBEV19WUl9NSUlfQU5fSU5UUl9TVFMsIDApO1xuIFxuK1x0XHQvKiBJbml0aWF0ZSB0aGUgbmV4dCByb3VuZCBvZiBBTiAqL1xuK1x0XHR4cGNzX21vZGlmeSh4cGNzLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsIEJNQ1JfQU5SRVNUQVJULFxuK1x0XHRcdCAgICBCTUNSX0FOUkVTVEFSVCk7XG4rXHR9XG4rXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmMgYi9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuY1xuaW5kZXggNzg0MzM1NmE0ZGQ0Ny4uOTE5YmI5N2E0YjE4MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jXG4rKysgYi9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuY1xuQEAgLTE4Niw2ICsxODYsNyBAQCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9ncmZjZmcge1xuIFx0c3RydWN0IGNvbWJwaHlfcmVnIHBpcGVfeHBjc19waHlfcmVhZHk7XG4gXHRzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9wY2llMWwwX3NlbDtcbiBcdHN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3BjaWUxbDFfc2VsO1xuK1x0c3RydWN0IGNvbWJwaHlfcmVnIHBpcGVfc2dtaWlfbWFjX3NlbDtcbiBcdHN0cnVjdCBjb21icGh5X3JlZyB1M290ZzBfcG9ydF9lbjtcbiBcdHN0cnVjdCBjb21icGh5X3JlZyB1M290ZzFfcG9ydF9lbjtcbiB9O1xuQEAgLTIxMiw2ICsyMTMsNyBAQCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9wcml2IHtcbiBcdGJvb2wgZW5hYmxlX3NzYztcbiBcdGJvb2wgZXh0X3JlZmNsaztcbiBcdHN0cnVjdCBjbGsgKnJlZmNsaztcbitcdHUzMiBzZ21paV9tYWNfc2VsO1xuIH07XG4gXG4gc3RhdGljIHZvaWQgcm9ja2NoaXBfY29tYnBoeV91cGRhdGVsKHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgKnByaXYsXG5AQCAtMzc1LDYgKzM3Nyw5IEBAIHN0YXRpYyBpbnQgcm9ja2NoaXBfY29tYnBoeV9wYXJzZV9kdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCByb2NrY2hpcF9jb21icGh5XG4gXG4gXHRwcml2LVx1MDAzZWV4dF9yZWZjbGsgPSBkZXZpY2VfcHJvcGVydHlfcHJlc2VudChkZXYsIFwicm9ja2NoaXAsZXh0LXJlZmNsa1wiKTtcbiBcbitcdHByaXYtXHUwMDNlc2dtaWlfbWFjX3NlbCA9IDE7XG4rXHRkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCBcInJvY2tjaGlwLHNnbWlpLW1hYy1zZWxcIiwgXHUwMDI2cHJpdi1cdTAwM2VzZ21paV9tYWNfc2VsKTtcbitcbiBcdHByaXYtXHUwMDNlcGh5X3JzdCA9IGRldm1fcmVzZXRfY29udHJvbF9nZXRfZXhjbHVzaXZlKGRldiwgXCJwaHlcIik7XG4gXHQvKiBmYWxsYmFjayB0byBvbGQgYmVoYXZpb3VyICovXG4gXHRpZiAoUFRSX0VSUihwcml2LVx1MDAzZXBoeV9yc3QpID09IC1FTk9FTlQpXG5AQCAtODczLDYgKzg3OCw4IEBAIHN0YXRpYyBpbnQgcmszNTY4X2NvbWJwaHlfY2ZnKHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgKnByaXYpXG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBQSFlfVFlQRV9TR01JSTpcbitcdFx0cm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LVx1MDAzZXBpcGVfZ3JmLCBcdTAwMjZjZmctXHUwMDNlcGlwZV9zZ21paV9tYWNfc2VsLFxuK1x0XHRcdFx0XHRwcml2LVx1MDAzZXNnbWlpX21hY19zZWwgXHUwMDNlIDApO1xuIFx0XHRyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtXHUwMDNlcGlwZV9ncmYsIFx1MDAyNmNmZy1cdTAwM2VwaXBlX3hwY3NfcGh5X3JlYWR5LCB0cnVlKTtcbiBcdFx0cm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LVx1MDAzZXBoeV9ncmYsIFx1MDAyNmNmZy1cdTAwM2VwaXBlX3BoeW1vZGVfc2VsLCB0cnVlKTtcbiBcdFx0cm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LVx1MDAzZXBoeV9ncmYsIFx1MDAyNmNmZy1cdTAwM2VwaXBlX3NlbF9xc2dtaWksIHRydWUpO1xuQEAgLTk4NCw2ICs5OTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfZ3JmY2ZnIHJrMzU2OF9jb21icGh5X2dyZmNmZ3MgPSB7XG4gXHQuY29uM19mb3Jfc2F0YVx0XHQ9IHsgMHgwMDBjLCAxNSwgMCwgMHgwMCwgMHg0NDA3IH0sXG4gXHQvKiBwaXBlLWdyZiAqL1xuIFx0LnBpcGVfY29uMF9mb3Jfc2F0YVx0PSB7IDB4MDAwMCwgMTUsIDAsIDB4MDAsIDB4MjIyMCB9LFxuK1x0LnBpcGVfc2dtaWlfbWFjX3NlbFx0PSB7IDB4MDA0MCwgMSwgMSwgMHgwMCwgMHgwMSB9LFxuIFx0LnBpcGVfeHBjc19waHlfcmVhZHlcdD0geyAweDAwNDAsIDIsIDIsIDB4MDAsIDB4MDEgfSxcbiBcdC51M290ZzBfcG9ydF9lblx0XHQ9IHsgMHgwMTA0LCAxNSwgMCwgMHgwMTgxLCAweDExMDAgfSxcbiBcdC51M290ZzFfcG9ydF9lblx0XHQ9IHsgMHgwMTQ0LCAxNSwgMCwgMHgwMTgxLCAweDExMDAgfSxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oIGIvaW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjI4NzIzZDViZDc1Y2Ncbi0tLSAvZGV2L251bGxcbisrKyBiL2luY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmhcbkBAIC0wLDAgKzEsMTEgQEBcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuKyNpZm5kZWYgX19MSU5VWF9QQ1NfWFBDU19ST0NLQ0hJUF9IXG4rI2RlZmluZSBfX0xJTlVYX1BDU19YUENTX1JPQ0tDSElQX0hcbitcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9kZXZpY2UuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MvcGNzLXhwY3MuaFx1MDAzZVxuK1xuK3N0cnVjdCBkd194cGNzICp4cGNzX3JrX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApO1xuK1xuKyNlbmRpZiAvKiBfX0xJTlVYX1BDU19YUENTX1JPQ0tDSElQX0ggKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA1OjEwOjEyLjcwNDY2NTk5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Nzg0NTExOTIzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEV2YWx1YXRpb246IEEgRGVlcCBEaXZlKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRlY2lkZSBpZiB0aGlzIHBhdGNoIHNlcmllcyB3YXJyYW50cyBmdXp6aW5nLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGFjdHVhbGx5IGJlaW5nIGNoYW5nZWQuIFRoZSBkaWZmIHRvdWNoZXMgYSBmZXcga2V5IGFyZWFzOiBEZXZpY2UgVHJlZSBiaW5kaW5ncyBhbmQgZG9jdW1lbnRhdGlvbiwgdGhlIGBNQUlOVEFJTkVSU2AgZmlsZSwgc29tZSBEVFMgZmlsZXMgZm9yIHRoZSBSb2NrY2hpcCBSSzM1NjgsIGFuZCBhIHNpZ25pZmljYW50IGFtb3VudCBvZiBjb2RlIGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLCBzcGVjaWZpY2FsbHkgYXJvdW5kIEV0aGVybmV0IGRyaXZlcnMgYW5kIFBDUyAoUGh5c2ljYWwgQ29kaW5nIFN1YmxheWVyKSBkcml2ZXJzLlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlLCBpdCdzIGNsZWFyIHRoaXMgaXMgZm9jdXNlZCBvbiBicmluZ2luZyB1cCBTR01JSSBzdXBwb3J0IGZvciBSb2NrY2hpcCdzIERXTUFDLCBhbmQgaW50cm9kdWNpbmcgYSBuZXcgUm9ja2NoaXAgWFBDUyBwbGF0Zm9ybSBkcml2ZXIuIFRoZXJlIGFyZSBhbHNvIGNoYW5nZXMgdG8gSW50ZWwgRFdNQUMgYW5kIGEgZmV3IG90aGVyIHBsYXRmb3JtIGRyaXZlcnMgKFJlbmVzYXMsIFNvY2ZwZ2EpLiBUaGUgcGF0Y2ggYWxzbyBpbmNsdWRlcyByZWZhY3RvcmluZyBvZiBgc3RtbWFjX21kaW8uY2AgYW5kIG1vZGlmaWNhdGlvbnMgdG8gYHBjcy14cGNzLmNgLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IHNob3VsZCB0aGlzIGJlIGZ1enplZD8gTGV0J3MgY29uc2lkZXIgdGhlIFwiV29ydGhGdXp6aW5nXCIgcnVsZXMuICBJIGltbWVkaWF0ZWx5IG5lZWQgdG8gcnVsZSBvdXQgY2hhbmdlcyB0aGF0IGFyZSBwdXJlbHkgZGVjb3JhdGl2ZSwgb3IgYWZmZWN0IGNvZGUgdGhhdCdzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBJIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIChsaWtlIHRob3NlIHJlcXVpcmluZyBzcGVjaWZpYyBQQ0llIGNhcmRzKSBhbmQgZHJpdmVycyB0aGF0IGFyZSBvbmx5IGNvbmNlcm5lZCB3aXRoIHJlbW92YWwgb3Igc2h1dGRvd24gY2FsbGJhY2tzLlxuXG5IZXJlJ3MgdGhlIGJyZWFrZG93biBvZiBteSB0aG91Z2h0czpcblxuMS4gICoqUm9ja2NoaXAgc3R1ZmY6KiogVGhlIGBwY3MteHBjcy1yay5jYCwgYHBoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jYCwgYW5kIGBkd21hYy1yay5jYCBkcml2ZXJzIGFyZSBhbGwgUm9ja2NoaXAgU29DIHBsYXRmb3JtIGRyaXZlcnMuIFRoZXNlICoqY2Fubm90KiogYmUgZGlyZWN0bHkgcnVuIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgd2hpY2ggZW11bGF0ZXMgeDg2XFxfNjQgb3IgZ2VuZXJpYyBBUk02NCAodmlydCBtYWNoaW5lcyksIGFuZCBzbyB0aGVzZSBzaG91bGQgYmUgZXhjbHVkZWQuXG4yLiAgKipJbnRlbCBEV01BQzoqKiBgZHdtYWMtaW50ZWwuY2AgaXMgbW9yZSBpbnRlcmVzdGluZywgYnV0IFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoZSBJbnRlbCBtZ2JlL2R3bWFjIFBDSSBkZXZpY2UgZGlyZWN0bHkuIFRoYXQncyBhIGJsb2NrZXIuXG4zLiAgKipPdGhlciBQbGF0Zm9ybSBEcml2ZXJzOioqIFJlbmVzYXMgYW5kIFNvY2ZwZ2EgZHJpdmVycyAoYGR3bWFjLXJlbmVzYXMtZ2JldGguY2AsIGBkd21hYy1yem4xLmNgLCBgZHdtYWMtc29jZnBnYS5jYCkgbGlrZWx5IGFsc28gZmFsbCBpbnRvIHRoZSBzYW1lIGNhdGVnb3J5LCBiZWluZyBTb0Mtc3BlY2lmaWMuXG40LiAgKipgc3RtbWFjX21kaW8uY2AgYW5kIGBwY3MteHBjcy5jYDoqKiBUaGVzZSBhcmUgdGhlIGNvcmUgcGllY2VzIHRoYXQgbG9vayBtb3JlIGdlbmVyYWwuIFRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgUUVNVSwgb3IgYW55IHZpcnR1YWxpemVkIGVudmlyb25tZW50IEknbSBmYW1pbGlhciB3aXRoLCAqdXNlcyogYHN0bW1hY2Agb3IgYHBjcy14cGNzYCwgb3IgaWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHRpZWQgdG8gcGh5c2ljYWwgU29DIGhhcmR3YXJlLiBUaGlzIGlzIGEgcG9pbnQgdG8gY29uZmlybS4gIEkgbmVlZCB0byBjaGVjayBob3cgYHN0bW1hY19wY3Nfc2V0dXBgLCBgc3RtbWFjX3Bjc19jbGVhbmAsIGB4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paWAsIGFuZCBgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpYCBhcmUgYWN0dWFsbHkgdXNlZCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuXG5cblRoZXJlZm9yZSwgbXkgbmV4dCBzdGVwIGlzIGEgZGVlcCBkaXZlIHdpdGggYGdyZXBgLiBJIG5lZWQgdG8gc2VhcmNoIHRoZSBRRU1VIHNvdXJjZSBhbmQgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBzdXBwb3J0ZWQgaGFyZHdhcmUgYW5kIGFzc29jaWF0ZWQgZHJpdmVycyB0aGF0IGFyZSB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDYyOSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOTksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNToxMDoyMC41NDk3ODg1MzFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg0MTI1MTIwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTE1NzUgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sPTI1NT1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sLTQwMi0gICAgICAgIHNucHMsZml4ZWQtYnVyc3Q7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuOGktYTgzdC1lbWFjLnlhbWw6NDAzOiAgICAgICAgc25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZnbWFjMV9zdG1tYWNfYXhpX3NldHVwXFx1MDAzZTtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW44aS1hODN0LWVtYWMueWFtbC00MDQtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWw9MTM3PWV4YW1wbGVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sLTE1NS0gICAgICAgIHNucHMsdHNvO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbDoxNTY6ICAgICAgICBzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbC0xNTctXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sOjE1ODogICAgICAgIHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwtMTU5LSAgICAgICAgICAgIHNucHMsYmxlbiA9IFxcdTAwM2MwIDAgMCAwIDE2IDggNFxcdTAwM2U7XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwtMTgxLSAgICAgICAgc25wcyx0c287XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sOjE4MjogICAgICAgIHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cF9nbWFjMVxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sLTE4My1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWw6MTg0OiAgICAgICAgc3RtbWFjX2F4aV9zZXR1cF9nbWFjMTogc3RtbWFjLWF4aS1jb25maWcge1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbC0xODUtICAgICAgICAgICAgc25wcyxibGVuID0gXFx1MDAzYzAgMCAwIDAgMTYgOCA0XFx1MDAzZTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sPTU3PWV4YW1wbGVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWwtNjYtXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWw6Njc6ICAgIHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbC02OC0gICAgICAgIHNucHMsbHBpX2VuO1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWwtMTIwLSAgICAgICAgc25wcyxwYmwgPSBcXHUwMDNjMHg0XFx1MDAzZTtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbDoxMjE6ICAgICAgICBzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sLTEyMi0gICAgICAgIHNucHMsbXRsLXJ4LWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2bXRsX3J4X3NldHVwXFx1MDAzZTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sPTI0OT1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sLTI4NS0gICAgICAgIHNucHMsZm9yY2VfdGhyZXNoX2RtYV9tb2RlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sOjI4NjogICAgICAgIHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6djJoLWdiZXRoLnlhbWwtMjg3LSAgICAgICAgc25wcyxtdGwtcngtY29uZmlnID0gXFx1MDAzY1xcdTAwMjZtdGxfcnhfc2V0dXBcXHUwMDNlO1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6djJoLWdiZXRoLnlhbWwtMjkyLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sOjI5MzogICAgICAgIHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnp2MmgtZ2JldGgueWFtbC0yOTQtICAgICAgICAgICAgc25wcyxscGlfZW47XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdtYWMueWFtbD02NTQ9ZXhhbXBsZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdtYWMueWFtbC02NzAtICAgICAgICBjbG9jay1uYW1lcyA9IFxcXCJzdG1tYWNldGhcXFwiO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc25wcyxkd21hYy55YW1sOjY3MTogICAgICAgIHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWwtNjcyLSAgICAgICAgc25wcyxtdGwtcngtY29uZmlnID0gXFx1MDAzY1xcdTAwMjZtdGxfcnhfc2V0dXBcXHUwMDNlO1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWwtNjc0LVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc25wcyxkd21hYy55YW1sOjY3NTogICAgICAgIHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdtYWMueWFtbC02NzYtICAgICAgICAgICAgc25wcyx3cl9vc3JfbG10ID0gXFx1MDAzYzB4ZlxcdTAwM2U7XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWw9Njc9ZXhhbXBsZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWwtOTAtICAgICAgc25wcyxtdGwtdHgtY29uZmlnID0gXFx1MDAzY1xcdTAwMjZnbWFjMF9tdGxfdHhfc2V0dXBcXHUwMDNlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbDo5MTogICAgICBzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNmdtYWMwX3N0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbC05Mi1cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbC0xMDgtXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sOjEwOTogICAgICBnbWFjMF9zdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sLTExMC0gICAgICAgIHNucHMsYmxlbiA9IFxcdTAwM2MxNiA4IDQgMCAwIDAgMFxcdTAwM2U7XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxzZzIwNDQtZHdtYWMueWFtbD05NT1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sLTExOC0gICAgICBzbnBzLG10bC10eC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNmdtYWMwX210bF90eF9zZXR1cFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWw6MTE5OiAgICAgIHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2Z21hYzBfc3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWwtMTIwLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWwtMTQ1LVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sOjE0NjogICAgICBnbWFjMF9zdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWwtMTQ3LSAgICAgICAgc25wcyxibGVuID0gXFx1MDAzYzE2IDggNCAwIDAgMCAwXFx1MDAzZTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWw9MTU0PWV4YW1wbGVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbC0xNzUtICAgICAgICBzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sOjE3NjogICAgICAgIHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbC0xNzctICAgICAgICBzbnBzLGVuLXR4LWxwaS1jbG9ja2dhdGluZztcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWwtMTkyLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWw6MTkzOiAgICAgICAgc3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWwtMTk0LSAgICAgICAgICAgIHNucHMsbHBpX2VuO1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG0zMi1kd21hYy55YW1sPTE2Mj1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RtMzItZHdtYWMueWFtbC0xODQtICAgICAgICBzbnBzLHBibCA9IFxcdTAwM2MyXFx1MDAzZTtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWw6MTg1OiAgICAgICAgc25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX2NvbmZpZ18wXFx1MDAzZTtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWwtMTg2LSAgICAgICAgc25wcyx0c287XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3RoZWFkLHRoMTUyMC1nbWFjLnlhbWw9ODc9ZXhhbXBsZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3RoZWFkLHRoMTUyMC1nbWFjLnlhbWwtOTgtICAgICAgICBzbnBzLGZpeGVkLWJ1cnN0O1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGhlYWQsdGgxNTIwLWdtYWMueWFtbDo5OTogICAgICAgIHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90aGVhZCx0aDE1MjAtZ21hYy55YW1sLTEwMC0gICAgICAgIHNucHMscGJsID0gXFx1MDAzYzMyXFx1MDAzZTtcXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9MTA3PXN5bnRheCAoZS5nLiBmb3IgUENJIG1vZHVsZSk6OlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtMTA4LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6MTA5OiAgICBtb2Rwcm9iZSBzdG1tYWNfcGNpIFtcXHUwMDNjb3B0aW9uXFx1MDAzZT1cXHUwMDNjVkFMMVxcdTAwM2UsXFx1MDAzY1ZBTDJcXHUwMDNlLC4uLl1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTExMC1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9MzUyPWZpbmRzOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtMzYxLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6MzYyOiAgICAgICAgc3RydWN0IHN0bW1hY19tZGlvX2J1c19kYXRhICptZGlvX2J1c19kYXRhO1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtMzYzLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC0zNjUtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDozNjY6ICAgICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jZmcgKmRtYV9jZmc7XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC0zNjctXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0PTM4Nz1KVU1CTyBmcmFtZXM6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC00MzAtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDo0MzE6ICAgICAgICBzdHJ1Y3Qgc3RtbWFjX3J4cV9jZmcgcnhfcXVldWVzX2NmZ1tNVExfTUFYX1JYX1FVRVVFU107XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDo0MzI6ICAgICAgICBzdHJ1Y3Qgc3RtbWFjX3R4cV9jZmcgdHhfcXVldWVzX2NmZ1tNVExfTUFYX1RYX1FVRVVFU107XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC00MzMtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0PTQ0OD1pcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgQU1CQSBicmlkZ2UgdG8gZ2VuZXJhdGUgbW9yZSBlZmZpY2llbnQgU1RCdXMgdHJhZmZpYzo6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTQ1NC1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0OjQ1NTogICAgICAgIHN0cnVjdCBjbGsgKnN0bW1hY19jbGs7XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC00NTYtICAgICAgICBzdHJ1Y3QgY2xrICpwY2xrO1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC00NjMtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDo0NjQ6ICAgICAgICBzdHJ1Y3QgcmVzZXRfY29udHJvbCAqc3RtbWFjX3JzdDtcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTQ2NS1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtNDY3LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6NDY4OiAgICAgICAgc3RydWN0IHN0bW1hY19heGkgKmF4aTtcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTQ2OS1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9NTAyPUZvciBNRElPIGJ1cyBkYXRhLCB3ZSBoYXZlOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC01MDUtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDo1MDY6ICAgIHN0cnVjdCBzdG1tYWNfbWRpb19idXNfZGF0YSB7XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC01MDctXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0PTUyOD1Gb3IgRE1BIGVuZ2luZSBjb25maWd1cmF0aW9uLCB3ZSBoYXZlOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC01MzEtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDo1MzI6ICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NmZyB7XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC01MzMtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0PTU2ND1Gb3IgRE1BIEFYSSBwYXJhbWV0ZXJzLCB3ZSBoYXZlOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC01NjctXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDo1Njg6ICAgIHN0cnVjdCBzdG1tYWNfYXhpIHtcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTU2OS1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9NjAxPUZvciB0aGUgUlggUXVldWVzIGNvbmZpZ3VyYXRpb24sIHdlIGhhdmU6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTYwNC1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0OjYwNTogICAgc3RydWN0IHN0bW1hY19yeHFfY2ZnIHtcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTYwNi1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9NjI4PUZvciB0aGUgVFggUXVldWVzIGNvbmZpZ3VyYXRpb24sIHdlIGhhdmU6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTYzMS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0OjYzMjogICAgc3RydWN0IHN0bW1hY190eHFfY2ZnIHtcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTYzMy1cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2F4aXMvYXJ0cGVjNi5kdHNpPTI4Nz1cXHRcXHRldGhlcm5ldDogZXRoZXJuZXRAZjgwMTAwMDAge1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvYXhpcy9hcnRwZWM2LmR0c2ktMjk2LVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2F4aXMvYXJ0cGVjNi5kdHNpOjI5NzpcXHRcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2F4aXMvYXJ0cGVjNi5kdHNpLTI5OC1cXHRcXHRcXHRzbnBzLG10bC1yeC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNm10bF9yeF9zZXR1cFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9heGlzL2FydHBlYzYuZHRzaS0zMDctXFxuYXJjaC9hcm0vYm9vdC9kdHMvYXhpcy9hcnRwZWM2LmR0c2k6MzA4OlxcdFxcdFxcdHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybS9ib290L2R0cy9heGlzL2FydHBlYzYuZHRzaS0zMDktXFx0XFx0XFx0XFx0c25wcyx3cl9vc3JfbG10ID0gXFx1MDAzYzFcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaT0zMjU9XFx0XFx0c2NtIHtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2ktMzI5LVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2k6MzMwOlxcdHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC5kdHNpLTMzMS1cXHRcXHRzbnBzLHdyX29zcl9sbXQgPSBcXHUwMDNjN1xcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC5kdHNpPTEyOTE9XFx0XFx0Z21hYzA6IGV0aGVybmV0QDM3MDAwMDAwIHtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2ktMTI5Ny1cXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC5kdHNpOjEyOTg6XFx0XFx0XFx0c25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX3NldHVwXFx1MDAzZTtcXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC5kdHNpLTEyOTktXFx0XFx0XFx0c25wcyxwYmwgPSBcXHUwMDNjMzJcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaT0xMzE1PVxcdFxcdGdtYWMxOiBldGhlcm5ldEAzNzIwMDAwMCB7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC5kdHNpLTEzMjEtXFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaToxMzIyOlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaS0xMzIzLVxcdFxcdFxcdHNucHMscGJsID0gXFx1MDAzYzMyXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2k9MTMzOT1cXHRcXHRnbWFjMjogZXRoZXJuZXRAMzc0MDAwMDAge1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaS0xMzQ1LVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2k6MTM0NjpcXHRcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2ktMTM0Ny1cXHRcXHRcXHRzbnBzLHBibCA9IFxcdTAwM2MzMlxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC5kdHNpPTEzNjM9XFx0XFx0Z21hYzM6IGV0aGVybmV0QDM3NjAwMDAwIHtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2ktMTM2OS1cXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC5kdHNpOjEzNzA6XFx0XFx0XFx0c25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX3NldHVwXFx1MDAzZTtcXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC5kdHNpLTEzNzEtXFx0XFx0XFx0c25wcyxwYmwgPSBcXHUwMDNjMzJcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcnYxMTI2LmR0c2k9NjMzPVxcdGdtYWM6IGV0aGVybmV0QGZmYzQwMDAwIHtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3J2MTEyNi5kdHNpLTY1My1cXG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9ydjExMjYuZHRzaTo2NTQ6XFx0XFx0c25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX3NldHVwXFx1MDAzZTtcXG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9ydjExMjYuZHRzaS02NTUtXFx0XFx0c25wcyxtdGwtcngtY29uZmlnID0gXFx1MDAzY1xcdTAwMjZtdGxfcnhfc2V0dXBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcnYxMTI2LmR0c2k9NjU5PVxcdFxcdG1kaW86IG1kaW8ge1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcnYxMTI2LmR0c2ktNjY0LVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3J2MTEyNi5kdHNpOjY2NTpcXHRcXHRzdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcnYxMTI2LmR0c2ktNjY2LVxcdFxcdFxcdHNucHMsd3Jfb3NyX2xtdCA9IFxcdTAwM2M0XFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzEuZHRzaT0xNzMwPVxcdFxcdFxcdGV0aGVybmV0MTogZXRoZXJuZXRANTgwMGEwMDAge1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzMS5kdHNpLTE3NTEtXFx0XFx0XFx0XFx0c25wcyxwYmwgPSBcXHUwMDNjMlxcdTAwM2U7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzMS5kdHNpOjE3NTI6XFx0XFx0XFx0XFx0c25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX2NvbmZpZ18xXFx1MDAzZTtcXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMxLmR0c2ktMTc1My1cXHRcXHRcXHRcXHRzbnBzLHRzbztcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzEuZHRzaS0xNzU4LVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzEuZHRzaToxNzU5OlxcdFxcdFxcdFxcdHN0bW1hY19heGlfY29uZmlnXzE6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMxLmR0c2ktMTc2MC1cXHRcXHRcXHRcXHRcXHRzbnBzLGJsZW4gPSBcXHUwMDNjMCAwIDAgMCAxNiA4IDRcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzMy5kdHNpPTc0PVxcdGV0aGVybmV0MjogZXRoZXJuZXRANTgwMGUwMDAge1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzMy5kdHNpLTk0LVxcdFxcdHNucHMscGJsID0gXFx1MDAzYzJcXHUwMDNlO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzMuZHRzaTo5NTpcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfY29uZmlnXzJcXHUwMDNlO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzMuZHRzaS05Ni1cXHRcXHRzbnBzLHRzbztcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzMuZHRzaS0xMDEtXFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzMy5kdHNpOjEwMjpcXHRcXHRzdG1tYWNfYXhpX2NvbmZpZ18yOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzMy5kdHNpLTEwMy1cXHRcXHRcXHRzbnBzLGJsZW4gPSBcXHUwMDNjMCAwIDAgMCAxNiA4IDRcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MS5kdHNpPTE5NjI9XFx0XFx0XFx0ZXRoZXJuZXQwOiBldGhlcm5ldEA1ODAwYTAwMCB7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxLmR0c2ktMTk4Mi1cXHRcXHRcXHRcXHRzbnBzLHBibCA9IFxcdTAwM2MyXFx1MDAzZTtcXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxLmR0c2k6MTk4MzpcXHRcXHRcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfY29uZmlnXzBcXHUwMDNlO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxNTEuZHRzaS0xOTg0LVxcdFxcdFxcdFxcdHNucHMsdHNvO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MS5kdHNpLTE5ODctXFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MS5kdHNpOjE5ODg6XFx0XFx0XFx0XFx0c3RtbWFjX2F4aV9jb25maWdfMDogc3RtbWFjLWF4aS1jb25maWcge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxNTEuZHRzaS0xOTg5LVxcdFxcdFxcdFxcdFxcdHNucHMsd3Jfb3NyX2xtdCA9IFxcdTAwM2MweDdcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9hbGx3aW5uZXIvc3VuNTVpLWE1MjMuZHRzaT04NTY9XFx0XFx0Z21hYzE6IGV0aGVybmV0QDQ1MTAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9hbGx3aW5uZXIvc3VuNTVpLWE1MjMuZHRzaS04NzAtXFx0XFx0XFx0c25wcyxmaXhlZC1idXJzdDtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FsbHdpbm5lci9zdW41NWktYTUyMy5kdHNpOjg3MTpcXHRcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNmdtYWMxX3N0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYWxsd2lubmVyL3N1bjU1aS1hNTIzLmR0c2ktODcyLVxcdFxcdFxcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2Z21hYzFfbXRsX3J4X3NldHVwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYWxsd2lubmVyL3N1bjU1aS1hNTIzLmR0c2k9ODgyPVxcdFxcdFxcdGdtYWMxX210bF9yeF9zZXR1cDogcngtcXVldWVzLWNvbmZpZyB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FsbHdpbm5lci9zdW41NWktYTUyMy5kdHNpLTg4Ny1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FsbHdpbm5lci9zdW41NWktYTUyMy5kdHNpOjg4ODpcXHRcXHRcXHRnbWFjMV9zdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9hbGx3aW5uZXIvc3VuNTVpLWE1MjMuZHRzaS04ODktXFx0XFx0XFx0XFx0c25wcyx3cl9vc3JfbG10ID0gXFx1MDAzYzB4ZlxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpPTU1NT1cXHRcXHRnbWFjMDogZXRoZXJuZXRAMTA4MTAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaS02MDItXFx0XFx0XFx0c25wcyxwZXJmZWN0LWZpbHRlci1lbnRyaWVzID0gXFx1MDAzYzY0XFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpOjYwMzpcXHRcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfZW1hYzBfc2V0dXBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2ktNjA0LVxcdFxcdFxcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2bXRsX3J4X2VtYWMwX3NldHVwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2ktNjEzLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2k6NjE0OlxcdFxcdFxcdHN0bW1hY19heGlfZW1hYzBfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpLTYxNS1cXHRcXHRcXHRcXHRzbnBzLHdyX29zcl9sbXQgPSBcXHUwMDNjMzFcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaT03MDE9XFx0XFx0Z21hYzE6IGV0aGVybmV0QDEwODIwMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2ktNzQ4LVxcdFxcdFxcdHNucHMscGVyZmVjdC1maWx0ZXItZW50cmllcyA9IFxcdTAwM2M2NFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaTo3NDk6XFx0XFx0XFx0c25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX2VtYWMxX3NldHVwXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpLTc1MC1cXHRcXHRcXHRzbnBzLG10bC1yeC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNm10bF9yeF9lbWFjMV9zZXR1cFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpLTc1OS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpOjc2MDpcXHRcXHRcXHRzdG1tYWNfYXhpX2VtYWMxX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaS03NjEtXFx0XFx0XFx0XFx0c25wcyx3cl9vc3JfbG10ID0gXFx1MDAzYzMxXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2k9ODQ3PVxcdFxcdGdtYWMyOiBldGhlcm5ldEAxMDgzMDAwMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpLTg5NC1cXHRcXHRcXHRzbnBzLHBlcmZlY3QtZmlsdGVyLWVudHJpZXMgPSBcXHUwMDNjNjRcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2k6ODk1OlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9lbWFjMl9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaS04OTYtXFx0XFx0XFx0c25wcyxtdGwtcngtY29uZmlnID0gXFx1MDAzY1xcdTAwMjZtdGxfcnhfZW1hYzJfc2V0dXBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaS05MDUtXFxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaTo5MDY6XFx0XFx0XFx0c3RtbWFjX2F4aV9lbWFjMl9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2ktOTA3LVxcdFxcdFxcdFxcdHNucHMsd3Jfb3NyX2xtdCA9IFxcdTAwM2MzMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210MjcxMmUuZHRzaT02ODE9XFx0dWFydDQ6IHNlcmlhbEAxMTAxOTAwMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210MjcxMmUuZHRzaS02OTMtXFxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDI3MTJlLmR0c2k6Njk0OlxcdHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210MjcxMmUuZHRzaS02OTUtXFx0XFx0c25wcyx3cl9vc3JfbG10ID0gXFx1MDAzYzB4N1xcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210MjcxMmUuZHRzaT03MzA9XFx0ZXRoOiBldGhlcm5ldEAxMTAxYzAwMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210MjcxMmUuZHRzaS03NTMtXFx0XFx0bWVkaWF0ZWsscGVyaWNmZyA9IFxcdTAwM2NcXHUwMDI2cGVyaWNmZ1xcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDI3MTJlLmR0c2k6NzU0OlxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDI3MTJlLmR0c2ktNzU1LVxcdFxcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2bXRsX3J4X3NldHVwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTg4LmR0c2k9MTczNj1cXHRcXHRldGg6IGV0aGVybmV0QDExMDIxMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTg4LmR0c2ktMTc1Ny1cXHRcXHRcXHRtZWRpYXRlayxwZXJpY2ZnID0gXFx1MDAzY1xcdTAwMjZpbmZyYWNmZ19hb1xcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxODguZHRzaToxNzU4OlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxODguZHRzaS0xNzU5LVxcdFxcdFxcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2bXRsX3J4X3NldHVwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTg4LmR0c2k9MTc2Nj1cXHRcXHRcXHRldGhfbWRpbzogbWRpbyB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE4OC5kdHNpLTE3NzEtXFxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxODguZHRzaToxNzcyOlxcdFxcdFxcdHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE4OC5kdHNpLTE3NzMtXFx0XFx0XFx0XFx0c25wcyxibGVuID0gXFx1MDAzYzAgMCAwIDAgMTYgOCA0XFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTk1LmR0c2k9MTMwMT1cXHRcXHRldGg6IGV0aGVybmV0QDExMDIxMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTk1LmR0c2ktMTMyNS1cXHRcXHRcXHRtZWRpYXRlayxwZXJpY2ZnID0gXFx1MDAzY1xcdTAwMjZpbmZyYWNmZ19hb1xcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxOTUuZHRzaToxMzI2OlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxOTUuZHRzaS0xMzI3LVxcdFxcdFxcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2bXRsX3J4X3NldHVwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTk1LmR0c2k9MTMzND1cXHRcXHRcXHRtZGlvIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTk1LmR0c2ktMTMzOS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE5NS5kdHNpOjEzNDA6XFx0XFx0XFx0c3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTk1LmR0c2ktMTM0MS1cXHRcXHRcXHRcXHRzbnBzLHdyX29zcl9sbXQgPSBcXHUwMDNjMHg3XFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOGcwNDYuZHRzaT03NzA9XFx0XFx0ZXRoMDogZXRoZXJuZXRAMTFjMzAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA4ZzA0Ni5kdHNpLTgxNC1cXHRcXHRcXHRzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDhnMDQ2LmR0c2k6ODE1OlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA4ZzA0Ni5kdHNpLTgxNi1cXHRcXHRcXHRzbnBzLG10bC1yeC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNm10bF9yeF9zZXR1cDBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA4ZzA0Ni5kdHNpPTg4Nz1cXHRcXHRldGgxOiBldGhlcm5ldEAxMWM0MDAwMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDhnMDQ2LmR0c2ktOTMxLVxcdFxcdFxcdHNucHMsZm9yY2VfdGhyZXNoX2RtYV9tb2RlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOGcwNDYuZHRzaTo5MzI6XFx0XFx0XFx0c25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX3NldHVwXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDhnMDQ2LmR0c2ktOTMzLVxcdFxcdFxcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2bXRsX3J4X3NldHVwMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDhnMDQ2LmR0c2k9MTAzMj1cXHRcXHR3ZHQwOiB3YXRjaGRvZ0AxMjgwMDgwMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDhnMDQ2LmR0c2ktMTA0Ni1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDhnMDQ2LmR0c2k6MTA0NzpcXHRzdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA4ZzA0Ni5kdHNpLTEwNDgtXFx0XFx0c25wcyxscGlfZW47XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2k9MTgzOT1cXHRcXHRldGgwOiBldGhlcm5ldEAxNWMzMDAwMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2ktMTg3MS1cXHRcXHRcXHRzbnBzLGZvcmNlX3NmX2RtYV9tb2RlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNDcuZHRzaToxODcyOlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA0Ny5kdHNpLTE4NzMtXFx0XFx0XFx0c25wcyxtdGwtcngtY29uZmlnID0gXFx1MDAzY1xcdTAwMjZtdGxfcnhfc2V0dXAwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNDcuZHRzaT0xOTM5PVxcdFxcdGV0aDE6IGV0aGVybmV0QDE1YzQwMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNDcuZHRzaS0xOTcxLVxcdFxcdFxcdHNucHMsZm9yY2Vfc2ZfZG1hX21vZGU7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA0Ny5kdHNpOjE5NzI6XFx0XFx0XFx0c25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX3NldHVwXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2ktMTk3My1cXHRcXHRcXHRzbnBzLG10bC1yeC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNm10bF9yeF9zZXR1cDFcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA0Ny5kdHNpPTIxNDY9XFx0XFx0dnNwZDE6IHZzcEAxNjRiMDAwMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2ktMjE2MC1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2k6MjE2MTpcXHRzdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA0Ny5kdHNpLTIxNjItXFx0XFx0c25wcyxscGlfZW47XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2k9MTUxMD1cXHRcXHRldGgwOiBldGhlcm5ldEAxNWMzMDAwMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2ktMTU0My1cXHRcXHRcXHRzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2k6MTU0NDpcXHRcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTYuZHRzaS0xNTQ1LVxcdFxcdFxcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2bXRsX3J4X3NldHVwMFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2k9MTYxMT1cXHRcXHRldGgxOiBldGhlcm5ldEAxNWM0MDAwMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2ktMTY0NC1cXHRcXHRcXHRzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2k6MTY0NTpcXHRcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTYuZHRzaS0xNjQ2LVxcdFxcdFxcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2bXRsX3J4X3NldHVwMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2k9MTc4OD1cXHRcXHR2c3BkOiB2c3BAMTY0ODAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ni5kdHNpLTE4MDEtXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ni5kdHNpOjE4MDI6XFx0c3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTYuZHRzaS0xODAzLVxcdFxcdHNucHMsbHBpX2VuO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpPTE2NDA9XFx0XFx0ZXRoMDogZXRoZXJuZXRAMTVjMzAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpLTE2NzMtXFx0XFx0XFx0c25wcyxmb3JjZV90aHJlc2hfZG1hX21vZGU7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpOjE2NzQ6XFx0XFx0XFx0c25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX3NldHVwXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU3LmR0c2ktMTY3NS1cXHRcXHRcXHRzbnBzLG10bC1yeC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNm10bF9yeF9zZXR1cDBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpPTE3NDE9XFx0XFx0ZXRoMTogZXRoZXJuZXRAMTVjNDAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpLTE3NzQtXFx0XFx0XFx0c25wcyxmb3JjZV90aHJlc2hfZG1hX21vZGU7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpOjE3NzU6XFx0XFx0XFx0c25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX3NldHVwXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU3LmR0c2ktMTc3Ni1cXHRcXHRcXHRzbnBzLG10bC1yeC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNm10bF9yeF9zZXR1cDFcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpPTE5MTg9XFx0XFx0dnNwZDogdnNwQDE2NDgwMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTcuZHRzaS0xOTMxLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTcuZHRzaToxOTMyOlxcdHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU3LmR0c2ktMTkzMy1cXHRcXHRzbnBzLGxwaV9lbjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaT01MzQ9XFx0XFx0Z21hYzA6IGV0aGVybmV0QDgwMTAwMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaS01NzYtXFx0XFx0XFx0c25wcyxmb3JjZV90aHJlc2hfZG1hX21vZGU7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA3Ny5kdHNpOjU3NzpcXHRcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaS01NzgtXFx0XFx0XFx0c25wcyxtdGwtcngtY29uZmlnID0gXFx1MDAzY1xcdTAwMjZtdGxfcnhfc2V0dXAwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaT02ODA9XFx0XFx0Z21hYzE6IGV0aGVybmV0QDkyMDAwMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaS03MjItXFx0XFx0XFx0c25wcyxmb3JjZV90aHJlc2hfZG1hX21vZGU7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA3Ny5kdHNpOjcyMzpcXHRcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaS03MjQtXFx0XFx0XFx0c25wcyxtdGwtcngtY29uZmlnID0gXFx1MDAzY1xcdTAwMjZtdGxfcnhfc2V0dXAxXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaT04MjY9XFx0XFx0Z21hYzI6IGV0aGVybmV0QDkyMDEwMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaS04NjgtXFx0XFx0XFx0c25wcyxmb3JjZV90aHJlc2hfZG1hX21vZGU7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA3Ny5kdHNpOjg2OTpcXHRcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaS04NzAtXFx0XFx0XFx0c25wcyxtdGwtcngtY29uZmlnID0gXFx1MDAzY1xcdTAwMjZtdGxfcnhfc2V0dXAyXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaT0xMzcyPVxcdFxcdFxcdHNkaGkxX3ZxbW1jOiB2cW1tYy1yZWd1bGF0b3Ige1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA3Ny5kdHNpLTEzODAtXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA3Ny5kdHNpOjEzODE6XFx0c3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaS0xMzgyLVxcdFxcdHNucHMsbHBpX2VuO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpPTUzND1cXHRcXHRnbWFjMDogZXRoZXJuZXRAODAxMDAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpLTU3Ny1cXHRcXHRcXHRzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDg3LmR0c2k6NTc4OlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpLTU3OS1cXHRcXHRcXHRzbnBzLG10bC1yeC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNm10bF9yeF9zZXR1cDBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpPTY4MT1cXHRcXHRnbWFjMTogZXRoZXJuZXRAOTIwMDAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpLTcyNC1cXHRcXHRcXHRzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDg3LmR0c2k6NzI1OlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpLTcyNi1cXHRcXHRcXHRzbnBzLG10bC1yeC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNm10bF9yeF9zZXR1cDFcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpPTgyOD1cXHRcXHRnbWFjMjogZXRoZXJuZXRAOTIwMTAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpLTg3MS1cXHRcXHRcXHRzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDg3LmR0c2k6ODcyOlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpLTg3My1cXHRcXHRcXHRzbnBzLG10bC1yeC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNm10bF9yeF9zZXR1cDJcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpPTEzNzU9XFx0XFx0XFx0c2RoaTFfdnFtbWM6IHZxbW1jLXJlZ3VsYXRvciB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDg3LmR0c2ktMTM4My1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDg3LmR0c2k6MTM4NDpcXHRzdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpLTEzODUtXFx0XFx0c25wcyxscGlfZW47XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzUyOC5kdHNpPTEwNTg9XFx0XFx0Z21hYzA6IGV0aGVybmV0QGZmYmQwMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTI4LmR0c2ktMTA3NS1cXHRcXHRcXHRyb2NrY2hpcCxncmYgPSBcXHUwMDNjXFx1MDAyNnZvX2dyZlxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaToxMDc2OlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2Z21hYzBfc3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaS0xMDc3LVxcdFxcdFxcdHNucHMsbWl4ZWQtYnVyc3Q7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzUyOC5kdHNpPTEwODg9XFx0XFx0XFx0XFx0cm1paTBfcGh5OiBldGhlcm5ldC1waHlAMiB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzUyOC5kdHNpLTEwOTktXFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaToxMTAwOlxcdFxcdFxcdGdtYWMwX3N0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzUyOC5kdHNpLTExMDEtXFx0XFx0XFx0XFx0c25wcyxibGVuID0gXFx1MDAzYzAgMCAwIDAgMTYgOCA0XFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTI4LmR0c2k9MTExNz1cXHRcXHRnbWFjMTogZXRoZXJuZXRAZmZiZTAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaS0xMTM0LVxcdFxcdFxcdHJvY2tjaGlwLGdyZiA9IFxcdTAwM2NcXHUwMDI2dnB1X2dyZlxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaToxMTM1OlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2Z21hYzFfc3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaS0xMTM2LVxcdFxcdFxcdHNucHMsbWl4ZWQtYnVyc3Q7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzUyOC5kdHNpPTExNDI9XFx0XFx0XFx0bWRpbzE6IG1kaW8ge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaS0xMTQ3LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTI4LmR0c2k6MTE0ODpcXHRcXHRcXHRnbWFjMV9zdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaS0xMTQ5LVxcdFxcdFxcdFxcdHNucHMsYmxlbiA9IFxcdTAwM2MwIDAgMCAwIDE2IDggNFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpPTMwNj1cXHRnbWFjMDogZXRoZXJuZXRAZmUyYTAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaS0zMjItXFx0XFx0cm9ja2NoaXAsZ3JmID0gXFx1MDAzY1xcdTAwMjZncmZcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2k6MzIzOlxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2Z21hYzBfc3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaS0zMjQtXFx0XFx0c25wcyxtaXhlZC1idXJzdDtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2k9MzMwPVxcdFxcdG1kaW8wOiBtZGlvIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2ktMzM1LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2k6MzM2OlxcdFxcdGdtYWMwX3N0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpLTMzNy1cXHRcXHRcXHRzbnBzLGJsZW4gPSBcXHUwMDNjMCAwIDAgMCAxNiA4IDRcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NngtYmFzZS5kdHNpPTcwMD1cXHRnbWFjMTogZXRoZXJuZXRAZmUwMTAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NngtYmFzZS5kdHNpLTcxNi1cXHRcXHRyb2NrY2hpcCxncmYgPSBcXHUwMDNjXFx1MDAyNmdyZlxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NngtYmFzZS5kdHNpOjcxNzpcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNmdtYWMxX3N0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTZ4LWJhc2UuZHRzaS03MTgtXFx0XFx0c25wcyxtaXhlZC1idXJzdDtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTZ4LWJhc2UuZHRzaT03MjQ9XFx0XFx0bWRpbzE6IG1kaW8ge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NngtYmFzZS5kdHNpLTcyOS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2eC1iYXNlLmR0c2k6NzMwOlxcdFxcdGdtYWMxX3N0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2eC1iYXNlLmR0c2ktNzMxLVxcdFxcdFxcdHNucHMsYmxlbiA9IFxcdTAwM2MwIDAgMCAwIDE2IDggNFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU3Ni5kdHNpPTE4MzU9XFx0XFx0Z21hYzA6IGV0aGVybmV0QDJhMjIwMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTc2LmR0c2ktMTg1Mi1cXHRcXHRcXHRyb2NrY2hpcCxwaHAtZ3JmID0gXFx1MDAzY1xcdTAwMjZpb2NfZ3JmXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU3Ni5kdHNpOjE4NTM6XFx0XFx0XFx0c25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZnbWFjMF9zdG1tYWNfYXhpX3NldHVwXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU3Ni5kdHNpLTE4NTQtXFx0XFx0XFx0c25wcyxtaXhlZC1idXJzdDtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTc2LmR0c2k9MTg2MD1cXHRcXHRcXHRtZGlvMDogbWRpbyB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU3Ni5kdHNpLTE4NjUtXFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NzYuZHRzaToxODY2OlxcdFxcdFxcdGdtYWMwX3N0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU3Ni5kdHNpLTE4NjctXFx0XFx0XFx0XFx0c25wcyxibGVuID0gXFx1MDAzYzAgMCAwIDAgMTYgOCA0XFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTc2LmR0c2k9MTg4Mz1cXHRcXHRnbWFjMTogZXRoZXJuZXRAMmEyMzAwMDAge1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA1OjEwOjIyLjM5MTA0NTQ5M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQxNjU1MjE0MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBRRU1VIGFuZCB0aGUgYHN0bW1hY2AgRHJpdmVyKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYHN0bW1hY2Ag4oCTIHJpZ2h0LCB0aGF0J3MgdGhlIGRyaXZlciBmb3IgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUNzLiBJdCdzIHViaXF1aXRvdXMgaW4gZW1iZWRkZWQgc3lzdGVtcywgdGhlIFJvY2tjaGlwcywgQWxsd2lubmVycywgU1RNMzJzLCBSZW5lc2FzLCBTb2NmcGdhcywgYW5kIGV2ZW4gSW50ZWwgU29Dcy4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBkb2VzIFFFTVUgZW11bGF0ZSB0aGlzIGRpcmVjdGx5LCBvciBpcyB0aGVyZSBhIHBhdGh3YXkgdG8gaXQgd2l0aGluIHRoZSBzdGFuZGFyZCBlbnZpcm9ubWVudHMsIHBhcnRpY3VsYXJseSB0aGUgb25lcyB0aGF0IHdvdWxkIGJlIHJlbGV2YW50IGZvciBteSB3b3JrIHdpdGggc3l6a2FsbGVyIG9uIHg4Nl82NCBvciBhcm02NCB2aXJ0IG1hY2hpbmVzP1xuXG5NeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBzZWUgd2hhdCBuZXR3b3JrIGRldmljZXMgUUVNVSBuYXRpdmVseSBzdXBwb3J0cy4gRTEwMDAsIGUxMDAwZSwgaWdiLCBydGw4MTM5LCB0aGUgdXN1YWwgc3VzcGVjdHMuIEJ1dCwgaG9sZCBvbi4uLiBkb2VzIGl0IGFjdHVhbGx5IGVtdWxhdGUgYGR3bWFjYCBvciBgc3RtbWFjYCBkaXJlY3RseT8gQWgsIG9uICpzcGVjaWZpYyogQVJNIGJvYXJkcywgbGlrZSBTVE0zMiwgdGhlcmUncyBgZHdjX2V0aF9xb3NgIG9yIGBzdG0zMl9kd21hY2Agb3Igc2ltaWxhci4gSG93ZXZlciwgdGhhdCdzIG5vdCB3aGF0IEknbSB0YXJnZXRpbmcgaGVyZTsgdGhvc2UgYXJlIGZvciBzcGVjaWFsaXplZCBjYXNlcy4gU28sIGZvciB0aGUgZ2VuZXJhbCBRRU1VIC8gR0NFIHg4Nl82NCBhbmQgYXJtNjQgdmlydHVhbCBtYWNoaW5lcywgdGhlcmUncyBubyBgc3RtbWFjYCBkZXZpY2UgcHJlc2VudC4gTm8gdmlydHVhbCBvciBlbXVsYXRlZCBgc3RtbWFjYCBhdCBhbGwgaW4gdGhlIHN0YW5kYXJkIGJ1aWxkcy4gVGhhdCdzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLlxuXG5XYWl0LCB0aGVuIHdoYXQgYWJvdXQgdGhlIGBkd21hYy1pbnRlbC5jYCBmaWxlPyBMb29raW5nIGF0IHRoYXQsIGl0J3MgYSBQQ0kgZHJpdmVyLiBTbywgbXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhhdCBpbiBtb3JlIGRldGFpbCBhbmQgc2VlIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gTGV0J3MgaW5zcGVjdCBgZHdtYWMtaW50ZWwuY2AgdG8gc2VlIGlmIHRoYXQgaGVscHMgbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MjE2LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA1OjEwOjI2LjU1NjU3MDE0OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDc2MDM0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNT0RVTEVfREVWSUNFX1RBQkxFXFxcXChwY2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTE0MzE9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGludGVsX2V0aF9wY2lfaWRfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTQ1MC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTQ1MTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaW50ZWxfZXRoX3BjaV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDUyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNToxMDoyNi42MTEzMzg1OTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5MDQxMDI5NzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBQYXRjaDogV29ydGhGdXp6aW5nIEV2YWx1YXRpb24qKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIGJyZWFrZG93biBvZiBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcyBwYXRjaC4gSSdtIGxvb2tpbmcgYXQgYSBjb21wbGV4IHNldCBvZiBjaGFuZ2VzLiBJdCBzZWVtcyBsaWtlIHRoZSBwYXRjaCB0b3VjaGVzIGEgYnVuY2ggb2YgZHJpdmVyczogYGR3bWFjLWludGVsLmNgLCBgZHdtYWMtcmsuY2AsIGBwY3MteHBjcy1yay5jYCwgYHBoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jYCwgYGR3bWFjLXJlbmVzYXMtZ2JldGguY2AsIGBkd21hYy1yem4xLmNgLCBgZHdtYWMtc29jZnBnYS5jYCwgYHN0bW1hY19tZGlvLmNgLCBhbmQgYHBjcy14cGNzLmNgLiBUaGVzZSBhcmUgYWxsIHJlbGF0ZWQgdG8gRXRoZXJuZXQsIHNwZWNpZmljYWxseSBkcml2ZXJzIGZvciB2YXJpb3VzIGhhcmR3YXJlOiBJbnRlbCBQQ0llIGRldmljZXMsIFJvY2tjaGlwIHBsYXRmb3JtcywgUmVuZXNhcyBTb0NzLCBJbnRlbC9BbHRlcmEgU29DIHBsYXRmb3JtcywgYW5kIHNvbWUgY29tbW9uIHN0bW1hYyBhbmQgcGNzIGNvZGUuXG5cbkZpcnN0LCBsZXQncyBlc3RhYmxpc2ggdGhlIGNvbnRleHQsIGJ5IGNhcmVmdWxseSByZXZpZXdpbmcgdGhlIGluc3RydWN0aW9ucy4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGlzIGNvZGUgaXMgXCJXb3J0aEZ1enppbmdcIiBvciBub3QuIEJhc2VkIG9uIHRoZSBwcm9tcHQsIEkgbmVlZCB0byBtYWtlIGEganVkZ2VtZW50IGNhbGwuIE1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiBvciBLY29uZmlnL01ha2VmaWxlPyBDaGVjay4gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcz8gQ2hlY2suIENvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24ndCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3c/IE5vdCB5ZXQuIEltcG9zc2libGUgY29kZSBwYXRocyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBIbW0uLi4gbGV0J3MgZXhwbG9yZS4gVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoL1NtYXJ0TklDL0dQVSBkcml2ZXJzIG5lZWRpbmcgcGh5c2ljYWwgUENJZSBoYXJkd2FyZT8gVGhhdCBpcyBhbHNvIGEgc3Ryb25nIHBvc3NpYmlsaXR5LiBGaW5hbGx5LCBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIHRoYXQgb25seSBleGVjdXRlIGR1cmluZyBob3QtdW5wbHVnIG9wZXJhdGlvbnM/IE5vdCBkaXJlY3RseSByZWxldmFudC5cblxuTm93LCBsZXQncyBicmVhayBkb3duIHRoZSBwYXRjaCBjb21wb25lbnRzOiBEZXZpY2UgdHJlZSBiaW5kaW5ncyBmb3IgUm9ja2NoaXAgaGFyZHdhcmUgKGJvdGggeHBjcyBhbmQgdGhlIGNvbWJwaHkpLCBNQUlOVEFJTkVSUywgbW9yZSBkZXZpY2UgdHJlZSBmaWxlcywgS2NvbmZpZyBhbmQgTWFrZWZpbGUgY2hhbmdlcywgYW5kIHZhcmlvdXMgUm9ja2NoaXAtc3BlY2lmaWMgZHJpdmVycyAobGlrZSB0aGUgeHBjcyBkcml2ZXIgYW5kIHRoZSBHTUFDIGRyaXZlcikuIEkgYWxzbyBzZWUgUmVuZXNhcyBkcml2ZXJzLCBJbnRlbC9BbHRlcmEgU29DIGRyaXZlcnMsIGNvbW1vbiBzdG1tYWMgYW5kIHBjcyBjb2RlLCBhbmQgc29tZSBJbnRlbCBQQ0kgZHJpdmVyLiBTbyBpdCdzIGEgbWl4IG9mIGhhcmR3YXJlLXNwZWNpZmljIGFuZCBtb3JlIGdlbmVyYWwgc3RtbWFjL3BjcyBjb2RlLlxuXG5UaGUgY3J1eCBvZiB0aGlzIGFuYWx5c2lzIGlzIHdoZXRoZXIgdGhpcyBjb2RlIGNhbiBiZSByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBIZXJlJ3Mgd2hlcmUgaXQgY2xpY2tzOiBOb25lIG9mIHRoaXMgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGJlY2F1c2UgdGhlc2UgcGxhdGZvcm1zIGRvbid0IGVtdWxhdGUgdGhlIHNwZWNpZmljIGhhcmR3YXJlIGJlaW5nIHRhcmdldGVkIGhlcmUuIE5vIHZpcnR1YWwgb3IgZW11bGF0ZWQgZGV2aWNlcyBleGlzdCBmb3Igc3RtbWFjIG9yIGR3X3hwY3MsIGFuZCB0aGUgbmV0d29yayBpbnRlcmZhY2VzIHByb3ZpZGVkIGluIFFFTVUgZG9uJ3QgdXNlIHRoZXNlIGRyaXZlcnMuIE5laXRoZXIgdGhlIFJvY2tjaGlwIFNvQ3Mgbm9yIHRoZSBJbnRlbCBEV01BQyBQQ0kgZGV2aWNlcyBleGlzdCBpbiB0aGlzIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBObyB2aXJ0dWFsIG9yIGVtdWxhdGVkIGRldmljZXMgaW5zdGFudGlhdGUgc3RtbWFjIG9yIGR3X3hwY3MuXG5cbkkndmUgcmUtcmV2aWV3ZWQgZXZlcnl0aGluZyB0byBlbnN1cmUgdGhlIGFuYWx5c2lzIGlzIGNvbXBsZXRlLiBUaGVyZSBhcmUgbm8gY29yZSBuZXR3b3JraW5nIGludGVyZmFjZXMsIGFyY2gtZ2VuZXJpYyBkcml2ZXJzLCBvciBtb2NrIGludGVyZmFjZXMgYWZmZWN0ZWQuIFRoZSBjb2RlIHJlcXVpcmVzIHNwZWNpZmljLCBwaHlzaWNhbCBoYXJkd2FyZS4gSXQgc2VlbXMgbGlrZSB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHRoYXQgaXMgdW5yZWFjaGFibGUgaW4gUUVNVSBvciBHQ0UuXG5cblRoZXJlZm9yZSwgYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgdGhlIHJpZ2h0IGNhbGwgaGVyZS4gVGhlIHBhdGNoIG1vZGlmaWNhdGlvbnMgYXJlIGNvbmZpbmVkIHRvIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgKFJvY2tjaGlwLCBSZW5lc2FzLCBJbnRlbCkgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIHNldC1yZXN1bHRzIHBhcmFtZXRlcnMgYXJlIGNsZWFyOiBgV29ydGhGdXp6aW5nOiBmYWxzZWAsIGBFbmFibGVDb25maWdzOiBbXWAsIGBGb2N1c1N5bWJvbHM6IFtdYCwgd2l0aCBhIGNvbmNpc2UgcmVhc29uaW5nLiBMZXQncyBtYWtlIHRoZSBjYWxsIHRvIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MTc3LCJPdXRwdXRUb2tlbnMiOjE3MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDU6MTA6MzUuNjUyMzcxNjg4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjIxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgYWRkcyBzdXBwb3J0IGZvciBSb2NrY2hpcCBSSzM1NjggU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBQaHlzaWNhbCBDb2RpbmcgU3VibGF5ZXIgKFhQQ1MpIGFuZCBTR01JSSBpbnRlcmZhY2UgY29uZmlndXJhdGlvbiBmb3IgdGhlIFJvY2tjaGlwIERXTUFDIGRyaXZlciwgYWxvbmcgd2l0aCBtaW5vciBQQ1MgaW5pdC9leGl0IGhhbmRsaW5nIHVwZGF0ZXMgZm9yIEludGVsIERXTUFDIFBDSSBhbmQgb3RoZXIgU29DIGdsdWUgZHJpdmVycyAoUmVuZXNhcywgU29jZnBnYSkuIFRoZXNlIGNoYW5nZXMgYXJlIHJlc3RyaWN0ZWQgdG8gdmVuZG9yLXNwZWNpZmljIFNvQyBwbGF0Zm9ybSBkcml2ZXJzIChSb2NrY2hpcCBSSzM1NjgsIFJlbmVzYXMsIFNvY2ZwZ2EpIGFuZCBJbnRlbCBEV01BQyBQQ0kgaGFyZHdhcmUsIG5vbmUgb2Ygd2hpY2ggYXJlIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGNhbm5vdCBiZSBleGVjdXRlZCBkdXJpbmcgdmlydHVhbGl6ZWQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBhZGRzIHN1cHBvcnQgZm9yIFJvY2tjaGlwIFJLMzU2OCBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IFBoeXNpY2FsIENvZGluZyBTdWJsYXllciAoWFBDUykgYW5kIFNHTUlJIGludGVyZmFjZSBjb25maWd1cmF0aW9uIGZvciB0aGUgUm9ja2NoaXAgRFdNQUMgZHJpdmVyLCBhbG9uZyB3aXRoIG1pbm9yIFBDUyBpbml0L2V4aXQgaGFuZGxpbmcgdXBkYXRlcyBmb3IgSW50ZWwgRFdNQUMgUENJIGFuZCBvdGhlciBTb0MgZ2x1ZSBkcml2ZXJzIChSZW5lc2FzLCBTb2NmcGdhKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVzdHJpY3RlZCB0byB2ZW5kb3Itc3BlY2lmaWMgU29DIHBsYXRmb3JtIGRyaXZlcnMgKFJvY2tjaGlwIFJLMzU2OCwgUmVuZXNhcywgU29jZnBnYSkgYW5kIEludGVsIERXTUFDIFBDSSBoYXJkd2FyZSwgbm9uZSBvZiB3aGljaCBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBjbG91ZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgY2Fubm90IGJlIGV4ZWN1dGVkIGR1cmluZyB2aXJ0dWFsaXplZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDU6MTA6MzUuNjUyNDAyMzU4WiIsIlNlcSI6OSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkdxvz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-02 04:52:57 +0000 UTC FinishedAt: 2026-09-02 05:10:37 +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+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgc3VwcG9ydCBmb3IgUm9ja2NoaXAgUkszNTY4IFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUGh5c2ljYWwgQ29kaW5nIFN1YmxheWVyIChYUENTKSBhbmQgU0dNSUkgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBSb2NrY2hpcCBEV01BQyBkcml2ZXIsIGFsb25nIHdpdGggbWlub3IgUENTIGluaXQvZXhpdCBoYW5kbGluZyB1cGRhdGVzIGZvciBJbnRlbCBEV01BQyBQQ0kgYW5kIG90aGVyIFNvQyBnbHVlIGRyaXZlcnMgKFJlbmVzYXMsIFNvY2ZwZ2EpLiBUaGVzZSBjaGFuZ2VzIGFyZSByZXN0cmljdGVkIHRvIHZlbmRvci1zcGVjaWZpYyBTb0MgcGxhdGZvcm0gZHJpdmVycyAoUm9ja2NoaXAgUkszNTY4LCBSZW5lc2FzLCBTb2NmcGdhKSBhbmQgSW50ZWwgRFdNQUMgUENJIGhhcmR3YXJlLCBub25lIG9mIHdoaWNoIGFyZSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGVudmlyb25tZW50cyBsaWtlIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBjYW5ub3QgYmUgZXhlY3V0ZWQgZHVyaW5nIHZpcnR1YWxpemVkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjEwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjQ2YThmNGM5OTUyOTYxYjdmOGY5NmFmOGYyZjQ0NjFhOGY5NTk3MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMDU6MTA6MTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3Mvcm9ja2NoaXAtZHd4cGNzLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjA4NTJkMGJjYjY2YTJcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sXG5AQCAtMCwwICYjNDM7MSwxMTAgQEBcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpXG4mIzQzOyVZQU1MIDEuMlxuJiM0MzstLS1cbiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sI1xuJiM0Mzskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbiYjNDM7XG4mIzQzO3RpdGxlOiBSb2NrY2hpcCBSSzM1NjggU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBQQ1NcbiYjNDM7XG4mIzQzO21haW50YWluZXJzOlxuJiM0MzsgIC0gQ29pYSBQcmFudCBcdTAwM2Njb2lhcHJhbnRAZ21haWwuY29tXHUwMDNlXG4mIzQzO1xuJiM0MztkZXNjcmlwdGlvbjogfFxuJiM0MzsgIFJvY2tjaGlwIFJLMzU2OCBTb0MgaW50ZWdyYXRlcyBhIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUGh5c2ljYWxcbiYjNDM7ICBDb2RpbmcgU3VibGF5ZXIgKFhQQ1MpLlxuJiM0MzsgIFRoZSBQQ1MgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGJldHdlZW4gdGhlIE1lZGlhIEFjY2VzcyBDb250cm9sIChNQUMpXG4mIzQzOyAgYW5kIHRoZSBQaHlzaWNhbCBNZWRpdW0gQXR0YWNobWVudCAoUE1BKSBzdWJsYXllciB0aHJvdWdoIGEgTWVkaWFcbiYjNDM7ICBJbmRlcGVuZGVudCBJbnRlcmZhY2UgKEdNSUkpLlxuJiM0MztcbiYjNDM7ICBUaGUgWFBDUyBpcyBhY2Nlc3NlZCBvdmVyIHRoZSBBUEIzIGJ1cyBhbmQgaW50ZXJuYWxseSBjb25uZWN0ZWQgdG8gYVxuJiM0MzsgIE5hbmVuZyBDb21ibyBTZXJEZXMgUEhZLlxuJiM0MzsgIEl0IHN1cHBvcnRzIDEwMDBCQVNFLVgsIFNHTUlJIGFuZCBRU0dNSUkgbW9kZXMuXG4mIzQzO1xuJiM0MzsgIFRoZSBibG9jayBjb250YWlucyBmb3VyIE1JSSBwb3J0cyB0aGF0IGNhbiBiZSBpbmRpdmlkdWFsbHkgZW5hYmxlZCBhbmRcbiYjNDM7ICByb3V0ZWQgdG8gb25lIG9mIHRoZSBFdGhlcm5ldCBHTUFDIGNvbnRyb2xsZXJzIHZpYSB0aGUgcGNzLWhhbmRsZVxuJiM0MzsgIHByb3BlcnR5IGluIHRoZSBNQUMgZGV2aWNlIHRyZWUgbm9kZS5cbiYjNDM7XG4mIzQzO3Byb3BlcnRpZXM6XG4mIzQzOyAgY29tcGF0aWJsZTpcbiYjNDM7ICAgIGNvbnN0OiByb2NrY2hpcCxyazM1NjgteHBjc1xuJiM0MztcbiYjNDM7ICByZWc6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiYjNDM7ICBcJiMzNDsjYWRkcmVzcy1jZWxsc1wmIzM0OzpcbiYjNDM7ICAgIGNvbnN0OiAxXG4mIzQzO1xuJiM0MzsgIFwmIzM0OyNzaXplLWNlbGxzXCYjMzQ7OlxuJiM0MzsgICAgY29uc3Q6IDBcbiYjNDM7XG4mIzQzOyAgY2xvY2tzOlxuJiM0MzsgICAgaXRlbXM6XG4mIzQzOyAgICAgIC0gZGVzY3JpcHRpb246IEFQQjMgYnVzIGludGVyZmFjZSBjbG9jayAoY2xrX2Nzcl9pKSwgcmVxdWlyZWQgZm9yIHJlZ2lzdGVyIGFjY2Vzc1xuJiM0MzsgICAgICAtIGRlc2NyaXB0aW9uOiBFRUUgY2xvY2sgKGNsa19lZWVfaSksIHJlcXVpcmVkIGZvciBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0IG9wZXJhdGlvblxuJiM0MztcbiYjNDM7ICBjbG9jay1uYW1lczpcbiYjNDM7ICAgIGl0ZW1zOlxuJiM0MzsgICAgICAtIGNvbnN0OiBjc3JcbiYjNDM7ICAgICAgLSBjb25zdDogZWVlXG4mIzQzO1xuJiM0MzsgIHBoeXM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiYjNDM7ICBwaHktbmFtZXM6XG4mIzQzOyAgICBjb25zdDogc2VyZGVzXG4mIzQzO1xuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiYjNDM7cGF0dGVyblByb3BlcnRpZXM6XG4mIzQzOyAgXCYjMzQ7XnBjcy1taWlAWzAtM10kXCYjMzQ7OlxuJiM0MzsgICAgdHlwZTogb2JqZWN0XG4mIzQzOyAgICBkZXNjcmlwdGlvbjpcbiYjNDM7ICAgICAgT25lIG9mIHRoZSBmb3VyIE1JSSBwb3J0cyBvZiB0aGUgWFBDUy4gVGhlIHBvcnQgaXMgbGlua2VkIHRvIGFuXG4mIzQzOyAgICAgIEV0aGVybmV0IE1BQyBjb250cm9sbGVyIHZpYSB0aGUgcGNzLWhhbmRsZSBwcm9wZXJ0eSBpbiB0aGUgTUFDJiMzOTtzXG4mIzQzOyAgICAgIGRldmljZSB0cmVlIG5vZGUuXG4mIzQzO1xuJiM0MzsgICAgcHJvcGVydGllczpcbiYjNDM7ICAgICAgcmVnOlxuJiM0MzsgICAgICAgIGRlc2NyaXB0aW9uOiBNSUkgcG9ydCBudW1iZXIuXG4mIzQzOyAgICAgICAgZW51bTogWzAsIDEsIDIsIDNdXG4mIzQzO1xuJiM0MzsgICAgcmVxdWlyZWQ6XG4mIzQzOyAgICAgIC0gcmVnXG4mIzQzO1xuJiM0MzsgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlXG4mIzQzO1xuJiM0MztyZXF1aXJlZDpcbiYjNDM7ICAtIGNvbXBhdGlibGVcbiYjNDM7ICAtIHJlZ1xuJiM0MzsgIC0gXCYjMzQ7I2FkZHJlc3MtY2VsbHNcJiMzNDtcbiYjNDM7ICAtIFwmIzM0OyNzaXplLWNlbGxzXCYjMzQ7XG4mIzQzOyAgLSBjbG9ja3NcbiYjNDM7ICAtIGNsb2NrLW5hbWVzXG4mIzQzOyAgLSBwaHlzXG4mIzQzOyAgLSBwaHktbmFtZXNcbiYjNDM7ICAtIHBvd2VyLWRvbWFpbnNcbiYjNDM7XG4mIzQzO2FkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZVxuJiM0MztcbiYjNDM7ZXhhbXBsZXM6XG4mIzQzOyAgLSB8XG4mIzQzOyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9jbG9jay9yazM1NjgtY3J1LmhcdTAwM2VcbiYjNDM7ICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL3Bvd2VyL3JrMzU2OC1wb3dlci5oXHUwMDNlXG4mIzQzOyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9waHkvcGh5LmhcdTAwM2VcbiYjNDM7XG4mIzQzOyAgICBwY3NAZmRhMDAwMDAge1xuJiM0MzsgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7cm9ja2NoaXAscmszNTY4LXhwY3NcJiMzNDs7XG4mIzQzOyAgICAgIHJlZyA9IFx1MDAzYzB4ZmRhMDAwMDAgMHgyMDAwMDBcdTAwM2U7XG4mIzQzOyAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7ICAgICAgI3NpemUtY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuJiM0MzsgICAgICBjbG9ja3MgPSBcdTAwM2NcdTAwMjZjcnUgUENMS19YUENTXHUwMDNlLCBcdTAwM2NcdTAwMjZjcnUgQ0xLX1hQQ1NfRUVFXHUwMDNlO1xuJiM0MzsgICAgICBjbG9jay1uYW1lcyA9IFwmIzM0O2NzclwmIzM0OywgXCYjMzQ7ZWVlXCYjMzQ7O1xuJiM0MzsgICAgICBwaHlzID0gXHUwMDNjXHUwMDI2Y29tYnBoeTIgUEhZX1RZUEVfU0dNSUlcdTAwM2U7XG4mIzQzOyAgICAgIHBoeS1uYW1lcyA9IFwmIzM0O3NlcmRlc1wmIzM0OztcbiYjNDM7ICAgICAgcG93ZXItZG9tYWlucyA9IFx1MDAzY1x1MDAyNnBvd2VyIFJLMzU2OF9QRF9QSVBFXHUwMDNlO1xuJiM0MztcbiYjNDM7ICAgICAgcGNzLW1paUAwIHtcbiYjNDM7ICAgICAgICByZWcgPSBcdTAwM2MwXHUwMDNlO1xuJiM0MzsgICAgICB9O1xuJiM0MzsgICAgfTtcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkueWFtbFxuaW5kZXggMzc5YjA4YmQ5ZTk3YS4uOGU4OThiY2U5YWY3MyAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWxcbkBAIC04MCw2ICYjNDM7ODAsMTUgQEAgcHJvcGVydGllczpcbiAgICAgZGVzY3JpcHRpb246XG4gICAgICAgU29tZSBhZGRpdGlvbmFsIHBpcGUgc2V0dGluZ3MgYXJlIGFjY2Vzc2VkIHRocm91Z2ggR1JGIHJlZ3MuXG4gXG4mIzQzOyAgcm9ja2NoaXAsc2dtaWktbWFjLXNlbDpcbiYjNDM7ICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQzMlxuJiM0MzsgICAgZW51bTogWzAsIDFdXG4mIzQzOyAgICBkZWZhdWx0OiAxXG4mIzQzOyAgICBkZXNjcmlwdGlvbjpcbiYjNDM7ICAgICAgU2VsZWN0IGdtYWMwIG9yIGdtYWMxIHRvIGJlIHVzZWQgYXMgU0dNSUkgY29udHJvbGxlci5cbiYjNDM7ICAgICAgVGhlIGhhcmR3YXJlIHJlc2V0IHZhbHVlIGlzIEdNQUMxICgxKS4gU2V0IHRoaXMgdG8gMCB0byByb3V0ZVxuJiM0MzsgICAgICBTR01JSSB0byBHTUFDMC5cbiYjNDM7XG4gICBcJiMzNDsjcGh5LWNlbGxzXCYjMzQ7OlxuICAgICBjb25zdDogMVxuIFxuQEAgLTEwNSw2ICYjNDM7MTE0LDEwIEBAIGFsbE9mOlxuICAgICAgICAgICBtYXhJdGVtczogMVxuICAgICAgICAgcmVzZXQtbmFtZXM6XG4gICAgICAgICAgIG1heEl0ZW1zOiAxXG4mIzQzOyAgICAgICAgcm9ja2NoaXAsc2dtaWktbWFjLXNlbDogdHJ1ZVxuJiM0MzsgICAgZWxzZTpcbiYjNDM7ICAgICAgcHJvcGVydGllczpcbiYjNDM7ICAgICAgICByb2NrY2hpcCxzZ21paS1tYWMtc2VsOiBmYWxzZVxuICAgLSBpZjpcbiAgICAgICBwcm9wZXJ0aWVzOlxuICAgICAgICAgY29tcGF0aWJsZTpcbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXG5pbmRleCAzYTE5ZGE3NGQwMGM5Li5jM2IxNzc1MmNjODE3IDEwMDY0NFxuLS0tIGEvTUFJTlRBSU5FUlNcbiYjNDM7JiM0MzsmIzQzOyBiL01BSU5UQUlORVJTXG5AQCAtMjM3NDQsNiAmIzQzOzIzNzQ0LDE1IEBAIFM6XHRNYWludGFpbmVkXG4gRjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9yb2NrY2hpcCxyazM1NzYtc2FpLnlhbWxcbiBGOlx0c291bmQvc29jL3JvY2tjaGlwL3JvY2tjaGlwX3NhaS4qXG4gXG4mIzQzO1JPQ0tDSElQIFhQQ1MgRFJJVkVSXG4mIzQzO006XHRDb2lhIFByYW50IFx1MDAzY2NvaWFwcmFudEBnbWFpbC5jb21cdTAwM2VcbiYjNDM7TDpcdG5ldGRldkB2Z2VyLmtlcm5lbC5vcmdcbiYjNDM7TDpcdGxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmdcbiYjNDM7UzpcdE1haW50YWluZWRcbiYjNDM7RjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sXG4mIzQzO0Y6XHRkcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuY1xuJiM0MztGOlx0aW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaFxuJiM0MztcbiBST0NLRVIgRFJJVkVSXG4gTTpcdEppcmkgUGlya28gXHUwMDNjamlyaUByZXNudWxsaS51c1x1MDAzZVxuIEw6XHRuZXRkZXZAdmdlci5rZXJuZWwub3JnXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC1waG90b25pY2F0LmR0c1xuaW5kZXggNThjMTA1MmJhOGVmMy4uMjVjYWE0NDE5ODg0MyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LXBob3RvbmljYXQuZHRzXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC1waG90b25pY2F0LmR0c1xuQEAgLTMsNiAmIzQzOzMsNyBAQFxuIC9kdHMtdjEvO1xuIFxuICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2xlZHMvY29tbW9uLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9waW5jdHJsL3JvY2tjaGlwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9zb2Mvcm9ja2NoaXAsdm9wMi5oXHUwMDNlXG4gI2luY2x1ZGUgXCYjMzQ7cmszNTY4LmR0c2lcJiMzNDtcbkBAIC0yNDIsNiAmIzQzOzI0Myw3IEBAIFx1MDAyNmNvbWJwaHkxIHtcbiBcbiBcdTAwMjZjb21icGh5MiB7XG4gXHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuJiM0MztcdHJvY2tjaGlwLHNnbWlpLW1hYy1zZWwgPSBcdTAwM2MwXHUwMDNlO1xuIH07XG4gXG4gXHUwMDI2Y3B1MCB7XG5AQCAtMjYwLDkgJiM0MzsyNjIsMTggQEAgXHUwMDI2Y3B1MyB7XG4gXHRjcHUtc3VwcGx5ID0gXHUwMDNjXHUwMDI2dmRkX2NwdVx1MDAzZTtcbiB9O1xuIFxuLS8qIE1vdG9yY29tbSBZVDg1MjFTQyBMQU4gcG9ydCAocmVxdWlyZSBTR01JSSkgKi9cbiYjNDM7LyogTW90b3Jjb21tIFlUODUyMVNDIExBTiBwb3J0ICovXG4gXHUwMDI2Z21hYzAge1xuLVx0c3RhdHVzID0gXCYjMzQ7ZGlzYWJsZWRcJiMzNDs7XG4mIzQzO1x0YXNzaWduZWQtY2xvY2tzID0gXHUwMDNjXHUwMDI2Y3J1IFNDTEtfR01BQzBfUlhfVFhcdTAwM2U7XG4mIzQzO1x0YXNzaWduZWQtY2xvY2stcGFyZW50cyA9IFx1MDAzY1x1MDAyNnhwY3NfZ21hYzBfY2xrXHUwMDNlO1xuJiM0MztcdHBjcy1oYW5kbGUgPSBcdTAwM2NcdTAwMjZ4cGNzX21paTBcdTAwM2U7XG4mIzQzO1x0bWFuYWdlZCA9IFwmIzM0O2luLWJhbmQtc3RhdHVzXCYjMzQ7O1xuJiM0MztcdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzZ21paV9waHlcdTAwM2U7XG4mIzQzO1x0cGh5LW1vZGUgPSBcJiMzNDtzZ21paVwmIzM0OztcbiYjNDM7XHRwaHktc3VwcGx5ID0gXHUwMDNjXHUwMDI2dmNjXzN2M1x1MDAzZTtcbiYjNDM7XHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0OztcbiYjNDM7XHRwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZnbWFjMF9taWltXHUwMDNlO1xuJiM0MztcdHN0YXR1cyA9IFwmIzM0O29rYXlcJiMzNDs7XG4gfTtcbiBcbiAvKiBNb3RvcmNvbW0gWVQ4NTIxU0MgV0FOIHBvcnQgKi9cbkBAIC0zNDEsNiAmIzQzOzM1MiwzNiBAQCBcdTAwMjZpMnMwXzhjaCB7XG4gXHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuIH07XG4gXG4mIzQzO1x1MDAyNm1kaW8wIHtcbiYjNDM7XHRzZ21paV9waHk6IGV0aGVybmV0LXBoeUAzIHtcbiYjNDM7XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtldGhlcm5ldC1waHktaWVlZTgwMi4zLWMyMlwmIzM0OztcbiYjNDM7XHRcdHJlZyA9IFx1MDAzYzB4M1x1MDAzZTtcbiYjNDM7XHRcdG1heC1zcGVlZCA9IFx1MDAzYzEwMDBcdTAwM2U7XG4mIzQzO1x0XHRyZXNldC1hc3NlcnQtdXMgPSBcdTAwM2MyMDAwMFx1MDAzZTtcbiYjNDM7XHRcdHJlc2V0LWRlYXNzZXJ0LXVzID0gXHUwMDNjMTAwMDAwXHUwMDNlO1xuJiM0MztcdFx0cmVzZXQtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvMyBSS19QQzYgR1BJT19BQ1RJVkVfTE9XXHUwMDNlO1xuJiM0MztcbiYjNDM7XHRcdGxlZHMge1xuJiM0MztcdFx0XHQjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4mIzQzO1x0XHRcdCNzaXplLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbiYjNDM7XG4mIzQzO1x0XHRcdGxlZEAxIHtcbiYjNDM7XHRcdFx0XHRyZWcgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MztcdFx0XHRcdGNvbG9yID0gXHUwMDNjTEVEX0NPTE9SX0lEX0FNQkVSXHUwMDNlO1xuJiM0MztcdFx0XHRcdGZ1bmN0aW9uID0gTEVEX0ZVTkNUSU9OX0xBTjtcbiYjNDM7XHRcdFx0XHRkZWZhdWx0LXN0YXRlID0gXCYjMzQ7a2VlcFwmIzM0OztcbiYjNDM7XHRcdFx0fTtcbiYjNDM7XG4mIzQzO1x0XHRcdGxlZEAyIHtcbiYjNDM7XHRcdFx0XHRyZWcgPSBcdTAwM2MyXHUwMDNlO1xuJiM0MztcdFx0XHRcdGNvbG9yID0gXHUwMDNjTEVEX0NPTE9SX0lEX0dSRUVOXHUwMDNlO1xuJiM0MztcdFx0XHRcdGZ1bmN0aW9uID0gTEVEX0ZVTkNUSU9OX0xBTjtcbiYjNDM7XHRcdFx0XHRkZWZhdWx0LXN0YXRlID0gXCYjMzQ7a2VlcFwmIzM0OztcbiYjNDM7XHRcdFx0fTtcbiYjNDM7XHRcdH07XG4mIzQzO1x0fTtcbiYjNDM7fTtcbiYjNDM7XG4gXHUwMDI2bWRpbzEge1xuIFx0cmdtaWlfcGh5OiBldGhlcm5ldC1waHlAMyB7XG4gXHRcdGNvbXBhdGlibGUgPSBcJiMzNDtldGhlcm5ldC1waHktaWVlZTgwMi4zLWMyMlwmIzM0OztcbkBAIC0zNTAsNiAmIzQzOzM5MSwyNSBAQCByZ21paV9waHk6IGV0aGVybmV0LXBoeUAzIHtcbiBcdFx0cmVzZXQtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvNCBSS19QQzAgR1BJT19BQ1RJVkVfTE9XXHUwMDNlO1xuIFx0XHRyeC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzE1MDBcdTAwM2U7XG4gXHRcdHR4LWludGVybmFsLWRlbGF5LXBzID0gXHUwMDNjMTUwMFx1MDAzZTtcbiYjNDM7XG4mIzQzO1x0XHRsZWRzIHtcbiYjNDM7XHRcdFx0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MztcdFx0XHQjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4mIzQzO1xuJiM0MztcdFx0XHRsZWRAMSB7XG4mIzQzO1x0XHRcdFx0cmVnID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7XHRcdFx0XHRjb2xvciA9IFx1MDAzY0xFRF9DT0xPUl9JRF9BTUJFUlx1MDAzZTtcbiYjNDM7XHRcdFx0XHRmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9XQU47XG4mIzQzO1x0XHRcdFx0ZGVmYXVsdC1zdGF0ZSA9IFwmIzM0O2tlZXBcJiMzNDs7XG4mIzQzO1x0XHRcdH07XG4mIzQzO1xuJiM0MztcdFx0XHRsZWRAMiB7XG4mIzQzO1x0XHRcdFx0cmVnID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7XHRcdFx0XHRjb2xvciA9IFx1MDAzY0xFRF9DT0xPUl9JRF9HUkVFTlx1MDAzZTtcbiYjNDM7XHRcdFx0XHRmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9XQU47XG4mIzQzO1x0XHRcdFx0ZGVmYXVsdC1zdGF0ZSA9IFwmIzM0O2tlZXBcJiMzNDs7XG4mIzQzO1x0XHRcdH07XG4mIzQzO1x0XHR9O1xuIFx0fTtcbiB9O1xuIFxuQEAgLTU4NiwzICYjNDM7NjQ2LDEzIEBAIFx1MDAyNnhpbjMyayB7XG4gXHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0OztcbiBcdHBpbmN0cmwtMCA9IFx1MDAzY1x1MDAyNmNsazMya19vdXQxXHUwMDNlO1xuIH07XG4mIzQzO1xuJiM0MztcdTAwMjZ4cGNzIHtcbiYjNDM7XHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuJiM0MztcdHBoeXMgPSBcdTAwM2NcdTAwMjZjb21icGh5MiBQSFlfVFlQRV9TR01JSVx1MDAzZTtcbiYjNDM7XHRwaHktbmFtZXMgPSBcJiMzNDtzZXJkZXNcJiMzNDs7XG4mIzQzO307XG4mIzQzO1xuJiM0MztcdTAwMjZ4cGNzX21paTAge1xuJiM0MztcdHN0YXR1cyA9IFwmIzM0O29rYXlcJiMzNDs7XG4mIzQzO307XG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2lcbmluZGV4IDNiYzY1M2YwMjdmMWYuLjk4OWUxNjRjMGViMzkgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpXG5AQCAtMTEwLDYgJiM0MzsxMTAsNTEgQEAgc2F0YTA6IHNhdGFAZmMwMDAwMDAge1xuIFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0OztcbiBcdH07XG4gXG4mIzQzO1x0eHBjczogcGNzQGZkYTAwMDAwIHtcbiYjNDM7XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtyb2NrY2hpcCxyazM1NjgteHBjc1wmIzM0OztcbiYjNDM7XHRcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7XHRcdCNzaXplLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbiYjNDM7XHRcdHJlZyA9IFx1MDAzYzB4MCAweGZkYTAwMDAwIDB4MCAweDIwMDAwMFx1MDAzZTtcbiYjNDM7XHRcdGNsb2NrcyA9IFx1MDAzY1x1MDAyNmNydSBQQ0xLX1hQQ1NcdTAwM2UsIFx1MDAzY1x1MDAyNmNydSBDTEtfWFBDU19FRUVcdTAwM2U7XG4mIzQzO1x0XHRjbG9jay1uYW1lcyA9IFwmIzM0O2NzclwmIzM0OywgXCYjMzQ7ZWVlXCYjMzQ7O1xuJiM0MztcdFx0cG93ZXItZG9tYWlucyA9IFx1MDAzY1x1MDAyNnBvd2VyIFJLMzU2OF9QRF9QSVBFXHUwMDNlO1xuJiM0MztcdFx0c3RhdHVzID0gXCYjMzQ7ZGlzYWJsZWRcJiMzNDs7XG4mIzQzO1xuJiM0MztcdFx0eHBjc19taWkwOiBwY3MtbWlpQDAge1xuJiM0MztcdFx0XHRyZWcgPSBcdTAwM2MwXHUwMDNlO1xuJiM0MztcdFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0OztcbiYjNDM7XHRcdH07XG4mIzQzO1xuJiM0MztcdFx0eHBjc19taWkxOiBwY3MtbWlpQDEge1xuJiM0MztcdFx0XHRyZWcgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MztcdFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0OztcbiYjNDM7XHRcdH07XG4mIzQzO1xuJiM0MztcdFx0eHBjc19taWkyOiBwY3MtbWlpQDIge1xuJiM0MztcdFx0XHRyZWcgPSBcdTAwM2MyXHUwMDNlO1xuJiM0MztcdFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0OztcbiYjNDM7XHRcdH07XG4mIzQzO1xuJiM0MztcdFx0eHBjc19taWkzOiBwY3MtbWlpQDMge1xuJiM0MztcdFx0XHRyZWcgPSBcdTAwM2MzXHUwMDNlO1xuJiM0MztcdFx0XHRzdGF0dXMgPSBcJiMzNDtkaXNhYmxlZFwmIzM0OztcbiYjNDM7XHRcdH07XG4mIzQzO1x0fTtcbiYjNDM7XG4mIzQzO1x0eHBjc19nbWFjMF9jbGs6IHhwY3MtZ21hYzAtY2xvY2sge1xuJiM0MztcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O2ZpeGVkLWNsb2NrXCYjMzQ7O1xuJiM0MztcdFx0Y2xvY2stZnJlcXVlbmN5ID0gXHUwMDNjMTI1MDAwMDAwXHUwMDNlO1xuJiM0MztcdFx0Y2xvY2stb3V0cHV0LW5hbWVzID0gXCYjMzQ7Y2xrX2dtYWMwX3hwY3NfbWlpXCYjMzQ7O1xuJiM0MztcdFx0I2Nsb2NrLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbiYjNDM7XHR9O1xuJiM0MztcbiYjNDM7XHR4cGNzX2dtYWMxX2NsazogeHBjcy1nbWFjMS1jbG9jayB7XG4mIzQzO1x0XHRjb21wYXRpYmxlID0gXCYjMzQ7Zml4ZWQtY2xvY2tcJiMzNDs7XG4mIzQzO1x0XHRjbG9jay1mcmVxdWVuY3kgPSBcdTAwM2MxMjUwMDAwMDBcdTAwM2U7XG4mIzQzO1x0XHRjbG9jay1vdXRwdXQtbmFtZXMgPSBcJiMzNDtjbGtfZ21hYzFfeHBjc19taWlcJiMzNDs7XG4mIzQzO1x0XHQjY2xvY2stY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuJiM0MztcdH07XG4mIzQzO1xuIFx0cGlwZV9waHlfZ3JmMDogc3lzY29uQGZkYzcwMDAwIHtcbiBcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3JvY2tjaGlwLHJrMzU2OC1waXBlLXBoeS1ncmZcJiMzNDssIFwmIzM0O3N5c2NvblwmIzM0OztcbiBcdFx0cmVnID0gXHUwMDNjMHgwIDB4ZmRjNzAwMDAgMHgwIDB4MTAwMFx1MDAzZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1xuaW5kZXggZTNkZDVhZGRhNWFjYS4uNTA4OGFjYzA2OTgyZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcbkBAIC0xNzAsNiAmIzQzOzE3MCw3IEBAIGNvbmZpZyBEV01BQ19ST0NLQ0hJUFxuIFx0ZGVmYXVsdCBBUkNIX1JPQ0tDSElQXG4gXHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1QpXG4gXHRzZWxlY3QgTUZEX1NZU0NPTlxuJiM0MztcdHNlbGVjdCBQQ1NfWFBDU19ST0NLQ0hJUFxuIFx0aGVscFxuIFx0ICBTdXBwb3J0IGZvciBFdGhlcm5ldCBjb250cm9sbGVyIG9uIFJvY2tjaGlwIFJLMzI4OCBTb0MuXG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcbmluZGV4IGY1ZjlmYTY3ZWNkNzcuLmZkNWYwMWM4OTQxYzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG5AQCAtNjAzLDEzICYjNDM7NjAzLDQ3IEBAIHN0YXRpYyB2b2lkIGNvbW1vbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxuIFx0cGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZW5lZWRzX3Jlc2V0ID0gdHJ1ZTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgaW50ZWxfbWdiZV9wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZGV2bm9kZSwgKnBjc25vZGU7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3MgKnhwY3MgPSBOVUxMO1xuJiM0MztcdGludCBhZGRyO1xuJiM0MztcbiYjNDM7XHRkZXZub2RlID0gZGV2X2Z3bm9kZShwcml2LVx1MDAzZWRldmljZSk7XG4mIzQzO1xuJiM0MztcdGlmIChmd25vZGVfcHJvcGVydHlfcHJlc2VudChkZXZub2RlLCBcJiMzNDtwY3MtaGFuZGxlXCYjMzQ7KSkge1xuJiM0MztcdFx0cGNzbm9kZSA9IGZ3bm9kZV9maW5kX3JlZmVyZW5jZShkZXZub2RlLCBcJiMzNDtwY3MtaGFuZGxlXCYjMzQ7LCAwKTtcbiYjNDM7XHRcdHhwY3MgPSB4cGNzX2NyZWF0ZV9md25vZGUocGNzbm9kZSk7XG4mIzQzO1x0XHRmd25vZGVfaGFuZGxlX3B1dChwY3Nub2RlKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0YWRkciA9IGZmcyhwcml2LVx1MDAzZXBsYXQtXHUwMDNlbWRpb19idXNfZGF0YS1cdTAwM2VwY3NfbWFzaykgLSAxO1xuJiM0MztcdFx0eHBjcyA9IHhwY3NfY3JlYXRlX21kaW9kZXYocHJpdi1cdTAwM2VtaWksIGFkZHIpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKElTX0VSUih4cGNzKSlcbiYjNDM7XHRcdHJldHVybiBQVFJfRVJSKHhwY3MpO1xuJiM0MztcbiYjNDM7XHR4cGNzX2NvbmZpZ19lZWVfbXVsdF9mYWN0KHhwY3MsIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtdWx0X2ZhY3RfMTAwbnMpO1xuJiM0MztcbiYjNDM7XHRwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MgPSB4cGNzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBpbnRlbF9tZ2JlX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiYjNDM7e1xuJiM0MztcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHR4cGNzX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKTtcbiYjNDM7XHRwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MgPSBOVUxMO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKmludGVsX21nYmVfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdFx0XHRcdFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuLVx0LyogcGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZWhhc194cGNzIGhhcyBiZWVuIHNldCB0cnVlLCBzbyB0aGVyZVxuLVx0ICogc2hvdWxkIGFsd2F5cyBiZSBhbiBYUENTLiBUaGUgb3JpZ2luYWwgY29kZSB3b3VsZCBhbHdheXNcbi1cdCAqIHJldHVybiB0aGlzIGlmIHByZXNlbnQuXG4tXHQgKi9cbiYjNDM7XHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNleHBjcylcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcbiBcdHJldHVybiB4cGNzX3RvX3BoeWxpbmtfcGNzKHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyk7XG4gfVxuIFxuQEAgLTczMyw2ICYjNDM7NzY3LDggQEAgc3RhdGljIGludCBpbnRlbF9tZ2JlX2NvbW1vbl9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0ICAgIHBsYXQtXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYKSB7XG4gXHRcdHBsYXQtXHUwMDNlbWRpb19idXNfZGF0YS1cdTAwM2VwY3NfbWFzayA9IEJJVF9VMzIoSU5URUxfTUdCRV9YUENTX0FERFIpO1xuIFx0XHRwbGF0LVx1MDAzZWRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcbiYjNDM7XHRcdHBsYXQtXHUwMDNlcGNzX2luaXQgPSBpbnRlbF9tZ2JlX3Bjc19pbml0O1xuJiM0MztcdFx0cGxhdC1cdTAwM2VwY3NfZXhpdCA9IGludGVsX21nYmVfcGNzX2V4aXQ7XG4gXHRcdHBsYXQtXHUwMDNlc2VsZWN0X3BjcyA9IGludGVsX21nYmVfc2VsZWN0X3BjcztcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmNcbmluZGV4IDE5ZjM0ZTE4YmZlZjIuLjlhZjMyYzI2ZjljMTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguY1xuQEAgLTgxLDggJiM0Mzs4MSwxMSBAQCBzdGF0aWMgaW50IHJlbmVzYXNfZ21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXG4gc3RhdGljIHZvaWQgcmVuZXNhc19nbWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiB7XG4tXHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcylcbi1cdFx0bWlpY19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuJiM0MztcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcylcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0bWlpY19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuJiM0MztcdHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MgPSBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpyZW5lc2FzX2dtYWNfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmNcbmluZGV4IDhkNzA0MmU2ODkyNjEuLmU0N2NhMWJlYzViOGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jXG5AQCAtMjAsNiAmIzQzOzIwLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbWZkL3N5c2Nvbi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmVnbWFwLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcGNzL3Bjcy14cGNzLXJrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV9ydW50aW1lLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDtzdG1tYWNfcGxhdGZvcm0uaFwmIzM0O1xuQEAgLTQ3LDYgJiM0Mzs0OCw3IEBAIHN0cnVjdCBya19nbWFjX29wcyB7XG4gXHR2b2lkICgqc2V0X3RvX3JnbWlpKShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdixcbiBcdFx0XHQgICAgIGludCB0eF9kZWxheSwgaW50IHJ4X2RlbGF5KTtcbiBcdHZvaWQgKCpzZXRfdG9fcm1paSkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpO1xuJiM0MztcdHZvaWQgKCpzZXRfdG9fc2dtaWkpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KTtcbiBcdGludCAoKnNldF9zcGVlZCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsXG4gXHRcdFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsIGludCBzcGVlZCk7XG4gXHR2b2lkICgqaW50ZWdyYXRlZF9waHlfcG93ZXJ1cCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpO1xuQEAgLTYzLDYgJiM0Mzs2NSw3IEBAIHN0cnVjdCBya19nbWFjX29wcyB7XG4gXHRib29sIGNsb2NrX2dyZl9yZWdfaW5fcGhwO1xuIFx0Ym9vbCBzdXBwb3J0c19yZ21paTtcbiBcdGJvb2wgc3VwcG9ydHNfcm1paTtcbiYjNDM7XHRib29sIHN1cHBvcnRzX3NnbWlpO1xuIFx0Ym9vbCBwaHBfZ3JmX3JlcXVpcmVkO1xuIFx0Ym9vbCByZWdzX3ZhbGlkO1xuIFx0dTMyIHJlZ3NbXTtcbkBAIC05OCw2ICYjNDM7MTAxLDcgQEAgc3RydWN0IHJrX3ByaXZfZGF0YSB7XG4gXHRib29sIGludGVncmF0ZWRfcGh5O1xuIFx0Ym9vbCBzdXBwb3J0c19yZ21paTtcbiBcdGJvb2wgc3VwcG9ydHNfcm1paTtcbiYjNDM7XHRib29sIHN1cHBvcnRzX3NnbWlpO1xuIFxuIFx0c3RydWN0IGNsa19idWxrX2RhdGEgKmNsa3M7XG4gXHRpbnQgbnVtX2Nsa3M7XG5AQCAtODA5LDYgJiM0Mzs4MTMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJrX2dtYWNfb3BzIHJrMzUyOF9vcHMgPSB7XG4gI2RlZmluZSBSSzM1NjhfR1JGX0dNQUMxX0NPTjFcdFx0MHgwMzhjXG4gXG4gLyogUkszNTY4X0dSRl9HTUFDMF9DT04xIFx1MDAyNlx1MDAyNiBSSzM1NjhfR1JGX0dNQUMxX0NPTjEgKi9cbiYjNDM7I2RlZmluZSBSSzM1NjhfR01BQ19NT0RFX1JNSUlfUkdNSUlcdFx0R1JGX0NMUl9CSVQoNylcbiYjNDM7I2RlZmluZSBSSzM1NjhfR01BQ19NT0RFX1NHTUlJX1FTR01JSVx0XHRHUkZfQklUKDcpXG4gI2RlZmluZSBSSzM1NjhfR01BQ19GTE9XX0NUUkxcdFx0XHRHUkZfQklUKDMpXG4gI2RlZmluZSBSSzM1NjhfR01BQ19GTE9XX0NUUkxfQ0xSXHRcdEdSRl9DTFJfQklUKDMpXG4gI2RlZmluZSBSSzM1NjhfR01BQ19SWENMS19ETFlfRU5BQkxFXHRcdEdSRl9CSVQoMSlcbkBAIC04NTEsMTggJiM0Mzs4NTcsMzIgQEAgc3RhdGljIHZvaWQgcmszNTY4X3NldF90b19yZ21paShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdixcbiBcdFx0ICAgICBSSzM1NjhfR01BQ19DTEtfVFhfRExfQ0ZHKHR4X2RlbGF5KSk7XG4gXG4gXHRyZWdtYXBfd3JpdGUoYnNwX3ByaXYtXHUwMDNlZ3JmLCBjb24xLFxuJiM0MztcdFx0ICAgICBSSzM1NjhfR01BQ19NT0RFX1JNSUlfUkdNSUkgfFxuIFx0XHQgICAgIFJLMzU2OF9HTUFDX1JYQ0xLX0RMWV9FTkFCTEUgfFxuIFx0XHQgICAgIFJLMzU2OF9HTUFDX1RYQ0xLX0RMWV9FTkFCTEUpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgcmszNTY4X3NldF90b19zZ21paShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiYjNDM7e1xuJiM0MztcdHUzMiBjb24xO1xuJiM0MztcbiYjNDM7XHRjb24xID0gKGJzcF9wcml2LVx1MDAzZWlkID09IDEpID8gUkszNTY4X0dSRl9HTUFDMV9DT04xIDpcbiYjNDM7XHRcdFx0XHQgICAgIFJLMzU2OF9HUkZfR01BQzBfQ09OMTtcbiYjNDM7XG4mIzQzO1x0cmVnbWFwX3dyaXRlKGJzcF9wcml2LVx1MDAzZWdyZiwgY29uMSwgUkszNTY4X0dNQUNfTU9ERV9TR01JSV9RU0dNSUkpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmtfZ21hY19vcHMgcmszNTY4X29wcyA9IHtcbiBcdC5pbml0ID0gcmszNTY4X2luaXQsXG4gXHQuc2V0X3RvX3JnbWlpID0gcmszNTY4X3NldF90b19yZ21paSxcbiYjNDM7XHQuc2V0X3RvX3NnbWlpID0gcmszNTY4X3NldF90b19zZ21paSxcbiYjNDM7XG4gXHQuc2V0X3NwZWVkID0gcmtfc2V0X2Nsa19tYWNfc3BlZWQsXG4gXG4gXHQuZ21hY19waHlfaW50Zl9zZWxfbWFzayA9IEdFTk1BU0tfVTE2KDYsIDQpLFxuIFxuIFx0LnN1cHBvcnRzX3JtaWkgPSB0cnVlLFxuJiM0MztcdC5zdXBwb3J0c19zZ21paSA9IHRydWUsXG4gXG4gXHQucmVnc192YWxpZCA9IHRydWUsXG4gXHQucmVncyA9IHtcbkBAIC0xMjA4LDYgJiM0MzsxMjI4LDQzIEBAIHN0YXRpYyB2b2lkIHJrX3BoeV9wb3dlcmRvd24oc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpXG4gXHRcdGRldl9lcnIoYnNwX3ByaXYtXHUwMDNlZGV2LCBcJiMzNDtmYWlsIHRvIGRpc2FibGUgcGh5LXN1cHBseVxcblwmIzM0Oyk7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IHJrX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBwcml2LVx1MDAzZWRldmljZS1cdTAwM2VvZl9ub2RlO1xuJiM0MztcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25vZGU7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3MgKnhwY3M7XG4mIzQzO1xuJiM0MztcdHBjc19ub2RlID0gb2ZfcGFyc2VfcGhhbmRsZShucCwgXCYjMzQ7cGNzLWhhbmRsZVwmIzM0OywgMCk7XG4mIzQzO1x0aWYgKCFwY3Nfbm9kZSlcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcbiYjNDM7XHR4cGNzID0geHBjc19ya19jcmVhdGUocHJpdi1cdTAwM2VkZXZpY2UsIHBjc19ub2RlKTtcbiYjNDM7XHRvZl9ub2RlX3B1dChwY3Nfbm9kZSk7XG4mIzQzO1x0aWYgKElTX0VSUih4cGNzKSlcbiYjNDM7XHRcdHJldHVybiBQVFJfRVJSKHhwY3MpO1xuJiM0MztcbiYjNDM7XHRwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MgPSB4cGNzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBya19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4mIzQzO3tcbiYjNDM7XHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNleHBjcylcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0eHBjc19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyk7XG4mIzQzO1x0cHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzID0gTlVMTDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqcmtfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4mIzQzO1x0XHRcdFx0XHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiYjNDM7e1xuJiM0MztcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKVxuJiM0MztcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1xuJiM0MztcdHJldHVybiB4cGNzX3RvX3BoeWxpbmtfcGNzKHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHN0cnVjdCBya19wcml2X2RhdGEgKnJrX2dtYWNfc2V0dXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbiBcdFx0XHRcdFx0ICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQsXG4gXHRcdFx0XHRcdCAgY29uc3Qgc3RydWN0IHJrX2dtYWNfb3BzICpvcHMpXG5AQCAtMTMzMCw2ICYjNDM7MTM4Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgcmtfcHJpdl9kYXRhICpya19nbWFjX3NldHVwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4gXG4gXHRic3BfcHJpdi1cdTAwM2VzdXBwb3J0c19yZ21paSA9IG9wcy1cdTAwM2VzdXBwb3J0c19yZ21paSB8fCAhIW9wcy1cdTAwM2VzZXRfdG9fcmdtaWk7XG4gXHRic3BfcHJpdi1cdTAwM2VzdXBwb3J0c19ybWlpID0gb3BzLVx1MDAzZXN1cHBvcnRzX3JtaWkgfHwgISFvcHMtXHUwMDNlc2V0X3RvX3JtaWk7XG4mIzQzO1x0YnNwX3ByaXYtXHUwMDNlc3VwcG9ydHNfc2dtaWkgPSBvcHMtXHUwMDNlc3VwcG9ydHNfc2dtaWkgfHwgISFvcHMtXHUwMDNlc2V0X3RvX3NnbWlpO1xuIFxuIFx0aWYgKG9wcy1cdTAwM2Vpbml0KSB7XG4gXHRcdHJldCA9IG9wcy1cdTAwM2Vpbml0KGJzcF9wcml2KTtcbkBAIC0xMzYxLDYgJiM0MzsxNDE5LDEwIEBAIHN0YXRpYyBpbnQgcmtfZ21hY19jaGVja19vcHMoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpXG4gXHRcdGlmICghYnNwX3ByaXYtXHUwMDNlc3VwcG9ydHNfcm1paSlcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4mIzQzO1x0XHRpZiAoIWJzcF9wcml2LVx1MDAzZXN1cHBvcnRzX3NnbWlpKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiBcdFx0ZGV2X2Vycihic3BfcHJpdi1cdTAwM2VkZXYsXG4gXHRcdFx0XCYjMzQ7dW5zdXBwb3J0ZWQgaW50ZXJmYWNlICVkXCYjMzQ7LCBic3BfcHJpdi1cdTAwM2VwaHlfaWZhY2UpO1xuQEAgLTEzNzksMTYgJiM0MzsxNDQxLDE5IEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbiYjNDM7XHRyZXQgPSBnbWFjX2Nsa19lbmFibGUoYnNwX3ByaXYsIHRydWUpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRpZiAoYnNwX3ByaXYtXHUwMDNlcGh5X2lmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSlcbiYjNDM7XHRcdGdvdG8gc2V0X21vZGU7XG4mIzQzO1xuIFx0cmV0ID0gcmtfZ2V0X3BoeV9pbnRmX3NlbChic3BfcHJpdi1cdTAwM2VwaHlfaWZhY2UpO1xuIFx0aWYgKHJldCBcdTAwM2MgMClcbi1cdFx0cmV0dXJuIHJldDtcbiYjNDM7XHRcdGdvdG8gY2xrX2Rpc2FibGU7XG4gXG4gXHRpbnRmID0gcmV0O1xuIFxuLVx0cmV0ID0gZ21hY19jbGtfZW5hYmxlKGJzcF9wcml2LCB0cnVlKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4gXHRpZiAoYnNwX3ByaXYtXHUwMDNlZ21hY19waHlfaW50Zl9zZWxfbWFzayB8fFxuIFx0ICAgIGJzcF9wcml2LVx1MDAzZWdtYWNfcm1paV9tb2RlX21hc2spIHtcbiBcdFx0LyogSWYgZGVmaW5lZCwgZW5jb2RlIHRoZSBwaHlfaW50Zl9zZWwgdmFsdWUgKi9cbkBAIC0xMzk5LDEwICYjNDM7MTQ2NCw4IEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuIFx0XHRcdFx0ICAgICAgYnNwX3ByaXYtXHUwMDNlZ21hY19ybWlpX21vZGVfbWFzayk7XG4gXG4gXHRcdHJldCA9IHJrX3dyaXRlX2dtYWNfZ3JmX3JlZyhic3BfcHJpdiwgdmFsKTtcbi1cdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuLVx0XHRcdGdtYWNfY2xrX2VuYWJsZShic3BfcHJpdiwgZmFsc2UpO1xuLVx0XHRcdHJldHVybiByZXQ7XG4tXHRcdH1cbiYjNDM7XHRcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRcdGdvdG8gY2xrX2Rpc2FibGU7XG4gXHR9XG4gXG4gXHRpZiAoYnNwX3ByaXYtXHUwMDNlY2xvY2sucm1paV9tb2RlX21hc2spIHtcbkBAIC0xNDEwLDEzICYjNDM7MTQ3MywxMiBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcG93ZXJ1cChzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiBcdFx0XHRcdCAgICAgYnNwX3ByaXYtXHUwMDNlY2xvY2sucm1paV9tb2RlX21hc2spO1xuIFxuIFx0XHRyZXQgPSBya193cml0ZV9jbG9ja19ncmZfcmVnKGJzcF9wcml2LCB2YWwpO1xuLVx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tXHRcdFx0Z21hY19jbGtfZW5hYmxlKGJzcF9wcml2LCBmYWxzZSk7XG4tXHRcdFx0cmV0dXJuIHJldDtcbi1cdFx0fVxuJiM0MztcdFx0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdFx0Z290byBjbGtfZGlzYWJsZTtcbiBcdH1cbiBcbi1cdC8qcm1paSBvciByZ21paSovXG4mIzQzO3NldF9tb2RlOlxuJiM0MztcdC8qIHJtaWksIHJnbWlpLCBzZ21paSAqL1xuIFx0c3dpdGNoIChic3BfcHJpdi1cdTAwM2VwaHlfaWZhY2UpIHtcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuIFx0XHRkZXZfaW5mbyhkZXYsIFwmIzM0O2luaXQgZm9yIFJHTUlJXFxuXCYjMzQ7KTtcbkBAIC0xNDQ3LDE1ICYjNDM7MTUwOSwyMCBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcG93ZXJ1cChzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiBcdFx0aWYgKGJzcF9wcml2LVx1MDAzZW9wcy1cdTAwM2VzZXRfdG9fcm1paSlcbiBcdFx0XHRic3BfcHJpdi1cdTAwM2VvcHMtXHUwMDNlc2V0X3RvX3JtaWkoYnNwX3ByaXYpO1xuIFx0XHRicmVhaztcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbiYjNDM7XHRcdGRldl9pbmZvKGRldiwgXCYjMzQ7aW5pdCBmb3IgU0dNSUlcXG5cJiMzNDspO1xuJiM0MztcdFx0aWYgKGJzcF9wcml2LVx1MDAzZW9wcy1cdTAwM2VzZXRfdG9fc2dtaWkpXG4mIzQzO1x0XHRcdGJzcF9wcml2LVx1MDAzZW9wcy1cdTAwM2VzZXRfdG9fc2dtaWkoYnNwX3ByaXYpO1xuJiM0MztcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7Tk8gaW50ZXJmYWNlIGRlZmluZWQhXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldCA9IC1FSU5WQUw7XG4mIzQzO1x0XHRnb3RvIGNsa19kaXNhYmxlO1xuIFx0fVxuIFxuIFx0cmV0ID0gcmtfcGh5X3Bvd2VydXAoYnNwX3ByaXYpO1xuLVx0aWYgKHJldCkge1xuLVx0XHRnbWFjX2Nsa19lbmFibGUoYnNwX3ByaXYsIGZhbHNlKTtcbi1cdFx0cmV0dXJuIHJldDtcbi1cdH1cbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0Z290byBjbGtfZGlzYWJsZTtcbiBcbiBcdHBtX3J1bnRpbWVfZ2V0X3N5bmMoZGV2KTtcbiBcbkBAIC0xNDYzLDYgJiM0MzsxNTMwLDEwIEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuIFx0XHRic3BfcHJpdi1cdTAwM2VvcHMtXHUwMDNlaW50ZWdyYXRlZF9waHlfcG93ZXJ1cChic3BfcHJpdik7XG4gXG4gXHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO2Nsa19kaXNhYmxlOlxuJiM0MztcdGdtYWNfY2xrX2VuYWJsZShic3BfcHJpdiwgZmFsc2UpO1xuJiM0MztcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJrX2dtYWNfcG93ZXJkb3duKHN0cnVjdCBya19wcml2X2RhdGEgKmdtYWMpXG5AQCAtMTQ4Niw2ICYjNDM7MTU1Nyw5IEBAIHN0YXRpYyB2b2lkIHJrX2dldF9pbnRlcmZhY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCAqYnNwX3ByaXYsXG4gXG4gXHRpZiAocmstXHUwMDNlc3VwcG9ydHNfcm1paSlcbiBcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJLCBpbnRlcmZhY2VzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHJrLVx1MDAzZXN1cHBvcnRzX3NnbWlpKVxuJiM0MztcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSwgaW50ZXJmYWNlcyk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgcmtfc2V0X2Nsa190eF9yYXRlKHZvaWQgKmJzcF9wcml2Xywgc3RydWN0IGNsayAqY2xrX3R4X2ksXG5AQCAtMTYwMiw2ICYjNDM7MTY3NiwxNyBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdHBsYXRfZGF0LVx1MDAzZXN1c3BlbmQgPSBya19nbWFjX3N1c3BlbmQ7XG4gXHRwbGF0X2RhdC1cdTAwM2VyZXN1bWUgPSBya19nbWFjX3Jlc3VtZTtcbiBcbiYjNDM7XHRpZiAocGxhdF9kYXQtXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHtcbiYjNDM7XHRcdC8qIFNHTUlJIGNsb2NrIGFsd2F5cyBydW5zIGF0IDEyNSBNSHogKi9cbiYjNDM7XHRcdHBsYXRfZGF0LVx1MDAzZXNldF9jbGtfdHhfcmF0ZSA9IE5VTEw7XG4mIzQzO1xuJiM0MztcdFx0LyogU0dNSUkgcmVxdWlyZXMgYSBQQ1MgKi9cbiYjNDM7XHRcdHBsYXRfZGF0LVx1MDAzZWRlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTtcbiYjNDM7XHRcdHBsYXRfZGF0LVx1MDAzZXBjc19pbml0ID0gcmtfcGNzX2luaXQ7XG4mIzQzO1x0XHRwbGF0X2RhdC1cdTAwM2VwY3NfZXhpdCA9IHJrX3Bjc19leGl0O1xuJiM0MztcdFx0cGxhdF9kYXQtXHUwMDNlc2VsZWN0X3BjcyA9IHJrX3NlbGVjdF9wY3M7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHBsYXRfZGF0LVx1MDAzZWJzcF9wcml2ID0gcmtfZ21hY19zZXR1cChwZGV2LCBwbGF0X2RhdCwgZGF0YSk7XG4gXHRpZiAoSVNfRVJSKHBsYXRfZGF0LVx1MDAzZWJzcF9wcml2KSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIocGxhdF9kYXQtXHUwMDNlYnNwX3ByaXYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuY1xuaW5kZXggMTM2MzQ5NjViYzE5YS4uMDFkZjQ3NzZlZGIzZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jXG5AQCAtMzUsOCAmIzQzOzM1LDExIEBAIHN0YXRpYyBpbnQgcnpuMV9kd21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXG4gc3RhdGljIHZvaWQgcnpuMV9kd21hY19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4ge1xuLVx0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4tXHRcdG1paWNfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKTtcbiYjNDM7XHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdG1paWNfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKTtcbiYjNDM7XHRwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzID0gTlVMTDtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqcnpuMV9kd21hY19zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmNcbmluZGV4IDFkN2YwYTU3ZDI4ODkuLjZkNGJjMWZlOGY3NTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuY1xuQEAgLTUzOSw4ICYjNDM7NTM5LDExIEBAIHN0YXRpYyBpbnQgc29jZnBnYV9kd21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXG4gc3RhdGljIHZvaWQgc29jZnBnYV9kd21hY19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4ge1xuLVx0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4tXHRcdGx5bnhfcGNzX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcyk7XG4mIzQzO1x0aWYgKCFwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRseW54X3Bjc19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuJiM0MztcdHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MgPSBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpzb2NmcGdhX2R3bWFjX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jXG5pbmRleCBhZmU5OGZmNWJkY2IwLi5kMmY3N2YwYzIyM2E3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uY1xuQEAgLTQyNiwzNiAmIzQzOzQyNiwxNSBAQCBpbnQgc3RtbWFjX21kaW9fcmVzZXQoc3RydWN0IG1paV9idXMgKmJ1cylcbiBpbnQgc3RtbWFjX3Bjc19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiB7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbi1cdHN0cnVjdCBmd25vZGVfaGFuZGxlICpkZXZub2RlLCAqcGNzbm9kZTtcbi1cdHN0cnVjdCBkd194cGNzICp4cGNzID0gTlVMTDtcbi1cdGludCBhZGRyLCByZXQ7XG4tXG4tXHRkZXZub2RlID0gZGV2X2Z3bm9kZShwcml2LVx1MDAzZWRldmljZSk7XG4tXG4tXHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19pbml0KSB7XG4tXHRcdHJldCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwY3NfaW5pdChwcml2KTtcbi1cdH0gZWxzZSBpZiAoZndub2RlX3Byb3BlcnR5X3ByZXNlbnQoZGV2bm9kZSwgXCYjMzQ7cGNzLWhhbmRsZVwmIzM0OykpIHtcbi1cdFx0cGNzbm9kZSA9IGZ3bm9kZV9maW5kX3JlZmVyZW5jZShkZXZub2RlLCBcJiMzNDtwY3MtaGFuZGxlXCYjMzQ7LCAwKTtcbi1cdFx0eHBjcyA9IHhwY3NfY3JlYXRlX2Z3bm9kZShwY3Nub2RlKTtcbi1cdFx0Zndub2RlX2hhbmRsZV9wdXQocGNzbm9kZSk7XG4tXHRcdHJldCA9IFBUUl9FUlJfT1JfWkVSTyh4cGNzKTtcbi1cdH0gZWxzZSBpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEgXHUwMDI2XHUwMDI2XG4tXHRcdCAgIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZXBjc19tYXNrKSB7XG4tXHRcdGFkZHIgPSBmZnMocHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEtXHUwMDNlcGNzX21hc2spIC0gMTtcbi1cdFx0eHBjcyA9IHhwY3NfY3JlYXRlX21kaW9kZXYocHJpdi1cdTAwM2VtaWksIGFkZHIpO1xuLVx0XHRyZXQgPSBQVFJfRVJSX09SX1pFUk8oeHBjcyk7XG4tXHR9IGVsc2Uge1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGlmICghcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19pbml0KVxuIFx0XHRyZXR1cm4gMDtcbi1cdH1cbiBcbiYjNDM7XHRyZXQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2luaXQocHJpdik7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2LVx1MDAzZWRldmljZSwgcmV0LCBcJiMzNDtObyB4UENTIGZvdW5kXFxuXCYjMzQ7KTtcbiBcbi1cdGlmICh4cGNzKVxuLVx0XHR4cGNzX2NvbmZpZ19lZWVfbXVsdF9mYWN0KHhwY3MsIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtdWx0X2ZhY3RfMTAwbnMpO1xuLVxuLVx0cHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzID0geHBjcztcbi1cbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC00NjMsMTQgJiM0Mzs0NDIsMTAgQEAgdm9pZCBzdG1tYWNfcGNzX2NsZWFuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIHtcbiBcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuIFxuLVx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwY3NfZXhpdClcbi1cdFx0cHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19leGl0KHByaXYpO1xuLVxuLVx0aWYgKCFwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MpXG4mIzQzO1x0aWYgKCFwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2V4aXQpXG4gXHRcdHJldHVybjtcbiBcbi1cdHhwY3NfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MpO1xuLVx0cHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzID0gTlVMTDtcbiYjNDM7XHRwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2V4aXQocHJpdik7XG4gfVxuIFxuIHN0cnVjdCBzdG1tYWNfY2xrX3JhdGUge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnIGIvZHJpdmVycy9uZXQvcGNzL0tjb25maWdcbmluZGV4IGU0MTdmZDY2ZjY2MGEuLjg4YmM0MDc5MWU2OWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGNzL0tjb25maWdcbkBAIC0xMiw2ICYjNDM7MTIsMjkgQEAgY29uZmlnIFBDU19YUENTXG4gXHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgZHJpdmVyIGFuZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBTeW5vcHN5c1xuIFx0ICBEZXNpZ25XYXJlIFhQQ1MgY29udHJvbGxlcnMuXG4gXG4mIzQzO2lmIFBDU19YUENTXG4mIzQzO1xuJiM0Mztjb25maWcgUENTX1hQQ1NfUExBVEZPUk1cbiYjNDM7XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIFhQQ1MgY29udHJvbGxlciBzdXBwb3J0XCYjMzQ7XG4mIzQzO1x0ZGVmYXVsdCBQQ1NfWFBDU1xuJiM0MztcdGhlbHBcbiYjNDM7XHQgIEdlbmVyaWMgRFdYUENTIGRyaXZlciBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJiMzOTt0IHJlcXVpcmUgYW55XG4mIzQzO1x0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXG4mIzQzO1x0ICBkYXRhIGZvciBzZXR1cC5cbiYjNDM7XG4mIzQzO1x0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuJiM0MztcbiYjNDM7Y29uZmlnIFBDU19YUENTX1JPQ0tDSElQXG4mIzQzO1x0dHJpc3RhdGUgXCYjMzQ7Um9ja2NoaXAgWFBDUyBjb250cm9sbGVyIHN1cHBvcnRcJiMzNDtcbiYjNDM7XHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcbiYjNDM7XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1QpXG4mIzQzO1x0aGVscFxuJiM0MztcdCAgU3VwcG9ydCBmb3IgWFBDUyBjb250cm9sbGVyIG9uIFJvY2tjaGlwIFJLMzU2eCBTb0MuXG4mIzQzO1xuJiM0MztcdCAgSWYgeW91IGhhdmUgYSBSb2NrY2hpcCBTb0Mgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuJiM0MztcbiYjNDM7ZW5kaWYgIyBQQ1NfWFBDU1xuJiM0MztcbiBjb25maWcgUENTX0xZTlhcbiBcdHRyaXN0YXRlXG4gXHRoZWxwXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlIGIvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlXG5pbmRleCA0Zjc5MjA2MThiOTAwLi5jODA5YjdmOTQyYTUxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGVcbkBAIC0xLDEwICYjNDM7MSw5IEBAXG4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICMgTWFrZWZpbGUgZm9yIExpbnV4IFBDUyBkcml2ZXJzXG4gXG4tcGNzX3hwY3MtJChDT05GSUdfUENTX1hQQ1MpXHQ6PSBwY3MteHBjcy5vIHBjcy14cGNzLXBsYXQubyBcXFxuLVx0XHRcdFx0ICAgcGNzLXhwY3MtbnhwLm8gcGNzLXhwY3Mtd3gub1xuLVxuLW9iai0kKENPTkZJR19QQ1NfWFBDUylcdFx0JiM0Mzs9IHBjc194cGNzLm9cbiYjNDM7b2JqLSQoQ09ORklHX1BDU19YUENTKSAmIzQzOz0gcGNzLXhwY3MubyBwY3MteHBjcy1ueHAubyBwY3MteHBjcy13eC5vXG4mIzQzO29iai0kKENPTkZJR19QQ1NfWFBDU19QTEFURk9STSkgJiM0Mzs9IHBjcy14cGNzLXBsYXQub1xuJiM0MztvYmotJChDT05GSUdfUENTX1hQQ1NfUk9DS0NISVApICYjNDM7PSBwY3MteHBjcy1yay5vXG4gb2JqLSQoQ09ORklHX1BDU19MWU5YKVx0XHQmIzQzOz0gcGNzLWx5bngub1xuIG9iai0kKENPTkZJR19QQ1NfTVRLX0xZTlhJKVx0JiM0Mzs9IHBjcy1tdGstbHlueGkub1xuIG9iai0kKENPTkZJR19QQ1NfUlpOMV9NSUlDKVx0JiM0Mzs9IHBjcy1yem4xLW1paWMub1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1yay5jIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi40ZWYyMGIwOTNkYWRhXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuY1xuQEAgLTAsMCAmIzQzOzEsNTYxIEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOy8qXG4mIzQzOyAqIFJvY2tjaGlwIFhQQ1MgcGxhdGZvcm0gZGV2aWNlIGRyaXZlclxuJiM0MzsgKlxuJiM0MzsgKiBCYXNlZCBvbiB0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBYUENTIHBsYXRmb3JtIGRyaXZlci5cbiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDI0IFNlcmdlIFNlbWluXG4mIzQzOyAqXG4mIzQzOyAqIEFkYXB0ZWQgZm9yIFJvY2tjaGlwIFNvQ3MsIHdpdGggcmVmZXJlbmNlIHRvIHRoZSBSb2NrY2hpcCBPRU0gZHJpdmVyLlxuJiM0MzsgKiBDb3B5cmlnaHQgKEMpIDIwMjYgQ29pYSBQcmFudFxuJiM0MzsgKi9cbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2F0b21pYy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY2xrLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZGV2aWNlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaW8uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9pb3BvbGwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9tZGlvLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9wbGF0Zm9ybS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS9waHkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV9kb21haW4uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV9ydW50aW1lLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9zaXplcy5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtwY3MteHBjcy5oXCYjMzQ7XG4mIzQzO1xuJiM0MztzdHJ1Y3QgZHdfeHBjc19yayB7XG4mIzQzO1x0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjtcbiYjNDM7XHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuJiM0MztcdHZvaWQgX19pb21lbSAqcmVnX2Jhc2U7XG4mIzQzO1x0c3RydWN0IHBoeSAqc2VyZGVzX3BoeTtcbiYjNDM7XHRzdHJ1Y3QgY2xrICpjc3JfY2xrO1xuJiM0MztcdHN0cnVjdCBjbGsgKmVlZV9jbGs7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgcHRyZGlmZl90IHhwY3NfcmtfYWRkcl9mb3JtYXQoaW50IGRldiwgaW50IHJlZylcbiYjNDM7e1xuJiM0MztcdHJldHVybiBGSUVMRF9QUkVQKDB4NzAwMDAsIGRldikgfCBGSUVMRF9QUkVQKDB4ZmZmZiwgcmVnKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3JlYWRfcmVnKHN0cnVjdCBkd194cGNzX3JrICpweHBjcywgaW50IGRldiwgaW50IHJlZylcbiYjNDM7e1xuJiM0MztcdHB0cmRpZmZfdCBjc3I7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0Y3NyID0geHBjc19ya19hZGRyX2Zvcm1hdChkZXYsIHJlZyk7XG4mIzQzO1xuJiM0MztcdHJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXYpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSByZWFkbChweHBjcy1cdTAwM2VyZWdfYmFzZSAmIzQzOyAoY3NyIFx1MDAzY1x1MDAzYyAyKSkgXHUwMDI2IDB4ZmZmZjtcbiYjNDM7XG4mIzQzO1x0cG1fcnVudGltZV9wdXQoXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXYpO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgeHBjc19ya193cml0ZV9yZWcoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzLCBpbnQgZGV2LCBpbnQgcmVnLCB1MTYgdmFsKVxuJiM0Mzt7XG4mIzQzO1x0cHRyZGlmZl90IGNzcjtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRjc3IgPSB4cGNzX3JrX2FkZHJfZm9ybWF0KGRldiwgcmVnKTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldChcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldik7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHdyaXRlbCh2YWwsIHB4cGNzLVx1MDAzZXJlZ19iYXNlICYjNDM7IChjc3IgXHUwMDNjXHUwMDNjIDIpKTtcbiYjNDM7XG4mIzQzO1x0cG1fcnVudGltZV9wdXQoXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXYpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsjZGVmaW5lIFJPQ0tDSElQX01NRF9NSUkxXHQyXG4mIzQzOyNkZWZpbmUgUk9DS0NISVBfTU1EX01JSTJcdDNcbiYjNDM7I2RlZmluZSBST0NLQ0hJUF9NTURfTUlJM1x0NFxuJiM0MzsjZGVmaW5lIFJPQ0tDSElQX01NRF9QTUFQTURcdDZcbiYjNDM7I2RlZmluZSBST0NLQ0hJUF9NTURfTUlJXHQ3XG4mIzQzO1xuJiM0MztzdGF0aWMgYm9vbCB4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShpbnQgYWRkcilcbiYjNDM7e1xuJiM0MztcdHJldHVybiAhKGFkZHIgXHUwMDNjIDAgfHwgYWRkciBcdTAwM2UgMyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgeHBjc19ya19tZGlvX3JlYWRfcmVtYXBwaW5nKGludCBhZGRyLCBpbnQgZGV2LCBpbnQgcmVnKVxuJiM0Mzt7XG4mIzQzO1x0c3dpdGNoIChkZXYpIHtcbiYjNDM7XHRjYXNlIE1ESU9fTU1EX1BNQVBNRDpcbiYjNDM7XHRcdHJldHVybiBST0NLQ0hJUF9NTURfUE1BUE1EO1xuJiM0MztcdGNhc2UgTURJT19NTURfVkVORDI6XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIC1FTlhJTztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qIHJlYWQgcmVtYXBwaW5nIHRvIE1JSSBpcyBwZXJmb3JtZWQgYnkgSFcgKi9cbiYjNDM7XHRzd2l0Y2ggKGFkZHIpIHtcbiYjNDM7XHRjYXNlIDA6XG4mIzQzO1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTtcbiYjNDM7XHRjYXNlIDE6XG4mIzQzO1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTE7XG4mIzQzO1x0Y2FzZSAyOlxuJiM0MztcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkyO1xuJiM0MztcdGNhc2UgMzpcbiYjNDM7XHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoaW50IGFkZHIsIGludCBkZXYsIGludCByZWcpXG4mIzQzO3tcbiYjNDM7XHRzd2l0Y2ggKGRldikge1xuJiM0MztcdGNhc2UgTURJT19NTURfUE1BUE1EOlxuJiM0MztcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9QTUFQTUQ7XG4mIzQzO1x0Y2FzZSBNRElPX01NRF9WRU5EMjpcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gLUVOWElPO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogV3JpdGFibGUgb25seSBvbiBNSUkgKi9cbiYjNDM7XHRzd2l0Y2ggKHJlZykge1xuJiM0MztcdGNhc2UgRFdfVlJfTUlJX0FOX0NUUkw6XG4mIzQzO1x0Y2FzZSBEV19WUl9NSUlfQU5fSU5UUl9TVFM6XG4mIzQzO1x0Y2FzZSBEV19WUl9NSUlfRUVFX01DVFJMMDpcbiYjNDM7XHRjYXNlIERXX1ZSX01JSV9FRUVfTUNUUkwxOlxuJiM0MztcdGNhc2UgRFdfVlJfTUlJX0RJR19DVFJMMjpcbiYjNDM7XHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAoYWRkcikge1xuJiM0MztcdGNhc2UgMDpcbiYjNDM7XHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJO1xuJiM0MztcdGNhc2UgMTpcbiYjNDM7XHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMTtcbiYjNDM7XHRjYXNlIDI6XG4mIzQzO1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTI7XG4mIzQzO1x0Y2FzZSAzOlxuJiM0MztcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkzO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGJ1cy1cdTAwM2Vwcml2O1xuJiM0MztcdGludCBkZXY7XG4mIzQzO1xuJiM0MztcdGlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoYWRkcikpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4mIzQzO1x0ZGV2ID0geHBjc19ya19tZGlvX3JlYWRfcmVtYXBwaW5nKGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCByZWcpO1xuJiM0MztcdGlmIChkZXYgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gMHhmZmZmO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4geHBjc19ya19yZWFkX3JlZyhweHBjcywgZGV2LCByZWcpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3Nfcmtfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgdmFsKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLVx1MDAzZXByaXY7XG4mIzQzO1x0aW50IGRldjtcbiYjNDM7XG4mIzQzO1x0aWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShhZGRyKSlcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcbiYjNDM7XHRkZXYgPSB4cGNzX3JrX21kaW9fd3JpdGVfcmVtYXBwaW5nKGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCByZWcpO1xuJiM0MztcdGlmIChkZXYgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHhwY3Nfcmtfd3JpdGVfcmVnKHB4cGNzLCBkZXYsIHJlZywgdmFsKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2LCBpbnQgcmVnKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLVx1MDAzZXByaXY7XG4mIzQzO1xuJiM0MztcdGlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoYWRkcikpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4mIzQzO1x0ZGV2ID0geHBjc19ya19tZGlvX3JlYWRfcmVtYXBwaW5nKGFkZHIsIGRldiwgcmVnKTtcbiYjNDM7XHRpZiAoZGV2IFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIDB4ZmZmZjtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHhwY3NfcmtfcmVhZF9yZWcocHhwY3MsIGRldiwgcmVnKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZywgdTE2IHZhbClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGJ1cy1cdTAwM2Vwcml2O1xuJiM0MztcbiYjNDM7XHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuJiM0MztcdGRldiA9IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoYWRkciwgZGV2LCByZWcpO1xuJiM0MztcdGlmIChkZXYgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHhwY3Nfcmtfd3JpdGVfcmVnKHB4cGNzLCBkZXYsIHJlZywgdmFsKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBkd194cGNzX3JrICp4cGNzX3JrX2NyZWF0ZV9kYXRhKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7XG4mIzQzO1xuJiM0MztcdHB4cGNzID0gZGV2bV9remFsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBzaXplb2YoKnB4cGNzKSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFweHBjcylcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuJiM0MztcbiYjNDM7XHRweHBjcy1cdTAwM2VwZGV2ID0gcGRldjtcbiYjNDM7XG4mIzQzO1x0ZGV2X3NldF9kcnZkYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBweHBjcyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBweHBjcztcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3NlcmRlc19waHlfaW5pdChzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbiYjNDM7XG4mIzQzO1x0cHhwY3MtXHUwMDNlc2VyZGVzX3BoeSA9IGRldm1fcGh5X2dldChkZXYsIFwmIzM0O3NlcmRlc1wmIzM0Oyk7XG4mIzQzO1x0aWYgKElTX0VSUihweHBjcy1cdTAwM2VzZXJkZXNfcGh5KSlcbiYjNDM7XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihweHBjcy1cdTAwM2VzZXJkZXNfcGh5KSxcbiYjNDM7XHRcdFx0XHRcdFwmIzM0O0ZhaWxlZCB0byBnZXQgU2VyRGVzIFBIWVxcblwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvZmYodm9pZCAqZGF0YSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRhdGE7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG4mIzQzO1xuJiM0MztcdHBoeV9wb3dlcl9vZmYocHhwY3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4mIzQzO1x0cGh5X2V4aXQocHhwY3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4mIzQzO1xuJiM0MztcdGRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgZmFsc2UpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9uKHN0cnVjdCBkd194cGNzX3JrICpweHBjcylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2O1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogVGhlIHBvd2VyIGRvbWFpbiBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBlbmFibGVkLCB3aGljaCBhbGxvd3MgdXMgdG9cbiYjNDM7XHQgKiBkeW5hbWljYWxseSB0dXJuIHRoZSBDU1IgY2xvY2sgb24vb2ZmIHVzaW5nIFBNIHdoaWxlIGtlZXBpbmcgdGhlIFBDU1xuJiM0MztcdCAqIHBvd2VyZWQgb24uXG4mIzQzO1x0ICovXG4mIzQzO1x0cmV0ID0gZGV2X3BtX2dlbnBkX3JwbV9hbHdheXNfb24oZGV2LCB0cnVlKTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIHBvd2VyIG9uIHBvd2VyLWRvbWFpbnNcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldCA9IHBoeV9pbml0KHB4cGNzLVx1MDAzZXNlcmRlc19waHkpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gaW5pdCBTZXJEZXMgUEhZXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGdvdG8gcG1fZG9tYWluO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0ID0gcGh5X3Bvd2VyX29uKHB4cGNzLVx1MDAzZXNlcmRlc19waHkpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gcG93ZXIgb24gU2VyRGVzIFBIWVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRnb3RvIHNlcmRlc19waHk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvZmYsIHB4cGNzKTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIGRldm0gZm9yIFNlckRlcyBQSFk6ICVkXFxuXCYjMzQ7LCByZXQpO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7c2VyZGVzX3BoeTpcbiYjNDM7XHRwaHlfZXhpdChweHBjcy1cdTAwM2VzZXJkZXNfcGh5KTtcbiYjNDM7cG1fZG9tYWluOlxuJiM0MztcdGRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgZmFsc2UpO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgeHBjc19ya19pbml0X3JlcyhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gcHhwY3MtXHUwMDNlcGRldjtcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiYjNDM7XHRzdHJ1Y3QgcmVzb3VyY2UgKnJlcztcbiYjNDM7XG4mIzQzO1x0cmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTtcbiYjNDM7XHRpZiAoIXJlcykge1xuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O05vIHJlZy1zcGFjZSBmb3VuZFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChyZXNvdXJjZV9zaXplKHJlcykgXHUwMDNjIFNaXzJNKSB7XG4mIzQzO1x0XHRkZXZfZXJyKGRldiwgXCYjMzQ7SW52YWxpZCByZWctc3BhY2Ugc2l6ZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHB4cGNzLVx1MDAzZXJlZ19iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTtcbiYjNDM7XHRpZiAoSVNfRVJSKHB4cGNzLVx1MDAzZXJlZ19iYXNlKSkge1xuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBtYXAgcmVnLXNwYWNlXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiBQVFJfRVJSKHB4cGNzLVx1MDAzZXJlZ19iYXNlKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB4cGNzX3JrX2V4aXRfY2xrKHZvaWQgKmRhdGEpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBkYXRhO1xuJiM0MztcbiYjNDM7XHRjbGtfZGlzYWJsZV91bnByZXBhcmUocHhwY3MtXHUwMDNlZWVlX2Nsayk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgeHBjc19ya19pbml0X2NsayhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRweHBjcy1cdTAwM2Vjc3JfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgXCYjMzQ7Y3NyXCYjMzQ7KTtcbiYjNDM7XHRpZiAoSVNfRVJSKHB4cGNzLVx1MDAzZWNzcl9jbGspKVxuJiM0MztcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHB4cGNzLVx1MDAzZWNzcl9jbGspLFxuJiM0MztcdFx0XHRcdFx0IFwmIzM0O0ZhaWxlZCB0byBnZXQgQ1NSIGNsb2NrXFxuXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0cG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKGRldik7XG4mIzQzO1x0cmV0ID0gZGV2bV9wbV9ydW50aW1lX2VuYWJsZShkZXYpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gZW5hYmxlIHJ1bnRpbWUtUE1cXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHB4cGNzLVx1MDAzZWVlZV9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCBcJiMzNDtlZWVcJiMzNDspO1xuJiM0MztcdGlmIChJU19FUlIocHhwY3MtXHUwMDNlZWVlX2NsaykpXG4mIzQzO1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHhwY3MtXHUwMDNlZWVlX2NsayksXG4mIzQzO1x0XHRcdFx0XHQgXCYjMzQ7RmFpbGVkIHRvIGdldCBFRUUgY2xvY2tcXG5cJiMzNDspO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocHhwY3MtXHUwMDNlZWVlX2Nsayk7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBlbmFibGUgRUVFIGNsb2NrXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCB4cGNzX3JrX2V4aXRfY2xrLCBweHBjcyk7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBkZXZtIGZvciBFRUUgY2xvY2s6ICVkXFxuXCYjMzQ7LCByZXQpO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9idXMoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG4mIzQzO1x0c3RhdGljIGF0b21pY190IGlkID0gQVRPTUlDX0lOSVQoLTEpO1xuJiM0MztcdHN0cnVjdCBtaWlfYnVzICpidXM7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0YnVzID0gZGV2bV9tZGlvYnVzX2FsbG9jX3NpemUoZGV2LCAwKTtcbiYjNDM7XHRpZiAoIWJ1cylcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiYjNDM7XHRidXMtXHUwMDNlbmFtZSA9IFwmIzM0O1JvY2tjaGlwIERXIFhQQ1MgTUNJL0FQQjNcJiMzNDs7XG4mIzQzO1x0YnVzLVx1MDAzZXJlYWQgPSB4cGNzX3JrX3JlYWRfYzIyO1xuJiM0MztcdGJ1cy1cdTAwM2V3cml0ZSA9IHhwY3Nfcmtfd3JpdGVfYzIyO1xuJiM0MztcdGJ1cy1cdTAwM2VyZWFkX2M0NSA9IHhwY3NfcmtfcmVhZF9jNDU7XG4mIzQzO1x0YnVzLVx1MDAzZXdyaXRlX2M0NSA9IHhwY3Nfcmtfd3JpdGVfYzQ1O1xuJiM0MztcdGJ1cy1cdTAwM2VwaHlfbWFzayA9IH4wO1xuJiM0MztcdGJ1cy1cdTAwM2VwYXJlbnQgPSBkZXY7XG4mIzQzO1x0YnVzLVx1MDAzZXByaXYgPSBweHBjcztcbiYjNDM7XG4mIzQzO1x0c25wcmludGYoYnVzLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsXG4mIzQzO1x0XHQgXCYjMzQ7cm9ja2NoaXBfZHd4cGNzLSV4XCYjMzQ7LCBhdG9taWNfaW5jX3JldHVybihcdTAwMjZpZCkpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIE1ESU8tYnVzIGhlcmUgc2VydmVzIGFzIGp1c3QgYSBiYWNrLWVuZCBlbmdpbmUgYWJzdHJhY3Rpbmcgb3V0XG4mIzQzO1x0ICogdGhlIE1ESU8gYW5kIE1DSS9BUEIzIElPIGludGVyZmFjZXMgdXRpbGl6ZWQgZm9yIHRoZSBSb2NrY2hpcCBEV1hQQ1MgQ1NSc1xuJiM0MztcdCAqIGFjY2Vzcy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gY3JlYXRlIE1ESU8gYnVzXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRweHBjcy1cdTAwM2VidXMgPSBidXM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgeHBjc19ya19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHB4cGNzID0geHBjc19ya19jcmVhdGVfZGF0YShwZGV2KTtcbiYjNDM7XHRpZiAoSVNfRVJSKHB4cGNzKSlcbiYjNDM7XHRcdHJldHVybiBQVFJfRVJSKHB4cGNzKTtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBUaGUgWFBDUyBtYXkgYmUgYXR0YWNoZWQgdG8gYSBwb3dlciBkb21haW4gKGUuZy4gUERfUElQRSkuIFRoZSBkb21haW5cbiYjNDM7XHQgKiBtdXN0IGJlIHBvd2VyZWQgb24gYmVmb3JlIGFueSByZWdpc3RlciBhY2Nlc3MsIG90aGVyd2lzZSB0aGUgU29DIHdpbGxcbiYjNDM7XHQgKiB0cmlnZ2VyIGEgc3luY2hyb25vdXMgZXh0ZXJuYWwgYWJvcnQgKFNFcnJvcikuXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBBY2Nlc3NpbmcgdGhlIFhQQ1MgcmVnaXN0ZXJzIGFsc28gcmVxdWlyZXMgYSBUWCBjbG9jayBmcm9tIHRoZSBTZXJEZXMsXG4mIzQzO1x0ICogd2hpY2ggaXMgbmVlZGVkIGZvciB0aGUgc29mdCByZXNldC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRyZXQgPSB4cGNzX3JrX3NlcmRlc19waHlfaW5pdChweHBjcyk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9uKHB4cGNzKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0geHBjc19ya19pbml0X3JlcyhweHBjcyk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IHhwY3NfcmtfaW5pdF9jbGsocHhwY3MpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSB4cGNzX3JrX2luaXRfYnVzKHB4cGNzKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHhwY3NfcmtfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4mIzQzO3tcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEZvcmNlIHRoZSBkZXZpY2UgaW50byBzdXNwZW5kIHN0YXRlIHRvIGdhdGUgdGhlIENTUiBjbG9jay4gVGhpc1xuJiM0MztcdCAqIHByZXZlbnRzIGNsb2NrIGxlYWthZ2UgYWZ0ZXIgZGV2bSByZXNvdXJjZXMgYXJlIHJlbGVhc2VkLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogVGhpcyBpcyBzYWZlIGJlY2F1c2U6XG4mIzQzO1x0ICogICAxLiBUaGUgZGV2aWNlIGxpbmsgKERMX0ZMQUdfQVVUT1JFTU9WRV9DT05TVU1FUikgcHJldmVudHMgdW5iaW5kXG4mIzQzO1x0ICogICAgICB3aGlsZSBhbnkgY29uc3VtZXIgKE1BQykgaXMgc3RpbGwgYXR0YWNoZWQuXG4mIzQzO1x0ICogICAyLiBObyBNRElPIGFjY2VzcyB3aWxsIG9jY3VyIGFmdGVyIHRoaXMgcG9pbnQsIGFzIHRoZSBNQUMgZHJpdmVyXG4mIzQzO1x0ICogICAgICBoYXMgYWxyZWFkeSBiZWVuIHVuYm91bmQgKG9yIHdlIGFyZSBiZWluZyByZW1vdmVkIGJlY2F1c2Ugbm9cbiYjNDM7XHQgKiAgICAgIGNvbnN1bWVyIGV4aXN0cykuXG4mIzQzO1x0ICovXG4mIzQzO1x0cG1fcnVudGltZV9mb3JjZV9zdXNwZW5kKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgeHBjc19ya19vZl9pZHNbXSA9IHtcbiYjNDM7XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cm9ja2NoaXAscmszNTY4LXhwY3NcJiMzNDsgfSxcbiYjNDM7XHR7IC8qIHNlbnRpbmVsICovIH0sXG4mIzQzO307XG4mIzQzO01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHhwY3Nfcmtfb2ZfaWRzKTtcbiYjNDM7XG4mIzQzO3N0cnVjdCBkd194cGNzICp4cGNzX3JrX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2O1xuJiM0MztcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25wO1xuJiM0MztcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcztcbiYjNDM7XHRzdHJ1Y3QgZHdfeHBjcyAqeHBjcztcbiYjNDM7XHR1MzIgcG9ydDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKG5wKSlcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FTk9ERVYpO1xuJiM0MztcbiYjNDM7XHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobnAsIFwmIzM0O3JlZ1wmIzM0OywgXHUwMDI2cG9ydCkpXG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbiYjNDM7XG4mIzQzO1x0aWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZSgoaW50KXBvcnQpKVxuJiM0MztcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4mIzQzO1xuJiM0MztcdC8qIFRoZSBYUENTIHBkZXYgaXMgYXR0YWNoZWQgdG8gdGhlIHBhcmVudCBub2RlICovXG4mIzQzO1x0cGNzX25wID0gb2ZfZ2V0X3BhcmVudChucCk7XG4mIzQzO1x0aWYgKCFwY3NfbnApXG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PREVWKTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKHBjc19ucCkpIHtcbiYjNDM7XHRcdG9mX25vZGVfcHV0KHBjc19ucCk7XG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PREVWKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmICghb2ZfbWF0Y2hfbm9kZSh4cGNzX3JrX29mX2lkcywgcGNzX25wKSkge1xuJiM0MztcdFx0b2Zfbm9kZV9wdXQocGNzX25wKTtcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cGRldiA9IG9mX2ZpbmRfZGV2aWNlX2J5X25vZGUocGNzX25wKTtcbiYjNDM7XHRvZl9ub2RlX3B1dChwY3NfbnApO1xuJiM0MztcdGlmICghcGRldilcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FUFJPQkVfREVGRVIpO1xuJiM0MztcbiYjNDM7XHRkZXZpY2VfbG9jayhcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4mIzQzO1x0cHhwY3MgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiYjNDM7XHRpZiAoIXB4cGNzIHx8ICFweHBjcy1cdTAwM2VidXMpIHtcbiYjNDM7XHRcdGRldmljZV91bmxvY2soXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuJiM0MztcdFx0cHV0X2RldmljZShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRVBST0JFX0RFRkVSKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHhwY3MgPSB4cGNzX2NyZWF0ZV9tZGlvZGV2KHB4cGNzLVx1MDAzZWJ1cywgKGludClwb3J0KTtcbiYjNDM7XHRkZXZpY2VfdW5sb2NrKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiYjNDM7XHRpZiAoSVNfRVJSKHhwY3MpKSB7XG4mIzQzO1x0XHRwdXRfZGV2aWNlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiYjNDM7XHRcdHJldHVybiB4cGNzO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKCFkZXZpY2VfbGlua19hZGQoZGV2LCBcdTAwMjZwZGV2LVx1MDAzZWRldiwgRExfRkxBR19BVVRPUkVNT1ZFX0NPTlNVTUVSKSkge1xuJiM0MztcdFx0eHBjc19kZXN0cm95KHhwY3MpO1xuJiM0MztcdFx0cHV0X2RldmljZShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHB1dF9kZXZpY2UoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuJiM0MztcdHJldHVybiB4cGNzO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHhwY3NfcmtfY3JlYXRlKTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgeHBjc19ya19wbV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4mIzQzO1xuJiM0MztcdGNsa19kaXNhYmxlX3VucHJlcGFyZShweHBjcy1cdTAwM2Vjc3JfY2xrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgeHBjc19ya19wbV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGNsa19wcmVwYXJlX2VuYWJsZShweHBjcy1cdTAwM2Vjc3JfY2xrKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIERFRklORV9SVU5USU1FX0RFVl9QTV9PUFMoeHBjc19ya19wbV9vcHMsXG4mIzQzO1x0XHRcdCAgIHhwY3NfcmtfcG1fcnVudGltZV9zdXNwZW5kLFxuJiM0MztcdFx0XHQgICB4cGNzX3JrX3BtX3J1bnRpbWVfcmVzdW1lLFxuJiM0MztcdFx0XHQgICBOVUxMKTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHhwY3NfcmtfZHJpdmVyID0ge1xuJiM0MztcdC5wcm9iZSA9IHhwY3NfcmtfcHJvYmUsXG4mIzQzO1x0LnJlbW92ZSA9IHhwY3NfcmtfcmVtb3ZlLFxuJiM0MztcdC5kcml2ZXIgPSB7XG4mIzQzO1x0XHQubmFtZSA9IFwmIzM0O3JrX3hwY3MtZHd4cGNzXCYjMzQ7LFxuJiM0MztcdFx0LnBtID0gcG1fcHRyKFx1MDAyNnhwY3NfcmtfcG1fb3BzKSxcbiYjNDM7XHRcdC5vZl9tYXRjaF90YWJsZSA9IHhwY3Nfcmtfb2ZfaWRzLFxuJiM0MztcdH0sXG4mIzQzO307XG4mIzQzO21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoeHBjc19ya19kcml2ZXIpO1xuJiM0MztcbiYjNDM7TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O1JvY2tjaGlwIFhQQ1MgcGxhdGZvcm0gZGV2aWNlIGRyaXZlclwmIzM0Oyk7XG4mIzQzO01PRFVMRV9BVVRIT1IoXCYjMzQ7Q29pYSBQcmFudCBcdTAwM2Njb2lhcHJhbnRAZ21haWwuY29tXHUwMDNlXCYjMzQ7KTtcbiYjNDM7TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jXG5pbmRleCAwMzM3ZTJiY2MwMTI1Li41MGI5Y2RmOTRmZGFhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jXG5AQCAtODE2LDkgJiM0Mzs4MTYsMTQgQEAgc3RhdGljIGludCB4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdHJldHVybiByZXQ7XG4gXG4mIzQzO1x0LyogQ2xlYXIgQ0wzNyBBTiBjb21wbGV0ZSBzdGF0dXMgKi9cbiYjNDM7XHRyZXQgPSB4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBEV19WUl9NSUlfQU5fSU5UUl9TVFMsIDApO1xuJiM0MztcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiBcdGlmIChuZWdfbW9kZSA9PSBQSFlMSU5LX1BDU19ORUdfSU5CQU5EX0VOQUJMRUQpXG4gXHRcdHJldCA9IHhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIsIE1JSV9CTUNSLFxuLVx0XHRcdFx0IG1kaW9fY3RybCB8IEJNQ1JfQU5FTkFCTEUpO1xuJiM0MztcdFx0XHRcdCBtZGlvX2N0cmwgfCBCTUNSX0FORU5BQkxFIHwgQk1DUl9BTlJFU1RBUlQpO1xuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMTA5MywxMCAmIzQzOzEwOTgsMTUgQEAgc3RhdGljIGludCB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWkoc3RydWN0IGR3X3hwY3MgKnhwY3MsXG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFxuLVx0LyogQ2xlYXIgQU4gY29tcGxldGUgc3RhdHVzIG9yIGludGVycnVwdCAqL1xuLVx0aWYgKHN0YXRlLVx1MDAzZWFuX2NvbXBsZXRlKVxuJiM0MztcdGlmIChzdGF0ZS1cdTAwM2Vhbl9jb21wbGV0ZSkge1xuJiM0MztcdFx0LyogQ2xlYXIgQU4gY29tcGxldGUgc3RhdHVzIG9yIGludGVycnVwdCAqL1xuIFx0XHR4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBEV19WUl9NSUlfQU5fSU5UUl9TVFMsIDApO1xuIFxuJiM0MztcdFx0LyogSW5pdGlhdGUgdGhlIG5leHQgcm91bmQgb2YgQU4gKi9cbiYjNDM7XHRcdHhwY3NfbW9kaWZ5KHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfQk1DUiwgQk1DUl9BTlJFU1RBUlQsXG4mIzQzO1x0XHRcdCAgICBCTUNSX0FOUkVTVEFSVCk7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuYyBiL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jXG5pbmRleCA3ODQzMzU2YTRkZDQ3Li45MTliYjk3YTRiMTgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jXG5AQCAtMTg2LDYgJiM0MzsxODYsNyBAQCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9ncmZjZmcge1xuIFx0c3RydWN0IGNvbWJwaHlfcmVnIHBpcGVfeHBjc19waHlfcmVhZHk7XG4gXHRzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9wY2llMWwwX3NlbDtcbiBcdHN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3BjaWUxbDFfc2VsO1xuJiM0MztcdHN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3NnbWlpX21hY19zZWw7XG4gXHRzdHJ1Y3QgY29tYnBoeV9yZWcgdTNvdGcwX3BvcnRfZW47XG4gXHRzdHJ1Y3QgY29tYnBoeV9yZWcgdTNvdGcxX3BvcnRfZW47XG4gfTtcbkBAIC0yMTIsNiAmIzQzOzIxMyw3IEBAIHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYge1xuIFx0Ym9vbCBlbmFibGVfc3NjO1xuIFx0Ym9vbCBleHRfcmVmY2xrO1xuIFx0c3RydWN0IGNsayAqcmVmY2xrO1xuJiM0MztcdHUzMiBzZ21paV9tYWNfc2VsO1xuIH07XG4gXG4gc3RhdGljIHZvaWQgcm9ja2NoaXBfY29tYnBoeV91cGRhdGVsKHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgKnByaXYsXG5AQCAtMzc1LDYgJiM0MzszNzcsOSBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX2NvbWJwaHlfcGFyc2VfZHQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeVxuIFxuIFx0cHJpdi1cdTAwM2VleHRfcmVmY2xrID0gZGV2aWNlX3Byb3BlcnR5X3ByZXNlbnQoZGV2LCBcJiMzNDtyb2NrY2hpcCxleHQtcmVmY2xrXCYjMzQ7KTtcbiBcbiYjNDM7XHRwcml2LVx1MDAzZXNnbWlpX21hY19zZWwgPSAxO1xuJiM0MztcdGRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsIFwmIzM0O3JvY2tjaGlwLHNnbWlpLW1hYy1zZWxcJiMzNDssIFx1MDAyNnByaXYtXHUwMDNlc2dtaWlfbWFjX3NlbCk7XG4mIzQzO1xuIFx0cHJpdi1cdTAwM2VwaHlfcnN0ID0gZGV2bV9yZXNldF9jb250cm9sX2dldF9leGNsdXNpdmUoZGV2LCBcJiMzNDtwaHlcJiMzNDspO1xuIFx0LyogZmFsbGJhY2sgdG8gb2xkIGJlaGF2aW91ciAqL1xuIFx0aWYgKFBUUl9FUlIocHJpdi1cdTAwM2VwaHlfcnN0KSA9PSAtRU5PRU5UKVxuQEAgLTg3Myw2ICYjNDM7ODc4LDggQEAgc3RhdGljIGludCByazM1NjhfY29tYnBoeV9jZmcoc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAqcHJpdilcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIFBIWV9UWVBFX1NHTUlJOlxuJiM0MztcdFx0cm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LVx1MDAzZXBpcGVfZ3JmLCBcdTAwMjZjZmctXHUwMDNlcGlwZV9zZ21paV9tYWNfc2VsLFxuJiM0MztcdFx0XHRcdFx0cHJpdi1cdTAwM2VzZ21paV9tYWNfc2VsIFx1MDAzZSAwKTtcbiBcdFx0cm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LVx1MDAzZXBpcGVfZ3JmLCBcdTAwMjZjZmctXHUwMDNlcGlwZV94cGNzX3BoeV9yZWFkeSwgdHJ1ZSk7XG4gXHRcdHJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi1cdTAwM2VwaHlfZ3JmLCBcdTAwMjZjZmctXHUwMDNlcGlwZV9waHltb2RlX3NlbCwgdHJ1ZSk7XG4gXHRcdHJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi1cdTAwM2VwaHlfZ3JmLCBcdTAwMjZjZmctXHUwMDNlcGlwZV9zZWxfcXNnbWlpLCB0cnVlKTtcbkBAIC05ODQsNiAmIzQzOzk5MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9ncmZjZmcgcmszNTY4X2NvbWJwaHlfZ3JmY2ZncyA9IHtcbiBcdC5jb24zX2Zvcl9zYXRhXHRcdD0geyAweDAwMGMsIDE1LCAwLCAweDAwLCAweDQ0MDcgfSxcbiBcdC8qIHBpcGUtZ3JmICovXG4gXHQucGlwZV9jb24wX2Zvcl9zYXRhXHQ9IHsgMHgwMDAwLCAxNSwgMCwgMHgwMCwgMHgyMjIwIH0sXG4mIzQzO1x0LnBpcGVfc2dtaWlfbWFjX3NlbFx0PSB7IDB4MDA0MCwgMSwgMSwgMHgwMCwgMHgwMSB9LFxuIFx0LnBpcGVfeHBjc19waHlfcmVhZHlcdD0geyAweDAwNDAsIDIsIDIsIDB4MDAsIDB4MDEgfSxcbiBcdC51M290ZzBfcG9ydF9lblx0XHQ9IHsgMHgwMTA0LCAxNSwgMCwgMHgwMTgxLCAweDExMDAgfSxcbiBcdC51M290ZzFfcG9ydF9lblx0XHQ9IHsgMHgwMTQ0LCAxNSwgMCwgMHgwMTgxLCAweDExMDAgfSxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oIGIvaW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjI4NzIzZDViZDc1Y2Ncbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmhcbkBAIC0wLDAgJiM0MzsxLDExIEBAXG4mIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4mIzQzOyNpZm5kZWYgX19MSU5VWF9QQ1NfWFBDU19ST0NLQ0hJUF9IXG4mIzQzOyNkZWZpbmUgX19MSU5VWF9QQ1NfWFBDU19ST0NLQ0hJUF9IXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9kZXZpY2UuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy9wY3MteHBjcy5oXHUwMDNlXG4mIzQzO1xuJiM0MztzdHJ1Y3QgZHdfeHBjcyAqeHBjc19ya19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcbiYjNDM7XG4mIzQzOyNlbmRpZiAvKiBfX0xJTlVYX1BDU19YUENTX1JPQ0tDSElQX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNToxMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgYWRkcyBzdXBwb3J0IGZvciBSb2NrY2hpcCBSSzM1NjggU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBQaHlzaWNhbCBDb2RpbmcgU3VibGF5ZXIgKFhQQ1MpIGFuZCBTR01JSSBpbnRlcmZhY2UgY29uZmlndXJhdGlvbiBmb3IgdGhlIFJvY2tjaGlwIERXTUFDIGRyaXZlciwgYWxvbmcgd2l0aCBtaW5vciBQQ1MgaW5pdC9leGl0IGhhbmRsaW5nIHVwZGF0ZXMgZm9yIEludGVsIERXTUFDIFBDSSBhbmQgb3RoZXIgU29DIGdsdWUgZHJpdmVycyAoUmVuZXNhcywgU29jZnBnYSkuIFRoZXNlIGNoYW5nZXMgYXJlIHJlc3RyaWN0ZWQgdG8gdmVuZG9yLXNwZWNpZmljIFNvQyBwbGF0Zm9ybSBkcml2ZXJzIChSb2NrY2hpcCBSSzM1NjgsIFJlbmVzYXMsIFNvY2ZwZ2EpIGFuZCBJbnRlbCBEV01BQyBQQ0kgaGFyZHdhcmUsIG5vbmUgb2Ygd2hpY2ggYXJlIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGNhbm5vdCBiZSBleGVjdXRlZCBkdXJpbmcgdmlydHVhbGl6ZWQgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmNDZhOGY0Yzk5NTI5NjFiN2Y4Zjk2YWY4ZjJmNDQ2MWE4Zjk1OTcyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgMiAwNToxMDoxMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3Mvcm9ja2NoaXAtZHd4cGNzLnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMDg1MmQwYmNiNjZhMgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sCkBAIC0wLDAgJiM0MzsxLDExMCBAQAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlKQomIzQzOyVZQU1MIDEuMgomIzQzOy0tLQomIzQzOyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbCMKJiM0Mzskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCMKJiM0MzsKJiM0Mzt0aXRsZTogUm9ja2NoaXAgUkszNTY4IFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUENTCiYjNDM7CiYjNDM7bWFpbnRhaW5lcnM6CiYjNDM7ICAtIENvaWEgUHJhbnQgJmx0O2NvaWFwcmFudEBnbWFpbC5jb20mZ3Q7CiYjNDM7CiYjNDM7ZGVzY3JpcHRpb246IHwKJiM0MzsgIFJvY2tjaGlwIFJLMzU2OCBTb0MgaW50ZWdyYXRlcyBhIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUGh5c2ljYWwKJiM0MzsgIENvZGluZyBTdWJsYXllciAoWFBDUykuCiYjNDM7ICBUaGUgUENTIHByb3ZpZGVzIGFuIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBNZWRpYSBBY2Nlc3MgQ29udHJvbCAoTUFDKQomIzQzOyAgYW5kIHRoZSBQaHlzaWNhbCBNZWRpdW0gQXR0YWNobWVudCAoUE1BKSBzdWJsYXllciB0aHJvdWdoIGEgTWVkaWEKJiM0MzsgIEluZGVwZW5kZW50IEludGVyZmFjZSAoR01JSSkuCiYjNDM7CiYjNDM7ICBUaGUgWFBDUyBpcyBhY2Nlc3NlZCBvdmVyIHRoZSBBUEIzIGJ1cyBhbmQgaW50ZXJuYWxseSBjb25uZWN0ZWQgdG8gYQomIzQzOyAgTmFuZW5nIENvbWJvIFNlckRlcyBQSFkuCiYjNDM7ICBJdCBzdXBwb3J0cyAxMDAwQkFTRS1YLCBTR01JSSBhbmQgUVNHTUlJIG1vZGVzLgomIzQzOwomIzQzOyAgVGhlIGJsb2NrIGNvbnRhaW5zIGZvdXIgTUlJIHBvcnRzIHRoYXQgY2FuIGJlIGluZGl2aWR1YWxseSBlbmFibGVkIGFuZAomIzQzOyAgcm91dGVkIHRvIG9uZSBvZiB0aGUgRXRoZXJuZXQgR01BQyBjb250cm9sbGVycyB2aWEgdGhlIHBjcy1oYW5kbGUKJiM0MzsgIHByb3BlcnR5IGluIHRoZSBNQUMgZGV2aWNlIHRyZWUgbm9kZS4KJiM0MzsKJiM0Mztwcm9wZXJ0aWVzOgomIzQzOyAgY29tcGF0aWJsZToKJiM0MzsgICAgY29uc3Q6IHJvY2tjaGlwLHJrMzU2OC14cGNzCiYjNDM7CiYjNDM7ICByZWc6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiYjNDM7ICAmIzM0OyNhZGRyZXNzLWNlbGxzJiMzNDs6CiYjNDM7ICAgIGNvbnN0OiAxCiYjNDM7CiYjNDM7ICAmIzM0OyNzaXplLWNlbGxzJiMzNDs6CiYjNDM7ICAgIGNvbnN0OiAwCiYjNDM7CiYjNDM7ICBjbG9ja3M6CiYjNDM7ICAgIGl0ZW1zOgomIzQzOyAgICAgIC0gZGVzY3JpcHRpb246IEFQQjMgYnVzIGludGVyZmFjZSBjbG9jayAoY2xrX2Nzcl9pKSwgcmVxdWlyZWQgZm9yIHJlZ2lzdGVyIGFjY2VzcwomIzQzOyAgICAgIC0gZGVzY3JpcHRpb246IEVFRSBjbG9jayAoY2xrX2VlZV9pKSwgcmVxdWlyZWQgZm9yIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgb3BlcmF0aW9uCiYjNDM7CiYjNDM7ICBjbG9jay1uYW1lczoKJiM0MzsgICAgaXRlbXM6CiYjNDM7ICAgICAgLSBjb25zdDogY3NyCiYjNDM7ICAgICAgLSBjb25zdDogZWVlCiYjNDM7CiYjNDM7ICBwaHlzOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwomIzQzOyAgcGh5LW5hbWVzOgomIzQzOyAgICBjb25zdDogc2VyZGVzCiYjNDM7CiYjNDM7ICBwb3dlci1kb21haW5zOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwomIzQzO3BhdHRlcm5Qcm9wZXJ0aWVzOgomIzQzOyAgJiMzNDtecGNzLW1paUBbMC0zXSQmIzM0OzoKJiM0MzsgICAgdHlwZTogb2JqZWN0CiYjNDM7ICAgIGRlc2NyaXB0aW9uOgomIzQzOyAgICAgIE9uZSBvZiB0aGUgZm91ciBNSUkgcG9ydHMgb2YgdGhlIFhQQ1MuIFRoZSBwb3J0IGlzIGxpbmtlZCB0byBhbgomIzQzOyAgICAgIEV0aGVybmV0IE1BQyBjb250cm9sbGVyIHZpYSB0aGUgcGNzLWhhbmRsZSBwcm9wZXJ0eSBpbiB0aGUgTUFDJiMzOTtzCiYjNDM7ICAgICAgZGV2aWNlIHRyZWUgbm9kZS4KJiM0MzsKJiM0MzsgICAgcHJvcGVydGllczoKJiM0MzsgICAgICByZWc6CiYjNDM7ICAgICAgICBkZXNjcmlwdGlvbjogTUlJIHBvcnQgbnVtYmVyLgomIzQzOyAgICAgICAgZW51bTogWzAsIDEsIDIsIDNdCiYjNDM7CiYjNDM7ICAgIHJlcXVpcmVkOgomIzQzOyAgICAgIC0gcmVnCiYjNDM7CiYjNDM7ICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZQomIzQzOwomIzQzO3JlcXVpcmVkOgomIzQzOyAgLSBjb21wYXRpYmxlCiYjNDM7ICAtIHJlZwomIzQzOyAgLSAmIzM0OyNhZGRyZXNzLWNlbGxzJiMzNDsKJiM0MzsgIC0gJiMzNDsjc2l6ZS1jZWxscyYjMzQ7CiYjNDM7ICAtIGNsb2NrcwomIzQzOyAgLSBjbG9jay1uYW1lcwomIzQzOyAgLSBwaHlzCiYjNDM7ICAtIHBoeS1uYW1lcwomIzQzOyAgLSBwb3dlci1kb21haW5zCiYjNDM7CiYjNDM7YWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlCiYjNDM7CiYjNDM7ZXhhbXBsZXM6CiYjNDM7ICAtIHwKJiM0MzsgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2Nsb2NrL3JrMzU2OC1jcnUuaCZndDsKJiM0MzsgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL3Bvd2VyL3JrMzU2OC1wb3dlci5oJmd0OwomIzQzOyAgICAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvcGh5L3BoeS5oJmd0OwomIzQzOwomIzQzOyAgICBwY3NAZmRhMDAwMDAgewomIzQzOyAgICAgIGNvbXBhdGlibGUgPSAmIzM0O3JvY2tjaGlwLHJrMzU2OC14cGNzJiMzNDs7CiYjNDM7ICAgICAgcmVnID0gJmx0OzB4ZmRhMDAwMDAgMHgyMDAwMDAmZ3Q7OwomIzQzOyAgICAgICNhZGRyZXNzLWNlbGxzID0gJmx0OzEmZ3Q7OwomIzQzOyAgICAgICNzaXplLWNlbGxzID0gJmx0OzAmZ3Q7OwomIzQzOyAgICAgIGNsb2NrcyA9ICZsdDsmYW1wO2NydSBQQ0xLX1hQQ1MmZ3Q7LCAmbHQ7JmFtcDtjcnUgQ0xLX1hQQ1NfRUVFJmd0OzsKJiM0MzsgICAgICBjbG9jay1uYW1lcyA9ICYjMzQ7Y3NyJiMzNDssICYjMzQ7ZWVlJiMzNDs7CiYjNDM7ICAgICAgcGh5cyA9ICZsdDsmYW1wO2NvbWJwaHkyIFBIWV9UWVBFX1NHTUlJJmd0OzsKJiM0MzsgICAgICBwaHktbmFtZXMgPSAmIzM0O3NlcmRlcyYjMzQ7OwomIzQzOyAgICAgIHBvd2VyLWRvbWFpbnMgPSAmbHQ7JmFtcDtwb3dlciBSSzM1NjhfUERfUElQRSZndDs7CiYjNDM7CiYjNDM7ICAgICAgcGNzLW1paUAwIHsKJiM0MzsgICAgICAgIHJlZyA9ICZsdDswJmd0OzsKJiM0MzsgICAgICB9OwomIzQzOyAgICB9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWwKaW5kZXggMzc5YjA4YmQ5ZTk3YS4uOGU4OThiY2U5YWY3MyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sCkBAIC04MCw2ICYjNDM7ODAsMTUgQEAgcHJvcGVydGllczoKICAgICBkZXNjcmlwdGlvbjoKICAgICAgIFNvbWUgYWRkaXRpb25hbCBwaXBlIHNldHRpbmdzIGFyZSBhY2Nlc3NlZCB0aHJvdWdoIEdSRiByZWdzLgogCiYjNDM7ICByb2NrY2hpcCxzZ21paS1tYWMtc2VsOgomIzQzOyAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzIKJiM0MzsgICAgZW51bTogWzAsIDFdCiYjNDM7ICAgIGRlZmF1bHQ6IDEKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgU2VsZWN0IGdtYWMwIG9yIGdtYWMxIHRvIGJlIHVzZWQgYXMgU0dNSUkgY29udHJvbGxlci4KJiM0MzsgICAgICBUaGUgaGFyZHdhcmUgcmVzZXQgdmFsdWUgaXMgR01BQzEgKDEpLiBTZXQgdGhpcyB0byAwIHRvIHJvdXRlCiYjNDM7ICAgICAgU0dNSUkgdG8gR01BQzAuCiYjNDM7CiAgICYjMzQ7I3BoeS1jZWxscyYjMzQ7OgogICAgIGNvbnN0OiAxCiAKQEAgLTEwNSw2ICYjNDM7MTE0LDEwIEBAIGFsbE9mOgogICAgICAgICAgIG1heEl0ZW1zOiAxCiAgICAgICAgIHJlc2V0LW5hbWVzOgogICAgICAgICAgIG1heEl0ZW1zOiAxCiYjNDM7ICAgICAgICByb2NrY2hpcCxzZ21paS1tYWMtc2VsOiB0cnVlCiYjNDM7ICAgIGVsc2U6CiYjNDM7ICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgIHJvY2tjaGlwLHNnbWlpLW1hYy1zZWw6IGZhbHNlCiAgIC0gaWY6CiAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICBjb21wYXRpYmxlOgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCAzYTE5ZGE3NGQwMGM5Li5jM2IxNzc1MmNjODE3IDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUwomIzQzOyYjNDM7JiM0MzsgYi9NQUlOVEFJTkVSUwpAQCAtMjM3NDQsNiAmIzQzOzIzNzQ0LDE1IEBAIFM6CU1haW50YWluZWQKIEY6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9yb2NrY2hpcCxyazM1NzYtc2FpLnlhbWwKIEY6CXNvdW5kL3NvYy9yb2NrY2hpcC9yb2NrY2hpcF9zYWkuKgogCiYjNDM7Uk9DS0NISVAgWFBDUyBEUklWRVIKJiM0MztNOglDb2lhIFByYW50ICZsdDtjb2lhcHJhbnRAZ21haWwuY29tJmd0OwomIzQzO0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKJiM0MztMOglsaW51eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnCiYjNDM7UzoJTWFpbnRhaW5lZAomIzQzO0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sCiYjNDM7RjoJZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmMKJiM0MztGOglpbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oCiYjNDM7CiBST0NLRVIgRFJJVkVSCiBNOglKaXJpIFBpcmtvICZsdDtqaXJpQHJlc251bGxpLnVzJmd0OwogTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC1waG90b25pY2F0LmR0cwppbmRleCA1OGMxMDUyYmE4ZWYzLi4yNWNhYTQ0MTk4ODQzIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC1waG90b25pY2F0LmR0cwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC1waG90b25pY2F0LmR0cwpAQCAtMyw2ICYjNDM7Myw3IEBACiAvZHRzLXYxLzsKIAogI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtkdC1iaW5kaW5ncy9sZWRzL2NvbW1vbi5oJmd0OwogI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL3BpbmN0cmwvcm9ja2NoaXAuaCZndDsKICNpbmNsdWRlICZsdDtkdC1iaW5kaW5ncy9zb2Mvcm9ja2NoaXAsdm9wMi5oJmd0OwogI2luY2x1ZGUgJiMzNDtyazM1NjguZHRzaSYjMzQ7CkBAIC0yNDIsNiAmIzQzOzI0Myw3IEBAICZhbXA7Y29tYnBoeTEgewogCiAmYW1wO2NvbWJwaHkyIHsKIAlzdGF0dXMgPSAmIzM0O29rYXkmIzM0OzsKJiM0MzsJcm9ja2NoaXAsc2dtaWktbWFjLXNlbCA9ICZsdDswJmd0OzsKIH07CiAKICZhbXA7Y3B1MCB7CkBAIC0yNjAsOSAmIzQzOzI2MiwxOCBAQCAmYW1wO2NwdTMgewogCWNwdS1zdXBwbHkgPSAmbHQ7JmFtcDt2ZGRfY3B1Jmd0OzsKIH07CiAKLS8qIE1vdG9yY29tbSBZVDg1MjFTQyBMQU4gcG9ydCAocmVxdWlyZSBTR01JSSkgKi8KJiM0MzsvKiBNb3RvcmNvbW0gWVQ4NTIxU0MgTEFOIHBvcnQgKi8KICZhbXA7Z21hYzAgewotCXN0YXR1cyA9ICYjMzQ7ZGlzYWJsZWQmIzM0OzsKJiM0MzsJYXNzaWduZWQtY2xvY2tzID0gJmx0OyZhbXA7Y3J1IFNDTEtfR01BQzBfUlhfVFgmZ3Q7OwomIzQzOwlhc3NpZ25lZC1jbG9jay1wYXJlbnRzID0gJmx0OyZhbXA7eHBjc19nbWFjMF9jbGsmZ3Q7OwomIzQzOwlwY3MtaGFuZGxlID0gJmx0OyZhbXA7eHBjc19taWkwJmd0OzsKJiM0MzsJbWFuYWdlZCA9ICYjMzQ7aW4tYmFuZC1zdGF0dXMmIzM0OzsKJiM0MzsJcGh5LWhhbmRsZSA9ICZsdDsmYW1wO3NnbWlpX3BoeSZndDs7CiYjNDM7CXBoeS1tb2RlID0gJiMzNDtzZ21paSYjMzQ7OwomIzQzOwlwaHktc3VwcGx5ID0gJmx0OyZhbXA7dmNjXzN2MyZndDs7CiYjNDM7CXBpbmN0cmwtbmFtZXMgPSAmIzM0O2RlZmF1bHQmIzM0OzsKJiM0MzsJcGluY3RybC0wID0gJmx0OyZhbXA7Z21hYzBfbWlpbSZndDs7CiYjNDM7CXN0YXR1cyA9ICYjMzQ7b2theSYjMzQ7OwogfTsKIAogLyogTW90b3Jjb21tIFlUODUyMVNDIFdBTiBwb3J0ICovCkBAIC0zNDEsNiAmIzQzOzM1MiwzNiBAQCAmYW1wO2kyczBfOGNoIHsKIAlzdGF0dXMgPSAmIzM0O29rYXkmIzM0OzsKIH07CiAKJiM0MzsmYW1wO21kaW8wIHsKJiM0MzsJc2dtaWlfcGh5OiBldGhlcm5ldC1waHlAMyB7CiYjNDM7CQljb21wYXRpYmxlID0gJiMzNDtldGhlcm5ldC1waHktaWVlZTgwMi4zLWMyMiYjMzQ7OwomIzQzOwkJcmVnID0gJmx0OzB4MyZndDs7CiYjNDM7CQltYXgtc3BlZWQgPSAmbHQ7MTAwMCZndDs7CiYjNDM7CQlyZXNldC1hc3NlcnQtdXMgPSAmbHQ7MjAwMDAmZ3Q7OwomIzQzOwkJcmVzZXQtZGVhc3NlcnQtdXMgPSAmbHQ7MTAwMDAwJmd0OzsKJiM0MzsJCXJlc2V0LWdwaW9zID0gJmx0OyZhbXA7Z3BpbzMgUktfUEM2IEdQSU9fQUNUSVZFX0xPVyZndDs7CiYjNDM7CiYjNDM7CQlsZWRzIHsKJiM0MzsJCQkjYWRkcmVzcy1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsJCQkjc2l6ZS1jZWxscyA9ICZsdDswJmd0OzsKJiM0MzsKJiM0MzsJCQlsZWRAMSB7CiYjNDM7CQkJCXJlZyA9ICZsdDsxJmd0OzsKJiM0MzsJCQkJY29sb3IgPSAmbHQ7TEVEX0NPTE9SX0lEX0FNQkVSJmd0OzsKJiM0MzsJCQkJZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fTEFOOwomIzQzOwkJCQlkZWZhdWx0LXN0YXRlID0gJiMzNDtrZWVwJiMzNDs7CiYjNDM7CQkJfTsKJiM0MzsKJiM0MzsJCQlsZWRAMiB7CiYjNDM7CQkJCXJlZyA9ICZsdDsyJmd0OzsKJiM0MzsJCQkJY29sb3IgPSAmbHQ7TEVEX0NPTE9SX0lEX0dSRUVOJmd0OzsKJiM0MzsJCQkJZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fTEFOOwomIzQzOwkJCQlkZWZhdWx0LXN0YXRlID0gJiMzNDtrZWVwJiMzNDs7CiYjNDM7CQkJfTsKJiM0MzsJCX07CiYjNDM7CX07CiYjNDM7fTsKJiM0MzsKICZhbXA7bWRpbzEgewogCXJnbWlpX3BoeTogZXRoZXJuZXQtcGh5QDMgewogCQljb21wYXRpYmxlID0gJiMzNDtldGhlcm5ldC1waHktaWVlZTgwMi4zLWMyMiYjMzQ7OwpAQCAtMzUwLDYgJiM0MzszOTEsMjUgQEAgcmdtaWlfcGh5OiBldGhlcm5ldC1waHlAMyB7CiAJCXJlc2V0LWdwaW9zID0gJmx0OyZhbXA7Z3BpbzQgUktfUEMwIEdQSU9fQUNUSVZFX0xPVyZndDs7CiAJCXJ4LWludGVybmFsLWRlbGF5LXBzID0gJmx0OzE1MDAmZ3Q7OwogCQl0eC1pbnRlcm5hbC1kZWxheS1wcyA9ICZsdDsxNTAwJmd0OzsKJiM0MzsKJiM0MzsJCWxlZHMgewomIzQzOwkJCSNhZGRyZXNzLWNlbGxzID0gJmx0OzEmZ3Q7OwomIzQzOwkJCSNzaXplLWNlbGxzID0gJmx0OzAmZ3Q7OwomIzQzOwomIzQzOwkJCWxlZEAxIHsKJiM0MzsJCQkJcmVnID0gJmx0OzEmZ3Q7OwomIzQzOwkJCQljb2xvciA9ICZsdDtMRURfQ09MT1JfSURfQU1CRVImZ3Q7OwomIzQzOwkJCQlmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9XQU47CiYjNDM7CQkJCWRlZmF1bHQtc3RhdGUgPSAmIzM0O2tlZXAmIzM0OzsKJiM0MzsJCQl9OwomIzQzOwomIzQzOwkJCWxlZEAyIHsKJiM0MzsJCQkJcmVnID0gJmx0OzImZ3Q7OwomIzQzOwkJCQljb2xvciA9ICZsdDtMRURfQ09MT1JfSURfR1JFRU4mZ3Q7OwomIzQzOwkJCQlmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9XQU47CiYjNDM7CQkJCWRlZmF1bHQtc3RhdGUgPSAmIzM0O2tlZXAmIzM0OzsKJiM0MzsJCQl9OwomIzQzOwkJfTsKIAl9OwogfTsKIApAQCAtNTg2LDMgJiM0Mzs2NDYsMTMgQEAgJmFtcDt4aW4zMmsgewogCXBpbmN0cmwtbmFtZXMgPSAmIzM0O2RlZmF1bHQmIzM0OzsKIAlwaW5jdHJsLTAgPSAmbHQ7JmFtcDtjbGszMmtfb3V0MSZndDs7CiB9OwomIzQzOwomIzQzOyZhbXA7eHBjcyB7CiYjNDM7CXN0YXR1cyA9ICYjMzQ7b2theSYjMzQ7OwomIzQzOwlwaHlzID0gJmx0OyZhbXA7Y29tYnBoeTIgUEhZX1RZUEVfU0dNSUkmZ3Q7OwomIzQzOwlwaHktbmFtZXMgPSAmIzM0O3NlcmRlcyYjMzQ7OwomIzQzO307CiYjNDM7CiYjNDM7JmFtcDt4cGNzX21paTAgewomIzQzOwlzdGF0dXMgPSAmIzM0O29rYXkmIzM0OzsKJiM0Mzt9OwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2kKaW5kZXggM2JjNjUzZjAyN2YxZi4uOTg5ZTE2NGMwZWIzOSAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaQomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpCkBAIC0xMTAsNiAmIzQzOzExMCw1MSBAQCBzYXRhMDogc2F0YUBmYzAwMDAwMCB7CiAJCXN0YXR1cyA9ICYjMzQ7ZGlzYWJsZWQmIzM0OzsKIAl9OwogCiYjNDM7CXhwY3M6IHBjc0BmZGEwMDAwMCB7CiYjNDM7CQljb21wYXRpYmxlID0gJiMzNDtyb2NrY2hpcCxyazM1NjgteHBjcyYjMzQ7OwomIzQzOwkJI2FkZHJlc3MtY2VsbHMgPSAmbHQ7MSZndDs7CiYjNDM7CQkjc2l6ZS1jZWxscyA9ICZsdDswJmd0OzsKJiM0MzsJCXJlZyA9ICZsdDsweDAgMHhmZGEwMDAwMCAweDAgMHgyMDAwMDAmZ3Q7OwomIzQzOwkJY2xvY2tzID0gJmx0OyZhbXA7Y3J1IFBDTEtfWFBDUyZndDssICZsdDsmYW1wO2NydSBDTEtfWFBDU19FRUUmZ3Q7OwomIzQzOwkJY2xvY2stbmFtZXMgPSAmIzM0O2NzciYjMzQ7LCAmIzM0O2VlZSYjMzQ7OwomIzQzOwkJcG93ZXItZG9tYWlucyA9ICZsdDsmYW1wO3Bvd2VyIFJLMzU2OF9QRF9QSVBFJmd0OzsKJiM0MzsJCXN0YXR1cyA9ICYjMzQ7ZGlzYWJsZWQmIzM0OzsKJiM0MzsKJiM0MzsJCXhwY3NfbWlpMDogcGNzLW1paUAwIHsKJiM0MzsJCQlyZWcgPSAmbHQ7MCZndDs7CiYjNDM7CQkJc3RhdHVzID0gJiMzNDtkaXNhYmxlZCYjMzQ7OwomIzQzOwkJfTsKJiM0MzsKJiM0MzsJCXhwY3NfbWlpMTogcGNzLW1paUAxIHsKJiM0MzsJCQlyZWcgPSAmbHQ7MSZndDs7CiYjNDM7CQkJc3RhdHVzID0gJiMzNDtkaXNhYmxlZCYjMzQ7OwomIzQzOwkJfTsKJiM0MzsKJiM0MzsJCXhwY3NfbWlpMjogcGNzLW1paUAyIHsKJiM0MzsJCQlyZWcgPSAmbHQ7MiZndDs7CiYjNDM7CQkJc3RhdHVzID0gJiMzNDtkaXNhYmxlZCYjMzQ7OwomIzQzOwkJfTsKJiM0MzsKJiM0MzsJCXhwY3NfbWlpMzogcGNzLW1paUAzIHsKJiM0MzsJCQlyZWcgPSAmbHQ7MyZndDs7CiYjNDM7CQkJc3RhdHVzID0gJiMzNDtkaXNhYmxlZCYjMzQ7OwomIzQzOwkJfTsKJiM0MzsJfTsKJiM0MzsKJiM0MzsJeHBjc19nbWFjMF9jbGs6IHhwY3MtZ21hYzAtY2xvY2sgewomIzQzOwkJY29tcGF0aWJsZSA9ICYjMzQ7Zml4ZWQtY2xvY2smIzM0OzsKJiM0MzsJCWNsb2NrLWZyZXF1ZW5jeSA9ICZsdDsxMjUwMDAwMDAmZ3Q7OwomIzQzOwkJY2xvY2stb3V0cHV0LW5hbWVzID0gJiMzNDtjbGtfZ21hYzBfeHBjc19taWkmIzM0OzsKJiM0MzsJCSNjbG9jay1jZWxscyA9ICZsdDswJmd0OzsKJiM0MzsJfTsKJiM0MzsKJiM0MzsJeHBjc19nbWFjMV9jbGs6IHhwY3MtZ21hYzEtY2xvY2sgewomIzQzOwkJY29tcGF0aWJsZSA9ICYjMzQ7Zml4ZWQtY2xvY2smIzM0OzsKJiM0MzsJCWNsb2NrLWZyZXF1ZW5jeSA9ICZsdDsxMjUwMDAwMDAmZ3Q7OwomIzQzOwkJY2xvY2stb3V0cHV0LW5hbWVzID0gJiMzNDtjbGtfZ21hYzFfeHBjc19taWkmIzM0OzsKJiM0MzsJCSNjbG9jay1jZWxscyA9ICZsdDswJmd0OzsKJiM0MzsJfTsKJiM0MzsKIAlwaXBlX3BoeV9ncmYwOiBzeXNjb25AZmRjNzAwMDAgewogCQljb21wYXRpYmxlID0gJiMzNDtyb2NrY2hpcCxyazM1NjgtcGlwZS1waHktZ3JmJiMzNDssICYjMzQ7c3lzY29uJiMzNDs7CiAJCXJlZyA9ICZsdDsweDAgMHhmZGM3MDAwMCAweDAgMHgxMDAwJmd0OzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnCmluZGV4IGUzZGQ1YWRkYTVhY2EuLjUwODhhY2MwNjk4MmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZwpAQCAtMTcwLDYgJiM0MzsxNzAsNyBAQCBjb25maWcgRFdNQUNfUk9DS0NISVAKIAlkZWZhdWx0IEFSQ0hfUk9DS0NISVAKIAlkZXBlbmRzIG9uIE9GICZhbXA7JmFtcDsgKEFSQ0hfUk9DS0NISVAgfHwgQ09NUElMRV9URVNUKQogCXNlbGVjdCBNRkRfU1lTQ09OCiYjNDM7CXNlbGVjdCBQQ1NfWFBDU19ST0NLQ0hJUAogCWhlbHAKIAkgIFN1cHBvcnQgZm9yIEV0aGVybmV0IGNvbnRyb2xsZXIgb24gUm9ja2NoaXAgUkszMjg4IFNvQy4KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMKaW5kZXggZjVmOWZhNjdlY2Q3Ny4uZmQ1ZjAxYzg5NDFjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jCkBAIC02MDMsMTMgJiM0Mzs2MDMsNDcgQEAgc3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpCiAJcGxhdC0mZ3Q7bWRpb19idXNfZGF0YS0mZ3Q7bmVlZHNfcmVzZXQgPSB0cnVlOwogfQogCiYjNDM7c3RhdGljIGludCBpbnRlbF9tZ2JlX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBmd25vZGVfaGFuZGxlICpkZXZub2RlLCAqcGNzbm9kZTsKJiM0MzsJc3RydWN0IGR3X3hwY3MgKnhwY3MgPSBOVUxMOwomIzQzOwlpbnQgYWRkcjsKJiM0MzsKJiM0MzsJZGV2bm9kZSA9IGRldl9md25vZGUocHJpdi0mZ3Q7ZGV2aWNlKTsKJiM0MzsKJiM0MzsJaWYgKGZ3bm9kZV9wcm9wZXJ0eV9wcmVzZW50KGRldm5vZGUsICYjMzQ7cGNzLWhhbmRsZSYjMzQ7KSkgewomIzQzOwkJcGNzbm9kZSA9IGZ3bm9kZV9maW5kX3JlZmVyZW5jZShkZXZub2RlLCAmIzM0O3Bjcy1oYW5kbGUmIzM0OywgMCk7CiYjNDM7CQl4cGNzID0geHBjc19jcmVhdGVfZndub2RlKHBjc25vZGUpOwomIzQzOwkJZndub2RlX2hhbmRsZV9wdXQocGNzbm9kZSk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlhZGRyID0gZmZzKHByaXYtJmd0O3BsYXQtJmd0O21kaW9fYnVzX2RhdGEtJmd0O3Bjc19tYXNrKSAtIDE7CiYjNDM7CQl4cGNzID0geHBjc19jcmVhdGVfbWRpb2Rldihwcml2LSZndDttaWksIGFkZHIpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChJU19FUlIoeHBjcykpCiYjNDM7CQlyZXR1cm4gUFRSX0VSUih4cGNzKTsKJiM0MzsKJiM0MzsJeHBjc19jb25maWdfZWVlX211bHRfZmFjdCh4cGNzLCBwcml2LSZndDtwbGF0LSZndDttdWx0X2ZhY3RfMTAwbnMpOwomIzQzOwomIzQzOwlwcml2LSZndDtody0mZ3Q7eHBjcyA9IHhwY3M7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBpbnRlbF9tZ2JlX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKJiM0Mzt7CiYjNDM7CWlmICghcHJpdi0mZ3Q7aHctJmd0O3hwY3MpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXhwY3NfZGVzdHJveShwcml2LSZndDtody0mZ3Q7eHBjcyk7CiYjNDM7CXByaXYtJmd0O2h3LSZndDt4cGNzID0gTlVMTDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICppbnRlbF9tZ2JlX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCQkJCQkJIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCiB7Ci0JLyogcGxhdC0mZ3Q7bWRpb19idXNfZGF0YS0mZ3Q7aGFzX3hwY3MgaGFzIGJlZW4gc2V0IHRydWUsIHNvIHRoZXJlCi0JICogc2hvdWxkIGFsd2F5cyBiZSBhbiBYUENTLiBUaGUgb3JpZ2luYWwgY29kZSB3b3VsZCBhbHdheXMKLQkgKiByZXR1cm4gdGhpcyBpZiBwcmVzZW50LgotCSAqLwomIzQzOwlpZiAoIXByaXYtJmd0O2h3LSZndDt4cGNzKQomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CiAJcmV0dXJuIHhwY3NfdG9fcGh5bGlua19wY3MocHJpdi0mZ3Q7aHctJmd0O3hwY3MpOwogfQogCkBAIC03MzMsNiAmIzQzOzc2Nyw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfbWdiZV9jb21tb25fZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAkgICAgcGxhdC0mZ3Q7cGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYKSB7CiAJCXBsYXQtJmd0O21kaW9fYnVzX2RhdGEtJmd0O3Bjc19tYXNrID0gQklUX1UzMihJTlRFTF9NR0JFX1hQQ1NfQUREUik7CiAJCXBsYXQtJmd0O2RlZmF1bHRfYW5faW5iYW5kID0gdHJ1ZTsKJiM0MzsJCXBsYXQtJmd0O3Bjc19pbml0ID0gaW50ZWxfbWdiZV9wY3NfaW5pdDsKJiM0MzsJCXBsYXQtJmd0O3Bjc19leGl0ID0gaW50ZWxfbWdiZV9wY3NfZXhpdDsKIAkJcGxhdC0mZ3Q7c2VsZWN0X3BjcyA9IGludGVsX21nYmVfc2VsZWN0X3BjczsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYwppbmRleCAxOWYzNGUxOGJmZWYyLi45YWYzMmMyNmY5YzE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jCkBAIC04MSw4ICYjNDM7ODEsMTEgQEAgc3RhdGljIGludCByZW5lc2FzX2dtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCiBzdGF0aWMgdm9pZCByZW5lc2FzX2dtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogewotCWlmIChwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3MpCi0JCW1paWNfZGVzdHJveShwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3MpOwomIzQzOwlpZiAoIXByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3BjcykKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJbWlpY19kZXN0cm95KHByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3Bjcyk7CiYjNDM7CXByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3BjcyA9IE5VTEw7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJlbmVzYXNfZ21hY19zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jCmluZGV4IDhkNzA0MmU2ODkyNjEuLmU0N2NhMWJlYzViOGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYwpAQCAtMjAsNiAmIzQzOzIwLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9kZWxheS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21mZC9zeXNjb24uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9yZWdtYXAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGNzL3Bjcy14cGNzLXJrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcG1fcnVudGltZS5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O3N0bW1hY19wbGF0Zm9ybS5oJiMzNDsKQEAgLTQ3LDYgJiM0Mzs0OCw3IEBAIHN0cnVjdCBya19nbWFjX29wcyB7CiAJdm9pZCAoKnNldF90b19yZ21paSkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsCiAJCQkgICAgIGludCB0eF9kZWxheSwgaW50IHJ4X2RlbGF5KTsKIAl2b2lkICgqc2V0X3RvX3JtaWkpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KTsKJiM0MzsJdm9pZCAoKnNldF90b19zZ21paSkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpOwogCWludCAoKnNldF9zcGVlZCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsCiAJCQkgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSwgaW50IHNwZWVkKTsKIAl2b2lkICgqaW50ZWdyYXRlZF9waHlfcG93ZXJ1cCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpOwpAQCAtNjMsNiAmIzQzOzY1LDcgQEAgc3RydWN0IHJrX2dtYWNfb3BzIHsKIAlib29sIGNsb2NrX2dyZl9yZWdfaW5fcGhwOwogCWJvb2wgc3VwcG9ydHNfcmdtaWk7CiAJYm9vbCBzdXBwb3J0c19ybWlpOwomIzQzOwlib29sIHN1cHBvcnRzX3NnbWlpOwogCWJvb2wgcGhwX2dyZl9yZXF1aXJlZDsKIAlib29sIHJlZ3NfdmFsaWQ7CiAJdTMyIHJlZ3NbXTsKQEAgLTk4LDYgJiM0MzsxMDEsNyBAQCBzdHJ1Y3QgcmtfcHJpdl9kYXRhIHsKIAlib29sIGludGVncmF0ZWRfcGh5OwogCWJvb2wgc3VwcG9ydHNfcmdtaWk7CiAJYm9vbCBzdXBwb3J0c19ybWlpOwomIzQzOwlib29sIHN1cHBvcnRzX3NnbWlpOwogCiAJc3RydWN0IGNsa19idWxrX2RhdGEgKmNsa3M7CiAJaW50IG51bV9jbGtzOwpAQCAtODA5LDYgJiM0Mzs4MTMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJrX2dtYWNfb3BzIHJrMzUyOF9vcHMgPSB7CiAjZGVmaW5lIFJLMzU2OF9HUkZfR01BQzFfQ09OMQkJMHgwMzhjCiAKIC8qIFJLMzU2OF9HUkZfR01BQzBfQ09OMSAmYW1wOyZhbXA7IFJLMzU2OF9HUkZfR01BQzFfQ09OMSAqLwomIzQzOyNkZWZpbmUgUkszNTY4X0dNQUNfTU9ERV9STUlJX1JHTUlJCQlHUkZfQ0xSX0JJVCg3KQomIzQzOyNkZWZpbmUgUkszNTY4X0dNQUNfTU9ERV9TR01JSV9RU0dNSUkJCUdSRl9CSVQoNykKICNkZWZpbmUgUkszNTY4X0dNQUNfRkxPV19DVFJMCQkJR1JGX0JJVCgzKQogI2RlZmluZSBSSzM1NjhfR01BQ19GTE9XX0NUUkxfQ0xSCQlHUkZfQ0xSX0JJVCgzKQogI2RlZmluZSBSSzM1NjhfR01BQ19SWENMS19ETFlfRU5BQkxFCQlHUkZfQklUKDEpCkBAIC04NTEsMTggJiM0Mzs4NTcsMzIgQEAgc3RhdGljIHZvaWQgcmszNTY4X3NldF90b19yZ21paShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdiwKIAkJICAgICBSSzM1NjhfR01BQ19DTEtfVFhfRExfQ0ZHKHR4X2RlbGF5KSk7CiAKIAlyZWdtYXBfd3JpdGUoYnNwX3ByaXYtJmd0O2dyZiwgY29uMSwKJiM0MzsJCSAgICAgUkszNTY4X0dNQUNfTU9ERV9STUlJX1JHTUlJIHwKIAkJICAgICBSSzM1NjhfR01BQ19SWENMS19ETFlfRU5BQkxFIHwKIAkJICAgICBSSzM1NjhfR01BQ19UWENMS19ETFlfRU5BQkxFKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHJrMzU2OF9zZXRfdG9fc2dtaWkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpCiYjNDM7ewomIzQzOwl1MzIgY29uMTsKJiM0MzsKJiM0MzsJY29uMSA9IChic3BfcHJpdi0mZ3Q7aWQgPT0gMSkgPyBSSzM1NjhfR1JGX0dNQUMxX0NPTjEgOgomIzQzOwkJCQkgICAgIFJLMzU2OF9HUkZfR01BQzBfQ09OMTsKJiM0MzsKJiM0MzsJcmVnbWFwX3dyaXRlKGJzcF9wcml2LSZndDtncmYsIGNvbjEsIFJLMzU2OF9HTUFDX01PREVfU0dNSUlfUVNHTUlJKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgY29uc3Qgc3RydWN0IHJrX2dtYWNfb3BzIHJrMzU2OF9vcHMgPSB7CiAJLmluaXQgPSByazM1NjhfaW5pdCwKIAkuc2V0X3RvX3JnbWlpID0gcmszNTY4X3NldF90b19yZ21paSwKJiM0MzsJLnNldF90b19zZ21paSA9IHJrMzU2OF9zZXRfdG9fc2dtaWksCiYjNDM7CiAJLnNldF9zcGVlZCA9IHJrX3NldF9jbGtfbWFjX3NwZWVkLAogCiAJLmdtYWNfcGh5X2ludGZfc2VsX21hc2sgPSBHRU5NQVNLX1UxNig2LCA0KSwKIAogCS5zdXBwb3J0c19ybWlpID0gdHJ1ZSwKJiM0MzsJLnN1cHBvcnRzX3NnbWlpID0gdHJ1ZSwKIAogCS5yZWdzX3ZhbGlkID0gdHJ1ZSwKIAkucmVncyA9IHsKQEAgLTEyMDgsNiAmIzQzOzEyMjgsNDMgQEAgc3RhdGljIHZvaWQgcmtfcGh5X3Bvd2VyZG93bihzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdikKIAkJZGV2X2Vycihic3BfcHJpdi0mZ3Q7ZGV2LCAmIzM0O2ZhaWwgdG8gZGlzYWJsZSBwaHktc3VwcGx5XG4mIzM0Oyk7CiB9CiAKJiM0MztzdGF0aWMgaW50IHJrX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBwcml2LSZndDtkZXZpY2UtJmd0O29mX25vZGU7CiYjNDM7CXN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25vZGU7CiYjNDM7CXN0cnVjdCBkd194cGNzICp4cGNzOwomIzQzOwomIzQzOwlwY3Nfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUobnAsICYjMzQ7cGNzLWhhbmRsZSYjMzQ7LCAwKTsKJiM0MzsJaWYgKCFwY3Nfbm9kZSkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwomIzQzOwl4cGNzID0geHBjc19ya19jcmVhdGUocHJpdi0mZ3Q7ZGV2aWNlLCBwY3Nfbm9kZSk7CiYjNDM7CW9mX25vZGVfcHV0KHBjc19ub2RlKTsKJiM0MzsJaWYgKElTX0VSUih4cGNzKSkKJiM0MzsJCXJldHVybiBQVFJfRVJSKHhwY3MpOwomIzQzOwomIzQzOwlwcml2LSZndDtody0mZ3Q7eHBjcyA9IHhwY3M7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBya19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiYjNDM7ewomIzQzOwlpZiAoIXByaXYtJmd0O2h3LSZndDt4cGNzKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwl4cGNzX2Rlc3Ryb3kocHJpdi0mZ3Q7aHctJmd0O3hwY3MpOwomIzQzOwlwcml2LSZndDtody0mZ3Q7eHBjcyA9IE5VTEw7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJrX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAomIzQzOwkJCQkJIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCiYjNDM7ewomIzQzOwlpZiAoIXByaXYtJmd0O2h3LSZndDt4cGNzKQomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CiYjNDM7CXJldHVybiB4cGNzX3RvX3BoeWxpbmtfcGNzKHByaXYtJmd0O2h3LSZndDt4cGNzKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAogCQkJCQkgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCwKIAkJCQkJICBjb25zdCBzdHJ1Y3QgcmtfZ21hY19vcHMgKm9wcykKQEAgLTEzMzAsNiAmIzQzOzEzODcsNyBAQCBzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAogCiAJYnNwX3ByaXYtJmd0O3N1cHBvcnRzX3JnbWlpID0gb3BzLSZndDtzdXBwb3J0c19yZ21paSB8fCAhIW9wcy0mZ3Q7c2V0X3RvX3JnbWlpOwogCWJzcF9wcml2LSZndDtzdXBwb3J0c19ybWlpID0gb3BzLSZndDtzdXBwb3J0c19ybWlpIHx8ICEhb3BzLSZndDtzZXRfdG9fcm1paTsKJiM0MzsJYnNwX3ByaXYtJmd0O3N1cHBvcnRzX3NnbWlpID0gb3BzLSZndDtzdXBwb3J0c19zZ21paSB8fCAhIW9wcy0mZ3Q7c2V0X3RvX3NnbWlpOwogCiAJaWYgKG9wcy0mZ3Q7aW5pdCkgewogCQlyZXQgPSBvcHMtJmd0O2luaXQoYnNwX3ByaXYpOwpAQCAtMTM2MSw2ICYjNDM7MTQxOSwxMCBAQCBzdGF0aWMgaW50IHJrX2dtYWNfY2hlY2tfb3BzKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KQogCQlpZiAoIWJzcF9wcml2LSZndDtzdXBwb3J0c19ybWlpKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCWJyZWFrOwomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSToKJiM0MzsJCWlmICghYnNwX3ByaXYtJmd0O3N1cHBvcnRzX3NnbWlpKQomIzQzOwkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZGV2X2Vycihic3BfcHJpdi0mZ3Q7ZGV2LAogCQkJJiMzNDt1bnN1cHBvcnRlZCBpbnRlcmZhY2UgJWQmIzM0OywgYnNwX3ByaXYtJmd0O3BoeV9pZmFjZSk7CkBAIC0xMzc5LDE2ICYjNDM7MTQ0MSwxOSBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcG93ZXJ1cChzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdikKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCiYjNDM7CXJldCA9IGdtYWNfY2xrX2VuYWJsZShic3BfcHJpdiwgdHJ1ZSk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlpZiAoYnNwX3ByaXYtJmd0O3BoeV9pZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpCiYjNDM7CQlnb3RvIHNldF9tb2RlOwomIzQzOwogCXJldCA9IHJrX2dldF9waHlfaW50Zl9zZWwoYnNwX3ByaXYtJmd0O3BoeV9pZmFjZSk7CiAJaWYgKHJldCAmbHQ7IDApCi0JCXJldHVybiByZXQ7CiYjNDM7CQlnb3RvIGNsa19kaXNhYmxlOwogCiAJaW50ZiA9IHJldDsKIAotCXJldCA9IGdtYWNfY2xrX2VuYWJsZShic3BfcHJpdiwgdHJ1ZSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQogCWlmIChic3BfcHJpdi0mZ3Q7Z21hY19waHlfaW50Zl9zZWxfbWFzayB8fAogCSAgICBic3BfcHJpdi0mZ3Q7Z21hY19ybWlpX21vZGVfbWFzaykgewogCQkvKiBJZiBkZWZpbmVkLCBlbmNvZGUgdGhlIHBoeV9pbnRmX3NlbCB2YWx1ZSAqLwpAQCAtMTM5OSwxMCAmIzQzOzE0NjQsOCBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcG93ZXJ1cChzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdikKIAkJCQkgICAgICBic3BfcHJpdi0mZ3Q7Z21hY19ybWlpX21vZGVfbWFzayk7CiAKIAkJcmV0ID0gcmtfd3JpdGVfZ21hY19ncmZfcmVnKGJzcF9wcml2LCB2YWwpOwotCQlpZiAocmV0ICZsdDsgMCkgewotCQkJZ21hY19jbGtfZW5hYmxlKGJzcF9wcml2LCBmYWxzZSk7Ci0JCQlyZXR1cm4gcmV0OwotCQl9CiYjNDM7CQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCQlnb3RvIGNsa19kaXNhYmxlOwogCX0KIAogCWlmIChic3BfcHJpdi0mZ3Q7Y2xvY2sucm1paV9tb2RlX21hc2spIHsKQEAgLTE0MTAsMTMgJiM0MzsxNDczLDEyIEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KQogCQkJCSAgICAgYnNwX3ByaXYtJmd0O2Nsb2NrLnJtaWlfbW9kZV9tYXNrKTsKIAogCQlyZXQgPSBya193cml0ZV9jbG9ja19ncmZfcmVnKGJzcF9wcml2LCB2YWwpOwotCQlpZiAocmV0ICZsdDsgMCkgewotCQkJZ21hY19jbGtfZW5hYmxlKGJzcF9wcml2LCBmYWxzZSk7Ci0JCQlyZXR1cm4gcmV0OwotCQl9CiYjNDM7CQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCQlnb3RvIGNsa19kaXNhYmxlOwogCX0KIAotCS8qcm1paSBvciByZ21paSovCiYjNDM7c2V0X21vZGU6CiYjNDM7CS8qIHJtaWksIHJnbWlpLCBzZ21paSAqLwogCXN3aXRjaCAoYnNwX3ByaXYtJmd0O3BoeV9pZmFjZSkgewogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOgogCQlkZXZfaW5mbyhkZXYsICYjMzQ7aW5pdCBmb3IgUkdNSUlcbiYjMzQ7KTsKQEAgLTE0NDcsMTUgJiM0MzsxNTA5LDIwIEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KQogCQlpZiAoYnNwX3ByaXYtJmd0O29wcy0mZ3Q7c2V0X3RvX3JtaWkpCiAJCQlic3BfcHJpdi0mZ3Q7b3BzLSZndDtzZXRfdG9fcm1paShic3BfcHJpdik7CiAJCWJyZWFrOwomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSToKJiM0MzsJCWRldl9pbmZvKGRldiwgJiMzNDtpbml0IGZvciBTR01JSVxuJiMzNDspOwomIzQzOwkJaWYgKGJzcF9wcml2LSZndDtvcHMtJmd0O3NldF90b19zZ21paSkKJiM0MzsJCQlic3BfcHJpdi0mZ3Q7b3BzLSZndDtzZXRfdG9fc2dtaWkoYnNwX3ByaXYpOwomIzQzOwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZGV2X2VycihkZXYsICYjMzQ7Tk8gaW50ZXJmYWNlIGRlZmluZWQhXG4mIzM0Oyk7CiYjNDM7CQlyZXQgPSAtRUlOVkFMOwomIzQzOwkJZ290byBjbGtfZGlzYWJsZTsKIAl9CiAKIAlyZXQgPSBya19waHlfcG93ZXJ1cChic3BfcHJpdik7Ci0JaWYgKHJldCkgewotCQlnbWFjX2Nsa19lbmFibGUoYnNwX3ByaXYsIGZhbHNlKTsKLQkJcmV0dXJuIHJldDsKLQl9CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlnb3RvIGNsa19kaXNhYmxlOwogCiAJcG1fcnVudGltZV9nZXRfc3luYyhkZXYpOwogCkBAIC0xNDYzLDYgJiM0MzsxNTMwLDEwIEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KQogCQlic3BfcHJpdi0mZ3Q7b3BzLSZndDtpbnRlZ3JhdGVkX3BoeV9wb3dlcnVwKGJzcF9wcml2KTsKIAogCXJldHVybiAwOwomIzQzOwomIzQzO2Nsa19kaXNhYmxlOgomIzQzOwlnbWFjX2Nsa19lbmFibGUoYnNwX3ByaXYsIGZhbHNlKTsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHZvaWQgcmtfZ21hY19wb3dlcmRvd24oc3RydWN0IHJrX3ByaXZfZGF0YSAqZ21hYykKQEAgLTE0ODYsNiAmIzQzOzE1NTcsOSBAQCBzdGF0aWMgdm9pZCBya19nZXRfaW50ZXJmYWNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgKmJzcF9wcml2LAogCiAJaWYgKHJrLSZndDtzdXBwb3J0c19ybWlpKQogCQlfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUksIGludGVyZmFjZXMpOwomIzQzOwomIzQzOwlpZiAocmstJmd0O3N1cHBvcnRzX3NnbWlpKQomIzQzOwkJX19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSwgaW50ZXJmYWNlcyk7CiB9CiAKIHN0YXRpYyBpbnQgcmtfc2V0X2Nsa190eF9yYXRlKHZvaWQgKmJzcF9wcml2Xywgc3RydWN0IGNsayAqY2xrX3R4X2ksCkBAIC0xNjAyLDYgJiM0MzsxNjc2LDE3IEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXBsYXRfZGF0LSZndDtzdXNwZW5kID0gcmtfZ21hY19zdXNwZW5kOwogCXBsYXRfZGF0LSZndDtyZXN1bWUgPSBya19nbWFjX3Jlc3VtZTsKIAomIzQzOwlpZiAocGxhdF9kYXQtJmd0O3BoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSB7CiYjNDM7CQkvKiBTR01JSSBjbG9jayBhbHdheXMgcnVucyBhdCAxMjUgTUh6ICovCiYjNDM7CQlwbGF0X2RhdC0mZ3Q7c2V0X2Nsa190eF9yYXRlID0gTlVMTDsKJiM0MzsKJiM0MzsJCS8qIFNHTUlJIHJlcXVpcmVzIGEgUENTICovCiYjNDM7CQlwbGF0X2RhdC0mZ3Q7ZGVmYXVsdF9hbl9pbmJhbmQgPSB0cnVlOwomIzQzOwkJcGxhdF9kYXQtJmd0O3Bjc19pbml0ID0gcmtfcGNzX2luaXQ7CiYjNDM7CQlwbGF0X2RhdC0mZ3Q7cGNzX2V4aXQgPSBya19wY3NfZXhpdDsKJiM0MzsJCXBsYXRfZGF0LSZndDtzZWxlY3RfcGNzID0gcmtfc2VsZWN0X3BjczsKJiM0MzsJfQomIzQzOwogCXBsYXRfZGF0LSZndDtic3BfcHJpdiA9IHJrX2dtYWNfc2V0dXAocGRldiwgcGxhdF9kYXQsIGRhdGEpOwogCWlmIChJU19FUlIocGxhdF9kYXQtJmd0O2JzcF9wcml2KSkKIAkJcmV0dXJuIFBUUl9FUlIocGxhdF9kYXQtJmd0O2JzcF9wcml2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYwppbmRleCAxMzYzNDk2NWJjMTlhLi4wMWRmNDc3NmVkYjNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jCkBAIC0zNSw4ICYjNDM7MzUsMTEgQEAgc3RhdGljIGludCByem4xX2R3bWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAogc3RhdGljIHZvaWQgcnpuMV9kd21hY19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiB7Ci0JaWYgKHByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3BjcykKLQkJbWlpY19kZXN0cm95KHByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3Bjcyk7CiYjNDM7CWlmICghcHJpdi0mZ3Q7aHctJmd0O3BoeWxpbmtfcGNzKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwltaWljX2Rlc3Ryb3kocHJpdi0mZ3Q7aHctJmd0O3BoeWxpbmtfcGNzKTsKJiM0MzsJcHJpdi0mZ3Q7aHctJmd0O3BoeWxpbmtfcGNzID0gTlVMTDsKIH0KIAogc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqcnpuMV9kd21hY19zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYwppbmRleCAxZDdmMGE1N2QyODg5Li42ZDRiYzFmZThmNzUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jCkBAIC01MzksOCAmIzQzOzUzOSwxMSBAQCBzdGF0aWMgaW50IHNvY2ZwZ2FfZHdtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCiBzdGF0aWMgdm9pZCBzb2NmcGdhX2R3bWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIHsKLQlpZiAocHJpdi0mZ3Q7aHctJmd0O3BoeWxpbmtfcGNzKQotCQlseW54X3Bjc19kZXN0cm95KHByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3Bjcyk7CiYjNDM7CWlmICghcHJpdi0mZ3Q7aHctJmd0O3BoeWxpbmtfcGNzKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlseW54X3Bjc19kZXN0cm95KHByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3Bjcyk7CiYjNDM7CXByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3BjcyA9IE5VTEw7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnNvY2ZwZ2FfZHdtYWNfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYwppbmRleCBhZmU5OGZmNWJkY2IwLi5kMmY3N2YwYzIyM2E3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMKQEAgLTQyNiwzNiAmIzQzOzQyNiwxNSBAQCBpbnQgc3RtbWFjX21kaW9fcmVzZXQoc3RydWN0IG1paV9idXMgKmJ1cykKIGludCBzdG1tYWNfcGNzX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQogewogCXN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwotCXN0cnVjdCBmd25vZGVfaGFuZGxlICpkZXZub2RlLCAqcGNzbm9kZTsKLQlzdHJ1Y3QgZHdfeHBjcyAqeHBjcyA9IE5VTEw7Ci0JaW50IGFkZHIsIHJldDsKLQotCWRldm5vZGUgPSBkZXZfZndub2RlKHByaXYtJmd0O2RldmljZSk7Ci0KLQlpZiAocHJpdi0mZ3Q7cGxhdC0mZ3Q7cGNzX2luaXQpIHsKLQkJcmV0ID0gcHJpdi0mZ3Q7cGxhdC0mZ3Q7cGNzX2luaXQocHJpdik7Ci0JfSBlbHNlIGlmIChmd25vZGVfcHJvcGVydHlfcHJlc2VudChkZXZub2RlLCAmIzM0O3Bjcy1oYW5kbGUmIzM0OykpIHsKLQkJcGNzbm9kZSA9IGZ3bm9kZV9maW5kX3JlZmVyZW5jZShkZXZub2RlLCAmIzM0O3Bjcy1oYW5kbGUmIzM0OywgMCk7Ci0JCXhwY3MgPSB4cGNzX2NyZWF0ZV9md25vZGUocGNzbm9kZSk7Ci0JCWZ3bm9kZV9oYW5kbGVfcHV0KHBjc25vZGUpOwotCQlyZXQgPSBQVFJfRVJSX09SX1pFUk8oeHBjcyk7Ci0JfSBlbHNlIGlmIChwcml2LSZndDtwbGF0LSZndDttZGlvX2J1c19kYXRhICZhbXA7JmFtcDsKLQkJICAgcHJpdi0mZ3Q7cGxhdC0mZ3Q7bWRpb19idXNfZGF0YS0mZ3Q7cGNzX21hc2spIHsKLQkJYWRkciA9IGZmcyhwcml2LSZndDtwbGF0LSZndDttZGlvX2J1c19kYXRhLSZndDtwY3NfbWFzaykgLSAxOwotCQl4cGNzID0geHBjc19jcmVhdGVfbWRpb2Rldihwcml2LSZndDttaWksIGFkZHIpOwotCQlyZXQgPSBQVFJfRVJSX09SX1pFUk8oeHBjcyk7Ci0JfSBlbHNlIHsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJaWYgKCFwcml2LSZndDtwbGF0LSZndDtwY3NfaW5pdCkKIAkJcmV0dXJuIDA7Ci0JfQogCiYjNDM7CXJldCA9IHByaXYtJmd0O3BsYXQtJmd0O3Bjc19pbml0KHByaXYpOwogCWlmIChyZXQpCiAJCXJldHVybiBkZXZfZXJyX3Byb2JlKHByaXYtJmd0O2RldmljZSwgcmV0LCAmIzM0O05vIHhQQ1MgZm91bmRcbiYjMzQ7KTsKIAotCWlmICh4cGNzKQotCQl4cGNzX2NvbmZpZ19lZWVfbXVsdF9mYWN0KHhwY3MsIHByaXYtJmd0O3BsYXQtJmd0O211bHRfZmFjdF8xMDBucyk7Ci0KLQlwcml2LSZndDtody0mZ3Q7eHBjcyA9IHhwY3M7Ci0KIAlyZXR1cm4gMDsKIH0KIApAQCAtNDYzLDE0ICYjNDM7NDQyLDEwIEBAIHZvaWQgc3RtbWFjX3Bjc19jbGVhbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKIHsKIAlzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTsKIAotCWlmIChwcml2LSZndDtwbGF0LSZndDtwY3NfZXhpdCkKLQkJcHJpdi0mZ3Q7cGxhdC0mZ3Q7cGNzX2V4aXQocHJpdik7Ci0KLQlpZiAoIXByaXYtJmd0O2h3LSZndDt4cGNzKQomIzQzOwlpZiAoIXByaXYtJmd0O3BsYXQtJmd0O3Bjc19leGl0KQogCQlyZXR1cm47CiAKLQl4cGNzX2Rlc3Ryb3kocHJpdi0mZ3Q7aHctJmd0O3hwY3MpOwotCXByaXYtJmd0O2h3LSZndDt4cGNzID0gTlVMTDsKJiM0MzsJcHJpdi0mZ3Q7cGxhdC0mZ3Q7cGNzX2V4aXQocHJpdik7CiB9CiAKIHN0cnVjdCBzdG1tYWNfY2xrX3JhdGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL0tjb25maWcgYi9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZwppbmRleCBlNDE3ZmQ2NmY2NjBhLi44OGJjNDA3OTFlNjlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZwpAQCAtMTIsNiAmIzQzOzEyLDI5IEBAIGNvbmZpZyBQQ1NfWFBDUwogCSAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBkcml2ZXIgYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIFN5bm9wc3lzCiAJICBEZXNpZ25XYXJlIFhQQ1MgY29udHJvbGxlcnMuCiAKJiM0MztpZiBQQ1NfWFBDUwomIzQzOwomIzQzO2NvbmZpZyBQQ1NfWFBDU19QTEFURk9STQomIzQzOwl0cmlzdGF0ZSAmIzM0O0dlbmVyaWMgWFBDUyBjb250cm9sbGVyIHN1cHBvcnQmIzM0OwomIzQzOwlkZWZhdWx0IFBDU19YUENTCiYjNDM7CWhlbHAKJiM0MzsJICBHZW5lcmljIERXWFBDUyBkcml2ZXIgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbiYjMzk7dCByZXF1aXJlIGFueQomIzQzOwkgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgdG8gZnVuY3Rpb24gb3IgaXMgdXNpbmcgcGxhdGZvcm0KJiM0MzsJICBkYXRhIGZvciBzZXR1cC4KJiM0MzsKJiM0MzsJICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLgomIzQzOwomIzQzO2NvbmZpZyBQQ1NfWFBDU19ST0NLQ0hJUAomIzQzOwl0cmlzdGF0ZSAmIzM0O1JvY2tjaGlwIFhQQ1MgY29udHJvbGxlciBzdXBwb3J0JiMzNDsKJiM0MzsJZGVmYXVsdCBBUkNIX1JPQ0tDSElQCiYjNDM7CWRlcGVuZHMgb24gT0YgJmFtcDsmYW1wOyAoQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1QpCiYjNDM7CWhlbHAKJiM0MzsJICBTdXBwb3J0IGZvciBYUENTIGNvbnRyb2xsZXIgb24gUm9ja2NoaXAgUkszNTZ4IFNvQy4KJiM0MzsKJiM0MzsJICBJZiB5b3UgaGF2ZSBhIFJvY2tjaGlwIFNvQyB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuCiYjNDM7CiYjNDM7ZW5kaWYgIyBQQ1NfWFBDUwomIzQzOwogY29uZmlnIFBDU19MWU5YCiAJdHJpc3RhdGUKIAloZWxwCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGUKaW5kZXggNGY3OTIwNjE4YjkwMC4uYzgwOWI3Zjk0MmE1MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZQpAQCAtMSwxMCAmIzQzOzEsOSBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAogIyBNYWtlZmlsZSBmb3IgTGludXggUENTIGRyaXZlcnMKIAotcGNzX3hwY3MtJChDT05GSUdfUENTX1hQQ1MpCTo9IHBjcy14cGNzLm8gcGNzLXhwY3MtcGxhdC5vIFwKLQkJCQkgICBwY3MteHBjcy1ueHAubyBwY3MteHBjcy13eC5vCi0KLW9iai0kKENPTkZJR19QQ1NfWFBDUykJCSYjNDM7PSBwY3NfeHBjcy5vCiYjNDM7b2JqLSQoQ09ORklHX1BDU19YUENTKSAmIzQzOz0gcGNzLXhwY3MubyBwY3MteHBjcy1ueHAubyBwY3MteHBjcy13eC5vCiYjNDM7b2JqLSQoQ09ORklHX1BDU19YUENTX1BMQVRGT1JNKSAmIzQzOz0gcGNzLXhwY3MtcGxhdC5vCiYjNDM7b2JqLSQoQ09ORklHX1BDU19YUENTX1JPQ0tDSElQKSAmIzQzOz0gcGNzLXhwY3Mtcmsubwogb2JqLSQoQ09ORklHX1BDU19MWU5YKQkJJiM0Mzs9IHBjcy1seW54Lm8KIG9iai0kKENPTkZJR19QQ1NfTVRLX0xZTlhJKQkmIzQzOz0gcGNzLW10ay1seW54aS5vCiBvYmotJChDT05GSUdfUENTX1JaTjFfTUlJQykJJiM0Mzs9IHBjcy1yem4xLW1paWMubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi40ZWYyMGIwOTNkYWRhCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmMKQEAgLTAsMCAmIzQzOzEsNTYxIEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsvKgomIzQzOyAqIFJvY2tjaGlwIFhQQ1MgcGxhdGZvcm0gZGV2aWNlIGRyaXZlcgomIzQzOyAqCiYjNDM7ICogQmFzZWQgb24gdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgWFBDUyBwbGF0Zm9ybSBkcml2ZXIuCiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDI0IFNlcmdlIFNlbWluCiYjNDM7ICoKJiM0MzsgKiBBZGFwdGVkIGZvciBSb2NrY2hpcCBTb0NzLCB3aXRoIHJlZmVyZW5jZSB0byB0aGUgUm9ja2NoaXAgT0VNIGRyaXZlci4KJiM0MzsgKiBDb3B5cmlnaHQgKEMpIDIwMjYgQ29pYSBQcmFudAomIzQzOyAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9hdG9taWMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvYml0ZmllbGQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvY2xrLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2RldmljZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pby5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pb3BvbGwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbWRpby5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvb2YuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvb2ZfcGxhdGZvcm0uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGNzL3Bjcy14cGNzLXJrLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BoeS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9waHkvcGh5LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BsYXRmb3JtX2RldmljZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wbV9kb21haW4uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcG1fcnVudGltZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wcm9wZXJ0eS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9zaXplcy5oJmd0OwomIzQzOwomIzQzOyNpbmNsdWRlICYjMzQ7cGNzLXhwY3MuaCYjMzQ7CiYjNDM7CiYjNDM7c3RydWN0IGR3X3hwY3NfcmsgewomIzQzOwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2OwomIzQzOwlzdHJ1Y3QgbWlpX2J1cyAqYnVzOwomIzQzOwl2b2lkIF9faW9tZW0gKnJlZ19iYXNlOwomIzQzOwlzdHJ1Y3QgcGh5ICpzZXJkZXNfcGh5OwomIzQzOwlzdHJ1Y3QgY2xrICpjc3JfY2xrOwomIzQzOwlzdHJ1Y3QgY2xrICplZWVfY2xrOwomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIHB0cmRpZmZfdCB4cGNzX3JrX2FkZHJfZm9ybWF0KGludCBkZXYsIGludCByZWcpCiYjNDM7ewomIzQzOwlyZXR1cm4gRklFTERfUFJFUCgweDcwMDAwLCBkZXYpIHwgRklFTERfUFJFUCgweGZmZmYsIHJlZyk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX3JlZyhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MsIGludCBkZXYsIGludCByZWcpCiYjNDM7ewomIzQzOwlwdHJkaWZmX3QgY3NyOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwljc3IgPSB4cGNzX3JrX2FkZHJfZm9ybWF0KGRldiwgcmVnKTsKJiM0MzsKJiM0MzsJcmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldCgmYW1wO3B4cGNzLSZndDtwZGV2LSZndDtkZXYpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gcmVhZGwocHhwY3MtJmd0O3JlZ19iYXNlICYjNDM7IChjc3IgJmx0OyZsdDsgMikpICZhbXA7IDB4ZmZmZjsKJiM0MzsKJiM0MzsJcG1fcnVudGltZV9wdXQoJmFtcDtweHBjcy0mZ3Q7cGRldi0mZ3Q7ZGV2KTsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3dyaXRlX3JlZyhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MsIGludCBkZXYsIGludCByZWcsIHUxNiB2YWwpCiYjNDM7ewomIzQzOwlwdHJkaWZmX3QgY3NyOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwljc3IgPSB4cGNzX3JrX2FkZHJfZm9ybWF0KGRldiwgcmVnKTsKJiM0MzsKJiM0MzsJcmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldCgmYW1wO3B4cGNzLSZndDtwZGV2LSZndDtkZXYpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJd3JpdGVsKHZhbCwgcHhwY3MtJmd0O3JlZ19iYXNlICYjNDM7IChjc3IgJmx0OyZsdDsgMikpOwomIzQzOwomIzQzOwlwbV9ydW50aW1lX3B1dCgmYW1wO3B4cGNzLSZndDtwZGV2LSZndDtkZXYpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7I2RlZmluZSBST0NLQ0hJUF9NTURfTUlJMQkyCiYjNDM7I2RlZmluZSBST0NLQ0hJUF9NTURfTUlJMgkzCiYjNDM7I2RlZmluZSBST0NLQ0hJUF9NTURfTUlJMwk0CiYjNDM7I2RlZmluZSBST0NLQ0hJUF9NTURfUE1BUE1ECTYKJiM0MzsjZGVmaW5lIFJPQ0tDSElQX01NRF9NSUkJNwomIzQzOwomIzQzO3N0YXRpYyBib29sIHhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGludCBhZGRyKQomIzQzO3sKJiM0MzsJcmV0dXJuICEoYWRkciAmbHQ7IDAgfHwgYWRkciAmZ3Q7IDMpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfbWRpb19yZWFkX3JlbWFwcGluZyhpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZykKJiM0Mzt7CiYjNDM7CXN3aXRjaCAoZGV2KSB7CiYjNDM7CWNhc2UgTURJT19NTURfUE1BUE1EOgomIzQzOwkJcmV0dXJuIFJPQ0tDSElQX01NRF9QTUFQTUQ7CiYjNDM7CWNhc2UgTURJT19NTURfVkVORDI6CiYjNDM7CQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybiAtRU5YSU87CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogcmVhZCByZW1hcHBpbmcgdG8gTUlJIGlzIHBlcmZvcm1lZCBieSBIVyAqLwomIzQzOwlzd2l0Y2ggKGFkZHIpIHsKJiM0MzsJY2FzZSAwOgomIzQzOwkJcmV0dXJuIFJPQ0tDSElQX01NRF9NSUk7CiYjNDM7CWNhc2UgMToKJiM0MzsJCXJldHVybiBST0NLQ0hJUF9NTURfTUlJMTsKJiM0MzsJY2FzZSAyOgomIzQzOwkJcmV0dXJuIFJPQ0tDSElQX01NRF9NSUkyOwomIzQzOwljYXNlIDM6CiYjNDM7CQlyZXR1cm4gUk9DS0NISVBfTU1EX01JSTM7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoaW50IGFkZHIsIGludCBkZXYsIGludCByZWcpCiYjNDM7ewomIzQzOwlzd2l0Y2ggKGRldikgewomIzQzOwljYXNlIE1ESU9fTU1EX1BNQVBNRDoKJiM0MzsJCXJldHVybiBST0NLQ0hJUF9NTURfUE1BUE1EOwomIzQzOwljYXNlIE1ESU9fTU1EX1ZFTkQyOgomIzQzOwkJYnJlYWs7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlyZXR1cm4gLUVOWElPOwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIFdyaXRhYmxlIG9ubHkgb24gTUlJICovCiYjNDM7CXN3aXRjaCAocmVnKSB7CiYjNDM7CWNhc2UgRFdfVlJfTUlJX0FOX0NUUkw6CiYjNDM7CWNhc2UgRFdfVlJfTUlJX0FOX0lOVFJfU1RTOgomIzQzOwljYXNlIERXX1ZSX01JSV9FRUVfTUNUUkwwOgomIzQzOwljYXNlIERXX1ZSX01JSV9FRUVfTUNUUkwxOgomIzQzOwljYXNlIERXX1ZSX01JSV9ESUdfQ1RSTDI6CiYjNDM7CQlyZXR1cm4gUk9DS0NISVBfTU1EX01JSTsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiYjNDM7CiYjNDM7CXN3aXRjaCAoYWRkcikgewomIzQzOwljYXNlIDA6CiYjNDM7CQlyZXR1cm4gUk9DS0NISVBfTU1EX01JSTsKJiM0MzsJY2FzZSAxOgomIzQzOwkJcmV0dXJuIFJPQ0tDSElQX01NRF9NSUkxOwomIzQzOwljYXNlIDI6CiYjNDM7CQlyZXR1cm4gUk9DS0NISVBfTU1EX01JSTI7CiYjNDM7CWNhc2UgMzoKJiM0MzsJCXJldHVybiBST0NLQ0hJUF9NTURfTUlJMzsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGJ1cy0mZ3Q7cHJpdjsKJiM0MzsJaW50IGRldjsKJiM0MzsKJiM0MzsJaWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShhZGRyKSkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwomIzQzOwlkZXYgPSB4cGNzX3JrX21kaW9fcmVhZF9yZW1hcHBpbmcoYWRkciwgTURJT19NTURfVkVORDIsIHJlZyk7CiYjNDM7CWlmIChkZXYgJmx0OyAwKQomIzQzOwkJcmV0dXJuIDB4ZmZmZjsKJiM0MzsKJiM0MzsJcmV0dXJuIHhwY3NfcmtfcmVhZF9yZWcocHhwY3MsIGRldiwgcmVnKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCB4cGNzX3JrX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGJ1cy0mZ3Q7cHJpdjsKJiM0MzsJaW50IGRldjsKJiM0MzsKJiM0MzsJaWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShhZGRyKSkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwomIzQzOwlkZXYgPSB4cGNzX3JrX21kaW9fd3JpdGVfcmVtYXBwaW5nKGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCByZWcpOwomIzQzOwlpZiAoZGV2ICZsdDsgMCkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlyZXR1cm4geHBjc19ya193cml0ZV9yZWcocHhwY3MsIGRldiwgcmVnLCB2YWwpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCBkZXYsIGludCByZWcpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtJmd0O3ByaXY7CiYjNDM7CiYjNDM7CWlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoYWRkcikpCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsKJiM0MzsJZGV2ID0geHBjc19ya19tZGlvX3JlYWRfcmVtYXBwaW5nKGFkZHIsIGRldiwgcmVnKTsKJiM0MzsJaWYgKGRldiAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gMHhmZmZmOwomIzQzOwomIzQzOwlyZXR1cm4geHBjc19ya19yZWFkX3JlZyhweHBjcywgZGV2LCByZWcpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3Nfcmtfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2LCBpbnQgcmVnLCB1MTYgdmFsKQomIzQzO3sKJiM0MzsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLSZndDtwcml2OwomIzQzOwomIzQzOwlpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiYjNDM7CWRldiA9IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoYWRkciwgZGV2LCByZWcpOwomIzQzOwlpZiAoZGV2ICZsdDsgMCkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlyZXR1cm4geHBjc19ya193cml0ZV9yZWcocHhwY3MsIGRldiwgcmVnLCB2YWwpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IGR3X3hwY3NfcmsgKnhwY3NfcmtfY3JlYXRlX2RhdGEoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkd194cGNzX3JrICpweHBjczsKJiM0MzsKJiM0MzsJcHhwY3MgPSBkZXZtX2t6YWxsb2MoJmFtcDtwZGV2LSZndDtkZXYsIHNpemVvZigqcHhwY3MpLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCFweHBjcykKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwomIzQzOwomIzQzOwlweHBjcy0mZ3Q7cGRldiA9IHBkZXY7CiYjNDM7CiYjNDM7CWRldl9zZXRfZHJ2ZGF0YSgmYW1wO3BkZXYtJmd0O2RldiwgcHhwY3MpOwomIzQzOwomIzQzOwlyZXR1cm4gcHhwY3M7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgeHBjc19ya19zZXJkZXNfcGh5X2luaXQoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKQomIzQzO3sKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtweHBjcy0mZ3Q7cGRldi0mZ3Q7ZGV2OwomIzQzOwomIzQzOwlweHBjcy0mZ3Q7c2VyZGVzX3BoeSA9IGRldm1fcGh5X2dldChkZXYsICYjMzQ7c2VyZGVzJiMzNDspOwomIzQzOwlpZiAoSVNfRVJSKHB4cGNzLSZndDtzZXJkZXNfcGh5KSkKJiM0MzsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihweHBjcy0mZ3Q7c2VyZGVzX3BoeSksCiYjNDM7CQkJCQkmIzM0O0ZhaWxlZCB0byBnZXQgU2VyRGVzIFBIWVxuJiMzNDspOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgeHBjc19ya19zZXJkZXNfcGh5X3Bvd2Vyb2ZmKHZvaWQgKmRhdGEpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBkYXRhOwomIzQzOwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmYW1wO3B4cGNzLSZndDtwZGV2LSZndDtkZXY7CiYjNDM7CiYjNDM7CXBoeV9wb3dlcl9vZmYocHhwY3MtJmd0O3NlcmRlc19waHkpOwomIzQzOwlwaHlfZXhpdChweHBjcy0mZ3Q7c2VyZGVzX3BoeSk7CiYjNDM7CiYjNDM7CWRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgZmFsc2UpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9uKHN0cnVjdCBkd194cGNzX3JrICpweHBjcykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7cHhwY3MtJmd0O3BkZXYtJmd0O2RldjsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogVGhlIHBvd2VyIGRvbWFpbiBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBlbmFibGVkLCB3aGljaCBhbGxvd3MgdXMgdG8KJiM0MzsJICogZHluYW1pY2FsbHkgdHVybiB0aGUgQ1NSIGNsb2NrIG9uL29mZiB1c2luZyBQTSB3aGlsZSBrZWVwaW5nIHRoZSBQQ1MKJiM0MzsJICogcG93ZXJlZCBvbi4KJiM0MzsJICovCiYjNDM7CXJldCA9IGRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgdHJ1ZSk7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O0ZhaWxlZCB0byBwb3dlciBvbiBwb3dlci1kb21haW5zXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldCA9IHBoeV9pbml0KHB4cGNzLSZndDtzZXJkZXNfcGh5KTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIGluaXQgU2VyRGVzIFBIWVxuJiMzNDspOwomIzQzOwkJZ290byBwbV9kb21haW47CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0ID0gcGh5X3Bvd2VyX29uKHB4cGNzLSZndDtzZXJkZXNfcGh5KTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIHBvd2VyIG9uIFNlckRlcyBQSFlcbiYjMzQ7KTsKJiM0MzsJCWdvdG8gc2VyZGVzX3BoeTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvZmYsIHB4cGNzKTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIGRldm0gZm9yIFNlckRlcyBQSFk6ICVkXG4mIzM0OywgcmV0KTsKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7CiYjNDM7c2VyZGVzX3BoeToKJiM0MzsJcGh5X2V4aXQocHhwY3MtJmd0O3NlcmRlc19waHkpOwomIzQzO3BtX2RvbWFpbjoKJiM0MzsJZGV2X3BtX2dlbnBkX3JwbV9hbHdheXNfb24oZGV2LCBmYWxzZSk7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgeHBjc19ya19pbml0X3JlcyhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gcHhwY3MtJmd0O3BkZXY7CiYjNDM7CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7cGRldi0mZ3Q7ZGV2OwomIzQzOwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKJiM0MzsKJiM0MzsJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKJiM0MzsJaWYgKCFyZXMpIHsKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O05vIHJlZy1zcGFjZSBmb3VuZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKHJlc291cmNlX3NpemUocmVzKSAmbHQ7IFNaXzJNKSB7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtJbnZhbGlkIHJlZy1zcGFjZSBzaXplXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwomIzQzOwlweHBjcy0mZ3Q7cmVnX2Jhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOwomIzQzOwlpZiAoSVNfRVJSKHB4cGNzLSZndDtyZWdfYmFzZSkpIHsKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O0ZhaWxlZCB0byBtYXAgcmVnLXNwYWNlXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gUFRSX0VSUihweHBjcy0mZ3Q7cmVnX2Jhc2UpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB4cGNzX3JrX2V4aXRfY2xrKHZvaWQgKmRhdGEpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBkYXRhOwomIzQzOwomIzQzOwljbGtfZGlzYWJsZV91bnByZXBhcmUocHhwY3MtJmd0O2VlZV9jbGspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9jbGsoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKQomIzQzO3sKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtweHBjcy0mZ3Q7cGRldi0mZ3Q7ZGV2OwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlweHBjcy0mZ3Q7Y3NyX2NsayA9IGRldm1fY2xrX2dldChkZXYsICYjMzQ7Y3NyJiMzNDspOwomIzQzOwlpZiAoSVNfRVJSKHB4cGNzLSZndDtjc3JfY2xrKSkKJiM0MzsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihweHBjcy0mZ3Q7Y3NyX2NsayksCiYjNDM7CQkJCQkgJiMzNDtGYWlsZWQgdG8gZ2V0IENTUiBjbG9ja1xuJiMzNDspOwomIzQzOwomIzQzOwlwbV9ydW50aW1lX3NldF9zdXNwZW5kZWQoZGV2KTsKJiM0MzsJcmV0ID0gZGV2bV9wbV9ydW50aW1lX2VuYWJsZShkZXYpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gZW5hYmxlIHJ1bnRpbWUtUE1cbiYjMzQ7KTsKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcHhwY3MtJmd0O2VlZV9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAmIzM0O2VlZSYjMzQ7KTsKJiM0MzsJaWYgKElTX0VSUihweHBjcy0mZ3Q7ZWVlX2NsaykpCiYjNDM7CQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHhwY3MtJmd0O2VlZV9jbGspLAomIzQzOwkJCQkJICYjMzQ7RmFpbGVkIHRvIGdldCBFRUUgY2xvY2tcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHB4cGNzLSZndDtlZWVfY2xrKTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIGVuYWJsZSBFRUUgY2xvY2tcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgeHBjc19ya19leGl0X2NsaywgcHhwY3MpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgZGV2bSBmb3IgRUVFIGNsb2NrOiAlZFxuJiMzNDssIHJldCk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9idXMoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKQomIzQzO3sKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtweHBjcy0mZ3Q7cGRldi0mZ3Q7ZGV2OwomIzQzOwlzdGF0aWMgYXRvbWljX3QgaWQgPSBBVE9NSUNfSU5JVCgtMSk7CiYjNDM7CXN0cnVjdCBtaWlfYnVzICpidXM7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWJ1cyA9IGRldm1fbWRpb2J1c19hbGxvY19zaXplKGRldiwgMCk7CiYjNDM7CWlmICghYnVzKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CWJ1cy0mZ3Q7bmFtZSA9ICYjMzQ7Um9ja2NoaXAgRFcgWFBDUyBNQ0kvQVBCMyYjMzQ7OwomIzQzOwlidXMtJmd0O3JlYWQgPSB4cGNzX3JrX3JlYWRfYzIyOwomIzQzOwlidXMtJmd0O3dyaXRlID0geHBjc19ya193cml0ZV9jMjI7CiYjNDM7CWJ1cy0mZ3Q7cmVhZF9jNDUgPSB4cGNzX3JrX3JlYWRfYzQ1OwomIzQzOwlidXMtJmd0O3dyaXRlX2M0NSA9IHhwY3Nfcmtfd3JpdGVfYzQ1OwomIzQzOwlidXMtJmd0O3BoeV9tYXNrID0gfjA7CiYjNDM7CWJ1cy0mZ3Q7cGFyZW50ID0gZGV2OwomIzQzOwlidXMtJmd0O3ByaXYgPSBweHBjczsKJiM0MzsKJiM0MzsJc25wcmludGYoYnVzLSZndDtpZCwgTUlJX0JVU19JRF9TSVpFLAomIzQzOwkJICYjMzQ7cm9ja2NoaXBfZHd4cGNzLSV4JiMzNDssIGF0b21pY19pbmNfcmV0dXJuKCZhbXA7aWQpKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogTURJTy1idXMgaGVyZSBzZXJ2ZXMgYXMganVzdCBhIGJhY2stZW5kIGVuZ2luZSBhYnN0cmFjdGluZyBvdXQKJiM0MzsJICogdGhlIE1ESU8gYW5kIE1DSS9BUEIzIElPIGludGVyZmFjZXMgdXRpbGl6ZWQgZm9yIHRoZSBSb2NrY2hpcCBEV1hQQ1MgQ1NScwomIzQzOwkgKiBhY2Nlc3MuCiYjNDM7CSAqLwomIzQzOwlyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtGYWlsZWQgdG8gY3JlYXRlIE1ESU8gYnVzXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXB4cGNzLSZndDtidXMgPSBidXM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkd194cGNzX3JrICpweHBjczsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcHhwY3MgPSB4cGNzX3JrX2NyZWF0ZV9kYXRhKHBkZXYpOwomIzQzOwlpZiAoSVNfRVJSKHB4cGNzKSkKJiM0MzsJCXJldHVybiBQVFJfRVJSKHB4cGNzKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogVGhlIFhQQ1MgbWF5IGJlIGF0dGFjaGVkIHRvIGEgcG93ZXIgZG9tYWluIChlLmcuIFBEX1BJUEUpLiBUaGUgZG9tYWluCiYjNDM7CSAqIG11c3QgYmUgcG93ZXJlZCBvbiBiZWZvcmUgYW55IHJlZ2lzdGVyIGFjY2Vzcywgb3RoZXJ3aXNlIHRoZSBTb0Mgd2lsbAomIzQzOwkgKiB0cmlnZ2VyIGEgc3luY2hyb25vdXMgZXh0ZXJuYWwgYWJvcnQgKFNFcnJvcikuCiYjNDM7CSAqCiYjNDM7CSAqIEFjY2Vzc2luZyB0aGUgWFBDUyByZWdpc3RlcnMgYWxzbyByZXF1aXJlcyBhIFRYIGNsb2NrIGZyb20gdGhlIFNlckRlcywKJiM0MzsJICogd2hpY2ggaXMgbmVlZGVkIGZvciB0aGUgc29mdCByZXNldC4KJiM0MzsJICovCiYjNDM7CXJldCA9IHhwY3Nfcmtfc2VyZGVzX3BoeV9pbml0KHB4cGNzKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9uKHB4cGNzKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IHhwY3NfcmtfaW5pdF9yZXMocHhwY3MpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJcmV0ID0geHBjc19ya19pbml0X2NsayhweHBjcyk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXQgPSB4cGNzX3JrX2luaXRfYnVzKHB4cGNzKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB4cGNzX3JrX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQomIzQzO3sKJiM0MzsJLyoKJiM0MzsJICogRm9yY2UgdGhlIGRldmljZSBpbnRvIHN1c3BlbmQgc3RhdGUgdG8gZ2F0ZSB0aGUgQ1NSIGNsb2NrLiBUaGlzCiYjNDM7CSAqIHByZXZlbnRzIGNsb2NrIGxlYWthZ2UgYWZ0ZXIgZGV2bSByZXNvdXJjZXMgYXJlIHJlbGVhc2VkLgomIzQzOwkgKgomIzQzOwkgKiBUaGlzIGlzIHNhZmUgYmVjYXVzZToKJiM0MzsJICogICAxLiBUaGUgZGV2aWNlIGxpbmsgKERMX0ZMQUdfQVVUT1JFTU9WRV9DT05TVU1FUikgcHJldmVudHMgdW5iaW5kCiYjNDM7CSAqICAgICAgd2hpbGUgYW55IGNvbnN1bWVyIChNQUMpIGlzIHN0aWxsIGF0dGFjaGVkLgomIzQzOwkgKiAgIDIuIE5vIE1ESU8gYWNjZXNzIHdpbGwgb2NjdXIgYWZ0ZXIgdGhpcyBwb2ludCwgYXMgdGhlIE1BQyBkcml2ZXIKJiM0MzsJICogICAgICBoYXMgYWxyZWFkeSBiZWVuIHVuYm91bmQgKG9yIHdlIGFyZSBiZWluZyByZW1vdmVkIGJlY2F1c2Ugbm8KJiM0MzsJICogICAgICBjb25zdW1lciBleGlzdHMpLgomIzQzOwkgKi8KJiM0MzsJcG1fcnVudGltZV9mb3JjZV9zdXNwZW5kKCZhbXA7cGRldi0mZ3Q7ZGV2KTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgeHBjc19ya19vZl9pZHNbXSA9IHsKJiM0MzsJeyAuY29tcGF0aWJsZSA9ICYjMzQ7cm9ja2NoaXAscmszNTY4LXhwY3MmIzM0OyB9LAomIzQzOwl7IC8qIHNlbnRpbmVsICovIH0sCiYjNDM7fTsKJiM0MztNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB4cGNzX3JrX29mX2lkcyk7CiYjNDM7CiYjNDM7c3RydWN0IGR3X3hwY3MgKnhwY3NfcmtfY3JlYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9ub2RlICpucCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7CiYjNDM7CXN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25wOwomIzQzOwlzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7CiYjNDM7CXN0cnVjdCBkd194cGNzICp4cGNzOwomIzQzOwl1MzIgcG9ydDsKJiM0MzsKJiM0MzsJaWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKG5wKSkKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwomIzQzOwomIzQzOwlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICYjMzQ7cmVnJiMzNDssICZhbXA7cG9ydCkpCiYjNDM7CQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKJiM0MzsKJiM0MzsJaWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZSgoaW50KXBvcnQpKQomIzQzOwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CiYjNDM7CiYjNDM7CS8qIFRoZSBYUENTIHBkZXYgaXMgYXR0YWNoZWQgdG8gdGhlIHBhcmVudCBub2RlICovCiYjNDM7CXBjc19ucCA9IG9mX2dldF9wYXJlbnQobnApOwomIzQzOwlpZiAoIXBjc19ucCkKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwomIzQzOwomIzQzOwlpZiAoIW9mX2RldmljZV9pc19hdmFpbGFibGUocGNzX25wKSkgewomIzQzOwkJb2Zfbm9kZV9wdXQocGNzX25wKTsKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmICghb2ZfbWF0Y2hfbm9kZSh4cGNzX3JrX29mX2lkcywgcGNzX25wKSkgewomIzQzOwkJb2Zfbm9kZV9wdXQocGNzX25wKTsKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXBkZXYgPSBvZl9maW5kX2RldmljZV9ieV9ub2RlKHBjc19ucCk7CiYjNDM7CW9mX25vZGVfcHV0KHBjc19ucCk7CiYjNDM7CWlmICghcGRldikKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FUFJPQkVfREVGRVIpOwomIzQzOwomIzQzOwlkZXZpY2VfbG9jaygmYW1wO3BkZXYtJmd0O2Rldik7CiYjNDM7CXB4cGNzID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CiYjNDM7CWlmICghcHhwY3MgfHwgIXB4cGNzLSZndDtidXMpIHsKJiM0MzsJCWRldmljZV91bmxvY2soJmFtcDtwZGV2LSZndDtkZXYpOwomIzQzOwkJcHV0X2RldmljZSgmYW1wO3BkZXYtJmd0O2Rldik7CiYjNDM7CQlyZXR1cm4gRVJSX1BUUigtRVBST0JFX0RFRkVSKTsKJiM0MzsJfQomIzQzOwomIzQzOwl4cGNzID0geHBjc19jcmVhdGVfbWRpb2RldihweHBjcy0mZ3Q7YnVzLCAoaW50KXBvcnQpOwomIzQzOwlkZXZpY2VfdW5sb2NrKCZhbXA7cGRldi0mZ3Q7ZGV2KTsKJiM0MzsJaWYgKElTX0VSUih4cGNzKSkgewomIzQzOwkJcHV0X2RldmljZSgmYW1wO3BkZXYtJmd0O2Rldik7CiYjNDM7CQlyZXR1cm4geHBjczsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoIWRldmljZV9saW5rX2FkZChkZXYsICZhbXA7cGRldi0mZ3Q7ZGV2LCBETF9GTEFHX0FVVE9SRU1PVkVfQ09OU1VNRVIpKSB7CiYjNDM7CQl4cGNzX2Rlc3Ryb3koeHBjcyk7CiYjNDM7CQlwdXRfZGV2aWNlKCZhbXA7cGRldi0mZ3Q7ZGV2KTsKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwomIzQzOwl9CiYjNDM7CiYjNDM7CXB1dF9kZXZpY2UoJmFtcDtwZGV2LSZndDtkZXYpOwomIzQzOwlyZXR1cm4geHBjczsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoeHBjc19ya19jcmVhdGUpOwomIzQzOwomIzQzO3N0YXRpYyBpbnQgeHBjc19ya19wbV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiYjNDM7CiYjNDM7CWNsa19kaXNhYmxlX3VucHJlcGFyZShweHBjcy0mZ3Q7Y3NyX2Nsayk7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHhwY3NfcmtfcG1fcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiYjNDM7CiYjNDM7CXJldHVybiBjbGtfcHJlcGFyZV9lbmFibGUocHhwY3MtJmd0O2Nzcl9jbGspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgREVGSU5FX1JVTlRJTUVfREVWX1BNX09QUyh4cGNzX3JrX3BtX29wcywKJiM0MzsJCQkgICB4cGNzX3JrX3BtX3J1bnRpbWVfc3VzcGVuZCwKJiM0MzsJCQkgICB4cGNzX3JrX3BtX3J1bnRpbWVfcmVzdW1lLAomIzQzOwkJCSAgIE5VTEwpOwomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHhwY3NfcmtfZHJpdmVyID0gewomIzQzOwkucHJvYmUgPSB4cGNzX3JrX3Byb2JlLAomIzQzOwkucmVtb3ZlID0geHBjc19ya19yZW1vdmUsCiYjNDM7CS5kcml2ZXIgPSB7CiYjNDM7CQkubmFtZSA9ICYjMzQ7cmtfeHBjcy1kd3hwY3MmIzM0OywKJiM0MzsJCS5wbSA9IHBtX3B0cigmYW1wO3hwY3NfcmtfcG1fb3BzKSwKJiM0MzsJCS5vZl9tYXRjaF90YWJsZSA9IHhwY3Nfcmtfb2ZfaWRzLAomIzQzOwl9LAomIzQzO307CiYjNDM7bW9kdWxlX3BsYXRmb3JtX2RyaXZlcih4cGNzX3JrX2RyaXZlcik7CiYjNDM7CiYjNDM7TU9EVUxFX0RFU0NSSVBUSU9OKCYjMzQ7Um9ja2NoaXAgWFBDUyBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyJiMzNDspOwomIzQzO01PRFVMRV9BVVRIT1IoJiMzNDtDb2lhIFByYW50ICZsdDtjb2lhcHJhbnRAZ21haWwuY29tJmd0OyYjMzQ7KTsKJiM0MztNT0RVTEVfTElDRU5TRSgmIzM0O0dQTCYjMzQ7KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMKaW5kZXggMDMzN2UyYmNjMDEyNS4uNTBiOWNkZjk0ZmRhYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMKQEAgLTgxNiw5ICYjNDM7ODE2LDE0IEBAIHN0YXRpYyBpbnQgeHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWkoc3RydWN0IGR3X3hwY3MgKnhwY3MsCiAJaWYgKHJldCAmbHQ7IDApCiAJCXJldHVybiByZXQ7CiAKJiM0MzsJLyogQ2xlYXIgQ0wzNyBBTiBjb21wbGV0ZSBzdGF0dXMgKi8KJiM0MzsJcmV0ID0geHBjc193cml0ZSh4cGNzLCBNRElPX01NRF9WRU5EMiwgRFdfVlJfTUlJX0FOX0lOVFJfU1RTLCAwKTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwogCWlmIChuZWdfbW9kZSA9PSBQSFlMSU5LX1BDU19ORUdfSU5CQU5EX0VOQUJMRUQpCiAJCXJldCA9IHhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIsIE1JSV9CTUNSLAotCQkJCSBtZGlvX2N0cmwgfCBCTUNSX0FORU5BQkxFKTsKJiM0MzsJCQkJIG1kaW9fY3RybCB8IEJNQ1JfQU5FTkFCTEUgfCBCTUNSX0FOUkVTVEFSVCk7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtMTA5MywxMCAmIzQzOzEwOTgsMTUgQEAgc3RhdGljIGludCB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWkoc3RydWN0IGR3X3hwY3MgKnhwY3MsCiAJCXJldHVybiAwOwogCX0KIAotCS8qIENsZWFyIEFOIGNvbXBsZXRlIHN0YXR1cyBvciBpbnRlcnJ1cHQgKi8KLQlpZiAoc3RhdGUtJmd0O2FuX2NvbXBsZXRlKQomIzQzOwlpZiAoc3RhdGUtJmd0O2FuX2NvbXBsZXRlKSB7CiYjNDM7CQkvKiBDbGVhciBBTiBjb21wbGV0ZSBzdGF0dXMgb3IgaW50ZXJydXB0ICovCiAJCXhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIsIERXX1ZSX01JSV9BTl9JTlRSX1NUUywgMCk7CiAKJiM0MzsJCS8qIEluaXRpYXRlIHRoZSBuZXh0IHJvdW5kIG9mIEFOICovCiYjNDM7CQl4cGNzX21vZGlmeSh4cGNzLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsIEJNQ1JfQU5SRVNUQVJULAomIzQzOwkJCSAgICBCTUNSX0FOUkVTVEFSVCk7CiYjNDM7CX0KJiM0MzsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmMgYi9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuYwppbmRleCA3ODQzMzU2YTRkZDQ3Li45MTliYjk3YTRiMTgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuYwpAQCAtMTg2LDYgJiM0MzsxODYsNyBAQCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9ncmZjZmcgewogCXN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3hwY3NfcGh5X3JlYWR5OwogCXN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3BjaWUxbDBfc2VsOwogCXN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3BjaWUxbDFfc2VsOwomIzQzOwlzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9zZ21paV9tYWNfc2VsOwogCXN0cnVjdCBjb21icGh5X3JlZyB1M290ZzBfcG9ydF9lbjsKIAlzdHJ1Y3QgY29tYnBoeV9yZWcgdTNvdGcxX3BvcnRfZW47CiB9OwpAQCAtMjEyLDYgJiM0MzsyMTMsNyBAQCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9wcml2IHsKIAlib29sIGVuYWJsZV9zc2M7CiAJYm9vbCBleHRfcmVmY2xrOwogCXN0cnVjdCBjbGsgKnJlZmNsazsKJiM0MzsJdTMyIHNnbWlpX21hY19zZWw7CiB9OwogCiBzdGF0aWMgdm9pZCByb2NrY2hpcF9jb21icGh5X3VwZGF0ZWwoc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAqcHJpdiwKQEAgLTM3NSw2ICYjNDM7Mzc3LDkgQEAgc3RhdGljIGludCByb2NrY2hpcF9jb21icGh5X3BhcnNlX2R0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHkKIAogCXByaXYtJmd0O2V4dF9yZWZjbGsgPSBkZXZpY2VfcHJvcGVydHlfcHJlc2VudChkZXYsICYjMzQ7cm9ja2NoaXAsZXh0LXJlZmNsayYjMzQ7KTsKIAomIzQzOwlwcml2LSZndDtzZ21paV9tYWNfc2VsID0gMTsKJiM0MzsJZGV2aWNlX3Byb3BlcnR5X3JlYWRfdTMyKGRldiwgJiMzNDtyb2NrY2hpcCxzZ21paS1tYWMtc2VsJiMzNDssICZhbXA7cHJpdi0mZ3Q7c2dtaWlfbWFjX3NlbCk7CiYjNDM7CiAJcHJpdi0mZ3Q7cGh5X3JzdCA9IGRldm1fcmVzZXRfY29udHJvbF9nZXRfZXhjbHVzaXZlKGRldiwgJiMzNDtwaHkmIzM0Oyk7CiAJLyogZmFsbGJhY2sgdG8gb2xkIGJlaGF2aW91ciAqLwogCWlmIChQVFJfRVJSKHByaXYtJmd0O3BoeV9yc3QpID09IC1FTk9FTlQpCkBAIC04NzMsNiAmIzQzOzg3OCw4IEBAIHN0YXRpYyBpbnQgcmszNTY4X2NvbWJwaHlfY2ZnKHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgKnByaXYpCiAJCWJyZWFrOwogCiAJY2FzZSBQSFlfVFlQRV9TR01JSToKJiM0MzsJCXJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi0mZ3Q7cGlwZV9ncmYsICZhbXA7Y2ZnLSZndDtwaXBlX3NnbWlpX21hY19zZWwsCiYjNDM7CQkJCQlwcml2LSZndDtzZ21paV9tYWNfc2VsICZndDsgMCk7CiAJCXJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi0mZ3Q7cGlwZV9ncmYsICZhbXA7Y2ZnLSZndDtwaXBlX3hwY3NfcGh5X3JlYWR5LCB0cnVlKTsKIAkJcm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LSZndDtwaHlfZ3JmLCAmYW1wO2NmZy0mZ3Q7cGlwZV9waHltb2RlX3NlbCwgdHJ1ZSk7CiAJCXJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi0mZ3Q7cGh5X2dyZiwgJmFtcDtjZmctJmd0O3BpcGVfc2VsX3FzZ21paSwgdHJ1ZSk7CkBAIC05ODQsNiAmIzQzOzk5MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9ncmZjZmcgcmszNTY4X2NvbWJwaHlfZ3JmY2ZncyA9IHsKIAkuY29uM19mb3Jfc2F0YQkJPSB7IDB4MDAwYywgMTUsIDAsIDB4MDAsIDB4NDQwNyB9LAogCS8qIHBpcGUtZ3JmICovCiAJLnBpcGVfY29uMF9mb3Jfc2F0YQk9IHsgMHgwMDAwLCAxNSwgMCwgMHgwMCwgMHgyMjIwIH0sCiYjNDM7CS5waXBlX3NnbWlpX21hY19zZWwJPSB7IDB4MDA0MCwgMSwgMSwgMHgwMCwgMHgwMSB9LAogCS5waXBlX3hwY3NfcGh5X3JlYWR5CT0geyAweDAwNDAsIDIsIDIsIDB4MDAsIDB4MDEgfSwKIAkudTNvdGcwX3BvcnRfZW4JCT0geyAweDAxMDQsIDE1LCAwLCAweDAxODEsIDB4MTEwMCB9LAogCS51M290ZzFfcG9ydF9lbgkJPSB7IDB4MDE0NCwgMTUsIDAsIDB4MDE4MSwgMHgxMTAwIH0sCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oIGIvaW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4yODcyM2Q1YmQ3NWNjCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaApAQCAtMCwwICYjNDM7MSwxMSBAQAomIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCiYjNDM7I2lmbmRlZiBfX0xJTlVYX1BDU19YUENTX1JPQ0tDSElQX0gKJiM0MzsjZGVmaW5lIF9fTElOVVhfUENTX1hQQ1NfUk9DS0NISVBfSAomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9kZXZpY2UuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvb2YuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGNzL3Bjcy14cGNzLmgmZ3Q7CiYjNDM7CiYjNDM7c3RydWN0IGR3X3hwY3MgKnhwY3NfcmtfY3JlYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9ub2RlICpucCk7CiYjNDM7CiYjNDM7I2VuZGlmIC8qIF9fTElOVVhfUENTX1hQQ1NfUk9DS0NISVBfSCAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDYyOQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDEyOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBFdmFsdWF0aW9uOiBBIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGVjaWRlIGlmIHRoaXMgcGF0Y2ggc2VyaWVzIHdhcnJhbnRzIGZ1enppbmcuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGFjdHVhbGx5IGJlaW5nIGNoYW5nZWQuIFRoZSBkaWZmIHRvdWNoZXMgYSBmZXcga2V5IGFyZWFzOiBEZXZpY2UgVHJlZSBiaW5kaW5ncyBhbmQgZG9jdW1lbnRhdGlvbiwgdGhlIGBNQUlOVEFJTkVSU2AgZmlsZSwgc29tZSBEVFMgZmlsZXMgZm9yIHRoZSBSb2NrY2hpcCBSSzM1NjgsIGFuZCBhIHNpZ25pZmljYW50IGFtb3VudCBvZiBjb2RlIGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLCBzcGVjaWZpY2FsbHkgYXJvdW5kIEV0aGVybmV0IGRyaXZlcnMgYW5kIFBDUyAoUGh5c2ljYWwgQ29kaW5nIFN1YmxheWVyKSBkcml2ZXJzLgoKTG9va2luZyBhdCB0aGUgY29kZSwgaXQmIzM5O3MgY2xlYXIgdGhpcyBpcyBmb2N1c2VkIG9uIGJyaW5naW5nIHVwIFNHTUlJIHN1cHBvcnQgZm9yIFJvY2tjaGlwJiMzOTtzIERXTUFDLCBhbmQgaW50cm9kdWNpbmcgYSBuZXcgUm9ja2NoaXAgWFBDUyBwbGF0Zm9ybSBkcml2ZXIuIFRoZXJlIGFyZSBhbHNvIGNoYW5nZXMgdG8gSW50ZWwgRFdNQUMgYW5kIGEgZmV3IG90aGVyIHBsYXRmb3JtIGRyaXZlcnMgKFJlbmVzYXMsIFNvY2ZwZ2EpLiBUaGUgcGF0Y2ggYWxzbyBpbmNsdWRlcyByZWZhY3RvcmluZyBvZiBgc3RtbWFjX21kaW8uY2AgYW5kIG1vZGlmaWNhdGlvbnMgdG8gYHBjcy14cGNzLmNgLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBzaG91bGQgdGhpcyBiZSBmdXp6ZWQ/IExldCYjMzk7cyBjb25zaWRlciB0aGUgJiMzNDtXb3J0aEZ1enppbmcmIzM0OyBydWxlcy4gIEkgaW1tZWRpYXRlbHkgbmVlZCB0byBydWxlIG91dCBjaGFuZ2VzIHRoYXQgYXJlIHB1cmVseSBkZWNvcmF0aXZlLCBvciBhZmZlY3QgY29kZSB0aGF0JiMzOTtzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBJIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIChsaWtlIHRob3NlIHJlcXVpcmluZyBzcGVjaWZpYyBQQ0llIGNhcmRzKSBhbmQgZHJpdmVycyB0aGF0IGFyZSBvbmx5IGNvbmNlcm5lZCB3aXRoIHJlbW92YWwgb3Igc2h1dGRvd24gY2FsbGJhY2tzLgoKSGVyZSYjMzk7cyB0aGUgYnJlYWtkb3duIG9mIG15IHRob3VnaHRzOgoKMS4gICoqUm9ja2NoaXAgc3R1ZmY6KiogVGhlIGBwY3MteHBjcy1yay5jYCwgYHBoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jYCwgYW5kIGBkd21hYy1yay5jYCBkcml2ZXJzIGFyZSBhbGwgUm9ja2NoaXAgU29DIHBsYXRmb3JtIGRyaXZlcnMuIFRoZXNlICoqY2Fubm90KiogYmUgZGlyZWN0bHkgcnVuIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgd2hpY2ggZW11bGF0ZXMgeDg2XF82NCBvciBnZW5lcmljIEFSTTY0ICh2aXJ0IG1hY2hpbmVzKSwgYW5kIHNvIHRoZXNlIHNob3VsZCBiZSBleGNsdWRlZC4KMi4gICoqSW50ZWwgRFdNQUM6KiogYGR3bWFjLWludGVsLmNgIGlzIG1vcmUgaW50ZXJlc3RpbmcsIGJ1dCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIEludGVsIG1nYmUvZHdtYWMgUENJIGRldmljZSBkaXJlY3RseS4gVGhhdCYjMzk7cyBhIGJsb2NrZXIuCjMuICAqKk90aGVyIFBsYXRmb3JtIERyaXZlcnM6KiogUmVuZXNhcyBhbmQgU29jZnBnYSBkcml2ZXJzIChgZHdtYWMtcmVuZXNhcy1nYmV0aC5jYCwgYGR3bWFjLXJ6bjEuY2AsIGBkd21hYy1zb2NmcGdhLmNgKSBsaWtlbHkgYWxzbyBmYWxsIGludG8gdGhlIHNhbWUgY2F0ZWdvcnksIGJlaW5nIFNvQy1zcGVjaWZpYy4KNC4gICoqYHN0bW1hY19tZGlvLmNgIGFuZCBgcGNzLXhwY3MuY2A6KiogVGhlc2UgYXJlIHRoZSBjb3JlIHBpZWNlcyB0aGF0IGxvb2sgbW9yZSBnZW5lcmFsLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIFFFTVUsIG9yIGFueSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBJJiMzOTttIGZhbWlsaWFyIHdpdGgsICp1c2VzKiBgc3RtbWFjYCBvciBgcGNzLXhwY3NgLCBvciBpZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdGllZCB0byBwaHlzaWNhbCBTb0MgaGFyZHdhcmUuIFRoaXMgaXMgYSBwb2ludCB0byBjb25maXJtLiAgSSBuZWVkIHRvIGNoZWNrIGhvdyBgc3RtbWFjX3Bjc19zZXR1cGAsIGBzdG1tYWNfcGNzX2NsZWFuYCwgYHhwY3NfY29uZmlnX2FuZWdfYzM3X3NnbWlpYCwgYW5kIGB4cGNzX2dldF9zdGF0ZV9jMzdfc2dtaWlgIGFyZSBhY3R1YWxseSB1c2VkIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudC4KClRoZXJlZm9yZSwgbXkgbmV4dCBzdGVwIGlzIGEgZGVlcCBkaXZlIHdpdGggYGdyZXBgLiBJIG5lZWQgdG8gc2VhcmNoIHRoZSBRRU1VIHNvdXJjZSBhbmQgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBzdXBwb3J0ZWQgaGFyZHdhcmUgYW5kIGFzc29jaWF0ZWQgZHJpdmVycyB0aGF0IGFyZSB3b3J0aCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY18mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExNTc1IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW44aS1hODN0LWVtYWMueWFtbD0yNTU9ZXhhbXBsZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuOGktYTgzdC1lbWFjLnlhbWwtNDAyLSAgICAgICAgc25wcyxmaXhlZC1idXJzdDtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sOjQwMzogICAgICAgIHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNmdtYWMxX3N0bW1hY19heGlfc2V0dXBcdTAwM2U7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW44aS1hODN0LWVtYWMueWFtbC00MDQtXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sPTEzNz1leGFtcGxlczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwtMTU1LSAgICAgICAgc25wcyx0c287XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWw6MTU2OiAgICAgICAgc25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbC0xNTctXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWw6MTU4OiAgICAgICAgc3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sLTE1OS0gICAgICAgICAgICBzbnBzLGJsZW4gPSBcdTAwM2MwIDAgMCAwIDE2IDggNFx1MDAzZTtcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwtMTgxLSAgICAgICAgc25wcyx0c287XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWw6MTgyOiAgICAgICAgc25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cF9nbWFjMVx1MDAzZTtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbC0xODMtXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWw6MTg0OiAgICAgICAgc3RtbWFjX2F4aV9zZXR1cF9nbWFjMTogc3RtbWFjLWF4aS1jb25maWcge1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sLTE4NS0gICAgICAgICAgICBzbnBzLGJsZW4gPSBcdTAwM2MwIDAgMCAwIDE2IDggNFx1MDAzZTtcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbD01Nz1leGFtcGxlczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbC02Ni1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sOjY3OiAgICBzdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbC02OC0gICAgICAgIHNucHMsbHBpX2VuO1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sLTEyMC0gICAgICAgIHNucHMscGJsID0gXHUwMDNjMHg0XHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWw6MTIxOiAgICAgICAgc25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sLTEyMi0gICAgICAgIHNucHMsbXRsLXJ4LWNvbmZpZyA9IFx1MDAzY1x1MDAyNm10bF9yeF9zZXR1cFx1MDAzZTtcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnp2MmgtZ2JldGgueWFtbD0yNDk9ZXhhbXBsZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6djJoLWdiZXRoLnlhbWwtMjg1LSAgICAgICAgc25wcyxmb3JjZV90aHJlc2hfZG1hX21vZGU7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnp2MmgtZ2JldGgueWFtbDoyODY6ICAgICAgICBzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6djJoLWdiZXRoLnlhbWwtMjg3LSAgICAgICAgc25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X3NldHVwXHUwMDNlO1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sLTI5Mi1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sOjI5MzogICAgICAgIHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sLTI5NC0gICAgICAgICAgICBzbnBzLGxwaV9lbjtcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdtYWMueWFtbD02NTQ9ZXhhbXBsZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWwtNjcwLSAgICAgICAgY2xvY2stbmFtZXMgPSBcJiMzNDtzdG1tYWNldGhcJiMzNDs7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdtYWMueWFtbDo2NzE6ICAgICAgICBzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWwtNjcyLSAgICAgICAgc25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X3NldHVwXHUwMDNlO1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc25wcyxkd21hYy55YW1sLTY3NC1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc25wcyxkd21hYy55YW1sOjY3NTogICAgICAgIHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc25wcyxkd21hYy55YW1sLTY3Ni0gICAgICAgICAgICBzbnBzLHdyX29zcl9sbXQgPSBcdTAwM2MweGZcdTAwM2U7XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sPTY3PWV4YW1wbGVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbC05MC0gICAgICBzbnBzLG10bC10eC1jb25maWcgPSBcdTAwM2NcdTAwMjZnbWFjMF9tdGxfdHhfc2V0dXBcdTAwM2U7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWw6OTE6ICAgICAgc25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2Z21hYzBfc3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbC05Mi1cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWwtMTA4LVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sOjEwOTogICAgICBnbWFjMF9zdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWwtMTEwLSAgICAgICAgc25wcyxibGVuID0gXHUwMDNjMTYgOCA0IDAgMCAwIDBcdTAwM2U7XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWw9OTU9ZXhhbXBsZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWwtMTE4LSAgICAgIHNucHMsbXRsLXR4LWNvbmZpZyA9IFx1MDAzY1x1MDAyNmdtYWMwX210bF90eF9zZXR1cFx1MDAzZTtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sOjExOTogICAgICBzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZnbWFjMF9zdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWwtMTIwLVxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sLTE0NS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sOjE0NjogICAgICBnbWFjMF9zdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxzZzIwNDQtZHdtYWMueWFtbC0xNDctICAgICAgICBzbnBzLGJsZW4gPSBcdTAwM2MxNiA4IDQgMCAwIDAgMFx1MDAzZTtcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sPTE1ND1leGFtcGxlczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sLTE3NS0gICAgICAgIHNucHMsZm9yY2VfdGhyZXNoX2RtYV9tb2RlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbDoxNzY6ICAgICAgICBzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbC0xNzctICAgICAgICBzbnBzLGVuLXR4LWxwaS1jbG9ja2dhdGluZztcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sLTE5Mi1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWw6MTkzOiAgICAgICAgc3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbC0xOTQtICAgICAgICAgICAgc25wcyxscGlfZW47XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG0zMi1kd21hYy55YW1sPTE2Mj1leGFtcGxlczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWwtMTg0LSAgICAgICAgc25wcyxwYmwgPSBcdTAwM2MyXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG0zMi1kd21hYy55YW1sOjE4NTogICAgICAgIHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNnN0bW1hY19heGlfY29uZmlnXzBcdTAwM2U7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWwtMTg2LSAgICAgICAgc25wcyx0c287XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90aGVhZCx0aDE1MjAtZ21hYy55YW1sPTg3PWV4YW1wbGVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGhlYWQsdGgxNTIwLWdtYWMueWFtbC05OC0gICAgICAgIHNucHMsZml4ZWQtYnVyc3Q7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3RoZWFkLHRoMTUyMC1nbWFjLnlhbWw6OTk6ICAgICAgICBzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90aGVhZCx0aDE1MjAtZ21hYy55YW1sLTEwMC0gICAgICAgIHNucHMscGJsID0gXHUwMDNjMzJcdTAwM2U7XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdD0xMDc9c3ludGF4IChlLmcuIGZvciBQQ0kgbW9kdWxlKTo6XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTEwOC1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6MTA5OiAgICBtb2Rwcm9iZSBzdG1tYWNfcGNpIFtcdTAwM2NvcHRpb25cdTAwM2U9XHUwMDNjVkFMMVx1MDAzZSxcdTAwM2NWQUwyXHUwMDNlLC4uLl1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtMTEwLVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9MzUyPWZpbmRzOjpcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTM2MS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6MzYyOiAgICAgICAgc3RydWN0IHN0bW1hY19tZGlvX2J1c19kYXRhICptZGlvX2J1c19kYXRhO1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC0zNjMtXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC0zNjUtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0OjM2NjogICAgICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NmZyAqZG1hX2NmZztcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtMzY3LVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9Mzg3PUpVTUJPIGZyYW1lczo6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC00MzAtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0OjQzMTogICAgICAgIHN0cnVjdCBzdG1tYWNfcnhxX2NmZyByeF9xdWV1ZXNfY2ZnW01UTF9NQVhfUlhfUVVFVUVTXTtcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6NDMyOiAgICAgICAgc3RydWN0IHN0bW1hY190eHFfY2ZnIHR4X3F1ZXVlc19jZmdbTVRMX01BWF9UWF9RVUVVRVNdO1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC00MzMtXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdD00NDg9aXMgdXNlZCB0byBjb25maWd1cmUgdGhlIEFNQkEgYnJpZGdlIHRvIGdlbmVyYXRlIG1vcmUgZWZmaWNpZW50IFNUQnVzIHRyYWZmaWM6OlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtNDU0LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDo0NTU6ICAgICAgICBzdHJ1Y3QgY2xrICpzdG1tYWNfY2xrO1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC00NTYtICAgICAgICBzdHJ1Y3QgY2xrICpwY2xrO1xuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtNDYzLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDo0NjQ6ICAgICAgICBzdHJ1Y3QgcmVzZXRfY29udHJvbCAqc3RtbWFjX3JzdDtcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtNDY1LVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtNDY3LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDo0Njg6ICAgICAgICBzdHJ1Y3Qgc3RtbWFjX2F4aSAqYXhpO1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC00NjktXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdD01MDI9Rm9yIE1ESU8gYnVzIGRhdGEsIHdlIGhhdmU6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC01MDUtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0OjUwNjogICAgc3RydWN0IHN0bW1hY19tZGlvX2J1c19kYXRhIHtcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtNTA3LVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9NTI4PUZvciBETUEgZW5naW5lIGNvbmZpZ3VyYXRpb24sIHdlIGhhdmU6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC01MzEtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0OjUzMjogICAgc3RydWN0IHN0bW1hY19kbWFfY2ZnIHtcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtNTMzLVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9NTY0PUZvciBETUEgQVhJIHBhcmFtZXRlcnMsIHdlIGhhdmU6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC01NjctXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0OjU2ODogICAgc3RydWN0IHN0bW1hY19heGkge1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC01NjktXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdD02MDE9Rm9yIHRoZSBSWCBRdWV1ZXMgY29uZmlndXJhdGlvbiwgd2UgaGF2ZTpcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTYwNC1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6NjA1OiAgICBzdHJ1Y3Qgc3RtbWFjX3J4cV9jZmcge1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC02MDYtXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdD02Mjg9Rm9yIHRoZSBUWCBRdWV1ZXMgY29uZmlndXJhdGlvbiwgd2UgaGF2ZTpcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTYzMS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6NjMyOiAgICBzdHJ1Y3Qgc3RtbWFjX3R4cV9jZmcge1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC02MzMtXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvYXhpcy9hcnRwZWM2LmR0c2k9Mjg3PVx0XHRldGhlcm5ldDogZXRoZXJuZXRAZjgwMTAwMDAge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2F4aXMvYXJ0cGVjNi5kdHNpLTI5Ni1cbmFyY2gvYXJtL2Jvb3QvZHRzL2F4aXMvYXJ0cGVjNi5kdHNpOjI5NzpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm0vYm9vdC9kdHMvYXhpcy9hcnRwZWM2LmR0c2ktMjk4LVx0XHRcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFx1MDAzY1x1MDAyNm10bF9yeF9zZXR1cFx1MDAzZTtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9heGlzL2FydHBlYzYuZHRzaS0zMDctXG5hcmNoL2FybS9ib290L2R0cy9heGlzL2FydHBlYzYuZHRzaTozMDg6XHRcdFx0c3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xuYXJjaC9hcm0vYm9vdC9kdHMvYXhpcy9hcnRwZWM2LmR0c2ktMzA5LVx0XHRcdFx0c25wcyx3cl9vc3JfbG10ID0gXHUwMDNjMVx1MDAzZTtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC5kdHNpPTMyNT1cdFx0c2NtIHtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC5kdHNpLTMyOS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2k6MzMwOlx0c3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaS0zMzEtXHRcdHNucHMsd3Jfb3NyX2xtdCA9IFx1MDAzYzdcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaT0xMjkxPVx0XHRnbWFjMDogZXRoZXJuZXRAMzcwMDAwMDAge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2ktMTI5Ny1cbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2k6MTI5ODpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaS0xMjk5LVx0XHRcdHNucHMscGJsID0gXHUwMDNjMzJcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaT0xMzE1PVx0XHRnbWFjMTogZXRoZXJuZXRAMzcyMDAwMDAge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2ktMTMyMS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2k6MTMyMjpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaS0xMzIzLVx0XHRcdHNucHMscGJsID0gXHUwMDNjMzJcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaT0xMzM5PVx0XHRnbWFjMjogZXRoZXJuZXRAMzc0MDAwMDAge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2ktMTM0NS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2k6MTM0NjpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaS0xMzQ3LVx0XHRcdHNucHMscGJsID0gXHUwMDNjMzJcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaT0xMzYzPVx0XHRnbWFjMzogZXRoZXJuZXRAMzc2MDAwMDAge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2ktMTM2OS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2k6MTM3MDpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaS0xMzcxLVx0XHRcdHNucHMscGJsID0gXHUwMDNjMzJcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcnYxMTI2LmR0c2k9NjMzPVx0Z21hYzogZXRoZXJuZXRAZmZjNDAwMDAge1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3J2MTEyNi5kdHNpLTY1My1cbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3J2MTEyNi5kdHNpOjY1NDpcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3J2MTEyNi5kdHNpLTY1NS1cdFx0c25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X3NldHVwXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3J2MTEyNi5kdHNpPTY1OT1cdFx0bWRpbzogbWRpbyB7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcnYxMTI2LmR0c2ktNjY0LVxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcnYxMTI2LmR0c2k6NjY1Olx0XHRzdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9ydjExMjYuZHRzaS02NjYtXHRcdFx0c25wcyx3cl9vc3JfbG10ID0gXHUwMDNjNFx1MDAzZTtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMxLmR0c2k9MTczMD1cdFx0XHRldGhlcm5ldDE6IGV0aGVybmV0QDU4MDBhMDAwIHtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMxLmR0c2ktMTc1MS1cdFx0XHRcdHNucHMscGJsID0gXHUwMDNjMlx1MDAzZTtcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzEuZHRzaToxNzUyOlx0XHRcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9jb25maWdfMVx1MDAzZTtcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzEuZHRzaS0xNzUzLVx0XHRcdFx0c25wcyx0c287XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzMS5kdHNpLTE3NTgtXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMxLmR0c2k6MTc1OTpcdFx0XHRcdHN0bW1hY19heGlfY29uZmlnXzE6IHN0bW1hYy1heGktY29uZmlnIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzEuZHRzaS0xNzYwLVx0XHRcdFx0XHRzbnBzLGJsZW4gPSBcdTAwM2MwIDAgMCAwIDE2IDggNFx1MDAzZTtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMzLmR0c2k9NzQ9XHRldGhlcm5ldDI6IGV0aGVybmV0QDU4MDBlMDAwIHtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMzLmR0c2ktOTQtXHRcdHNucHMscGJsID0gXHUwMDNjMlx1MDAzZTtcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzMuZHRzaTo5NTpcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9jb25maWdfMlx1MDAzZTtcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzMuZHRzaS05Ni1cdFx0c25wcyx0c287XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzMy5kdHNpLTEwMS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzMuZHRzaToxMDI6XHRcdHN0bW1hY19heGlfY29uZmlnXzI6IHN0bW1hYy1heGktY29uZmlnIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzMuZHRzaS0xMDMtXHRcdFx0c25wcyxibGVuID0gXHUwMDNjMCAwIDAgMCAxNiA4IDRcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MS5kdHNpPTE5NjI9XHRcdFx0ZXRoZXJuZXQwOiBldGhlcm5ldEA1ODAwYTAwMCB7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MS5kdHNpLTE5ODItXHRcdFx0XHRzbnBzLHBibCA9IFx1MDAzYzJcdTAwM2U7XG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxLmR0c2k6MTk4MzpcdFx0XHRcdHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNnN0bW1hY19heGlfY29uZmlnXzBcdTAwM2U7XG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxLmR0c2ktMTk4NC1cdFx0XHRcdHNucHMsdHNvO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxNTEuZHRzaS0xOTg3LVxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MS5kdHNpOjE5ODg6XHRcdFx0XHRzdG1tYWNfYXhpX2NvbmZpZ18wOiBzdG1tYWMtYXhpLWNvbmZpZyB7XG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxLmR0c2ktMTk4OS1cdFx0XHRcdFx0c25wcyx3cl9vc3JfbG10ID0gXHUwMDNjMHg3XHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvYWxsd2lubmVyL3N1bjU1aS1hNTIzLmR0c2k9ODU2PVx0XHRnbWFjMTogZXRoZXJuZXRANDUxMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9hbGx3aW5uZXIvc3VuNTVpLWE1MjMuZHRzaS04NzAtXHRcdFx0c25wcyxmaXhlZC1idXJzdDtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYWxsd2lubmVyL3N1bjU1aS1hNTIzLmR0c2k6ODcxOlx0XHRcdHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNmdtYWMxX3N0bW1hY19heGlfc2V0dXBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FsbHdpbm5lci9zdW41NWktYTUyMy5kdHNpLTg3Mi1cdFx0XHRzbnBzLG10bC1yeC1jb25maWcgPSBcdTAwM2NcdTAwMjZnbWFjMV9tdGxfcnhfc2V0dXBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9hbGx3aW5uZXIvc3VuNTVpLWE1MjMuZHRzaT04ODI9XHRcdFx0Z21hYzFfbXRsX3J4X3NldHVwOiByeC1xdWV1ZXMtY29uZmlnIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FsbHdpbm5lci9zdW41NWktYTUyMy5kdHNpLTg4Ny1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvYWxsd2lubmVyL3N1bjU1aS1hNTIzLmR0c2k6ODg4Olx0XHRcdGdtYWMxX3N0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYWxsd2lubmVyL3N1bjU1aS1hNTIzLmR0c2ktODg5LVx0XHRcdFx0c25wcyx3cl9vc3JfbG10ID0gXHUwMDNjMHhmXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2k9NTU1PVx0XHRnbWFjMDogZXRoZXJuZXRAMTA4MTAwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2ktNjAyLVx0XHRcdHNucHMscGVyZmVjdC1maWx0ZXItZW50cmllcyA9IFx1MDAzYzY0XHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaTo2MDM6XHRcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9lbWFjMF9zZXR1cFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2ktNjA0LVx0XHRcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFx1MDAzY1x1MDAyNm10bF9yeF9lbWFjMF9zZXR1cFx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpLTYxMy1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2k6NjE0Olx0XHRcdHN0bW1hY19heGlfZW1hYzBfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2ktNjE1LVx0XHRcdFx0c25wcyx3cl9vc3JfbG10ID0gXHUwMDNjMzFcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaT03MDE9XHRcdGdtYWMxOiBldGhlcm5ldEAxMDgyMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaS03NDgtXHRcdFx0c25wcyxwZXJmZWN0LWZpbHRlci1lbnRyaWVzID0gXHUwMDNjNjRcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpOjc0OTpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX2VtYWMxX3NldHVwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaS03NTAtXHRcdFx0c25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X2VtYWMxX3NldHVwXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2ktNzU5LVxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaTo3NjA6XHRcdFx0c3RtbWFjX2F4aV9lbWFjMV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaS03NjEtXHRcdFx0XHRzbnBzLHdyX29zcl9sbXQgPSBcdTAwM2MzMVx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpPTg0Nz1cdFx0Z21hYzI6IGV0aGVybmV0QDEwODMwMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpLTg5NC1cdFx0XHRzbnBzLHBlcmZlY3QtZmlsdGVyLWVudHJpZXMgPSBcdTAwM2M2NFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2k6ODk1Olx0XHRcdHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNnN0bW1hY19heGlfZW1hYzJfc2V0dXBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpLTg5Ni1cdFx0XHRzbnBzLG10bC1yeC1jb25maWcgPSBcdTAwM2NcdTAwMjZtdGxfcnhfZW1hYzJfc2V0dXBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaS05MDUtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpOjkwNjpcdFx0XHRzdG1tYWNfYXhpX2VtYWMyX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpLTkwNy1cdFx0XHRcdHNucHMsd3Jfb3NyX2xtdCA9IFx1MDAzYzMxXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQyNzEyZS5kdHNpPTY4MT1cdHVhcnQ0OiBzZXJpYWxAMTEwMTkwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQyNzEyZS5kdHNpLTY5My1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQyNzEyZS5kdHNpOjY5NDpcdHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQyNzEyZS5kdHNpLTY5NS1cdFx0c25wcyx3cl9vc3JfbG10ID0gXHUwMDNjMHg3XHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQyNzEyZS5kdHNpPTczMD1cdGV0aDogZXRoZXJuZXRAMTEwMWMwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQyNzEyZS5kdHNpLTc1My1cdFx0bWVkaWF0ZWsscGVyaWNmZyA9IFx1MDAzY1x1MDAyNnBlcmljZmdcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210MjcxMmUuZHRzaTo3NTQ6XHRcdHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNnN0bW1hY19heGlfc2V0dXBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210MjcxMmUuZHRzaS03NTUtXHRcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFx1MDAzY1x1MDAyNm10bF9yeF9zZXR1cFx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE4OC5kdHNpPTE3MzY9XHRcdGV0aDogZXRoZXJuZXRAMTEwMjEwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTg4LmR0c2ktMTc1Ny1cdFx0XHRtZWRpYXRlayxwZXJpY2ZnID0gXHUwMDNjXHUwMDI2aW5mcmFjZmdfYW9cdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE4OC5kdHNpOjE3NTg6XHRcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTg4LmR0c2ktMTc1OS1cdFx0XHRzbnBzLG10bC1yeC1jb25maWcgPSBcdTAwM2NcdTAwMjZtdGxfcnhfc2V0dXBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxODguZHRzaT0xNzY2PVx0XHRcdGV0aF9tZGlvOiBtZGlvIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE4OC5kdHNpLTE3NzEtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE4OC5kdHNpOjE3NzI6XHRcdFx0c3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxODguZHRzaS0xNzczLVx0XHRcdFx0c25wcyxibGVuID0gXHUwMDNjMCAwIDAgMCAxNiA4IDRcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxOTUuZHRzaT0xMzAxPVx0XHRldGg6IGV0aGVybmV0QDExMDIxMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE5NS5kdHNpLTEzMjUtXHRcdFx0bWVkaWF0ZWsscGVyaWNmZyA9IFx1MDAzY1x1MDAyNmluZnJhY2ZnX2FvXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxOTUuZHRzaToxMzI2Olx0XHRcdHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNnN0bW1hY19heGlfc2V0dXBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE5NS5kdHNpLTEzMjctXHRcdFx0c25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X3NldHVwXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTk1LmR0c2k9MTMzND1cdFx0XHRtZGlvIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE5NS5kdHNpLTEzMzktXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE5NS5kdHNpOjEzNDA6XHRcdFx0c3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxOTUuZHRzaS0xMzQxLVx0XHRcdFx0c25wcyx3cl9vc3JfbG10ID0gXHUwMDNjMHg3XHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOGcwNDYuZHRzaT03NzA9XHRcdGV0aDA6IGV0aGVybmV0QDExYzMwMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDhnMDQ2LmR0c2ktODE0LVx0XHRcdHNucHMsZm9yY2VfdGhyZXNoX2RtYV9tb2RlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA4ZzA0Ni5kdHNpOjgxNTpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA4ZzA0Ni5kdHNpLTgxNi1cdFx0XHRzbnBzLG10bC1yeC1jb25maWcgPSBcdTAwM2NcdTAwMjZtdGxfcnhfc2V0dXAwXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOGcwNDYuZHRzaT04ODc9XHRcdGV0aDE6IGV0aGVybmV0QDExYzQwMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDhnMDQ2LmR0c2ktOTMxLVx0XHRcdHNucHMsZm9yY2VfdGhyZXNoX2RtYV9tb2RlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA4ZzA0Ni5kdHNpOjkzMjpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA4ZzA0Ni5kdHNpLTkzMy1cdFx0XHRzbnBzLG10bC1yeC1jb25maWcgPSBcdTAwM2NcdTAwMjZtdGxfcnhfc2V0dXAxXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOGcwNDYuZHRzaT0xMDMyPVx0XHR3ZHQwOiB3YXRjaGRvZ0AxMjgwMDgwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA4ZzA0Ni5kdHNpLTEwNDYtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDhnMDQ2LmR0c2k6MTA0NzpcdHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOGcwNDYuZHRzaS0xMDQ4LVx0XHRzbnBzLGxwaV9lbjtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2k9MTgzOT1cdFx0ZXRoMDogZXRoZXJuZXRAMTVjMzAwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNDcuZHRzaS0xODcxLVx0XHRcdHNucHMsZm9yY2Vfc2ZfZG1hX21vZGU7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2k6MTg3MjpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA0Ny5kdHNpLTE4NzMtXHRcdFx0c25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X3NldHVwMFx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2k9MTkzOT1cdFx0ZXRoMTogZXRoZXJuZXRAMTVjNDAwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNDcuZHRzaS0xOTcxLVx0XHRcdHNucHMsZm9yY2Vfc2ZfZG1hX21vZGU7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2k6MTk3MjpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA0Ny5kdHNpLTE5NzMtXHRcdFx0c25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X3NldHVwMVx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2k9MjE0Nj1cdFx0dnNwZDE6IHZzcEAxNjRiMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA0Ny5kdHNpLTIxNjAtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2k6MjE2MTpcdHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNDcuZHRzaS0yMTYyLVx0XHRzbnBzLGxwaV9lbjtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2k9MTUxMD1cdFx0ZXRoMDogZXRoZXJuZXRAMTVjMzAwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTYuZHRzaS0xNTQzLVx0XHRcdHNucHMsZm9yY2VfdGhyZXNoX2RtYV9tb2RlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ni5kdHNpOjE1NDQ6XHRcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTYuZHRzaS0xNTQ1LVx0XHRcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFx1MDAzY1x1MDAyNm10bF9yeF9zZXR1cDBcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ni5kdHNpPTE2MTE9XHRcdGV0aDE6IGV0aGVybmV0QDE1YzQwMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2ktMTY0NC1cdFx0XHRzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTYuZHRzaToxNjQ1Olx0XHRcdHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNnN0bW1hY19heGlfc2V0dXBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2ktMTY0Ni1cdFx0XHRzbnBzLG10bC1yeC1jb25maWcgPSBcdTAwM2NcdTAwMjZtdGxfcnhfc2V0dXAxXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTYuZHRzaT0xNzg4PVx0XHR2c3BkOiB2c3BAMTY0ODAwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTYuZHRzaS0xODAxLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ni5kdHNpOjE4MDI6XHRzdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2ktMTgwMy1cdFx0c25wcyxscGlfZW47XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpPTE2NDA9XHRcdGV0aDA6IGV0aGVybmV0QDE1YzMwMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU3LmR0c2ktMTY3My1cdFx0XHRzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTcuZHRzaToxNjc0Olx0XHRcdHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNnN0bW1hY19heGlfc2V0dXBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU3LmR0c2ktMTY3NS1cdFx0XHRzbnBzLG10bC1yeC1jb25maWcgPSBcdTAwM2NcdTAwMjZtdGxfcnhfc2V0dXAwXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTcuZHRzaT0xNzQxPVx0XHRldGgxOiBldGhlcm5ldEAxNWM0MDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpLTE3NzQtXHRcdFx0c25wcyxmb3JjZV90aHJlc2hfZG1hX21vZGU7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU3LmR0c2k6MTc3NTpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpLTE3NzYtXHRcdFx0c25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X3NldHVwMVx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU3LmR0c2k9MTkxOD1cdFx0dnNwZDogdnNwQDE2NDgwMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU3LmR0c2ktMTkzMS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTcuZHRzaToxOTMyOlx0c3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpLTE5MzMtXHRcdHNucHMsbHBpX2VuO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaT01MzQ9XHRcdGdtYWMwOiBldGhlcm5ldEA4MDEwMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA3Ny5kdHNpLTU3Ni1cdFx0XHRzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaTo1Nzc6XHRcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaS01NzgtXHRcdFx0c25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X3NldHVwMFx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDc3LmR0c2k9NjgwPVx0XHRnbWFjMTogZXRoZXJuZXRAOTIwMDAwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaS03MjItXHRcdFx0c25wcyxmb3JjZV90aHJlc2hfZG1hX21vZGU7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDc3LmR0c2k6NzIzOlx0XHRcdHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNnN0bW1hY19heGlfc2V0dXBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDc3LmR0c2ktNzI0LVx0XHRcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFx1MDAzY1x1MDAyNm10bF9yeF9zZXR1cDFcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA3Ny5kdHNpPTgyNj1cdFx0Z21hYzI6IGV0aGVybmV0QDkyMDEwMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDc3LmR0c2ktODY4LVx0XHRcdHNucHMsZm9yY2VfdGhyZXNoX2RtYV9tb2RlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA3Ny5kdHNpOjg2OTpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA3Ny5kdHNpLTg3MC1cdFx0XHRzbnBzLG10bC1yeC1jb25maWcgPSBcdTAwM2NcdTAwMjZtdGxfcnhfc2V0dXAyXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaT0xMzcyPVx0XHRcdHNkaGkxX3ZxbW1jOiB2cW1tYy1yZWd1bGF0b3Ige1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaS0xMzgwLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA3Ny5kdHNpOjEzODE6XHRzdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDc3LmR0c2ktMTM4Mi1cdFx0c25wcyxscGlfZW47XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpPTUzND1cdFx0Z21hYzA6IGV0aGVybmV0QDgwMTAwMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDg3LmR0c2ktNTc3LVx0XHRcdHNucHMsZm9yY2VfdGhyZXNoX2RtYV9tb2RlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpOjU3ODpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpLTU3OS1cdFx0XHRzbnBzLG10bC1yeC1jb25maWcgPSBcdTAwM2NcdTAwMjZtdGxfcnhfc2V0dXAwXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwODcuZHRzaT02ODE9XHRcdGdtYWMxOiBldGhlcm5ldEA5MjAwMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpLTcyNC1cdFx0XHRzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwODcuZHRzaTo3MjU6XHRcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwODcuZHRzaS03MjYtXHRcdFx0c25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X3NldHVwMVx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDg3LmR0c2k9ODI4PVx0XHRnbWFjMjogZXRoZXJuZXRAOTIwMTAwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwODcuZHRzaS04NzEtXHRcdFx0c25wcyxmb3JjZV90aHJlc2hfZG1hX21vZGU7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDg3LmR0c2k6ODcyOlx0XHRcdHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNnN0bW1hY19heGlfc2V0dXBcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDg3LmR0c2ktODczLVx0XHRcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFx1MDAzY1x1MDAyNm10bF9yeF9zZXR1cDJcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpPTEzNzU9XHRcdFx0c2RoaTFfdnFtbWM6IHZxbW1jLXJlZ3VsYXRvciB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpLTEzODMtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDg3LmR0c2k6MTM4NDpcdHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwODcuZHRzaS0xMzg1LVx0XHRzbnBzLGxwaV9lbjtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzUyOC5kdHNpPTEwNTg9XHRcdGdtYWMwOiBldGhlcm5ldEBmZmJkMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaS0xMDc1LVx0XHRcdHJvY2tjaGlwLGdyZiA9IFx1MDAzY1x1MDAyNnZvX2dyZlx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTI4LmR0c2k6MTA3NjpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZnbWFjMF9zdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaS0xMDc3LVx0XHRcdHNucHMsbWl4ZWQtYnVyc3Q7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaT0xMDg4PVx0XHRcdFx0cm1paTBfcGh5OiBldGhlcm5ldC1waHlAMiB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaS0xMDk5LVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaToxMTAwOlx0XHRcdGdtYWMwX3N0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTI4LmR0c2ktMTEwMS1cdFx0XHRcdHNucHMsYmxlbiA9IFx1MDAzYzAgMCAwIDAgMTYgOCA0XHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTI4LmR0c2k9MTExNz1cdFx0Z21hYzE6IGV0aGVybmV0QGZmYmUwMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzUyOC5kdHNpLTExMzQtXHRcdFx0cm9ja2NoaXAsZ3JmID0gXHUwMDNjXHUwMDI2dnB1X2dyZlx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTI4LmR0c2k6MTEzNTpcdFx0XHRzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZnbWFjMV9zdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaS0xMTM2LVx0XHRcdHNucHMsbWl4ZWQtYnVyc3Q7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaT0xMTQyPVx0XHRcdG1kaW8xOiBtZGlvIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzUyOC5kdHNpLTExNDctXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzUyOC5kdHNpOjExNDg6XHRcdFx0Z21hYzFfc3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaS0xMTQ5LVx0XHRcdFx0c25wcyxibGVuID0gXHUwMDNjMCAwIDAgMCAxNiA4IDRcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaT0zMDY9XHRnbWFjMDogZXRoZXJuZXRAZmUyYTAwMDAge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2ktMzIyLVx0XHRyb2NrY2hpcCxncmYgPSBcdTAwM2NcdTAwMjZncmZcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpOjMyMzpcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2Z21hYzBfc3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2ktMzI0LVx0XHRzbnBzLG1peGVkLWJ1cnN0O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2k9MzMwPVx0XHRtZGlvMDogbWRpbyB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaS0zMzUtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpOjMzNjpcdFx0Z21hYzBfc3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaS0zMzctXHRcdFx0c25wcyxibGVuID0gXHUwMDNjMCAwIDAgMCAxNiA4IDRcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NngtYmFzZS5kdHNpPTcwMD1cdGdtYWMxOiBldGhlcm5ldEBmZTAxMDAwMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NngtYmFzZS5kdHNpLTcxNi1cdFx0cm9ja2NoaXAsZ3JmID0gXHUwMDNjXHUwMDI2Z3JmXHUwMDNlO1xuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NngtYmFzZS5kdHNpOjcxNzpcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2Z21hYzFfc3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTZ4LWJhc2UuZHRzaS03MTgtXHRcdHNucHMsbWl4ZWQtYnVyc3Q7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NngtYmFzZS5kdHNpPTcyND1cdFx0bWRpbzE6IG1kaW8ge1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTZ4LWJhc2UuZHRzaS03MjktXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2eC1iYXNlLmR0c2k6NzMwOlx0XHRnbWFjMV9zdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2eC1iYXNlLmR0c2ktNzMxLVx0XHRcdHNucHMsYmxlbiA9IFx1MDAzYzAgMCAwIDAgMTYgOCA0XHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTc2LmR0c2k9MTgzNT1cdFx0Z21hYzA6IGV0aGVybmV0QDJhMjIwMDAwIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU3Ni5kdHNpLTE4NTItXHRcdFx0cm9ja2NoaXAscGhwLWdyZiA9IFx1MDAzY1x1MDAyNmlvY19ncmZcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU3Ni5kdHNpOjE4NTM6XHRcdFx0c25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2Z21hYzBfc3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTc2LmR0c2ktMTg1NC1cdFx0XHRzbnBzLG1peGVkLWJ1cnN0O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTc2LmR0c2k9MTg2MD1cdFx0XHRtZGlvMDogbWRpbyB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NzYuZHRzaS0xODY1LVxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NzYuZHRzaToxODY2Olx0XHRcdGdtYWMwX3N0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTc2LmR0c2ktMTg2Ny1cdFx0XHRcdHNucHMsYmxlbiA9IFx1MDAzYzAgMCAwIDAgMTYgOCA0XHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTc2LmR0c2k9MTg4Mz1cdFx0Z21hYzE6IGV0aGVybmV0QDJhMjMwMDAwIHtcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzIxNgoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDM1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFFFTVUgYW5kIHRoZSBgc3RtbWFjYCBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBzdG1tYWNgIOKAkyByaWdodCwgdGhhdCYjMzk7cyB0aGUgZHJpdmVyIGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQ3MuIEl0JiMzOTtzIHViaXF1aXRvdXMgaW4gZW1iZWRkZWQgc3lzdGVtcywgdGhlIFJvY2tjaGlwcywgQWxsd2lubmVycywgU1RNMzJzLCBSZW5lc2FzLCBTb2NmcGdhcywgYW5kIGV2ZW4gSW50ZWwgU29Dcy4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBkb2VzIFFFTVUgZW11bGF0ZSB0aGlzIGRpcmVjdGx5LCBvciBpcyB0aGVyZSBhIHBhdGh3YXkgdG8gaXQgd2l0aGluIHRoZSBzdGFuZGFyZCBlbnZpcm9ubWVudHMsIHBhcnRpY3VsYXJseSB0aGUgb25lcyB0aGF0IHdvdWxkIGJlIHJlbGV2YW50IGZvciBteSB3b3JrIHdpdGggc3l6a2FsbGVyIG9uIHg4Nl82NCBvciBhcm02NCB2aXJ0IG1hY2hpbmVzPwoKTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gc2VlIHdoYXQgbmV0d29yayBkZXZpY2VzIFFFTVUgbmF0aXZlbHkgc3VwcG9ydHMuIEUxMDAwLCBlMTAwMGUsIGlnYiwgcnRsODEzOSwgdGhlIHVzdWFsIHN1c3BlY3RzLiBCdXQsIGhvbGQgb24uLi4gZG9lcyBpdCBhY3R1YWxseSBlbXVsYXRlIGBkd21hY2Agb3IgYHN0bW1hY2AgZGlyZWN0bHk/IEFoLCBvbiAqc3BlY2lmaWMqIEFSTSBib2FyZHMsIGxpa2UgU1RNMzIsIHRoZXJlJiMzOTtzIGBkd2NfZXRoX3Fvc2Agb3IgYHN0bTMyX2R3bWFjYCBvciBzaW1pbGFyLiBIb3dldmVyLCB0aGF0JiMzOTtzIG5vdCB3aGF0IEkmIzM5O20gdGFyZ2V0aW5nIGhlcmU7IHRob3NlIGFyZSBmb3Igc3BlY2lhbGl6ZWQgY2FzZXMuIFNvLCBmb3IgdGhlIGdlbmVyYWwgUUVNVSAvIEdDRSB4ODZfNjQgYW5kIGFybTY0IHZpcnR1YWwgbWFjaGluZXMsIHRoZXJlJiMzOTtzIG5vIGBzdG1tYWNgIGRldmljZSBwcmVzZW50LiBObyB2aXJ0dWFsIG9yIGVtdWxhdGVkIGBzdG1tYWNgIGF0IGFsbCBpbiB0aGUgc3RhbmRhcmQgYnVpbGRzLiBUaGF0JiMzOTtzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLgoKV2FpdCwgdGhlbiB3aGF0IGFib3V0IHRoZSBgZHdtYWMtaW50ZWwuY2AgZmlsZT8gTG9va2luZyBhdCB0aGF0LCBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuIFNvLCBteSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGF0IGluIG1vcmUgZGV0YWlsIGFuZCBzZWUgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlLiBMZXQmIzM5O3MgaW5zcGVjdCBgZHdtYWMtaW50ZWwuY2AgdG8gc2VlIGlmIHRoYXQgaGVscHMgbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TU9EVUxFX0RFVklDRV9UQUJMRVxcKHBjaSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xNDMxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDUwLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjE0NTE6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGludGVsX2V0aF9wY2lfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDUyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MTc3CgkJCQkJCQlvdXRwdXQ6IDE3MQoJCQkJCQkJdGhvdWdodHM6IDEzMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFBhdGNoOiBXb3J0aEZ1enppbmcgRXZhbHVhdGlvbioqCgpPa2F5LCBoZXJlJiMzOTtzIHRoZSBicmVha2Rvd24gb2YgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMgcGF0Y2guIEkmIzM5O20gbG9va2luZyBhdCBhIGNvbXBsZXggc2V0IG9mIGNoYW5nZXMuIEl0IHNlZW1zIGxpa2UgdGhlIHBhdGNoIHRvdWNoZXMgYSBidW5jaCBvZiBkcml2ZXJzOiBgZHdtYWMtaW50ZWwuY2AsIGBkd21hYy1yay5jYCwgYHBjcy14cGNzLXJrLmNgLCBgcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmNgLCBgZHdtYWMtcmVuZXNhcy1nYmV0aC5jYCwgYGR3bWFjLXJ6bjEuY2AsIGBkd21hYy1zb2NmcGdhLmNgLCBgc3RtbWFjX21kaW8uY2AsIGFuZCBgcGNzLXhwY3MuY2AuIFRoZXNlIGFyZSBhbGwgcmVsYXRlZCB0byBFdGhlcm5ldCwgc3BlY2lmaWNhbGx5IGRyaXZlcnMgZm9yIHZhcmlvdXMgaGFyZHdhcmU6IEludGVsIFBDSWUgZGV2aWNlcywgUm9ja2NoaXAgcGxhdGZvcm1zLCBSZW5lc2FzIFNvQ3MsIEludGVsL0FsdGVyYSBTb0MgcGxhdGZvcm1zLCBhbmQgc29tZSBjb21tb24gc3RtbWFjIGFuZCBwY3MgY29kZS4KCkZpcnN0LCBsZXQmIzM5O3MgZXN0YWJsaXNoIHRoZSBjb250ZXh0LCBieSBjYXJlZnVsbHkgcmV2aWV3aW5nIHRoZSBpbnN0cnVjdGlvbnMuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBjb2RlIGlzICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsgb3Igbm90LiBCYXNlZCBvbiB0aGUgcHJvbXB0LCBJIG5lZWQgdG8gbWFrZSBhIGp1ZGdlbWVudCBjYWxsLiBNb2RpZmljYXRpb25zIHRvIGRvY3VtZW50YXRpb24gb3IgS2NvbmZpZy9NYWtlZmlsZT8gQ2hlY2suIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXM/IENoZWNrLiBDb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG9uJiMzOTt0IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdz8gTm90IHlldC4gSW1wb3NzaWJsZSBjb2RlIHBhdGhzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEhtbS4uLiBsZXQmIzM5O3MgZXhwbG9yZS4gVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoL1NtYXJ0TklDL0dQVSBkcml2ZXJzIG5lZWRpbmcgcGh5c2ljYWwgUENJZSBoYXJkd2FyZT8gVGhhdCBpcyBhbHNvIGEgc3Ryb25nIHBvc3NpYmlsaXR5LiBGaW5hbGx5LCBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIHRoYXQgb25seSBleGVjdXRlIGR1cmluZyBob3QtdW5wbHVnIG9wZXJhdGlvbnM/IE5vdCBkaXJlY3RseSByZWxldmFudC4KCk5vdywgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlIHBhdGNoIGNvbXBvbmVudHM6IERldmljZSB0cmVlIGJpbmRpbmdzIGZvciBSb2NrY2hpcCBoYXJkd2FyZSAoYm90aCB4cGNzIGFuZCB0aGUgY29tYnBoeSksIE1BSU5UQUlORVJTLCBtb3JlIGRldmljZSB0cmVlIGZpbGVzLCBLY29uZmlnIGFuZCBNYWtlZmlsZSBjaGFuZ2VzLCBhbmQgdmFyaW91cyBSb2NrY2hpcC1zcGVjaWZpYyBkcml2ZXJzIChsaWtlIHRoZSB4cGNzIGRyaXZlciBhbmQgdGhlIEdNQUMgZHJpdmVyKS4gSSBhbHNvIHNlZSBSZW5lc2FzIGRyaXZlcnMsIEludGVsL0FsdGVyYSBTb0MgZHJpdmVycywgY29tbW9uIHN0bW1hYyBhbmQgcGNzIGNvZGUsIGFuZCBzb21lIEludGVsIFBDSSBkcml2ZXIuIFNvIGl0JiMzOTtzIGEgbWl4IG9mIGhhcmR3YXJlLXNwZWNpZmljIGFuZCBtb3JlIGdlbmVyYWwgc3RtbWFjL3BjcyBjb2RlLgoKVGhlIGNydXggb2YgdGhpcyBhbmFseXNpcyBpcyB3aGV0aGVyIHRoaXMgY29kZSBjYW4gYmUgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gSGVyZSYjMzk7cyB3aGVyZSBpdCBjbGlja3M6IE5vbmUgb2YgdGhpcyBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgYmVjYXVzZSB0aGVzZSBwbGF0Zm9ybXMgZG9uJiMzOTt0IGVtdWxhdGUgdGhlIHNwZWNpZmljIGhhcmR3YXJlIGJlaW5nIHRhcmdldGVkIGhlcmUuIE5vIHZpcnR1YWwgb3IgZW11bGF0ZWQgZGV2aWNlcyBleGlzdCBmb3Igc3RtbWFjIG9yIGR3X3hwY3MsIGFuZCB0aGUgbmV0d29yayBpbnRlcmZhY2VzIHByb3ZpZGVkIGluIFFFTVUgZG9uJiMzOTt0IHVzZSB0aGVzZSBkcml2ZXJzLiBOZWl0aGVyIHRoZSBSb2NrY2hpcCBTb0NzIG5vciB0aGUgSW50ZWwgRFdNQUMgUENJIGRldmljZXMgZXhpc3QgaW4gdGhpcyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gTm8gdmlydHVhbCBvciBlbXVsYXRlZCBkZXZpY2VzIGluc3RhbnRpYXRlIHN0bW1hYyBvciBkd194cGNzLgoKSSYjMzk7dmUgcmUtcmV2aWV3ZWQgZXZlcnl0aGluZyB0byBlbnN1cmUgdGhlIGFuYWx5c2lzIGlzIGNvbXBsZXRlLiBUaGVyZSBhcmUgbm8gY29yZSBuZXR3b3JraW5nIGludGVyZmFjZXMsIGFyY2gtZ2VuZXJpYyBkcml2ZXJzLCBvciBtb2NrIGludGVyZmFjZXMgYWZmZWN0ZWQuIFRoZSBjb2RlIHJlcXVpcmVzIHNwZWNpZmljLCBwaHlzaWNhbCBoYXJkd2FyZS4gSXQgc2VlbXMgbGlrZSB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHRoYXQgaXMgdW5yZWFjaGFibGUgaW4gUUVNVSBvciBHQ0UuCgpUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIHRoZSByaWdodCBjYWxsIGhlcmUuIFRoZSBwYXRjaCBtb2RpZmljYXRpb25zIGFyZSBjb25maW5lZCB0byBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIChSb2NrY2hpcCwgUmVuZXNhcywgSW50ZWwpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBzZXQtcmVzdWx0cyBwYXJhbWV0ZXJzIGFyZSBjbGVhcjogYFdvcnRoRnV6emluZzogZmFsc2VgLCBgRW5hYmxlQ29uZmlnczogW11gLCBgRm9jdXNTeW1ib2xzOiBbXWAsIHdpdGggYSBjb25jaXNlIHJlYXNvbmluZy4gTGV0JiMzOTtzIG1ha2UgdGhlIGNhbGwgdG8gYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwNToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBhZGRzIHN1cHBvcnQgZm9yIFJvY2tjaGlwIFJLMzU2OCBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IFBoeXNpY2FsIENvZGluZyBTdWJsYXllciAoWFBDUykgYW5kIFNHTUlJIGludGVyZmFjZSBjb25maWd1cmF0aW9uIGZvciB0aGUgUm9ja2NoaXAgRFdNQUMgZHJpdmVyLCBhbG9uZyB3aXRoIG1pbm9yIFBDUyBpbml0L2V4aXQgaGFuZGxpbmcgdXBkYXRlcyBmb3IgSW50ZWwgRFdNQUMgUENJIGFuZCBvdGhlciBTb0MgZ2x1ZSBkcml2ZXJzIChSZW5lc2FzLCBTb2NmcGdhKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVzdHJpY3RlZCB0byB2ZW5kb3Itc3BlY2lmaWMgU29DIHBsYXRmb3JtIGRyaXZlcnMgKFJvY2tjaGlwIFJLMzU2OCwgUmVuZXNhcywgU29jZnBnYSkgYW5kIEludGVsIERXTUFDIFBDSSBoYXJkd2FyZSwgbm9uZSBvZiB3aGljaCBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBjbG91ZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgY2Fubm90IGJlIGV4ZWN1dGVkIGR1cmluZyB2aXJ0dWFsaXplZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgc3VwcG9ydCBmb3IgUm9ja2NoaXAgUkszNTY4IFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUGh5c2ljYWwgQ29kaW5nIFN1YmxheWVyIChYUENTKSBhbmQgU0dNSUkgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBSb2NrY2hpcCBEV01BQyBkcml2ZXIsIGFsb25nIHdpdGggbWlub3IgUENTIGluaXQvZXhpdCBoYW5kbGluZyB1cGRhdGVzIGZvciBJbnRlbCBEV01BQyBQQ0kgYW5kIG90aGVyIFNvQyBnbHVlIGRyaXZlcnMgKFJlbmVzYXMsIFNvY2ZwZ2EpLiBUaGVzZSBjaGFuZ2VzIGFyZSByZXN0cmljdGVkIHRvIHZlbmRvci1zcGVjaWZpYyBTb0MgcGxhdGZvcm0gZHJpdmVycyAoUm9ja2NoaXAgUkszNTY4LCBSZW5lc2FzLCBTb2NmcGdhKSBhbmQgSW50ZWwgRFdNQUMgUENJIGhhcmR3YXJlLCBub25lIG9mIHdoaWNoIGFyZSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGVudmlyb25tZW50cyBsaWtlIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBjYW5ub3QgYmUgZXhlY3V0ZWQgZHVyaW5nIHZpcnR1YWxpemVkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA1OjEwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNToxMDoxMi4wNzg0NDc3NDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzU3Mzk2ODkwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBhZGRzIHN1cHBvcnQgZm9yIFJvY2tjaGlwIFJLMzU2OCBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IFBoeXNpY2FsIENvZGluZyBTdWJsYXllciAoWFBDUykgYW5kIFNHTUlJIGludGVyZmFjZSBjb25maWd1cmF0aW9uIGZvciB0aGUgUm9ja2NoaXAgRFdNQUMgZHJpdmVyLCBhbG9uZyB3aXRoIG1pbm9yIFBDUyBpbml0L2V4aXQgaGFuZGxpbmcgdXBkYXRlcyBmb3IgSW50ZWwgRFdNQUMgUENJIGFuZCBvdGhlciBTb0MgZ2x1ZSBkcml2ZXJzIChSZW5lc2FzLCBTb2NmcGdhKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVzdHJpY3RlZCB0byB2ZW5kb3Itc3BlY2lmaWMgU29DIHBsYXRmb3JtIGRyaXZlcnMgKFJvY2tjaGlwIFJLMzU2OCwgUmVuZXNhcywgU29jZnBnYSkgYW5kIEludGVsIERXTUFDIFBDSSBoYXJkd2FyZSwgbm9uZSBvZiB3aGljaCBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBjbG91ZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgY2Fubm90IGJlIGV4ZWN1dGVkIGR1cmluZyB2aXJ0dWFsaXplZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDU6MTA6MTIuMDc4NDUzOTM3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjQ2OTM5NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmNDZhOGY0Yzk5NTI5NjFiN2Y4Zjk2YWY4ZjJmNDQ2MWE4Zjk1OTcyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDIgMDU6MTA6MTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3Mvcm9ja2NoaXAtZHd4cGNzLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbFxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMDg1MmQwYmNiNjZhMlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbFxcbkBAIC0wLDAgKzEsMTEwIEBAXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlKVxcbislWUFNTCAxLjJcXG4rLS0tXFxuKyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbCNcXG4rJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuK1xcbit0aXRsZTogUm9ja2NoaXAgUkszNTY4IFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUENTXFxuK1xcbittYWludGFpbmVyczpcXG4rICAtIENvaWEgUHJhbnQgXFx1MDAzY2NvaWFwcmFudEBnbWFpbC5jb21cXHUwMDNlXFxuK1xcbitkZXNjcmlwdGlvbjogfFxcbisgIFJvY2tjaGlwIFJLMzU2OCBTb0MgaW50ZWdyYXRlcyBhIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUGh5c2ljYWxcXG4rICBDb2RpbmcgU3VibGF5ZXIgKFhQQ1MpLlxcbisgIFRoZSBQQ1MgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGJldHdlZW4gdGhlIE1lZGlhIEFjY2VzcyBDb250cm9sIChNQUMpXFxuKyAgYW5kIHRoZSBQaHlzaWNhbCBNZWRpdW0gQXR0YWNobWVudCAoUE1BKSBzdWJsYXllciB0aHJvdWdoIGEgTWVkaWFcXG4rICBJbmRlcGVuZGVudCBJbnRlcmZhY2UgKEdNSUkpLlxcbitcXG4rICBUaGUgWFBDUyBpcyBhY2Nlc3NlZCBvdmVyIHRoZSBBUEIzIGJ1cyBhbmQgaW50ZXJuYWxseSBjb25uZWN0ZWQgdG8gYVxcbisgIE5hbmVuZyBDb21ibyBTZXJEZXMgUEhZLlxcbisgIEl0IHN1cHBvcnRzIDEwMDBCQVNFLVgsIFNHTUlJIGFuZCBRU0dNSUkgbW9kZXMuXFxuK1xcbisgIFRoZSBibG9jayBjb250YWlucyBmb3VyIE1JSSBwb3J0cyB0aGF0IGNhbiBiZSBpbmRpdmlkdWFsbHkgZW5hYmxlZCBhbmRcXG4rICByb3V0ZWQgdG8gb25lIG9mIHRoZSBFdGhlcm5ldCBHTUFDIGNvbnRyb2xsZXJzIHZpYSB0aGUgcGNzLWhhbmRsZVxcbisgIHByb3BlcnR5IGluIHRoZSBNQUMgZGV2aWNlIHRyZWUgbm9kZS5cXG4rXFxuK3Byb3BlcnRpZXM6XFxuKyAgY29tcGF0aWJsZTpcXG4rICAgIGNvbnN0OiByb2NrY2hpcCxyazM1NjgteHBjc1xcbitcXG4rICByZWc6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4rICBcXFwiI2FkZHJlc3MtY2VsbHNcXFwiOlxcbisgICAgY29uc3Q6IDFcXG4rXFxuKyAgXFxcIiNzaXplLWNlbGxzXFxcIjpcXG4rICAgIGNvbnN0OiAwXFxuK1xcbisgIGNsb2NrczpcXG4rICAgIGl0ZW1zOlxcbisgICAgICAtIGRlc2NyaXB0aW9uOiBBUEIzIGJ1cyBpbnRlcmZhY2UgY2xvY2sgKGNsa19jc3JfaSksIHJlcXVpcmVkIGZvciByZWdpc3RlciBhY2Nlc3NcXG4rICAgICAgLSBkZXNjcmlwdGlvbjogRUVFIGNsb2NrIChjbGtfZWVlX2kpLCByZXF1aXJlZCBmb3IgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCBvcGVyYXRpb25cXG4rXFxuKyAgY2xvY2stbmFtZXM6XFxuKyAgICBpdGVtczpcXG4rICAgICAgLSBjb25zdDogY3NyXFxuKyAgICAgIC0gY29uc3Q6IGVlZVxcbitcXG4rICBwaHlzOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuKyAgcGh5LW5hbWVzOlxcbisgICAgY29uc3Q6IHNlcmRlc1xcbitcXG4rICBwb3dlci1kb21haW5zOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuK3BhdHRlcm5Qcm9wZXJ0aWVzOlxcbisgIFxcXCJecGNzLW1paUBbMC0zXSRcXFwiOlxcbisgICAgdHlwZTogb2JqZWN0XFxuKyAgICBkZXNjcmlwdGlvbjpcXG4rICAgICAgT25lIG9mIHRoZSBmb3VyIE1JSSBwb3J0cyBvZiB0aGUgWFBDUy4gVGhlIHBvcnQgaXMgbGlua2VkIHRvIGFuXFxuKyAgICAgIEV0aGVybmV0IE1BQyBjb250cm9sbGVyIHZpYSB0aGUgcGNzLWhhbmRsZSBwcm9wZXJ0eSBpbiB0aGUgTUFDJ3NcXG4rICAgICAgZGV2aWNlIHRyZWUgbm9kZS5cXG4rXFxuKyAgICBwcm9wZXJ0aWVzOlxcbisgICAgICByZWc6XFxuKyAgICAgICAgZGVzY3JpcHRpb246IE1JSSBwb3J0IG51bWJlci5cXG4rICAgICAgICBlbnVtOiBbMCwgMSwgMiwgM11cXG4rXFxuKyAgICByZXF1aXJlZDpcXG4rICAgICAgLSByZWdcXG4rXFxuKyAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2VcXG4rXFxuK3JlcXVpcmVkOlxcbisgIC0gY29tcGF0aWJsZVxcbisgIC0gcmVnXFxuKyAgLSBcXFwiI2FkZHJlc3MtY2VsbHNcXFwiXFxuKyAgLSBcXFwiI3NpemUtY2VsbHNcXFwiXFxuKyAgLSBjbG9ja3NcXG4rICAtIGNsb2NrLW5hbWVzXFxuKyAgLSBwaHlzXFxuKyAgLSBwaHktbmFtZXNcXG4rICAtIHBvd2VyLWRvbWFpbnNcXG4rXFxuK2FkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZVxcbitcXG4rZXhhbXBsZXM6XFxuKyAgLSB8XFxuKyAgICAjaW5jbHVkZSBcXHUwMDNjZHQtYmluZGluZ3MvY2xvY2svcmszNTY4LWNydS5oXFx1MDAzZVxcbisgICAgI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL3Bvd2VyL3JrMzU2OC1wb3dlci5oXFx1MDAzZVxcbisgICAgI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL3BoeS9waHkuaFxcdTAwM2VcXG4rXFxuKyAgICBwY3NAZmRhMDAwMDAge1xcbisgICAgICBjb21wYXRpYmxlID0gXFxcInJvY2tjaGlwLHJrMzU2OC14cGNzXFxcIjtcXG4rICAgICAgcmVnID0gXFx1MDAzYzB4ZmRhMDAwMDAgMHgyMDAwMDBcXHUwMDNlO1xcbisgICAgICAjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rICAgICAgI3NpemUtY2VsbHMgPSBcXHUwMDNjMFxcdTAwM2U7XFxuKyAgICAgIGNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2Y3J1IFBDTEtfWFBDU1xcdTAwM2UsIFxcdTAwM2NcXHUwMDI2Y3J1IENMS19YUENTX0VFRVxcdTAwM2U7XFxuKyAgICAgIGNsb2NrLW5hbWVzID0gXFxcImNzclxcXCIsIFxcXCJlZWVcXFwiO1xcbisgICAgICBwaHlzID0gXFx1MDAzY1xcdTAwMjZjb21icGh5MiBQSFlfVFlQRV9TR01JSVxcdTAwM2U7XFxuKyAgICAgIHBoeS1uYW1lcyA9IFxcXCJzZXJkZXNcXFwiO1xcbisgICAgICBwb3dlci1kb21haW5zID0gXFx1MDAzY1xcdTAwMjZwb3dlciBSSzM1NjhfUERfUElQRVxcdTAwM2U7XFxuK1xcbisgICAgICBwY3MtbWlpQDAge1xcbisgICAgICAgIHJlZyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4rICAgICAgfTtcXG4rICAgIH07XFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sXFxuaW5kZXggMzc5YjA4YmQ5ZTk3YS4uOGU4OThiY2U5YWY3MyAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkueWFtbFxcbkBAIC04MCw2ICs4MCwxNSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgZGVzY3JpcHRpb246XFxuICAgICAgIFNvbWUgYWRkaXRpb25hbCBwaXBlIHNldHRpbmdzIGFyZSBhY2Nlc3NlZCB0aHJvdWdoIEdSRiByZWdzLlxcbiBcXG4rICByb2NrY2hpcCxzZ21paS1tYWMtc2VsOlxcbisgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvdWludDMyXFxuKyAgICBlbnVtOiBbMCwgMV1cXG4rICAgIGRlZmF1bHQ6IDFcXG4rICAgIGRlc2NyaXB0aW9uOlxcbisgICAgICBTZWxlY3QgZ21hYzAgb3IgZ21hYzEgdG8gYmUgdXNlZCBhcyBTR01JSSBjb250cm9sbGVyLlxcbisgICAgICBUaGUgaGFyZHdhcmUgcmVzZXQgdmFsdWUgaXMgR01BQzEgKDEpLiBTZXQgdGhpcyB0byAwIHRvIHJvdXRlXFxuKyAgICAgIFNHTUlJIHRvIEdNQUMwLlxcbitcXG4gICBcXFwiI3BoeS1jZWxsc1xcXCI6XFxuICAgICBjb25zdDogMVxcbiBcXG5AQCAtMTA1LDYgKzExNCwxMCBAQCBhbGxPZjpcXG4gICAgICAgICAgIG1heEl0ZW1zOiAxXFxuICAgICAgICAgcmVzZXQtbmFtZXM6XFxuICAgICAgICAgICBtYXhJdGVtczogMVxcbisgICAgICAgIHJvY2tjaGlwLHNnbWlpLW1hYy1zZWw6IHRydWVcXG4rICAgIGVsc2U6XFxuKyAgICAgIHByb3BlcnRpZXM6XFxuKyAgICAgICAgcm9ja2NoaXAsc2dtaWktbWFjLXNlbDogZmFsc2VcXG4gICAtIGlmOlxcbiAgICAgICBwcm9wZXJ0aWVzOlxcbiAgICAgICAgIGNvbXBhdGlibGU6XFxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcXG5pbmRleCAzYTE5ZGE3NGQwMGM5Li5jM2IxNzc1MmNjODE3IDEwMDY0NFxcbi0tLSBhL01BSU5UQUlORVJTXFxuKysrIGIvTUFJTlRBSU5FUlNcXG5AQCAtMjM3NDQsNiArMjM3NDQsMTUgQEAgUzpcXHRNYWludGFpbmVkXFxuIEY6XFx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3JvY2tjaGlwLHJrMzU3Ni1zYWkueWFtbFxcbiBGOlxcdHNvdW5kL3NvYy9yb2NrY2hpcC9yb2NrY2hpcF9zYWkuKlxcbiBcXG4rUk9DS0NISVAgWFBDUyBEUklWRVJcXG4rTTpcXHRDb2lhIFByYW50IFxcdTAwM2Njb2lhcHJhbnRAZ21haWwuY29tXFx1MDAzZVxcbitMOlxcdG5ldGRldkB2Z2VyLmtlcm5lbC5vcmdcXG4rTDpcXHRsaW51eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnXFxuK1M6XFx0TWFpbnRhaW5lZFxcbitGOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sXFxuK0Y6XFx0ZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmNcXG4rRjpcXHRpbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXFxuK1xcbiBST0NLRVIgRFJJVkVSXFxuIE06XFx0SmlyaSBQaXJrbyBcXHUwMDNjamlyaUByZXNudWxsaS51c1xcdTAwM2VcXG4gTDpcXHRuZXRkZXZAdmdlci5rZXJuZWwub3JnXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LXBob3RvbmljYXQuZHRzIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHNcXG5pbmRleCA1OGMxMDUyYmE4ZWYzLi4yNWNhYTQ0MTk4ODQzIDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LXBob3RvbmljYXQuZHRzXFxuKysrIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHNcXG5AQCAtMyw2ICszLDcgQEBcXG4gL2R0cy12MS87XFxuIFxcbiAjaW5jbHVkZSBcXHUwMDNjZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9sZWRzL2NvbW1vbi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjZHQtYmluZGluZ3MvcGluY3RybC9yb2NrY2hpcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjZHQtYmluZGluZ3Mvc29jL3JvY2tjaGlwLHZvcDIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFxcInJrMzU2OC5kdHNpXFxcIlxcbkBAIC0yNDIsNiArMjQzLDcgQEAgXFx1MDAyNmNvbWJwaHkxIHtcXG4gXFxuIFxcdTAwMjZjb21icGh5MiB7XFxuIFxcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG4rXFx0cm9ja2NoaXAsc2dtaWktbWFjLXNlbCA9IFxcdTAwM2MwXFx1MDAzZTtcXG4gfTtcXG4gXFxuIFxcdTAwMjZjcHUwIHtcXG5AQCAtMjYwLDkgKzI2MiwxOCBAQCBcXHUwMDI2Y3B1MyB7XFxuIFxcdGNwdS1zdXBwbHkgPSBcXHUwMDNjXFx1MDAyNnZkZF9jcHVcXHUwMDNlO1xcbiB9O1xcbiBcXG4tLyogTW90b3Jjb21tIFlUODUyMVNDIExBTiBwb3J0IChyZXF1aXJlIFNHTUlJKSAqL1xcbisvKiBNb3RvcmNvbW0gWVQ4NTIxU0MgTEFOIHBvcnQgKi9cXG4gXFx1MDAyNmdtYWMwIHtcXG4tXFx0c3RhdHVzID0gXFxcImRpc2FibGVkXFxcIjtcXG4rXFx0YXNzaWduZWQtY2xvY2tzID0gXFx1MDAzY1xcdTAwMjZjcnUgU0NMS19HTUFDMF9SWF9UWFxcdTAwM2U7XFxuK1xcdGFzc2lnbmVkLWNsb2NrLXBhcmVudHMgPSBcXHUwMDNjXFx1MDAyNnhwY3NfZ21hYzBfY2xrXFx1MDAzZTtcXG4rXFx0cGNzLWhhbmRsZSA9IFxcdTAwM2NcXHUwMDI2eHBjc19taWkwXFx1MDAzZTtcXG4rXFx0bWFuYWdlZCA9IFxcXCJpbi1iYW5kLXN0YXR1c1xcXCI7XFxuK1xcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNnNnbWlpX3BoeVxcdTAwM2U7XFxuK1xcdHBoeS1tb2RlID0gXFxcInNnbWlpXFxcIjtcXG4rXFx0cGh5LXN1cHBseSA9IFxcdTAwM2NcXHUwMDI2dmNjXzN2M1xcdTAwM2U7XFxuK1xcdHBpbmN0cmwtbmFtZXMgPSBcXFwiZGVmYXVsdFxcXCI7XFxuK1xcdHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2Z21hYzBfbWlpbVxcdTAwM2U7XFxuK1xcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG4gfTtcXG4gXFxuIC8qIE1vdG9yY29tbSBZVDg1MjFTQyBXQU4gcG9ydCAqL1xcbkBAIC0zNDEsNiArMzUyLDM2IEBAIFxcdTAwMjZpMnMwXzhjaCB7XFxuIFxcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG4gfTtcXG4gXFxuK1xcdTAwMjZtZGlvMCB7XFxuK1xcdHNnbWlpX3BoeTogZXRoZXJuZXQtcGh5QDMge1xcbitcXHRcXHRjb21wYXRpYmxlID0gXFxcImV0aGVybmV0LXBoeS1pZWVlODAyLjMtYzIyXFxcIjtcXG4rXFx0XFx0cmVnID0gXFx1MDAzYzB4M1xcdTAwM2U7XFxuK1xcdFxcdG1heC1zcGVlZCA9IFxcdTAwM2MxMDAwXFx1MDAzZTtcXG4rXFx0XFx0cmVzZXQtYXNzZXJ0LXVzID0gXFx1MDAzYzIwMDAwXFx1MDAzZTtcXG4rXFx0XFx0cmVzZXQtZGVhc3NlcnQtdXMgPSBcXHUwMDNjMTAwMDAwXFx1MDAzZTtcXG4rXFx0XFx0cmVzZXQtZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8zIFJLX1BDNiBHUElPX0FDVElWRV9MT1dcXHUwMDNlO1xcbitcXG4rXFx0XFx0bGVkcyB7XFxuK1xcdFxcdFxcdCNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbitcXHRcXHRcXHQjc2l6ZS1jZWxscyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4rXFxuK1xcdFxcdFxcdGxlZEAxIHtcXG4rXFx0XFx0XFx0XFx0cmVnID0gXFx1MDAzYzFcXHUwMDNlO1xcbitcXHRcXHRcXHRcXHRjb2xvciA9IFxcdTAwM2NMRURfQ09MT1JfSURfQU1CRVJcXHUwMDNlO1xcbitcXHRcXHRcXHRcXHRmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9MQU47XFxuK1xcdFxcdFxcdFxcdGRlZmF1bHQtc3RhdGUgPSBcXFwia2VlcFxcXCI7XFxuK1xcdFxcdFxcdH07XFxuK1xcbitcXHRcXHRcXHRsZWRAMiB7XFxuK1xcdFxcdFxcdFxcdHJlZyA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rXFx0XFx0XFx0XFx0Y29sb3IgPSBcXHUwMDNjTEVEX0NPTE9SX0lEX0dSRUVOXFx1MDAzZTtcXG4rXFx0XFx0XFx0XFx0ZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fTEFOO1xcbitcXHRcXHRcXHRcXHRkZWZhdWx0LXN0YXRlID0gXFxcImtlZXBcXFwiO1xcbitcXHRcXHRcXHR9O1xcbitcXHRcXHR9O1xcbitcXHR9O1xcbit9O1xcbitcXG4gXFx1MDAyNm1kaW8xIHtcXG4gXFx0cmdtaWlfcGh5OiBldGhlcm5ldC1waHlAMyB7XFxuIFxcdFxcdGNvbXBhdGlibGUgPSBcXFwiZXRoZXJuZXQtcGh5LWllZWU4MDIuMy1jMjJcXFwiO1xcbkBAIC0zNTAsNiArMzkxLDI1IEBAIHJnbWlpX3BoeTogZXRoZXJuZXQtcGh5QDMge1xcbiBcXHRcXHRyZXNldC1ncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzQgUktfUEMwIEdQSU9fQUNUSVZFX0xPV1xcdTAwM2U7XFxuIFxcdFxcdHJ4LWludGVybmFsLWRlbGF5LXBzID0gXFx1MDAzYzE1MDBcXHUwMDNlO1xcbiBcXHRcXHR0eC1pbnRlcm5hbC1kZWxheS1wcyA9IFxcdTAwM2MxNTAwXFx1MDAzZTtcXG4rXFxuK1xcdFxcdGxlZHMge1xcbitcXHRcXHRcXHQjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rXFx0XFx0XFx0I3NpemUtY2VsbHMgPSBcXHUwMDNjMFxcdTAwM2U7XFxuK1xcbitcXHRcXHRcXHRsZWRAMSB7XFxuK1xcdFxcdFxcdFxcdHJlZyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rXFx0XFx0XFx0XFx0Y29sb3IgPSBcXHUwMDNjTEVEX0NPTE9SX0lEX0FNQkVSXFx1MDAzZTtcXG4rXFx0XFx0XFx0XFx0ZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fV0FOO1xcbitcXHRcXHRcXHRcXHRkZWZhdWx0LXN0YXRlID0gXFxcImtlZXBcXFwiO1xcbitcXHRcXHRcXHR9O1xcbitcXG4rXFx0XFx0XFx0bGVkQDIge1xcbitcXHRcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMlxcdTAwM2U7XFxuK1xcdFxcdFxcdFxcdGNvbG9yID0gXFx1MDAzY0xFRF9DT0xPUl9JRF9HUkVFTlxcdTAwM2U7XFxuK1xcdFxcdFxcdFxcdGZ1bmN0aW9uID0gTEVEX0ZVTkNUSU9OX1dBTjtcXG4rXFx0XFx0XFx0XFx0ZGVmYXVsdC1zdGF0ZSA9IFxcXCJrZWVwXFxcIjtcXG4rXFx0XFx0XFx0fTtcXG4rXFx0XFx0fTtcXG4gXFx0fTtcXG4gfTtcXG4gXFxuQEAgLTU4NiwzICs2NDYsMTMgQEAgXFx1MDAyNnhpbjMyayB7XFxuIFxcdHBpbmN0cmwtbmFtZXMgPSBcXFwiZGVmYXVsdFxcXCI7XFxuIFxcdHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2Y2xrMzJrX291dDFcXHUwMDNlO1xcbiB9O1xcbitcXG4rXFx1MDAyNnhwY3Mge1xcbitcXHRzdGF0dXMgPSBcXFwib2theVxcXCI7XFxuK1xcdHBoeXMgPSBcXHUwMDNjXFx1MDAyNmNvbWJwaHkyIFBIWV9UWVBFX1NHTUlJXFx1MDAzZTtcXG4rXFx0cGh5LW5hbWVzID0gXFxcInNlcmRlc1xcXCI7XFxuK307XFxuK1xcbitcXHUwMDI2eHBjc19taWkwIHtcXG4rXFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbit9O1xcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaVxcbmluZGV4IDNiYzY1M2YwMjdmMWYuLjk4OWUxNjRjMGViMzkgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaVxcbisrKyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2lcXG5AQCAtMTEwLDYgKzExMCw1MSBAQCBzYXRhMDogc2F0YUBmYzAwMDAwMCB7XFxuIFxcdFxcdHN0YXR1cyA9IFxcXCJkaXNhYmxlZFxcXCI7XFxuIFxcdH07XFxuIFxcbitcXHR4cGNzOiBwY3NAZmRhMDAwMDAge1xcbitcXHRcXHRjb21wYXRpYmxlID0gXFxcInJvY2tjaGlwLHJrMzU2OC14cGNzXFxcIjtcXG4rXFx0XFx0I2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuK1xcdFxcdCNzaXplLWNlbGxzID0gXFx1MDAzYzBcXHUwMDNlO1xcbitcXHRcXHRyZWcgPSBcXHUwMDNjMHgwIDB4ZmRhMDAwMDAgMHgwIDB4MjAwMDAwXFx1MDAzZTtcXG4rXFx0XFx0Y2xvY2tzID0gXFx1MDAzY1xcdTAwMjZjcnUgUENMS19YUENTXFx1MDAzZSwgXFx1MDAzY1xcdTAwMjZjcnUgQ0xLX1hQQ1NfRUVFXFx1MDAzZTtcXG4rXFx0XFx0Y2xvY2stbmFtZXMgPSBcXFwiY3NyXFxcIiwgXFxcImVlZVxcXCI7XFxuK1xcdFxcdHBvd2VyLWRvbWFpbnMgPSBcXHUwMDNjXFx1MDAyNnBvd2VyIFJLMzU2OF9QRF9QSVBFXFx1MDAzZTtcXG4rXFx0XFx0c3RhdHVzID0gXFxcImRpc2FibGVkXFxcIjtcXG4rXFxuK1xcdFxcdHhwY3NfbWlpMDogcGNzLW1paUAwIHtcXG4rXFx0XFx0XFx0cmVnID0gXFx1MDAzYzBcXHUwMDNlO1xcbitcXHRcXHRcXHRzdGF0dXMgPSBcXFwiZGlzYWJsZWRcXFwiO1xcbitcXHRcXHR9O1xcbitcXG4rXFx0XFx0eHBjc19taWkxOiBwY3MtbWlpQDEge1xcbitcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMVxcdTAwM2U7XFxuK1xcdFxcdFxcdHN0YXR1cyA9IFxcXCJkaXNhYmxlZFxcXCI7XFxuK1xcdFxcdH07XFxuK1xcbitcXHRcXHR4cGNzX21paTI6IHBjcy1taWlAMiB7XFxuK1xcdFxcdFxcdHJlZyA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rXFx0XFx0XFx0c3RhdHVzID0gXFxcImRpc2FibGVkXFxcIjtcXG4rXFx0XFx0fTtcXG4rXFxuK1xcdFxcdHhwY3NfbWlpMzogcGNzLW1paUAzIHtcXG4rXFx0XFx0XFx0cmVnID0gXFx1MDAzYzNcXHUwMDNlO1xcbitcXHRcXHRcXHRzdGF0dXMgPSBcXFwiZGlzYWJsZWRcXFwiO1xcbitcXHRcXHR9O1xcbitcXHR9O1xcbitcXG4rXFx0eHBjc19nbWFjMF9jbGs6IHhwY3MtZ21hYzAtY2xvY2sge1xcbitcXHRcXHRjb21wYXRpYmxlID0gXFxcImZpeGVkLWNsb2NrXFxcIjtcXG4rXFx0XFx0Y2xvY2stZnJlcXVlbmN5ID0gXFx1MDAzYzEyNTAwMDAwMFxcdTAwM2U7XFxuK1xcdFxcdGNsb2NrLW91dHB1dC1uYW1lcyA9IFxcXCJjbGtfZ21hYzBfeHBjc19taWlcXFwiO1xcbitcXHRcXHQjY2xvY2stY2VsbHMgPSBcXHUwMDNjMFxcdTAwM2U7XFxuK1xcdH07XFxuK1xcbitcXHR4cGNzX2dtYWMxX2NsazogeHBjcy1nbWFjMS1jbG9jayB7XFxuK1xcdFxcdGNvbXBhdGlibGUgPSBcXFwiZml4ZWQtY2xvY2tcXFwiO1xcbitcXHRcXHRjbG9jay1mcmVxdWVuY3kgPSBcXHUwMDNjMTI1MDAwMDAwXFx1MDAzZTtcXG4rXFx0XFx0Y2xvY2stb3V0cHV0LW5hbWVzID0gXFxcImNsa19nbWFjMV94cGNzX21paVxcXCI7XFxuK1xcdFxcdCNjbG9jay1jZWxscyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4rXFx0fTtcXG4rXFxuIFxcdHBpcGVfcGh5X2dyZjA6IHN5c2NvbkBmZGM3MDAwMCB7XFxuIFxcdFxcdGNvbXBhdGlibGUgPSBcXFwicm9ja2NoaXAscmszNTY4LXBpcGUtcGh5LWdyZlxcXCIsIFxcXCJzeXNjb25cXFwiO1xcbiBcXHRcXHRyZWcgPSBcXHUwMDNjMHgwIDB4ZmRjNzAwMDAgMHgwIDB4MTAwMFxcdTAwM2U7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXFxuaW5kZXggZTNkZDVhZGRhNWFjYS4uNTA4OGFjYzA2OTgyZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1xcbkBAIC0xNzAsNiArMTcwLDcgQEAgY29uZmlnIERXTUFDX1JPQ0tDSElQXFxuIFxcdGRlZmF1bHQgQVJDSF9ST0NLQ0hJUFxcbiBcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1JPQ0tDSElQIHx8IENPTVBJTEVfVEVTVClcXG4gXFx0c2VsZWN0IE1GRF9TWVNDT05cXG4rXFx0c2VsZWN0IFBDU19YUENTX1JPQ0tDSElQXFxuIFxcdGhlbHBcXG4gXFx0ICBTdXBwb3J0IGZvciBFdGhlcm5ldCBjb250cm9sbGVyIG9uIFJvY2tjaGlwIFJLMzI4OCBTb0MuXFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xcbmluZGV4IGY1ZjlmYTY3ZWNkNzcuLmZkNWYwMWM4OTQxYzEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcXG5AQCAtNjAzLDEzICs2MDMsNDcgQEAgc3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuIFxcdHBsYXQtXFx1MDAzZW1kaW9fYnVzX2RhdGEtXFx1MDAzZW5lZWRzX3Jlc2V0ID0gdHJ1ZTtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBpbnRlbF9tZ2JlX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4re1xcbitcXHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZGV2bm9kZSwgKnBjc25vZGU7XFxuK1xcdHN0cnVjdCBkd194cGNzICp4cGNzID0gTlVMTDtcXG4rXFx0aW50IGFkZHI7XFxuK1xcbitcXHRkZXZub2RlID0gZGV2X2Z3bm9kZShwcml2LVxcdTAwM2VkZXZpY2UpO1xcbitcXG4rXFx0aWYgKGZ3bm9kZV9wcm9wZXJ0eV9wcmVzZW50KGRldm5vZGUsIFxcXCJwY3MtaGFuZGxlXFxcIikpIHtcXG4rXFx0XFx0cGNzbm9kZSA9IGZ3bm9kZV9maW5kX3JlZmVyZW5jZShkZXZub2RlLCBcXFwicGNzLWhhbmRsZVxcXCIsIDApO1xcbitcXHRcXHR4cGNzID0geHBjc19jcmVhdGVfZndub2RlKHBjc25vZGUpO1xcbitcXHRcXHRmd25vZGVfaGFuZGxlX3B1dChwY3Nub2RlKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0YWRkciA9IGZmcyhwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VtZGlvX2J1c19kYXRhLVxcdTAwM2VwY3NfbWFzaykgLSAxO1xcbitcXHRcXHR4cGNzID0geHBjc19jcmVhdGVfbWRpb2Rldihwcml2LVxcdTAwM2VtaWksIGFkZHIpO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoSVNfRVJSKHhwY3MpKVxcbitcXHRcXHRyZXR1cm4gUFRSX0VSUih4cGNzKTtcXG4rXFxuK1xcdHhwY3NfY29uZmlnX2VlZV9tdWx0X2ZhY3QoeHBjcywgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlbXVsdF9mYWN0XzEwMG5zKTtcXG4rXFxuK1xcdHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzID0geHBjcztcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIGludGVsX21nYmVfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbit7XFxuK1xcdGlmICghcHJpdi1cXHUwMDNlaHctXFx1MDAzZXhwY3MpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdHhwY3NfZGVzdHJveShwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcyk7XFxuK1xcdHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzID0gTlVMTDtcXG4rfVxcbitcXG4gc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqaW50ZWxfbWdiZV9zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuIHtcXG4tXFx0LyogcGxhdC1cXHUwMDNlbWRpb19idXNfZGF0YS1cXHUwMDNlaGFzX3hwY3MgaGFzIGJlZW4gc2V0IHRydWUsIHNvIHRoZXJlXFxuLVxcdCAqIHNob3VsZCBhbHdheXMgYmUgYW4gWFBDUy4gVGhlIG9yaWdpbmFsIGNvZGUgd291bGQgYWx3YXlzXFxuLVxcdCAqIHJldHVybiB0aGlzIGlmIHByZXNlbnQuXFxuLVxcdCAqL1xcbitcXHRpZiAoIXByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzKVxcbitcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFxuIFxcdHJldHVybiB4cGNzX3RvX3BoeWxpbmtfcGNzKHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzKTtcXG4gfVxcbiBcXG5AQCAtNzMzLDYgKzc2Nyw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfbWdiZV9jb21tb25fZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gXFx0ICAgIHBsYXQtXFx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCkge1xcbiBcXHRcXHRwbGF0LVxcdTAwM2VtZGlvX2J1c19kYXRhLVxcdTAwM2VwY3NfbWFzayA9IEJJVF9VMzIoSU5URUxfTUdCRV9YUENTX0FERFIpO1xcbiBcXHRcXHRwbGF0LVxcdTAwM2VkZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XFxuK1xcdFxcdHBsYXQtXFx1MDAzZXBjc19pbml0ID0gaW50ZWxfbWdiZV9wY3NfaW5pdDtcXG4rXFx0XFx0cGxhdC1cXHUwMDNlcGNzX2V4aXQgPSBpbnRlbF9tZ2JlX3Bjc19leGl0O1xcbiBcXHRcXHRwbGF0LVxcdTAwM2VzZWxlY3RfcGNzID0gaW50ZWxfbWdiZV9zZWxlY3RfcGNzO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmNcXG5pbmRleCAxOWYzNGUxOGJmZWYyLi45YWYzMmMyNmY5YzE0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguY1xcbkBAIC04MSw4ICs4MSwxMSBAQCBzdGF0aWMgaW50IHJlbmVzYXNfZ21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIFxcbiBzdGF0aWMgdm9pZCByZW5lc2FzX2dtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiB7XFxuLVxcdGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpXFxuLVxcdFxcdG1paWNfZGVzdHJveShwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpO1xcbitcXHRpZiAoIXByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcylcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0bWlpY19kZXN0cm95KHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3Bjcyk7XFxuK1xcdHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcyA9IE5VTEw7XFxuIH1cXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJlbmVzYXNfZ21hY19zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmNcXG5pbmRleCA4ZDcwNDJlNjg5MjYxLi5lNDdjYTFiZWM1YjhiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jXFxuQEAgLTIwLDYgKzIwLDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RlbGF5LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tZmQvc3lzY29uLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWdtYXAuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcG1fcnVudGltZS5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcInN0bW1hY19wbGF0Zm9ybS5oXFxcIlxcbkBAIC00Nyw2ICs0OCw3IEBAIHN0cnVjdCBya19nbWFjX29wcyB7XFxuIFxcdHZvaWQgKCpzZXRfdG9fcmdtaWkpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2LFxcbiBcXHRcXHRcXHQgICAgIGludCB0eF9kZWxheSwgaW50IHJ4X2RlbGF5KTtcXG4gXFx0dm9pZCAoKnNldF90b19ybWlpKShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdik7XFxuK1xcdHZvaWQgKCpzZXRfdG9fc2dtaWkpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KTtcXG4gXFx0aW50ICgqc2V0X3NwZWVkKShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdixcXG4gXFx0XFx0XFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsIGludCBzcGVlZCk7XFxuIFxcdHZvaWQgKCppbnRlZ3JhdGVkX3BoeV9wb3dlcnVwKShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdik7XFxuQEAgLTYzLDYgKzY1LDcgQEAgc3RydWN0IHJrX2dtYWNfb3BzIHtcXG4gXFx0Ym9vbCBjbG9ja19ncmZfcmVnX2luX3BocDtcXG4gXFx0Ym9vbCBzdXBwb3J0c19yZ21paTtcXG4gXFx0Ym9vbCBzdXBwb3J0c19ybWlpO1xcbitcXHRib29sIHN1cHBvcnRzX3NnbWlpO1xcbiBcXHRib29sIHBocF9ncmZfcmVxdWlyZWQ7XFxuIFxcdGJvb2wgcmVnc192YWxpZDtcXG4gXFx0dTMyIHJlZ3NbXTtcXG5AQCAtOTgsNiArMTAxLDcgQEAgc3RydWN0IHJrX3ByaXZfZGF0YSB7XFxuIFxcdGJvb2wgaW50ZWdyYXRlZF9waHk7XFxuIFxcdGJvb2wgc3VwcG9ydHNfcmdtaWk7XFxuIFxcdGJvb2wgc3VwcG9ydHNfcm1paTtcXG4rXFx0Ym9vbCBzdXBwb3J0c19zZ21paTtcXG4gXFxuIFxcdHN0cnVjdCBjbGtfYnVsa19kYXRhICpjbGtzO1xcbiBcXHRpbnQgbnVtX2Nsa3M7XFxuQEAgLTgwOSw2ICs4MTMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJrX2dtYWNfb3BzIHJrMzUyOF9vcHMgPSB7XFxuICNkZWZpbmUgUkszNTY4X0dSRl9HTUFDMV9DT04xXFx0XFx0MHgwMzhjXFxuIFxcbiAvKiBSSzM1NjhfR1JGX0dNQUMwX0NPTjEgXFx1MDAyNlxcdTAwMjYgUkszNTY4X0dSRl9HTUFDMV9DT04xICovXFxuKyNkZWZpbmUgUkszNTY4X0dNQUNfTU9ERV9STUlJX1JHTUlJXFx0XFx0R1JGX0NMUl9CSVQoNylcXG4rI2RlZmluZSBSSzM1NjhfR01BQ19NT0RFX1NHTUlJX1FTR01JSVxcdFxcdEdSRl9CSVQoNylcXG4gI2RlZmluZSBSSzM1NjhfR01BQ19GTE9XX0NUUkxcXHRcXHRcXHRHUkZfQklUKDMpXFxuICNkZWZpbmUgUkszNTY4X0dNQUNfRkxPV19DVFJMX0NMUlxcdFxcdEdSRl9DTFJfQklUKDMpXFxuICNkZWZpbmUgUkszNTY4X0dNQUNfUlhDTEtfRExZX0VOQUJMRVxcdFxcdEdSRl9CSVQoMSlcXG5AQCAtODUxLDE4ICs4NTcsMzIgQEAgc3RhdGljIHZvaWQgcmszNTY4X3NldF90b19yZ21paShzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdixcXG4gXFx0XFx0ICAgICBSSzM1NjhfR01BQ19DTEtfVFhfRExfQ0ZHKHR4X2RlbGF5KSk7XFxuIFxcbiBcXHRyZWdtYXBfd3JpdGUoYnNwX3ByaXYtXFx1MDAzZWdyZiwgY29uMSxcXG4rXFx0XFx0ICAgICBSSzM1NjhfR01BQ19NT0RFX1JNSUlfUkdNSUkgfFxcbiBcXHRcXHQgICAgIFJLMzU2OF9HTUFDX1JYQ0xLX0RMWV9FTkFCTEUgfFxcbiBcXHRcXHQgICAgIFJLMzU2OF9HTUFDX1RYQ0xLX0RMWV9FTkFCTEUpO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCByazM1Njhfc2V0X3RvX3NnbWlpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxcbit7XFxuK1xcdHUzMiBjb24xO1xcbitcXG4rXFx0Y29uMSA9IChic3BfcHJpdi1cXHUwMDNlaWQgPT0gMSkgPyBSSzM1NjhfR1JGX0dNQUMxX0NPTjEgOlxcbitcXHRcXHRcXHRcXHQgICAgIFJLMzU2OF9HUkZfR01BQzBfQ09OMTtcXG4rXFxuK1xcdHJlZ21hcF93cml0ZShic3BfcHJpdi1cXHUwMDNlZ3JmLCBjb24xLCBSSzM1NjhfR01BQ19NT0RFX1NHTUlJX1FTR01JSSk7XFxuK31cXG4rXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmtfZ21hY19vcHMgcmszNTY4X29wcyA9IHtcXG4gXFx0LmluaXQgPSByazM1NjhfaW5pdCxcXG4gXFx0LnNldF90b19yZ21paSA9IHJrMzU2OF9zZXRfdG9fcmdtaWksXFxuK1xcdC5zZXRfdG9fc2dtaWkgPSByazM1Njhfc2V0X3RvX3NnbWlpLFxcbitcXG4gXFx0LnNldF9zcGVlZCA9IHJrX3NldF9jbGtfbWFjX3NwZWVkLFxcbiBcXG4gXFx0LmdtYWNfcGh5X2ludGZfc2VsX21hc2sgPSBHRU5NQVNLX1UxNig2LCA0KSxcXG4gXFxuIFxcdC5zdXBwb3J0c19ybWlpID0gdHJ1ZSxcXG4rXFx0LnN1cHBvcnRzX3NnbWlpID0gdHJ1ZSxcXG4gXFxuIFxcdC5yZWdzX3ZhbGlkID0gdHJ1ZSxcXG4gXFx0LnJlZ3MgPSB7XFxuQEAgLTEyMDgsNiArMTIyOCw0MyBAQCBzdGF0aWMgdm9pZCBya19waHlfcG93ZXJkb3duKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxcbiBcXHRcXHRkZXZfZXJyKGJzcF9wcml2LVxcdTAwM2VkZXYsIFxcXCJmYWlsIHRvIGRpc2FibGUgcGh5LXN1cHBseVxcXFxuXFxcIik7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgcmtfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbit7XFxuK1xcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBwcml2LVxcdTAwM2VkZXZpY2UtXFx1MDAzZW9mX25vZGU7XFxuK1xcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25vZGU7XFxuK1xcdHN0cnVjdCBkd194cGNzICp4cGNzO1xcbitcXG4rXFx0cGNzX25vZGUgPSBvZl9wYXJzZV9waGFuZGxlKG5wLCBcXFwicGNzLWhhbmRsZVxcXCIsIDApO1xcbitcXHRpZiAoIXBjc19ub2RlKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuK1xcdHhwY3MgPSB4cGNzX3JrX2NyZWF0ZShwcml2LVxcdTAwM2VkZXZpY2UsIHBjc19ub2RlKTtcXG4rXFx0b2Zfbm9kZV9wdXQocGNzX25vZGUpO1xcbitcXHRpZiAoSVNfRVJSKHhwY3MpKVxcbitcXHRcXHRyZXR1cm4gUFRSX0VSUih4cGNzKTtcXG4rXFxuK1xcdHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzID0geHBjcztcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHJrX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4re1xcbitcXHRpZiAoIXByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHR4cGNzX2Rlc3Ryb3kocHJpdi1cXHUwMDNlaHctXFx1MDAzZXhwY3MpO1xcbitcXHRwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcyA9IE5VTEw7XFxuK31cXG4rXFxuK3N0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJrX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbitcXHRcXHRcXHRcXHRcXHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4re1xcbitcXHRpZiAoIXByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzKVxcbitcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFxuK1xcdHJldHVybiB4cGNzX3RvX3BoeWxpbmtfcGNzKHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzKTtcXG4rfVxcbitcXG4gc3RhdGljIHN0cnVjdCBya19wcml2X2RhdGEgKnJrX2dtYWNfc2V0dXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG4gXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQsXFxuIFxcdFxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHJrX2dtYWNfb3BzICpvcHMpXFxuQEAgLTEzMzAsNiArMTM4Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgcmtfcHJpdl9kYXRhICpya19nbWFjX3NldHVwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuIFxcbiBcXHRic3BfcHJpdi1cXHUwMDNlc3VwcG9ydHNfcmdtaWkgPSBvcHMtXFx1MDAzZXN1cHBvcnRzX3JnbWlpIHx8ICEhb3BzLVxcdTAwM2VzZXRfdG9fcmdtaWk7XFxuIFxcdGJzcF9wcml2LVxcdTAwM2VzdXBwb3J0c19ybWlpID0gb3BzLVxcdTAwM2VzdXBwb3J0c19ybWlpIHx8ICEhb3BzLVxcdTAwM2VzZXRfdG9fcm1paTtcXG4rXFx0YnNwX3ByaXYtXFx1MDAzZXN1cHBvcnRzX3NnbWlpID0gb3BzLVxcdTAwM2VzdXBwb3J0c19zZ21paSB8fCAhIW9wcy1cXHUwMDNlc2V0X3RvX3NnbWlpO1xcbiBcXG4gXFx0aWYgKG9wcy1cXHUwMDNlaW5pdCkge1xcbiBcXHRcXHRyZXQgPSBvcHMtXFx1MDAzZWluaXQoYnNwX3ByaXYpO1xcbkBAIC0xMzYxLDYgKzE0MTksMTAgQEAgc3RhdGljIGludCBya19nbWFjX2NoZWNrX29wcyhzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcXG4gXFx0XFx0aWYgKCFic3BfcHJpdi1cXHUwMDNlc3VwcG9ydHNfcm1paSlcXG4gXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdFxcdGJyZWFrO1xcbitcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG4rXFx0XFx0aWYgKCFic3BfcHJpdi1cXHUwMDNlc3VwcG9ydHNfc2dtaWkpXFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRicmVhaztcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0ZGV2X2Vycihic3BfcHJpdi1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXFwidW5zdXBwb3J0ZWQgaW50ZXJmYWNlICVkXFxcIiwgYnNwX3ByaXYtXFx1MDAzZXBoeV9pZmFjZSk7XFxuQEAgLTEzNzksMTYgKzE0NDEsMTkgQEAgc3RhdGljIGludCBya19nbWFjX3Bvd2VydXAoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbitcXHRyZXQgPSBnbWFjX2Nsa19lbmFibGUoYnNwX3ByaXYsIHRydWUpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0aWYgKGJzcF9wcml2LVxcdTAwM2VwaHlfaWZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKVxcbitcXHRcXHRnb3RvIHNldF9tb2RlO1xcbitcXG4gXFx0cmV0ID0gcmtfZ2V0X3BoeV9pbnRmX3NlbChic3BfcHJpdi1cXHUwMDNlcGh5X2lmYWNlKTtcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuK1xcdFxcdGdvdG8gY2xrX2Rpc2FibGU7XFxuIFxcbiBcXHRpbnRmID0gcmV0O1xcbiBcXG4tXFx0cmV0ID0gZ21hY19jbGtfZW5hYmxlKGJzcF9wcml2LCB0cnVlKTtcXG4tXFx0aWYgKHJldClcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4tXFxuIFxcdGlmIChic3BfcHJpdi1cXHUwMDNlZ21hY19waHlfaW50Zl9zZWxfbWFzayB8fFxcbiBcXHQgICAgYnNwX3ByaXYtXFx1MDAzZWdtYWNfcm1paV9tb2RlX21hc2spIHtcXG4gXFx0XFx0LyogSWYgZGVmaW5lZCwgZW5jb2RlIHRoZSBwaHlfaW50Zl9zZWwgdmFsdWUgKi9cXG5AQCAtMTM5OSwxMCArMTQ2NCw4IEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxcbiBcXHRcXHRcXHRcXHQgICAgICBic3BfcHJpdi1cXHUwMDNlZ21hY19ybWlpX21vZGVfbWFzayk7XFxuIFxcbiBcXHRcXHRyZXQgPSBya193cml0ZV9nbWFjX2dyZl9yZWcoYnNwX3ByaXYsIHZhbCk7XFxuLVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLVxcdFxcdFxcdGdtYWNfY2xrX2VuYWJsZShic3BfcHJpdiwgZmFsc2UpO1xcbi1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi1cXHRcXHR9XFxuK1xcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHRnb3RvIGNsa19kaXNhYmxlO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoYnNwX3ByaXYtXFx1MDAzZWNsb2NrLnJtaWlfbW9kZV9tYXNrKSB7XFxuQEAgLTE0MTAsMTMgKzE0NzMsMTIgQEAgc3RhdGljIGludCBya19nbWFjX3Bvd2VydXAoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpXFxuIFxcdFxcdFxcdFxcdCAgICAgYnNwX3ByaXYtXFx1MDAzZWNsb2NrLnJtaWlfbW9kZV9tYXNrKTtcXG4gXFxuIFxcdFxcdHJldCA9IHJrX3dyaXRlX2Nsb2NrX2dyZl9yZWcoYnNwX3ByaXYsIHZhbCk7XFxuLVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLVxcdFxcdFxcdGdtYWNfY2xrX2VuYWJsZShic3BfcHJpdiwgZmFsc2UpO1xcbi1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi1cXHRcXHR9XFxuK1xcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHRnb3RvIGNsa19kaXNhYmxlO1xcbiBcXHR9XFxuIFxcbi1cXHQvKnJtaWkgb3IgcmdtaWkqL1xcbitzZXRfbW9kZTpcXG4rXFx0Lyogcm1paSwgcmdtaWksIHNnbWlpICovXFxuIFxcdHN3aXRjaCAoYnNwX3ByaXYtXFx1MDAzZXBoeV9pZmFjZSkge1xcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcXG4gXFx0XFx0ZGV2X2luZm8oZGV2LCBcXFwiaW5pdCBmb3IgUkdNSUlcXFxcblxcXCIpO1xcbkBAIC0xNDQ3LDE1ICsxNTA5LDIwIEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxcbiBcXHRcXHRpZiAoYnNwX3ByaXYtXFx1MDAzZW9wcy1cXHUwMDNlc2V0X3RvX3JtaWkpXFxuIFxcdFxcdFxcdGJzcF9wcml2LVxcdTAwM2VvcHMtXFx1MDAzZXNldF90b19ybWlpKGJzcF9wcml2KTtcXG4gXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbitcXHRcXHRkZXZfaW5mbyhkZXYsIFxcXCJpbml0IGZvciBTR01JSVxcXFxuXFxcIik7XFxuK1xcdFxcdGlmIChic3BfcHJpdi1cXHUwMDNlb3BzLVxcdTAwM2VzZXRfdG9fc2dtaWkpXFxuK1xcdFxcdFxcdGJzcF9wcml2LVxcdTAwM2VvcHMtXFx1MDAzZXNldF90b19zZ21paShic3BfcHJpdik7XFxuK1xcdFxcdGJyZWFrO1xcbiBcXHRkZWZhdWx0OlxcbiBcXHRcXHRkZXZfZXJyKGRldiwgXFxcIk5PIGludGVyZmFjZSBkZWZpbmVkIVxcXFxuXFxcIik7XFxuK1xcdFxcdHJldCA9IC1FSU5WQUw7XFxuK1xcdFxcdGdvdG8gY2xrX2Rpc2FibGU7XFxuIFxcdH1cXG4gXFxuIFxcdHJldCA9IHJrX3BoeV9wb3dlcnVwKGJzcF9wcml2KTtcXG4tXFx0aWYgKHJldCkge1xcbi1cXHRcXHRnbWFjX2Nsa19lbmFibGUoYnNwX3ByaXYsIGZhbHNlKTtcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4tXFx0fVxcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIGNsa19kaXNhYmxlO1xcbiBcXG4gXFx0cG1fcnVudGltZV9nZXRfc3luYyhkZXYpO1xcbiBcXG5AQCAtMTQ2Myw2ICsxNTMwLDEwIEBAIHN0YXRpYyBpbnQgcmtfZ21hY19wb3dlcnVwKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxcbiBcXHRcXHRic3BfcHJpdi1cXHUwMDNlb3BzLVxcdTAwM2VpbnRlZ3JhdGVkX3BoeV9wb3dlcnVwKGJzcF9wcml2KTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbitcXG4rY2xrX2Rpc2FibGU6XFxuK1xcdGdtYWNfY2xrX2VuYWJsZShic3BfcHJpdiwgZmFsc2UpO1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBya19nbWFjX3Bvd2VyZG93bihzdHJ1Y3QgcmtfcHJpdl9kYXRhICpnbWFjKVxcbkBAIC0xNDg2LDYgKzE1NTcsOSBAQCBzdGF0aWMgdm9pZCBya19nZXRfaW50ZXJmYWNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgKmJzcF9wcml2LFxcbiBcXG4gXFx0aWYgKHJrLVxcdTAwM2VzdXBwb3J0c19ybWlpKVxcbiBcXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUksIGludGVyZmFjZXMpO1xcbitcXG4rXFx0aWYgKHJrLVxcdTAwM2VzdXBwb3J0c19zZ21paSlcXG4rXFx0XFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSwgaW50ZXJmYWNlcyk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgcmtfc2V0X2Nsa190eF9yYXRlKHZvaWQgKmJzcF9wcml2Xywgc3RydWN0IGNsayAqY2xrX3R4X2ksXFxuQEAgLTE2MDIsNiArMTY3NiwxNyBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0cGxhdF9kYXQtXFx1MDAzZXN1c3BlbmQgPSBya19nbWFjX3N1c3BlbmQ7XFxuIFxcdHBsYXRfZGF0LVxcdTAwM2VyZXN1bWUgPSBya19nbWFjX3Jlc3VtZTtcXG4gXFxuK1xcdGlmIChwbGF0X2RhdC1cXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHtcXG4rXFx0XFx0LyogU0dNSUkgY2xvY2sgYWx3YXlzIHJ1bnMgYXQgMTI1IE1IeiAqL1xcbitcXHRcXHRwbGF0X2RhdC1cXHUwMDNlc2V0X2Nsa190eF9yYXRlID0gTlVMTDtcXG4rXFxuK1xcdFxcdC8qIFNHTUlJIHJlcXVpcmVzIGEgUENTICovXFxuK1xcdFxcdHBsYXRfZGF0LVxcdTAwM2VkZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XFxuK1xcdFxcdHBsYXRfZGF0LVxcdTAwM2VwY3NfaW5pdCA9IHJrX3Bjc19pbml0O1xcbitcXHRcXHRwbGF0X2RhdC1cXHUwMDNlcGNzX2V4aXQgPSBya19wY3NfZXhpdDtcXG4rXFx0XFx0cGxhdF9kYXQtXFx1MDAzZXNlbGVjdF9wY3MgPSBya19zZWxlY3RfcGNzO1xcbitcXHR9XFxuK1xcbiBcXHRwbGF0X2RhdC1cXHUwMDNlYnNwX3ByaXYgPSBya19nbWFjX3NldHVwKHBkZXYsIHBsYXRfZGF0LCBkYXRhKTtcXG4gXFx0aWYgKElTX0VSUihwbGF0X2RhdC1cXHUwMDNlYnNwX3ByaXYpKVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihwbGF0X2RhdC1cXHUwMDNlYnNwX3ByaXYpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmNcXG5pbmRleCAxMzYzNDk2NWJjMTlhLi4wMWRmNDc3NmVkYjNmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuY1xcbkBAIC0zNSw4ICszNSwxMSBAQCBzdGF0aWMgaW50IHJ6bjFfZHdtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiBcXG4gc3RhdGljIHZvaWQgcnpuMV9kd21hY19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIHtcXG4tXFx0aWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcylcXG4tXFx0XFx0bWlpY19kZXN0cm95KHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3Bjcyk7XFxuK1xcdGlmICghcHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRtaWljX2Rlc3Ryb3kocHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzKTtcXG4rXFx0cHJpdi1cXHUwMDNlaHctXFx1MDAzZXBoeWxpbmtfcGNzID0gTlVMTDtcXG4gfVxcbiBcXG4gc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqcnpuMV9kd21hY19zZWxlY3RfcGNzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jXFxuaW5kZXggMWQ3ZjBhNTdkMjg4OS4uNmQ0YmMxZmU4Zjc1MSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmNcXG5AQCAtNTM5LDggKzUzOSwxMSBAQCBzdGF0aWMgaW50IHNvY2ZwZ2FfZHdtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiBcXG4gc3RhdGljIHZvaWQgc29jZnBnYV9kd21hY19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIHtcXG4tXFx0aWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcylcXG4tXFx0XFx0bHlueF9wY3NfZGVzdHJveShwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpO1xcbitcXHRpZiAoIXByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcylcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0bHlueF9wY3NfZGVzdHJveShwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpO1xcbitcXHRwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MgPSBOVUxMO1xcbiB9XFxuIFxcbiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpzb2NmcGdhX2R3bWFjX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uY1xcbmluZGV4IGFmZTk4ZmY1YmRjYjAuLmQyZjc3ZjBjMjIzYTcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmNcXG5AQCAtNDI2LDM2ICs0MjYsMTUgQEAgaW50IHN0bW1hY19tZGlvX3Jlc2V0KHN0cnVjdCBtaWlfYnVzICpidXMpXFxuIGludCBzdG1tYWNfcGNzX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbi1cXHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZGV2bm9kZSwgKnBjc25vZGU7XFxuLVxcdHN0cnVjdCBkd194cGNzICp4cGNzID0gTlVMTDtcXG4tXFx0aW50IGFkZHIsIHJldDtcXG4tXFxuLVxcdGRldm5vZGUgPSBkZXZfZndub2RlKHByaXYtXFx1MDAzZWRldmljZSk7XFxuLVxcbi1cXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGNzX2luaXQpIHtcXG4tXFx0XFx0cmV0ID0gcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGNzX2luaXQocHJpdik7XFxuLVxcdH0gZWxzZSBpZiAoZndub2RlX3Byb3BlcnR5X3ByZXNlbnQoZGV2bm9kZSwgXFxcInBjcy1oYW5kbGVcXFwiKSkge1xcbi1cXHRcXHRwY3Nub2RlID0gZndub2RlX2ZpbmRfcmVmZXJlbmNlKGRldm5vZGUsIFxcXCJwY3MtaGFuZGxlXFxcIiwgMCk7XFxuLVxcdFxcdHhwY3MgPSB4cGNzX2NyZWF0ZV9md25vZGUocGNzbm9kZSk7XFxuLVxcdFxcdGZ3bm9kZV9oYW5kbGVfcHV0KHBjc25vZGUpO1xcbi1cXHRcXHRyZXQgPSBQVFJfRVJSX09SX1pFUk8oeHBjcyk7XFxuLVxcdH0gZWxzZSBpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlbWRpb19idXNfZGF0YSBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHQgICBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VtZGlvX2J1c19kYXRhLVxcdTAwM2VwY3NfbWFzaykge1xcbi1cXHRcXHRhZGRyID0gZmZzKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZW1kaW9fYnVzX2RhdGEtXFx1MDAzZXBjc19tYXNrKSAtIDE7XFxuLVxcdFxcdHhwY3MgPSB4cGNzX2NyZWF0ZV9tZGlvZGV2KHByaXYtXFx1MDAzZW1paSwgYWRkcik7XFxuLVxcdFxcdHJldCA9IFBUUl9FUlJfT1JfWkVSTyh4cGNzKTtcXG4tXFx0fSBlbHNlIHtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdGlmICghcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGNzX2luaXQpXFxuIFxcdFxcdHJldHVybiAwO1xcbi1cXHR9XFxuIFxcbitcXHRyZXQgPSBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VwY3NfaW5pdChwcml2KTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUocHJpdi1cXHUwMDNlZGV2aWNlLCByZXQsIFxcXCJObyB4UENTIGZvdW5kXFxcXG5cXFwiKTtcXG4gXFxuLVxcdGlmICh4cGNzKVxcbi1cXHRcXHR4cGNzX2NvbmZpZ19lZWVfbXVsdF9mYWN0KHhwY3MsIHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZW11bHRfZmFjdF8xMDBucyk7XFxuLVxcbi1cXHRwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcyA9IHhwY3M7XFxuLVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5AQCAtNDYzLDE0ICs0NDIsMTAgQEAgdm9pZCBzdG1tYWNfcGNzX2NsZWFuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbiBcXG4tXFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXBjc19leGl0KVxcbi1cXHRcXHRwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VwY3NfZXhpdChwcml2KTtcXG4tXFxuLVxcdGlmICghcHJpdi1cXHUwMDNlaHctXFx1MDAzZXhwY3MpXFxuK1xcdGlmICghcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGNzX2V4aXQpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdHhwY3NfZGVzdHJveShwcml2LVxcdTAwM2Vody1cXHUwMDNleHBjcyk7XFxuLVxcdHByaXYtXFx1MDAzZWh3LVxcdTAwM2V4cGNzID0gTlVMTDtcXG4rXFx0cHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGNzX2V4aXQocHJpdik7XFxuIH1cXG4gXFxuIHN0cnVjdCBzdG1tYWNfY2xrX3JhdGUge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnXFxuaW5kZXggZTQxN2ZkNjZmNjYwYS4uODhiYzQwNzkxZTY5ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZ1xcbisrKyBiL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnXFxuQEAgLTEyLDYgKzEyLDI5IEBAIGNvbmZpZyBQQ1NfWFBDU1xcbiBcXHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgZHJpdmVyIGFuZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBTeW5vcHN5c1xcbiBcXHQgIERlc2lnbldhcmUgWFBDUyBjb250cm9sbGVycy5cXG4gXFxuK2lmIFBDU19YUENTXFxuK1xcbitjb25maWcgUENTX1hQQ1NfUExBVEZPUk1cXG4rXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgWFBDUyBjb250cm9sbGVyIHN1cHBvcnRcXFwiXFxuK1xcdGRlZmF1bHQgUENTX1hQQ1NcXG4rXFx0aGVscFxcbitcXHQgIEdlbmVyaWMgRFdYUENTIGRyaXZlciBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgcmVxdWlyZSBhbnlcXG4rXFx0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXFxuK1xcdCAgZGF0YSBmb3Igc2V0dXAuXFxuK1xcbitcXHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXFxuK1xcbitjb25maWcgUENTX1hQQ1NfUk9DS0NISVBcXG4rXFx0dHJpc3RhdGUgXFxcIlJvY2tjaGlwIFhQQ1MgY29udHJvbGxlciBzdXBwb3J0XFxcIlxcbitcXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcXG4rXFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1QpXFxuK1xcdGhlbHBcXG4rXFx0ICBTdXBwb3J0IGZvciBYUENTIGNvbnRyb2xsZXIgb24gUm9ja2NoaXAgUkszNTZ4IFNvQy5cXG4rXFxuK1xcdCAgSWYgeW91IGhhdmUgYSBSb2NrY2hpcCBTb0Mgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxcbitcXG4rZW5kaWYgIyBQQ1NfWFBDU1xcbitcXG4gY29uZmlnIFBDU19MWU5YXFxuIFxcdHRyaXN0YXRlXFxuIFxcdGhlbHBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlIGIvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlXFxuaW5kZXggNGY3OTIwNjE4YjkwMC4uYzgwOWI3Zjk0MmE1MSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGVcXG4rKysgYi9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGVcXG5AQCAtMSwxMCArMSw5IEBAXFxuICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gIyBNYWtlZmlsZSBmb3IgTGludXggUENTIGRyaXZlcnNcXG4gXFxuLXBjc194cGNzLSQoQ09ORklHX1BDU19YUENTKVxcdDo9IHBjcy14cGNzLm8gcGNzLXhwY3MtcGxhdC5vIFxcXFxcXG4tXFx0XFx0XFx0XFx0ICAgcGNzLXhwY3MtbnhwLm8gcGNzLXhwY3Mtd3gub1xcbi1cXG4tb2JqLSQoQ09ORklHX1BDU19YUENTKVxcdFxcdCs9IHBjc194cGNzLm9cXG4rb2JqLSQoQ09ORklHX1BDU19YUENTKSArPSBwY3MteHBjcy5vIHBjcy14cGNzLW54cC5vIHBjcy14cGNzLXd4Lm9cXG4rb2JqLSQoQ09ORklHX1BDU19YUENTX1BMQVRGT1JNKSArPSBwY3MteHBjcy1wbGF0Lm9cXG4rb2JqLSQoQ09ORklHX1BDU19YUENTX1JPQ0tDSElQKSArPSBwY3MteHBjcy1yay5vXFxuIG9iai0kKENPTkZJR19QQ1NfTFlOWClcXHRcXHQrPSBwY3MtbHlueC5vXFxuIG9iai0kKENPTkZJR19QQ1NfTVRLX0xZTlhJKVxcdCs9IHBjcy1tdGstbHlueGkub1xcbiBvYmotJChDT05GSUdfUENTX1JaTjFfTUlJQylcXHQrPSBwY3MtcnpuMS1taWljLm9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNGVmMjBiMDkzZGFkYVxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuY1xcbkBAIC0wLDAgKzEsNTYxIEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKy8qXFxuKyAqIFJvY2tjaGlwIFhQQ1MgcGxhdGZvcm0gZGV2aWNlIGRyaXZlclxcbisgKlxcbisgKiBCYXNlZCBvbiB0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBYUENTIHBsYXRmb3JtIGRyaXZlci5cXG4rICogQ29weXJpZ2h0IChDKSAyMDI0IFNlcmdlIFNlbWluXFxuKyAqXFxuKyAqIEFkYXB0ZWQgZm9yIFJvY2tjaGlwIFNvQ3MsIHdpdGggcmVmZXJlbmNlIHRvIHRoZSBSb2NrY2hpcCBPRU0gZHJpdmVyLlxcbisgKiBDb3B5cmlnaHQgKEMpIDIwMjYgQ29pYSBQcmFudFxcbisgKi9cXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9hdG9taWMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9jbGsuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RldmljZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaW8uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvcG9sbC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbWRpby5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvb2ZfcGxhdGZvcm0uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkvcGh5LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BtX2RvbWFpbi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcG1fcnVudGltZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcHJvcGVydHkuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NpemVzLmhcXHUwMDNlXFxuK1xcbisjaW5jbHVkZSBcXFwicGNzLXhwY3MuaFxcXCJcXG4rXFxuK3N0cnVjdCBkd194cGNzX3JrIHtcXG4rXFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjtcXG4rXFx0c3RydWN0IG1paV9idXMgKmJ1cztcXG4rXFx0dm9pZCBfX2lvbWVtICpyZWdfYmFzZTtcXG4rXFx0c3RydWN0IHBoeSAqc2VyZGVzX3BoeTtcXG4rXFx0c3RydWN0IGNsayAqY3NyX2NsaztcXG4rXFx0c3RydWN0IGNsayAqZWVlX2NsaztcXG4rfTtcXG4rXFxuK3N0YXRpYyBwdHJkaWZmX3QgeHBjc19ya19hZGRyX2Zvcm1hdChpbnQgZGV2LCBpbnQgcmVnKVxcbit7XFxuK1xcdHJldHVybiBGSUVMRF9QUkVQKDB4NzAwMDAsIGRldikgfCBGSUVMRF9QUkVQKDB4ZmZmZiwgcmVnKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX3JlYWRfcmVnKHN0cnVjdCBkd194cGNzX3JrICpweHBjcywgaW50IGRldiwgaW50IHJlZylcXG4re1xcbitcXHRwdHJkaWZmX3QgY3NyO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0Y3NyID0geHBjc19ya19hZGRyX2Zvcm1hdChkZXYsIHJlZyk7XFxuK1xcbitcXHRyZXQgPSBwbV9ydW50aW1lX3Jlc3VtZV9hbmRfZ2V0KFxcdTAwMjZweHBjcy1cXHUwMDNlcGRldi1cXHUwMDNlZGV2KTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldCA9IHJlYWRsKHB4cGNzLVxcdTAwM2VyZWdfYmFzZSArIChjc3IgXFx1MDAzY1xcdTAwM2MgMikpIFxcdTAwMjYgMHhmZmZmO1xcbitcXG4rXFx0cG1fcnVudGltZV9wdXQoXFx1MDAyNnB4cGNzLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYpO1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHhwY3Nfcmtfd3JpdGVfcmVnKHN0cnVjdCBkd194cGNzX3JrICpweHBjcywgaW50IGRldiwgaW50IHJlZywgdTE2IHZhbClcXG4re1xcbitcXHRwdHJkaWZmX3QgY3NyO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0Y3NyID0geHBjc19ya19hZGRyX2Zvcm1hdChkZXYsIHJlZyk7XFxuK1xcbitcXHRyZXQgPSBwbV9ydW50aW1lX3Jlc3VtZV9hbmRfZ2V0KFxcdTAwMjZweHBjcy1cXHUwMDNlcGRldi1cXHUwMDNlZGV2KTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHdyaXRlbCh2YWwsIHB4cGNzLVxcdTAwM2VyZWdfYmFzZSArIChjc3IgXFx1MDAzY1xcdTAwM2MgMikpO1xcbitcXG4rXFx0cG1fcnVudGltZV9wdXQoXFx1MDAyNnB4cGNzLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYpO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rI2RlZmluZSBST0NLQ0hJUF9NTURfTUlJMVxcdDJcXG4rI2RlZmluZSBST0NLQ0hJUF9NTURfTUlJMlxcdDNcXG4rI2RlZmluZSBST0NLQ0hJUF9NTURfTUlJM1xcdDRcXG4rI2RlZmluZSBST0NLQ0hJUF9NTURfUE1BUE1EXFx0NlxcbisjZGVmaW5lIFJPQ0tDSElQX01NRF9NSUlcXHQ3XFxuK1xcbitzdGF0aWMgYm9vbCB4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShpbnQgYWRkcilcXG4re1xcbitcXHRyZXR1cm4gIShhZGRyIFxcdTAwM2MgMCB8fCBhZGRyIFxcdTAwM2UgMyk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgeHBjc19ya19tZGlvX3JlYWRfcmVtYXBwaW5nKGludCBhZGRyLCBpbnQgZGV2LCBpbnQgcmVnKVxcbit7XFxuK1xcdHN3aXRjaCAoZGV2KSB7XFxuK1xcdGNhc2UgTURJT19NTURfUE1BUE1EOlxcbitcXHRcXHRyZXR1cm4gUk9DS0NISVBfTU1EX1BNQVBNRDtcXG4rXFx0Y2FzZSBNRElPX01NRF9WRU5EMjpcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHJldHVybiAtRU5YSU87XFxuK1xcdH1cXG4rXFxuK1xcdC8qIHJlYWQgcmVtYXBwaW5nIHRvIE1JSSBpcyBwZXJmb3JtZWQgYnkgSFcgKi9cXG4rXFx0c3dpdGNoIChhZGRyKSB7XFxuK1xcdGNhc2UgMDpcXG4rXFx0XFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUk7XFxuK1xcdGNhc2UgMTpcXG4rXFx0XFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkxO1xcbitcXHRjYXNlIDI6XFxuK1xcdFxcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMjtcXG4rXFx0Y2FzZSAzOlxcbitcXHRcXHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTM7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXHR9XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgeHBjc19ya19tZGlvX3dyaXRlX3JlbWFwcGluZyhpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZylcXG4re1xcbitcXHRzd2l0Y2ggKGRldikge1xcbitcXHRjYXNlIE1ESU9fTU1EX1BNQVBNRDpcXG4rXFx0XFx0cmV0dXJuIFJPQ0tDSElQX01NRF9QTUFQTUQ7XFxuK1xcdGNhc2UgTURJT19NTURfVkVORDI6XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gLUVOWElPO1xcbitcXHR9XFxuK1xcbitcXHQvKiBXcml0YWJsZSBvbmx5IG9uIE1JSSAqL1xcbitcXHRzd2l0Y2ggKHJlZykge1xcbitcXHRjYXNlIERXX1ZSX01JSV9BTl9DVFJMOlxcbitcXHRjYXNlIERXX1ZSX01JSV9BTl9JTlRSX1NUUzpcXG4rXFx0Y2FzZSBEV19WUl9NSUlfRUVFX01DVFJMMDpcXG4rXFx0Y2FzZSBEV19WUl9NSUlfRUVFX01DVFJMMTpcXG4rXFx0Y2FzZSBEV19WUl9NSUlfRElHX0NUUkwyOlxcbitcXHRcXHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTtcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdH1cXG4rXFxuK1xcdHN3aXRjaCAoYWRkcikge1xcbitcXHRjYXNlIDA6XFxuK1xcdFxcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJO1xcbitcXHRjYXNlIDE6XFxuK1xcdFxcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMTtcXG4rXFx0Y2FzZSAyOlxcbitcXHRcXHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTI7XFxuK1xcdGNhc2UgMzpcXG4rXFx0XFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkzO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFx0fVxcbit9XFxuK1xcbitzdGF0aWMgaW50IHhwY3NfcmtfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWcpXFxuK3tcXG4rXFx0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLVxcdTAwM2Vwcml2O1xcbitcXHRpbnQgZGV2O1xcbitcXG4rXFx0aWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShhZGRyKSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcbitcXHRkZXYgPSB4cGNzX3JrX21kaW9fcmVhZF9yZW1hcHBpbmcoYWRkciwgTURJT19NTURfVkVORDIsIHJlZyk7XFxuK1xcdGlmIChkZXYgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gMHhmZmZmO1xcbitcXG4rXFx0cmV0dXJuIHhwY3NfcmtfcmVhZF9yZWcocHhwY3MsIGRldiwgcmVnKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcXG4re1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtXFx1MDAzZXByaXY7XFxuK1xcdGludCBkZXY7XFxuK1xcbitcXHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuK1xcdGRldiA9IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoYWRkciwgTURJT19NTURfVkVORDIsIHJlZyk7XFxuK1xcdGlmIChkZXYgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHJldHVybiB4cGNzX3JrX3dyaXRlX3JlZyhweHBjcywgZGV2LCByZWcsIHZhbCk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZylcXG4re1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtXFx1MDAzZXByaXY7XFxuK1xcbitcXHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuK1xcdGRldiA9IHhwY3NfcmtfbWRpb19yZWFkX3JlbWFwcGluZyhhZGRyLCBkZXYsIHJlZyk7XFxuK1xcdGlmIChkZXYgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gMHhmZmZmO1xcbitcXG4rXFx0cmV0dXJuIHhwY3NfcmtfcmVhZF9yZWcocHhwY3MsIGRldiwgcmVnKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZywgdTE2IHZhbClcXG4re1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtXFx1MDAzZXByaXY7XFxuK1xcbitcXHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuK1xcdGRldiA9IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoYWRkciwgZGV2LCByZWcpO1xcbitcXHRpZiAoZGV2IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRyZXR1cm4geHBjc19ya193cml0ZV9yZWcocHhwY3MsIGRldiwgcmVnLCB2YWwpO1xcbit9XFxuK1xcbitzdGF0aWMgc3RydWN0IGR3X3hwY3NfcmsgKnhwY3NfcmtfY3JlYXRlX2RhdGEoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4re1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7XFxuK1xcbitcXHRweHBjcyA9IGRldm1fa3phbGxvYyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBzaXplb2YoKnB4cGNzKSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghcHhwY3MpXFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcbitcXG4rXFx0cHhwY3MtXFx1MDAzZXBkZXYgPSBwZGV2O1xcbitcXG4rXFx0ZGV2X3NldF9kcnZkYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHB4cGNzKTtcXG4rXFxuK1xcdHJldHVybiBweHBjcztcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX3NlcmRlc19waHlfaW5pdChzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXFxuK3tcXG4rXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnB4cGNzLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXY7XFxuK1xcbitcXHRweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSA9IGRldm1fcGh5X2dldChkZXYsIFxcXCJzZXJkZXNcXFwiKTtcXG4rXFx0aWYgKElTX0VSUihweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSkpXFxuK1xcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSksXFxuK1xcdFxcdFxcdFxcdFxcdFxcXCJGYWlsZWQgdG8gZ2V0IFNlckRlcyBQSFlcXFxcblxcXCIpO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9mZih2b2lkICpkYXRhKVxcbit7XFxuK1xcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRhdGE7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZweHBjcy1cXHUwMDNlcGRldi1cXHUwMDNlZGV2O1xcbitcXG4rXFx0cGh5X3Bvd2VyX29mZihweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSk7XFxuK1xcdHBoeV9leGl0KHB4cGNzLVxcdTAwM2VzZXJkZXNfcGh5KTtcXG4rXFxuK1xcdGRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgZmFsc2UpO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9uKHN0cnVjdCBkd194cGNzX3JrICpweHBjcylcXG4re1xcbitcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cHhwY3MtXFx1MDAzZXBkZXYtXFx1MDAzZWRldjtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIFRoZSBwb3dlciBkb21haW4gaXMgcmVxdWlyZWQgYW5kIG11c3QgYmUgZW5hYmxlZCwgd2hpY2ggYWxsb3dzIHVzIHRvXFxuK1xcdCAqIGR5bmFtaWNhbGx5IHR1cm4gdGhlIENTUiBjbG9jayBvbi9vZmYgdXNpbmcgUE0gd2hpbGUga2VlcGluZyB0aGUgUENTXFxuK1xcdCAqIHBvd2VyZWQgb24uXFxuK1xcdCAqL1xcbitcXHRyZXQgPSBkZXZfcG1fZ2VucGRfcnBtX2Fsd2F5c19vbihkZXYsIHRydWUpO1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIHBvd2VyIG9uIHBvd2VyLWRvbWFpbnNcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHRyZXQgPSBwaHlfaW5pdChweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSk7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gaW5pdCBTZXJEZXMgUEhZXFxcXG5cXFwiKTtcXG4rXFx0XFx0Z290byBwbV9kb21haW47XFxuK1xcdH1cXG4rXFxuK1xcdHJldCA9IHBoeV9wb3dlcl9vbihweHBjcy1cXHUwMDNlc2VyZGVzX3BoeSk7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gcG93ZXIgb24gU2VyRGVzIFBIWVxcXFxuXFxcIik7XFxuK1xcdFxcdGdvdG8gc2VyZGVzX3BoeTtcXG4rXFx0fVxcbitcXG4rXFx0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgeHBjc19ya19zZXJkZXNfcGh5X3Bvd2Vyb2ZmLCBweHBjcyk7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gcmVnaXN0ZXIgZGV2bSBmb3IgU2VyRGVzIFBIWTogJWRcXFxcblxcXCIsIHJldCk7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAwO1xcbitcXG4rc2VyZGVzX3BoeTpcXG4rXFx0cGh5X2V4aXQocHhwY3MtXFx1MDAzZXNlcmRlc19waHkpO1xcbitwbV9kb21haW46XFxuK1xcdGRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgZmFsc2UpO1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9yZXMoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKVxcbit7XFxuK1xcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSBweHBjcy1cXHUwMDNlcGRldjtcXG4rXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4rXFx0c3RydWN0IHJlc291cmNlICpyZXM7XFxuK1xcbitcXHRyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApO1xcbitcXHRpZiAoIXJlcykge1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIk5vIHJlZy1zcGFjZSBmb3VuZFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbitcXHRpZiAocmVzb3VyY2Vfc2l6ZShyZXMpIFxcdTAwM2MgU1pfMk0pIHtcXG4rXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJJbnZhbGlkIHJlZy1zcGFjZSBzaXplXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuK1xcdHB4cGNzLVxcdTAwM2VyZWdfYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJlcyk7XFxuK1xcdGlmIChJU19FUlIocHhwY3MtXFx1MDAzZXJlZ19iYXNlKSkge1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBtYXAgcmVnLXNwYWNlXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIFBUUl9FUlIocHhwY3MtXFx1MDAzZXJlZ19iYXNlKTtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHhwY3NfcmtfZXhpdF9jbGsodm9pZCAqZGF0YSlcXG4re1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBkYXRhO1xcbitcXG4rXFx0Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKHB4cGNzLVxcdTAwM2VlZWVfY2xrKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX2luaXRfY2xrKHN0cnVjdCBkd194cGNzX3JrICpweHBjcylcXG4re1xcbitcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cHhwY3MtXFx1MDAzZXBkZXYtXFx1MDAzZWRldjtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHB4cGNzLVxcdTAwM2Vjc3JfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgXFxcImNzclxcXCIpO1xcbitcXHRpZiAoSVNfRVJSKHB4cGNzLVxcdTAwM2Vjc3JfY2xrKSlcXG4rXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHB4cGNzLVxcdTAwM2Vjc3JfY2xrKSxcXG4rXFx0XFx0XFx0XFx0XFx0IFxcXCJGYWlsZWQgdG8gZ2V0IENTUiBjbG9ja1xcXFxuXFxcIik7XFxuK1xcbitcXHRwbV9ydW50aW1lX3NldF9zdXNwZW5kZWQoZGV2KTtcXG4rXFx0cmV0ID0gZGV2bV9wbV9ydW50aW1lX2VuYWJsZShkZXYpO1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGVuYWJsZSBydW50aW1lLVBNXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0cHhwY3MtXFx1MDAzZWVlZV9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCBcXFwiZWVlXFxcIik7XFxuK1xcdGlmIChJU19FUlIocHhwY3MtXFx1MDAzZWVlZV9jbGspKVxcbitcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHhwY3MtXFx1MDAzZWVlZV9jbGspLFxcbitcXHRcXHRcXHRcXHRcXHQgXFxcIkZhaWxlZCB0byBnZXQgRUVFIGNsb2NrXFxcXG5cXFwiKTtcXG4rXFxuK1xcdHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShweHBjcy1cXHUwMDNlZWVlX2Nsayk7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gZW5hYmxlIEVFRSBjbG9ja1xcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIHhwY3NfcmtfZXhpdF9jbGssIHB4cGNzKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byByZWdpc3RlciBkZXZtIGZvciBFRUUgY2xvY2s6ICVkXFxcXG5cXFwiLCByZXQpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX2luaXRfYnVzKHN0cnVjdCBkd194cGNzX3JrICpweHBjcylcXG4re1xcbitcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cHhwY3MtXFx1MDAzZXBkZXYtXFx1MDAzZWRldjtcXG4rXFx0c3RhdGljIGF0b21pY190IGlkID0gQVRPTUlDX0lOSVQoLTEpO1xcbitcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0YnVzID0gZGV2bV9tZGlvYnVzX2FsbG9jX3NpemUoZGV2LCAwKTtcXG4rXFx0aWYgKCFidXMpXFxuK1xcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4rXFx0YnVzLVxcdTAwM2VuYW1lID0gXFxcIlJvY2tjaGlwIERXIFhQQ1MgTUNJL0FQQjNcXFwiO1xcbitcXHRidXMtXFx1MDAzZXJlYWQgPSB4cGNzX3JrX3JlYWRfYzIyO1xcbitcXHRidXMtXFx1MDAzZXdyaXRlID0geHBjc19ya193cml0ZV9jMjI7XFxuK1xcdGJ1cy1cXHUwMDNlcmVhZF9jNDUgPSB4cGNzX3JrX3JlYWRfYzQ1O1xcbitcXHRidXMtXFx1MDAzZXdyaXRlX2M0NSA9IHhwY3Nfcmtfd3JpdGVfYzQ1O1xcbitcXHRidXMtXFx1MDAzZXBoeV9tYXNrID0gfjA7XFxuK1xcdGJ1cy1cXHUwMDNlcGFyZW50ID0gZGV2O1xcbitcXHRidXMtXFx1MDAzZXByaXYgPSBweHBjcztcXG4rXFxuK1xcdHNucHJpbnRmKGJ1cy1cXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSxcXG4rXFx0XFx0IFxcXCJyb2NrY2hpcF9kd3hwY3MtJXhcXFwiLCBhdG9taWNfaW5jX3JldHVybihcXHUwMDI2aWQpKTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIE1ESU8tYnVzIGhlcmUgc2VydmVzIGFzIGp1c3QgYSBiYWNrLWVuZCBlbmdpbmUgYWJzdHJhY3Rpbmcgb3V0XFxuK1xcdCAqIHRoZSBNRElPIGFuZCBNQ0kvQVBCMyBJTyBpbnRlcmZhY2VzIHV0aWxpemVkIGZvciB0aGUgUm9ja2NoaXAgRFdYUENTIENTUnNcXG4rXFx0ICogYWNjZXNzLlxcbitcXHQgKi9cXG4rXFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBjcmVhdGUgTURJTyBidXNcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHRweHBjcy1cXHUwMDNlYnVzID0gYnVzO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuK3tcXG4rXFx0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cHhwY3MgPSB4cGNzX3JrX2NyZWF0ZV9kYXRhKHBkZXYpO1xcbitcXHRpZiAoSVNfRVJSKHB4cGNzKSlcXG4rXFx0XFx0cmV0dXJuIFBUUl9FUlIocHhwY3MpO1xcbitcXG4rXFx0LypcXG4rXFx0ICogVGhlIFhQQ1MgbWF5IGJlIGF0dGFjaGVkIHRvIGEgcG93ZXIgZG9tYWluIChlLmcuIFBEX1BJUEUpLiBUaGUgZG9tYWluXFxuK1xcdCAqIG11c3QgYmUgcG93ZXJlZCBvbiBiZWZvcmUgYW55IHJlZ2lzdGVyIGFjY2Vzcywgb3RoZXJ3aXNlIHRoZSBTb0Mgd2lsbFxcbitcXHQgKiB0cmlnZ2VyIGEgc3luY2hyb25vdXMgZXh0ZXJuYWwgYWJvcnQgKFNFcnJvcikuXFxuK1xcdCAqXFxuK1xcdCAqIEFjY2Vzc2luZyB0aGUgWFBDUyByZWdpc3RlcnMgYWxzbyByZXF1aXJlcyBhIFRYIGNsb2NrIGZyb20gdGhlIFNlckRlcyxcXG4rXFx0ICogd2hpY2ggaXMgbmVlZGVkIGZvciB0aGUgc29mdCByZXNldC5cXG4rXFx0ICovXFxuK1xcdHJldCA9IHhwY3Nfcmtfc2VyZGVzX3BoeV9pbml0KHB4cGNzKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldCA9IHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9uKHB4cGNzKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldCA9IHhwY3NfcmtfaW5pdF9yZXMocHhwY3MpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0cmV0ID0geHBjc19ya19pbml0X2NsayhweHBjcyk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRyZXQgPSB4cGNzX3JrX2luaXRfYnVzKHB4cGNzKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCB4cGNzX3JrX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbit7XFxuK1xcdC8qXFxuK1xcdCAqIEZvcmNlIHRoZSBkZXZpY2UgaW50byBzdXNwZW5kIHN0YXRlIHRvIGdhdGUgdGhlIENTUiBjbG9jay4gVGhpc1xcbitcXHQgKiBwcmV2ZW50cyBjbG9jayBsZWFrYWdlIGFmdGVyIGRldm0gcmVzb3VyY2VzIGFyZSByZWxlYXNlZC5cXG4rXFx0ICpcXG4rXFx0ICogVGhpcyBpcyBzYWZlIGJlY2F1c2U6XFxuK1xcdCAqICAgMS4gVGhlIGRldmljZSBsaW5rIChETF9GTEFHX0FVVE9SRU1PVkVfQ09OU1VNRVIpIHByZXZlbnRzIHVuYmluZFxcbitcXHQgKiAgICAgIHdoaWxlIGFueSBjb25zdW1lciAoTUFDKSBpcyBzdGlsbCBhdHRhY2hlZC5cXG4rXFx0ICogICAyLiBObyBNRElPIGFjY2VzcyB3aWxsIG9jY3VyIGFmdGVyIHRoaXMgcG9pbnQsIGFzIHRoZSBNQUMgZHJpdmVyXFxuK1xcdCAqICAgICAgaGFzIGFscmVhZHkgYmVlbiB1bmJvdW5kIChvciB3ZSBhcmUgYmVpbmcgcmVtb3ZlZCBiZWNhdXNlIG5vXFxuK1xcdCAqICAgICAgY29uc3VtZXIgZXhpc3RzKS5cXG4rXFx0ICovXFxuK1xcdHBtX3J1bnRpbWVfZm9yY2Vfc3VzcGVuZChcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4rfVxcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgeHBjc19ya19vZl9pZHNbXSA9IHtcXG4rXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJyb2NrY2hpcCxyazM1NjgteHBjc1xcXCIgfSxcXG4rXFx0eyAvKiBzZW50aW5lbCAqLyB9LFxcbit9O1xcbitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB4cGNzX3JrX29mX2lkcyk7XFxuK1xcbitzdHJ1Y3QgZHdfeHBjcyAqeHBjc19ya19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbit7XFxuK1xcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7XFxuK1xcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25wO1xcbitcXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7XFxuK1xcdHN0cnVjdCBkd194cGNzICp4cGNzO1xcbitcXHR1MzIgcG9ydDtcXG4rXFxuK1xcdGlmICghb2ZfZGV2aWNlX2lzX2F2YWlsYWJsZShucCkpXFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9ERVYpO1xcbitcXG4rXFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcXFwicmVnXFxcIiwgXFx1MDAyNnBvcnQpKVxcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG4rXFxuK1xcdGlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoKGludClwb3J0KSlcXG4rXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxuK1xcbitcXHQvKiBUaGUgWFBDUyBwZGV2IGlzIGF0dGFjaGVkIHRvIHRoZSBwYXJlbnQgbm9kZSAqL1xcbitcXHRwY3NfbnAgPSBvZl9nZXRfcGFyZW50KG5wKTtcXG4rXFx0aWYgKCFwY3NfbnApXFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9ERVYpO1xcbitcXG4rXFx0aWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKHBjc19ucCkpIHtcXG4rXFx0XFx0b2Zfbm9kZV9wdXQocGNzX25wKTtcXG4rXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7XFxuK1xcdH1cXG4rXFxuK1xcdGlmICghb2ZfbWF0Y2hfbm9kZSh4cGNzX3JrX29mX2lkcywgcGNzX25wKSkge1xcbitcXHRcXHRvZl9ub2RlX3B1dChwY3NfbnApO1xcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG4rXFx0fVxcbitcXG4rXFx0cGRldiA9IG9mX2ZpbmRfZGV2aWNlX2J5X25vZGUocGNzX25wKTtcXG4rXFx0b2Zfbm9kZV9wdXQocGNzX25wKTtcXG4rXFx0aWYgKCFwZGV2KVxcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRVBST0JFX0RFRkVSKTtcXG4rXFxuK1xcdGRldmljZV9sb2NrKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbitcXHRweHBjcyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbitcXHRpZiAoIXB4cGNzIHx8ICFweHBjcy1cXHUwMDNlYnVzKSB7XFxuK1xcdFxcdGRldmljZV91bmxvY2soXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuK1xcdFxcdHB1dF9kZXZpY2UoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKC1FUFJPQkVfREVGRVIpO1xcbitcXHR9XFxuK1xcbitcXHR4cGNzID0geHBjc19jcmVhdGVfbWRpb2RldihweHBjcy1cXHUwMDNlYnVzLCAoaW50KXBvcnQpO1xcbitcXHRkZXZpY2VfdW5sb2NrKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbitcXHRpZiAoSVNfRVJSKHhwY3MpKSB7XFxuK1xcdFxcdHB1dF9kZXZpY2UoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuK1xcdFxcdHJldHVybiB4cGNzO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoIWRldmljZV9saW5rX2FkZChkZXYsIFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIERMX0ZMQUdfQVVUT1JFTU9WRV9DT05TVU1FUikpIHtcXG4rXFx0XFx0eHBjc19kZXN0cm95KHhwY3MpO1xcbitcXHRcXHRwdXRfZGV2aWNlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcXG4rXFx0fVxcbitcXG4rXFx0cHV0X2RldmljZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4rXFx0cmV0dXJuIHhwY3M7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoeHBjc19ya19jcmVhdGUpO1xcbitcXG4rc3RhdGljIGludCB4cGNzX3JrX3BtX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuK3tcXG4rXFx0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGV2X2dldF9kcnZkYXRhKGRldik7XFxuK1xcbitcXHRjbGtfZGlzYWJsZV91bnByZXBhcmUocHhwY3MtXFx1MDAzZWNzcl9jbGspO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgeHBjc19ya19wbV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuK3tcXG4rXFx0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGV2X2dldF9kcnZkYXRhKGRldik7XFxuK1xcbitcXHRyZXR1cm4gY2xrX3ByZXBhcmVfZW5hYmxlKHB4cGNzLVxcdTAwM2Vjc3JfY2xrKTtcXG4rfVxcbitcXG4rc3RhdGljIERFRklORV9SVU5USU1FX0RFVl9QTV9PUFMoeHBjc19ya19wbV9vcHMsXFxuK1xcdFxcdFxcdCAgIHhwY3NfcmtfcG1fcnVudGltZV9zdXNwZW5kLFxcbitcXHRcXHRcXHQgICB4cGNzX3JrX3BtX3J1bnRpbWVfcmVzdW1lLFxcbitcXHRcXHRcXHQgICBOVUxMKTtcXG4rXFxuK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHhwY3NfcmtfZHJpdmVyID0ge1xcbitcXHQucHJvYmUgPSB4cGNzX3JrX3Byb2JlLFxcbitcXHQucmVtb3ZlID0geHBjc19ya19yZW1vdmUsXFxuK1xcdC5kcml2ZXIgPSB7XFxuK1xcdFxcdC5uYW1lID0gXFxcInJrX3hwY3MtZHd4cGNzXFxcIixcXG4rXFx0XFx0LnBtID0gcG1fcHRyKFxcdTAwMjZ4cGNzX3JrX3BtX29wcyksXFxuK1xcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHhwY3Nfcmtfb2ZfaWRzLFxcbitcXHR9LFxcbit9O1xcbittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHhwY3NfcmtfZHJpdmVyKTtcXG4rXFxuK01PRFVMRV9ERVNDUklQVElPTihcXFwiUm9ja2NoaXAgWFBDUyBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyXFxcIik7XFxuK01PRFVMRV9BVVRIT1IoXFxcIkNvaWEgUHJhbnQgXFx1MDAzY2NvaWFwcmFudEBnbWFpbC5jb21cXHUwMDNlXFxcIik7XFxuK01PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuY1xcbmluZGV4IDAzMzdlMmJjYzAxMjUuLjUwYjljZGY5NGZkYWEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmNcXG4rKysgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuY1xcbkBAIC04MTYsOSArODE2LDE0IEBAIHN0YXRpYyBpbnQgeHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWkoc3RydWN0IGR3X3hwY3MgKnhwY3MsXFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4rXFx0LyogQ2xlYXIgQ0wzNyBBTiBjb21wbGV0ZSBzdGF0dXMgKi9cXG4rXFx0cmV0ID0geHBjc193cml0ZSh4cGNzLCBNRElPX01NRF9WRU5EMiwgRFdfVlJfTUlJX0FOX0lOVFJfU1RTLCAwKTtcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbiBcXHRpZiAobmVnX21vZGUgPT0gUEhZTElOS19QQ1NfTkVHX0lOQkFORF9FTkFCTEVEKVxcbiBcXHRcXHRyZXQgPSB4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfQk1DUixcXG4tXFx0XFx0XFx0XFx0IG1kaW9fY3RybCB8IEJNQ1JfQU5FTkFCTEUpO1xcbitcXHRcXHRcXHRcXHQgbWRpb19jdHJsIHwgQk1DUl9BTkVOQUJMRSB8IEJNQ1JfQU5SRVNUQVJUKTtcXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5AQCAtMTA5MywxMCArMTA5OCwxNSBAQCBzdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuLVxcdC8qIENsZWFyIEFOIGNvbXBsZXRlIHN0YXR1cyBvciBpbnRlcnJ1cHQgKi9cXG4tXFx0aWYgKHN0YXRlLVxcdTAwM2Vhbl9jb21wbGV0ZSlcXG4rXFx0aWYgKHN0YXRlLVxcdTAwM2Vhbl9jb21wbGV0ZSkge1xcbitcXHRcXHQvKiBDbGVhciBBTiBjb21wbGV0ZSBzdGF0dXMgb3IgaW50ZXJydXB0ICovXFxuIFxcdFxcdHhwY3Nfd3JpdGUoeHBjcywgTURJT19NTURfVkVORDIsIERXX1ZSX01JSV9BTl9JTlRSX1NUUywgMCk7XFxuIFxcbitcXHRcXHQvKiBJbml0aWF0ZSB0aGUgbmV4dCByb3VuZCBvZiBBTiAqL1xcbitcXHRcXHR4cGNzX21vZGlmeSh4cGNzLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsIEJNQ1JfQU5SRVNUQVJULFxcbitcXHRcXHRcXHQgICAgQk1DUl9BTlJFU1RBUlQpO1xcbitcXHR9XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmMgYi9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuY1xcbmluZGV4IDc4NDMzNTZhNGRkNDcuLjkxOWJiOTdhNGIxODIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmNcXG4rKysgYi9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuY1xcbkBAIC0xODYsNiArMTg2LDcgQEAgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfZ3JmY2ZnIHtcXG4gXFx0c3RydWN0IGNvbWJwaHlfcmVnIHBpcGVfeHBjc19waHlfcmVhZHk7XFxuIFxcdHN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3BjaWUxbDBfc2VsO1xcbiBcXHRzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9wY2llMWwxX3NlbDtcXG4rXFx0c3RydWN0IGNvbWJwaHlfcmVnIHBpcGVfc2dtaWlfbWFjX3NlbDtcXG4gXFx0c3RydWN0IGNvbWJwaHlfcmVnIHUzb3RnMF9wb3J0X2VuO1xcbiBcXHRzdHJ1Y3QgY29tYnBoeV9yZWcgdTNvdGcxX3BvcnRfZW47XFxuIH07XFxuQEAgLTIxMiw2ICsyMTMsNyBAQCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9wcml2IHtcXG4gXFx0Ym9vbCBlbmFibGVfc3NjO1xcbiBcXHRib29sIGV4dF9yZWZjbGs7XFxuIFxcdHN0cnVjdCBjbGsgKnJlZmNsaztcXG4rXFx0dTMyIHNnbWlpX21hY19zZWw7XFxuIH07XFxuIFxcbiBzdGF0aWMgdm9pZCByb2NrY2hpcF9jb21icGh5X3VwZGF0ZWwoc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAqcHJpdixcXG5AQCAtMzc1LDYgKzM3Nyw5IEBAIHN0YXRpYyBpbnQgcm9ja2NoaXBfY29tYnBoeV9wYXJzZV9kdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCByb2NrY2hpcF9jb21icGh5XFxuIFxcbiBcXHRwcml2LVxcdTAwM2VleHRfcmVmY2xrID0gZGV2aWNlX3Byb3BlcnR5X3ByZXNlbnQoZGV2LCBcXFwicm9ja2NoaXAsZXh0LXJlZmNsa1xcXCIpO1xcbiBcXG4rXFx0cHJpdi1cXHUwMDNlc2dtaWlfbWFjX3NlbCA9IDE7XFxuK1xcdGRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsIFxcXCJyb2NrY2hpcCxzZ21paS1tYWMtc2VsXFxcIiwgXFx1MDAyNnByaXYtXFx1MDAzZXNnbWlpX21hY19zZWwpO1xcbitcXG4gXFx0cHJpdi1cXHUwMDNlcGh5X3JzdCA9IGRldm1fcmVzZXRfY29udHJvbF9nZXRfZXhjbHVzaXZlKGRldiwgXFxcInBoeVxcXCIpO1xcbiBcXHQvKiBmYWxsYmFjayB0byBvbGQgYmVoYXZpb3VyICovXFxuIFxcdGlmIChQVFJfRVJSKHByaXYtXFx1MDAzZXBoeV9yc3QpID09IC1FTk9FTlQpXFxuQEAgLTg3Myw2ICs4NzgsOCBAQCBzdGF0aWMgaW50IHJrMzU2OF9jb21icGh5X2NmZyhzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9wcml2ICpwcml2KVxcbiBcXHRcXHRicmVhaztcXG4gXFxuIFxcdGNhc2UgUEhZX1RZUEVfU0dNSUk6XFxuK1xcdFxcdHJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi1cXHUwMDNlcGlwZV9ncmYsIFxcdTAwMjZjZmctXFx1MDAzZXBpcGVfc2dtaWlfbWFjX3NlbCxcXG4rXFx0XFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNlc2dtaWlfbWFjX3NlbCBcXHUwMDNlIDApO1xcbiBcXHRcXHRyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtXFx1MDAzZXBpcGVfZ3JmLCBcXHUwMDI2Y2ZnLVxcdTAwM2VwaXBlX3hwY3NfcGh5X3JlYWR5LCB0cnVlKTtcXG4gXFx0XFx0cm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LVxcdTAwM2VwaHlfZ3JmLCBcXHUwMDI2Y2ZnLVxcdTAwM2VwaXBlX3BoeW1vZGVfc2VsLCB0cnVlKTtcXG4gXFx0XFx0cm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LVxcdTAwM2VwaHlfZ3JmLCBcXHUwMDI2Y2ZnLVxcdTAwM2VwaXBlX3NlbF9xc2dtaWksIHRydWUpO1xcbkBAIC05ODQsNiArOTkxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCByb2NrY2hpcF9jb21icGh5X2dyZmNmZyByazM1NjhfY29tYnBoeV9ncmZjZmdzID0ge1xcbiBcXHQuY29uM19mb3Jfc2F0YVxcdFxcdD0geyAweDAwMGMsIDE1LCAwLCAweDAwLCAweDQ0MDcgfSxcXG4gXFx0LyogcGlwZS1ncmYgKi9cXG4gXFx0LnBpcGVfY29uMF9mb3Jfc2F0YVxcdD0geyAweDAwMDAsIDE1LCAwLCAweDAwLCAweDIyMjAgfSxcXG4rXFx0LnBpcGVfc2dtaWlfbWFjX3NlbFxcdD0geyAweDAwNDAsIDEsIDEsIDB4MDAsIDB4MDEgfSxcXG4gXFx0LnBpcGVfeHBjc19waHlfcmVhZHlcXHQ9IHsgMHgwMDQwLCAyLCAyLCAweDAwLCAweDAxIH0sXFxuIFxcdC51M290ZzBfcG9ydF9lblxcdFxcdD0geyAweDAxMDQsIDE1LCAwLCAweDAxODEsIDB4MTEwMCB9LFxcbiBcXHQudTNvdGcxX3BvcnRfZW5cXHRcXHQ9IHsgMHgwMTQ0LCAxNSwgMCwgMHgwMTgxLCAweDExMDAgfSxcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaCBiL2luY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmhcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjI4NzIzZDViZDc1Y2NcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvaW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaFxcbkBAIC0wLDAgKzEsMTEgQEBcXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cXG4rI2lmbmRlZiBfX0xJTlVYX1BDU19YUENTX1JPQ0tDSElQX0hcXG4rI2RlZmluZSBfX0xJTlVYX1BDU19YUENTX1JPQ0tDSElQX0hcXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZXZpY2UuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wY3MvcGNzLXhwY3MuaFxcdTAwM2VcXG4rXFxuK3N0cnVjdCBkd194cGNzICp4cGNzX3JrX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApO1xcbitcXG4rI2VuZGlmIC8qIF9fTElOVVhfUENTX1hQQ1NfUk9DS0NISVBfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNToxMDoxMi43MDQ2NjIzMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MjI5NDc3MzcxMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBhZGRzIHN1cHBvcnQgZm9yIFJvY2tjaGlwIFJLMzU2OCBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IFBoeXNpY2FsIENvZGluZyBTdWJsYXllciAoWFBDUykgYW5kIFNHTUlJIGludGVyZmFjZSBjb25maWd1cmF0aW9uIGZvciB0aGUgUm9ja2NoaXAgRFdNQUMgZHJpdmVyLCBhbG9uZyB3aXRoIG1pbm9yIFBDUyBpbml0L2V4aXQgaGFuZGxpbmcgdXBkYXRlcyBmb3IgSW50ZWwgRFdNQUMgUENJIGFuZCBvdGhlciBTb0MgZ2x1ZSBkcml2ZXJzIChSZW5lc2FzLCBTb2NmcGdhKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVzdHJpY3RlZCB0byB2ZW5kb3Itc3BlY2lmaWMgU29DIHBsYXRmb3JtIGRyaXZlcnMgKFJvY2tjaGlwIFJLMzU2OCwgUmVuZXNhcywgU29jZnBnYSkgYW5kIEludGVsIERXTUFDIFBDSSBoYXJkd2FyZSwgbm9uZSBvZiB3aGljaCBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBjbG91ZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgY2Fubm90IGJlIGV4ZWN1dGVkIGR1cmluZyB2aXJ0dWFsaXplZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjQ2YThmNGM5OTUyOTYxYjdmOGY5NmFmOGYyZjQ0NjFhOGY5NTk3MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMDU6MTA6MTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMDg1MmQwYmNiNjZhMlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3Mvcm9ja2NoaXAtZHd4cGNzLnlhbWxcbkBAIC0wLDAgKzEsMTEwIEBAXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpXG4rJVlBTUwgMS4yXG4rLS0tXG4rJGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvcGNzL3JvY2tjaGlwLWR3eHBjcy55YW1sI1xuKyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuK1xuK3RpdGxlOiBSb2NrY2hpcCBSSzM1NjggU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBQQ1NcbitcbittYWludGFpbmVyczpcbisgIC0gQ29pYSBQcmFudCBcdTAwM2Njb2lhcHJhbnRAZ21haWwuY29tXHUwMDNlXG4rXG4rZGVzY3JpcHRpb246IHxcbisgIFJvY2tjaGlwIFJLMzU2OCBTb0MgaW50ZWdyYXRlcyBhIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgUGh5c2ljYWxcbisgIENvZGluZyBTdWJsYXllciAoWFBDUykuXG4rICBUaGUgUENTIHByb3ZpZGVzIGFuIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBNZWRpYSBBY2Nlc3MgQ29udHJvbCAoTUFDKVxuKyAgYW5kIHRoZSBQaHlzaWNhbCBNZWRpdW0gQXR0YWNobWVudCAoUE1BKSBzdWJsYXllciB0aHJvdWdoIGEgTWVkaWFcbisgIEluZGVwZW5kZW50IEludGVyZmFjZSAoR01JSSkuXG4rXG4rICBUaGUgWFBDUyBpcyBhY2Nlc3NlZCBvdmVyIHRoZSBBUEIzIGJ1cyBhbmQgaW50ZXJuYWxseSBjb25uZWN0ZWQgdG8gYVxuKyAgTmFuZW5nIENvbWJvIFNlckRlcyBQSFkuXG4rICBJdCBzdXBwb3J0cyAxMDAwQkFTRS1YLCBTR01JSSBhbmQgUVNHTUlJIG1vZGVzLlxuK1xuKyAgVGhlIGJsb2NrIGNvbnRhaW5zIGZvdXIgTUlJIHBvcnRzIHRoYXQgY2FuIGJlIGluZGl2aWR1YWxseSBlbmFibGVkIGFuZFxuKyAgcm91dGVkIHRvIG9uZSBvZiB0aGUgRXRoZXJuZXQgR01BQyBjb250cm9sbGVycyB2aWEgdGhlIHBjcy1oYW5kbGVcbisgIHByb3BlcnR5IGluIHRoZSBNQUMgZGV2aWNlIHRyZWUgbm9kZS5cbitcbitwcm9wZXJ0aWVzOlxuKyAgY29tcGF0aWJsZTpcbisgICAgY29uc3Q6IHJvY2tjaGlwLHJrMzU2OC14cGNzXG4rXG4rICByZWc6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4rICBcIiNhZGRyZXNzLWNlbGxzXCI6XG4rICAgIGNvbnN0OiAxXG4rXG4rICBcIiNzaXplLWNlbGxzXCI6XG4rICAgIGNvbnN0OiAwXG4rXG4rICBjbG9ja3M6XG4rICAgIGl0ZW1zOlxuKyAgICAgIC0gZGVzY3JpcHRpb246IEFQQjMgYnVzIGludGVyZmFjZSBjbG9jayAoY2xrX2Nzcl9pKSwgcmVxdWlyZWQgZm9yIHJlZ2lzdGVyIGFjY2Vzc1xuKyAgICAgIC0gZGVzY3JpcHRpb246IEVFRSBjbG9jayAoY2xrX2VlZV9pKSwgcmVxdWlyZWQgZm9yIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgb3BlcmF0aW9uXG4rXG4rICBjbG9jay1uYW1lczpcbisgICAgaXRlbXM6XG4rICAgICAgLSBjb25zdDogY3NyXG4rICAgICAgLSBjb25zdDogZWVlXG4rXG4rICBwaHlzOlxuKyAgICBtYXhJdGVtczogMVxuK1xuKyAgcGh5LW5hbWVzOlxuKyAgICBjb25zdDogc2VyZGVzXG4rXG4rICBwb3dlci1kb21haW5zOlxuKyAgICBtYXhJdGVtczogMVxuK1xuK3BhdHRlcm5Qcm9wZXJ0aWVzOlxuKyAgXCJecGNzLW1paUBbMC0zXSRcIjpcbisgICAgdHlwZTogb2JqZWN0XG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIE9uZSBvZiB0aGUgZm91ciBNSUkgcG9ydHMgb2YgdGhlIFhQQ1MuIFRoZSBwb3J0IGlzIGxpbmtlZCB0byBhblxuKyAgICAgIEV0aGVybmV0IE1BQyBjb250cm9sbGVyIHZpYSB0aGUgcGNzLWhhbmRsZSBwcm9wZXJ0eSBpbiB0aGUgTUFDJ3NcbisgICAgICBkZXZpY2UgdHJlZSBub2RlLlxuK1xuKyAgICBwcm9wZXJ0aWVzOlxuKyAgICAgIHJlZzpcbisgICAgICAgIGRlc2NyaXB0aW9uOiBNSUkgcG9ydCBudW1iZXIuXG4rICAgICAgICBlbnVtOiBbMCwgMSwgMiwgM11cbitcbisgICAgcmVxdWlyZWQ6XG4rICAgICAgLSByZWdcbitcbisgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlXG4rXG4rcmVxdWlyZWQ6XG4rICAtIGNvbXBhdGlibGVcbisgIC0gcmVnXG4rICAtIFwiI2FkZHJlc3MtY2VsbHNcIlxuKyAgLSBcIiNzaXplLWNlbGxzXCJcbisgIC0gY2xvY2tzXG4rICAtIGNsb2NrLW5hbWVzXG4rICAtIHBoeXNcbisgIC0gcGh5LW5hbWVzXG4rICAtIHBvd2VyLWRvbWFpbnNcbitcbithZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2VcbitcbitleGFtcGxlczpcbisgIC0gfFxuKyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9jbG9jay9yazM1NjgtY3J1LmhcdTAwM2VcbisgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvcG93ZXIvcmszNTY4LXBvd2VyLmhcdTAwM2VcbisgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvcGh5L3BoeS5oXHUwMDNlXG4rXG4rICAgIHBjc0BmZGEwMDAwMCB7XG4rICAgICAgY29tcGF0aWJsZSA9IFwicm9ja2NoaXAscmszNTY4LXhwY3NcIjtcbisgICAgICByZWcgPSBcdTAwM2MweGZkYTAwMDAwIDB4MjAwMDAwXHUwMDNlO1xuKyAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbisgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4rICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2Y3J1IFBDTEtfWFBDU1x1MDAzZSwgXHUwMDNjXHUwMDI2Y3J1IENMS19YUENTX0VFRVx1MDAzZTtcbisgICAgICBjbG9jay1uYW1lcyA9IFwiY3NyXCIsIFwiZWVlXCI7XG4rICAgICAgcGh5cyA9IFx1MDAzY1x1MDAyNmNvbWJwaHkyIFBIWV9UWVBFX1NHTUlJXHUwMDNlO1xuKyAgICAgIHBoeS1uYW1lcyA9IFwic2VyZGVzXCI7XG4rICAgICAgcG93ZXItZG9tYWlucyA9IFx1MDAzY1x1MDAyNnBvd2VyIFJLMzU2OF9QRF9QSVBFXHUwMDNlO1xuK1xuKyAgICAgIHBjcy1taWlAMCB7XG4rICAgICAgICByZWcgPSBcdTAwM2MwXHUwMDNlO1xuKyAgICAgIH07XG4rICAgIH07XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LnlhbWxcbmluZGV4IDM3OWIwOGJkOWU5N2EuLjhlODk4YmNlOWFmNzMgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS55YW1sXG5AQCAtODAsNiArODAsMTUgQEAgcHJvcGVydGllczpcbiAgICAgZGVzY3JpcHRpb246XG4gICAgICAgU29tZSBhZGRpdGlvbmFsIHBpcGUgc2V0dGluZ3MgYXJlIGFjY2Vzc2VkIHRocm91Z2ggR1JGIHJlZ3MuXG4gXG4rICByb2NrY2hpcCxzZ21paS1tYWMtc2VsOlxuKyAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50MzJcbisgICAgZW51bTogWzAsIDFdXG4rICAgIGRlZmF1bHQ6IDFcbisgICAgZGVzY3JpcHRpb246XG4rICAgICAgU2VsZWN0IGdtYWMwIG9yIGdtYWMxIHRvIGJlIHVzZWQgYXMgU0dNSUkgY29udHJvbGxlci5cbisgICAgICBUaGUgaGFyZHdhcmUgcmVzZXQgdmFsdWUgaXMgR01BQzEgKDEpLiBTZXQgdGhpcyB0byAwIHRvIHJvdXRlXG4rICAgICAgU0dNSUkgdG8gR01BQzAuXG4rXG4gICBcIiNwaHktY2VsbHNcIjpcbiAgICAgY29uc3Q6IDFcbiBcbkBAIC0xMDUsNiArMTE0LDEwIEBAIGFsbE9mOlxuICAgICAgICAgICBtYXhJdGVtczogMVxuICAgICAgICAgcmVzZXQtbmFtZXM6XG4gICAgICAgICAgIG1heEl0ZW1zOiAxXG4rICAgICAgICByb2NrY2hpcCxzZ21paS1tYWMtc2VsOiB0cnVlXG4rICAgIGVsc2U6XG4rICAgICAgcHJvcGVydGllczpcbisgICAgICAgIHJvY2tjaGlwLHNnbWlpLW1hYy1zZWw6IGZhbHNlXG4gICAtIGlmOlxuICAgICAgIHByb3BlcnRpZXM6XG4gICAgICAgICBjb21wYXRpYmxlOlxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcbmluZGV4IDNhMTlkYTc0ZDAwYzkuLmMzYjE3NzUyY2M4MTcgMTAwNjQ0XG4tLS0gYS9NQUlOVEFJTkVSU1xuKysrIGIvTUFJTlRBSU5FUlNcbkBAIC0yMzc0NCw2ICsyMzc0NCwxNSBAQCBTOlx0TWFpbnRhaW5lZFxuIEY6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvcm9ja2NoaXAscmszNTc2LXNhaS55YW1sXG4gRjpcdHNvdW5kL3NvYy9yb2NrY2hpcC9yb2NrY2hpcF9zYWkuKlxuIFxuK1JPQ0tDSElQIFhQQ1MgRFJJVkVSXG4rTTpcdENvaWEgUHJhbnQgXHUwMDNjY29pYXByYW50QGdtYWlsLmNvbVx1MDAzZVxuK0w6XHRuZXRkZXZAdmdlci5rZXJuZWwub3JnXG4rTDpcdGxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmdcbitTOlx0TWFpbnRhaW5lZFxuK0Y6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcC1kd3hwY3MueWFtbFxuK0Y6XHRkcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuY1xuK0Y6XHRpbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXG4rXG4gUk9DS0VSIERSSVZFUlxuIE06XHRKaXJpIFBpcmtvIFx1MDAzY2ppcmlAcmVzbnVsbGkudXNcdTAwM2VcbiBMOlx0bmV0ZGV2QHZnZXIua2VybmVsLm9yZ1xuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LXBob3RvbmljYXQuZHRzIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHNcbmluZGV4IDU4YzEwNTJiYThlZjMuLjI1Y2FhNDQxOTg4NDMgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC1waG90b25pY2F0LmR0c1xuKysrIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjgtcGhvdG9uaWNhdC5kdHNcbkBAIC0zLDYgKzMsNyBAQFxuIC9kdHMtdjEvO1xuIFxuICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvbGVkcy9jb21tb24uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL3BpbmN0cmwvcm9ja2NoaXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL3NvYy9yb2NrY2hpcCx2b3AyLmhcdTAwM2VcbiAjaW5jbHVkZSBcInJrMzU2OC5kdHNpXCJcbkBAIC0yNDIsNiArMjQzLDcgQEAgXHUwMDI2Y29tYnBoeTEge1xuIFxuIFx1MDAyNmNvbWJwaHkyIHtcbiBcdHN0YXR1cyA9IFwib2theVwiO1xuK1x0cm9ja2NoaXAsc2dtaWktbWFjLXNlbCA9IFx1MDAzYzBcdTAwM2U7XG4gfTtcbiBcbiBcdTAwMjZjcHUwIHtcbkBAIC0yNjAsOSArMjYyLDE4IEBAIFx1MDAyNmNwdTMge1xuIFx0Y3B1LXN1cHBseSA9IFx1MDAzY1x1MDAyNnZkZF9jcHVcdTAwM2U7XG4gfTtcbiBcbi0vKiBNb3RvcmNvbW0gWVQ4NTIxU0MgTEFOIHBvcnQgKHJlcXVpcmUgU0dNSUkpICovXG4rLyogTW90b3Jjb21tIFlUODUyMVNDIExBTiBwb3J0ICovXG4gXHUwMDI2Z21hYzAge1xuLVx0c3RhdHVzID0gXCJkaXNhYmxlZFwiO1xuK1x0YXNzaWduZWQtY2xvY2tzID0gXHUwMDNjXHUwMDI2Y3J1IFNDTEtfR01BQzBfUlhfVFhcdTAwM2U7XG4rXHRhc3NpZ25lZC1jbG9jay1wYXJlbnRzID0gXHUwMDNjXHUwMDI2eHBjc19nbWFjMF9jbGtcdTAwM2U7XG4rXHRwY3MtaGFuZGxlID0gXHUwMDNjXHUwMDI2eHBjc19taWkwXHUwMDNlO1xuK1x0bWFuYWdlZCA9IFwiaW4tYmFuZC1zdGF0dXNcIjtcbitcdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzZ21paV9waHlcdTAwM2U7XG4rXHRwaHktbW9kZSA9IFwic2dtaWlcIjtcbitcdHBoeS1zdXBwbHkgPSBcdTAwM2NcdTAwMjZ2Y2NfM3YzXHUwMDNlO1xuK1x0cGluY3RybC1uYW1lcyA9IFwiZGVmYXVsdFwiO1xuK1x0cGluY3RybC0wID0gXHUwMDNjXHUwMDI2Z21hYzBfbWlpbVx1MDAzZTtcbitcdHN0YXR1cyA9IFwib2theVwiO1xuIH07XG4gXG4gLyogTW90b3Jjb21tIFlUODUyMVNDIFdBTiBwb3J0ICovXG5AQCAtMzQxLDYgKzM1MiwzNiBAQCBcdTAwMjZpMnMwXzhjaCB7XG4gXHRzdGF0dXMgPSBcIm9rYXlcIjtcbiB9O1xuIFxuK1x1MDAyNm1kaW8wIHtcbitcdHNnbWlpX3BoeTogZXRoZXJuZXQtcGh5QDMge1xuK1x0XHRjb21wYXRpYmxlID0gXCJldGhlcm5ldC1waHktaWVlZTgwMi4zLWMyMlwiO1xuK1x0XHRyZWcgPSBcdTAwM2MweDNcdTAwM2U7XG4rXHRcdG1heC1zcGVlZCA9IFx1MDAzYzEwMDBcdTAwM2U7XG4rXHRcdHJlc2V0LWFzc2VydC11cyA9IFx1MDAzYzIwMDAwXHUwMDNlO1xuK1x0XHRyZXNldC1kZWFzc2VydC11cyA9IFx1MDAzYzEwMDAwMFx1MDAzZTtcbitcdFx0cmVzZXQtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvMyBSS19QQzYgR1BJT19BQ1RJVkVfTE9XXHUwMDNlO1xuK1xuK1x0XHRsZWRzIHtcbitcdFx0XHQjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4rXHRcdFx0I3NpemUtY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuK1xuK1x0XHRcdGxlZEAxIHtcbitcdFx0XHRcdHJlZyA9IFx1MDAzYzFcdTAwM2U7XG4rXHRcdFx0XHRjb2xvciA9IFx1MDAzY0xFRF9DT0xPUl9JRF9BTUJFUlx1MDAzZTtcbitcdFx0XHRcdGZ1bmN0aW9uID0gTEVEX0ZVTkNUSU9OX0xBTjtcbitcdFx0XHRcdGRlZmF1bHQtc3RhdGUgPSBcImtlZXBcIjtcbitcdFx0XHR9O1xuK1xuK1x0XHRcdGxlZEAyIHtcbitcdFx0XHRcdHJlZyA9IFx1MDAzYzJcdTAwM2U7XG4rXHRcdFx0XHRjb2xvciA9IFx1MDAzY0xFRF9DT0xPUl9JRF9HUkVFTlx1MDAzZTtcbitcdFx0XHRcdGZ1bmN0aW9uID0gTEVEX0ZVTkNUSU9OX0xBTjtcbitcdFx0XHRcdGRlZmF1bHQtc3RhdGUgPSBcImtlZXBcIjtcbitcdFx0XHR9O1xuK1x0XHR9O1xuK1x0fTtcbit9O1xuK1xuIFx1MDAyNm1kaW8xIHtcbiBcdHJnbWlpX3BoeTogZXRoZXJuZXQtcGh5QDMge1xuIFx0XHRjb21wYXRpYmxlID0gXCJldGhlcm5ldC1waHktaWVlZTgwMi4zLWMyMlwiO1xuQEAgLTM1MCw2ICszOTEsMjUgQEAgcmdtaWlfcGh5OiBldGhlcm5ldC1waHlAMyB7XG4gXHRcdHJlc2V0LWdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzQgUktfUEMwIEdQSU9fQUNUSVZFX0xPV1x1MDAzZTtcbiBcdFx0cngtaW50ZXJuYWwtZGVsYXktcHMgPSBcdTAwM2MxNTAwXHUwMDNlO1xuIFx0XHR0eC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzE1MDBcdTAwM2U7XG4rXG4rXHRcdGxlZHMge1xuK1x0XHRcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbitcdFx0XHQjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4rXG4rXHRcdFx0bGVkQDEge1xuK1x0XHRcdFx0cmVnID0gXHUwMDNjMVx1MDAzZTtcbitcdFx0XHRcdGNvbG9yID0gXHUwMDNjTEVEX0NPTE9SX0lEX0FNQkVSXHUwMDNlO1xuK1x0XHRcdFx0ZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fV0FOO1xuK1x0XHRcdFx0ZGVmYXVsdC1zdGF0ZSA9IFwia2VlcFwiO1xuK1x0XHRcdH07XG4rXG4rXHRcdFx0bGVkQDIge1xuK1x0XHRcdFx0cmVnID0gXHUwMDNjMlx1MDAzZTtcbitcdFx0XHRcdGNvbG9yID0gXHUwMDNjTEVEX0NPTE9SX0lEX0dSRUVOXHUwMDNlO1xuK1x0XHRcdFx0ZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fV0FOO1xuK1x0XHRcdFx0ZGVmYXVsdC1zdGF0ZSA9IFwia2VlcFwiO1xuK1x0XHRcdH07XG4rXHRcdH07XG4gXHR9O1xuIH07XG4gXG5AQCAtNTg2LDMgKzY0NiwxMyBAQCBcdTAwMjZ4aW4zMmsge1xuIFx0cGluY3RybC1uYW1lcyA9IFwiZGVmYXVsdFwiO1xuIFx0cGluY3RybC0wID0gXHUwMDNjXHUwMDI2Y2xrMzJrX291dDFcdTAwM2U7XG4gfTtcbitcbitcdTAwMjZ4cGNzIHtcbitcdHN0YXR1cyA9IFwib2theVwiO1xuK1x0cGh5cyA9IFx1MDAzY1x1MDAyNmNvbWJwaHkyIFBIWV9UWVBFX1NHTUlJXHUwMDNlO1xuK1x0cGh5LW5hbWVzID0gXCJzZXJkZXNcIjtcbit9O1xuK1xuK1x1MDAyNnhwY3NfbWlpMCB7XG4rXHRzdGF0dXMgPSBcIm9rYXlcIjtcbit9O1xuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2kgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpXG5pbmRleCAzYmM2NTNmMDI3ZjFmLi45ODllMTY0YzBlYjM5IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaVxuKysrIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaVxuQEAgLTExMCw2ICsxMTAsNTEgQEAgc2F0YTA6IHNhdGFAZmMwMDAwMDAge1xuIFx0XHRzdGF0dXMgPSBcImRpc2FibGVkXCI7XG4gXHR9O1xuIFxuK1x0eHBjczogcGNzQGZkYTAwMDAwIHtcbitcdFx0Y29tcGF0aWJsZSA9IFwicm9ja2NoaXAscmszNTY4LXhwY3NcIjtcbitcdFx0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuK1x0XHQjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4rXHRcdHJlZyA9IFx1MDAzYzB4MCAweGZkYTAwMDAwIDB4MCAweDIwMDAwMFx1MDAzZTtcbitcdFx0Y2xvY2tzID0gXHUwMDNjXHUwMDI2Y3J1IFBDTEtfWFBDU1x1MDAzZSwgXHUwMDNjXHUwMDI2Y3J1IENMS19YUENTX0VFRVx1MDAzZTtcbitcdFx0Y2xvY2stbmFtZXMgPSBcImNzclwiLCBcImVlZVwiO1xuK1x0XHRwb3dlci1kb21haW5zID0gXHUwMDNjXHUwMDI2cG93ZXIgUkszNTY4X1BEX1BJUEVcdTAwM2U7XG4rXHRcdHN0YXR1cyA9IFwiZGlzYWJsZWRcIjtcbitcbitcdFx0eHBjc19taWkwOiBwY3MtbWlpQDAge1xuK1x0XHRcdHJlZyA9IFx1MDAzYzBcdTAwM2U7XG4rXHRcdFx0c3RhdHVzID0gXCJkaXNhYmxlZFwiO1xuK1x0XHR9O1xuK1xuK1x0XHR4cGNzX21paTE6IHBjcy1taWlAMSB7XG4rXHRcdFx0cmVnID0gXHUwMDNjMVx1MDAzZTtcbitcdFx0XHRzdGF0dXMgPSBcImRpc2FibGVkXCI7XG4rXHRcdH07XG4rXG4rXHRcdHhwY3NfbWlpMjogcGNzLW1paUAyIHtcbitcdFx0XHRyZWcgPSBcdTAwM2MyXHUwMDNlO1xuK1x0XHRcdHN0YXR1cyA9IFwiZGlzYWJsZWRcIjtcbitcdFx0fTtcbitcbitcdFx0eHBjc19taWkzOiBwY3MtbWlpQDMge1xuK1x0XHRcdHJlZyA9IFx1MDAzYzNcdTAwM2U7XG4rXHRcdFx0c3RhdHVzID0gXCJkaXNhYmxlZFwiO1xuK1x0XHR9O1xuK1x0fTtcbitcbitcdHhwY3NfZ21hYzBfY2xrOiB4cGNzLWdtYWMwLWNsb2NrIHtcbitcdFx0Y29tcGF0aWJsZSA9IFwiZml4ZWQtY2xvY2tcIjtcbitcdFx0Y2xvY2stZnJlcXVlbmN5ID0gXHUwMDNjMTI1MDAwMDAwXHUwMDNlO1xuK1x0XHRjbG9jay1vdXRwdXQtbmFtZXMgPSBcImNsa19nbWFjMF94cGNzX21paVwiO1xuK1x0XHQjY2xvY2stY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuK1x0fTtcbitcbitcdHhwY3NfZ21hYzFfY2xrOiB4cGNzLWdtYWMxLWNsb2NrIHtcbitcdFx0Y29tcGF0aWJsZSA9IFwiZml4ZWQtY2xvY2tcIjtcbitcdFx0Y2xvY2stZnJlcXVlbmN5ID0gXHUwMDNjMTI1MDAwMDAwXHUwMDNlO1xuK1x0XHRjbG9jay1vdXRwdXQtbmFtZXMgPSBcImNsa19nbWFjMV94cGNzX21paVwiO1xuK1x0XHQjY2xvY2stY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuK1x0fTtcbitcbiBcdHBpcGVfcGh5X2dyZjA6IHN5c2NvbkBmZGM3MDAwMCB7XG4gXHRcdGNvbXBhdGlibGUgPSBcInJvY2tjaGlwLHJrMzU2OC1waXBlLXBoeS1ncmZcIiwgXCJzeXNjb25cIjtcbiBcdFx0cmVnID0gXHUwMDNjMHgwIDB4ZmRjNzAwMDAgMHgwIDB4MTAwMFx1MDAzZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1xuaW5kZXggZTNkZDVhZGRhNWFjYS4uNTA4OGFjYzA2OTgyZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcbkBAIC0xNzAsNiArMTcwLDcgQEAgY29uZmlnIERXTUFDX1JPQ0tDSElQXG4gXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcbiBcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1JPQ0tDSElQIHx8IENPTVBJTEVfVEVTVClcbiBcdHNlbGVjdCBNRkRfU1lTQ09OXG4rXHRzZWxlY3QgUENTX1hQQ1NfUk9DS0NISVBcbiBcdGhlbHBcbiBcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBSb2NrY2hpcCBSSzMyODggU29DLlxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG5pbmRleCBmNWY5ZmE2N2VjZDc3Li5mZDVmMDFjODk0MWMxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xuQEAgLTYwMywxMyArNjAzLDQ3IEBAIHN0YXRpYyB2b2lkIGNvbW1vbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxuIFx0cGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZW5lZWRzX3Jlc2V0ID0gdHJ1ZTtcbiB9XG4gXG4rc3RhdGljIGludCBpbnRlbF9tZ2JlX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbit7XG4rXHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZGV2bm9kZSwgKnBjc25vZGU7XG4rXHRzdHJ1Y3QgZHdfeHBjcyAqeHBjcyA9IE5VTEw7XG4rXHRpbnQgYWRkcjtcbitcbitcdGRldm5vZGUgPSBkZXZfZndub2RlKHByaXYtXHUwMDNlZGV2aWNlKTtcbitcbitcdGlmIChmd25vZGVfcHJvcGVydHlfcHJlc2VudChkZXZub2RlLCBcInBjcy1oYW5kbGVcIikpIHtcbitcdFx0cGNzbm9kZSA9IGZ3bm9kZV9maW5kX3JlZmVyZW5jZShkZXZub2RlLCBcInBjcy1oYW5kbGVcIiwgMCk7XG4rXHRcdHhwY3MgPSB4cGNzX2NyZWF0ZV9md25vZGUocGNzbm9kZSk7XG4rXHRcdGZ3bm9kZV9oYW5kbGVfcHV0KHBjc25vZGUpO1xuK1x0fSBlbHNlIHtcbitcdFx0YWRkciA9IGZmcyhwcml2LVx1MDAzZXBsYXQtXHUwMDNlbWRpb19idXNfZGF0YS1cdTAwM2VwY3NfbWFzaykgLSAxO1xuK1x0XHR4cGNzID0geHBjc19jcmVhdGVfbWRpb2Rldihwcml2LVx1MDAzZW1paSwgYWRkcik7XG4rXHR9XG4rXG4rXHRpZiAoSVNfRVJSKHhwY3MpKVxuK1x0XHRyZXR1cm4gUFRSX0VSUih4cGNzKTtcbitcbitcdHhwY3NfY29uZmlnX2VlZV9tdWx0X2ZhY3QoeHBjcywgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZW11bHRfZmFjdF8xMDBucyk7XG4rXG4rXHRwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MgPSB4cGNzO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIGludGVsX21nYmVfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuK3tcbitcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKVxuK1x0XHRyZXR1cm47XG4rXG4rXHR4cGNzX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKTtcbitcdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IE5VTEw7XG4rfVxuK1xuIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKmludGVsX21nYmVfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdFx0XHRcdFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuLVx0LyogcGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZWhhc194cGNzIGhhcyBiZWVuIHNldCB0cnVlLCBzbyB0aGVyZVxuLVx0ICogc2hvdWxkIGFsd2F5cyBiZSBhbiBYUENTLiBUaGUgb3JpZ2luYWwgY29kZSB3b3VsZCBhbHdheXNcbi1cdCAqIHJldHVybiB0aGlzIGlmIHByZXNlbnQuXG4tXHQgKi9cbitcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKVxuK1x0XHRyZXR1cm4gTlVMTDtcbitcbiBcdHJldHVybiB4cGNzX3RvX3BoeWxpbmtfcGNzKHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyk7XG4gfVxuIFxuQEAgLTczMyw2ICs3NjcsOCBAQCBzdGF0aWMgaW50IGludGVsX21nYmVfY29tbW9uX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gXHQgICAgcGxhdC1cdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgpIHtcbiBcdFx0cGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZXBjc19tYXNrID0gQklUX1UzMihJTlRFTF9NR0JFX1hQQ1NfQUREUik7XG4gXHRcdHBsYXQtXHUwMDNlZGVmYXVsdF9hbl9pbmJhbmQgPSB0cnVlO1xuK1x0XHRwbGF0LVx1MDAzZXBjc19pbml0ID0gaW50ZWxfbWdiZV9wY3NfaW5pdDtcbitcdFx0cGxhdC1cdTAwM2VwY3NfZXhpdCA9IGludGVsX21nYmVfcGNzX2V4aXQ7XG4gXHRcdHBsYXQtXHUwMDNlc2VsZWN0X3BjcyA9IGludGVsX21nYmVfc2VsZWN0X3BjcztcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmNcbmluZGV4IDE5ZjM0ZTE4YmZlZjIuLjlhZjMyYzI2ZjljMTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguY1xuQEAgLTgxLDggKzgxLDExIEBAIHN0YXRpYyBpbnQgcmVuZXNhc19nbWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcbiBzdGF0aWMgdm9pZCByZW5lc2FzX2dtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIHtcbi1cdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuLVx0XHRtaWljX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcyk7XG4rXHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4rXHRcdHJldHVybjtcbitcbitcdG1paWNfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKTtcbitcdHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MgPSBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpyZW5lc2FzX2dtYWNfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmNcbmluZGV4IDhkNzA0MmU2ODkyNjEuLmU0N2NhMWJlYzViOGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jXG5AQCAtMjAsNiArMjAsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZmQvc3lzY29uLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcG1fcnVudGltZS5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJzdG1tYWNfcGxhdGZvcm0uaFwiXG5AQCAtNDcsNiArNDgsNyBAQCBzdHJ1Y3QgcmtfZ21hY19vcHMge1xuIFx0dm9pZCAoKnNldF90b19yZ21paSkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsXG4gXHRcdFx0ICAgICBpbnQgdHhfZGVsYXksIGludCByeF9kZWxheSk7XG4gXHR2b2lkICgqc2V0X3RvX3JtaWkpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KTtcbitcdHZvaWQgKCpzZXRfdG9fc2dtaWkpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KTtcbiBcdGludCAoKnNldF9zcGVlZCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsXG4gXHRcdFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsIGludCBzcGVlZCk7XG4gXHR2b2lkICgqaW50ZWdyYXRlZF9waHlfcG93ZXJ1cCkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpO1xuQEAgLTYzLDYgKzY1LDcgQEAgc3RydWN0IHJrX2dtYWNfb3BzIHtcbiBcdGJvb2wgY2xvY2tfZ3JmX3JlZ19pbl9waHA7XG4gXHRib29sIHN1cHBvcnRzX3JnbWlpO1xuIFx0Ym9vbCBzdXBwb3J0c19ybWlpO1xuK1x0Ym9vbCBzdXBwb3J0c19zZ21paTtcbiBcdGJvb2wgcGhwX2dyZl9yZXF1aXJlZDtcbiBcdGJvb2wgcmVnc192YWxpZDtcbiBcdHUzMiByZWdzW107XG5AQCAtOTgsNiArMTAxLDcgQEAgc3RydWN0IHJrX3ByaXZfZGF0YSB7XG4gXHRib29sIGludGVncmF0ZWRfcGh5O1xuIFx0Ym9vbCBzdXBwb3J0c19yZ21paTtcbiBcdGJvb2wgc3VwcG9ydHNfcm1paTtcbitcdGJvb2wgc3VwcG9ydHNfc2dtaWk7XG4gXG4gXHRzdHJ1Y3QgY2xrX2J1bGtfZGF0YSAqY2xrcztcbiBcdGludCBudW1fY2xrcztcbkBAIC04MDksNiArODEzLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBya19nbWFjX29wcyByazM1Mjhfb3BzID0ge1xuICNkZWZpbmUgUkszNTY4X0dSRl9HTUFDMV9DT04xXHRcdDB4MDM4Y1xuIFxuIC8qIFJLMzU2OF9HUkZfR01BQzBfQ09OMSBcdTAwMjZcdTAwMjYgUkszNTY4X0dSRl9HTUFDMV9DT04xICovXG4rI2RlZmluZSBSSzM1NjhfR01BQ19NT0RFX1JNSUlfUkdNSUlcdFx0R1JGX0NMUl9CSVQoNylcbisjZGVmaW5lIFJLMzU2OF9HTUFDX01PREVfU0dNSUlfUVNHTUlJXHRcdEdSRl9CSVQoNylcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX0ZMT1dfQ1RSTFx0XHRcdEdSRl9CSVQoMylcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX0ZMT1dfQ1RSTF9DTFJcdFx0R1JGX0NMUl9CSVQoMylcbiAjZGVmaW5lIFJLMzU2OF9HTUFDX1JYQ0xLX0RMWV9FTkFCTEVcdFx0R1JGX0JJVCgxKVxuQEAgLTg1MSwxOCArODU3LDMyIEBAIHN0YXRpYyB2b2lkIHJrMzU2OF9zZXRfdG9fcmdtaWkoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYsXG4gXHRcdCAgICAgUkszNTY4X0dNQUNfQ0xLX1RYX0RMX0NGRyh0eF9kZWxheSkpO1xuIFxuIFx0cmVnbWFwX3dyaXRlKGJzcF9wcml2LVx1MDAzZWdyZiwgY29uMSxcbitcdFx0ICAgICBSSzM1NjhfR01BQ19NT0RFX1JNSUlfUkdNSUkgfFxuIFx0XHQgICAgIFJLMzU2OF9HTUFDX1JYQ0xLX0RMWV9FTkFCTEUgfFxuIFx0XHQgICAgIFJLMzU2OF9HTUFDX1RYQ0xLX0RMWV9FTkFCTEUpO1xuIH1cbiBcbitzdGF0aWMgdm9pZCByazM1Njhfc2V0X3RvX3NnbWlpKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuK3tcbitcdHUzMiBjb24xO1xuK1xuK1x0Y29uMSA9IChic3BfcHJpdi1cdTAwM2VpZCA9PSAxKSA/IFJLMzU2OF9HUkZfR01BQzFfQ09OMSA6XG4rXHRcdFx0XHQgICAgIFJLMzU2OF9HUkZfR01BQzBfQ09OMTtcbitcbitcdHJlZ21hcF93cml0ZShic3BfcHJpdi1cdTAwM2VncmYsIGNvbjEsIFJLMzU2OF9HTUFDX01PREVfU0dNSUlfUVNHTUlJKTtcbit9XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBya19nbWFjX29wcyByazM1Njhfb3BzID0ge1xuIFx0LmluaXQgPSByazM1NjhfaW5pdCxcbiBcdC5zZXRfdG9fcmdtaWkgPSByazM1Njhfc2V0X3RvX3JnbWlpLFxuK1x0LnNldF90b19zZ21paSA9IHJrMzU2OF9zZXRfdG9fc2dtaWksXG4rXG4gXHQuc2V0X3NwZWVkID0gcmtfc2V0X2Nsa19tYWNfc3BlZWQsXG4gXG4gXHQuZ21hY19waHlfaW50Zl9zZWxfbWFzayA9IEdFTk1BU0tfVTE2KDYsIDQpLFxuIFxuIFx0LnN1cHBvcnRzX3JtaWkgPSB0cnVlLFxuK1x0LnN1cHBvcnRzX3NnbWlpID0gdHJ1ZSxcbiBcbiBcdC5yZWdzX3ZhbGlkID0gdHJ1ZSxcbiBcdC5yZWdzID0ge1xuQEAgLTEyMDgsNiArMTIyOCw0MyBAQCBzdGF0aWMgdm9pZCBya19waHlfcG93ZXJkb3duKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuIFx0XHRkZXZfZXJyKGJzcF9wcml2LVx1MDAzZWRldiwgXCJmYWlsIHRvIGRpc2FibGUgcGh5LXN1cHBseVxcblwiKTtcbiB9XG4gXG4rc3RhdGljIGludCBya19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4re1xuK1x0c3RydWN0IGRldmljZV9ub2RlICpucCA9IHByaXYtXHUwMDNlZGV2aWNlLVx1MDAzZW9mX25vZGU7XG4rXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBjc19ub2RlO1xuK1x0c3RydWN0IGR3X3hwY3MgKnhwY3M7XG4rXG4rXHRwY3Nfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUobnAsIFwicGNzLWhhbmRsZVwiLCAwKTtcbitcdGlmICghcGNzX25vZGUpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0eHBjcyA9IHhwY3NfcmtfY3JlYXRlKHByaXYtXHUwMDNlZGV2aWNlLCBwY3Nfbm9kZSk7XG4rXHRvZl9ub2RlX3B1dChwY3Nfbm9kZSk7XG4rXHRpZiAoSVNfRVJSKHhwY3MpKVxuK1x0XHRyZXR1cm4gUFRSX0VSUih4cGNzKTtcbitcbitcdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IHhwY3M7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIHZvaWQgcmtfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuK3tcbitcdGlmICghcHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKVxuK1x0XHRyZXR1cm47XG4rXG4rXHR4cGNzX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKTtcbitcdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IE5VTEw7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnJrX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuK1x0XHRcdFx0XHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbit7XG4rXHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNleHBjcylcbitcdFx0cmV0dXJuIE5VTEw7XG4rXG4rXHRyZXR1cm4geHBjc190b19waHlsaW5rX3Bjcyhwcml2LVx1MDAzZWh3LVx1MDAzZXhwY3MpO1xuK31cbitcbiBzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuIFx0XHRcdFx0XHQgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcbiBcdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgcmtfZ21hY19vcHMgKm9wcylcbkBAIC0xMzMwLDYgKzEzODcsNyBAQCBzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuIFxuIFx0YnNwX3ByaXYtXHUwMDNlc3VwcG9ydHNfcmdtaWkgPSBvcHMtXHUwMDNlc3VwcG9ydHNfcmdtaWkgfHwgISFvcHMtXHUwMDNlc2V0X3RvX3JnbWlpO1xuIFx0YnNwX3ByaXYtXHUwMDNlc3VwcG9ydHNfcm1paSA9IG9wcy1cdTAwM2VzdXBwb3J0c19ybWlpIHx8ICEhb3BzLVx1MDAzZXNldF90b19ybWlpO1xuK1x0YnNwX3ByaXYtXHUwMDNlc3VwcG9ydHNfc2dtaWkgPSBvcHMtXHUwMDNlc3VwcG9ydHNfc2dtaWkgfHwgISFvcHMtXHUwMDNlc2V0X3RvX3NnbWlpO1xuIFxuIFx0aWYgKG9wcy1cdTAwM2Vpbml0KSB7XG4gXHRcdHJldCA9IG9wcy1cdTAwM2Vpbml0KGJzcF9wcml2KTtcbkBAIC0xMzYxLDYgKzE0MTksMTAgQEAgc3RhdGljIGludCBya19nbWFjX2NoZWNrX29wcyhzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiBcdFx0aWYgKCFic3BfcHJpdi1cdTAwM2VzdXBwb3J0c19ybWlpKVxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRicmVhaztcbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuK1x0XHRpZiAoIWJzcF9wcml2LVx1MDAzZXN1cHBvcnRzX3NnbWlpKVxuK1x0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGRldl9lcnIoYnNwX3ByaXYtXHUwMDNlZGV2LFxuIFx0XHRcdFwidW5zdXBwb3J0ZWQgaW50ZXJmYWNlICVkXCIsIGJzcF9wcml2LVx1MDAzZXBoeV9pZmFjZSk7XG5AQCAtMTM3OSwxNiArMTQ0MSwxOSBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcG93ZXJ1cChzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4rXHRyZXQgPSBnbWFjX2Nsa19lbmFibGUoYnNwX3ByaXYsIHRydWUpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdGlmIChic3BfcHJpdi1cdTAwM2VwaHlfaWZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKVxuK1x0XHRnb3RvIHNldF9tb2RlO1xuK1xuIFx0cmV0ID0gcmtfZ2V0X3BoeV9pbnRmX3NlbChic3BfcHJpdi1cdTAwM2VwaHlfaWZhY2UpO1xuIFx0aWYgKHJldCBcdTAwM2MgMClcbi1cdFx0cmV0dXJuIHJldDtcbitcdFx0Z290byBjbGtfZGlzYWJsZTtcbiBcbiBcdGludGYgPSByZXQ7XG4gXG4tXHRyZXQgPSBnbWFjX2Nsa19lbmFibGUoYnNwX3ByaXYsIHRydWUpO1xuLVx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbi1cbiBcdGlmIChic3BfcHJpdi1cdTAwM2VnbWFjX3BoeV9pbnRmX3NlbF9tYXNrIHx8XG4gXHQgICAgYnNwX3ByaXYtXHUwMDNlZ21hY19ybWlpX21vZGVfbWFzaykge1xuIFx0XHQvKiBJZiBkZWZpbmVkLCBlbmNvZGUgdGhlIHBoeV9pbnRmX3NlbCB2YWx1ZSAqL1xuQEAgLTEzOTksMTAgKzE0NjQsOCBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcG93ZXJ1cChzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiBcdFx0XHRcdCAgICAgIGJzcF9wcml2LVx1MDAzZWdtYWNfcm1paV9tb2RlX21hc2spO1xuIFxuIFx0XHRyZXQgPSBya193cml0ZV9nbWFjX2dyZl9yZWcoYnNwX3ByaXYsIHZhbCk7XG4tXHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbi1cdFx0XHRnbWFjX2Nsa19lbmFibGUoYnNwX3ByaXYsIGZhbHNlKTtcbi1cdFx0XHRyZXR1cm4gcmV0O1xuLVx0XHR9XG4rXHRcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdFx0Z290byBjbGtfZGlzYWJsZTtcbiBcdH1cbiBcbiBcdGlmIChic3BfcHJpdi1cdTAwM2VjbG9jay5ybWlpX21vZGVfbWFzaykge1xuQEAgLTE0MTAsMTMgKzE0NzMsMTIgQEAgc3RhdGljIGludCBya19nbWFjX3Bvd2VydXAoc3RydWN0IHJrX3ByaXZfZGF0YSAqYnNwX3ByaXYpXG4gXHRcdFx0XHQgICAgIGJzcF9wcml2LVx1MDAzZWNsb2NrLnJtaWlfbW9kZV9tYXNrKTtcbiBcbiBcdFx0cmV0ID0gcmtfd3JpdGVfY2xvY2tfZ3JmX3JlZyhic3BfcHJpdiwgdmFsKTtcbi1cdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuLVx0XHRcdGdtYWNfY2xrX2VuYWJsZShic3BfcHJpdiwgZmFsc2UpO1xuLVx0XHRcdHJldHVybiByZXQ7XG4tXHRcdH1cbitcdFx0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0XHRnb3RvIGNsa19kaXNhYmxlO1xuIFx0fVxuIFxuLVx0LypybWlpIG9yIHJnbWlpKi9cbitzZXRfbW9kZTpcbitcdC8qIHJtaWksIHJnbWlpLCBzZ21paSAqL1xuIFx0c3dpdGNoIChic3BfcHJpdi1cdTAwM2VwaHlfaWZhY2UpIHtcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuIFx0XHRkZXZfaW5mbyhkZXYsIFwiaW5pdCBmb3IgUkdNSUlcXG5cIik7XG5AQCAtMTQ0NywxNSArMTUwOSwyMCBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcG93ZXJ1cChzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiBcdFx0aWYgKGJzcF9wcml2LVx1MDAzZW9wcy1cdTAwM2VzZXRfdG9fcm1paSlcbiBcdFx0XHRic3BfcHJpdi1cdTAwM2VvcHMtXHUwMDNlc2V0X3RvX3JtaWkoYnNwX3ByaXYpO1xuIFx0XHRicmVhaztcbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuK1x0XHRkZXZfaW5mbyhkZXYsIFwiaW5pdCBmb3IgU0dNSUlcXG5cIik7XG4rXHRcdGlmIChic3BfcHJpdi1cdTAwM2VvcHMtXHUwMDNlc2V0X3RvX3NnbWlpKVxuK1x0XHRcdGJzcF9wcml2LVx1MDAzZW9wcy1cdTAwM2VzZXRfdG9fc2dtaWkoYnNwX3ByaXYpO1xuK1x0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGRldl9lcnIoZGV2LCBcIk5PIGludGVyZmFjZSBkZWZpbmVkIVxcblwiKTtcbitcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0Z290byBjbGtfZGlzYWJsZTtcbiBcdH1cbiBcbiBcdHJldCA9IHJrX3BoeV9wb3dlcnVwKGJzcF9wcml2KTtcbi1cdGlmIChyZXQpIHtcbi1cdFx0Z21hY19jbGtfZW5hYmxlKGJzcF9wcml2LCBmYWxzZSk7XG4tXHRcdHJldHVybiByZXQ7XG4tXHR9XG4rXHRpZiAocmV0KVxuK1x0XHRnb3RvIGNsa19kaXNhYmxlO1xuIFxuIFx0cG1fcnVudGltZV9nZXRfc3luYyhkZXYpO1xuIFxuQEAgLTE0NjMsNiArMTUzMCwxMCBAQCBzdGF0aWMgaW50IHJrX2dtYWNfcG93ZXJ1cChzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcbiBcdFx0YnNwX3ByaXYtXHUwMDNlb3BzLVx1MDAzZWludGVncmF0ZWRfcGh5X3Bvd2VydXAoYnNwX3ByaXYpO1xuIFxuIFx0cmV0dXJuIDA7XG4rXG4rY2xrX2Rpc2FibGU6XG4rXHRnbWFjX2Nsa19lbmFibGUoYnNwX3ByaXYsIGZhbHNlKTtcbitcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJrX2dtYWNfcG93ZXJkb3duKHN0cnVjdCBya19wcml2X2RhdGEgKmdtYWMpXG5AQCAtMTQ4Niw2ICsxNTU3LDkgQEAgc3RhdGljIHZvaWQgcmtfZ2V0X2ludGVyZmFjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkICpic3BfcHJpdixcbiBcbiBcdGlmIChyay1cdTAwM2VzdXBwb3J0c19ybWlpKVxuIFx0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUksIGludGVyZmFjZXMpO1xuK1xuK1x0aWYgKHJrLVx1MDAzZXN1cHBvcnRzX3NnbWlpKVxuK1x0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJLCBpbnRlcmZhY2VzKTtcbiB9XG4gXG4gc3RhdGljIGludCBya19zZXRfY2xrX3R4X3JhdGUodm9pZCAqYnNwX3ByaXZfLCBzdHJ1Y3QgY2xrICpjbGtfdHhfaSxcbkBAIC0xNjAyLDYgKzE2NzYsMTcgQEAgc3RhdGljIGludCBya19nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRwbGF0X2RhdC1cdTAwM2VzdXNwZW5kID0gcmtfZ21hY19zdXNwZW5kO1xuIFx0cGxhdF9kYXQtXHUwMDNlcmVzdW1lID0gcmtfZ21hY19yZXN1bWU7XG4gXG4rXHRpZiAocGxhdF9kYXQtXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHtcbitcdFx0LyogU0dNSUkgY2xvY2sgYWx3YXlzIHJ1bnMgYXQgMTI1IE1IeiAqL1xuK1x0XHRwbGF0X2RhdC1cdTAwM2VzZXRfY2xrX3R4X3JhdGUgPSBOVUxMO1xuK1xuK1x0XHQvKiBTR01JSSByZXF1aXJlcyBhIFBDUyAqL1xuK1x0XHRwbGF0X2RhdC1cdTAwM2VkZWZhdWx0X2FuX2luYmFuZCA9IHRydWU7XG4rXHRcdHBsYXRfZGF0LVx1MDAzZXBjc19pbml0ID0gcmtfcGNzX2luaXQ7XG4rXHRcdHBsYXRfZGF0LVx1MDAzZXBjc19leGl0ID0gcmtfcGNzX2V4aXQ7XG4rXHRcdHBsYXRfZGF0LVx1MDAzZXNlbGVjdF9wY3MgPSBya19zZWxlY3RfcGNzO1xuK1x0fVxuK1xuIFx0cGxhdF9kYXQtXHUwMDNlYnNwX3ByaXYgPSBya19nbWFjX3NldHVwKHBkZXYsIHBsYXRfZGF0LCBkYXRhKTtcbiBcdGlmIChJU19FUlIocGxhdF9kYXQtXHUwMDNlYnNwX3ByaXYpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihwbGF0X2RhdC1cdTAwM2Vic3BfcHJpdik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jXG5pbmRleCAxMzYzNDk2NWJjMTlhLi4wMWRmNDc3NmVkYjNmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmNcbkBAIC0zNSw4ICszNSwxMSBAQCBzdGF0aWMgaW50IHJ6bjFfZHdtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFxuIHN0YXRpYyB2b2lkIHJ6bjFfZHdtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIHtcbi1cdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuLVx0XHRtaWljX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcyk7XG4rXHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4rXHRcdHJldHVybjtcbitcbitcdG1paWNfZGVzdHJveShwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKTtcbitcdHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MgPSBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpyem4xX2R3bWFjX3NlbGVjdF9wY3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuY1xuaW5kZXggMWQ3ZjBhNTdkMjg4OS4uNmQ0YmMxZmU4Zjc1MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jXG5AQCAtNTM5LDggKzUzOSwxMSBAQCBzdGF0aWMgaW50IHNvY2ZwZ2FfZHdtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFxuIHN0YXRpYyB2b2lkIHNvY2ZwZ2FfZHdtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIHtcbi1cdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuLVx0XHRseW54X3Bjc19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuK1x0aWYgKCFwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRseW54X3Bjc19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuK1x0cHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcyA9IE5VTEw7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKnNvY2ZwZ2FfZHdtYWNfc2VsZWN0X3BjcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmNcbmluZGV4IGFmZTk4ZmY1YmRjYjAuLmQyZjc3ZjBjMjIzYTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jXG5AQCAtNDI2LDM2ICs0MjYsMTUgQEAgaW50IHN0bW1hY19tZGlvX3Jlc2V0KHN0cnVjdCBtaWlfYnVzICpidXMpXG4gaW50IHN0bW1hY19wY3Nfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4ge1xuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4tXHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZGV2bm9kZSwgKnBjc25vZGU7XG4tXHRzdHJ1Y3QgZHdfeHBjcyAqeHBjcyA9IE5VTEw7XG4tXHRpbnQgYWRkciwgcmV0O1xuLVxuLVx0ZGV2bm9kZSA9IGRldl9md25vZGUocHJpdi1cdTAwM2VkZXZpY2UpO1xuLVxuLVx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwY3NfaW5pdCkge1xuLVx0XHRyZXQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2luaXQocHJpdik7XG4tXHR9IGVsc2UgaWYgKGZ3bm9kZV9wcm9wZXJ0eV9wcmVzZW50KGRldm5vZGUsIFwicGNzLWhhbmRsZVwiKSkge1xuLVx0XHRwY3Nub2RlID0gZndub2RlX2ZpbmRfcmVmZXJlbmNlKGRldm5vZGUsIFwicGNzLWhhbmRsZVwiLCAwKTtcbi1cdFx0eHBjcyA9IHhwY3NfY3JlYXRlX2Z3bm9kZShwY3Nub2RlKTtcbi1cdFx0Zndub2RlX2hhbmRsZV9wdXQocGNzbm9kZSk7XG4tXHRcdHJldCA9IFBUUl9FUlJfT1JfWkVSTyh4cGNzKTtcbi1cdH0gZWxzZSBpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEgXHUwMDI2XHUwMDI2XG4tXHRcdCAgIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZXBjc19tYXNrKSB7XG4tXHRcdGFkZHIgPSBmZnMocHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEtXHUwMDNlcGNzX21hc2spIC0gMTtcbi1cdFx0eHBjcyA9IHhwY3NfY3JlYXRlX21kaW9kZXYocHJpdi1cdTAwM2VtaWksIGFkZHIpO1xuLVx0XHRyZXQgPSBQVFJfRVJSX09SX1pFUk8oeHBjcyk7XG4tXHR9IGVsc2Uge1xuK1x0aW50IHJldDtcbitcbitcdGlmICghcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19pbml0KVxuIFx0XHRyZXR1cm4gMDtcbi1cdH1cbiBcbitcdHJldCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwY3NfaW5pdChwcml2KTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKHByaXYtXHUwMDNlZGV2aWNlLCByZXQsIFwiTm8geFBDUyBmb3VuZFxcblwiKTtcbiBcbi1cdGlmICh4cGNzKVxuLVx0XHR4cGNzX2NvbmZpZ19lZWVfbXVsdF9mYWN0KHhwY3MsIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtdWx0X2ZhY3RfMTAwbnMpO1xuLVxuLVx0cHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzID0geHBjcztcbi1cbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC00NjMsMTQgKzQ0MiwxMCBAQCB2b2lkIHN0bW1hY19wY3NfY2xlYW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4ge1xuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXG4tXHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19leGl0KVxuLVx0XHRwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2V4aXQocHJpdik7XG4tXG4tXHRpZiAoIXByaXYtXHUwMDNlaHctXHUwMDNleHBjcylcbitcdGlmICghcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBjc19leGl0KVxuIFx0XHRyZXR1cm47XG4gXG4tXHR4cGNzX2Rlc3Ryb3kocHJpdi1cdTAwM2Vody1cdTAwM2V4cGNzKTtcbi1cdHByaXYtXHUwMDNlaHctXHUwMDNleHBjcyA9IE5VTEw7XG4rXHRwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGNzX2V4aXQocHJpdik7XG4gfVxuIFxuIHN0cnVjdCBzdG1tYWNfY2xrX3JhdGUge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnIGIvZHJpdmVycy9uZXQvcGNzL0tjb25maWdcbmluZGV4IGU0MTdmZDY2ZjY2MGEuLjg4YmM0MDc5MWU2OWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZ1xuKysrIGIvZHJpdmVycy9uZXQvcGNzL0tjb25maWdcbkBAIC0xMiw2ICsxMiwyOSBAQCBjb25maWcgUENTX1hQQ1NcbiBcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBkcml2ZXIgYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIFN5bm9wc3lzXG4gXHQgIERlc2lnbldhcmUgWFBDUyBjb250cm9sbGVycy5cbiBcbitpZiBQQ1NfWFBDU1xuK1xuK2NvbmZpZyBQQ1NfWFBDU19QTEFURk9STVxuK1x0dHJpc3RhdGUgXCJHZW5lcmljIFhQQ1MgY29udHJvbGxlciBzdXBwb3J0XCJcbitcdGRlZmF1bHQgUENTX1hQQ1NcbitcdGhlbHBcbitcdCAgR2VuZXJpYyBEV1hQQ1MgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCByZXF1aXJlIGFueVxuK1x0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXG4rXHQgIGRhdGEgZm9yIHNldHVwLlxuK1xuK1x0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuK1xuK2NvbmZpZyBQQ1NfWFBDU19ST0NLQ0hJUFxuK1x0dHJpc3RhdGUgXCJSb2NrY2hpcCBYUENTIGNvbnRyb2xsZXIgc3VwcG9ydFwiXG4rXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcbitcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1JPQ0tDSElQIHx8IENPTVBJTEVfVEVTVClcbitcdGhlbHBcbitcdCAgU3VwcG9ydCBmb3IgWFBDUyBjb250cm9sbGVyIG9uIFJvY2tjaGlwIFJLMzU2eCBTb0MuXG4rXG4rXHQgIElmIHlvdSBoYXZlIGEgUm9ja2NoaXAgU29DIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbitcbitlbmRpZiAjIFBDU19YUENTXG4rXG4gY29uZmlnIFBDU19MWU5YXG4gXHR0cmlzdGF0ZVxuIFx0aGVscFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZVxuaW5kZXggNGY3OTIwNjE4YjkwMC4uYzgwOWI3Zjk0MmE1MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZVxuKysrIGIvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlXG5AQCAtMSwxMCArMSw5IEBAXG4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICMgTWFrZWZpbGUgZm9yIExpbnV4IFBDUyBkcml2ZXJzXG4gXG4tcGNzX3hwY3MtJChDT05GSUdfUENTX1hQQ1MpXHQ6PSBwY3MteHBjcy5vIHBjcy14cGNzLXBsYXQubyBcXFxuLVx0XHRcdFx0ICAgcGNzLXhwY3MtbnhwLm8gcGNzLXhwY3Mtd3gub1xuLVxuLW9iai0kKENPTkZJR19QQ1NfWFBDUylcdFx0Kz0gcGNzX3hwY3Mub1xuK29iai0kKENPTkZJR19QQ1NfWFBDUykgKz0gcGNzLXhwY3MubyBwY3MteHBjcy1ueHAubyBwY3MteHBjcy13eC5vXG4rb2JqLSQoQ09ORklHX1BDU19YUENTX1BMQVRGT1JNKSArPSBwY3MteHBjcy1wbGF0Lm9cbitvYmotJChDT05GSUdfUENTX1hQQ1NfUk9DS0NISVApICs9IHBjcy14cGNzLXJrLm9cbiBvYmotJChDT05GSUdfUENTX0xZTlgpXHRcdCs9IHBjcy1seW54Lm9cbiBvYmotJChDT05GSUdfUENTX01US19MWU5YSSlcdCs9IHBjcy1tdGstbHlueGkub1xuIG9iai0kKENPTkZJR19QQ1NfUlpOMV9NSUlDKVx0Kz0gcGNzLXJ6bjEtbWlpYy5vXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjRlZjIwYjA5M2RhZGFcbi0tLSAvZGV2L251bGxcbisrKyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1yay5jXG5AQCAtMCwwICsxLDU2MSBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rLypcbisgKiBSb2NrY2hpcCBYUENTIHBsYXRmb3JtIGRldmljZSBkcml2ZXJcbisgKlxuKyAqIEJhc2VkIG9uIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIFhQQ1MgcGxhdGZvcm0gZHJpdmVyLlxuKyAqIENvcHlyaWdodCAoQykgMjAyNCBTZXJnZSBTZW1pblxuKyAqXG4rICogQWRhcHRlZCBmb3IgUm9ja2NoaXAgU29Dcywgd2l0aCByZWZlcmVuY2UgdG8gdGhlIFJvY2tjaGlwIE9FTSBkcml2ZXIuXG4rICogQ29weXJpZ2h0IChDKSAyMDI2IENvaWEgUHJhbnRcbisgKi9cbitcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9hdG9taWMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9jbGsuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvaW8uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvcG9sbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbWRpby5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfcGxhdGZvcm0uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkvcGh5LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BtX2RvbWFpbi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcG1fcnVudGltZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NpemVzLmhcdTAwM2VcbitcbisjaW5jbHVkZSBcInBjcy14cGNzLmhcIlxuK1xuK3N0cnVjdCBkd194cGNzX3JrIHtcbitcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7XG4rXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuK1x0dm9pZCBfX2lvbWVtICpyZWdfYmFzZTtcbitcdHN0cnVjdCBwaHkgKnNlcmRlc19waHk7XG4rXHRzdHJ1Y3QgY2xrICpjc3JfY2xrO1xuK1x0c3RydWN0IGNsayAqZWVlX2Nsaztcbit9O1xuK1xuK3N0YXRpYyBwdHJkaWZmX3QgeHBjc19ya19hZGRyX2Zvcm1hdChpbnQgZGV2LCBpbnQgcmVnKVxuK3tcbitcdHJldHVybiBGSUVMRF9QUkVQKDB4NzAwMDAsIGRldikgfCBGSUVMRF9QUkVQKDB4ZmZmZiwgcmVnKTtcbit9XG4rXG4rc3RhdGljIGludCB4cGNzX3JrX3JlYWRfcmVnKHN0cnVjdCBkd194cGNzX3JrICpweHBjcywgaW50IGRldiwgaW50IHJlZylcbit7XG4rXHRwdHJkaWZmX3QgY3NyO1xuK1x0aW50IHJldDtcbitcbitcdGNzciA9IHhwY3NfcmtfYWRkcl9mb3JtYXQoZGV2LCByZWcpO1xuK1xuK1x0cmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldChcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldik7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0ID0gcmVhZGwocHhwY3MtXHUwMDNlcmVnX2Jhc2UgKyAoY3NyIFx1MDAzY1x1MDAzYyAyKSkgXHUwMDI2IDB4ZmZmZjtcbitcbitcdHBtX3J1bnRpbWVfcHV0KFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2KTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuK3N0YXRpYyBpbnQgeHBjc19ya193cml0ZV9yZWcoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzLCBpbnQgZGV2LCBpbnQgcmVnLCB1MTYgdmFsKVxuK3tcbitcdHB0cmRpZmZfdCBjc3I7XG4rXHRpbnQgcmV0O1xuK1xuK1x0Y3NyID0geHBjc19ya19hZGRyX2Zvcm1hdChkZXYsIHJlZyk7XG4rXG4rXHRyZXQgPSBwbV9ydW50aW1lX3Jlc3VtZV9hbmRfZ2V0KFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2KTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHR3cml0ZWwodmFsLCBweHBjcy1cdTAwM2VyZWdfYmFzZSArIChjc3IgXHUwMDNjXHUwMDNjIDIpKTtcbitcbitcdHBtX3J1bnRpbWVfcHV0KFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2KTtcbitcdHJldHVybiAwO1xuK31cbitcbisjZGVmaW5lIFJPQ0tDSElQX01NRF9NSUkxXHQyXG4rI2RlZmluZSBST0NLQ0hJUF9NTURfTUlJMlx0M1xuKyNkZWZpbmUgUk9DS0NISVBfTU1EX01JSTNcdDRcbisjZGVmaW5lIFJPQ0tDSElQX01NRF9QTUFQTURcdDZcbisjZGVmaW5lIFJPQ0tDSElQX01NRF9NSUlcdDdcbitcbitzdGF0aWMgYm9vbCB4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShpbnQgYWRkcilcbit7XG4rXHRyZXR1cm4gIShhZGRyIFx1MDAzYyAwIHx8IGFkZHIgXHUwMDNlIDMpO1xuK31cbitcbitzdGF0aWMgaW50IHhwY3NfcmtfbWRpb19yZWFkX3JlbWFwcGluZyhpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZylcbit7XG4rXHRzd2l0Y2ggKGRldikge1xuK1x0Y2FzZSBNRElPX01NRF9QTUFQTUQ6XG4rXHRcdHJldHVybiBST0NLQ0hJUF9NTURfUE1BUE1EO1xuK1x0Y2FzZSBNRElPX01NRF9WRU5EMjpcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHRyZXR1cm4gLUVOWElPO1xuK1x0fVxuK1xuK1x0LyogcmVhZCByZW1hcHBpbmcgdG8gTUlJIGlzIHBlcmZvcm1lZCBieSBIVyAqL1xuK1x0c3dpdGNoIChhZGRyKSB7XG4rXHRjYXNlIDA6XG4rXHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJO1xuK1x0Y2FzZSAxOlxuK1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTE7XG4rXHRjYXNlIDI6XG4rXHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMjtcbitcdGNhc2UgMzpcbitcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkzO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyBpbnQgeHBjc19ya19tZGlvX3dyaXRlX3JlbWFwcGluZyhpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZylcbit7XG4rXHRzd2l0Y2ggKGRldikge1xuK1x0Y2FzZSBNRElPX01NRF9QTUFQTUQ6XG4rXHRcdHJldHVybiBST0NLQ0hJUF9NTURfUE1BUE1EO1xuK1x0Y2FzZSBNRElPX01NRF9WRU5EMjpcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHRyZXR1cm4gLUVOWElPO1xuK1x0fVxuK1xuK1x0LyogV3JpdGFibGUgb25seSBvbiBNSUkgKi9cbitcdHN3aXRjaCAocmVnKSB7XG4rXHRjYXNlIERXX1ZSX01JSV9BTl9DVFJMOlxuK1x0Y2FzZSBEV19WUl9NSUlfQU5fSU5UUl9TVFM6XG4rXHRjYXNlIERXX1ZSX01JSV9FRUVfTUNUUkwwOlxuK1x0Y2FzZSBEV19WUl9NSUlfRUVFX01DVFJMMTpcbitcdGNhc2UgRFdfVlJfTUlJX0RJR19DVFJMMjpcbitcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUk7XG4rXHRkZWZhdWx0OlxuK1x0XHRicmVhaztcbitcdH1cbitcbitcdHN3aXRjaCAoYWRkcikge1xuK1x0Y2FzZSAwOlxuK1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTtcbitcdGNhc2UgMTpcbitcdFx0cmV0dXJuIFJPQ0tDSElQX01NRF9NSUkxO1xuK1x0Y2FzZSAyOlxuK1x0XHRyZXR1cm4gUk9DS0NISVBfTU1EX01JSTI7XG4rXHRjYXNlIDM6XG4rXHRcdHJldHVybiBST0NLQ0hJUF9NTURfTUlJMztcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1x0fVxuK31cbitcbitzdGF0aWMgaW50IHhwY3NfcmtfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWcpXG4re1xuK1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLVx1MDAzZXByaXY7XG4rXHRpbnQgZGV2O1xuK1xuK1x0aWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShhZGRyKSlcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4rXHRkZXYgPSB4cGNzX3JrX21kaW9fcmVhZF9yZW1hcHBpbmcoYWRkciwgTURJT19NTURfVkVORDIsIHJlZyk7XG4rXHRpZiAoZGV2IFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gMHhmZmZmO1xuK1xuK1x0cmV0dXJuIHhwY3NfcmtfcmVhZF9yZWcocHhwY3MsIGRldiwgcmVnKTtcbit9XG4rXG4rc3RhdGljIGludCB4cGNzX3JrX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcbit7XG4rXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtXHUwMDNlcHJpdjtcbitcdGludCBkZXY7XG4rXG4rXHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbitcdGRldiA9IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoYWRkciwgTURJT19NTURfVkVORDIsIHJlZyk7XG4rXHRpZiAoZGV2IFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdHJldHVybiB4cGNzX3JrX3dyaXRlX3JlZyhweHBjcywgZGV2LCByZWcsIHZhbCk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldiwgaW50IHJlZylcbit7XG4rXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBidXMtXHUwMDNlcHJpdjtcbitcbitcdGlmICgheHBjc19ya19tZGlvX2FkZHJfdmFsaWRhdGUoYWRkcikpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0ZGV2ID0geHBjc19ya19tZGlvX3JlYWRfcmVtYXBwaW5nKGFkZHIsIGRldiwgcmVnKTtcbitcdGlmIChkZXYgXHUwMDNjIDApXG4rXHRcdHJldHVybiAweGZmZmY7XG4rXG4rXHRyZXR1cm4geHBjc19ya19yZWFkX3JlZyhweHBjcywgZGV2LCByZWcpO1xuK31cbitcbitzdGF0aWMgaW50IHhwY3Nfcmtfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2LCBpbnQgcmVnLCB1MTYgdmFsKVxuK3tcbitcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGJ1cy1cdTAwM2Vwcml2O1xuK1xuK1x0aWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShhZGRyKSlcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4rXHRkZXYgPSB4cGNzX3JrX21kaW9fd3JpdGVfcmVtYXBwaW5nKGFkZHIsIGRldiwgcmVnKTtcbitcdGlmIChkZXYgXHUwMDNjIDApXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cmV0dXJuIHhwY3Nfcmtfd3JpdGVfcmVnKHB4cGNzLCBkZXYsIHJlZywgdmFsKTtcbit9XG4rXG4rc3RhdGljIHN0cnVjdCBkd194cGNzX3JrICp4cGNzX3JrX2NyZWF0ZV9kYXRhKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4re1xuK1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzO1xuK1xuK1x0cHhwY3MgPSBkZXZtX2t6YWxsb2MoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHNpemVvZigqcHhwY3MpLCBHRlBfS0VSTkVMKTtcbitcdGlmICghcHhwY3MpXG4rXHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuK1xuK1x0cHhwY3MtXHUwMDNlcGRldiA9IHBkZXY7XG4rXG4rXHRkZXZfc2V0X2RydmRhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHB4cGNzKTtcbitcbitcdHJldHVybiBweHBjcztcbit9XG4rXG4rc3RhdGljIGludCB4cGNzX3JrX3NlcmRlc19waHlfaW5pdChzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXG4re1xuK1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG4rXG4rXHRweHBjcy1cdTAwM2VzZXJkZXNfcGh5ID0gZGV2bV9waHlfZ2V0KGRldiwgXCJzZXJkZXNcIik7XG4rXHRpZiAoSVNfRVJSKHB4cGNzLVx1MDAzZXNlcmRlc19waHkpKVxuK1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHhwY3MtXHUwMDNlc2VyZGVzX3BoeSksXG4rXHRcdFx0XHRcdFwiRmFpbGVkIHRvIGdldCBTZXJEZXMgUEhZXFxuXCIpO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9mZih2b2lkICpkYXRhKVxuK3tcbitcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRhdGE7XG4rXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbitcbitcdHBoeV9wb3dlcl9vZmYocHhwY3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4rXHRwaHlfZXhpdChweHBjcy1cdTAwM2VzZXJkZXNfcGh5KTtcbitcbitcdGRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgZmFsc2UpO1xuK31cbitcbitzdGF0aWMgaW50IHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9uKHN0cnVjdCBkd194cGNzX3JrICpweHBjcylcbit7XG4rXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZweHBjcy1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbitcdGludCByZXQ7XG4rXG4rXHQvKlxuK1x0ICogVGhlIHBvd2VyIGRvbWFpbiBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBlbmFibGVkLCB3aGljaCBhbGxvd3MgdXMgdG9cbitcdCAqIGR5bmFtaWNhbGx5IHR1cm4gdGhlIENTUiBjbG9jayBvbi9vZmYgdXNpbmcgUE0gd2hpbGUga2VlcGluZyB0aGUgUENTXG4rXHQgKiBwb3dlcmVkIG9uLlxuK1x0ICovXG4rXHRyZXQgPSBkZXZfcG1fZ2VucGRfcnBtX2Fsd2F5c19vbihkZXYsIHRydWUpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRkZXZfZXJyKGRldiwgXCJGYWlsZWQgdG8gcG93ZXIgb24gcG93ZXItZG9tYWluc1xcblwiKTtcbitcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdHJldCA9IHBoeV9pbml0KHB4cGNzLVx1MDAzZXNlcmRlc19waHkpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRkZXZfZXJyKGRldiwgXCJGYWlsZWQgdG8gaW5pdCBTZXJEZXMgUEhZXFxuXCIpO1xuK1x0XHRnb3RvIHBtX2RvbWFpbjtcbitcdH1cbitcbitcdHJldCA9IHBoeV9wb3dlcl9vbihweHBjcy1cdTAwM2VzZXJkZXNfcGh5KTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2VycihkZXYsIFwiRmFpbGVkIHRvIHBvd2VyIG9uIFNlckRlcyBQSFlcXG5cIik7XG4rXHRcdGdvdG8gc2VyZGVzX3BoeTtcbitcdH1cbitcbitcdHJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIHhwY3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9mZiwgcHhwY3MpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRkZXZfZXJyKGRldiwgXCJGYWlsZWQgdG8gcmVnaXN0ZXIgZGV2bSBmb3IgU2VyRGVzIFBIWTogJWRcXG5cIiwgcmV0KTtcbitcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK1xuK3NlcmRlc19waHk6XG4rXHRwaHlfZXhpdChweHBjcy1cdTAwM2VzZXJkZXNfcGh5KTtcbitwbV9kb21haW46XG4rXHRkZXZfcG1fZ2VucGRfcnBtX2Fsd2F5c19vbihkZXYsIGZhbHNlKTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuK3N0YXRpYyBpbnQgeHBjc19ya19pbml0X3JlcyhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXG4re1xuK1x0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHB4cGNzLVx1MDAzZXBkZXY7XG4rXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbitcdHN0cnVjdCByZXNvdXJjZSAqcmVzO1xuK1xuK1x0cmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTtcbitcdGlmICghcmVzKSB7XG4rXHRcdGRldl9lcnIoZGV2LCBcIk5vIHJlZy1zcGFjZSBmb3VuZFxcblwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRpZiAocmVzb3VyY2Vfc2l6ZShyZXMpIFx1MDAzYyBTWl8yTSkge1xuK1x0XHRkZXZfZXJyKGRldiwgXCJJbnZhbGlkIHJlZy1zcGFjZSBzaXplXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbitcdHB4cGNzLVx1MDAzZXJlZ19iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTtcbitcdGlmIChJU19FUlIocHhwY3MtXHUwMDNlcmVnX2Jhc2UpKSB7XG4rXHRcdGRldl9lcnIoZGV2LCBcIkZhaWxlZCB0byBtYXAgcmVnLXNwYWNlXFxuXCIpO1xuK1x0XHRyZXR1cm4gUFRSX0VSUihweHBjcy1cdTAwM2VyZWdfYmFzZSk7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIHZvaWQgeHBjc19ya19leGl0X2Nsayh2b2lkICpkYXRhKVxuK3tcbitcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRhdGE7XG4rXG4rXHRjbGtfZGlzYWJsZV91bnByZXBhcmUocHhwY3MtXHUwMDNlZWVlX2Nsayk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgeHBjc19ya19pbml0X2NsayhzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpXG4re1xuK1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cHhwY3MtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cHhwY3MtXHUwMDNlY3NyX2NsayA9IGRldm1fY2xrX2dldChkZXYsIFwiY3NyXCIpO1xuK1x0aWYgKElTX0VSUihweHBjcy1cdTAwM2Vjc3JfY2xrKSlcbitcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHB4cGNzLVx1MDAzZWNzcl9jbGspLFxuK1x0XHRcdFx0XHQgXCJGYWlsZWQgdG8gZ2V0IENTUiBjbG9ja1xcblwiKTtcbitcbitcdHBtX3J1bnRpbWVfc2V0X3N1c3BlbmRlZChkZXYpO1xuK1x0cmV0ID0gZGV2bV9wbV9ydW50aW1lX2VuYWJsZShkZXYpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRkZXZfZXJyKGRldiwgXCJGYWlsZWQgdG8gZW5hYmxlIHJ1bnRpbWUtUE1cXG5cIik7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRweHBjcy1cdTAwM2VlZWVfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgXCJlZWVcIik7XG4rXHRpZiAoSVNfRVJSKHB4cGNzLVx1MDAzZWVlZV9jbGspKVxuK1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHhwY3MtXHUwMDNlZWVlX2NsayksXG4rXHRcdFx0XHRcdCBcIkZhaWxlZCB0byBnZXQgRUVFIGNsb2NrXFxuXCIpO1xuK1xuK1x0cmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHB4cGNzLVx1MDAzZWVlZV9jbGspO1xuK1x0aWYgKHJldCkge1xuK1x0XHRkZXZfZXJyKGRldiwgXCJGYWlsZWQgdG8gZW5hYmxlIEVFRSBjbG9ja1xcblwiKTtcbitcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdHJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIHhwY3NfcmtfZXhpdF9jbGssIHB4cGNzKTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2VycihkZXYsIFwiRmFpbGVkIHRvIHJlZ2lzdGVyIGRldm0gZm9yIEVFRSBjbG9jazogJWRcXG5cIiwgcmV0KTtcbitcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9idXMoc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzKVxuK3tcbitcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnB4cGNzLVx1MDAzZXBkZXYtXHUwMDNlZGV2O1xuK1x0c3RhdGljIGF0b21pY190IGlkID0gQVRPTUlDX0lOSVQoLTEpO1xuK1x0c3RydWN0IG1paV9idXMgKmJ1cztcbitcdGludCByZXQ7XG4rXG4rXHRidXMgPSBkZXZtX21kaW9idXNfYWxsb2Nfc2l6ZShkZXYsIDApO1xuK1x0aWYgKCFidXMpXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0YnVzLVx1MDAzZW5hbWUgPSBcIlJvY2tjaGlwIERXIFhQQ1MgTUNJL0FQQjNcIjtcbitcdGJ1cy1cdTAwM2VyZWFkID0geHBjc19ya19yZWFkX2MyMjtcbitcdGJ1cy1cdTAwM2V3cml0ZSA9IHhwY3Nfcmtfd3JpdGVfYzIyO1xuK1x0YnVzLVx1MDAzZXJlYWRfYzQ1ID0geHBjc19ya19yZWFkX2M0NTtcbitcdGJ1cy1cdTAwM2V3cml0ZV9jNDUgPSB4cGNzX3JrX3dyaXRlX2M0NTtcbitcdGJ1cy1cdTAwM2VwaHlfbWFzayA9IH4wO1xuK1x0YnVzLVx1MDAzZXBhcmVudCA9IGRldjtcbitcdGJ1cy1cdTAwM2Vwcml2ID0gcHhwY3M7XG4rXG4rXHRzbnByaW50ZihidXMtXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSxcbitcdFx0IFwicm9ja2NoaXBfZHd4cGNzLSV4XCIsIGF0b21pY19pbmNfcmV0dXJuKFx1MDAyNmlkKSk7XG4rXG4rXHQvKlxuK1x0ICogTURJTy1idXMgaGVyZSBzZXJ2ZXMgYXMganVzdCBhIGJhY2stZW5kIGVuZ2luZSBhYnN0cmFjdGluZyBvdXRcbitcdCAqIHRoZSBNRElPIGFuZCBNQ0kvQVBCMyBJTyBpbnRlcmZhY2VzIHV0aWxpemVkIGZvciB0aGUgUm9ja2NoaXAgRFdYUENTIENTUnNcbitcdCAqIGFjY2Vzcy5cbitcdCAqL1xuK1x0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzKTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2VycihkZXYsIFwiRmFpbGVkIHRvIGNyZWF0ZSBNRElPIGJ1c1xcblwiKTtcbitcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdHB4cGNzLVx1MDAzZWJ1cyA9IGJ1cztcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgaW50IHhwY3NfcmtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbit7XG4rXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cHhwY3MgPSB4cGNzX3JrX2NyZWF0ZV9kYXRhKHBkZXYpO1xuK1x0aWYgKElTX0VSUihweHBjcykpXG4rXHRcdHJldHVybiBQVFJfRVJSKHB4cGNzKTtcbitcbitcdC8qXG4rXHQgKiBUaGUgWFBDUyBtYXkgYmUgYXR0YWNoZWQgdG8gYSBwb3dlciBkb21haW4gKGUuZy4gUERfUElQRSkuIFRoZSBkb21haW5cbitcdCAqIG11c3QgYmUgcG93ZXJlZCBvbiBiZWZvcmUgYW55IHJlZ2lzdGVyIGFjY2Vzcywgb3RoZXJ3aXNlIHRoZSBTb0Mgd2lsbFxuK1x0ICogdHJpZ2dlciBhIHN5bmNocm9ub3VzIGV4dGVybmFsIGFib3J0IChTRXJyb3IpLlxuK1x0ICpcbitcdCAqIEFjY2Vzc2luZyB0aGUgWFBDUyByZWdpc3RlcnMgYWxzbyByZXF1aXJlcyBhIFRYIGNsb2NrIGZyb20gdGhlIFNlckRlcyxcbitcdCAqIHdoaWNoIGlzIG5lZWRlZCBmb3IgdGhlIHNvZnQgcmVzZXQuXG4rXHQgKi9cbitcdHJldCA9IHhwY3Nfcmtfc2VyZGVzX3BoeV9pbml0KHB4cGNzKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRyZXQgPSB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvbihweHBjcyk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0ID0geHBjc19ya19pbml0X3JlcyhweHBjcyk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0ID0geHBjc19ya19pbml0X2NsayhweHBjcyk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0ID0geHBjc19ya19pbml0X2J1cyhweHBjcyk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHhwY3NfcmtfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4re1xuK1x0LypcbitcdCAqIEZvcmNlIHRoZSBkZXZpY2UgaW50byBzdXNwZW5kIHN0YXRlIHRvIGdhdGUgdGhlIENTUiBjbG9jay4gVGhpc1xuK1x0ICogcHJldmVudHMgY2xvY2sgbGVha2FnZSBhZnRlciBkZXZtIHJlc291cmNlcyBhcmUgcmVsZWFzZWQuXG4rXHQgKlxuK1x0ICogVGhpcyBpcyBzYWZlIGJlY2F1c2U6XG4rXHQgKiAgIDEuIFRoZSBkZXZpY2UgbGluayAoRExfRkxBR19BVVRPUkVNT1ZFX0NPTlNVTUVSKSBwcmV2ZW50cyB1bmJpbmRcbitcdCAqICAgICAgd2hpbGUgYW55IGNvbnN1bWVyIChNQUMpIGlzIHN0aWxsIGF0dGFjaGVkLlxuK1x0ICogICAyLiBObyBNRElPIGFjY2VzcyB3aWxsIG9jY3VyIGFmdGVyIHRoaXMgcG9pbnQsIGFzIHRoZSBNQUMgZHJpdmVyXG4rXHQgKiAgICAgIGhhcyBhbHJlYWR5IGJlZW4gdW5ib3VuZCAob3Igd2UgYXJlIGJlaW5nIHJlbW92ZWQgYmVjYXVzZSBub1xuK1x0ICogICAgICBjb25zdW1lciBleGlzdHMpLlxuK1x0ICovXG4rXHRwbV9ydW50aW1lX2ZvcmNlX3N1c3BlbmQoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB4cGNzX3JrX29mX2lkc1tdID0ge1xuK1x0eyAuY29tcGF0aWJsZSA9IFwicm9ja2NoaXAscmszNTY4LXhwY3NcIiB9LFxuK1x0eyAvKiBzZW50aW5lbCAqLyB9LFxuK307XG4rTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgeHBjc19ya19vZl9pZHMpO1xuK1xuK3N0cnVjdCBkd194cGNzICp4cGNzX3JrX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4re1xuK1x0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjtcbitcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGNzX25wO1xuK1x0c3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzO1xuK1x0c3RydWN0IGR3X3hwY3MgKnhwY3M7XG4rXHR1MzIgcG9ydDtcbitcbitcdGlmICghb2ZfZGV2aWNlX2lzX2F2YWlsYWJsZShucCkpXG4rXHRcdHJldHVybiBFUlJfUFRSKC1FTk9ERVYpO1xuK1xuK1x0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcInJlZ1wiLCBcdTAwMjZwb3J0KSlcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4rXG4rXHRpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKChpbnQpcG9ydCkpXG4rXHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuK1xuK1x0LyogVGhlIFhQQ1MgcGRldiBpcyBhdHRhY2hlZCB0byB0aGUgcGFyZW50IG5vZGUgKi9cbitcdHBjc19ucCA9IG9mX2dldF9wYXJlbnQobnApO1xuK1x0aWYgKCFwY3NfbnApXG4rXHRcdHJldHVybiBFUlJfUFRSKC1FTk9ERVYpO1xuK1xuK1x0aWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKHBjc19ucCkpIHtcbitcdFx0b2Zfbm9kZV9wdXQocGNzX25wKTtcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7XG4rXHR9XG4rXG4rXHRpZiAoIW9mX21hdGNoX25vZGUoeHBjc19ya19vZl9pZHMsIHBjc19ucCkpIHtcbitcdFx0b2Zfbm9kZV9wdXQocGNzX25wKTtcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4rXHR9XG4rXG4rXHRwZGV2ID0gb2ZfZmluZF9kZXZpY2VfYnlfbm9kZShwY3NfbnApO1xuK1x0b2Zfbm9kZV9wdXQocGNzX25wKTtcbitcdGlmICghcGRldilcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVQUk9CRV9ERUZFUik7XG4rXG4rXHRkZXZpY2VfbG9jayhcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4rXHRweHBjcyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuK1x0aWYgKCFweHBjcyB8fCAhcHhwY3MtXHUwMDNlYnVzKSB7XG4rXHRcdGRldmljZV91bmxvY2soXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuK1x0XHRwdXRfZGV2aWNlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVQUk9CRV9ERUZFUik7XG4rXHR9XG4rXG4rXHR4cGNzID0geHBjc19jcmVhdGVfbWRpb2RldihweHBjcy1cdTAwM2VidXMsIChpbnQpcG9ydCk7XG4rXHRkZXZpY2VfdW5sb2NrKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbitcdGlmIChJU19FUlIoeHBjcykpIHtcbitcdFx0cHV0X2RldmljZShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4rXHRcdHJldHVybiB4cGNzO1xuK1x0fVxuK1xuK1x0aWYgKCFkZXZpY2VfbGlua19hZGQoZGV2LCBcdTAwMjZwZGV2LVx1MDAzZWRldiwgRExfRkxBR19BVVRPUkVNT1ZFX0NPTlNVTUVSKSkge1xuK1x0XHR4cGNzX2Rlc3Ryb3koeHBjcyk7XG4rXHRcdHB1dF9kZXZpY2UoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuK1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbitcdH1cbitcbitcdHB1dF9kZXZpY2UoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuK1x0cmV0dXJuIHhwY3M7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKHhwY3NfcmtfY3JlYXRlKTtcbitcbitzdGF0aWMgaW50IHhwY3NfcmtfcG1fcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcbit7XG4rXHRzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbitcbitcdGNsa19kaXNhYmxlX3VucHJlcGFyZShweHBjcy1cdTAwM2Vjc3JfY2xrKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgaW50IHhwY3NfcmtfcG1fcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuK3tcbitcdHN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuK1xuK1x0cmV0dXJuIGNsa19wcmVwYXJlX2VuYWJsZShweHBjcy1cdTAwM2Vjc3JfY2xrKTtcbit9XG4rXG4rc3RhdGljIERFRklORV9SVU5USU1FX0RFVl9QTV9PUFMoeHBjc19ya19wbV9vcHMsXG4rXHRcdFx0ICAgeHBjc19ya19wbV9ydW50aW1lX3N1c3BlbmQsXG4rXHRcdFx0ICAgeHBjc19ya19wbV9ydW50aW1lX3Jlc3VtZSxcbitcdFx0XHQgICBOVUxMKTtcbitcbitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB4cGNzX3JrX2RyaXZlciA9IHtcbitcdC5wcm9iZSA9IHhwY3NfcmtfcHJvYmUsXG4rXHQucmVtb3ZlID0geHBjc19ya19yZW1vdmUsXG4rXHQuZHJpdmVyID0ge1xuK1x0XHQubmFtZSA9IFwicmtfeHBjcy1kd3hwY3NcIixcbitcdFx0LnBtID0gcG1fcHRyKFx1MDAyNnhwY3NfcmtfcG1fb3BzKSxcbitcdFx0Lm9mX21hdGNoX3RhYmxlID0geHBjc19ya19vZl9pZHMsXG4rXHR9LFxuK307XG4rbW9kdWxlX3BsYXRmb3JtX2RyaXZlcih4cGNzX3JrX2RyaXZlcik7XG4rXG4rTU9EVUxFX0RFU0NSSVBUSU9OKFwiUm9ja2NoaXAgWFBDUyBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyXCIpO1xuK01PRFVMRV9BVVRIT1IoXCJDb2lhIFByYW50IFx1MDAzY2NvaWFwcmFudEBnbWFpbC5jb21cdTAwM2VcIik7XG4rTU9EVUxFX0xJQ0VOU0UoXCJHUExcIik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuY1xuaW5kZXggMDMzN2UyYmNjMDEyNS4uNTBiOWNkZjk0ZmRhYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jXG4rKysgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuY1xuQEAgLTgxNiw5ICs4MTYsMTQgQEAgc3RhdGljIGludCB4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdHJldHVybiByZXQ7XG4gXG4rXHQvKiBDbGVhciBDTDM3IEFOIGNvbXBsZXRlIHN0YXR1cyAqL1xuK1x0cmV0ID0geHBjc193cml0ZSh4cGNzLCBNRElPX01NRF9WRU5EMiwgRFdfVlJfTUlJX0FOX0lOVFJfU1RTLCAwKTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdHJldHVybiByZXQ7XG4rXG4gXHRpZiAobmVnX21vZGUgPT0gUEhZTElOS19QQ1NfTkVHX0lOQkFORF9FTkFCTEVEKVxuIFx0XHRyZXQgPSB4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfQk1DUixcbi1cdFx0XHRcdCBtZGlvX2N0cmwgfCBCTUNSX0FORU5BQkxFKTtcbitcdFx0XHRcdCBtZGlvX2N0cmwgfCBCTUNSX0FORU5BQkxFIHwgQk1DUl9BTlJFU1RBUlQpO1xuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMTA5MywxMCArMTA5OCwxNSBAQCBzdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN19zZ21paShzdHJ1Y3QgZHdfeHBjcyAqeHBjcyxcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4tXHQvKiBDbGVhciBBTiBjb21wbGV0ZSBzdGF0dXMgb3IgaW50ZXJydXB0ICovXG4tXHRpZiAoc3RhdGUtXHUwMDNlYW5fY29tcGxldGUpXG4rXHRpZiAoc3RhdGUtXHUwMDNlYW5fY29tcGxldGUpIHtcbitcdFx0LyogQ2xlYXIgQU4gY29tcGxldGUgc3RhdHVzIG9yIGludGVycnVwdCAqL1xuIFx0XHR4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBEV19WUl9NSUlfQU5fSU5UUl9TVFMsIDApO1xuIFxuK1x0XHQvKiBJbml0aWF0ZSB0aGUgbmV4dCByb3VuZCBvZiBBTiAqL1xuK1x0XHR4cGNzX21vZGlmeSh4cGNzLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsIEJNQ1JfQU5SRVNUQVJULFxuK1x0XHRcdCAgICBCTUNSX0FOUkVTVEFSVCk7XG4rXHR9XG4rXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmMgYi9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuY1xuaW5kZXggNzg0MzM1NmE0ZGQ0Ny4uOTE5YmI5N2E0YjE4MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jXG4rKysgYi9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNvbWJwaHkuY1xuQEAgLTE4Niw2ICsxODYsNyBAQCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9ncmZjZmcge1xuIFx0c3RydWN0IGNvbWJwaHlfcmVnIHBpcGVfeHBjc19waHlfcmVhZHk7XG4gXHRzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9wY2llMWwwX3NlbDtcbiBcdHN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3BjaWUxbDFfc2VsO1xuK1x0c3RydWN0IGNvbWJwaHlfcmVnIHBpcGVfc2dtaWlfbWFjX3NlbDtcbiBcdHN0cnVjdCBjb21icGh5X3JlZyB1M290ZzBfcG9ydF9lbjtcbiBcdHN0cnVjdCBjb21icGh5X3JlZyB1M290ZzFfcG9ydF9lbjtcbiB9O1xuQEAgLTIxMiw2ICsyMTMsNyBAQCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9wcml2IHtcbiBcdGJvb2wgZW5hYmxlX3NzYztcbiBcdGJvb2wgZXh0X3JlZmNsaztcbiBcdHN0cnVjdCBjbGsgKnJlZmNsaztcbitcdHUzMiBzZ21paV9tYWNfc2VsO1xuIH07XG4gXG4gc3RhdGljIHZvaWQgcm9ja2NoaXBfY29tYnBoeV91cGRhdGVsKHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgKnByaXYsXG5AQCAtMzc1LDYgKzM3Nyw5IEBAIHN0YXRpYyBpbnQgcm9ja2NoaXBfY29tYnBoeV9wYXJzZV9kdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCByb2NrY2hpcF9jb21icGh5XG4gXG4gXHRwcml2LVx1MDAzZWV4dF9yZWZjbGsgPSBkZXZpY2VfcHJvcGVydHlfcHJlc2VudChkZXYsIFwicm9ja2NoaXAsZXh0LXJlZmNsa1wiKTtcbiBcbitcdHByaXYtXHUwMDNlc2dtaWlfbWFjX3NlbCA9IDE7XG4rXHRkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCBcInJvY2tjaGlwLHNnbWlpLW1hYy1zZWxcIiwgXHUwMDI2cHJpdi1cdTAwM2VzZ21paV9tYWNfc2VsKTtcbitcbiBcdHByaXYtXHUwMDNlcGh5X3JzdCA9IGRldm1fcmVzZXRfY29udHJvbF9nZXRfZXhjbHVzaXZlKGRldiwgXCJwaHlcIik7XG4gXHQvKiBmYWxsYmFjayB0byBvbGQgYmVoYXZpb3VyICovXG4gXHRpZiAoUFRSX0VSUihwcml2LVx1MDAzZXBoeV9yc3QpID09IC1FTk9FTlQpXG5AQCAtODczLDYgKzg3OCw4IEBAIHN0YXRpYyBpbnQgcmszNTY4X2NvbWJwaHlfY2ZnKHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgKnByaXYpXG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBQSFlfVFlQRV9TR01JSTpcbitcdFx0cm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LVx1MDAzZXBpcGVfZ3JmLCBcdTAwMjZjZmctXHUwMDNlcGlwZV9zZ21paV9tYWNfc2VsLFxuK1x0XHRcdFx0XHRwcml2LVx1MDAzZXNnbWlpX21hY19zZWwgXHUwMDNlIDApO1xuIFx0XHRyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtXHUwMDNlcGlwZV9ncmYsIFx1MDAyNmNmZy1cdTAwM2VwaXBlX3hwY3NfcGh5X3JlYWR5LCB0cnVlKTtcbiBcdFx0cm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LVx1MDAzZXBoeV9ncmYsIFx1MDAyNmNmZy1cdTAwM2VwaXBlX3BoeW1vZGVfc2VsLCB0cnVlKTtcbiBcdFx0cm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LVx1MDAzZXBoeV9ncmYsIFx1MDAyNmNmZy1cdTAwM2VwaXBlX3NlbF9xc2dtaWksIHRydWUpO1xuQEAgLTk4NCw2ICs5OTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfZ3JmY2ZnIHJrMzU2OF9jb21icGh5X2dyZmNmZ3MgPSB7XG4gXHQuY29uM19mb3Jfc2F0YVx0XHQ9IHsgMHgwMDBjLCAxNSwgMCwgMHgwMCwgMHg0NDA3IH0sXG4gXHQvKiBwaXBlLWdyZiAqL1xuIFx0LnBpcGVfY29uMF9mb3Jfc2F0YVx0PSB7IDB4MDAwMCwgMTUsIDAsIDB4MDAsIDB4MjIyMCB9LFxuK1x0LnBpcGVfc2dtaWlfbWFjX3NlbFx0PSB7IDB4MDA0MCwgMSwgMSwgMHgwMCwgMHgwMSB9LFxuIFx0LnBpcGVfeHBjc19waHlfcmVhZHlcdD0geyAweDAwNDAsIDIsIDIsIDB4MDAsIDB4MDEgfSxcbiBcdC51M290ZzBfcG9ydF9lblx0XHQ9IHsgMHgwMTA0LCAxNSwgMCwgMHgwMTgxLCAweDExMDAgfSxcbiBcdC51M290ZzFfcG9ydF9lblx0XHQ9IHsgMHgwMTQ0LCAxNSwgMCwgMHgwMTgxLCAweDExMDAgfSxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy1yay5oIGIvaW5jbHVkZS9saW51eC9wY3MvcGNzLXhwY3MtcmsuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjI4NzIzZDViZDc1Y2Ncbi0tLSAvZGV2L251bGxcbisrKyBiL2luY2x1ZGUvbGludXgvcGNzL3Bjcy14cGNzLXJrLmhcbkBAIC0wLDAgKzEsMTEgQEBcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuKyNpZm5kZWYgX19MSU5VWF9QQ1NfWFBDU19ST0NLQ0hJUF9IXG4rI2RlZmluZSBfX0xJTlVYX1BDU19YUENTX1JPQ0tDSElQX0hcbitcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9kZXZpY2UuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MvcGNzLXhwY3MuaFx1MDAzZVxuK1xuK3N0cnVjdCBkd194cGNzICp4cGNzX3JrX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApO1xuK1xuKyNlbmRpZiAvKiBfX0xJTlVYX1BDU19YUENTX1JPQ0tDSElQX0ggKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA1OjEwOjEyLjcwNDY2NTk5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Nzg0NTExOTIzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEV2YWx1YXRpb246IEEgRGVlcCBEaXZlKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRlY2lkZSBpZiB0aGlzIHBhdGNoIHNlcmllcyB3YXJyYW50cyBmdXp6aW5nLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGFjdHVhbGx5IGJlaW5nIGNoYW5nZWQuIFRoZSBkaWZmIHRvdWNoZXMgYSBmZXcga2V5IGFyZWFzOiBEZXZpY2UgVHJlZSBiaW5kaW5ncyBhbmQgZG9jdW1lbnRhdGlvbiwgdGhlIGBNQUlOVEFJTkVSU2AgZmlsZSwgc29tZSBEVFMgZmlsZXMgZm9yIHRoZSBSb2NrY2hpcCBSSzM1NjgsIGFuZCBhIHNpZ25pZmljYW50IGFtb3VudCBvZiBjb2RlIGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLCBzcGVjaWZpY2FsbHkgYXJvdW5kIEV0aGVybmV0IGRyaXZlcnMgYW5kIFBDUyAoUGh5c2ljYWwgQ29kaW5nIFN1YmxheWVyKSBkcml2ZXJzLlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlLCBpdCdzIGNsZWFyIHRoaXMgaXMgZm9jdXNlZCBvbiBicmluZ2luZyB1cCBTR01JSSBzdXBwb3J0IGZvciBSb2NrY2hpcCdzIERXTUFDLCBhbmQgaW50cm9kdWNpbmcgYSBuZXcgUm9ja2NoaXAgWFBDUyBwbGF0Zm9ybSBkcml2ZXIuIFRoZXJlIGFyZSBhbHNvIGNoYW5nZXMgdG8gSW50ZWwgRFdNQUMgYW5kIGEgZmV3IG90aGVyIHBsYXRmb3JtIGRyaXZlcnMgKFJlbmVzYXMsIFNvY2ZwZ2EpLiBUaGUgcGF0Y2ggYWxzbyBpbmNsdWRlcyByZWZhY3RvcmluZyBvZiBgc3RtbWFjX21kaW8uY2AgYW5kIG1vZGlmaWNhdGlvbnMgdG8gYHBjcy14cGNzLmNgLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IHNob3VsZCB0aGlzIGJlIGZ1enplZD8gTGV0J3MgY29uc2lkZXIgdGhlIFwiV29ydGhGdXp6aW5nXCIgcnVsZXMuICBJIGltbWVkaWF0ZWx5IG5lZWQgdG8gcnVsZSBvdXQgY2hhbmdlcyB0aGF0IGFyZSBwdXJlbHkgZGVjb3JhdGl2ZSwgb3IgYWZmZWN0IGNvZGUgdGhhdCdzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBJIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIChsaWtlIHRob3NlIHJlcXVpcmluZyBzcGVjaWZpYyBQQ0llIGNhcmRzKSBhbmQgZHJpdmVycyB0aGF0IGFyZSBvbmx5IGNvbmNlcm5lZCB3aXRoIHJlbW92YWwgb3Igc2h1dGRvd24gY2FsbGJhY2tzLlxuXG5IZXJlJ3MgdGhlIGJyZWFrZG93biBvZiBteSB0aG91Z2h0czpcblxuMS4gICoqUm9ja2NoaXAgc3R1ZmY6KiogVGhlIGBwY3MteHBjcy1yay5jYCwgYHBoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jYCwgYW5kIGBkd21hYy1yay5jYCBkcml2ZXJzIGFyZSBhbGwgUm9ja2NoaXAgU29DIHBsYXRmb3JtIGRyaXZlcnMuIFRoZXNlICoqY2Fubm90KiogYmUgZGlyZWN0bHkgcnVuIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgd2hpY2ggZW11bGF0ZXMgeDg2XFxfNjQgb3IgZ2VuZXJpYyBBUk02NCAodmlydCBtYWNoaW5lcyksIGFuZCBzbyB0aGVzZSBzaG91bGQgYmUgZXhjbHVkZWQuXG4yLiAgKipJbnRlbCBEV01BQzoqKiBgZHdtYWMtaW50ZWwuY2AgaXMgbW9yZSBpbnRlcmVzdGluZywgYnV0IFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoZSBJbnRlbCBtZ2JlL2R3bWFjIFBDSSBkZXZpY2UgZGlyZWN0bHkuIFRoYXQncyBhIGJsb2NrZXIuXG4zLiAgKipPdGhlciBQbGF0Zm9ybSBEcml2ZXJzOioqIFJlbmVzYXMgYW5kIFNvY2ZwZ2EgZHJpdmVycyAoYGR3bWFjLXJlbmVzYXMtZ2JldGguY2AsIGBkd21hYy1yem4xLmNgLCBgZHdtYWMtc29jZnBnYS5jYCkgbGlrZWx5IGFsc28gZmFsbCBpbnRvIHRoZSBzYW1lIGNhdGVnb3J5LCBiZWluZyBTb0Mtc3BlY2lmaWMuXG40LiAgKipgc3RtbWFjX21kaW8uY2AgYW5kIGBwY3MteHBjcy5jYDoqKiBUaGVzZSBhcmUgdGhlIGNvcmUgcGllY2VzIHRoYXQgbG9vayBtb3JlIGdlbmVyYWwuIFRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgUUVNVSwgb3IgYW55IHZpcnR1YWxpemVkIGVudmlyb25tZW50IEknbSBmYW1pbGlhciB3aXRoLCAqdXNlcyogYHN0bW1hY2Agb3IgYHBjcy14cGNzYCwgb3IgaWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHRpZWQgdG8gcGh5c2ljYWwgU29DIGhhcmR3YXJlLiBUaGlzIGlzIGEgcG9pbnQgdG8gY29uZmlybS4gIEkgbmVlZCB0byBjaGVjayBob3cgYHN0bW1hY19wY3Nfc2V0dXBgLCBgc3RtbWFjX3Bjc19jbGVhbmAsIGB4cGNzX2NvbmZpZ19hbmVnX2MzN19zZ21paWAsIGFuZCBgeHBjc19nZXRfc3RhdGVfYzM3X3NnbWlpYCBhcmUgYWN0dWFsbHkgdXNlZCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuXG5cblRoZXJlZm9yZSwgbXkgbmV4dCBzdGVwIGlzIGEgZGVlcCBkaXZlIHdpdGggYGdyZXBgLiBJIG5lZWQgdG8gc2VhcmNoIHRoZSBRRU1VIHNvdXJjZSBhbmQgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBzdXBwb3J0ZWQgaGFyZHdhcmUgYW5kIGFzc29jaWF0ZWQgZHJpdmVycyB0aGF0IGFyZSB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDYyOSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOTksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNToxMDoyMC41NDk3ODg1MzFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg0MTI1MTIwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTE1NzUgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sPTI1NT1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hYy55YW1sLTQwMi0gICAgICAgIHNucHMsZml4ZWQtYnVyc3Q7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuOGktYTgzdC1lbWFjLnlhbWw6NDAzOiAgICAgICAgc25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZnbWFjMV9zdG1tYWNfYXhpX3NldHVwXFx1MDAzZTtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW44aS1hODN0LWVtYWMueWFtbC00MDQtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWw9MTM3PWV4YW1wbGVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sLTE1NS0gICAgICAgIHNucHMsdHNvO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbDoxNTY6ICAgICAgICBzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbC0xNTctXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sOjE1ODogICAgICAgIHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwtMTU5LSAgICAgICAgICAgIHNucHMsYmxlbiA9IFxcdTAwM2MwIDAgMCAwIDE2IDggNFxcdTAwM2U7XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwtMTgxLSAgICAgICAgc25wcyx0c287XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sOjE4MjogICAgICAgIHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cF9nbWFjMVxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sLTE4My1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWw6MTg0OiAgICAgICAgc3RtbWFjX2F4aV9zZXR1cF9nbWFjMTogc3RtbWFjLWF4aS1jb25maWcge1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbC0xODUtICAgICAgICAgICAgc25wcyxibGVuID0gXFx1MDAzYzAgMCAwIDAgMTYgOCA0XFx1MDAzZTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sPTU3PWV4YW1wbGVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWwtNjYtXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWw6Njc6ICAgIHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbC02OC0gICAgICAgIHNucHMsbHBpX2VuO1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWwtMTIwLSAgICAgICAgc25wcyxwYmwgPSBcXHUwMDNjMHg0XFx1MDAzZTtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbDoxMjE6ICAgICAgICBzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sLTEyMi0gICAgICAgIHNucHMsbXRsLXJ4LWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2bXRsX3J4X3NldHVwXFx1MDAzZTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sPTI0OT1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sLTI4NS0gICAgICAgIHNucHMsZm9yY2VfdGhyZXNoX2RtYV9tb2RlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sOjI4NjogICAgICAgIHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6djJoLWdiZXRoLnlhbWwtMjg3LSAgICAgICAgc25wcyxtdGwtcngtY29uZmlnID0gXFx1MDAzY1xcdTAwMjZtdGxfcnhfc2V0dXBcXHUwMDNlO1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6djJoLWdiZXRoLnlhbWwtMjkyLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sOjI5MzogICAgICAgIHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnp2MmgtZ2JldGgueWFtbC0yOTQtICAgICAgICAgICAgc25wcyxscGlfZW47XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdtYWMueWFtbD02NTQ9ZXhhbXBsZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdtYWMueWFtbC02NzAtICAgICAgICBjbG9jay1uYW1lcyA9IFxcXCJzdG1tYWNldGhcXFwiO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc25wcyxkd21hYy55YW1sOjY3MTogICAgICAgIHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWwtNjcyLSAgICAgICAgc25wcyxtdGwtcngtY29uZmlnID0gXFx1MDAzY1xcdTAwMjZtdGxfcnhfc2V0dXBcXHUwMDNlO1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWwtNjc0LVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc25wcyxkd21hYy55YW1sOjY3NTogICAgICAgIHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdtYWMueWFtbC02NzYtICAgICAgICAgICAgc25wcyx3cl9vc3JfbG10ID0gXFx1MDAzYzB4ZlxcdTAwM2U7XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWw9Njc9ZXhhbXBsZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWwtOTAtICAgICAgc25wcyxtdGwtdHgtY29uZmlnID0gXFx1MDAzY1xcdTAwMjZnbWFjMF9tdGxfdHhfc2V0dXBcXHUwMDNlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbDo5MTogICAgICBzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNmdtYWMwX3N0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbC05Mi1cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbC0xMDgtXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sOjEwOTogICAgICBnbWFjMF9zdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sLTExMC0gICAgICAgIHNucHMsYmxlbiA9IFxcdTAwM2MxNiA4IDQgMCAwIDAgMFxcdTAwM2U7XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxzZzIwNDQtZHdtYWMueWFtbD05NT1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sLTExOC0gICAgICBzbnBzLG10bC10eC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNmdtYWMwX210bF90eF9zZXR1cFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWw6MTE5OiAgICAgIHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2Z21hYzBfc3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWwtMTIwLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWwtMTQ1LVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sOjE0NjogICAgICBnbWFjMF9zdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWwtMTQ3LSAgICAgICAgc25wcyxibGVuID0gXFx1MDAzYzE2IDggNCAwIDAgMCAwXFx1MDAzZTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWw9MTU0PWV4YW1wbGVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbC0xNzUtICAgICAgICBzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sOjE3NjogICAgICAgIHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbC0xNzctICAgICAgICBzbnBzLGVuLXR4LWxwaS1jbG9ja2dhdGluZztcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWwtMTkyLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWw6MTkzOiAgICAgICAgc3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWwtMTk0LSAgICAgICAgICAgIHNucHMsbHBpX2VuO1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG0zMi1kd21hYy55YW1sPTE2Mj1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RtMzItZHdtYWMueWFtbC0xODQtICAgICAgICBzbnBzLHBibCA9IFxcdTAwM2MyXFx1MDAzZTtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWw6MTg1OiAgICAgICAgc25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX2NvbmZpZ18wXFx1MDAzZTtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWwtMTg2LSAgICAgICAgc25wcyx0c287XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3RoZWFkLHRoMTUyMC1nbWFjLnlhbWw9ODc9ZXhhbXBsZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3RoZWFkLHRoMTUyMC1nbWFjLnlhbWwtOTgtICAgICAgICBzbnBzLGZpeGVkLWJ1cnN0O1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGhlYWQsdGgxNTIwLWdtYWMueWFtbDo5OTogICAgICAgIHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90aGVhZCx0aDE1MjAtZ21hYy55YW1sLTEwMC0gICAgICAgIHNucHMscGJsID0gXFx1MDAzYzMyXFx1MDAzZTtcXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9MTA3PXN5bnRheCAoZS5nLiBmb3IgUENJIG1vZHVsZSk6OlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtMTA4LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6MTA5OiAgICBtb2Rwcm9iZSBzdG1tYWNfcGNpIFtcXHUwMDNjb3B0aW9uXFx1MDAzZT1cXHUwMDNjVkFMMVxcdTAwM2UsXFx1MDAzY1ZBTDJcXHUwMDNlLC4uLl1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTExMC1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9MzUyPWZpbmRzOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtMzYxLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6MzYyOiAgICAgICAgc3RydWN0IHN0bW1hY19tZGlvX2J1c19kYXRhICptZGlvX2J1c19kYXRhO1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtMzYzLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC0zNjUtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDozNjY6ICAgICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jZmcgKmRtYV9jZmc7XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC0zNjctXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0PTM4Nz1KVU1CTyBmcmFtZXM6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC00MzAtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDo0MzE6ICAgICAgICBzdHJ1Y3Qgc3RtbWFjX3J4cV9jZmcgcnhfcXVldWVzX2NmZ1tNVExfTUFYX1JYX1FVRVVFU107XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDo0MzI6ICAgICAgICBzdHJ1Y3Qgc3RtbWFjX3R4cV9jZmcgdHhfcXVldWVzX2NmZ1tNVExfTUFYX1RYX1FVRVVFU107XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC00MzMtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0PTQ0OD1pcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgQU1CQSBicmlkZ2UgdG8gZ2VuZXJhdGUgbW9yZSBlZmZpY2llbnQgU1RCdXMgdHJhZmZpYzo6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTQ1NC1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0OjQ1NTogICAgICAgIHN0cnVjdCBjbGsgKnN0bW1hY19jbGs7XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC00NTYtICAgICAgICBzdHJ1Y3QgY2xrICpwY2xrO1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC00NjMtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDo0NjQ6ICAgICAgICBzdHJ1Y3QgcmVzZXRfY29udHJvbCAqc3RtbWFjX3JzdDtcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTQ2NS1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtNDY3LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6NDY4OiAgICAgICAgc3RydWN0IHN0bW1hY19heGkgKmF4aTtcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTQ2OS1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9NTAyPUZvciBNRElPIGJ1cyBkYXRhLCB3ZSBoYXZlOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC01MDUtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDo1MDY6ICAgIHN0cnVjdCBzdG1tYWNfbWRpb19idXNfZGF0YSB7XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC01MDctXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0PTUyOD1Gb3IgRE1BIGVuZ2luZSBjb25maWd1cmF0aW9uLCB3ZSBoYXZlOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC01MzEtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDo1MzI6ICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NmZyB7XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC01MzMtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0PTU2ND1Gb3IgRE1BIEFYSSBwYXJhbWV0ZXJzLCB3ZSBoYXZlOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC01NjctXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDo1Njg6ICAgIHN0cnVjdCBzdG1tYWNfYXhpIHtcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTU2OS1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9NjAxPUZvciB0aGUgUlggUXVldWVzIGNvbmZpZ3VyYXRpb24sIHdlIGhhdmU6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTYwNC1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0OjYwNTogICAgc3RydWN0IHN0bW1hY19yeHFfY2ZnIHtcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTYwNi1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q9NjI4PUZvciB0aGUgVFggUXVldWVzIGNvbmZpZ3VyYXRpb24sIHdlIGhhdmU6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTYzMS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0OjYzMjogICAgc3RydWN0IHN0bW1hY190eHFfY2ZnIHtcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTYzMy1cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2F4aXMvYXJ0cGVjNi5kdHNpPTI4Nz1cXHRcXHRldGhlcm5ldDogZXRoZXJuZXRAZjgwMTAwMDAge1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvYXhpcy9hcnRwZWM2LmR0c2ktMjk2LVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2F4aXMvYXJ0cGVjNi5kdHNpOjI5NzpcXHRcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2F4aXMvYXJ0cGVjNi5kdHNpLTI5OC1cXHRcXHRcXHRzbnBzLG10bC1yeC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNm10bF9yeF9zZXR1cFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9heGlzL2FydHBlYzYuZHRzaS0zMDctXFxuYXJjaC9hcm0vYm9vdC9kdHMvYXhpcy9hcnRwZWM2LmR0c2k6MzA4OlxcdFxcdFxcdHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybS9ib290L2R0cy9heGlzL2FydHBlYzYuZHRzaS0zMDktXFx0XFx0XFx0XFx0c25wcyx3cl9vc3JfbG10ID0gXFx1MDAzYzFcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaT0zMjU9XFx0XFx0c2NtIHtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2ktMzI5LVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2k6MzMwOlxcdHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC5kdHNpLTMzMS1cXHRcXHRzbnBzLHdyX29zcl9sbXQgPSBcXHUwMDNjN1xcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC5kdHNpPTEyOTE9XFx0XFx0Z21hYzA6IGV0aGVybmV0QDM3MDAwMDAwIHtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2ktMTI5Ny1cXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC5kdHNpOjEyOTg6XFx0XFx0XFx0c25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX3NldHVwXFx1MDAzZTtcXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC5kdHNpLTEyOTktXFx0XFx0XFx0c25wcyxwYmwgPSBcXHUwMDNjMzJcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaT0xMzE1PVxcdFxcdGdtYWMxOiBldGhlcm5ldEAzNzIwMDAwMCB7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC5kdHNpLTEzMjEtXFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaToxMzIyOlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaS0xMzIzLVxcdFxcdFxcdHNucHMscGJsID0gXFx1MDAzYzMyXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2k9MTMzOT1cXHRcXHRnbWFjMjogZXRoZXJuZXRAMzc0MDAwMDAge1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQuZHRzaS0xMzQ1LVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2k6MTM0NjpcXHRcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2ktMTM0Ny1cXHRcXHRcXHRzbnBzLHBibCA9IFxcdTAwM2MzMlxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC5kdHNpPTEzNjM9XFx0XFx0Z21hYzM6IGV0aGVybmV0QDM3NjAwMDAwIHtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LmR0c2ktMTM2OS1cXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC5kdHNpOjEzNzA6XFx0XFx0XFx0c25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX3NldHVwXFx1MDAzZTtcXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC5kdHNpLTEzNzEtXFx0XFx0XFx0c25wcyxwYmwgPSBcXHUwMDNjMzJcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcnYxMTI2LmR0c2k9NjMzPVxcdGdtYWM6IGV0aGVybmV0QGZmYzQwMDAwIHtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3J2MTEyNi5kdHNpLTY1My1cXG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9ydjExMjYuZHRzaTo2NTQ6XFx0XFx0c25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX3NldHVwXFx1MDAzZTtcXG5hcmNoL2FybS9ib290L2R0cy9yb2NrY2hpcC9ydjExMjYuZHRzaS02NTUtXFx0XFx0c25wcyxtdGwtcngtY29uZmlnID0gXFx1MDAzY1xcdTAwMjZtdGxfcnhfc2V0dXBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcnYxMTI2LmR0c2k9NjU5PVxcdFxcdG1kaW86IG1kaW8ge1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcnYxMTI2LmR0c2ktNjY0LVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3JvY2tjaGlwL3J2MTEyNi5kdHNpOjY2NTpcXHRcXHRzdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvcnYxMTI2LmR0c2ktNjY2LVxcdFxcdFxcdHNucHMsd3Jfb3NyX2xtdCA9IFxcdTAwM2M0XFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzEuZHRzaT0xNzMwPVxcdFxcdFxcdGV0aGVybmV0MTogZXRoZXJuZXRANTgwMGEwMDAge1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzMS5kdHNpLTE3NTEtXFx0XFx0XFx0XFx0c25wcyxwYmwgPSBcXHUwMDNjMlxcdTAwM2U7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzMS5kdHNpOjE3NTI6XFx0XFx0XFx0XFx0c25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX2NvbmZpZ18xXFx1MDAzZTtcXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMxLmR0c2ktMTc1My1cXHRcXHRcXHRcXHRzbnBzLHRzbztcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzEuZHRzaS0xNzU4LVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzEuZHRzaToxNzU5OlxcdFxcdFxcdFxcdHN0bW1hY19heGlfY29uZmlnXzE6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMxLmR0c2ktMTc2MC1cXHRcXHRcXHRcXHRcXHRzbnBzLGJsZW4gPSBcXHUwMDNjMCAwIDAgMCAxNiA4IDRcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzMy5kdHNpPTc0PVxcdGV0aGVybmV0MjogZXRoZXJuZXRANTgwMGUwMDAge1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzMy5kdHNpLTk0LVxcdFxcdHNucHMscGJsID0gXFx1MDAzYzJcXHUwMDNlO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzMuZHRzaTo5NTpcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfY29uZmlnXzJcXHUwMDNlO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzMuZHRzaS05Ni1cXHRcXHRzbnBzLHRzbztcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxMzMuZHRzaS0xMDEtXFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzMy5kdHNpOjEwMjpcXHRcXHRzdG1tYWNfYXhpX2NvbmZpZ18yOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzMy5kdHNpLTEwMy1cXHRcXHRcXHRzbnBzLGJsZW4gPSBcXHUwMDNjMCAwIDAgMCAxNiA4IDRcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MS5kdHNpPTE5NjI9XFx0XFx0XFx0ZXRoZXJuZXQwOiBldGhlcm5ldEA1ODAwYTAwMCB7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxLmR0c2ktMTk4Mi1cXHRcXHRcXHRcXHRzbnBzLHBibCA9IFxcdTAwM2MyXFx1MDAzZTtcXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxLmR0c2k6MTk4MzpcXHRcXHRcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfY29uZmlnXzBcXHUwMDNlO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxNTEuZHRzaS0xOTg0LVxcdFxcdFxcdFxcdHNucHMsdHNvO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MS5kdHNpLTE5ODctXFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MS5kdHNpOjE5ODg6XFx0XFx0XFx0XFx0c3RtbWFjX2F4aV9jb25maWdfMDogc3RtbWFjLWF4aS1jb25maWcge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxNTEuZHRzaS0xOTg5LVxcdFxcdFxcdFxcdFxcdHNucHMsd3Jfb3NyX2xtdCA9IFxcdTAwM2MweDdcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9hbGx3aW5uZXIvc3VuNTVpLWE1MjMuZHRzaT04NTY9XFx0XFx0Z21hYzE6IGV0aGVybmV0QDQ1MTAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9hbGx3aW5uZXIvc3VuNTVpLWE1MjMuZHRzaS04NzAtXFx0XFx0XFx0c25wcyxmaXhlZC1idXJzdDtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FsbHdpbm5lci9zdW41NWktYTUyMy5kdHNpOjg3MTpcXHRcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNmdtYWMxX3N0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYWxsd2lubmVyL3N1bjU1aS1hNTIzLmR0c2ktODcyLVxcdFxcdFxcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2Z21hYzFfbXRsX3J4X3NldHVwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvYWxsd2lubmVyL3N1bjU1aS1hNTIzLmR0c2k9ODgyPVxcdFxcdFxcdGdtYWMxX210bF9yeF9zZXR1cDogcngtcXVldWVzLWNvbmZpZyB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FsbHdpbm5lci9zdW41NWktYTUyMy5kdHNpLTg4Ny1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2FsbHdpbm5lci9zdW41NWktYTUyMy5kdHNpOjg4ODpcXHRcXHRcXHRnbWFjMV9zdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9hbGx3aW5uZXIvc3VuNTVpLWE1MjMuZHRzaS04ODktXFx0XFx0XFx0XFx0c25wcyx3cl9vc3JfbG10ID0gXFx1MDAzYzB4ZlxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpPTU1NT1cXHRcXHRnbWFjMDogZXRoZXJuZXRAMTA4MTAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaS02MDItXFx0XFx0XFx0c25wcyxwZXJmZWN0LWZpbHRlci1lbnRyaWVzID0gXFx1MDAzYzY0XFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpOjYwMzpcXHRcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfZW1hYzBfc2V0dXBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2ktNjA0LVxcdFxcdFxcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2bXRsX3J4X2VtYWMwX3NldHVwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2ktNjEzLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2k6NjE0OlxcdFxcdFxcdHN0bW1hY19heGlfZW1hYzBfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpLTYxNS1cXHRcXHRcXHRcXHRzbnBzLHdyX29zcl9sbXQgPSBcXHUwMDNjMzFcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaT03MDE9XFx0XFx0Z21hYzE6IGV0aGVybmV0QDEwODIwMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2ktNzQ4LVxcdFxcdFxcdHNucHMscGVyZmVjdC1maWx0ZXItZW50cmllcyA9IFxcdTAwM2M2NFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaTo3NDk6XFx0XFx0XFx0c25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX2VtYWMxX3NldHVwXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpLTc1MC1cXHRcXHRcXHRzbnBzLG10bC1yeC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNm10bF9yeF9lbWFjMV9zZXR1cFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpLTc1OS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpOjc2MDpcXHRcXHRcXHRzdG1tYWNfYXhpX2VtYWMxX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaS03NjEtXFx0XFx0XFx0XFx0c25wcyx3cl9vc3JfbG10ID0gXFx1MDAzYzMxXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2k9ODQ3PVxcdFxcdGdtYWMyOiBldGhlcm5ldEAxMDgzMDAwMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2FfYWdpbGV4NS5kdHNpLTg5NC1cXHRcXHRcXHRzbnBzLHBlcmZlY3QtZmlsdGVyLWVudHJpZXMgPSBcXHUwMDNjNjRcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2k6ODk1OlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9lbWFjMl9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaS04OTYtXFx0XFx0XFx0c25wcyxtdGwtcngtY29uZmlnID0gXFx1MDAzY1xcdTAwMjZtdGxfcnhfZW1hYzJfc2V0dXBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaS05MDUtXFxuYXJjaC9hcm02NC9ib290L2R0cy9pbnRlbC9zb2NmcGdhX2FnaWxleDUuZHRzaTo5MDY6XFx0XFx0XFx0c3RtbWFjX2F4aV9lbWFjMl9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwvc29jZnBnYV9hZ2lsZXg1LmR0c2ktOTA3LVxcdFxcdFxcdFxcdHNucHMsd3Jfb3NyX2xtdCA9IFxcdTAwM2MzMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210MjcxMmUuZHRzaT02ODE9XFx0dWFydDQ6IHNlcmlhbEAxMTAxOTAwMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210MjcxMmUuZHRzaS02OTMtXFxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDI3MTJlLmR0c2k6Njk0OlxcdHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210MjcxMmUuZHRzaS02OTUtXFx0XFx0c25wcyx3cl9vc3JfbG10ID0gXFx1MDAzYzB4N1xcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210MjcxMmUuZHRzaT03MzA9XFx0ZXRoOiBldGhlcm5ldEAxMTAxYzAwMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210MjcxMmUuZHRzaS03NTMtXFx0XFx0bWVkaWF0ZWsscGVyaWNmZyA9IFxcdTAwM2NcXHUwMDI2cGVyaWNmZ1xcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDI3MTJlLmR0c2k6NzU0OlxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDI3MTJlLmR0c2ktNzU1LVxcdFxcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2bXRsX3J4X3NldHVwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTg4LmR0c2k9MTczNj1cXHRcXHRldGg6IGV0aGVybmV0QDExMDIxMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTg4LmR0c2ktMTc1Ny1cXHRcXHRcXHRtZWRpYXRlayxwZXJpY2ZnID0gXFx1MDAzY1xcdTAwMjZpbmZyYWNmZ19hb1xcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxODguZHRzaToxNzU4OlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxODguZHRzaS0xNzU5LVxcdFxcdFxcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2bXRsX3J4X3NldHVwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTg4LmR0c2k9MTc2Nj1cXHRcXHRcXHRldGhfbWRpbzogbWRpbyB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE4OC5kdHNpLTE3NzEtXFxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxODguZHRzaToxNzcyOlxcdFxcdFxcdHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE4OC5kdHNpLTE3NzMtXFx0XFx0XFx0XFx0c25wcyxibGVuID0gXFx1MDAzYzAgMCAwIDAgMTYgOCA0XFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTk1LmR0c2k9MTMwMT1cXHRcXHRldGg6IGV0aGVybmV0QDExMDIxMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTk1LmR0c2ktMTMyNS1cXHRcXHRcXHRtZWRpYXRlayxwZXJpY2ZnID0gXFx1MDAzY1xcdTAwMjZpbmZyYWNmZ19hb1xcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxOTUuZHRzaToxMzI2OlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxOTUuZHRzaS0xMzI3LVxcdFxcdFxcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2bXRsX3J4X3NldHVwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTk1LmR0c2k9MTMzND1cXHRcXHRcXHRtZGlvIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTk1LmR0c2ktMTMzOS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrL210ODE5NS5kdHNpOjEzNDA6XFx0XFx0XFx0c3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTk1LmR0c2ktMTM0MS1cXHRcXHRcXHRcXHRzbnBzLHdyX29zcl9sbXQgPSBcXHUwMDNjMHg3XFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOGcwNDYuZHRzaT03NzA9XFx0XFx0ZXRoMDogZXRoZXJuZXRAMTFjMzAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA4ZzA0Ni5kdHNpLTgxNC1cXHRcXHRcXHRzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDhnMDQ2LmR0c2k6ODE1OlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA4ZzA0Ni5kdHNpLTgxNi1cXHRcXHRcXHRzbnBzLG10bC1yeC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNm10bF9yeF9zZXR1cDBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA4ZzA0Ni5kdHNpPTg4Nz1cXHRcXHRldGgxOiBldGhlcm5ldEAxMWM0MDAwMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDhnMDQ2LmR0c2ktOTMxLVxcdFxcdFxcdHNucHMsZm9yY2VfdGhyZXNoX2RtYV9tb2RlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOGcwNDYuZHRzaTo5MzI6XFx0XFx0XFx0c25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX3NldHVwXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDhnMDQ2LmR0c2ktOTMzLVxcdFxcdFxcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2bXRsX3J4X3NldHVwMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDhnMDQ2LmR0c2k9MTAzMj1cXHRcXHR3ZHQwOiB3YXRjaGRvZ0AxMjgwMDgwMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDhnMDQ2LmR0c2ktMTA0Ni1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDhnMDQ2LmR0c2k6MTA0NzpcXHRzdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA4ZzA0Ni5kdHNpLTEwNDgtXFx0XFx0c25wcyxscGlfZW47XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2k9MTgzOT1cXHRcXHRldGgwOiBldGhlcm5ldEAxNWMzMDAwMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2ktMTg3MS1cXHRcXHRcXHRzbnBzLGZvcmNlX3NmX2RtYV9tb2RlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNDcuZHRzaToxODcyOlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA0Ny5kdHNpLTE4NzMtXFx0XFx0XFx0c25wcyxtdGwtcngtY29uZmlnID0gXFx1MDAzY1xcdTAwMjZtdGxfcnhfc2V0dXAwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNDcuZHRzaT0xOTM5PVxcdFxcdGV0aDE6IGV0aGVybmV0QDE1YzQwMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNDcuZHRzaS0xOTcxLVxcdFxcdFxcdHNucHMsZm9yY2Vfc2ZfZG1hX21vZGU7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA0Ny5kdHNpOjE5NzI6XFx0XFx0XFx0c25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX3NldHVwXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2ktMTk3My1cXHRcXHRcXHRzbnBzLG10bC1yeC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNm10bF9yeF9zZXR1cDFcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA0Ny5kdHNpPTIxNDY9XFx0XFx0dnNwZDE6IHZzcEAxNjRiMDAwMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2ktMjE2MC1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDQ3LmR0c2k6MjE2MTpcXHRzdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA0Ny5kdHNpLTIxNjItXFx0XFx0c25wcyxscGlfZW47XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2k9MTUxMD1cXHRcXHRldGgwOiBldGhlcm5ldEAxNWMzMDAwMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2ktMTU0My1cXHRcXHRcXHRzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2k6MTU0NDpcXHRcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTYuZHRzaS0xNTQ1LVxcdFxcdFxcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2bXRsX3J4X3NldHVwMFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2k9MTYxMT1cXHRcXHRldGgxOiBldGhlcm5ldEAxNWM0MDAwMCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2ktMTY0NC1cXHRcXHRcXHRzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2k6MTY0NTpcXHRcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTYuZHRzaS0xNjQ2LVxcdFxcdFxcdHNucHMsbXRsLXJ4LWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2bXRsX3J4X3NldHVwMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU2LmR0c2k9MTc4OD1cXHRcXHR2c3BkOiB2c3BAMTY0ODAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ni5kdHNpLTE4MDEtXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ni5kdHNpOjE4MDI6XFx0c3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTYuZHRzaS0xODAzLVxcdFxcdHNucHMsbHBpX2VuO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpPTE2NDA9XFx0XFx0ZXRoMDogZXRoZXJuZXRAMTVjMzAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpLTE2NzMtXFx0XFx0XFx0c25wcyxmb3JjZV90aHJlc2hfZG1hX21vZGU7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpOjE2NzQ6XFx0XFx0XFx0c25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX3NldHVwXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU3LmR0c2ktMTY3NS1cXHRcXHRcXHRzbnBzLG10bC1yeC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNm10bF9yeF9zZXR1cDBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpPTE3NDE9XFx0XFx0ZXRoMTogZXRoZXJuZXRAMTVjNDAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpLTE3NzQtXFx0XFx0XFx0c25wcyxmb3JjZV90aHJlc2hfZG1hX21vZGU7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpOjE3NzU6XFx0XFx0XFx0c25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX3NldHVwXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU3LmR0c2ktMTc3Ni1cXHRcXHRcXHRzbnBzLG10bC1yeC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNm10bF9yeF9zZXR1cDFcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA1Ny5kdHNpPTE5MTg9XFx0XFx0dnNwZDogdnNwQDE2NDgwMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTcuZHRzaS0xOTMxLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNTcuZHRzaToxOTMyOlxcdHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDU3LmR0c2ktMTkzMy1cXHRcXHRzbnBzLGxwaV9lbjtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaT01MzQ9XFx0XFx0Z21hYzA6IGV0aGVybmV0QDgwMTAwMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaS01NzYtXFx0XFx0XFx0c25wcyxmb3JjZV90aHJlc2hfZG1hX21vZGU7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA3Ny5kdHNpOjU3NzpcXHRcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaS01NzgtXFx0XFx0XFx0c25wcyxtdGwtcngtY29uZmlnID0gXFx1MDAzY1xcdTAwMjZtdGxfcnhfc2V0dXAwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaT02ODA9XFx0XFx0Z21hYzE6IGV0aGVybmV0QDkyMDAwMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaS03MjItXFx0XFx0XFx0c25wcyxmb3JjZV90aHJlc2hfZG1hX21vZGU7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA3Ny5kdHNpOjcyMzpcXHRcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaS03MjQtXFx0XFx0XFx0c25wcyxtdGwtcngtY29uZmlnID0gXFx1MDAzY1xcdTAwMjZtdGxfcnhfc2V0dXAxXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaT04MjY9XFx0XFx0Z21hYzI6IGV0aGVybmV0QDkyMDEwMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaS04NjgtXFx0XFx0XFx0c25wcyxmb3JjZV90aHJlc2hfZG1hX21vZGU7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA3Ny5kdHNpOjg2OTpcXHRcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaS04NzAtXFx0XFx0XFx0c25wcyxtdGwtcngtY29uZmlnID0gXFx1MDAzY1xcdTAwMjZtdGxfcnhfc2V0dXAyXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaT0xMzcyPVxcdFxcdFxcdHNkaGkxX3ZxbW1jOiB2cW1tYy1yZWd1bGF0b3Ige1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA3Ny5kdHNpLTEzODAtXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA3Ny5kdHNpOjEzODE6XFx0c3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOWEwOWcwNzcuZHRzaS0xMzgyLVxcdFxcdHNucHMsbHBpX2VuO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpPTUzND1cXHRcXHRnbWFjMDogZXRoZXJuZXRAODAxMDAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpLTU3Ny1cXHRcXHRcXHRzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDg3LmR0c2k6NTc4OlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpLTU3OS1cXHRcXHRcXHRzbnBzLG10bC1yeC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNm10bF9yeF9zZXR1cDBcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpPTY4MT1cXHRcXHRnbWFjMTogZXRoZXJuZXRAOTIwMDAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpLTcyNC1cXHRcXHRcXHRzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDg3LmR0c2k6NzI1OlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpLTcyNi1cXHRcXHRcXHRzbnBzLG10bC1yeC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNm10bF9yeF9zZXR1cDFcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpPTgyOD1cXHRcXHRnbWFjMjogZXRoZXJuZXRAOTIwMTAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpLTg3MS1cXHRcXHRcXHRzbnBzLGZvcmNlX3RocmVzaF9kbWFfbW9kZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDg3LmR0c2k6ODcyOlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpLTg3My1cXHRcXHRcXHRzbnBzLG10bC1yeC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNm10bF9yeF9zZXR1cDJcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpPTEzNzU9XFx0XFx0XFx0c2RoaTFfdnFtbWM6IHZxbW1jLXJlZ3VsYXRvciB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDg3LmR0c2ktMTM4My1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDlnMDg3LmR0c2k6MTM4NDpcXHRzdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I5YTA5ZzA4Ny5kdHNpLTEzODUtXFx0XFx0c25wcyxscGlfZW47XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzUyOC5kdHNpPTEwNTg9XFx0XFx0Z21hYzA6IGV0aGVybmV0QGZmYmQwMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTI4LmR0c2ktMTA3NS1cXHRcXHRcXHRyb2NrY2hpcCxncmYgPSBcXHUwMDNjXFx1MDAyNnZvX2dyZlxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaToxMDc2OlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2Z21hYzBfc3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaS0xMDc3LVxcdFxcdFxcdHNucHMsbWl4ZWQtYnVyc3Q7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzUyOC5kdHNpPTEwODg9XFx0XFx0XFx0XFx0cm1paTBfcGh5OiBldGhlcm5ldC1waHlAMiB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzUyOC5kdHNpLTEwOTktXFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaToxMTAwOlxcdFxcdFxcdGdtYWMwX3N0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzUyOC5kdHNpLTExMDEtXFx0XFx0XFx0XFx0c25wcyxibGVuID0gXFx1MDAzYzAgMCAwIDAgMTYgOCA0XFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTI4LmR0c2k9MTExNz1cXHRcXHRnbWFjMTogZXRoZXJuZXRAZmZiZTAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaS0xMTM0LVxcdFxcdFxcdHJvY2tjaGlwLGdyZiA9IFxcdTAwM2NcXHUwMDI2dnB1X2dyZlxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaToxMTM1OlxcdFxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2Z21hYzFfc3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaS0xMTM2LVxcdFxcdFxcdHNucHMsbWl4ZWQtYnVyc3Q7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzUyOC5kdHNpPTExNDI9XFx0XFx0XFx0bWRpbzE6IG1kaW8ge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaS0xMTQ3LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTI4LmR0c2k6MTE0ODpcXHRcXHRcXHRnbWFjMV9zdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1MjguZHRzaS0xMTQ5LVxcdFxcdFxcdFxcdHNucHMsYmxlbiA9IFxcdTAwM2MwIDAgMCAwIDE2IDggNFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpPTMwNj1cXHRnbWFjMDogZXRoZXJuZXRAZmUyYTAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaS0zMjItXFx0XFx0cm9ja2NoaXAsZ3JmID0gXFx1MDAzY1xcdTAwMjZncmZcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2k6MzIzOlxcdFxcdHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2Z21hYzBfc3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NjguZHRzaS0zMjQtXFx0XFx0c25wcyxtaXhlZC1idXJzdDtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2k9MzMwPVxcdFxcdG1kaW8wOiBtZGlvIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2ktMzM1LVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2k6MzM2OlxcdFxcdGdtYWMwX3N0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2OC5kdHNpLTMzNy1cXHRcXHRcXHRzbnBzLGJsZW4gPSBcXHUwMDNjMCAwIDAgMCAxNiA4IDRcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NngtYmFzZS5kdHNpPTcwMD1cXHRnbWFjMTogZXRoZXJuZXRAZmUwMTAwMDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NngtYmFzZS5kdHNpLTcxNi1cXHRcXHRyb2NrY2hpcCxncmYgPSBcXHUwMDNjXFx1MDAyNmdyZlxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NngtYmFzZS5kdHNpOjcxNzpcXHRcXHRzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNmdtYWMxX3N0bW1hY19heGlfc2V0dXBcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTZ4LWJhc2UuZHRzaS03MTgtXFx0XFx0c25wcyxtaXhlZC1idXJzdDtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTZ4LWJhc2UuZHRzaT03MjQ9XFx0XFx0bWRpbzE6IG1kaW8ge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NngtYmFzZS5kdHNpLTcyOS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2eC1iYXNlLmR0c2k6NzMwOlxcdFxcdGdtYWMxX3N0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2eC1iYXNlLmR0c2ktNzMxLVxcdFxcdFxcdHNucHMsYmxlbiA9IFxcdTAwM2MwIDAgMCAwIDE2IDggNFxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU3Ni5kdHNpPTE4MzU9XFx0XFx0Z21hYzA6IGV0aGVybmV0QDJhMjIwMDAwIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTc2LmR0c2ktMTg1Mi1cXHRcXHRcXHRyb2NrY2hpcCxwaHAtZ3JmID0gXFx1MDAzY1xcdTAwMjZpb2NfZ3JmXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU3Ni5kdHNpOjE4NTM6XFx0XFx0XFx0c25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZnbWFjMF9zdG1tYWNfYXhpX3NldHVwXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU3Ni5kdHNpLTE4NTQtXFx0XFx0XFx0c25wcyxtaXhlZC1idXJzdDtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTc2LmR0c2k9MTg2MD1cXHRcXHRcXHRtZGlvMDogbWRpbyB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU3Ni5kdHNpLTE4NjUtXFxuYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1NzYuZHRzaToxODY2OlxcdFxcdFxcdGdtYWMwX3N0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU3Ni5kdHNpLTE4NjctXFx0XFx0XFx0XFx0c25wcyxibGVuID0gXFx1MDAzYzAgMCAwIDAgMTYgOCA0XFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTc2LmR0c2k9MTg4Mz1cXHRcXHRnbWFjMTogZXRoZXJuZXRAMmEyMzAwMDAge1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA1OjEwOjIyLjM5MTA0NTQ5M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQxNjU1MjE0MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBRRU1VIGFuZCB0aGUgYHN0bW1hY2AgRHJpdmVyKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYHN0bW1hY2Ag4oCTIHJpZ2h0LCB0aGF0J3MgdGhlIGRyaXZlciBmb3IgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUNzLiBJdCdzIHViaXF1aXRvdXMgaW4gZW1iZWRkZWQgc3lzdGVtcywgdGhlIFJvY2tjaGlwcywgQWxsd2lubmVycywgU1RNMzJzLCBSZW5lc2FzLCBTb2NmcGdhcywgYW5kIGV2ZW4gSW50ZWwgU29Dcy4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBkb2VzIFFFTVUgZW11bGF0ZSB0aGlzIGRpcmVjdGx5LCBvciBpcyB0aGVyZSBhIHBhdGh3YXkgdG8gaXQgd2l0aGluIHRoZSBzdGFuZGFyZCBlbnZpcm9ubWVudHMsIHBhcnRpY3VsYXJseSB0aGUgb25lcyB0aGF0IHdvdWxkIGJlIHJlbGV2YW50IGZvciBteSB3b3JrIHdpdGggc3l6a2FsbGVyIG9uIHg4Nl82NCBvciBhcm02NCB2aXJ0IG1hY2hpbmVzP1xuXG5NeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBzZWUgd2hhdCBuZXR3b3JrIGRldmljZXMgUUVNVSBuYXRpdmVseSBzdXBwb3J0cy4gRTEwMDAsIGUxMDAwZSwgaWdiLCBydGw4MTM5LCB0aGUgdXN1YWwgc3VzcGVjdHMuIEJ1dCwgaG9sZCBvbi4uLiBkb2VzIGl0IGFjdHVhbGx5IGVtdWxhdGUgYGR3bWFjYCBvciBgc3RtbWFjYCBkaXJlY3RseT8gQWgsIG9uICpzcGVjaWZpYyogQVJNIGJvYXJkcywgbGlrZSBTVE0zMiwgdGhlcmUncyBgZHdjX2V0aF9xb3NgIG9yIGBzdG0zMl9kd21hY2Agb3Igc2ltaWxhci4gSG93ZXZlciwgdGhhdCdzIG5vdCB3aGF0IEknbSB0YXJnZXRpbmcgaGVyZTsgdGhvc2UgYXJlIGZvciBzcGVjaWFsaXplZCBjYXNlcy4gU28sIGZvciB0aGUgZ2VuZXJhbCBRRU1VIC8gR0NFIHg4Nl82NCBhbmQgYXJtNjQgdmlydHVhbCBtYWNoaW5lcywgdGhlcmUncyBubyBgc3RtbWFjYCBkZXZpY2UgcHJlc2VudC4gTm8gdmlydHVhbCBvciBlbXVsYXRlZCBgc3RtbWFjYCBhdCBhbGwgaW4gdGhlIHN0YW5kYXJkIGJ1aWxkcy4gVGhhdCdzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLlxuXG5XYWl0LCB0aGVuIHdoYXQgYWJvdXQgdGhlIGBkd21hYy1pbnRlbC5jYCBmaWxlPyBMb29raW5nIGF0IHRoYXQsIGl0J3MgYSBQQ0kgZHJpdmVyLiBTbywgbXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhhdCBpbiBtb3JlIGRldGFpbCBhbmQgc2VlIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gTGV0J3MgaW5zcGVjdCBgZHdtYWMtaW50ZWwuY2AgdG8gc2VlIGlmIHRoYXQgaGVscHMgbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MjE2LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA1OjEwOjI2LjU1NjU3MDE0OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDc2MDM0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNT0RVTEVfREVWSUNFX1RBQkxFXFxcXChwY2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTE0MzE9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGludGVsX2V0aF9wY2lfaWRfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTQ1MC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTQ1MTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaW50ZWxfZXRoX3BjaV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDUyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNToxMDoyNi42MTEzMzg1OTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5MDQxMDI5NzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBQYXRjaDogV29ydGhGdXp6aW5nIEV2YWx1YXRpb24qKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIGJyZWFrZG93biBvZiBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcyBwYXRjaC4gSSdtIGxvb2tpbmcgYXQgYSBjb21wbGV4IHNldCBvZiBjaGFuZ2VzLiBJdCBzZWVtcyBsaWtlIHRoZSBwYXRjaCB0b3VjaGVzIGEgYnVuY2ggb2YgZHJpdmVyczogYGR3bWFjLWludGVsLmNgLCBgZHdtYWMtcmsuY2AsIGBwY3MteHBjcy1yay5jYCwgYHBoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jYCwgYGR3bWFjLXJlbmVzYXMtZ2JldGguY2AsIGBkd21hYy1yem4xLmNgLCBgZHdtYWMtc29jZnBnYS5jYCwgYHN0bW1hY19tZGlvLmNgLCBhbmQgYHBjcy14cGNzLmNgLiBUaGVzZSBhcmUgYWxsIHJlbGF0ZWQgdG8gRXRoZXJuZXQsIHNwZWNpZmljYWxseSBkcml2ZXJzIGZvciB2YXJpb3VzIGhhcmR3YXJlOiBJbnRlbCBQQ0llIGRldmljZXMsIFJvY2tjaGlwIHBsYXRmb3JtcywgUmVuZXNhcyBTb0NzLCBJbnRlbC9BbHRlcmEgU29DIHBsYXRmb3JtcywgYW5kIHNvbWUgY29tbW9uIHN0bW1hYyBhbmQgcGNzIGNvZGUuXG5cbkZpcnN0LCBsZXQncyBlc3RhYmxpc2ggdGhlIGNvbnRleHQsIGJ5IGNhcmVmdWxseSByZXZpZXdpbmcgdGhlIGluc3RydWN0aW9ucy4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGlzIGNvZGUgaXMgXCJXb3J0aEZ1enppbmdcIiBvciBub3QuIEJhc2VkIG9uIHRoZSBwcm9tcHQsIEkgbmVlZCB0byBtYWtlIGEganVkZ2VtZW50IGNhbGwuIE1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiBvciBLY29uZmlnL01ha2VmaWxlPyBDaGVjay4gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcz8gQ2hlY2suIENvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24ndCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3c/IE5vdCB5ZXQuIEltcG9zc2libGUgY29kZSBwYXRocyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBIbW0uLi4gbGV0J3MgZXhwbG9yZS4gVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoL1NtYXJ0TklDL0dQVSBkcml2ZXJzIG5lZWRpbmcgcGh5c2ljYWwgUENJZSBoYXJkd2FyZT8gVGhhdCBpcyBhbHNvIGEgc3Ryb25nIHBvc3NpYmlsaXR5LiBGaW5hbGx5LCBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIHRoYXQgb25seSBleGVjdXRlIGR1cmluZyBob3QtdW5wbHVnIG9wZXJhdGlvbnM/IE5vdCBkaXJlY3RseSByZWxldmFudC5cblxuTm93LCBsZXQncyBicmVhayBkb3duIHRoZSBwYXRjaCBjb21wb25lbnRzOiBEZXZpY2UgdHJlZSBiaW5kaW5ncyBmb3IgUm9ja2NoaXAgaGFyZHdhcmUgKGJvdGggeHBjcyBhbmQgdGhlIGNvbWJwaHkpLCBNQUlOVEFJTkVSUywgbW9yZSBkZXZpY2UgdHJlZSBmaWxlcywgS2NvbmZpZyBhbmQgTWFrZWZpbGUgY2hhbmdlcywgYW5kIHZhcmlvdXMgUm9ja2NoaXAtc3BlY2lmaWMgZHJpdmVycyAobGlrZSB0aGUgeHBjcyBkcml2ZXIgYW5kIHRoZSBHTUFDIGRyaXZlcikuIEkgYWxzbyBzZWUgUmVuZXNhcyBkcml2ZXJzLCBJbnRlbC9BbHRlcmEgU29DIGRyaXZlcnMsIGNvbW1vbiBzdG1tYWMgYW5kIHBjcyBjb2RlLCBhbmQgc29tZSBJbnRlbCBQQ0kgZHJpdmVyLiBTbyBpdCdzIGEgbWl4IG9mIGhhcmR3YXJlLXNwZWNpZmljIGFuZCBtb3JlIGdlbmVyYWwgc3RtbWFjL3BjcyBjb2RlLlxuXG5UaGUgY3J1eCBvZiB0aGlzIGFuYWx5c2lzIGlzIHdoZXRoZXIgdGhpcyBjb2RlIGNhbiBiZSByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBIZXJlJ3Mgd2hlcmUgaXQgY2xpY2tzOiBOb25lIG9mIHRoaXMgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGJlY2F1c2UgdGhlc2UgcGxhdGZvcm1zIGRvbid0IGVtdWxhdGUgdGhlIHNwZWNpZmljIGhhcmR3YXJlIGJlaW5nIHRhcmdldGVkIGhlcmUuIE5vIHZpcnR1YWwgb3IgZW11bGF0ZWQgZGV2aWNlcyBleGlzdCBmb3Igc3RtbWFjIG9yIGR3X3hwY3MsIGFuZCB0aGUgbmV0d29yayBpbnRlcmZhY2VzIHByb3ZpZGVkIGluIFFFTVUgZG9uJ3QgdXNlIHRoZXNlIGRyaXZlcnMuIE5laXRoZXIgdGhlIFJvY2tjaGlwIFNvQ3Mgbm9yIHRoZSBJbnRlbCBEV01BQyBQQ0kgZGV2aWNlcyBleGlzdCBpbiB0aGlzIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBObyB2aXJ0dWFsIG9yIGVtdWxhdGVkIGRldmljZXMgaW5zdGFudGlhdGUgc3RtbWFjIG9yIGR3X3hwY3MuXG5cbkkndmUgcmUtcmV2aWV3ZWQgZXZlcnl0aGluZyB0byBlbnN1cmUgdGhlIGFuYWx5c2lzIGlzIGNvbXBsZXRlLiBUaGVyZSBhcmUgbm8gY29yZSBuZXR3b3JraW5nIGludGVyZmFjZXMsIGFyY2gtZ2VuZXJpYyBkcml2ZXJzLCBvciBtb2NrIGludGVyZmFjZXMgYWZmZWN0ZWQuIFRoZSBjb2RlIHJlcXVpcmVzIHNwZWNpZmljLCBwaHlzaWNhbCBoYXJkd2FyZS4gSXQgc2VlbXMgbGlrZSB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHRoYXQgaXMgdW5yZWFjaGFibGUgaW4gUUVNVSBvciBHQ0UuXG5cblRoZXJlZm9yZSwgYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgdGhlIHJpZ2h0IGNhbGwgaGVyZS4gVGhlIHBhdGNoIG1vZGlmaWNhdGlvbnMgYXJlIGNvbmZpbmVkIHRvIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgKFJvY2tjaGlwLCBSZW5lc2FzLCBJbnRlbCkgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIHNldC1yZXN1bHRzIHBhcmFtZXRlcnMgYXJlIGNsZWFyOiBgV29ydGhGdXp6aW5nOiBmYWxzZWAsIGBFbmFibGVDb25maWdzOiBbXWAsIGBGb2N1c1N5bWJvbHM6IFtdYCwgd2l0aCBhIGNvbmNpc2UgcmVhc29uaW5nLiBMZXQncyBtYWtlIHRoZSBjYWxsIHRvIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MTc3LCJPdXRwdXRUb2tlbnMiOjE3MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDU6MTA6MzUuNjUyMzcxNjg4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjIxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgYWRkcyBzdXBwb3J0IGZvciBSb2NrY2hpcCBSSzM1NjggU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBQaHlzaWNhbCBDb2RpbmcgU3VibGF5ZXIgKFhQQ1MpIGFuZCBTR01JSSBpbnRlcmZhY2UgY29uZmlndXJhdGlvbiBmb3IgdGhlIFJvY2tjaGlwIERXTUFDIGRyaXZlciwgYWxvbmcgd2l0aCBtaW5vciBQQ1MgaW5pdC9leGl0IGhhbmRsaW5nIHVwZGF0ZXMgZm9yIEludGVsIERXTUFDIFBDSSBhbmQgb3RoZXIgU29DIGdsdWUgZHJpdmVycyAoUmVuZXNhcywgU29jZnBnYSkuIFRoZXNlIGNoYW5nZXMgYXJlIHJlc3RyaWN0ZWQgdG8gdmVuZG9yLXNwZWNpZmljIFNvQyBwbGF0Zm9ybSBkcml2ZXJzIChSb2NrY2hpcCBSSzM1NjgsIFJlbmVzYXMsIFNvY2ZwZ2EpIGFuZCBJbnRlbCBEV01BQyBQQ0kgaGFyZHdhcmUsIG5vbmUgb2Ygd2hpY2ggYXJlIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGNhbm5vdCBiZSBleGVjdXRlZCBkdXJpbmcgdmlydHVhbGl6ZWQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBhZGRzIHN1cHBvcnQgZm9yIFJvY2tjaGlwIFJLMzU2OCBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IFBoeXNpY2FsIENvZGluZyBTdWJsYXllciAoWFBDUykgYW5kIFNHTUlJIGludGVyZmFjZSBjb25maWd1cmF0aW9uIGZvciB0aGUgUm9ja2NoaXAgRFdNQUMgZHJpdmVyLCBhbG9uZyB3aXRoIG1pbm9yIFBDUyBpbml0L2V4aXQgaGFuZGxpbmcgdXBkYXRlcyBmb3IgSW50ZWwgRFdNQUMgUENJIGFuZCBvdGhlciBTb0MgZ2x1ZSBkcml2ZXJzIChSZW5lc2FzLCBTb2NmcGdhKS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVzdHJpY3RlZCB0byB2ZW5kb3Itc3BlY2lmaWMgU29DIHBsYXRmb3JtIGRyaXZlcnMgKFJvY2tjaGlwIFJLMzU2OCwgUmVuZXNhcywgU29jZnBnYSkgYW5kIEludGVsIERXTUFDIFBDSSBoYXJkd2FyZSwgbm9uZSBvZiB3aGljaCBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBjbG91ZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgY2Fubm90IGJlIGV4ZWN1dGVkIGR1cmluZyB2aXJ0dWFsaXplZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDU6MTA6MzUuNjUyNDAyMzU4WiIsIlNlcSI6OSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkdxvz[1] Phase: Running StartedAt: 2026-09-02 05:10:46 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdxvz[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-02 05:10:46 +0000 UTC FinishedAt: 2026-09-02 05:10:51 +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,}