Name: series-workflowjlsf2 Phase: Failed StartedAt: 2026-09-04 15:51:56 +0000 UTC FinishedAt: 2026-09-04 16:14:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlsf2[0] Phase: Succeeded StartedAt: 2026-09-04 15:51:56 +0000 UTC FinishedAt: 2026-09-04 16:14:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlsf2[0].run-triage Phase: Succeeded StartedAt: 2026-09-04 15:51:56 +0000 UTC FinishedAt: 2026-09-04 16:14:25 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDE2OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jIHRvIGFkZCBhIE5VTEwgY2hlY2sgZm9yIHByaXYtXHUwMDNlY2xvY2sgaW4gbGFuODg3eF9waHlfaW5pdCgpLiBUaGlzIGRyaXZlciBpcyBmb3IgTWljcm9jaGlwIExBTjg4N3ggYXV0b21vdGl2ZSBFdGhlcm5ldCBQSFlzICgxMDBCQVNFLVQxLzEwMDBCQVNFLVQxKSwgd2hpY2ggcmVxdWlyZSBkZWRpY2F0ZWQgcGh5c2ljYWwgaGFyZHdhcmUvQVNJQ3MgYW5kIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGEzOTgzYzkwOGZmYWUzMzFkZGJhMDkwMjIxNzJjYjFhYWVjZjIzZWVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCA0IDE2OjEyOjU0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1xuaW5kZXggMzI5MmIyMjM1YzhmYS4uZTM4ZDIwYmY2YWE0YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jXG5AQCAtMTI4NSwxNCAmIzQzOzEyODUsMTYgQEAgc3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdGlmIChJU19FUlIocHJpdi1cdTAwM2VjbG9jaykpXG4gXHRcdFx0cmV0dXJuIFBUUl9FUlIocHJpdi1cdTAwM2VjbG9jayk7XG4gXG4tXHRcdC8qIEVuYWJsZSBwaW4gbXV4IGZvciBFVlQgKi9cbi1cdFx0cGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbi1cdFx0XHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDEsXG4tXHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTixcbi1cdFx0XHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOKTtcbi1cbi1cdFx0LyogSW5pdGlhbGl6ZSBwaW4gbnVtYmVycyBzcGVjaWZpYyB0byBQRVJPVVQgKi9cbi1cdFx0cHJpdi1cdTAwM2VjbG9jay1cdTAwM2VldmVudF9waW4gPSAzO1xuJiM0MztcdFx0aWYgKHByaXYtXHUwMDNlY2xvY2spIHtcbiYjNDM7XHRcdFx0LyogRW5hYmxlIHBpbiBtdXggZm9yIEVWVCAqL1xuJiM0MztcdFx0XHRwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuJiM0MztcdFx0XHRcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMSxcbiYjNDM7XHRcdFx0XHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOLFxuJiM0MztcdFx0XHRcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4pO1xuJiM0MztcbiYjNDM7XHRcdFx0LyogSW5pdGlhbGl6ZSBwaW4gbnVtYmVycyBzcGVjaWZpYyB0byBQRVJPVVQgKi9cbiYjNDM7XHRcdFx0cHJpdi1cdTAwM2VjbG9jay1cdTAwM2VldmVudF9waW4gPSAzO1xuJiM0MztcdFx0fVxuIFxuIFx0XHRwcml2LVx1MDAzZWluaXRfZG9uZSA9IHRydWU7XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTY6MTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jIHRvIGFkZCBhIE5VTEwgY2hlY2sgZm9yIHByaXYtXHUwMDNlY2xvY2sgaW4gbGFuODg3eF9waHlfaW5pdCgpLiBUaGlzIGRyaXZlciBpcyBmb3IgTWljcm9jaGlwIExBTjg4N3ggYXV0b21vdGl2ZSBFdGhlcm5ldCBQSFlzICgxMDBCQVNFLVQxLzEwMDBCQVNFLVQxKSwgd2hpY2ggcmVxdWlyZSBkZWRpY2F0ZWQgcGh5c2ljYWwgaGFyZHdhcmUvQVNJQ3MgYW5kIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEzOTgzYzkwOGZmYWUzMzFkZGJhMDkwMjIxNzJjYjFhYWVjZjIzZWUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIFNlcCA0IDE2OjEyOjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jIGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jCmluZGV4IDMyOTJiMjIzNWM4ZmEuLmUzOGQyMGJmNmFhNGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMKQEAgLTEyODUsMTQgJiM0MzsxMjg1LDE2IEBAIHN0YXRpYyBpbnQgbGFuODg3eF9waHlfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCQlpZiAoSVNfRVJSKHByaXYtJmd0O2Nsb2NrKSkKIAkJCXJldHVybiBQVFJfRVJSKHByaXYtJmd0O2Nsb2NrKTsKIAotCQkvKiBFbmFibGUgcGluIG11eCBmb3IgRVZUICovCi0JCXBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsCi0JCQkgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDEsCi0JCQkgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOLAotCQkJICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTik7Ci0KLQkJLyogSW5pdGlhbGl6ZSBwaW4gbnVtYmVycyBzcGVjaWZpYyB0byBQRVJPVVQgKi8KLQkJcHJpdi0mZ3Q7Y2xvY2stJmd0O2V2ZW50X3BpbiA9IDM7CiYjNDM7CQlpZiAocHJpdi0mZ3Q7Y2xvY2spIHsKJiM0MzsJCQkvKiBFbmFibGUgcGluIG11eCBmb3IgRVZUICovCiYjNDM7CQkJcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwKJiM0MzsJCQkJICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxLAomIzQzOwkJCQkgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOLAomIzQzOwkJCQkgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOKTsKJiM0MzsKJiM0MzsJCQkvKiBJbml0aWFsaXplIHBpbiBudW1iZXJzIHNwZWNpZmljIHRvIFBFUk9VVCAqLwomIzQzOwkJCXByaXYtJmd0O2Nsb2NrLSZndDtldmVudF9waW4gPSAzOwomIzQzOwkJfQogCiAJCXByaXYtJmd0O2luaXRfZG9uZSA9IHRydWU7CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTMxCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IG1lbnRhbCB3YWxrdGhyb3VnaCBvZiB0aGlzLgoKKipBbmFseXppbmcgdGhlIFBIWSBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgZGlmZiBhbmQgdGhlIHJlbGF0ZWQgY29kZS4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNgLCBhbmQgc3BlY2lmaWNhbGx5IHRoZSBgbGFuODg3eF9waHlfaW5pdGAgZnVuY3Rpb24uIFRoYXQgZ2l2ZXMgbWUgYSBzdGFydGluZyBwb2ludC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHdlJiMzOTtyZSBhY3R1YWxseSBkZWFsaW5nIHdpdGggaGVyZS4KCk15IGluc3RpbmN0IGlzIHRvIGNoZWNrIG91dCB0aGUgYnJvYWRlciBjb250ZXh0IG9mIGBtaWNyb2NoaXBfdDEuY2AuIEkgbmVlZCB0byBnZXQgYSBncmlwIG9uIHdoYXQga2luZCBvZiBQSFkgZHJpdmVyIHRoaXMgaXM6IElzIGl0IGZvciBhIGNvbW1vbiBjaGlwPyBIb3cgZG9lcyBpdCBnZXQgcHJvYmVkIGFuZCB1c2VkIGJ5IHRoZSBzeXN0ZW0/IFdoYXQgc3BlY2lmaWMgaGFyZHdhcmUgaXMgaXQgZGVzaWduZWQgZm9yPyBBbmQsIGNyaXRpY2FsbHkgZm9yIG15IGFuYWx5c2lzLCBjYW4gSSB0cmlnZ2VyIHRoaXMgdGhpbmcgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50PyBJJiMzOTttIHRoaW5raW5nIFFFTVUgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0IHJlcXVpcmVzIGFjdHVhbCBoYXJkd2FyZS4KClRpbWUgdG8gcmVhY2ggZm9yIG15IHRvb2xzLiBJJiMzOTtsbCBlaXRoZXIgdXNlIGBncmVwcGVyYCBvciBqdXN0IHF1aWNrbHkgcmVhZCB0aGUgZmlsZS4gQSBxdWljayBjaGVjayBvZiBgbWljcm9jaGlwX3QxLmNgIHdpbGwgZ2l2ZSBtZSB0aGUgaGlnaC1sZXZlbCBwaWN0dXJlIEkgbmVlZC4gVGhpcyB3aWxsIGluZm9ybSBteSBuZXh0IHN0ZXBzIGluIHRoZSBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsYW44ODd4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0yOTg9c3RydWN0IGFjY2Vzc19lcmVnX3ZhbCB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTMwNS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzozMDY6c3RydWN0IGxhbjg4N3hfaHdfc3RhdCB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMzA3LVx0Y29uc3QgY2hhciAqc3RyaW5nO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0zMTItXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MzEzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbGFuODg3eF9od19zdGF0IGxhbjg4N3hfaHdfc3RhdHNbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0zMTQtXHR7IFwmIzM0O1RYIEdvb2QgQ291bnRcJiMzNDssICAgICAgICAgICAgICAgICAgICAgIE1ESU9fTU1EX1ZFTkQxLCBMQU44ODdYX01JU19QS1RfU1RBVF9SRUcwLCAxNH0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTMyMS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzozMjI6c3RydWN0IGxhbjg4N3hfcmVnd3JfbWFwIHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0zMjMtXHR1OCAgbW1kO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0zMjctXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MzI4OnN0cnVjdCBsYW44ODd4X3ByaXYge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjMyOTpcdHU2NCBzdGF0c1tBUlJBWV9TSVpFKGxhbjg4N3hfaHdfc3RhdHMpXTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0zMzAtXHRzdHJ1Y3QgbWNocF9yZHNfcHRwX2Nsb2NrICpjbG9jaztcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM9MTA4MD1zdGF0aWMgaW50IGxhbjg3eHhfZ2V0X3NxaV9tYXgoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTA4NC1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMDg1OnN0YXRpYyBpbnQgbGFuODg3eF9yZ21paV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTA4Ni17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTExMTgtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTExOTpzdGF0aWMgaW50IGxhbjg4N3hfc2dtaWlfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTExMjAte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMTQ5LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjExNTA6c3RhdGljIGludCBsYW44ODd4X2NvbmZpZ19yZ21paV9lbihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTExNTEte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMTU1LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjExNTY6XHRyZXQgPSBsYW44ODd4X3JnbWlpX2luaXQocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMTU3LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTIxMS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMjEyOnN0YXRpYyBpbnQgbGFuODg3eF9jb25maWdfcGh5X2ludGVyZmFjZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyMTMte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjM5LVx0XHQgICAgTEFOODg3WF9NQUNfTU9ERV9TR01JSSkpXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTI0MDpcdFx0XHRyZXQgPSBsYW44ODd4X2NvbmZpZ19yZ21paV9lbihwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNDEtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjQ2LVx0XHRpZiAoIXNnbWlpX2RpcylcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMjQ3Olx0XHRcdHJldCA9IGxhbjg4N3hfc2dtaWlfaW5pdChwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNDgtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjU2LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEyNTc6c3RhdGljIGludCBsYW44ODd4X2dldF9mZWF0dXJlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNTgte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjc1LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEyNzY6c3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTI3Ny17XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTI3ODpcdHN0cnVjdCBsYW44ODd4X3ByaXYgKnByaXYgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjc5LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTMxOS1cdC8qIFBIWSBpbnRlcmZhY2Ugc2V0dXAgKi9cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMzIwOlx0cmV0dXJuIGxhbjg4N3hfY29uZmlnX3BoeV9pbnRlcmZhY2UocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzIxLX1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzIyLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEzMjM6c3RhdGljIGludCBsYW44ODd4X3BoeV9jb25maWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMzI0Olx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBsYW44ODd4X3JlZ3dyX21hcCAqcmVnX21hcCwgaW50IGNudClcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzI1LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTMzNy1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMzM4OnN0YXRpYyBpbnQgbGFuODg3eF9waHlfc2V0dXAoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzM5LXtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMzQwOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBsYW44ODd4X3JlZ3dyX21hcCBwaHlfY2ZnW10gPSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTM0MS1cdFx0LyogUE9SVF9BRkUgd3JpdGVzICovXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEzNjktXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTM3MDpcdHJldHVybiBsYW44ODd4X3BoeV9jb25maWcocGh5ZGV2LCBwaHlfY2ZnLCBBUlJBWV9TSVpFKHBoeV9jZmcpKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzcxLX1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzcyLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEzNzM6c3RhdGljIGludCBsYW44ODd4XzEwME1fc2V0dXAoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzc0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTM3OS1cdCAgICBwaHlkZXYtXHUwMDNlbWFzdGVyX3NsYXZlX3NldCA9PSBNQVNURVJfU0xBVkVfQ0ZHX01BU1RFUl9QUkVGRVJSRUQpe1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEzODA6XHRcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbGFuODg3eF9yZWd3cl9tYXAgcGh5X2NmZ1tdID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEzODEtXHRcdFx0e01ESU9fTU1EX1BNQVBNRCwgTEFOODg3WF9BRkVfUE9SVF9URVNUQlVTX0NUUkw0LCAweDAwYjh9LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzg1LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEzODY6XHRcdHJldCA9IGxhbjg4N3hfcGh5X2NvbmZpZyhwaHlkZXYsIHBoeV9jZmcsIEFSUkFZX1NJWkUocGh5X2NmZykpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEzODctXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEzODg6XHRcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbGFuODg3eF9yZWd3cl9tYXAgcGh5X2NmZ1tdID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEzODktXHRcdFx0e01ESU9fTU1EX1BNQVBNRCwgTEFOODg3WF9BRkVfUE9SVF9URVNUQlVTX0NUUkw0LCAweDAwMzh9LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzkyLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEzOTM6XHRcdHJldCA9IGxhbjg4N3hfcGh5X2NvbmZpZyhwaHlkZXYsIHBoeV9jZmcsIEFSUkFZX1NJWkUocGh5X2NmZykpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEzOTQtXHR9XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0MDEtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQwMjpzdGF0aWMgaW50IGxhbjg4N3hfMTAwME1fc2V0dXAoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDAzLXtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNDA0Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBsYW44ODd4X3JlZ3dyX21hcCBwaHlfY2ZnW10gPSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQwNS1cdFx0e01ESU9fTU1EX1BNQVBNRCwgTEFOODg3WF9UWF9BTVBMVF8xMDAwVDFfUkVHLCAweDAwM2Z9LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDEwLVx0LyogKFJlKWNvbmZpZ3VyZSB0aGUgc3BlZWQvbW9kZSBkZXBlbmRlbnQgVDEgc2V0dGluZ3MgKi9cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNDExOlx0cmV0ID0gbGFuODg3eF9waHlfY29uZmlnKHBoeWRldiwgcGh5X2NmZywgQVJSQVlfU0laRShwaHlfY2ZnKSk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQxMi1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0MTgtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQxOTpzdGF0aWMgaW50IGxhbjg4N3hfbGlua19zZXR1cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0MjAte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDIzLVx0aWYgKHBoeWRldi1cdTAwM2VzcGVlZCA9PSBTUEVFRF8xMDAwKVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE0MjQ6XHRcdHJldCA9IGxhbjg4N3hfMTAwME1fc2V0dXAocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDI1LVx0ZWxzZSBpZiAocGh5ZGV2LVx1MDAzZXNwZWVkID09IFNQRUVEXzEwMClcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNDI2Olx0XHRyZXQgPSBsYW44ODd4XzEwME1fc2V0dXAocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDI3LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDMzLSAqL1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE0MzQ6c3RhdGljIGludCBsYW44ODd4X3BoeV9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0MzUte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDY1LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE0NjY6c3RhdGljIGludCBsYW44ODd4X3BoeV9yZWNvbmZpZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0Njcte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDc1LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE0NzY6XHRyZXR1cm4gbGFuODg3eF9saW5rX3NldHVwKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQ3Ny19XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQ3OC1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNDc5OnN0YXRpYyBpbnQgbGFuODg3eF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0ODAte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDg1LVx0ICovXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQ4NjpcdHJldCA9IGxhbjg4N3hfcGh5X3Jlc2V0KHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQ4Ny1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0ODktXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQ5MDpcdHJldHVybiBsYW44ODd4X3BoeV9yZWNvbmZpZyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0OTEtfVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0OTItXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQ5MzpzdGF0aWMgaW50IGxhbjg4N3hfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDk0LXtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNDk1Olx0c3RydWN0IGxhbjg4N3hfcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDk2LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTAzLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE1MDQ6XHRyZXR1cm4gbGFuODg3eF9waHlfc2V0dXAocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTA1LX1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTA2LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE1MDc6c3RhdGljIHU2NCBsYW44ODd4X2dldF9zdGF0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpKVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1MDgte1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE1MDk6XHRzdHJ1Y3QgbGFuODg3eF9od19zdGF0IHN0YXQgPSBsYW44ODd4X2h3X3N0YXRzW2ldO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE1MTA6XHRzdHJ1Y3QgbGFuODg3eF9wcml2ICpwcml2ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTUxMS1cdGludCB2YWw7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1MjktXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTUzMDpzdGF0aWMgdm9pZCBsYW44ODd4X2dldF9zdGF0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1MzEtXHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfc3RhdHMgKnN0YXRzLCB1NjQgKmRhdGEpXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTUzMi17XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTUzMzpcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGxhbjg4N3hfaHdfc3RhdHMpOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNTM0Olx0XHRkYXRhW2ldID0gbGFuODg3eF9nZXRfc3RhdChwaHlkZXYsIGkpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1MzUtfVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1MzYtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTUzNzpzdGF0aWMgaW50IGxhbjg4N3hfZ2V0X3NzZXRfY291bnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTM4LXtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNTM5Olx0cmV0dXJuIEFSUkFZX1NJWkUobGFuODg3eF9od19zdGF0cyk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTU0MC19XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTU0MS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNTQyOnN0YXRpYyB2b2lkIGxhbjg4N3hfZ2V0X3N0cmluZ3Moc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggKmRhdGEpXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTU0My17XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTU0NDpcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGxhbjg4N3hfaHdfc3RhdHMpOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNTQ1Olx0XHRldGh0b29sX3B1dHMoXHUwMDI2ZGF0YSwgbGFuODg3eF9od19zdGF0c1tpXS5zdHJpbmcpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1NDYtfVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1NDctXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTU0ODpzdGF0aWMgaW50IGxhbjg4N3hfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTQ5LXtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNTUwOlx0c3RydWN0IGxhbjg4N3hfcHJpdiAqcHJpdiA9IHBoeWRldi1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1NTEtXHRpbnQgcmM7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1ODMtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTU4NDpzdGF0aWMgaXJxcmV0dXJuX3QgbGFuODg3eF9oYW5kbGVfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTU4NS17XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTU4NjpcdHN0cnVjdCBsYW44ODd4X3ByaXYgKnByaXYgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTg3LVx0aW50IHJjID0gSVJRX05PTkU7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2MDYtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTYwNzpzdGF0aWMgaW50IGxhbjg4N3hfY2RfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjA4LVx0XHRcdCAgICBlbnVtIGNhYmxlX2RpYWdfc3RhdGUgY2RfZG9uZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYyOC1cdFx0LyogQ2FibGUgZGlhZ25vc3RpY3MgY29tcGxldGUuIFJlc3RvcmUgUEhZLiAqL1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE2Mjk6XHRcdHJjID0gbGFuODg3eF9waHlfc2V0dXAocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjMwLVx0XHRpZiAocmMgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2MzItXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTYzMzpcdFx0cmMgPSBsYW44ODd4X3BoeV9pbml0KHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYzNC1cdFx0aWYgKHJjIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjM2LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE2Mzc6XHRcdHJjID0gbGFuODg3eF9jb25maWdfaW50cihwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2MzgtXHRcdGlmIChyYyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTY0MC1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNjQxOlx0XHRyYyA9IGxhbjg4N3hfcGh5X3JlY29uZmlnKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTY0Mi1cdFx0aWYgKHJjIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjQ4LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE2NDk6c3RhdGljIGludCBsYW44ODd4X2NhYmxlX3Rlc3RfcHJlcChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2NTAtXHRcdFx0XHQgICBlbnVtIGNhYmxlX2RpYWdfbW9kZSBtb2RlKVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2NTEte1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE2NTI6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGxhbjg4N3hfcmVnd3JfbWFwIHZhbHVlc1tdID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2NTMtXHRcdHtNRElPX01NRF9WRU5EMSwgTEFOODg3WF9NQVhfUEdBX0dBSU5fMTAwLCAweDFmfSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTY2NS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNjY2Olx0cmMgPSBsYW44ODd4X2NkX3Jlc2V0KHBoeWRldiwgQ0RfVEVTVF9JTklUKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjY3LVx0aWYgKHJjIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNzI5LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE3MzA6c3RhdGljIGludCBsYW44ODd4X2NhYmxlX3Rlc3RfY2hrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTczMS1cdFx0XHRcdCAgZW51bSBjYWJsZV9kaWFnX21vZGUgbW9kZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTc2NC1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNzY1OnN0YXRpYyBpbnQgbGFuODg3eF9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTc2Ni17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE3NjgtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTc2OTpcdHJjID0gbGFuODg3eF9jYWJsZV90ZXN0X3ByZXAocGh5ZGV2LCBURVNUX01PREVfTk9STUFMKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNzcwLVx0aWYgKHJjIFx1MDAzYyAwKSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTc3MTpcdFx0cmV0ID0gbGFuODg3eF9jZF9yZXNldChwaHlkZXYsIENEX1RFU1RfRE9ORSk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTc3Mi1cdFx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTc4MC1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNzgxOnN0YXRpYyBpbnQgbGFuODg3eF9jYWJsZV90ZXN0X3JlcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE3ODIte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xODY3LVx0LyogUmUtaW5pdGlhbGl6ZSBQSFkgYW5kIHN0YXJ0IGNhYmxlIGRpYWcgdGVzdCAqL1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE4Njg6XHRyYyA9IGxhbjg4N3hfY2FibGVfdGVzdF9wcmVwKHBoeWRldiwgVEVTVF9NT0RFX0hZQlJJRCk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTg2OS1cdGlmIChyYyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTg3Mi1cdC8qIFdhaXQgZm9yIGNhYmxlIGRpYWcgdGVzdCBjb21wbGV0aW9uICovXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTg3MzpcdHJjID0gbGFuODg3eF9jYWJsZV90ZXN0X2NoayhwaHlkZXYsIFRFU1RfTU9ERV9IWUJSSUQpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE4NzQtXHRpZiAocmMgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5MTctZ2V0X2xlbjpcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxOTE4Olx0cmMgPSBsYW44ODd4X2NkX3Jlc2V0KHBoeWRldiwgQ0RfVEVTVF9ET05FKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xOTE5LVx0aWYgKHJjIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xOTM4LVx0LyogQ2FibGUgZGlhZyB0ZXN0IGZhaWxlZCAqL1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE5Mzk6XHRyZXQgPSBsYW44ODd4X2NkX3Jlc2V0KHBoeWRldiwgQ0RfVEVTVF9ET05FKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xOTQwLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTk0Ni1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxOTQ3OnN0YXRpYyBpbnQgbGFuODg3eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xOTQ4LVx0XHRcdFx0XHQgYm9vbCAqZmluaXNoZWQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5NTEtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTk1MjpcdHJjID0gbGFuODg3eF9jYWJsZV90ZXN0X2NoayhwaHlkZXYsIFRFU1RfTU9ERV9OT1JNQUwpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5NTMtXHRpZiAocmMgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTk2My1cdC8qIFJldHJpZXZlIHRlc3Qgc3RhdHVzIGFuZCBjYWJsZSBsZW5ndGggdG8gZmF1bHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxOTY0Olx0cmV0dXJuIGxhbjg4N3hfY2FibGVfdGVzdF9yZXBvcnQocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xOTY1LX1cbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM9MTk2OD1zdGF0aWMgaW50IHNxaV9jb21wYXJlKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5NzItXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTk3MzpzdGF0aWMgaW50IGxhbjg4N3hfZ2V0X3NxaV8xMDBNKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTk3NC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIwNzEtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjA3MjpzdGF0aWMgaW50IGxhbjg4N3hfZ2V0X3NxaShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIwNzMte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMDgwLVx0aWYgKHBoeWRldi1cdTAwM2VzcGVlZCA9PSBTUEVFRF8xMDApXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjA4MTpcdFx0cmV0dXJuIGxhbjg4N3hfZ2V0X3NxaV8xMDBNKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjA4Mi1cbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM9MjEwNj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3QxX3BoeV9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE0NC1cdFx0LmZsYWdzICAgICAgICAgID0gUEhZX1BPTExfQ0FCTEVfVEVTVCxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTQ1Olx0XHQucHJvYmVcdFx0PSBsYW44ODd4X3Byb2JlLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNDY6XHRcdC5nZXRfZmVhdHVyZXNcdD0gbGFuODg3eF9nZXRfZmVhdHVyZXMsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE0NzpcdFx0LmNvbmZpZ19pbml0ICAgID0gbGFuODg3eF9waHlfaW5pdCxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTQ4Olx0XHQuY29uZmlnX2FuZWcgICAgPSBsYW44ODd4X2NvbmZpZ19hbmVnLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNDk6XHRcdC5nZXRfc3RhdHMgICAgICA9IGxhbjg4N3hfZ2V0X3N0YXRzLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNTA6XHRcdC5nZXRfc3NldF9jb3VudCA9IGxhbjg4N3hfZ2V0X3NzZXRfY291bnQsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE1MTpcdFx0LmdldF9zdHJpbmdzICAgID0gbGFuODg3eF9nZXRfc3RyaW5ncyxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTUyLVx0XHQuc3VzcGVuZFx0PSBnZW5waHlfc3VzcGVuZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE1NC1cdFx0LnJlYWRfc3RhdHVzXHQ9IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE1NTpcdFx0LmNhYmxlX3Rlc3Rfc3RhcnQgPSBsYW44ODd4X2NhYmxlX3Rlc3Rfc3RhcnQsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE1NjpcdFx0LmNhYmxlX3Rlc3RfZ2V0X3N0YXR1cyA9IGxhbjg4N3hfY2FibGVfdGVzdF9nZXRfc3RhdHVzLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNTc6XHRcdC5jb25maWdfaW50ciAgICA9IGxhbjg4N3hfY29uZmlnX2ludHIsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE1ODpcdFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBsYW44ODd4X2hhbmRsZV9pbnRlcnJ1cHQsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE1OTpcdFx0LmdldF9zcWlcdD0gbGFuODg3eF9nZXRfc3FpLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNjAtXHRcdC5nZXRfc3FpX21heFx0PSBsYW44N3h4X2dldF9zcWlfbWF4LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE2OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTMzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gdGhlIExBTjg4N3ggUEhZIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBgbGFuODg3eF9waHlfaW5pdGAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgSSBzaG91bGQgcHJvYmFibHkgemVybyBpbiBvbiBgZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jYCBhcm91bmQgbGluZXMgMTI3MCB0byAxMzEwLiBUaGF0IHJhbmdlIGlzIHByb2JhYmx5IHdoZXJlIHRoZSBjb3JlIG9mIGl0cyBpbXBsZW1lbnRhdGlvbiBsaXZlcywgYW5kIHRoZXJlZm9yZSB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSBsb2dpYyB0aGF0IGtpY2tzIG9mZiB0aGUgaW5pdGlhbGl6YXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyBpdCBjb25maWd1cmVzIHRoZSBQSFksIGxpa2VseSBkZWFsaW5nIHdpdGggcmVnaXN0ZXIgd3JpdGVzIHRvIHNldCB1cCBsaW5rIG1vZGVzLCBzcGVlZCwgbWF5YmUgYXV0b25lZ290aWF0aW9uIHBhcmFtZXRlcnMsIGFuZCBhbnkgc3BlY2lmaWMgTWljcm9jaGlwLXNwZWNpZmljIHNldHRpbmdzIGZvciB0aGUgVDEgdHJhbnNjZWl2ZXIuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGNsb2NrIHNldHRpbmdzLCBwb3dlci11cCBzZXF1ZW5jZXMsIGFuZCBhbnkgcG90ZW50aWFsIGhhcmR3YXJlLXNwZWNpZmljIHF1aXJrcyBvciB3b3JrYXJvdW5kcy4gSG9wZWZ1bGx5LCB0aGUgY29tbWVudHMgYXJlIGNsZWFyIGVub3VnaCB0byBmb2xsb3cgdGhlIGNvbnRyb2wgZmxvdyEgVGhpcyBpcyB3aGVyZSBJIGNhbiBnZXQgYSBncmFudWxhciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBQSFkmIzM5O3MgaW5pdGlhbCBzdGF0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTI3MDpcdFx0ICovXG4xMjcxOlx0XHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXV0b25lZ19CSVQsIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpO1xuMTI3MjpcdFxuMTI3MzpcdFx0cmV0dXJuIDA7XG4xMjc0Olx0fVxuMTI3NTpcdFxuMTI3NjpcdHN0YXRpYyBpbnQgbGFuODg3eF9waHlfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuMTI3NzpcdHtcbjEyNzg6XHRcdHN0cnVjdCBsYW44ODd4X3ByaXYgKnByaXYgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbjEyNzk6XHRcdGludCByZXQ7XG4xMjgwOlx0XG4xMjgxOlx0XHRpZiAoIXByaXYtXHUwMDNlaW5pdF9kb25lIFx1MDAyNlx1MDAyNiBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeWRldikpIHtcbjEyODI6XHRcdFx0cHJpdi1cdTAwM2VjbG9jayA9IG1jaHBfcmRzX3B0cF9wcm9iZShwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuMTI4MzpcdFx0XHRcdFx0XHRcdCBNQ0hQX1JEU19QVFBfTFRDX0JBU0VfQUREUixcbjEyODQ6XHRcdFx0XHRcdFx0XHQgTUNIUF9SRFNfUFRQX1BPUlRfQkFTRV9BRERSKTtcbjEyODU6XHRcdFx0aWYgKElTX0VSUihwcml2LVx1MDAzZWNsb2NrKSlcbjEyODY6XHRcdFx0XHRyZXR1cm4gUFRSX0VSUihwcml2LVx1MDAzZWNsb2NrKTtcbjEyODc6XHRcbjEyODg6XHRcdFx0aWYgKHByaXYtXHUwMDNlY2xvY2spIHtcbjEyODk6XHRcdFx0XHQvKiBFbmFibGUgcGluIG11eCBmb3IgRVZUICovXG4xMjkwOlx0XHRcdFx0cGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbjEyOTE6XHRcdFx0XHRcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMSxcbjEyOTI6XHRcdFx0XHRcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4sXG4xMjkzOlx0XHRcdFx0XHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOKTtcbjEyOTQ6XHRcbjEyOTU6XHRcdFx0XHQvKiBJbml0aWFsaXplIHBpbiBudW1iZXJzIHNwZWNpZmljIHRvIFBFUk9VVCAqL1xuMTI5NjpcdFx0XHRcdHByaXYtXHUwMDNlY2xvY2stXHUwMDNlZXZlbnRfcGluID0gMztcbjEyOTc6XHRcdFx0fVxuMTI5ODpcdFxuMTI5OTpcdFx0XHRwcml2LVx1MDAzZWluaXRfZG9uZSA9IHRydWU7XG4xMzAwOlx0XHR9XG4xMzAxOlx0XG4xMzAyOlx0XHQvKiBDbGVhciBsb29wYmFjayAqL1xuMTMwMzpcdFx0cmV0ID0gcGh5X2NsZWFyX2JpdHNfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG4xMzA0Olx0XHRcdFx0XHQgTEFOODg3WF9NSVNfQ0ZHX1JFRzIsXG4xMzA1Olx0XHRcdFx0XHQgTEFOODg3WF9NSVNfQ0ZHX1JFRzJfRkVfTFBCS19FTik7XG4xMzA2Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMTMwNzpcdFx0XHRyZXR1cm4gcmV0O1xuMTMwODpcdFxuMTMwOTpcdFx0LyogQ29uZmlndXJlIGRlZmF1bHQgYmVoYXZpb3Igb2YgbGVkIHRvIGxpbmsgYW5kIGFjdGl2aXR5IGZvciBhbnlcbjEzMTA6XHRcdCAqIHNwZWVkXG4xMzExOlx0XHQgKi9cbjEzMTI6XHRcdHJldCA9IHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG4xMzEzOlx0XHRcdFx0ICAgICBMQU44ODdYX0NPTU1PTl9MRUQzX0xFRDIsXG4xMzE0Olx0XHRcdFx0ICAgICBMQU44ODdYX0NPTU1PTl9MRUQyX01PREVfU0VMX01BU0ssXG4xMzE1Olx0XHRcdFx0ICAgICBMQU44ODdYX0xFRF9MSU5LX0FDVF9BTllfU1BFRUQpO1xuMTMxNjpcdFx0aWYgKHJldCBcdTAwM2MgMClcbjEzMTc6XHRcdFx0cmV0dXJuIHJldDtcbjEzMTg6XHRcbjEzMTk6XHRcdC8qIFBIWSBpbnRlcmZhY2Ugc2V0dXAgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA4MgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuCgoqKkludmVzdGlnYXRpbmcgdGhlIGBtY2hwX3Jkc19wdHBfcHJvYmVgIEZ1bmN0aW9uKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYmVoYXZpb3Igb2YgdGhpcyBgbWNocF9yZHNfcHRwX3Byb2JlYCBmdW5jdGlvbiB1bmRlciB2YXJpb3VzIGNvbmRpdGlvbnMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGtub3cgd2hhdCBoYXBwZW5zIGlmIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGlzIGVpdGhlciBkaXNhYmxlZCwgY29tcGxldGVseSB1bmNvbmZpZ3VyZWQsIG9yIGlmLCBwb3RlbnRpYWxseSwgdGhlIGBwcml2LSZndDtjbG9ja2AgcG9pbnRlciB3aXRoaW4gdGhlIHJlbGV2YW50IHN0cnVjdHVyZSBlbmRzIHVwIGJlaW5nIE5VTEwuIFRoZXNlIGFyZSBhbGwgY3JpdGljYWwgZWRnZSBjYXNlcyB0aGF0IG5lZWQgdG8gYmUgaGFuZGxlZCBncmFjZWZ1bGx5LiBJJiMzOTt2ZSBnb3QgdG8gZW5zdXJlIHRoZSBjb2RlJiMzOTtzIHJvYnVzdCBpbiB0aG9zZSBzY2VuYXJpb3MuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbiBhbmQgc2VhcmNoIGZvciBpbnN0YW5jZXMgb2YgYG1jaHBfcmRzX3B0cF9wcm9iZWAgaW4gdGhlIGNvZGViYXNlLiBUaGF0JiMzOTtzIHRoZSBiZXN0IHdheSB0byBnZXQgYSBxdWljayBvdmVydmlldyBvZiBpdHMgdXNhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTY6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWNocF9yZHNfcHRwX3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfcmRzX3B0cC5jPTExMzk9c3RhdGljIGludCBtY2hwX3Jkc19wdHBfaW5pdChzdHJ1Y3QgbWNocF9yZHNfcHRwX2Nsb2NrICpjbG9jaylcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuYy0xMjQxLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF9yZHNfcHRwLmM6MTI0MjpzdHJ1Y3QgbWNocF9yZHNfcHRwX2Nsb2NrICptY2hwX3Jkc19wdHBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggbW1kLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF9yZHNfcHRwLmMtMTI0My1cdFx0XHRcdFx0ICAgICAgdTE2IGNsa19iYXNlX2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF9yZHNfcHRwLmMtMTMyNS19XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuYzoxMzI2OkVYUE9SVF9TWU1CT0xfR1BMKG1jaHBfcmRzX3B0cF9wcm9iZSk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuYy0xMzI3LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfcmRzX3B0cC5oPTIwNT1zdHJ1Y3QgbWNocF9yZHNfcHRwX3J4X3RzIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuaC0yMTMtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuaDoyMTQ6c3RydWN0IG1jaHBfcmRzX3B0cF9jbG9jayAqbWNocF9yZHNfcHRwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IG1tZCxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfcmRzX3B0cC5oLTIxNS1cdFx0XHRcdFx0ICAgICAgdTE2IGNsa19iYXNlLCB1MTYgcG9ydF9iYXNlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuaD0yMjA9aXJxcmV0dXJuX3QgbWNocF9yZHNfcHRwX2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IG1jaHBfcmRzX3B0cF9jbG9jayAqY2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfcmRzX3B0cC5oLTIyMy1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfcmRzX3B0cC5oOjIyNDpzdGF0aWMgaW5saW5lIHN0cnVjdCBtY2hwX3Jkc19wdHBfY2xvY2sgKm1jaHBfcmRzX3B0cF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF9yZHNfcHRwLmgtMjI1LVx0XHRcdFx0XHRcdFx0ICAgICpwaHlkZXYsIHU4IG1tZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM9MTI3Nj1zdGF0aWMgaW50IGxhbjg4N3hfcGh5X2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTI4MS1cdGlmICghcHJpdi1cdTAwM2Vpbml0X2RvbmUgXHUwMDI2XHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5ZGV2KSkge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEyODI6XHRcdHByaXYtXHUwMDNlY2xvY2sgPSBtY2hwX3Jkc19wdHBfcHJvYmUocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjgzLVx0XHRcdFx0XHRcdCBNQ0hQX1JEU19QVFBfTFRDX0JBU0VfQUREUixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzA4NAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1pY3JvY2hpcCBMQU44ODd4IFBIWSBEcml2ZXIqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJJiMzOTttIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY2AsIHdoaWNoLCBhcyBJIHVuZGVyc3RhbmQgaXQsIGlzIHRoZSBkcml2ZXIgaW1wbGVtZW50YXRpb24gZm9yIE1pY3JvY2hpcCYjMzk7cyBMQU44ODd4IHNlcmllcyBvZiBhdXRvbW90aXZlIEV0aGVybmV0IFBIWXMuIFNwZWNpZmljYWxseSwgY2hpcHMgbGlrZSB0aGUgTEFOODg3MCBhbmQgTEFOODg3MSwgc3VwcG9ydGluZyBib3RoIDEwMEJBU0UtVDEgYW5kIDEwMDBCQVNFLVQxIHN0YW5kYXJkcy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY29uZmlybSB0aGUgUEhZIElEIGFuZCB0aGUgZHJpdmVyJiMzOTtzIGRlZmluaXRpb24gaXRzZWxmIHdpdGhpbiB0aGF0IGZpbGUuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpZGVudGlmaWVzIGFuZCBsb2FkcyB0aGUgcmlnaHQgZHJpdmVyIGZvciB0aGVzZSBzcGVjaWZpYyBjb21wb25lbnRzLiBUaGlzIGluaXRpYWwgY2hlY2sgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgZHJpdmVyJiMzOTtzIHRhcmdldCBhbmQgZXhwZWN0ZWQgYmVoYXZpb3IgZnJvbSB0aGUgc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE2OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMTAwOlx0XHRpZiAocmMgXHUwMDNjIDApXG4yMTAxOlx0XHRcdHJldHVybiByYztcbjIxMDI6XHRcbjIxMDM6XHRcdHJldHVybiBGSUVMRF9HRVQoVDFfRENRX1NRSV9NU0ssIHJjKTtcbjIxMDQ6XHR9XG4yMTA1Olx0XG4yMTA2Olx0c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MV9waHlfZHJpdmVyW10gPSB7XG4yMTA3Olx0XHR7XG4yMTA4Olx0XHRcdFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOODdYWCksXG4yMTA5Olx0XHRcdC5uYW1lICAgICAgICAgICA9IFwmIzM0O01pY3JvY2hpcCBMQU44N3h4IFQxXCYjMzQ7LFxuMjExMDpcdFx0XHQuZmxhZ3MgICAgICAgICAgPSBQSFlfUE9MTF9DQUJMRV9URVNULFxuMjExMTpcdFx0XHQuZmVhdHVyZXMgICAgICAgPSBQSFlfQkFTSUNfVDFfRkVBVFVSRVMsXG4yMTEyOlx0XHRcdC5jb25maWdfaW5pdFx0PSBsYW44N3h4X2NvbmZpZ19pbml0LFxuMjExMzpcdFx0XHQuY29uZmlnX2ludHIgICAgPSBsYW44N3h4X3BoeV9jb25maWdfaW50cixcbjIxMTQ6XHRcdFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBsYW44N3h4X2hhbmRsZV9pbnRlcnJ1cHQsXG4yMTE1Olx0XHRcdC5zdXNwZW5kICAgICAgICA9IGdlbnBoeV9zdXNwZW5kLFxuMjExNjpcdFx0XHQucmVzdW1lICAgICAgICAgPSBnZW5waHlfcmVzdW1lLFxuMjExNzpcdFx0XHQuY29uZmlnX2FuZWcgICAgPSBsYW44N3h4X2NvbmZpZ19hbmVnLFxuMjExODpcdFx0XHQucmVhZF9zdGF0dXNcdD0gbGFuODd4eF9yZWFkX3N0YXR1cyxcbjIxMTk6XHRcdFx0LmdldF9zcWlcdD0gbGFuODd4eF9nZXRfc3FpLFxuMjEyMDpcdFx0XHQuZ2V0X3NxaV9tYXhcdD0gbGFuODd4eF9nZXRfc3FpX21heCxcbjIxMjE6XHRcdFx0LmNhYmxlX3Rlc3Rfc3RhcnQgPSBsYW44N3h4X2NhYmxlX3Rlc3Rfc3RhcnQsXG4yMTIyOlx0XHRcdC5jYWJsZV90ZXN0X2dldF9zdGF0dXMgPSBsYW44N3h4X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyxcbjIxMjM6XHRcdH0sXG4yMTI0Olx0XHR7XG4yMTI1Olx0XHRcdFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOOTM3WCksXG4yMTI2Olx0XHRcdC5uYW1lXHRcdD0gXCYjMzQ7TWljcm9jaGlwIExBTjkzN3ggVDFcJiMzNDssXG4yMTI3Olx0XHRcdC5mbGFncyAgICAgICAgICA9IFBIWV9QT0xMX0NBQkxFX1RFU1QsXG4yMTI4Olx0XHRcdC5mZWF0dXJlc1x0PSBQSFlfQkFTSUNfVDFfRkVBVFVSRVMsXG4yMTI5Olx0XHRcdC5jb25maWdfaW5pdFx0PSBsYW44N3h4X2NvbmZpZ19pbml0LFxuMjEzMDpcdFx0XHQuY29uZmlnX2ludHIgICAgPSBsYW44N3h4X3BoeV9jb25maWdfaW50cixcbjIxMzE6XHRcdFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBsYW44N3h4X2hhbmRsZV9pbnRlcnJ1cHQsXG4yMTMyOlx0XHRcdC5zdXNwZW5kXHQ9IGdlbnBoeV9zdXNwZW5kLFxuMjEzMzpcdFx0XHQucmVzdW1lXHRcdD0gZ2VucGh5X3Jlc3VtZSxcbjIxMzQ6XHRcdFx0LmNvbmZpZ19hbmVnICAgID0gbGFuODd4eF9jb25maWdfYW5lZyxcbjIxMzU6XHRcdFx0LnJlYWRfc3RhdHVzXHQ9IGxhbjg3eHhfcmVhZF9zdGF0dXMsXG4yMTM2Olx0XHRcdC5nZXRfc3FpXHQ9IGxhbjg3eHhfZ2V0X3NxaSxcbjIxMzc6XHRcdFx0LmdldF9zcWlfbWF4XHQ9IGxhbjg3eHhfZ2V0X3NxaV9tYXgsXG4yMTM4Olx0XHRcdC5jYWJsZV90ZXN0X3N0YXJ0ID0gbGFuODd4eF9jYWJsZV90ZXN0X3N0YXJ0LFxuMjEzOTpcdFx0XHQuY2FibGVfdGVzdF9nZXRfc3RhdHVzID0gbGFuODd4eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMsXG4yMTQwOlx0XHR9LFxuMjE0MTpcdFx0e1xuMjE0MjpcdFx0XHRQSFlfSURfTUFUQ0hfTU9ERUwoUEhZX0lEX0xBTjg4N1gpLFxuMjE0MzpcdFx0XHQubmFtZVx0XHQ9IFwmIzM0O01pY3JvY2hpcCBMQU44ODd4IFQxIFBIWVwmIzM0OyxcbjIxNDQ6XHRcdFx0LmZsYWdzICAgICAgICAgID0gUEhZX1BPTExfQ0FCTEVfVEVTVCxcbjIxNDU6XHRcdFx0LnByb2JlXHRcdD0gbGFuODg3eF9wcm9iZSxcbjIxNDY6XHRcdFx0LmdldF9mZWF0dXJlc1x0PSBsYW44ODd4X2dldF9mZWF0dXJlcyxcbjIxNDc6XHRcdFx0LmNvbmZpZ19pbml0ICAgID0gbGFuODg3eF9waHlfaW5pdCxcbjIxNDg6XHRcdFx0LmNvbmZpZ19hbmVnICAgID0gbGFuODg3eF9jb25maWdfYW5lZyxcbjIxNDk6XHRcdFx0LmdldF9zdGF0cyAgICAgID0gbGFuODg3eF9nZXRfc3RhdHMsXG4yMTUwOlx0XHRcdC5nZXRfc3NldF9jb3VudCA9IGxhbjg4N3hfZ2V0X3NzZXRfY291bnQsXG4yMTUxOlx0XHRcdC5nZXRfc3RyaW5ncyAgICA9IGxhbjg4N3hfZ2V0X3N0cmluZ3MsXG4yMTUyOlx0XHRcdC5zdXNwZW5kXHQ9IGdlbnBoeV9zdXNwZW5kLFxuMjE1MzpcdFx0XHQucmVzdW1lXHRcdD0gZ2VucGh5X3Jlc3VtZSxcbjIxNTQ6XHRcdFx0LnJlYWRfc3RhdHVzXHQ9IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMsXG4yMTU1Olx0XHRcdC5jYWJsZV90ZXN0X3N0YXJ0ID0gbGFuODg3eF9jYWJsZV90ZXN0X3N0YXJ0LFxuMjE1NjpcdFx0XHQuY2FibGVfdGVzdF9nZXRfc3RhdHVzID0gbGFuODg3eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMsXG4yMTU3Olx0XHRcdC5jb25maWdfaW50ciAgICA9IGxhbjg4N3hfY29uZmlnX2ludHIsXG4yMTU4Olx0XHRcdC5oYW5kbGVfaW50ZXJydXB0ID0gbGFuODg3eF9oYW5kbGVfaW50ZXJydXB0LFxuMjE1OTpcdFx0XHQuZ2V0X3NxaVx0PSBsYW44ODd4X2dldF9zcWksXG4yMTYwOlx0XHRcdC5nZXRfc3FpX21heFx0PSBsYW44N3h4X2dldF9zcWlfbWF4LFxuMjE2MTpcdFx0XHQuc2V0X2xvb3BiYWNrXHQ9IGdlbnBoeV9jNDVfbG9vcGJhY2ssXG4yMTYyOlx0XHR9XG4yMTYzOlx0fTtcbjIxNjQ6XHRcbjIxNjU6XHRtb2R1bGVfcGh5X2RyaXZlcihtaWNyb2NoaXBfdDFfcGh5X2RyaXZlcik7XG4yMTY2Olx0XG4yMTY3Olx0c3RhdGljIHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBtaWNyb2NoaXBfdDFfdGJsW10gPSB7XG4yMTY4Olx0XHR7IFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOODdYWCkgfSxcbjIxNjk6XHRcdHsgUEhZX0lEX01BVENIX01PREVMKFBIWV9JRF9MQU45MzdYKSB9LFxuMjE3MDpcdFx0eyBQSFlfSURfTUFUQ0hfTU9ERUwoUEhZX0lEX0xBTjg4N1gpIH0sXG4yMTcxOlx0XHR7IH1cbjIxNzI6XHR9O1xuMjE3MzpcdFxuMjE3NDpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgbWljcm9jaGlwX3QxX3RibCk7XG4yMTc1Olx0XG4yMTc2Olx0TU9EVUxFX0FVVEhPUihEUklWRVJfQVVUSE9SKTtcbjIxNzc6XHRNT0RVTEVfREVTQ1JJUFRJT04oRFJJVkVSX0RFU0MpO1xuMjE3ODpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE2OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0OTYwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgTURJTyBQSFkgRHJpdmVyIEZ1enppbmcgTGFuZHNjYXBlKioKCk9rYXksIHNvIHRoZSBxdWVzdGlvbiBpczogY2FuIEkgZWZmZWN0aXZlbHkgZnV6eiBhbiBNRElPIFBIWSBkcml2ZXIgdXNpbmcgc3RhbmRhcmQgZnV6emluZyBzZXR1cHM/IFNwZWNpZmljYWxseSwgY2FuIEkgcmVhY2ggaXQgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIHdoaWNoIGlzIGNydWNpYWwgZm9yIHJlcHJvZHVjaWJpbGl0eSBhbmQgc2NhbGFiaWxpdHk/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXNlIGRyaXZlcnMgYXJlIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50LgoKRmlyc3QsIGxldCBtZSBjaGVjayB0aGUgcG90ZW50aWFsIGVudHJ5IHBvaW50cy4gQ2FuIEkgaW5zdGFudGlhdGUgTURJTyBQSFkgZGV2aWNlcywgb3IgdGhlIGBtaWNyb2NoaXBfdDFgIHNwZWNpZmljYWxseSwgdGhyb3VnaCBtZXRob2RzIGxpa2UgbmV0bGluaywgY3JlYXRpbmcgdmlydHVhbCBkZXZpY2VzLCBvciBzeXNmcyBpbnRlcmZhY2VzPyBPciBhbSBJIGdvaW5nIHRvIGJlIHN0dWNrIG5lZWRpbmcgYSByZWFsIE1ESU8gYnVzIGNvbm5lY3Rpb24gdG8gTWljcm9jaGlwIExBTjg4N3ggaGFyZHdhcmUsIHdoaWNoIHdvdWxkIGJlIGEgaHVnZSBjb25zdHJhaW50PwoKQWgsIHNlY3Rpb24gdHdvIG9mIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsuICBUaGlzIGluY2x1ZGVzIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIGFuZCBHUFUgZHJpdmVycy4gIFRoaW5ncyB0aGF0IG5lZWQgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLiBUaGlzIG1ha2VzIG1lIGNvbnNpZGVyIGlmIE1ESU8gUEhZIGRyaXZlcnMgZmFsbCBpbnRvIHRoZSBzYW1lIGNhdGVnb3J5LCByZXF1aXJpbmcgcGh5c2ljYWwgYWNjZXNzIHRvIHRoZSBNRElPIGJ1cy4gQ2FuIEkgZXZlbiAqcHJvYmUqIHRoZXNlIGRyaXZlcnMgaW4gUUVNVT8KCldhaXQgYSBtaW51dGUsIEkgbmVlZCB0byByZW1lbWJlciB0aGUgTGludXgga2VybmVsIE1ESU8vUEhZIHN1YnN5c3RlbSBhcmNoaXRlY3R1cmUuIEhvdyBhcmUgUEhZIGRyaXZlcnMgYWN0dWFsbHkgcHJvYmVkIGFuZCBhdHRhY2hlZD8gUmlnaHQsIHRoZXkgbWF0Y2ggYmFzZWQgb24gdGhlIE1ESU8gUEhZIElELCB3aGljaCBpcyByZWFkIGZyb20gdGhlIE1ESU8gYnVzJiMzOTtzIE1JSSByZWdpc3RlcnMuIFRoYXQgSUQgb3JpZ2luYXRlcyBmcm9tIHRoZSBwaHlzaWNhbCBQSFkgaGFyZHdhcmUsIG9yIGZyb20gc29tZXRoaW5nIGxpa2UgYSBmaXhlZC1saW5rLCBvciBgbWRpby1ncGlvYCwgZXRjLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVzZSBpbnRlcmFjdGlvbnMgY2FuIGJlIGVtdWxhdGVkIG9yIHJlcHJvZHVjZWQgdGhyb3VnaCB0b29scyBsaWtlIHN5emthbGxlciwgdmlydHVhbCBpbnRlcmZhY2VzLCBvciBtb2Nrcy4KCkxldCYjMzk7cyBzZWUuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHNlYXJjaCB0aGUga2VybmVsIHNvdXJjZSBjb2RlIGRpcmVjdGx5IGZvciBpbnN0YW5jZXMgb2YgYG1kaW9gIGFuZCBgcGh5YCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSB1c2VkIGluIHByYWN0aWNlLiBUaGlzIHdpbGwgaGVscCBkZXRlcm1pbmUgaWYgSSBuZWVkIHRvIGJ1aWxkIGEgc3BlY2lhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudCwgb3IgaWYgdGhlcmUgaXMgc29tZXRoaW5nIEkgY2FuIHVzZSBpbiBzeXprYWxsZXIgdG8gcmVhY2ggdGhpcyBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE2OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW9fYml0YmFuZ3xtZGlvLWdwaW98bWRpb19idXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjI5MSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MzIxPXN0YXRpYyBpbnQga3N6OTQ3N19wY3NfY3JlYXRlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzMyLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MzMzOlx0YnVzLVx1MDAzZW5hbWUgPSBcJiMzNDtrc3pfcGNzX21kaW9fYnVzXCYjMzQ7O1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzM0LVx0c25wcmludGYoYnVzLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwmIzM0OyVzLXBjc1wmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMTI1PWludCBrc3pfcGFyZW50X21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMTI4LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjEyOTpcdHJldHVybiBtZGlvYnVzX3JlYWRfbmVzdGVkKGRldi1cdTAwM2VwYXJlbnRfbWRpb19idXMsIGFkZHIsIHJlZ251bSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMTMwLX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMTQ1PWludCBrc3pfcGFyZW50X21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0sIHUxNiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjE0OC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIxNDk6XHRyZXR1cm4gbWRpb2J1c193cml0ZV9uZXN0ZWQoZGV2LVx1MDAzZXBhcmVudF9tZGlvX2J1cywgYWRkciwgcmVnbnVtLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjE1MC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MjMyMT1pbnQga3N6X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMzQ3LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjM0ODpcdFx0ZGV2LVx1MDAzZXBhcmVudF9tZGlvX2J1cyA9IHBhcmVudF9idXM7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMzQ5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTIwNj1zdHJ1Y3Qga3N6X2RldmljZSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMjU4LVx0LyoqXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDoyNTk6XHQgKiBAcGFyZW50X21kaW9fYnVzOiBQb2ludGVyIHRvIHRoZSBleHRlcm5hbCBNRElPIGJ1cyBjb250cm9sbGVyLlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMjYwLVx0ICpcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0yNjUtXHQgKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjI2NjpcdHN0cnVjdCBtaWlfYnVzICpwYXJlbnRfbWRpb19idXM7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0yNjctXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz0xNDM9c3RhdGljIGludCBsYW45Mzd4X2NyZWF0ZV9waHlfYWRkcl9tYXAoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgYm9vbCBzaWRlX21kaW8pXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy0yMTAtLyoqXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjIxMTogKiBsYW45Mzd4X21kaW9fYnVzX3ByZWluaXQgLSBQcmUtaW5pdGlhbGl6ZSBNRElPIGJ1cyBmb3IgYWNjZXNzaW5nIFBIWXMuXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTIxMi0gKiBAZGV2OiBQb2ludGVyIHRvIGRldmljZSBzdHJ1Y3R1cmUuXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy0yMjYtICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjIyNzpzdGF0aWMgaW50IGxhbjkzN3hfbWRpb19idXNfcHJlaW5pdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBib29sIHNpZGVfbWRpbylcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtMjI4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jPTY4NT1zdGF0aWMgaW50IGxhbjkzN3hfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzExLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3MTI6XHRcdGRldi1cdTAwM2VwYXJlbnRfbWRpb19idXMgPSBwYXJlbnRfYnVzO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03MTMtXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03MjAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjcyMTpcdHJldCA9IGxhbjkzN3hfbWRpb19idXNfcHJlaW5pdChkZXYsICEhcGFyZW50X2J1cyk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTcyMi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MTI2PWludCBtdjg4ZTZ4eHhfd2FpdF9iaXQoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzM6c3RydWN0IG1paV9idXMgKm12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzNC17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzU6XHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cztcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzNi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzNzpcdG1kaW9fYnVzID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFx1MDAyNmNoaXAtXHUwMDNlbWRpb3MsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzg6XHRcdFx0XHRcdCAgICBzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzLCBsaXN0KTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzOTpcdGlmICghbWRpb19idXMpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDAtXHRcdHJldHVybiBOVUxMO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTQyOlx0cmV0dXJuIG1kaW9fYnVzLVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0My19XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9Mzc1Nz1zdGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeSwgaW50IHJlZylcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3NTgte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc1OTpcdHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMgKm1kaW9fYnVzID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNzYwOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gbWRpb19idXMtXHUwMDNlY2hpcDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3NjEtXHR1MTYgcHJvZF9pZDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz0zNzgzPXN0YXRpYyBpbnQgbXY4OGU2eHh4X21kaW9fcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeSwgaW50IGRldmFkLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3ODUte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc4NjpcdHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMgKm1kaW9fYnVzID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNzg3Olx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gbWRpb19idXMtXHUwMDNlY2hpcDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3ODgtXHR1MTYgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM4MDE9c3RhdGljIGludCBtdjg4ZTZ4eHhfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgcmVnLCB1MTYgdmFsKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgwMi17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODAzOlx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXMgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MDQ6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBtZGlvX2J1cy1cdTAwM2VjaGlwO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgwNS1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MzgxNz1zdGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgZGV2YWQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgxOS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODIwOlx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXMgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MjE6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBtZGlvX2J1cy1cdTAwM2VjaGlwO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgyMi1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MzgzND1zdGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODM4LVx0c3RhdGljIGludCBpbmRleDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4Mzk6XHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cztcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4NDAtXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4NTQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODU1Olx0YnVzID0gbWRpb2J1c19hbGxvY19zaXplKHNpemVvZigqbWRpb19idXMpKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4NTYtXHRpZiAoIWJ1cylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODU4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg1OTpcdG1kaW9fYnVzID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODYwOlx0bWRpb19idXMtXHUwMDNlYnVzID0gYnVzO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg2MTpcdG1kaW9fYnVzLVx1MDAzZWNoaXAgPSBjaGlwO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg2MjpcdElOSVRfTElTVF9IRUFEKFx1MDAyNm1kaW9fYnVzLVx1MDAzZWxpc3QpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg2MzpcdG1kaW9fYnVzLVx1MDAzZWV4dGVybmFsID0gZXh0ZXJuYWw7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODY0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4OTUtXHRpZiAoZXh0ZXJuYWwpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODk2Olx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNm1kaW9fYnVzLVx1MDAzZWxpc3QsIFx1MDAyNmNoaXAtXHUwMDNlbWRpb3MpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg5Ny1cdGVsc2VcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4OTg6XHRcdGxpc3RfYWRkKFx1MDAyNm1kaW9fYnVzLVx1MDAzZWxpc3QsIFx1MDAyNmNoaXAtXHUwMDNlbWRpb3MpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg5OS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz0zOTA3PXN0YXRpYyB2b2lkIG12ODhlNnh4eF9tZGlvc191bnJlZ2lzdGVyKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTA5LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM5MTA6XHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cywgKnA7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTExLVx0c3RydWN0IG1paV9idXMgKmJ1cztcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5MTItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTEzOlx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1kaW9fYnVzLCBwLCBcdTAwMjZjaGlwLVx1MDAzZW1kaW9zLCBsaXN0KSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTE0Olx0XHRidXMgPSBtZGlvX2J1cy1cdTAwM2VidXM7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTE1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzkxNjpcdFx0aWYgKCFtZGlvX2J1cy1cdTAwM2VleHRlcm5hbClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5MTctXHRcdFx0bXY4OGU2eHh4X2cyX2lycV9tZGlvX2ZyZWUoY2hpcCwgYnVzKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz0zOTgwPXN0YXRpYyBpbnQgbXY4OGU2eHh4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTkxLVx0Y2hpcC1cdTAwM2VkcyA9IGRzO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzk5MjpcdGRzLVx1MDAzZXVzZXJfbWlpX2J1cyA9IG12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk5My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaD00ODg9c3RydWN0IG12ODhlNnh4eF9idXNfb3BzIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaC00OTMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaDo0OTQ6c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaC00OTUtXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oPTg3Mz1pbnQgbXY4OGU2eHh4X3dhaXRfYml0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaC04NzQtXHRcdCAgICAgICBpbnQgYml0LCBpbnQgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oOjg3NTpzdHJ1Y3QgbWlpX2J1cyAqbXY4OGU2eHh4X2RlZmF1bHRfbWRpb19idXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oLTg3Ni1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYz03ODc9aW50IG12ODhlNnh4eF9nMl9zbWlfcGh5X3JlYWRfYzIyKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYy03OTAte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmM6NzkxOlx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXMgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jOjc5MjpcdGJvb2wgZXh0ZXJuYWwgPSBtZGlvX2J1cy1cdTAwM2VleHRlcm5hbDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jLTc5My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYz03OTg9aW50IG12ODhlNnh4eF9nMl9zbWlfcGh5X3JlYWRfYzQ1KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYy04MDEte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmM6ODAyOlx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXMgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jOjgwMzpcdGJvb2wgZXh0ZXJuYWwgPSBtZGlvX2J1cy1cdTAwM2VleHRlcm5hbDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jLTgwNC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYz04MDk9aW50IG12ODhlNnh4eF9nMl9zbWlfcGh5X3dyaXRlX2MyMihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmMtODEyLXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jOjgxMzpcdHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMgKm1kaW9fYnVzID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYzo4MTQ6XHRib29sIGV4dGVybmFsID0gbWRpb19idXMtXHUwMDNlZXh0ZXJuYWw7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYy04MTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmM9ODIwPWludCBtdjg4ZTZ4eHhfZzJfc21pX3BoeV93cml0ZV9jNDUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jLTgyMy17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYzo4MjQ6XHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cyA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmM6ODI1Olx0Ym9vbCBleHRlcm5hbCA9IG1kaW9fYnVzLVx1MDAzZWV4dGVybmFsO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmMtODI2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzNTIuYz0zMjQ9c3RhdGljIGludCBtdjg4ZTYzNTJfcGNzX2luaXQoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02MzUyLmMtMzM2LVx0aXJxID0gbXY4OGU2eHh4X3NlcmRlc19pcnFfbWFwcGluZyhjaGlwLCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzNTIuYzozMzc6XHRidXMgPSBtdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzNTIuYy0zMzgtXHRkZXYgPSBjaGlwLVx1MDAzZWRldjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02Mzl4LmM9NTQ5PXN0YXRpYyBpbnQgbXY4OGU2MzkwX3Bjc19pbml0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wY3MtNjM5eC5jLTU1OS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzOXguYzo1NjA6XHRidXMgPSBtdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzOXguYy01NjEtXHRkZXYgPSBjaGlwLVx1MDAzZWRldjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02Mzl4LmM9OTI3PXN0YXRpYyBpbnQgbXY4OGU2MzkzeF9wY3NfaW5pdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzOXguYy05MzctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02Mzl4LmM6OTM4Olx0YnVzID0gbXY4OGU2eHh4X2RlZmF1bHRfbWRpb19idXMoY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02Mzl4LmMtOTM5LVx0ZGV2ID0gY2hpcC1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYz0yOD1pbnQgbXY4OGU2eHh4X3BoeV9yZWFkKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBoeSwgaW50IHJlZywgdTE2ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYy0zMi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmM6MzM6XHRidXMgPSBtdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmMtMzQtXHRpZiAoIWJ1cylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BoeS5jPTQzPWludCBtdjg4ZTZ4eHhfcGh5X3dyaXRlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBoeSwgaW50IHJlZywgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BoeS5jLTQ3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYzo0ODpcdGJ1cyA9IG12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYy00OS1cdGlmICghYnVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmM9NTg9aW50IG12ODhlNnh4eF9waHlfcmVhZF9jNDUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcGh5LCBpbnQgZGV2YWQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYy02My1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmM6NjQ6XHRidXMgPSBtdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmMtNjUtXHRpZiAoIWJ1cylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BoeS5jPTc0PWludCBtdjg4ZTZ4eHhfcGh5X3dyaXRlX2M0NShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwaHksIGludCBkZXZhZCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BoeS5jLTc5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYzo4MDpcdGJ1cyA9IG12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYy04MS1cdGlmICghYnVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jPTEzMz1zdGF0aWMgaW50IG5ldGNfcG9ydF9nZXRfaW5mb19mcm9tX2R0KHN0cnVjdCBuZXRjX3BvcnQgKm5wLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE0OC1cbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jOjE0OTpzdGF0aWMgaW50IG5ldGNfcG9ydF9jcmVhdGVfZW1kaW9fYnVzKHN0cnVjdCBuZXRjX3BvcnQgKm5wLFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTUwLVx0XHRcdFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpub2RlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE4OS1cbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jOjE5MDpzdGF0aWMgaW50IG5ldGNfcG9ydF9jcmVhdGVfbWRpb19idXMoc3RydWN0IG5ldGNfcG9ydCAqbnAsXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0xOTEtXHRcdFx0XHQgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0xOTctXHRpZiAobWRpb19ub2RlKSB7XG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoxOTg6XHRcdGVyciA9IG5ldGNfcG9ydF9jcmVhdGVfZW1kaW9fYnVzKG5wLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTk5LVx0XHRvZl9ub2RlX3B1dChtZGlvX25vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jPTI0MT1zdGF0aWMgaW50IG5ldGNfaW5pdF9hbGxfcG9ydHMoc3RydWN0IG5ldGNfc3dpdGNoICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTI4My1cdFx0aWYgKGRzYV9wb3J0X2lzX3VzZXIoZHApKSB7XG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoyODQ6XHRcdFx0ZXJyID0gbmV0Y19wb3J0X2NyZWF0ZV9tZGlvX2J1cyhucCwgZHAtXHUwMDNlZG4pO1xuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMjg1LVx0XHRcdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM9MTUxNz1zdGF0aWMgaW50IGZlbGl4X2luaXRfc3RydWN0cyhzdHJ1Y3QgZmVsaXggKmZlbGl4LCBpbnQgbnVtX3BoeXNfcG9ydHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTE2MDItXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM6MTYwMzpcdGlmIChmZWxpeC1cdTAwM2VpbmZvLVx1MDAzZW1kaW9fYnVzX2FsbG9jKSB7XG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM6MTYwNDpcdFx0ZXJyID0gZmVsaXgtXHUwMDNlaW5mby1cdTAwM2VtZGlvX2J1c19hbGxvYyhvY2Vsb3QpO1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTE2MDUtXHRcdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jPTE2OTY9c3RhdGljIGludCBmZWxpeF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTE3Njgtb3V0X21kaW9idXNfZnJlZTpcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoxNzY5Olx0aWYgKGZlbGl4LVx1MDAzZWluZm8tXHUwMDNlbWRpb19idXNfZnJlZSlcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoxNzcwOlx0XHRmZWxpeC1cdTAwM2VpbmZvLVx1MDAzZW1kaW9fYnVzX2ZyZWUob2NlbG90KTtcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0xNzcxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYz0xNzc1PXN0YXRpYyB2b2lkIGZlbGl4X3RlYXJkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMTc5Mi1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoxNzkzOlx0aWYgKGZlbGl4LVx1MDAzZWluZm8tXHUwMDNlbWRpb19idXNfZnJlZSlcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoxNzk0Olx0XHRmZWxpeC1cdTAwM2VpbmZvLVx1MDAzZW1kaW9fYnVzX2ZyZWUob2NlbG90KTtcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0xNzk1LX1cbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4Lmg9MjI9c3RydWN0IGZlbGl4X2luZm8ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguaC01NS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguaDo1NjpcdGludFx0KCptZGlvX2J1c19hbGxvYykoc3RydWN0IG9jZWxvdCAqb2NlbG90KTtcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguaDo1NzpcdHZvaWRcdCgqbWRpb19idXNfZnJlZSkoc3RydWN0IG9jZWxvdCAqb2NlbG90KTtcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguaC01OC1cdGludFx0KCpwb3J0X3NldHVwX3RjKShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jPTk1MT1zdGF0aWMgdm9pZCB2c2M5OTU5X3dtX3N0YXQodTMyIHZhbCwgdTMyICppbnVzZSwgdTMyICptYXh1c2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtOTU2LVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM6OTU3OnN0YXRpYyBpbnQgdnNjOTk1OV9tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy05NTgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTEwNDQtXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoxMDQ1OnN0YXRpYyB2b2lkIHZzYzk5NTlfbWRpb19idXNfZnJlZShzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDQ2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYz0yNjU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVsaXhfaW5mbyBmZWxpeF9pbmZvX3ZzYzk5NTkgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMjY3NS1cdC5wdHBfY2Fwc1x0XHQ9IFx1MDAyNnZzYzk5NTlfcHRwX2NhcHMsXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoyNjc2Olx0Lm1kaW9fYnVzX2FsbG9jXHRcdD0gdnNjOTk1OV9tZGlvX2J1c19hbGxvYyxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jOjI2Nzc6XHQubWRpb19idXNfZnJlZVx0XHQ9IHZzYzk5NTlfbWRpb19idXNfZnJlZSxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTI2NzgtXHQucG9ydF9tb2Rlc1x0XHQ9IHZzYzk5NTlfcG9ydF9tb2Rlcyxcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jPTg2OT1zdGF0aWMgY29uc3Qgc3RydWN0IG9jZWxvdF9vcHMgdnNjOTk1M19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy04NzctXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jOjg3ODpzdGF0aWMgaW50IHZzYzk5NTNfbWRpb19idXNfYWxsb2Moc3RydWN0IG9jZWxvdCAqb2NlbG90KVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy04Nzkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTM0LVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYzo5MzU6c3RhdGljIHZvaWQgdnNjOTk1M19tZGlvX2J1c19mcmVlKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTM2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jPTk1MD1zdGF0aWMgY29uc3Qgc3RydWN0IGZlbGl4X2luZm8gc2V2aWxsZV9pbmZvX3ZzYzk5NTMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05NjQtXHQubnVtX3BvcnRzXHRcdD0gVlNDOTk1M19OVU1fUE9SVFMsXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jOjk2NTpcdC5tZGlvX2J1c19hbGxvY1x0XHQ9IHZzYzk5NTNfbWRpb19idXNfYWxsb2MsXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jOjk2NjpcdC5tZGlvX2J1c19mcmVlXHRcdD0gdnNjOTk1M19tZGlvX2J1c19mcmVlLFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05NjctXHQucG9ydF9tb2Rlc1x0XHQ9IHZzYzk5NTNfcG9ydF9tb2Rlcyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz03OTM9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6Nzk0OnFjYThrX21kaW9fYnVzeV93YWl0KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiByZWcsIHUzMiBtYXNrKVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtNzk1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz04MTY9cWNhOGtfbWRpb193cml0ZShzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSwgdTE2IGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtODQwLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6ODQxOlx0cmV0ID0gcWNhOGtfbWRpb19idXN5X3dhaXQoYnVzLCBRQ0E4S19NRElPX01BU1RFUl9DVFJMLFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtODQyLVx0XHRcdFx0ICAgUUNBOEtfTURJT19NQVNURVJfQlVTWSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM9ODU0PXFjYThrX21kaW9fcmVhZChzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy04NzctXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzo4Nzg6XHRyZXQgPSBxY2E4a19tZGlvX2J1c3lfd2FpdChidXMsIFFDQThLX01ESU9fTUFTVEVSX0NUUkwsXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy04NzktXHRcdFx0XHQgICBRQ0E4S19NRElPX01BU1RFUl9CVVNZKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz05NDc9cWNhOGtfbWRpb19yZWdpc3RlcihzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy05NjQtXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzo5NjU6XHRwcml2LVx1MDAzZWludGVybmFsX21kaW9fYnVzID0gYnVzO1xuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtOTY2LVx0YnVzLVx1MDAzZXByaXYgPSAodm9pZCAqKXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM9OTk0PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jOjk5NTpxY2E4a19zZXR1cF9tZGlvX2J1cyhzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk5Ni17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM9MTg0Mz1xY2E4a19zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtMTg2MC1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jOjE4NjE6XHRyZXQgPSBxY2E4a19zZXR1cF9tZGlvX2J1cyhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTE4NjItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstbGVkcy5jPTM2NT1xY2E4a19wYXJzZV9wb3J0X2xlZHMoc3RydWN0IHFjYThrX3ByaXYgKnByaXYsIHN0cnVjdCBmd25vZGVfaGFuZGxlICpwb3J0LCBpbnQgcG9ydF9udW0pXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay1sZWRzLmMtNDMxLVx0XHRpbml0X2RhdGEuZGV2aWNlbmFtZSA9IGthc3ByaW50ZihHRlBfS0VSTkVMLCBcJiMzNDslczowJWRcJiMzNDssXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLWxlZHMuYzo0MzI6XHRcdFx0XHRcdFx0IHByaXYtXHUwMDNlaW50ZXJuYWxfbWRpb19idXMgP1xuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay1sZWRzLmM6NDMzOlx0XHRcdFx0XHRcdCBwcml2LVx1MDAzZWludGVybmFsX21kaW9fYnVzLVx1MDAzZWlkIDogcHJpdi1cdTAwM2VidXMtXHUwMDNlaWQsXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLWxlZHMuYy00MzQtXHRcdFx0XHRcdFx0IHBvcnRfbnVtKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmg9NDQ1PXN0cnVjdCBxY2E4a19wcml2IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmgtNDU4LVx0c3RydWN0IG1paV9idXMgKmJ1cztcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaDo0NTk6XHRzdHJ1Y3QgbWlpX2J1cyAqaW50ZXJuYWxfbWRpb19idXM7XG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmgtNDYwLVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jPTUyMT1zdGF0aWMgaW50IHZzYzczeHhfZGV0ZWN0KHN0cnVjdCB2c2M3M3h4ICp2c2MpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmMtNjA0LVxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmM6NjA1OnN0YXRpYyBpbnQgdnNjNzN4eF9tZGlvX2J1c3lfY2hlY2soc3RydWN0IHZzYzczeHggKnZzYylcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTYwNi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmM9NjIxPXN0YXRpYyBpbnQgdnNjNzN4eF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwaHksIGludCByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmMtNjI3LVxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmM6NjI4Olx0cmV0ID0gdnNjNzN4eF9tZGlvX2J1c3lfY2hlY2sodnNjKTtcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTYyOS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmMtNjQwLVxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmM6NjQxOlx0cmV0ID0gdnNjNzN4eF9tZGlvX2J1c3lfY2hlY2sodnNjKTtcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTY0Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmM9NjYyPXN0YXRpYyBpbnQgdnNjNzN4eF9waHlfd3JpdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcGh5LCBpbnQgcmVnbnVtLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTY2OC1cbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jOjY2OTpcdHJldCA9IHZzYzczeHhfbWRpb19idXN5X2NoZWNrKHZzYyk7XG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYy02NzAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jPTQ1OT1zdGF0aWMgaW50IGF4X21paV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDY3LVx0YXgtXHUwMDNlYWRkcl9tZW1yID0gZWlfbG9jYWwtXHUwMDNlbWVtICYjNDM7IEFYX01FTVI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo0Njg6XHRheC1cdTAwM2VtaWlfYnVzID0gYWxsb2NfbWRpb19iaXRiYW5nKFx1MDAyNmF4LVx1MDAzZWJiX2N0cmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDY5LVx0aWYgKCFheC1cdTAwM2VtaWlfYnVzKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDgwLVx0aWYgKGVycilcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjQ4MTpcdFx0Z290byBvdXRfZnJlZV9tZGlvX2JpdGJhbmc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy00ODItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDg0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmM6NDg1OiBvdXRfZnJlZV9tZGlvX2JpdGJhbmc6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo0ODY6XHRmcmVlX21kaW9fYml0YmFuZyhheC1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTQ4Ny0gb3V0OlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jPTQ5MT1zdGF0aWMgaW50IGF4X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy01MzQtXHRtZGlvYnVzX3VucmVnaXN0ZXIoYXgtXHUwMDNlbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo1MzU6XHRmcmVlX21kaW9fYml0YmFuZyhheC1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTUzNi0gZmFpbGVkX21paTpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYz01NDA9c3RhdGljIGludCBheF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTU1Ny1cdG1kaW9idXNfdW5yZWdpc3RlcihheC1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjU1ODpcdGZyZWVfbWRpb19iaXRiYW5nKGF4LVx1MDAzZW1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNTU5LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21haW4uaD01MT1zdHJ1Y3QgeGdlX3BkYXRhIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWFpbi5oLTU2LVx0Y2hhciBpcnFfbmFtZVtJUlFfSURfU0laRV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWFpbi5oOjU3Olx0c3RydWN0IG1paV9idXMgKm1kaW9fYnVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21haW4uaC01OC1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM9ODQ9dm9pZCB4Z2VfbWRpb19yZW1vdmUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy04Ni1cdHN0cnVjdCB4Z2VfcGRhdGEgKnBkYXRhID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjg3Olx0c3RydWN0IG1paV9idXMgKm1kaW9fYnVzID0gcGRhdGEtXHUwMDNlbWRpb19idXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTg4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtOTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjkyOlx0aWYgKG1kaW9fYnVzLVx1MDAzZXN0YXRlID09IE1ESU9CVVNfUkVHSVNURVJFRClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6OTM6XHRcdG1kaW9idXNfdW5yZWdpc3RlcihtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzo5NTpcdG1kaW9idXNfZnJlZShtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTk2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jPTk4PWludCB4Z2VfbWRpb19jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMDEtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGF0YS1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTAyOlx0c3RydWN0IG1paV9idXMgKm1kaW9fYnVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMDMtXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTA1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMDY6XHRtZGlvX2J1cyA9IG1kaW9idXNfYWxsb2MoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTA3Olx0aWYgKCFtZGlvX2J1cylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTA4LVx0XHRyZXR1cm4gLUVOT01FTTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMTA6XHRtZGlvX2J1cy1cdTAwM2VuYW1lID0gXCYjMzQ7QVBNIFgtR2VuZSBFdGhlcm5ldCAodjIpIE1ESU8gQnVzXCYjMzQ7O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMTE6XHRtZGlvX2J1cy1cdTAwM2VyZWFkID0geGdlX21kaW9fcmVhZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTEyOlx0bWRpb19idXMtXHUwMDNld3JpdGUgPSB4Z2VfbWRpb193cml0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTEzOlx0bWRpb19idXMtXHUwMDNlcHJpdiA9IHBkYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMTQ6XHRtZGlvX2J1cy1cdTAwM2VwYXJlbnQgPSBkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjExNTpcdHNucHJpbnRmKG1kaW9fYnVzLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwmIzM0OyVzLW1paVwmIzM0OywgZGV2X25hbWUoZGV2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjExNjpcdHBkYXRhLVx1MDAzZW1kaW9fYnVzID0gbWRpb19idXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTExNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTE4Olx0bWRpb19idXMtXHUwMDNlcGh5X21hc2sgPSAweDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjExOTpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWRpb19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMjAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMjM6XHRwaHlkZXYgPSBwaHlfZmluZF9maXJzdChtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTEyNC1cdGlmICghcGh5ZGV2KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz05Mzk9aW50IHhnZW5lX2VuZXRfbWRpb19jb25maWcoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTQxLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBwZGF0YS1cdTAwM2VuZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NDI6XHRzdHJ1Y3QgbWlpX2J1cyAqbWRpb19idXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk0My1cdGludCByZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTQ1Olx0bWRpb19idXMgPSBtZGlvYnVzX2FsbG9jKCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk0NjpcdGlmICghbWRpb19idXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk0Ny1cdFx0cmV0dXJuIC1FTk9NRU07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk0OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTQ5Olx0bWRpb19idXMtXHUwMDNlbmFtZSA9IFwmIzM0O0FQTSBYLUdlbmUgTURJTyBidXNcJiMzNDs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk1MDpcdG1kaW9fYnVzLVx1MDAzZXJlYWQgPSB4Z2VuZV9tZGlvX3JnbWlpX3JlYWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk1MTpcdG1kaW9fYnVzLVx1MDAzZXdyaXRlID0geGdlbmVfbWRpb19yZ21paV93cml0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTUyOlx0c25wcmludGYobWRpb19idXMtXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXCYjMzQ7JXMtJXNcJiMzNDssIFwmIzM0O3hnZW5lLW1paVwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTUzLVx0XHQgbmRldi1cdTAwM2VuYW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NTU6XHRtZGlvX2J1cy1cdTAwM2Vwcml2ID0gKHZvaWQgX19mb3JjZSAqKXBkYXRhLVx1MDAzZW1jeF9tYWNfYWRkcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTU2Olx0bWRpb19idXMtXHUwMDNlcGFyZW50ID0gXHUwMDI2cGRhdGEtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTU4Olx0cmV0ID0geGdlbmVfbWRpb2J1c19yZWdpc3RlcihwZGF0YSwgbWRpb19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NTktXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk2MC1cdFx0bmV0ZGV2X2VycihuZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgTURJTyBidXNcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NjE6XHRcdG1kaW9idXNfZnJlZShtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk2Mi1cdFx0cmV0dXJuIHJldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTYzLVx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NjQ6XHRwZGF0YS1cdTAwM2VtZGlvX2J1cyA9IG1kaW9fYnVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NjUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz05ODE9dm9pZCB4Z2VuZV9lbmV0X21kaW9fcmVtb3ZlKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTg4Olx0bWRpb2J1c191bnJlZ2lzdGVyKHBkYXRhLVx1MDAzZW1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTg5Olx0bWRpb2J1c19mcmVlKHBkYXRhLVx1MDAzZW1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTkwOlx0cGRhdGEtXHUwMDNlbWRpb19idXMgPSBOVUxMO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05OTEtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X21haW4uaD0xODQ9c3RydWN0IHhnZW5lX2VuZXRfcGRhdGEge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5oLTE4NS1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5oOjE4NjpcdHN0cnVjdCBtaWlfYnVzICptZGlvX2J1cztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X21haW4uaC0xODctXHRpbnQgcGh5X3NwZWVkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX3BoeS5jLTExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfcGh5LmM6MTI6Ym9vbCBhcV9tZGlvX2J1c3lfd2FpdChzdHJ1Y3QgYXFfaHdfcyAqYXFfaHcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYy0xMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfcGh5LmMtMTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYzoxNzpcdGVyciA9IHJlYWR4X3BvbGxfdGltZW91dF9hdG9taWMoaHdfYXRsX21kaW9fYnVzeV9nZXQsIGFxX2h3LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfcGh5LmMtMTgtXHRcdFx0XHRcdHZhbCwgdmFsID09IDBVLCAxMFUsIDEwMDAwMFUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX3BoeS5jPTI2PXUxNiBhcV9tZGlvX3JlYWRfd29yZChzdHJ1Y3QgYXFfaHdfcyAqYXFfaHcsIHUxNiBtbWQsIHUxNiBhZGRyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX3BoeS5jLTM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfcGh5LmM6Mzk6XHRhcV9tZGlvX2J1c3lfd2FpdChhcV9odyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYy00MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYy00Ni1cdC8qIFJlYWQgcmVzdWx0LiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfcGh5LmM6NDc6XHRhcV9tZGlvX2J1c3lfd2FpdChhcV9odyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYy00OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYz01Mj12b2lkIGFxX21kaW9fd3JpdGVfd29yZChzdHJ1Y3QgYXFfaHdfcyAqYXFfaHcsIHUxNiBtbWQsIHUxNiBhZGRyLCB1MTYgZGF0YSlcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTU3MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIGl0OgoKKipBbmFseXppbmcgdGhlIE1pY3JvY2hpcCBUMSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYG1pY3JvY2hpcF90MS5jYCBkcml2ZXIgaXMgaW50ZWdyYXRlZC4gRmlyc3QsIEkmIzM5O20gZ29pbmcgdG8gcHVsbCB1cCB0aGF0IHNvdXJjZSBmaWxlLCBhbmQgdGhlbiBJJiMzOTttIGFsc28gZ29pbmcgdG8gZXhhbWluZSBpdHMgY29ycmVzcG9uZGluZyBLY29uZmlnIGVudHJ5LiBUaGUgS2NvbmZpZywgb2J2aW91c2x5LCBpcyBjcnVjaWFsIGZvciBkZXRlcm1pbmluZyBob3cgaXQmIzM5O3MgY29uZmlndXJlZCwgaWYgaXQmIzM5O3MgZXZlbiBlbmFibGVkLCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZS4gVW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyBlbnRyeSBpcyBnb2luZyB0byBnaXZlIG1lIHRoZSBiaWcgcGljdHVyZSBvZiBob3cgdGhpcyBkcml2ZXIgZml0cyBpbnRvIHRoZSBicm9hZGVyIGJ1aWxkIHN5c3RlbSBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIGF2YWlsYWJsZS4gSSBuZWVkIHRvIGlkZW50aWZ5IGl0cyByb2xlLiBUaGlzIGlzIHdoZXJlIEkgc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE2OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01JQ1JPQ0hJUF9UMV9QSFkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MzM2PWNvbmZpZyBNSUNST0NISVBfUEhZXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMzQwLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MzQxOmNvbmZpZyBNSUNST0NISVBfVDFfUEhZXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0zNDItXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb2NoaXAgVDEgUEhZc1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT04MT1vYmotJChDT05GSUdfTUlDUk9DSElQX1BIWV9SRFNfUFRQKVx0JiM0Mzs9IG1pY3JvY2hpcF9yZHNfcHRwLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo4MjpvYmotJChDT05GSUdfTUlDUk9DSElQX1QxX1BIWSlcdCYjNDM7PSBtaWNyb2NoaXBfdDEub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTgzLW9iai0kKENPTkZJR19NSUNST0NISVBfVDFTX1BIWSkgJiM0Mzs9IG1pY3JvY2hpcF90MXMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTk4NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBLY29uZmlnIExhYnlyaW50aCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBzb21ldGhpbmcgbmV0d29ya2luZy1yZWxhdGVkLCBwcm9iYWJseSBhIFBIWSBkcml2ZXIsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0byBoZWFkIHN0cmFpZ2h0IGZvciB0aGUgYEtjb25maWdgIGZpbGUgYmVjYXVzZSB0aGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgYnVpbGQtdGltZSBkZWNpc2lvbnMgYXJlIG1hZGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBJIG5lZWQgdG8gbG9vayBhcm91bmQgbGluZSAzNDEgaW4gYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYC4gVGhhdCBzcGVjaWZpYyBsaW5lIGxpa2VseSBjb250YWlucyBhIGRlZmluaXRpb24sIGRlcGVuZGVuY3ksIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQmIzM5O3MgcGlxdWluZyBteSBpbnRlcmVzdCwgb3IgbWF5YmUgaXQmIzM5O3MganVzdCBhIHNlY3Rpb24gSSBrbm93IEkgbmVlZCB0byBhbmFseXplLiBJdCBjb3VsZCBiZSBhIG5ldyBmZWF0dXJlLCBhIGRyaXZlciBJJiMzOTttIHVuZmFtaWxpYXIgd2l0aCwgb3IgYSBwcm9ibGVtIEkmIzM5O20gaW52ZXN0aWdhdGluZy4gVGltZSB0byBzZWUgd2hhdCYjMzk7cyB3aGF0ISBMZXQmIzM5O3MgZ2V0IHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzM1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzMzU6XHRcbiAzMzY6XHRjb25maWcgTUlDUk9DSElQX1BIWVxuIDMzNzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWljcm9jaGlwIFBIWXNcJiMzNDtcbiAzMzg6XHRcdGhlbHBcbiAzMzk6XHRcdCAgU3VwcG9ydHMgdGhlIExBTjg4WFggUEhZcy5cbiAzNDA6XHRcbiAzNDE6XHRjb25maWcgTUlDUk9DSElQX1QxX1BIWVxuIDM0MjpcdFx0dHJpc3RhdGUgXCYjMzQ7TWljcm9jaGlwIFQxIFBIWXNcJiMzNDtcbiAzNDM6XHRcdHNlbGVjdCBNSUNST0NISVBfUEhZX1JEU19QVFAgaWYgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXG4gMzQ0Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gMzQ1Olx0XHRoZWxwXG4gMzQ2Olx0XHQgIFN1cHBvcnRzIHRoZSBMQU44WFhYIFBIWXMuXG4gMzQ3Olx0XG4gMzQ4Olx0Y29uZmlnIE1JQ1JPQ0hJUF9QSFlfUkRTX1BUUFxuIDM0OTpcdFx0dHJpc3RhdGVcbiAzNTA6XHRcdGhlbHBcbiAzNTE6XHRcdCAgQ3VycmVudGx5IHN1cHBvcnRzIExBTjg4N1ggVDEgUEhZXG4gMzUyOlx0XG4gMzUzOlx0Y29uZmlnIE1JQ1JPU0VNSV9QSFlcbiAzNTQ6XHRcdHRyaXN0YXRlIFwmIzM0O01pY3Jvc2VtaSBQSFlzXCYjMzQ7XG4gMzU1Olx0XHRkZXBlbmRzIG9uIE1BQ1NFQyB8fCBNQUNTRUM9blxuIDM1NjpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTCB8fCAhTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXG4gMzU3Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVMgaWYgTUFDU0VDXG4gMzU4Olx0XHRzZWxlY3QgUEhZX1BBQ0tBR0VcbiAzNTk6XHRcdGhlbHBcbiAzNjA6XHRcdCAgQ3VycmVudGx5IHN1cHBvcnRzIFZTQzg1MTQsIFZTQzg1MzAsIFZTQzg1MzEsIFZTQzg1NDAgYW5kIFZTQzg1NDEgUEhZc1xuIDM2MTpcdFxuIDM2MjpcdGNvbmZpZyBNT1RPUkNPTU1fUEhZXG4gMzYzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNb3RvcmNvbW0gUEhZc1wmIzM0O1xuIDM2NDpcdFx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDY3OQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDMzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgTUlDUk9DSElQX1QxX1BIWWAgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgTUlDUk9DSElQX1QxX1BIWWAsIHdoaWNoIEkga25vdyBpcyBhIGRyaXZlciBmb3IgdGhvc2UgTWljcm9jaGlwIExBTjg4N3ggVDEgRXRoZXJuZXQgUEhZIGNoaXBzLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGRyaXZlciwgY2FuIEkgZ2V0IGl0IHRvIGRvIHNvbWV0aGluZywgd2l0aG91dCBoYXZpbmcgdGhlIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50PwoKTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIHdoYXQgZXhhY3RseSAqaXMqIGEgTWljcm9jaGlwIFQxIFBIWT8gQWgsIHJpZ2h0LCBpdOKAmXMgdGhhdCBhdXRvbW90aXZlIEV0aGVybmV0IHRyYW5zY2VpdmVyIOKAkyBhIDEwMEJBU0UtVDEgLyAxMDAwQkFTRS1UMSBQSFkgdHJhbnNjZWl2ZXIgbGlrZSB0aGUgTEFOODg3eC4gVG8gdHJpZ2dlciBgbGFuODg3eF9waHlfaW5pdGAsIEkgbmVlZCBhbiBNRElPIGJ1cyB0byBkZXRlY3QgYSBQSFksIGFuZCB0aGF0IFBIWSBuZWVkcyB0byBoYXZlIHRoZSBjb3JyZWN0IElELCBgUEhZX0lEX0xBTjg4N1hgLiBUaGF0IGluc3RhbnRpYXRlcyBhIGBwaHlfZGV2aWNlYCwgdGhlbiB0aGUgYG1pY3JvY2hpcF90MV9waHlfZHJpdmVyYCBnZXRzIGJvdW5kLCBhbmQgKnRoZW4qIHdlIGNhbiBydW4gYGxhbjg4N3hfcGh5X2luaXRgLCBtYXliZSB0aHJvdWdoIGBwaHlfaW5pdF9od2AsIGBwaHlfY29ubmVjdGAsIGBwaHlfYXR0YWNoYCwgb3IgZXZlbiBhIGNhYmxlIHRlc3QgcmVzZXQuCgpOb3csIHRoZSByZWFsIGNoYWxsZW5nZS4gQ2FuIEkgc2ltdWxhdGUgYWxsIHRoaXMgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZSwgbGlrZSBieSB1c2luZyBzeXprYWxsZXIsIFFFTVUsIG9yIGV2ZW4gc29tZXRoaW5nIHJ1bm5pbmcgb24gR0NFPyBJcyB0aGVyZSBhIHdheSB0byBjcmVhdGUgYSBgbWljcm9jaGlwX3QxYCBNRElPIFBIWSBkZXZpY2UgdmlydHVhbGx5PyBBcmUgdGhlcmUgdmlydHVhbCBNRElPIGJ1c2VzIEkgY2FuIHVzZSwgb3IgYW55IG1lY2hhbmlzbSB0byBkeW5hbWljYWxseSBjcmVhdGUgTURJTyBQSFlzIGZyb20gdXNlcnNwYWNlIG9yIHNvbWUgdmlydHVhbCBidXM/CgpIb2xkIG9uLi4uIGNvdWxkIGEgVVNCIFBIWSwgb3IgZXZlbiBhIFVTQiBFdGhlcm5ldCBkb25nbGUsIHBvdGVudGlhbGx5IHVzZSBhIExBTjg4N3g/IExldCYjMzk7cyBleHBsb3JlIHRoYXQuIEkgc2hvdWxkIGNoZWNrIGlmIGFueSBVU0IgRXRoZXJuZXQgYWRhcHRlcnMgYXJlIGFjdHVhbGx5IHVzaW5nIGEgTEFOODg3eC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IHNlYXJjaGluZyB0aGUgVVNCIGRyaXZlcnMsIGFuZCBpZiB0aGF0IGRvZXNuJiMzOTt0IHdvcmssIG1heWJlIGEgbW9yZSBnZW5lcmFsIHNlYXJjaCBhY3Jvc3MgdGhlIGVudGlyZSBrZXJuZWwgc291cmNlIGlzIG5lZWRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTY6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UEhZX0lEX0xBTjg4N1gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2LSNkZWZpbmUgUEhZX0lEX0xBTjkzN1hcdFx0XHRcdDB4MDAwN2MxODBcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNzojZGVmaW5lIFBIWV9JRF9MQU44ODdYXHRcdFx0XHQweDAwMDdjMWYwXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTgtXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTE2MDc9c3RhdGljIGludCBsYW44ODd4X2NkX3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2MjEtXHRcdFx0XHQgICAoKHZhbCBcdTAwMjYgR0VOTUFTSygxNSwgNCkpID09XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTYyMjpcdFx0XHRcdCAgICAoUEhZX0lEX0xBTjg4N1ggXHUwMDI2IEdFTk1BU0soMTUsIDQpKSksXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYyMy1cdFx0XHRcdCAgIDUwMDAsIDUwMDAwLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM9MjEwNj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3QxX3BoeV9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE0MS1cdHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTQyOlx0XHRQSFlfSURfTUFUQ0hfTU9ERUwoUEhZX0lEX0xBTjg4N1gpLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNDMtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7TWljcm9jaGlwIExBTjg4N3ggVDEgUEhZXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0yMTY3PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbWljcm9jaGlwX3QxX3RibFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTY5LVx0eyBQSFlfSURfTUFUQ0hfTU9ERUwoUEhZX0lEX0xBTjkzN1gpIH0sXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE3MDpcdHsgUEhZX0lEX01BVENIX01PREVMKFBIWV9JRF9MQU44ODdYKSB9LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNzEtXHR7IH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTY6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIwMjAKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBFdGhlcm5ldCBQSFkgRnV6emluZyBGZWFzaWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtDYW4gd2UgZWZmZWN0aXZlbHkgZnV6eiBhIE1pY3JvY2hpcCBMQU44ODd4IFBIWSBkcml2ZXIgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQgdXNpbmcgc3l6a2FsbGVyPyYjMzQ7IExldCYjMzk7cyBjb25zdWx0IHRoZSB0cmlhZ2UgZ3VpZGUuIFNlY3Rpb24gMiBoaWdobGlnaHRzICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCYjMzQ7IHNwZWNpZmljYWxseSBtZW50aW9uaW5nIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIGFuZCBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgc3BlY2lmaWMgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBPbiB0aGUgZmxpcCBzaWRlLCAmIzM0O1JlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHMmIzM0OyBhcmUgdGhvc2UgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyBsaWtlIHZpcnRpbywgVVNCIGdhZGdldCwgZXRjLgoKTm93LCB3aGVyZSBkbyBFdGhlcm5ldCBQSFlzIGxpa2UgdGhlIE1pY3JvY2hpcCBMQU44ODd4IGZpdD8gU3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRz4oCUUUVNVSwgR0NF4oCUIHR5cGljYWxseSBvZmZlciBkZXZpY2VzIGxpa2UgZTEwMDAsIHZpcnRpby1uZXQsIGFuZCBhIGZldyBvdGhlcnMsIGFuZCBub25lIG9mIHRoZXNlIGV4cG9zZSBhIE1pY3JvY2hpcCBMQU44ODd4IFQxIFBIWSBhdHRhY2hlZCB0byBhbiBNRElPIGJ1cy4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlJiMzNDsgc2NlbmFyaW8uIEkgbmVlZCB0byBiZSBzdXJlIHRob3VnaC4KClRoZSBjcnV4IG9mIHRoZSBtYXR0ZXIgaXMgdGhlIGxhY2sgb2YgYSBnZW5lcmljIHVzZXItc3BhY2UgbWVjaGFuaXNtIHRvIGluc3RhbnRpYXRlIGFuIGFyYml0cmFyeSBNRElPIFBIWSBkZXZpY2Ugd2l0aCBjdXN0b20gcmVnaXN0ZXJzIGFuZCBiaW5kIHRoZSBgbWljcm9jaGlwX3QxLmNgIGRyaXZlciB0byBpdCwgdW5sZXNzIHdlIGhhdmUgcGh5c2ljYWwgTURJTyBoYXJkd2FyZSBvciBkZWRpY2F0ZWQgQVNJQy4gSSB3b3VsZCBuZWVkIHRvIGNoZWNrIGFuZCB2ZXJpZnkgaWYgTURJTyBQSFkgZGV2aWNlcyBjYW4gYmUgY3JlYXRlZCB2aWEgbmV0bGluaywgc3lzZnMsIG9yIG90aGVyIHVzZXItc3BhY2UgdG9vbHMuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHNlYXJjaCBmb3IgYW55IGV2aWRlbmNlIG9mIGBtZGlvX2J1c2Agb3IgYG1kaW9fZGV2aWNlYCBjcmVhdGlvbiBmcm9tIHVzZXItc3BhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE2OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW9idXNfcmVnaXN0ZXJfZGV2aWNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTQ2PXN0YXRpYyBpbnQgb2ZfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKm1kaW8sXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNTEtXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo1MjpzdGF0aWMgaW50IG9mX21kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtaWlfYnVzICptZGlvLFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNTMtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmNoaWxkLCB1MzIgYWRkcilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0xMzk9c3RhdGljIGludCBfX29mX21kaW9idXNfcGFyc2VfcGh5cyhzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0xNjktXHRcdGVsc2VcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjE3MDpcdFx0XHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKG1kaW8sIGNoaWxkLCBhZGRyKTtcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTE3MS1cbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYz0xNTE9aW50IG1kaW9fZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xNTYtXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYzoxNTc6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyX2RldmljZShtZGlvZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTE1OC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM9MTg5PUVYUE9SVF9TWU1CT0wobWRpb19kZXZpY2VfcmVtb3ZlKTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTE5MC1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jOjE5MTppbnQgbWRpb2J1c19yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTkyLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTExMDk9aW50IHBoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExMTItXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjExMTM6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyX2RldmljZShcdTAwMjZwaHlkZXYtXHUwMDNlbWRpbyk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExMTQtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaD0yNT12b2lkIHBoeV9jaGVja19kb3duc2hpZnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmgtMjYtXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmg6Mjc6aW50IG1kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmgtMjgtaW50IG1kaW9idXNfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTY6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM0MzUKCQkJCQkJCW91dHB1dDogMTQxCgkJCQkJCQl0aG91Z2h0czogNDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvZGUmIzM5O3MgRnV6emluZyBXb3J0aGluZXNzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggaXNuJiMzOTt0IHdvcnRoIGZ1enppbmcsIGFuZCBJIG5lZWQgdG8gYmUgcHJlY2lzZSBhbmQganVzdGlmeSB0aGF0LiBUaGUgY29kZSYjMzk7cyBkZWFsaW5nIHdpdGggTURJTy9QSFkgZGV2aWNlcywgYW5kIHRoZSBMQU44ODd4IGlzIGEgcGh5c2ljYWwsIGF1dG9tb3RpdmUgRXRoZXJuZXQgUEhZIGZyb20gTWljcm9jaGlwLiBJdCByZWdpc3RlcnMgaW4gb25lIG9mIHRoZSB1c3VhbCB3YXlzOiBkZXZpY2UgdHJlZSwgQUNQSSwgb3IgTUFDIGRyaXZlcnMgc2Nhbm5pbmcgdGhlIE1ESU8gYnVzLgoKVGhlIGNydWNpYWwgcG9pbnQgaXMgdGhhdCB0aGlzIHNwZWNpZmljIExBTjg4N3ggUEhZLCBhbmQgdGhlIGBtaWNyb2NoaXBfdDEuY2AgZHJpdmVyIHRoYXQgc3VwcG9ydHMgaXQsICpyZXF1aXJlcyogYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLiBJdOKAmXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB3aGljaCBhcmUgd2hhdCB3ZSYjMzk7cmUgdXNpbmcgZm9yIGZ1enppbmcuIFNvLCBldmVuIHRob3VnaCB0aGlzIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgbGFuODg3eF9waHlfaW5pdCgpYCB3aGVuIGBwcml2LSZndDtjbG9ja2AgaXMgTlVMTCAod2hpY2gsIEkgZ2V0IGl0LCBpcyBhIHZhbGlkIGJ1ZyBmaXgpLCB0aGF0IGZ1bmN0aW9uIHdpbGwgKm5ldmVyKiBiZSBjYWxsZWQgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnQuIFRoZSBoYXJkd2FyZSBzaW1wbHkgaXNuJiMzOTt0IHRoZXJlIHRvIHRyaWdnZXIgaXQuCgpMb29raW5nIGF0IHRoZSBjcml0ZXJpYSwgdGhlIHBhdGNoIGNsZWFybHkgZmFsbHMgaW50byAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7LiBUaGUgZGVzY3JpcHRpb24gZXhwbGljaXRseSBtZW50aW9ucyB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhpcyBpcyBhIHBlcmZlY3QgbWF0Y2guCgpUaGVyZWZvcmUsIG15IGZpbmFsIHZlcmRpY3QgaXM6CgoqICAgKipXb3J0aEZ1enppbmcgPSBmYWxzZSoqCiogICAqKkZvY3VzU3ltYm9scyA9IFxbIF0qKiAoZW1wdHkgYXJyYXkpCiogICAqKkVuYWJsZUNvbmZpZ3MgPSBcWyBdKiogKGVtcHR5IGFycmF5KQoqICAgKipSZWFzb25pbmcgPSAmIzM0O1BoeXNpY2FsIGhhcmR3YXJlIFBIWSBkcml2ZXIgZm9yIE1pY3JvY2hpcCBMQU44ODd4IGF1dG9tb3RpdmUgRXRoZXJuZXQgUEhZLCBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9HQ0UsIHRodXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7KioKCkkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggdGhlc2UgcGFyYW1ldGVycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTY6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMgdG8gYWRkIGEgTlVMTCBjaGVjayBmb3IgcHJpdi1cdTAwM2VjbG9jayBpbiBsYW44ODd4X3BoeV9pbml0KCkuIFRoaXMgZHJpdmVyIGlzIGZvciBNaWNyb2NoaXAgTEFOODg3eCBhdXRvbW90aXZlIEV0aGVybmV0IFBIWXMgKDEwMEJBU0UtVDEvMTAwMEJBU0UtVDEpLCB3aGljaCByZXF1aXJlIGRlZGljYXRlZCBwaHlzaWNhbCBoYXJkd2FyZS9BU0lDcyBhbmQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMgdG8gYWRkIGEgTlVMTCBjaGVjayBmb3IgcHJpdi1cdTAwM2VjbG9jayBpbiBsYW44ODd4X3BoeV9pbml0KCkuIFRoaXMgZHJpdmVyIGlzIGZvciBNaWNyb2NoaXAgTEFOODg3eCBhdXRvbW90aXZlIEV0aGVybmV0IFBIWXMgKDEwMEJBU0UtVDEvMTAwMEJBU0UtVDEpLCB3aGljaCByZXF1aXJlIGRlZGljYXRlZCBwaHlzaWNhbCBoYXJkd2FyZS9BU0lDcyBhbmQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDRUMTY6MTI6NTUuMjIwOTE4ODY0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk0NTU0OTg4MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMgdG8gYWRkIGEgTlVMTCBjaGVjayBmb3IgcHJpdi1cXHUwMDNlY2xvY2sgaW4gbGFuODg3eF9waHlfaW5pdCgpLiBUaGlzIGRyaXZlciBpcyBmb3IgTWljcm9jaGlwIExBTjg4N3ggYXV0b21vdGl2ZSBFdGhlcm5ldCBQSFlzICgxMDBCQVNFLVQxLzEwMDBCQVNFLVQxKSwgd2hpY2ggcmVxdWlyZSBkZWRpY2F0ZWQgcGh5c2ljYWwgaGFyZHdhcmUvQVNJQ3MgYW5kIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTY6MTI6NTUuMjIwOTI1NzQ0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mjg2OTc3NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhMzk4M2M5MDhmZmFlMzMxZGRiYTA5MDIyMTcyY2IxYWFlY2YyM2VlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDQgMTY6MTI6NTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jIGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jXFxuaW5kZXggMzI5MmIyMjM1YzhmYS4uZTM4ZDIwYmY2YWE0YyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNcXG5AQCAtMTI4NSwxNCArMTI4NSwxNiBAQCBzdGF0aWMgaW50IGxhbjg4N3hfcGh5X2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0XFx0aWYgKElTX0VSUihwcml2LVxcdTAwM2VjbG9jaykpXFxuIFxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHByaXYtXFx1MDAzZWNsb2NrKTtcXG4gXFxuLVxcdFxcdC8qIEVuYWJsZSBwaW4gbXV4IGZvciBFVlQgKi9cXG4tXFx0XFx0cGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG4tXFx0XFx0XFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxLFxcbi1cXHRcXHRcXHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOLFxcbi1cXHRcXHRcXHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOKTtcXG4tXFxuLVxcdFxcdC8qIEluaXRpYWxpemUgcGluIG51bWJlcnMgc3BlY2lmaWMgdG8gUEVST1VUICovXFxuLVxcdFxcdHByaXYtXFx1MDAzZWNsb2NrLVxcdTAwM2VldmVudF9waW4gPSAzO1xcbitcXHRcXHRpZiAocHJpdi1cXHUwMDNlY2xvY2spIHtcXG4rXFx0XFx0XFx0LyogRW5hYmxlIHBpbiBtdXggZm9yIEVWVCAqL1xcbitcXHRcXHRcXHRwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxcbitcXHRcXHRcXHRcXHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDEsXFxuK1xcdFxcdFxcdFxcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4sXFxuK1xcdFxcdFxcdFxcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4pO1xcbitcXG4rXFx0XFx0XFx0LyogSW5pdGlhbGl6ZSBwaW4gbnVtYmVycyBzcGVjaWZpYyB0byBQRVJPVVQgKi9cXG4rXFx0XFx0XFx0cHJpdi1cXHUwMDNlY2xvY2stXFx1MDAzZWV2ZW50X3BpbiA9IDM7XFxuK1xcdFxcdH1cXG4gXFxuIFxcdFxcdHByaXYtXFx1MDAzZWluaXRfZG9uZSA9IHRydWU7XFxuIFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTY6MTI6NTUuNzUwNTYxMDE1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo3ODkyNTg0MDUwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jIHRvIGFkZCBhIE5VTEwgY2hlY2sgZm9yIHByaXYtXFx1MDAzZWNsb2NrIGluIGxhbjg4N3hfcGh5X2luaXQoKS4gVGhpcyBkcml2ZXIgaXMgZm9yIE1pY3JvY2hpcCBMQU44ODd4IGF1dG9tb3RpdmUgRXRoZXJuZXQgUEhZcyAoMTAwQkFTRS1UMS8xMDAwQkFTRS1UMSksIHdoaWNoIHJlcXVpcmUgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlL0FTSUNzIGFuZCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTM5ODNjOTA4ZmZhZTMzMWRkYmEwOTAyMjE3MmNiMWFhZWNmMjNlZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTY6MTI6NTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMgYi9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNcbmluZGV4IDMyOTJiMjIzNWM4ZmEuLmUzOGQyMGJmNmFhNGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1xuQEAgLTEyODUsMTQgKzEyODUsMTYgQEAgc3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdGlmIChJU19FUlIocHJpdi1cdTAwM2VjbG9jaykpXG4gXHRcdFx0cmV0dXJuIFBUUl9FUlIocHJpdi1cdTAwM2VjbG9jayk7XG4gXG4tXHRcdC8qIEVuYWJsZSBwaW4gbXV4IGZvciBFVlQgKi9cbi1cdFx0cGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbi1cdFx0XHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDEsXG4tXHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTixcbi1cdFx0XHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOKTtcbi1cbi1cdFx0LyogSW5pdGlhbGl6ZSBwaW4gbnVtYmVycyBzcGVjaWZpYyB0byBQRVJPVVQgKi9cbi1cdFx0cHJpdi1cdTAwM2VjbG9jay1cdTAwM2VldmVudF9waW4gPSAzO1xuK1x0XHRpZiAocHJpdi1cdTAwM2VjbG9jaykge1xuK1x0XHRcdC8qIEVuYWJsZSBwaW4gbXV4IGZvciBFVlQgKi9cbitcdFx0XHRwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuK1x0XHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxLFxuK1x0XHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTixcbitcdFx0XHRcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4pO1xuK1xuK1x0XHRcdC8qIEluaXRpYWxpemUgcGluIG51bWJlcnMgc3BlY2lmaWMgdG8gUEVST1VUICovXG4rXHRcdFx0cHJpdi1cdTAwM2VjbG9jay1cdTAwM2VldmVudF9waW4gPSAzO1xuK1x0XHR9XG4gXG4gXHRcdHByaXYtXHUwMDNlaW5pdF9kb25lID0gdHJ1ZTtcbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE2OjEyOjU1Ljc1MDU2MzI1NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3NTY1NTI5MjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgbWVudGFsIHdhbGt0aHJvdWdoIG9mIHRoaXMuXG5cbioqQW5hbHl6aW5nIHRoZSBQSFkgRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQncyBkaXZlIGludG8gdGhpcyBkaWZmIGFuZCB0aGUgcmVsYXRlZCBjb2RlLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY2AsIGFuZCBzcGVjaWZpY2FsbHkgdGhlIGBsYW44ODd4X3BoeV9pbml0YCBmdW5jdGlvbi4gVGhhdCBnaXZlcyBtZSBhIHN0YXJ0aW5nIHBvaW50LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgd2UncmUgYWN0dWFsbHkgZGVhbGluZyB3aXRoIGhlcmUuXG5cbk15IGluc3RpbmN0IGlzIHRvIGNoZWNrIG91dCB0aGUgYnJvYWRlciBjb250ZXh0IG9mIGBtaWNyb2NoaXBfdDEuY2AuIEkgbmVlZCB0byBnZXQgYSBncmlwIG9uIHdoYXQga2luZCBvZiBQSFkgZHJpdmVyIHRoaXMgaXM6IElzIGl0IGZvciBhIGNvbW1vbiBjaGlwPyBIb3cgZG9lcyBpdCBnZXQgcHJvYmVkIGFuZCB1c2VkIGJ5IHRoZSBzeXN0ZW0/IFdoYXQgc3BlY2lmaWMgaGFyZHdhcmUgaXMgaXQgZGVzaWduZWQgZm9yPyBBbmQsIGNyaXRpY2FsbHkgZm9yIG15IGFuYWx5c2lzLCBjYW4gSSB0cmlnZ2VyIHRoaXMgdGhpbmcgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50PyBJJ20gdGhpbmtpbmcgUUVNVSBvciBzb21ldGhpbmcgc2ltaWxhciwgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgcmVxdWlyZXMgYWN0dWFsIGhhcmR3YXJlLlxuXG5UaW1lIHRvIHJlYWNoIGZvciBteSB0b29scy4gSSdsbCBlaXRoZXIgdXNlIGBncmVwcGVyYCBvciBqdXN0IHF1aWNrbHkgcmVhZCB0aGUgZmlsZS4gQSBxdWljayBjaGVjayBvZiBgbWljcm9jaGlwX3QxLmNgIHdpbGwgZ2l2ZSBtZSB0aGUgaGlnaC1sZXZlbCBwaWN0dXJlIEkgbmVlZC4gVGhpcyB3aWxsIGluZm9ybSBteSBuZXh0IHN0ZXBzIGluIHRoZSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEzMSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE2OjEzOjEzLjMxNjA5OTE5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NzI4NjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxhbjg4N3hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0yOTg9c3RydWN0IGFjY2Vzc19lcmVnX3ZhbCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMzA1LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzozMDY6c3RydWN0IGxhbjg4N3hfaHdfc3RhdCB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTMwNy1cXHRjb25zdCBjaGFyICpzdHJpbmc7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMzEyLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzozMTM6c3RhdGljIGNvbnN0IHN0cnVjdCBsYW44ODd4X2h3X3N0YXQgbGFuODg3eF9od19zdGF0c1tdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0zMTQtXFx0eyBcXFwiVFggR29vZCBDb3VudFxcXCIsICAgICAgICAgICAgICAgICAgICAgIE1ESU9fTU1EX1ZFTkQxLCBMQU44ODdYX01JU19QS1RfU1RBVF9SRUcwLCAxNH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMzIxLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzozMjI6c3RydWN0IGxhbjg4N3hfcmVnd3JfbWFwIHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMzIzLVxcdHU4ICBtbWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMzI3LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzozMjg6c3RydWN0IGxhbjg4N3hfcHJpdiB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjMyOTpcXHR1NjQgc3RhdHNbQVJSQVlfU0laRShsYW44ODd4X2h3X3N0YXRzKV07XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTMzMC1cXHRzdHJ1Y3QgbWNocF9yZHNfcHRwX2Nsb2NrICpjbG9jaztcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0xMDgwPXN0YXRpYyBpbnQgbGFuODd4eF9nZXRfc3FpX21heChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEwODQtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEwODU6c3RhdGljIGludCBsYW44ODd4X3JnbWlpX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTA4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTExOC1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTExOTpzdGF0aWMgaW50IGxhbjg4N3hfc2dtaWlfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMTIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMTQ5LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMTUwOnN0YXRpYyBpbnQgbGFuODg3eF9jb25maWdfcmdtaWlfZW4oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTE1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTE1NS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTE1NjpcXHRyZXQgPSBsYW44ODd4X3JnbWlpX2luaXQocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTE1Ny1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjExLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMjEyOnN0YXRpYyBpbnQgbGFuODg3eF9jb25maWdfcGh5X2ludGVyZmFjZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjM5LVxcdFxcdCAgICBMQU44ODdYX01BQ19NT0RFX1NHTUlJKSlcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTI0MDpcXHRcXHRcXHRyZXQgPSBsYW44ODd4X2NvbmZpZ19yZ21paV9lbihwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjQxLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNDYtXFx0XFx0aWYgKCFzZ21paV9kaXMpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEyNDc6XFx0XFx0XFx0cmV0ID0gbGFuODg3eF9zZ21paV9pbml0KHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNDgtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTI1Ni1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTI1NzpzdGF0aWMgaW50IGxhbjg4N3hfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNzUtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEyNzY6c3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNzcte1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMjc4OlxcdHN0cnVjdCBsYW44ODd4X3ByaXYgKnByaXYgPSBwaHlkZXYtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNzktXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzE5LVxcdC8qIFBIWSBpbnRlcmZhY2Ugc2V0dXAgKi9cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTMyMDpcXHRyZXR1cm4gbGFuODg3eF9jb25maWdfcGh5X2ludGVyZmFjZShwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzIxLX1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTMyMi1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTMyMzpzdGF0aWMgaW50IGxhbjg4N3hfcGh5X2NvbmZpZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMzI0OlxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBsYW44ODd4X3JlZ3dyX21hcCAqcmVnX21hcCwgaW50IGNudClcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTMyNS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTMzNy1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTMzODpzdGF0aWMgaW50IGxhbjg4N3hfcGh5X3NldHVwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEzMzkte1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMzQwOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbGFuODg3eF9yZWd3cl9tYXAgcGh5X2NmZ1tdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzQxLVxcdFxcdC8qIFBPUlRfQUZFIHdyaXRlcyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEzNjktXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEzNzA6XFx0cmV0dXJuIGxhbjg4N3hfcGh5X2NvbmZpZyhwaHlkZXYsIHBoeV9jZmcsIEFSUkFZX1NJWkUocGh5X2NmZykpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzcxLX1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTM3Mi1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTM3MzpzdGF0aWMgaW50IGxhbjg4N3hfMTAwTV9zZXR1cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzc5LVxcdCAgICBwaHlkZXYtXFx1MDAzZW1hc3Rlcl9zbGF2ZV9zZXQgPT0gTUFTVEVSX1NMQVZFX0NGR19NQVNURVJfUFJFRkVSUkVEKXtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTM4MDpcXHRcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGxhbjg4N3hfcmVnd3JfbWFwIHBoeV9jZmdbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTM4MS1cXHRcXHRcXHR7TURJT19NTURfUE1BUE1ELCBMQU44ODdYX0FGRV9QT1JUX1RFU1RCVVNfQ1RSTDQsIDB4MDBiOH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTM4NS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTM4NjpcXHRcXHRyZXQgPSBsYW44ODd4X3BoeV9jb25maWcocGh5ZGV2LCBwaHlfY2ZnLCBBUlJBWV9TSVpFKHBoeV9jZmcpKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTM4Ny1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMzg4OlxcdFxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbGFuODg3eF9yZWd3cl9tYXAgcGh5X2NmZ1tdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzg5LVxcdFxcdFxcdHtNRElPX01NRF9QTUFQTUQsIExBTjg4N1hfQUZFX1BPUlRfVEVTVEJVU19DVFJMNCwgMHgwMDM4fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzkyLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMzkzOlxcdFxcdHJldCA9IGxhbjg4N3hfcGh5X2NvbmZpZyhwaHlkZXYsIHBoeV9jZmcsIEFSUkFZX1NJWkUocGh5X2NmZykpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzk0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDAxLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNDAyOnN0YXRpYyBpbnQgbGFuODg3eF8xMDAwTV9zZXR1cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDAzLXtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQwNDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGxhbjg4N3hfcmVnd3JfbWFwIHBoeV9jZmdbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQwNS1cXHRcXHR7TURJT19NTURfUE1BUE1ELCBMQU44ODdYX1RYX0FNUExUXzEwMDBUMV9SRUcsIDB4MDAzZn0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQxMC1cXHQvKiAoUmUpY29uZmlndXJlIHRoZSBzcGVlZC9tb2RlIGRlcGVuZGVudCBUMSBzZXR0aW5ncyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNDExOlxcdHJldCA9IGxhbjg4N3hfcGh5X2NvbmZpZyhwaHlkZXYsIHBoeV9jZmcsIEFSUkFZX1NJWkUocGh5X2NmZykpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDEyLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0MTgtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE0MTk6c3RhdGljIGludCBsYW44ODd4X2xpbmtfc2V0dXAoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQyMC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQyMy1cXHRpZiAocGh5ZGV2LVxcdTAwM2VzcGVlZCA9PSBTUEVFRF8xMDAwKVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNDI0OlxcdFxcdHJldCA9IGxhbjg4N3hfMTAwME1fc2V0dXAocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQyNS1cXHRlbHNlIGlmIChwaHlkZXYtXFx1MDAzZXNwZWVkID09IFNQRUVEXzEwMClcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQyNjpcXHRcXHRyZXQgPSBsYW44ODd4XzEwME1fc2V0dXAocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQyNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDMzLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNDM0OnN0YXRpYyBpbnQgbGFuODg3eF9waHlfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQzNS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQ2NS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQ2NjpzdGF0aWMgaW50IGxhbjg4N3hfcGh5X3JlY29uZmlnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0Njcte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0NzUtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE0NzY6XFx0cmV0dXJuIGxhbjg4N3hfbGlua19zZXR1cChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDc3LX1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQ3OC1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQ3OTpzdGF0aWMgaW50IGxhbjg4N3hfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQ4MC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQ4NS1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQ4NjpcXHRyZXQgPSBsYW44ODd4X3BoeV9yZXNldChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDg3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0ODktXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE0OTA6XFx0cmV0dXJuIGxhbjg4N3hfcGh5X3JlY29uZmlnKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0OTEtfVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDkyLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNDkzOnN0YXRpYyBpbnQgbGFuODg3eF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDk0LXtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQ5NTpcXHRzdHJ1Y3QgbGFuODg3eF9wcml2ICpwcml2O1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDk2LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1MDMtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE1MDQ6XFx0cmV0dXJuIGxhbjg4N3hfcGh5X3NldHVwKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1MDUtfVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTA2LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNTA3OnN0YXRpYyB1NjQgbGFuODg3eF9nZXRfc3RhdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaSlcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTUwOC17XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE1MDk6XFx0c3RydWN0IGxhbjg4N3hfaHdfc3RhdCBzdGF0ID0gbGFuODg3eF9od19zdGF0c1tpXTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTUxMDpcXHRzdHJ1Y3QgbGFuODg3eF9wcml2ICpwcml2ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTExLVxcdGludCB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTUyOS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTUzMDpzdGF0aWMgdm9pZCBsYW44ODd4X2dldF9zdGF0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTMxLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX3N0YXRzICpzdGF0cywgdTY0ICpkYXRhKVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTMyLXtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTUzMzpcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUobGFuODg3eF9od19zdGF0cyk7IGkrKylcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTUzNDpcXHRcXHRkYXRhW2ldID0gbGFuODg3eF9nZXRfc3RhdChwaHlkZXYsIGkpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTM1LX1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTUzNi1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTUzNzpzdGF0aWMgaW50IGxhbjg4N3hfZ2V0X3NzZXRfY291bnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTUzOC17XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE1Mzk6XFx0cmV0dXJuIEFSUkFZX1NJWkUobGFuODg3eF9od19zdGF0cyk7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1NDAtfVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTQxLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNTQyOnN0YXRpYyB2b2lkIGxhbjg4N3hfZ2V0X3N0cmluZ3Moc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggKmRhdGEpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1NDMte1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNTQ0OlxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShsYW44ODd4X2h3X3N0YXRzKTsgaSsrKVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNTQ1OlxcdFxcdGV0aHRvb2xfcHV0cyhcXHUwMDI2ZGF0YSwgbGFuODg3eF9od19zdGF0c1tpXS5zdHJpbmcpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTQ2LX1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTU0Ny1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTU0ODpzdGF0aWMgaW50IGxhbjg4N3hfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTU0OS17XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE1NTA6XFx0c3RydWN0IGxhbjg4N3hfcHJpdiAqcHJpdiA9IHBoeWRldi1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTU1MS1cXHRpbnQgcmM7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTU4My1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTU4NDpzdGF0aWMgaXJxcmV0dXJuX3QgbGFuODg3eF9oYW5kbGVfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1ODUte1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNTg2OlxcdHN0cnVjdCBsYW44ODd4X3ByaXYgKnByaXYgPSBwaHlkZXYtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1ODctXFx0aW50IHJjID0gSVJRX05PTkU7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYwNi1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTYwNzpzdGF0aWMgaW50IGxhbjg4N3hfY2RfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYwOC1cXHRcXHRcXHQgICAgZW51bSBjYWJsZV9kaWFnX3N0YXRlIGNkX2RvbmUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYyOC1cXHRcXHQvKiBDYWJsZSBkaWFnbm9zdGljcyBjb21wbGV0ZS4gUmVzdG9yZSBQSFkuICovXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE2Mjk6XFx0XFx0cmMgPSBsYW44ODd4X3BoeV9zZXR1cChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjMwLVxcdFxcdGlmIChyYyBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYzMi1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTYzMzpcXHRcXHRyYyA9IGxhbjg4N3hfcGh5X2luaXQocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYzNC1cXHRcXHRpZiAocmMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2MzYtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE2Mzc6XFx0XFx0cmMgPSBsYW44ODd4X2NvbmZpZ19pbnRyKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2MzgtXFx0XFx0aWYgKHJjIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjQwLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNjQxOlxcdFxcdHJjID0gbGFuODg3eF9waHlfcmVjb25maWcocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTY0Mi1cXHRcXHRpZiAocmMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2NDgtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE2NDk6c3RhdGljIGludCBsYW44ODd4X2NhYmxlX3Rlc3RfcHJlcChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjUwLVxcdFxcdFxcdFxcdCAgIGVudW0gY2FibGVfZGlhZ19tb2RlIG1vZGUpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2NTEte1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNjUyOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbGFuODg3eF9yZWd3cl9tYXAgdmFsdWVzW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2NTMtXFx0XFx0e01ESU9fTU1EX1ZFTkQxLCBMQU44ODdYX01BWF9QR0FfR0FJTl8xMDAsIDB4MWZ9LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2NjUtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE2NjY6XFx0cmMgPSBsYW44ODd4X2NkX3Jlc2V0KHBoeWRldiwgQ0RfVEVTVF9JTklUKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTY2Ny1cXHRpZiAocmMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE3MjktXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE3MzA6c3RhdGljIGludCBsYW44ODd4X2NhYmxlX3Rlc3RfY2hrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE3MzEtXFx0XFx0XFx0XFx0ICBlbnVtIGNhYmxlX2RpYWdfbW9kZSBtb2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE3NjQtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE3NjU6c3RhdGljIGludCBsYW44ODd4X2NhYmxlX3Rlc3Rfc3RhcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTc2Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTc2OC1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTc2OTpcXHRyYyA9IGxhbjg4N3hfY2FibGVfdGVzdF9wcmVwKHBoeWRldiwgVEVTVF9NT0RFX05PUk1BTCk7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE3NzAtXFx0aWYgKHJjIFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNzcxOlxcdFxcdHJldCA9IGxhbjg4N3hfY2RfcmVzZXQocGh5ZGV2LCBDRF9URVNUX0RPTkUpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNzcyLVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE3ODAtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE3ODE6c3RhdGljIGludCBsYW44ODd4X2NhYmxlX3Rlc3RfcmVwb3J0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE3ODIte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE4NjctXFx0LyogUmUtaW5pdGlhbGl6ZSBQSFkgYW5kIHN0YXJ0IGNhYmxlIGRpYWcgdGVzdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxODY4OlxcdHJjID0gbGFuODg3eF9jYWJsZV90ZXN0X3ByZXAocGh5ZGV2LCBURVNUX01PREVfSFlCUklEKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTg2OS1cXHRpZiAocmMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE4NzItXFx0LyogV2FpdCBmb3IgY2FibGUgZGlhZyB0ZXN0IGNvbXBsZXRpb24gKi9cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTg3MzpcXHRyYyA9IGxhbjg4N3hfY2FibGVfdGVzdF9jaGsocGh5ZGV2LCBURVNUX01PREVfSFlCUklEKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTg3NC1cXHRpZiAocmMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5MTctZ2V0X2xlbjpcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTkxODpcXHRyYyA9IGxhbjg4N3hfY2RfcmVzZXQocGh5ZGV2LCBDRF9URVNUX0RPTkUpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xOTE5LVxcdGlmIChyYyBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTkzOC1cXHQvKiBDYWJsZSBkaWFnIHRlc3QgZmFpbGVkICovXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE5Mzk6XFx0cmV0ID0gbGFuODg3eF9jZF9yZXNldChwaHlkZXYsIENEX1RFU1RfRE9ORSk7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5NDAtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTk0Ni1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTk0NzpzdGF0aWMgaW50IGxhbjg4N3hfY2FibGVfdGVzdF9nZXRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5NDgtXFx0XFx0XFx0XFx0XFx0IGJvb2wgKmZpbmlzaGVkKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5NTEtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE5NTI6XFx0cmMgPSBsYW44ODd4X2NhYmxlX3Rlc3RfY2hrKHBoeWRldiwgVEVTVF9NT0RFX05PUk1BTCk7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5NTMtXFx0aWYgKHJjIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5NjMtXFx0LyogUmV0cmlldmUgdGVzdCBzdGF0dXMgYW5kIGNhYmxlIGxlbmd0aCB0byBmYXVsdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxOTY0OlxcdHJldHVybiBsYW44ODd4X2NhYmxlX3Rlc3RfcmVwb3J0KHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5NjUtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTE5Njg9c3RhdGljIGludCBzcWlfY29tcGFyZShjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5NzItXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE5NzM6c3RhdGljIGludCBsYW44ODd4X2dldF9zcWlfMTAwTShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xOTc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMDcxLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMDcyOnN0YXRpYyBpbnQgbGFuODg3eF9nZXRfc3FpKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIwNzMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIwODAtXFx0aWYgKHBoeWRldi1cXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwKVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMDgxOlxcdFxcdHJldHVybiBsYW44ODd4X2dldF9zcWlfMTAwTShwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMDgyLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTIxMDY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MV9waHlfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE0NC1cXHRcXHQuZmxhZ3MgICAgICAgICAgPSBQSFlfUE9MTF9DQUJMRV9URVNULFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTQ1OlxcdFxcdC5wcm9iZVxcdFxcdD0gbGFuODg3eF9wcm9iZSxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE0NjpcXHRcXHQuZ2V0X2ZlYXR1cmVzXFx0PSBsYW44ODd4X2dldF9mZWF0dXJlcyxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE0NzpcXHRcXHQuY29uZmlnX2luaXQgICAgPSBsYW44ODd4X3BoeV9pbml0LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTQ4OlxcdFxcdC5jb25maWdfYW5lZyAgICA9IGxhbjg4N3hfY29uZmlnX2FuZWcsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNDk6XFx0XFx0LmdldF9zdGF0cyAgICAgID0gbGFuODg3eF9nZXRfc3RhdHMsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNTA6XFx0XFx0LmdldF9zc2V0X2NvdW50ID0gbGFuODg3eF9nZXRfc3NldF9jb3VudCxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE1MTpcXHRcXHQuZ2V0X3N0cmluZ3MgICAgPSBsYW44ODd4X2dldF9zdHJpbmdzLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTUyLVxcdFxcdC5zdXNwZW5kXFx0PSBnZW5waHlfc3VzcGVuZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTU0LVxcdFxcdC5yZWFkX3N0YXR1c1xcdD0gZ2VucGh5X2M0NV9yZWFkX3N0YXR1cyxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE1NTpcXHRcXHQuY2FibGVfdGVzdF9zdGFydCA9IGxhbjg4N3hfY2FibGVfdGVzdF9zdGFydCxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE1NjpcXHRcXHQuY2FibGVfdGVzdF9nZXRfc3RhdHVzID0gbGFuODg3eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNTc6XFx0XFx0LmNvbmZpZ19pbnRyICAgID0gbGFuODg3eF9jb25maWdfaW50cixcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE1ODpcXHRcXHQuaGFuZGxlX2ludGVycnVwdCA9IGxhbjg4N3hfaGFuZGxlX2ludGVycnVwdCxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE1OTpcXHRcXHQuZ2V0X3NxaVxcdD0gbGFuODg3eF9nZXRfc3FpLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTYwLVxcdFxcdC5nZXRfc3FpX21heFxcdD0gbGFuODd4eF9nZXRfc3FpX21heCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTY6MTM6MTMuMzc0ODM0ODc2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzgzMDY5NTAzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyBpdDpcblxuKipEaWdnaW5nIGludG8gdGhlIExBTjg4N3ggUEhZIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGBsYW44ODd4X3BoeV9pbml0YCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBwcm9iYWJseSB6ZXJvIGluIG9uIGBkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNgIGFyb3VuZCBsaW5lcyAxMjcwIHRvIDEzMTAuIFRoYXQgcmFuZ2UgaXMgcHJvYmFibHkgd2hlcmUgdGhlIGNvcmUgb2YgaXRzIGltcGxlbWVudGF0aW9uIGxpdmVzLCBhbmQgdGhlcmVmb3JlIHdoZXJlIEknbGwgZmluZCB0aGUgbG9naWMgdGhhdCBraWNrcyBvZmYgdGhlIGluaXRpYWxpemF0aW9uLiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyBpdCBjb25maWd1cmVzIHRoZSBQSFksIGxpa2VseSBkZWFsaW5nIHdpdGggcmVnaXN0ZXIgd3JpdGVzIHRvIHNldCB1cCBsaW5rIG1vZGVzLCBzcGVlZCwgbWF5YmUgYXV0b25lZ290aWF0aW9uIHBhcmFtZXRlcnMsIGFuZCBhbnkgc3BlY2lmaWMgTWljcm9jaGlwLXNwZWNpZmljIHNldHRpbmdzIGZvciB0aGUgVDEgdHJhbnNjZWl2ZXIuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgY2xvY2sgc2V0dGluZ3MsIHBvd2VyLXVwIHNlcXVlbmNlcywgYW5kIGFueSBwb3RlbnRpYWwgaGFyZHdhcmUtc3BlY2lmaWMgcXVpcmtzIG9yIHdvcmthcm91bmRzLiBIb3BlZnVsbHksIHRoZSBjb21tZW50cyBhcmUgY2xlYXIgZW5vdWdoIHRvIGZvbGxvdyB0aGUgY29udHJvbCBmbG93ISBUaGlzIGlzIHdoZXJlIEkgY2FuIGdldCBhIGdyYW51bGFyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIFBIWSdzIGluaXRpYWwgc3RhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTMzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTY6MTM6MTcuMjA1NTM0MjA5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwMTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjcwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjcwOlxcdFxcdCAqL1xcbjEyNzE6XFx0XFx0bGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX0F1dG9uZWdfQklULCBwaHlkZXYtXFx1MDAzZXN1cHBvcnRlZCk7XFxuMTI3MjpcXHRcXG4xMjczOlxcdFxcdHJldHVybiAwO1xcbjEyNzQ6XFx0fVxcbjEyNzU6XFx0XFxuMTI3NjpcXHRzdGF0aWMgaW50IGxhbjg4N3hfcGh5X2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4xMjc3OlxcdHtcXG4xMjc4OlxcdFxcdHN0cnVjdCBsYW44ODd4X3ByaXYgKnByaXYgPSBwaHlkZXYtXFx1MDAzZXByaXY7XFxuMTI3OTpcXHRcXHRpbnQgcmV0O1xcbjEyODA6XFx0XFxuMTI4MTpcXHRcXHRpZiAoIXByaXYtXFx1MDAzZWluaXRfZG9uZSBcXHUwMDI2XFx1MDAyNiBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeWRldikpIHtcXG4xMjgyOlxcdFxcdFxcdHByaXYtXFx1MDAzZWNsb2NrID0gbWNocF9yZHNfcHRwX3Byb2JlKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuMTI4MzpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgTUNIUF9SRFNfUFRQX0xUQ19CQVNFX0FERFIsXFxuMTI4NDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgTUNIUF9SRFNfUFRQX1BPUlRfQkFTRV9BRERSKTtcXG4xMjg1OlxcdFxcdFxcdGlmIChJU19FUlIocHJpdi1cXHUwMDNlY2xvY2spKVxcbjEyODY6XFx0XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocHJpdi1cXHUwMDNlY2xvY2spO1xcbjEyODc6XFx0XFxuMTI4ODpcXHRcXHRcXHRpZiAocHJpdi1cXHUwMDNlY2xvY2spIHtcXG4xMjg5OlxcdFxcdFxcdFxcdC8qIEVuYWJsZSBwaW4gbXV4IGZvciBFVlQgKi9cXG4xMjkwOlxcdFxcdFxcdFxcdHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuMTI5MTpcXHRcXHRcXHRcXHRcXHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDEsXFxuMTI5MjpcXHRcXHRcXHRcXHRcXHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOLFxcbjEyOTM6XFx0XFx0XFx0XFx0XFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTik7XFxuMTI5NDpcXHRcXG4xMjk1OlxcdFxcdFxcdFxcdC8qIEluaXRpYWxpemUgcGluIG51bWJlcnMgc3BlY2lmaWMgdG8gUEVST1VUICovXFxuMTI5NjpcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2VjbG9jay1cXHUwMDNlZXZlbnRfcGluID0gMztcXG4xMjk3OlxcdFxcdFxcdH1cXG4xMjk4OlxcdFxcbjEyOTk6XFx0XFx0XFx0cHJpdi1cXHUwMDNlaW5pdF9kb25lID0gdHJ1ZTtcXG4xMzAwOlxcdFxcdH1cXG4xMzAxOlxcdFxcbjEzMDI6XFx0XFx0LyogQ2xlYXIgbG9vcGJhY2sgKi9cXG4xMzAzOlxcdFxcdHJldCA9IHBoeV9jbGVhcl9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxcbjEzMDQ6XFx0XFx0XFx0XFx0XFx0IExBTjg4N1hfTUlTX0NGR19SRUcyLFxcbjEzMDU6XFx0XFx0XFx0XFx0XFx0IExBTjg4N1hfTUlTX0NGR19SRUcyX0ZFX0xQQktfRU4pO1xcbjEzMDY6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTMwNzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjEzMDg6XFx0XFxuMTMwOTpcXHRcXHQvKiBDb25maWd1cmUgZGVmYXVsdCBiZWhhdmlvciBvZiBsZWQgdG8gbGluayBhbmQgYWN0aXZpdHkgZm9yIGFueVxcbjEzMTA6XFx0XFx0ICogc3BlZWRcXG4xMzExOlxcdFxcdCAqL1xcbjEzMTI6XFx0XFx0cmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG4xMzEzOlxcdFxcdFxcdFxcdCAgICAgTEFOODg3WF9DT01NT05fTEVEM19MRUQyLFxcbjEzMTQ6XFx0XFx0XFx0XFx0ICAgICBMQU44ODdYX0NPTU1PTl9MRUQyX01PREVfU0VMX01BU0ssXFxuMTMxNTpcXHRcXHRcXHRcXHQgICAgIExBTjg4N1hfTEVEX0xJTktfQUNUX0FOWV9TUEVFRCk7XFxuMTMxNjpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4xMzE3OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTMxODpcXHRcXG4xMzE5OlxcdFxcdC8qIFBIWSBpbnRlcmZhY2Ugc2V0dXAgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTY6MTM6MTcuMjA1Njc2NzQ5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjIxNjc0NzY3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYG1jaHBfcmRzX3B0cF9wcm9iZWAgRnVuY3Rpb24qKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGJlaGF2aW9yIG9mIHRoaXMgYG1jaHBfcmRzX3B0cF9wcm9iZWAgZnVuY3Rpb24gdW5kZXIgdmFyaW91cyBjb25kaXRpb25zLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93IHdoYXQgaGFwcGVucyBpZiBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBpcyBlaXRoZXIgZGlzYWJsZWQsIGNvbXBsZXRlbHkgdW5jb25maWd1cmVkLCBvciBpZiwgcG90ZW50aWFsbHksIHRoZSBgcHJpdi1cdTAwM2VjbG9ja2AgcG9pbnRlciB3aXRoaW4gdGhlIHJlbGV2YW50IHN0cnVjdHVyZSBlbmRzIHVwIGJlaW5nIE5VTEwuIFRoZXNlIGFyZSBhbGwgY3JpdGljYWwgZWRnZSBjYXNlcyB0aGF0IG5lZWQgdG8gYmUgaGFuZGxlZCBncmFjZWZ1bGx5LiBJJ3ZlIGdvdCB0byBlbnN1cmUgdGhlIGNvZGUncyByb2J1c3QgaW4gdGhvc2Ugc2NlbmFyaW9zLiBJJ20gZ29pbmcgdG8ganVtcCBpbiBhbmQgc2VhcmNoIGZvciBpbnN0YW5jZXMgb2YgYG1jaHBfcmRzX3B0cF9wcm9iZWAgaW4gdGhlIGNvZGViYXNlLiBUaGF0J3MgdGhlIGJlc3Qgd2F5IHRvIGdldCBhIHF1aWNrIG92ZXJ2aWV3IG9mIGl0cyB1c2FnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwODIsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE2OjEzOjE5LjQyMjQyODkwM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDU3NDQyOTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1jaHBfcmRzX3B0cF9wcm9iZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuYz0xMTM5PXN0YXRpYyBpbnQgbWNocF9yZHNfcHRwX2luaXQoc3RydWN0IG1jaHBfcmRzX3B0cF9jbG9jayAqY2xvY2spXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuYy0xMjQxLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfcmRzX3B0cC5jOjEyNDI6c3RydWN0IG1jaHBfcmRzX3B0cF9jbG9jayAqbWNocF9yZHNfcHRwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IG1tZCxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuYy0xMjQzLVxcdFxcdFxcdFxcdFxcdCAgICAgIHUxNiBjbGtfYmFzZV9hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF9yZHNfcHRwLmMtMTMyNS19XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF9yZHNfcHRwLmM6MTMyNjpFWFBPUlRfU1lNQk9MX0dQTChtY2hwX3Jkc19wdHBfcHJvYmUpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfcmRzX3B0cC5jLTEzMjctXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuaD0yMDU9c3RydWN0IG1jaHBfcmRzX3B0cF9yeF90cyB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuaC0yMTMtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF9yZHNfcHRwLmg6MjE0OnN0cnVjdCBtY2hwX3Jkc19wdHBfY2xvY2sgKm1jaHBfcmRzX3B0cF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBtbWQsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF9yZHNfcHRwLmgtMjE1LVxcdFxcdFxcdFxcdFxcdCAgICAgIHUxNiBjbGtfYmFzZSwgdTE2IHBvcnRfYmFzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuaD0yMjA9aXJxcmV0dXJuX3QgbWNocF9yZHNfcHRwX2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IG1jaHBfcmRzX3B0cF9jbG9jayAqY2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF9yZHNfcHRwLmgtMjIzLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfcmRzX3B0cC5oOjIyNDpzdGF0aWMgaW5saW5lIHN0cnVjdCBtY2hwX3Jkc19wdHBfY2xvY2sgKm1jaHBfcmRzX3B0cF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfcmRzX3B0cC5oLTIyNS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgKnBoeWRldiwgdTggbW1kLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTEyNzY9c3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTI4MS1cXHRpZiAoIXByaXYtXFx1MDAzZWluaXRfZG9uZSBcXHUwMDI2XFx1MDAyNiBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeWRldikpIHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTI4MjpcXHRcXHRwcml2LVxcdTAwM2VjbG9jayA9IG1jaHBfcmRzX3B0cF9wcm9iZShwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjgzLVxcdFxcdFxcdFxcdFxcdFxcdCBNQ0hQX1JEU19QVFBfTFRDX0JBU0VfQUREUixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTY6MTM6MjEuODc5ODc4OTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4MDQ2NzU4MDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWljcm9jaGlwIExBTjg4N3ggUEhZIERyaXZlcioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBJJ20gbG9va2luZyBhdCBgZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jYCwgd2hpY2gsIGFzIEkgdW5kZXJzdGFuZCBpdCwgaXMgdGhlIGRyaXZlciBpbXBsZW1lbnRhdGlvbiBmb3IgTWljcm9jaGlwJ3MgTEFOODg3eCBzZXJpZXMgb2YgYXV0b21vdGl2ZSBFdGhlcm5ldCBQSFlzLiBTcGVjaWZpY2FsbHksIGNoaXBzIGxpa2UgdGhlIExBTjg4NzAgYW5kIExBTjg4NzEsIHN1cHBvcnRpbmcgYm90aCAxMDBCQVNFLVQxIGFuZCAxMDAwQkFTRS1UMSBzdGFuZGFyZHMuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNvbmZpcm0gdGhlIFBIWSBJRCBhbmQgdGhlIGRyaXZlcidzIGRlZmluaXRpb24gaXRzZWxmIHdpdGhpbiB0aGF0IGZpbGUuIFRoYXQncyB0aGUgYmFzZWxpbmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGlkZW50aWZpZXMgYW5kIGxvYWRzIHRoZSByaWdodCBkcml2ZXIgZm9yIHRoZXNlIHNwZWNpZmljIGNvbXBvbmVudHMuIFRoaXMgaW5pdGlhbCBjaGVjayB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBkcml2ZXIncyB0YXJnZXQgYW5kIGV4cGVjdGVkIGJlaGF2aW9yIGZyb20gdGhlIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzA4NCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNjoxMzoyOS45MjY2NDAwNjhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0ODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTAwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMTAwOlxcdFxcdGlmIChyYyBcXHUwMDNjIDApXFxuMjEwMTpcXHRcXHRcXHRyZXR1cm4gcmM7XFxuMjEwMjpcXHRcXG4yMTAzOlxcdFxcdHJldHVybiBGSUVMRF9HRVQoVDFfRENRX1NRSV9NU0ssIHJjKTtcXG4yMTA0OlxcdH1cXG4yMTA1OlxcdFxcbjIxMDY6XFx0c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MV9waHlfZHJpdmVyW10gPSB7XFxuMjEwNzpcXHRcXHR7XFxuMjEwODpcXHRcXHRcXHRQSFlfSURfTUFUQ0hfTU9ERUwoUEhZX0lEX0xBTjg3WFgpLFxcbjIxMDk6XFx0XFx0XFx0Lm5hbWUgICAgICAgICAgID0gXFxcIk1pY3JvY2hpcCBMQU44N3h4IFQxXFxcIixcXG4yMTEwOlxcdFxcdFxcdC5mbGFncyAgICAgICAgICA9IFBIWV9QT0xMX0NBQkxFX1RFU1QsXFxuMjExMTpcXHRcXHRcXHQuZmVhdHVyZXMgICAgICAgPSBQSFlfQkFTSUNfVDFfRkVBVFVSRVMsXFxuMjExMjpcXHRcXHRcXHQuY29uZmlnX2luaXRcXHQ9IGxhbjg3eHhfY29uZmlnX2luaXQsXFxuMjExMzpcXHRcXHRcXHQuY29uZmlnX2ludHIgICAgPSBsYW44N3h4X3BoeV9jb25maWdfaW50cixcXG4yMTE0OlxcdFxcdFxcdC5oYW5kbGVfaW50ZXJydXB0ID0gbGFuODd4eF9oYW5kbGVfaW50ZXJydXB0LFxcbjIxMTU6XFx0XFx0XFx0LnN1c3BlbmQgICAgICAgID0gZ2VucGh5X3N1c3BlbmQsXFxuMjExNjpcXHRcXHRcXHQucmVzdW1lICAgICAgICAgPSBnZW5waHlfcmVzdW1lLFxcbjIxMTc6XFx0XFx0XFx0LmNvbmZpZ19hbmVnICAgID0gbGFuODd4eF9jb25maWdfYW5lZyxcXG4yMTE4OlxcdFxcdFxcdC5yZWFkX3N0YXR1c1xcdD0gbGFuODd4eF9yZWFkX3N0YXR1cyxcXG4yMTE5OlxcdFxcdFxcdC5nZXRfc3FpXFx0PSBsYW44N3h4X2dldF9zcWksXFxuMjEyMDpcXHRcXHRcXHQuZ2V0X3NxaV9tYXhcXHQ9IGxhbjg3eHhfZ2V0X3NxaV9tYXgsXFxuMjEyMTpcXHRcXHRcXHQuY2FibGVfdGVzdF9zdGFydCA9IGxhbjg3eHhfY2FibGVfdGVzdF9zdGFydCxcXG4yMTIyOlxcdFxcdFxcdC5jYWJsZV90ZXN0X2dldF9zdGF0dXMgPSBsYW44N3h4X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyxcXG4yMTIzOlxcdFxcdH0sXFxuMjEyNDpcXHRcXHR7XFxuMjEyNTpcXHRcXHRcXHRQSFlfSURfTUFUQ0hfTU9ERUwoUEhZX0lEX0xBTjkzN1gpLFxcbjIxMjY6XFx0XFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJNaWNyb2NoaXAgTEFOOTM3eCBUMVxcXCIsXFxuMjEyNzpcXHRcXHRcXHQuZmxhZ3MgICAgICAgICAgPSBQSFlfUE9MTF9DQUJMRV9URVNULFxcbjIxMjg6XFx0XFx0XFx0LmZlYXR1cmVzXFx0PSBQSFlfQkFTSUNfVDFfRkVBVFVSRVMsXFxuMjEyOTpcXHRcXHRcXHQuY29uZmlnX2luaXRcXHQ9IGxhbjg3eHhfY29uZmlnX2luaXQsXFxuMjEzMDpcXHRcXHRcXHQuY29uZmlnX2ludHIgICAgPSBsYW44N3h4X3BoeV9jb25maWdfaW50cixcXG4yMTMxOlxcdFxcdFxcdC5oYW5kbGVfaW50ZXJydXB0ID0gbGFuODd4eF9oYW5kbGVfaW50ZXJydXB0LFxcbjIxMzI6XFx0XFx0XFx0LnN1c3BlbmRcXHQ9IGdlbnBoeV9zdXNwZW5kLFxcbjIxMzM6XFx0XFx0XFx0LnJlc3VtZVxcdFxcdD0gZ2VucGh5X3Jlc3VtZSxcXG4yMTM0OlxcdFxcdFxcdC5jb25maWdfYW5lZyAgICA9IGxhbjg3eHhfY29uZmlnX2FuZWcsXFxuMjEzNTpcXHRcXHRcXHQucmVhZF9zdGF0dXNcXHQ9IGxhbjg3eHhfcmVhZF9zdGF0dXMsXFxuMjEzNjpcXHRcXHRcXHQuZ2V0X3NxaVxcdD0gbGFuODd4eF9nZXRfc3FpLFxcbjIxMzc6XFx0XFx0XFx0LmdldF9zcWlfbWF4XFx0PSBsYW44N3h4X2dldF9zcWlfbWF4LFxcbjIxMzg6XFx0XFx0XFx0LmNhYmxlX3Rlc3Rfc3RhcnQgPSBsYW44N3h4X2NhYmxlX3Rlc3Rfc3RhcnQsXFxuMjEzOTpcXHRcXHRcXHQuY2FibGVfdGVzdF9nZXRfc3RhdHVzID0gbGFuODd4eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMsXFxuMjE0MDpcXHRcXHR9LFxcbjIxNDE6XFx0XFx0e1xcbjIxNDI6XFx0XFx0XFx0UEhZX0lEX01BVENIX01PREVMKFBIWV9JRF9MQU44ODdYKSxcXG4yMTQzOlxcdFxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiTWljcm9jaGlwIExBTjg4N3ggVDEgUEhZXFxcIixcXG4yMTQ0OlxcdFxcdFxcdC5mbGFncyAgICAgICAgICA9IFBIWV9QT0xMX0NBQkxFX1RFU1QsXFxuMjE0NTpcXHRcXHRcXHQucHJvYmVcXHRcXHQ9IGxhbjg4N3hfcHJvYmUsXFxuMjE0NjpcXHRcXHRcXHQuZ2V0X2ZlYXR1cmVzXFx0PSBsYW44ODd4X2dldF9mZWF0dXJlcyxcXG4yMTQ3OlxcdFxcdFxcdC5jb25maWdfaW5pdCAgICA9IGxhbjg4N3hfcGh5X2luaXQsXFxuMjE0ODpcXHRcXHRcXHQuY29uZmlnX2FuZWcgICAgPSBsYW44ODd4X2NvbmZpZ19hbmVnLFxcbjIxNDk6XFx0XFx0XFx0LmdldF9zdGF0cyAgICAgID0gbGFuODg3eF9nZXRfc3RhdHMsXFxuMjE1MDpcXHRcXHRcXHQuZ2V0X3NzZXRfY291bnQgPSBsYW44ODd4X2dldF9zc2V0X2NvdW50LFxcbjIxNTE6XFx0XFx0XFx0LmdldF9zdHJpbmdzICAgID0gbGFuODg3eF9nZXRfc3RyaW5ncyxcXG4yMTUyOlxcdFxcdFxcdC5zdXNwZW5kXFx0PSBnZW5waHlfc3VzcGVuZCxcXG4yMTUzOlxcdFxcdFxcdC5yZXN1bWVcXHRcXHQ9IGdlbnBoeV9yZXN1bWUsXFxuMjE1NDpcXHRcXHRcXHQucmVhZF9zdGF0dXNcXHQ9IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMsXFxuMjE1NTpcXHRcXHRcXHQuY2FibGVfdGVzdF9zdGFydCA9IGxhbjg4N3hfY2FibGVfdGVzdF9zdGFydCxcXG4yMTU2OlxcdFxcdFxcdC5jYWJsZV90ZXN0X2dldF9zdGF0dXMgPSBsYW44ODd4X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyxcXG4yMTU3OlxcdFxcdFxcdC5jb25maWdfaW50ciAgICA9IGxhbjg4N3hfY29uZmlnX2ludHIsXFxuMjE1ODpcXHRcXHRcXHQuaGFuZGxlX2ludGVycnVwdCA9IGxhbjg4N3hfaGFuZGxlX2ludGVycnVwdCxcXG4yMTU5OlxcdFxcdFxcdC5nZXRfc3FpXFx0PSBsYW44ODd4X2dldF9zcWksXFxuMjE2MDpcXHRcXHRcXHQuZ2V0X3NxaV9tYXhcXHQ9IGxhbjg3eHhfZ2V0X3NxaV9tYXgsXFxuMjE2MTpcXHRcXHRcXHQuc2V0X2xvb3BiYWNrXFx0PSBnZW5waHlfYzQ1X2xvb3BiYWNrLFxcbjIxNjI6XFx0XFx0fVxcbjIxNjM6XFx0fTtcXG4yMTY0OlxcdFxcbjIxNjU6XFx0bW9kdWxlX3BoeV9kcml2ZXIobWljcm9jaGlwX3QxX3BoeV9kcml2ZXIpO1xcbjIxNjY6XFx0XFxuMjE2NzpcXHRzdGF0aWMgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIG1pY3JvY2hpcF90MV90YmxbXSA9IHtcXG4yMTY4OlxcdFxcdHsgUEhZX0lEX01BVENIX01PREVMKFBIWV9JRF9MQU44N1hYKSB9LFxcbjIxNjk6XFx0XFx0eyBQSFlfSURfTUFUQ0hfTU9ERUwoUEhZX0lEX0xBTjkzN1gpIH0sXFxuMjE3MDpcXHRcXHR7IFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOODg3WCkgfSxcXG4yMTcxOlxcdFxcdHsgfVxcbjIxNzI6XFx0fTtcXG4yMTczOlxcdFxcbjIxNzQ6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBtaWNyb2NoaXBfdDFfdGJsKTtcXG4yMTc1OlxcdFxcbjIxNzY6XFx0TU9EVUxFX0FVVEhPUihEUklWRVJfQVVUSE9SKTtcXG4yMTc3OlxcdE1PRFVMRV9ERVNDUklQVElPTihEUklWRVJfREVTQyk7XFxuMjE3ODpcXHRNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE2OjEzOjI5LjkyNjgwOTM0N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NDE4Nzk5NzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgTURJTyBQSFkgRHJpdmVyIEZ1enppbmcgTGFuZHNjYXBlKipcblxuT2theSwgc28gdGhlIHF1ZXN0aW9uIGlzOiBjYW4gSSBlZmZlY3RpdmVseSBmdXp6IGFuIE1ESU8gUEhZIGRyaXZlciB1c2luZyBzdGFuZGFyZCBmdXp6aW5nIHNldHVwcz8gU3BlY2lmaWNhbGx5LCBjYW4gSSByZWFjaCBpdCBpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgd2hpY2ggaXMgY3J1Y2lhbCBmb3IgcmVwcm9kdWNpYmlsaXR5IGFuZCBzY2FsYWJpbGl0eT8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlc2UgZHJpdmVycyBhcmUgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuXG5cbkZpcnN0LCBsZXQgbWUgY2hlY2sgdGhlIHBvdGVudGlhbCBlbnRyeSBwb2ludHMuIENhbiBJIGluc3RhbnRpYXRlIE1ESU8gUEhZIGRldmljZXMsIG9yIHRoZSBgbWljcm9jaGlwX3QxYCBzcGVjaWZpY2FsbHksIHRocm91Z2ggbWV0aG9kcyBsaWtlIG5ldGxpbmssIGNyZWF0aW5nIHZpcnR1YWwgZGV2aWNlcywgb3Igc3lzZnMgaW50ZXJmYWNlcz8gT3IgYW0gSSBnb2luZyB0byBiZSBzdHVjayBuZWVkaW5nIGEgcmVhbCBNRElPIGJ1cyBjb25uZWN0aW9uIHRvIE1pY3JvY2hpcCBMQU44ODd4IGhhcmR3YXJlLCB3aGljaCB3b3VsZCBiZSBhIGh1Z2UgY29uc3RyYWludD9cblxuQWgsIHNlY3Rpb24gdHdvIG9mIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIuICBUaGlzIGluY2x1ZGVzIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIGFuZCBHUFUgZHJpdmVycy4gIFRoaW5ncyB0aGF0IG5lZWQgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLiBUaGlzIG1ha2VzIG1lIGNvbnNpZGVyIGlmIE1ESU8gUEhZIGRyaXZlcnMgZmFsbCBpbnRvIHRoZSBzYW1lIGNhdGVnb3J5LCByZXF1aXJpbmcgcGh5c2ljYWwgYWNjZXNzIHRvIHRoZSBNRElPIGJ1cy4gQ2FuIEkgZXZlbiAqcHJvYmUqIHRoZXNlIGRyaXZlcnMgaW4gUUVNVT9cblxuV2FpdCBhIG1pbnV0ZSwgSSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBMaW51eCBrZXJuZWwgTURJTy9QSFkgc3Vic3lzdGVtIGFyY2hpdGVjdHVyZS4gSG93IGFyZSBQSFkgZHJpdmVycyBhY3R1YWxseSBwcm9iZWQgYW5kIGF0dGFjaGVkPyBSaWdodCwgdGhleSBtYXRjaCBiYXNlZCBvbiB0aGUgTURJTyBQSFkgSUQsIHdoaWNoIGlzIHJlYWQgZnJvbSB0aGUgTURJTyBidXMncyBNSUkgcmVnaXN0ZXJzLiBUaGF0IElEIG9yaWdpbmF0ZXMgZnJvbSB0aGUgcGh5c2ljYWwgUEhZIGhhcmR3YXJlLCBvciBmcm9tIHNvbWV0aGluZyBsaWtlIGEgZml4ZWQtbGluaywgb3IgYG1kaW8tZ3Bpb2AsIGV0Yy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlc2UgaW50ZXJhY3Rpb25zIGNhbiBiZSBlbXVsYXRlZCBvciByZXByb2R1Y2VkIHRocm91Z2ggdG9vbHMgbGlrZSBzeXprYWxsZXIsIHZpcnR1YWwgaW50ZXJmYWNlcywgb3IgbW9ja3MuXG5cbkxldCdzIHNlZS4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIGNvZGUgZGlyZWN0bHkgZm9yIGluc3RhbmNlcyBvZiBgbWRpb2AgYW5kIGBwaHlgIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGRyaXZlcnMgYXJlIHVzZWQgaW4gcHJhY3RpY2UuIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSBpZiBJIG5lZWQgdG8gYnVpbGQgYSBzcGVjaWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LCBvciBpZiB0aGVyZSBpcyBzb21ldGhpbmcgSSBjYW4gdXNlIGluIHN5emthbGxlciB0byByZWFjaCB0aGlzIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ5NjAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNjoxMzozNC4zNDU2MTM2MTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MjEyNDE3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvX2JpdGJhbmd8bWRpby1ncGlvfG1kaW9fYnVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjI5MSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MzIxPXN0YXRpYyBpbnQga3N6OTQ3N19wY3NfY3JlYXRlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMzItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MzMzOlxcdGJ1cy1cXHUwMDNlbmFtZSA9IFxcXCJrc3pfcGNzX21kaW9fYnVzXFxcIjtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMzQtXFx0c25wcmludGYoYnVzLVxcdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcXFwiJXMtcGNzXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTIxMjU9aW50IGtzel9wYXJlbnRfbWRpb19yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjEyOC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMTI5OlxcdHJldHVybiBtZGlvYnVzX3JlYWRfbmVzdGVkKGRldi1cXHUwMDNlcGFyZW50X21kaW9fYnVzLCBhZGRyLCByZWdudW0pO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIxMzAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MjE0NT1pbnQga3N6X3BhcmVudF9tZGlvX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjE0OC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMTQ5OlxcdHJldHVybiBtZGlvYnVzX3dyaXRlX25lc3RlZChkZXYtXFx1MDAzZXBhcmVudF9tZGlvX2J1cywgYWRkciwgcmVnbnVtLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIxNTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MjMyMT1pbnQga3N6X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIzNDctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjM0ODpcXHRcXHRkZXYtXFx1MDAzZXBhcmVudF9tZGlvX2J1cyA9IHBhcmVudF9idXM7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM0OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaD0yMDY9c3RydWN0IGtzel9kZXZpY2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMjU4LVxcdC8qKlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjI1OTpcXHQgKiBAcGFyZW50X21kaW9fYnVzOiBQb2ludGVyIHRvIHRoZSBleHRlcm5hbCBNRElPIGJ1cyBjb250cm9sbGVyLlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTI2MC1cXHQgKlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMjY1LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjI2NjpcXHRzdHJ1Y3QgbWlpX2J1cyAqcGFyZW50X21kaW9fYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTI2Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM9MTQzPXN0YXRpYyBpbnQgbGFuOTM3eF9jcmVhdGVfcGh5X2FkZHJfbWFwKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGJvb2wgc2lkZV9tZGlvKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy0yMTAtLyoqXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzoyMTE6ICogbGFuOTM3eF9tZGlvX2J1c19wcmVpbml0IC0gUHJlLWluaXRpYWxpemUgTURJTyBidXMgZm9yIGFjY2Vzc2luZyBQSFlzLlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtMjEyLSAqIEBkZXY6IFBvaW50ZXIgdG8gZGV2aWNlIHN0cnVjdHVyZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtMjI2LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6MjI3OnN0YXRpYyBpbnQgbGFuOTM3eF9tZGlvX2J1c19wcmVpbml0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGJvb2wgc2lkZV9tZGlvKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtMjI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM9Njg1PXN0YXRpYyBpbnQgbGFuOTM3eF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTcxMS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjcxMjpcXHRcXHRkZXYtXFx1MDAzZXBhcmVudF9tZGlvX2J1cyA9IHBhcmVudF9idXM7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03MTMtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03MjAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3MjE6XFx0cmV0ID0gbGFuOTM3eF9tZGlvX2J1c19wcmVpbml0KGRldiwgISFwYXJlbnRfYnVzKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTcyMi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MTI2PWludCBtdjg4ZTZ4eHhfd2FpdF9iaXQoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzMi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzM6c3RydWN0IG1paV9idXMgKm12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzQte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzNTpcXHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cztcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM3OlxcdG1kaW9fYnVzID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFxcdTAwMjZjaGlwLVxcdTAwM2VtZGlvcyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzg6XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMsIGxpc3QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzOTpcXHRpZiAoIW1kaW9fYnVzKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0MC1cXHRcXHRyZXR1cm4gTlVMTDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTQyOlxcdHJldHVybiBtZGlvX2J1cy1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0My19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz0zNzU3PXN0YXRpYyBpbnQgbXY4OGU2eHh4X21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3NTgte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3NTk6XFx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXMgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc2MDpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBtZGlvX2J1cy1cXHUwMDNlY2hpcDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzYxLVxcdHUxNiBwcm9kX2lkO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9Mzc4Mz1zdGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksIGludCBkZXZhZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3ODUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3ODY6XFx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXMgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc4NzpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBtZGlvX2J1cy1cXHUwMDNlY2hpcDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzg4LVxcdHUxNiB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz0zODAxPXN0YXRpYyBpbnQgbXY4OGU2eHh4X21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeSwgaW50IHJlZywgdTE2IHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODAyLXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODAzOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMgKm1kaW9fYnVzID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MDQ6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gbWRpb19idXMtXFx1MDAzZWNoaXA7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgwNS1cXHRpbnQgZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MzgxNz1zdGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgZGV2YWQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODE5LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODIwOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMgKm1kaW9fYnVzID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MjE6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gbWRpb19idXMtXFx1MDAzZWNoaXA7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgyMi1cXHRpbnQgZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MzgzND1zdGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4MzgtXFx0c3RhdGljIGludCBpbmRleDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODM5OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMgKm1kaW9fYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4NDAtXFx0c3RydWN0IG1paV9idXMgKmJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4NTQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg1NTpcXHRidXMgPSBtZGlvYnVzX2FsbG9jX3NpemUoc2l6ZW9mKCptZGlvX2J1cykpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4NTYtXFx0aWYgKCFidXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODU4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4NTk6XFx0bWRpb19idXMgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg2MDpcXHRtZGlvX2J1cy1cXHUwMDNlYnVzID0gYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4NjE6XFx0bWRpb19idXMtXFx1MDAzZWNoaXAgPSBjaGlwO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4NjI6XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNm1kaW9fYnVzLVxcdTAwM2VsaXN0KTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODYzOlxcdG1kaW9fYnVzLVxcdTAwM2VleHRlcm5hbCA9IGV4dGVybmFsO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4NjQtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODk1LVxcdGlmIChleHRlcm5hbClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODk2OlxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNm1kaW9fYnVzLVxcdTAwM2VsaXN0LCBcXHUwMDI2Y2hpcC1cXHUwMDNlbWRpb3MpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4OTctXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4OTg6XFx0XFx0bGlzdF9hZGQoXFx1MDAyNm1kaW9fYnVzLVxcdTAwM2VsaXN0LCBcXHUwMDI2Y2hpcC1cXHUwMDNlbWRpb3MpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4OTktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz0zOTA3PXN0YXRpYyB2b2lkIG12ODhlNnh4eF9tZGlvc191bnJlZ2lzdGVyKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5MDkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM5MTA6XFx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXMsICpwO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5MTEtXFx0c3RydWN0IG1paV9idXMgKmJ1cztcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTEyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM5MTM6XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1kaW9fYnVzLCBwLCBcXHUwMDI2Y2hpcC1cXHUwMDNlbWRpb3MsIGxpc3QpIHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTE0OlxcdFxcdGJ1cyA9IG1kaW9fYnVzLVxcdTAwM2VidXM7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzkxNS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTE2OlxcdFxcdGlmICghbWRpb19idXMtXFx1MDAzZWV4dGVybmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5MTctXFx0XFx0XFx0bXY4OGU2eHh4X2cyX2lycV9tZGlvX2ZyZWUoY2hpcCwgYnVzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM5ODA9c3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk5MS1cXHRjaGlwLVxcdTAwM2VkcyA9IGRzO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM5OTI6XFx0ZHMtXFx1MDAzZXVzZXJfbWlpX2J1cyA9IG12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5OTMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaD00ODg9c3RydWN0IG12ODhlNnh4eF9idXNfb3BzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oLTQ5My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaDo0OTQ6c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmgtNDk1LVxcdHN0cnVjdCBtaWlfYnVzICpidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaD04NzM9aW50IG12ODhlNnh4eF93YWl0X2JpdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oLTg3NC1cXHRcXHQgICAgICAgaW50IGJpdCwgaW50IHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmg6ODc1OnN0cnVjdCBtaWlfYnVzICptdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oLTg3Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jPTc4Nz1pbnQgbXY4OGU2eHh4X2cyX3NtaV9waHlfcmVhZF9jMjIoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmMtNzkwLXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYzo3OTE6XFx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXMgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmM6NzkyOlxcdGJvb2wgZXh0ZXJuYWwgPSBtZGlvX2J1cy1cXHUwMDNlZXh0ZXJuYWw7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmMtNzkzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmM9Nzk4PWludCBtdjg4ZTZ4eHhfZzJfc21pX3BoeV9yZWFkX2M0NShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYy04MDEte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jOjgwMjpcXHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cyA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYzo4MDM6XFx0Ym9vbCBleHRlcm5hbCA9IG1kaW9fYnVzLVxcdTAwM2VleHRlcm5hbDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYy04MDQtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYz04MDk9aW50IG12ODhlNnh4eF9nMl9zbWlfcGh5X3dyaXRlX2MyMihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYy04MTIte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jOjgxMzpcXHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cyA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYzo4MTQ6XFx0Ym9vbCBleHRlcm5hbCA9IG1kaW9fYnVzLVxcdTAwM2VleHRlcm5hbDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYy04MTUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYz04MjA9aW50IG12ODhlNnh4eF9nMl9zbWlfcGh5X3dyaXRlX2M0NShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYy04MjMte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jOjgyNDpcXHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cyA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYzo4MjU6XFx0Ym9vbCBleHRlcm5hbCA9IG1kaW9fYnVzLVxcdTAwM2VleHRlcm5hbDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYy04MjYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02MzUyLmM9MzI0PXN0YXRpYyBpbnQgbXY4OGU2MzUyX3Bjc19pbml0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02MzUyLmMtMzM2LVxcdGlycSA9IG12ODhlNnh4eF9zZXJkZXNfaXJxX21hcHBpbmcoY2hpcCwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wY3MtNjM1Mi5jOjMzNzpcXHRidXMgPSBtdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02MzUyLmMtMzM4LVxcdGRldiA9IGNoaXAtXFx1MDAzZWRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzOXguYz01NDk9c3RhdGljIGludCBtdjg4ZTYzOTBfcGNzX2luaXQoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzOXguYy01NTktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wY3MtNjM5eC5jOjU2MDpcXHRidXMgPSBtdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02Mzl4LmMtNTYxLVxcdGRldiA9IGNoaXAtXFx1MDAzZWRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzOXguYz05Mjc9c3RhdGljIGludCBtdjg4ZTYzOTN4X3Bjc19pbml0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02Mzl4LmMtOTM3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzOXguYzo5Mzg6XFx0YnVzID0gbXY4OGU2eHh4X2RlZmF1bHRfbWRpb19idXMoY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wY3MtNjM5eC5jLTkzOS1cXHRkZXYgPSBjaGlwLVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BoeS5jPTI4PWludCBtdjg4ZTZ4eHhfcGh5X3JlYWQoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcGh5LCBpbnQgcmVnLCB1MTYgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmMtMzItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYzozMzpcXHRidXMgPSBtdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BoeS5jLTM0LVxcdGlmICghYnVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYz00Mz1pbnQgbXY4OGU2eHh4X3BoeV93cml0ZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwaHksIGludCByZWcsIHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BoeS5jLTQ3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmM6NDg6XFx0YnVzID0gbXY4OGU2eHh4X2RlZmF1bHRfbWRpb19idXMoY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYy00OS1cXHRpZiAoIWJ1cylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmM9NTg9aW50IG12ODhlNnh4eF9waHlfcmVhZF9jNDUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcGh5LCBpbnQgZGV2YWQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BoeS5jLTYzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmM6NjQ6XFx0YnVzID0gbXY4OGU2eHh4X2RlZmF1bHRfbWRpb19idXMoY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYy02NS1cXHRpZiAoIWJ1cylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmM9NzQ9aW50IG12ODhlNnh4eF9waHlfd3JpdGVfYzQ1KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBoeSwgaW50IGRldmFkLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYy03OS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BoeS5jOjgwOlxcdGJ1cyA9IG12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmMtODEtXFx0aWYgKCFidXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYz0xMzM9c3RhdGljIGludCBuZXRjX3BvcnRfZ2V0X2luZm9fZnJvbV9kdChzdHJ1Y3QgbmV0Y19wb3J0ICpucCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE0OC1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoxNDk6c3RhdGljIGludCBuZXRjX3BvcnRfY3JlYXRlX2VtZGlvX2J1cyhzdHJ1Y3QgbmV0Y19wb3J0ICpucCxcXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0xNTAtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpub2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTg5LVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jOjE5MDpzdGF0aWMgaW50IG5ldGNfcG9ydF9jcmVhdGVfbWRpb19idXMoc3RydWN0IG5ldGNfcG9ydCAqbnAsXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTkxLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGRldmljZV9ub2RlICpub2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTk3LVxcdGlmIChtZGlvX25vZGUpIHtcXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoxOTg6XFx0XFx0ZXJyID0gbmV0Y19wb3J0X2NyZWF0ZV9lbWRpb19idXMobnAsIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTk5LVxcdFxcdG9mX25vZGVfcHV0KG1kaW9fbm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYz0yNDE9c3RhdGljIGludCBuZXRjX2luaXRfYWxsX3BvcnRzKHN0cnVjdCBuZXRjX3N3aXRjaCAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTI4My1cXHRcXHRpZiAoZHNhX3BvcnRfaXNfdXNlcihkcCkpIHtcXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoyODQ6XFx0XFx0XFx0ZXJyID0gbmV0Y19wb3J0X2NyZWF0ZV9tZGlvX2J1cyhucCwgZHAtXFx1MDAzZWRuKTtcXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0yODUtXFx0XFx0XFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jPTE1MTc9c3RhdGljIGludCBmZWxpeF9pbml0X3N0cnVjdHMoc3RydWN0IGZlbGl4ICpmZWxpeCwgaW50IG51bV9waHlzX3BvcnRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTE2MDItXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jOjE2MDM6XFx0aWYgKGZlbGl4LVxcdTAwM2VpbmZvLVxcdTAwM2VtZGlvX2J1c19hbGxvYykge1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoxNjA0OlxcdFxcdGVyciA9IGZlbGl4LVxcdTAwM2VpbmZvLVxcdTAwM2VtZGlvX2J1c19hbGxvYyhvY2Vsb3QpO1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0xNjA1LVxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jPTE2OTY9c3RhdGljIGludCBmZWxpeF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMTc2OC1vdXRfbWRpb2J1c19mcmVlOlxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoxNzY5OlxcdGlmIChmZWxpeC1cXHUwMDNlaW5mby1cXHUwMDNlbWRpb19idXNfZnJlZSlcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM6MTc3MDpcXHRcXHRmZWxpeC1cXHUwMDNlaW5mby1cXHUwMDNlbWRpb19idXNfZnJlZShvY2Vsb3QpO1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0xNzcxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jPTE3NzU9c3RhdGljIHZvaWQgZmVsaXhfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTE3OTItXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jOjE3OTM6XFx0aWYgKGZlbGl4LVxcdTAwM2VpbmZvLVxcdTAwM2VtZGlvX2J1c19mcmVlKVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoxNzk0OlxcdFxcdGZlbGl4LVxcdTAwM2VpbmZvLVxcdTAwM2VtZGlvX2J1c19mcmVlKG9jZWxvdCk7XFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTE3OTUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5oPTIyPXN0cnVjdCBmZWxpeF9pbmZvIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguaC01NS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4Lmg6NTY6XFx0aW50XFx0KCptZGlvX2J1c19hbGxvYykoc3RydWN0IG9jZWxvdCAqb2NlbG90KTtcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4Lmg6NTc6XFx0dm9pZFxcdCgqbWRpb19idXNfZnJlZSkoc3RydWN0IG9jZWxvdCAqb2NlbG90KTtcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmgtNTgtXFx0aW50XFx0KCpwb3J0X3NldHVwX3RjKShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9OTUxPXN0YXRpYyB2b2lkIHZzYzk5NTlfd21fc3RhdCh1MzIgdmFsLCB1MzIgKmludXNlLCB1MzIgKm1heHVzZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTk1Ni1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzo5NTc6c3RhdGljIGludCB2c2M5OTU5X21kaW9fYnVzX2FsbG9jKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy05NTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTA0NC1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoxMDQ1OnN0YXRpYyB2b2lkIHZzYzk5NTlfbWRpb19idXNfZnJlZShzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTA0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYz0yNjU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVsaXhfaW5mbyBmZWxpeF9pbmZvX3ZzYzk5NTkgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0yNjc1LVxcdC5wdHBfY2Fwc1xcdFxcdD0gXFx1MDAyNnZzYzk5NTlfcHRwX2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM6MjY3NjpcXHQubWRpb19idXNfYWxsb2NcXHRcXHQ9IHZzYzk5NTlfbWRpb19idXNfYWxsb2MsXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM6MjY3NzpcXHQubWRpb19idXNfZnJlZVxcdFxcdD0gdnNjOTk1OV9tZGlvX2J1c19mcmVlLFxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTI2NzgtXFx0LnBvcnRfbW9kZXNcXHRcXHQ9IHZzYzk5NTlfcG9ydF9tb2RlcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM9ODY5PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2NlbG90X29wcyB2c2M5OTUzX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtODc3LVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM6ODc4OnN0YXRpYyBpbnQgdnNjOTk1M19tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy04Nzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MzQtXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYzo5MzU6c3RhdGljIHZvaWQgdnNjOTk1M19tZGlvX2J1c19mcmVlKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkzNi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jPTk1MD1zdGF0aWMgY29uc3Qgc3RydWN0IGZlbGl4X2luZm8gc2V2aWxsZV9pbmZvX3ZzYzk5NTMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTk2NC1cXHQubnVtX3BvcnRzXFx0XFx0PSBWU0M5OTUzX05VTV9QT1JUUyxcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jOjk2NTpcXHQubWRpb19idXNfYWxsb2NcXHRcXHQ9IHZzYzk5NTNfbWRpb19idXNfYWxsb2MsXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYzo5NjY6XFx0Lm1kaW9fYnVzX2ZyZWVcXHRcXHQ9IHZzYzk5NTNfbWRpb19idXNfZnJlZSxcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTk2Ny1cXHQucG9ydF9tb2Rlc1xcdFxcdD0gdnNjOTk1M19wb3J0X21vZGVzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM9NzkzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzo3OTQ6cWNhOGtfbWRpb19idXN5X3dhaXQoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIHJlZywgdTMyIG1hc2spXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtNzk1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTgxNj1xY2E4a19tZGlvX3dyaXRlKHN0cnVjdCBxY2E4a19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtLCB1MTYgZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTg0MC1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzo4NDE6XFx0cmV0ID0gcWNhOGtfbWRpb19idXN5X3dhaXQoYnVzLCBRQ0E4S19NRElPX01BU1RFUl9DVFJMLFxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTg0Mi1cXHRcXHRcXHRcXHQgICBRQ0E4S19NRElPX01BU1RFUl9CVVNZKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTg1ND1xY2E4a19tZGlvX3JlYWQoc3RydWN0IHFjYThrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy04NzctXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6ODc4OlxcdHJldCA9IHFjYThrX21kaW9fYnVzeV93YWl0KGJ1cywgUUNBOEtfTURJT19NQVNURVJfQ1RSTCxcXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy04NzktXFx0XFx0XFx0XFx0ICAgUUNBOEtfTURJT19NQVNURVJfQlVTWSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz05NDc9cWNhOGtfbWRpb19yZWdpc3RlcihzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk2NC1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzo5NjU6XFx0cHJpdi1cXHUwMDNlaW50ZXJuYWxfbWRpb19idXMgPSBidXM7XFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtOTY2LVxcdGJ1cy1cXHUwMDNlcHJpdiA9ICh2b2lkICopcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTk5ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6OTk1OnFjYThrX3NldHVwX21kaW9fYnVzKHN0cnVjdCBxY2E4a19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk5Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz0xODQzPXFjYThrX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTE4NjAtXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6MTg2MTpcXHRyZXQgPSBxY2E4a19zZXR1cF9tZGlvX2J1cyhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy0xODYyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLWxlZHMuYz0zNjU9cWNhOGtfcGFyc2VfcG9ydF9sZWRzKHN0cnVjdCBxY2E4a19wcml2ICpwcml2LCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqcG9ydCwgaW50IHBvcnRfbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay1sZWRzLmMtNDMxLVxcdFxcdGluaXRfZGF0YS5kZXZpY2VuYW1lID0ga2FzcHJpbnRmKEdGUF9LRVJORUwsIFxcXCIlczowJWRcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstbGVkcy5jOjQzMjpcXHRcXHRcXHRcXHRcXHRcXHQgcHJpdi1cXHUwMDNlaW50ZXJuYWxfbWRpb19idXMgP1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstbGVkcy5jOjQzMzpcXHRcXHRcXHRcXHRcXHRcXHQgcHJpdi1cXHUwMDNlaW50ZXJuYWxfbWRpb19idXMtXFx1MDAzZWlkIDogcHJpdi1cXHUwMDNlYnVzLVxcdTAwM2VpZCxcXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLWxlZHMuYy00MzQtXFx0XFx0XFx0XFx0XFx0XFx0IHBvcnRfbnVtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaD00NDU9c3RydWN0IHFjYThrX3ByaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay5oLTQ1OC1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaDo0NTk6XFx0c3RydWN0IG1paV9idXMgKmludGVybmFsX21kaW9fYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaC00NjAtXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmM9NTIxPXN0YXRpYyBpbnQgdnNjNzN4eF9kZXRlY3Qoc3RydWN0IHZzYzczeHggKnZzYylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTYwNC1cXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYzo2MDU6c3RhdGljIGludCB2c2M3M3h4X21kaW9fYnVzeV9jaGVjayhzdHJ1Y3QgdnNjNzN4eCAqdnNjKVxcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTYwNi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYz02MjE9c3RhdGljIGludCB2c2M3M3h4X3BoeV9yZWFkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBoeSwgaW50IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTYyNy1cXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYzo2Mjg6XFx0cmV0ID0gdnNjNzN4eF9tZGlvX2J1c3lfY2hlY2sodnNjKTtcXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYy02MjktXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTY0MC1cXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYzo2NDE6XFx0cmV0ID0gdnNjNzN4eF9tZGlvX2J1c3lfY2hlY2sodnNjKTtcXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYy02NDItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jPTY2Mj1zdGF0aWMgaW50IHZzYzczeHhfcGh5X3dyaXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBoeSwgaW50IHJlZ251bSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTY2OC1cXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYzo2Njk6XFx0cmV0ID0gdnNjNzN4eF9tZGlvX2J1c3lfY2hlY2sodnNjKTtcXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYy02NzAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jPTQ1OT1zdGF0aWMgaW50IGF4X21paV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy00NjctXFx0YXgtXFx1MDAzZWFkZHJfbWVtciA9IGVpX2xvY2FsLVxcdTAwM2VtZW0gKyBBWF9NRU1SO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjQ2ODpcXHRheC1cXHUwMDNlbWlpX2J1cyA9IGFsbG9jX21kaW9fYml0YmFuZyhcXHUwMDI2YXgtXFx1MDAzZWJiX2N0cmwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTQ2OS1cXHRpZiAoIWF4LVxcdTAwM2VtaWlfYnVzKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy00ODAtXFx0aWYgKGVycilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo0ODE6XFx0XFx0Z290byBvdXRfZnJlZV9tZGlvX2JpdGJhbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjQ4NTogb3V0X2ZyZWVfbWRpb19iaXRiYW5nOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjQ4NjpcXHRmcmVlX21kaW9fYml0YmFuZyhheC1cXHUwMDNlbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDg3LSBvdXQ6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYz00OTE9c3RhdGljIGludCBheF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy01MzQtXFx0bWRpb2J1c191bnJlZ2lzdGVyKGF4LVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo1MzU6XFx0ZnJlZV9tZGlvX2JpdGJhbmcoYXgtXFx1MDAzZW1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTUzNi0gZmFpbGVkX21paTpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jPTU0MD1zdGF0aWMgaW50IGF4X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy01NTctXFx0bWRpb2J1c191bnJlZ2lzdGVyKGF4LVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo1NTg6XFx0ZnJlZV9tZGlvX2JpdGJhbmcoYXgtXFx1MDAzZW1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTU1OS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tYWluLmg9NTE9c3RydWN0IHhnZV9wZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWFpbi5oLTU2LVxcdGNoYXIgaXJxX25hbWVbSVJRX0lEX1NJWkVdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tYWluLmg6NTc6XFx0c3RydWN0IG1paV9idXMgKm1kaW9fYnVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tYWluLmgtNTgtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jPTg0PXZvaWQgeGdlX21kaW9fcmVtb3ZlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy04Ni1cXHRzdHJ1Y3QgeGdlX3BkYXRhICpwZGF0YSA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6ODc6XFx0c3RydWN0IG1paV9idXMgKm1kaW9fYnVzID0gcGRhdGEtXFx1MDAzZW1kaW9fYnVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtODgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6OTI6XFx0aWYgKG1kaW9fYnVzLVxcdTAwM2VzdGF0ZSA9PSBNRElPQlVTX1JFR0lTVEVSRUQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzo5MzpcXHRcXHRtZGlvYnVzX3VucmVnaXN0ZXIobWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtOTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzo5NTpcXHRtZGlvYnVzX2ZyZWUobWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtOTYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYz05OD1pbnQgeGdlX21kaW9fY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMDEtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkYXRhLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMDI6XFx0c3RydWN0IG1paV9idXMgKm1kaW9fYnVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTAzLVxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTEwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjEwNjpcXHRtZGlvX2J1cyA9IG1kaW9idXNfYWxsb2MoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjEwNzpcXHRpZiAoIW1kaW9fYnVzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTA4LVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTA5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTEwOlxcdG1kaW9fYnVzLVxcdTAwM2VuYW1lID0gXFxcIkFQTSBYLUdlbmUgRXRoZXJuZXQgKHYyKSBNRElPIEJ1c1xcXCI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMTE6XFx0bWRpb19idXMtXFx1MDAzZXJlYWQgPSB4Z2VfbWRpb19yZWFkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTEyOlxcdG1kaW9fYnVzLVxcdTAwM2V3cml0ZSA9IHhnZV9tZGlvX3dyaXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTEzOlxcdG1kaW9fYnVzLVxcdTAwM2Vwcml2ID0gcGRhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMTQ6XFx0bWRpb19idXMtXFx1MDAzZXBhcmVudCA9IGRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjExNTpcXHRzbnByaW50ZihtZGlvX2J1cy1cXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXFxcIiVzLW1paVxcXCIsIGRldl9uYW1lKGRldikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTE2OlxcdHBkYXRhLVxcdTAwM2VtZGlvX2J1cyA9IG1kaW9fYnVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTE4OlxcdG1kaW9fYnVzLVxcdTAwM2VwaHlfbWFzayA9IDB4MTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjExOTpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW9fYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTEyMC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMjM6XFx0cGh5ZGV2ID0gcGh5X2ZpbmRfZmlyc3QobWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTI0LVxcdGlmICghcGh5ZGV2KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTkzOT1pbnQgeGdlbmVfZW5ldF9tZGlvX2NvbmZpZyhzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk0MS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHBkYXRhLVxcdTAwM2VuZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTQyOlxcdHN0cnVjdCBtaWlfYnVzICptZGlvX2J1cztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk0My1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTQ1OlxcdG1kaW9fYnVzID0gbWRpb2J1c19hbGxvYygpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTQ2OlxcdGlmICghbWRpb19idXMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NDctXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NDk6XFx0bWRpb19idXMtXFx1MDAzZW5hbWUgPSBcXFwiQVBNIFgtR2VuZSBNRElPIGJ1c1xcXCI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NTA6XFx0bWRpb19idXMtXFx1MDAzZXJlYWQgPSB4Z2VuZV9tZGlvX3JnbWlpX3JlYWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NTE6XFx0bWRpb19idXMtXFx1MDAzZXdyaXRlID0geGdlbmVfbWRpb19yZ21paV93cml0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk1MjpcXHRzbnByaW50ZihtZGlvX2J1cy1cXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXFxcIiVzLSVzXFxcIiwgXFxcInhnZW5lLW1paVxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NTMtXFx0XFx0IG5kZXYtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTU1OlxcdG1kaW9fYnVzLVxcdTAwM2Vwcml2ID0gKHZvaWQgX19mb3JjZSAqKXBkYXRhLVxcdTAwM2VtY3hfbWFjX2FkZHI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NTY6XFx0bWRpb19idXMtXFx1MDAzZXBhcmVudCA9IFxcdTAwMjZwZGF0YS1cXHUwMDNlcGRldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTU4OlxcdHJldCA9IHhnZW5lX21kaW9idXNfcmVnaXN0ZXIocGRhdGEsIG1kaW9fYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk1OS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NjAtXFx0XFx0bmV0ZGV2X2VycihuZGV2LCBcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIE1ESU8gYnVzXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk2MTpcXHRcXHRtZGlvYnVzX2ZyZWUobWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTYyLVxcdFxcdHJldHVybiByZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NjMtXFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTY0OlxcdHBkYXRhLVxcdTAwM2VtZGlvX2J1cyA9IG1kaW9fYnVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTY1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz05ODE9dm9pZCB4Z2VuZV9lbmV0X21kaW9fcmVtb3ZlKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTg4OlxcdG1kaW9idXNfdW5yZWdpc3RlcihwZGF0YS1cXHUwMDNlbWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTg5OlxcdG1kaW9idXNfZnJlZShwZGF0YS1cXHUwMDNlbWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTkwOlxcdHBkYXRhLVxcdTAwM2VtZGlvX2J1cyA9IE5VTEw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05OTEtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5oPTE4ND1zdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5oLTE4NS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmg6MTg2OlxcdHN0cnVjdCBtaWlfYnVzICptZGlvX2J1cztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmgtMTg3LVxcdGludCBwaHlfc3BlZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYy0xMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYzoxMjpib29sIGFxX21kaW9fYnVzeV93YWl0KHN0cnVjdCBhcV9od19zICphcV9odylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYy0xMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYy0xNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYzoxNzpcXHRlcnIgPSByZWFkeF9wb2xsX3RpbWVvdXRfYXRvbWljKGh3X2F0bF9tZGlvX2J1c3lfZ2V0LCBhcV9odyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYy0xOC1cXHRcXHRcXHRcXHRcXHR2YWwsIHZhbCA9PSAwVSwgMTBVLCAxMDAwMDBVKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX3BoeS5jPTI2PXUxNiBhcV9tZGlvX3JlYWRfd29yZChzdHJ1Y3QgYXFfaHdfcyAqYXFfaHcsIHUxNiBtbWQsIHUxNiBhZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfcGh5LmMtMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfcGh5LmM6Mzk6XFx0YXFfbWRpb19idXN5X3dhaXQoYXFfaHcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX3BoeS5jLTQwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfcGh5LmMtNDYtXFx0LyogUmVhZCByZXN1bHQuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfcGh5LmM6NDc6XFx0YXFfbWRpb19idXN5X3dhaXQoYXFfaHcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX3BoeS5jLTQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfcGh5LmM9NTI9dm9pZCBhcV9tZGlvX3dyaXRlX3dvcmQoc3RydWN0IGFxX2h3X3MgKmFxX2h3LCB1MTYgbW1kLCB1MTYgYWRkciwgdTE2IGRhdGEpXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE2OjEzOjM0LjYxNzc0NTM3N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MDAyNTM3ODgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyBpdDpcblxuKipBbmFseXppbmcgdGhlIE1pY3JvY2hpcCBUMSBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBtaWNyb2NoaXBfdDEuY2AgZHJpdmVyIGlzIGludGVncmF0ZWQuIEZpcnN0LCBJJ20gZ29pbmcgdG8gcHVsbCB1cCB0aGF0IHNvdXJjZSBmaWxlLCBhbmQgdGhlbiBJJ20gYWxzbyBnb2luZyB0byBleGFtaW5lIGl0cyBjb3JyZXNwb25kaW5nIEtjb25maWcgZW50cnkuIFRoZSBLY29uZmlnLCBvYnZpb3VzbHksIGlzIGNydWNpYWwgZm9yIGRldGVybWluaW5nIGhvdyBpdCdzIGNvbmZpZ3VyZWQsIGlmIGl0J3MgZXZlbiBlbmFibGVkLCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZS4gVW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyBlbnRyeSBpcyBnb2luZyB0byBnaXZlIG1lIHRoZSBiaWcgcGljdHVyZSBvZiBob3cgdGhpcyBkcml2ZXIgZml0cyBpbnRvIHRoZSBicm9hZGVyIGJ1aWxkIHN5c3RlbSBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIGF2YWlsYWJsZS4gSSBuZWVkIHRvIGlkZW50aWZ5IGl0cyByb2xlLiBUaGlzIGlzIHdoZXJlIEkgc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NTcxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTY6MTM6NDAuNjIwMjg4MDA3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTAzOTUwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNSUNST0NISVBfVDFfUEhZXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZz0zMzY9Y29uZmlnIE1JQ1JPQ0hJUF9QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTM0MC1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzozNDE6Y29uZmlnIE1JQ1JPQ0hJUF9UMV9QSFlcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0zNDItXFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBUMSBQSFlzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTgxPW9iai0kKENPTkZJR19NSUNST0NISVBfUEhZX1JEU19QVFApXFx0Kz0gbWljcm9jaGlwX3Jkc19wdHAub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo4MjpvYmotJChDT05GSUdfTUlDUk9DSElQX1QxX1BIWSlcXHQrPSBtaWNyb2NoaXBfdDEub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS04My1vYmotJChDT05GSUdfTUlDUk9DSElQX1QxU19QSFkpICs9IG1pY3JvY2hpcF90MXMub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNjoxMzo0MC42NzUzMzUxNDNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzMzMjY3NjY4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEtjb25maWcgTGFieXJpbnRoKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBzb21ldGhpbmcgbmV0d29ya2luZy1yZWxhdGVkLCBwcm9iYWJseSBhIFBIWSBkcml2ZXIsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0byBoZWFkIHN0cmFpZ2h0IGZvciB0aGUgYEtjb25maWdgIGZpbGUgYmVjYXVzZSB0aGF0J3Mgd2hlcmUgYWxsIHRoZSBidWlsZC10aW1lIGRlY2lzaW9ucyBhcmUgbWFkZS4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgSSBuZWVkIHRvIGxvb2sgYXJvdW5kIGxpbmUgMzQxIGluIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AuIFRoYXQgc3BlY2lmaWMgbGluZSBsaWtlbHkgY29udGFpbnMgYSBkZWZpbml0aW9uLCBkZXBlbmRlbmN5LCBvciBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0J3MgcGlxdWluZyBteSBpbnRlcmVzdCwgb3IgbWF5YmUgaXQncyBqdXN0IGEgc2VjdGlvbiBJIGtub3cgSSBuZWVkIHRvIGFuYWx5emUuIEl0IGNvdWxkIGJlIGEgbmV3IGZlYXR1cmUsIGEgZHJpdmVyIEknbSB1bmZhbWlsaWFyIHdpdGgsIG9yIGEgcHJvYmxlbSBJJ20gaW52ZXN0aWdhdGluZy4gVGltZSB0byBzZWUgd2hhdCdzIHdoYXQhIExldCdzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5ODcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNjoxMzo0OC4wMDgwMTU4OTRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODgxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzM1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzM1OlxcdFxcbiAzMzY6XFx0Y29uZmlnIE1JQ1JPQ0hJUF9QSFlcXG4gMzM3OlxcdFxcdHRyaXN0YXRlIFxcXCJNaWNyb2NoaXAgUEhZc1xcXCJcXG4gMzM4OlxcdFxcdGhlbHBcXG4gMzM5OlxcdFxcdCAgU3VwcG9ydHMgdGhlIExBTjg4WFggUEhZcy5cXG4gMzQwOlxcdFxcbiAzNDE6XFx0Y29uZmlnIE1JQ1JPQ0hJUF9UMV9QSFlcXG4gMzQyOlxcdFxcdHRyaXN0YXRlIFxcXCJNaWNyb2NoaXAgVDEgUEhZc1xcXCJcXG4gMzQzOlxcdFxcdHNlbGVjdCBNSUNST0NISVBfUEhZX1JEU19QVFAgaWYgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXFxuIDM0NDpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuIDM0NTpcXHRcXHRoZWxwXFxuIDM0NjpcXHRcXHQgIFN1cHBvcnRzIHRoZSBMQU44WFhYIFBIWXMuXFxuIDM0NzpcXHRcXG4gMzQ4OlxcdGNvbmZpZyBNSUNST0NISVBfUEhZX1JEU19QVFBcXG4gMzQ5OlxcdFxcdHRyaXN0YXRlXFxuIDM1MDpcXHRcXHRoZWxwXFxuIDM1MTpcXHRcXHQgIEN1cnJlbnRseSBzdXBwb3J0cyBMQU44ODdYIFQxIFBIWVxcbiAzNTI6XFx0XFxuIDM1MzpcXHRjb25maWcgTUlDUk9TRU1JX1BIWVxcbiAzNTQ6XFx0XFx0dHJpc3RhdGUgXFxcIk1pY3Jvc2VtaSBQSFlzXFxcIlxcbiAzNTU6XFx0XFx0ZGVwZW5kcyBvbiBNQUNTRUMgfHwgTUFDU0VDPW5cXG4gMzU2OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUwgfHwgIU5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xcbiAzNTc6XFx0XFx0c2VsZWN0IENSWVBUT19MSUJfQUVTIGlmIE1BQ1NFQ1xcbiAzNTg6XFx0XFx0c2VsZWN0IFBIWV9QQUNLQUdFXFxuIDM1OTpcXHRcXHRoZWxwXFxuIDM2MDpcXHRcXHQgIEN1cnJlbnRseSBzdXBwb3J0cyBWU0M4NTE0LCBWU0M4NTMwLCBWU0M4NTMxLCBWU0M4NTQwIGFuZCBWU0M4NTQxIFBIWXNcXG4gMzYxOlxcdFxcbiAzNjI6XFx0Y29uZmlnIE1PVE9SQ09NTV9QSFlcXG4gMzYzOlxcdFxcdHRyaXN0YXRlIFxcXCJNb3RvcmNvbW0gUEhZc1xcXCJcXG4gMzY0OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTY6MTM6NDguMDA4MTA1ODg0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYyODQ4NTk5MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYE1JQ1JPQ0hJUF9UMV9QSFlgIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBNSUNST0NISVBfVDFfUEhZYCwgd2hpY2ggSSBrbm93IGlzIGEgZHJpdmVyIGZvciB0aG9zZSBNaWNyb2NoaXAgTEFOODg3eCBUMSBFdGhlcm5ldCBQSFkgY2hpcHMuIFRoZSBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiAqcmVhY2gqIHRoaXMgZHJpdmVyLCBjYW4gSSBnZXQgaXQgdG8gZG8gc29tZXRoaW5nLCB3aXRob3V0IGhhdmluZyB0aGUgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQ/XG5cbkxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIHdoYXQgZXhhY3RseSAqaXMqIGEgTWljcm9jaGlwIFQxIFBIWT8gQWgsIHJpZ2h0LCBpdOKAmXMgdGhhdCBhdXRvbW90aXZlIEV0aGVybmV0IHRyYW5zY2VpdmVyIOKAkyBhIDEwMEJBU0UtVDEgLyAxMDAwQkFTRS1UMSBQSFkgdHJhbnNjZWl2ZXIgbGlrZSB0aGUgTEFOODg3eC4gVG8gdHJpZ2dlciBgbGFuODg3eF9waHlfaW5pdGAsIEkgbmVlZCBhbiBNRElPIGJ1cyB0byBkZXRlY3QgYSBQSFksIGFuZCB0aGF0IFBIWSBuZWVkcyB0byBoYXZlIHRoZSBjb3JyZWN0IElELCBgUEhZX0lEX0xBTjg4N1hgLiBUaGF0IGluc3RhbnRpYXRlcyBhIGBwaHlfZGV2aWNlYCwgdGhlbiB0aGUgYG1pY3JvY2hpcF90MV9waHlfZHJpdmVyYCBnZXRzIGJvdW5kLCBhbmQgKnRoZW4qIHdlIGNhbiBydW4gYGxhbjg4N3hfcGh5X2luaXRgLCBtYXliZSB0aHJvdWdoIGBwaHlfaW5pdF9od2AsIGBwaHlfY29ubmVjdGAsIGBwaHlfYXR0YWNoYCwgb3IgZXZlbiBhIGNhYmxlIHRlc3QgcmVzZXQuXG5cbk5vdywgdGhlIHJlYWwgY2hhbGxlbmdlLiBDYW4gSSBzaW11bGF0ZSBhbGwgdGhpcyB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlLCBsaWtlIGJ5IHVzaW5nIHN5emthbGxlciwgUUVNVSwgb3IgZXZlbiBzb21ldGhpbmcgcnVubmluZyBvbiBHQ0U/IElzIHRoZXJlIGEgd2F5IHRvIGNyZWF0ZSBhIGBtaWNyb2NoaXBfdDFgIE1ESU8gUEhZIGRldmljZSB2aXJ0dWFsbHk/IEFyZSB0aGVyZSB2aXJ0dWFsIE1ESU8gYnVzZXMgSSBjYW4gdXNlLCBvciBhbnkgbWVjaGFuaXNtIHRvIGR5bmFtaWNhbGx5IGNyZWF0ZSBNRElPIFBIWXMgZnJvbSB1c2Vyc3BhY2Ugb3Igc29tZSB2aXJ0dWFsIGJ1cz9cblxuSG9sZCBvbi4uLiBjb3VsZCBhIFVTQiBQSFksIG9yIGV2ZW4gYSBVU0IgRXRoZXJuZXQgZG9uZ2xlLCBwb3RlbnRpYWxseSB1c2UgYSBMQU44ODd4PyBMZXQncyBleHBsb3JlIHRoYXQuIEkgc2hvdWxkIGNoZWNrIGlmIGFueSBVU0IgRXRoZXJuZXQgYWRhcHRlcnMgYXJlIGFjdHVhbGx5IHVzaW5nIGEgTEFOODg3eC4gTGV0J3Mgc3RhcnQgYnkgc2VhcmNoaW5nIHRoZSBVU0IgZHJpdmVycywgYW5kIGlmIHRoYXQgZG9lc24ndCB3b3JrLCBtYXliZSBhIG1vcmUgZ2VuZXJhbCBzZWFyY2ggYWNyb3NzIHRoZSBlbnRpcmUga2VybmVsIHNvdXJjZSBpcyBuZWVkZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNjc5LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTY6MTM6NTQuMjkyOTcwMjc0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzU5OTg2Njg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JRF9MQU44ODdYXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNi0jZGVmaW5lIFBIWV9JRF9MQU45MzdYXFx0XFx0XFx0XFx0MHgwMDA3YzE4MFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNzojZGVmaW5lIFBIWV9JRF9MQU44ODdYXFx0XFx0XFx0XFx0MHgwMDA3YzFmMFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0xNjA3PXN0YXRpYyBpbnQgbGFuODg3eF9jZF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2MjEtXFx0XFx0XFx0XFx0ICAgKCh2YWwgXFx1MDAyNiBHRU5NQVNLKDE1LCA0KSkgPT1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTYyMjpcXHRcXHRcXHRcXHQgICAgKFBIWV9JRF9MQU44ODdYIFxcdTAwMjYgR0VOTUFTSygxNSwgNCkpKSxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYyMy1cXHRcXHRcXHRcXHQgICA1MDAwLCA1MDAwMCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM9MjEwNj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3QxX3BoeV9kcml2ZXJbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTQxLVxcdHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE0MjpcXHRcXHRQSFlfSURfTUFUQ0hfTU9ERUwoUEhZX0lEX0xBTjg4N1gpLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTQzLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiTWljcm9jaGlwIExBTjg4N3ggVDEgUEhZXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0yMTY3PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbWljcm9jaGlwX3QxX3RibFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNjktXFx0eyBQSFlfSURfTUFUQ0hfTU9ERUwoUEhZX0lEX0xBTjkzN1gpIH0sXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNzA6XFx0eyBQSFlfSURfTUFUQ0hfTU9ERUwoUEhZX0lEX0xBTjg4N1gpIH0sXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNzEtXFx0eyB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE2OjEzOjU2LjY1Mjk2NzgwOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNjMwMDIyMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgRXRoZXJuZXQgUEhZIEZ1enppbmcgRmVhc2liaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkNhbiB3ZSBlZmZlY3RpdmVseSBmdXp6IGEgTWljcm9jaGlwIExBTjg4N3ggUEhZIGRyaXZlciB3aXRoaW4gYSBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudCB1c2luZyBzeXprYWxsZXI/XCIgTGV0J3MgY29uc3VsdCB0aGUgdHJpYWdlIGd1aWRlLiBTZWN0aW9uIDIgaGlnaGxpZ2h0cyBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSxcIiBzcGVjaWZpY2FsbHkgbWVudGlvbmluZyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBhbmQgR1BVIGRyaXZlcnMgdGhhdCByZXF1aXJlIHNwZWNpZmljIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gT24gdGhlIGZsaXAgc2lkZSwgXCJSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzXCIgYXJlIHRob3NlIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgbGlrZSB2aXJ0aW8sIFVTQiBnYWRnZXQsIGV0Yy5cblxuTm93LCB3aGVyZSBkbyBFdGhlcm5ldCBQSFlzIGxpa2UgdGhlIE1pY3JvY2hpcCBMQU44ODd4IGZpdD8gU3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRz4oCUUUVNVSwgR0NF4oCUIHR5cGljYWxseSBvZmZlciBkZXZpY2VzIGxpa2UgZTEwMDAsIHZpcnRpby1uZXQsIGFuZCBhIGZldyBvdGhlcnMsIGFuZCBub25lIG9mIHRoZXNlIGV4cG9zZSBhIE1pY3JvY2hpcCBMQU44ODd4IFQxIFBIWSBhdHRhY2hlZCB0byBhbiBNRElPIGJ1cy4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCB3ZSdyZSB0YWxraW5nIGFib3V0IGEgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGVcIiBzY2VuYXJpby4gSSBuZWVkIHRvIGJlIHN1cmUgdGhvdWdoLlxuXG5UaGUgY3J1eCBvZiB0aGUgbWF0dGVyIGlzIHRoZSBsYWNrIG9mIGEgZ2VuZXJpYyB1c2VyLXNwYWNlIG1lY2hhbmlzbSB0byBpbnN0YW50aWF0ZSBhbiBhcmJpdHJhcnkgTURJTyBQSFkgZGV2aWNlIHdpdGggY3VzdG9tIHJlZ2lzdGVycyBhbmQgYmluZCB0aGUgYG1pY3JvY2hpcF90MS5jYCBkcml2ZXIgdG8gaXQsIHVubGVzcyB3ZSBoYXZlIHBoeXNpY2FsIE1ESU8gaGFyZHdhcmUgb3IgZGVkaWNhdGVkIEFTSUMuIEkgd291bGQgbmVlZCB0byBjaGVjayBhbmQgdmVyaWZ5IGlmIE1ESU8gUEhZIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgdmlhIG5ldGxpbmssIHN5c2ZzLCBvciBvdGhlciB1c2VyLXNwYWNlIHRvb2xzLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBzZWFyY2ggZm9yIGFueSBldmlkZW5jZSBvZiBgbWRpb19idXNgIG9yIGBtZGlvX2RldmljZWAgY3JlYXRpb24gZnJvbSB1c2VyLXNwYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjAyMCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNjoxNDowMC4yODI5OTIxNDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzg1NDk0MTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb2J1c19yZWdpc3Rlcl9kZXZpY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9NDY9c3RhdGljIGludCBvZl9tZGlvYnVzX3JlZ2lzdGVyX3BoeShzdHJ1Y3QgbWlpX2J1cyAqbWRpbyxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTUxLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjUyOnN0YXRpYyBpbnQgb2ZfbWRpb2J1c19yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG1paV9idXMgKm1kaW8sXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNTMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpjaGlsZCwgdTMyIGFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0xMzk9c3RhdGljIGludCBfX29mX21kaW9idXNfcGFyc2VfcGh5cyhzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTE2OS1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6MTcwOlxcdFxcdFxcdHJjID0gb2ZfbWRpb2J1c19yZWdpc3Rlcl9kZXZpY2UobWRpbywgY2hpbGQsIGFkZHIpO1xcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTE3MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jPTE1MT1pbnQgbWRpb19kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTU2LVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jOjE1NzpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyX2RldmljZShtZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xNTgtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jPTE4OT1FWFBPUlRfU1lNQk9MKG1kaW9fZGV2aWNlX3JlbW92ZSk7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTkwLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jOjE5MTppbnQgbWRpb2J1c19yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTE5Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTExMDk9aW50IHBoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTExMi1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjExMTM6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTE0LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmg9MjU9dm9pZCBwaHlfY2hlY2tfZG93bnNoaWZ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaC0yNi1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmg6Mjc6aW50IG1kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi1pbnRlcm5hbC5oLTI4LWludCBtZGlvYnVzX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE2OjE0OjAyLjY2MTU1MDA0OFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjAxNDgwOTM0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb2RlJ3MgRnV6emluZyBXb3J0aGluZXNzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIGlzbid0IHdvcnRoIGZ1enppbmcsIGFuZCBJIG5lZWQgdG8gYmUgcHJlY2lzZSBhbmQganVzdGlmeSB0aGF0LiBUaGUgY29kZSdzIGRlYWxpbmcgd2l0aCBNRElPL1BIWSBkZXZpY2VzLCBhbmQgdGhlIExBTjg4N3ggaXMgYSBwaHlzaWNhbCwgYXV0b21vdGl2ZSBFdGhlcm5ldCBQSFkgZnJvbSBNaWNyb2NoaXAuIEl0IHJlZ2lzdGVycyBpbiBvbmUgb2YgdGhlIHVzdWFsIHdheXM6IGRldmljZSB0cmVlLCBBQ1BJLCBvciBNQUMgZHJpdmVycyBzY2FubmluZyB0aGUgTURJTyBidXMuXG5cblRoZSBjcnVjaWFsIHBvaW50IGlzIHRoYXQgdGhpcyBzcGVjaWZpYyBMQU44ODd4IFBIWSwgYW5kIHRoZSBgbWljcm9jaGlwX3QxLmNgIGRyaXZlciB0aGF0IHN1cHBvcnRzIGl0LCAqcmVxdWlyZXMqIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZS4gSXTigJlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgd2hpY2ggYXJlIHdoYXQgd2UncmUgdXNpbmcgZm9yIGZ1enppbmcuIFNvLCBldmVuIHRob3VnaCB0aGlzIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgbGFuODg3eF9waHlfaW5pdCgpYCB3aGVuIGBwcml2LVx1MDAzZWNsb2NrYCBpcyBOVUxMICh3aGljaCwgSSBnZXQgaXQsIGlzIGEgdmFsaWQgYnVnIGZpeCksIHRoYXQgZnVuY3Rpb24gd2lsbCAqbmV2ZXIqIGJlIGNhbGxlZCBpbiBvdXIgZnV6emluZyBlbnZpcm9ubWVudC4gVGhlIGhhcmR3YXJlIHNpbXBseSBpc24ndCB0aGVyZSB0byB0cmlnZ2VyIGl0LlxuXG5Mb29raW5nIGF0IHRoZSBjcml0ZXJpYSwgdGhlIHBhdGNoIGNsZWFybHkgZmFsbHMgaW50byBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiLiBUaGUgZGVzY3JpcHRpb24gZXhwbGljaXRseSBtZW50aW9ucyB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhpcyBpcyBhIHBlcmZlY3QgbWF0Y2guXG5cblRoZXJlZm9yZSwgbXkgZmluYWwgdmVyZGljdCBpczpcblxuKiAgICoqV29ydGhGdXp6aW5nID0gZmFsc2UqKlxuKiAgICoqRm9jdXNTeW1ib2xzID0gXFxbIF0qKiAoZW1wdHkgYXJyYXkpXG4qICAgKipFbmFibGVDb25maWdzID0gXFxbIF0qKiAoZW1wdHkgYXJyYXkpXG4qICAgKipSZWFzb25pbmcgPSBcIlBoeXNpY2FsIGhhcmR3YXJlIFBIWSBkcml2ZXIgZm9yIE1pY3JvY2hpcCBMQU44ODd4IGF1dG9tb3RpdmUgRXRoZXJuZXQgUEhZLCBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9HQ0UsIHRodXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiKipcblxuSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoZXNlIHBhcmFtZXRlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNDM1LCJPdXRwdXRUb2tlbnMiOjE0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNjoxNDoxNC42NzYzNjM1NjlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMgdG8gYWRkIGEgTlVMTCBjaGVjayBmb3IgcHJpdi1cXHUwMDNlY2xvY2sgaW4gbGFuODg3eF9waHlfaW5pdCgpLiBUaGlzIGRyaXZlciBpcyBmb3IgTWljcm9jaGlwIExBTjg4N3ggYXV0b21vdGl2ZSBFdGhlcm5ldCBQSFlzICgxMDBCQVNFLVQxLzEwMDBCQVNFLVQxKSwgd2hpY2ggcmVxdWlyZSBkZWRpY2F0ZWQgcGh5c2ljYWwgaGFyZHdhcmUvQVNJQ3MgYW5kIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jIHRvIGFkZCBhIE5VTEwgY2hlY2sgZm9yIHByaXYtXFx1MDAzZWNsb2NrIGluIGxhbjg4N3hfcGh5X2luaXQoKS4gVGhpcyBkcml2ZXIgaXMgZm9yIE1pY3JvY2hpcCBMQU44ODd4IGF1dG9tb3RpdmUgRXRoZXJuZXQgUEhZcyAoMTAwQkFTRS1UMS8xMDAwQkFTRS1UMSksIHdoaWNoIHJlcXVpcmUgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlL0FTSUNzIGFuZCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE2OjE0OjE0LjY3NjQwMzkzOVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjlsf2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-04 15:51:56 +0000 UTC FinishedAt: 2026-09-04 16:14:15 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDE2OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jIHRvIGFkZCBhIE5VTEwgY2hlY2sgZm9yIHByaXYtXHUwMDNlY2xvY2sgaW4gbGFuODg3eF9waHlfaW5pdCgpLiBUaGlzIGRyaXZlciBpcyBmb3IgTWljcm9jaGlwIExBTjg4N3ggYXV0b21vdGl2ZSBFdGhlcm5ldCBQSFlzICgxMDBCQVNFLVQxLzEwMDBCQVNFLVQxKSwgd2hpY2ggcmVxdWlyZSBkZWRpY2F0ZWQgcGh5c2ljYWwgaGFyZHdhcmUvQVNJQ3MgYW5kIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGEzOTgzYzkwOGZmYWUzMzFkZGJhMDkwMjIxNzJjYjFhYWVjZjIzZWVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCA0IDE2OjEyOjU0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1xuaW5kZXggMzI5MmIyMjM1YzhmYS4uZTM4ZDIwYmY2YWE0YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jXG5AQCAtMTI4NSwxNCAmIzQzOzEyODUsMTYgQEAgc3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdGlmIChJU19FUlIocHJpdi1cdTAwM2VjbG9jaykpXG4gXHRcdFx0cmV0dXJuIFBUUl9FUlIocHJpdi1cdTAwM2VjbG9jayk7XG4gXG4tXHRcdC8qIEVuYWJsZSBwaW4gbXV4IGZvciBFVlQgKi9cbi1cdFx0cGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbi1cdFx0XHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDEsXG4tXHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTixcbi1cdFx0XHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOKTtcbi1cbi1cdFx0LyogSW5pdGlhbGl6ZSBwaW4gbnVtYmVycyBzcGVjaWZpYyB0byBQRVJPVVQgKi9cbi1cdFx0cHJpdi1cdTAwM2VjbG9jay1cdTAwM2VldmVudF9waW4gPSAzO1xuJiM0MztcdFx0aWYgKHByaXYtXHUwMDNlY2xvY2spIHtcbiYjNDM7XHRcdFx0LyogRW5hYmxlIHBpbiBtdXggZm9yIEVWVCAqL1xuJiM0MztcdFx0XHRwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuJiM0MztcdFx0XHRcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMSxcbiYjNDM7XHRcdFx0XHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOLFxuJiM0MztcdFx0XHRcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4pO1xuJiM0MztcbiYjNDM7XHRcdFx0LyogSW5pdGlhbGl6ZSBwaW4gbnVtYmVycyBzcGVjaWZpYyB0byBQRVJPVVQgKi9cbiYjNDM7XHRcdFx0cHJpdi1cdTAwM2VjbG9jay1cdTAwM2VldmVudF9waW4gPSAzO1xuJiM0MztcdFx0fVxuIFxuIFx0XHRwcml2LVx1MDAzZWluaXRfZG9uZSA9IHRydWU7XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTY6MTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jIHRvIGFkZCBhIE5VTEwgY2hlY2sgZm9yIHByaXYtXHUwMDNlY2xvY2sgaW4gbGFuODg3eF9waHlfaW5pdCgpLiBUaGlzIGRyaXZlciBpcyBmb3IgTWljcm9jaGlwIExBTjg4N3ggYXV0b21vdGl2ZSBFdGhlcm5ldCBQSFlzICgxMDBCQVNFLVQxLzEwMDBCQVNFLVQxKSwgd2hpY2ggcmVxdWlyZSBkZWRpY2F0ZWQgcGh5c2ljYWwgaGFyZHdhcmUvQVNJQ3MgYW5kIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEzOTgzYzkwOGZmYWUzMzFkZGJhMDkwMjIxNzJjYjFhYWVjZjIzZWUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIFNlcCA0IDE2OjEyOjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jIGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jCmluZGV4IDMyOTJiMjIzNWM4ZmEuLmUzOGQyMGJmNmFhNGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMKQEAgLTEyODUsMTQgJiM0MzsxMjg1LDE2IEBAIHN0YXRpYyBpbnQgbGFuODg3eF9waHlfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCQlpZiAoSVNfRVJSKHByaXYtJmd0O2Nsb2NrKSkKIAkJCXJldHVybiBQVFJfRVJSKHByaXYtJmd0O2Nsb2NrKTsKIAotCQkvKiBFbmFibGUgcGluIG11eCBmb3IgRVZUICovCi0JCXBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsCi0JCQkgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDEsCi0JCQkgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOLAotCQkJICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTik7Ci0KLQkJLyogSW5pdGlhbGl6ZSBwaW4gbnVtYmVycyBzcGVjaWZpYyB0byBQRVJPVVQgKi8KLQkJcHJpdi0mZ3Q7Y2xvY2stJmd0O2V2ZW50X3BpbiA9IDM7CiYjNDM7CQlpZiAocHJpdi0mZ3Q7Y2xvY2spIHsKJiM0MzsJCQkvKiBFbmFibGUgcGluIG11eCBmb3IgRVZUICovCiYjNDM7CQkJcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwKJiM0MzsJCQkJICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxLAomIzQzOwkJCQkgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOLAomIzQzOwkJCQkgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOKTsKJiM0MzsKJiM0MzsJCQkvKiBJbml0aWFsaXplIHBpbiBudW1iZXJzIHNwZWNpZmljIHRvIFBFUk9VVCAqLwomIzQzOwkJCXByaXYtJmd0O2Nsb2NrLSZndDtldmVudF9waW4gPSAzOwomIzQzOwkJfQogCiAJCXByaXYtJmd0O2luaXRfZG9uZSA9IHRydWU7CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTMxCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IG1lbnRhbCB3YWxrdGhyb3VnaCBvZiB0aGlzLgoKKipBbmFseXppbmcgdGhlIFBIWSBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgZGlmZiBhbmQgdGhlIHJlbGF0ZWQgY29kZS4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNgLCBhbmQgc3BlY2lmaWNhbGx5IHRoZSBgbGFuODg3eF9waHlfaW5pdGAgZnVuY3Rpb24uIFRoYXQgZ2l2ZXMgbWUgYSBzdGFydGluZyBwb2ludC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHdlJiMzOTtyZSBhY3R1YWxseSBkZWFsaW5nIHdpdGggaGVyZS4KCk15IGluc3RpbmN0IGlzIHRvIGNoZWNrIG91dCB0aGUgYnJvYWRlciBjb250ZXh0IG9mIGBtaWNyb2NoaXBfdDEuY2AuIEkgbmVlZCB0byBnZXQgYSBncmlwIG9uIHdoYXQga2luZCBvZiBQSFkgZHJpdmVyIHRoaXMgaXM6IElzIGl0IGZvciBhIGNvbW1vbiBjaGlwPyBIb3cgZG9lcyBpdCBnZXQgcHJvYmVkIGFuZCB1c2VkIGJ5IHRoZSBzeXN0ZW0/IFdoYXQgc3BlY2lmaWMgaGFyZHdhcmUgaXMgaXQgZGVzaWduZWQgZm9yPyBBbmQsIGNyaXRpY2FsbHkgZm9yIG15IGFuYWx5c2lzLCBjYW4gSSB0cmlnZ2VyIHRoaXMgdGhpbmcgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50PyBJJiMzOTttIHRoaW5raW5nIFFFTVUgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0IHJlcXVpcmVzIGFjdHVhbCBoYXJkd2FyZS4KClRpbWUgdG8gcmVhY2ggZm9yIG15IHRvb2xzLiBJJiMzOTtsbCBlaXRoZXIgdXNlIGBncmVwcGVyYCBvciBqdXN0IHF1aWNrbHkgcmVhZCB0aGUgZmlsZS4gQSBxdWljayBjaGVjayBvZiBgbWljcm9jaGlwX3QxLmNgIHdpbGwgZ2l2ZSBtZSB0aGUgaGlnaC1sZXZlbCBwaWN0dXJlIEkgbmVlZC4gVGhpcyB3aWxsIGluZm9ybSBteSBuZXh0IHN0ZXBzIGluIHRoZSBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsYW44ODd4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0yOTg9c3RydWN0IGFjY2Vzc19lcmVnX3ZhbCB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTMwNS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzozMDY6c3RydWN0IGxhbjg4N3hfaHdfc3RhdCB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMzA3LVx0Y29uc3QgY2hhciAqc3RyaW5nO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0zMTItXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MzEzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbGFuODg3eF9od19zdGF0IGxhbjg4N3hfaHdfc3RhdHNbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0zMTQtXHR7IFwmIzM0O1RYIEdvb2QgQ291bnRcJiMzNDssICAgICAgICAgICAgICAgICAgICAgIE1ESU9fTU1EX1ZFTkQxLCBMQU44ODdYX01JU19QS1RfU1RBVF9SRUcwLCAxNH0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTMyMS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzozMjI6c3RydWN0IGxhbjg4N3hfcmVnd3JfbWFwIHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0zMjMtXHR1OCAgbW1kO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0zMjctXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MzI4OnN0cnVjdCBsYW44ODd4X3ByaXYge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjMyOTpcdHU2NCBzdGF0c1tBUlJBWV9TSVpFKGxhbjg4N3hfaHdfc3RhdHMpXTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0zMzAtXHRzdHJ1Y3QgbWNocF9yZHNfcHRwX2Nsb2NrICpjbG9jaztcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM9MTA4MD1zdGF0aWMgaW50IGxhbjg3eHhfZ2V0X3NxaV9tYXgoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTA4NC1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMDg1OnN0YXRpYyBpbnQgbGFuODg3eF9yZ21paV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTA4Ni17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTExMTgtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTExOTpzdGF0aWMgaW50IGxhbjg4N3hfc2dtaWlfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTExMjAte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMTQ5LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjExNTA6c3RhdGljIGludCBsYW44ODd4X2NvbmZpZ19yZ21paV9lbihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTExNTEte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMTU1LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjExNTY6XHRyZXQgPSBsYW44ODd4X3JnbWlpX2luaXQocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMTU3LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTIxMS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMjEyOnN0YXRpYyBpbnQgbGFuODg3eF9jb25maWdfcGh5X2ludGVyZmFjZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyMTMte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjM5LVx0XHQgICAgTEFOODg3WF9NQUNfTU9ERV9TR01JSSkpXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTI0MDpcdFx0XHRyZXQgPSBsYW44ODd4X2NvbmZpZ19yZ21paV9lbihwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNDEtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjQ2LVx0XHRpZiAoIXNnbWlpX2RpcylcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMjQ3Olx0XHRcdHJldCA9IGxhbjg4N3hfc2dtaWlfaW5pdChwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNDgtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjU2LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEyNTc6c3RhdGljIGludCBsYW44ODd4X2dldF9mZWF0dXJlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNTgte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjc1LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEyNzY6c3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTI3Ny17XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTI3ODpcdHN0cnVjdCBsYW44ODd4X3ByaXYgKnByaXYgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjc5LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTMxOS1cdC8qIFBIWSBpbnRlcmZhY2Ugc2V0dXAgKi9cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMzIwOlx0cmV0dXJuIGxhbjg4N3hfY29uZmlnX3BoeV9pbnRlcmZhY2UocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzIxLX1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzIyLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEzMjM6c3RhdGljIGludCBsYW44ODd4X3BoeV9jb25maWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMzI0Olx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBsYW44ODd4X3JlZ3dyX21hcCAqcmVnX21hcCwgaW50IGNudClcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzI1LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTMzNy1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMzM4OnN0YXRpYyBpbnQgbGFuODg3eF9waHlfc2V0dXAoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzM5LXtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMzQwOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBsYW44ODd4X3JlZ3dyX21hcCBwaHlfY2ZnW10gPSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTM0MS1cdFx0LyogUE9SVF9BRkUgd3JpdGVzICovXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEzNjktXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTM3MDpcdHJldHVybiBsYW44ODd4X3BoeV9jb25maWcocGh5ZGV2LCBwaHlfY2ZnLCBBUlJBWV9TSVpFKHBoeV9jZmcpKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzcxLX1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzcyLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEzNzM6c3RhdGljIGludCBsYW44ODd4XzEwME1fc2V0dXAoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzc0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTM3OS1cdCAgICBwaHlkZXYtXHUwMDNlbWFzdGVyX3NsYXZlX3NldCA9PSBNQVNURVJfU0xBVkVfQ0ZHX01BU1RFUl9QUkVGRVJSRUQpe1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEzODA6XHRcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbGFuODg3eF9yZWd3cl9tYXAgcGh5X2NmZ1tdID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEzODEtXHRcdFx0e01ESU9fTU1EX1BNQVBNRCwgTEFOODg3WF9BRkVfUE9SVF9URVNUQlVTX0NUUkw0LCAweDAwYjh9LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzg1LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEzODY6XHRcdHJldCA9IGxhbjg4N3hfcGh5X2NvbmZpZyhwaHlkZXYsIHBoeV9jZmcsIEFSUkFZX1NJWkUocGh5X2NmZykpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEzODctXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEzODg6XHRcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbGFuODg3eF9yZWd3cl9tYXAgcGh5X2NmZ1tdID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEzODktXHRcdFx0e01ESU9fTU1EX1BNQVBNRCwgTEFOODg3WF9BRkVfUE9SVF9URVNUQlVTX0NUUkw0LCAweDAwMzh9LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzkyLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEzOTM6XHRcdHJldCA9IGxhbjg4N3hfcGh5X2NvbmZpZyhwaHlkZXYsIHBoeV9jZmcsIEFSUkFZX1NJWkUocGh5X2NmZykpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEzOTQtXHR9XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0MDEtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQwMjpzdGF0aWMgaW50IGxhbjg4N3hfMTAwME1fc2V0dXAoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDAzLXtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNDA0Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBsYW44ODd4X3JlZ3dyX21hcCBwaHlfY2ZnW10gPSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQwNS1cdFx0e01ESU9fTU1EX1BNQVBNRCwgTEFOODg3WF9UWF9BTVBMVF8xMDAwVDFfUkVHLCAweDAwM2Z9LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDEwLVx0LyogKFJlKWNvbmZpZ3VyZSB0aGUgc3BlZWQvbW9kZSBkZXBlbmRlbnQgVDEgc2V0dGluZ3MgKi9cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNDExOlx0cmV0ID0gbGFuODg3eF9waHlfY29uZmlnKHBoeWRldiwgcGh5X2NmZywgQVJSQVlfU0laRShwaHlfY2ZnKSk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQxMi1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0MTgtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQxOTpzdGF0aWMgaW50IGxhbjg4N3hfbGlua19zZXR1cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0MjAte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDIzLVx0aWYgKHBoeWRldi1cdTAwM2VzcGVlZCA9PSBTUEVFRF8xMDAwKVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE0MjQ6XHRcdHJldCA9IGxhbjg4N3hfMTAwME1fc2V0dXAocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDI1LVx0ZWxzZSBpZiAocGh5ZGV2LVx1MDAzZXNwZWVkID09IFNQRUVEXzEwMClcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNDI2Olx0XHRyZXQgPSBsYW44ODd4XzEwME1fc2V0dXAocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDI3LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDMzLSAqL1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE0MzQ6c3RhdGljIGludCBsYW44ODd4X3BoeV9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0MzUte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDY1LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE0NjY6c3RhdGljIGludCBsYW44ODd4X3BoeV9yZWNvbmZpZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0Njcte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDc1LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE0NzY6XHRyZXR1cm4gbGFuODg3eF9saW5rX3NldHVwKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQ3Ny19XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQ3OC1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNDc5OnN0YXRpYyBpbnQgbGFuODg3eF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0ODAte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDg1LVx0ICovXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQ4NjpcdHJldCA9IGxhbjg4N3hfcGh5X3Jlc2V0KHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQ4Ny1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0ODktXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQ5MDpcdHJldHVybiBsYW44ODd4X3BoeV9yZWNvbmZpZyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0OTEtfVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0OTItXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQ5MzpzdGF0aWMgaW50IGxhbjg4N3hfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDk0LXtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNDk1Olx0c3RydWN0IGxhbjg4N3hfcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDk2LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTAzLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE1MDQ6XHRyZXR1cm4gbGFuODg3eF9waHlfc2V0dXAocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTA1LX1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTA2LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE1MDc6c3RhdGljIHU2NCBsYW44ODd4X2dldF9zdGF0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpKVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1MDgte1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE1MDk6XHRzdHJ1Y3QgbGFuODg3eF9od19zdGF0IHN0YXQgPSBsYW44ODd4X2h3X3N0YXRzW2ldO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE1MTA6XHRzdHJ1Y3QgbGFuODg3eF9wcml2ICpwcml2ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTUxMS1cdGludCB2YWw7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1MjktXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTUzMDpzdGF0aWMgdm9pZCBsYW44ODd4X2dldF9zdGF0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1MzEtXHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfc3RhdHMgKnN0YXRzLCB1NjQgKmRhdGEpXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTUzMi17XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTUzMzpcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGxhbjg4N3hfaHdfc3RhdHMpOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNTM0Olx0XHRkYXRhW2ldID0gbGFuODg3eF9nZXRfc3RhdChwaHlkZXYsIGkpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1MzUtfVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1MzYtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTUzNzpzdGF0aWMgaW50IGxhbjg4N3hfZ2V0X3NzZXRfY291bnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTM4LXtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNTM5Olx0cmV0dXJuIEFSUkFZX1NJWkUobGFuODg3eF9od19zdGF0cyk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTU0MC19XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTU0MS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNTQyOnN0YXRpYyB2b2lkIGxhbjg4N3hfZ2V0X3N0cmluZ3Moc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggKmRhdGEpXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTU0My17XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTU0NDpcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGxhbjg4N3hfaHdfc3RhdHMpOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNTQ1Olx0XHRldGh0b29sX3B1dHMoXHUwMDI2ZGF0YSwgbGFuODg3eF9od19zdGF0c1tpXS5zdHJpbmcpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1NDYtfVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1NDctXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTU0ODpzdGF0aWMgaW50IGxhbjg4N3hfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTQ5LXtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNTUwOlx0c3RydWN0IGxhbjg4N3hfcHJpdiAqcHJpdiA9IHBoeWRldi1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1NTEtXHRpbnQgcmM7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1ODMtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTU4NDpzdGF0aWMgaXJxcmV0dXJuX3QgbGFuODg3eF9oYW5kbGVfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTU4NS17XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTU4NjpcdHN0cnVjdCBsYW44ODd4X3ByaXYgKnByaXYgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTg3LVx0aW50IHJjID0gSVJRX05PTkU7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2MDYtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTYwNzpzdGF0aWMgaW50IGxhbjg4N3hfY2RfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjA4LVx0XHRcdCAgICBlbnVtIGNhYmxlX2RpYWdfc3RhdGUgY2RfZG9uZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYyOC1cdFx0LyogQ2FibGUgZGlhZ25vc3RpY3MgY29tcGxldGUuIFJlc3RvcmUgUEhZLiAqL1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE2Mjk6XHRcdHJjID0gbGFuODg3eF9waHlfc2V0dXAocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjMwLVx0XHRpZiAocmMgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2MzItXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTYzMzpcdFx0cmMgPSBsYW44ODd4X3BoeV9pbml0KHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYzNC1cdFx0aWYgKHJjIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjM2LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE2Mzc6XHRcdHJjID0gbGFuODg3eF9jb25maWdfaW50cihwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2MzgtXHRcdGlmIChyYyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTY0MC1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNjQxOlx0XHRyYyA9IGxhbjg4N3hfcGh5X3JlY29uZmlnKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTY0Mi1cdFx0aWYgKHJjIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjQ4LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE2NDk6c3RhdGljIGludCBsYW44ODd4X2NhYmxlX3Rlc3RfcHJlcChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2NTAtXHRcdFx0XHQgICBlbnVtIGNhYmxlX2RpYWdfbW9kZSBtb2RlKVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2NTEte1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE2NTI6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGxhbjg4N3hfcmVnd3JfbWFwIHZhbHVlc1tdID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2NTMtXHRcdHtNRElPX01NRF9WRU5EMSwgTEFOODg3WF9NQVhfUEdBX0dBSU5fMTAwLCAweDFmfSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTY2NS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNjY2Olx0cmMgPSBsYW44ODd4X2NkX3Jlc2V0KHBoeWRldiwgQ0RfVEVTVF9JTklUKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjY3LVx0aWYgKHJjIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNzI5LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE3MzA6c3RhdGljIGludCBsYW44ODd4X2NhYmxlX3Rlc3RfY2hrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTczMS1cdFx0XHRcdCAgZW51bSBjYWJsZV9kaWFnX21vZGUgbW9kZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTc2NC1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNzY1OnN0YXRpYyBpbnQgbGFuODg3eF9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTc2Ni17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE3NjgtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTc2OTpcdHJjID0gbGFuODg3eF9jYWJsZV90ZXN0X3ByZXAocGh5ZGV2LCBURVNUX01PREVfTk9STUFMKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNzcwLVx0aWYgKHJjIFx1MDAzYyAwKSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTc3MTpcdFx0cmV0ID0gbGFuODg3eF9jZF9yZXNldChwaHlkZXYsIENEX1RFU1RfRE9ORSk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTc3Mi1cdFx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTc4MC1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNzgxOnN0YXRpYyBpbnQgbGFuODg3eF9jYWJsZV90ZXN0X3JlcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE3ODIte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xODY3LVx0LyogUmUtaW5pdGlhbGl6ZSBQSFkgYW5kIHN0YXJ0IGNhYmxlIGRpYWcgdGVzdCAqL1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE4Njg6XHRyYyA9IGxhbjg4N3hfY2FibGVfdGVzdF9wcmVwKHBoeWRldiwgVEVTVF9NT0RFX0hZQlJJRCk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTg2OS1cdGlmIChyYyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTg3Mi1cdC8qIFdhaXQgZm9yIGNhYmxlIGRpYWcgdGVzdCBjb21wbGV0aW9uICovXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTg3MzpcdHJjID0gbGFuODg3eF9jYWJsZV90ZXN0X2NoayhwaHlkZXYsIFRFU1RfTU9ERV9IWUJSSUQpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE4NzQtXHRpZiAocmMgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5MTctZ2V0X2xlbjpcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxOTE4Olx0cmMgPSBsYW44ODd4X2NkX3Jlc2V0KHBoeWRldiwgQ0RfVEVTVF9ET05FKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xOTE5LVx0aWYgKHJjIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xOTM4LVx0LyogQ2FibGUgZGlhZyB0ZXN0IGZhaWxlZCAqL1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE5Mzk6XHRyZXQgPSBsYW44ODd4X2NkX3Jlc2V0KHBoeWRldiwgQ0RfVEVTVF9ET05FKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xOTQwLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTk0Ni1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxOTQ3OnN0YXRpYyBpbnQgbGFuODg3eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xOTQ4LVx0XHRcdFx0XHQgYm9vbCAqZmluaXNoZWQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5NTEtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTk1MjpcdHJjID0gbGFuODg3eF9jYWJsZV90ZXN0X2NoayhwaHlkZXYsIFRFU1RfTU9ERV9OT1JNQUwpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5NTMtXHRpZiAocmMgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTk2My1cdC8qIFJldHJpZXZlIHRlc3Qgc3RhdHVzIGFuZCBjYWJsZSBsZW5ndGggdG8gZmF1bHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxOTY0Olx0cmV0dXJuIGxhbjg4N3hfY2FibGVfdGVzdF9yZXBvcnQocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xOTY1LX1cbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM9MTk2OD1zdGF0aWMgaW50IHNxaV9jb21wYXJlKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5NzItXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTk3MzpzdGF0aWMgaW50IGxhbjg4N3hfZ2V0X3NxaV8xMDBNKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTk3NC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIwNzEtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjA3MjpzdGF0aWMgaW50IGxhbjg4N3hfZ2V0X3NxaShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIwNzMte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMDgwLVx0aWYgKHBoeWRldi1cdTAwM2VzcGVlZCA9PSBTUEVFRF8xMDApXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjA4MTpcdFx0cmV0dXJuIGxhbjg4N3hfZ2V0X3NxaV8xMDBNKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjA4Mi1cbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM9MjEwNj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3QxX3BoeV9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE0NC1cdFx0LmZsYWdzICAgICAgICAgID0gUEhZX1BPTExfQ0FCTEVfVEVTVCxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTQ1Olx0XHQucHJvYmVcdFx0PSBsYW44ODd4X3Byb2JlLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNDY6XHRcdC5nZXRfZmVhdHVyZXNcdD0gbGFuODg3eF9nZXRfZmVhdHVyZXMsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE0NzpcdFx0LmNvbmZpZ19pbml0ICAgID0gbGFuODg3eF9waHlfaW5pdCxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTQ4Olx0XHQuY29uZmlnX2FuZWcgICAgPSBsYW44ODd4X2NvbmZpZ19hbmVnLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNDk6XHRcdC5nZXRfc3RhdHMgICAgICA9IGxhbjg4N3hfZ2V0X3N0YXRzLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNTA6XHRcdC5nZXRfc3NldF9jb3VudCA9IGxhbjg4N3hfZ2V0X3NzZXRfY291bnQsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE1MTpcdFx0LmdldF9zdHJpbmdzICAgID0gbGFuODg3eF9nZXRfc3RyaW5ncyxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTUyLVx0XHQuc3VzcGVuZFx0PSBnZW5waHlfc3VzcGVuZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE1NC1cdFx0LnJlYWRfc3RhdHVzXHQ9IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE1NTpcdFx0LmNhYmxlX3Rlc3Rfc3RhcnQgPSBsYW44ODd4X2NhYmxlX3Rlc3Rfc3RhcnQsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE1NjpcdFx0LmNhYmxlX3Rlc3RfZ2V0X3N0YXR1cyA9IGxhbjg4N3hfY2FibGVfdGVzdF9nZXRfc3RhdHVzLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNTc6XHRcdC5jb25maWdfaW50ciAgICA9IGxhbjg4N3hfY29uZmlnX2ludHIsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE1ODpcdFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBsYW44ODd4X2hhbmRsZV9pbnRlcnJ1cHQsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE1OTpcdFx0LmdldF9zcWlcdD0gbGFuODg3eF9nZXRfc3FpLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNjAtXHRcdC5nZXRfc3FpX21heFx0PSBsYW44N3h4X2dldF9zcWlfbWF4LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE2OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTMzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gdGhlIExBTjg4N3ggUEhZIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBgbGFuODg3eF9waHlfaW5pdGAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgSSBzaG91bGQgcHJvYmFibHkgemVybyBpbiBvbiBgZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jYCBhcm91bmQgbGluZXMgMTI3MCB0byAxMzEwLiBUaGF0IHJhbmdlIGlzIHByb2JhYmx5IHdoZXJlIHRoZSBjb3JlIG9mIGl0cyBpbXBsZW1lbnRhdGlvbiBsaXZlcywgYW5kIHRoZXJlZm9yZSB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSBsb2dpYyB0aGF0IGtpY2tzIG9mZiB0aGUgaW5pdGlhbGl6YXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyBpdCBjb25maWd1cmVzIHRoZSBQSFksIGxpa2VseSBkZWFsaW5nIHdpdGggcmVnaXN0ZXIgd3JpdGVzIHRvIHNldCB1cCBsaW5rIG1vZGVzLCBzcGVlZCwgbWF5YmUgYXV0b25lZ290aWF0aW9uIHBhcmFtZXRlcnMsIGFuZCBhbnkgc3BlY2lmaWMgTWljcm9jaGlwLXNwZWNpZmljIHNldHRpbmdzIGZvciB0aGUgVDEgdHJhbnNjZWl2ZXIuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGNsb2NrIHNldHRpbmdzLCBwb3dlci11cCBzZXF1ZW5jZXMsIGFuZCBhbnkgcG90ZW50aWFsIGhhcmR3YXJlLXNwZWNpZmljIHF1aXJrcyBvciB3b3JrYXJvdW5kcy4gSG9wZWZ1bGx5LCB0aGUgY29tbWVudHMgYXJlIGNsZWFyIGVub3VnaCB0byBmb2xsb3cgdGhlIGNvbnRyb2wgZmxvdyEgVGhpcyBpcyB3aGVyZSBJIGNhbiBnZXQgYSBncmFudWxhciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBQSFkmIzM5O3MgaW5pdGlhbCBzdGF0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTI3MDpcdFx0ICovXG4xMjcxOlx0XHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXV0b25lZ19CSVQsIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpO1xuMTI3MjpcdFxuMTI3MzpcdFx0cmV0dXJuIDA7XG4xMjc0Olx0fVxuMTI3NTpcdFxuMTI3NjpcdHN0YXRpYyBpbnQgbGFuODg3eF9waHlfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuMTI3NzpcdHtcbjEyNzg6XHRcdHN0cnVjdCBsYW44ODd4X3ByaXYgKnByaXYgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbjEyNzk6XHRcdGludCByZXQ7XG4xMjgwOlx0XG4xMjgxOlx0XHRpZiAoIXByaXYtXHUwMDNlaW5pdF9kb25lIFx1MDAyNlx1MDAyNiBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeWRldikpIHtcbjEyODI6XHRcdFx0cHJpdi1cdTAwM2VjbG9jayA9IG1jaHBfcmRzX3B0cF9wcm9iZShwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuMTI4MzpcdFx0XHRcdFx0XHRcdCBNQ0hQX1JEU19QVFBfTFRDX0JBU0VfQUREUixcbjEyODQ6XHRcdFx0XHRcdFx0XHQgTUNIUF9SRFNfUFRQX1BPUlRfQkFTRV9BRERSKTtcbjEyODU6XHRcdFx0aWYgKElTX0VSUihwcml2LVx1MDAzZWNsb2NrKSlcbjEyODY6XHRcdFx0XHRyZXR1cm4gUFRSX0VSUihwcml2LVx1MDAzZWNsb2NrKTtcbjEyODc6XHRcbjEyODg6XHRcdFx0aWYgKHByaXYtXHUwMDNlY2xvY2spIHtcbjEyODk6XHRcdFx0XHQvKiBFbmFibGUgcGluIG11eCBmb3IgRVZUICovXG4xMjkwOlx0XHRcdFx0cGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbjEyOTE6XHRcdFx0XHRcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMSxcbjEyOTI6XHRcdFx0XHRcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4sXG4xMjkzOlx0XHRcdFx0XHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOKTtcbjEyOTQ6XHRcbjEyOTU6XHRcdFx0XHQvKiBJbml0aWFsaXplIHBpbiBudW1iZXJzIHNwZWNpZmljIHRvIFBFUk9VVCAqL1xuMTI5NjpcdFx0XHRcdHByaXYtXHUwMDNlY2xvY2stXHUwMDNlZXZlbnRfcGluID0gMztcbjEyOTc6XHRcdFx0fVxuMTI5ODpcdFxuMTI5OTpcdFx0XHRwcml2LVx1MDAzZWluaXRfZG9uZSA9IHRydWU7XG4xMzAwOlx0XHR9XG4xMzAxOlx0XG4xMzAyOlx0XHQvKiBDbGVhciBsb29wYmFjayAqL1xuMTMwMzpcdFx0cmV0ID0gcGh5X2NsZWFyX2JpdHNfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG4xMzA0Olx0XHRcdFx0XHQgTEFOODg3WF9NSVNfQ0ZHX1JFRzIsXG4xMzA1Olx0XHRcdFx0XHQgTEFOODg3WF9NSVNfQ0ZHX1JFRzJfRkVfTFBCS19FTik7XG4xMzA2Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMTMwNzpcdFx0XHRyZXR1cm4gcmV0O1xuMTMwODpcdFxuMTMwOTpcdFx0LyogQ29uZmlndXJlIGRlZmF1bHQgYmVoYXZpb3Igb2YgbGVkIHRvIGxpbmsgYW5kIGFjdGl2aXR5IGZvciBhbnlcbjEzMTA6XHRcdCAqIHNwZWVkXG4xMzExOlx0XHQgKi9cbjEzMTI6XHRcdHJldCA9IHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG4xMzEzOlx0XHRcdFx0ICAgICBMQU44ODdYX0NPTU1PTl9MRUQzX0xFRDIsXG4xMzE0Olx0XHRcdFx0ICAgICBMQU44ODdYX0NPTU1PTl9MRUQyX01PREVfU0VMX01BU0ssXG4xMzE1Olx0XHRcdFx0ICAgICBMQU44ODdYX0xFRF9MSU5LX0FDVF9BTllfU1BFRUQpO1xuMTMxNjpcdFx0aWYgKHJldCBcdTAwM2MgMClcbjEzMTc6XHRcdFx0cmV0dXJuIHJldDtcbjEzMTg6XHRcbjEzMTk6XHRcdC8qIFBIWSBpbnRlcmZhY2Ugc2V0dXAgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA4MgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuCgoqKkludmVzdGlnYXRpbmcgdGhlIGBtY2hwX3Jkc19wdHBfcHJvYmVgIEZ1bmN0aW9uKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYmVoYXZpb3Igb2YgdGhpcyBgbWNocF9yZHNfcHRwX3Byb2JlYCBmdW5jdGlvbiB1bmRlciB2YXJpb3VzIGNvbmRpdGlvbnMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGtub3cgd2hhdCBoYXBwZW5zIGlmIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGlzIGVpdGhlciBkaXNhYmxlZCwgY29tcGxldGVseSB1bmNvbmZpZ3VyZWQsIG9yIGlmLCBwb3RlbnRpYWxseSwgdGhlIGBwcml2LSZndDtjbG9ja2AgcG9pbnRlciB3aXRoaW4gdGhlIHJlbGV2YW50IHN0cnVjdHVyZSBlbmRzIHVwIGJlaW5nIE5VTEwuIFRoZXNlIGFyZSBhbGwgY3JpdGljYWwgZWRnZSBjYXNlcyB0aGF0IG5lZWQgdG8gYmUgaGFuZGxlZCBncmFjZWZ1bGx5LiBJJiMzOTt2ZSBnb3QgdG8gZW5zdXJlIHRoZSBjb2RlJiMzOTtzIHJvYnVzdCBpbiB0aG9zZSBzY2VuYXJpb3MuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbiBhbmQgc2VhcmNoIGZvciBpbnN0YW5jZXMgb2YgYG1jaHBfcmRzX3B0cF9wcm9iZWAgaW4gdGhlIGNvZGViYXNlLiBUaGF0JiMzOTtzIHRoZSBiZXN0IHdheSB0byBnZXQgYSBxdWljayBvdmVydmlldyBvZiBpdHMgdXNhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTY6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWNocF9yZHNfcHRwX3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfcmRzX3B0cC5jPTExMzk9c3RhdGljIGludCBtY2hwX3Jkc19wdHBfaW5pdChzdHJ1Y3QgbWNocF9yZHNfcHRwX2Nsb2NrICpjbG9jaylcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuYy0xMjQxLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF9yZHNfcHRwLmM6MTI0MjpzdHJ1Y3QgbWNocF9yZHNfcHRwX2Nsb2NrICptY2hwX3Jkc19wdHBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggbW1kLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF9yZHNfcHRwLmMtMTI0My1cdFx0XHRcdFx0ICAgICAgdTE2IGNsa19iYXNlX2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF9yZHNfcHRwLmMtMTMyNS19XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuYzoxMzI2OkVYUE9SVF9TWU1CT0xfR1BMKG1jaHBfcmRzX3B0cF9wcm9iZSk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuYy0xMzI3LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfcmRzX3B0cC5oPTIwNT1zdHJ1Y3QgbWNocF9yZHNfcHRwX3J4X3RzIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuaC0yMTMtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuaDoyMTQ6c3RydWN0IG1jaHBfcmRzX3B0cF9jbG9jayAqbWNocF9yZHNfcHRwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IG1tZCxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfcmRzX3B0cC5oLTIxNS1cdFx0XHRcdFx0ICAgICAgdTE2IGNsa19iYXNlLCB1MTYgcG9ydF9iYXNlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuaD0yMjA9aXJxcmV0dXJuX3QgbWNocF9yZHNfcHRwX2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IG1jaHBfcmRzX3B0cF9jbG9jayAqY2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfcmRzX3B0cC5oLTIyMy1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfcmRzX3B0cC5oOjIyNDpzdGF0aWMgaW5saW5lIHN0cnVjdCBtY2hwX3Jkc19wdHBfY2xvY2sgKm1jaHBfcmRzX3B0cF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF9yZHNfcHRwLmgtMjI1LVx0XHRcdFx0XHRcdFx0ICAgICpwaHlkZXYsIHU4IG1tZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM9MTI3Nj1zdGF0aWMgaW50IGxhbjg4N3hfcGh5X2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTI4MS1cdGlmICghcHJpdi1cdTAwM2Vpbml0X2RvbmUgXHUwMDI2XHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5ZGV2KSkge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEyODI6XHRcdHByaXYtXHUwMDNlY2xvY2sgPSBtY2hwX3Jkc19wdHBfcHJvYmUocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjgzLVx0XHRcdFx0XHRcdCBNQ0hQX1JEU19QVFBfTFRDX0JBU0VfQUREUixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzA4NAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1pY3JvY2hpcCBMQU44ODd4IFBIWSBEcml2ZXIqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJJiMzOTttIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY2AsIHdoaWNoLCBhcyBJIHVuZGVyc3RhbmQgaXQsIGlzIHRoZSBkcml2ZXIgaW1wbGVtZW50YXRpb24gZm9yIE1pY3JvY2hpcCYjMzk7cyBMQU44ODd4IHNlcmllcyBvZiBhdXRvbW90aXZlIEV0aGVybmV0IFBIWXMuIFNwZWNpZmljYWxseSwgY2hpcHMgbGlrZSB0aGUgTEFOODg3MCBhbmQgTEFOODg3MSwgc3VwcG9ydGluZyBib3RoIDEwMEJBU0UtVDEgYW5kIDEwMDBCQVNFLVQxIHN0YW5kYXJkcy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY29uZmlybSB0aGUgUEhZIElEIGFuZCB0aGUgZHJpdmVyJiMzOTtzIGRlZmluaXRpb24gaXRzZWxmIHdpdGhpbiB0aGF0IGZpbGUuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpZGVudGlmaWVzIGFuZCBsb2FkcyB0aGUgcmlnaHQgZHJpdmVyIGZvciB0aGVzZSBzcGVjaWZpYyBjb21wb25lbnRzLiBUaGlzIGluaXRpYWwgY2hlY2sgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgZHJpdmVyJiMzOTtzIHRhcmdldCBhbmQgZXhwZWN0ZWQgYmVoYXZpb3IgZnJvbSB0aGUgc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE2OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMTAwOlx0XHRpZiAocmMgXHUwMDNjIDApXG4yMTAxOlx0XHRcdHJldHVybiByYztcbjIxMDI6XHRcbjIxMDM6XHRcdHJldHVybiBGSUVMRF9HRVQoVDFfRENRX1NRSV9NU0ssIHJjKTtcbjIxMDQ6XHR9XG4yMTA1Olx0XG4yMTA2Olx0c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MV9waHlfZHJpdmVyW10gPSB7XG4yMTA3Olx0XHR7XG4yMTA4Olx0XHRcdFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOODdYWCksXG4yMTA5Olx0XHRcdC5uYW1lICAgICAgICAgICA9IFwmIzM0O01pY3JvY2hpcCBMQU44N3h4IFQxXCYjMzQ7LFxuMjExMDpcdFx0XHQuZmxhZ3MgICAgICAgICAgPSBQSFlfUE9MTF9DQUJMRV9URVNULFxuMjExMTpcdFx0XHQuZmVhdHVyZXMgICAgICAgPSBQSFlfQkFTSUNfVDFfRkVBVFVSRVMsXG4yMTEyOlx0XHRcdC5jb25maWdfaW5pdFx0PSBsYW44N3h4X2NvbmZpZ19pbml0LFxuMjExMzpcdFx0XHQuY29uZmlnX2ludHIgICAgPSBsYW44N3h4X3BoeV9jb25maWdfaW50cixcbjIxMTQ6XHRcdFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBsYW44N3h4X2hhbmRsZV9pbnRlcnJ1cHQsXG4yMTE1Olx0XHRcdC5zdXNwZW5kICAgICAgICA9IGdlbnBoeV9zdXNwZW5kLFxuMjExNjpcdFx0XHQucmVzdW1lICAgICAgICAgPSBnZW5waHlfcmVzdW1lLFxuMjExNzpcdFx0XHQuY29uZmlnX2FuZWcgICAgPSBsYW44N3h4X2NvbmZpZ19hbmVnLFxuMjExODpcdFx0XHQucmVhZF9zdGF0dXNcdD0gbGFuODd4eF9yZWFkX3N0YXR1cyxcbjIxMTk6XHRcdFx0LmdldF9zcWlcdD0gbGFuODd4eF9nZXRfc3FpLFxuMjEyMDpcdFx0XHQuZ2V0X3NxaV9tYXhcdD0gbGFuODd4eF9nZXRfc3FpX21heCxcbjIxMjE6XHRcdFx0LmNhYmxlX3Rlc3Rfc3RhcnQgPSBsYW44N3h4X2NhYmxlX3Rlc3Rfc3RhcnQsXG4yMTIyOlx0XHRcdC5jYWJsZV90ZXN0X2dldF9zdGF0dXMgPSBsYW44N3h4X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyxcbjIxMjM6XHRcdH0sXG4yMTI0Olx0XHR7XG4yMTI1Olx0XHRcdFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOOTM3WCksXG4yMTI2Olx0XHRcdC5uYW1lXHRcdD0gXCYjMzQ7TWljcm9jaGlwIExBTjkzN3ggVDFcJiMzNDssXG4yMTI3Olx0XHRcdC5mbGFncyAgICAgICAgICA9IFBIWV9QT0xMX0NBQkxFX1RFU1QsXG4yMTI4Olx0XHRcdC5mZWF0dXJlc1x0PSBQSFlfQkFTSUNfVDFfRkVBVFVSRVMsXG4yMTI5Olx0XHRcdC5jb25maWdfaW5pdFx0PSBsYW44N3h4X2NvbmZpZ19pbml0LFxuMjEzMDpcdFx0XHQuY29uZmlnX2ludHIgICAgPSBsYW44N3h4X3BoeV9jb25maWdfaW50cixcbjIxMzE6XHRcdFx0LmhhbmRsZV9pbnRlcnJ1cHQgPSBsYW44N3h4X2hhbmRsZV9pbnRlcnJ1cHQsXG4yMTMyOlx0XHRcdC5zdXNwZW5kXHQ9IGdlbnBoeV9zdXNwZW5kLFxuMjEzMzpcdFx0XHQucmVzdW1lXHRcdD0gZ2VucGh5X3Jlc3VtZSxcbjIxMzQ6XHRcdFx0LmNvbmZpZ19hbmVnICAgID0gbGFuODd4eF9jb25maWdfYW5lZyxcbjIxMzU6XHRcdFx0LnJlYWRfc3RhdHVzXHQ9IGxhbjg3eHhfcmVhZF9zdGF0dXMsXG4yMTM2Olx0XHRcdC5nZXRfc3FpXHQ9IGxhbjg3eHhfZ2V0X3NxaSxcbjIxMzc6XHRcdFx0LmdldF9zcWlfbWF4XHQ9IGxhbjg3eHhfZ2V0X3NxaV9tYXgsXG4yMTM4Olx0XHRcdC5jYWJsZV90ZXN0X3N0YXJ0ID0gbGFuODd4eF9jYWJsZV90ZXN0X3N0YXJ0LFxuMjEzOTpcdFx0XHQuY2FibGVfdGVzdF9nZXRfc3RhdHVzID0gbGFuODd4eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMsXG4yMTQwOlx0XHR9LFxuMjE0MTpcdFx0e1xuMjE0MjpcdFx0XHRQSFlfSURfTUFUQ0hfTU9ERUwoUEhZX0lEX0xBTjg4N1gpLFxuMjE0MzpcdFx0XHQubmFtZVx0XHQ9IFwmIzM0O01pY3JvY2hpcCBMQU44ODd4IFQxIFBIWVwmIzM0OyxcbjIxNDQ6XHRcdFx0LmZsYWdzICAgICAgICAgID0gUEhZX1BPTExfQ0FCTEVfVEVTVCxcbjIxNDU6XHRcdFx0LnByb2JlXHRcdD0gbGFuODg3eF9wcm9iZSxcbjIxNDY6XHRcdFx0LmdldF9mZWF0dXJlc1x0PSBsYW44ODd4X2dldF9mZWF0dXJlcyxcbjIxNDc6XHRcdFx0LmNvbmZpZ19pbml0ICAgID0gbGFuODg3eF9waHlfaW5pdCxcbjIxNDg6XHRcdFx0LmNvbmZpZ19hbmVnICAgID0gbGFuODg3eF9jb25maWdfYW5lZyxcbjIxNDk6XHRcdFx0LmdldF9zdGF0cyAgICAgID0gbGFuODg3eF9nZXRfc3RhdHMsXG4yMTUwOlx0XHRcdC5nZXRfc3NldF9jb3VudCA9IGxhbjg4N3hfZ2V0X3NzZXRfY291bnQsXG4yMTUxOlx0XHRcdC5nZXRfc3RyaW5ncyAgICA9IGxhbjg4N3hfZ2V0X3N0cmluZ3MsXG4yMTUyOlx0XHRcdC5zdXNwZW5kXHQ9IGdlbnBoeV9zdXNwZW5kLFxuMjE1MzpcdFx0XHQucmVzdW1lXHRcdD0gZ2VucGh5X3Jlc3VtZSxcbjIxNTQ6XHRcdFx0LnJlYWRfc3RhdHVzXHQ9IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMsXG4yMTU1Olx0XHRcdC5jYWJsZV90ZXN0X3N0YXJ0ID0gbGFuODg3eF9jYWJsZV90ZXN0X3N0YXJ0LFxuMjE1NjpcdFx0XHQuY2FibGVfdGVzdF9nZXRfc3RhdHVzID0gbGFuODg3eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMsXG4yMTU3Olx0XHRcdC5jb25maWdfaW50ciAgICA9IGxhbjg4N3hfY29uZmlnX2ludHIsXG4yMTU4Olx0XHRcdC5oYW5kbGVfaW50ZXJydXB0ID0gbGFuODg3eF9oYW5kbGVfaW50ZXJydXB0LFxuMjE1OTpcdFx0XHQuZ2V0X3NxaVx0PSBsYW44ODd4X2dldF9zcWksXG4yMTYwOlx0XHRcdC5nZXRfc3FpX21heFx0PSBsYW44N3h4X2dldF9zcWlfbWF4LFxuMjE2MTpcdFx0XHQuc2V0X2xvb3BiYWNrXHQ9IGdlbnBoeV9jNDVfbG9vcGJhY2ssXG4yMTYyOlx0XHR9XG4yMTYzOlx0fTtcbjIxNjQ6XHRcbjIxNjU6XHRtb2R1bGVfcGh5X2RyaXZlcihtaWNyb2NoaXBfdDFfcGh5X2RyaXZlcik7XG4yMTY2Olx0XG4yMTY3Olx0c3RhdGljIHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBtaWNyb2NoaXBfdDFfdGJsW10gPSB7XG4yMTY4Olx0XHR7IFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOODdYWCkgfSxcbjIxNjk6XHRcdHsgUEhZX0lEX01BVENIX01PREVMKFBIWV9JRF9MQU45MzdYKSB9LFxuMjE3MDpcdFx0eyBQSFlfSURfTUFUQ0hfTU9ERUwoUEhZX0lEX0xBTjg4N1gpIH0sXG4yMTcxOlx0XHR7IH1cbjIxNzI6XHR9O1xuMjE3MzpcdFxuMjE3NDpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgbWljcm9jaGlwX3QxX3RibCk7XG4yMTc1Olx0XG4yMTc2Olx0TU9EVUxFX0FVVEhPUihEUklWRVJfQVVUSE9SKTtcbjIxNzc6XHRNT0RVTEVfREVTQ1JJUFRJT04oRFJJVkVSX0RFU0MpO1xuMjE3ODpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE2OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0OTYwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgTURJTyBQSFkgRHJpdmVyIEZ1enppbmcgTGFuZHNjYXBlKioKCk9rYXksIHNvIHRoZSBxdWVzdGlvbiBpczogY2FuIEkgZWZmZWN0aXZlbHkgZnV6eiBhbiBNRElPIFBIWSBkcml2ZXIgdXNpbmcgc3RhbmRhcmQgZnV6emluZyBzZXR1cHM/IFNwZWNpZmljYWxseSwgY2FuIEkgcmVhY2ggaXQgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIHdoaWNoIGlzIGNydWNpYWwgZm9yIHJlcHJvZHVjaWJpbGl0eSBhbmQgc2NhbGFiaWxpdHk/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXNlIGRyaXZlcnMgYXJlIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50LgoKRmlyc3QsIGxldCBtZSBjaGVjayB0aGUgcG90ZW50aWFsIGVudHJ5IHBvaW50cy4gQ2FuIEkgaW5zdGFudGlhdGUgTURJTyBQSFkgZGV2aWNlcywgb3IgdGhlIGBtaWNyb2NoaXBfdDFgIHNwZWNpZmljYWxseSwgdGhyb3VnaCBtZXRob2RzIGxpa2UgbmV0bGluaywgY3JlYXRpbmcgdmlydHVhbCBkZXZpY2VzLCBvciBzeXNmcyBpbnRlcmZhY2VzPyBPciBhbSBJIGdvaW5nIHRvIGJlIHN0dWNrIG5lZWRpbmcgYSByZWFsIE1ESU8gYnVzIGNvbm5lY3Rpb24gdG8gTWljcm9jaGlwIExBTjg4N3ggaGFyZHdhcmUsIHdoaWNoIHdvdWxkIGJlIGEgaHVnZSBjb25zdHJhaW50PwoKQWgsIHNlY3Rpb24gdHdvIG9mIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsuICBUaGlzIGluY2x1ZGVzIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIGFuZCBHUFUgZHJpdmVycy4gIFRoaW5ncyB0aGF0IG5lZWQgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLiBUaGlzIG1ha2VzIG1lIGNvbnNpZGVyIGlmIE1ESU8gUEhZIGRyaXZlcnMgZmFsbCBpbnRvIHRoZSBzYW1lIGNhdGVnb3J5LCByZXF1aXJpbmcgcGh5c2ljYWwgYWNjZXNzIHRvIHRoZSBNRElPIGJ1cy4gQ2FuIEkgZXZlbiAqcHJvYmUqIHRoZXNlIGRyaXZlcnMgaW4gUUVNVT8KCldhaXQgYSBtaW51dGUsIEkgbmVlZCB0byByZW1lbWJlciB0aGUgTGludXgga2VybmVsIE1ESU8vUEhZIHN1YnN5c3RlbSBhcmNoaXRlY3R1cmUuIEhvdyBhcmUgUEhZIGRyaXZlcnMgYWN0dWFsbHkgcHJvYmVkIGFuZCBhdHRhY2hlZD8gUmlnaHQsIHRoZXkgbWF0Y2ggYmFzZWQgb24gdGhlIE1ESU8gUEhZIElELCB3aGljaCBpcyByZWFkIGZyb20gdGhlIE1ESU8gYnVzJiMzOTtzIE1JSSByZWdpc3RlcnMuIFRoYXQgSUQgb3JpZ2luYXRlcyBmcm9tIHRoZSBwaHlzaWNhbCBQSFkgaGFyZHdhcmUsIG9yIGZyb20gc29tZXRoaW5nIGxpa2UgYSBmaXhlZC1saW5rLCBvciBgbWRpby1ncGlvYCwgZXRjLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVzZSBpbnRlcmFjdGlvbnMgY2FuIGJlIGVtdWxhdGVkIG9yIHJlcHJvZHVjZWQgdGhyb3VnaCB0b29scyBsaWtlIHN5emthbGxlciwgdmlydHVhbCBpbnRlcmZhY2VzLCBvciBtb2Nrcy4KCkxldCYjMzk7cyBzZWUuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHNlYXJjaCB0aGUga2VybmVsIHNvdXJjZSBjb2RlIGRpcmVjdGx5IGZvciBpbnN0YW5jZXMgb2YgYG1kaW9gIGFuZCBgcGh5YCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSB1c2VkIGluIHByYWN0aWNlLiBUaGlzIHdpbGwgaGVscCBkZXRlcm1pbmUgaWYgSSBuZWVkIHRvIGJ1aWxkIGEgc3BlY2lhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudCwgb3IgaWYgdGhlcmUgaXMgc29tZXRoaW5nIEkgY2FuIHVzZSBpbiBzeXprYWxsZXIgdG8gcmVhY2ggdGhpcyBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE2OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW9fYml0YmFuZ3xtZGlvLWdwaW98bWRpb19idXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjI5MSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MzIxPXN0YXRpYyBpbnQga3N6OTQ3N19wY3NfY3JlYXRlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzMyLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MzMzOlx0YnVzLVx1MDAzZW5hbWUgPSBcJiMzNDtrc3pfcGNzX21kaW9fYnVzXCYjMzQ7O1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzM0LVx0c25wcmludGYoYnVzLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwmIzM0OyVzLXBjc1wmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMTI1PWludCBrc3pfcGFyZW50X21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMTI4LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjEyOTpcdHJldHVybiBtZGlvYnVzX3JlYWRfbmVzdGVkKGRldi1cdTAwM2VwYXJlbnRfbWRpb19idXMsIGFkZHIsIHJlZ251bSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMTMwLX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMTQ1PWludCBrc3pfcGFyZW50X21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0sIHUxNiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjE0OC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIxNDk6XHRyZXR1cm4gbWRpb2J1c193cml0ZV9uZXN0ZWQoZGV2LVx1MDAzZXBhcmVudF9tZGlvX2J1cywgYWRkciwgcmVnbnVtLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjE1MC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MjMyMT1pbnQga3N6X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMzQ3LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjM0ODpcdFx0ZGV2LVx1MDAzZXBhcmVudF9tZGlvX2J1cyA9IHBhcmVudF9idXM7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yMzQ5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTIwNj1zdHJ1Y3Qga3N6X2RldmljZSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMjU4LVx0LyoqXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDoyNTk6XHQgKiBAcGFyZW50X21kaW9fYnVzOiBQb2ludGVyIHRvIHRoZSBleHRlcm5hbCBNRElPIGJ1cyBjb250cm9sbGVyLlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMjYwLVx0ICpcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0yNjUtXHQgKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjI2NjpcdHN0cnVjdCBtaWlfYnVzICpwYXJlbnRfbWRpb19idXM7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0yNjctXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz0xNDM9c3RhdGljIGludCBsYW45Mzd4X2NyZWF0ZV9waHlfYWRkcl9tYXAoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgYm9vbCBzaWRlX21kaW8pXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy0yMTAtLyoqXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjIxMTogKiBsYW45Mzd4X21kaW9fYnVzX3ByZWluaXQgLSBQcmUtaW5pdGlhbGl6ZSBNRElPIGJ1cyBmb3IgYWNjZXNzaW5nIFBIWXMuXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTIxMi0gKiBAZGV2OiBQb2ludGVyIHRvIGRldmljZSBzdHJ1Y3R1cmUuXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy0yMjYtICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjIyNzpzdGF0aWMgaW50IGxhbjkzN3hfbWRpb19idXNfcHJlaW5pdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBib29sIHNpZGVfbWRpbylcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtMjI4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jPTY4NT1zdGF0aWMgaW50IGxhbjkzN3hfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzExLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3MTI6XHRcdGRldi1cdTAwM2VwYXJlbnRfbWRpb19idXMgPSBwYXJlbnRfYnVzO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03MTMtXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03MjAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjcyMTpcdHJldCA9IGxhbjkzN3hfbWRpb19idXNfcHJlaW5pdChkZXYsICEhcGFyZW50X2J1cyk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTcyMi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MTI2PWludCBtdjg4ZTZ4eHhfd2FpdF9iaXQoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzM6c3RydWN0IG1paV9idXMgKm12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzNC17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzU6XHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cztcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzNi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzNzpcdG1kaW9fYnVzID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFx1MDAyNmNoaXAtXHUwMDNlbWRpb3MsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzg6XHRcdFx0XHRcdCAgICBzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzLCBsaXN0KTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzOTpcdGlmICghbWRpb19idXMpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDAtXHRcdHJldHVybiBOVUxMO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTQyOlx0cmV0dXJuIG1kaW9fYnVzLVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0My19XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9Mzc1Nz1zdGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeSwgaW50IHJlZylcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3NTgte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc1OTpcdHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMgKm1kaW9fYnVzID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNzYwOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gbWRpb19idXMtXHUwMDNlY2hpcDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3NjEtXHR1MTYgcHJvZF9pZDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz0zNzgzPXN0YXRpYyBpbnQgbXY4OGU2eHh4X21kaW9fcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeSwgaW50IGRldmFkLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3ODUte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc4NjpcdHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMgKm1kaW9fYnVzID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNzg3Olx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gbWRpb19idXMtXHUwMDNlY2hpcDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3ODgtXHR1MTYgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM4MDE9c3RhdGljIGludCBtdjg4ZTZ4eHhfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgcmVnLCB1MTYgdmFsKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgwMi17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODAzOlx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXMgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MDQ6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBtZGlvX2J1cy1cdTAwM2VjaGlwO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgwNS1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MzgxNz1zdGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgZGV2YWQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgxOS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODIwOlx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXMgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MjE6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBtZGlvX2J1cy1cdTAwM2VjaGlwO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgyMi1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MzgzND1zdGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODM4LVx0c3RhdGljIGludCBpbmRleDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4Mzk6XHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cztcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4NDAtXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4NTQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODU1Olx0YnVzID0gbWRpb2J1c19hbGxvY19zaXplKHNpemVvZigqbWRpb19idXMpKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4NTYtXHRpZiAoIWJ1cylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODU4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg1OTpcdG1kaW9fYnVzID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODYwOlx0bWRpb19idXMtXHUwMDNlYnVzID0gYnVzO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg2MTpcdG1kaW9fYnVzLVx1MDAzZWNoaXAgPSBjaGlwO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg2MjpcdElOSVRfTElTVF9IRUFEKFx1MDAyNm1kaW9fYnVzLVx1MDAzZWxpc3QpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg2MzpcdG1kaW9fYnVzLVx1MDAzZWV4dGVybmFsID0gZXh0ZXJuYWw7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODY0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4OTUtXHRpZiAoZXh0ZXJuYWwpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODk2Olx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNm1kaW9fYnVzLVx1MDAzZWxpc3QsIFx1MDAyNmNoaXAtXHUwMDNlbWRpb3MpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg5Ny1cdGVsc2VcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4OTg6XHRcdGxpc3RfYWRkKFx1MDAyNm1kaW9fYnVzLVx1MDAzZWxpc3QsIFx1MDAyNmNoaXAtXHUwMDNlbWRpb3MpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg5OS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz0zOTA3PXN0YXRpYyB2b2lkIG12ODhlNnh4eF9tZGlvc191bnJlZ2lzdGVyKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTA5LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM5MTA6XHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cywgKnA7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTExLVx0c3RydWN0IG1paV9idXMgKmJ1cztcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5MTItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTEzOlx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1kaW9fYnVzLCBwLCBcdTAwMjZjaGlwLVx1MDAzZW1kaW9zLCBsaXN0KSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTE0Olx0XHRidXMgPSBtZGlvX2J1cy1cdTAwM2VidXM7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTE1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzkxNjpcdFx0aWYgKCFtZGlvX2J1cy1cdTAwM2VleHRlcm5hbClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5MTctXHRcdFx0bXY4OGU2eHh4X2cyX2lycV9tZGlvX2ZyZWUoY2hpcCwgYnVzKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz0zOTgwPXN0YXRpYyBpbnQgbXY4OGU2eHh4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTkxLVx0Y2hpcC1cdTAwM2VkcyA9IGRzO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzk5MjpcdGRzLVx1MDAzZXVzZXJfbWlpX2J1cyA9IG12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk5My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaD00ODg9c3RydWN0IG12ODhlNnh4eF9idXNfb3BzIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaC00OTMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaDo0OTQ6c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaC00OTUtXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oPTg3Mz1pbnQgbXY4OGU2eHh4X3dhaXRfYml0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaC04NzQtXHRcdCAgICAgICBpbnQgYml0LCBpbnQgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oOjg3NTpzdHJ1Y3QgbWlpX2J1cyAqbXY4OGU2eHh4X2RlZmF1bHRfbWRpb19idXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oLTg3Ni1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYz03ODc9aW50IG12ODhlNnh4eF9nMl9zbWlfcGh5X3JlYWRfYzIyKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYy03OTAte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmM6NzkxOlx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXMgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jOjc5MjpcdGJvb2wgZXh0ZXJuYWwgPSBtZGlvX2J1cy1cdTAwM2VleHRlcm5hbDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jLTc5My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYz03OTg9aW50IG12ODhlNnh4eF9nMl9zbWlfcGh5X3JlYWRfYzQ1KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYy04MDEte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmM6ODAyOlx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXMgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jOjgwMzpcdGJvb2wgZXh0ZXJuYWwgPSBtZGlvX2J1cy1cdTAwM2VleHRlcm5hbDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jLTgwNC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYz04MDk9aW50IG12ODhlNnh4eF9nMl9zbWlfcGh5X3dyaXRlX2MyMihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmMtODEyLXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jOjgxMzpcdHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMgKm1kaW9fYnVzID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYzo4MTQ6XHRib29sIGV4dGVybmFsID0gbWRpb19idXMtXHUwMDNlZXh0ZXJuYWw7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYy04MTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmM9ODIwPWludCBtdjg4ZTZ4eHhfZzJfc21pX3BoeV93cml0ZV9jNDUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jLTgyMy17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYzo4MjQ6XHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cyA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmM6ODI1Olx0Ym9vbCBleHRlcm5hbCA9IG1kaW9fYnVzLVx1MDAzZWV4dGVybmFsO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmMtODI2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzNTIuYz0zMjQ9c3RhdGljIGludCBtdjg4ZTYzNTJfcGNzX2luaXQoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02MzUyLmMtMzM2LVx0aXJxID0gbXY4OGU2eHh4X3NlcmRlc19pcnFfbWFwcGluZyhjaGlwLCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzNTIuYzozMzc6XHRidXMgPSBtdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzNTIuYy0zMzgtXHRkZXYgPSBjaGlwLVx1MDAzZWRldjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02Mzl4LmM9NTQ5PXN0YXRpYyBpbnQgbXY4OGU2MzkwX3Bjc19pbml0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wY3MtNjM5eC5jLTU1OS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzOXguYzo1NjA6XHRidXMgPSBtdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzOXguYy01NjEtXHRkZXYgPSBjaGlwLVx1MDAzZWRldjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02Mzl4LmM9OTI3PXN0YXRpYyBpbnQgbXY4OGU2MzkzeF9wY3NfaW5pdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzOXguYy05MzctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02Mzl4LmM6OTM4Olx0YnVzID0gbXY4OGU2eHh4X2RlZmF1bHRfbWRpb19idXMoY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02Mzl4LmMtOTM5LVx0ZGV2ID0gY2hpcC1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYz0yOD1pbnQgbXY4OGU2eHh4X3BoeV9yZWFkKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBoeSwgaW50IHJlZywgdTE2ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYy0zMi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmM6MzM6XHRidXMgPSBtdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmMtMzQtXHRpZiAoIWJ1cylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BoeS5jPTQzPWludCBtdjg4ZTZ4eHhfcGh5X3dyaXRlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBoeSwgaW50IHJlZywgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BoeS5jLTQ3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYzo0ODpcdGJ1cyA9IG12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYy00OS1cdGlmICghYnVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmM9NTg9aW50IG12ODhlNnh4eF9waHlfcmVhZF9jNDUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcGh5LCBpbnQgZGV2YWQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYy02My1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmM6NjQ6XHRidXMgPSBtdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmMtNjUtXHRpZiAoIWJ1cylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BoeS5jPTc0PWludCBtdjg4ZTZ4eHhfcGh5X3dyaXRlX2M0NShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwaHksIGludCBkZXZhZCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BoeS5jLTc5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYzo4MDpcdGJ1cyA9IG12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYy04MS1cdGlmICghYnVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jPTEzMz1zdGF0aWMgaW50IG5ldGNfcG9ydF9nZXRfaW5mb19mcm9tX2R0KHN0cnVjdCBuZXRjX3BvcnQgKm5wLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE0OC1cbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jOjE0OTpzdGF0aWMgaW50IG5ldGNfcG9ydF9jcmVhdGVfZW1kaW9fYnVzKHN0cnVjdCBuZXRjX3BvcnQgKm5wLFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTUwLVx0XHRcdFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpub2RlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE4OS1cbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jOjE5MDpzdGF0aWMgaW50IG5ldGNfcG9ydF9jcmVhdGVfbWRpb19idXMoc3RydWN0IG5ldGNfcG9ydCAqbnAsXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0xOTEtXHRcdFx0XHQgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0xOTctXHRpZiAobWRpb19ub2RlKSB7XG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoxOTg6XHRcdGVyciA9IG5ldGNfcG9ydF9jcmVhdGVfZW1kaW9fYnVzKG5wLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTk5LVx0XHRvZl9ub2RlX3B1dChtZGlvX25vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jPTI0MT1zdGF0aWMgaW50IG5ldGNfaW5pdF9hbGxfcG9ydHMoc3RydWN0IG5ldGNfc3dpdGNoICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTI4My1cdFx0aWYgKGRzYV9wb3J0X2lzX3VzZXIoZHApKSB7XG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoyODQ6XHRcdFx0ZXJyID0gbmV0Y19wb3J0X2NyZWF0ZV9tZGlvX2J1cyhucCwgZHAtXHUwMDNlZG4pO1xuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMjg1LVx0XHRcdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM9MTUxNz1zdGF0aWMgaW50IGZlbGl4X2luaXRfc3RydWN0cyhzdHJ1Y3QgZmVsaXggKmZlbGl4LCBpbnQgbnVtX3BoeXNfcG9ydHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTE2MDItXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM6MTYwMzpcdGlmIChmZWxpeC1cdTAwM2VpbmZvLVx1MDAzZW1kaW9fYnVzX2FsbG9jKSB7XG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM6MTYwNDpcdFx0ZXJyID0gZmVsaXgtXHUwMDNlaW5mby1cdTAwM2VtZGlvX2J1c19hbGxvYyhvY2Vsb3QpO1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTE2MDUtXHRcdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jPTE2OTY9c3RhdGljIGludCBmZWxpeF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTE3Njgtb3V0X21kaW9idXNfZnJlZTpcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoxNzY5Olx0aWYgKGZlbGl4LVx1MDAzZWluZm8tXHUwMDNlbWRpb19idXNfZnJlZSlcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoxNzcwOlx0XHRmZWxpeC1cdTAwM2VpbmZvLVx1MDAzZW1kaW9fYnVzX2ZyZWUob2NlbG90KTtcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0xNzcxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYz0xNzc1PXN0YXRpYyB2b2lkIGZlbGl4X3RlYXJkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMTc5Mi1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoxNzkzOlx0aWYgKGZlbGl4LVx1MDAzZWluZm8tXHUwMDNlbWRpb19idXNfZnJlZSlcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoxNzk0Olx0XHRmZWxpeC1cdTAwM2VpbmZvLVx1MDAzZW1kaW9fYnVzX2ZyZWUob2NlbG90KTtcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0xNzk1LX1cbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4Lmg9MjI9c3RydWN0IGZlbGl4X2luZm8ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguaC01NS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguaDo1NjpcdGludFx0KCptZGlvX2J1c19hbGxvYykoc3RydWN0IG9jZWxvdCAqb2NlbG90KTtcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguaDo1NzpcdHZvaWRcdCgqbWRpb19idXNfZnJlZSkoc3RydWN0IG9jZWxvdCAqb2NlbG90KTtcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguaC01OC1cdGludFx0KCpwb3J0X3NldHVwX3RjKShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jPTk1MT1zdGF0aWMgdm9pZCB2c2M5OTU5X3dtX3N0YXQodTMyIHZhbCwgdTMyICppbnVzZSwgdTMyICptYXh1c2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtOTU2LVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM6OTU3OnN0YXRpYyBpbnQgdnNjOTk1OV9tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy05NTgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTEwNDQtXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoxMDQ1OnN0YXRpYyB2b2lkIHZzYzk5NTlfbWRpb19idXNfZnJlZShzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDQ2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYz0yNjU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVsaXhfaW5mbyBmZWxpeF9pbmZvX3ZzYzk5NTkgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMjY3NS1cdC5wdHBfY2Fwc1x0XHQ9IFx1MDAyNnZzYzk5NTlfcHRwX2NhcHMsXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoyNjc2Olx0Lm1kaW9fYnVzX2FsbG9jXHRcdD0gdnNjOTk1OV9tZGlvX2J1c19hbGxvYyxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jOjI2Nzc6XHQubWRpb19idXNfZnJlZVx0XHQ9IHZzYzk5NTlfbWRpb19idXNfZnJlZSxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTI2NzgtXHQucG9ydF9tb2Rlc1x0XHQ9IHZzYzk5NTlfcG9ydF9tb2Rlcyxcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jPTg2OT1zdGF0aWMgY29uc3Qgc3RydWN0IG9jZWxvdF9vcHMgdnNjOTk1M19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy04NzctXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jOjg3ODpzdGF0aWMgaW50IHZzYzk5NTNfbWRpb19idXNfYWxsb2Moc3RydWN0IG9jZWxvdCAqb2NlbG90KVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy04Nzkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTM0LVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYzo5MzU6c3RhdGljIHZvaWQgdnNjOTk1M19tZGlvX2J1c19mcmVlKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTM2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jPTk1MD1zdGF0aWMgY29uc3Qgc3RydWN0IGZlbGl4X2luZm8gc2V2aWxsZV9pbmZvX3ZzYzk5NTMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05NjQtXHQubnVtX3BvcnRzXHRcdD0gVlNDOTk1M19OVU1fUE9SVFMsXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jOjk2NTpcdC5tZGlvX2J1c19hbGxvY1x0XHQ9IHZzYzk5NTNfbWRpb19idXNfYWxsb2MsXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jOjk2NjpcdC5tZGlvX2J1c19mcmVlXHRcdD0gdnNjOTk1M19tZGlvX2J1c19mcmVlLFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05NjctXHQucG9ydF9tb2Rlc1x0XHQ9IHZzYzk5NTNfcG9ydF9tb2Rlcyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz03OTM9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6Nzk0OnFjYThrX21kaW9fYnVzeV93YWl0KHN0cnVjdCBtaWlfYnVzICpidXMsIHUzMiByZWcsIHUzMiBtYXNrKVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtNzk1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz04MTY9cWNhOGtfbWRpb193cml0ZShzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSwgdTE2IGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtODQwLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6ODQxOlx0cmV0ID0gcWNhOGtfbWRpb19idXN5X3dhaXQoYnVzLCBRQ0E4S19NRElPX01BU1RFUl9DVFJMLFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtODQyLVx0XHRcdFx0ICAgUUNBOEtfTURJT19NQVNURVJfQlVTWSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM9ODU0PXFjYThrX21kaW9fcmVhZChzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy04NzctXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzo4Nzg6XHRyZXQgPSBxY2E4a19tZGlvX2J1c3lfd2FpdChidXMsIFFDQThLX01ESU9fTUFTVEVSX0NUUkwsXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy04NzktXHRcdFx0XHQgICBRQ0E4S19NRElPX01BU1RFUl9CVVNZKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz05NDc9cWNhOGtfbWRpb19yZWdpc3RlcihzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy05NjQtXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzo5NjU6XHRwcml2LVx1MDAzZWludGVybmFsX21kaW9fYnVzID0gYnVzO1xuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtOTY2LVx0YnVzLVx1MDAzZXByaXYgPSAodm9pZCAqKXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM9OTk0PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jOjk5NTpxY2E4a19zZXR1cF9tZGlvX2J1cyhzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk5Ni17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM9MTg0Mz1xY2E4a19zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtMTg2MC1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jOjE4NjE6XHRyZXQgPSBxY2E4a19zZXR1cF9tZGlvX2J1cyhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTE4NjItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstbGVkcy5jPTM2NT1xY2E4a19wYXJzZV9wb3J0X2xlZHMoc3RydWN0IHFjYThrX3ByaXYgKnByaXYsIHN0cnVjdCBmd25vZGVfaGFuZGxlICpwb3J0LCBpbnQgcG9ydF9udW0pXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay1sZWRzLmMtNDMxLVx0XHRpbml0X2RhdGEuZGV2aWNlbmFtZSA9IGthc3ByaW50ZihHRlBfS0VSTkVMLCBcJiMzNDslczowJWRcJiMzNDssXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLWxlZHMuYzo0MzI6XHRcdFx0XHRcdFx0IHByaXYtXHUwMDNlaW50ZXJuYWxfbWRpb19idXMgP1xuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay1sZWRzLmM6NDMzOlx0XHRcdFx0XHRcdCBwcml2LVx1MDAzZWludGVybmFsX21kaW9fYnVzLVx1MDAzZWlkIDogcHJpdi1cdTAwM2VidXMtXHUwMDNlaWQsXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLWxlZHMuYy00MzQtXHRcdFx0XHRcdFx0IHBvcnRfbnVtKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmg9NDQ1PXN0cnVjdCBxY2E4a19wcml2IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmgtNDU4LVx0c3RydWN0IG1paV9idXMgKmJ1cztcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaDo0NTk6XHRzdHJ1Y3QgbWlpX2J1cyAqaW50ZXJuYWxfbWRpb19idXM7XG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmgtNDYwLVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jPTUyMT1zdGF0aWMgaW50IHZzYzczeHhfZGV0ZWN0KHN0cnVjdCB2c2M3M3h4ICp2c2MpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmMtNjA0LVxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmM6NjA1OnN0YXRpYyBpbnQgdnNjNzN4eF9tZGlvX2J1c3lfY2hlY2soc3RydWN0IHZzYzczeHggKnZzYylcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTYwNi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmM9NjIxPXN0YXRpYyBpbnQgdnNjNzN4eF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwaHksIGludCByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmMtNjI3LVxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmM6NjI4Olx0cmV0ID0gdnNjNzN4eF9tZGlvX2J1c3lfY2hlY2sodnNjKTtcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTYyOS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmMtNjQwLVxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmM6NjQxOlx0cmV0ID0gdnNjNzN4eF9tZGlvX2J1c3lfY2hlY2sodnNjKTtcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTY0Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmM9NjYyPXN0YXRpYyBpbnQgdnNjNzN4eF9waHlfd3JpdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcGh5LCBpbnQgcmVnbnVtLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTY2OC1cbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jOjY2OTpcdHJldCA9IHZzYzczeHhfbWRpb19idXN5X2NoZWNrKHZzYyk7XG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYy02NzAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jPTQ1OT1zdGF0aWMgaW50IGF4X21paV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDY3LVx0YXgtXHUwMDNlYWRkcl9tZW1yID0gZWlfbG9jYWwtXHUwMDNlbWVtICYjNDM7IEFYX01FTVI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo0Njg6XHRheC1cdTAwM2VtaWlfYnVzID0gYWxsb2NfbWRpb19iaXRiYW5nKFx1MDAyNmF4LVx1MDAzZWJiX2N0cmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDY5LVx0aWYgKCFheC1cdTAwM2VtaWlfYnVzKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDgwLVx0aWYgKGVycilcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjQ4MTpcdFx0Z290byBvdXRfZnJlZV9tZGlvX2JpdGJhbmc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy00ODItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDg0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmM6NDg1OiBvdXRfZnJlZV9tZGlvX2JpdGJhbmc6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo0ODY6XHRmcmVlX21kaW9fYml0YmFuZyhheC1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTQ4Ny0gb3V0OlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jPTQ5MT1zdGF0aWMgaW50IGF4X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy01MzQtXHRtZGlvYnVzX3VucmVnaXN0ZXIoYXgtXHUwMDNlbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo1MzU6XHRmcmVlX21kaW9fYml0YmFuZyhheC1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTUzNi0gZmFpbGVkX21paTpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYz01NDA9c3RhdGljIGludCBheF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTU1Ny1cdG1kaW9idXNfdW5yZWdpc3RlcihheC1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjU1ODpcdGZyZWVfbWRpb19iaXRiYW5nKGF4LVx1MDAzZW1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNTU5LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21haW4uaD01MT1zdHJ1Y3QgeGdlX3BkYXRhIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWFpbi5oLTU2LVx0Y2hhciBpcnFfbmFtZVtJUlFfSURfU0laRV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWFpbi5oOjU3Olx0c3RydWN0IG1paV9idXMgKm1kaW9fYnVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21haW4uaC01OC1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM9ODQ9dm9pZCB4Z2VfbWRpb19yZW1vdmUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy04Ni1cdHN0cnVjdCB4Z2VfcGRhdGEgKnBkYXRhID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjg3Olx0c3RydWN0IG1paV9idXMgKm1kaW9fYnVzID0gcGRhdGEtXHUwMDNlbWRpb19idXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTg4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtOTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjkyOlx0aWYgKG1kaW9fYnVzLVx1MDAzZXN0YXRlID09IE1ESU9CVVNfUkVHSVNURVJFRClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6OTM6XHRcdG1kaW9idXNfdW5yZWdpc3RlcihtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzo5NTpcdG1kaW9idXNfZnJlZShtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTk2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jPTk4PWludCB4Z2VfbWRpb19jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMDEtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGF0YS1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTAyOlx0c3RydWN0IG1paV9idXMgKm1kaW9fYnVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMDMtXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTA1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMDY6XHRtZGlvX2J1cyA9IG1kaW9idXNfYWxsb2MoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTA3Olx0aWYgKCFtZGlvX2J1cylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTA4LVx0XHRyZXR1cm4gLUVOT01FTTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMTA6XHRtZGlvX2J1cy1cdTAwM2VuYW1lID0gXCYjMzQ7QVBNIFgtR2VuZSBFdGhlcm5ldCAodjIpIE1ESU8gQnVzXCYjMzQ7O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMTE6XHRtZGlvX2J1cy1cdTAwM2VyZWFkID0geGdlX21kaW9fcmVhZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTEyOlx0bWRpb19idXMtXHUwMDNld3JpdGUgPSB4Z2VfbWRpb193cml0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTEzOlx0bWRpb19idXMtXHUwMDNlcHJpdiA9IHBkYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMTQ6XHRtZGlvX2J1cy1cdTAwM2VwYXJlbnQgPSBkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjExNTpcdHNucHJpbnRmKG1kaW9fYnVzLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwmIzM0OyVzLW1paVwmIzM0OywgZGV2X25hbWUoZGV2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjExNjpcdHBkYXRhLVx1MDAzZW1kaW9fYnVzID0gbWRpb19idXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTExNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTE4Olx0bWRpb19idXMtXHUwMDNlcGh5X21hc2sgPSAweDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjExOTpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWRpb19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMjAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMjM6XHRwaHlkZXYgPSBwaHlfZmluZF9maXJzdChtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTEyNC1cdGlmICghcGh5ZGV2KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz05Mzk9aW50IHhnZW5lX2VuZXRfbWRpb19jb25maWcoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTQxLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBwZGF0YS1cdTAwM2VuZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NDI6XHRzdHJ1Y3QgbWlpX2J1cyAqbWRpb19idXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk0My1cdGludCByZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTQ1Olx0bWRpb19idXMgPSBtZGlvYnVzX2FsbG9jKCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk0NjpcdGlmICghbWRpb19idXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk0Ny1cdFx0cmV0dXJuIC1FTk9NRU07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk0OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTQ5Olx0bWRpb19idXMtXHUwMDNlbmFtZSA9IFwmIzM0O0FQTSBYLUdlbmUgTURJTyBidXNcJiMzNDs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk1MDpcdG1kaW9fYnVzLVx1MDAzZXJlYWQgPSB4Z2VuZV9tZGlvX3JnbWlpX3JlYWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk1MTpcdG1kaW9fYnVzLVx1MDAzZXdyaXRlID0geGdlbmVfbWRpb19yZ21paV93cml0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTUyOlx0c25wcmludGYobWRpb19idXMtXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXCYjMzQ7JXMtJXNcJiMzNDssIFwmIzM0O3hnZW5lLW1paVwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTUzLVx0XHQgbmRldi1cdTAwM2VuYW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NTU6XHRtZGlvX2J1cy1cdTAwM2Vwcml2ID0gKHZvaWQgX19mb3JjZSAqKXBkYXRhLVx1MDAzZW1jeF9tYWNfYWRkcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTU2Olx0bWRpb19idXMtXHUwMDNlcGFyZW50ID0gXHUwMDI2cGRhdGEtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTU4Olx0cmV0ID0geGdlbmVfbWRpb2J1c19yZWdpc3RlcihwZGF0YSwgbWRpb19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NTktXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk2MC1cdFx0bmV0ZGV2X2VycihuZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgTURJTyBidXNcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NjE6XHRcdG1kaW9idXNfZnJlZShtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk2Mi1cdFx0cmV0dXJuIHJldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTYzLVx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NjQ6XHRwZGF0YS1cdTAwM2VtZGlvX2J1cyA9IG1kaW9fYnVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NjUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz05ODE9dm9pZCB4Z2VuZV9lbmV0X21kaW9fcmVtb3ZlKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTg4Olx0bWRpb2J1c191bnJlZ2lzdGVyKHBkYXRhLVx1MDAzZW1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTg5Olx0bWRpb2J1c19mcmVlKHBkYXRhLVx1MDAzZW1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTkwOlx0cGRhdGEtXHUwMDNlbWRpb19idXMgPSBOVUxMO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05OTEtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X21haW4uaD0xODQ9c3RydWN0IHhnZW5lX2VuZXRfcGRhdGEge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5oLTE4NS1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5oOjE4NjpcdHN0cnVjdCBtaWlfYnVzICptZGlvX2J1cztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X21haW4uaC0xODctXHRpbnQgcGh5X3NwZWVkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX3BoeS5jLTExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfcGh5LmM6MTI6Ym9vbCBhcV9tZGlvX2J1c3lfd2FpdChzdHJ1Y3QgYXFfaHdfcyAqYXFfaHcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYy0xMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfcGh5LmMtMTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYzoxNzpcdGVyciA9IHJlYWR4X3BvbGxfdGltZW91dF9hdG9taWMoaHdfYXRsX21kaW9fYnVzeV9nZXQsIGFxX2h3LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfcGh5LmMtMTgtXHRcdFx0XHRcdHZhbCwgdmFsID09IDBVLCAxMFUsIDEwMDAwMFUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX3BoeS5jPTI2PXUxNiBhcV9tZGlvX3JlYWRfd29yZChzdHJ1Y3QgYXFfaHdfcyAqYXFfaHcsIHUxNiBtbWQsIHUxNiBhZGRyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX3BoeS5jLTM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfcGh5LmM6Mzk6XHRhcV9tZGlvX2J1c3lfd2FpdChhcV9odyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYy00MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYy00Ni1cdC8qIFJlYWQgcmVzdWx0LiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfcGh5LmM6NDc6XHRhcV9tZGlvX2J1c3lfd2FpdChhcV9odyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYy00OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYz01Mj12b2lkIGFxX21kaW9fd3JpdGVfd29yZChzdHJ1Y3QgYXFfaHdfcyAqYXFfaHcsIHUxNiBtbWQsIHUxNiBhZGRyLCB1MTYgZGF0YSlcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTU3MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIGl0OgoKKipBbmFseXppbmcgdGhlIE1pY3JvY2hpcCBUMSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYG1pY3JvY2hpcF90MS5jYCBkcml2ZXIgaXMgaW50ZWdyYXRlZC4gRmlyc3QsIEkmIzM5O20gZ29pbmcgdG8gcHVsbCB1cCB0aGF0IHNvdXJjZSBmaWxlLCBhbmQgdGhlbiBJJiMzOTttIGFsc28gZ29pbmcgdG8gZXhhbWluZSBpdHMgY29ycmVzcG9uZGluZyBLY29uZmlnIGVudHJ5LiBUaGUgS2NvbmZpZywgb2J2aW91c2x5LCBpcyBjcnVjaWFsIGZvciBkZXRlcm1pbmluZyBob3cgaXQmIzM5O3MgY29uZmlndXJlZCwgaWYgaXQmIzM5O3MgZXZlbiBlbmFibGVkLCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZS4gVW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyBlbnRyeSBpcyBnb2luZyB0byBnaXZlIG1lIHRoZSBiaWcgcGljdHVyZSBvZiBob3cgdGhpcyBkcml2ZXIgZml0cyBpbnRvIHRoZSBicm9hZGVyIGJ1aWxkIHN5c3RlbSBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIGF2YWlsYWJsZS4gSSBuZWVkIHRvIGlkZW50aWZ5IGl0cyByb2xlLiBUaGlzIGlzIHdoZXJlIEkgc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE2OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01JQ1JPQ0hJUF9UMV9QSFkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MzM2PWNvbmZpZyBNSUNST0NISVBfUEhZXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMzQwLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MzQxOmNvbmZpZyBNSUNST0NISVBfVDFfUEhZXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0zNDItXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb2NoaXAgVDEgUEhZc1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT04MT1vYmotJChDT05GSUdfTUlDUk9DSElQX1BIWV9SRFNfUFRQKVx0JiM0Mzs9IG1pY3JvY2hpcF9yZHNfcHRwLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo4MjpvYmotJChDT05GSUdfTUlDUk9DSElQX1QxX1BIWSlcdCYjNDM7PSBtaWNyb2NoaXBfdDEub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTgzLW9iai0kKENPTkZJR19NSUNST0NISVBfVDFTX1BIWSkgJiM0Mzs9IG1pY3JvY2hpcF90MXMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTk4NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBLY29uZmlnIExhYnlyaW50aCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBzb21ldGhpbmcgbmV0d29ya2luZy1yZWxhdGVkLCBwcm9iYWJseSBhIFBIWSBkcml2ZXIsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0byBoZWFkIHN0cmFpZ2h0IGZvciB0aGUgYEtjb25maWdgIGZpbGUgYmVjYXVzZSB0aGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgYnVpbGQtdGltZSBkZWNpc2lvbnMgYXJlIG1hZGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBJIG5lZWQgdG8gbG9vayBhcm91bmQgbGluZSAzNDEgaW4gYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYC4gVGhhdCBzcGVjaWZpYyBsaW5lIGxpa2VseSBjb250YWlucyBhIGRlZmluaXRpb24sIGRlcGVuZGVuY3ksIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQmIzM5O3MgcGlxdWluZyBteSBpbnRlcmVzdCwgb3IgbWF5YmUgaXQmIzM5O3MganVzdCBhIHNlY3Rpb24gSSBrbm93IEkgbmVlZCB0byBhbmFseXplLiBJdCBjb3VsZCBiZSBhIG5ldyBmZWF0dXJlLCBhIGRyaXZlciBJJiMzOTttIHVuZmFtaWxpYXIgd2l0aCwgb3IgYSBwcm9ibGVtIEkmIzM5O20gaW52ZXN0aWdhdGluZy4gVGltZSB0byBzZWUgd2hhdCYjMzk7cyB3aGF0ISBMZXQmIzM5O3MgZ2V0IHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzM1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzMzU6XHRcbiAzMzY6XHRjb25maWcgTUlDUk9DSElQX1BIWVxuIDMzNzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWljcm9jaGlwIFBIWXNcJiMzNDtcbiAzMzg6XHRcdGhlbHBcbiAzMzk6XHRcdCAgU3VwcG9ydHMgdGhlIExBTjg4WFggUEhZcy5cbiAzNDA6XHRcbiAzNDE6XHRjb25maWcgTUlDUk9DSElQX1QxX1BIWVxuIDM0MjpcdFx0dHJpc3RhdGUgXCYjMzQ7TWljcm9jaGlwIFQxIFBIWXNcJiMzNDtcbiAzNDM6XHRcdHNlbGVjdCBNSUNST0NISVBfUEhZX1JEU19QVFAgaWYgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXG4gMzQ0Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gMzQ1Olx0XHRoZWxwXG4gMzQ2Olx0XHQgIFN1cHBvcnRzIHRoZSBMQU44WFhYIFBIWXMuXG4gMzQ3Olx0XG4gMzQ4Olx0Y29uZmlnIE1JQ1JPQ0hJUF9QSFlfUkRTX1BUUFxuIDM0OTpcdFx0dHJpc3RhdGVcbiAzNTA6XHRcdGhlbHBcbiAzNTE6XHRcdCAgQ3VycmVudGx5IHN1cHBvcnRzIExBTjg4N1ggVDEgUEhZXG4gMzUyOlx0XG4gMzUzOlx0Y29uZmlnIE1JQ1JPU0VNSV9QSFlcbiAzNTQ6XHRcdHRyaXN0YXRlIFwmIzM0O01pY3Jvc2VtaSBQSFlzXCYjMzQ7XG4gMzU1Olx0XHRkZXBlbmRzIG9uIE1BQ1NFQyB8fCBNQUNTRUM9blxuIDM1NjpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTCB8fCAhTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXG4gMzU3Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVMgaWYgTUFDU0VDXG4gMzU4Olx0XHRzZWxlY3QgUEhZX1BBQ0tBR0VcbiAzNTk6XHRcdGhlbHBcbiAzNjA6XHRcdCAgQ3VycmVudGx5IHN1cHBvcnRzIFZTQzg1MTQsIFZTQzg1MzAsIFZTQzg1MzEsIFZTQzg1NDAgYW5kIFZTQzg1NDEgUEhZc1xuIDM2MTpcdFxuIDM2MjpcdGNvbmZpZyBNT1RPUkNPTU1fUEhZXG4gMzYzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNb3RvcmNvbW0gUEhZc1wmIzM0O1xuIDM2NDpcdFx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDY3OQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDMzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgTUlDUk9DSElQX1QxX1BIWWAgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgTUlDUk9DSElQX1QxX1BIWWAsIHdoaWNoIEkga25vdyBpcyBhIGRyaXZlciBmb3IgdGhvc2UgTWljcm9jaGlwIExBTjg4N3ggVDEgRXRoZXJuZXQgUEhZIGNoaXBzLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGRyaXZlciwgY2FuIEkgZ2V0IGl0IHRvIGRvIHNvbWV0aGluZywgd2l0aG91dCBoYXZpbmcgdGhlIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50PwoKTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIHdoYXQgZXhhY3RseSAqaXMqIGEgTWljcm9jaGlwIFQxIFBIWT8gQWgsIHJpZ2h0LCBpdOKAmXMgdGhhdCBhdXRvbW90aXZlIEV0aGVybmV0IHRyYW5zY2VpdmVyIOKAkyBhIDEwMEJBU0UtVDEgLyAxMDAwQkFTRS1UMSBQSFkgdHJhbnNjZWl2ZXIgbGlrZSB0aGUgTEFOODg3eC4gVG8gdHJpZ2dlciBgbGFuODg3eF9waHlfaW5pdGAsIEkgbmVlZCBhbiBNRElPIGJ1cyB0byBkZXRlY3QgYSBQSFksIGFuZCB0aGF0IFBIWSBuZWVkcyB0byBoYXZlIHRoZSBjb3JyZWN0IElELCBgUEhZX0lEX0xBTjg4N1hgLiBUaGF0IGluc3RhbnRpYXRlcyBhIGBwaHlfZGV2aWNlYCwgdGhlbiB0aGUgYG1pY3JvY2hpcF90MV9waHlfZHJpdmVyYCBnZXRzIGJvdW5kLCBhbmQgKnRoZW4qIHdlIGNhbiBydW4gYGxhbjg4N3hfcGh5X2luaXRgLCBtYXliZSB0aHJvdWdoIGBwaHlfaW5pdF9od2AsIGBwaHlfY29ubmVjdGAsIGBwaHlfYXR0YWNoYCwgb3IgZXZlbiBhIGNhYmxlIHRlc3QgcmVzZXQuCgpOb3csIHRoZSByZWFsIGNoYWxsZW5nZS4gQ2FuIEkgc2ltdWxhdGUgYWxsIHRoaXMgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZSwgbGlrZSBieSB1c2luZyBzeXprYWxsZXIsIFFFTVUsIG9yIGV2ZW4gc29tZXRoaW5nIHJ1bm5pbmcgb24gR0NFPyBJcyB0aGVyZSBhIHdheSB0byBjcmVhdGUgYSBgbWljcm9jaGlwX3QxYCBNRElPIFBIWSBkZXZpY2UgdmlydHVhbGx5PyBBcmUgdGhlcmUgdmlydHVhbCBNRElPIGJ1c2VzIEkgY2FuIHVzZSwgb3IgYW55IG1lY2hhbmlzbSB0byBkeW5hbWljYWxseSBjcmVhdGUgTURJTyBQSFlzIGZyb20gdXNlcnNwYWNlIG9yIHNvbWUgdmlydHVhbCBidXM/CgpIb2xkIG9uLi4uIGNvdWxkIGEgVVNCIFBIWSwgb3IgZXZlbiBhIFVTQiBFdGhlcm5ldCBkb25nbGUsIHBvdGVudGlhbGx5IHVzZSBhIExBTjg4N3g/IExldCYjMzk7cyBleHBsb3JlIHRoYXQuIEkgc2hvdWxkIGNoZWNrIGlmIGFueSBVU0IgRXRoZXJuZXQgYWRhcHRlcnMgYXJlIGFjdHVhbGx5IHVzaW5nIGEgTEFOODg3eC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IHNlYXJjaGluZyB0aGUgVVNCIGRyaXZlcnMsIGFuZCBpZiB0aGF0IGRvZXNuJiMzOTt0IHdvcmssIG1heWJlIGEgbW9yZSBnZW5lcmFsIHNlYXJjaCBhY3Jvc3MgdGhlIGVudGlyZSBrZXJuZWwgc291cmNlIGlzIG5lZWRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTY6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UEhZX0lEX0xBTjg4N1gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2LSNkZWZpbmUgUEhZX0lEX0xBTjkzN1hcdFx0XHRcdDB4MDAwN2MxODBcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNzojZGVmaW5lIFBIWV9JRF9MQU44ODdYXHRcdFx0XHQweDAwMDdjMWYwXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTgtXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTE2MDc9c3RhdGljIGludCBsYW44ODd4X2NkX3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2MjEtXHRcdFx0XHQgICAoKHZhbCBcdTAwMjYgR0VOTUFTSygxNSwgNCkpID09XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTYyMjpcdFx0XHRcdCAgICAoUEhZX0lEX0xBTjg4N1ggXHUwMDI2IEdFTk1BU0soMTUsIDQpKSksXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYyMy1cdFx0XHRcdCAgIDUwMDAsIDUwMDAwLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM9MjEwNj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3QxX3BoeV9kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE0MS1cdHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTQyOlx0XHRQSFlfSURfTUFUQ0hfTU9ERUwoUEhZX0lEX0xBTjg4N1gpLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNDMtXHRcdC5uYW1lXHRcdD0gXCYjMzQ7TWljcm9jaGlwIExBTjg4N3ggVDEgUEhZXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0yMTY3PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbWljcm9jaGlwX3QxX3RibFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTY5LVx0eyBQSFlfSURfTUFUQ0hfTU9ERUwoUEhZX0lEX0xBTjkzN1gpIH0sXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE3MDpcdHsgUEhZX0lEX01BVENIX01PREVMKFBIWV9JRF9MQU44ODdYKSB9LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNzEtXHR7IH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTY6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIwMjAKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBFdGhlcm5ldCBQSFkgRnV6emluZyBGZWFzaWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtDYW4gd2UgZWZmZWN0aXZlbHkgZnV6eiBhIE1pY3JvY2hpcCBMQU44ODd4IFBIWSBkcml2ZXIgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQgdXNpbmcgc3l6a2FsbGVyPyYjMzQ7IExldCYjMzk7cyBjb25zdWx0IHRoZSB0cmlhZ2UgZ3VpZGUuIFNlY3Rpb24gMiBoaWdobGlnaHRzICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCYjMzQ7IHNwZWNpZmljYWxseSBtZW50aW9uaW5nIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIGFuZCBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgc3BlY2lmaWMgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBPbiB0aGUgZmxpcCBzaWRlLCAmIzM0O1JlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHMmIzM0OyBhcmUgdGhvc2UgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyBsaWtlIHZpcnRpbywgVVNCIGdhZGdldCwgZXRjLgoKTm93LCB3aGVyZSBkbyBFdGhlcm5ldCBQSFlzIGxpa2UgdGhlIE1pY3JvY2hpcCBMQU44ODd4IGZpdD8gU3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRz4oCUUUVNVSwgR0NF4oCUIHR5cGljYWxseSBvZmZlciBkZXZpY2VzIGxpa2UgZTEwMDAsIHZpcnRpby1uZXQsIGFuZCBhIGZldyBvdGhlcnMsIGFuZCBub25lIG9mIHRoZXNlIGV4cG9zZSBhIE1pY3JvY2hpcCBMQU44ODd4IFQxIFBIWSBhdHRhY2hlZCB0byBhbiBNRElPIGJ1cy4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlJiMzNDsgc2NlbmFyaW8uIEkgbmVlZCB0byBiZSBzdXJlIHRob3VnaC4KClRoZSBjcnV4IG9mIHRoZSBtYXR0ZXIgaXMgdGhlIGxhY2sgb2YgYSBnZW5lcmljIHVzZXItc3BhY2UgbWVjaGFuaXNtIHRvIGluc3RhbnRpYXRlIGFuIGFyYml0cmFyeSBNRElPIFBIWSBkZXZpY2Ugd2l0aCBjdXN0b20gcmVnaXN0ZXJzIGFuZCBiaW5kIHRoZSBgbWljcm9jaGlwX3QxLmNgIGRyaXZlciB0byBpdCwgdW5sZXNzIHdlIGhhdmUgcGh5c2ljYWwgTURJTyBoYXJkd2FyZSBvciBkZWRpY2F0ZWQgQVNJQy4gSSB3b3VsZCBuZWVkIHRvIGNoZWNrIGFuZCB2ZXJpZnkgaWYgTURJTyBQSFkgZGV2aWNlcyBjYW4gYmUgY3JlYXRlZCB2aWEgbmV0bGluaywgc3lzZnMsIG9yIG90aGVyIHVzZXItc3BhY2UgdG9vbHMuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHNlYXJjaCBmb3IgYW55IGV2aWRlbmNlIG9mIGBtZGlvX2J1c2Agb3IgYG1kaW9fZGV2aWNlYCBjcmVhdGlvbiBmcm9tIHVzZXItc3BhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE2OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW9idXNfcmVnaXN0ZXJfZGV2aWNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTQ2PXN0YXRpYyBpbnQgb2ZfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKm1kaW8sXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNTEtXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo1MjpzdGF0aWMgaW50IG9mX21kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtaWlfYnVzICptZGlvLFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNTMtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmNoaWxkLCB1MzIgYWRkcilcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0xMzk9c3RhdGljIGludCBfX29mX21kaW9idXNfcGFyc2VfcGh5cyhzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0xNjktXHRcdGVsc2VcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjE3MDpcdFx0XHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKG1kaW8sIGNoaWxkLCBhZGRyKTtcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTE3MS1cbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYz0xNTE9aW50IG1kaW9fZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xNTYtXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYzoxNTc6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyX2RldmljZShtZGlvZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTE1OC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmM9MTg5PUVYUE9SVF9TWU1CT0wobWRpb19kZXZpY2VfcmVtb3ZlKTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTE5MC1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jOjE5MTppbnQgbWRpb2J1c19yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTkyLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTExMDk9aW50IHBoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExMTItXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjExMTM6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyX2RldmljZShcdTAwMjZwaHlkZXYtXHUwMDNlbWRpbyk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExMTQtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaD0yNT12b2lkIHBoeV9jaGVja19kb3duc2hpZnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmgtMjYtXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmg6Mjc6aW50IG1kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmgtMjgtaW50IG1kaW9idXNfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTY6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM0MzUKCQkJCQkJCW91dHB1dDogMTQxCgkJCQkJCQl0aG91Z2h0czogNDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvZGUmIzM5O3MgRnV6emluZyBXb3J0aGluZXNzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggaXNuJiMzOTt0IHdvcnRoIGZ1enppbmcsIGFuZCBJIG5lZWQgdG8gYmUgcHJlY2lzZSBhbmQganVzdGlmeSB0aGF0LiBUaGUgY29kZSYjMzk7cyBkZWFsaW5nIHdpdGggTURJTy9QSFkgZGV2aWNlcywgYW5kIHRoZSBMQU44ODd4IGlzIGEgcGh5c2ljYWwsIGF1dG9tb3RpdmUgRXRoZXJuZXQgUEhZIGZyb20gTWljcm9jaGlwLiBJdCByZWdpc3RlcnMgaW4gb25lIG9mIHRoZSB1c3VhbCB3YXlzOiBkZXZpY2UgdHJlZSwgQUNQSSwgb3IgTUFDIGRyaXZlcnMgc2Nhbm5pbmcgdGhlIE1ESU8gYnVzLgoKVGhlIGNydWNpYWwgcG9pbnQgaXMgdGhhdCB0aGlzIHNwZWNpZmljIExBTjg4N3ggUEhZLCBhbmQgdGhlIGBtaWNyb2NoaXBfdDEuY2AgZHJpdmVyIHRoYXQgc3VwcG9ydHMgaXQsICpyZXF1aXJlcyogYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLiBJdOKAmXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB3aGljaCBhcmUgd2hhdCB3ZSYjMzk7cmUgdXNpbmcgZm9yIGZ1enppbmcuIFNvLCBldmVuIHRob3VnaCB0aGlzIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgbGFuODg3eF9waHlfaW5pdCgpYCB3aGVuIGBwcml2LSZndDtjbG9ja2AgaXMgTlVMTCAod2hpY2gsIEkgZ2V0IGl0LCBpcyBhIHZhbGlkIGJ1ZyBmaXgpLCB0aGF0IGZ1bmN0aW9uIHdpbGwgKm5ldmVyKiBiZSBjYWxsZWQgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnQuIFRoZSBoYXJkd2FyZSBzaW1wbHkgaXNuJiMzOTt0IHRoZXJlIHRvIHRyaWdnZXIgaXQuCgpMb29raW5nIGF0IHRoZSBjcml0ZXJpYSwgdGhlIHBhdGNoIGNsZWFybHkgZmFsbHMgaW50byAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7LiBUaGUgZGVzY3JpcHRpb24gZXhwbGljaXRseSBtZW50aW9ucyB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhpcyBpcyBhIHBlcmZlY3QgbWF0Y2guCgpUaGVyZWZvcmUsIG15IGZpbmFsIHZlcmRpY3QgaXM6CgoqICAgKipXb3J0aEZ1enppbmcgPSBmYWxzZSoqCiogICAqKkZvY3VzU3ltYm9scyA9IFxbIF0qKiAoZW1wdHkgYXJyYXkpCiogICAqKkVuYWJsZUNvbmZpZ3MgPSBcWyBdKiogKGVtcHR5IGFycmF5KQoqICAgKipSZWFzb25pbmcgPSAmIzM0O1BoeXNpY2FsIGhhcmR3YXJlIFBIWSBkcml2ZXIgZm9yIE1pY3JvY2hpcCBMQU44ODd4IGF1dG9tb3RpdmUgRXRoZXJuZXQgUEhZLCBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9HQ0UsIHRodXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7KioKCkkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggdGhlc2UgcGFyYW1ldGVycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTY6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMgdG8gYWRkIGEgTlVMTCBjaGVjayBmb3IgcHJpdi1cdTAwM2VjbG9jayBpbiBsYW44ODd4X3BoeV9pbml0KCkuIFRoaXMgZHJpdmVyIGlzIGZvciBNaWNyb2NoaXAgTEFOODg3eCBhdXRvbW90aXZlIEV0aGVybmV0IFBIWXMgKDEwMEJBU0UtVDEvMTAwMEJBU0UtVDEpLCB3aGljaCByZXF1aXJlIGRlZGljYXRlZCBwaHlzaWNhbCBoYXJkd2FyZS9BU0lDcyBhbmQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMgdG8gYWRkIGEgTlVMTCBjaGVjayBmb3IgcHJpdi1cdTAwM2VjbG9jayBpbiBsYW44ODd4X3BoeV9pbml0KCkuIFRoaXMgZHJpdmVyIGlzIGZvciBNaWNyb2NoaXAgTEFOODg3eCBhdXRvbW90aXZlIEV0aGVybmV0IFBIWXMgKDEwMEJBU0UtVDEvMTAwMEJBU0UtVDEpLCB3aGljaCByZXF1aXJlIGRlZGljYXRlZCBwaHlzaWNhbCBoYXJkd2FyZS9BU0lDcyBhbmQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNjoxNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDRUMTY6MTI6NTUuMjIwOTE4ODY0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk0NTU0OTg4MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMgdG8gYWRkIGEgTlVMTCBjaGVjayBmb3IgcHJpdi1cXHUwMDNlY2xvY2sgaW4gbGFuODg3eF9waHlfaW5pdCgpLiBUaGlzIGRyaXZlciBpcyBmb3IgTWljcm9jaGlwIExBTjg4N3ggYXV0b21vdGl2ZSBFdGhlcm5ldCBQSFlzICgxMDBCQVNFLVQxLzEwMDBCQVNFLVQxKSwgd2hpY2ggcmVxdWlyZSBkZWRpY2F0ZWQgcGh5c2ljYWwgaGFyZHdhcmUvQVNJQ3MgYW5kIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTY6MTI6NTUuMjIwOTI1NzQ0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mjg2OTc3NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhMzk4M2M5MDhmZmFlMzMxZGRiYTA5MDIyMTcyY2IxYWFlY2YyM2VlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDQgMTY6MTI6NTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jIGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jXFxuaW5kZXggMzI5MmIyMjM1YzhmYS4uZTM4ZDIwYmY2YWE0YyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNcXG5AQCAtMTI4NSwxNCArMTI4NSwxNiBAQCBzdGF0aWMgaW50IGxhbjg4N3hfcGh5X2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0XFx0aWYgKElTX0VSUihwcml2LVxcdTAwM2VjbG9jaykpXFxuIFxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHByaXYtXFx1MDAzZWNsb2NrKTtcXG4gXFxuLVxcdFxcdC8qIEVuYWJsZSBwaW4gbXV4IGZvciBFVlQgKi9cXG4tXFx0XFx0cGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG4tXFx0XFx0XFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxLFxcbi1cXHRcXHRcXHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOLFxcbi1cXHRcXHRcXHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOKTtcXG4tXFxuLVxcdFxcdC8qIEluaXRpYWxpemUgcGluIG51bWJlcnMgc3BlY2lmaWMgdG8gUEVST1VUICovXFxuLVxcdFxcdHByaXYtXFx1MDAzZWNsb2NrLVxcdTAwM2VldmVudF9waW4gPSAzO1xcbitcXHRcXHRpZiAocHJpdi1cXHUwMDNlY2xvY2spIHtcXG4rXFx0XFx0XFx0LyogRW5hYmxlIHBpbiBtdXggZm9yIEVWVCAqL1xcbitcXHRcXHRcXHRwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxcbitcXHRcXHRcXHRcXHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDEsXFxuK1xcdFxcdFxcdFxcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4sXFxuK1xcdFxcdFxcdFxcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4pO1xcbitcXG4rXFx0XFx0XFx0LyogSW5pdGlhbGl6ZSBwaW4gbnVtYmVycyBzcGVjaWZpYyB0byBQRVJPVVQgKi9cXG4rXFx0XFx0XFx0cHJpdi1cXHUwMDNlY2xvY2stXFx1MDAzZWV2ZW50X3BpbiA9IDM7XFxuK1xcdFxcdH1cXG4gXFxuIFxcdFxcdHByaXYtXFx1MDAzZWluaXRfZG9uZSA9IHRydWU7XFxuIFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTY6MTI6NTUuNzUwNTYxMDE1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo3ODkyNTg0MDUwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jIHRvIGFkZCBhIE5VTEwgY2hlY2sgZm9yIHByaXYtXFx1MDAzZWNsb2NrIGluIGxhbjg4N3hfcGh5X2luaXQoKS4gVGhpcyBkcml2ZXIgaXMgZm9yIE1pY3JvY2hpcCBMQU44ODd4IGF1dG9tb3RpdmUgRXRoZXJuZXQgUEhZcyAoMTAwQkFTRS1UMS8xMDAwQkFTRS1UMSksIHdoaWNoIHJlcXVpcmUgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlL0FTSUNzIGFuZCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTM5ODNjOTA4ZmZhZTMzMWRkYmEwOTAyMjE3MmNiMWFhZWNmMjNlZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTY6MTI6NTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMgYi9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNcbmluZGV4IDMyOTJiMjIzNWM4ZmEuLmUzOGQyMGJmNmFhNGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1xuQEAgLTEyODUsMTQgKzEyODUsMTYgQEAgc3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdGlmIChJU19FUlIocHJpdi1cdTAwM2VjbG9jaykpXG4gXHRcdFx0cmV0dXJuIFBUUl9FUlIocHJpdi1cdTAwM2VjbG9jayk7XG4gXG4tXHRcdC8qIEVuYWJsZSBwaW4gbXV4IGZvciBFVlQgKi9cbi1cdFx0cGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcbi1cdFx0XHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDEsXG4tXHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTixcbi1cdFx0XHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOKTtcbi1cbi1cdFx0LyogSW5pdGlhbGl6ZSBwaW4gbnVtYmVycyBzcGVjaWZpYyB0byBQRVJPVVQgKi9cbi1cdFx0cHJpdi1cdTAwM2VjbG9jay1cdTAwM2VldmVudF9waW4gPSAzO1xuK1x0XHRpZiAocHJpdi1cdTAwM2VjbG9jaykge1xuK1x0XHRcdC8qIEVuYWJsZSBwaW4gbXV4IGZvciBFVlQgKi9cbitcdFx0XHRwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxuK1x0XHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxLFxuK1x0XHRcdFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTixcbitcdFx0XHRcdCAgICAgICBMQU44ODdYX01YX0NISVBfVE9QX1JFR19DT05UUk9MMV9FVlRfRU4pO1xuK1xuK1x0XHRcdC8qIEluaXRpYWxpemUgcGluIG51bWJlcnMgc3BlY2lmaWMgdG8gUEVST1VUICovXG4rXHRcdFx0cHJpdi1cdTAwM2VjbG9jay1cdTAwM2VldmVudF9waW4gPSAzO1xuK1x0XHR9XG4gXG4gXHRcdHByaXYtXHUwMDNlaW5pdF9kb25lID0gdHJ1ZTtcbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE2OjEyOjU1Ljc1MDU2MzI1NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3NTY1NTI5MjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgbWVudGFsIHdhbGt0aHJvdWdoIG9mIHRoaXMuXG5cbioqQW5hbHl6aW5nIHRoZSBQSFkgRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQncyBkaXZlIGludG8gdGhpcyBkaWZmIGFuZCB0aGUgcmVsYXRlZCBjb2RlLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY2AsIGFuZCBzcGVjaWZpY2FsbHkgdGhlIGBsYW44ODd4X3BoeV9pbml0YCBmdW5jdGlvbi4gVGhhdCBnaXZlcyBtZSBhIHN0YXJ0aW5nIHBvaW50LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgd2UncmUgYWN0dWFsbHkgZGVhbGluZyB3aXRoIGhlcmUuXG5cbk15IGluc3RpbmN0IGlzIHRvIGNoZWNrIG91dCB0aGUgYnJvYWRlciBjb250ZXh0IG9mIGBtaWNyb2NoaXBfdDEuY2AuIEkgbmVlZCB0byBnZXQgYSBncmlwIG9uIHdoYXQga2luZCBvZiBQSFkgZHJpdmVyIHRoaXMgaXM6IElzIGl0IGZvciBhIGNvbW1vbiBjaGlwPyBIb3cgZG9lcyBpdCBnZXQgcHJvYmVkIGFuZCB1c2VkIGJ5IHRoZSBzeXN0ZW0/IFdoYXQgc3BlY2lmaWMgaGFyZHdhcmUgaXMgaXQgZGVzaWduZWQgZm9yPyBBbmQsIGNyaXRpY2FsbHkgZm9yIG15IGFuYWx5c2lzLCBjYW4gSSB0cmlnZ2VyIHRoaXMgdGhpbmcgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50PyBJJ20gdGhpbmtpbmcgUUVNVSBvciBzb21ldGhpbmcgc2ltaWxhciwgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgcmVxdWlyZXMgYWN0dWFsIGhhcmR3YXJlLlxuXG5UaW1lIHRvIHJlYWNoIGZvciBteSB0b29scy4gSSdsbCBlaXRoZXIgdXNlIGBncmVwcGVyYCBvciBqdXN0IHF1aWNrbHkgcmVhZCB0aGUgZmlsZS4gQSBxdWljayBjaGVjayBvZiBgbWljcm9jaGlwX3QxLmNgIHdpbGwgZ2l2ZSBtZSB0aGUgaGlnaC1sZXZlbCBwaWN0dXJlIEkgbmVlZC4gVGhpcyB3aWxsIGluZm9ybSBteSBuZXh0IHN0ZXBzIGluIHRoZSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEzMSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE2OjEzOjEzLjMxNjA5OTE5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NzI4NjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxhbjg4N3hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0yOTg9c3RydWN0IGFjY2Vzc19lcmVnX3ZhbCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMzA1LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzozMDY6c3RydWN0IGxhbjg4N3hfaHdfc3RhdCB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTMwNy1cXHRjb25zdCBjaGFyICpzdHJpbmc7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMzEyLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzozMTM6c3RhdGljIGNvbnN0IHN0cnVjdCBsYW44ODd4X2h3X3N0YXQgbGFuODg3eF9od19zdGF0c1tdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0zMTQtXFx0eyBcXFwiVFggR29vZCBDb3VudFxcXCIsICAgICAgICAgICAgICAgICAgICAgIE1ESU9fTU1EX1ZFTkQxLCBMQU44ODdYX01JU19QS1RfU1RBVF9SRUcwLCAxNH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMzIxLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzozMjI6c3RydWN0IGxhbjg4N3hfcmVnd3JfbWFwIHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMzIzLVxcdHU4ICBtbWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMzI3LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzozMjg6c3RydWN0IGxhbjg4N3hfcHJpdiB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjMyOTpcXHR1NjQgc3RhdHNbQVJSQVlfU0laRShsYW44ODd4X2h3X3N0YXRzKV07XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTMzMC1cXHRzdHJ1Y3QgbWNocF9yZHNfcHRwX2Nsb2NrICpjbG9jaztcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0xMDgwPXN0YXRpYyBpbnQgbGFuODd4eF9nZXRfc3FpX21heChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEwODQtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEwODU6c3RhdGljIGludCBsYW44ODd4X3JnbWlpX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTA4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTExOC1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTExOTpzdGF0aWMgaW50IGxhbjg4N3hfc2dtaWlfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMTIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMTQ5LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMTUwOnN0YXRpYyBpbnQgbGFuODg3eF9jb25maWdfcmdtaWlfZW4oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTE1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTE1NS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTE1NjpcXHRyZXQgPSBsYW44ODd4X3JnbWlpX2luaXQocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTE1Ny1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjExLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMjEyOnN0YXRpYyBpbnQgbGFuODg3eF9jb25maWdfcGh5X2ludGVyZmFjZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjM5LVxcdFxcdCAgICBMQU44ODdYX01BQ19NT0RFX1NHTUlJKSlcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTI0MDpcXHRcXHRcXHRyZXQgPSBsYW44ODd4X2NvbmZpZ19yZ21paV9lbihwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjQxLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNDYtXFx0XFx0aWYgKCFzZ21paV9kaXMpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEyNDc6XFx0XFx0XFx0cmV0ID0gbGFuODg3eF9zZ21paV9pbml0KHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNDgtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTI1Ni1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTI1NzpzdGF0aWMgaW50IGxhbjg4N3hfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNzUtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEyNzY6c3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNzcte1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMjc4OlxcdHN0cnVjdCBsYW44ODd4X3ByaXYgKnByaXYgPSBwaHlkZXYtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEyNzktXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzE5LVxcdC8qIFBIWSBpbnRlcmZhY2Ugc2V0dXAgKi9cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTMyMDpcXHRyZXR1cm4gbGFuODg3eF9jb25maWdfcGh5X2ludGVyZmFjZShwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzIxLX1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTMyMi1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTMyMzpzdGF0aWMgaW50IGxhbjg4N3hfcGh5X2NvbmZpZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMzI0OlxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBsYW44ODd4X3JlZ3dyX21hcCAqcmVnX21hcCwgaW50IGNudClcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTMyNS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTMzNy1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTMzODpzdGF0aWMgaW50IGxhbjg4N3hfcGh5X3NldHVwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEzMzkte1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMzQwOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbGFuODg3eF9yZWd3cl9tYXAgcGh5X2NmZ1tdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzQxLVxcdFxcdC8qIFBPUlRfQUZFIHdyaXRlcyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTEzNjktXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjEzNzA6XFx0cmV0dXJuIGxhbjg4N3hfcGh5X2NvbmZpZyhwaHlkZXYsIHBoeV9jZmcsIEFSUkFZX1NJWkUocGh5X2NmZykpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzcxLX1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTM3Mi1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTM3MzpzdGF0aWMgaW50IGxhbjg4N3hfMTAwTV9zZXR1cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzc5LVxcdCAgICBwaHlkZXYtXFx1MDAzZW1hc3Rlcl9zbGF2ZV9zZXQgPT0gTUFTVEVSX1NMQVZFX0NGR19NQVNURVJfUFJFRkVSUkVEKXtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTM4MDpcXHRcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGxhbjg4N3hfcmVnd3JfbWFwIHBoeV9jZmdbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTM4MS1cXHRcXHRcXHR7TURJT19NTURfUE1BUE1ELCBMQU44ODdYX0FGRV9QT1JUX1RFU1RCVVNfQ1RSTDQsIDB4MDBiOH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTM4NS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTM4NjpcXHRcXHRyZXQgPSBsYW44ODd4X3BoeV9jb25maWcocGh5ZGV2LCBwaHlfY2ZnLCBBUlJBWV9TSVpFKHBoeV9jZmcpKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTM4Ny1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMzg4OlxcdFxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbGFuODg3eF9yZWd3cl9tYXAgcGh5X2NmZ1tdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzg5LVxcdFxcdFxcdHtNRElPX01NRF9QTUFQTUQsIExBTjg4N1hfQUZFX1BPUlRfVEVTVEJVU19DVFJMNCwgMHgwMDM4fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzkyLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxMzkzOlxcdFxcdHJldCA9IGxhbjg4N3hfcGh5X2NvbmZpZyhwaHlkZXYsIHBoeV9jZmcsIEFSUkFZX1NJWkUocGh5X2NmZykpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMzk0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDAxLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNDAyOnN0YXRpYyBpbnQgbGFuODg3eF8xMDAwTV9zZXR1cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDAzLXtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQwNDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGxhbjg4N3hfcmVnd3JfbWFwIHBoeV9jZmdbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQwNS1cXHRcXHR7TURJT19NTURfUE1BUE1ELCBMQU44ODdYX1RYX0FNUExUXzEwMDBUMV9SRUcsIDB4MDAzZn0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQxMC1cXHQvKiAoUmUpY29uZmlndXJlIHRoZSBzcGVlZC9tb2RlIGRlcGVuZGVudCBUMSBzZXR0aW5ncyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNDExOlxcdHJldCA9IGxhbjg4N3hfcGh5X2NvbmZpZyhwaHlkZXYsIHBoeV9jZmcsIEFSUkFZX1NJWkUocGh5X2NmZykpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDEyLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0MTgtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE0MTk6c3RhdGljIGludCBsYW44ODd4X2xpbmtfc2V0dXAoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQyMC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQyMy1cXHRpZiAocGh5ZGV2LVxcdTAwM2VzcGVlZCA9PSBTUEVFRF8xMDAwKVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNDI0OlxcdFxcdHJldCA9IGxhbjg4N3hfMTAwME1fc2V0dXAocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQyNS1cXHRlbHNlIGlmIChwaHlkZXYtXFx1MDAzZXNwZWVkID09IFNQRUVEXzEwMClcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQyNjpcXHRcXHRyZXQgPSBsYW44ODd4XzEwME1fc2V0dXAocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQyNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDMzLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNDM0OnN0YXRpYyBpbnQgbGFuODg3eF9waHlfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQzNS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQ2NS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQ2NjpzdGF0aWMgaW50IGxhbjg4N3hfcGh5X3JlY29uZmlnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0Njcte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0NzUtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE0NzY6XFx0cmV0dXJuIGxhbjg4N3hfbGlua19zZXR1cChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDc3LX1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQ3OC1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQ3OTpzdGF0aWMgaW50IGxhbjg4N3hfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQ4MC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTQ4NS1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQ4NjpcXHRyZXQgPSBsYW44ODd4X3BoeV9yZXNldChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDg3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0ODktXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE0OTA6XFx0cmV0dXJuIGxhbjg4N3hfcGh5X3JlY29uZmlnKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE0OTEtfVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDkyLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNDkzOnN0YXRpYyBpbnQgbGFuODg3eF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDk0LXtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTQ5NTpcXHRzdHJ1Y3QgbGFuODg3eF9wcml2ICpwcml2O1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNDk2LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1MDMtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE1MDQ6XFx0cmV0dXJuIGxhbjg4N3hfcGh5X3NldHVwKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1MDUtfVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTA2LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNTA3OnN0YXRpYyB1NjQgbGFuODg3eF9nZXRfc3RhdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaSlcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTUwOC17XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE1MDk6XFx0c3RydWN0IGxhbjg4N3hfaHdfc3RhdCBzdGF0ID0gbGFuODg3eF9od19zdGF0c1tpXTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTUxMDpcXHRzdHJ1Y3QgbGFuODg3eF9wcml2ICpwcml2ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTExLVxcdGludCB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTUyOS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTUzMDpzdGF0aWMgdm9pZCBsYW44ODd4X2dldF9zdGF0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTMxLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX3N0YXRzICpzdGF0cywgdTY0ICpkYXRhKVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTMyLXtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTUzMzpcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUobGFuODg3eF9od19zdGF0cyk7IGkrKylcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTUzNDpcXHRcXHRkYXRhW2ldID0gbGFuODg3eF9nZXRfc3RhdChwaHlkZXYsIGkpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTM1LX1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTUzNi1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTUzNzpzdGF0aWMgaW50IGxhbjg4N3hfZ2V0X3NzZXRfY291bnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTUzOC17XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE1Mzk6XFx0cmV0dXJuIEFSUkFZX1NJWkUobGFuODg3eF9od19zdGF0cyk7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1NDAtfVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTQxLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNTQyOnN0YXRpYyB2b2lkIGxhbjg4N3hfZ2V0X3N0cmluZ3Moc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggKmRhdGEpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1NDMte1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNTQ0OlxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShsYW44ODd4X2h3X3N0YXRzKTsgaSsrKVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNTQ1OlxcdFxcdGV0aHRvb2xfcHV0cyhcXHUwMDI2ZGF0YSwgbGFuODg3eF9od19zdGF0c1tpXS5zdHJpbmcpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNTQ2LX1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTU0Ny1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTU0ODpzdGF0aWMgaW50IGxhbjg4N3hfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTU0OS17XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE1NTA6XFx0c3RydWN0IGxhbjg4N3hfcHJpdiAqcHJpdiA9IHBoeWRldi1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTU1MS1cXHRpbnQgcmM7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTU4My1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTU4NDpzdGF0aWMgaXJxcmV0dXJuX3QgbGFuODg3eF9oYW5kbGVfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1ODUte1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNTg2OlxcdHN0cnVjdCBsYW44ODd4X3ByaXYgKnByaXYgPSBwaHlkZXYtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE1ODctXFx0aW50IHJjID0gSVJRX05PTkU7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYwNi1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTYwNzpzdGF0aWMgaW50IGxhbjg4N3hfY2RfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYwOC1cXHRcXHRcXHQgICAgZW51bSBjYWJsZV9kaWFnX3N0YXRlIGNkX2RvbmUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYyOC1cXHRcXHQvKiBDYWJsZSBkaWFnbm9zdGljcyBjb21wbGV0ZS4gUmVzdG9yZSBQSFkuICovXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE2Mjk6XFx0XFx0cmMgPSBsYW44ODd4X3BoeV9zZXR1cChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjMwLVxcdFxcdGlmIChyYyBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYzMi1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTYzMzpcXHRcXHRyYyA9IGxhbjg4N3hfcGh5X2luaXQocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYzNC1cXHRcXHRpZiAocmMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2MzYtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE2Mzc6XFx0XFx0cmMgPSBsYW44ODd4X2NvbmZpZ19pbnRyKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2MzgtXFx0XFx0aWYgKHJjIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjQwLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNjQxOlxcdFxcdHJjID0gbGFuODg3eF9waHlfcmVjb25maWcocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTY0Mi1cXHRcXHRpZiAocmMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2NDgtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE2NDk6c3RhdGljIGludCBsYW44ODd4X2NhYmxlX3Rlc3RfcHJlcChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNjUwLVxcdFxcdFxcdFxcdCAgIGVudW0gY2FibGVfZGlhZ19tb2RlIG1vZGUpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2NTEte1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNjUyOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbGFuODg3eF9yZWd3cl9tYXAgdmFsdWVzW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2NTMtXFx0XFx0e01ESU9fTU1EX1ZFTkQxLCBMQU44ODdYX01BWF9QR0FfR0FJTl8xMDAsIDB4MWZ9LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2NjUtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE2NjY6XFx0cmMgPSBsYW44ODd4X2NkX3Jlc2V0KHBoeWRldiwgQ0RfVEVTVF9JTklUKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTY2Ny1cXHRpZiAocmMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE3MjktXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE3MzA6c3RhdGljIGludCBsYW44ODd4X2NhYmxlX3Rlc3RfY2hrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE3MzEtXFx0XFx0XFx0XFx0ICBlbnVtIGNhYmxlX2RpYWdfbW9kZSBtb2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE3NjQtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE3NjU6c3RhdGljIGludCBsYW44ODd4X2NhYmxlX3Rlc3Rfc3RhcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTc2Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTc2OC1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTc2OTpcXHRyYyA9IGxhbjg4N3hfY2FibGVfdGVzdF9wcmVwKHBoeWRldiwgVEVTVF9NT0RFX05PUk1BTCk7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE3NzAtXFx0aWYgKHJjIFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNzcxOlxcdFxcdHJldCA9IGxhbjg4N3hfY2RfcmVzZXQocGh5ZGV2LCBDRF9URVNUX0RPTkUpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNzcyLVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE3ODAtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE3ODE6c3RhdGljIGludCBsYW44ODd4X2NhYmxlX3Rlc3RfcmVwb3J0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE3ODIte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE4NjctXFx0LyogUmUtaW5pdGlhbGl6ZSBQSFkgYW5kIHN0YXJ0IGNhYmxlIGRpYWcgdGVzdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxODY4OlxcdHJjID0gbGFuODg3eF9jYWJsZV90ZXN0X3ByZXAocGh5ZGV2LCBURVNUX01PREVfSFlCUklEKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTg2OS1cXHRpZiAocmMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE4NzItXFx0LyogV2FpdCBmb3IgY2FibGUgZGlhZyB0ZXN0IGNvbXBsZXRpb24gKi9cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTg3MzpcXHRyYyA9IGxhbjg4N3hfY2FibGVfdGVzdF9jaGsocGh5ZGV2LCBURVNUX01PREVfSFlCUklEKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTg3NC1cXHRpZiAocmMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5MTctZ2V0X2xlbjpcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTkxODpcXHRyYyA9IGxhbjg4N3hfY2RfcmVzZXQocGh5ZGV2LCBDRF9URVNUX0RPTkUpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xOTE5LVxcdGlmIChyYyBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTkzOC1cXHQvKiBDYWJsZSBkaWFnIHRlc3QgZmFpbGVkICovXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE5Mzk6XFx0cmV0ID0gbGFuODg3eF9jZF9yZXNldChwaHlkZXYsIENEX1RFU1RfRE9ORSk7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5NDAtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTk0Ni1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTk0NzpzdGF0aWMgaW50IGxhbjg4N3hfY2FibGVfdGVzdF9nZXRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5NDgtXFx0XFx0XFx0XFx0XFx0IGJvb2wgKmZpbmlzaGVkKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5NTEtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE5NTI6XFx0cmMgPSBsYW44ODd4X2NhYmxlX3Rlc3RfY2hrKHBoeWRldiwgVEVTVF9NT0RFX05PUk1BTCk7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5NTMtXFx0aWYgKHJjIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5NjMtXFx0LyogUmV0cmlldmUgdGVzdCBzdGF0dXMgYW5kIGNhYmxlIGxlbmd0aCB0byBmYXVsdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxOTY0OlxcdHJldHVybiBsYW44ODd4X2NhYmxlX3Rlc3RfcmVwb3J0KHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5NjUtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTE5Njg9c3RhdGljIGludCBzcWlfY29tcGFyZShjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE5NzItXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjE5NzM6c3RhdGljIGludCBsYW44ODd4X2dldF9zcWlfMTAwTShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xOTc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMDcxLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMDcyOnN0YXRpYyBpbnQgbGFuODg3eF9nZXRfc3FpKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIwNzMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIwODAtXFx0aWYgKHBoeWRldi1cXHUwMDNlc3BlZWQgPT0gU1BFRURfMTAwKVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMDgxOlxcdFxcdHJldHVybiBsYW44ODd4X2dldF9zcWlfMTAwTShwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMDgyLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTIxMDY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MV9waHlfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMjE0NC1cXHRcXHQuZmxhZ3MgICAgICAgICAgPSBQSFlfUE9MTF9DQUJMRV9URVNULFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTQ1OlxcdFxcdC5wcm9iZVxcdFxcdD0gbGFuODg3eF9wcm9iZSxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE0NjpcXHRcXHQuZ2V0X2ZlYXR1cmVzXFx0PSBsYW44ODd4X2dldF9mZWF0dXJlcyxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE0NzpcXHRcXHQuY29uZmlnX2luaXQgICAgPSBsYW44ODd4X3BoeV9pbml0LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoyMTQ4OlxcdFxcdC5jb25maWdfYW5lZyAgICA9IGxhbjg4N3hfY29uZmlnX2FuZWcsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNDk6XFx0XFx0LmdldF9zdGF0cyAgICAgID0gbGFuODg3eF9nZXRfc3RhdHMsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNTA6XFx0XFx0LmdldF9zc2V0X2NvdW50ID0gbGFuODg3eF9nZXRfc3NldF9jb3VudCxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE1MTpcXHRcXHQuZ2V0X3N0cmluZ3MgICAgPSBsYW44ODd4X2dldF9zdHJpbmdzLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTUyLVxcdFxcdC5zdXNwZW5kXFx0PSBnZW5waHlfc3VzcGVuZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTU0LVxcdFxcdC5yZWFkX3N0YXR1c1xcdD0gZ2VucGh5X2M0NV9yZWFkX3N0YXR1cyxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE1NTpcXHRcXHQuY2FibGVfdGVzdF9zdGFydCA9IGxhbjg4N3hfY2FibGVfdGVzdF9zdGFydCxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE1NjpcXHRcXHQuY2FibGVfdGVzdF9nZXRfc3RhdHVzID0gbGFuODg3eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNTc6XFx0XFx0LmNvbmZpZ19pbnRyICAgID0gbGFuODg3eF9jb25maWdfaW50cixcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE1ODpcXHRcXHQuaGFuZGxlX2ludGVycnVwdCA9IGxhbjg4N3hfaGFuZGxlX2ludGVycnVwdCxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE1OTpcXHRcXHQuZ2V0X3NxaVxcdD0gbGFuODg3eF9nZXRfc3FpLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTYwLVxcdFxcdC5nZXRfc3FpX21heFxcdD0gbGFuODd4eF9nZXRfc3FpX21heCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTY6MTM6MTMuMzc0ODM0ODc2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzgzMDY5NTAzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyBpdDpcblxuKipEaWdnaW5nIGludG8gdGhlIExBTjg4N3ggUEhZIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGBsYW44ODd4X3BoeV9pbml0YCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBwcm9iYWJseSB6ZXJvIGluIG9uIGBkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmNgIGFyb3VuZCBsaW5lcyAxMjcwIHRvIDEzMTAuIFRoYXQgcmFuZ2UgaXMgcHJvYmFibHkgd2hlcmUgdGhlIGNvcmUgb2YgaXRzIGltcGxlbWVudGF0aW9uIGxpdmVzLCBhbmQgdGhlcmVmb3JlIHdoZXJlIEknbGwgZmluZCB0aGUgbG9naWMgdGhhdCBraWNrcyBvZmYgdGhlIGluaXRpYWxpemF0aW9uLiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyBpdCBjb25maWd1cmVzIHRoZSBQSFksIGxpa2VseSBkZWFsaW5nIHdpdGggcmVnaXN0ZXIgd3JpdGVzIHRvIHNldCB1cCBsaW5rIG1vZGVzLCBzcGVlZCwgbWF5YmUgYXV0b25lZ290aWF0aW9uIHBhcmFtZXRlcnMsIGFuZCBhbnkgc3BlY2lmaWMgTWljcm9jaGlwLXNwZWNpZmljIHNldHRpbmdzIGZvciB0aGUgVDEgdHJhbnNjZWl2ZXIuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgY2xvY2sgc2V0dGluZ3MsIHBvd2VyLXVwIHNlcXVlbmNlcywgYW5kIGFueSBwb3RlbnRpYWwgaGFyZHdhcmUtc3BlY2lmaWMgcXVpcmtzIG9yIHdvcmthcm91bmRzLiBIb3BlZnVsbHksIHRoZSBjb21tZW50cyBhcmUgY2xlYXIgZW5vdWdoIHRvIGZvbGxvdyB0aGUgY29udHJvbCBmbG93ISBUaGlzIGlzIHdoZXJlIEkgY2FuIGdldCBhIGdyYW51bGFyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIFBIWSdzIGluaXRpYWwgc3RhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTMzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTY6MTM6MTcuMjA1NTM0MjA5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwMTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjcwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjcwOlxcdFxcdCAqL1xcbjEyNzE6XFx0XFx0bGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFX0F1dG9uZWdfQklULCBwaHlkZXYtXFx1MDAzZXN1cHBvcnRlZCk7XFxuMTI3MjpcXHRcXG4xMjczOlxcdFxcdHJldHVybiAwO1xcbjEyNzQ6XFx0fVxcbjEyNzU6XFx0XFxuMTI3NjpcXHRzdGF0aWMgaW50IGxhbjg4N3hfcGh5X2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4xMjc3OlxcdHtcXG4xMjc4OlxcdFxcdHN0cnVjdCBsYW44ODd4X3ByaXYgKnByaXYgPSBwaHlkZXYtXFx1MDAzZXByaXY7XFxuMTI3OTpcXHRcXHRpbnQgcmV0O1xcbjEyODA6XFx0XFxuMTI4MTpcXHRcXHRpZiAoIXByaXYtXFx1MDAzZWluaXRfZG9uZSBcXHUwMDI2XFx1MDAyNiBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeWRldikpIHtcXG4xMjgyOlxcdFxcdFxcdHByaXYtXFx1MDAzZWNsb2NrID0gbWNocF9yZHNfcHRwX3Byb2JlKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuMTI4MzpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgTUNIUF9SRFNfUFRQX0xUQ19CQVNFX0FERFIsXFxuMTI4NDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgTUNIUF9SRFNfUFRQX1BPUlRfQkFTRV9BRERSKTtcXG4xMjg1OlxcdFxcdFxcdGlmIChJU19FUlIocHJpdi1cXHUwMDNlY2xvY2spKVxcbjEyODY6XFx0XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocHJpdi1cXHUwMDNlY2xvY2spO1xcbjEyODc6XFx0XFxuMTI4ODpcXHRcXHRcXHRpZiAocHJpdi1cXHUwMDNlY2xvY2spIHtcXG4xMjg5OlxcdFxcdFxcdFxcdC8qIEVuYWJsZSBwaW4gbXV4IGZvciBFVlQgKi9cXG4xMjkwOlxcdFxcdFxcdFxcdHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuMTI5MTpcXHRcXHRcXHRcXHRcXHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDEsXFxuMTI5MjpcXHRcXHRcXHRcXHRcXHQgICAgICAgTEFOODg3WF9NWF9DSElQX1RPUF9SRUdfQ09OVFJPTDFfRVZUX0VOLFxcbjEyOTM6XFx0XFx0XFx0XFx0XFx0ICAgICAgIExBTjg4N1hfTVhfQ0hJUF9UT1BfUkVHX0NPTlRST0wxX0VWVF9FTik7XFxuMTI5NDpcXHRcXG4xMjk1OlxcdFxcdFxcdFxcdC8qIEluaXRpYWxpemUgcGluIG51bWJlcnMgc3BlY2lmaWMgdG8gUEVST1VUICovXFxuMTI5NjpcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2VjbG9jay1cXHUwMDNlZXZlbnRfcGluID0gMztcXG4xMjk3OlxcdFxcdFxcdH1cXG4xMjk4OlxcdFxcbjEyOTk6XFx0XFx0XFx0cHJpdi1cXHUwMDNlaW5pdF9kb25lID0gdHJ1ZTtcXG4xMzAwOlxcdFxcdH1cXG4xMzAxOlxcdFxcbjEzMDI6XFx0XFx0LyogQ2xlYXIgbG9vcGJhY2sgKi9cXG4xMzAzOlxcdFxcdHJldCA9IHBoeV9jbGVhcl9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxcbjEzMDQ6XFx0XFx0XFx0XFx0XFx0IExBTjg4N1hfTUlTX0NGR19SRUcyLFxcbjEzMDU6XFx0XFx0XFx0XFx0XFx0IExBTjg4N1hfTUlTX0NGR19SRUcyX0ZFX0xQQktfRU4pO1xcbjEzMDY6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTMwNzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjEzMDg6XFx0XFxuMTMwOTpcXHRcXHQvKiBDb25maWd1cmUgZGVmYXVsdCBiZWhhdmlvciBvZiBsZWQgdG8gbGluayBhbmQgYWN0aXZpdHkgZm9yIGFueVxcbjEzMTA6XFx0XFx0ICogc3BlZWRcXG4xMzExOlxcdFxcdCAqL1xcbjEzMTI6XFx0XFx0cmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSxcXG4xMzEzOlxcdFxcdFxcdFxcdCAgICAgTEFOODg3WF9DT01NT05fTEVEM19MRUQyLFxcbjEzMTQ6XFx0XFx0XFx0XFx0ICAgICBMQU44ODdYX0NPTU1PTl9MRUQyX01PREVfU0VMX01BU0ssXFxuMTMxNTpcXHRcXHRcXHRcXHQgICAgIExBTjg4N1hfTEVEX0xJTktfQUNUX0FOWV9TUEVFRCk7XFxuMTMxNjpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4xMzE3OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTMxODpcXHRcXG4xMzE5OlxcdFxcdC8qIFBIWSBpbnRlcmZhY2Ugc2V0dXAgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTY6MTM6MTcuMjA1Njc2NzQ5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjIxNjc0NzY3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYG1jaHBfcmRzX3B0cF9wcm9iZWAgRnVuY3Rpb24qKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGJlaGF2aW9yIG9mIHRoaXMgYG1jaHBfcmRzX3B0cF9wcm9iZWAgZnVuY3Rpb24gdW5kZXIgdmFyaW91cyBjb25kaXRpb25zLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93IHdoYXQgaGFwcGVucyBpZiBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBpcyBlaXRoZXIgZGlzYWJsZWQsIGNvbXBsZXRlbHkgdW5jb25maWd1cmVkLCBvciBpZiwgcG90ZW50aWFsbHksIHRoZSBgcHJpdi1cdTAwM2VjbG9ja2AgcG9pbnRlciB3aXRoaW4gdGhlIHJlbGV2YW50IHN0cnVjdHVyZSBlbmRzIHVwIGJlaW5nIE5VTEwuIFRoZXNlIGFyZSBhbGwgY3JpdGljYWwgZWRnZSBjYXNlcyB0aGF0IG5lZWQgdG8gYmUgaGFuZGxlZCBncmFjZWZ1bGx5LiBJJ3ZlIGdvdCB0byBlbnN1cmUgdGhlIGNvZGUncyByb2J1c3QgaW4gdGhvc2Ugc2NlbmFyaW9zLiBJJ20gZ29pbmcgdG8ganVtcCBpbiBhbmQgc2VhcmNoIGZvciBpbnN0YW5jZXMgb2YgYG1jaHBfcmRzX3B0cF9wcm9iZWAgaW4gdGhlIGNvZGViYXNlLiBUaGF0J3MgdGhlIGJlc3Qgd2F5IHRvIGdldCBhIHF1aWNrIG92ZXJ2aWV3IG9mIGl0cyB1c2FnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwODIsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE2OjEzOjE5LjQyMjQyODkwM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDU3NDQyOTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1jaHBfcmRzX3B0cF9wcm9iZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuYz0xMTM5PXN0YXRpYyBpbnQgbWNocF9yZHNfcHRwX2luaXQoc3RydWN0IG1jaHBfcmRzX3B0cF9jbG9jayAqY2xvY2spXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuYy0xMjQxLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfcmRzX3B0cC5jOjEyNDI6c3RydWN0IG1jaHBfcmRzX3B0cF9jbG9jayAqbWNocF9yZHNfcHRwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IG1tZCxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuYy0xMjQzLVxcdFxcdFxcdFxcdFxcdCAgICAgIHUxNiBjbGtfYmFzZV9hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF9yZHNfcHRwLmMtMTMyNS19XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF9yZHNfcHRwLmM6MTMyNjpFWFBPUlRfU1lNQk9MX0dQTChtY2hwX3Jkc19wdHBfcHJvYmUpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfcmRzX3B0cC5jLTEzMjctXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuaD0yMDU9c3RydWN0IG1jaHBfcmRzX3B0cF9yeF90cyB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuaC0yMTMtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF9yZHNfcHRwLmg6MjE0OnN0cnVjdCBtY2hwX3Jkc19wdHBfY2xvY2sgKm1jaHBfcmRzX3B0cF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBtbWQsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF9yZHNfcHRwLmgtMjE1LVxcdFxcdFxcdFxcdFxcdCAgICAgIHUxNiBjbGtfYmFzZSwgdTE2IHBvcnRfYmFzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Jkc19wdHAuaD0yMjA9aXJxcmV0dXJuX3QgbWNocF9yZHNfcHRwX2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IG1jaHBfcmRzX3B0cF9jbG9jayAqY2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF9yZHNfcHRwLmgtMjIzLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfcmRzX3B0cC5oOjIyNDpzdGF0aWMgaW5saW5lIHN0cnVjdCBtY2hwX3Jkc19wdHBfY2xvY2sgKm1jaHBfcmRzX3B0cF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfcmRzX3B0cC5oLTIyNS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgKnBoeWRldiwgdTggbW1kLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTEyNzY9c3RhdGljIGludCBsYW44ODd4X3BoeV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTI4MS1cXHRpZiAoIXByaXYtXFx1MDAzZWluaXRfZG9uZSBcXHUwMDI2XFx1MDAyNiBwaHlfaW50ZXJydXB0X2lzX3ZhbGlkKHBoeWRldikpIHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTI4MjpcXHRcXHRwcml2LVxcdTAwM2VjbG9jayA9IG1jaHBfcmRzX3B0cF9wcm9iZShwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xMjgzLVxcdFxcdFxcdFxcdFxcdFxcdCBNQ0hQX1JEU19QVFBfTFRDX0JBU0VfQUREUixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTY6MTM6MjEuODc5ODc4OTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4MDQ2NzU4MDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWljcm9jaGlwIExBTjg4N3ggUEhZIERyaXZlcioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBJJ20gbG9va2luZyBhdCBgZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jYCwgd2hpY2gsIGFzIEkgdW5kZXJzdGFuZCBpdCwgaXMgdGhlIGRyaXZlciBpbXBsZW1lbnRhdGlvbiBmb3IgTWljcm9jaGlwJ3MgTEFOODg3eCBzZXJpZXMgb2YgYXV0b21vdGl2ZSBFdGhlcm5ldCBQSFlzLiBTcGVjaWZpY2FsbHksIGNoaXBzIGxpa2UgdGhlIExBTjg4NzAgYW5kIExBTjg4NzEsIHN1cHBvcnRpbmcgYm90aCAxMDBCQVNFLVQxIGFuZCAxMDAwQkFTRS1UMSBzdGFuZGFyZHMuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNvbmZpcm0gdGhlIFBIWSBJRCBhbmQgdGhlIGRyaXZlcidzIGRlZmluaXRpb24gaXRzZWxmIHdpdGhpbiB0aGF0IGZpbGUuIFRoYXQncyB0aGUgYmFzZWxpbmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGlkZW50aWZpZXMgYW5kIGxvYWRzIHRoZSByaWdodCBkcml2ZXIgZm9yIHRoZXNlIHNwZWNpZmljIGNvbXBvbmVudHMuIFRoaXMgaW5pdGlhbCBjaGVjayB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBkcml2ZXIncyB0YXJnZXQgYW5kIGV4cGVjdGVkIGJlaGF2aW9yIGZyb20gdGhlIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzA4NCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNjoxMzoyOS45MjY2NDAwNjhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0ODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTAwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMTAwOlxcdFxcdGlmIChyYyBcXHUwMDNjIDApXFxuMjEwMTpcXHRcXHRcXHRyZXR1cm4gcmM7XFxuMjEwMjpcXHRcXG4yMTAzOlxcdFxcdHJldHVybiBGSUVMRF9HRVQoVDFfRENRX1NRSV9NU0ssIHJjKTtcXG4yMTA0OlxcdH1cXG4yMTA1OlxcdFxcbjIxMDY6XFx0c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MV9waHlfZHJpdmVyW10gPSB7XFxuMjEwNzpcXHRcXHR7XFxuMjEwODpcXHRcXHRcXHRQSFlfSURfTUFUQ0hfTU9ERUwoUEhZX0lEX0xBTjg3WFgpLFxcbjIxMDk6XFx0XFx0XFx0Lm5hbWUgICAgICAgICAgID0gXFxcIk1pY3JvY2hpcCBMQU44N3h4IFQxXFxcIixcXG4yMTEwOlxcdFxcdFxcdC5mbGFncyAgICAgICAgICA9IFBIWV9QT0xMX0NBQkxFX1RFU1QsXFxuMjExMTpcXHRcXHRcXHQuZmVhdHVyZXMgICAgICAgPSBQSFlfQkFTSUNfVDFfRkVBVFVSRVMsXFxuMjExMjpcXHRcXHRcXHQuY29uZmlnX2luaXRcXHQ9IGxhbjg3eHhfY29uZmlnX2luaXQsXFxuMjExMzpcXHRcXHRcXHQuY29uZmlnX2ludHIgICAgPSBsYW44N3h4X3BoeV9jb25maWdfaW50cixcXG4yMTE0OlxcdFxcdFxcdC5oYW5kbGVfaW50ZXJydXB0ID0gbGFuODd4eF9oYW5kbGVfaW50ZXJydXB0LFxcbjIxMTU6XFx0XFx0XFx0LnN1c3BlbmQgICAgICAgID0gZ2VucGh5X3N1c3BlbmQsXFxuMjExNjpcXHRcXHRcXHQucmVzdW1lICAgICAgICAgPSBnZW5waHlfcmVzdW1lLFxcbjIxMTc6XFx0XFx0XFx0LmNvbmZpZ19hbmVnICAgID0gbGFuODd4eF9jb25maWdfYW5lZyxcXG4yMTE4OlxcdFxcdFxcdC5yZWFkX3N0YXR1c1xcdD0gbGFuODd4eF9yZWFkX3N0YXR1cyxcXG4yMTE5OlxcdFxcdFxcdC5nZXRfc3FpXFx0PSBsYW44N3h4X2dldF9zcWksXFxuMjEyMDpcXHRcXHRcXHQuZ2V0X3NxaV9tYXhcXHQ9IGxhbjg3eHhfZ2V0X3NxaV9tYXgsXFxuMjEyMTpcXHRcXHRcXHQuY2FibGVfdGVzdF9zdGFydCA9IGxhbjg3eHhfY2FibGVfdGVzdF9zdGFydCxcXG4yMTIyOlxcdFxcdFxcdC5jYWJsZV90ZXN0X2dldF9zdGF0dXMgPSBsYW44N3h4X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyxcXG4yMTIzOlxcdFxcdH0sXFxuMjEyNDpcXHRcXHR7XFxuMjEyNTpcXHRcXHRcXHRQSFlfSURfTUFUQ0hfTU9ERUwoUEhZX0lEX0xBTjkzN1gpLFxcbjIxMjY6XFx0XFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJNaWNyb2NoaXAgTEFOOTM3eCBUMVxcXCIsXFxuMjEyNzpcXHRcXHRcXHQuZmxhZ3MgICAgICAgICAgPSBQSFlfUE9MTF9DQUJMRV9URVNULFxcbjIxMjg6XFx0XFx0XFx0LmZlYXR1cmVzXFx0PSBQSFlfQkFTSUNfVDFfRkVBVFVSRVMsXFxuMjEyOTpcXHRcXHRcXHQuY29uZmlnX2luaXRcXHQ9IGxhbjg3eHhfY29uZmlnX2luaXQsXFxuMjEzMDpcXHRcXHRcXHQuY29uZmlnX2ludHIgICAgPSBsYW44N3h4X3BoeV9jb25maWdfaW50cixcXG4yMTMxOlxcdFxcdFxcdC5oYW5kbGVfaW50ZXJydXB0ID0gbGFuODd4eF9oYW5kbGVfaW50ZXJydXB0LFxcbjIxMzI6XFx0XFx0XFx0LnN1c3BlbmRcXHQ9IGdlbnBoeV9zdXNwZW5kLFxcbjIxMzM6XFx0XFx0XFx0LnJlc3VtZVxcdFxcdD0gZ2VucGh5X3Jlc3VtZSxcXG4yMTM0OlxcdFxcdFxcdC5jb25maWdfYW5lZyAgICA9IGxhbjg3eHhfY29uZmlnX2FuZWcsXFxuMjEzNTpcXHRcXHRcXHQucmVhZF9zdGF0dXNcXHQ9IGxhbjg3eHhfcmVhZF9zdGF0dXMsXFxuMjEzNjpcXHRcXHRcXHQuZ2V0X3NxaVxcdD0gbGFuODd4eF9nZXRfc3FpLFxcbjIxMzc6XFx0XFx0XFx0LmdldF9zcWlfbWF4XFx0PSBsYW44N3h4X2dldF9zcWlfbWF4LFxcbjIxMzg6XFx0XFx0XFx0LmNhYmxlX3Rlc3Rfc3RhcnQgPSBsYW44N3h4X2NhYmxlX3Rlc3Rfc3RhcnQsXFxuMjEzOTpcXHRcXHRcXHQuY2FibGVfdGVzdF9nZXRfc3RhdHVzID0gbGFuODd4eF9jYWJsZV90ZXN0X2dldF9zdGF0dXMsXFxuMjE0MDpcXHRcXHR9LFxcbjIxNDE6XFx0XFx0e1xcbjIxNDI6XFx0XFx0XFx0UEhZX0lEX01BVENIX01PREVMKFBIWV9JRF9MQU44ODdYKSxcXG4yMTQzOlxcdFxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiTWljcm9jaGlwIExBTjg4N3ggVDEgUEhZXFxcIixcXG4yMTQ0OlxcdFxcdFxcdC5mbGFncyAgICAgICAgICA9IFBIWV9QT0xMX0NBQkxFX1RFU1QsXFxuMjE0NTpcXHRcXHRcXHQucHJvYmVcXHRcXHQ9IGxhbjg4N3hfcHJvYmUsXFxuMjE0NjpcXHRcXHRcXHQuZ2V0X2ZlYXR1cmVzXFx0PSBsYW44ODd4X2dldF9mZWF0dXJlcyxcXG4yMTQ3OlxcdFxcdFxcdC5jb25maWdfaW5pdCAgICA9IGxhbjg4N3hfcGh5X2luaXQsXFxuMjE0ODpcXHRcXHRcXHQuY29uZmlnX2FuZWcgICAgPSBsYW44ODd4X2NvbmZpZ19hbmVnLFxcbjIxNDk6XFx0XFx0XFx0LmdldF9zdGF0cyAgICAgID0gbGFuODg3eF9nZXRfc3RhdHMsXFxuMjE1MDpcXHRcXHRcXHQuZ2V0X3NzZXRfY291bnQgPSBsYW44ODd4X2dldF9zc2V0X2NvdW50LFxcbjIxNTE6XFx0XFx0XFx0LmdldF9zdHJpbmdzICAgID0gbGFuODg3eF9nZXRfc3RyaW5ncyxcXG4yMTUyOlxcdFxcdFxcdC5zdXNwZW5kXFx0PSBnZW5waHlfc3VzcGVuZCxcXG4yMTUzOlxcdFxcdFxcdC5yZXN1bWVcXHRcXHQ9IGdlbnBoeV9yZXN1bWUsXFxuMjE1NDpcXHRcXHRcXHQucmVhZF9zdGF0dXNcXHQ9IGdlbnBoeV9jNDVfcmVhZF9zdGF0dXMsXFxuMjE1NTpcXHRcXHRcXHQuY2FibGVfdGVzdF9zdGFydCA9IGxhbjg4N3hfY2FibGVfdGVzdF9zdGFydCxcXG4yMTU2OlxcdFxcdFxcdC5jYWJsZV90ZXN0X2dldF9zdGF0dXMgPSBsYW44ODd4X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyxcXG4yMTU3OlxcdFxcdFxcdC5jb25maWdfaW50ciAgICA9IGxhbjg4N3hfY29uZmlnX2ludHIsXFxuMjE1ODpcXHRcXHRcXHQuaGFuZGxlX2ludGVycnVwdCA9IGxhbjg4N3hfaGFuZGxlX2ludGVycnVwdCxcXG4yMTU5OlxcdFxcdFxcdC5nZXRfc3FpXFx0PSBsYW44ODd4X2dldF9zcWksXFxuMjE2MDpcXHRcXHRcXHQuZ2V0X3NxaV9tYXhcXHQ9IGxhbjg3eHhfZ2V0X3NxaV9tYXgsXFxuMjE2MTpcXHRcXHRcXHQuc2V0X2xvb3BiYWNrXFx0PSBnZW5waHlfYzQ1X2xvb3BiYWNrLFxcbjIxNjI6XFx0XFx0fVxcbjIxNjM6XFx0fTtcXG4yMTY0OlxcdFxcbjIxNjU6XFx0bW9kdWxlX3BoeV9kcml2ZXIobWljcm9jaGlwX3QxX3BoeV9kcml2ZXIpO1xcbjIxNjY6XFx0XFxuMjE2NzpcXHRzdGF0aWMgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIG1pY3JvY2hpcF90MV90YmxbXSA9IHtcXG4yMTY4OlxcdFxcdHsgUEhZX0lEX01BVENIX01PREVMKFBIWV9JRF9MQU44N1hYKSB9LFxcbjIxNjk6XFx0XFx0eyBQSFlfSURfTUFUQ0hfTU9ERUwoUEhZX0lEX0xBTjkzN1gpIH0sXFxuMjE3MDpcXHRcXHR7IFBIWV9JRF9NQVRDSF9NT0RFTChQSFlfSURfTEFOODg3WCkgfSxcXG4yMTcxOlxcdFxcdHsgfVxcbjIxNzI6XFx0fTtcXG4yMTczOlxcdFxcbjIxNzQ6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBtaWNyb2NoaXBfdDFfdGJsKTtcXG4yMTc1OlxcdFxcbjIxNzY6XFx0TU9EVUxFX0FVVEhPUihEUklWRVJfQVVUSE9SKTtcXG4yMTc3OlxcdE1PRFVMRV9ERVNDUklQVElPTihEUklWRVJfREVTQyk7XFxuMjE3ODpcXHRNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE2OjEzOjI5LjkyNjgwOTM0N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NDE4Nzk5NzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgTURJTyBQSFkgRHJpdmVyIEZ1enppbmcgTGFuZHNjYXBlKipcblxuT2theSwgc28gdGhlIHF1ZXN0aW9uIGlzOiBjYW4gSSBlZmZlY3RpdmVseSBmdXp6IGFuIE1ESU8gUEhZIGRyaXZlciB1c2luZyBzdGFuZGFyZCBmdXp6aW5nIHNldHVwcz8gU3BlY2lmaWNhbGx5LCBjYW4gSSByZWFjaCBpdCBpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgd2hpY2ggaXMgY3J1Y2lhbCBmb3IgcmVwcm9kdWNpYmlsaXR5IGFuZCBzY2FsYWJpbGl0eT8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlc2UgZHJpdmVycyBhcmUgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuXG5cbkZpcnN0LCBsZXQgbWUgY2hlY2sgdGhlIHBvdGVudGlhbCBlbnRyeSBwb2ludHMuIENhbiBJIGluc3RhbnRpYXRlIE1ESU8gUEhZIGRldmljZXMsIG9yIHRoZSBgbWljcm9jaGlwX3QxYCBzcGVjaWZpY2FsbHksIHRocm91Z2ggbWV0aG9kcyBsaWtlIG5ldGxpbmssIGNyZWF0aW5nIHZpcnR1YWwgZGV2aWNlcywgb3Igc3lzZnMgaW50ZXJmYWNlcz8gT3IgYW0gSSBnb2luZyB0byBiZSBzdHVjayBuZWVkaW5nIGEgcmVhbCBNRElPIGJ1cyBjb25uZWN0aW9uIHRvIE1pY3JvY2hpcCBMQU44ODd4IGhhcmR3YXJlLCB3aGljaCB3b3VsZCBiZSBhIGh1Z2UgY29uc3RyYWludD9cblxuQWgsIHNlY3Rpb24gdHdvIG9mIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIuICBUaGlzIGluY2x1ZGVzIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIGFuZCBHUFUgZHJpdmVycy4gIFRoaW5ncyB0aGF0IG5lZWQgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLiBUaGlzIG1ha2VzIG1lIGNvbnNpZGVyIGlmIE1ESU8gUEhZIGRyaXZlcnMgZmFsbCBpbnRvIHRoZSBzYW1lIGNhdGVnb3J5LCByZXF1aXJpbmcgcGh5c2ljYWwgYWNjZXNzIHRvIHRoZSBNRElPIGJ1cy4gQ2FuIEkgZXZlbiAqcHJvYmUqIHRoZXNlIGRyaXZlcnMgaW4gUUVNVT9cblxuV2FpdCBhIG1pbnV0ZSwgSSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBMaW51eCBrZXJuZWwgTURJTy9QSFkgc3Vic3lzdGVtIGFyY2hpdGVjdHVyZS4gSG93IGFyZSBQSFkgZHJpdmVycyBhY3R1YWxseSBwcm9iZWQgYW5kIGF0dGFjaGVkPyBSaWdodCwgdGhleSBtYXRjaCBiYXNlZCBvbiB0aGUgTURJTyBQSFkgSUQsIHdoaWNoIGlzIHJlYWQgZnJvbSB0aGUgTURJTyBidXMncyBNSUkgcmVnaXN0ZXJzLiBUaGF0IElEIG9yaWdpbmF0ZXMgZnJvbSB0aGUgcGh5c2ljYWwgUEhZIGhhcmR3YXJlLCBvciBmcm9tIHNvbWV0aGluZyBsaWtlIGEgZml4ZWQtbGluaywgb3IgYG1kaW8tZ3Bpb2AsIGV0Yy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlc2UgaW50ZXJhY3Rpb25zIGNhbiBiZSBlbXVsYXRlZCBvciByZXByb2R1Y2VkIHRocm91Z2ggdG9vbHMgbGlrZSBzeXprYWxsZXIsIHZpcnR1YWwgaW50ZXJmYWNlcywgb3IgbW9ja3MuXG5cbkxldCdzIHNlZS4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIGNvZGUgZGlyZWN0bHkgZm9yIGluc3RhbmNlcyBvZiBgbWRpb2AgYW5kIGBwaHlgIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGRyaXZlcnMgYXJlIHVzZWQgaW4gcHJhY3RpY2UuIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSBpZiBJIG5lZWQgdG8gYnVpbGQgYSBzcGVjaWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LCBvciBpZiB0aGVyZSBpcyBzb21ldGhpbmcgSSBjYW4gdXNlIGluIHN5emthbGxlciB0byByZWFjaCB0aGlzIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ5NjAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNjoxMzozNC4zNDU2MTM2MTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MjEyNDE3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvX2JpdGJhbmd8bWRpby1ncGlvfG1kaW9fYnVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjI5MSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MzIxPXN0YXRpYyBpbnQga3N6OTQ3N19wY3NfY3JlYXRlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMzItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MzMzOlxcdGJ1cy1cXHUwMDNlbmFtZSA9IFxcXCJrc3pfcGNzX21kaW9fYnVzXFxcIjtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zMzQtXFx0c25wcmludGYoYnVzLVxcdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcXFwiJXMtcGNzXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTIxMjU9aW50IGtzel9wYXJlbnRfbWRpb19yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjEyOC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMTI5OlxcdHJldHVybiBtZGlvYnVzX3JlYWRfbmVzdGVkKGRldi1cXHUwMDNlcGFyZW50X21kaW9fYnVzLCBhZGRyLCByZWdudW0pO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIxMzAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MjE0NT1pbnQga3N6X3BhcmVudF9tZGlvX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtLCB1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjE0OC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMTQ5OlxcdHJldHVybiBtZGlvYnVzX3dyaXRlX25lc3RlZChkZXYtXFx1MDAzZXBhcmVudF9tZGlvX2J1cywgYWRkciwgcmVnbnVtLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIxNTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MjMyMT1pbnQga3N6X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIzNDctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjM0ODpcXHRcXHRkZXYtXFx1MDAzZXBhcmVudF9tZGlvX2J1cyA9IHBhcmVudF9idXM7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM0OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaD0yMDY9c3RydWN0IGtzel9kZXZpY2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMjU4LVxcdC8qKlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjI1OTpcXHQgKiBAcGFyZW50X21kaW9fYnVzOiBQb2ludGVyIHRvIHRoZSBleHRlcm5hbCBNRElPIGJ1cyBjb250cm9sbGVyLlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTI2MC1cXHQgKlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMjY1LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjI2NjpcXHRzdHJ1Y3QgbWlpX2J1cyAqcGFyZW50X21kaW9fYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTI2Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM9MTQzPXN0YXRpYyBpbnQgbGFuOTM3eF9jcmVhdGVfcGh5X2FkZHJfbWFwKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGJvb2wgc2lkZV9tZGlvKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy0yMTAtLyoqXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzoyMTE6ICogbGFuOTM3eF9tZGlvX2J1c19wcmVpbml0IC0gUHJlLWluaXRpYWxpemUgTURJTyBidXMgZm9yIGFjY2Vzc2luZyBQSFlzLlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtMjEyLSAqIEBkZXY6IFBvaW50ZXIgdG8gZGV2aWNlIHN0cnVjdHVyZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtMjI2LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6MjI3OnN0YXRpYyBpbnQgbGFuOTM3eF9tZGlvX2J1c19wcmVpbml0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGJvb2wgc2lkZV9tZGlvKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtMjI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM9Njg1PXN0YXRpYyBpbnQgbGFuOTM3eF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTcxMS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjcxMjpcXHRcXHRkZXYtXFx1MDAzZXBhcmVudF9tZGlvX2J1cyA9IHBhcmVudF9idXM7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03MTMtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03MjAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3MjE6XFx0cmV0ID0gbGFuOTM3eF9tZGlvX2J1c19wcmVpbml0KGRldiwgISFwYXJlbnRfYnVzKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTcyMi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MTI2PWludCBtdjg4ZTZ4eHhfd2FpdF9iaXQoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzMi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzM6c3RydWN0IG1paV9idXMgKm12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzQte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzNTpcXHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cztcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM3OlxcdG1kaW9fYnVzID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFxcdTAwMjZjaGlwLVxcdTAwM2VtZGlvcyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzg6XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMsIGxpc3QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzOTpcXHRpZiAoIW1kaW9fYnVzKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0MC1cXHRcXHRyZXR1cm4gTlVMTDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTQyOlxcdHJldHVybiBtZGlvX2J1cy1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0My19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz0zNzU3PXN0YXRpYyBpbnQgbXY4OGU2eHh4X21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3NTgte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3NTk6XFx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXMgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc2MDpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBtZGlvX2J1cy1cXHUwMDNlY2hpcDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzYxLVxcdHUxNiBwcm9kX2lkO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9Mzc4Mz1zdGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksIGludCBkZXZhZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3ODUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3ODY6XFx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXMgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc4NzpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBtZGlvX2J1cy1cXHUwMDNlY2hpcDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzg4LVxcdHUxNiB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz0zODAxPXN0YXRpYyBpbnQgbXY4OGU2eHh4X21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeSwgaW50IHJlZywgdTE2IHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODAyLXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODAzOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMgKm1kaW9fYnVzID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MDQ6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gbWRpb19idXMtXFx1MDAzZWNoaXA7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgwNS1cXHRpbnQgZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MzgxNz1zdGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgZGV2YWQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODE5LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODIwOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMgKm1kaW9fYnVzID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MjE6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gbWRpb19idXMtXFx1MDAzZWNoaXA7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgyMi1cXHRpbnQgZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MzgzND1zdGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4MzgtXFx0c3RhdGljIGludCBpbmRleDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODM5OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMgKm1kaW9fYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4NDAtXFx0c3RydWN0IG1paV9idXMgKmJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4NTQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg1NTpcXHRidXMgPSBtZGlvYnVzX2FsbG9jX3NpemUoc2l6ZW9mKCptZGlvX2J1cykpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4NTYtXFx0aWYgKCFidXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODU4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4NTk6XFx0bWRpb19idXMgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg2MDpcXHRtZGlvX2J1cy1cXHUwMDNlYnVzID0gYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4NjE6XFx0bWRpb19idXMtXFx1MDAzZWNoaXAgPSBjaGlwO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4NjI6XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNm1kaW9fYnVzLVxcdTAwM2VsaXN0KTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODYzOlxcdG1kaW9fYnVzLVxcdTAwM2VleHRlcm5hbCA9IGV4dGVybmFsO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4NjQtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODk1LVxcdGlmIChleHRlcm5hbClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODk2OlxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNm1kaW9fYnVzLVxcdTAwM2VsaXN0LCBcXHUwMDI2Y2hpcC1cXHUwMDNlbWRpb3MpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4OTctXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4OTg6XFx0XFx0bGlzdF9hZGQoXFx1MDAyNm1kaW9fYnVzLVxcdTAwM2VsaXN0LCBcXHUwMDI2Y2hpcC1cXHUwMDNlbWRpb3MpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4OTktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz0zOTA3PXN0YXRpYyB2b2lkIG12ODhlNnh4eF9tZGlvc191bnJlZ2lzdGVyKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5MDkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM5MTA6XFx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXMsICpwO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5MTEtXFx0c3RydWN0IG1paV9idXMgKmJ1cztcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTEyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM5MTM6XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1kaW9fYnVzLCBwLCBcXHUwMDI2Y2hpcC1cXHUwMDNlbWRpb3MsIGxpc3QpIHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTE0OlxcdFxcdGJ1cyA9IG1kaW9fYnVzLVxcdTAwM2VidXM7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzkxNS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTE2OlxcdFxcdGlmICghbWRpb19idXMtXFx1MDAzZWV4dGVybmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5MTctXFx0XFx0XFx0bXY4OGU2eHh4X2cyX2lycV9tZGlvX2ZyZWUoY2hpcCwgYnVzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM5ODA9c3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk5MS1cXHRjaGlwLVxcdTAwM2VkcyA9IGRzO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM5OTI6XFx0ZHMtXFx1MDAzZXVzZXJfbWlpX2J1cyA9IG12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5OTMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaD00ODg9c3RydWN0IG12ODhlNnh4eF9idXNfb3BzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oLTQ5My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaDo0OTQ6c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmgtNDk1LVxcdHN0cnVjdCBtaWlfYnVzICpidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaD04NzM9aW50IG12ODhlNnh4eF93YWl0X2JpdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oLTg3NC1cXHRcXHQgICAgICAgaW50IGJpdCwgaW50IHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmg6ODc1OnN0cnVjdCBtaWlfYnVzICptdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oLTg3Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jPTc4Nz1pbnQgbXY4OGU2eHh4X2cyX3NtaV9waHlfcmVhZF9jMjIoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmMtNzkwLXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYzo3OTE6XFx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXMgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmM6NzkyOlxcdGJvb2wgZXh0ZXJuYWwgPSBtZGlvX2J1cy1cXHUwMDNlZXh0ZXJuYWw7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmMtNzkzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmM9Nzk4PWludCBtdjg4ZTZ4eHhfZzJfc21pX3BoeV9yZWFkX2M0NShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYy04MDEte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jOjgwMjpcXHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cyA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYzo4MDM6XFx0Ym9vbCBleHRlcm5hbCA9IG1kaW9fYnVzLVxcdTAwM2VleHRlcm5hbDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYy04MDQtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYz04MDk9aW50IG12ODhlNnh4eF9nMl9zbWlfcGh5X3dyaXRlX2MyMihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYy04MTIte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jOjgxMzpcXHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cyA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYzo4MTQ6XFx0Ym9vbCBleHRlcm5hbCA9IG1kaW9fYnVzLVxcdTAwM2VleHRlcm5hbDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYy04MTUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYz04MjA9aW50IG12ODhlNnh4eF9nMl9zbWlfcGh5X3dyaXRlX2M0NShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYy04MjMte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jOjgyNDpcXHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cyA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYzo4MjU6XFx0Ym9vbCBleHRlcm5hbCA9IG1kaW9fYnVzLVxcdTAwM2VleHRlcm5hbDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDIuYy04MjYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02MzUyLmM9MzI0PXN0YXRpYyBpbnQgbXY4OGU2MzUyX3Bjc19pbml0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02MzUyLmMtMzM2LVxcdGlycSA9IG12ODhlNnh4eF9zZXJkZXNfaXJxX21hcHBpbmcoY2hpcCwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wY3MtNjM1Mi5jOjMzNzpcXHRidXMgPSBtdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02MzUyLmMtMzM4LVxcdGRldiA9IGNoaXAtXFx1MDAzZWRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzOXguYz01NDk9c3RhdGljIGludCBtdjg4ZTYzOTBfcGNzX2luaXQoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzOXguYy01NTktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wY3MtNjM5eC5jOjU2MDpcXHRidXMgPSBtdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02Mzl4LmMtNTYxLVxcdGRldiA9IGNoaXAtXFx1MDAzZWRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzOXguYz05Mjc9c3RhdGljIGludCBtdjg4ZTYzOTN4X3Bjc19pbml0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3Bjcy02Mzl4LmMtOTM3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGNzLTYzOXguYzo5Mzg6XFx0YnVzID0gbXY4OGU2eHh4X2RlZmF1bHRfbWRpb19idXMoY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wY3MtNjM5eC5jLTkzOS1cXHRkZXYgPSBjaGlwLVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BoeS5jPTI4PWludCBtdjg4ZTZ4eHhfcGh5X3JlYWQoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcGh5LCBpbnQgcmVnLCB1MTYgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmMtMzItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYzozMzpcXHRidXMgPSBtdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BoeS5jLTM0LVxcdGlmICghYnVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYz00Mz1pbnQgbXY4OGU2eHh4X3BoeV93cml0ZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwaHksIGludCByZWcsIHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BoeS5jLTQ3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmM6NDg6XFx0YnVzID0gbXY4OGU2eHh4X2RlZmF1bHRfbWRpb19idXMoY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYy00OS1cXHRpZiAoIWJ1cylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmM9NTg9aW50IG12ODhlNnh4eF9waHlfcmVhZF9jNDUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcGh5LCBpbnQgZGV2YWQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BoeS5jLTYzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmM6NjQ6XFx0YnVzID0gbXY4OGU2eHh4X2RlZmF1bHRfbWRpb19idXMoY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYy02NS1cXHRpZiAoIWJ1cylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmM9NzQ9aW50IG12ODhlNnh4eF9waHlfd3JpdGVfYzQ1KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBoeSwgaW50IGRldmFkLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYy03OS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3BoeS5jOjgwOlxcdGJ1cyA9IG12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmMtODEtXFx0aWYgKCFidXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYz0xMzM9c3RhdGljIGludCBuZXRjX3BvcnRfZ2V0X2luZm9fZnJvbV9kdChzdHJ1Y3QgbmV0Y19wb3J0ICpucCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE0OC1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoxNDk6c3RhdGljIGludCBuZXRjX3BvcnRfY3JlYXRlX2VtZGlvX2J1cyhzdHJ1Y3QgbmV0Y19wb3J0ICpucCxcXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0xNTAtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpub2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTg5LVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jOjE5MDpzdGF0aWMgaW50IG5ldGNfcG9ydF9jcmVhdGVfbWRpb19idXMoc3RydWN0IG5ldGNfcG9ydCAqbnAsXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTkxLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGRldmljZV9ub2RlICpub2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTk3LVxcdGlmIChtZGlvX25vZGUpIHtcXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoxOTg6XFx0XFx0ZXJyID0gbmV0Y19wb3J0X2NyZWF0ZV9lbWRpb19idXMobnAsIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTk5LVxcdFxcdG9mX25vZGVfcHV0KG1kaW9fbm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYz0yNDE9c3RhdGljIGludCBuZXRjX2luaXRfYWxsX3BvcnRzKHN0cnVjdCBuZXRjX3N3aXRjaCAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTI4My1cXHRcXHRpZiAoZHNhX3BvcnRfaXNfdXNlcihkcCkpIHtcXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoyODQ6XFx0XFx0XFx0ZXJyID0gbmV0Y19wb3J0X2NyZWF0ZV9tZGlvX2J1cyhucCwgZHAtXFx1MDAzZWRuKTtcXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0yODUtXFx0XFx0XFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jPTE1MTc9c3RhdGljIGludCBmZWxpeF9pbml0X3N0cnVjdHMoc3RydWN0IGZlbGl4ICpmZWxpeCwgaW50IG51bV9waHlzX3BvcnRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTE2MDItXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jOjE2MDM6XFx0aWYgKGZlbGl4LVxcdTAwM2VpbmZvLVxcdTAwM2VtZGlvX2J1c19hbGxvYykge1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoxNjA0OlxcdFxcdGVyciA9IGZlbGl4LVxcdTAwM2VpbmZvLVxcdTAwM2VtZGlvX2J1c19hbGxvYyhvY2Vsb3QpO1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0xNjA1LVxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jPTE2OTY9c3RhdGljIGludCBmZWxpeF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMTc2OC1vdXRfbWRpb2J1c19mcmVlOlxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoxNzY5OlxcdGlmIChmZWxpeC1cXHUwMDNlaW5mby1cXHUwMDNlbWRpb19idXNfZnJlZSlcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM6MTc3MDpcXHRcXHRmZWxpeC1cXHUwMDNlaW5mby1cXHUwMDNlbWRpb19idXNfZnJlZShvY2Vsb3QpO1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0xNzcxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jPTE3NzU9c3RhdGljIHZvaWQgZmVsaXhfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTE3OTItXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jOjE3OTM6XFx0aWYgKGZlbGl4LVxcdTAwM2VpbmZvLVxcdTAwM2VtZGlvX2J1c19mcmVlKVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoxNzk0OlxcdFxcdGZlbGl4LVxcdTAwM2VpbmZvLVxcdTAwM2VtZGlvX2J1c19mcmVlKG9jZWxvdCk7XFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTE3OTUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5oPTIyPXN0cnVjdCBmZWxpeF9pbmZvIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguaC01NS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4Lmg6NTY6XFx0aW50XFx0KCptZGlvX2J1c19hbGxvYykoc3RydWN0IG9jZWxvdCAqb2NlbG90KTtcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4Lmg6NTc6XFx0dm9pZFxcdCgqbWRpb19idXNfZnJlZSkoc3RydWN0IG9jZWxvdCAqb2NlbG90KTtcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmgtNTgtXFx0aW50XFx0KCpwb3J0X3NldHVwX3RjKShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9OTUxPXN0YXRpYyB2b2lkIHZzYzk5NTlfd21fc3RhdCh1MzIgdmFsLCB1MzIgKmludXNlLCB1MzIgKm1heHVzZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTk1Ni1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzo5NTc6c3RhdGljIGludCB2c2M5OTU5X21kaW9fYnVzX2FsbG9jKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy05NTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTA0NC1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoxMDQ1OnN0YXRpYyB2b2lkIHZzYzk5NTlfbWRpb19idXNfZnJlZShzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTA0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYz0yNjU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVsaXhfaW5mbyBmZWxpeF9pbmZvX3ZzYzk5NTkgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0yNjc1LVxcdC5wdHBfY2Fwc1xcdFxcdD0gXFx1MDAyNnZzYzk5NTlfcHRwX2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM6MjY3NjpcXHQubWRpb19idXNfYWxsb2NcXHRcXHQ9IHZzYzk5NTlfbWRpb19idXNfYWxsb2MsXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM6MjY3NzpcXHQubWRpb19idXNfZnJlZVxcdFxcdD0gdnNjOTk1OV9tZGlvX2J1c19mcmVlLFxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTI2NzgtXFx0LnBvcnRfbW9kZXNcXHRcXHQ9IHZzYzk5NTlfcG9ydF9tb2RlcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM9ODY5PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2NlbG90X29wcyB2c2M5OTUzX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtODc3LVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM6ODc4OnN0YXRpYyBpbnQgdnNjOTk1M19tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy04Nzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MzQtXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYzo5MzU6c3RhdGljIHZvaWQgdnNjOTk1M19tZGlvX2J1c19mcmVlKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkzNi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jPTk1MD1zdGF0aWMgY29uc3Qgc3RydWN0IGZlbGl4X2luZm8gc2V2aWxsZV9pbmZvX3ZzYzk5NTMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTk2NC1cXHQubnVtX3BvcnRzXFx0XFx0PSBWU0M5OTUzX05VTV9QT1JUUyxcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jOjk2NTpcXHQubWRpb19idXNfYWxsb2NcXHRcXHQ9IHZzYzk5NTNfbWRpb19idXNfYWxsb2MsXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYzo5NjY6XFx0Lm1kaW9fYnVzX2ZyZWVcXHRcXHQ9IHZzYzk5NTNfbWRpb19idXNfZnJlZSxcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTk2Ny1cXHQucG9ydF9tb2Rlc1xcdFxcdD0gdnNjOTk1M19wb3J0X21vZGVzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM9NzkzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzo3OTQ6cWNhOGtfbWRpb19idXN5X3dhaXQoc3RydWN0IG1paV9idXMgKmJ1cywgdTMyIHJlZywgdTMyIG1hc2spXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtNzk1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTgxNj1xY2E4a19tZGlvX3dyaXRlKHN0cnVjdCBxY2E4a19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtLCB1MTYgZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTg0MC1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzo4NDE6XFx0cmV0ID0gcWNhOGtfbWRpb19idXN5X3dhaXQoYnVzLCBRQ0E4S19NRElPX01BU1RFUl9DVFJMLFxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTg0Mi1cXHRcXHRcXHRcXHQgICBRQ0E4S19NRElPX01BU1RFUl9CVVNZKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTg1ND1xY2E4a19tZGlvX3JlYWQoc3RydWN0IHFjYThrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy04NzctXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6ODc4OlxcdHJldCA9IHFjYThrX21kaW9fYnVzeV93YWl0KGJ1cywgUUNBOEtfTURJT19NQVNURVJfQ1RSTCxcXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy04NzktXFx0XFx0XFx0XFx0ICAgUUNBOEtfTURJT19NQVNURVJfQlVTWSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz05NDc9cWNhOGtfbWRpb19yZWdpc3RlcihzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk2NC1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzo5NjU6XFx0cHJpdi1cXHUwMDNlaW50ZXJuYWxfbWRpb19idXMgPSBidXM7XFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtOTY2LVxcdGJ1cy1cXHUwMDNlcHJpdiA9ICh2b2lkICopcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTk5ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6OTk1OnFjYThrX3NldHVwX21kaW9fYnVzKHN0cnVjdCBxY2E4a19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk5Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz0xODQzPXFjYThrX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTE4NjAtXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6MTg2MTpcXHRyZXQgPSBxY2E4a19zZXR1cF9tZGlvX2J1cyhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy0xODYyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLWxlZHMuYz0zNjU9cWNhOGtfcGFyc2VfcG9ydF9sZWRzKHN0cnVjdCBxY2E4a19wcml2ICpwcml2LCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqcG9ydCwgaW50IHBvcnRfbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay1sZWRzLmMtNDMxLVxcdFxcdGluaXRfZGF0YS5kZXZpY2VuYW1lID0ga2FzcHJpbnRmKEdGUF9LRVJORUwsIFxcXCIlczowJWRcXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstbGVkcy5jOjQzMjpcXHRcXHRcXHRcXHRcXHRcXHQgcHJpdi1cXHUwMDNlaW50ZXJuYWxfbWRpb19idXMgP1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstbGVkcy5jOjQzMzpcXHRcXHRcXHRcXHRcXHRcXHQgcHJpdi1cXHUwMDNlaW50ZXJuYWxfbWRpb19idXMtXFx1MDAzZWlkIDogcHJpdi1cXHUwMDNlYnVzLVxcdTAwM2VpZCxcXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLWxlZHMuYy00MzQtXFx0XFx0XFx0XFx0XFx0XFx0IHBvcnRfbnVtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaD00NDU9c3RydWN0IHFjYThrX3ByaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay5oLTQ1OC1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaDo0NTk6XFx0c3RydWN0IG1paV9idXMgKmludGVybmFsX21kaW9fYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaC00NjAtXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmM9NTIxPXN0YXRpYyBpbnQgdnNjNzN4eF9kZXRlY3Qoc3RydWN0IHZzYzczeHggKnZzYylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTYwNC1cXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYzo2MDU6c3RhdGljIGludCB2c2M3M3h4X21kaW9fYnVzeV9jaGVjayhzdHJ1Y3QgdnNjNzN4eCAqdnNjKVxcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTYwNi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYz02MjE9c3RhdGljIGludCB2c2M3M3h4X3BoeV9yZWFkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBoeSwgaW50IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTYyNy1cXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYzo2Mjg6XFx0cmV0ID0gdnNjNzN4eF9tZGlvX2J1c3lfY2hlY2sodnNjKTtcXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYy02MjktXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTY0MC1cXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYzo2NDE6XFx0cmV0ID0gdnNjNzN4eF9tZGlvX2J1c3lfY2hlY2sodnNjKTtcXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYy02NDItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jPTY2Mj1zdGF0aWMgaW50IHZzYzczeHhfcGh5X3dyaXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBoeSwgaW50IHJlZ251bSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTY2OC1cXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYzo2Njk6XFx0cmV0ID0gdnNjNzN4eF9tZGlvX2J1c3lfY2hlY2sodnNjKTtcXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYy02NzAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jPTQ1OT1zdGF0aWMgaW50IGF4X21paV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy00NjctXFx0YXgtXFx1MDAzZWFkZHJfbWVtciA9IGVpX2xvY2FsLVxcdTAwM2VtZW0gKyBBWF9NRU1SO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjQ2ODpcXHRheC1cXHUwMDNlbWlpX2J1cyA9IGFsbG9jX21kaW9fYml0YmFuZyhcXHUwMDI2YXgtXFx1MDAzZWJiX2N0cmwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTQ2OS1cXHRpZiAoIWF4LVxcdTAwM2VtaWlfYnVzKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy00ODAtXFx0aWYgKGVycilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo0ODE6XFx0XFx0Z290byBvdXRfZnJlZV9tZGlvX2JpdGJhbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjQ4NTogb3V0X2ZyZWVfbWRpb19iaXRiYW5nOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjQ4NjpcXHRmcmVlX21kaW9fYml0YmFuZyhheC1cXHUwMDNlbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDg3LSBvdXQ6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYz00OTE9c3RhdGljIGludCBheF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy01MzQtXFx0bWRpb2J1c191bnJlZ2lzdGVyKGF4LVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo1MzU6XFx0ZnJlZV9tZGlvX2JpdGJhbmcoYXgtXFx1MDAzZW1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTUzNi0gZmFpbGVkX21paTpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jPTU0MD1zdGF0aWMgaW50IGF4X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy01NTctXFx0bWRpb2J1c191bnJlZ2lzdGVyKGF4LVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo1NTg6XFx0ZnJlZV9tZGlvX2JpdGJhbmcoYXgtXFx1MDAzZW1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTU1OS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tYWluLmg9NTE9c3RydWN0IHhnZV9wZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWFpbi5oLTU2LVxcdGNoYXIgaXJxX25hbWVbSVJRX0lEX1NJWkVdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tYWluLmg6NTc6XFx0c3RydWN0IG1paV9idXMgKm1kaW9fYnVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tYWluLmgtNTgtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jPTg0PXZvaWQgeGdlX21kaW9fcmVtb3ZlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy04Ni1cXHRzdHJ1Y3QgeGdlX3BkYXRhICpwZGF0YSA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6ODc6XFx0c3RydWN0IG1paV9idXMgKm1kaW9fYnVzID0gcGRhdGEtXFx1MDAzZW1kaW9fYnVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtODgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6OTI6XFx0aWYgKG1kaW9fYnVzLVxcdTAwM2VzdGF0ZSA9PSBNRElPQlVTX1JFR0lTVEVSRUQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzo5MzpcXHRcXHRtZGlvYnVzX3VucmVnaXN0ZXIobWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtOTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzo5NTpcXHRtZGlvYnVzX2ZyZWUobWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtOTYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYz05OD1pbnQgeGdlX21kaW9fY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMDEtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkYXRhLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMDI6XFx0c3RydWN0IG1paV9idXMgKm1kaW9fYnVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTAzLVxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTEwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjEwNjpcXHRtZGlvX2J1cyA9IG1kaW9idXNfYWxsb2MoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjEwNzpcXHRpZiAoIW1kaW9fYnVzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTA4LVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTA5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTEwOlxcdG1kaW9fYnVzLVxcdTAwM2VuYW1lID0gXFxcIkFQTSBYLUdlbmUgRXRoZXJuZXQgKHYyKSBNRElPIEJ1c1xcXCI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMTE6XFx0bWRpb19idXMtXFx1MDAzZXJlYWQgPSB4Z2VfbWRpb19yZWFkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTEyOlxcdG1kaW9fYnVzLVxcdTAwM2V3cml0ZSA9IHhnZV9tZGlvX3dyaXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTEzOlxcdG1kaW9fYnVzLVxcdTAwM2Vwcml2ID0gcGRhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMTQ6XFx0bWRpb19idXMtXFx1MDAzZXBhcmVudCA9IGRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjExNTpcXHRzbnByaW50ZihtZGlvX2J1cy1cXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXFxcIiVzLW1paVxcXCIsIGRldl9uYW1lKGRldikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTE2OlxcdHBkYXRhLVxcdTAwM2VtZGlvX2J1cyA9IG1kaW9fYnVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTE4OlxcdG1kaW9fYnVzLVxcdTAwM2VwaHlfbWFzayA9IDB4MTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjExOTpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW9fYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTEyMC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYzoxMjM6XFx0cGh5ZGV2ID0gcGh5X2ZpbmRfZmlyc3QobWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTI0LVxcdGlmICghcGh5ZGV2KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTkzOT1pbnQgeGdlbmVfZW5ldF9tZGlvX2NvbmZpZyhzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk0MS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHBkYXRhLVxcdTAwM2VuZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTQyOlxcdHN0cnVjdCBtaWlfYnVzICptZGlvX2J1cztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk0My1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTQ1OlxcdG1kaW9fYnVzID0gbWRpb2J1c19hbGxvYygpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTQ2OlxcdGlmICghbWRpb19idXMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NDctXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NDk6XFx0bWRpb19idXMtXFx1MDAzZW5hbWUgPSBcXFwiQVBNIFgtR2VuZSBNRElPIGJ1c1xcXCI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NTA6XFx0bWRpb19idXMtXFx1MDAzZXJlYWQgPSB4Z2VuZV9tZGlvX3JnbWlpX3JlYWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NTE6XFx0bWRpb19idXMtXFx1MDAzZXdyaXRlID0geGdlbmVfbWRpb19yZ21paV93cml0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk1MjpcXHRzbnByaW50ZihtZGlvX2J1cy1cXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXFxcIiVzLSVzXFxcIiwgXFxcInhnZW5lLW1paVxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NTMtXFx0XFx0IG5kZXYtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTU1OlxcdG1kaW9fYnVzLVxcdTAwM2Vwcml2ID0gKHZvaWQgX19mb3JjZSAqKXBkYXRhLVxcdTAwM2VtY3hfbWFjX2FkZHI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NTY6XFx0bWRpb19idXMtXFx1MDAzZXBhcmVudCA9IFxcdTAwMjZwZGF0YS1cXHUwMDNlcGRldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTU4OlxcdHJldCA9IHhnZW5lX21kaW9idXNfcmVnaXN0ZXIocGRhdGEsIG1kaW9fYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk1OS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NjAtXFx0XFx0bmV0ZGV2X2VycihuZGV2LCBcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIE1ESU8gYnVzXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk2MTpcXHRcXHRtZGlvYnVzX2ZyZWUobWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTYyLVxcdFxcdHJldHVybiByZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NjMtXFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTY0OlxcdHBkYXRhLVxcdTAwM2VtZGlvX2J1cyA9IG1kaW9fYnVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTY1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz05ODE9dm9pZCB4Z2VuZV9lbmV0X21kaW9fcmVtb3ZlKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTg4OlxcdG1kaW9idXNfdW5yZWdpc3RlcihwZGF0YS1cXHUwMDNlbWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTg5OlxcdG1kaW9idXNfZnJlZShwZGF0YS1cXHUwMDNlbWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTkwOlxcdHBkYXRhLVxcdTAwM2VtZGlvX2J1cyA9IE5VTEw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05OTEtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5oPTE4ND1zdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5oLTE4NS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmg6MTg2OlxcdHN0cnVjdCBtaWlfYnVzICptZGlvX2J1cztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmgtMTg3LVxcdGludCBwaHlfc3BlZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYy0xMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYzoxMjpib29sIGFxX21kaW9fYnVzeV93YWl0KHN0cnVjdCBhcV9od19zICphcV9odylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYy0xMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYy0xNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYzoxNzpcXHRlcnIgPSByZWFkeF9wb2xsX3RpbWVvdXRfYXRvbWljKGh3X2F0bF9tZGlvX2J1c3lfZ2V0LCBhcV9odyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9waHkuYy0xOC1cXHRcXHRcXHRcXHRcXHR2YWwsIHZhbCA9PSAwVSwgMTBVLCAxMDAwMDBVKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX3BoeS5jPTI2PXUxNiBhcV9tZGlvX3JlYWRfd29yZChzdHJ1Y3QgYXFfaHdfcyAqYXFfaHcsIHUxNiBtbWQsIHUxNiBhZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfcGh5LmMtMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfcGh5LmM6Mzk6XFx0YXFfbWRpb19idXN5X3dhaXQoYXFfaHcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX3BoeS5jLTQwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfcGh5LmMtNDYtXFx0LyogUmVhZCByZXN1bHQuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfcGh5LmM6NDc6XFx0YXFfbWRpb19idXN5X3dhaXQoYXFfaHcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX3BoeS5jLTQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfcGh5LmM9NTI9dm9pZCBhcV9tZGlvX3dyaXRlX3dvcmQoc3RydWN0IGFxX2h3X3MgKmFxX2h3LCB1MTYgbW1kLCB1MTYgYWRkciwgdTE2IGRhdGEpXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE2OjEzOjM0LjYxNzc0NTM3N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MDAyNTM3ODgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyBpdDpcblxuKipBbmFseXppbmcgdGhlIE1pY3JvY2hpcCBUMSBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBtaWNyb2NoaXBfdDEuY2AgZHJpdmVyIGlzIGludGVncmF0ZWQuIEZpcnN0LCBJJ20gZ29pbmcgdG8gcHVsbCB1cCB0aGF0IHNvdXJjZSBmaWxlLCBhbmQgdGhlbiBJJ20gYWxzbyBnb2luZyB0byBleGFtaW5lIGl0cyBjb3JyZXNwb25kaW5nIEtjb25maWcgZW50cnkuIFRoZSBLY29uZmlnLCBvYnZpb3VzbHksIGlzIGNydWNpYWwgZm9yIGRldGVybWluaW5nIGhvdyBpdCdzIGNvbmZpZ3VyZWQsIGlmIGl0J3MgZXZlbiBlbmFibGVkLCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZS4gVW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyBlbnRyeSBpcyBnb2luZyB0byBnaXZlIG1lIHRoZSBiaWcgcGljdHVyZSBvZiBob3cgdGhpcyBkcml2ZXIgZml0cyBpbnRvIHRoZSBicm9hZGVyIGJ1aWxkIHN5c3RlbSBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIGF2YWlsYWJsZS4gSSBuZWVkIHRvIGlkZW50aWZ5IGl0cyByb2xlLiBUaGlzIGlzIHdoZXJlIEkgc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NTcxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTY6MTM6NDAuNjIwMjg4MDA3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTAzOTUwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNSUNST0NISVBfVDFfUEhZXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZz0zMzY9Y29uZmlnIE1JQ1JPQ0hJUF9QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTM0MC1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzozNDE6Y29uZmlnIE1JQ1JPQ0hJUF9UMV9QSFlcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0zNDItXFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBUMSBQSFlzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTgxPW9iai0kKENPTkZJR19NSUNST0NISVBfUEhZX1JEU19QVFApXFx0Kz0gbWljcm9jaGlwX3Jkc19wdHAub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo4MjpvYmotJChDT05GSUdfTUlDUk9DSElQX1QxX1BIWSlcXHQrPSBtaWNyb2NoaXBfdDEub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS04My1vYmotJChDT05GSUdfTUlDUk9DSElQX1QxU19QSFkpICs9IG1pY3JvY2hpcF90MXMub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNjoxMzo0MC42NzUzMzUxNDNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzMzMjY3NjY4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEtjb25maWcgTGFieXJpbnRoKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBzb21ldGhpbmcgbmV0d29ya2luZy1yZWxhdGVkLCBwcm9iYWJseSBhIFBIWSBkcml2ZXIsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0byBoZWFkIHN0cmFpZ2h0IGZvciB0aGUgYEtjb25maWdgIGZpbGUgYmVjYXVzZSB0aGF0J3Mgd2hlcmUgYWxsIHRoZSBidWlsZC10aW1lIGRlY2lzaW9ucyBhcmUgbWFkZS4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgSSBuZWVkIHRvIGxvb2sgYXJvdW5kIGxpbmUgMzQxIGluIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AuIFRoYXQgc3BlY2lmaWMgbGluZSBsaWtlbHkgY29udGFpbnMgYSBkZWZpbml0aW9uLCBkZXBlbmRlbmN5LCBvciBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0J3MgcGlxdWluZyBteSBpbnRlcmVzdCwgb3IgbWF5YmUgaXQncyBqdXN0IGEgc2VjdGlvbiBJIGtub3cgSSBuZWVkIHRvIGFuYWx5emUuIEl0IGNvdWxkIGJlIGEgbmV3IGZlYXR1cmUsIGEgZHJpdmVyIEknbSB1bmZhbWlsaWFyIHdpdGgsIG9yIGEgcHJvYmxlbSBJJ20gaW52ZXN0aWdhdGluZy4gVGltZSB0byBzZWUgd2hhdCdzIHdoYXQhIExldCdzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5ODcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNjoxMzo0OC4wMDgwMTU4OTRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODgxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzM1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzM1OlxcdFxcbiAzMzY6XFx0Y29uZmlnIE1JQ1JPQ0hJUF9QSFlcXG4gMzM3OlxcdFxcdHRyaXN0YXRlIFxcXCJNaWNyb2NoaXAgUEhZc1xcXCJcXG4gMzM4OlxcdFxcdGhlbHBcXG4gMzM5OlxcdFxcdCAgU3VwcG9ydHMgdGhlIExBTjg4WFggUEhZcy5cXG4gMzQwOlxcdFxcbiAzNDE6XFx0Y29uZmlnIE1JQ1JPQ0hJUF9UMV9QSFlcXG4gMzQyOlxcdFxcdHRyaXN0YXRlIFxcXCJNaWNyb2NoaXAgVDEgUEhZc1xcXCJcXG4gMzQzOlxcdFxcdHNlbGVjdCBNSUNST0NISVBfUEhZX1JEU19QVFAgaWYgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXFxuIDM0NDpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuIDM0NTpcXHRcXHRoZWxwXFxuIDM0NjpcXHRcXHQgIFN1cHBvcnRzIHRoZSBMQU44WFhYIFBIWXMuXFxuIDM0NzpcXHRcXG4gMzQ4OlxcdGNvbmZpZyBNSUNST0NISVBfUEhZX1JEU19QVFBcXG4gMzQ5OlxcdFxcdHRyaXN0YXRlXFxuIDM1MDpcXHRcXHRoZWxwXFxuIDM1MTpcXHRcXHQgIEN1cnJlbnRseSBzdXBwb3J0cyBMQU44ODdYIFQxIFBIWVxcbiAzNTI6XFx0XFxuIDM1MzpcXHRjb25maWcgTUlDUk9TRU1JX1BIWVxcbiAzNTQ6XFx0XFx0dHJpc3RhdGUgXFxcIk1pY3Jvc2VtaSBQSFlzXFxcIlxcbiAzNTU6XFx0XFx0ZGVwZW5kcyBvbiBNQUNTRUMgfHwgTUFDU0VDPW5cXG4gMzU2OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUwgfHwgIU5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xcbiAzNTc6XFx0XFx0c2VsZWN0IENSWVBUT19MSUJfQUVTIGlmIE1BQ1NFQ1xcbiAzNTg6XFx0XFx0c2VsZWN0IFBIWV9QQUNLQUdFXFxuIDM1OTpcXHRcXHRoZWxwXFxuIDM2MDpcXHRcXHQgIEN1cnJlbnRseSBzdXBwb3J0cyBWU0M4NTE0LCBWU0M4NTMwLCBWU0M4NTMxLCBWU0M4NTQwIGFuZCBWU0M4NTQxIFBIWXNcXG4gMzYxOlxcdFxcbiAzNjI6XFx0Y29uZmlnIE1PVE9SQ09NTV9QSFlcXG4gMzYzOlxcdFxcdHRyaXN0YXRlIFxcXCJNb3RvcmNvbW0gUEhZc1xcXCJcXG4gMzY0OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTY6MTM6NDguMDA4MTA1ODg0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYyODQ4NTk5MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYE1JQ1JPQ0hJUF9UMV9QSFlgIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBNSUNST0NISVBfVDFfUEhZYCwgd2hpY2ggSSBrbm93IGlzIGEgZHJpdmVyIGZvciB0aG9zZSBNaWNyb2NoaXAgTEFOODg3eCBUMSBFdGhlcm5ldCBQSFkgY2hpcHMuIFRoZSBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiAqcmVhY2gqIHRoaXMgZHJpdmVyLCBjYW4gSSBnZXQgaXQgdG8gZG8gc29tZXRoaW5nLCB3aXRob3V0IGhhdmluZyB0aGUgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQ/XG5cbkxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIHdoYXQgZXhhY3RseSAqaXMqIGEgTWljcm9jaGlwIFQxIFBIWT8gQWgsIHJpZ2h0LCBpdOKAmXMgdGhhdCBhdXRvbW90aXZlIEV0aGVybmV0IHRyYW5zY2VpdmVyIOKAkyBhIDEwMEJBU0UtVDEgLyAxMDAwQkFTRS1UMSBQSFkgdHJhbnNjZWl2ZXIgbGlrZSB0aGUgTEFOODg3eC4gVG8gdHJpZ2dlciBgbGFuODg3eF9waHlfaW5pdGAsIEkgbmVlZCBhbiBNRElPIGJ1cyB0byBkZXRlY3QgYSBQSFksIGFuZCB0aGF0IFBIWSBuZWVkcyB0byBoYXZlIHRoZSBjb3JyZWN0IElELCBgUEhZX0lEX0xBTjg4N1hgLiBUaGF0IGluc3RhbnRpYXRlcyBhIGBwaHlfZGV2aWNlYCwgdGhlbiB0aGUgYG1pY3JvY2hpcF90MV9waHlfZHJpdmVyYCBnZXRzIGJvdW5kLCBhbmQgKnRoZW4qIHdlIGNhbiBydW4gYGxhbjg4N3hfcGh5X2luaXRgLCBtYXliZSB0aHJvdWdoIGBwaHlfaW5pdF9od2AsIGBwaHlfY29ubmVjdGAsIGBwaHlfYXR0YWNoYCwgb3IgZXZlbiBhIGNhYmxlIHRlc3QgcmVzZXQuXG5cbk5vdywgdGhlIHJlYWwgY2hhbGxlbmdlLiBDYW4gSSBzaW11bGF0ZSBhbGwgdGhpcyB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlLCBsaWtlIGJ5IHVzaW5nIHN5emthbGxlciwgUUVNVSwgb3IgZXZlbiBzb21ldGhpbmcgcnVubmluZyBvbiBHQ0U/IElzIHRoZXJlIGEgd2F5IHRvIGNyZWF0ZSBhIGBtaWNyb2NoaXBfdDFgIE1ESU8gUEhZIGRldmljZSB2aXJ0dWFsbHk/IEFyZSB0aGVyZSB2aXJ0dWFsIE1ESU8gYnVzZXMgSSBjYW4gdXNlLCBvciBhbnkgbWVjaGFuaXNtIHRvIGR5bmFtaWNhbGx5IGNyZWF0ZSBNRElPIFBIWXMgZnJvbSB1c2Vyc3BhY2Ugb3Igc29tZSB2aXJ0dWFsIGJ1cz9cblxuSG9sZCBvbi4uLiBjb3VsZCBhIFVTQiBQSFksIG9yIGV2ZW4gYSBVU0IgRXRoZXJuZXQgZG9uZ2xlLCBwb3RlbnRpYWxseSB1c2UgYSBMQU44ODd4PyBMZXQncyBleHBsb3JlIHRoYXQuIEkgc2hvdWxkIGNoZWNrIGlmIGFueSBVU0IgRXRoZXJuZXQgYWRhcHRlcnMgYXJlIGFjdHVhbGx5IHVzaW5nIGEgTEFOODg3eC4gTGV0J3Mgc3RhcnQgYnkgc2VhcmNoaW5nIHRoZSBVU0IgZHJpdmVycywgYW5kIGlmIHRoYXQgZG9lc24ndCB3b3JrLCBtYXliZSBhIG1vcmUgZ2VuZXJhbCBzZWFyY2ggYWNyb3NzIHRoZSBlbnRpcmUga2VybmVsIHNvdXJjZSBpcyBuZWVkZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNjc5LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTY6MTM6NTQuMjkyOTcwMjc0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzU5OTg2Njg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JRF9MQU44ODdYXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xNi0jZGVmaW5lIFBIWV9JRF9MQU45MzdYXFx0XFx0XFx0XFx0MHgwMDA3YzE4MFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYzoxNzojZGVmaW5lIFBIWV9JRF9MQU44ODdYXFx0XFx0XFx0XFx0MHgwMDA3YzFmMFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0xOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0xNjA3PXN0YXRpYyBpbnQgbGFuODg3eF9jZF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTE2MjEtXFx0XFx0XFx0XFx0ICAgKCh2YWwgXFx1MDAyNiBHRU5NQVNLKDE1LCA0KSkgPT1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MTYyMjpcXHRcXHRcXHRcXHQgICAgKFBIWV9JRF9MQU44ODdYIFxcdTAwMjYgR0VOTUFTSygxNSwgNCkpKSxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtMTYyMy1cXHRcXHRcXHRcXHQgICA1MDAwLCA1MDAwMCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM9MjEwNj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3QxX3BoeV9kcml2ZXJbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTQxLVxcdHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6MjE0MjpcXHRcXHRQSFlfSURfTUFUQ0hfTU9ERUwoUEhZX0lEX0xBTjg4N1gpLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy0yMTQzLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiTWljcm9jaGlwIExBTjg4N3ggVDEgUEhZXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz0yMTY3PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbWljcm9jaGlwX3QxX3RibFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNjktXFx0eyBQSFlfSURfTUFUQ0hfTU9ERUwoUEhZX0lEX0xBTjkzN1gpIH0sXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jOjIxNzA6XFx0eyBQSFlfSURfTUFUQ0hfTU9ERUwoUEhZX0lEX0xBTjg4N1gpIH0sXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTIxNzEtXFx0eyB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE2OjEzOjU2LjY1Mjk2NzgwOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNjMwMDIyMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgRXRoZXJuZXQgUEhZIEZ1enppbmcgRmVhc2liaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkNhbiB3ZSBlZmZlY3RpdmVseSBmdXp6IGEgTWljcm9jaGlwIExBTjg4N3ggUEhZIGRyaXZlciB3aXRoaW4gYSBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudCB1c2luZyBzeXprYWxsZXI/XCIgTGV0J3MgY29uc3VsdCB0aGUgdHJpYWdlIGd1aWRlLiBTZWN0aW9uIDIgaGlnaGxpZ2h0cyBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSxcIiBzcGVjaWZpY2FsbHkgbWVudGlvbmluZyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBhbmQgR1BVIGRyaXZlcnMgdGhhdCByZXF1aXJlIHNwZWNpZmljIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gT24gdGhlIGZsaXAgc2lkZSwgXCJSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzXCIgYXJlIHRob3NlIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgbGlrZSB2aXJ0aW8sIFVTQiBnYWRnZXQsIGV0Yy5cblxuTm93LCB3aGVyZSBkbyBFdGhlcm5ldCBQSFlzIGxpa2UgdGhlIE1pY3JvY2hpcCBMQU44ODd4IGZpdD8gU3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRz4oCUUUVNVSwgR0NF4oCUIHR5cGljYWxseSBvZmZlciBkZXZpY2VzIGxpa2UgZTEwMDAsIHZpcnRpby1uZXQsIGFuZCBhIGZldyBvdGhlcnMsIGFuZCBub25lIG9mIHRoZXNlIGV4cG9zZSBhIE1pY3JvY2hpcCBMQU44ODd4IFQxIFBIWSBhdHRhY2hlZCB0byBhbiBNRElPIGJ1cy4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCB3ZSdyZSB0YWxraW5nIGFib3V0IGEgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGVcIiBzY2VuYXJpby4gSSBuZWVkIHRvIGJlIHN1cmUgdGhvdWdoLlxuXG5UaGUgY3J1eCBvZiB0aGUgbWF0dGVyIGlzIHRoZSBsYWNrIG9mIGEgZ2VuZXJpYyB1c2VyLXNwYWNlIG1lY2hhbmlzbSB0byBpbnN0YW50aWF0ZSBhbiBhcmJpdHJhcnkgTURJTyBQSFkgZGV2aWNlIHdpdGggY3VzdG9tIHJlZ2lzdGVycyBhbmQgYmluZCB0aGUgYG1pY3JvY2hpcF90MS5jYCBkcml2ZXIgdG8gaXQsIHVubGVzcyB3ZSBoYXZlIHBoeXNpY2FsIE1ESU8gaGFyZHdhcmUgb3IgZGVkaWNhdGVkIEFTSUMuIEkgd291bGQgbmVlZCB0byBjaGVjayBhbmQgdmVyaWZ5IGlmIE1ESU8gUEhZIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgdmlhIG5ldGxpbmssIHN5c2ZzLCBvciBvdGhlciB1c2VyLXNwYWNlIHRvb2xzLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBzZWFyY2ggZm9yIGFueSBldmlkZW5jZSBvZiBgbWRpb19idXNgIG9yIGBtZGlvX2RldmljZWAgY3JlYXRpb24gZnJvbSB1c2VyLXNwYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjAyMCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNjoxNDowMC4yODI5OTIxNDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzg1NDk0MTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb2J1c19yZWdpc3Rlcl9kZXZpY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9NDY9c3RhdGljIGludCBvZl9tZGlvYnVzX3JlZ2lzdGVyX3BoeShzdHJ1Y3QgbWlpX2J1cyAqbWRpbyxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTUxLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjUyOnN0YXRpYyBpbnQgb2ZfbWRpb2J1c19yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG1paV9idXMgKm1kaW8sXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNTMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpjaGlsZCwgdTMyIGFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0xMzk9c3RhdGljIGludCBfX29mX21kaW9idXNfcGFyc2VfcGh5cyhzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTE2OS1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6MTcwOlxcdFxcdFxcdHJjID0gb2ZfbWRpb2J1c19yZWdpc3Rlcl9kZXZpY2UobWRpbywgY2hpbGQsIGFkZHIpO1xcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTE3MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jPTE1MT1pbnQgbWRpb19kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTU2LVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jOjE1NzpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyX2RldmljZShtZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZpY2UuYy0xNTgtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jPTE4OT1FWFBPUlRfU1lNQk9MKG1kaW9fZGV2aWNlX3JlbW92ZSk7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2aWNlLmMtMTkwLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jOjE5MTppbnQgbWRpb2J1c19yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldmljZS5jLTE5Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTExMDk9aW50IHBoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTExMi1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjExMTM6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTE0LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmg9MjU9dm9pZCBwaHlfY2hlY2tfZG93bnNoaWZ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaC0yNi1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmg6Mjc6aW50IG1kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi1pbnRlcm5hbC5oLTI4LWludCBtZGlvYnVzX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE2OjE0OjAyLjY2MTU1MDA0OFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjAxNDgwOTM0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb2RlJ3MgRnV6emluZyBXb3J0aGluZXNzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIGlzbid0IHdvcnRoIGZ1enppbmcsIGFuZCBJIG5lZWQgdG8gYmUgcHJlY2lzZSBhbmQganVzdGlmeSB0aGF0LiBUaGUgY29kZSdzIGRlYWxpbmcgd2l0aCBNRElPL1BIWSBkZXZpY2VzLCBhbmQgdGhlIExBTjg4N3ggaXMgYSBwaHlzaWNhbCwgYXV0b21vdGl2ZSBFdGhlcm5ldCBQSFkgZnJvbSBNaWNyb2NoaXAuIEl0IHJlZ2lzdGVycyBpbiBvbmUgb2YgdGhlIHVzdWFsIHdheXM6IGRldmljZSB0cmVlLCBBQ1BJLCBvciBNQUMgZHJpdmVycyBzY2FubmluZyB0aGUgTURJTyBidXMuXG5cblRoZSBjcnVjaWFsIHBvaW50IGlzIHRoYXQgdGhpcyBzcGVjaWZpYyBMQU44ODd4IFBIWSwgYW5kIHRoZSBgbWljcm9jaGlwX3QxLmNgIGRyaXZlciB0aGF0IHN1cHBvcnRzIGl0LCAqcmVxdWlyZXMqIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZS4gSXTigJlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgd2hpY2ggYXJlIHdoYXQgd2UncmUgdXNpbmcgZm9yIGZ1enppbmcuIFNvLCBldmVuIHRob3VnaCB0aGlzIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBgbGFuODg3eF9waHlfaW5pdCgpYCB3aGVuIGBwcml2LVx1MDAzZWNsb2NrYCBpcyBOVUxMICh3aGljaCwgSSBnZXQgaXQsIGlzIGEgdmFsaWQgYnVnIGZpeCksIHRoYXQgZnVuY3Rpb24gd2lsbCAqbmV2ZXIqIGJlIGNhbGxlZCBpbiBvdXIgZnV6emluZyBlbnZpcm9ubWVudC4gVGhlIGhhcmR3YXJlIHNpbXBseSBpc24ndCB0aGVyZSB0byB0cmlnZ2VyIGl0LlxuXG5Mb29raW5nIGF0IHRoZSBjcml0ZXJpYSwgdGhlIHBhdGNoIGNsZWFybHkgZmFsbHMgaW50byBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiLiBUaGUgZGVzY3JpcHRpb24gZXhwbGljaXRseSBtZW50aW9ucyB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhpcyBpcyBhIHBlcmZlY3QgbWF0Y2guXG5cblRoZXJlZm9yZSwgbXkgZmluYWwgdmVyZGljdCBpczpcblxuKiAgICoqV29ydGhGdXp6aW5nID0gZmFsc2UqKlxuKiAgICoqRm9jdXNTeW1ib2xzID0gXFxbIF0qKiAoZW1wdHkgYXJyYXkpXG4qICAgKipFbmFibGVDb25maWdzID0gXFxbIF0qKiAoZW1wdHkgYXJyYXkpXG4qICAgKipSZWFzb25pbmcgPSBcIlBoeXNpY2FsIGhhcmR3YXJlIFBIWSBkcml2ZXIgZm9yIE1pY3JvY2hpcCBMQU44ODd4IGF1dG9tb3RpdmUgRXRoZXJuZXQgUEhZLCBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9HQ0UsIHRodXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiKipcblxuSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoZXNlIHBhcmFtZXRlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNDM1LCJPdXRwdXRUb2tlbnMiOjE0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNjoxNDoxNC42NzYzNjM1NjlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMgdG8gYWRkIGEgTlVMTCBjaGVjayBmb3IgcHJpdi1cXHUwMDNlY2xvY2sgaW4gbGFuODg3eF9waHlfaW5pdCgpLiBUaGlzIGRyaXZlciBpcyBmb3IgTWljcm9jaGlwIExBTjg4N3ggYXV0b21vdGl2ZSBFdGhlcm5ldCBQSFlzICgxMDBCQVNFLVQxLzEwMDBCQVNFLVQxKSwgd2hpY2ggcmVxdWlyZSBkZWRpY2F0ZWQgcGh5c2ljYWwgaGFyZHdhcmUvQVNJQ3MgYW5kIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jIHRvIGFkZCBhIE5VTEwgY2hlY2sgZm9yIHByaXYtXFx1MDAzZWNsb2NrIGluIGxhbjg4N3hfcGh5X2luaXQoKS4gVGhpcyBkcml2ZXIgaXMgZm9yIE1pY3JvY2hpcCBMQU44ODd4IGF1dG9tb3RpdmUgRXRoZXJuZXQgUEhZcyAoMTAwQkFTRS1UMS8xMDAwQkFTRS1UMSksIHdoaWNoIHJlcXVpcmUgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlL0FTSUNzIGFuZCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE2OjE0OjE0LjY3NjQwMzkzOVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjlsf2[1] Phase: Running StartedAt: 2026-09-04 16:14:25 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlsf2[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-04 16:14:25 +0000 UTC FinishedAt: 2026-09-04 16:14:30 +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,}