Name: series-workflow459v4 Phase: Failed StartedAt: 2026-07-13 17:21:09 +0000 UTC FinishedAt: 2026-07-13 17:34:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow459v4[0] Phase: Succeeded StartedAt: 2026-07-13 17:21:09 +0000 UTC FinishedAt: 2026-07-13 17:34:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow459v4[0].run-triage Phase: Succeeded StartedAt: 2026-07-13 17:21:09 +0000 UTC FinishedAt: 2026-07-13 17:34:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE3OjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBwcmltYXJpbHkgYWRkcyBzdXBwb3J0IGZvciBhIGZpcm13YXJlLW1hbmFnZWQgUXVhbGNvbW0gRXRoZXJuZXQgRVRIUU9TIGRldmljZSBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgU2VyRGVzL1NHTUlJIFBIWS4gVGhlc2UgYXJlIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlcnMgKFF1YWxjb21tIFNvQ3MpIGFuZCBhIG1pbm9yIGZpeCBpbiBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWSBkcml2ZXIgKEFxdWFudGlhKS4gU3VjaCBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkZXZpY2VzIGFuZCBQSFlzIGFyZSBub3QgZW11bGF0ZWQgb3IgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHVzZWQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE3OjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOGMzNTNiOWQ4NmVhMThhODRlNTM5N2RlYTI2MTI2MGU5ZTQxZjNhNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDEzIDE3OjMzOjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjdpLWEyMC1nbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW43aS1hMjAtZ21hYy55YW1sXG5pbmRleCAyM2U5MmJlMzNhYzg2MC4uYjEyNjMyNTQ1NjczYjIgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW43aS1hMjAtZ21hYy55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW43aS1hMjAtZ21hYy55YW1sXG5AQCAtNDAsNiAmIzQzOzQwLDkgQEAgcHJvcGVydGllczpcbiAgICAgZGVzY3JpcHRpb246XG4gICAgICAgUEhZIHJlZ3VsYXRvclxuIFxuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sXG5pbmRleCBmYzQ0NWFkNWExZjFhYy4uNDQ4ZTYxN2NkZGM0Y2QgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWxcbkBAIC0xNDAsNiAmIzQzOzE0MCw5IEBAIHByb3BlcnRpZXM6XG4gICAgICAgICAgIC0gZGVzY3JpcHRpb246IG9mZnNldCBvZiB0aGUgY29udHJvbCByZWdpc3RlclxuICAgICAgICAgICAtIGRlc2NyaXB0aW9uOiBzaGlmdCB3aXRoaW4gdGhlIGNvbnRyb2wgcmVnaXN0ZXJcbiBcbiYjNDM7ICBwb3dlci1kb21haW5zOlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4gcGF0dGVyblByb3BlcnRpZXM6XG4gICBcJiMzNDtebWRpb1swLTldJFwmIzM0OzpcbiAgICAgdHlwZTogb2JqZWN0XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbFxuaW5kZXggNWM5MTcxNmQxZjIxZTYuLjljOWNjM2VmMzg0ZGEwIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1sb2dpYyxtZXNvbi1kd21hYy55YW1sXG5AQCAtMTU4LDYgJiM0MzsxNTgsOSBAQCBwcm9wZXJ0aWVzOlxuICAgaW50ZXJydXB0LW5hbWVzOlxuICAgICBjb25zdDogbWFjaXJxXG4gXG4mIzQzOyAgcG93ZXItZG9tYWluczpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuIHJlcXVpcmVkOlxuICAgLSBjb21wYXRpYmxlXG4gICAtIHJlZ1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbFxuaW5kZXggNjU4ODJmZjc5ZDhkN2UuLjA4MWEyMTE3NGZkNDJiIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWxcbkBAIC05NSw2ICYjNDM7OTUsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICAgICAgICAtIGRlc2NyaXB0aW9uOiBPcHRpb25hbCBvZmZzZXQgb2YgcmVnaXN0ZXIgY29udHJvbGxpbmcgVFhEIGRlbGF5XG4gICAgICAgICAgIC0gZGVzY3JpcHRpb246IE9wdGlvbmFsIG9mZnNldCBvZiByZWdpc3RlciBjb250cm9sbGluZyBSWEQgZGVsYXlcbiBcbiYjNDM7ICBwb3dlci1kb21haW5zOlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gcmVnXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbFxuaW5kZXggNjJjMWRhMzZhMmI1YTIuLmU0MTg1MTkzMWI5NDc1IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sXG5AQCAtNDcsNiAmIzQzOzQ3LDkgQEAgcHJvcGVydGllczpcbiAgIGludGVycnVwdC1uYW1lczpcbiAgICAgY29uc3Q6IG1hY2lycVxuIFxuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSBjbG9ja3NcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWItZ21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFiLWdtYWMueWFtbFxuaW5kZXggYzRmMzIyNGJhZDM4N2IuLmM5YTEzMWI4ZDgzMDRjIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFiLWdtYWMueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFiLWdtYWMueWFtbFxuQEAgLTY2LDYgJiM0Mzs2Niw5IEBAIHByb3BlcnRpZXM6XG4gICAgICAgLSBtaWlcbiAgICAgICAtIHJnbWlpLWlkXG4gXG4mIzQzOyAgcG93ZXItZG9tYWluczpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuIHJlcXVpcmVkOlxuICAgLSBjb21wYXRpYmxlXG4gICAtIHJlZ1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbG9vbmdzb24sbHMxYy1lbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWMtZW1hYy55YW1sXG5pbmRleCA5OTAwMWI5NDBiODM2MS4uNDlkYjE4NDIzZGQ4MDcgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWMtZW1hYy55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWMtZW1hYy55YW1sXG5AQCAtNjUsNiAmIzQzOzY1LDkgQEAgcHJvcGVydGllczpcbiAgICAgICAtIG1paVxuICAgICAgIC0gcm1paVxuIFxuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxkd21hYy1pbXgueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGR3bWFjLWlteC55YW1sXG5pbmRleCBlNWRiMzQ2YmVjYTk2NC4uYjI0MGM3NmU3ZGQ1MjUgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxkd21hYy1pbXgueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsZHdtYWMtaW14LnlhbWxcbkBAIC04Myw2ICYjNDM7ODMsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICBUbyBzZWxlY3QgUk1JSSByZWZlcmVuY2UgY2xvY2sgZnJvbSBleHRlcm5hbC5cbiBcbiYjNDM7ICBwb3dlci1kb21haW5zOlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gY2xvY2tzXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsbHBjMTg1MC1kd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsbHBjMTg1MC1kd21hYy55YW1sXG5pbmRleCAwNWFjZDliYzc2MTYzNS4uZjYxMTg4YWIwZGJlM2MgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxscGMxODUwLWR3bWFjLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGxwYzE4NTAtZHdtYWMueWFtbFxuQEAgLTUxLDYgJiM0Mzs1MSw5IEBAIHByb3BlcnRpZXM6XG4gICAgIGl0ZW1zOlxuICAgICAgIC0gY29uc3Q6IHN0bW1hY2V0aFxuIFxuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxzMzItZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sXG5pbmRleCA3NTNhMDQ5NDE2NTliOC4uZmNhZDIyNzQzMDJkOWMgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxzMzItZHdtYWMueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWxcbkBAIC04MSw2ICYjNDM7ODEsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICAgIC0gY29uc3Q6IHJ4XG4gICAgICAgLSBjb25zdDogcHRwX3JlZlxuIFxuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY2xvY2tzXG4gICAtIGNsb2NrLW5hbWVzXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY29tLGV0aHFvcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY29tLGV0aHFvcy55YW1sXG5pbmRleCA0MjM5NTljYjkyOGQ5NC4uZWY1MjBmODEwNTc3M2UgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sZXRocW9zLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbFxuQEAgLTg2LDYgJiM0Mzs4Niw5IEBAIHByb3BlcnRpZXM6XG4gICBwaHktbmFtZXM6XG4gICAgIGNvbnN0OiBzZXJkZXNcbiBcbiYjNDM7ICBwb3dlci1kb21haW5zOlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gY2xvY2tzXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY29tLHNhODI1NXAtZXRocW9zLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sc2E4MjU1cC1ldGhxb3MueWFtbFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi41MTU4NDgxZTVlNWIwZlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY29tLHNhODI1NXAtZXRocW9zLnlhbWxcbkBAIC0wLDAgJiM0MzsxLDEwNyBAQFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0yLUNsYXVzZVxuJiM0MzslWUFNTCAxLjJcbiYjNDM7LS0tXG4mIzQzOyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L3Fjb20sc2E4MjU1cC1ldGhxb3MueWFtbCNcbiYjNDM7JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG4mIzQzO1xuJiM0Mzt0aXRsZTogUXVhbGNvbW0gRXRoZXJuZXQgRVRIUU9TIGRldmljZSAoZmlybXdhcmUgbWFuYWdlZClcbiYjNDM7XG4mIzQzO21haW50YWluZXJzOlxuJiM0MzsgIC0gQmpvcm4gQW5kZXJzc29uIFx1MDAzY2FuZGVyc3NvbkBrZXJuZWwub3JnXHUwMDNlXG4mIzQzOyAgLSBLb25yYWQgRHliY2lvIFx1MDAzY2tvbnJhZHliY2lvQGtlcm5lbC5vcmdcdTAwM2VcbiYjNDM7ICAtIEJhcnRvc3ogR29sYXN6ZXdza2kgXHUwMDNjYmFydG9zei5nb2xhc3pld3NraUBsaW5hcm8ub3JnXHUwMDNlXG4mIzQzO1xuJiM0MztkZXNjcmlwdGlvbjpcbiYjNDM7ICBkd21hYyBiYXNlZCBRdWFsY29tbSBldGhlcm5ldCBkZXZpY2VzIHdoaWNoIHN1cHBvcnQgR2lnYWJpdFxuJiM0MzsgIGV0aGVybmV0ICh2ZXJzaW9uIHYyLjMuMCBhbmQgb253YXJkcykgd2l0aCBjbG9ja3MsIGludGVyY29ubmVjdHMsIGV0Yy5cbiYjNDM7ICBtYW5hZ2VkIGJ5IGZpcm13YXJlXG4mIzQzO1xuJiM0MzthbGxPZjpcbiYjNDM7ICAtICRyZWY6IHNucHMsZHdtYWMueWFtbCNcbiYjNDM7XG4mIzQzO3Byb3BlcnRpZXM6XG4mIzQzOyAgY29tcGF0aWJsZTpcbiYjNDM7ICAgIGNvbnN0OiBxY29tLHNhODI1NXAtZXRocW9zXG4mIzQzO1xuJiM0MzsgIHJlZzpcbiYjNDM7ICAgIG1heEl0ZW1zOiAyXG4mIzQzO1xuJiM0MzsgIHJlZy1uYW1lczpcbiYjNDM7ICAgIGl0ZW1zOlxuJiM0MzsgICAgICAtIGNvbnN0OiBzdG1tYWNldGhcbiYjNDM7ICAgICAgLSBjb25zdDogcmdtaWlcbiYjNDM7XG4mIzQzOyAgaW50ZXJydXB0czpcbiYjNDM7ICAgIGl0ZW1zOlxuJiM0MzsgICAgICAtIGRlc2NyaXB0aW9uOiBDb21iaW5lZCBzaWduYWwgZm9yIHZhcmlvdXMgaW50ZXJydXB0IGV2ZW50c1xuJiM0MzsgICAgICAtIGRlc2NyaXB0aW9uOiBUaGUgaW50ZXJydXB0IHRoYXQgb2NjdXJzIHdoZW4gSFcgc2FmZXR5IGVycm9yIHRyaWdnZXJlZFxuJiM0MztcbiYjNDM7ICBpbnRlcnJ1cHQtbmFtZXM6XG4mIzQzOyAgICBpdGVtczpcbiYjNDM7ICAgICAgLSBjb25zdDogbWFjaXJxXG4mIzQzOyAgICAgIC0gY29uc3Q6IHNmdHlcbiYjNDM7XG4mIzQzOyAgcG93ZXItZG9tYWluczpcbiYjNDM7ICAgIG1pbkl0ZW1zOiAyXG4mIzQzOyAgICBtYXhJdGVtczogMlxuJiM0MztcbiYjNDM7ICBwb3dlci1kb21haW4tbmFtZXM6XG4mIzQzOyAgICBpdGVtczpcbiYjNDM7ICAgICAgLSBjb25zdDogY29yZVxuJiM0MzsgICAgICAtIGNvbnN0OiBtZGlvXG4mIzQzO1xuJiM0MzsgIHBoeXM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiYjNDM7ICBwaHktbmFtZXM6XG4mIzQzOyAgICBpdGVtczpcbiYjNDM7ICAgICAgLSBjb25zdDogc2VyZGVzXG4mIzQzO1xuJiM0MzsgIGlvbW11czpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgIGRtYS1jb2hlcmVudDogdHJ1ZVxuJiM0MztcbiYjNDM7cmVxdWlyZWQ6XG4mIzQzOyAgLSBjb21wYXRpYmxlXG4mIzQzOyAgLSByZWctbmFtZXNcbiYjNDM7ICAtIHBvd2VyLWRvbWFpbnNcbiYjNDM7ICAtIHBvd2VyLWRvbWFpbi1uYW1lc1xuJiM0MztcbiYjNDM7dW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZVxuJiM0MztcbiYjNDM7ZXhhbXBsZXM6XG4mIzQzOyAgLSB8XG4mIzQzOyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0tZ2ljLmhcdTAwM2VcbiYjNDM7XG4mIzQzOyAgICBldGhlcm5ldDogZXRoZXJuZXRAMjMwNDAwMDAge1xuJiM0MzsgICAgICAgIGNvbXBhdGlibGUgPSBcJiMzNDtxY29tLHNhODI1NXAtZXRocW9zXCYjMzQ7O1xuJiM0MzsgICAgICAgIHJlZyA9IFx1MDAzYzB4MjMwNDAwMDAgMHgxMDAwMFx1MDAzZSxcbiYjNDM7ICAgICAgICAgICAgICBcdTAwM2MweDIzMDU2MDAwIDB4MTAwXHUwMDNlO1xuJiM0MzsgICAgICAgIHJlZy1uYW1lcyA9IFwmIzM0O3N0bW1hY2V0aFwmIzM0OywgXCYjMzQ7cmdtaWlcJiMzNDs7XG4mIzQzO1xuJiM0MzsgICAgICAgIGlvbW11cyA9IFx1MDAzY1x1MDAyNmFwcHNfc21tdSAweDEyMCAweDdcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICAgIGludGVycnVwdHMgPSBcdTAwM2NHSUNfU1BJIDk0NiBJUlFfVFlQRV9MRVZFTF9ISUdIXHUwMDNlLFxuJiM0MzsgICAgICAgICAgICAgICAgICAgICBcdTAwM2NHSUNfU1BJIDc4MiBJUlFfVFlQRV9MRVZFTF9ISUdIXHUwMDNlO1xuJiM0MzsgICAgICAgIGludGVycnVwdC1uYW1lcyA9IFwmIzM0O21hY2lycVwmIzM0OywgXCYjMzQ7c2Z0eVwmIzM0OztcbiYjNDM7XG4mIzQzOyAgICAgICAgZG1hLWNvaGVyZW50O1xuJiM0MztcbiYjNDM7ICAgICAgICBzbnBzLHRzbztcbiYjNDM7ICAgICAgICBzbnBzLHBibCA9IFx1MDAzYzMyXHUwMDNlO1xuJiM0MzsgICAgICAgIHJ4LWZpZm8tZGVwdGggPSBcdTAwM2MxNjM4NFx1MDAzZTtcbiYjNDM7ICAgICAgICB0eC1maWZvLWRlcHRoID0gXHUwMDNjMTYzODRcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICAgIHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZldGhlcm5ldF9waHlcdTAwM2U7XG4mIzQzOyAgICAgICAgcGh5LW1vZGUgPSBcJiMzNDsyNTAwYmFzZS14XCYjMzQ7O1xuJiM0MztcbiYjNDM7ICAgICAgICBzbnBzLG10bC1yeC1jb25maWcgPSBcdTAwM2NcdTAwMjZtdGxfcnhfc2V0dXAxXHUwMDNlO1xuJiM0MzsgICAgICAgIHNucHMsbXRsLXR4LWNvbmZpZyA9IFx1MDAzY1x1MDAyNm10bF90eF9zZXR1cDFcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICAgIHBvd2VyLWRvbWFpbnMgPSBcdTAwM2NcdTAwMjZzY21pOF9wZCAwXHUwMDNlLCBcdTAwM2NcdTAwMjZzY21pOF9wZCAxXHUwMDNlO1xuJiM0MzsgICAgICAgIHBvd2VyLWRvbWFpbi1uYW1lcyA9IFwmIzM0O2NvcmVcJiMzNDssIFwmIzM0O21kaW9cJiMzNDs7XG4mIzQzO1xuJiM0MzsgICAgICAgIHBoeXMgPSBcdTAwM2NcdTAwMjZzZXJkZXMxXHUwMDNlO1xuJiM0MzsgICAgICAgIHBoeS1uYW1lcyA9IFwmIzM0O3NlcmRlc1wmIzM0OztcbiYjNDM7ICAgIH07XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6bjEtZ21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6bjEtZ21hYy55YW1sXG5pbmRleCAxNmRkN2EyNjMxYWJmNi4uZWQwZDEwYTE5Y2E0YzQgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnpuMS1nbWFjLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyem4xLWdtYWMueWFtbFxuQEAgLTQ0LDYgJiM0Mzs0NCw5IEBAIHByb3BlcnRpZXM6XG4gICAgICAgcGhhbmRsZSBwb2ludGluZyB0byBhIFBDUyBzdWItbm9kZSBjb21wYXRpYmxlIHdpdGhcbiAgICAgICByZW5lc2FzLHJ6bjEtbWlpYy55YW1sI1xuIFxuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuIFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6djJoLWdiZXRoLnlhbWxcbmluZGV4IDIxMjViNWRkZjczZGFkLi44MzM4ODM0ZjQ5Y2QyMSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnp2MmgtZ2JldGgueWFtbFxuQEAgLTE1NCw2ICYjNDM7MTU0LDkgQEAgcHJvcGVydGllczpcbiAgICAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sI1xuICAgICAgIChSZWZlciBSWi9UMkggcG9ydGlvbiBpbiB0aGUgRFQtYmluZGluZyBmaWxlKVxuIFxuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JvY2tjaGlwLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JvY2tjaGlwLWR3bWFjLnlhbWxcbmluZGV4IDgwYzI1Mjg0NTM0OWM0Li4zZWMzZjZkYzJhMTI1OSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcm9ja2NoaXAtZHdtYWMueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yb2NrY2hpcC1kd21hYy55YW1sXG5AQCAtMTIzLDYgJiM0MzsxMjMsOSBAQCBwcm9wZXJ0aWVzOlxuICAgcGh5LXN1cHBseTpcbiAgICAgZGVzY3JpcHRpb246IFBIWSByZWd1bGF0b3JcbiBcbiYjNDM7ICBwb3dlci1kb21haW5zOlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gY2xvY2tzXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdtYWMueWFtbFxuaW5kZXggMjQ0OTMxMWM2ZDI4ZWQuLmQzYWZmMWRmMzA3MGQxIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc25wcyxkd21hYy55YW1sXG5AQCAtNzIsNiAmIzQzOzcyLDcgQEAgcHJvcGVydGllczpcbiAgICAgICAgIC0gbnV2b3RvbixtYTM1ZDEtZHdtYWNcbiAgICAgICAgIC0gbnhwLHMzMmcyLWR3bWFjXG4gICAgICAgICAtIHFjb20scWNzNDA0LWV0aHFvc1xuJiM0MzsgICAgICAgIC0gcWNvbSxzYTgyNTVwLWV0aHFvc1xuICAgICAgICAgLSBxY29tLHNhODc3NXAtZXRocW9zXG4gICAgICAgICAtIHFjb20sc2M4MjgweHAtZXRocW9zXG4gICAgICAgICAtIHFjb20sc204MTUwLWV0aHFvc1xuQEAgLTE4NSw3ICYjNDM7MTg2LDggQEAgcHJvcGVydGllczpcbiAgICAgICAgICAgLSBjb25zdDogYWhiXG4gXG4gICBwb3dlci1kb21haW5zOlxuLSAgICBtYXhJdGVtczogMVxuJiM0MzsgICAgbWluSXRlbXM6IDFcbiYjNDM7ICAgIG1heEl0ZW1zOiAyXG4gXG4gICBtYWMtbW9kZTpcbiAgICAgJHJlZjogZXRoZXJuZXQtY29udHJvbGxlci55YW1sIy9wcm9wZXJ0aWVzL3BoeS1jb25uZWN0aW9uLXR5cGVcbkBAIC02MzAsNiAmIzQzOzYzMiw3IEBAIGFsbE9mOlxuICAgICAgICAgICAgICAgICAtIGluZ2VuaWMseDE4MzAtbWFjXG4gICAgICAgICAgICAgICAgIC0gaW5nZW5pYyx4MjAwMC1tYWNcbiAgICAgICAgICAgICAgICAgLSBxY29tLHFjczQwNC1ldGhxb3NcbiYjNDM7ICAgICAgICAgICAgICAgIC0gcWNvbSxzYTgyNTVwLWV0aHFvc1xuICAgICAgICAgICAgICAgICAtIHFjb20sc2E4Nzc1cC1ldGhxb3NcbiAgICAgICAgICAgICAgICAgLSBxY29tLHNjODI4MHhwLWV0aHFvc1xuICAgICAgICAgICAgICAgICAtIHFjb20sc204MTUwLWV0aHFvc1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbFxuaW5kZXggYjg5NDU2ZjBlZjgzMDkuLmU3OGNiZjU5NGM2OTUyIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWxcbkBAIC00OSw2ICYjNDM7NDksOSBAQCBwcm9wZXJ0aWVzOlxuICAgcmVzZXQtbmFtZXM6XG4gICAgIGNvbnN0OiBzdG1tYWNldGhcbiBcbiYjNDM7ICBwb3dlci1kb21haW5zOlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gcmVnXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxzZzIwNDQtZHdtYWMueWFtbFxuaW5kZXggZThkMzgxNGRiMGU5NGYuLjg0NWUyYzY3ZDIwMDM3IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sXG5AQCAtNTIsNiAmIzQzOzUyLDkgQEAgcHJvcGVydGllczpcbiAgIGludGVycnVwdC1uYW1lczpcbiAgICAgbWF4SXRlbXM6IDFcbiBcbiYjNDM7ICBwb3dlci1kb21haW5zOlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4gICByZXNldHM6XG4gICAgIG1heEl0ZW1zOiAxXG4gXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWxcbmluZGV4IGZkY2M2MWM2NWY4N2QxLi5jNDI0ZTc3OTczOTIxZSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWxcbkBAIC03NSw2ICYjNDM7NzUsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICAgIFRoZSBhcmd1bWVudCBvbmUgaXMgdGhlIG9mZnNldCBvZiBwaHkgbW9kZSBzZWxlY3Rpb24sIHRoZVxuICAgICAgIGFyZ3VtZW50IHR3byBpcyB0aGUgc2hpZnQgb2YgcGh5IG1vZGUgc2VsZWN0aW9uLlxuIFxuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWxcbmluZGV4IDk4NzI1NDkwMGQwZGE3Li4yOWI4NzgwNzlmZjBjMSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RtMzItZHdtYWMueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG0zMi1kd21hYy55YW1sXG5AQCAtMTIxLDYgJiM0MzsxMjEsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICBtaW5JdGVtczogMVxuICAgICBtYXhJdGVtczogMlxuIFxuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSBjbG9ja3NcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rlc2xhLGZzZC1ldGhxb3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGVzbGEsZnNkLWV0aHFvcy55YW1sXG5pbmRleCBkZDc0ODFiYjE2ZTU5OS4uYWQ2MzU1MjlkNjc2ZWQgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rlc2xhLGZzZC1ldGhxb3MueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90ZXNsYSxmc2QtZXRocW9zLnlhbWxcbkBAIC02Nyw2ICYjNDM7NjcsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICAgIC0gcmdtaWktcnhpZFxuICAgICAgIC0gcmdtaWktdHhpZFxuIFxuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3RoZWFkLHRoMTUyMC1nbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3RoZWFkLHRoMTUyMC1nbWFjLnlhbWxcbmluZGV4IGIzNDkyYTlhYTRlZmZhLi5jODU5ZjhiYjVkNTgyYSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGhlYWQsdGgxNTIwLWdtYWMueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90aGVhZCx0aDE1MjAtZ21hYy55YW1sXG5AQCAtNzgsNiAmIzQzOzc4LDkgQEAgcHJvcGVydGllczpcbiAgICAgaXRlbXM6XG4gICAgICAgLSBjb25zdDogbWFjaXJxXG4gXG4mIzQzOyAgcG93ZXItZG9tYWluczpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuIHJlcXVpcmVkOlxuICAgLSBjbG9ja3NcbiAgIC0gY2xvY2stbmFtZXNcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rvc2hpYmEsdmlzY29udGktZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdG9zaGliYSx2aXNjb250aS1kd21hYy55YW1sXG5pbmRleCBmMGYzMmUxOGZjODU1MC4uZWZhMzllYWIwMjU2YTEgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rvc2hpYmEsdmlzY29udGktZHdtYWMueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90b3NoaWJhLHZpc2NvbnRpLWR3bWFjLnlhbWxcbkBAIC00OCw2ICYjNDM7NDgsOSBAQCBwcm9wZXJ0aWVzOlxuICAgaW50ZXJydXB0LW5hbWVzOlxuICAgICBjb25zdDogbWFjaXJxXG4gXG4mIzQzOyAgcG93ZXItZG9tYWluczpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuIHJlcXVpcmVkOlxuICAgLSBjb21wYXRpYmxlXG4gICAtIHJlZ1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeS55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9xY29tLHNhODI1NXAtZHdtYWMtc2dtaWktcGh5LnlhbWxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOWU4NDZlMzgxNTU1NTFcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeS55YW1sXG5AQCAtMCwwICYjNDM7MSw1MCBAQFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMCBPUiBCU0QtMi1DbGF1c2UpXG4mIzQzOyVZQU1MIDEuMlxuJiM0MzstLS1cbiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9waHkvcWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeS55YW1sI1xuJiM0Mzskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbiYjNDM7XG4mIzQzO3RpdGxlOiBRdWFsY29tbSBTZXJEZXMvU0dNSUkgZXRoZXJuZXQgUEhZIGNvbnRyb2xsZXIgKGZpcm13YXJlIG1hbmFnZWQpXG4mIzQzO1xuJiM0MzttYWludGFpbmVyczpcbiYjNDM7ICAtIEJhcnRvc3ogR29sYXN6ZXdza2kgXHUwMDNjYnJnbEBrZXJuZWwub3JnXHUwMDNlXG4mIzQzO1xuJiM0MztkZXNjcmlwdGlvbjpcbiYjNDM7ICBUaGUgU2VyRGVzIFBIWSBzaXRzIGJldHdlZW4gdGhlIE1BQyBhbmQgdGhlIGV4dGVybmFsIFBIWSBhbmQgcHJvdmlkZXNcbiYjNDM7ICBzZXBhcmF0ZSBSeCBUeCBsaW5lcy5cbiYjNDM7XG4mIzQzO3Byb3BlcnRpZXM6XG4mIzQzOyAgY29tcGF0aWJsZTpcbiYjNDM7ICAgIGNvbnN0OiBxY29tLHNhODI1NXAtZHdtYWMtc2dtaWktcGh5XG4mIzQzO1xuJiM0MzsgIHJlZzpcbiYjNDM7ICAgIGl0ZW1zOlxuJiM0MzsgICAgICAtIGRlc2NyaXB0aW9uOiBzZXJkZXNcbiYjNDM7XG4mIzQzOyAgcG93ZXItZG9tYWluczpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgIHBvd2VyLWRvbWFpbi1uYW1lczpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgIFwmIzM0OyNwaHktY2VsbHNcJiMzNDs6XG4mIzQzOyAgICBjb25zdDogMFxuJiM0MztcbiYjNDM7cmVxdWlyZWQ6XG4mIzQzOyAgLSBjb21wYXRpYmxlXG4mIzQzOyAgLSByZWdcbiYjNDM7ICAtIFwmIzM0OyNwaHktY2VsbHNcJiMzNDtcbiYjNDM7ICAtIHBvd2VyLWRvbWFpbnNcbiYjNDM7ICAtIHBvd2VyLWRvbWFpbi1uYW1lc1xuJiM0MztcbiYjNDM7YWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlXG4mIzQzO1xuJiM0MztleGFtcGxlczpcbiYjNDM7ICAtIHxcbiYjNDM7ICAgIHBoeUA4OTAxMDAwIHtcbiYjNDM7ICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7cWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeVwmIzM0OztcbiYjNDM7ICAgICAgICByZWcgPSBcdTAwM2MweDA4OTAxMDAwIDB4ZTEwXHUwMDNlO1xuJiM0MzsgICAgICAgICNwaHktY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuJiM0MzsgICAgICAgIHBvd2VyLWRvbWFpbnMgPSBcdTAwM2NcdTAwMjZzY21pN19kdmZzIDBcdTAwM2U7XG4mIzQzOyAgICAgICAgcG93ZXItZG9tYWluLW5hbWVzID0gXCYjMzQ7c2VyZGVzXCYjMzQ7O1xuJiM0MzsgICAgfTtcbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXG5pbmRleCA4MDZiZDJkODBkMTUzNS4uODZlNjdhYTRmYjlkZDEgMTAwNjQ0XG4tLS0gYS9NQUlOVEFJTkVSU1xuJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlNcbkBAIC0yMjE4NSw2ICYjNDM7MjIxODUsNyBAQCBMOlx0bmV0ZGV2QHZnZXIua2VybmVsLm9yZ1xuIEw6XHRsaW51eC1hcm0tbXNtQHZnZXIua2VybmVsLm9yZ1xuIFM6XHRNYWludGFpbmVkXG4gRjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbFxuJiM0MztGOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY29tLHNhODI1NXAtZXRocW9zLnlhbWxcbiBGOlx0ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuY1xuIFxuIFFVQUxDT01NIEZBU1RSUEMgRFJJVkVSXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmNcbmluZGV4IGFjN2Q2ZDNlMjA1YTFhLi5kMzRmMjBmODY4MTM4YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmNcbkBAIC01LDYgJiM0Mzs1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbmV0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV9kb21haW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5L3BoeS5oXHUwMDNlXG4gXG5AQCAtODEsNiAmIzQzOzgyLDggQEBcbiBcbiAjZGVmaW5lIFNHTUlJXzEwTV9SWF9DTEtfRFZEUlx0XHRcdDB4MzFcbiBcbiYjNDM7c3RydWN0IHFjb21fZXRocW9zO1xuJiM0MztcbiBzdHJ1Y3QgZXRocW9zX2VtYWNfcG9yIHtcbiBcdHVuc2lnbmVkIGludCBvZmZzZXQ7XG4gXHR1bnNpZ25lZCBpbnQgdmFsdWU7XG5AQCAtOTUsNiAmIzQzOzk4LDEzIEBAIHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSB7XG4gXHRjb25zdCBjaGFyICpsaW5rX2Nsa19uYW1lO1xuIFx0c3RydWN0IGR3bWFjNF9hZGRycyBkd21hYzRfYWRkcnM7XG4gXHRib29sIG5lZWRzX3NnbWlpX2xvb3BiYWNrO1xuJiM0MztcdC8qIEZpeGVkIFBUUCByZWZlcmVuY2UgY2xvY2sgcmF0ZSwgdXNlZCBvbiBTQ01JIHBsYXRmb3JtcyB3aGVyZVxuJiM0MztcdCAqIGZpcm13YXJlIGRvZXMgbm90IGltcGxlbWVudCB0aGUgY2xvY2sgcHJvdG9jb2wgYWxsb3dpbmcgbGludXggdG9cbiYjNDM7XHQgKiBxdWVyeSBpdC5cbiYjNDM7XHQgKi9cbiYjNDM7XHR1bnNpZ25lZCBsb25nIHB0cF9jbGtfcmF0ZTtcbiYjNDM7XHRpbnQgKCpzZXR1cCkoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MsXG4mIzQzO1x0XHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQpO1xuIH07XG4gXG4gc3RydWN0IHFjb21fZXRocW9zIHtcbkBAIC0xMDMsMTIgJiM0MzsxMTMsOCBAQCBzdHJ1Y3QgcWNvbV9ldGhxb3Mge1xuIFx0c3RydWN0IGNsayAqbGlua19jbGs7XG4gXHRzdHJ1Y3QgcGh5ICpzZXJkZXNfcGh5O1xuIFx0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xuLVxuLVx0Y29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX3BvciAqcmdtaWlfcG9yO1xuLVx0dW5zaWduZWQgaW50IG51bV9yZ21paV9wb3I7XG4tXHRib29sIHJnbWlpX2NvbmZpZ19sb29wYmFja19lbjtcbi1cdGJvb2wgaGFzX2VtYWNfZ2VfMztcbi1cdGJvb2wgbmVlZHNfc2dtaWlfbG9vcGJhY2s7XG4mIzQzO1x0c3RydWN0IGRldl9wbV9kb21haW5fbGlzdCAqcGRzO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSAqZGF0YTtcbiB9O1xuIFxuIHN0YXRpYyB1MzIgcmdtaWlfcmVhZGwoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MsIHVuc2lnbmVkIGludCBvZmZzZXQpXG5AQCAtMTg5LDggJiM0MzsxOTUsOSBAQCBzdGF0aWMgaW50IGV0aHFvc19zZXRfY2xrX3R4X3JhdGUodm9pZCAqYnNwX3ByaXYsIHN0cnVjdCBjbGsgKmNsa190eF9pLFxuIHN0YXRpYyB2b2lkXG4gcWNvbV9ldGhxb3Nfc2V0X3NnbWlpX2xvb3BiYWNrKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLCBib29sIGVuYWJsZSlcbiB7XG4tXHRpZiAoIWV0aHFvcy1cdTAwM2VuZWVkc19zZ21paV9sb29wYmFjayB8fFxuLVx0ICAgIGV0aHFvcy1cdTAwM2VwaHlfbW9kZSAhPSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYKVxuJiM0MztcdGlmICghZXRocW9zLVx1MDAzZWRhdGEtXHUwMDNlbmVlZHNfc2dtaWlfbG9vcGJhY2sgfHxcbiYjNDM7XHQgICAgKGV0aHFvcy1cdTAwM2VwaHlfbW9kZSAhPSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAgZXRocW9zLVx1MDAzZXBoeV9tb2RlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkpXG4gXHRcdHJldHVybjtcbiBcbiBcdHJnbWlpX3VwZGF0ZWwoZXRocW9zLFxuQEAgLTIwNCw2ICYjNDM7MjExLDExIEBAIHN0YXRpYyB2b2lkIGV0aHFvc19zZXRfZnVuY19jbGtfZW4oc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MpXG4gXHRyZ21paV9zZXRtYXNrKGV0aHFvcywgUkdNSUlfQ09ORklHX0ZVTkNfQ0xLX0VOLCBSR01JSV9JT19NQUNST19DT05GSUcpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBldGhxb3NfaGxvc19zZXR1cChzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcyxcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KTtcbiYjNDM7c3RhdGljIGludCBldGhxb3Nfc2NtaV9zZXR1cChzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcyxcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KTtcbiYjNDM7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19wb3IgZW1hY192Ml8zXzBfcG9yW10gPSB7XG4gXHR7IC5vZmZzZXQgPSBSR01JSV9JT19NQUNST19DT05GSUcsXHQudmFsdWUgPSAweDAwQzAxMzQzIH0sXG4gXHR7IC5vZmZzZXQgPSBTRENDX0hDX1JFR19ETExfQ09ORklHLFx0LnZhbHVlID0gMHgyMDA0NjQyQyB9LFxuQEAgLTIxOCw2ICYjNDM7MjMwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSBlbWFjX3YyXzNfMF9kYXRhID0ge1xuIFx0Lm51bV9yZ21paV9wb3IgPSBBUlJBWV9TSVpFKGVtYWNfdjJfM18wX3BvciksXG4gXHQucmdtaWlfY29uZmlnX2xvb3BiYWNrX2VuID0gdHJ1ZSxcbiBcdC5oYXNfZW1hY19nZV8zID0gZmFsc2UsXG4mIzQzO1x0LnNldHVwID0gZXRocW9zX2hsb3Nfc2V0dXAsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX3BvciBlbWFjX3YyXzFfMF9wb3JbXSA9IHtcbkBAIC0yMzQsNiAmIzQzOzI0Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfZHJpdmVyX2RhdGEgZW1hY192Ml8xXzBfZGF0YSA9IHtcbiBcdC5udW1fcmdtaWlfcG9yID0gQVJSQVlfU0laRShlbWFjX3YyXzFfMF9wb3IpLFxuIFx0LnJnbWlpX2NvbmZpZ19sb29wYmFja19lbiA9IGZhbHNlLFxuIFx0Lmhhc19lbWFjX2dlXzMgPSBmYWxzZSxcbiYjNDM7XHQuc2V0dXAgPSBldGhxb3NfaGxvc19zZXR1cCxcbiB9O1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfcG9yIGVtYWNfdjNfMF8wX3BvcltdID0ge1xuQEAgLTI2Niw2ICYjNDM7MjgwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSBlbWFjX3YzXzBfMF9kYXRhID0ge1xuIFx0XHQubXRsX2xvd19jcmVkID0gMHgwMDAwODAyNCxcbiBcdFx0Lm10bF9sb3dfY3JlZF9vZmZzZXQgPSAweDEwMDAsXG4gXHR9LFxuJiM0MztcdC5zZXR1cCA9IGV0aHFvc19obG9zX3NldHVwLFxuIH07XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19wb3IgZW1hY192NF8wXzBfcG9yW10gPSB7XG5AQCAtMzAxLDYgJiM0MzszMTYsMzEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSBlbWFjX3Y0XzBfMF9kYXRhID0ge1xuIFx0XHQubXRsX2xvd19jcmVkID0gMHgwMDAwODAyNCxcbiBcdFx0Lm10bF9sb3dfY3JlZF9vZmZzZXQgPSAweDEwMDAsXG4gXHR9LFxuJiM0MztcdC5zZXR1cCA9IGV0aHFvc19obG9zX3NldHVwLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSBlbWFjX3Y0XzBfMF9zY21pX2RhdGEgPSB7XG4mIzQzO1x0Lmhhc19lbWFjX2dlXzMgPSB0cnVlLFxuJiM0MztcdC5uZWVkc19zZ21paV9sb29wYmFjayA9IHRydWUsXG4mIzQzO1x0LmRtYV9hZGRyX3dpZHRoID0gMzYsXG4mIzQzO1x0LnB0cF9jbGtfcmF0ZSA9IDIzMDQwMDAwMCxcbiYjNDM7XHQuZHdtYWM0X2FkZHJzID0ge1xuJiM0MztcdFx0LmRtYV9jaGFuID0gMHgwMDAwODEwMCxcbiYjNDM7XHRcdC5kbWFfY2hhbl9vZmZzZXQgPSAweDEwMDAsXG4mIzQzO1x0XHQubXRsX2NoYW4gPSAweDAwMDA4MDAwLFxuJiM0MztcdFx0Lm10bF9jaGFuX29mZnNldCA9IDB4MTAwMCxcbiYjNDM7XHRcdC5tdGxfZXRzX2N0cmwgPSAweDAwMDA4MDEwLFxuJiM0MztcdFx0Lm10bF9ldHNfY3RybF9vZmZzZXQgPSAweDEwMDAsXG4mIzQzO1x0XHQubXRsX3R4cV93ZWlnaHQgPSAweDAwMDA4MDE4LFxuJiM0MztcdFx0Lm10bF90eHFfd2VpZ2h0X29mZnNldCA9IDB4MTAwMCxcbiYjNDM7XHRcdC5tdGxfc2VuZF9zbHBfY3JlZCA9IDB4MDAwMDgwMWMsXG4mIzQzO1x0XHQubXRsX3NlbmRfc2xwX2NyZWRfb2Zmc2V0ID0gMHgxMDAwLFxuJiM0MztcdFx0Lm10bF9oaWdoX2NyZWQgPSAweDAwMDA4MDIwLFxuJiM0MztcdFx0Lm10bF9oaWdoX2NyZWRfb2Zmc2V0ID0gMHgxMDAwLFxuJiM0MztcdFx0Lm10bF9sb3dfY3JlZCA9IDB4MDAwMDgwMjQsXG4mIzQzO1x0XHQubXRsX2xvd19jcmVkX29mZnNldCA9IDB4MTAwMCxcbiYjNDM7XHR9LFxuJiM0MztcdC5zZXR1cCA9IGV0aHFvc19zY21pX3NldHVwLFxuIH07XG4gXG4gc3RhdGljIGludCBldGhxb3NfZGxsX2NvbmZpZ3VyZShzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcylcbkBAIC0zMjIsNyAmIzQzOzM2Miw3IEBAIHN0YXRpYyBpbnQgZXRocW9zX2RsbF9jb25maWd1cmUoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MpXG4gXHQvKiBTZXQgRExMX0VOICovXG4gXHRyZ21paV9zZXRtYXNrKGV0aHFvcywgU0RDQ19ETExfQ09ORklHX0RMTF9FTiwgU0RDQ19IQ19SRUdfRExMX0NPTkZJRyk7XG4gXG4tXHRpZiAoIWV0aHFvcy1cdTAwM2VoYXNfZW1hY19nZV8zKSB7XG4mIzQzO1x0aWYgKCFldGhxb3MtXHUwMDNlZGF0YS1cdTAwM2VoYXNfZW1hY19nZV8zKSB7XG4gXHRcdHJnbWlpX2Nscm1hc2soZXRocW9zLCBTRENDX0RMTF9NQ0xLX0dBVElOR19FTixcbiBcdFx0XHQgICAgICBTRENDX0hDX1JFR19ETExfQ09ORklHKTtcbiBcbkBAIC0zNTIsNyAmIzQzOzM5Miw3IEBAIHN0YXRpYyBpbnQgZXRocW9zX2RsbF9jb25maWd1cmUoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MpXG4gXHRyZ21paV9zZXRtYXNrKGV0aHFvcywgU0RDQ19ETExfQ09ORklHMl9ERFJfQ0FMX0VOLFxuIFx0XHQgICAgICBTRENDX0hDX1JFR19ETExfQ09ORklHMik7XG4gXG4tXHRpZiAoIWV0aHFvcy1cdTAwM2VoYXNfZW1hY19nZV8zKSB7XG4mIzQzO1x0aWYgKCFldGhxb3MtXHUwMDNlZGF0YS1cdTAwM2VoYXNfZW1hY19nZV8zKSB7XG4gXHRcdHJnbWlpX2Nscm1hc2soZXRocW9zLCBTRENDX0RMTF9DT05GSUcyX0RMTF9DTE9DS19ESVMsXG4gXHRcdFx0ICAgICAgU0RDQ19IQ19SRUdfRExMX0NPTkZJRzIpO1xuIFxuQEAgLTQzMiw3ICYjNDM7NDcyLDcgQEAgc3RhdGljIGludCBldGhxb3NfcmdtaWlfbWFjcm9faW5pdChzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcywgaW50IHNwZWVkKVxuIFx0cmdtaWlfY2xybWFzayhldGhxb3MsIFJHTUlJX0NPTkZJRzJfUlNWRF9DT05GSUcxNSxcbiBcdFx0ICAgICAgUkdNSUlfSU9fTUFDUk9fQ09ORklHMik7XG4gXG4tXHRpZiAoc3BlZWQgPT0gU1BFRURfMTAwMCB8fCBldGhxb3MtXHUwMDNlaGFzX2VtYWNfZ2VfMylcbiYjNDM7XHRpZiAoc3BlZWQgPT0gU1BFRURfMTAwMCB8fCBldGhxb3MtXHUwMDNlZGF0YS1cdTAwM2VoYXNfZW1hY19nZV8zKVxuIFx0XHRyZ21paV9zZXRtYXNrKGV0aHFvcywgUkdNSUlfQ09ORklHMl9SWF9QUk9HX1NXQVAsXG4gXHRcdFx0ICAgICAgUkdNSUlfSU9fTUFDUk9fQ09ORklHMik7XG4gXHRlbHNlXG5AQCAtNDU2LDcgJiM0Mzs0OTYsNyBAQCBzdGF0aWMgaW50IGV0aHFvc19yZ21paV9tYWNyb19pbml0KHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLCBpbnQgc3BlZWQpXG4gXHRcdCAqIGluIHByYWN0aWNlIHRoaXMgYmVjb21lcyBQUkdfUkNMS19ETFkgPSA1MiAqIDQgL1xuIFx0XHQgKiAgKDIgKiBSWCBkZWxheSBucylcbiBcdFx0ICovXG4tXHRcdGlmIChldGhxb3MtXHUwMDNlaGFzX2VtYWNfZ2VfMykge1xuJiM0MztcdFx0aWYgKGV0aHFvcy1cdTAwM2VkYXRhLVx1MDAzZWhhc19lbWFjX2dlXzMpIHtcbiBcdFx0XHQvKiAwLjkgbnMgKi9cbiBcdFx0XHRwcmdfcmNsa19kbHkgPSAxMTU7XG4gXHRcdH0gZWxzZSB7XG5AQCAtNDcyLDcgJiM0Mzs1MTIsNyBAQCBzdGF0aWMgaW50IGV0aHFvc19yZ21paV9tYWNyb19pbml0KHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLCBpbnQgc3BlZWQpXG4gXHRcdFx0ICAgICAgU0RDQ19IQ19SRUdfRERSX0NPTkZJRyk7XG4gXHR9XG4gXG4tXHRpZiAoZXRocW9zLVx1MDAzZXJnbWlpX2NvbmZpZ19sb29wYmFja19lbilcbiYjNDM7XHRpZiAoZXRocW9zLVx1MDAzZWRhdGEtXHUwMDNlcmdtaWlfY29uZmlnX2xvb3BiYWNrX2VuKVxuIFx0XHRsb29wYmFjayA9IFJHTUlJX0NPTkZJR19MT09QQkFDS19FTjtcbiBcdGVsc2VcbiBcdFx0bG9vcGJhY2sgPSAwO1xuQEAgLTQ5NSw5ICYjNDM7NTM1LDkgQEAgc3RhdGljIHZvaWQgZXRocW9zX2ZpeF9tYWNfc3BlZWRfcmdtaWkodm9pZCAqYnNwX3ByaXYsXG4gXHRkZXYgPSBcdTAwMjZldGhxb3MtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG4gXG4gXHQvKiBSZXNldCB0byBQT1IgdmFsdWVzIGFuZCBlbmFibGUgY2xrICovXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBldGhxb3MtXHUwMDNlbnVtX3JnbWlpX3BvcjsgaSYjNDM7JiM0MzspXG4tXHRcdHJnbWlpX3dyaXRlbChldGhxb3MsIGV0aHFvcy1cdTAwM2VyZ21paV9wb3JbaV0udmFsdWUsXG4tXHRcdFx0ICAgICBldGhxb3MtXHUwMDNlcmdtaWlfcG9yW2ldLm9mZnNldCk7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgZXRocW9zLVx1MDAzZWRhdGEtXHUwMDNlbnVtX3JnbWlpX3BvcjsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRyZ21paV93cml0ZWwoZXRocW9zLCBldGhxb3MtXHUwMDNlZGF0YS1cdTAwM2VyZ21paV9wb3JbaV0udmFsdWUsXG4mIzQzO1x0XHRcdCAgICAgZXRocW9zLVx1MDAzZWRhdGEtXHUwMDNlcmdtaWlfcG9yW2ldLm9mZnNldCk7XG4gXG4gXHRldGhxb3Nfc2V0X2Z1bmNfY2xrX2VuKGV0aHFvcyk7XG4gXG5AQCAtNTExLDcgJiM0Mzs1NTEsNyBAQCBzdGF0aWMgdm9pZCBldGhxb3NfZml4X21hY19zcGVlZF9yZ21paSh2b2lkICpic3BfcHJpdixcbiBcdHJnbWlpX3NldG1hc2soZXRocW9zLCBTRENDX0RMTF9DT05GSUdfUEROLFxuIFx0XHQgICAgICBTRENDX0hDX1JFR19ETExfQ09ORklHKTtcbiBcbi1cdGlmIChldGhxb3MtXHUwMDNlaGFzX2VtYWNfZ2VfMykge1xuJiM0MztcdGlmIChldGhxb3MtXHUwMDNlZGF0YS1cdTAwM2VoYXNfZW1hY19nZV8zKSB7XG4gXHRcdGlmIChzcGVlZCA9PSBTUEVFRF8xMDAwKSB7XG4gXHRcdFx0cmdtaWlfd3JpdGVsKGV0aHFvcywgMHgxODAwMDAwLCBTRENDX1RFU1RfQ1RMKTtcbiBcdFx0XHRyZ21paV93cml0ZWwoZXRocW9zLCAweDJDMDEwODAwLCBTRENDX1VTUl9DVEwpO1xuQEAgLTUzOCw3ICYjNDM7NTc4LDcgQEAgc3RhdGljIHZvaWQgZXRocW9zX2ZpeF9tYWNfc3BlZWRfcmdtaWkodm9pZCAqYnNwX3ByaXYsXG4gXHRcdFx0ICAgICAgU0RDQ19IQ19SRUdfRExMX0NPTkZJRyk7XG4gXG4gXHRcdC8qIFNldCBVU1JfQ1RMIGJpdCAyNiB3aXRoIG1hc2sgb2YgMyBiaXRzICovXG4tXHRcdGlmICghZXRocW9zLVx1MDAzZWhhc19lbWFjX2dlXzMpXG4mIzQzO1x0XHRpZiAoIWV0aHFvcy1cdTAwM2VkYXRhLVx1MDAzZWhhc19lbWFjX2dlXzMpXG4gXHRcdFx0cmdtaWlfdXBkYXRlbChldGhxb3MsIEdFTk1BU0soMjYsIDI0KSwgQklUKDI2KSxcbiBcdFx0XHRcdCAgICAgIFNEQ0NfVVNSX0NUTCk7XG4gXG5AQCAtNjAxLDEwICYjNDM7NjQxLDE5IEBAIHN0YXRpYyBpbnQgcWNvbV9ldGhxb3Nfc2VyZGVzX3Bvd2VydXAoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKnByaXYpXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuJiM0MztcdHJldCA9IHBoeV9zZXRfbW9kZV9leHQoZXRocW9zLVx1MDAzZXNlcmRlc19waHksIFBIWV9NT0RFX0VUSEVSTkVULFxuJiM0MztcdFx0XHQgICAgICAgZXRocW9zLVx1MDAzZXBoeV9tb2RlKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0Z290byBlcnJfb3V0O1xuJiM0MztcbiBcdHJldCA9IHBoeV9wb3dlcl9vbihldGhxb3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4gXHRpZiAocmV0KVxuLVx0XHRwaHlfZXhpdChldGhxb3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4mIzQzO1x0XHRnb3RvIGVycl9vdXQ7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIFxuJiM0MztlcnJfb3V0OlxuJiM0MztcdHBoeV9leGl0KGV0aHFvcy1cdTAwM2VzZXJkZXNfcGh5KTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTYyMyw2ICYjNDM7NjcyLDEyIEBAIHN0YXRpYyBpbnQgZXRocW9zX21hY19maW5pc2hfc2VyZGVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICpwcml2LFxuIFx0c3RydWN0IHFjb21fZXRocW9zICpldGhxb3MgPSBwcml2O1xuIFx0aW50IHJldCA9IDA7XG4gXG4mIzQzO1x0LyogVGhlIGludGVyZmFjZSBtb2RlIGlzIG9ubHkga25vd24gb25jZSBwaHlsaW5rIGhhcyByZXNvbHZlZCBpdCBhbmRcbiYjNDM7XHQgKiBtYXkgY2hhbmdlIGF0IHJ1bnRpbWUsIHNvIGtlZXAgaXQgaW4gc3luYyBmb3IgbGF0ZXJcbiYjNDM7XHQgKiBzZXJkZXNfcG93ZXJ1cCgpL3NlcmRlc19wb3dlcmRvd24oKSBjYWxscy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRldGhxb3MtXHUwMDNlcGh5X21vZGUgPSBpbnRlcmZhY2U7XG4mIzQzO1xuIFx0cWNvbV9ldGhxb3Nfc2V0X3NnbWlpX2xvb3BiYWNrKGV0aHFvcywgZmFsc2UpO1xuIFxuIFx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkgfHxcbkBAIC02ODEsNiAmIzQzOzczNiwxMTUgQEAgc3RhdGljIHZvaWQgZXRocW9zX3B0cF9jbGtfZnJlcV9jb25maWcoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0bmV0ZGV2X2RiZyhwcml2LVx1MDAzZWRldiwgXCYjMzQ7UFRQIHJhdGUgJWx1XFxuXCYjMzQ7LCBwbGF0X2RhdC1cdTAwM2VjbGtfcHRwX3JhdGUpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBldGhxb3NfaGxvc19zZXR1cChzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcyxcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IGV0aHFvcy1cdTAwM2VwZGV2O1xuJiM0MztcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGV0aHFvcy1cdTAwM2VyZ21paV9iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlX2J5bmFtZShwZGV2LCBcJiMzNDtyZ21paVwmIzM0Oyk7XG4mIzQzO1x0aWYgKElTX0VSUihldGhxb3MtXHUwMDNlcmdtaWlfYmFzZSkpXG4mIzQzO1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZXRocW9zLVx1MDAzZXJnbWlpX2Jhc2UpLFxuJiM0MztcdFx0XHRcdCAgICAgXCYjMzQ7RmFpbGVkIHRvIG1hcCByZ21paSByZXNvdXJjZVxcblwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdGV0aHFvcy1cdTAwM2VsaW5rX2NsayA9IGRldm1fY2xrX2dldChkZXYsIGV0aHFvcy1cdTAwM2VkYXRhLVx1MDAzZWxpbmtfY2xrX25hbWUgPzogXCYjMzQ7cmdtaWlcJiMzNDspO1xuJiM0MztcdGlmIChJU19FUlIoZXRocW9zLVx1MDAzZWxpbmtfY2xrKSlcbiYjNDM7XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihldGhxb3MtXHUwMDNlbGlua19jbGspLFxuJiM0MztcdFx0XHRcdCAgICAgXCYjMzQ7RmFpbGVkIHRvIGdldCBsaW5rX2Nsa1xcblwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdHBsYXRfZGF0LVx1MDAzZWNsa3NfY29uZmlnID0gZXRocW9zX2Nsa3NfY29uZmlnO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBldGhxb3NfY2xrc19jb25maWcoZXRocW9zLCB0cnVlKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgZXRocW9zX2Nsa3NfZGlzYWJsZSwgZXRocW9zKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0ZXRocW9zX3NldF9jbGtfdHhfcmF0ZShldGhxb3MsIE5VTEwsIHBsYXRfZGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UsIFNQRUVEXzEwMDApO1xuJiM0MztcdHFjb21fZXRocW9zX3NldF9zZ21paV9sb29wYmFjayhldGhxb3MsIHRydWUpO1xuJiM0MztcdGV0aHFvc19zZXRfZnVuY19jbGtfZW4oZXRocW9zKTtcbiYjNDM7XG4mIzQzO1x0c3dpdGNoIChldGhxb3MtXHUwMDNlcGh5X21vZGUpIHtcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDpcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEOlxuJiM0MztcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RYSUQ6XG4mIzQzO1x0XHRwbGF0X2RhdC1cdTAwM2VmaXhfbWFjX3NwZWVkID0gZXRocW9zX2ZpeF9tYWNfc3BlZWRfcmdtaWk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6XG4mIzQzO1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4mIzQzO1x0XHRwbGF0X2RhdC1cdTAwM2VmaXhfbWFjX3NwZWVkID0gZXRocW9zX2ZpeF9tYWNfc3BlZWRfc2dtaWk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRwbGF0X2RhdC1cdTAwM2VzZXRfY2xrX3R4X3JhdGUgPSBldGhxb3Nfc2V0X2Nsa190eF9yYXRlO1xuJiM0MztcdHBsYXRfZGF0LVx1MDAzZWR1bXBfZGVidWdfcmVncyA9IHJnbWlpX2R1bXA7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgZXRocW9zX3NjbWlfcGRfbmFtZXNbXSA9IHsgXCYjMzQ7Y29yZVwmIzM0OywgXCYjMzQ7bWRpb1wmIzM0OyB9O1xuJiM0MztcbiYjNDM7c3RhdGljIGludCBldGhxb3Nfc2NtaV9zZXR1cChzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcyxcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGRldl9wbV9kb21haW5fYXR0YWNoX2RhdGEgcGRfZGF0YSA9IHtcbiYjNDM7XHRcdC5wZF9uYW1lc1x0PSBldGhxb3Nfc2NtaV9wZF9uYW1lcyxcbiYjNDM7XHRcdC5udW1fcGRfbmFtZXNcdD0gQVJSQVlfU0laRShldGhxb3Nfc2NtaV9wZF9uYW1lcyksXG4mIzQzO1x0XHQucGRfZmxhZ3NcdD0gUERfRkxBR19ERVZfTElOS19PTixcbiYjNDM7XHR9O1xuJiM0MztcbiYjNDM7XHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gZXRocW9zLVx1MDAzZXBkZXY7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gZGV2bV9wbV9kb21haW5fYXR0YWNoX2xpc3QoZGV2LCBcdTAwMjZwZF9kYXRhLCBcdTAwMjZldGhxb3MtXHUwMDNlcGRzKTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsXG4mIzQzO1x0XHRcdFx0ICAgICBcJiMzNDtGYWlsZWQgdG8gYXR0YWNoIHBvd2VyIGRvbWFpbnNcXG5cJiMzNDspO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFRoZSBTZXJEZXMgbGFuZSwgaXRzIGNsb2NrcyBhbmQgdGhlIE1BQyBBWEkvQUhCIGNsb2NrcyBhcmUgb3duZWQgYnlcbiYjNDM7XHQgKiBmaXJtd2FyZSBhbmQgYnJvdWdodCB1cCB0aHJvdWdoIHRoZSBTQ01JIHBvd2VyIGRvbWFpbnMgYWJvdmUuIFRoZVxuJiM0MztcdCAqIE1BQyB3cmFwcGVyIGl0c2VsZiwgaG93ZXZlciBpcyBpbiB0aGUga2VybmVsJiMzOTtzIHJlZ2lzdGVyIHNwYWNlOiB0aGVcbiYjNDM7XHQgKiBtdXggdGhhdCBmZWVkcyB0aGUgU2VyRGVzIHJlY292ZXJlZCBSWCBjbG9jayBpbnRvIHRoZSBNQUMmIzM5O3MgY2xrX3J4X2lcbiYjNDM7XHQgKiBpcyBub3QgY29uZmlndXJlZCBieSBmaXJtd2FyZS4gV2l0aG91dCBpdCwgY2xrX3J4X2kgbmV2ZXIgdG9nZ2xlc1xuJiM0MztcdCAqIGFuZCB0aGUgRE1BIFNXLXJlc2V0IHBvbGxlZCBpbiBkd21hYzRfZG1hX3Jlc2V0KCkgbmV2ZXIgY29tcGxldGVzLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogTWFwIHRoZSB3cmFwcGVyIGFuZCBwcm9ncmFtIHRoZSBzYW1lIGxvb3BiYWNrL2Z1bmN0aW9uYWwgY2xvY2sgYml0c1xuJiM0MztcdCAqIHRoZSBub24tZmlybXdhcmUgcGxhdGZvcm1zIHJlbHkgb24gKHNlZSBldGhxb3NfY2xrc19jb25maWcpIHNvIHRoZVxuJiM0MztcdCAqIFJYIGNsb2NrIGlzIHByZXNlbnQgYnkgdGhlIHRpbWUgdGhlIERNQSBlbmdpbmUgaXMgcmVzZXQuXG4mIzQzO1x0ICovXG4mIzQzO1x0ZXRocW9zLVx1MDAzZXJnbWlpX2Jhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2VfYnluYW1lKHBkZXYsIFwmIzM0O3JnbWlpXCYjMzQ7KTtcbiYjNDM7XHRpZiAoSVNfRVJSKGV0aHFvcy1cdTAwM2VyZ21paV9iYXNlKSlcbiYjNDM7XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihldGhxb3MtXHUwMDNlcmdtaWlfYmFzZSksXG4mIzQzO1x0XHRcdFx0ICAgICBcJiMzNDtGYWlsZWQgdG8gbWFwIHJnbWlpIHJlc291cmNlXFxuXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBSdW4gb24gZXZlcnkgcnVudGltZSByZXN1bWUsIHdoaWNoIHN0bW1hYyBwZXJmb3JtcyBhZnRlciB0aGUgcG93ZXJcbiYjNDM7XHQgKiBkb21haW5zIGFyZSBvbiBidXQgYmVmb3JlIHNlcmRlc19wb3dlcnVwKCkgYW5kIHRoZSBETUEgcmVzZXQsIHNvIHRoZVxuJiM0MztcdCAqIHdyYXBwZXIgaXMgYWx3YXlzIGNvbmZpZ3VyZWQgYWhlYWQgb2YgdGhlIHJlc2V0LlxuJiM0MztcdCAqL1xuJiM0MztcdHBsYXRfZGF0LVx1MDAzZWNsa3NfY29uZmlnID0gZXRocW9zX2Nsa3NfY29uZmlnO1xuJiM0MztcdHBsYXRfZGF0LVx1MDAzZWNsa19wdHBfcmF0ZSA9IGV0aHFvcy1cdTAwM2VkYXRhLVx1MDAzZXB0cF9jbGtfcmF0ZTtcbiYjNDM7XG4mIzQzO1x0c3dpdGNoIChldGhxb3MtXHUwMDNlcGh5X21vZGUpIHtcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6XG4mIzQzO1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4mIzQzO1x0XHRwbGF0X2RhdC1cdTAwM2VmaXhfbWFjX3NwZWVkID0gZXRocW9zX2ZpeF9tYWNfc3BlZWRfc2dtaWk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IHFjb21fZXRocW9zX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4ge1xuIFx0c3RydWN0IGRldmljZV9ub2RlICpucCA9IHBkZXYtXHUwMDNlZGV2Lm9mX25vZGU7XG5AQCAtNzAyLDIzICYjNDM7ODY2LDIwIEBAIHN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0XHRcdCAgICAgXCYjMzQ7ZHQgY29uZmlndXJhdGlvbiBmYWlsZWRcXG5cJiMzNDspO1xuIFx0fVxuIFxuLVx0cGxhdF9kYXQtXHUwMDNlY2xrc19jb25maWcgPSBldGhxb3NfY2xrc19jb25maWc7XG4tXG4gXHRldGhxb3MgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmV0aHFvcyksIEdGUF9LRVJORUwpO1xuIFx0aWYgKCFldGhxb3MpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0ZXRocW9zLVx1MDAzZXBoeV9tb2RlID0gcGxhdF9kYXQtXHUwMDNlcGh5X2ludGVyZmFjZTtcbiYjNDM7XG4gXHRzd2l0Y2ggKGV0aHFvcy1cdTAwM2VwaHlfbW9kZSkge1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQ6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEOlxuLVx0XHRwbGF0X2RhdC1cdTAwM2VmaXhfbWFjX3NwZWVkID0gZXRocW9zX2ZpeF9tYWNfc3BlZWRfcmdtaWk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4tXHRcdHBsYXRfZGF0LVx1MDAzZWZpeF9tYWNfc3BlZWQgPSBldGhxb3NfZml4X21hY19zcGVlZF9zZ21paTtcbiBcdFx0cGxhdF9kYXQtXHUwMDNlbWFjX2ZpbmlzaCA9IGV0aHFvc19tYWNfZmluaXNoX3NlcmRlcztcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuQEAgLTcyOCwyOCAmIzQzOzg4OSwxMyBAQCBzdGF0aWMgaW50IHFjb21fZXRocW9zX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHR9XG4gXG4gXHRldGhxb3MtXHUwMDNlcGRldiA9IHBkZXY7XG4tXHRldGhxb3MtXHUwMDNlcmdtaWlfYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgXCYjMzQ7cmdtaWlcJiMzNDspO1xuLVx0aWYgKElTX0VSUihldGhxb3MtXHUwMDNlcmdtaWlfYmFzZSkpXG4tXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihldGhxb3MtXHUwMDNlcmdtaWlfYmFzZSksXG4tXHRcdFx0XHQgICAgIFwmIzM0O0ZhaWxlZCB0byBtYXAgcmdtaWkgcmVzb3VyY2VcXG5cJiMzNDspO1xuLVxuIFx0ZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuLVx0ZXRocW9zLVx1MDAzZXJnbWlpX3BvciA9IGRhdGEtXHUwMDNlcmdtaWlfcG9yO1xuLVx0ZXRocW9zLVx1MDAzZW51bV9yZ21paV9wb3IgPSBkYXRhLVx1MDAzZW51bV9yZ21paV9wb3I7XG4tXHRldGhxb3MtXHUwMDNlcmdtaWlfY29uZmlnX2xvb3BiYWNrX2VuID0gZGF0YS1cdTAwM2VyZ21paV9jb25maWdfbG9vcGJhY2tfZW47XG4tXHRldGhxb3MtXHUwMDNlaGFzX2VtYWNfZ2VfMyA9IGRhdGEtXHUwMDNlaGFzX2VtYWNfZ2VfMztcbi1cdGV0aHFvcy1cdTAwM2VuZWVkc19zZ21paV9sb29wYmFjayA9IGRhdGEtXHUwMDNlbmVlZHNfc2dtaWlfbG9vcGJhY2s7XG4mIzQzO1x0ZXRocW9zLVx1MDAzZWRhdGEgPSBkYXRhO1xuIFxuLVx0ZXRocW9zLVx1MDAzZWxpbmtfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgZGF0YS1cdTAwM2VsaW5rX2Nsa19uYW1lID86IFwmIzM0O3JnbWlpXCYjMzQ7KTtcbi1cdGlmIChJU19FUlIoZXRocW9zLVx1MDAzZWxpbmtfY2xrKSlcbi1cdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGV0aHFvcy1cdTAwM2VsaW5rX2NsayksXG4tXHRcdFx0XHQgICAgIFwmIzM0O0ZhaWxlZCB0byBnZXQgbGlua19jbGtcXG5cJiMzNDspO1xuJiM0MztcdGlmIChXQVJOX09OKCFkYXRhLVx1MDAzZXNldHVwKSlcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0cmV0ID0gZXRocW9zX2Nsa3NfY29uZmlnKGV0aHFvcywgdHJ1ZSk7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgZXRocW9zX2Nsa3NfZGlzYWJsZSwgZXRocW9zKTtcbiYjNDM7XHRyZXQgPSBkYXRhLVx1MDAzZXNldHVwKGV0aHFvcywgcGxhdF9kYXQpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbkBAIC03NTgsMjQgJiM0Mzs5MDQsMTEgQEAgc3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZXRocW9zLVx1MDAzZXNlcmRlc19waHkpLFxuIFx0XHRcdFx0ICAgICBcJiMzNDtGYWlsZWQgdG8gZ2V0IHNlcmRlcyBwaHlcXG5cJiMzNDspO1xuIFxuLVx0ZXRocW9zX3NldF9jbGtfdHhfcmF0ZShldGhxb3MsIE5VTEwsIHBsYXRfZGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UsXG4tXHRcdFx0ICAgICAgIFNQRUVEXzEwMDApO1xuLVxuLVx0cWNvbV9ldGhxb3Nfc2V0X3NnbWlpX2xvb3BiYWNrKGV0aHFvcywgdHJ1ZSk7XG4tXHRldGhxb3Nfc2V0X2Z1bmNfY2xrX2VuKGV0aHFvcyk7XG4tXG4tXHQvKiBUaGUgY2xvY2tzIGFyZSBjb250cm9sbGVkIGJ5IGZpcm13YXJlLCBzbyB3ZSBkb24mIzM5O3Qga25vdyBmb3IgY2VydGFpblxuLVx0ICogd2hhdCBjbG9jayByYXRlIGlzIGJlaW5nIHVzZWQuIEhhcmR3YXJlIGRvY3VtZW50YXRpb24gbWVudGlvbnMgdGhhdFxuLVx0ICogdGhlIEFIQiBzbGF2ZSBjbG9jayB3aWxsIGJlIGluIHRoZSByYW5nZSBvZiA1MCB0byAxMDBNSHosIHdoaWNoXG4tXHQgKiBlcXVhdGVzIHRvIGEgTURDIGJldHdlZW4gMS4xOSBhbmQgMi4zOE1Iei5cbi1cdCAqL1xuIFx0cGxhdF9kYXQtXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfNjBfMTAwTTtcbiBcdHBsYXRfZGF0LVx1MDAzZWJzcF9wcml2ID0gZXRocW9zO1xuLVx0cGxhdF9kYXQtXHUwMDNlc2V0X2Nsa190eF9yYXRlID0gZXRocW9zX3NldF9jbGtfdHhfcmF0ZTtcbi1cdHBsYXRfZGF0LVx1MDAzZWR1bXBfZGVidWdfcmVncyA9IHJnbWlpX2R1bXA7XG4gXHRwbGF0X2RhdC1cdTAwM2VwdHBfY2xrX2ZyZXFfY29uZmlnID0gZXRocW9zX3B0cF9jbGtfZnJlcV9jb25maWc7XG4gXHRwbGF0X2RhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM0O1xuLVx0aWYgKGV0aHFvcy1cdTAwM2VoYXNfZW1hY19nZV8zKVxuJiM0MztcdGlmIChkYXRhLVx1MDAzZWhhc19lbWFjX2dlXzMpXG4gXHRcdHBsYXRfZGF0LVx1MDAzZWR3bWFjNF9hZGRycyA9IFx1MDAyNmRhdGEtXHUwMDNlZHdtYWM0X2FkZHJzO1xuIFx0cGxhdF9kYXQtXHUwMDNlcG10ID0gdHJ1ZTtcbiBcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobnAsIFwmIzM0O3NucHMsdHNvXCYjMzQ7KSlcbkBAIC03OTksNiAmIzQzOzkzMiw3IEBAIHN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBxY29tX2V0aHFvc19tYXRjaFtdID0ge1xuIFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3Fjb20scWNzNDA0LWV0aHFvc1wmIzM0OywgLmRhdGEgPSBcdTAwMjZlbWFjX3YyXzNfMF9kYXRhfSxcbiYjNDM7XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cWNvbSxzYTgyNTVwLWV0aHFvc1wmIzM0OywgLmRhdGEgPSBcdTAwMjZlbWFjX3Y0XzBfMF9zY21pX2RhdGF9LFxuIFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3Fjb20sc2E4Nzc1cC1ldGhxb3NcJiMzNDssIC5kYXRhID0gXHUwMDI2ZW1hY192NF8wXzBfZGF0YX0sXG4gXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cWNvbSxzYzgyODB4cC1ldGhxb3NcJiMzNDssIC5kYXRhID0gXHUwMDI2ZW1hY192M18wXzBfZGF0YX0sXG4gXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cWNvbSxzbTgxNTAtZXRocW9zXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNmVtYWNfdjJfMV8wX2RhdGF9LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMgYi9kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jXG5pbmRleCBlOTVkMzkxYTZkYzIzMy4uYjcyMGU0ZTkwMjhjYzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jXG5AQCAtNTQ0LDcgJiM0Mzs1NDQsNyBAQCBzdGF0aWMgaW50IGFxcl9nZW4xX3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0aWYgKCFwaHlkZXYtXHUwMDNlbGluayB8fCBwaHlkZXYtXHUwMDNlYXV0b25lZyA9PSBBVVRPTkVHX0RJU0FCTEUpXG4mIzQzO1x0aWYgKCFwaHlkZXYtXHUwMDNlbGluaylcbiBcdFx0cmV0dXJuIDA7XG4gXG4gXHQvKiBUaGUgc3RhdHVzIHJlZ2lzdGVyIGlzIG5vdCBpbW1lZGlhdGVseSBjb3JyZWN0IG9uIGxpbmUgc2lkZSBsaW5rIHVwLlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L3F1YWxjb21tL0tjb25maWcgYi9kcml2ZXJzL3BoeS9xdWFsY29tbS9LY29uZmlnXG5pbmRleCA2MGEwZWFkMTI3ZmE5Zi4uYTdjZjM0OGY2YTdhYTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9LY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3BoeS9xdWFsY29tbS9LY29uZmlnXG5AQCAtMjMyLDMgJiM0MzsyMzIsMTQgQEAgY29uZmlnIFBIWV9RQ09NX1NHTUlJX0VUSFxuIFx0aGVscFxuIFx0ICBFbmFibGUgdGhpcyB0byBzdXBwb3J0IHRoZSBpbnRlcm5hbCBTZXJEZXMvU0dNSUkgUEhZIG9uIHZhcmlvdXNcbiBcdCAgUXVhbGNvbW0gY2hpcHNldHMuXG4mIzQzO1xuJiM0Mztjb25maWcgUEhZX1FDT01fU0dNSUlfRVRIX1NDTUlcbiYjNDM7XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBEV01BQyBTR01JSSBTZXJEZXMvUEhZIGRyaXZlciAoZmlybXdhcmUgbWFuYWdlZClcJiMzNDtcbiYjNDM7XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcbiYjNDM7XHRzZWxlY3QgR0VORVJJQ19QSFlcbiYjNDM7XHRzZWxlY3QgUE1cbiYjNDM7XHRzZWxlY3QgUE1fR0VORVJJQ19ET01BSU5TXG4mIzQzO1x0aGVscFxuJiM0MztcdCAgRW5hYmxlIHRoaXMgdG8gc3VwcG9ydCB0aGUgaW50ZXJuYWwgU2VyRGVzL1NHTUlJIFBIWSBvbiBRdWFsY29tbVxuJiM0MztcdCAgY2hpcHNldHMgd2hlcmUgdGhlIFNlckRlcyBoYXJkd2FyZSAoY2xvY2tzIGFuZCByZWdpc3RlcnMpIGlzIG93bmVkXG4mIzQzO1x0ICBieSB0aGUgZmlybXdhcmUuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcXVhbGNvbW0vTWFrZWZpbGUgYi9kcml2ZXJzL3BoeS9xdWFsY29tbS9NYWtlZmlsZVxuaW5kZXggYjcxYTZhMGJlZDNmMTQuLjAzMmU1ODJmMmUxYWY5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9waHkvcXVhbGNvbW0vTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL01ha2VmaWxlXG5AQCAtMjUsMyAmIzQzOzI1LDQgQEAgb2JqLSQoQ09ORklHX1BIWV9RQ09NX1VTQl9TUylcdFx0JiM0Mzs9IHBoeS1xY29tLXVzYi1zcy5vXG4gb2JqLSQoQ09ORklHX1BIWV9RQ09NX1VTQl9TTlBTX0ZFTVRPX1YyKSYjNDM7PSBwaHktcWNvbS1zbnBzLWZlbXRvLXYyLm9cbiBvYmotJChDT05GSUdfUEhZX1FDT01fSVBRODA2WF9VU0IpXHQmIzQzOz0gcGh5LXFjb20taXBxODA2eC11c2Iub1xuIG9iai0kKENPTkZJR19QSFlfUUNPTV9TR01JSV9FVEgpXHQmIzQzOz0gcGh5LXFjb20tc2dtaWktZXRoLm9cbiYjNDM7b2JqLSQoQ09ORklHX1BIWV9RQ09NX1NHTUlJX0VUSF9TQ01JKVx0JiM0Mzs9IHBoeS1xY29tLXNnbWlpLWV0aC1zY21pLm9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS1zZ21paS1ldGgtc2NtaS5jIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tc2dtaWktZXRoLXNjbWkuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5hYTdjZTkzOTNiMjg1M1xuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tc2dtaWktZXRoLXNjbWkuY1xuQEAgLTAsMCAmIzQzOzEsMTY1IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiYjNDM7LypcbiYjNDM7ICogQ29weXJpZ2h0IChjKSBRdWFsY29tbSBUZWNobm9sb2dpZXMsIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4mIzQzOyAqXG4mIzQzOyAqIEZpcm13YXJlLW1hbmFnZWQgdmFyaWFudCBvZiB0aGUgUXVhbGNvbW0gRFdNQUMgU0dNSUkgU2VyRGVzL1BIWSBkcml2ZXIuXG4mIzQzOyAqL1xuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9kZXZpY2UtaWQvb2YuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkvcGh5LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcG1fZG9tYWluLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcG1fcnVudGltZS5oXHUwMDNlXG4mIzQzO1xuJiM0MztzdHJ1Y3QgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaSB7XG4mIzQzO1x0dW5zaWduZWQgaW50IHBlcmZfc3RhdGU7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfcG93ZXJfb24oc3RydWN0IHBoeSAqcGh5KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWkgKnByaXYgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTtcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwaHktXHUwMDNlZGV2LnBhcmVudDtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSBwbV9ydW50aW1lX3Jlc3VtZV9hbmRfZ2V0KGRldik7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IGRldl9wbV9nZW5wZF9zZXRfcGVyZm9ybWFuY2Vfc3RhdGUoZGV2LCBwcml2LVx1MDAzZXBlcmZfc3RhdGUpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdHBtX3J1bnRpbWVfcHV0KGRldik7XG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0dXNsZWVwX3JhbmdlKDUwMDAsIDEwMDAwKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9wb3dlcl9vZmYoc3RydWN0IHBoeSAqcGh5KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gcGh5LVx1MDAzZWRldi5wYXJlbnQ7XG4mIzQzO1xuJiM0MztcdGRldl9wbV9nZW5wZF9zZXRfcGVyZm9ybWFuY2Vfc3RhdGUoZGV2LCAwKTtcbiYjNDM7XHRwbV9ydW50aW1lX3B1dChkZXYpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3ZhbGlkYXRlKHN0cnVjdCBwaHkgKnBoeSwgZW51bSBwaHlfbW9kZSBtb2RlLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgaW50IHN1Ym1vZGUsXG4mIzQzO1x0XHRcdFx0XHQgICAgICB1bmlvbiBwaHlfY29uZmlndXJlX29wdHMgKm9wdHMpXG4mIzQzO3tcbiYjNDM7XHRpZiAobW9kZSAhPSBQSFlfTU9ERV9FVEhFUk5FVClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHN1Ym1vZGUpIHtcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg6XG4mIzQzO1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYOlxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3NldF9tb2RlKHN0cnVjdCBwaHkgKnBoeSwgZW51bSBwaHlfbW9kZSBtb2RlLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgaW50IHN1Ym1vZGUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaSAqcHJpdiA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpO1xuJiM0MztcdHN0cnVjdCBkZXZpY2UgKmRldiA9IHBoeS1cdTAwM2VkZXYucGFyZW50O1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfdmFsaWRhdGUocGh5LCBtb2RlLCBzdWJtb2RlLCBOVUxMKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cHJpdi1cdTAwM2VwZXJmX3N0YXRlID0gKHN1Ym1vZGUgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCkgP1xuJiM0MztcdFx0XHQgICBTUEVFRF8yNTAwIDogU1BFRURfMTAwMDtcbiYjNDM7XG4mIzQzO1x0aWYgKHBoeS1cdTAwM2Vwb3dlcl9jb3VudCA9PSAwKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHJldHVybiBkZXZfcG1fZ2VucGRfc2V0X3BlcmZvcm1hbmNlX3N0YXRlKGRldiwgcHJpdi1cdTAwM2VwZXJmX3N0YXRlKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlfb3BzIHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfb3BzID0ge1xuJiM0MztcdC5wb3dlcl9vblx0PSBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Bvd2VyX29uLFxuJiM0MztcdC5wb3dlcl9vZmZcdD0gcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9wb3dlcl9vZmYsXG4mIzQzO1x0LnNldF9tb2RlXHQ9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfc2V0X21vZGUsXG4mIzQzO1x0LnZhbGlkYXRlXHQ9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfdmFsaWRhdGUsXG4mIzQzO1x0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3J1bnRpbWVfZGlzYWJsZSh2b2lkICpkYXRhKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gZGF0YTtcbiYjNDM7XG4mIzQzO1x0cG1fcnVudGltZV9kaXNhYmxlKGRldik7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWkgKnByaXY7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4mIzQzO1x0c3RydWN0IHBoeV9wcm92aWRlciAqcHJvdmlkZXI7XG4mIzQzO1x0c3RydWN0IHBoeSAqcGh5O1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRpZiAoIXByaXYpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0cHJpdi1cdTAwM2VwZXJmX3N0YXRlID0gU1BFRURfMTAwMDtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBFbmFibGUgcnVudGltZSBQTSBvbiB0aGUgcHJvdmlkZXIgYmVmb3JlIGNyZWF0aW5nIHRoZSBQSFkgc28gdGhhdCB0aGVcbiYjNDM7XHQgKiBQSFkgY29yZSBlbmFibGVzIHJ1bnRpbWUgUE0gb24gdGhlIFBIWSBkZXZpY2UgdG9vLiBUaGUgc2luZ2xlIFNDTUlcbiYjNDM7XHQgKiBwb3dlciBkb21haW4gaGFzIGFscmVhZHkgYmVlbiBhdHRhY2hlZCB0byB0aGlzIGRldmljZSBieSB0aGUgZHJpdmVyXG4mIzQzO1x0ICogY29yZSwgc28gcnVudGltZSBQTSB2b3RlcyBwcm9wYWdhdGUgdG8gZmlybXdhcmUgdGhyb3VnaCB0aGUgZ2VucGRcbiYjNDM7XHQgKiBkZXZpY2UgbGluay4gTm8gcmVnaXN0ZXIgb3IgY2xvY2sgYWNjZXNzIGlzIGRvbmUgaGVyZSAtIGZpcm13YXJlIG93bnNcbiYjNDM7XHQgKiB0aGUgU2VyRGVzLlxuJiM0MztcdCAqL1xuJiM0MztcdHBtX3J1bnRpbWVfZW5hYmxlKGRldik7XG4mIzQzO1xuJiM0MztcdHJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfcnVudGltZV9kaXNhYmxlLCBkZXYpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRwaHkgPSBkZXZtX3BoeV9jcmVhdGUoZGV2LCBOVUxMLCBcdTAwMjZxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX29wcyk7XG4mIzQzO1x0aWYgKElTX0VSUihwaHkpKVxuJiM0MztcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHBoeSksIFwmIzM0O2ZhaWxlZCB0byBjcmVhdGUgdGhlIHBoeVxcblwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdHBoeV9zZXRfZHJ2ZGF0YShwaHksIHByaXYpO1xuJiM0MztcbiYjNDM7XHRwcm92aWRlciA9IGRldm1fb2ZfcGh5X3Byb3ZpZGVyX3JlZ2lzdGVyKGRldiwgb2ZfcGh5X3NpbXBsZV94bGF0ZSk7XG4mIzQzO1x0aWYgKElTX0VSUihwcm92aWRlcikpXG4mIzQzO1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJvdmlkZXIpLFxuJiM0MztcdFx0XHRcdCAgICAgXCYjMzQ7ZmFpbGVkIHRvIHJlZ2lzdGVyIHRoZSBQSFkgcHJvdmlkZXJcXG5cJiMzNDspO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9vZl9tYXRjaFtdID0ge1xuJiM0MztcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtxY29tLHNhODI1NXAtZHdtYWMtc2dtaWktcGh5XCYjMzQ7IH0sXG4mIzQzO1x0eyB9XG4mIzQzO307XG4mIzQzO01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfb2ZfbWF0Y2gpO1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9kcml2ZXIgPSB7XG4mIzQzO1x0LnByb2JlXHQ9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfcHJvYmUsXG4mIzQzO1x0LmRyaXZlciA9IHtcbiYjNDM7XHRcdC5uYW1lID0gXCYjMzQ7cWNvbS1kd21hYy1zZ21paS1waHktc2NtaVwmIzM0OyxcbiYjNDM7XHRcdC5vZl9tYXRjaF90YWJsZSA9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfb2ZfbWF0Y2gsXG4mIzQzO1x0fSxcbiYjNDM7fTtcbiYjNDM7bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX2RyaXZlcik7XG4mIzQzO1xuJiM0MztNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7UXVhbGNvbW0gRFdNQUMgU0dNSUkgUEhZIGRyaXZlciAoZmlybXdhcmUgbWFuYWdlZClcJiMzNDspO1xuJiM0MztNT0RVTEVfQVVUSE9SKFwmIzM0O0JhcnRvc3ogR29sYXN6ZXdza2kgXHUwMDNjYmFydG9zei5nb2xhc3pld3NraUBvc3MucXVhbGNvbW0uY29tXHUwMDNlXCYjMzQ7KTtcbiYjNDM7TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNzozMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgcHJpbWFyaWx5IGFkZHMgc3VwcG9ydCBmb3IgYSBmaXJtd2FyZS1tYW5hZ2VkIFF1YWxjb21tIEV0aGVybmV0IEVUSFFPUyBkZXZpY2UgYW5kIGl0cyBjb3JyZXNwb25kaW5nIFNlckRlcy9TR01JSSBQSFkuIFRoZXNlIGFyZSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXJzIChRdWFsY29tbSBTb0NzKSBhbmQgYSBtaW5vciBmaXggaW4gYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgZHJpdmVyIChBcXVhbnRpYSkuIFN1Y2ggaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZGV2aWNlcyBhbmQgUEhZcyBhcmUgbm90IGVtdWxhdGVkIG9yIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB1c2VkIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGMzNTNiOWQ4NmVhMThhODRlNTM5N2RlYTI2MTI2MGU5ZTQxZjNhNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDEzIDE3OjMzOjIxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuN2ktYTIwLWdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjdpLWEyMC1nbWFjLnlhbWwKaW5kZXggMjNlOTJiZTMzYWM4NjAuLmIxMjYzMjU0NTY3M2IyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW43aS1hMjAtZ21hYy55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjdpLWEyMC1nbWFjLnlhbWwKQEAgLTQwLDYgJiM0Mzs0MCw5IEBAIHByb3BlcnRpZXM6CiAgICAgZGVzY3JpcHRpb246CiAgICAgICBQSFkgcmVndWxhdG9yCiAKJiM0MzsgIHBvd2VyLWRvbWFpbnM6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiByZXF1aXJlZDoKICAgLSBjb21wYXRpYmxlCiAgIC0gcmVnCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sCmluZGV4IGZjNDQ1YWQ1YTFmMWFjLi40NDhlNjE3Y2RkYzRjZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWwKQEAgLTE0MCw2ICYjNDM7MTQwLDkgQEAgcHJvcGVydGllczoKICAgICAgICAgICAtIGRlc2NyaXB0aW9uOiBvZmZzZXQgb2YgdGhlIGNvbnRyb2wgcmVnaXN0ZXIKICAgICAgICAgICAtIGRlc2NyaXB0aW9uOiBzaGlmdCB3aXRoaW4gdGhlIGNvbnRyb2wgcmVnaXN0ZXIKIAomIzQzOyAgcG93ZXItZG9tYWluczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKIHBhdHRlcm5Qcm9wZXJ0aWVzOgogICAmIzM0O15tZGlvWzAtOV0kJiMzNDs6CiAgICAgdHlwZTogb2JqZWN0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1sb2dpYyxtZXNvbi1kd21hYy55YW1sCmluZGV4IDVjOTE3MTZkMWYyMWU2Li45YzljYzNlZjM4NGRhMCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWwKQEAgLTE1OCw2ICYjNDM7MTU4LDkgQEAgcHJvcGVydGllczoKICAgaW50ZXJydXB0LW5hbWVzOgogICAgIGNvbnN0OiBtYWNpcnEKIAomIzQzOyAgcG93ZXItZG9tYWluczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKIHJlcXVpcmVkOgogICAtIGNvbXBhdGlibGUKICAgLSByZWcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbAppbmRleCA2NTg4MmZmNzlkOGQ3ZS4uMDgxYTIxMTc0ZmQ0MmIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwKQEAgLTk1LDYgJiM0Mzs5NSw5IEBAIHByb3BlcnRpZXM6CiAgICAgICAgICAgLSBkZXNjcmlwdGlvbjogT3B0aW9uYWwgb2Zmc2V0IG9mIHJlZ2lzdGVyIGNvbnRyb2xsaW5nIFRYRCBkZWxheQogICAgICAgICAgIC0gZGVzY3JpcHRpb246IE9wdGlvbmFsIG9mZnNldCBvZiByZWdpc3RlciBjb250cm9sbGluZyBSWEQgZGVsYXkKIAomIzQzOyAgcG93ZXItZG9tYWluczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKIHJlcXVpcmVkOgogICAtIGNvbXBhdGlibGUKICAgLSByZWcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWwKaW5kZXggNjJjMWRhMzZhMmI1YTIuLmU0MTg1MTkzMWI5NDc1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbApAQCAtNDcsNiAmIzQzOzQ3LDkgQEAgcHJvcGVydGllczoKICAgaW50ZXJydXB0LW5hbWVzOgogICAgIGNvbnN0OiBtYWNpcnEKIAomIzQzOyAgcG93ZXItZG9tYWluczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKIHJlcXVpcmVkOgogICAtIGNvbXBhdGlibGUKICAgLSBjbG9ja3MKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbG9vbmdzb24sbHMxYi1nbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWItZ21hYy55YW1sCmluZGV4IGM0ZjMyMjRiYWQzODdiLi5jOWExMzFiOGQ4MzA0YyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFiLWdtYWMueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWItZ21hYy55YW1sCkBAIC02Niw2ICYjNDM7NjYsOSBAQCBwcm9wZXJ0aWVzOgogICAgICAgLSBtaWkKICAgICAgIC0gcmdtaWktaWQKIAomIzQzOyAgcG93ZXItZG9tYWluczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKIHJlcXVpcmVkOgogICAtIGNvbXBhdGlibGUKICAgLSByZWcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbG9vbmdzb24sbHMxYy1lbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWMtZW1hYy55YW1sCmluZGV4IDk5MDAxYjk0MGI4MzYxLi40OWRiMTg0MjNkZDgwNyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFjLWVtYWMueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWMtZW1hYy55YW1sCkBAIC02NSw2ICYjNDM7NjUsOSBAQCBwcm9wZXJ0aWVzOgogICAgICAgLSBtaWkKICAgICAgIC0gcm1paQogCiYjNDM7ICBwb3dlci1kb21haW5zOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwogcmVxdWlyZWQ6CiAgIC0gY29tcGF0aWJsZQogICAtIHJlZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsZHdtYWMtaW14LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxkd21hYy1pbXgueWFtbAppbmRleCBlNWRiMzQ2YmVjYTk2NC4uYjI0MGM3NmU3ZGQ1MjUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGR3bWFjLWlteC55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGR3bWFjLWlteC55YW1sCkBAIC04Myw2ICYjNDM7ODMsOSBAQCBwcm9wZXJ0aWVzOgogICAgIGRlc2NyaXB0aW9uOgogICAgICAgVG8gc2VsZWN0IFJNSUkgcmVmZXJlbmNlIGNsb2NrIGZyb20gZXh0ZXJuYWwuCiAKJiM0MzsgIHBvd2VyLWRvbWFpbnM6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiByZXF1aXJlZDoKICAgLSBjb21wYXRpYmxlCiAgIC0gY2xvY2tzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxscGMxODUwLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxscGMxODUwLWR3bWFjLnlhbWwKaW5kZXggMDVhY2Q5YmM3NjE2MzUuLmY2MTE4OGFiMGRiZTNjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxscGMxODUwLWR3bWFjLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsbHBjMTg1MC1kd21hYy55YW1sCkBAIC01MSw2ICYjNDM7NTEsOSBAQCBwcm9wZXJ0aWVzOgogICAgIGl0ZW1zOgogICAgICAgLSBjb25zdDogc3RtbWFjZXRoCiAKJiM0MzsgIHBvd2VyLWRvbWFpbnM6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiByZXF1aXJlZDoKICAgLSBjb21wYXRpYmxlCiAgIC0gcmVnCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxzMzItZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sCmluZGV4IDc1M2EwNDk0MTY1OWI4Li5mY2FkMjI3NDMwMmQ5YyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWwKQEAgLTgxLDYgJiM0Mzs4MSw5IEBAIHByb3BlcnRpZXM6CiAgICAgICAtIGNvbnN0OiByeAogICAgICAgLSBjb25zdDogcHRwX3JlZgogCiYjNDM7ICBwb3dlci1kb21haW5zOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwogcmVxdWlyZWQ6CiAgIC0gY2xvY2tzCiAgIC0gY2xvY2stbmFtZXMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbAppbmRleCA0MjM5NTljYjkyOGQ5NC4uZWY1MjBmODEwNTc3M2UgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sZXRocW9zLnlhbWwKQEAgLTg2LDYgJiM0Mzs4Niw5IEBAIHByb3BlcnRpZXM6CiAgIHBoeS1uYW1lczoKICAgICBjb25zdDogc2VyZGVzCiAKJiM0MzsgIHBvd2VyLWRvbWFpbnM6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiByZXF1aXJlZDoKICAgLSBjb21wYXRpYmxlCiAgIC0gY2xvY2tzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sc2E4MjU1cC1ldGhxb3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxzYTgyNTVwLWV0aHFvcy55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi41MTU4NDgxZTVlNWIwZgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxzYTgyNTVwLWV0aHFvcy55YW1sCkBAIC0wLDAgJiM0MzsxLDEwNyBAQAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTItQ2xhdXNlCiYjNDM7JVlBTUwgMS4yCiYjNDM7LS0tCiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvcWNvbSxzYTgyNTVwLWV0aHFvcy55YW1sIwomIzQzOyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sIwomIzQzOwomIzQzO3RpdGxlOiBRdWFsY29tbSBFdGhlcm5ldCBFVEhRT1MgZGV2aWNlIChmaXJtd2FyZSBtYW5hZ2VkKQomIzQzOwomIzQzO21haW50YWluZXJzOgomIzQzOyAgLSBCam9ybiBBbmRlcnNzb24gJmx0O2FuZGVyc3NvbkBrZXJuZWwub3JnJmd0OwomIzQzOyAgLSBLb25yYWQgRHliY2lvICZsdDtrb25yYWR5YmNpb0BrZXJuZWwub3JnJmd0OwomIzQzOyAgLSBCYXJ0b3N6IEdvbGFzemV3c2tpICZsdDtiYXJ0b3N6LmdvbGFzemV3c2tpQGxpbmFyby5vcmcmZ3Q7CiYjNDM7CiYjNDM7ZGVzY3JpcHRpb246CiYjNDM7ICBkd21hYyBiYXNlZCBRdWFsY29tbSBldGhlcm5ldCBkZXZpY2VzIHdoaWNoIHN1cHBvcnQgR2lnYWJpdAomIzQzOyAgZXRoZXJuZXQgKHZlcnNpb24gdjIuMy4wIGFuZCBvbndhcmRzKSB3aXRoIGNsb2NrcywgaW50ZXJjb25uZWN0cywgZXRjLgomIzQzOyAgbWFuYWdlZCBieSBmaXJtd2FyZQomIzQzOwomIzQzO2FsbE9mOgomIzQzOyAgLSAkcmVmOiBzbnBzLGR3bWFjLnlhbWwjCiYjNDM7CiYjNDM7cHJvcGVydGllczoKJiM0MzsgIGNvbXBhdGlibGU6CiYjNDM7ICAgIGNvbnN0OiBxY29tLHNhODI1NXAtZXRocW9zCiYjNDM7CiYjNDM7ICByZWc6CiYjNDM7ICAgIG1heEl0ZW1zOiAyCiYjNDM7CiYjNDM7ICByZWctbmFtZXM6CiYjNDM7ICAgIGl0ZW1zOgomIzQzOyAgICAgIC0gY29uc3Q6IHN0bW1hY2V0aAomIzQzOyAgICAgIC0gY29uc3Q6IHJnbWlpCiYjNDM7CiYjNDM7ICBpbnRlcnJ1cHRzOgomIzQzOyAgICBpdGVtczoKJiM0MzsgICAgICAtIGRlc2NyaXB0aW9uOiBDb21iaW5lZCBzaWduYWwgZm9yIHZhcmlvdXMgaW50ZXJydXB0IGV2ZW50cwomIzQzOyAgICAgIC0gZGVzY3JpcHRpb246IFRoZSBpbnRlcnJ1cHQgdGhhdCBvY2N1cnMgd2hlbiBIVyBzYWZldHkgZXJyb3IgdHJpZ2dlcmVkCiYjNDM7CiYjNDM7ICBpbnRlcnJ1cHQtbmFtZXM6CiYjNDM7ICAgIGl0ZW1zOgomIzQzOyAgICAgIC0gY29uc3Q6IG1hY2lycQomIzQzOyAgICAgIC0gY29uc3Q6IHNmdHkKJiM0MzsKJiM0MzsgIHBvd2VyLWRvbWFpbnM6CiYjNDM7ICAgIG1pbkl0ZW1zOiAyCiYjNDM7ICAgIG1heEl0ZW1zOiAyCiYjNDM7CiYjNDM7ICBwb3dlci1kb21haW4tbmFtZXM6CiYjNDM7ICAgIGl0ZW1zOgomIzQzOyAgICAgIC0gY29uc3Q6IGNvcmUKJiM0MzsgICAgICAtIGNvbnN0OiBtZGlvCiYjNDM7CiYjNDM7ICBwaHlzOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwomIzQzOyAgcGh5LW5hbWVzOgomIzQzOyAgICBpdGVtczoKJiM0MzsgICAgICAtIGNvbnN0OiBzZXJkZXMKJiM0MzsKJiM0MzsgIGlvbW11czoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKJiM0MzsgIGRtYS1jb2hlcmVudDogdHJ1ZQomIzQzOwomIzQzO3JlcXVpcmVkOgomIzQzOyAgLSBjb21wYXRpYmxlCiYjNDM7ICAtIHJlZy1uYW1lcwomIzQzOyAgLSBwb3dlci1kb21haW5zCiYjNDM7ICAtIHBvd2VyLWRvbWFpbi1uYW1lcwomIzQzOwomIzQzO3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2UKJiM0MzsKJiM0MztleGFtcGxlczoKJiM0MzsgIC0gfAomIzQzOyAgICAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYXJtLWdpYy5oJmd0OwomIzQzOwomIzQzOyAgICBldGhlcm5ldDogZXRoZXJuZXRAMjMwNDAwMDAgewomIzQzOyAgICAgICAgY29tcGF0aWJsZSA9ICYjMzQ7cWNvbSxzYTgyNTVwLWV0aHFvcyYjMzQ7OwomIzQzOyAgICAgICAgcmVnID0gJmx0OzB4MjMwNDAwMDAgMHgxMDAwMCZndDssCiYjNDM7ICAgICAgICAgICAgICAmbHQ7MHgyMzA1NjAwMCAweDEwMCZndDs7CiYjNDM7ICAgICAgICByZWctbmFtZXMgPSAmIzM0O3N0bW1hY2V0aCYjMzQ7LCAmIzM0O3JnbWlpJiMzNDs7CiYjNDM7CiYjNDM7ICAgICAgICBpb21tdXMgPSAmbHQ7JmFtcDthcHBzX3NtbXUgMHgxMjAgMHg3Jmd0OzsKJiM0MzsKJiM0MzsgICAgICAgIGludGVycnVwdHMgPSAmbHQ7R0lDX1NQSSA5NDYgSVJRX1RZUEVfTEVWRUxfSElHSCZndDssCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgJmx0O0dJQ19TUEkgNzgyIElSUV9UWVBFX0xFVkVMX0hJR0gmZ3Q7OwomIzQzOyAgICAgICAgaW50ZXJydXB0LW5hbWVzID0gJiMzNDttYWNpcnEmIzM0OywgJiMzNDtzZnR5JiMzNDs7CiYjNDM7CiYjNDM7ICAgICAgICBkbWEtY29oZXJlbnQ7CiYjNDM7CiYjNDM7ICAgICAgICBzbnBzLHRzbzsKJiM0MzsgICAgICAgIHNucHMscGJsID0gJmx0OzMyJmd0OzsKJiM0MzsgICAgICAgIHJ4LWZpZm8tZGVwdGggPSAmbHQ7MTYzODQmZ3Q7OwomIzQzOyAgICAgICAgdHgtZmlmby1kZXB0aCA9ICZsdDsxNjM4NCZndDs7CiYjNDM7CiYjNDM7ICAgICAgICBwaHktaGFuZGxlID0gJmx0OyZhbXA7ZXRoZXJuZXRfcGh5Jmd0OzsKJiM0MzsgICAgICAgIHBoeS1tb2RlID0gJiMzNDsyNTAwYmFzZS14JiMzNDs7CiYjNDM7CiYjNDM7ICAgICAgICBzbnBzLG10bC1yeC1jb25maWcgPSAmbHQ7JmFtcDttdGxfcnhfc2V0dXAxJmd0OzsKJiM0MzsgICAgICAgIHNucHMsbXRsLXR4LWNvbmZpZyA9ICZsdDsmYW1wO210bF90eF9zZXR1cDEmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgcG93ZXItZG9tYWlucyA9ICZsdDsmYW1wO3NjbWk4X3BkIDAmZ3Q7LCAmbHQ7JmFtcDtzY21pOF9wZCAxJmd0OzsKJiM0MzsgICAgICAgIHBvd2VyLWRvbWFpbi1uYW1lcyA9ICYjMzQ7Y29yZSYjMzQ7LCAmIzM0O21kaW8mIzM0OzsKJiM0MzsKJiM0MzsgICAgICAgIHBoeXMgPSAmbHQ7JmFtcDtzZXJkZXMxJmd0OzsKJiM0MzsgICAgICAgIHBoeS1uYW1lcyA9ICYjMzQ7c2VyZGVzJiMzNDs7CiYjNDM7ICAgIH07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnpuMS1nbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnpuMS1nbWFjLnlhbWwKaW5kZXggMTZkZDdhMjYzMWFiZjYuLmVkMGQxMGExOWNhNGM0IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnpuMS1nbWFjLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6bjEtZ21hYy55YW1sCkBAIC00NCw2ICYjNDM7NDQsOSBAQCBwcm9wZXJ0aWVzOgogICAgICAgcGhhbmRsZSBwb2ludGluZyB0byBhIFBDUyBzdWItbm9kZSBjb21wYXRpYmxlIHdpdGgKICAgICAgIHJlbmVzYXMscnpuMS1taWljLnlhbWwjCiAKJiM0MzsgIHBvd2VyLWRvbWFpbnM6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiByZXF1aXJlZDoKICAgLSBjb21wYXRpYmxlCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6djJoLWdiZXRoLnlhbWwKaW5kZXggMjEyNWI1ZGRmNzNkYWQuLjgzMzg4MzRmNDljZDIxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnp2MmgtZ2JldGgueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnp2MmgtZ2JldGgueWFtbApAQCAtMTU0LDYgJiM0MzsxNTQsOSBAQCBwcm9wZXJ0aWVzOgogICAgICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3MvcmVuZXNhcyxyem4xLW1paWMueWFtbCMKICAgICAgIChSZWZlciBSWi9UMkggcG9ydGlvbiBpbiB0aGUgRFQtYmluZGluZyBmaWxlKQogCiYjNDM7ICBwb3dlci1kb21haW5zOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwogcmVxdWlyZWQ6CiAgIC0gY29tcGF0aWJsZQogICAtIHJlZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yb2NrY2hpcC1kd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yb2NrY2hpcC1kd21hYy55YW1sCmluZGV4IDgwYzI1Mjg0NTM0OWM0Li4zZWMzZjZkYzJhMTI1OSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yb2NrY2hpcC1kd21hYy55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcm9ja2NoaXAtZHdtYWMueWFtbApAQCAtMTIzLDYgJiM0MzsxMjMsOSBAQCBwcm9wZXJ0aWVzOgogICBwaHktc3VwcGx5OgogICAgIGRlc2NyaXB0aW9uOiBQSFkgcmVndWxhdG9yCiAKJiM0MzsgIHBvd2VyLWRvbWFpbnM6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiByZXF1aXJlZDoKICAgLSBjb21wYXRpYmxlCiAgIC0gY2xvY2tzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc25wcyxkd21hYy55YW1sCmluZGV4IDI0NDkzMTFjNmQyOGVkLi5kM2FmZjFkZjMwNzBkMSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWwKQEAgLTcyLDYgJiM0Mzs3Miw3IEBAIHByb3BlcnRpZXM6CiAgICAgICAgIC0gbnV2b3RvbixtYTM1ZDEtZHdtYWMKICAgICAgICAgLSBueHAsczMyZzItZHdtYWMKICAgICAgICAgLSBxY29tLHFjczQwNC1ldGhxb3MKJiM0MzsgICAgICAgIC0gcWNvbSxzYTgyNTVwLWV0aHFvcwogICAgICAgICAtIHFjb20sc2E4Nzc1cC1ldGhxb3MKICAgICAgICAgLSBxY29tLHNjODI4MHhwLWV0aHFvcwogICAgICAgICAtIHFjb20sc204MTUwLWV0aHFvcwpAQCAtMTg1LDcgJiM0MzsxODYsOCBAQCBwcm9wZXJ0aWVzOgogICAgICAgICAgIC0gY29uc3Q6IGFoYgogCiAgIHBvd2VyLWRvbWFpbnM6Ci0gICAgbWF4SXRlbXM6IDEKJiM0MzsgICAgbWluSXRlbXM6IDEKJiM0MzsgICAgbWF4SXRlbXM6IDIKIAogICBtYWMtbW9kZToKICAgICAkcmVmOiBldGhlcm5ldC1jb250cm9sbGVyLnlhbWwjL3Byb3BlcnRpZXMvcGh5LWNvbm5lY3Rpb24tdHlwZQpAQCAtNjMwLDYgJiM0Mzs2MzIsNyBAQCBhbGxPZjoKICAgICAgICAgICAgICAgICAtIGluZ2VuaWMseDE4MzAtbWFjCiAgICAgICAgICAgICAgICAgLSBpbmdlbmljLHgyMDAwLW1hYwogICAgICAgICAgICAgICAgIC0gcWNvbSxxY3M0MDQtZXRocW9zCiYjNDM7ICAgICAgICAgICAgICAgIC0gcWNvbSxzYTgyNTVwLWV0aHFvcwogICAgICAgICAgICAgICAgIC0gcWNvbSxzYTg3NzVwLWV0aHFvcwogICAgICAgICAgICAgICAgIC0gcWNvbSxzYzgyODB4cC1ldGhxb3MKICAgICAgICAgICAgICAgICAtIHFjb20sc204MTUwLWV0aHFvcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sCmluZGV4IGI4OTQ1NmYwZWY4MzA5Li5lNzhjYmY1OTRjNjk1MiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbApAQCAtNDksNiAmIzQzOzQ5LDkgQEAgcHJvcGVydGllczoKICAgcmVzZXQtbmFtZXM6CiAgICAgY29uc3Q6IHN0bW1hY2V0aAogCiYjNDM7ICBwb3dlci1kb21haW5zOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwogcmVxdWlyZWQ6CiAgIC0gY29tcGF0aWJsZQogICAtIHJlZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxzZzIwNDQtZHdtYWMueWFtbAppbmRleCBlOGQzODE0ZGIwZTk0Zi4uODQ1ZTJjNjdkMjAwMzcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sCkBAIC01Miw2ICYjNDM7NTIsOSBAQCBwcm9wZXJ0aWVzOgogICBpbnRlcnJ1cHQtbmFtZXM6CiAgICAgbWF4SXRlbXM6IDEKIAomIzQzOyAgcG93ZXItZG9tYWluczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKICAgcmVzZXRzOgogICAgIG1heEl0ZW1zOiAxCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sCmluZGV4IGZkY2M2MWM2NWY4N2QxLi5jNDI0ZTc3OTczOTIxZSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sCkBAIC03NSw2ICYjNDM7NzUsOSBAQCBwcm9wZXJ0aWVzOgogICAgICAgVGhlIGFyZ3VtZW50IG9uZSBpcyB0aGUgb2Zmc2V0IG9mIHBoeSBtb2RlIHNlbGVjdGlvbiwgdGhlCiAgICAgICBhcmd1bWVudCB0d28gaXMgdGhlIHNoaWZ0IG9mIHBoeSBtb2RlIHNlbGVjdGlvbi4KIAomIzQzOyAgcG93ZXItZG9tYWluczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKIHJlcXVpcmVkOgogICAtIGNvbXBhdGlibGUKICAgLSByZWcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RtMzItZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RtMzItZHdtYWMueWFtbAppbmRleCA5ODcyNTQ5MDBkMGRhNy4uMjliODc4MDc5ZmYwYzEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RtMzItZHdtYWMueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWwKQEAgLTEyMSw2ICYjNDM7MTIxLDkgQEAgcHJvcGVydGllczoKICAgICBtaW5JdGVtczogMQogICAgIG1heEl0ZW1zOiAyCiAKJiM0MzsgIHBvd2VyLWRvbWFpbnM6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiByZXF1aXJlZDoKICAgLSBjb21wYXRpYmxlCiAgIC0gY2xvY2tzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rlc2xhLGZzZC1ldGhxb3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGVzbGEsZnNkLWV0aHFvcy55YW1sCmluZGV4IGRkNzQ4MWJiMTZlNTk5Li5hZDYzNTUyOWQ2NzZlZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90ZXNsYSxmc2QtZXRocW9zLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90ZXNsYSxmc2QtZXRocW9zLnlhbWwKQEAgLTY3LDYgJiM0Mzs2Nyw5IEBAIHByb3BlcnRpZXM6CiAgICAgICAtIHJnbWlpLXJ4aWQKICAgICAgIC0gcmdtaWktdHhpZAogCiYjNDM7ICBwb3dlci1kb21haW5zOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwogcmVxdWlyZWQ6CiAgIC0gY29tcGF0aWJsZQogICAtIHJlZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90aGVhZCx0aDE1MjAtZ21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90aGVhZCx0aDE1MjAtZ21hYy55YW1sCmluZGV4IGIzNDkyYTlhYTRlZmZhLi5jODU5ZjhiYjVkNTgyYSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90aGVhZCx0aDE1MjAtZ21hYy55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGhlYWQsdGgxNTIwLWdtYWMueWFtbApAQCAtNzgsNiAmIzQzOzc4LDkgQEAgcHJvcGVydGllczoKICAgICBpdGVtczoKICAgICAgIC0gY29uc3Q6IG1hY2lycQogCiYjNDM7ICBwb3dlci1kb21haW5zOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwogcmVxdWlyZWQ6CiAgIC0gY2xvY2tzCiAgIC0gY2xvY2stbmFtZXMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdG9zaGliYSx2aXNjb250aS1kd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90b3NoaWJhLHZpc2NvbnRpLWR3bWFjLnlhbWwKaW5kZXggZjBmMzJlMThmYzg1NTAuLmVmYTM5ZWFiMDI1NmExIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rvc2hpYmEsdmlzY29udGktZHdtYWMueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rvc2hpYmEsdmlzY29udGktZHdtYWMueWFtbApAQCAtNDgsNiAmIzQzOzQ4LDkgQEAgcHJvcGVydGllczoKICAgaW50ZXJydXB0LW5hbWVzOgogICAgIGNvbnN0OiBtYWNpcnEKIAomIzQzOyAgcG93ZXItZG9tYWluczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKIHJlcXVpcmVkOgogICAtIGNvbXBhdGlibGUKICAgLSByZWcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeS55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9xY29tLHNhODI1NXAtZHdtYWMtc2dtaWktcGh5LnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjllODQ2ZTM4MTU1NTUxCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9xY29tLHNhODI1NXAtZHdtYWMtc2dtaWktcGh5LnlhbWwKQEAgLTAsMCAmIzQzOzEsNTAgQEAKJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMCBPUiBCU0QtMi1DbGF1c2UpCiYjNDM7JVlBTUwgMS4yCiYjNDM7LS0tCiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9waHkvcWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeS55YW1sIwomIzQzOyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sIwomIzQzOwomIzQzO3RpdGxlOiBRdWFsY29tbSBTZXJEZXMvU0dNSUkgZXRoZXJuZXQgUEhZIGNvbnRyb2xsZXIgKGZpcm13YXJlIG1hbmFnZWQpCiYjNDM7CiYjNDM7bWFpbnRhaW5lcnM6CiYjNDM7ICAtIEJhcnRvc3ogR29sYXN6ZXdza2kgJmx0O2JyZ2xAa2VybmVsLm9yZyZndDsKJiM0MzsKJiM0MztkZXNjcmlwdGlvbjoKJiM0MzsgIFRoZSBTZXJEZXMgUEhZIHNpdHMgYmV0d2VlbiB0aGUgTUFDIGFuZCB0aGUgZXh0ZXJuYWwgUEhZIGFuZCBwcm92aWRlcwomIzQzOyAgc2VwYXJhdGUgUnggVHggbGluZXMuCiYjNDM7CiYjNDM7cHJvcGVydGllczoKJiM0MzsgIGNvbXBhdGlibGU6CiYjNDM7ICAgIGNvbnN0OiBxY29tLHNhODI1NXAtZHdtYWMtc2dtaWktcGh5CiYjNDM7CiYjNDM7ICByZWc6CiYjNDM7ICAgIGl0ZW1zOgomIzQzOyAgICAgIC0gZGVzY3JpcHRpb246IHNlcmRlcwomIzQzOwomIzQzOyAgcG93ZXItZG9tYWluczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKJiM0MzsgIHBvd2VyLWRvbWFpbi1uYW1lczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKJiM0MzsgICYjMzQ7I3BoeS1jZWxscyYjMzQ7OgomIzQzOyAgICBjb25zdDogMAomIzQzOwomIzQzO3JlcXVpcmVkOgomIzQzOyAgLSBjb21wYXRpYmxlCiYjNDM7ICAtIHJlZwomIzQzOyAgLSAmIzM0OyNwaHktY2VsbHMmIzM0OwomIzQzOyAgLSBwb3dlci1kb21haW5zCiYjNDM7ICAtIHBvd2VyLWRvbWFpbi1uYW1lcwomIzQzOwomIzQzO2FkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZQomIzQzOwomIzQzO2V4YW1wbGVzOgomIzQzOyAgLSB8CiYjNDM7ICAgIHBoeUA4OTAxMDAwIHsKJiM0MzsgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O3Fjb20sc2E4MjU1cC1kd21hYy1zZ21paS1waHkmIzM0OzsKJiM0MzsgICAgICAgIHJlZyA9ICZsdDsweDA4OTAxMDAwIDB4ZTEwJmd0OzsKJiM0MzsgICAgICAgICNwaHktY2VsbHMgPSAmbHQ7MCZndDs7CiYjNDM7ICAgICAgICBwb3dlci1kb21haW5zID0gJmx0OyZhbXA7c2NtaTdfZHZmcyAwJmd0OzsKJiM0MzsgICAgICAgIHBvd2VyLWRvbWFpbi1uYW1lcyA9ICYjMzQ7c2VyZGVzJiMzNDs7CiYjNDM7ICAgIH07CmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IDgwNmJkMmQ4MGQxNTM1Li44NmU2N2FhNGZiOWRkMSAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlMKQEAgLTIyMTg1LDYgJiM0MzsyMjE4NSw3IEBAIEw6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKIEw6CWxpbnV4LWFybS1tc21Admdlci5rZXJuZWwub3JnCiBTOglNYWludGFpbmVkCiBGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sZXRocW9zLnlhbWwKJiM0MztGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sc2E4MjU1cC1ldGhxb3MueWFtbAogRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYwogCiBRVUFMQ09NTSBGQVNUUlBDIERSSVZFUgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMKaW5kZXggYWM3ZDZkM2UyMDVhMWEuLmQzNGYyMGY4NjgxMzhjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMKQEAgLTUsNiAmIzQzOzUsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L29mLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvb2ZfbmV0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGxhdGZvcm1fZGV2aWNlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BtX2RvbWFpbi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BoeS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BoeS9waHkuaCZndDsKIApAQCAtODEsNiAmIzQzOzgyLDggQEAKIAogI2RlZmluZSBTR01JSV8xME1fUlhfQ0xLX0RWRFIJCQkweDMxCiAKJiM0MztzdHJ1Y3QgcWNvbV9ldGhxb3M7CiYjNDM7CiBzdHJ1Y3QgZXRocW9zX2VtYWNfcG9yIHsKIAl1bnNpZ25lZCBpbnQgb2Zmc2V0OwogCXVuc2lnbmVkIGludCB2YWx1ZTsKQEAgLTk1LDYgJiM0Mzs5OCwxMyBAQCBzdHJ1Y3QgZXRocW9zX2VtYWNfZHJpdmVyX2RhdGEgewogCWNvbnN0IGNoYXIgKmxpbmtfY2xrX25hbWU7CiAJc3RydWN0IGR3bWFjNF9hZGRycyBkd21hYzRfYWRkcnM7CiAJYm9vbCBuZWVkc19zZ21paV9sb29wYmFjazsKJiM0MzsJLyogRml4ZWQgUFRQIHJlZmVyZW5jZSBjbG9jayByYXRlLCB1c2VkIG9uIFNDTUkgcGxhdGZvcm1zIHdoZXJlCiYjNDM7CSAqIGZpcm13YXJlIGRvZXMgbm90IGltcGxlbWVudCB0aGUgY2xvY2sgcHJvdG9jb2wgYWxsb3dpbmcgbGludXggdG8KJiM0MzsJICogcXVlcnkgaXQuCiYjNDM7CSAqLwomIzQzOwl1bnNpZ25lZCBsb25nIHB0cF9jbGtfcmF0ZTsKJiM0MzsJaW50ICgqc2V0dXApKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLAomIzQzOwkJICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KTsKIH07CiAKIHN0cnVjdCBxY29tX2V0aHFvcyB7CkBAIC0xMDMsMTIgJiM0MzsxMTMsOCBAQCBzdHJ1Y3QgcWNvbV9ldGhxb3MgewogCXN0cnVjdCBjbGsgKmxpbmtfY2xrOwogCXN0cnVjdCBwaHkgKnNlcmRlc19waHk7CiAJcGh5X2ludGVyZmFjZV90IHBoeV9tb2RlOwotCi0JY29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX3BvciAqcmdtaWlfcG9yOwotCXVuc2lnbmVkIGludCBudW1fcmdtaWlfcG9yOwotCWJvb2wgcmdtaWlfY29uZmlnX2xvb3BiYWNrX2VuOwotCWJvb2wgaGFzX2VtYWNfZ2VfMzsKLQlib29sIG5lZWRzX3NnbWlpX2xvb3BiYWNrOwomIzQzOwlzdHJ1Y3QgZGV2X3BtX2RvbWFpbl9saXN0ICpwZHM7CiYjNDM7CWNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSAqZGF0YTsKIH07CiAKIHN0YXRpYyB1MzIgcmdtaWlfcmVhZGwoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MsIHVuc2lnbmVkIGludCBvZmZzZXQpCkBAIC0xODksOCAmIzQzOzE5NSw5IEBAIHN0YXRpYyBpbnQgZXRocW9zX3NldF9jbGtfdHhfcmF0ZSh2b2lkICpic3BfcHJpdiwgc3RydWN0IGNsayAqY2xrX3R4X2ksCiBzdGF0aWMgdm9pZAogcWNvbV9ldGhxb3Nfc2V0X3NnbWlpX2xvb3BiYWNrKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLCBib29sIGVuYWJsZSkKIHsKLQlpZiAoIWV0aHFvcy0mZ3Q7bmVlZHNfc2dtaWlfbG9vcGJhY2sgfHwKLQkgICAgZXRocW9zLSZndDtwaHlfbW9kZSAhPSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYKQomIzQzOwlpZiAoIWV0aHFvcy0mZ3Q7ZGF0YS0mZ3Q7bmVlZHNfc2dtaWlfbG9vcGJhY2sgfHwKJiM0MzsJICAgIChldGhxb3MtJmd0O3BoeV9tb2RlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVggJmFtcDsmYW1wOwomIzQzOwkgICAgIGV0aHFvcy0mZ3Q7cGh5X21vZGUgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSkKIAkJcmV0dXJuOwogCiAJcmdtaWlfdXBkYXRlbChldGhxb3MsCkBAIC0yMDQsNiAmIzQzOzIxMSwxMSBAQCBzdGF0aWMgdm9pZCBldGhxb3Nfc2V0X2Z1bmNfY2xrX2VuKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zKQogCXJnbWlpX3NldG1hc2soZXRocW9zLCBSR01JSV9DT05GSUdfRlVOQ19DTEtfRU4sIFJHTUlJX0lPX01BQ1JPX0NPTkZJRyk7CiB9CiAKJiM0MztzdGF0aWMgaW50IGV0aHFvc19obG9zX3NldHVwKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLAomIzQzOwkJCSAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCk7CiYjNDM7c3RhdGljIGludCBldGhxb3Nfc2NtaV9zZXR1cChzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcywKJiM0MzsJCQkgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQpOwomIzQzOwogc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19wb3IgZW1hY192Ml8zXzBfcG9yW10gPSB7CiAJeyAub2Zmc2V0ID0gUkdNSUlfSU9fTUFDUk9fQ09ORklHLAkudmFsdWUgPSAweDAwQzAxMzQzIH0sCiAJeyAub2Zmc2V0ID0gU0RDQ19IQ19SRUdfRExMX0NPTkZJRywJLnZhbHVlID0gMHgyMDA0NjQyQyB9LApAQCAtMjE4LDYgJiM0MzsyMzAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX2RyaXZlcl9kYXRhIGVtYWNfdjJfM18wX2RhdGEgPSB7CiAJLm51bV9yZ21paV9wb3IgPSBBUlJBWV9TSVpFKGVtYWNfdjJfM18wX3BvciksCiAJLnJnbWlpX2NvbmZpZ19sb29wYmFja19lbiA9IHRydWUsCiAJLmhhc19lbWFjX2dlXzMgPSBmYWxzZSwKJiM0MzsJLnNldHVwID0gZXRocW9zX2hsb3Nfc2V0dXAsCiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX3BvciBlbWFjX3YyXzFfMF9wb3JbXSA9IHsKQEAgLTIzNCw2ICYjNDM7MjQ3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSBlbWFjX3YyXzFfMF9kYXRhID0gewogCS5udW1fcmdtaWlfcG9yID0gQVJSQVlfU0laRShlbWFjX3YyXzFfMF9wb3IpLAogCS5yZ21paV9jb25maWdfbG9vcGJhY2tfZW4gPSBmYWxzZSwKIAkuaGFzX2VtYWNfZ2VfMyA9IGZhbHNlLAomIzQzOwkuc2V0dXAgPSBldGhxb3NfaGxvc19zZXR1cCwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfcG9yIGVtYWNfdjNfMF8wX3BvcltdID0gewpAQCAtMjY2LDYgJiM0MzsyODAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX2RyaXZlcl9kYXRhIGVtYWNfdjNfMF8wX2RhdGEgPSB7CiAJCS5tdGxfbG93X2NyZWQgPSAweDAwMDA4MDI0LAogCQkubXRsX2xvd19jcmVkX29mZnNldCA9IDB4MTAwMCwKIAl9LAomIzQzOwkuc2V0dXAgPSBldGhxb3NfaGxvc19zZXR1cCwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfcG9yIGVtYWNfdjRfMF8wX3BvcltdID0gewpAQCAtMzAxLDYgJiM0MzszMTYsMzEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSBlbWFjX3Y0XzBfMF9kYXRhID0gewogCQkubXRsX2xvd19jcmVkID0gMHgwMDAwODAyNCwKIAkJLm10bF9sb3dfY3JlZF9vZmZzZXQgPSAweDEwMDAsCiAJfSwKJiM0MzsJLnNldHVwID0gZXRocW9zX2hsb3Nfc2V0dXAsCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX2RyaXZlcl9kYXRhIGVtYWNfdjRfMF8wX3NjbWlfZGF0YSA9IHsKJiM0MzsJLmhhc19lbWFjX2dlXzMgPSB0cnVlLAomIzQzOwkubmVlZHNfc2dtaWlfbG9vcGJhY2sgPSB0cnVlLAomIzQzOwkuZG1hX2FkZHJfd2lkdGggPSAzNiwKJiM0MzsJLnB0cF9jbGtfcmF0ZSA9IDIzMDQwMDAwMCwKJiM0MzsJLmR3bWFjNF9hZGRycyA9IHsKJiM0MzsJCS5kbWFfY2hhbiA9IDB4MDAwMDgxMDAsCiYjNDM7CQkuZG1hX2NoYW5fb2Zmc2V0ID0gMHgxMDAwLAomIzQzOwkJLm10bF9jaGFuID0gMHgwMDAwODAwMCwKJiM0MzsJCS5tdGxfY2hhbl9vZmZzZXQgPSAweDEwMDAsCiYjNDM7CQkubXRsX2V0c19jdHJsID0gMHgwMDAwODAxMCwKJiM0MzsJCS5tdGxfZXRzX2N0cmxfb2Zmc2V0ID0gMHgxMDAwLAomIzQzOwkJLm10bF90eHFfd2VpZ2h0ID0gMHgwMDAwODAxOCwKJiM0MzsJCS5tdGxfdHhxX3dlaWdodF9vZmZzZXQgPSAweDEwMDAsCiYjNDM7CQkubXRsX3NlbmRfc2xwX2NyZWQgPSAweDAwMDA4MDFjLAomIzQzOwkJLm10bF9zZW5kX3NscF9jcmVkX29mZnNldCA9IDB4MTAwMCwKJiM0MzsJCS5tdGxfaGlnaF9jcmVkID0gMHgwMDAwODAyMCwKJiM0MzsJCS5tdGxfaGlnaF9jcmVkX29mZnNldCA9IDB4MTAwMCwKJiM0MzsJCS5tdGxfbG93X2NyZWQgPSAweDAwMDA4MDI0LAomIzQzOwkJLm10bF9sb3dfY3JlZF9vZmZzZXQgPSAweDEwMDAsCiYjNDM7CX0sCiYjNDM7CS5zZXR1cCA9IGV0aHFvc19zY21pX3NldHVwLAogfTsKIAogc3RhdGljIGludCBldGhxb3NfZGxsX2NvbmZpZ3VyZShzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcykKQEAgLTMyMiw3ICYjNDM7MzYyLDcgQEAgc3RhdGljIGludCBldGhxb3NfZGxsX2NvbmZpZ3VyZShzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcykKIAkvKiBTZXQgRExMX0VOICovCiAJcmdtaWlfc2V0bWFzayhldGhxb3MsIFNEQ0NfRExMX0NPTkZJR19ETExfRU4sIFNEQ0NfSENfUkVHX0RMTF9DT05GSUcpOwogCi0JaWYgKCFldGhxb3MtJmd0O2hhc19lbWFjX2dlXzMpIHsKJiM0MzsJaWYgKCFldGhxb3MtJmd0O2RhdGEtJmd0O2hhc19lbWFjX2dlXzMpIHsKIAkJcmdtaWlfY2xybWFzayhldGhxb3MsIFNEQ0NfRExMX01DTEtfR0FUSU5HX0VOLAogCQkJICAgICAgU0RDQ19IQ19SRUdfRExMX0NPTkZJRyk7CiAKQEAgLTM1Miw3ICYjNDM7MzkyLDcgQEAgc3RhdGljIGludCBldGhxb3NfZGxsX2NvbmZpZ3VyZShzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcykKIAlyZ21paV9zZXRtYXNrKGV0aHFvcywgU0RDQ19ETExfQ09ORklHMl9ERFJfQ0FMX0VOLAogCQkgICAgICBTRENDX0hDX1JFR19ETExfQ09ORklHMik7CiAKLQlpZiAoIWV0aHFvcy0mZ3Q7aGFzX2VtYWNfZ2VfMykgewomIzQzOwlpZiAoIWV0aHFvcy0mZ3Q7ZGF0YS0mZ3Q7aGFzX2VtYWNfZ2VfMykgewogCQlyZ21paV9jbHJtYXNrKGV0aHFvcywgU0RDQ19ETExfQ09ORklHMl9ETExfQ0xPQ0tfRElTLAogCQkJICAgICAgU0RDQ19IQ19SRUdfRExMX0NPTkZJRzIpOwogCkBAIC00MzIsNyAmIzQzOzQ3Miw3IEBAIHN0YXRpYyBpbnQgZXRocW9zX3JnbWlpX21hY3JvX2luaXQoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MsIGludCBzcGVlZCkKIAlyZ21paV9jbHJtYXNrKGV0aHFvcywgUkdNSUlfQ09ORklHMl9SU1ZEX0NPTkZJRzE1LAogCQkgICAgICBSR01JSV9JT19NQUNST19DT05GSUcyKTsKIAotCWlmIChzcGVlZCA9PSBTUEVFRF8xMDAwIHx8IGV0aHFvcy0mZ3Q7aGFzX2VtYWNfZ2VfMykKJiM0MzsJaWYgKHNwZWVkID09IFNQRUVEXzEwMDAgfHwgZXRocW9zLSZndDtkYXRhLSZndDtoYXNfZW1hY19nZV8zKQogCQlyZ21paV9zZXRtYXNrKGV0aHFvcywgUkdNSUlfQ09ORklHMl9SWF9QUk9HX1NXQVAsCiAJCQkgICAgICBSR01JSV9JT19NQUNST19DT05GSUcyKTsKIAllbHNlCkBAIC00NTYsNyAmIzQzOzQ5Niw3IEBAIHN0YXRpYyBpbnQgZXRocW9zX3JnbWlpX21hY3JvX2luaXQoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MsIGludCBzcGVlZCkKIAkJICogaW4gcHJhY3RpY2UgdGhpcyBiZWNvbWVzIFBSR19SQ0xLX0RMWSA9IDUyICogNCAvCiAJCSAqICAoMiAqIFJYIGRlbGF5IG5zKQogCQkgKi8KLQkJaWYgKGV0aHFvcy0mZ3Q7aGFzX2VtYWNfZ2VfMykgewomIzQzOwkJaWYgKGV0aHFvcy0mZ3Q7ZGF0YS0mZ3Q7aGFzX2VtYWNfZ2VfMykgewogCQkJLyogMC45IG5zICovCiAJCQlwcmdfcmNsa19kbHkgPSAxMTU7CiAJCX0gZWxzZSB7CkBAIC00NzIsNyAmIzQzOzUxMiw3IEBAIHN0YXRpYyBpbnQgZXRocW9zX3JnbWlpX21hY3JvX2luaXQoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MsIGludCBzcGVlZCkKIAkJCSAgICAgIFNEQ0NfSENfUkVHX0REUl9DT05GSUcpOwogCX0KIAotCWlmIChldGhxb3MtJmd0O3JnbWlpX2NvbmZpZ19sb29wYmFja19lbikKJiM0MzsJaWYgKGV0aHFvcy0mZ3Q7ZGF0YS0mZ3Q7cmdtaWlfY29uZmlnX2xvb3BiYWNrX2VuKQogCQlsb29wYmFjayA9IFJHTUlJX0NPTkZJR19MT09QQkFDS19FTjsKIAllbHNlCiAJCWxvb3BiYWNrID0gMDsKQEAgLTQ5NSw5ICYjNDM7NTM1LDkgQEAgc3RhdGljIHZvaWQgZXRocW9zX2ZpeF9tYWNfc3BlZWRfcmdtaWkodm9pZCAqYnNwX3ByaXYsCiAJZGV2ID0gJmFtcDtldGhxb3MtJmd0O3BkZXYtJmd0O2RldjsKIAogCS8qIFJlc2V0IHRvIFBPUiB2YWx1ZXMgYW5kIGVuYWJsZSBjbGsgKi8KLQlmb3IgKGkgPSAwOyBpICZsdDsgZXRocW9zLSZndDtudW1fcmdtaWlfcG9yOyBpJiM0MzsmIzQzOykKLQkJcmdtaWlfd3JpdGVsKGV0aHFvcywgZXRocW9zLSZndDtyZ21paV9wb3JbaV0udmFsdWUsCi0JCQkgICAgIGV0aHFvcy0mZ3Q7cmdtaWlfcG9yW2ldLm9mZnNldCk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBldGhxb3MtJmd0O2RhdGEtJmd0O251bV9yZ21paV9wb3I7IGkmIzQzOyYjNDM7KQomIzQzOwkJcmdtaWlfd3JpdGVsKGV0aHFvcywgZXRocW9zLSZndDtkYXRhLSZndDtyZ21paV9wb3JbaV0udmFsdWUsCiYjNDM7CQkJICAgICBldGhxb3MtJmd0O2RhdGEtJmd0O3JnbWlpX3BvcltpXS5vZmZzZXQpOwogCiAJZXRocW9zX3NldF9mdW5jX2Nsa19lbihldGhxb3MpOwogCkBAIC01MTEsNyAmIzQzOzU1MSw3IEBAIHN0YXRpYyB2b2lkIGV0aHFvc19maXhfbWFjX3NwZWVkX3JnbWlpKHZvaWQgKmJzcF9wcml2LAogCXJnbWlpX3NldG1hc2soZXRocW9zLCBTRENDX0RMTF9DT05GSUdfUEROLAogCQkgICAgICBTRENDX0hDX1JFR19ETExfQ09ORklHKTsKIAotCWlmIChldGhxb3MtJmd0O2hhc19lbWFjX2dlXzMpIHsKJiM0MzsJaWYgKGV0aHFvcy0mZ3Q7ZGF0YS0mZ3Q7aGFzX2VtYWNfZ2VfMykgewogCQlpZiAoc3BlZWQgPT0gU1BFRURfMTAwMCkgewogCQkJcmdtaWlfd3JpdGVsKGV0aHFvcywgMHgxODAwMDAwLCBTRENDX1RFU1RfQ1RMKTsKIAkJCXJnbWlpX3dyaXRlbChldGhxb3MsIDB4MkMwMTA4MDAsIFNEQ0NfVVNSX0NUTCk7CkBAIC01MzgsNyAmIzQzOzU3OCw3IEBAIHN0YXRpYyB2b2lkIGV0aHFvc19maXhfbWFjX3NwZWVkX3JnbWlpKHZvaWQgKmJzcF9wcml2LAogCQkJICAgICAgU0RDQ19IQ19SRUdfRExMX0NPTkZJRyk7CiAKIAkJLyogU2V0IFVTUl9DVEwgYml0IDI2IHdpdGggbWFzayBvZiAzIGJpdHMgKi8KLQkJaWYgKCFldGhxb3MtJmd0O2hhc19lbWFjX2dlXzMpCiYjNDM7CQlpZiAoIWV0aHFvcy0mZ3Q7ZGF0YS0mZ3Q7aGFzX2VtYWNfZ2VfMykKIAkJCXJnbWlpX3VwZGF0ZWwoZXRocW9zLCBHRU5NQVNLKDI2LCAyNCksIEJJVCgyNiksCiAJCQkJICAgICAgU0RDQ19VU1JfQ1RMKTsKIApAQCAtNjAxLDEwICYjNDM7NjQxLDE5IEBAIHN0YXRpYyBpbnQgcWNvbV9ldGhxb3Nfc2VyZGVzX3Bvd2VydXAoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKnByaXYpCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAomIzQzOwlyZXQgPSBwaHlfc2V0X21vZGVfZXh0KGV0aHFvcy0mZ3Q7c2VyZGVzX3BoeSwgUEhZX01PREVfRVRIRVJORVQsCiYjNDM7CQkJICAgICAgIGV0aHFvcy0mZ3Q7cGh5X21vZGUpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJZ290byBlcnJfb3V0OwomIzQzOwogCXJldCA9IHBoeV9wb3dlcl9vbihldGhxb3MtJmd0O3NlcmRlc19waHkpOwogCWlmIChyZXQpCi0JCXBoeV9leGl0KGV0aHFvcy0mZ3Q7c2VyZGVzX3BoeSk7CiYjNDM7CQlnb3RvIGVycl9vdXQ7CiYjNDM7CiYjNDM7CXJldHVybiAwOwogCiYjNDM7ZXJyX291dDoKJiM0MzsJcGh5X2V4aXQoZXRocW9zLSZndDtzZXJkZXNfcGh5KTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC02MjMsNiAmIzQzOzY3MiwxMiBAQCBzdGF0aWMgaW50IGV0aHFvc19tYWNfZmluaXNoX3NlcmRlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdm9pZCAqcHJpdiwKIAlzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcyA9IHByaXY7CiAJaW50IHJldCA9IDA7CiAKJiM0MzsJLyogVGhlIGludGVyZmFjZSBtb2RlIGlzIG9ubHkga25vd24gb25jZSBwaHlsaW5rIGhhcyByZXNvbHZlZCBpdCBhbmQKJiM0MzsJICogbWF5IGNoYW5nZSBhdCBydW50aW1lLCBzbyBrZWVwIGl0IGluIHN5bmMgZm9yIGxhdGVyCiYjNDM7CSAqIHNlcmRlc19wb3dlcnVwKCkvc2VyZGVzX3Bvd2VyZG93bigpIGNhbGxzLgomIzQzOwkgKi8KJiM0MzsJZXRocW9zLSZndDtwaHlfbW9kZSA9IGludGVyZmFjZTsKJiM0MzsKIAlxY29tX2V0aHFvc19zZXRfc2dtaWlfbG9vcGJhY2soZXRocW9zLCBmYWxzZSk7CiAKIAlpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSB8fApAQCAtNjgxLDYgJiM0Mzs3MzYsMTE1IEBAIHN0YXRpYyB2b2lkIGV0aHFvc19wdHBfY2xrX2ZyZXFfY29uZmlnKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAluZXRkZXZfZGJnKHByaXYtJmd0O2RldiwgJiMzNDtQVFAgcmF0ZSAlbHVcbiYjMzQ7LCBwbGF0X2RhdC0mZ3Q7Y2xrX3B0cF9yYXRlKTsKIH0KIAomIzQzO3N0YXRpYyBpbnQgZXRocW9zX2hsb3Nfc2V0dXAoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MsCiYjNDM7CQkJICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KQomIzQzO3sKJiM0MzsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IGV0aHFvcy0mZ3Q7cGRldjsKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtwZGV2LSZndDtkZXY7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWV0aHFvcy0mZ3Q7cmdtaWlfYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgJiMzNDtyZ21paSYjMzQ7KTsKJiM0MzsJaWYgKElTX0VSUihldGhxb3MtJmd0O3JnbWlpX2Jhc2UpKQomIzQzOwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGV0aHFvcy0mZ3Q7cmdtaWlfYmFzZSksCiYjNDM7CQkJCSAgICAgJiMzNDtGYWlsZWQgdG8gbWFwIHJnbWlpIHJlc291cmNlXG4mIzM0Oyk7CiYjNDM7CiYjNDM7CWV0aHFvcy0mZ3Q7bGlua19jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCBldGhxb3MtJmd0O2RhdGEtJmd0O2xpbmtfY2xrX25hbWUgPzogJiMzNDtyZ21paSYjMzQ7KTsKJiM0MzsJaWYgKElTX0VSUihldGhxb3MtJmd0O2xpbmtfY2xrKSkKJiM0MzsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihldGhxb3MtJmd0O2xpbmtfY2xrKSwKJiM0MzsJCQkJICAgICAmIzM0O0ZhaWxlZCB0byBnZXQgbGlua19jbGtcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJcGxhdF9kYXQtJmd0O2Nsa3NfY29uZmlnID0gZXRocW9zX2Nsa3NfY29uZmlnOwomIzQzOwomIzQzOwlyZXQgPSBldGhxb3NfY2xrc19jb25maWcoZXRocW9zLCB0cnVlKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIGV0aHFvc19jbGtzX2Rpc2FibGUsIGV0aHFvcyk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlldGhxb3Nfc2V0X2Nsa190eF9yYXRlKGV0aHFvcywgTlVMTCwgcGxhdF9kYXQtJmd0O3BoeV9pbnRlcmZhY2UsIFNQRUVEXzEwMDApOwomIzQzOwlxY29tX2V0aHFvc19zZXRfc2dtaWlfbG9vcGJhY2soZXRocW9zLCB0cnVlKTsKJiM0MzsJZXRocW9zX3NldF9mdW5jX2Nsa19lbihldGhxb3MpOwomIzQzOwomIzQzOwlzd2l0Y2ggKGV0aHFvcy0mZ3Q7cGh5X21vZGUpIHsKJiM0MzsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6CiYjNDM7CWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX0lEOgomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEOgomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEOgomIzQzOwkJcGxhdF9kYXQtJmd0O2ZpeF9tYWNfc3BlZWQgPSBldGhxb3NfZml4X21hY19zcGVlZF9yZ21paTsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6CiYjNDM7CWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOgomIzQzOwkJcGxhdF9kYXQtJmd0O2ZpeF9tYWNfc3BlZWQgPSBldGhxb3NfZml4X21hY19zcGVlZF9zZ21paTsKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJYnJlYWs7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcGxhdF9kYXQtJmd0O3NldF9jbGtfdHhfcmF0ZSA9IGV0aHFvc19zZXRfY2xrX3R4X3JhdGU7CiYjNDM7CXBsYXRfZGF0LSZndDtkdW1wX2RlYnVnX3JlZ3MgPSByZ21paV9kdW1wOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGV0aHFvc19zY21pX3BkX25hbWVzW10gPSB7ICYjMzQ7Y29yZSYjMzQ7LCAmIzM0O21kaW8mIzM0OyB9OwomIzQzOwomIzQzO3N0YXRpYyBpbnQgZXRocW9zX3NjbWlfc2V0dXAoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MsCiYjNDM7CQkJICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IGRldl9wbV9kb21haW5fYXR0YWNoX2RhdGEgcGRfZGF0YSA9IHsKJiM0MzsJCS5wZF9uYW1lcwk9IGV0aHFvc19zY21pX3BkX25hbWVzLAomIzQzOwkJLm51bV9wZF9uYW1lcwk9IEFSUkFZX1NJWkUoZXRocW9zX3NjbWlfcGRfbmFtZXMpLAomIzQzOwkJLnBkX2ZsYWdzCT0gUERfRkxBR19ERVZfTElOS19PTiwKJiM0MzsJfTsKJiM0MzsKJiM0MzsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IGV0aHFvcy0mZ3Q7cGRldjsKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtwZGV2LSZndDtkZXY7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IGRldm1fcG1fZG9tYWluX2F0dGFjaF9saXN0KGRldiwgJmFtcDtwZF9kYXRhLCAmYW1wO2V0aHFvcy0mZ3Q7cGRzKTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCwKJiM0MzsJCQkJICAgICAmIzM0O0ZhaWxlZCB0byBhdHRhY2ggcG93ZXIgZG9tYWluc1xuJiMzNDspOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBUaGUgU2VyRGVzIGxhbmUsIGl0cyBjbG9ja3MgYW5kIHRoZSBNQUMgQVhJL0FIQiBjbG9ja3MgYXJlIG93bmVkIGJ5CiYjNDM7CSAqIGZpcm13YXJlIGFuZCBicm91Z2h0IHVwIHRocm91Z2ggdGhlIFNDTUkgcG93ZXIgZG9tYWlucyBhYm92ZS4gVGhlCiYjNDM7CSAqIE1BQyB3cmFwcGVyIGl0c2VsZiwgaG93ZXZlciBpcyBpbiB0aGUga2VybmVsJiMzOTtzIHJlZ2lzdGVyIHNwYWNlOiB0aGUKJiM0MzsJICogbXV4IHRoYXQgZmVlZHMgdGhlIFNlckRlcyByZWNvdmVyZWQgUlggY2xvY2sgaW50byB0aGUgTUFDJiMzOTtzIGNsa19yeF9pCiYjNDM7CSAqIGlzIG5vdCBjb25maWd1cmVkIGJ5IGZpcm13YXJlLiBXaXRob3V0IGl0LCBjbGtfcnhfaSBuZXZlciB0b2dnbGVzCiYjNDM7CSAqIGFuZCB0aGUgRE1BIFNXLXJlc2V0IHBvbGxlZCBpbiBkd21hYzRfZG1hX3Jlc2V0KCkgbmV2ZXIgY29tcGxldGVzLgomIzQzOwkgKgomIzQzOwkgKiBNYXAgdGhlIHdyYXBwZXIgYW5kIHByb2dyYW0gdGhlIHNhbWUgbG9vcGJhY2svZnVuY3Rpb25hbCBjbG9jayBiaXRzCiYjNDM7CSAqIHRoZSBub24tZmlybXdhcmUgcGxhdGZvcm1zIHJlbHkgb24gKHNlZSBldGhxb3NfY2xrc19jb25maWcpIHNvIHRoZQomIzQzOwkgKiBSWCBjbG9jayBpcyBwcmVzZW50IGJ5IHRoZSB0aW1lIHRoZSBETUEgZW5naW5lIGlzIHJlc2V0LgomIzQzOwkgKi8KJiM0MzsJZXRocW9zLSZndDtyZ21paV9iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlX2J5bmFtZShwZGV2LCAmIzM0O3JnbWlpJiMzNDspOwomIzQzOwlpZiAoSVNfRVJSKGV0aHFvcy0mZ3Q7cmdtaWlfYmFzZSkpCiYjNDM7CQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZXRocW9zLSZndDtyZ21paV9iYXNlKSwKJiM0MzsJCQkJICAgICAmIzM0O0ZhaWxlZCB0byBtYXAgcmdtaWkgcmVzb3VyY2VcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogUnVuIG9uIGV2ZXJ5IHJ1bnRpbWUgcmVzdW1lLCB3aGljaCBzdG1tYWMgcGVyZm9ybXMgYWZ0ZXIgdGhlIHBvd2VyCiYjNDM7CSAqIGRvbWFpbnMgYXJlIG9uIGJ1dCBiZWZvcmUgc2VyZGVzX3Bvd2VydXAoKSBhbmQgdGhlIERNQSByZXNldCwgc28gdGhlCiYjNDM7CSAqIHdyYXBwZXIgaXMgYWx3YXlzIGNvbmZpZ3VyZWQgYWhlYWQgb2YgdGhlIHJlc2V0LgomIzQzOwkgKi8KJiM0MzsJcGxhdF9kYXQtJmd0O2Nsa3NfY29uZmlnID0gZXRocW9zX2Nsa3NfY29uZmlnOwomIzQzOwlwbGF0X2RhdC0mZ3Q7Y2xrX3B0cF9yYXRlID0gZXRocW9zLSZndDtkYXRhLSZndDtwdHBfY2xrX3JhdGU7CiYjNDM7CiYjNDM7CXN3aXRjaCAoZXRocW9zLSZndDtwaHlfbW9kZSkgewomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6CiYjNDM7CWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOgomIzQzOwkJcGxhdF9kYXQtJmd0O2ZpeF9tYWNfc3BlZWQgPSBldGhxb3NfZml4X21hY19zcGVlZF9zZ21paTsKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJYnJlYWs7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogewogCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBwZGV2LSZndDtkZXYub2Zfbm9kZTsKQEAgLTcwMiwyMyAmIzQzOzg2NiwyMCBAQCBzdGF0aWMgaW50IHFjb21fZXRocW9zX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCQkJICAgICAmIzM0O2R0IGNvbmZpZ3VyYXRpb24gZmFpbGVkXG4mIzM0Oyk7CiAJfQogCi0JcGxhdF9kYXQtJmd0O2Nsa3NfY29uZmlnID0gZXRocW9zX2Nsa3NfY29uZmlnOwotCiAJZXRocW9zID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpldGhxb3MpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWV0aHFvcykKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlldGhxb3MtJmd0O3BoeV9tb2RlID0gcGxhdF9kYXQtJmd0O3BoeV9pbnRlcmZhY2U7CiYjNDM7CiAJc3dpdGNoIChldGhxb3MtJmd0O3BoeV9tb2RlKSB7CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfSUQ6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDoKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEOgotCQlwbGF0X2RhdC0mZ3Q7Zml4X21hY19zcGVlZCA9IGV0aHFvc19maXhfbWFjX3NwZWVkX3JnbWlpOwogCQlicmVhazsKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6Ci0JCXBsYXRfZGF0LSZndDtmaXhfbWFjX3NwZWVkID0gZXRocW9zX2ZpeF9tYWNfc3BlZWRfc2dtaWk7CiAJCXBsYXRfZGF0LSZndDttYWNfZmluaXNoID0gZXRocW9zX21hY19maW5pc2hfc2VyZGVzOwogCQlicmVhazsKIAlkZWZhdWx0OgpAQCAtNzI4LDI4ICYjNDM7ODg5LDEzIEBAIHN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAl9CiAKIAlldGhxb3MtJmd0O3BkZXYgPSBwZGV2OwotCWV0aHFvcy0mZ3Q7cmdtaWlfYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgJiMzNDtyZ21paSYjMzQ7KTsKLQlpZiAoSVNfRVJSKGV0aHFvcy0mZ3Q7cmdtaWlfYmFzZSkpCi0JCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihldGhxb3MtJmd0O3JnbWlpX2Jhc2UpLAotCQkJCSAgICAgJiMzNDtGYWlsZWQgdG8gbWFwIHJnbWlpIHJlc291cmNlXG4mIzM0Oyk7Ci0KIAlkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7Ci0JZXRocW9zLSZndDtyZ21paV9wb3IgPSBkYXRhLSZndDtyZ21paV9wb3I7Ci0JZXRocW9zLSZndDtudW1fcmdtaWlfcG9yID0gZGF0YS0mZ3Q7bnVtX3JnbWlpX3BvcjsKLQlldGhxb3MtJmd0O3JnbWlpX2NvbmZpZ19sb29wYmFja19lbiA9IGRhdGEtJmd0O3JnbWlpX2NvbmZpZ19sb29wYmFja19lbjsKLQlldGhxb3MtJmd0O2hhc19lbWFjX2dlXzMgPSBkYXRhLSZndDtoYXNfZW1hY19nZV8zOwotCWV0aHFvcy0mZ3Q7bmVlZHNfc2dtaWlfbG9vcGJhY2sgPSBkYXRhLSZndDtuZWVkc19zZ21paV9sb29wYmFjazsKJiM0MzsJZXRocW9zLSZndDtkYXRhID0gZGF0YTsKIAotCWV0aHFvcy0mZ3Q7bGlua19jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCBkYXRhLSZndDtsaW5rX2Nsa19uYW1lID86ICYjMzQ7cmdtaWkmIzM0Oyk7Ci0JaWYgKElTX0VSUihldGhxb3MtJmd0O2xpbmtfY2xrKSkKLQkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGV0aHFvcy0mZ3Q7bGlua19jbGspLAotCQkJCSAgICAgJiMzNDtGYWlsZWQgdG8gZ2V0IGxpbmtfY2xrXG4mIzM0Oyk7CiYjNDM7CWlmIChXQVJOX09OKCFkYXRhLSZndDtzZXR1cCkpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKIAotCXJldCA9IGV0aHFvc19jbGtzX2NvbmZpZyhldGhxb3MsIHRydWUpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQlyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCBldGhxb3NfY2xrc19kaXNhYmxlLCBldGhxb3MpOwomIzQzOwlyZXQgPSBkYXRhLSZndDtzZXR1cChldGhxb3MsIHBsYXRfZGF0KTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCkBAIC03NTgsMjQgJiM0Mzs5MDQsMTEgQEAgc3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZXRocW9zLSZndDtzZXJkZXNfcGh5KSwKIAkJCQkgICAgICYjMzQ7RmFpbGVkIHRvIGdldCBzZXJkZXMgcGh5XG4mIzM0Oyk7CiAKLQlldGhxb3Nfc2V0X2Nsa190eF9yYXRlKGV0aHFvcywgTlVMTCwgcGxhdF9kYXQtJmd0O3BoeV9pbnRlcmZhY2UsCi0JCQkgICAgICAgU1BFRURfMTAwMCk7Ci0KLQlxY29tX2V0aHFvc19zZXRfc2dtaWlfbG9vcGJhY2soZXRocW9zLCB0cnVlKTsKLQlldGhxb3Nfc2V0X2Z1bmNfY2xrX2VuKGV0aHFvcyk7Ci0KLQkvKiBUaGUgY2xvY2tzIGFyZSBjb250cm9sbGVkIGJ5IGZpcm13YXJlLCBzbyB3ZSBkb24mIzM5O3Qga25vdyBmb3IgY2VydGFpbgotCSAqIHdoYXQgY2xvY2sgcmF0ZSBpcyBiZWluZyB1c2VkLiBIYXJkd2FyZSBkb2N1bWVudGF0aW9uIG1lbnRpb25zIHRoYXQKLQkgKiB0aGUgQUhCIHNsYXZlIGNsb2NrIHdpbGwgYmUgaW4gdGhlIHJhbmdlIG9mIDUwIHRvIDEwME1Ieiwgd2hpY2gKLQkgKiBlcXVhdGVzIHRvIGEgTURDIGJldHdlZW4gMS4xOSBhbmQgMi4zOE1Iei4KLQkgKi8KIAlwbGF0X2RhdC0mZ3Q7Y2xrX2NzciA9IFNUTU1BQ19DU1JfNjBfMTAwTTsKIAlwbGF0X2RhdC0mZ3Q7YnNwX3ByaXYgPSBldGhxb3M7Ci0JcGxhdF9kYXQtJmd0O3NldF9jbGtfdHhfcmF0ZSA9IGV0aHFvc19zZXRfY2xrX3R4X3JhdGU7Ci0JcGxhdF9kYXQtJmd0O2R1bXBfZGVidWdfcmVncyA9IHJnbWlpX2R1bXA7CiAJcGxhdF9kYXQtJmd0O3B0cF9jbGtfZnJlcV9jb25maWcgPSBldGhxb3NfcHRwX2Nsa19mcmVxX2NvbmZpZzsKIAlwbGF0X2RhdC0mZ3Q7Y29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDsKLQlpZiAoZXRocW9zLSZndDtoYXNfZW1hY19nZV8zKQomIzQzOwlpZiAoZGF0YS0mZ3Q7aGFzX2VtYWNfZ2VfMykKIAkJcGxhdF9kYXQtJmd0O2R3bWFjNF9hZGRycyA9ICZhbXA7ZGF0YS0mZ3Q7ZHdtYWM0X2FkZHJzOwogCXBsYXRfZGF0LSZndDtwbXQgPSB0cnVlOwogCWlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobnAsICYjMzQ7c25wcyx0c28mIzM0OykpCkBAIC03OTksNiAmIzQzOzkzMiw3IEBAIHN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcWNvbV9ldGhxb3NfbWF0Y2hbXSA9IHsKIAl7IC5jb21wYXRpYmxlID0gJiMzNDtxY29tLHFjczQwNC1ldGhxb3MmIzM0OywgLmRhdGEgPSAmYW1wO2VtYWNfdjJfM18wX2RhdGF9LAomIzQzOwl7IC5jb21wYXRpYmxlID0gJiMzNDtxY29tLHNhODI1NXAtZXRocW9zJiMzNDssIC5kYXRhID0gJmFtcDtlbWFjX3Y0XzBfMF9zY21pX2RhdGF9LAogCXsgLmNvbXBhdGlibGUgPSAmIzM0O3Fjb20sc2E4Nzc1cC1ldGhxb3MmIzM0OywgLmRhdGEgPSAmYW1wO2VtYWNfdjRfMF8wX2RhdGF9LAogCXsgLmNvbXBhdGlibGUgPSAmIzM0O3Fjb20sc2M4MjgweHAtZXRocW9zJiMzNDssIC5kYXRhID0gJmFtcDtlbWFjX3YzXzBfMF9kYXRhfSwKIAl7IC5jb21wYXRpYmxlID0gJiMzNDtxY29tLHNtODE1MC1ldGhxb3MmIzM0OywgLmRhdGEgPSAmYW1wO2VtYWNfdjJfMV8wX2RhdGF9LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYyBiL2RyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMKaW5kZXggZTk1ZDM5MWE2ZGMyMzMuLmI3MjBlNGU5MDI4Y2MyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMKQEAgLTU0NCw3ICYjNDM7NTQ0LDcgQEAgc3RhdGljIGludCBhcXJfZ2VuMV9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpZiAoIXBoeWRldi0mZ3Q7bGluayB8fCBwaHlkZXYtJmd0O2F1dG9uZWcgPT0gQVVUT05FR19ESVNBQkxFKQomIzQzOwlpZiAoIXBoeWRldi0mZ3Q7bGluaykKIAkJcmV0dXJuIDA7CiAKIAkvKiBUaGUgc3RhdHVzIHJlZ2lzdGVyIGlzIG5vdCBpbW1lZGlhdGVseSBjb3JyZWN0IG9uIGxpbmUgc2lkZSBsaW5rIHVwLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcXVhbGNvbW0vS2NvbmZpZyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL0tjb25maWcKaW5kZXggNjBhMGVhZDEyN2ZhOWYuLmE3Y2YzNDhmNmE3YWExIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9LY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL0tjb25maWcKQEAgLTIzMiwzICYjNDM7MjMyLDE0IEBAIGNvbmZpZyBQSFlfUUNPTV9TR01JSV9FVEgKIAloZWxwCiAJICBFbmFibGUgdGhpcyB0byBzdXBwb3J0IHRoZSBpbnRlcm5hbCBTZXJEZXMvU0dNSUkgUEhZIG9uIHZhcmlvdXMKIAkgIFF1YWxjb21tIGNoaXBzZXRzLgomIzQzOwomIzQzO2NvbmZpZyBQSFlfUUNPTV9TR01JSV9FVEhfU0NNSQomIzQzOwl0cmlzdGF0ZSAmIzM0O1F1YWxjb21tIERXTUFDIFNHTUlJIFNlckRlcy9QSFkgZHJpdmVyIChmaXJtd2FyZSBtYW5hZ2VkKSYjMzQ7CiYjNDM7CWRlcGVuZHMgb24gT0YgJmFtcDsmYW1wOyAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVCkKJiM0MzsJc2VsZWN0IEdFTkVSSUNfUEhZCiYjNDM7CXNlbGVjdCBQTQomIzQzOwlzZWxlY3QgUE1fR0VORVJJQ19ET01BSU5TCiYjNDM7CWhlbHAKJiM0MzsJICBFbmFibGUgdGhpcyB0byBzdXBwb3J0IHRoZSBpbnRlcm5hbCBTZXJEZXMvU0dNSUkgUEhZIG9uIFF1YWxjb21tCiYjNDM7CSAgY2hpcHNldHMgd2hlcmUgdGhlIFNlckRlcyBoYXJkd2FyZSAoY2xvY2tzIGFuZCByZWdpc3RlcnMpIGlzIG93bmVkCiYjNDM7CSAgYnkgdGhlIGZpcm13YXJlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcXVhbGNvbW0vTWFrZWZpbGUgYi9kcml2ZXJzL3BoeS9xdWFsY29tbS9NYWtlZmlsZQppbmRleCBiNzFhNmEwYmVkM2YxNC4uMDMyZTU4MmYyZTFhZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGh5L3F1YWxjb21tL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL01ha2VmaWxlCkBAIC0yNSwzICYjNDM7MjUsNCBAQCBvYmotJChDT05GSUdfUEhZX1FDT01fVVNCX1NTKQkJJiM0Mzs9IHBoeS1xY29tLXVzYi1zcy5vCiBvYmotJChDT05GSUdfUEhZX1FDT01fVVNCX1NOUFNfRkVNVE9fVjIpJiM0Mzs9IHBoeS1xY29tLXNucHMtZmVtdG8tdjIubwogb2JqLSQoQ09ORklHX1BIWV9RQ09NX0lQUTgwNlhfVVNCKQkmIzQzOz0gcGh5LXFjb20taXBxODA2eC11c2Iubwogb2JqLSQoQ09ORklHX1BIWV9RQ09NX1NHTUlJX0VUSCkJJiM0Mzs9IHBoeS1xY29tLXNnbWlpLWV0aC5vCiYjNDM7b2JqLSQoQ09ORklHX1BIWV9RQ09NX1NHTUlJX0VUSF9TQ01JKQkmIzQzOz0gcGh5LXFjb20tc2dtaWktZXRoLXNjbWkubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tc2dtaWktZXRoLXNjbWkuYyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLXNnbWlpLWV0aC1zY21pLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmFhN2NlOTM5M2IyODUzCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tc2dtaWktZXRoLXNjbWkuYwpAQCAtMCwwICYjNDM7MSwxNjUgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiYjNDM7LyoKJiM0MzsgKiBDb3B5cmlnaHQgKGMpIFF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy4KJiM0MzsgKgomIzQzOyAqIEZpcm13YXJlLW1hbmFnZWQgdmFyaWFudCBvZiB0aGUgUXVhbGNvbW0gRFdNQUMgU0dNSUkgU2VyRGVzL1BIWSBkcml2ZXIuCiYjNDM7ICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2RlbGF5LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2RldmljZS1pZC9vZi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9ldGh0b29sLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9vZi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9waHkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGh5L3BoeS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcG1fZG9tYWluLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BtX3J1bnRpbWUuaCZndDsKJiM0MzsKJiM0MztzdHJ1Y3QgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaSB7CiYjNDM7CXVuc2lnbmVkIGludCBwZXJmX3N0YXRlOwomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGludCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Bvd2VyX29uKHN0cnVjdCBwaHkgKnBoeSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pICpwcml2ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7CiYjNDM7CXN0cnVjdCBkZXZpY2UgKmRldiA9IHBoeS0mZ3Q7ZGV2LnBhcmVudDsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldChkZXYpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gZGV2X3BtX2dlbnBkX3NldF9wZXJmb3JtYW5jZV9zdGF0ZShkZXYsIHByaXYtJmd0O3BlcmZfc3RhdGUpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlwbV9ydW50aW1lX3B1dChkZXYpOwomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJfQomIzQzOwomIzQzOwl1c2xlZXBfcmFuZ2UoNTAwMCwgMTAwMDApOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Bvd2VyX29mZihzdHJ1Y3QgcGh5ICpwaHkpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwaHktJmd0O2Rldi5wYXJlbnQ7CiYjNDM7CiYjNDM7CWRldl9wbV9nZW5wZF9zZXRfcGVyZm9ybWFuY2Vfc3RhdGUoZGV2LCAwKTsKJiM0MzsJcG1fcnVudGltZV9wdXQoZGV2KTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV92YWxpZGF0ZShzdHJ1Y3QgcGh5ICpwaHksIGVudW0gcGh5X21vZGUgbW9kZSwKJiM0MzsJCQkJCSAgICAgIGludCBzdWJtb2RlLAomIzQzOwkJCQkJICAgICAgdW5pb24gcGh5X2NvbmZpZ3VyZV9vcHRzICpvcHRzKQomIzQzO3sKJiM0MzsJaWYgKG1vZGUgIT0gUEhZX01PREVfRVRIRVJORVQpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJc3dpdGNoIChzdWJtb2RlKSB7CiYjNDM7CWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOgomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg6CiYjNDM7CWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWDoKJiM0MzsJCXJldHVybiAwOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3NldF9tb2RlKHN0cnVjdCBwaHkgKnBoeSwgZW51bSBwaHlfbW9kZSBtb2RlLAomIzQzOwkJCQkJICAgICAgaW50IHN1Ym1vZGUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaSAqcHJpdiA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwomIzQzOwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwaHktJmd0O2Rldi5wYXJlbnQ7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfdmFsaWRhdGUocGh5LCBtb2RlLCBzdWJtb2RlLCBOVUxMKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXByaXYtJmd0O3BlcmZfc3RhdGUgPSAoc3VibW9kZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYKSA/CiYjNDM7CQkJICAgU1BFRURfMjUwMCA6IFNQRUVEXzEwMDA7CiYjNDM7CiYjNDM7CWlmIChwaHktJmd0O3Bvd2VyX2NvdW50ID09IDApCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJcmV0dXJuIGRldl9wbV9nZW5wZF9zZXRfcGVyZm9ybWFuY2Vfc3RhdGUoZGV2LCBwcml2LSZndDtwZXJmX3N0YXRlKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlfb3BzIHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfb3BzID0gewomIzQzOwkucG93ZXJfb24JPSBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Bvd2VyX29uLAomIzQzOwkucG93ZXJfb2ZmCT0gcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9wb3dlcl9vZmYsCiYjNDM7CS5zZXRfbW9kZQk9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfc2V0X21vZGUsCiYjNDM7CS52YWxpZGF0ZQk9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfdmFsaWRhdGUsCiYjNDM7CS5vd25lcgkJPSBUSElTX01PRFVMRSwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfcnVudGltZV9kaXNhYmxlKHZvaWQgKmRhdGEpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBkYXRhOwomIzQzOwomIzQzOwlwbV9ydW50aW1lX2Rpc2FibGUoZGV2KTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaSAqcHJpdjsKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtwZGV2LSZndDtkZXY7CiYjNDM7CXN0cnVjdCBwaHlfcHJvdmlkZXIgKnByb3ZpZGVyOwomIzQzOwlzdHJ1Y3QgcGh5ICpwaHk7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCFwcml2KQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CXByaXYtJmd0O3BlcmZfc3RhdGUgPSBTUEVFRF8xMDAwOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBFbmFibGUgcnVudGltZSBQTSBvbiB0aGUgcHJvdmlkZXIgYmVmb3JlIGNyZWF0aW5nIHRoZSBQSFkgc28gdGhhdCB0aGUKJiM0MzsJICogUEhZIGNvcmUgZW5hYmxlcyBydW50aW1lIFBNIG9uIHRoZSBQSFkgZGV2aWNlIHRvby4gVGhlIHNpbmdsZSBTQ01JCiYjNDM7CSAqIHBvd2VyIGRvbWFpbiBoYXMgYWxyZWFkeSBiZWVuIGF0dGFjaGVkIHRvIHRoaXMgZGV2aWNlIGJ5IHRoZSBkcml2ZXIKJiM0MzsJICogY29yZSwgc28gcnVudGltZSBQTSB2b3RlcyBwcm9wYWdhdGUgdG8gZmlybXdhcmUgdGhyb3VnaCB0aGUgZ2VucGQKJiM0MzsJICogZGV2aWNlIGxpbmsuIE5vIHJlZ2lzdGVyIG9yIGNsb2NrIGFjY2VzcyBpcyBkb25lIGhlcmUgLSBmaXJtd2FyZSBvd25zCiYjNDM7CSAqIHRoZSBTZXJEZXMuCiYjNDM7CSAqLwomIzQzOwlwbV9ydW50aW1lX2VuYWJsZShkZXYpOwomIzQzOwomIzQzOwlyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3J1bnRpbWVfZGlzYWJsZSwgZGV2KTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXBoeSA9IGRldm1fcGh5X2NyZWF0ZShkZXYsIE5VTEwsICZhbXA7cWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9vcHMpOwomIzQzOwlpZiAoSVNfRVJSKHBoeSkpCiYjNDM7CQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocGh5KSwgJiMzNDtmYWlsZWQgdG8gY3JlYXRlIHRoZSBwaHlcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJcGh5X3NldF9kcnZkYXRhKHBoeSwgcHJpdik7CiYjNDM7CiYjNDM7CXByb3ZpZGVyID0gZGV2bV9vZl9waHlfcHJvdmlkZXJfcmVnaXN0ZXIoZGV2LCBvZl9waHlfc2ltcGxlX3hsYXRlKTsKJiM0MzsJaWYgKElTX0VSUihwcm92aWRlcikpCiYjNDM7CQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJvdmlkZXIpLAomIzQzOwkJCQkgICAgICYjMzQ7ZmFpbGVkIHRvIHJlZ2lzdGVyIHRoZSBQSFkgcHJvdmlkZXJcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfb2ZfbWF0Y2hbXSA9IHsKJiM0MzsJeyAuY29tcGF0aWJsZSA9ICYjMzQ7cWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeSYjMzQ7IH0sCiYjNDM7CXsgfQomIzQzO307CiYjNDM7TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9vZl9tYXRjaCk7CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9kcml2ZXIgPSB7CiYjNDM7CS5wcm9iZQk9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfcHJvYmUsCiYjNDM7CS5kcml2ZXIgPSB7CiYjNDM7CQkubmFtZSA9ICYjMzQ7cWNvbS1kd21hYy1zZ21paS1waHktc2NtaSYjMzQ7LAomIzQzOwkJLm9mX21hdGNoX3RhYmxlID0gcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9vZl9tYXRjaCwKJiM0MzsJfSwKJiM0Mzt9OwomIzQzO21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9kcml2ZXIpOwomIzQzOwomIzQzO01PRFVMRV9ERVNDUklQVElPTigmIzM0O1F1YWxjb21tIERXTUFDIFNHTUlJIFBIWSBkcml2ZXIgKGZpcm13YXJlIG1hbmFnZWQpJiMzNDspOwomIzQzO01PRFVMRV9BVVRIT1IoJiMzNDtCYXJ0b3N6IEdvbGFzemV3c2tpICZsdDtiYXJ0b3N6LmdvbGFzemV3c2tpQG9zcy5xdWFsY29tbS5jb20mZ3Q7JiMzNDspOwomIzQzO01PRFVMRV9MSUNFTlNFKCYjMzQ7R1BMJiMzNDspOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNzozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzk1MwoJCQkJCQkJb3V0cHV0OiAxMjAKCQkJCQkJCXRob3VnaHRzOiAxODk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBQYXRjaCBTZXJpZXMgZm9yIEZ1enppbmcgRmVhc2liaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UgaGF2ZSBhIHBhdGNoIHNlcmllcyBkZWFsaW5nIHdpdGggYSBRdWFsY29tbSBFdGhlcm5ldCBFVEhRT1MgZGV2aWNlIGFuZCBpdHMgY29ycmVzcG9uZGluZyBTZXJEZXMvU0dNSUkgUEhZLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNzZXNzIHRoZSBmdXp6aW5nIHBvdGVudGlhbC4gU3BlY2lmaWNhbGx5LCBjYW4gdGhpcyBjb2RlIGJlIHJlYWxpc3RpY2FsbHkgcmVhY2hlZCBpbiBhIHR5cGljYWwgZnV6emluZyBzZXR1cCwgbGlrZSBRRU1VIG9yIEdDRT8KCkZpcnN0LCB3ZSBzZWUgZGV2aWNlIHRyZWUgYmluZGluZ3MgYW5kIG5ldyBkcml2ZXJzIGZvciBib3RoIGBxY29tLHNhODI1NXAtZXRocW9zYCBhbmQgaXRzIFNHTUlJIFBIWS4gVGhlc2UgYXJlIHBsYXRmb3JtIGRldmljZXMsIGFuZCB0aGUgY29yZSBjaGFsbGVuZ2UgaXMgdGhhdCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgb2Z0ZW4gKmRvbiYjMzk7dCogbmF0aXZlbHkgZW11bGF0ZSBzcGVjaWZpYyBRdWFsY29tbSBoYXJkd2FyZS4gSSBpbW1lZGlhdGVseSB0aGluayB0aGF0LCB1bmxlc3MgUUVNVSAqc3BlY2lmaWNhbGx5KiBlbXVsYXRlcyB0aGlzLCB3ZSYjMzk7cmUgbm90IGdvaW5nIHRvIGhpdCB0aGUgbmV3IGNvZGUgcGF0aHMuIFN5emthbGxlciBjYW4gaW5qZWN0IHBsYXRmb3JtIGRldmljZXMgdmlhIERUIG92ZXJsYXlzIG9yIHBzZXVkby1zeXNjYWxscyBidXQgdGhhdCBpcyBsaW1pdGVkIHdpdGhvdXQgcHJlY2lzZSBkZXNjcmlwdGlvbnMuCgpUaGVuIHRoZXJlJiMzOTtzIHRoZSBgZHdtYWMtcWNvbS1ldGhxb3MuY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIFF1YWxjb21tIEVUSFFPUy4gQWxzbyBhIHBsYXRmb3JtIGRldmljZS4gQWdhaW4sIGEgaHVnZSByZWQgZmxhZzogaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyB0aGF0IG5lZWQgTU1JTyBhbmQgY2xvY2svcG93ZXIgZG9tYWluIHNldHVwIGFyZSBub3RvcmlvdXNseSBkaWZmaWN1bHQgdG8gdHJpZ2dlciBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50ICp1bmxlc3MqIHRoZXJlJiMzOTtzIGEgZ29vZCBlbXVsYXRvciBmb3IgdGhpcyBwYXJ0aWN1bGFyIGhhcmR3YXJlLgoKTmV4dCwgdGhlIGZpeCBpbiBgYXF1YW50aWFfbWFpbi5jYCwgd2hpY2ggYXBwZWFycyB0byBiZSBhICpnZW5lcmljKiBQSFkgZHJpdmVyLiBJdCYjMzk7cyBhIHNtYWxsIGNoYW5nZSB0byBhIGxpbmsgY2hlY2suIFBIWSBkcml2ZXJzIGFyZSBnZW5lcmFsbHkgcHJvYmVkIHdoZW4gYW4gTURJTyBidXMgaXMgcHJlc2VudC4gSWYgdGhlcmUgaXMgYSB2aXJ0dWFsIE1BQyBhbmQgYW4gTURJTyBidXMgcHJlc2VudCwgaXQgKmNvdWxkKiBiZSByZWFjaGFibGUuIEhvd2V2ZXIsIFN5emthbGxlciB0eXBpY2FsbHkgZG9lc24mIzM5O3QgZW11bGF0ZSBNRElPIGJ1c2VzIHVubGVzcyB0aGVyZSYjMzk7cyBhbiBNRElPIGJ1cyBkcml2ZXIgcHJlc2VudC4gU28gZXZlbiB0aGlzIGNoYW5nZSBpcyBsaWtlbHkgdW5yZWFjaGFibGUsIHVubGVzcyB0aGUgTURJTyBidXMgaXMgZW11bGF0ZWQgb3IgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBmdXp6ZXIgZm9yIGl0LgoKVGhlIG5ldyBgcGh5LXFjb20tc2dtaWktZXRoLXNjbWkuY2AgZHJpdmVyIGZvciB0aGUgU2VyRGVzL1NHTUlJIFBIWSBpcywgb25jZSBhZ2FpbiwgYSBwbGF0Zm9ybSBkcml2ZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIFF1YWxjb21tIGhhcmR3YXJlLiBOb3QgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KCkkga25vdyBzeXprYWxsZXIgY2FuIGdlbmVyYXRlIERUcywgYnV0IGl0JiMzOTtzIG5vdCBnb2luZyB0byBtYWdpYyB1cCBhbiBlbXVsYXRlZCBRdWFsY29tbSBFVEhRT1MgZGV2aWNlLCBwb3dlciBkb21haW5zLCBhbmQgY2xvY2tzLCBlc3BlY2lhbGx5IGlmIGl0IGlzIHBsYXRmb3JtLXNwZWNpZmljIGFuZCByZXF1aXJlcyBTQ01JIGludGVyYWN0aW9uLgoKVGhlIGluc3RydWN0aW9ucyBpbmRpY2F0ZSB0aGF0IGlmIHRoZSBjaGFuZ2VzIGFyZSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuCgpHaXZlbiB0aGlzIGFuYWx5c2lzLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggc2VyaWVzIGZvY3VzZXMgb24gaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyAoUXVhbGNvbW0gRVRIUU9TIGFuZCBpdHMgUEhZKSB0aGF0IGFyZSAqdW5saWtlbHkqIHRvIGJlIHJlYWNoYWJsZSBpbiBjb21tb24gZnV6emluZyBzZXR1cHMgbGlrZSBRRU1VIGFuZCBHQ0UsIGVzcGVjaWFsbHkgd2l0aG91dCBzcGVjaWFsaXplZCBlbXVsYXRpb24uCgpUaGVyZWZvcmUsIG15IGZpbmFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNzozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBwcmltYXJpbHkgYWRkcyBzdXBwb3J0IGZvciBhIGZpcm13YXJlLW1hbmFnZWQgUXVhbGNvbW0gRXRoZXJuZXQgRVRIUU9TIGRldmljZSBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgU2VyRGVzL1NHTUlJIFBIWS4gVGhlc2UgYXJlIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlcnMgKFF1YWxjb21tIFNvQ3MpIGFuZCBhIG1pbm9yIGZpeCBpbiBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWSBkcml2ZXIgKEFxdWFudGlhKS4gU3VjaCBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkZXZpY2VzIGFuZCBQSFlzIGFyZSBub3QgZW11bGF0ZWQgb3IgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHVzZWQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgcHJpbWFyaWx5IGFkZHMgc3VwcG9ydCBmb3IgYSBmaXJtd2FyZS1tYW5hZ2VkIFF1YWxjb21tIEV0aGVybmV0IEVUSFFPUyBkZXZpY2UgYW5kIGl0cyBjb3JyZXNwb25kaW5nIFNlckRlcy9TR01JSSBQSFkuIFRoZXNlIGFyZSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXJzIChRdWFsY29tbSBTb0NzKSBhbmQgYSBtaW5vciBmaXggaW4gYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgZHJpdmVyIChBcXVhbnRpYSkuIFN1Y2ggaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZGV2aWNlcyBhbmQgUEhZcyBhcmUgbm90IGVtdWxhdGVkIG9yIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB1c2VkIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE3OjMzOjIzLjAzOTc1MjUxN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODg5NTk2NTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgcHJpbWFyaWx5IGFkZHMgc3VwcG9ydCBmb3IgYSBmaXJtd2FyZS1tYW5hZ2VkIFF1YWxjb21tIEV0aGVybmV0IEVUSFFPUyBkZXZpY2UgYW5kIGl0cyBjb3JyZXNwb25kaW5nIFNlckRlcy9TR01JSSBQSFkuIFRoZXNlIGFyZSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXJzIChRdWFsY29tbSBTb0NzKSBhbmQgYSBtaW5vciBmaXggaW4gYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgZHJpdmVyIChBcXVhbnRpYSkuIFN1Y2ggaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZGV2aWNlcyBhbmQgUEhZcyBhcmUgbm90IGVtdWxhdGVkIG9yIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB1c2VkIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTc6MzM6MjMuMDM5NzU3Njk3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTIzNDkzMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4YzM1M2I5ZDg2ZWExOGE4NGU1Mzk3ZGVhMjYxMjYwZTllNDFmM2E2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDEzIDE3OjMzOjIxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjdpLWEyMC1nbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW43aS1hMjAtZ21hYy55YW1sXFxuaW5kZXggMjNlOTJiZTMzYWM4NjAuLmIxMjYzMjU0NTY3M2IyIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjdpLWEyMC1nbWFjLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW43aS1hMjAtZ21hYy55YW1sXFxuQEAgLTQwLDYgKzQwLDkgQEAgcHJvcGVydGllczpcXG4gICAgIGRlc2NyaXB0aW9uOlxcbiAgICAgICBQSFkgcmVndWxhdG9yXFxuIFxcbisgIHBvd2VyLWRvbWFpbnM6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4gcmVxdWlyZWQ6XFxuICAgLSBjb21wYXRpYmxlXFxuICAgLSByZWdcXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbFxcbmluZGV4IGZjNDQ1YWQ1YTFmMWFjLi40NDhlNjE3Y2RkYzRjZCAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sXFxuQEAgLTE0MCw2ICsxNDAsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgICAgICAgLSBkZXNjcmlwdGlvbjogb2Zmc2V0IG9mIHRoZSBjb250cm9sIHJlZ2lzdGVyXFxuICAgICAgICAgICAtIGRlc2NyaXB0aW9uOiBzaGlmdCB3aXRoaW4gdGhlIGNvbnRyb2wgcmVnaXN0ZXJcXG4gXFxuKyAgcG93ZXItZG9tYWluczpcXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbiBwYXR0ZXJuUHJvcGVydGllczpcXG4gICBcXFwiXm1kaW9bMC05XSRcXFwiOlxcbiAgICAgdHlwZTogb2JqZWN0XFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1sb2dpYyxtZXNvbi1kd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWxcXG5pbmRleCA1YzkxNzE2ZDFmMjFlNi4uOWM5Y2MzZWYzODRkYTAgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbFxcbkBAIC0xNTgsNiArMTU4LDkgQEAgcHJvcGVydGllczpcXG4gICBpbnRlcnJ1cHQtbmFtZXM6XFxuICAgICBjb25zdDogbWFjaXJxXFxuIFxcbisgIHBvd2VyLWRvbWFpbnM6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4gcmVxdWlyZWQ6XFxuICAgLSBjb21wYXRpYmxlXFxuICAgLSByZWdcXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sXFxuaW5kZXggNjU4ODJmZjc5ZDhkN2UuLjA4MWEyMTE3NGZkNDJiIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbFxcbkBAIC05NSw2ICs5NSw5IEBAIHByb3BlcnRpZXM6XFxuICAgICAgICAgICAtIGRlc2NyaXB0aW9uOiBPcHRpb25hbCBvZmZzZXQgb2YgcmVnaXN0ZXIgY29udHJvbGxpbmcgVFhEIGRlbGF5XFxuICAgICAgICAgICAtIGRlc2NyaXB0aW9uOiBPcHRpb25hbCBvZmZzZXQgb2YgcmVnaXN0ZXIgY29udHJvbGxpbmcgUlhEIGRlbGF5XFxuIFxcbisgIHBvd2VyLWRvbWFpbnM6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4gcmVxdWlyZWQ6XFxuICAgLSBjb21wYXRpYmxlXFxuICAgLSByZWdcXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbFxcbmluZGV4IDYyYzFkYTM2YTJiNWEyLi5lNDE4NTE5MzFiOTQ3NSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sXFxuQEAgLTQ3LDYgKzQ3LDkgQEAgcHJvcGVydGllczpcXG4gICBpbnRlcnJ1cHQtbmFtZXM6XFxuICAgICBjb25zdDogbWFjaXJxXFxuIFxcbisgIHBvd2VyLWRvbWFpbnM6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4gcmVxdWlyZWQ6XFxuICAgLSBjb21wYXRpYmxlXFxuICAgLSBjbG9ja3NcXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFiLWdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbG9vbmdzb24sbHMxYi1nbWFjLnlhbWxcXG5pbmRleCBjNGYzMjI0YmFkMzg3Yi4uYzlhMTMxYjhkODMwNGMgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFiLWdtYWMueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbG9vbmdzb24sbHMxYi1nbWFjLnlhbWxcXG5AQCAtNjYsNiArNjYsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgICAtIG1paVxcbiAgICAgICAtIHJnbWlpLWlkXFxuIFxcbisgIHBvd2VyLWRvbWFpbnM6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4gcmVxdWlyZWQ6XFxuICAgLSBjb21wYXRpYmxlXFxuICAgLSByZWdcXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFjLWVtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbG9vbmdzb24sbHMxYy1lbWFjLnlhbWxcXG5pbmRleCA5OTAwMWI5NDBiODM2MS4uNDlkYjE4NDIzZGQ4MDcgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFjLWVtYWMueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbG9vbmdzb24sbHMxYy1lbWFjLnlhbWxcXG5AQCAtNjUsNiArNjUsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgICAtIG1paVxcbiAgICAgICAtIHJtaWlcXG4gXFxuKyAgcG93ZXItZG9tYWluczpcXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbiByZXF1aXJlZDpcXG4gICAtIGNvbXBhdGlibGVcXG4gICAtIHJlZ1xcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxkd21hYy1pbXgueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGR3bWFjLWlteC55YW1sXFxuaW5kZXggZTVkYjM0NmJlY2E5NjQuLmIyNDBjNzZlN2RkNTI1IDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGR3bWFjLWlteC55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsZHdtYWMtaW14LnlhbWxcXG5AQCAtODMsNiArODMsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgZGVzY3JpcHRpb246XFxuICAgICAgIFRvIHNlbGVjdCBSTUlJIHJlZmVyZW5jZSBjbG9jayBmcm9tIGV4dGVybmFsLlxcbiBcXG4rICBwb3dlci1kb21haW5zOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuIHJlcXVpcmVkOlxcbiAgIC0gY29tcGF0aWJsZVxcbiAgIC0gY2xvY2tzXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGxwYzE4NTAtZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGxwYzE4NTAtZHdtYWMueWFtbFxcbmluZGV4IDA1YWNkOWJjNzYxNjM1Li5mNjExODhhYjBkYmUzYyAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxscGMxODUwLWR3bWFjLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxscGMxODUwLWR3bWFjLnlhbWxcXG5AQCAtNTEsNiArNTEsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgaXRlbXM6XFxuICAgICAgIC0gY29uc3Q6IHN0bW1hY2V0aFxcbiBcXG4rICBwb3dlci1kb21haW5zOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuIHJlcXVpcmVkOlxcbiAgIC0gY29tcGF0aWJsZVxcbiAgIC0gcmVnXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWxcXG5pbmRleCA3NTNhMDQ5NDE2NTliOC4uZmNhZDIyNzQzMDJkOWMgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxzMzItZHdtYWMueWFtbFxcbkBAIC04MSw2ICs4MSw5IEBAIHByb3BlcnRpZXM6XFxuICAgICAgIC0gY29uc3Q6IHJ4XFxuICAgICAgIC0gY29uc3Q6IHB0cF9yZWZcXG4gXFxuKyAgcG93ZXItZG9tYWluczpcXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbiByZXF1aXJlZDpcXG4gICAtIGNsb2Nrc1xcbiAgIC0gY2xvY2stbmFtZXNcXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY29tLGV0aHFvcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY29tLGV0aHFvcy55YW1sXFxuaW5kZXggNDIzOTU5Y2I5MjhkOTQuLmVmNTIwZjgxMDU3NzNlIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbFxcbkBAIC04Niw2ICs4Niw5IEBAIHByb3BlcnRpZXM6XFxuICAgcGh5LW5hbWVzOlxcbiAgICAgY29uc3Q6IHNlcmRlc1xcbiBcXG4rICBwb3dlci1kb21haW5zOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuIHJlcXVpcmVkOlxcbiAgIC0gY29tcGF0aWJsZVxcbiAgIC0gY2xvY2tzXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxzYTgyNTVwLWV0aHFvcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY29tLHNhODI1NXAtZXRocW9zLnlhbWxcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi41MTU4NDgxZTVlNWIwZlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sc2E4MjU1cC1ldGhxb3MueWFtbFxcbkBAIC0wLDAgKzEsMTA3IEBAXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTItQ2xhdXNlXFxuKyVZQU1MIDEuMlxcbistLS1cXG4rJGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvcWNvbSxzYTgyNTVwLWV0aHFvcy55YW1sI1xcbiskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG4rXFxuK3RpdGxlOiBRdWFsY29tbSBFdGhlcm5ldCBFVEhRT1MgZGV2aWNlIChmaXJtd2FyZSBtYW5hZ2VkKVxcbitcXG4rbWFpbnRhaW5lcnM6XFxuKyAgLSBCam9ybiBBbmRlcnNzb24gXFx1MDAzY2FuZGVyc3NvbkBrZXJuZWwub3JnXFx1MDAzZVxcbisgIC0gS29ucmFkIER5YmNpbyBcXHUwMDNja29ucmFkeWJjaW9Aa2VybmVsLm9yZ1xcdTAwM2VcXG4rICAtIEJhcnRvc3ogR29sYXN6ZXdza2kgXFx1MDAzY2JhcnRvc3ouZ29sYXN6ZXdza2lAbGluYXJvLm9yZ1xcdTAwM2VcXG4rXFxuK2Rlc2NyaXB0aW9uOlxcbisgIGR3bWFjIGJhc2VkIFF1YWxjb21tIGV0aGVybmV0IGRldmljZXMgd2hpY2ggc3VwcG9ydCBHaWdhYml0XFxuKyAgZXRoZXJuZXQgKHZlcnNpb24gdjIuMy4wIGFuZCBvbndhcmRzKSB3aXRoIGNsb2NrcywgaW50ZXJjb25uZWN0cywgZXRjLlxcbisgIG1hbmFnZWQgYnkgZmlybXdhcmVcXG4rXFxuK2FsbE9mOlxcbisgIC0gJHJlZjogc25wcyxkd21hYy55YW1sI1xcbitcXG4rcHJvcGVydGllczpcXG4rICBjb21wYXRpYmxlOlxcbisgICAgY29uc3Q6IHFjb20sc2E4MjU1cC1ldGhxb3NcXG4rXFxuKyAgcmVnOlxcbisgICAgbWF4SXRlbXM6IDJcXG4rXFxuKyAgcmVnLW5hbWVzOlxcbisgICAgaXRlbXM6XFxuKyAgICAgIC0gY29uc3Q6IHN0bW1hY2V0aFxcbisgICAgICAtIGNvbnN0OiByZ21paVxcbitcXG4rICBpbnRlcnJ1cHRzOlxcbisgICAgaXRlbXM6XFxuKyAgICAgIC0gZGVzY3JpcHRpb246IENvbWJpbmVkIHNpZ25hbCBmb3IgdmFyaW91cyBpbnRlcnJ1cHQgZXZlbnRzXFxuKyAgICAgIC0gZGVzY3JpcHRpb246IFRoZSBpbnRlcnJ1cHQgdGhhdCBvY2N1cnMgd2hlbiBIVyBzYWZldHkgZXJyb3IgdHJpZ2dlcmVkXFxuK1xcbisgIGludGVycnVwdC1uYW1lczpcXG4rICAgIGl0ZW1zOlxcbisgICAgICAtIGNvbnN0OiBtYWNpcnFcXG4rICAgICAgLSBjb25zdDogc2Z0eVxcbitcXG4rICBwb3dlci1kb21haW5zOlxcbisgICAgbWluSXRlbXM6IDJcXG4rICAgIG1heEl0ZW1zOiAyXFxuK1xcbisgIHBvd2VyLWRvbWFpbi1uYW1lczpcXG4rICAgIGl0ZW1zOlxcbisgICAgICAtIGNvbnN0OiBjb3JlXFxuKyAgICAgIC0gY29uc3Q6IG1kaW9cXG4rXFxuKyAgcGh5czpcXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbisgIHBoeS1uYW1lczpcXG4rICAgIGl0ZW1zOlxcbisgICAgICAtIGNvbnN0OiBzZXJkZXNcXG4rXFxuKyAgaW9tbXVzOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuKyAgZG1hLWNvaGVyZW50OiB0cnVlXFxuK1xcbityZXF1aXJlZDpcXG4rICAtIGNvbXBhdGlibGVcXG4rICAtIHJlZy1uYW1lc1xcbisgIC0gcG93ZXItZG9tYWluc1xcbisgIC0gcG93ZXItZG9tYWluLW5hbWVzXFxuK1xcbit1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXFxuK1xcbitleGFtcGxlczpcXG4rICAtIHxcXG4rICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0tZ2ljLmhcXHUwMDNlXFxuK1xcbisgICAgZXRoZXJuZXQ6IGV0aGVybmV0QDIzMDQwMDAwIHtcXG4rICAgICAgICBjb21wYXRpYmxlID0gXFxcInFjb20sc2E4MjU1cC1ldGhxb3NcXFwiO1xcbisgICAgICAgIHJlZyA9IFxcdTAwM2MweDIzMDQwMDAwIDB4MTAwMDBcXHUwMDNlLFxcbisgICAgICAgICAgICAgIFxcdTAwM2MweDIzMDU2MDAwIDB4MTAwXFx1MDAzZTtcXG4rICAgICAgICByZWctbmFtZXMgPSBcXFwic3RtbWFjZXRoXFxcIiwgXFxcInJnbWlpXFxcIjtcXG4rXFxuKyAgICAgICAgaW9tbXVzID0gXFx1MDAzY1xcdTAwMjZhcHBzX3NtbXUgMHgxMjAgMHg3XFx1MDAzZTtcXG4rXFxuKyAgICAgICAgaW50ZXJydXB0cyA9IFxcdTAwM2NHSUNfU1BJIDk0NiBJUlFfVFlQRV9MRVZFTF9ISUdIXFx1MDAzZSxcXG4rICAgICAgICAgICAgICAgICAgICAgXFx1MDAzY0dJQ19TUEkgNzgyIElSUV9UWVBFX0xFVkVMX0hJR0hcXHUwMDNlO1xcbisgICAgICAgIGludGVycnVwdC1uYW1lcyA9IFxcXCJtYWNpcnFcXFwiLCBcXFwic2Z0eVxcXCI7XFxuK1xcbisgICAgICAgIGRtYS1jb2hlcmVudDtcXG4rXFxuKyAgICAgICAgc25wcyx0c287XFxuKyAgICAgICAgc25wcyxwYmwgPSBcXHUwMDNjMzJcXHUwMDNlO1xcbisgICAgICAgIHJ4LWZpZm8tZGVwdGggPSBcXHUwMDNjMTYzODRcXHUwMDNlO1xcbisgICAgICAgIHR4LWZpZm8tZGVwdGggPSBcXHUwMDNjMTYzODRcXHUwMDNlO1xcbitcXG4rICAgICAgICBwaHktaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZldGhlcm5ldF9waHlcXHUwMDNlO1xcbisgICAgICAgIHBoeS1tb2RlID0gXFxcIjI1MDBiYXNlLXhcXFwiO1xcbitcXG4rICAgICAgICBzbnBzLG10bC1yeC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNm10bF9yeF9zZXR1cDFcXHUwMDNlO1xcbisgICAgICAgIHNucHMsbXRsLXR4LWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2bXRsX3R4X3NldHVwMVxcdTAwM2U7XFxuK1xcbisgICAgICAgIHBvd2VyLWRvbWFpbnMgPSBcXHUwMDNjXFx1MDAyNnNjbWk4X3BkIDBcXHUwMDNlLCBcXHUwMDNjXFx1MDAyNnNjbWk4X3BkIDFcXHUwMDNlO1xcbisgICAgICAgIHBvd2VyLWRvbWFpbi1uYW1lcyA9IFxcXCJjb3JlXFxcIiwgXFxcIm1kaW9cXFwiO1xcbitcXG4rICAgICAgICBwaHlzID0gXFx1MDAzY1xcdTAwMjZzZXJkZXMxXFx1MDAzZTtcXG4rICAgICAgICBwaHktbmFtZXMgPSBcXFwic2VyZGVzXFxcIjtcXG4rICAgIH07XFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyem4xLWdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyem4xLWdtYWMueWFtbFxcbmluZGV4IDE2ZGQ3YTI2MzFhYmY2Li5lZDBkMTBhMTljYTRjNCAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnpuMS1nbWFjLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnpuMS1nbWFjLnlhbWxcXG5AQCAtNDQsNiArNDQsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgICBwaGFuZGxlIHBvaW50aW5nIHRvIGEgUENTIHN1Yi1ub2RlIGNvbXBhdGlibGUgd2l0aFxcbiAgICAgICByZW5lc2FzLHJ6bjEtbWlpYy55YW1sI1xcbiBcXG4rICBwb3dlci1kb21haW5zOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuIHJlcXVpcmVkOlxcbiAgIC0gY29tcGF0aWJsZVxcbiBcXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6djJoLWdiZXRoLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnp2MmgtZ2JldGgueWFtbFxcbmluZGV4IDIxMjViNWRkZjczZGFkLi44MzM4ODM0ZjQ5Y2QyMSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnp2MmgtZ2JldGgueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sXFxuQEAgLTE1NCw2ICsxNTQsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sI1xcbiAgICAgICAoUmVmZXIgUlovVDJIIHBvcnRpb24gaW4gdGhlIERULWJpbmRpbmcgZmlsZSlcXG4gXFxuKyAgcG93ZXItZG9tYWluczpcXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbiByZXF1aXJlZDpcXG4gICAtIGNvbXBhdGlibGVcXG4gICAtIHJlZ1xcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JvY2tjaGlwLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JvY2tjaGlwLWR3bWFjLnlhbWxcXG5pbmRleCA4MGMyNTI4NDUzNDljNC4uM2VjM2Y2ZGMyYTEyNTkgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yb2NrY2hpcC1kd21hYy55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yb2NrY2hpcC1kd21hYy55YW1sXFxuQEAgLTEyMyw2ICsxMjMsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgIHBoeS1zdXBwbHk6XFxuICAgICBkZXNjcmlwdGlvbjogUEhZIHJlZ3VsYXRvclxcbiBcXG4rICBwb3dlci1kb21haW5zOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuIHJlcXVpcmVkOlxcbiAgIC0gY29tcGF0aWJsZVxcbiAgIC0gY2xvY2tzXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc25wcyxkd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWxcXG5pbmRleCAyNDQ5MzExYzZkMjhlZC4uZDNhZmYxZGYzMDcwZDEgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdtYWMueWFtbFxcbkBAIC03Miw2ICs3Miw3IEBAIHByb3BlcnRpZXM6XFxuICAgICAgICAgLSBudXZvdG9uLG1hMzVkMS1kd21hY1xcbiAgICAgICAgIC0gbnhwLHMzMmcyLWR3bWFjXFxuICAgICAgICAgLSBxY29tLHFjczQwNC1ldGhxb3NcXG4rICAgICAgICAtIHFjb20sc2E4MjU1cC1ldGhxb3NcXG4gICAgICAgICAtIHFjb20sc2E4Nzc1cC1ldGhxb3NcXG4gICAgICAgICAtIHFjb20sc2M4MjgweHAtZXRocW9zXFxuICAgICAgICAgLSBxY29tLHNtODE1MC1ldGhxb3NcXG5AQCAtMTg1LDcgKzE4Niw4IEBAIHByb3BlcnRpZXM6XFxuICAgICAgICAgICAtIGNvbnN0OiBhaGJcXG4gXFxuICAgcG93ZXItZG9tYWluczpcXG4tICAgIG1heEl0ZW1zOiAxXFxuKyAgICBtaW5JdGVtczogMVxcbisgICAgbWF4SXRlbXM6IDJcXG4gXFxuICAgbWFjLW1vZGU6XFxuICAgICAkcmVmOiBldGhlcm5ldC1jb250cm9sbGVyLnlhbWwjL3Byb3BlcnRpZXMvcGh5LWNvbm5lY3Rpb24tdHlwZVxcbkBAIC02MzAsNiArNjMyLDcgQEAgYWxsT2Y6XFxuICAgICAgICAgICAgICAgICAtIGluZ2VuaWMseDE4MzAtbWFjXFxuICAgICAgICAgICAgICAgICAtIGluZ2VuaWMseDIwMDAtbWFjXFxuICAgICAgICAgICAgICAgICAtIHFjb20scWNzNDA0LWV0aHFvc1xcbisgICAgICAgICAgICAgICAgLSBxY29tLHNhODI1NXAtZXRocW9zXFxuICAgICAgICAgICAgICAgICAtIHFjb20sc2E4Nzc1cC1ldGhxb3NcXG4gICAgICAgICAgICAgICAgIC0gcWNvbSxzYzgyODB4cC1ldGhxb3NcXG4gICAgICAgICAgICAgICAgIC0gcWNvbSxzbTgxNTAtZXRocW9zXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbFxcbmluZGV4IGI4OTQ1NmYwZWY4MzA5Li5lNzhjYmY1OTRjNjk1MiAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWxcXG5AQCAtNDksNiArNDksOSBAQCBwcm9wZXJ0aWVzOlxcbiAgIHJlc2V0LW5hbWVzOlxcbiAgICAgY29uc3Q6IHN0bW1hY2V0aFxcbiBcXG4rICBwb3dlci1kb21haW5zOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuIHJlcXVpcmVkOlxcbiAgIC0gY29tcGF0aWJsZVxcbiAgIC0gcmVnXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWxcXG5pbmRleCBlOGQzODE0ZGIwZTk0Zi4uODQ1ZTJjNjdkMjAwMzcgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxzZzIwNDQtZHdtYWMueWFtbFxcbkBAIC01Miw2ICs1Miw5IEBAIHByb3BlcnRpZXM6XFxuICAgaW50ZXJydXB0LW5hbWVzOlxcbiAgICAgbWF4SXRlbXM6IDFcXG4gXFxuKyAgcG93ZXItZG9tYWluczpcXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbiAgIHJlc2V0czpcXG4gICAgIG1heEl0ZW1zOiAxXFxuIFxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbFxcbmluZGV4IGZkY2M2MWM2NWY4N2QxLi5jNDI0ZTc3OTczOTIxZSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbFxcbkBAIC03NSw2ICs3NSw5IEBAIHByb3BlcnRpZXM6XFxuICAgICAgIFRoZSBhcmd1bWVudCBvbmUgaXMgdGhlIG9mZnNldCBvZiBwaHkgbW9kZSBzZWxlY3Rpb24sIHRoZVxcbiAgICAgICBhcmd1bWVudCB0d28gaXMgdGhlIHNoaWZ0IG9mIHBoeSBtb2RlIHNlbGVjdGlvbi5cXG4gXFxuKyAgcG93ZXItZG9tYWluczpcXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbiByZXF1aXJlZDpcXG4gICAtIGNvbXBhdGlibGVcXG4gICAtIHJlZ1xcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWxcXG5pbmRleCA5ODcyNTQ5MDBkMGRhNy4uMjliODc4MDc5ZmYwYzEgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG0zMi1kd21hYy55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG0zMi1kd21hYy55YW1sXFxuQEAgLTEyMSw2ICsxMjEsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgbWluSXRlbXM6IDFcXG4gICAgIG1heEl0ZW1zOiAyXFxuIFxcbisgIHBvd2VyLWRvbWFpbnM6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4gcmVxdWlyZWQ6XFxuICAgLSBjb21wYXRpYmxlXFxuICAgLSBjbG9ja3NcXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90ZXNsYSxmc2QtZXRocW9zLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rlc2xhLGZzZC1ldGhxb3MueWFtbFxcbmluZGV4IGRkNzQ4MWJiMTZlNTk5Li5hZDYzNTUyOWQ2NzZlZCAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rlc2xhLGZzZC1ldGhxb3MueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGVzbGEsZnNkLWV0aHFvcy55YW1sXFxuQEAgLTY3LDYgKzY3LDkgQEAgcHJvcGVydGllczpcXG4gICAgICAgLSByZ21paS1yeGlkXFxuICAgICAgIC0gcmdtaWktdHhpZFxcbiBcXG4rICBwb3dlci1kb21haW5zOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuIHJlcXVpcmVkOlxcbiAgIC0gY29tcGF0aWJsZVxcbiAgIC0gcmVnXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGhlYWQsdGgxNTIwLWdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGhlYWQsdGgxNTIwLWdtYWMueWFtbFxcbmluZGV4IGIzNDkyYTlhYTRlZmZhLi5jODU5ZjhiYjVkNTgyYSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3RoZWFkLHRoMTUyMC1nbWFjLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3RoZWFkLHRoMTUyMC1nbWFjLnlhbWxcXG5AQCAtNzgsNiArNzgsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgaXRlbXM6XFxuICAgICAgIC0gY29uc3Q6IG1hY2lycVxcbiBcXG4rICBwb3dlci1kb21haW5zOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuIHJlcXVpcmVkOlxcbiAgIC0gY2xvY2tzXFxuICAgLSBjbG9jay1uYW1lc1xcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rvc2hpYmEsdmlzY29udGktZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdG9zaGliYSx2aXNjb250aS1kd21hYy55YW1sXFxuaW5kZXggZjBmMzJlMThmYzg1NTAuLmVmYTM5ZWFiMDI1NmExIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdG9zaGliYSx2aXNjb250aS1kd21hYy55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90b3NoaWJhLHZpc2NvbnRpLWR3bWFjLnlhbWxcXG5AQCAtNDgsNiArNDgsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgIGludGVycnVwdC1uYW1lczpcXG4gICAgIGNvbnN0OiBtYWNpcnFcXG4gXFxuKyAgcG93ZXItZG9tYWluczpcXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbiByZXF1aXJlZDpcXG4gICAtIGNvbXBhdGlibGVcXG4gICAtIHJlZ1xcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3Fjb20sc2E4MjU1cC1kd21hYy1zZ21paS1waHkueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeS55YW1sXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOWU4NDZlMzgxNTU1NTFcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9xY29tLHNhODI1NXAtZHdtYWMtc2dtaWktcGh5LnlhbWxcXG5AQCAtMCwwICsxLDUwIEBAXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wIE9SIEJTRC0yLUNsYXVzZSlcXG4rJVlBTUwgMS4yXFxuKy0tLVxcbiskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL3BoeS9xY29tLHNhODI1NXAtZHdtYWMtc2dtaWktcGh5LnlhbWwjXFxuKyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xcbitcXG4rdGl0bGU6IFF1YWxjb21tIFNlckRlcy9TR01JSSBldGhlcm5ldCBQSFkgY29udHJvbGxlciAoZmlybXdhcmUgbWFuYWdlZClcXG4rXFxuK21haW50YWluZXJzOlxcbisgIC0gQmFydG9zeiBHb2xhc3pld3NraSBcXHUwMDNjYnJnbEBrZXJuZWwub3JnXFx1MDAzZVxcbitcXG4rZGVzY3JpcHRpb246XFxuKyAgVGhlIFNlckRlcyBQSFkgc2l0cyBiZXR3ZWVuIHRoZSBNQUMgYW5kIHRoZSBleHRlcm5hbCBQSFkgYW5kIHByb3ZpZGVzXFxuKyAgc2VwYXJhdGUgUnggVHggbGluZXMuXFxuK1xcbitwcm9wZXJ0aWVzOlxcbisgIGNvbXBhdGlibGU6XFxuKyAgICBjb25zdDogcWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeVxcbitcXG4rICByZWc6XFxuKyAgICBpdGVtczpcXG4rICAgICAgLSBkZXNjcmlwdGlvbjogc2VyZGVzXFxuK1xcbisgIHBvd2VyLWRvbWFpbnM6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4rICBwb3dlci1kb21haW4tbmFtZXM6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4rICBcXFwiI3BoeS1jZWxsc1xcXCI6XFxuKyAgICBjb25zdDogMFxcbitcXG4rcmVxdWlyZWQ6XFxuKyAgLSBjb21wYXRpYmxlXFxuKyAgLSByZWdcXG4rICAtIFxcXCIjcGh5LWNlbGxzXFxcIlxcbisgIC0gcG93ZXItZG9tYWluc1xcbisgIC0gcG93ZXItZG9tYWluLW5hbWVzXFxuK1xcbithZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2VcXG4rXFxuK2V4YW1wbGVzOlxcbisgIC0gfFxcbisgICAgcGh5QDg5MDEwMDAge1xcbisgICAgICAgIGNvbXBhdGlibGUgPSBcXFwicWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeVxcXCI7XFxuKyAgICAgICAgcmVnID0gXFx1MDAzYzB4MDg5MDEwMDAgMHhlMTBcXHUwMDNlO1xcbisgICAgICAgICNwaHktY2VsbHMgPSBcXHUwMDNjMFxcdTAwM2U7XFxuKyAgICAgICAgcG93ZXItZG9tYWlucyA9IFxcdTAwM2NcXHUwMDI2c2NtaTdfZHZmcyAwXFx1MDAzZTtcXG4rICAgICAgICBwb3dlci1kb21haW4tbmFtZXMgPSBcXFwic2VyZGVzXFxcIjtcXG4rICAgIH07XFxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcXG5pbmRleCA4MDZiZDJkODBkMTUzNS4uODZlNjdhYTRmYjlkZDEgMTAwNjQ0XFxuLS0tIGEvTUFJTlRBSU5FUlNcXG4rKysgYi9NQUlOVEFJTkVSU1xcbkBAIC0yMjE4NSw2ICsyMjE4NSw3IEBAIEw6XFx0bmV0ZGV2QHZnZXIua2VybmVsLm9yZ1xcbiBMOlxcdGxpbnV4LWFybS1tc21Admdlci5rZXJuZWwub3JnXFxuIFM6XFx0TWFpbnRhaW5lZFxcbiBGOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbFxcbitGOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxzYTgyNTVwLWV0aHFvcy55YW1sXFxuIEY6XFx0ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuY1xcbiBcXG4gUVVBTENPTU0gRkFTVFJQQyBEUklWRVJcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmNcXG5pbmRleCBhYzdkNmQzZTIwNWExYS4uZDM0ZjIwZjg2ODEzOGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmNcXG5AQCAtNSw2ICs1LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9uZXQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcG1fZG9tYWluLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS9waHkuaFxcdTAwM2VcXG4gXFxuQEAgLTgxLDYgKzgyLDggQEBcXG4gXFxuICNkZWZpbmUgU0dNSUlfMTBNX1JYX0NMS19EVkRSXFx0XFx0XFx0MHgzMVxcbiBcXG4rc3RydWN0IHFjb21fZXRocW9zO1xcbitcXG4gc3RydWN0IGV0aHFvc19lbWFjX3BvciB7XFxuIFxcdHVuc2lnbmVkIGludCBvZmZzZXQ7XFxuIFxcdHVuc2lnbmVkIGludCB2YWx1ZTtcXG5AQCAtOTUsNiArOTgsMTMgQEAgc3RydWN0IGV0aHFvc19lbWFjX2RyaXZlcl9kYXRhIHtcXG4gXFx0Y29uc3QgY2hhciAqbGlua19jbGtfbmFtZTtcXG4gXFx0c3RydWN0IGR3bWFjNF9hZGRycyBkd21hYzRfYWRkcnM7XFxuIFxcdGJvb2wgbmVlZHNfc2dtaWlfbG9vcGJhY2s7XFxuK1xcdC8qIEZpeGVkIFBUUCByZWZlcmVuY2UgY2xvY2sgcmF0ZSwgdXNlZCBvbiBTQ01JIHBsYXRmb3JtcyB3aGVyZVxcbitcXHQgKiBmaXJtd2FyZSBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGNsb2NrIHByb3RvY29sIGFsbG93aW5nIGxpbnV4IHRvXFxuK1xcdCAqIHF1ZXJ5IGl0LlxcbitcXHQgKi9cXG4rXFx0dW5zaWduZWQgbG9uZyBwdHBfY2xrX3JhdGU7XFxuK1xcdGludCAoKnNldHVwKShzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcyxcXG4rXFx0XFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KTtcXG4gfTtcXG4gXFxuIHN0cnVjdCBxY29tX2V0aHFvcyB7XFxuQEAgLTEwMywxMiArMTEzLDggQEAgc3RydWN0IHFjb21fZXRocW9zIHtcXG4gXFx0c3RydWN0IGNsayAqbGlua19jbGs7XFxuIFxcdHN0cnVjdCBwaHkgKnNlcmRlc19waHk7XFxuIFxcdHBoeV9pbnRlcmZhY2VfdCBwaHlfbW9kZTtcXG4tXFxuLVxcdGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19wb3IgKnJnbWlpX3BvcjtcXG4tXFx0dW5zaWduZWQgaW50IG51bV9yZ21paV9wb3I7XFxuLVxcdGJvb2wgcmdtaWlfY29uZmlnX2xvb3BiYWNrX2VuO1xcbi1cXHRib29sIGhhc19lbWFjX2dlXzM7XFxuLVxcdGJvb2wgbmVlZHNfc2dtaWlfbG9vcGJhY2s7XFxuK1xcdHN0cnVjdCBkZXZfcG1fZG9tYWluX2xpc3QgKnBkcztcXG4rXFx0Y29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX2RyaXZlcl9kYXRhICpkYXRhO1xcbiB9O1xcbiBcXG4gc3RhdGljIHUzMiByZ21paV9yZWFkbChzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcywgdW5zaWduZWQgaW50IG9mZnNldClcXG5AQCAtMTg5LDggKzE5NSw5IEBAIHN0YXRpYyBpbnQgZXRocW9zX3NldF9jbGtfdHhfcmF0ZSh2b2lkICpic3BfcHJpdiwgc3RydWN0IGNsayAqY2xrX3R4X2ksXFxuIHN0YXRpYyB2b2lkXFxuIHFjb21fZXRocW9zX3NldF9zZ21paV9sb29wYmFjayhzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcywgYm9vbCBlbmFibGUpXFxuIHtcXG4tXFx0aWYgKCFldGhxb3MtXFx1MDAzZW5lZWRzX3NnbWlpX2xvb3BiYWNrIHx8XFxuLVxcdCAgICBldGhxb3MtXFx1MDAzZXBoeV9tb2RlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgpXFxuK1xcdGlmICghZXRocW9zLVxcdTAwM2VkYXRhLVxcdTAwM2VuZWVkc19zZ21paV9sb29wYmFjayB8fFxcbitcXHQgICAgKGV0aHFvcy1cXHUwMDNlcGh5X21vZGUgIT0gUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgIGV0aHFvcy1cXHUwMDNlcGh5X21vZGUgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0cmdtaWlfdXBkYXRlbChldGhxb3MsXFxuQEAgLTIwNCw2ICsyMTEsMTEgQEAgc3RhdGljIHZvaWQgZXRocW9zX3NldF9mdW5jX2Nsa19lbihzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcylcXG4gXFx0cmdtaWlfc2V0bWFzayhldGhxb3MsIFJHTUlJX0NPTkZJR19GVU5DX0NMS19FTiwgUkdNSUlfSU9fTUFDUk9fQ09ORklHKTtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBldGhxb3NfaGxvc19zZXR1cChzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcyxcXG4rXFx0XFx0XFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KTtcXG4rc3RhdGljIGludCBldGhxb3Nfc2NtaV9zZXR1cChzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcyxcXG4rXFx0XFx0XFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KTtcXG4rXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfcG9yIGVtYWNfdjJfM18wX3BvcltdID0ge1xcbiBcXHR7IC5vZmZzZXQgPSBSR01JSV9JT19NQUNST19DT05GSUcsXFx0LnZhbHVlID0gMHgwMEMwMTM0MyB9LFxcbiBcXHR7IC5vZmZzZXQgPSBTRENDX0hDX1JFR19ETExfQ09ORklHLFxcdC52YWx1ZSA9IDB4MjAwNDY0MkMgfSxcXG5AQCAtMjE4LDYgKzIzMCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfZHJpdmVyX2RhdGEgZW1hY192Ml8zXzBfZGF0YSA9IHtcXG4gXFx0Lm51bV9yZ21paV9wb3IgPSBBUlJBWV9TSVpFKGVtYWNfdjJfM18wX3BvciksXFxuIFxcdC5yZ21paV9jb25maWdfbG9vcGJhY2tfZW4gPSB0cnVlLFxcbiBcXHQuaGFzX2VtYWNfZ2VfMyA9IGZhbHNlLFxcbitcXHQuc2V0dXAgPSBldGhxb3NfaGxvc19zZXR1cCxcXG4gfTtcXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfcG9yIGVtYWNfdjJfMV8wX3BvcltdID0ge1xcbkBAIC0yMzQsNiArMjQ3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSBlbWFjX3YyXzFfMF9kYXRhID0ge1xcbiBcXHQubnVtX3JnbWlpX3BvciA9IEFSUkFZX1NJWkUoZW1hY192Ml8xXzBfcG9yKSxcXG4gXFx0LnJnbWlpX2NvbmZpZ19sb29wYmFja19lbiA9IGZhbHNlLFxcbiBcXHQuaGFzX2VtYWNfZ2VfMyA9IGZhbHNlLFxcbitcXHQuc2V0dXAgPSBldGhxb3NfaGxvc19zZXR1cCxcXG4gfTtcXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfcG9yIGVtYWNfdjNfMF8wX3BvcltdID0ge1xcbkBAIC0yNjYsNiArMjgwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSBlbWFjX3YzXzBfMF9kYXRhID0ge1xcbiBcXHRcXHQubXRsX2xvd19jcmVkID0gMHgwMDAwODAyNCxcXG4gXFx0XFx0Lm10bF9sb3dfY3JlZF9vZmZzZXQgPSAweDEwMDAsXFxuIFxcdH0sXFxuK1xcdC5zZXR1cCA9IGV0aHFvc19obG9zX3NldHVwLFxcbiB9O1xcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19wb3IgZW1hY192NF8wXzBfcG9yW10gPSB7XFxuQEAgLTMwMSw2ICszMTYsMzEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSBlbWFjX3Y0XzBfMF9kYXRhID0ge1xcbiBcXHRcXHQubXRsX2xvd19jcmVkID0gMHgwMDAwODAyNCxcXG4gXFx0XFx0Lm10bF9sb3dfY3JlZF9vZmZzZXQgPSAweDEwMDAsXFxuIFxcdH0sXFxuK1xcdC5zZXR1cCA9IGV0aHFvc19obG9zX3NldHVwLFxcbit9O1xcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSBlbWFjX3Y0XzBfMF9zY21pX2RhdGEgPSB7XFxuK1xcdC5oYXNfZW1hY19nZV8zID0gdHJ1ZSxcXG4rXFx0Lm5lZWRzX3NnbWlpX2xvb3BiYWNrID0gdHJ1ZSxcXG4rXFx0LmRtYV9hZGRyX3dpZHRoID0gMzYsXFxuK1xcdC5wdHBfY2xrX3JhdGUgPSAyMzA0MDAwMDAsXFxuK1xcdC5kd21hYzRfYWRkcnMgPSB7XFxuK1xcdFxcdC5kbWFfY2hhbiA9IDB4MDAwMDgxMDAsXFxuK1xcdFxcdC5kbWFfY2hhbl9vZmZzZXQgPSAweDEwMDAsXFxuK1xcdFxcdC5tdGxfY2hhbiA9IDB4MDAwMDgwMDAsXFxuK1xcdFxcdC5tdGxfY2hhbl9vZmZzZXQgPSAweDEwMDAsXFxuK1xcdFxcdC5tdGxfZXRzX2N0cmwgPSAweDAwMDA4MDEwLFxcbitcXHRcXHQubXRsX2V0c19jdHJsX29mZnNldCA9IDB4MTAwMCxcXG4rXFx0XFx0Lm10bF90eHFfd2VpZ2h0ID0gMHgwMDAwODAxOCxcXG4rXFx0XFx0Lm10bF90eHFfd2VpZ2h0X29mZnNldCA9IDB4MTAwMCxcXG4rXFx0XFx0Lm10bF9zZW5kX3NscF9jcmVkID0gMHgwMDAwODAxYyxcXG4rXFx0XFx0Lm10bF9zZW5kX3NscF9jcmVkX29mZnNldCA9IDB4MTAwMCxcXG4rXFx0XFx0Lm10bF9oaWdoX2NyZWQgPSAweDAwMDA4MDIwLFxcbitcXHRcXHQubXRsX2hpZ2hfY3JlZF9vZmZzZXQgPSAweDEwMDAsXFxuK1xcdFxcdC5tdGxfbG93X2NyZWQgPSAweDAwMDA4MDI0LFxcbitcXHRcXHQubXRsX2xvd19jcmVkX29mZnNldCA9IDB4MTAwMCxcXG4rXFx0fSxcXG4rXFx0LnNldHVwID0gZXRocW9zX3NjbWlfc2V0dXAsXFxuIH07XFxuIFxcbiBzdGF0aWMgaW50IGV0aHFvc19kbGxfY29uZmlndXJlKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zKVxcbkBAIC0zMjIsNyArMzYyLDcgQEAgc3RhdGljIGludCBldGhxb3NfZGxsX2NvbmZpZ3VyZShzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcylcXG4gXFx0LyogU2V0IERMTF9FTiAqL1xcbiBcXHRyZ21paV9zZXRtYXNrKGV0aHFvcywgU0RDQ19ETExfQ09ORklHX0RMTF9FTiwgU0RDQ19IQ19SRUdfRExMX0NPTkZJRyk7XFxuIFxcbi1cXHRpZiAoIWV0aHFvcy1cXHUwMDNlaGFzX2VtYWNfZ2VfMykge1xcbitcXHRpZiAoIWV0aHFvcy1cXHUwMDNlZGF0YS1cXHUwMDNlaGFzX2VtYWNfZ2VfMykge1xcbiBcXHRcXHRyZ21paV9jbHJtYXNrKGV0aHFvcywgU0RDQ19ETExfTUNMS19HQVRJTkdfRU4sXFxuIFxcdFxcdFxcdCAgICAgIFNEQ0NfSENfUkVHX0RMTF9DT05GSUcpO1xcbiBcXG5AQCAtMzUyLDcgKzM5Miw3IEBAIHN0YXRpYyBpbnQgZXRocW9zX2RsbF9jb25maWd1cmUoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MpXFxuIFxcdHJnbWlpX3NldG1hc2soZXRocW9zLCBTRENDX0RMTF9DT05GSUcyX0REUl9DQUxfRU4sXFxuIFxcdFxcdCAgICAgIFNEQ0NfSENfUkVHX0RMTF9DT05GSUcyKTtcXG4gXFxuLVxcdGlmICghZXRocW9zLVxcdTAwM2VoYXNfZW1hY19nZV8zKSB7XFxuK1xcdGlmICghZXRocW9zLVxcdTAwM2VkYXRhLVxcdTAwM2VoYXNfZW1hY19nZV8zKSB7XFxuIFxcdFxcdHJnbWlpX2Nscm1hc2soZXRocW9zLCBTRENDX0RMTF9DT05GSUcyX0RMTF9DTE9DS19ESVMsXFxuIFxcdFxcdFxcdCAgICAgIFNEQ0NfSENfUkVHX0RMTF9DT05GSUcyKTtcXG4gXFxuQEAgLTQzMiw3ICs0NzIsNyBAQCBzdGF0aWMgaW50IGV0aHFvc19yZ21paV9tYWNyb19pbml0KHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLCBpbnQgc3BlZWQpXFxuIFxcdHJnbWlpX2Nscm1hc2soZXRocW9zLCBSR01JSV9DT05GSUcyX1JTVkRfQ09ORklHMTUsXFxuIFxcdFxcdCAgICAgIFJHTUlJX0lPX01BQ1JPX0NPTkZJRzIpO1xcbiBcXG4tXFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDAgfHwgZXRocW9zLVxcdTAwM2VoYXNfZW1hY19nZV8zKVxcbitcXHRpZiAoc3BlZWQgPT0gU1BFRURfMTAwMCB8fCBldGhxb3MtXFx1MDAzZWRhdGEtXFx1MDAzZWhhc19lbWFjX2dlXzMpXFxuIFxcdFxcdHJnbWlpX3NldG1hc2soZXRocW9zLCBSR01JSV9DT05GSUcyX1JYX1BST0dfU1dBUCxcXG4gXFx0XFx0XFx0ICAgICAgUkdNSUlfSU9fTUFDUk9fQ09ORklHMik7XFxuIFxcdGVsc2VcXG5AQCAtNDU2LDcgKzQ5Niw3IEBAIHN0YXRpYyBpbnQgZXRocW9zX3JnbWlpX21hY3JvX2luaXQoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MsIGludCBzcGVlZClcXG4gXFx0XFx0ICogaW4gcHJhY3RpY2UgdGhpcyBiZWNvbWVzIFBSR19SQ0xLX0RMWSA9IDUyICogNCAvXFxuIFxcdFxcdCAqICAoMiAqIFJYIGRlbGF5IG5zKVxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0aWYgKGV0aHFvcy1cXHUwMDNlaGFzX2VtYWNfZ2VfMykge1xcbitcXHRcXHRpZiAoZXRocW9zLVxcdTAwM2VkYXRhLVxcdTAwM2VoYXNfZW1hY19nZV8zKSB7XFxuIFxcdFxcdFxcdC8qIDAuOSBucyAqL1xcbiBcXHRcXHRcXHRwcmdfcmNsa19kbHkgPSAxMTU7XFxuIFxcdFxcdH0gZWxzZSB7XFxuQEAgLTQ3Miw3ICs1MTIsNyBAQCBzdGF0aWMgaW50IGV0aHFvc19yZ21paV9tYWNyb19pbml0KHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLCBpbnQgc3BlZWQpXFxuIFxcdFxcdFxcdCAgICAgIFNEQ0NfSENfUkVHX0REUl9DT05GSUcpO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoZXRocW9zLVxcdTAwM2VyZ21paV9jb25maWdfbG9vcGJhY2tfZW4pXFxuK1xcdGlmIChldGhxb3MtXFx1MDAzZWRhdGEtXFx1MDAzZXJnbWlpX2NvbmZpZ19sb29wYmFja19lbilcXG4gXFx0XFx0bG9vcGJhY2sgPSBSR01JSV9DT05GSUdfTE9PUEJBQ0tfRU47XFxuIFxcdGVsc2VcXG4gXFx0XFx0bG9vcGJhY2sgPSAwO1xcbkBAIC00OTUsOSArNTM1LDkgQEAgc3RhdGljIHZvaWQgZXRocW9zX2ZpeF9tYWNfc3BlZWRfcmdtaWkodm9pZCAqYnNwX3ByaXYsXFxuIFxcdGRldiA9IFxcdTAwMjZldGhxb3MtXFx1MDAzZXBkZXYtXFx1MDAzZWRldjtcXG4gXFxuIFxcdC8qIFJlc2V0IHRvIFBPUiB2YWx1ZXMgYW5kIGVuYWJsZSBjbGsgKi9cXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGV0aHFvcy1cXHUwMDNlbnVtX3JnbWlpX3BvcjsgaSsrKVxcbi1cXHRcXHRyZ21paV93cml0ZWwoZXRocW9zLCBldGhxb3MtXFx1MDAzZXJnbWlpX3BvcltpXS52YWx1ZSxcXG4tXFx0XFx0XFx0ICAgICBldGhxb3MtXFx1MDAzZXJnbWlpX3BvcltpXS5vZmZzZXQpO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZXRocW9zLVxcdTAwM2VkYXRhLVxcdTAwM2VudW1fcmdtaWlfcG9yOyBpKyspXFxuK1xcdFxcdHJnbWlpX3dyaXRlbChldGhxb3MsIGV0aHFvcy1cXHUwMDNlZGF0YS1cXHUwMDNlcmdtaWlfcG9yW2ldLnZhbHVlLFxcbitcXHRcXHRcXHQgICAgIGV0aHFvcy1cXHUwMDNlZGF0YS1cXHUwMDNlcmdtaWlfcG9yW2ldLm9mZnNldCk7XFxuIFxcbiBcXHRldGhxb3Nfc2V0X2Z1bmNfY2xrX2VuKGV0aHFvcyk7XFxuIFxcbkBAIC01MTEsNyArNTUxLDcgQEAgc3RhdGljIHZvaWQgZXRocW9zX2ZpeF9tYWNfc3BlZWRfcmdtaWkodm9pZCAqYnNwX3ByaXYsXFxuIFxcdHJnbWlpX3NldG1hc2soZXRocW9zLCBTRENDX0RMTF9DT05GSUdfUEROLFxcbiBcXHRcXHQgICAgICBTRENDX0hDX1JFR19ETExfQ09ORklHKTtcXG4gXFxuLVxcdGlmIChldGhxb3MtXFx1MDAzZWhhc19lbWFjX2dlXzMpIHtcXG4rXFx0aWYgKGV0aHFvcy1cXHUwMDNlZGF0YS1cXHUwMDNlaGFzX2VtYWNfZ2VfMykge1xcbiBcXHRcXHRpZiAoc3BlZWQgPT0gU1BFRURfMTAwMCkge1xcbiBcXHRcXHRcXHRyZ21paV93cml0ZWwoZXRocW9zLCAweDE4MDAwMDAsIFNEQ0NfVEVTVF9DVEwpO1xcbiBcXHRcXHRcXHRyZ21paV93cml0ZWwoZXRocW9zLCAweDJDMDEwODAwLCBTRENDX1VTUl9DVEwpO1xcbkBAIC01MzgsNyArNTc4LDcgQEAgc3RhdGljIHZvaWQgZXRocW9zX2ZpeF9tYWNfc3BlZWRfcmdtaWkodm9pZCAqYnNwX3ByaXYsXFxuIFxcdFxcdFxcdCAgICAgIFNEQ0NfSENfUkVHX0RMTF9DT05GSUcpO1xcbiBcXG4gXFx0XFx0LyogU2V0IFVTUl9DVEwgYml0IDI2IHdpdGggbWFzayBvZiAzIGJpdHMgKi9cXG4tXFx0XFx0aWYgKCFldGhxb3MtXFx1MDAzZWhhc19lbWFjX2dlXzMpXFxuK1xcdFxcdGlmICghZXRocW9zLVxcdTAwM2VkYXRhLVxcdTAwM2VoYXNfZW1hY19nZV8zKVxcbiBcXHRcXHRcXHRyZ21paV91cGRhdGVsKGV0aHFvcywgR0VOTUFTSygyNiwgMjQpLCBCSVQoMjYpLFxcbiBcXHRcXHRcXHRcXHQgICAgICBTRENDX1VTUl9DVEwpO1xcbiBcXG5AQCAtNjAxLDEwICs2NDEsMTkgQEAgc3RhdGljIGludCBxY29tX2V0aHFvc19zZXJkZXNfcG93ZXJ1cChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdm9pZCAqcHJpdilcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuK1xcdHJldCA9IHBoeV9zZXRfbW9kZV9leHQoZXRocW9zLVxcdTAwM2VzZXJkZXNfcGh5LCBQSFlfTU9ERV9FVEhFUk5FVCxcXG4rXFx0XFx0XFx0ICAgICAgIGV0aHFvcy1cXHUwMDNlcGh5X21vZGUpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIGVycl9vdXQ7XFxuK1xcbiBcXHRyZXQgPSBwaHlfcG93ZXJfb24oZXRocW9zLVxcdTAwM2VzZXJkZXNfcGh5KTtcXG4gXFx0aWYgKHJldClcXG4tXFx0XFx0cGh5X2V4aXQoZXRocW9zLVxcdTAwM2VzZXJkZXNfcGh5KTtcXG4rXFx0XFx0Z290byBlcnJfb3V0O1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuIFxcbitlcnJfb3V0OlxcbitcXHRwaHlfZXhpdChldGhxb3MtXFx1MDAzZXNlcmRlc19waHkpO1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbkBAIC02MjMsNiArNjcyLDEyIEBAIHN0YXRpYyBpbnQgZXRocW9zX21hY19maW5pc2hfc2VyZGVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICpwcml2LFxcbiBcXHRzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcyA9IHByaXY7XFxuIFxcdGludCByZXQgPSAwO1xcbiBcXG4rXFx0LyogVGhlIGludGVyZmFjZSBtb2RlIGlzIG9ubHkga25vd24gb25jZSBwaHlsaW5rIGhhcyByZXNvbHZlZCBpdCBhbmRcXG4rXFx0ICogbWF5IGNoYW5nZSBhdCBydW50aW1lLCBzbyBrZWVwIGl0IGluIHN5bmMgZm9yIGxhdGVyXFxuK1xcdCAqIHNlcmRlc19wb3dlcnVwKCkvc2VyZGVzX3Bvd2VyZG93bigpIGNhbGxzLlxcbitcXHQgKi9cXG4rXFx0ZXRocW9zLVxcdTAwM2VwaHlfbW9kZSA9IGludGVyZmFjZTtcXG4rXFxuIFxcdHFjb21fZXRocW9zX3NldF9zZ21paV9sb29wYmFjayhldGhxb3MsIGZhbHNlKTtcXG4gXFxuIFxcdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJIHx8XFxuQEAgLTY4MSw2ICs3MzYsMTE1IEBAIHN0YXRpYyB2b2lkIGV0aHFvc19wdHBfY2xrX2ZyZXFfY29uZmlnKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gXFx0bmV0ZGV2X2RiZyhwcml2LVxcdTAwM2VkZXYsIFxcXCJQVFAgcmF0ZSAlbHVcXFxcblxcXCIsIHBsYXRfZGF0LVxcdTAwM2VjbGtfcHRwX3JhdGUpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGV0aHFvc19obG9zX3NldHVwKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLFxcbitcXHRcXHRcXHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQpXFxuK3tcXG4rXFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IGV0aHFvcy1cXHUwMDNlcGRldjtcXG4rXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdGV0aHFvcy1cXHUwMDNlcmdtaWlfYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgXFxcInJnbWlpXFxcIik7XFxuK1xcdGlmIChJU19FUlIoZXRocW9zLVxcdTAwM2VyZ21paV9iYXNlKSlcXG4rXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGV0aHFvcy1cXHUwMDNlcmdtaWlfYmFzZSksXFxuK1xcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBtYXAgcmdtaWkgcmVzb3VyY2VcXFxcblxcXCIpO1xcbitcXG4rXFx0ZXRocW9zLVxcdTAwM2VsaW5rX2NsayA9IGRldm1fY2xrX2dldChkZXYsIGV0aHFvcy1cXHUwMDNlZGF0YS1cXHUwMDNlbGlua19jbGtfbmFtZSA/OiBcXFwicmdtaWlcXFwiKTtcXG4rXFx0aWYgKElTX0VSUihldGhxb3MtXFx1MDAzZWxpbmtfY2xrKSlcXG4rXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGV0aHFvcy1cXHUwMDNlbGlua19jbGspLFxcbitcXHRcXHRcXHRcXHQgICAgIFxcXCJGYWlsZWQgdG8gZ2V0IGxpbmtfY2xrXFxcXG5cXFwiKTtcXG4rXFxuK1xcdHBsYXRfZGF0LVxcdTAwM2VjbGtzX2NvbmZpZyA9IGV0aHFvc19jbGtzX2NvbmZpZztcXG4rXFxuK1xcdHJldCA9IGV0aHFvc19jbGtzX2NvbmZpZyhldGhxb3MsIHRydWUpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgZXRocW9zX2Nsa3NfZGlzYWJsZSwgZXRocW9zKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdGV0aHFvc19zZXRfY2xrX3R4X3JhdGUoZXRocW9zLCBOVUxMLCBwbGF0X2RhdC1cXHUwMDNlcGh5X2ludGVyZmFjZSwgU1BFRURfMTAwMCk7XFxuK1xcdHFjb21fZXRocW9zX3NldF9zZ21paV9sb29wYmFjayhldGhxb3MsIHRydWUpO1xcbitcXHRldGhxb3Nfc2V0X2Z1bmNfY2xrX2VuKGV0aHFvcyk7XFxuK1xcbitcXHRzd2l0Y2ggKGV0aHFvcy1cXHUwMDNlcGh5X21vZGUpIHtcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX0lEOlxcbitcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEOlxcbitcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEOlxcbitcXHRcXHRwbGF0X2RhdC1cXHUwMDNlZml4X21hY19zcGVlZCA9IGV0aHFvc19maXhfbWFjX3NwZWVkX3JnbWlpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYOlxcbitcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG4rXFx0XFx0cGxhdF9kYXQtXFx1MDAzZWZpeF9tYWNfc3BlZWQgPSBldGhxb3NfZml4X21hY19zcGVlZF9zZ21paTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcbitcXHRwbGF0X2RhdC1cXHUwMDNlc2V0X2Nsa190eF9yYXRlID0gZXRocW9zX3NldF9jbGtfdHhfcmF0ZTtcXG4rXFx0cGxhdF9kYXQtXFx1MDAzZWR1bXBfZGVidWdfcmVncyA9IHJnbWlpX2R1bXA7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGV0aHFvc19zY21pX3BkX25hbWVzW10gPSB7IFxcXCJjb3JlXFxcIiwgXFxcIm1kaW9cXFwiIH07XFxuK1xcbitzdGF0aWMgaW50IGV0aHFvc19zY21pX3NldHVwKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLFxcbitcXHRcXHRcXHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQpXFxuK3tcXG4rXFx0Y29uc3Qgc3RydWN0IGRldl9wbV9kb21haW5fYXR0YWNoX2RhdGEgcGRfZGF0YSA9IHtcXG4rXFx0XFx0LnBkX25hbWVzXFx0PSBldGhxb3Nfc2NtaV9wZF9uYW1lcyxcXG4rXFx0XFx0Lm51bV9wZF9uYW1lc1xcdD0gQVJSQVlfU0laRShldGhxb3Nfc2NtaV9wZF9uYW1lcyksXFxuK1xcdFxcdC5wZF9mbGFnc1xcdD0gUERfRkxBR19ERVZfTElOS19PTixcXG4rXFx0fTtcXG4rXFxuK1xcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSBldGhxb3MtXFx1MDAzZXBkZXY7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRyZXQgPSBkZXZtX3BtX2RvbWFpbl9hdHRhY2hfbGlzdChkZXYsIFxcdTAwMjZwZF9kYXRhLCBcXHUwMDI2ZXRocW9zLVxcdTAwM2VwZHMpO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsXFxuK1xcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBhdHRhY2ggcG93ZXIgZG9tYWluc1xcXFxuXFxcIik7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBUaGUgU2VyRGVzIGxhbmUsIGl0cyBjbG9ja3MgYW5kIHRoZSBNQUMgQVhJL0FIQiBjbG9ja3MgYXJlIG93bmVkIGJ5XFxuK1xcdCAqIGZpcm13YXJlIGFuZCBicm91Z2h0IHVwIHRocm91Z2ggdGhlIFNDTUkgcG93ZXIgZG9tYWlucyBhYm92ZS4gVGhlXFxuK1xcdCAqIE1BQyB3cmFwcGVyIGl0c2VsZiwgaG93ZXZlciBpcyBpbiB0aGUga2VybmVsJ3MgcmVnaXN0ZXIgc3BhY2U6IHRoZVxcbitcXHQgKiBtdXggdGhhdCBmZWVkcyB0aGUgU2VyRGVzIHJlY292ZXJlZCBSWCBjbG9jayBpbnRvIHRoZSBNQUMncyBjbGtfcnhfaVxcbitcXHQgKiBpcyBub3QgY29uZmlndXJlZCBieSBmaXJtd2FyZS4gV2l0aG91dCBpdCwgY2xrX3J4X2kgbmV2ZXIgdG9nZ2xlc1xcbitcXHQgKiBhbmQgdGhlIERNQSBTVy1yZXNldCBwb2xsZWQgaW4gZHdtYWM0X2RtYV9yZXNldCgpIG5ldmVyIGNvbXBsZXRlcy5cXG4rXFx0ICpcXG4rXFx0ICogTWFwIHRoZSB3cmFwcGVyIGFuZCBwcm9ncmFtIHRoZSBzYW1lIGxvb3BiYWNrL2Z1bmN0aW9uYWwgY2xvY2sgYml0c1xcbitcXHQgKiB0aGUgbm9uLWZpcm13YXJlIHBsYXRmb3JtcyByZWx5IG9uIChzZWUgZXRocW9zX2Nsa3NfY29uZmlnKSBzbyB0aGVcXG4rXFx0ICogUlggY2xvY2sgaXMgcHJlc2VudCBieSB0aGUgdGltZSB0aGUgRE1BIGVuZ2luZSBpcyByZXNldC5cXG4rXFx0ICovXFxuK1xcdGV0aHFvcy1cXHUwMDNlcmdtaWlfYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgXFxcInJnbWlpXFxcIik7XFxuK1xcdGlmIChJU19FUlIoZXRocW9zLVxcdTAwM2VyZ21paV9iYXNlKSlcXG4rXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGV0aHFvcy1cXHUwMDNlcmdtaWlfYmFzZSksXFxuK1xcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBtYXAgcmdtaWkgcmVzb3VyY2VcXFxcblxcXCIpO1xcbitcXG4rXFx0LypcXG4rXFx0ICogUnVuIG9uIGV2ZXJ5IHJ1bnRpbWUgcmVzdW1lLCB3aGljaCBzdG1tYWMgcGVyZm9ybXMgYWZ0ZXIgdGhlIHBvd2VyXFxuK1xcdCAqIGRvbWFpbnMgYXJlIG9uIGJ1dCBiZWZvcmUgc2VyZGVzX3Bvd2VydXAoKSBhbmQgdGhlIERNQSByZXNldCwgc28gdGhlXFxuK1xcdCAqIHdyYXBwZXIgaXMgYWx3YXlzIGNvbmZpZ3VyZWQgYWhlYWQgb2YgdGhlIHJlc2V0LlxcbitcXHQgKi9cXG4rXFx0cGxhdF9kYXQtXFx1MDAzZWNsa3NfY29uZmlnID0gZXRocW9zX2Nsa3NfY29uZmlnO1xcbitcXHRwbGF0X2RhdC1cXHUwMDNlY2xrX3B0cF9yYXRlID0gZXRocW9zLVxcdTAwM2VkYXRhLVxcdTAwM2VwdHBfY2xrX3JhdGU7XFxuK1xcbitcXHRzd2l0Y2ggKGV0aHFvcy1cXHUwMDNlcGh5X21vZGUpIHtcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYOlxcbitcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG4rXFx0XFx0cGxhdF9kYXQtXFx1MDAzZWZpeF9tYWNfc3BlZWQgPSBldGhxb3NfZml4X21hY19zcGVlZF9zZ21paTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gc3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZTtcXG5AQCAtNzAyLDIzICs4NjYsMjAgQEAgc3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRcXHRcXHRcXHQgICAgIFxcXCJkdCBjb25maWd1cmF0aW9uIGZhaWxlZFxcXFxuXFxcIik7XFxuIFxcdH1cXG4gXFxuLVxcdHBsYXRfZGF0LVxcdTAwM2VjbGtzX2NvbmZpZyA9IGV0aHFvc19jbGtzX2NvbmZpZztcXG4tXFxuIFxcdGV0aHFvcyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqZXRocW9zKSwgR0ZQX0tFUk5FTCk7XFxuIFxcdGlmICghZXRocW9zKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuIFxcdGV0aHFvcy1cXHUwMDNlcGh5X21vZGUgPSBwbGF0X2RhdC1cXHUwMDNlcGh5X2ludGVyZmFjZTtcXG4rXFxuIFxcdHN3aXRjaCAoZXRocW9zLVxcdTAwM2VwaHlfbW9kZSkge1xcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfSUQ6XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQ6XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RYSUQ6XFxuLVxcdFxcdHBsYXRfZGF0LVxcdTAwM2VmaXhfbWFjX3NwZWVkID0gZXRocW9zX2ZpeF9tYWNfc3BlZWRfcmdtaWk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbi1cXHRcXHRwbGF0X2RhdC1cXHUwMDNlZml4X21hY19zcGVlZCA9IGV0aHFvc19maXhfbWFjX3NwZWVkX3NnbWlpO1xcbiBcXHRcXHRwbGF0X2RhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGV0aHFvc19tYWNfZmluaXNoX3NlcmRlcztcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuQEAgLTcyOCwyOCArODg5LDEzIEBAIHN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0fVxcbiBcXG4gXFx0ZXRocW9zLVxcdTAwM2VwZGV2ID0gcGRldjtcXG4tXFx0ZXRocW9zLVxcdTAwM2VyZ21paV9iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlX2J5bmFtZShwZGV2LCBcXFwicmdtaWlcXFwiKTtcXG4tXFx0aWYgKElTX0VSUihldGhxb3MtXFx1MDAzZXJnbWlpX2Jhc2UpKVxcbi1cXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZXRocW9zLVxcdTAwM2VyZ21paV9iYXNlKSxcXG4tXFx0XFx0XFx0XFx0ICAgICBcXFwiRmFpbGVkIHRvIG1hcCByZ21paSByZXNvdXJjZVxcXFxuXFxcIik7XFxuLVxcbiBcXHRkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuLVxcdGV0aHFvcy1cXHUwMDNlcmdtaWlfcG9yID0gZGF0YS1cXHUwMDNlcmdtaWlfcG9yO1xcbi1cXHRldGhxb3MtXFx1MDAzZW51bV9yZ21paV9wb3IgPSBkYXRhLVxcdTAwM2VudW1fcmdtaWlfcG9yO1xcbi1cXHRldGhxb3MtXFx1MDAzZXJnbWlpX2NvbmZpZ19sb29wYmFja19lbiA9IGRhdGEtXFx1MDAzZXJnbWlpX2NvbmZpZ19sb29wYmFja19lbjtcXG4tXFx0ZXRocW9zLVxcdTAwM2VoYXNfZW1hY19nZV8zID0gZGF0YS1cXHUwMDNlaGFzX2VtYWNfZ2VfMztcXG4tXFx0ZXRocW9zLVxcdTAwM2VuZWVkc19zZ21paV9sb29wYmFjayA9IGRhdGEtXFx1MDAzZW5lZWRzX3NnbWlpX2xvb3BiYWNrO1xcbitcXHRldGhxb3MtXFx1MDAzZWRhdGEgPSBkYXRhO1xcbiBcXG4tXFx0ZXRocW9zLVxcdTAwM2VsaW5rX2NsayA9IGRldm1fY2xrX2dldChkZXYsIGRhdGEtXFx1MDAzZWxpbmtfY2xrX25hbWUgPzogXFxcInJnbWlpXFxcIik7XFxuLVxcdGlmIChJU19FUlIoZXRocW9zLVxcdTAwM2VsaW5rX2NsaykpXFxuLVxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihldGhxb3MtXFx1MDAzZWxpbmtfY2xrKSxcXG4tXFx0XFx0XFx0XFx0ICAgICBcXFwiRmFpbGVkIHRvIGdldCBsaW5rX2Nsa1xcXFxuXFxcIik7XFxuK1xcdGlmIChXQVJOX09OKCFkYXRhLVxcdTAwM2VzZXR1cCkpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4tXFx0cmV0ID0gZXRocW9zX2Nsa3NfY29uZmlnKGV0aHFvcywgdHJ1ZSk7XFxuLVxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuLVxcbi1cXHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCBldGhxb3NfY2xrc19kaXNhYmxlLCBldGhxb3MpO1xcbitcXHRyZXQgPSBkYXRhLVxcdTAwM2VzZXR1cChldGhxb3MsIHBsYXRfZGF0KTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuQEAgLTc1OCwyNCArOTA0LDExIEBAIHN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGV0aHFvcy1cXHUwMDNlc2VyZGVzX3BoeSksXFxuIFxcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBnZXQgc2VyZGVzIHBoeVxcXFxuXFxcIik7XFxuIFxcbi1cXHRldGhxb3Nfc2V0X2Nsa190eF9yYXRlKGV0aHFvcywgTlVMTCwgcGxhdF9kYXQtXFx1MDAzZXBoeV9pbnRlcmZhY2UsXFxuLVxcdFxcdFxcdCAgICAgICBTUEVFRF8xMDAwKTtcXG4tXFxuLVxcdHFjb21fZXRocW9zX3NldF9zZ21paV9sb29wYmFjayhldGhxb3MsIHRydWUpO1xcbi1cXHRldGhxb3Nfc2V0X2Z1bmNfY2xrX2VuKGV0aHFvcyk7XFxuLVxcbi1cXHQvKiBUaGUgY2xvY2tzIGFyZSBjb250cm9sbGVkIGJ5IGZpcm13YXJlLCBzbyB3ZSBkb24ndCBrbm93IGZvciBjZXJ0YWluXFxuLVxcdCAqIHdoYXQgY2xvY2sgcmF0ZSBpcyBiZWluZyB1c2VkLiBIYXJkd2FyZSBkb2N1bWVudGF0aW9uIG1lbnRpb25zIHRoYXRcXG4tXFx0ICogdGhlIEFIQiBzbGF2ZSBjbG9jayB3aWxsIGJlIGluIHRoZSByYW5nZSBvZiA1MCB0byAxMDBNSHosIHdoaWNoXFxuLVxcdCAqIGVxdWF0ZXMgdG8gYSBNREMgYmV0d2VlbiAxLjE5IGFuZCAyLjM4TUh6Llxcbi1cXHQgKi9cXG4gXFx0cGxhdF9kYXQtXFx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzYwXzEwME07XFxuIFxcdHBsYXRfZGF0LVxcdTAwM2Vic3BfcHJpdiA9IGV0aHFvcztcXG4tXFx0cGxhdF9kYXQtXFx1MDAzZXNldF9jbGtfdHhfcmF0ZSA9IGV0aHFvc19zZXRfY2xrX3R4X3JhdGU7XFxuLVxcdHBsYXRfZGF0LVxcdTAwM2VkdW1wX2RlYnVnX3JlZ3MgPSByZ21paV9kdW1wO1xcbiBcXHRwbGF0X2RhdC1cXHUwMDNlcHRwX2Nsa19mcmVxX2NvbmZpZyA9IGV0aHFvc19wdHBfY2xrX2ZyZXFfY29uZmlnO1xcbiBcXHRwbGF0X2RhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtcXG4tXFx0aWYgKGV0aHFvcy1cXHUwMDNlaGFzX2VtYWNfZ2VfMylcXG4rXFx0aWYgKGRhdGEtXFx1MDAzZWhhc19lbWFjX2dlXzMpXFxuIFxcdFxcdHBsYXRfZGF0LVxcdTAwM2Vkd21hYzRfYWRkcnMgPSBcXHUwMDI2ZGF0YS1cXHUwMDNlZHdtYWM0X2FkZHJzO1xcbiBcXHRwbGF0X2RhdC1cXHUwMDNlcG10ID0gdHJ1ZTtcXG4gXFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChucCwgXFxcInNucHMsdHNvXFxcIikpXFxuQEAgLTc5OSw2ICs5MzIsNyBAQCBzdGF0aWMgaW50IHFjb21fZXRocW9zX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBxY29tX2V0aHFvc19tYXRjaFtdID0ge1xcbiBcXHR7IC5jb21wYXRpYmxlID0gXFxcInFjb20scWNzNDA0LWV0aHFvc1xcXCIsIC5kYXRhID0gXFx1MDAyNmVtYWNfdjJfM18wX2RhdGF9LFxcbitcXHR7IC5jb21wYXRpYmxlID0gXFxcInFjb20sc2E4MjU1cC1ldGhxb3NcXFwiLCAuZGF0YSA9IFxcdTAwMjZlbWFjX3Y0XzBfMF9zY21pX2RhdGF9LFxcbiBcXHR7IC5jb21wYXRpYmxlID0gXFxcInFjb20sc2E4Nzc1cC1ldGhxb3NcXFwiLCAuZGF0YSA9IFxcdTAwMjZlbWFjX3Y0XzBfMF9kYXRhfSxcXG4gXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJxY29tLHNjODI4MHhwLWV0aHFvc1xcXCIsIC5kYXRhID0gXFx1MDAyNmVtYWNfdjNfMF8wX2RhdGF9LFxcbiBcXHR7IC5jb21wYXRpYmxlID0gXFxcInFjb20sc204MTUwLWV0aHFvc1xcXCIsIC5kYXRhID0gXFx1MDAyNmVtYWNfdjJfMV8wX2RhdGF9LFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uY1xcbmluZGV4IGU5NWQzOTFhNmRjMjMzLi5iNzIwZTRlOTAyOGNjMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uY1xcbkBAIC01NDQsNyArNTQ0LDcgQEAgc3RhdGljIGludCBhcXJfZ2VuMV9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4tXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWxpbmsgfHwgcGh5ZGV2LVxcdTAwM2VhdXRvbmVnID09IEFVVE9ORUdfRElTQUJMRSlcXG4rXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWxpbmspXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0LyogVGhlIHN0YXR1cyByZWdpc3RlciBpcyBub3QgaW1tZWRpYXRlbHkgY29ycmVjdCBvbiBsaW5lIHNpZGUgbGluayB1cC5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcXVhbGNvbW0vS2NvbmZpZyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL0tjb25maWdcXG5pbmRleCA2MGEwZWFkMTI3ZmE5Zi4uYTdjZjM0OGY2YTdhYTEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9waHkvcXVhbGNvbW0vS2NvbmZpZ1xcbisrKyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL0tjb25maWdcXG5AQCAtMjMyLDMgKzIzMiwxNCBAQCBjb25maWcgUEhZX1FDT01fU0dNSUlfRVRIXFxuIFxcdGhlbHBcXG4gXFx0ICBFbmFibGUgdGhpcyB0byBzdXBwb3J0IHRoZSBpbnRlcm5hbCBTZXJEZXMvU0dNSUkgUEhZIG9uIHZhcmlvdXNcXG4gXFx0ICBRdWFsY29tbSBjaGlwc2V0cy5cXG4rXFxuK2NvbmZpZyBQSFlfUUNPTV9TR01JSV9FVEhfU0NNSVxcbitcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gRFdNQUMgU0dNSUkgU2VyRGVzL1BIWSBkcml2ZXIgKGZpcm13YXJlIG1hbmFnZWQpXFxcIlxcbitcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1FDT00gfHwgQ09NUElMRV9URVNUKVxcbitcXHRzZWxlY3QgR0VORVJJQ19QSFlcXG4rXFx0c2VsZWN0IFBNXFxuK1xcdHNlbGVjdCBQTV9HRU5FUklDX0RPTUFJTlNcXG4rXFx0aGVscFxcbitcXHQgIEVuYWJsZSB0aGlzIHRvIHN1cHBvcnQgdGhlIGludGVybmFsIFNlckRlcy9TR01JSSBQSFkgb24gUXVhbGNvbW1cXG4rXFx0ICBjaGlwc2V0cyB3aGVyZSB0aGUgU2VyRGVzIGhhcmR3YXJlIChjbG9ja3MgYW5kIHJlZ2lzdGVycykgaXMgb3duZWRcXG4rXFx0ICBieSB0aGUgZmlybXdhcmUuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L3F1YWxjb21tL01ha2VmaWxlIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vTWFrZWZpbGVcXG5pbmRleCBiNzFhNmEwYmVkM2YxNC4uMDMyZTU4MmYyZTFhZjkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9waHkvcXVhbGNvbW0vTWFrZWZpbGVcXG4rKysgYi9kcml2ZXJzL3BoeS9xdWFsY29tbS9NYWtlZmlsZVxcbkBAIC0yNSwzICsyNSw0IEBAIG9iai0kKENPTkZJR19QSFlfUUNPTV9VU0JfU1MpXFx0XFx0Kz0gcGh5LXFjb20tdXNiLXNzLm9cXG4gb2JqLSQoQ09ORklHX1BIWV9RQ09NX1VTQl9TTlBTX0ZFTVRPX1YyKSs9IHBoeS1xY29tLXNucHMtZmVtdG8tdjIub1xcbiBvYmotJChDT05GSUdfUEhZX1FDT01fSVBRODA2WF9VU0IpXFx0Kz0gcGh5LXFjb20taXBxODA2eC11c2Iub1xcbiBvYmotJChDT05GSUdfUEhZX1FDT01fU0dNSUlfRVRIKVxcdCs9IHBoeS1xY29tLXNnbWlpLWV0aC5vXFxuK29iai0kKENPTkZJR19QSFlfUUNPTV9TR01JSV9FVEhfU0NNSSlcXHQrPSBwaHktcWNvbS1zZ21paS1ldGgtc2NtaS5vXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLXNnbWlpLWV0aC1zY21pLmMgYi9kcml2ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS1zZ21paS1ldGgtc2NtaS5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uYWE3Y2U5MzkzYjI4NTNcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tc2dtaWktZXRoLXNjbWkuY1xcbkBAIC0wLDAgKzEsMTY1IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4rLypcXG4rICogQ29weXJpZ2h0IChjKSBRdWFsY29tbSBUZWNobm9sb2dpZXMsIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXFxuKyAqXFxuKyAqIEZpcm13YXJlLW1hbmFnZWQgdmFyaWFudCBvZiB0aGUgUXVhbGNvbW0gRFdNQUMgU0dNSUkgU2VyRGVzL1BIWSBkcml2ZXIuXFxuKyAqL1xcbitcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RlbGF5LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZXZpY2UtaWQvb2YuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V0aHRvb2wuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5L3BoeS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wbV9kb21haW4uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFxcdTAwM2VcXG4rXFxuK3N0cnVjdCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pIHtcXG4rXFx0dW5zaWduZWQgaW50IHBlcmZfc3RhdGU7XFxuK307XFxuK1xcbitzdGF0aWMgaW50IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfcG93ZXJfb24oc3RydWN0IHBoeSAqcGh5KVxcbit7XFxuK1xcdHN0cnVjdCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pICpwcml2ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IHBoeS1cXHUwMDNlZGV2LnBhcmVudDtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoZGV2KTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldCA9IGRldl9wbV9nZW5wZF9zZXRfcGVyZm9ybWFuY2Vfc3RhdGUoZGV2LCBwcml2LVxcdTAwM2VwZXJmX3N0YXRlKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRwbV9ydW50aW1lX3B1dChkZXYpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHR1c2xlZXBfcmFuZ2UoNTAwMCwgMTAwMDApO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9wb3dlcl9vZmYoc3RydWN0IHBoeSAqcGh5KVxcbit7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IHBoeS1cXHUwMDNlZGV2LnBhcmVudDtcXG4rXFxuK1xcdGRldl9wbV9nZW5wZF9zZXRfcGVyZm9ybWFuY2Vfc3RhdGUoZGV2LCAwKTtcXG4rXFx0cG1fcnVudGltZV9wdXQoZGV2KTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfdmFsaWRhdGUoc3RydWN0IHBoeSAqcGh5LCBlbnVtIHBoeV9tb2RlIG1vZGUsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIGludCBzdWJtb2RlLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICB1bmlvbiBwaHlfY29uZmlndXJlX29wdHMgKm9wdHMpXFxuK3tcXG4rXFx0aWYgKG1vZGUgIT0gUEhZX01PREVfRVRIRVJORVQpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0c3dpdGNoIChzdWJtb2RlKSB7XFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbitcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg6XFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWDpcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9zZXRfbW9kZShzdHJ1Y3QgcGh5ICpwaHksIGVudW0gcGh5X21vZGUgbW9kZSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgaW50IHN1Ym1vZGUpXFxuK3tcXG4rXFx0c3RydWN0IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWkgKnByaXYgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTtcXG4rXFx0c3RydWN0IGRldmljZSAqZGV2ID0gcGh5LVxcdTAwM2VkZXYucGFyZW50O1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cmV0ID0gcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV92YWxpZGF0ZShwaHksIG1vZGUsIHN1Ym1vZGUsIE5VTEwpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0cHJpdi1cXHUwMDNlcGVyZl9zdGF0ZSA9IChzdWJtb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgpID9cXG4rXFx0XFx0XFx0ICAgU1BFRURfMjUwMCA6IFNQRUVEXzEwMDA7XFxuK1xcbitcXHRpZiAocGh5LVxcdTAwM2Vwb3dlcl9jb3VudCA9PSAwKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHJldHVybiBkZXZfcG1fZ2VucGRfc2V0X3BlcmZvcm1hbmNlX3N0YXRlKGRldiwgcHJpdi1cXHUwMDNlcGVyZl9zdGF0ZSk7XFxuK31cXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5X29wcyBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX29wcyA9IHtcXG4rXFx0LnBvd2VyX29uXFx0PSBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Bvd2VyX29uLFxcbitcXHQucG93ZXJfb2ZmXFx0PSBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Bvd2VyX29mZixcXG4rXFx0LnNldF9tb2RlXFx0PSBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3NldF9tb2RlLFxcbitcXHQudmFsaWRhdGVcXHQ9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfdmFsaWRhdGUsXFxuK1xcdC5vd25lclxcdFxcdD0gVEhJU19NT0RVTEUsXFxuK307XFxuK1xcbitzdGF0aWMgdm9pZCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3J1bnRpbWVfZGlzYWJsZSh2b2lkICpkYXRhKVxcbit7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGRhdGE7XFxuK1xcbitcXHRwbV9ydW50aW1lX2Rpc2FibGUoZGV2KTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuK3tcXG4rXFx0c3RydWN0IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWkgKnByaXY7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuK1xcdHN0cnVjdCBwaHlfcHJvdmlkZXIgKnByb3ZpZGVyO1xcbitcXHRzdHJ1Y3QgcGh5ICpwaHk7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghcHJpdilcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRwcml2LVxcdTAwM2VwZXJmX3N0YXRlID0gU1BFRURfMTAwMDtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIEVuYWJsZSBydW50aW1lIFBNIG9uIHRoZSBwcm92aWRlciBiZWZvcmUgY3JlYXRpbmcgdGhlIFBIWSBzbyB0aGF0IHRoZVxcbitcXHQgKiBQSFkgY29yZSBlbmFibGVzIHJ1bnRpbWUgUE0gb24gdGhlIFBIWSBkZXZpY2UgdG9vLiBUaGUgc2luZ2xlIFNDTUlcXG4rXFx0ICogcG93ZXIgZG9tYWluIGhhcyBhbHJlYWR5IGJlZW4gYXR0YWNoZWQgdG8gdGhpcyBkZXZpY2UgYnkgdGhlIGRyaXZlclxcbitcXHQgKiBjb3JlLCBzbyBydW50aW1lIFBNIHZvdGVzIHByb3BhZ2F0ZSB0byBmaXJtd2FyZSB0aHJvdWdoIHRoZSBnZW5wZFxcbitcXHQgKiBkZXZpY2UgbGluay4gTm8gcmVnaXN0ZXIgb3IgY2xvY2sgYWNjZXNzIGlzIGRvbmUgaGVyZSAtIGZpcm13YXJlIG93bnNcXG4rXFx0ICogdGhlIFNlckRlcy5cXG4rXFx0ICovXFxuK1xcdHBtX3J1bnRpbWVfZW5hYmxlKGRldik7XFxuK1xcbitcXHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3J1bnRpbWVfZGlzYWJsZSwgZGV2KTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHBoeSA9IGRldm1fcGh5X2NyZWF0ZShkZXYsIE5VTEwsIFxcdTAwMjZxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX29wcyk7XFxuK1xcdGlmIChJU19FUlIocGh5KSlcXG4rXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHBoeSksIFxcXCJmYWlsZWQgdG8gY3JlYXRlIHRoZSBwaHlcXFxcblxcXCIpO1xcbitcXG4rXFx0cGh5X3NldF9kcnZkYXRhKHBoeSwgcHJpdik7XFxuK1xcbitcXHRwcm92aWRlciA9IGRldm1fb2ZfcGh5X3Byb3ZpZGVyX3JlZ2lzdGVyKGRldiwgb2ZfcGh5X3NpbXBsZV94bGF0ZSk7XFxuK1xcdGlmIChJU19FUlIocHJvdmlkZXIpKVxcbitcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJvdmlkZXIpLFxcbitcXHRcXHRcXHRcXHQgICAgIFxcXCJmYWlsZWQgdG8gcmVnaXN0ZXIgdGhlIFBIWSBwcm92aWRlclxcXFxuXFxcIik7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9vZl9tYXRjaFtdID0ge1xcbitcXHR7IC5jb21wYXRpYmxlID0gXFxcInFjb20sc2E4MjU1cC1kd21hYy1zZ21paS1waHlcXFwiIH0sXFxuK1xcdHsgfVxcbit9O1xcbitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX29mX21hdGNoKTtcXG4rXFxuK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfZHJpdmVyID0ge1xcbitcXHQucHJvYmVcXHQ9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfcHJvYmUsXFxuK1xcdC5kcml2ZXIgPSB7XFxuK1xcdFxcdC5uYW1lID0gXFxcInFjb20tZHdtYWMtc2dtaWktcGh5LXNjbWlcXFwiLFxcbitcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX29mX21hdGNoLFxcbitcXHR9LFxcbit9O1xcbittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfZHJpdmVyKTtcXG4rXFxuK01PRFVMRV9ERVNDUklQVElPTihcXFwiUXVhbGNvbW0gRFdNQUMgU0dNSUkgUEhZIGRyaXZlciAoZmlybXdhcmUgbWFuYWdlZClcXFwiKTtcXG4rTU9EVUxFX0FVVEhPUihcXFwiQmFydG9zeiBHb2xhc3pld3NraSBcXHUwMDNjYmFydG9zei5nb2xhc3pld3NraUBvc3MucXVhbGNvbW0uY29tXFx1MDAzZVxcXCIpO1xcbitNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE3OjMzOjIzLjYzMjgzNDYxMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjMyOTY1MDg0ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBwcmltYXJpbHkgYWRkcyBzdXBwb3J0IGZvciBhIGZpcm13YXJlLW1hbmFnZWQgUXVhbGNvbW0gRXRoZXJuZXQgRVRIUU9TIGRldmljZSBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgU2VyRGVzL1NHTUlJIFBIWS4gVGhlc2UgYXJlIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlcnMgKFF1YWxjb21tIFNvQ3MpIGFuZCBhIG1pbm9yIGZpeCBpbiBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWSBkcml2ZXIgKEFxdWFudGlhKS4gU3VjaCBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkZXZpY2VzIGFuZCBQSFlzIGFyZSBub3QgZW11bGF0ZWQgb3IgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHVzZWQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDhjMzUzYjlkODZlYTE4YTg0ZTUzOTdkZWEyNjEyNjBlOWU0MWYzYTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAxNzozMzoyMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjdpLWEyMC1nbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW43aS1hMjAtZ21hYy55YW1sXG5pbmRleCAyM2U5MmJlMzNhYzg2MC4uYjEyNjMyNTQ1NjczYjIgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW43aS1hMjAtZ21hYy55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW43aS1hMjAtZ21hYy55YW1sXG5AQCAtNDAsNiArNDAsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICBQSFkgcmVndWxhdG9yXG4gXG4rICBwb3dlci1kb21haW5zOlxuKyAgICBtYXhJdGVtczogMVxuK1xuIHJlcXVpcmVkOlxuICAgLSBjb21wYXRpYmxlXG4gICAtIHJlZ1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWxcbmluZGV4IGZjNDQ1YWQ1YTFmMWFjLi40NDhlNjE3Y2RkYzRjZCAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbFxuQEAgLTE0MCw2ICsxNDAsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICAgICAgICAtIGRlc2NyaXB0aW9uOiBvZmZzZXQgb2YgdGhlIGNvbnRyb2wgcmVnaXN0ZXJcbiAgICAgICAgICAgLSBkZXNjcmlwdGlvbjogc2hpZnQgd2l0aGluIHRoZSBjb250cm9sIHJlZ2lzdGVyXG4gXG4rICBwb3dlci1kb21haW5zOlxuKyAgICBtYXhJdGVtczogMVxuK1xuIHBhdHRlcm5Qcm9wZXJ0aWVzOlxuICAgXCJebWRpb1swLTldJFwiOlxuICAgICB0eXBlOiBvYmplY3RcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1sb2dpYyxtZXNvbi1kd21hYy55YW1sXG5pbmRleCA1YzkxNzE2ZDFmMjFlNi4uOWM5Y2MzZWYzODRkYTAgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWxcbkBAIC0xNTgsNiArMTU4LDkgQEAgcHJvcGVydGllczpcbiAgIGludGVycnVwdC1uYW1lczpcbiAgICAgY29uc3Q6IG1hY2lycVxuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWxcbmluZGV4IDY1ODgyZmY3OWQ4ZDdlLi4wODFhMjExNzRmZDQyYiAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sXG5AQCAtOTUsNiArOTUsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICAgICAgICAtIGRlc2NyaXB0aW9uOiBPcHRpb25hbCBvZmZzZXQgb2YgcmVnaXN0ZXIgY29udHJvbGxpbmcgVFhEIGRlbGF5XG4gICAgICAgICAgIC0gZGVzY3JpcHRpb246IE9wdGlvbmFsIG9mZnNldCBvZiByZWdpc3RlciBjb250cm9sbGluZyBSWEQgZGVsYXlcbiBcbisgIHBvd2VyLWRvbWFpbnM6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gcmVnXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbFxuaW5kZXggNjJjMWRhMzZhMmI1YTIuLmU0MTg1MTkzMWI5NDc1IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sXG5AQCAtNDcsNiArNDcsOSBAQCBwcm9wZXJ0aWVzOlxuICAgaW50ZXJydXB0LW5hbWVzOlxuICAgICBjb25zdDogbWFjaXJxXG4gXG4rICBwb3dlci1kb21haW5zOlxuKyAgICBtYXhJdGVtczogMVxuK1xuIHJlcXVpcmVkOlxuICAgLSBjb21wYXRpYmxlXG4gICAtIGNsb2Nrc1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbG9vbmdzb24sbHMxYi1nbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWItZ21hYy55YW1sXG5pbmRleCBjNGYzMjI0YmFkMzg3Yi4uYzlhMTMxYjhkODMwNGMgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWItZ21hYy55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWItZ21hYy55YW1sXG5AQCAtNjYsNiArNjYsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICAgIC0gbWlpXG4gICAgICAgLSByZ21paS1pZFxuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWMtZW1hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFjLWVtYWMueWFtbFxuaW5kZXggOTkwMDFiOTQwYjgzNjEuLjQ5ZGIxODQyM2RkODA3IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFjLWVtYWMueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFjLWVtYWMueWFtbFxuQEAgLTY1LDYgKzY1LDkgQEAgcHJvcGVydGllczpcbiAgICAgICAtIG1paVxuICAgICAgIC0gcm1paVxuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxkd21hYy1pbXgueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGR3bWFjLWlteC55YW1sXG5pbmRleCBlNWRiMzQ2YmVjYTk2NC4uYjI0MGM3NmU3ZGQ1MjUgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxkd21hYy1pbXgueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsZHdtYWMtaW14LnlhbWxcbkBAIC04Myw2ICs4Myw5IEBAIHByb3BlcnRpZXM6XG4gICAgIGRlc2NyaXB0aW9uOlxuICAgICAgIFRvIHNlbGVjdCBSTUlJIHJlZmVyZW5jZSBjbG9jayBmcm9tIGV4dGVybmFsLlxuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSBjbG9ja3NcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxscGMxODUwLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxscGMxODUwLWR3bWFjLnlhbWxcbmluZGV4IDA1YWNkOWJjNzYxNjM1Li5mNjExODhhYjBkYmUzYyAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGxwYzE4NTAtZHdtYWMueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsbHBjMTg1MC1kd21hYy55YW1sXG5AQCAtNTEsNiArNTEsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICBpdGVtczpcbiAgICAgICAtIGNvbnN0OiBzdG1tYWNldGhcbiBcbisgIHBvd2VyLWRvbWFpbnM6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gcmVnXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxzMzItZHdtYWMueWFtbFxuaW5kZXggNzUzYTA0OTQxNjU5YjguLmZjYWQyMjc0MzAyZDljIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sXG5AQCAtODEsNiArODEsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICAgIC0gY29uc3Q6IHJ4XG4gICAgICAgLSBjb25zdDogcHRwX3JlZlxuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiByZXF1aXJlZDpcbiAgIC0gY2xvY2tzXG4gICAtIGNsb2NrLW5hbWVzXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY29tLGV0aHFvcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY29tLGV0aHFvcy55YW1sXG5pbmRleCA0MjM5NTljYjkyOGQ5NC4uZWY1MjBmODEwNTc3M2UgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sZXRocW9zLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbFxuQEAgLTg2LDYgKzg2LDkgQEAgcHJvcGVydGllczpcbiAgIHBoeS1uYW1lczpcbiAgICAgY29uc3Q6IHNlcmRlc1xuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSBjbG9ja3NcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sc2E4MjU1cC1ldGhxb3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxzYTgyNTVwLWV0aHFvcy55YW1sXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjUxNTg0ODFlNWU1YjBmXG4tLS0gL2Rldi9udWxsXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sc2E4MjU1cC1ldGhxb3MueWFtbFxuQEAgLTAsMCArMSwxMDcgQEBcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0yLUNsYXVzZVxuKyVZQU1MIDEuMlxuKy0tLVxuKyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L3Fjb20sc2E4MjU1cC1ldGhxb3MueWFtbCNcbiskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbitcbit0aXRsZTogUXVhbGNvbW0gRXRoZXJuZXQgRVRIUU9TIGRldmljZSAoZmlybXdhcmUgbWFuYWdlZClcbitcbittYWludGFpbmVyczpcbisgIC0gQmpvcm4gQW5kZXJzc29uIFx1MDAzY2FuZGVyc3NvbkBrZXJuZWwub3JnXHUwMDNlXG4rICAtIEtvbnJhZCBEeWJjaW8gXHUwMDNja29ucmFkeWJjaW9Aa2VybmVsLm9yZ1x1MDAzZVxuKyAgLSBCYXJ0b3N6IEdvbGFzemV3c2tpIFx1MDAzY2JhcnRvc3ouZ29sYXN6ZXdza2lAbGluYXJvLm9yZ1x1MDAzZVxuK1xuK2Rlc2NyaXB0aW9uOlxuKyAgZHdtYWMgYmFzZWQgUXVhbGNvbW0gZXRoZXJuZXQgZGV2aWNlcyB3aGljaCBzdXBwb3J0IEdpZ2FiaXRcbisgIGV0aGVybmV0ICh2ZXJzaW9uIHYyLjMuMCBhbmQgb253YXJkcykgd2l0aCBjbG9ja3MsIGludGVyY29ubmVjdHMsIGV0Yy5cbisgIG1hbmFnZWQgYnkgZmlybXdhcmVcbitcbithbGxPZjpcbisgIC0gJHJlZjogc25wcyxkd21hYy55YW1sI1xuK1xuK3Byb3BlcnRpZXM6XG4rICBjb21wYXRpYmxlOlxuKyAgICBjb25zdDogcWNvbSxzYTgyNTVwLWV0aHFvc1xuK1xuKyAgcmVnOlxuKyAgICBtYXhJdGVtczogMlxuK1xuKyAgcmVnLW5hbWVzOlxuKyAgICBpdGVtczpcbisgICAgICAtIGNvbnN0OiBzdG1tYWNldGhcbisgICAgICAtIGNvbnN0OiByZ21paVxuK1xuKyAgaW50ZXJydXB0czpcbisgICAgaXRlbXM6XG4rICAgICAgLSBkZXNjcmlwdGlvbjogQ29tYmluZWQgc2lnbmFsIGZvciB2YXJpb3VzIGludGVycnVwdCBldmVudHNcbisgICAgICAtIGRlc2NyaXB0aW9uOiBUaGUgaW50ZXJydXB0IHRoYXQgb2NjdXJzIHdoZW4gSFcgc2FmZXR5IGVycm9yIHRyaWdnZXJlZFxuK1xuKyAgaW50ZXJydXB0LW5hbWVzOlxuKyAgICBpdGVtczpcbisgICAgICAtIGNvbnN0OiBtYWNpcnFcbisgICAgICAtIGNvbnN0OiBzZnR5XG4rXG4rICBwb3dlci1kb21haW5zOlxuKyAgICBtaW5JdGVtczogMlxuKyAgICBtYXhJdGVtczogMlxuK1xuKyAgcG93ZXItZG9tYWluLW5hbWVzOlxuKyAgICBpdGVtczpcbisgICAgICAtIGNvbnN0OiBjb3JlXG4rICAgICAgLSBjb25zdDogbWRpb1xuK1xuKyAgcGh5czpcbisgICAgbWF4SXRlbXM6IDFcbitcbisgIHBoeS1uYW1lczpcbisgICAgaXRlbXM6XG4rICAgICAgLSBjb25zdDogc2VyZGVzXG4rXG4rICBpb21tdXM6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4rICBkbWEtY29oZXJlbnQ6IHRydWVcbitcbityZXF1aXJlZDpcbisgIC0gY29tcGF0aWJsZVxuKyAgLSByZWctbmFtZXNcbisgIC0gcG93ZXItZG9tYWluc1xuKyAgLSBwb3dlci1kb21haW4tbmFtZXNcbitcbit1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXG4rXG4rZXhhbXBsZXM6XG4rICAtIHxcbisgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYXJtLWdpYy5oXHUwMDNlXG4rXG4rICAgIGV0aGVybmV0OiBldGhlcm5ldEAyMzA0MDAwMCB7XG4rICAgICAgICBjb21wYXRpYmxlID0gXCJxY29tLHNhODI1NXAtZXRocW9zXCI7XG4rICAgICAgICByZWcgPSBcdTAwM2MweDIzMDQwMDAwIDB4MTAwMDBcdTAwM2UsXG4rICAgICAgICAgICAgICBcdTAwM2MweDIzMDU2MDAwIDB4MTAwXHUwMDNlO1xuKyAgICAgICAgcmVnLW5hbWVzID0gXCJzdG1tYWNldGhcIiwgXCJyZ21paVwiO1xuK1xuKyAgICAgICAgaW9tbXVzID0gXHUwMDNjXHUwMDI2YXBwc19zbW11IDB4MTIwIDB4N1x1MDAzZTtcbitcbisgICAgICAgIGludGVycnVwdHMgPSBcdTAwM2NHSUNfU1BJIDk0NiBJUlFfVFlQRV9MRVZFTF9ISUdIXHUwMDNlLFxuKyAgICAgICAgICAgICAgICAgICAgIFx1MDAzY0dJQ19TUEkgNzgyIElSUV9UWVBFX0xFVkVMX0hJR0hcdTAwM2U7XG4rICAgICAgICBpbnRlcnJ1cHQtbmFtZXMgPSBcIm1hY2lycVwiLCBcInNmdHlcIjtcbitcbisgICAgICAgIGRtYS1jb2hlcmVudDtcbitcbisgICAgICAgIHNucHMsdHNvO1xuKyAgICAgICAgc25wcyxwYmwgPSBcdTAwM2MzMlx1MDAzZTtcbisgICAgICAgIHJ4LWZpZm8tZGVwdGggPSBcdTAwM2MxNjM4NFx1MDAzZTtcbisgICAgICAgIHR4LWZpZm8tZGVwdGggPSBcdTAwM2MxNjM4NFx1MDAzZTtcbitcbisgICAgICAgIHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZldGhlcm5ldF9waHlcdTAwM2U7XG4rICAgICAgICBwaHktbW9kZSA9IFwiMjUwMGJhc2UteFwiO1xuK1xuKyAgICAgICAgc25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X3NldHVwMVx1MDAzZTtcbisgICAgICAgIHNucHMsbXRsLXR4LWNvbmZpZyA9IFx1MDAzY1x1MDAyNm10bF90eF9zZXR1cDFcdTAwM2U7XG4rXG4rICAgICAgICBwb3dlci1kb21haW5zID0gXHUwMDNjXHUwMDI2c2NtaThfcGQgMFx1MDAzZSwgXHUwMDNjXHUwMDI2c2NtaThfcGQgMVx1MDAzZTtcbisgICAgICAgIHBvd2VyLWRvbWFpbi1uYW1lcyA9IFwiY29yZVwiLCBcIm1kaW9cIjtcbitcbisgICAgICAgIHBoeXMgPSBcdTAwM2NcdTAwMjZzZXJkZXMxXHUwMDNlO1xuKyAgICAgICAgcGh5LW5hbWVzID0gXCJzZXJkZXNcIjtcbisgICAgfTtcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnpuMS1nbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnpuMS1nbWFjLnlhbWxcbmluZGV4IDE2ZGQ3YTI2MzFhYmY2Li5lZDBkMTBhMTljYTRjNCAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyem4xLWdtYWMueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6bjEtZ21hYy55YW1sXG5AQCAtNDQsNiArNDQsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICAgIHBoYW5kbGUgcG9pbnRpbmcgdG8gYSBQQ1Mgc3ViLW5vZGUgY29tcGF0aWJsZSB3aXRoXG4gICAgICAgcmVuZXNhcyxyem4xLW1paWMueWFtbCNcbiBcbisgIHBvd2VyLWRvbWFpbnM6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiBcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnp2MmgtZ2JldGgueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sXG5pbmRleCAyMTI1YjVkZGY3M2RhZC4uODMzODgzNGY0OWNkMjEgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnp2MmgtZ2JldGgueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6djJoLWdiZXRoLnlhbWxcbkBAIC0xNTQsNiArMTU0LDkgQEAgcHJvcGVydGllczpcbiAgICAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sI1xuICAgICAgIChSZWZlciBSWi9UMkggcG9ydGlvbiBpbiB0aGUgRFQtYmluZGluZyBmaWxlKVxuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JvY2tjaGlwLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JvY2tjaGlwLWR3bWFjLnlhbWxcbmluZGV4IDgwYzI1Mjg0NTM0OWM0Li4zZWMzZjZkYzJhMTI1OSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcm9ja2NoaXAtZHdtYWMueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yb2NrY2hpcC1kd21hYy55YW1sXG5AQCAtMTIzLDYgKzEyMyw5IEBAIHByb3BlcnRpZXM6XG4gICBwaHktc3VwcGx5OlxuICAgICBkZXNjcmlwdGlvbjogUEhZIHJlZ3VsYXRvclxuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSBjbG9ja3NcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc25wcyxkd21hYy55YW1sXG5pbmRleCAyNDQ5MzExYzZkMjhlZC4uZDNhZmYxZGYzMDcwZDEgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdtYWMueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWxcbkBAIC03Miw2ICs3Miw3IEBAIHByb3BlcnRpZXM6XG4gICAgICAgICAtIG51dm90b24sbWEzNWQxLWR3bWFjXG4gICAgICAgICAtIG54cCxzMzJnMi1kd21hY1xuICAgICAgICAgLSBxY29tLHFjczQwNC1ldGhxb3NcbisgICAgICAgIC0gcWNvbSxzYTgyNTVwLWV0aHFvc1xuICAgICAgICAgLSBxY29tLHNhODc3NXAtZXRocW9zXG4gICAgICAgICAtIHFjb20sc2M4MjgweHAtZXRocW9zXG4gICAgICAgICAtIHFjb20sc204MTUwLWV0aHFvc1xuQEAgLTE4NSw3ICsxODYsOCBAQCBwcm9wZXJ0aWVzOlxuICAgICAgICAgICAtIGNvbnN0OiBhaGJcbiBcbiAgIHBvd2VyLWRvbWFpbnM6XG4tICAgIG1heEl0ZW1zOiAxXG4rICAgIG1pbkl0ZW1zOiAxXG4rICAgIG1heEl0ZW1zOiAyXG4gXG4gICBtYWMtbW9kZTpcbiAgICAgJHJlZjogZXRoZXJuZXQtY29udHJvbGxlci55YW1sIy9wcm9wZXJ0aWVzL3BoeS1jb25uZWN0aW9uLXR5cGVcbkBAIC02MzAsNiArNjMyLDcgQEAgYWxsT2Y6XG4gICAgICAgICAgICAgICAgIC0gaW5nZW5pYyx4MTgzMC1tYWNcbiAgICAgICAgICAgICAgICAgLSBpbmdlbmljLHgyMDAwLW1hY1xuICAgICAgICAgICAgICAgICAtIHFjb20scWNzNDA0LWV0aHFvc1xuKyAgICAgICAgICAgICAgICAtIHFjb20sc2E4MjU1cC1ldGhxb3NcbiAgICAgICAgICAgICAgICAgLSBxY29tLHNhODc3NXAtZXRocW9zXG4gICAgICAgICAgICAgICAgIC0gcWNvbSxzYzgyODB4cC1ldGhxb3NcbiAgICAgICAgICAgICAgICAgLSBxY29tLHNtODE1MC1ldGhxb3NcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWxcbmluZGV4IGI4OTQ1NmYwZWY4MzA5Li5lNzhjYmY1OTRjNjk1MiAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sXG5AQCAtNDksNiArNDksOSBAQCBwcm9wZXJ0aWVzOlxuICAgcmVzZXQtbmFtZXM6XG4gICAgIGNvbnN0OiBzdG1tYWNldGhcbiBcbisgIHBvd2VyLWRvbWFpbnM6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gcmVnXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxzZzIwNDQtZHdtYWMueWFtbFxuaW5kZXggZThkMzgxNGRiMGU5NGYuLjg0NWUyYzY3ZDIwMDM3IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sXG5AQCAtNTIsNiArNTIsOSBAQCBwcm9wZXJ0aWVzOlxuICAgaW50ZXJydXB0LW5hbWVzOlxuICAgICBtYXhJdGVtczogMVxuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiAgIHJlc2V0czpcbiAgICAgbWF4SXRlbXM6IDFcbiBcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbFxuaW5kZXggZmRjYzYxYzY1Zjg3ZDEuLmM0MjRlNzc5NzM5MjFlIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbFxuQEAgLTc1LDYgKzc1LDkgQEAgcHJvcGVydGllczpcbiAgICAgICBUaGUgYXJndW1lbnQgb25lIGlzIHRoZSBvZmZzZXQgb2YgcGh5IG1vZGUgc2VsZWN0aW9uLCB0aGVcbiAgICAgICBhcmd1bWVudCB0d28gaXMgdGhlIHNoaWZ0IG9mIHBoeSBtb2RlIHNlbGVjdGlvbi5cbiBcbisgIHBvd2VyLWRvbWFpbnM6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gcmVnXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG0zMi1kd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG0zMi1kd21hYy55YW1sXG5pbmRleCA5ODcyNTQ5MDBkMGRhNy4uMjliODc4MDc5ZmYwYzEgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RtMzItZHdtYWMueWFtbFxuQEAgLTEyMSw2ICsxMjEsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICBtaW5JdGVtczogMVxuICAgICBtYXhJdGVtczogMlxuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSBjbG9ja3NcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rlc2xhLGZzZC1ldGhxb3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGVzbGEsZnNkLWV0aHFvcy55YW1sXG5pbmRleCBkZDc0ODFiYjE2ZTU5OS4uYWQ2MzU1MjlkNjc2ZWQgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rlc2xhLGZzZC1ldGhxb3MueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90ZXNsYSxmc2QtZXRocW9zLnlhbWxcbkBAIC02Nyw2ICs2Nyw5IEBAIHByb3BlcnRpZXM6XG4gICAgICAgLSByZ21paS1yeGlkXG4gICAgICAgLSByZ21paS10eGlkXG4gXG4rICBwb3dlci1kb21haW5zOlxuKyAgICBtYXhJdGVtczogMVxuK1xuIHJlcXVpcmVkOlxuICAgLSBjb21wYXRpYmxlXG4gICAtIHJlZ1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGhlYWQsdGgxNTIwLWdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGhlYWQsdGgxNTIwLWdtYWMueWFtbFxuaW5kZXggYjM0OTJhOWFhNGVmZmEuLmM4NTlmOGJiNWQ1ODJhIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90aGVhZCx0aDE1MjAtZ21hYy55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3RoZWFkLHRoMTUyMC1nbWFjLnlhbWxcbkBAIC03OCw2ICs3OCw5IEBAIHByb3BlcnRpZXM6XG4gICAgIGl0ZW1zOlxuICAgICAgIC0gY29uc3Q6IG1hY2lycVxuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiByZXF1aXJlZDpcbiAgIC0gY2xvY2tzXG4gICAtIGNsb2NrLW5hbWVzXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90b3NoaWJhLHZpc2NvbnRpLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rvc2hpYmEsdmlzY29udGktZHdtYWMueWFtbFxuaW5kZXggZjBmMzJlMThmYzg1NTAuLmVmYTM5ZWFiMDI1NmExIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90b3NoaWJhLHZpc2NvbnRpLWR3bWFjLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdG9zaGliYSx2aXNjb250aS1kd21hYy55YW1sXG5AQCAtNDgsNiArNDgsOSBAQCBwcm9wZXJ0aWVzOlxuICAgaW50ZXJydXB0LW5hbWVzOlxuICAgICBjb25zdDogbWFjaXJxXG4gXG4rICBwb3dlci1kb21haW5zOlxuKyAgICBtYXhJdGVtczogMVxuK1xuIHJlcXVpcmVkOlxuICAgLSBjb21wYXRpYmxlXG4gICAtIHJlZ1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeS55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9xY29tLHNhODI1NXAtZHdtYWMtc2dtaWktcGh5LnlhbWxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOWU4NDZlMzgxNTU1NTFcbi0tLSAvZGV2L251bGxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeS55YW1sXG5AQCAtMCwwICsxLDUwIEBAXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAgT1IgQlNELTItQ2xhdXNlKVxuKyVZQU1MIDEuMlxuKy0tLVxuKyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvcGh5L3Fjb20sc2E4MjU1cC1kd21hYy1zZ21paS1waHkueWFtbCNcbiskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbitcbit0aXRsZTogUXVhbGNvbW0gU2VyRGVzL1NHTUlJIGV0aGVybmV0IFBIWSBjb250cm9sbGVyIChmaXJtd2FyZSBtYW5hZ2VkKVxuK1xuK21haW50YWluZXJzOlxuKyAgLSBCYXJ0b3N6IEdvbGFzemV3c2tpIFx1MDAzY2JyZ2xAa2VybmVsLm9yZ1x1MDAzZVxuK1xuK2Rlc2NyaXB0aW9uOlxuKyAgVGhlIFNlckRlcyBQSFkgc2l0cyBiZXR3ZWVuIHRoZSBNQUMgYW5kIHRoZSBleHRlcm5hbCBQSFkgYW5kIHByb3ZpZGVzXG4rICBzZXBhcmF0ZSBSeCBUeCBsaW5lcy5cbitcbitwcm9wZXJ0aWVzOlxuKyAgY29tcGF0aWJsZTpcbisgICAgY29uc3Q6IHFjb20sc2E4MjU1cC1kd21hYy1zZ21paS1waHlcbitcbisgIHJlZzpcbisgICAgaXRlbXM6XG4rICAgICAgLSBkZXNjcmlwdGlvbjogc2VyZGVzXG4rXG4rICBwb3dlci1kb21haW5zOlxuKyAgICBtYXhJdGVtczogMVxuK1xuKyAgcG93ZXItZG9tYWluLW5hbWVzOlxuKyAgICBtYXhJdGVtczogMVxuK1xuKyAgXCIjcGh5LWNlbGxzXCI6XG4rICAgIGNvbnN0OiAwXG4rXG4rcmVxdWlyZWQ6XG4rICAtIGNvbXBhdGlibGVcbisgIC0gcmVnXG4rICAtIFwiI3BoeS1jZWxsc1wiXG4rICAtIHBvd2VyLWRvbWFpbnNcbisgIC0gcG93ZXItZG9tYWluLW5hbWVzXG4rXG4rYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlXG4rXG4rZXhhbXBsZXM6XG4rICAtIHxcbisgICAgcGh5QDg5MDEwMDAge1xuKyAgICAgICAgY29tcGF0aWJsZSA9IFwicWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeVwiO1xuKyAgICAgICAgcmVnID0gXHUwMDNjMHgwODkwMTAwMCAweGUxMFx1MDAzZTtcbisgICAgICAgICNwaHktY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuKyAgICAgICAgcG93ZXItZG9tYWlucyA9IFx1MDAzY1x1MDAyNnNjbWk3X2R2ZnMgMFx1MDAzZTtcbisgICAgICAgIHBvd2VyLWRvbWFpbi1uYW1lcyA9IFwic2VyZGVzXCI7XG4rICAgIH07XG5kaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSU1xuaW5kZXggODA2YmQyZDgwZDE1MzUuLjg2ZTY3YWE0ZmI5ZGQxIDEwMDY0NFxuLS0tIGEvTUFJTlRBSU5FUlNcbisrKyBiL01BSU5UQUlORVJTXG5AQCAtMjIxODUsNiArMjIxODUsNyBAQCBMOlx0bmV0ZGV2QHZnZXIua2VybmVsLm9yZ1xuIEw6XHRsaW51eC1hcm0tbXNtQHZnZXIua2VybmVsLm9yZ1xuIFM6XHRNYWludGFpbmVkXG4gRjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbFxuK0Y6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sc2E4MjU1cC1ldGhxb3MueWFtbFxuIEY6XHRkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jXG4gXG4gUVVBTENPTU0gRkFTVFJQQyBEUklWRVJcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuY1xuaW5kZXggYWM3ZDZkM2UyMDVhMWEuLmQzNGYyMGY4NjgxMzhjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuY1xuQEAgLTUsNiArNSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX25ldC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV9kb21haW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5L3BoeS5oXHUwMDNlXG4gXG5AQCAtODEsNiArODIsOCBAQFxuIFxuICNkZWZpbmUgU0dNSUlfMTBNX1JYX0NMS19EVkRSXHRcdFx0MHgzMVxuIFxuK3N0cnVjdCBxY29tX2V0aHFvcztcbitcbiBzdHJ1Y3QgZXRocW9zX2VtYWNfcG9yIHtcbiBcdHVuc2lnbmVkIGludCBvZmZzZXQ7XG4gXHR1bnNpZ25lZCBpbnQgdmFsdWU7XG5AQCAtOTUsNiArOTgsMTMgQEAgc3RydWN0IGV0aHFvc19lbWFjX2RyaXZlcl9kYXRhIHtcbiBcdGNvbnN0IGNoYXIgKmxpbmtfY2xrX25hbWU7XG4gXHRzdHJ1Y3QgZHdtYWM0X2FkZHJzIGR3bWFjNF9hZGRycztcbiBcdGJvb2wgbmVlZHNfc2dtaWlfbG9vcGJhY2s7XG4rXHQvKiBGaXhlZCBQVFAgcmVmZXJlbmNlIGNsb2NrIHJhdGUsIHVzZWQgb24gU0NNSSBwbGF0Zm9ybXMgd2hlcmVcbitcdCAqIGZpcm13YXJlIGRvZXMgbm90IGltcGxlbWVudCB0aGUgY2xvY2sgcHJvdG9jb2wgYWxsb3dpbmcgbGludXggdG9cbitcdCAqIHF1ZXJ5IGl0LlxuK1x0ICovXG4rXHR1bnNpZ25lZCBsb25nIHB0cF9jbGtfcmF0ZTtcbitcdGludCAoKnNldHVwKShzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcyxcbitcdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KTtcbiB9O1xuIFxuIHN0cnVjdCBxY29tX2V0aHFvcyB7XG5AQCAtMTAzLDEyICsxMTMsOCBAQCBzdHJ1Y3QgcWNvbV9ldGhxb3Mge1xuIFx0c3RydWN0IGNsayAqbGlua19jbGs7XG4gXHRzdHJ1Y3QgcGh5ICpzZXJkZXNfcGh5O1xuIFx0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xuLVxuLVx0Y29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX3BvciAqcmdtaWlfcG9yO1xuLVx0dW5zaWduZWQgaW50IG51bV9yZ21paV9wb3I7XG4tXHRib29sIHJnbWlpX2NvbmZpZ19sb29wYmFja19lbjtcbi1cdGJvb2wgaGFzX2VtYWNfZ2VfMztcbi1cdGJvb2wgbmVlZHNfc2dtaWlfbG9vcGJhY2s7XG4rXHRzdHJ1Y3QgZGV2X3BtX2RvbWFpbl9saXN0ICpwZHM7XG4rXHRjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfZHJpdmVyX2RhdGEgKmRhdGE7XG4gfTtcbiBcbiBzdGF0aWMgdTMyIHJnbWlpX3JlYWRsKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KVxuQEAgLTE4OSw4ICsxOTUsOSBAQCBzdGF0aWMgaW50IGV0aHFvc19zZXRfY2xrX3R4X3JhdGUodm9pZCAqYnNwX3ByaXYsIHN0cnVjdCBjbGsgKmNsa190eF9pLFxuIHN0YXRpYyB2b2lkXG4gcWNvbV9ldGhxb3Nfc2V0X3NnbWlpX2xvb3BiYWNrKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLCBib29sIGVuYWJsZSlcbiB7XG4tXHRpZiAoIWV0aHFvcy1cdTAwM2VuZWVkc19zZ21paV9sb29wYmFjayB8fFxuLVx0ICAgIGV0aHFvcy1cdTAwM2VwaHlfbW9kZSAhPSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYKVxuK1x0aWYgKCFldGhxb3MtXHUwMDNlZGF0YS1cdTAwM2VuZWVkc19zZ21paV9sb29wYmFjayB8fFxuK1x0ICAgIChldGhxb3MtXHUwMDNlcGh5X21vZGUgIT0gUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCBcdTAwMjZcdTAwMjZcbitcdCAgICAgZXRocW9zLVx1MDAzZXBoeV9tb2RlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkpXG4gXHRcdHJldHVybjtcbiBcbiBcdHJnbWlpX3VwZGF0ZWwoZXRocW9zLFxuQEAgLTIwNCw2ICsyMTEsMTEgQEAgc3RhdGljIHZvaWQgZXRocW9zX3NldF9mdW5jX2Nsa19lbihzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcylcbiBcdHJnbWlpX3NldG1hc2soZXRocW9zLCBSR01JSV9DT05GSUdfRlVOQ19DTEtfRU4sIFJHTUlJX0lPX01BQ1JPX0NPTkZJRyk7XG4gfVxuIFxuK3N0YXRpYyBpbnQgZXRocW9zX2hsb3Nfc2V0dXAoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MsXG4rXHRcdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KTtcbitzdGF0aWMgaW50IGV0aHFvc19zY21pX3NldHVwKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLFxuK1x0XHRcdCAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCk7XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19wb3IgZW1hY192Ml8zXzBfcG9yW10gPSB7XG4gXHR7IC5vZmZzZXQgPSBSR01JSV9JT19NQUNST19DT05GSUcsXHQudmFsdWUgPSAweDAwQzAxMzQzIH0sXG4gXHR7IC5vZmZzZXQgPSBTRENDX0hDX1JFR19ETExfQ09ORklHLFx0LnZhbHVlID0gMHgyMDA0NjQyQyB9LFxuQEAgLTIxOCw2ICsyMzAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX2RyaXZlcl9kYXRhIGVtYWNfdjJfM18wX2RhdGEgPSB7XG4gXHQubnVtX3JnbWlpX3BvciA9IEFSUkFZX1NJWkUoZW1hY192Ml8zXzBfcG9yKSxcbiBcdC5yZ21paV9jb25maWdfbG9vcGJhY2tfZW4gPSB0cnVlLFxuIFx0Lmhhc19lbWFjX2dlXzMgPSBmYWxzZSxcbitcdC5zZXR1cCA9IGV0aHFvc19obG9zX3NldHVwLFxuIH07XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19wb3IgZW1hY192Ml8xXzBfcG9yW10gPSB7XG5AQCAtMjM0LDYgKzI0Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfZHJpdmVyX2RhdGEgZW1hY192Ml8xXzBfZGF0YSA9IHtcbiBcdC5udW1fcmdtaWlfcG9yID0gQVJSQVlfU0laRShlbWFjX3YyXzFfMF9wb3IpLFxuIFx0LnJnbWlpX2NvbmZpZ19sb29wYmFja19lbiA9IGZhbHNlLFxuIFx0Lmhhc19lbWFjX2dlXzMgPSBmYWxzZSxcbitcdC5zZXR1cCA9IGV0aHFvc19obG9zX3NldHVwLFxuIH07XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19wb3IgZW1hY192M18wXzBfcG9yW10gPSB7XG5AQCAtMjY2LDYgKzI4MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfZHJpdmVyX2RhdGEgZW1hY192M18wXzBfZGF0YSA9IHtcbiBcdFx0Lm10bF9sb3dfY3JlZCA9IDB4MDAwMDgwMjQsXG4gXHRcdC5tdGxfbG93X2NyZWRfb2Zmc2V0ID0gMHgxMDAwLFxuIFx0fSxcbitcdC5zZXR1cCA9IGV0aHFvc19obG9zX3NldHVwLFxuIH07XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19wb3IgZW1hY192NF8wXzBfcG9yW10gPSB7XG5AQCAtMzAxLDYgKzMxNiwzMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX2RyaXZlcl9kYXRhIGVtYWNfdjRfMF8wX2RhdGEgPSB7XG4gXHRcdC5tdGxfbG93X2NyZWQgPSAweDAwMDA4MDI0LFxuIFx0XHQubXRsX2xvd19jcmVkX29mZnNldCA9IDB4MTAwMCxcbiBcdH0sXG4rXHQuc2V0dXAgPSBldGhxb3NfaGxvc19zZXR1cCxcbit9O1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfZHJpdmVyX2RhdGEgZW1hY192NF8wXzBfc2NtaV9kYXRhID0ge1xuK1x0Lmhhc19lbWFjX2dlXzMgPSB0cnVlLFxuK1x0Lm5lZWRzX3NnbWlpX2xvb3BiYWNrID0gdHJ1ZSxcbitcdC5kbWFfYWRkcl93aWR0aCA9IDM2LFxuK1x0LnB0cF9jbGtfcmF0ZSA9IDIzMDQwMDAwMCxcbitcdC5kd21hYzRfYWRkcnMgPSB7XG4rXHRcdC5kbWFfY2hhbiA9IDB4MDAwMDgxMDAsXG4rXHRcdC5kbWFfY2hhbl9vZmZzZXQgPSAweDEwMDAsXG4rXHRcdC5tdGxfY2hhbiA9IDB4MDAwMDgwMDAsXG4rXHRcdC5tdGxfY2hhbl9vZmZzZXQgPSAweDEwMDAsXG4rXHRcdC5tdGxfZXRzX2N0cmwgPSAweDAwMDA4MDEwLFxuK1x0XHQubXRsX2V0c19jdHJsX29mZnNldCA9IDB4MTAwMCxcbitcdFx0Lm10bF90eHFfd2VpZ2h0ID0gMHgwMDAwODAxOCxcbitcdFx0Lm10bF90eHFfd2VpZ2h0X29mZnNldCA9IDB4MTAwMCxcbitcdFx0Lm10bF9zZW5kX3NscF9jcmVkID0gMHgwMDAwODAxYyxcbitcdFx0Lm10bF9zZW5kX3NscF9jcmVkX29mZnNldCA9IDB4MTAwMCxcbitcdFx0Lm10bF9oaWdoX2NyZWQgPSAweDAwMDA4MDIwLFxuK1x0XHQubXRsX2hpZ2hfY3JlZF9vZmZzZXQgPSAweDEwMDAsXG4rXHRcdC5tdGxfbG93X2NyZWQgPSAweDAwMDA4MDI0LFxuK1x0XHQubXRsX2xvd19jcmVkX29mZnNldCA9IDB4MTAwMCxcbitcdH0sXG4rXHQuc2V0dXAgPSBldGhxb3Nfc2NtaV9zZXR1cCxcbiB9O1xuIFxuIHN0YXRpYyBpbnQgZXRocW9zX2RsbF9jb25maWd1cmUoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MpXG5AQCAtMzIyLDcgKzM2Miw3IEBAIHN0YXRpYyBpbnQgZXRocW9zX2RsbF9jb25maWd1cmUoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MpXG4gXHQvKiBTZXQgRExMX0VOICovXG4gXHRyZ21paV9zZXRtYXNrKGV0aHFvcywgU0RDQ19ETExfQ09ORklHX0RMTF9FTiwgU0RDQ19IQ19SRUdfRExMX0NPTkZJRyk7XG4gXG4tXHRpZiAoIWV0aHFvcy1cdTAwM2VoYXNfZW1hY19nZV8zKSB7XG4rXHRpZiAoIWV0aHFvcy1cdTAwM2VkYXRhLVx1MDAzZWhhc19lbWFjX2dlXzMpIHtcbiBcdFx0cmdtaWlfY2xybWFzayhldGhxb3MsIFNEQ0NfRExMX01DTEtfR0FUSU5HX0VOLFxuIFx0XHRcdCAgICAgIFNEQ0NfSENfUkVHX0RMTF9DT05GSUcpO1xuIFxuQEAgLTM1Miw3ICszOTIsNyBAQCBzdGF0aWMgaW50IGV0aHFvc19kbGxfY29uZmlndXJlKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zKVxuIFx0cmdtaWlfc2V0bWFzayhldGhxb3MsIFNEQ0NfRExMX0NPTkZJRzJfRERSX0NBTF9FTixcbiBcdFx0ICAgICAgU0RDQ19IQ19SRUdfRExMX0NPTkZJRzIpO1xuIFxuLVx0aWYgKCFldGhxb3MtXHUwMDNlaGFzX2VtYWNfZ2VfMykge1xuK1x0aWYgKCFldGhxb3MtXHUwMDNlZGF0YS1cdTAwM2VoYXNfZW1hY19nZV8zKSB7XG4gXHRcdHJnbWlpX2Nscm1hc2soZXRocW9zLCBTRENDX0RMTF9DT05GSUcyX0RMTF9DTE9DS19ESVMsXG4gXHRcdFx0ICAgICAgU0RDQ19IQ19SRUdfRExMX0NPTkZJRzIpO1xuIFxuQEAgLTQzMiw3ICs0NzIsNyBAQCBzdGF0aWMgaW50IGV0aHFvc19yZ21paV9tYWNyb19pbml0KHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLCBpbnQgc3BlZWQpXG4gXHRyZ21paV9jbHJtYXNrKGV0aHFvcywgUkdNSUlfQ09ORklHMl9SU1ZEX0NPTkZJRzE1LFxuIFx0XHQgICAgICBSR01JSV9JT19NQUNST19DT05GSUcyKTtcbiBcbi1cdGlmIChzcGVlZCA9PSBTUEVFRF8xMDAwIHx8IGV0aHFvcy1cdTAwM2VoYXNfZW1hY19nZV8zKVxuK1x0aWYgKHNwZWVkID09IFNQRUVEXzEwMDAgfHwgZXRocW9zLVx1MDAzZWRhdGEtXHUwMDNlaGFzX2VtYWNfZ2VfMylcbiBcdFx0cmdtaWlfc2V0bWFzayhldGhxb3MsIFJHTUlJX0NPTkZJRzJfUlhfUFJPR19TV0FQLFxuIFx0XHRcdCAgICAgIFJHTUlJX0lPX01BQ1JPX0NPTkZJRzIpO1xuIFx0ZWxzZVxuQEAgLTQ1Niw3ICs0OTYsNyBAQCBzdGF0aWMgaW50IGV0aHFvc19yZ21paV9tYWNyb19pbml0KHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLCBpbnQgc3BlZWQpXG4gXHRcdCAqIGluIHByYWN0aWNlIHRoaXMgYmVjb21lcyBQUkdfUkNMS19ETFkgPSA1MiAqIDQgL1xuIFx0XHQgKiAgKDIgKiBSWCBkZWxheSBucylcbiBcdFx0ICovXG4tXHRcdGlmIChldGhxb3MtXHUwMDNlaGFzX2VtYWNfZ2VfMykge1xuK1x0XHRpZiAoZXRocW9zLVx1MDAzZWRhdGEtXHUwMDNlaGFzX2VtYWNfZ2VfMykge1xuIFx0XHRcdC8qIDAuOSBucyAqL1xuIFx0XHRcdHByZ19yY2xrX2RseSA9IDExNTtcbiBcdFx0fSBlbHNlIHtcbkBAIC00NzIsNyArNTEyLDcgQEAgc3RhdGljIGludCBldGhxb3NfcmdtaWlfbWFjcm9faW5pdChzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcywgaW50IHNwZWVkKVxuIFx0XHRcdCAgICAgIFNEQ0NfSENfUkVHX0REUl9DT05GSUcpO1xuIFx0fVxuIFxuLVx0aWYgKGV0aHFvcy1cdTAwM2VyZ21paV9jb25maWdfbG9vcGJhY2tfZW4pXG4rXHRpZiAoZXRocW9zLVx1MDAzZWRhdGEtXHUwMDNlcmdtaWlfY29uZmlnX2xvb3BiYWNrX2VuKVxuIFx0XHRsb29wYmFjayA9IFJHTUlJX0NPTkZJR19MT09QQkFDS19FTjtcbiBcdGVsc2VcbiBcdFx0bG9vcGJhY2sgPSAwO1xuQEAgLTQ5NSw5ICs1MzUsOSBAQCBzdGF0aWMgdm9pZCBldGhxb3NfZml4X21hY19zcGVlZF9yZ21paSh2b2lkICpic3BfcHJpdixcbiBcdGRldiA9IFx1MDAyNmV0aHFvcy1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbiBcbiBcdC8qIFJlc2V0IHRvIFBPUiB2YWx1ZXMgYW5kIGVuYWJsZSBjbGsgKi9cbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGV0aHFvcy1cdTAwM2VudW1fcmdtaWlfcG9yOyBpKyspXG4tXHRcdHJnbWlpX3dyaXRlbChldGhxb3MsIGV0aHFvcy1cdTAwM2VyZ21paV9wb3JbaV0udmFsdWUsXG4tXHRcdFx0ICAgICBldGhxb3MtXHUwMDNlcmdtaWlfcG9yW2ldLm9mZnNldCk7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBldGhxb3MtXHUwMDNlZGF0YS1cdTAwM2VudW1fcmdtaWlfcG9yOyBpKyspXG4rXHRcdHJnbWlpX3dyaXRlbChldGhxb3MsIGV0aHFvcy1cdTAwM2VkYXRhLVx1MDAzZXJnbWlpX3BvcltpXS52YWx1ZSxcbitcdFx0XHQgICAgIGV0aHFvcy1cdTAwM2VkYXRhLVx1MDAzZXJnbWlpX3BvcltpXS5vZmZzZXQpO1xuIFxuIFx0ZXRocW9zX3NldF9mdW5jX2Nsa19lbihldGhxb3MpO1xuIFxuQEAgLTUxMSw3ICs1NTEsNyBAQCBzdGF0aWMgdm9pZCBldGhxb3NfZml4X21hY19zcGVlZF9yZ21paSh2b2lkICpic3BfcHJpdixcbiBcdHJnbWlpX3NldG1hc2soZXRocW9zLCBTRENDX0RMTF9DT05GSUdfUEROLFxuIFx0XHQgICAgICBTRENDX0hDX1JFR19ETExfQ09ORklHKTtcbiBcbi1cdGlmIChldGhxb3MtXHUwMDNlaGFzX2VtYWNfZ2VfMykge1xuK1x0aWYgKGV0aHFvcy1cdTAwM2VkYXRhLVx1MDAzZWhhc19lbWFjX2dlXzMpIHtcbiBcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcbiBcdFx0XHRyZ21paV93cml0ZWwoZXRocW9zLCAweDE4MDAwMDAsIFNEQ0NfVEVTVF9DVEwpO1xuIFx0XHRcdHJnbWlpX3dyaXRlbChldGhxb3MsIDB4MkMwMTA4MDAsIFNEQ0NfVVNSX0NUTCk7XG5AQCAtNTM4LDcgKzU3OCw3IEBAIHN0YXRpYyB2b2lkIGV0aHFvc19maXhfbWFjX3NwZWVkX3JnbWlpKHZvaWQgKmJzcF9wcml2LFxuIFx0XHRcdCAgICAgIFNEQ0NfSENfUkVHX0RMTF9DT05GSUcpO1xuIFxuIFx0XHQvKiBTZXQgVVNSX0NUTCBiaXQgMjYgd2l0aCBtYXNrIG9mIDMgYml0cyAqL1xuLVx0XHRpZiAoIWV0aHFvcy1cdTAwM2VoYXNfZW1hY19nZV8zKVxuK1x0XHRpZiAoIWV0aHFvcy1cdTAwM2VkYXRhLVx1MDAzZWhhc19lbWFjX2dlXzMpXG4gXHRcdFx0cmdtaWlfdXBkYXRlbChldGhxb3MsIEdFTk1BU0soMjYsIDI0KSwgQklUKDI2KSxcbiBcdFx0XHRcdCAgICAgIFNEQ0NfVVNSX0NUTCk7XG4gXG5AQCAtNjAxLDEwICs2NDEsMTkgQEAgc3RhdGljIGludCBxY29tX2V0aHFvc19zZXJkZXNfcG93ZXJ1cChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdm9pZCAqcHJpdilcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4rXHRyZXQgPSBwaHlfc2V0X21vZGVfZXh0KGV0aHFvcy1cdTAwM2VzZXJkZXNfcGh5LCBQSFlfTU9ERV9FVEhFUk5FVCxcbitcdFx0XHQgICAgICAgZXRocW9zLVx1MDAzZXBoeV9tb2RlKTtcbitcdGlmIChyZXQpXG4rXHRcdGdvdG8gZXJyX291dDtcbitcbiBcdHJldCA9IHBoeV9wb3dlcl9vbihldGhxb3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4gXHRpZiAocmV0KVxuLVx0XHRwaHlfZXhpdChldGhxb3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4rXHRcdGdvdG8gZXJyX291dDtcbitcbitcdHJldHVybiAwO1xuIFxuK2Vycl9vdXQ6XG4rXHRwaHlfZXhpdChldGhxb3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbkBAIC02MjMsNiArNjcyLDEyIEBAIHN0YXRpYyBpbnQgZXRocW9zX21hY19maW5pc2hfc2VyZGVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICpwcml2LFxuIFx0c3RydWN0IHFjb21fZXRocW9zICpldGhxb3MgPSBwcml2O1xuIFx0aW50IHJldCA9IDA7XG4gXG4rXHQvKiBUaGUgaW50ZXJmYWNlIG1vZGUgaXMgb25seSBrbm93biBvbmNlIHBoeWxpbmsgaGFzIHJlc29sdmVkIGl0IGFuZFxuK1x0ICogbWF5IGNoYW5nZSBhdCBydW50aW1lLCBzbyBrZWVwIGl0IGluIHN5bmMgZm9yIGxhdGVyXG4rXHQgKiBzZXJkZXNfcG93ZXJ1cCgpL3NlcmRlc19wb3dlcmRvd24oKSBjYWxscy5cbitcdCAqL1xuK1x0ZXRocW9zLVx1MDAzZXBoeV9tb2RlID0gaW50ZXJmYWNlO1xuK1xuIFx0cWNvbV9ldGhxb3Nfc2V0X3NnbWlpX2xvb3BiYWNrKGV0aHFvcywgZmFsc2UpO1xuIFxuIFx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkgfHxcbkBAIC02ODEsNiArNzM2LDExNSBAQCBzdGF0aWMgdm9pZCBldGhxb3NfcHRwX2Nsa19mcmVxX2NvbmZpZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXHRuZXRkZXZfZGJnKHByaXYtXHUwMDNlZGV2LCBcIlBUUCByYXRlICVsdVxcblwiLCBwbGF0X2RhdC1cdTAwM2VjbGtfcHRwX3JhdGUpO1xuIH1cbiBcbitzdGF0aWMgaW50IGV0aHFvc19obG9zX3NldHVwKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLFxuK1x0XHRcdCAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdClcbit7XG4rXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gZXRocW9zLVx1MDAzZXBkZXY7XG4rXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbitcdGludCByZXQ7XG4rXG4rXHRldGhxb3MtXHUwMDNlcmdtaWlfYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgXCJyZ21paVwiKTtcbitcdGlmIChJU19FUlIoZXRocW9zLVx1MDAzZXJnbWlpX2Jhc2UpKVxuK1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZXRocW9zLVx1MDAzZXJnbWlpX2Jhc2UpLFxuK1x0XHRcdFx0ICAgICBcIkZhaWxlZCB0byBtYXAgcmdtaWkgcmVzb3VyY2VcXG5cIik7XG4rXG4rXHRldGhxb3MtXHUwMDNlbGlua19jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCBldGhxb3MtXHUwMDNlZGF0YS1cdTAwM2VsaW5rX2Nsa19uYW1lID86IFwicmdtaWlcIik7XG4rXHRpZiAoSVNfRVJSKGV0aHFvcy1cdTAwM2VsaW5rX2NsaykpXG4rXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihldGhxb3MtXHUwMDNlbGlua19jbGspLFxuK1x0XHRcdFx0ICAgICBcIkZhaWxlZCB0byBnZXQgbGlua19jbGtcXG5cIik7XG4rXG4rXHRwbGF0X2RhdC1cdTAwM2VjbGtzX2NvbmZpZyA9IGV0aHFvc19jbGtzX2NvbmZpZztcbitcbitcdHJldCA9IGV0aHFvc19jbGtzX2NvbmZpZyhldGhxb3MsIHRydWUpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdHJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIGV0aHFvc19jbGtzX2Rpc2FibGUsIGV0aHFvcyk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0ZXRocW9zX3NldF9jbGtfdHhfcmF0ZShldGhxb3MsIE5VTEwsIHBsYXRfZGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UsIFNQRUVEXzEwMDApO1xuK1x0cWNvbV9ldGhxb3Nfc2V0X3NnbWlpX2xvb3BiYWNrKGV0aHFvcywgdHJ1ZSk7XG4rXHRldGhxb3Nfc2V0X2Z1bmNfY2xrX2VuKGV0aHFvcyk7XG4rXG4rXHRzd2l0Y2ggKGV0aHFvcy1cdTAwM2VwaHlfbW9kZSkge1xuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XG4rXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDpcbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQ6XG4rXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEOlxuK1x0XHRwbGF0X2RhdC1cdTAwM2VmaXhfbWFjX3NwZWVkID0gZXRocW9zX2ZpeF9tYWNfc3BlZWRfcmdtaWk7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYOlxuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4rXHRcdHBsYXRfZGF0LVx1MDAzZWZpeF9tYWNfc3BlZWQgPSBldGhxb3NfZml4X21hY19zcGVlZF9zZ21paTtcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHRicmVhaztcbitcdH1cbitcbitcdHBsYXRfZGF0LVx1MDAzZXNldF9jbGtfdHhfcmF0ZSA9IGV0aHFvc19zZXRfY2xrX3R4X3JhdGU7XG4rXHRwbGF0X2RhdC1cdTAwM2VkdW1wX2RlYnVnX3JlZ3MgPSByZ21paV9kdW1wO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdCBldGhxb3Nfc2NtaV9wZF9uYW1lc1tdID0geyBcImNvcmVcIiwgXCJtZGlvXCIgfTtcbitcbitzdGF0aWMgaW50IGV0aHFvc19zY21pX3NldHVwKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLFxuK1x0XHRcdCAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdClcbit7XG4rXHRjb25zdCBzdHJ1Y3QgZGV2X3BtX2RvbWFpbl9hdHRhY2hfZGF0YSBwZF9kYXRhID0ge1xuK1x0XHQucGRfbmFtZXNcdD0gZXRocW9zX3NjbWlfcGRfbmFtZXMsXG4rXHRcdC5udW1fcGRfbmFtZXNcdD0gQVJSQVlfU0laRShldGhxb3Nfc2NtaV9wZF9uYW1lcyksXG4rXHRcdC5wZF9mbGFnc1x0PSBQRF9GTEFHX0RFVl9MSU5LX09OLFxuK1x0fTtcbitcbitcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSBldGhxb3MtXHUwMDNlcGRldjtcbitcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuK1x0aW50IHJldDtcbitcbitcdHJldCA9IGRldm1fcG1fZG9tYWluX2F0dGFjaF9saXN0KGRldiwgXHUwMDI2cGRfZGF0YSwgXHUwMDI2ZXRocW9zLVx1MDAzZXBkcyk7XG4rXHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCxcbitcdFx0XHRcdCAgICAgXCJGYWlsZWQgdG8gYXR0YWNoIHBvd2VyIGRvbWFpbnNcXG5cIik7XG4rXG4rXHQvKlxuK1x0ICogVGhlIFNlckRlcyBsYW5lLCBpdHMgY2xvY2tzIGFuZCB0aGUgTUFDIEFYSS9BSEIgY2xvY2tzIGFyZSBvd25lZCBieVxuK1x0ICogZmlybXdhcmUgYW5kIGJyb3VnaHQgdXAgdGhyb3VnaCB0aGUgU0NNSSBwb3dlciBkb21haW5zIGFib3ZlLiBUaGVcbitcdCAqIE1BQyB3cmFwcGVyIGl0c2VsZiwgaG93ZXZlciBpcyBpbiB0aGUga2VybmVsJ3MgcmVnaXN0ZXIgc3BhY2U6IHRoZVxuK1x0ICogbXV4IHRoYXQgZmVlZHMgdGhlIFNlckRlcyByZWNvdmVyZWQgUlggY2xvY2sgaW50byB0aGUgTUFDJ3MgY2xrX3J4X2lcbitcdCAqIGlzIG5vdCBjb25maWd1cmVkIGJ5IGZpcm13YXJlLiBXaXRob3V0IGl0LCBjbGtfcnhfaSBuZXZlciB0b2dnbGVzXG4rXHQgKiBhbmQgdGhlIERNQSBTVy1yZXNldCBwb2xsZWQgaW4gZHdtYWM0X2RtYV9yZXNldCgpIG5ldmVyIGNvbXBsZXRlcy5cbitcdCAqXG4rXHQgKiBNYXAgdGhlIHdyYXBwZXIgYW5kIHByb2dyYW0gdGhlIHNhbWUgbG9vcGJhY2svZnVuY3Rpb25hbCBjbG9jayBiaXRzXG4rXHQgKiB0aGUgbm9uLWZpcm13YXJlIHBsYXRmb3JtcyByZWx5IG9uIChzZWUgZXRocW9zX2Nsa3NfY29uZmlnKSBzbyB0aGVcbitcdCAqIFJYIGNsb2NrIGlzIHByZXNlbnQgYnkgdGhlIHRpbWUgdGhlIERNQSBlbmdpbmUgaXMgcmVzZXQuXG4rXHQgKi9cbitcdGV0aHFvcy1cdTAwM2VyZ21paV9iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlX2J5bmFtZShwZGV2LCBcInJnbWlpXCIpO1xuK1x0aWYgKElTX0VSUihldGhxb3MtXHUwMDNlcmdtaWlfYmFzZSkpXG4rXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihldGhxb3MtXHUwMDNlcmdtaWlfYmFzZSksXG4rXHRcdFx0XHQgICAgIFwiRmFpbGVkIHRvIG1hcCByZ21paSByZXNvdXJjZVxcblwiKTtcbitcbitcdC8qXG4rXHQgKiBSdW4gb24gZXZlcnkgcnVudGltZSByZXN1bWUsIHdoaWNoIHN0bW1hYyBwZXJmb3JtcyBhZnRlciB0aGUgcG93ZXJcbitcdCAqIGRvbWFpbnMgYXJlIG9uIGJ1dCBiZWZvcmUgc2VyZGVzX3Bvd2VydXAoKSBhbmQgdGhlIERNQSByZXNldCwgc28gdGhlXG4rXHQgKiB3cmFwcGVyIGlzIGFsd2F5cyBjb25maWd1cmVkIGFoZWFkIG9mIHRoZSByZXNldC5cbitcdCAqL1xuK1x0cGxhdF9kYXQtXHUwMDNlY2xrc19jb25maWcgPSBldGhxb3NfY2xrc19jb25maWc7XG4rXHRwbGF0X2RhdC1cdTAwM2VjbGtfcHRwX3JhdGUgPSBldGhxb3MtXHUwMDNlZGF0YS1cdTAwM2VwdHBfY2xrX3JhdGU7XG4rXG4rXHRzd2l0Y2ggKGV0aHFvcy1cdTAwM2VwaHlfbW9kZSkge1xuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYOlxuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4rXHRcdHBsYXRfZGF0LVx1MDAzZWZpeF9tYWNfc3BlZWQgPSBldGhxb3NfZml4X21hY19zcGVlZF9zZ21paTtcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHRicmVhaztcbitcdH1cbitcbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgaW50IHFjb21fZXRocW9zX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4ge1xuIFx0c3RydWN0IGRldmljZV9ub2RlICpucCA9IHBkZXYtXHUwMDNlZGV2Lm9mX25vZGU7XG5AQCAtNzAyLDIzICs4NjYsMjAgQEAgc3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRcdFx0ICAgICBcImR0IGNvbmZpZ3VyYXRpb24gZmFpbGVkXFxuXCIpO1xuIFx0fVxuIFxuLVx0cGxhdF9kYXQtXHUwMDNlY2xrc19jb25maWcgPSBldGhxb3NfY2xrc19jb25maWc7XG4tXG4gXHRldGhxb3MgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmV0aHFvcyksIEdGUF9LRVJORUwpO1xuIFx0aWYgKCFldGhxb3MpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0ZXRocW9zLVx1MDAzZXBoeV9tb2RlID0gcGxhdF9kYXQtXHUwMDNlcGh5X2ludGVyZmFjZTtcbitcbiBcdHN3aXRjaCAoZXRocW9zLVx1MDAzZXBoeV9tb2RlKSB7XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX0lEOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RYSUQ6XG4tXHRcdHBsYXRfZGF0LVx1MDAzZWZpeF9tYWNfc3BlZWQgPSBldGhxb3NfZml4X21hY19zcGVlZF9yZ21paTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbi1cdFx0cGxhdF9kYXQtXHUwMDNlZml4X21hY19zcGVlZCA9IGV0aHFvc19maXhfbWFjX3NwZWVkX3NnbWlpO1xuIFx0XHRwbGF0X2RhdC1cdTAwM2VtYWNfZmluaXNoID0gZXRocW9zX21hY19maW5pc2hfc2VyZGVzO1xuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG5AQCAtNzI4LDI4ICs4ODksMTMgQEAgc3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0fVxuIFxuIFx0ZXRocW9zLVx1MDAzZXBkZXYgPSBwZGV2O1xuLVx0ZXRocW9zLVx1MDAzZXJnbWlpX2Jhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2VfYnluYW1lKHBkZXYsIFwicmdtaWlcIik7XG4tXHRpZiAoSVNfRVJSKGV0aHFvcy1cdTAwM2VyZ21paV9iYXNlKSlcbi1cdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGV0aHFvcy1cdTAwM2VyZ21paV9iYXNlKSxcbi1cdFx0XHRcdCAgICAgXCJGYWlsZWQgdG8gbWFwIHJnbWlpIHJlc291cmNlXFxuXCIpO1xuLVxuIFx0ZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuLVx0ZXRocW9zLVx1MDAzZXJnbWlpX3BvciA9IGRhdGEtXHUwMDNlcmdtaWlfcG9yO1xuLVx0ZXRocW9zLVx1MDAzZW51bV9yZ21paV9wb3IgPSBkYXRhLVx1MDAzZW51bV9yZ21paV9wb3I7XG4tXHRldGhxb3MtXHUwMDNlcmdtaWlfY29uZmlnX2xvb3BiYWNrX2VuID0gZGF0YS1cdTAwM2VyZ21paV9jb25maWdfbG9vcGJhY2tfZW47XG4tXHRldGhxb3MtXHUwMDNlaGFzX2VtYWNfZ2VfMyA9IGRhdGEtXHUwMDNlaGFzX2VtYWNfZ2VfMztcbi1cdGV0aHFvcy1cdTAwM2VuZWVkc19zZ21paV9sb29wYmFjayA9IGRhdGEtXHUwMDNlbmVlZHNfc2dtaWlfbG9vcGJhY2s7XG4rXHRldGhxb3MtXHUwMDNlZGF0YSA9IGRhdGE7XG4gXG4tXHRldGhxb3MtXHUwMDNlbGlua19jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCBkYXRhLVx1MDAzZWxpbmtfY2xrX25hbWUgPzogXCJyZ21paVwiKTtcbi1cdGlmIChJU19FUlIoZXRocW9zLVx1MDAzZWxpbmtfY2xrKSlcbi1cdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGV0aHFvcy1cdTAwM2VsaW5rX2NsayksXG4tXHRcdFx0XHQgICAgIFwiRmFpbGVkIHRvIGdldCBsaW5rX2Nsa1xcblwiKTtcbitcdGlmIChXQVJOX09OKCFkYXRhLVx1MDAzZXNldHVwKSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRyZXQgPSBldGhxb3NfY2xrc19jb25maWcoZXRocW9zLCB0cnVlKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCBldGhxb3NfY2xrc19kaXNhYmxlLCBldGhxb3MpO1xuK1x0cmV0ID0gZGF0YS1cdTAwM2VzZXR1cChldGhxb3MsIHBsYXRfZGF0KTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG5AQCAtNzU4LDI0ICs5MDQsMTEgQEAgc3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZXRocW9zLVx1MDAzZXNlcmRlc19waHkpLFxuIFx0XHRcdFx0ICAgICBcIkZhaWxlZCB0byBnZXQgc2VyZGVzIHBoeVxcblwiKTtcbiBcbi1cdGV0aHFvc19zZXRfY2xrX3R4X3JhdGUoZXRocW9zLCBOVUxMLCBwbGF0X2RhdC1cdTAwM2VwaHlfaW50ZXJmYWNlLFxuLVx0XHRcdCAgICAgICBTUEVFRF8xMDAwKTtcbi1cbi1cdHFjb21fZXRocW9zX3NldF9zZ21paV9sb29wYmFjayhldGhxb3MsIHRydWUpO1xuLVx0ZXRocW9zX3NldF9mdW5jX2Nsa19lbihldGhxb3MpO1xuLVxuLVx0LyogVGhlIGNsb2NrcyBhcmUgY29udHJvbGxlZCBieSBmaXJtd2FyZSwgc28gd2UgZG9uJ3Qga25vdyBmb3IgY2VydGFpblxuLVx0ICogd2hhdCBjbG9jayByYXRlIGlzIGJlaW5nIHVzZWQuIEhhcmR3YXJlIGRvY3VtZW50YXRpb24gbWVudGlvbnMgdGhhdFxuLVx0ICogdGhlIEFIQiBzbGF2ZSBjbG9jayB3aWxsIGJlIGluIHRoZSByYW5nZSBvZiA1MCB0byAxMDBNSHosIHdoaWNoXG4tXHQgKiBlcXVhdGVzIHRvIGEgTURDIGJldHdlZW4gMS4xOSBhbmQgMi4zOE1Iei5cbi1cdCAqL1xuIFx0cGxhdF9kYXQtXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfNjBfMTAwTTtcbiBcdHBsYXRfZGF0LVx1MDAzZWJzcF9wcml2ID0gZXRocW9zO1xuLVx0cGxhdF9kYXQtXHUwMDNlc2V0X2Nsa190eF9yYXRlID0gZXRocW9zX3NldF9jbGtfdHhfcmF0ZTtcbi1cdHBsYXRfZGF0LVx1MDAzZWR1bXBfZGVidWdfcmVncyA9IHJnbWlpX2R1bXA7XG4gXHRwbGF0X2RhdC1cdTAwM2VwdHBfY2xrX2ZyZXFfY29uZmlnID0gZXRocW9zX3B0cF9jbGtfZnJlcV9jb25maWc7XG4gXHRwbGF0X2RhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM0O1xuLVx0aWYgKGV0aHFvcy1cdTAwM2VoYXNfZW1hY19nZV8zKVxuK1x0aWYgKGRhdGEtXHUwMDNlaGFzX2VtYWNfZ2VfMylcbiBcdFx0cGxhdF9kYXQtXHUwMDNlZHdtYWM0X2FkZHJzID0gXHUwMDI2ZGF0YS1cdTAwM2Vkd21hYzRfYWRkcnM7XG4gXHRwbGF0X2RhdC1cdTAwM2VwbXQgPSB0cnVlO1xuIFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChucCwgXCJzbnBzLHRzb1wiKSlcbkBAIC03OTksNiArOTMyLDcgQEAgc3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHFjb21fZXRocW9zX21hdGNoW10gPSB7XG4gXHR7IC5jb21wYXRpYmxlID0gXCJxY29tLHFjczQwNC1ldGhxb3NcIiwgLmRhdGEgPSBcdTAwMjZlbWFjX3YyXzNfMF9kYXRhfSxcbitcdHsgLmNvbXBhdGlibGUgPSBcInFjb20sc2E4MjU1cC1ldGhxb3NcIiwgLmRhdGEgPSBcdTAwMjZlbWFjX3Y0XzBfMF9zY21pX2RhdGF9LFxuIFx0eyAuY29tcGF0aWJsZSA9IFwicWNvbSxzYTg3NzVwLWV0aHFvc1wiLCAuZGF0YSA9IFx1MDAyNmVtYWNfdjRfMF8wX2RhdGF9LFxuIFx0eyAuY29tcGF0aWJsZSA9IFwicWNvbSxzYzgyODB4cC1ldGhxb3NcIiwgLmRhdGEgPSBcdTAwMjZlbWFjX3YzXzBfMF9kYXRhfSxcbiBcdHsgLmNvbXBhdGlibGUgPSBcInFjb20sc204MTUwLWV0aHFvc1wiLCAuZGF0YSA9IFx1MDAyNmVtYWNfdjJfMV8wX2RhdGF9LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMgYi9kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jXG5pbmRleCBlOTVkMzkxYTZkYzIzMy4uYjcyMGU0ZTkwMjhjYzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jXG5AQCAtNTQ0LDcgKzU0NCw3IEBAIHN0YXRpYyBpbnQgYXFyX2dlbjFfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRpZiAoIXBoeWRldi1cdTAwM2VsaW5rIHx8IHBoeWRldi1cdTAwM2VhdXRvbmVnID09IEFVVE9ORUdfRElTQUJMRSlcbitcdGlmICghcGh5ZGV2LVx1MDAzZWxpbmspXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0LyogVGhlIHN0YXR1cyByZWdpc3RlciBpcyBub3QgaW1tZWRpYXRlbHkgY29ycmVjdCBvbiBsaW5lIHNpZGUgbGluayB1cC5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9LY29uZmlnIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vS2NvbmZpZ1xuaW5kZXggNjBhMGVhZDEyN2ZhOWYuLmE3Y2YzNDhmNmE3YWExIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9waHkvcXVhbGNvbW0vS2NvbmZpZ1xuKysrIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vS2NvbmZpZ1xuQEAgLTIzMiwzICsyMzIsMTQgQEAgY29uZmlnIFBIWV9RQ09NX1NHTUlJX0VUSFxuIFx0aGVscFxuIFx0ICBFbmFibGUgdGhpcyB0byBzdXBwb3J0IHRoZSBpbnRlcm5hbCBTZXJEZXMvU0dNSUkgUEhZIG9uIHZhcmlvdXNcbiBcdCAgUXVhbGNvbW0gY2hpcHNldHMuXG4rXG4rY29uZmlnIFBIWV9RQ09NX1NHTUlJX0VUSF9TQ01JXG4rXHR0cmlzdGF0ZSBcIlF1YWxjb21tIERXTUFDIFNHTUlJIFNlckRlcy9QSFkgZHJpdmVyIChmaXJtd2FyZSBtYW5hZ2VkKVwiXG4rXHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcbitcdHNlbGVjdCBHRU5FUklDX1BIWVxuK1x0c2VsZWN0IFBNXG4rXHRzZWxlY3QgUE1fR0VORVJJQ19ET01BSU5TXG4rXHRoZWxwXG4rXHQgIEVuYWJsZSB0aGlzIHRvIHN1cHBvcnQgdGhlIGludGVybmFsIFNlckRlcy9TR01JSSBQSFkgb24gUXVhbGNvbW1cbitcdCAgY2hpcHNldHMgd2hlcmUgdGhlIFNlckRlcyBoYXJkd2FyZSAoY2xvY2tzIGFuZCByZWdpc3RlcnMpIGlzIG93bmVkXG4rXHQgIGJ5IHRoZSBmaXJtd2FyZS5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9NYWtlZmlsZSBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL01ha2VmaWxlXG5pbmRleCBiNzFhNmEwYmVkM2YxNC4uMDMyZTU4MmYyZTFhZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9NYWtlZmlsZVxuKysrIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vTWFrZWZpbGVcbkBAIC0yNSwzICsyNSw0IEBAIG9iai0kKENPTkZJR19QSFlfUUNPTV9VU0JfU1MpXHRcdCs9IHBoeS1xY29tLXVzYi1zcy5vXG4gb2JqLSQoQ09ORklHX1BIWV9RQ09NX1VTQl9TTlBTX0ZFTVRPX1YyKSs9IHBoeS1xY29tLXNucHMtZmVtdG8tdjIub1xuIG9iai0kKENPTkZJR19QSFlfUUNPTV9JUFE4MDZYX1VTQilcdCs9IHBoeS1xY29tLWlwcTgwNngtdXNiLm9cbiBvYmotJChDT05GSUdfUEhZX1FDT01fU0dNSUlfRVRIKVx0Kz0gcGh5LXFjb20tc2dtaWktZXRoLm9cbitvYmotJChDT05GSUdfUEhZX1FDT01fU0dNSUlfRVRIX1NDTUkpXHQrPSBwaHktcWNvbS1zZ21paS1ldGgtc2NtaS5vXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tc2dtaWktZXRoLXNjbWkuYyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLXNnbWlpLWV0aC1zY21pLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uYWE3Y2U5MzkzYjI4NTNcbi0tLSAvZGV2L251bGxcbisrKyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLXNnbWlpLWV0aC1zY21pLmNcbkBAIC0wLDAgKzEsMTY1IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuKy8qXG4rICogQ29weXJpZ2h0IChjKSBRdWFsY29tbSBUZWNobm9sb2dpZXMsIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4rICpcbisgKiBGaXJtd2FyZS1tYW5hZ2VkIHZhcmlhbnQgb2YgdGhlIFF1YWxjb21tIERXTUFDIFNHTUlJIFNlckRlcy9QSFkgZHJpdmVyLlxuKyAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9kZXZpY2UtaWQvb2YuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2V0aHRvb2wuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5L3BoeS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV9kb21haW4uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFx1MDAzZVxuK1xuK3N0cnVjdCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pIHtcbitcdHVuc2lnbmVkIGludCBwZXJmX3N0YXRlO1xuK307XG4rXG4rc3RhdGljIGludCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Bvd2VyX29uKHN0cnVjdCBwaHkgKnBoeSlcbit7XG4rXHRzdHJ1Y3QgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaSAqcHJpdiA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpO1xuK1x0c3RydWN0IGRldmljZSAqZGV2ID0gcGh5LVx1MDAzZWRldi5wYXJlbnQ7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldChkZXYpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdHJldCA9IGRldl9wbV9nZW5wZF9zZXRfcGVyZm9ybWFuY2Vfc3RhdGUoZGV2LCBwcml2LVx1MDAzZXBlcmZfc3RhdGUpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRwbV9ydW50aW1lX3B1dChkZXYpO1xuK1x0XHRyZXR1cm4gcmV0O1xuK1x0fVxuK1xuK1x0dXNsZWVwX3JhbmdlKDUwMDAsIDEwMDAwKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgaW50IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfcG93ZXJfb2ZmKHN0cnVjdCBwaHkgKnBoeSlcbit7XG4rXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwaHktXHUwMDNlZGV2LnBhcmVudDtcbitcbitcdGRldl9wbV9nZW5wZF9zZXRfcGVyZm9ybWFuY2Vfc3RhdGUoZGV2LCAwKTtcbitcdHBtX3J1bnRpbWVfcHV0KGRldik7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3ZhbGlkYXRlKHN0cnVjdCBwaHkgKnBoeSwgZW51bSBwaHlfbW9kZSBtb2RlLFxuK1x0XHRcdFx0XHQgICAgICBpbnQgc3VibW9kZSxcbitcdFx0XHRcdFx0ICAgICAgdW5pb24gcGh5X2NvbmZpZ3VyZV9vcHRzICpvcHRzKVxuK3tcbitcdGlmIChtb2RlICE9IFBIWV9NT0RFX0VUSEVSTkVUKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdHN3aXRjaCAoc3VibW9kZSkge1xuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4rXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg6XG4rXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6XG4rXHRcdHJldHVybiAwO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyBpbnQgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9zZXRfbW9kZShzdHJ1Y3QgcGh5ICpwaHksIGVudW0gcGh5X21vZGUgbW9kZSxcbitcdFx0XHRcdFx0ICAgICAgaW50IHN1Ym1vZGUpXG4re1xuK1x0c3RydWN0IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWkgKnByaXYgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTtcbitcdHN0cnVjdCBkZXZpY2UgKmRldiA9IHBoeS1cdTAwM2VkZXYucGFyZW50O1xuK1x0aW50IHJldDtcbitcbitcdHJldCA9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfdmFsaWRhdGUocGh5LCBtb2RlLCBzdWJtb2RlLCBOVUxMKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRwcml2LVx1MDAzZXBlcmZfc3RhdGUgPSAoc3VibW9kZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYKSA/XG4rXHRcdFx0ICAgU1BFRURfMjUwMCA6IFNQRUVEXzEwMDA7XG4rXG4rXHRpZiAocGh5LVx1MDAzZXBvd2VyX2NvdW50ID09IDApXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cmV0dXJuIGRldl9wbV9nZW5wZF9zZXRfcGVyZm9ybWFuY2Vfc3RhdGUoZGV2LCBwcml2LVx1MDAzZXBlcmZfc3RhdGUpO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IHBoeV9vcHMgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9vcHMgPSB7XG4rXHQucG93ZXJfb25cdD0gcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9wb3dlcl9vbixcbitcdC5wb3dlcl9vZmZcdD0gcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9wb3dlcl9vZmYsXG4rXHQuc2V0X21vZGVcdD0gcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9zZXRfbW9kZSxcbitcdC52YWxpZGF0ZVx0PSBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3ZhbGlkYXRlLFxuK1x0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4rfTtcbitcbitzdGF0aWMgdm9pZCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3J1bnRpbWVfZGlzYWJsZSh2b2lkICpkYXRhKVxuK3tcbitcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGRhdGE7XG4rXG4rXHRwbV9ydW50aW1lX2Rpc2FibGUoZGV2KTtcbit9XG4rXG4rc3RhdGljIGludCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4re1xuK1x0c3RydWN0IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWkgKnByaXY7XG4rXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbitcdHN0cnVjdCBwaHlfcHJvdmlkZXIgKnByb3ZpZGVyO1xuK1x0c3RydWN0IHBoeSAqcGh5O1xuK1x0aW50IHJldDtcbitcbitcdHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcbitcdGlmICghcHJpdilcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRwcml2LVx1MDAzZXBlcmZfc3RhdGUgPSBTUEVFRF8xMDAwO1xuK1xuK1x0LypcbitcdCAqIEVuYWJsZSBydW50aW1lIFBNIG9uIHRoZSBwcm92aWRlciBiZWZvcmUgY3JlYXRpbmcgdGhlIFBIWSBzbyB0aGF0IHRoZVxuK1x0ICogUEhZIGNvcmUgZW5hYmxlcyBydW50aW1lIFBNIG9uIHRoZSBQSFkgZGV2aWNlIHRvby4gVGhlIHNpbmdsZSBTQ01JXG4rXHQgKiBwb3dlciBkb21haW4gaGFzIGFscmVhZHkgYmVlbiBhdHRhY2hlZCB0byB0aGlzIGRldmljZSBieSB0aGUgZHJpdmVyXG4rXHQgKiBjb3JlLCBzbyBydW50aW1lIFBNIHZvdGVzIHByb3BhZ2F0ZSB0byBmaXJtd2FyZSB0aHJvdWdoIHRoZSBnZW5wZFxuK1x0ICogZGV2aWNlIGxpbmsuIE5vIHJlZ2lzdGVyIG9yIGNsb2NrIGFjY2VzcyBpcyBkb25lIGhlcmUgLSBmaXJtd2FyZSBvd25zXG4rXHQgKiB0aGUgU2VyRGVzLlxuK1x0ICovXG4rXHRwbV9ydW50aW1lX2VuYWJsZShkZXYpO1xuK1xuK1x0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9ydW50aW1lX2Rpc2FibGUsIGRldik7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cGh5ID0gZGV2bV9waHlfY3JlYXRlKGRldiwgTlVMTCwgXHUwMDI2cWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9vcHMpO1xuK1x0aWYgKElTX0VSUihwaHkpKVxuK1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocGh5KSwgXCJmYWlsZWQgdG8gY3JlYXRlIHRoZSBwaHlcXG5cIik7XG4rXG4rXHRwaHlfc2V0X2RydmRhdGEocGh5LCBwcml2KTtcbitcbitcdHByb3ZpZGVyID0gZGV2bV9vZl9waHlfcHJvdmlkZXJfcmVnaXN0ZXIoZGV2LCBvZl9waHlfc2ltcGxlX3hsYXRlKTtcbitcdGlmIChJU19FUlIocHJvdmlkZXIpKVxuK1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJvdmlkZXIpLFxuK1x0XHRcdFx0ICAgICBcImZhaWxlZCB0byByZWdpc3RlciB0aGUgUEhZIHByb3ZpZGVyXFxuXCIpO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfb2ZfbWF0Y2hbXSA9IHtcbitcdHsgLmNvbXBhdGlibGUgPSBcInFjb20sc2E4MjU1cC1kd21hYy1zZ21paS1waHlcIiB9LFxuK1x0eyB9XG4rfTtcbitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX29mX21hdGNoKTtcbitcbitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX2RyaXZlciA9IHtcbitcdC5wcm9iZVx0PSBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Byb2JlLFxuK1x0LmRyaXZlciA9IHtcbitcdFx0Lm5hbWUgPSBcInFjb20tZHdtYWMtc2dtaWktcGh5LXNjbWlcIixcbitcdFx0Lm9mX21hdGNoX3RhYmxlID0gcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9vZl9tYXRjaCxcbitcdH0sXG4rfTtcbittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfZHJpdmVyKTtcbitcbitNT0RVTEVfREVTQ1JJUFRJT04oXCJRdWFsY29tbSBEV01BQyBTR01JSSBQSFkgZHJpdmVyIChmaXJtd2FyZSBtYW5hZ2VkKVwiKTtcbitNT0RVTEVfQVVUSE9SKFwiQmFydG9zeiBHb2xhc3pld3NraSBcdTAwM2NiYXJ0b3N6LmdvbGFzemV3c2tpQG9zcy5xdWFsY29tbS5jb21cdTAwM2VcIik7XG4rTU9EVUxFX0xJQ0VOU0UoXCJHUExcIik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNzozMzoyMy42MzI4MzY5NzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMzI5NjQ4MTcwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgUGF0Y2ggU2VyaWVzIGZvciBGdXp6aW5nIEZlYXNpYmlsaXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSBoYXZlIGEgcGF0Y2ggc2VyaWVzIGRlYWxpbmcgd2l0aCBhIFF1YWxjb21tIEV0aGVybmV0IEVUSFFPUyBkZXZpY2UgYW5kIGl0cyBjb3JyZXNwb25kaW5nIFNlckRlcy9TR01JSSBQSFkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgdGhlIGZ1enppbmcgcG90ZW50aWFsLiBTcGVjaWZpY2FsbHksIGNhbiB0aGlzIGNvZGUgYmUgcmVhbGlzdGljYWxseSByZWFjaGVkIGluIGEgdHlwaWNhbCBmdXp6aW5nIHNldHVwLCBsaWtlIFFFTVUgb3IgR0NFP1xuXG5GaXJzdCwgd2Ugc2VlIGRldmljZSB0cmVlIGJpbmRpbmdzIGFuZCBuZXcgZHJpdmVycyBmb3IgYm90aCBgcWNvbSxzYTgyNTVwLWV0aHFvc2AgYW5kIGl0cyBTR01JSSBQSFkuIFRoZXNlIGFyZSBwbGF0Zm9ybSBkZXZpY2VzLCBhbmQgdGhlIGNvcmUgY2hhbGxlbmdlIGlzIHRoYXQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIG9mdGVuICpkb24ndCogbmF0aXZlbHkgZW11bGF0ZSBzcGVjaWZpYyBRdWFsY29tbSBoYXJkd2FyZS4gSSBpbW1lZGlhdGVseSB0aGluayB0aGF0LCB1bmxlc3MgUUVNVSAqc3BlY2lmaWNhbGx5KiBlbXVsYXRlcyB0aGlzLCB3ZSdyZSBub3QgZ29pbmcgdG8gaGl0IHRoZSBuZXcgY29kZSBwYXRocy4gU3l6a2FsbGVyIGNhbiBpbmplY3QgcGxhdGZvcm0gZGV2aWNlcyB2aWEgRFQgb3ZlcmxheXMgb3IgcHNldWRvLXN5c2NhbGxzIGJ1dCB0aGF0IGlzIGxpbWl0ZWQgd2l0aG91dCBwcmVjaXNlIGRlc2NyaXB0aW9ucy5cblxuVGhlbiB0aGVyZSdzIHRoZSBgZHdtYWMtcWNvbS1ldGhxb3MuY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIFF1YWxjb21tIEVUSFFPUy4gQWxzbyBhIHBsYXRmb3JtIGRldmljZS4gQWdhaW4sIGEgaHVnZSByZWQgZmxhZzogaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyB0aGF0IG5lZWQgTU1JTyBhbmQgY2xvY2svcG93ZXIgZG9tYWluIHNldHVwIGFyZSBub3RvcmlvdXNseSBkaWZmaWN1bHQgdG8gdHJpZ2dlciBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50ICp1bmxlc3MqIHRoZXJlJ3MgYSBnb29kIGVtdWxhdG9yIGZvciB0aGlzIHBhcnRpY3VsYXIgaGFyZHdhcmUuXG5cbk5leHQsIHRoZSBmaXggaW4gYGFxdWFudGlhX21haW4uY2AsIHdoaWNoIGFwcGVhcnMgdG8gYmUgYSAqZ2VuZXJpYyogUEhZIGRyaXZlci4gSXQncyBhIHNtYWxsIGNoYW5nZSB0byBhIGxpbmsgY2hlY2suIFBIWSBkcml2ZXJzIGFyZSBnZW5lcmFsbHkgcHJvYmVkIHdoZW4gYW4gTURJTyBidXMgaXMgcHJlc2VudC4gSWYgdGhlcmUgaXMgYSB2aXJ0dWFsIE1BQyBhbmQgYW4gTURJTyBidXMgcHJlc2VudCwgaXQgKmNvdWxkKiBiZSByZWFjaGFibGUuIEhvd2V2ZXIsIFN5emthbGxlciB0eXBpY2FsbHkgZG9lc24ndCBlbXVsYXRlIE1ESU8gYnVzZXMgdW5sZXNzIHRoZXJlJ3MgYW4gTURJTyBidXMgZHJpdmVyIHByZXNlbnQuIFNvIGV2ZW4gdGhpcyBjaGFuZ2UgaXMgbGlrZWx5IHVucmVhY2hhYmxlLCB1bmxlc3MgdGhlIE1ESU8gYnVzIGlzIGVtdWxhdGVkIG9yIHRoZXJlJ3MgYSBzcGVjaWZpYyBmdXp6ZXIgZm9yIGl0LlxuXG5UaGUgbmV3IGBwaHktcWNvbS1zZ21paS1ldGgtc2NtaS5jYCBkcml2ZXIgZm9yIHRoZSBTZXJEZXMvU0dNSUkgUEhZIGlzLCBvbmNlIGFnYWluLCBhIHBsYXRmb3JtIGRyaXZlciBhc3NvY2lhdGVkIHdpdGggdGhlIHNhbWUgUXVhbGNvbW0gaGFyZHdhcmUuIE5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5JIGtub3cgc3l6a2FsbGVyIGNhbiBnZW5lcmF0ZSBEVHMsIGJ1dCBpdCdzIG5vdCBnb2luZyB0byBtYWdpYyB1cCBhbiBlbXVsYXRlZCBRdWFsY29tbSBFVEhRT1MgZGV2aWNlLCBwb3dlciBkb21haW5zLCBhbmQgY2xvY2tzLCBlc3BlY2lhbGx5IGlmIGl0IGlzIHBsYXRmb3JtLXNwZWNpZmljIGFuZCByZXF1aXJlcyBTQ01JIGludGVyYWN0aW9uLlxuXG5UaGUgaW5zdHJ1Y3Rpb25zIGluZGljYXRlIHRoYXQgaWYgdGhlIGNoYW5nZXMgYXJlIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgd2Ugc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuR2l2ZW4gdGhpcyBhbmFseXNpcywgSSdtIGNvbmZpZGVudCB0aGF0IHRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggc2VyaWVzIGZvY3VzZXMgb24gaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyAoUXVhbGNvbW0gRVRIUU9TIGFuZCBpdHMgUEhZKSB0aGF0IGFyZSAqdW5saWtlbHkqIHRvIGJlIHJlYWNoYWJsZSBpbiBjb21tb24gZnV6emluZyBzZXR1cHMgbGlrZSBRRU1VIGFuZCBHQ0UsIGVzcGVjaWFsbHkgd2l0aG91dCBzcGVjaWFsaXplZCBlbXVsYXRpb24uXG5cblRoZXJlZm9yZSwgbXkgZmluYWwgYXNzZXNzbWVudCBpcyB0aGF0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzk1MywiT3V0cHV0VG9rZW5zIjoxMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODk1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTc6MzM6NDYuOTI5MzIxMzk5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgcHJpbWFyaWx5IGFkZHMgc3VwcG9ydCBmb3IgYSBmaXJtd2FyZS1tYW5hZ2VkIFF1YWxjb21tIEV0aGVybmV0IEVUSFFPUyBkZXZpY2UgYW5kIGl0cyBjb3JyZXNwb25kaW5nIFNlckRlcy9TR01JSSBQSFkuIFRoZXNlIGFyZSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXJzIChRdWFsY29tbSBTb0NzKSBhbmQgYSBtaW5vciBmaXggaW4gYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgZHJpdmVyIChBcXVhbnRpYSkuIFN1Y2ggaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZGV2aWNlcyBhbmQgUEhZcyBhcmUgbm90IGVtdWxhdGVkIG9yIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB1c2VkIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIHByaW1hcmlseSBhZGRzIHN1cHBvcnQgZm9yIGEgZmlybXdhcmUtbWFuYWdlZCBRdWFsY29tbSBFdGhlcm5ldCBFVEhRT1MgZGV2aWNlIGFuZCBpdHMgY29ycmVzcG9uZGluZyBTZXJEZXMvU0dNSUkgUEhZLiBUaGVzZSBhcmUgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVycyAoUXVhbGNvbW0gU29DcykgYW5kIGEgbWlub3IgZml4IGluIGEgaGFyZHdhcmUtc3BlY2lmaWMgUEhZIGRyaXZlciAoQXF1YW50aWEpLiBTdWNoIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRldmljZXMgYW5kIFBIWXMgYXJlIG5vdCBlbXVsYXRlZCBvciByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UgdXNlZCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow459v4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-13 17:21:09 +0000 UTC FinishedAt: 2026-07-13 17:33:49 +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+CgkJCTx0ZD4yMDI2LzA3LzEzIDE3OjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBwcmltYXJpbHkgYWRkcyBzdXBwb3J0IGZvciBhIGZpcm13YXJlLW1hbmFnZWQgUXVhbGNvbW0gRXRoZXJuZXQgRVRIUU9TIGRldmljZSBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgU2VyRGVzL1NHTUlJIFBIWS4gVGhlc2UgYXJlIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlcnMgKFF1YWxjb21tIFNvQ3MpIGFuZCBhIG1pbm9yIGZpeCBpbiBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWSBkcml2ZXIgKEFxdWFudGlhKS4gU3VjaCBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkZXZpY2VzIGFuZCBQSFlzIGFyZSBub3QgZW11bGF0ZWQgb3IgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHVzZWQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE3OjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOGMzNTNiOWQ4NmVhMThhODRlNTM5N2RlYTI2MTI2MGU5ZTQxZjNhNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDEzIDE3OjMzOjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjdpLWEyMC1nbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW43aS1hMjAtZ21hYy55YW1sXG5pbmRleCAyM2U5MmJlMzNhYzg2MC4uYjEyNjMyNTQ1NjczYjIgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW43aS1hMjAtZ21hYy55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW43aS1hMjAtZ21hYy55YW1sXG5AQCAtNDAsNiAmIzQzOzQwLDkgQEAgcHJvcGVydGllczpcbiAgICAgZGVzY3JpcHRpb246XG4gICAgICAgUEhZIHJlZ3VsYXRvclxuIFxuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sXG5pbmRleCBmYzQ0NWFkNWExZjFhYy4uNDQ4ZTYxN2NkZGM0Y2QgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWxcbkBAIC0xNDAsNiAmIzQzOzE0MCw5IEBAIHByb3BlcnRpZXM6XG4gICAgICAgICAgIC0gZGVzY3JpcHRpb246IG9mZnNldCBvZiB0aGUgY29udHJvbCByZWdpc3RlclxuICAgICAgICAgICAtIGRlc2NyaXB0aW9uOiBzaGlmdCB3aXRoaW4gdGhlIGNvbnRyb2wgcmVnaXN0ZXJcbiBcbiYjNDM7ICBwb3dlci1kb21haW5zOlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4gcGF0dGVyblByb3BlcnRpZXM6XG4gICBcJiMzNDtebWRpb1swLTldJFwmIzM0OzpcbiAgICAgdHlwZTogb2JqZWN0XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbFxuaW5kZXggNWM5MTcxNmQxZjIxZTYuLjljOWNjM2VmMzg0ZGEwIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1sb2dpYyxtZXNvbi1kd21hYy55YW1sXG5AQCAtMTU4LDYgJiM0MzsxNTgsOSBAQCBwcm9wZXJ0aWVzOlxuICAgaW50ZXJydXB0LW5hbWVzOlxuICAgICBjb25zdDogbWFjaXJxXG4gXG4mIzQzOyAgcG93ZXItZG9tYWluczpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuIHJlcXVpcmVkOlxuICAgLSBjb21wYXRpYmxlXG4gICAtIHJlZ1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbFxuaW5kZXggNjU4ODJmZjc5ZDhkN2UuLjA4MWEyMTE3NGZkNDJiIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWxcbkBAIC05NSw2ICYjNDM7OTUsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICAgICAgICAtIGRlc2NyaXB0aW9uOiBPcHRpb25hbCBvZmZzZXQgb2YgcmVnaXN0ZXIgY29udHJvbGxpbmcgVFhEIGRlbGF5XG4gICAgICAgICAgIC0gZGVzY3JpcHRpb246IE9wdGlvbmFsIG9mZnNldCBvZiByZWdpc3RlciBjb250cm9sbGluZyBSWEQgZGVsYXlcbiBcbiYjNDM7ICBwb3dlci1kb21haW5zOlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gcmVnXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbFxuaW5kZXggNjJjMWRhMzZhMmI1YTIuLmU0MTg1MTkzMWI5NDc1IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sXG5AQCAtNDcsNiAmIzQzOzQ3LDkgQEAgcHJvcGVydGllczpcbiAgIGludGVycnVwdC1uYW1lczpcbiAgICAgY29uc3Q6IG1hY2lycVxuIFxuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSBjbG9ja3NcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWItZ21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFiLWdtYWMueWFtbFxuaW5kZXggYzRmMzIyNGJhZDM4N2IuLmM5YTEzMWI4ZDgzMDRjIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFiLWdtYWMueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFiLWdtYWMueWFtbFxuQEAgLTY2LDYgJiM0Mzs2Niw5IEBAIHByb3BlcnRpZXM6XG4gICAgICAgLSBtaWlcbiAgICAgICAtIHJnbWlpLWlkXG4gXG4mIzQzOyAgcG93ZXItZG9tYWluczpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuIHJlcXVpcmVkOlxuICAgLSBjb21wYXRpYmxlXG4gICAtIHJlZ1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbG9vbmdzb24sbHMxYy1lbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWMtZW1hYy55YW1sXG5pbmRleCA5OTAwMWI5NDBiODM2MS4uNDlkYjE4NDIzZGQ4MDcgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWMtZW1hYy55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWMtZW1hYy55YW1sXG5AQCAtNjUsNiAmIzQzOzY1LDkgQEAgcHJvcGVydGllczpcbiAgICAgICAtIG1paVxuICAgICAgIC0gcm1paVxuIFxuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxkd21hYy1pbXgueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGR3bWFjLWlteC55YW1sXG5pbmRleCBlNWRiMzQ2YmVjYTk2NC4uYjI0MGM3NmU3ZGQ1MjUgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxkd21hYy1pbXgueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsZHdtYWMtaW14LnlhbWxcbkBAIC04Myw2ICYjNDM7ODMsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICBUbyBzZWxlY3QgUk1JSSByZWZlcmVuY2UgY2xvY2sgZnJvbSBleHRlcm5hbC5cbiBcbiYjNDM7ICBwb3dlci1kb21haW5zOlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gY2xvY2tzXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsbHBjMTg1MC1kd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsbHBjMTg1MC1kd21hYy55YW1sXG5pbmRleCAwNWFjZDliYzc2MTYzNS4uZjYxMTg4YWIwZGJlM2MgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxscGMxODUwLWR3bWFjLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGxwYzE4NTAtZHdtYWMueWFtbFxuQEAgLTUxLDYgJiM0Mzs1MSw5IEBAIHByb3BlcnRpZXM6XG4gICAgIGl0ZW1zOlxuICAgICAgIC0gY29uc3Q6IHN0bW1hY2V0aFxuIFxuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxzMzItZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sXG5pbmRleCA3NTNhMDQ5NDE2NTliOC4uZmNhZDIyNzQzMDJkOWMgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxzMzItZHdtYWMueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWxcbkBAIC04MSw2ICYjNDM7ODEsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICAgIC0gY29uc3Q6IHJ4XG4gICAgICAgLSBjb25zdDogcHRwX3JlZlxuIFxuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY2xvY2tzXG4gICAtIGNsb2NrLW5hbWVzXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY29tLGV0aHFvcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY29tLGV0aHFvcy55YW1sXG5pbmRleCA0MjM5NTljYjkyOGQ5NC4uZWY1MjBmODEwNTc3M2UgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sZXRocW9zLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbFxuQEAgLTg2LDYgJiM0Mzs4Niw5IEBAIHByb3BlcnRpZXM6XG4gICBwaHktbmFtZXM6XG4gICAgIGNvbnN0OiBzZXJkZXNcbiBcbiYjNDM7ICBwb3dlci1kb21haW5zOlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gY2xvY2tzXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY29tLHNhODI1NXAtZXRocW9zLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sc2E4MjU1cC1ldGhxb3MueWFtbFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi41MTU4NDgxZTVlNWIwZlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY29tLHNhODI1NXAtZXRocW9zLnlhbWxcbkBAIC0wLDAgJiM0MzsxLDEwNyBAQFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0yLUNsYXVzZVxuJiM0MzslWUFNTCAxLjJcbiYjNDM7LS0tXG4mIzQzOyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L3Fjb20sc2E4MjU1cC1ldGhxb3MueWFtbCNcbiYjNDM7JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG4mIzQzO1xuJiM0Mzt0aXRsZTogUXVhbGNvbW0gRXRoZXJuZXQgRVRIUU9TIGRldmljZSAoZmlybXdhcmUgbWFuYWdlZClcbiYjNDM7XG4mIzQzO21haW50YWluZXJzOlxuJiM0MzsgIC0gQmpvcm4gQW5kZXJzc29uIFx1MDAzY2FuZGVyc3NvbkBrZXJuZWwub3JnXHUwMDNlXG4mIzQzOyAgLSBLb25yYWQgRHliY2lvIFx1MDAzY2tvbnJhZHliY2lvQGtlcm5lbC5vcmdcdTAwM2VcbiYjNDM7ICAtIEJhcnRvc3ogR29sYXN6ZXdza2kgXHUwMDNjYmFydG9zei5nb2xhc3pld3NraUBsaW5hcm8ub3JnXHUwMDNlXG4mIzQzO1xuJiM0MztkZXNjcmlwdGlvbjpcbiYjNDM7ICBkd21hYyBiYXNlZCBRdWFsY29tbSBldGhlcm5ldCBkZXZpY2VzIHdoaWNoIHN1cHBvcnQgR2lnYWJpdFxuJiM0MzsgIGV0aGVybmV0ICh2ZXJzaW9uIHYyLjMuMCBhbmQgb253YXJkcykgd2l0aCBjbG9ja3MsIGludGVyY29ubmVjdHMsIGV0Yy5cbiYjNDM7ICBtYW5hZ2VkIGJ5IGZpcm13YXJlXG4mIzQzO1xuJiM0MzthbGxPZjpcbiYjNDM7ICAtICRyZWY6IHNucHMsZHdtYWMueWFtbCNcbiYjNDM7XG4mIzQzO3Byb3BlcnRpZXM6XG4mIzQzOyAgY29tcGF0aWJsZTpcbiYjNDM7ICAgIGNvbnN0OiBxY29tLHNhODI1NXAtZXRocW9zXG4mIzQzO1xuJiM0MzsgIHJlZzpcbiYjNDM7ICAgIG1heEl0ZW1zOiAyXG4mIzQzO1xuJiM0MzsgIHJlZy1uYW1lczpcbiYjNDM7ICAgIGl0ZW1zOlxuJiM0MzsgICAgICAtIGNvbnN0OiBzdG1tYWNldGhcbiYjNDM7ICAgICAgLSBjb25zdDogcmdtaWlcbiYjNDM7XG4mIzQzOyAgaW50ZXJydXB0czpcbiYjNDM7ICAgIGl0ZW1zOlxuJiM0MzsgICAgICAtIGRlc2NyaXB0aW9uOiBDb21iaW5lZCBzaWduYWwgZm9yIHZhcmlvdXMgaW50ZXJydXB0IGV2ZW50c1xuJiM0MzsgICAgICAtIGRlc2NyaXB0aW9uOiBUaGUgaW50ZXJydXB0IHRoYXQgb2NjdXJzIHdoZW4gSFcgc2FmZXR5IGVycm9yIHRyaWdnZXJlZFxuJiM0MztcbiYjNDM7ICBpbnRlcnJ1cHQtbmFtZXM6XG4mIzQzOyAgICBpdGVtczpcbiYjNDM7ICAgICAgLSBjb25zdDogbWFjaXJxXG4mIzQzOyAgICAgIC0gY29uc3Q6IHNmdHlcbiYjNDM7XG4mIzQzOyAgcG93ZXItZG9tYWluczpcbiYjNDM7ICAgIG1pbkl0ZW1zOiAyXG4mIzQzOyAgICBtYXhJdGVtczogMlxuJiM0MztcbiYjNDM7ICBwb3dlci1kb21haW4tbmFtZXM6XG4mIzQzOyAgICBpdGVtczpcbiYjNDM7ICAgICAgLSBjb25zdDogY29yZVxuJiM0MzsgICAgICAtIGNvbnN0OiBtZGlvXG4mIzQzO1xuJiM0MzsgIHBoeXM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiYjNDM7ICBwaHktbmFtZXM6XG4mIzQzOyAgICBpdGVtczpcbiYjNDM7ICAgICAgLSBjb25zdDogc2VyZGVzXG4mIzQzO1xuJiM0MzsgIGlvbW11czpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgIGRtYS1jb2hlcmVudDogdHJ1ZVxuJiM0MztcbiYjNDM7cmVxdWlyZWQ6XG4mIzQzOyAgLSBjb21wYXRpYmxlXG4mIzQzOyAgLSByZWctbmFtZXNcbiYjNDM7ICAtIHBvd2VyLWRvbWFpbnNcbiYjNDM7ICAtIHBvd2VyLWRvbWFpbi1uYW1lc1xuJiM0MztcbiYjNDM7dW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZVxuJiM0MztcbiYjNDM7ZXhhbXBsZXM6XG4mIzQzOyAgLSB8XG4mIzQzOyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0tZ2ljLmhcdTAwM2VcbiYjNDM7XG4mIzQzOyAgICBldGhlcm5ldDogZXRoZXJuZXRAMjMwNDAwMDAge1xuJiM0MzsgICAgICAgIGNvbXBhdGlibGUgPSBcJiMzNDtxY29tLHNhODI1NXAtZXRocW9zXCYjMzQ7O1xuJiM0MzsgICAgICAgIHJlZyA9IFx1MDAzYzB4MjMwNDAwMDAgMHgxMDAwMFx1MDAzZSxcbiYjNDM7ICAgICAgICAgICAgICBcdTAwM2MweDIzMDU2MDAwIDB4MTAwXHUwMDNlO1xuJiM0MzsgICAgICAgIHJlZy1uYW1lcyA9IFwmIzM0O3N0bW1hY2V0aFwmIzM0OywgXCYjMzQ7cmdtaWlcJiMzNDs7XG4mIzQzO1xuJiM0MzsgICAgICAgIGlvbW11cyA9IFx1MDAzY1x1MDAyNmFwcHNfc21tdSAweDEyMCAweDdcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICAgIGludGVycnVwdHMgPSBcdTAwM2NHSUNfU1BJIDk0NiBJUlFfVFlQRV9MRVZFTF9ISUdIXHUwMDNlLFxuJiM0MzsgICAgICAgICAgICAgICAgICAgICBcdTAwM2NHSUNfU1BJIDc4MiBJUlFfVFlQRV9MRVZFTF9ISUdIXHUwMDNlO1xuJiM0MzsgICAgICAgIGludGVycnVwdC1uYW1lcyA9IFwmIzM0O21hY2lycVwmIzM0OywgXCYjMzQ7c2Z0eVwmIzM0OztcbiYjNDM7XG4mIzQzOyAgICAgICAgZG1hLWNvaGVyZW50O1xuJiM0MztcbiYjNDM7ICAgICAgICBzbnBzLHRzbztcbiYjNDM7ICAgICAgICBzbnBzLHBibCA9IFx1MDAzYzMyXHUwMDNlO1xuJiM0MzsgICAgICAgIHJ4LWZpZm8tZGVwdGggPSBcdTAwM2MxNjM4NFx1MDAzZTtcbiYjNDM7ICAgICAgICB0eC1maWZvLWRlcHRoID0gXHUwMDNjMTYzODRcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICAgIHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZldGhlcm5ldF9waHlcdTAwM2U7XG4mIzQzOyAgICAgICAgcGh5LW1vZGUgPSBcJiMzNDsyNTAwYmFzZS14XCYjMzQ7O1xuJiM0MztcbiYjNDM7ICAgICAgICBzbnBzLG10bC1yeC1jb25maWcgPSBcdTAwM2NcdTAwMjZtdGxfcnhfc2V0dXAxXHUwMDNlO1xuJiM0MzsgICAgICAgIHNucHMsbXRsLXR4LWNvbmZpZyA9IFx1MDAzY1x1MDAyNm10bF90eF9zZXR1cDFcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICAgIHBvd2VyLWRvbWFpbnMgPSBcdTAwM2NcdTAwMjZzY21pOF9wZCAwXHUwMDNlLCBcdTAwM2NcdTAwMjZzY21pOF9wZCAxXHUwMDNlO1xuJiM0MzsgICAgICAgIHBvd2VyLWRvbWFpbi1uYW1lcyA9IFwmIzM0O2NvcmVcJiMzNDssIFwmIzM0O21kaW9cJiMzNDs7XG4mIzQzO1xuJiM0MzsgICAgICAgIHBoeXMgPSBcdTAwM2NcdTAwMjZzZXJkZXMxXHUwMDNlO1xuJiM0MzsgICAgICAgIHBoeS1uYW1lcyA9IFwmIzM0O3NlcmRlc1wmIzM0OztcbiYjNDM7ICAgIH07XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6bjEtZ21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6bjEtZ21hYy55YW1sXG5pbmRleCAxNmRkN2EyNjMxYWJmNi4uZWQwZDEwYTE5Y2E0YzQgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnpuMS1nbWFjLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyem4xLWdtYWMueWFtbFxuQEAgLTQ0LDYgJiM0Mzs0NCw5IEBAIHByb3BlcnRpZXM6XG4gICAgICAgcGhhbmRsZSBwb2ludGluZyB0byBhIFBDUyBzdWItbm9kZSBjb21wYXRpYmxlIHdpdGhcbiAgICAgICByZW5lc2FzLHJ6bjEtbWlpYy55YW1sI1xuIFxuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuIFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6djJoLWdiZXRoLnlhbWxcbmluZGV4IDIxMjViNWRkZjczZGFkLi44MzM4ODM0ZjQ5Y2QyMSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnp2MmgtZ2JldGgueWFtbFxuQEAgLTE1NCw2ICYjNDM7MTU0LDkgQEAgcHJvcGVydGllczpcbiAgICAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sI1xuICAgICAgIChSZWZlciBSWi9UMkggcG9ydGlvbiBpbiB0aGUgRFQtYmluZGluZyBmaWxlKVxuIFxuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JvY2tjaGlwLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JvY2tjaGlwLWR3bWFjLnlhbWxcbmluZGV4IDgwYzI1Mjg0NTM0OWM0Li4zZWMzZjZkYzJhMTI1OSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcm9ja2NoaXAtZHdtYWMueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yb2NrY2hpcC1kd21hYy55YW1sXG5AQCAtMTIzLDYgJiM0MzsxMjMsOSBAQCBwcm9wZXJ0aWVzOlxuICAgcGh5LXN1cHBseTpcbiAgICAgZGVzY3JpcHRpb246IFBIWSByZWd1bGF0b3JcbiBcbiYjNDM7ICBwb3dlci1kb21haW5zOlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gY2xvY2tzXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdtYWMueWFtbFxuaW5kZXggMjQ0OTMxMWM2ZDI4ZWQuLmQzYWZmMWRmMzA3MGQxIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc25wcyxkd21hYy55YW1sXG5AQCAtNzIsNiAmIzQzOzcyLDcgQEAgcHJvcGVydGllczpcbiAgICAgICAgIC0gbnV2b3RvbixtYTM1ZDEtZHdtYWNcbiAgICAgICAgIC0gbnhwLHMzMmcyLWR3bWFjXG4gICAgICAgICAtIHFjb20scWNzNDA0LWV0aHFvc1xuJiM0MzsgICAgICAgIC0gcWNvbSxzYTgyNTVwLWV0aHFvc1xuICAgICAgICAgLSBxY29tLHNhODc3NXAtZXRocW9zXG4gICAgICAgICAtIHFjb20sc2M4MjgweHAtZXRocW9zXG4gICAgICAgICAtIHFjb20sc204MTUwLWV0aHFvc1xuQEAgLTE4NSw3ICYjNDM7MTg2LDggQEAgcHJvcGVydGllczpcbiAgICAgICAgICAgLSBjb25zdDogYWhiXG4gXG4gICBwb3dlci1kb21haW5zOlxuLSAgICBtYXhJdGVtczogMVxuJiM0MzsgICAgbWluSXRlbXM6IDFcbiYjNDM7ICAgIG1heEl0ZW1zOiAyXG4gXG4gICBtYWMtbW9kZTpcbiAgICAgJHJlZjogZXRoZXJuZXQtY29udHJvbGxlci55YW1sIy9wcm9wZXJ0aWVzL3BoeS1jb25uZWN0aW9uLXR5cGVcbkBAIC02MzAsNiAmIzQzOzYzMiw3IEBAIGFsbE9mOlxuICAgICAgICAgICAgICAgICAtIGluZ2VuaWMseDE4MzAtbWFjXG4gICAgICAgICAgICAgICAgIC0gaW5nZW5pYyx4MjAwMC1tYWNcbiAgICAgICAgICAgICAgICAgLSBxY29tLHFjczQwNC1ldGhxb3NcbiYjNDM7ICAgICAgICAgICAgICAgIC0gcWNvbSxzYTgyNTVwLWV0aHFvc1xuICAgICAgICAgICAgICAgICAtIHFjb20sc2E4Nzc1cC1ldGhxb3NcbiAgICAgICAgICAgICAgICAgLSBxY29tLHNjODI4MHhwLWV0aHFvc1xuICAgICAgICAgICAgICAgICAtIHFjb20sc204MTUwLWV0aHFvc1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbFxuaW5kZXggYjg5NDU2ZjBlZjgzMDkuLmU3OGNiZjU5NGM2OTUyIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWxcbkBAIC00OSw2ICYjNDM7NDksOSBAQCBwcm9wZXJ0aWVzOlxuICAgcmVzZXQtbmFtZXM6XG4gICAgIGNvbnN0OiBzdG1tYWNldGhcbiBcbiYjNDM7ICBwb3dlci1kb21haW5zOlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gcmVnXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxzZzIwNDQtZHdtYWMueWFtbFxuaW5kZXggZThkMzgxNGRiMGU5NGYuLjg0NWUyYzY3ZDIwMDM3IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sXG5AQCAtNTIsNiAmIzQzOzUyLDkgQEAgcHJvcGVydGllczpcbiAgIGludGVycnVwdC1uYW1lczpcbiAgICAgbWF4SXRlbXM6IDFcbiBcbiYjNDM7ICBwb3dlci1kb21haW5zOlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7XG4gICByZXNldHM6XG4gICAgIG1heEl0ZW1zOiAxXG4gXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWxcbmluZGV4IGZkY2M2MWM2NWY4N2QxLi5jNDI0ZTc3OTczOTIxZSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWxcbkBAIC03NSw2ICYjNDM7NzUsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICAgIFRoZSBhcmd1bWVudCBvbmUgaXMgdGhlIG9mZnNldCBvZiBwaHkgbW9kZSBzZWxlY3Rpb24sIHRoZVxuICAgICAgIGFyZ3VtZW50IHR3byBpcyB0aGUgc2hpZnQgb2YgcGh5IG1vZGUgc2VsZWN0aW9uLlxuIFxuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWxcbmluZGV4IDk4NzI1NDkwMGQwZGE3Li4yOWI4NzgwNzlmZjBjMSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RtMzItZHdtYWMueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG0zMi1kd21hYy55YW1sXG5AQCAtMTIxLDYgJiM0MzsxMjEsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICBtaW5JdGVtczogMVxuICAgICBtYXhJdGVtczogMlxuIFxuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSBjbG9ja3NcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rlc2xhLGZzZC1ldGhxb3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGVzbGEsZnNkLWV0aHFvcy55YW1sXG5pbmRleCBkZDc0ODFiYjE2ZTU5OS4uYWQ2MzU1MjlkNjc2ZWQgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rlc2xhLGZzZC1ldGhxb3MueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90ZXNsYSxmc2QtZXRocW9zLnlhbWxcbkBAIC02Nyw2ICYjNDM7NjcsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICAgIC0gcmdtaWktcnhpZFxuICAgICAgIC0gcmdtaWktdHhpZFxuIFxuJiM0MzsgIHBvd2VyLWRvbWFpbnM6XG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3RoZWFkLHRoMTUyMC1nbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3RoZWFkLHRoMTUyMC1nbWFjLnlhbWxcbmluZGV4IGIzNDkyYTlhYTRlZmZhLi5jODU5ZjhiYjVkNTgyYSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGhlYWQsdGgxNTIwLWdtYWMueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90aGVhZCx0aDE1MjAtZ21hYy55YW1sXG5AQCAtNzgsNiAmIzQzOzc4LDkgQEAgcHJvcGVydGllczpcbiAgICAgaXRlbXM6XG4gICAgICAgLSBjb25zdDogbWFjaXJxXG4gXG4mIzQzOyAgcG93ZXItZG9tYWluczpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuIHJlcXVpcmVkOlxuICAgLSBjbG9ja3NcbiAgIC0gY2xvY2stbmFtZXNcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rvc2hpYmEsdmlzY29udGktZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdG9zaGliYSx2aXNjb250aS1kd21hYy55YW1sXG5pbmRleCBmMGYzMmUxOGZjODU1MC4uZWZhMzllYWIwMjU2YTEgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rvc2hpYmEsdmlzY29udGktZHdtYWMueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90b3NoaWJhLHZpc2NvbnRpLWR3bWFjLnlhbWxcbkBAIC00OCw2ICYjNDM7NDgsOSBAQCBwcm9wZXJ0aWVzOlxuICAgaW50ZXJydXB0LW5hbWVzOlxuICAgICBjb25zdDogbWFjaXJxXG4gXG4mIzQzOyAgcG93ZXItZG9tYWluczpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuIHJlcXVpcmVkOlxuICAgLSBjb21wYXRpYmxlXG4gICAtIHJlZ1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeS55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9xY29tLHNhODI1NXAtZHdtYWMtc2dtaWktcGh5LnlhbWxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOWU4NDZlMzgxNTU1NTFcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeS55YW1sXG5AQCAtMCwwICYjNDM7MSw1MCBAQFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMCBPUiBCU0QtMi1DbGF1c2UpXG4mIzQzOyVZQU1MIDEuMlxuJiM0MzstLS1cbiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9waHkvcWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeS55YW1sI1xuJiM0Mzskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbiYjNDM7XG4mIzQzO3RpdGxlOiBRdWFsY29tbSBTZXJEZXMvU0dNSUkgZXRoZXJuZXQgUEhZIGNvbnRyb2xsZXIgKGZpcm13YXJlIG1hbmFnZWQpXG4mIzQzO1xuJiM0MzttYWludGFpbmVyczpcbiYjNDM7ICAtIEJhcnRvc3ogR29sYXN6ZXdza2kgXHUwMDNjYnJnbEBrZXJuZWwub3JnXHUwMDNlXG4mIzQzO1xuJiM0MztkZXNjcmlwdGlvbjpcbiYjNDM7ICBUaGUgU2VyRGVzIFBIWSBzaXRzIGJldHdlZW4gdGhlIE1BQyBhbmQgdGhlIGV4dGVybmFsIFBIWSBhbmQgcHJvdmlkZXNcbiYjNDM7ICBzZXBhcmF0ZSBSeCBUeCBsaW5lcy5cbiYjNDM7XG4mIzQzO3Byb3BlcnRpZXM6XG4mIzQzOyAgY29tcGF0aWJsZTpcbiYjNDM7ICAgIGNvbnN0OiBxY29tLHNhODI1NXAtZHdtYWMtc2dtaWktcGh5XG4mIzQzO1xuJiM0MzsgIHJlZzpcbiYjNDM7ICAgIGl0ZW1zOlxuJiM0MzsgICAgICAtIGRlc2NyaXB0aW9uOiBzZXJkZXNcbiYjNDM7XG4mIzQzOyAgcG93ZXItZG9tYWluczpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgIHBvd2VyLWRvbWFpbi1uYW1lczpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgIFwmIzM0OyNwaHktY2VsbHNcJiMzNDs6XG4mIzQzOyAgICBjb25zdDogMFxuJiM0MztcbiYjNDM7cmVxdWlyZWQ6XG4mIzQzOyAgLSBjb21wYXRpYmxlXG4mIzQzOyAgLSByZWdcbiYjNDM7ICAtIFwmIzM0OyNwaHktY2VsbHNcJiMzNDtcbiYjNDM7ICAtIHBvd2VyLWRvbWFpbnNcbiYjNDM7ICAtIHBvd2VyLWRvbWFpbi1uYW1lc1xuJiM0MztcbiYjNDM7YWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlXG4mIzQzO1xuJiM0MztleGFtcGxlczpcbiYjNDM7ICAtIHxcbiYjNDM7ICAgIHBoeUA4OTAxMDAwIHtcbiYjNDM7ICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7cWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeVwmIzM0OztcbiYjNDM7ICAgICAgICByZWcgPSBcdTAwM2MweDA4OTAxMDAwIDB4ZTEwXHUwMDNlO1xuJiM0MzsgICAgICAgICNwaHktY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuJiM0MzsgICAgICAgIHBvd2VyLWRvbWFpbnMgPSBcdTAwM2NcdTAwMjZzY21pN19kdmZzIDBcdTAwM2U7XG4mIzQzOyAgICAgICAgcG93ZXItZG9tYWluLW5hbWVzID0gXCYjMzQ7c2VyZGVzXCYjMzQ7O1xuJiM0MzsgICAgfTtcbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXG5pbmRleCA4MDZiZDJkODBkMTUzNS4uODZlNjdhYTRmYjlkZDEgMTAwNjQ0XG4tLS0gYS9NQUlOVEFJTkVSU1xuJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlNcbkBAIC0yMjE4NSw2ICYjNDM7MjIxODUsNyBAQCBMOlx0bmV0ZGV2QHZnZXIua2VybmVsLm9yZ1xuIEw6XHRsaW51eC1hcm0tbXNtQHZnZXIua2VybmVsLm9yZ1xuIFM6XHRNYWludGFpbmVkXG4gRjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbFxuJiM0MztGOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY29tLHNhODI1NXAtZXRocW9zLnlhbWxcbiBGOlx0ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuY1xuIFxuIFFVQUxDT01NIEZBU1RSUEMgRFJJVkVSXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmNcbmluZGV4IGFjN2Q2ZDNlMjA1YTFhLi5kMzRmMjBmODY4MTM4YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmNcbkBAIC01LDYgJiM0Mzs1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbmV0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV9kb21haW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5L3BoeS5oXHUwMDNlXG4gXG5AQCAtODEsNiAmIzQzOzgyLDggQEBcbiBcbiAjZGVmaW5lIFNHTUlJXzEwTV9SWF9DTEtfRFZEUlx0XHRcdDB4MzFcbiBcbiYjNDM7c3RydWN0IHFjb21fZXRocW9zO1xuJiM0MztcbiBzdHJ1Y3QgZXRocW9zX2VtYWNfcG9yIHtcbiBcdHVuc2lnbmVkIGludCBvZmZzZXQ7XG4gXHR1bnNpZ25lZCBpbnQgdmFsdWU7XG5AQCAtOTUsNiAmIzQzOzk4LDEzIEBAIHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSB7XG4gXHRjb25zdCBjaGFyICpsaW5rX2Nsa19uYW1lO1xuIFx0c3RydWN0IGR3bWFjNF9hZGRycyBkd21hYzRfYWRkcnM7XG4gXHRib29sIG5lZWRzX3NnbWlpX2xvb3BiYWNrO1xuJiM0MztcdC8qIEZpeGVkIFBUUCByZWZlcmVuY2UgY2xvY2sgcmF0ZSwgdXNlZCBvbiBTQ01JIHBsYXRmb3JtcyB3aGVyZVxuJiM0MztcdCAqIGZpcm13YXJlIGRvZXMgbm90IGltcGxlbWVudCB0aGUgY2xvY2sgcHJvdG9jb2wgYWxsb3dpbmcgbGludXggdG9cbiYjNDM7XHQgKiBxdWVyeSBpdC5cbiYjNDM7XHQgKi9cbiYjNDM7XHR1bnNpZ25lZCBsb25nIHB0cF9jbGtfcmF0ZTtcbiYjNDM7XHRpbnQgKCpzZXR1cCkoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MsXG4mIzQzO1x0XHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQpO1xuIH07XG4gXG4gc3RydWN0IHFjb21fZXRocW9zIHtcbkBAIC0xMDMsMTIgJiM0MzsxMTMsOCBAQCBzdHJ1Y3QgcWNvbV9ldGhxb3Mge1xuIFx0c3RydWN0IGNsayAqbGlua19jbGs7XG4gXHRzdHJ1Y3QgcGh5ICpzZXJkZXNfcGh5O1xuIFx0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xuLVxuLVx0Y29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX3BvciAqcmdtaWlfcG9yO1xuLVx0dW5zaWduZWQgaW50IG51bV9yZ21paV9wb3I7XG4tXHRib29sIHJnbWlpX2NvbmZpZ19sb29wYmFja19lbjtcbi1cdGJvb2wgaGFzX2VtYWNfZ2VfMztcbi1cdGJvb2wgbmVlZHNfc2dtaWlfbG9vcGJhY2s7XG4mIzQzO1x0c3RydWN0IGRldl9wbV9kb21haW5fbGlzdCAqcGRzO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSAqZGF0YTtcbiB9O1xuIFxuIHN0YXRpYyB1MzIgcmdtaWlfcmVhZGwoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MsIHVuc2lnbmVkIGludCBvZmZzZXQpXG5AQCAtMTg5LDggJiM0MzsxOTUsOSBAQCBzdGF0aWMgaW50IGV0aHFvc19zZXRfY2xrX3R4X3JhdGUodm9pZCAqYnNwX3ByaXYsIHN0cnVjdCBjbGsgKmNsa190eF9pLFxuIHN0YXRpYyB2b2lkXG4gcWNvbV9ldGhxb3Nfc2V0X3NnbWlpX2xvb3BiYWNrKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLCBib29sIGVuYWJsZSlcbiB7XG4tXHRpZiAoIWV0aHFvcy1cdTAwM2VuZWVkc19zZ21paV9sb29wYmFjayB8fFxuLVx0ICAgIGV0aHFvcy1cdTAwM2VwaHlfbW9kZSAhPSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYKVxuJiM0MztcdGlmICghZXRocW9zLVx1MDAzZWRhdGEtXHUwMDNlbmVlZHNfc2dtaWlfbG9vcGJhY2sgfHxcbiYjNDM7XHQgICAgKGV0aHFvcy1cdTAwM2VwaHlfbW9kZSAhPSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAgZXRocW9zLVx1MDAzZXBoeV9tb2RlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkpXG4gXHRcdHJldHVybjtcbiBcbiBcdHJnbWlpX3VwZGF0ZWwoZXRocW9zLFxuQEAgLTIwNCw2ICYjNDM7MjExLDExIEBAIHN0YXRpYyB2b2lkIGV0aHFvc19zZXRfZnVuY19jbGtfZW4oc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MpXG4gXHRyZ21paV9zZXRtYXNrKGV0aHFvcywgUkdNSUlfQ09ORklHX0ZVTkNfQ0xLX0VOLCBSR01JSV9JT19NQUNST19DT05GSUcpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBldGhxb3NfaGxvc19zZXR1cChzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcyxcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KTtcbiYjNDM7c3RhdGljIGludCBldGhxb3Nfc2NtaV9zZXR1cChzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcyxcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KTtcbiYjNDM7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19wb3IgZW1hY192Ml8zXzBfcG9yW10gPSB7XG4gXHR7IC5vZmZzZXQgPSBSR01JSV9JT19NQUNST19DT05GSUcsXHQudmFsdWUgPSAweDAwQzAxMzQzIH0sXG4gXHR7IC5vZmZzZXQgPSBTRENDX0hDX1JFR19ETExfQ09ORklHLFx0LnZhbHVlID0gMHgyMDA0NjQyQyB9LFxuQEAgLTIxOCw2ICYjNDM7MjMwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSBlbWFjX3YyXzNfMF9kYXRhID0ge1xuIFx0Lm51bV9yZ21paV9wb3IgPSBBUlJBWV9TSVpFKGVtYWNfdjJfM18wX3BvciksXG4gXHQucmdtaWlfY29uZmlnX2xvb3BiYWNrX2VuID0gdHJ1ZSxcbiBcdC5oYXNfZW1hY19nZV8zID0gZmFsc2UsXG4mIzQzO1x0LnNldHVwID0gZXRocW9zX2hsb3Nfc2V0dXAsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX3BvciBlbWFjX3YyXzFfMF9wb3JbXSA9IHtcbkBAIC0yMzQsNiAmIzQzOzI0Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfZHJpdmVyX2RhdGEgZW1hY192Ml8xXzBfZGF0YSA9IHtcbiBcdC5udW1fcmdtaWlfcG9yID0gQVJSQVlfU0laRShlbWFjX3YyXzFfMF9wb3IpLFxuIFx0LnJnbWlpX2NvbmZpZ19sb29wYmFja19lbiA9IGZhbHNlLFxuIFx0Lmhhc19lbWFjX2dlXzMgPSBmYWxzZSxcbiYjNDM7XHQuc2V0dXAgPSBldGhxb3NfaGxvc19zZXR1cCxcbiB9O1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfcG9yIGVtYWNfdjNfMF8wX3BvcltdID0ge1xuQEAgLTI2Niw2ICYjNDM7MjgwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSBlbWFjX3YzXzBfMF9kYXRhID0ge1xuIFx0XHQubXRsX2xvd19jcmVkID0gMHgwMDAwODAyNCxcbiBcdFx0Lm10bF9sb3dfY3JlZF9vZmZzZXQgPSAweDEwMDAsXG4gXHR9LFxuJiM0MztcdC5zZXR1cCA9IGV0aHFvc19obG9zX3NldHVwLFxuIH07XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19wb3IgZW1hY192NF8wXzBfcG9yW10gPSB7XG5AQCAtMzAxLDYgJiM0MzszMTYsMzEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSBlbWFjX3Y0XzBfMF9kYXRhID0ge1xuIFx0XHQubXRsX2xvd19jcmVkID0gMHgwMDAwODAyNCxcbiBcdFx0Lm10bF9sb3dfY3JlZF9vZmZzZXQgPSAweDEwMDAsXG4gXHR9LFxuJiM0MztcdC5zZXR1cCA9IGV0aHFvc19obG9zX3NldHVwLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSBlbWFjX3Y0XzBfMF9zY21pX2RhdGEgPSB7XG4mIzQzO1x0Lmhhc19lbWFjX2dlXzMgPSB0cnVlLFxuJiM0MztcdC5uZWVkc19zZ21paV9sb29wYmFjayA9IHRydWUsXG4mIzQzO1x0LmRtYV9hZGRyX3dpZHRoID0gMzYsXG4mIzQzO1x0LnB0cF9jbGtfcmF0ZSA9IDIzMDQwMDAwMCxcbiYjNDM7XHQuZHdtYWM0X2FkZHJzID0ge1xuJiM0MztcdFx0LmRtYV9jaGFuID0gMHgwMDAwODEwMCxcbiYjNDM7XHRcdC5kbWFfY2hhbl9vZmZzZXQgPSAweDEwMDAsXG4mIzQzO1x0XHQubXRsX2NoYW4gPSAweDAwMDA4MDAwLFxuJiM0MztcdFx0Lm10bF9jaGFuX29mZnNldCA9IDB4MTAwMCxcbiYjNDM7XHRcdC5tdGxfZXRzX2N0cmwgPSAweDAwMDA4MDEwLFxuJiM0MztcdFx0Lm10bF9ldHNfY3RybF9vZmZzZXQgPSAweDEwMDAsXG4mIzQzO1x0XHQubXRsX3R4cV93ZWlnaHQgPSAweDAwMDA4MDE4LFxuJiM0MztcdFx0Lm10bF90eHFfd2VpZ2h0X29mZnNldCA9IDB4MTAwMCxcbiYjNDM7XHRcdC5tdGxfc2VuZF9zbHBfY3JlZCA9IDB4MDAwMDgwMWMsXG4mIzQzO1x0XHQubXRsX3NlbmRfc2xwX2NyZWRfb2Zmc2V0ID0gMHgxMDAwLFxuJiM0MztcdFx0Lm10bF9oaWdoX2NyZWQgPSAweDAwMDA4MDIwLFxuJiM0MztcdFx0Lm10bF9oaWdoX2NyZWRfb2Zmc2V0ID0gMHgxMDAwLFxuJiM0MztcdFx0Lm10bF9sb3dfY3JlZCA9IDB4MDAwMDgwMjQsXG4mIzQzO1x0XHQubXRsX2xvd19jcmVkX29mZnNldCA9IDB4MTAwMCxcbiYjNDM7XHR9LFxuJiM0MztcdC5zZXR1cCA9IGV0aHFvc19zY21pX3NldHVwLFxuIH07XG4gXG4gc3RhdGljIGludCBldGhxb3NfZGxsX2NvbmZpZ3VyZShzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcylcbkBAIC0zMjIsNyAmIzQzOzM2Miw3IEBAIHN0YXRpYyBpbnQgZXRocW9zX2RsbF9jb25maWd1cmUoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MpXG4gXHQvKiBTZXQgRExMX0VOICovXG4gXHRyZ21paV9zZXRtYXNrKGV0aHFvcywgU0RDQ19ETExfQ09ORklHX0RMTF9FTiwgU0RDQ19IQ19SRUdfRExMX0NPTkZJRyk7XG4gXG4tXHRpZiAoIWV0aHFvcy1cdTAwM2VoYXNfZW1hY19nZV8zKSB7XG4mIzQzO1x0aWYgKCFldGhxb3MtXHUwMDNlZGF0YS1cdTAwM2VoYXNfZW1hY19nZV8zKSB7XG4gXHRcdHJnbWlpX2Nscm1hc2soZXRocW9zLCBTRENDX0RMTF9NQ0xLX0dBVElOR19FTixcbiBcdFx0XHQgICAgICBTRENDX0hDX1JFR19ETExfQ09ORklHKTtcbiBcbkBAIC0zNTIsNyAmIzQzOzM5Miw3IEBAIHN0YXRpYyBpbnQgZXRocW9zX2RsbF9jb25maWd1cmUoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MpXG4gXHRyZ21paV9zZXRtYXNrKGV0aHFvcywgU0RDQ19ETExfQ09ORklHMl9ERFJfQ0FMX0VOLFxuIFx0XHQgICAgICBTRENDX0hDX1JFR19ETExfQ09ORklHMik7XG4gXG4tXHRpZiAoIWV0aHFvcy1cdTAwM2VoYXNfZW1hY19nZV8zKSB7XG4mIzQzO1x0aWYgKCFldGhxb3MtXHUwMDNlZGF0YS1cdTAwM2VoYXNfZW1hY19nZV8zKSB7XG4gXHRcdHJnbWlpX2Nscm1hc2soZXRocW9zLCBTRENDX0RMTF9DT05GSUcyX0RMTF9DTE9DS19ESVMsXG4gXHRcdFx0ICAgICAgU0RDQ19IQ19SRUdfRExMX0NPTkZJRzIpO1xuIFxuQEAgLTQzMiw3ICYjNDM7NDcyLDcgQEAgc3RhdGljIGludCBldGhxb3NfcmdtaWlfbWFjcm9faW5pdChzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcywgaW50IHNwZWVkKVxuIFx0cmdtaWlfY2xybWFzayhldGhxb3MsIFJHTUlJX0NPTkZJRzJfUlNWRF9DT05GSUcxNSxcbiBcdFx0ICAgICAgUkdNSUlfSU9fTUFDUk9fQ09ORklHMik7XG4gXG4tXHRpZiAoc3BlZWQgPT0gU1BFRURfMTAwMCB8fCBldGhxb3MtXHUwMDNlaGFzX2VtYWNfZ2VfMylcbiYjNDM7XHRpZiAoc3BlZWQgPT0gU1BFRURfMTAwMCB8fCBldGhxb3MtXHUwMDNlZGF0YS1cdTAwM2VoYXNfZW1hY19nZV8zKVxuIFx0XHRyZ21paV9zZXRtYXNrKGV0aHFvcywgUkdNSUlfQ09ORklHMl9SWF9QUk9HX1NXQVAsXG4gXHRcdFx0ICAgICAgUkdNSUlfSU9fTUFDUk9fQ09ORklHMik7XG4gXHRlbHNlXG5AQCAtNDU2LDcgJiM0Mzs0OTYsNyBAQCBzdGF0aWMgaW50IGV0aHFvc19yZ21paV9tYWNyb19pbml0KHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLCBpbnQgc3BlZWQpXG4gXHRcdCAqIGluIHByYWN0aWNlIHRoaXMgYmVjb21lcyBQUkdfUkNMS19ETFkgPSA1MiAqIDQgL1xuIFx0XHQgKiAgKDIgKiBSWCBkZWxheSBucylcbiBcdFx0ICovXG4tXHRcdGlmIChldGhxb3MtXHUwMDNlaGFzX2VtYWNfZ2VfMykge1xuJiM0MztcdFx0aWYgKGV0aHFvcy1cdTAwM2VkYXRhLVx1MDAzZWhhc19lbWFjX2dlXzMpIHtcbiBcdFx0XHQvKiAwLjkgbnMgKi9cbiBcdFx0XHRwcmdfcmNsa19kbHkgPSAxMTU7XG4gXHRcdH0gZWxzZSB7XG5AQCAtNDcyLDcgJiM0Mzs1MTIsNyBAQCBzdGF0aWMgaW50IGV0aHFvc19yZ21paV9tYWNyb19pbml0KHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLCBpbnQgc3BlZWQpXG4gXHRcdFx0ICAgICAgU0RDQ19IQ19SRUdfRERSX0NPTkZJRyk7XG4gXHR9XG4gXG4tXHRpZiAoZXRocW9zLVx1MDAzZXJnbWlpX2NvbmZpZ19sb29wYmFja19lbilcbiYjNDM7XHRpZiAoZXRocW9zLVx1MDAzZWRhdGEtXHUwMDNlcmdtaWlfY29uZmlnX2xvb3BiYWNrX2VuKVxuIFx0XHRsb29wYmFjayA9IFJHTUlJX0NPTkZJR19MT09QQkFDS19FTjtcbiBcdGVsc2VcbiBcdFx0bG9vcGJhY2sgPSAwO1xuQEAgLTQ5NSw5ICYjNDM7NTM1LDkgQEAgc3RhdGljIHZvaWQgZXRocW9zX2ZpeF9tYWNfc3BlZWRfcmdtaWkodm9pZCAqYnNwX3ByaXYsXG4gXHRkZXYgPSBcdTAwMjZldGhxb3MtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG4gXG4gXHQvKiBSZXNldCB0byBQT1IgdmFsdWVzIGFuZCBlbmFibGUgY2xrICovXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBldGhxb3MtXHUwMDNlbnVtX3JnbWlpX3BvcjsgaSYjNDM7JiM0MzspXG4tXHRcdHJnbWlpX3dyaXRlbChldGhxb3MsIGV0aHFvcy1cdTAwM2VyZ21paV9wb3JbaV0udmFsdWUsXG4tXHRcdFx0ICAgICBldGhxb3MtXHUwMDNlcmdtaWlfcG9yW2ldLm9mZnNldCk7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgZXRocW9zLVx1MDAzZWRhdGEtXHUwMDNlbnVtX3JnbWlpX3BvcjsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRyZ21paV93cml0ZWwoZXRocW9zLCBldGhxb3MtXHUwMDNlZGF0YS1cdTAwM2VyZ21paV9wb3JbaV0udmFsdWUsXG4mIzQzO1x0XHRcdCAgICAgZXRocW9zLVx1MDAzZWRhdGEtXHUwMDNlcmdtaWlfcG9yW2ldLm9mZnNldCk7XG4gXG4gXHRldGhxb3Nfc2V0X2Z1bmNfY2xrX2VuKGV0aHFvcyk7XG4gXG5AQCAtNTExLDcgJiM0Mzs1NTEsNyBAQCBzdGF0aWMgdm9pZCBldGhxb3NfZml4X21hY19zcGVlZF9yZ21paSh2b2lkICpic3BfcHJpdixcbiBcdHJnbWlpX3NldG1hc2soZXRocW9zLCBTRENDX0RMTF9DT05GSUdfUEROLFxuIFx0XHQgICAgICBTRENDX0hDX1JFR19ETExfQ09ORklHKTtcbiBcbi1cdGlmIChldGhxb3MtXHUwMDNlaGFzX2VtYWNfZ2VfMykge1xuJiM0MztcdGlmIChldGhxb3MtXHUwMDNlZGF0YS1cdTAwM2VoYXNfZW1hY19nZV8zKSB7XG4gXHRcdGlmIChzcGVlZCA9PSBTUEVFRF8xMDAwKSB7XG4gXHRcdFx0cmdtaWlfd3JpdGVsKGV0aHFvcywgMHgxODAwMDAwLCBTRENDX1RFU1RfQ1RMKTtcbiBcdFx0XHRyZ21paV93cml0ZWwoZXRocW9zLCAweDJDMDEwODAwLCBTRENDX1VTUl9DVEwpO1xuQEAgLTUzOCw3ICYjNDM7NTc4LDcgQEAgc3RhdGljIHZvaWQgZXRocW9zX2ZpeF9tYWNfc3BlZWRfcmdtaWkodm9pZCAqYnNwX3ByaXYsXG4gXHRcdFx0ICAgICAgU0RDQ19IQ19SRUdfRExMX0NPTkZJRyk7XG4gXG4gXHRcdC8qIFNldCBVU1JfQ1RMIGJpdCAyNiB3aXRoIG1hc2sgb2YgMyBiaXRzICovXG4tXHRcdGlmICghZXRocW9zLVx1MDAzZWhhc19lbWFjX2dlXzMpXG4mIzQzO1x0XHRpZiAoIWV0aHFvcy1cdTAwM2VkYXRhLVx1MDAzZWhhc19lbWFjX2dlXzMpXG4gXHRcdFx0cmdtaWlfdXBkYXRlbChldGhxb3MsIEdFTk1BU0soMjYsIDI0KSwgQklUKDI2KSxcbiBcdFx0XHRcdCAgICAgIFNEQ0NfVVNSX0NUTCk7XG4gXG5AQCAtNjAxLDEwICYjNDM7NjQxLDE5IEBAIHN0YXRpYyBpbnQgcWNvbV9ldGhxb3Nfc2VyZGVzX3Bvd2VydXAoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKnByaXYpXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuJiM0MztcdHJldCA9IHBoeV9zZXRfbW9kZV9leHQoZXRocW9zLVx1MDAzZXNlcmRlc19waHksIFBIWV9NT0RFX0VUSEVSTkVULFxuJiM0MztcdFx0XHQgICAgICAgZXRocW9zLVx1MDAzZXBoeV9tb2RlKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0Z290byBlcnJfb3V0O1xuJiM0MztcbiBcdHJldCA9IHBoeV9wb3dlcl9vbihldGhxb3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4gXHRpZiAocmV0KVxuLVx0XHRwaHlfZXhpdChldGhxb3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4mIzQzO1x0XHRnb3RvIGVycl9vdXQ7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIFxuJiM0MztlcnJfb3V0OlxuJiM0MztcdHBoeV9leGl0KGV0aHFvcy1cdTAwM2VzZXJkZXNfcGh5KTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTYyMyw2ICYjNDM7NjcyLDEyIEBAIHN0YXRpYyBpbnQgZXRocW9zX21hY19maW5pc2hfc2VyZGVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICpwcml2LFxuIFx0c3RydWN0IHFjb21fZXRocW9zICpldGhxb3MgPSBwcml2O1xuIFx0aW50IHJldCA9IDA7XG4gXG4mIzQzO1x0LyogVGhlIGludGVyZmFjZSBtb2RlIGlzIG9ubHkga25vd24gb25jZSBwaHlsaW5rIGhhcyByZXNvbHZlZCBpdCBhbmRcbiYjNDM7XHQgKiBtYXkgY2hhbmdlIGF0IHJ1bnRpbWUsIHNvIGtlZXAgaXQgaW4gc3luYyBmb3IgbGF0ZXJcbiYjNDM7XHQgKiBzZXJkZXNfcG93ZXJ1cCgpL3NlcmRlc19wb3dlcmRvd24oKSBjYWxscy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRldGhxb3MtXHUwMDNlcGh5X21vZGUgPSBpbnRlcmZhY2U7XG4mIzQzO1xuIFx0cWNvbV9ldGhxb3Nfc2V0X3NnbWlpX2xvb3BiYWNrKGV0aHFvcywgZmFsc2UpO1xuIFxuIFx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkgfHxcbkBAIC02ODEsNiAmIzQzOzczNiwxMTUgQEAgc3RhdGljIHZvaWQgZXRocW9zX3B0cF9jbGtfZnJlcV9jb25maWcoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0bmV0ZGV2X2RiZyhwcml2LVx1MDAzZWRldiwgXCYjMzQ7UFRQIHJhdGUgJWx1XFxuXCYjMzQ7LCBwbGF0X2RhdC1cdTAwM2VjbGtfcHRwX3JhdGUpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBldGhxb3NfaGxvc19zZXR1cChzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcyxcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IGV0aHFvcy1cdTAwM2VwZGV2O1xuJiM0MztcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGV0aHFvcy1cdTAwM2VyZ21paV9iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlX2J5bmFtZShwZGV2LCBcJiMzNDtyZ21paVwmIzM0Oyk7XG4mIzQzO1x0aWYgKElTX0VSUihldGhxb3MtXHUwMDNlcmdtaWlfYmFzZSkpXG4mIzQzO1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZXRocW9zLVx1MDAzZXJnbWlpX2Jhc2UpLFxuJiM0MztcdFx0XHRcdCAgICAgXCYjMzQ7RmFpbGVkIHRvIG1hcCByZ21paSByZXNvdXJjZVxcblwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdGV0aHFvcy1cdTAwM2VsaW5rX2NsayA9IGRldm1fY2xrX2dldChkZXYsIGV0aHFvcy1cdTAwM2VkYXRhLVx1MDAzZWxpbmtfY2xrX25hbWUgPzogXCYjMzQ7cmdtaWlcJiMzNDspO1xuJiM0MztcdGlmIChJU19FUlIoZXRocW9zLVx1MDAzZWxpbmtfY2xrKSlcbiYjNDM7XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihldGhxb3MtXHUwMDNlbGlua19jbGspLFxuJiM0MztcdFx0XHRcdCAgICAgXCYjMzQ7RmFpbGVkIHRvIGdldCBsaW5rX2Nsa1xcblwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdHBsYXRfZGF0LVx1MDAzZWNsa3NfY29uZmlnID0gZXRocW9zX2Nsa3NfY29uZmlnO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBldGhxb3NfY2xrc19jb25maWcoZXRocW9zLCB0cnVlKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgZXRocW9zX2Nsa3NfZGlzYWJsZSwgZXRocW9zKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0ZXRocW9zX3NldF9jbGtfdHhfcmF0ZShldGhxb3MsIE5VTEwsIHBsYXRfZGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UsIFNQRUVEXzEwMDApO1xuJiM0MztcdHFjb21fZXRocW9zX3NldF9zZ21paV9sb29wYmFjayhldGhxb3MsIHRydWUpO1xuJiM0MztcdGV0aHFvc19zZXRfZnVuY19jbGtfZW4oZXRocW9zKTtcbiYjNDM7XG4mIzQzO1x0c3dpdGNoIChldGhxb3MtXHUwMDNlcGh5X21vZGUpIHtcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDpcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEOlxuJiM0MztcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RYSUQ6XG4mIzQzO1x0XHRwbGF0X2RhdC1cdTAwM2VmaXhfbWFjX3NwZWVkID0gZXRocW9zX2ZpeF9tYWNfc3BlZWRfcmdtaWk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6XG4mIzQzO1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4mIzQzO1x0XHRwbGF0X2RhdC1cdTAwM2VmaXhfbWFjX3NwZWVkID0gZXRocW9zX2ZpeF9tYWNfc3BlZWRfc2dtaWk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRwbGF0X2RhdC1cdTAwM2VzZXRfY2xrX3R4X3JhdGUgPSBldGhxb3Nfc2V0X2Nsa190eF9yYXRlO1xuJiM0MztcdHBsYXRfZGF0LVx1MDAzZWR1bXBfZGVidWdfcmVncyA9IHJnbWlpX2R1bXA7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgZXRocW9zX3NjbWlfcGRfbmFtZXNbXSA9IHsgXCYjMzQ7Y29yZVwmIzM0OywgXCYjMzQ7bWRpb1wmIzM0OyB9O1xuJiM0MztcbiYjNDM7c3RhdGljIGludCBldGhxb3Nfc2NtaV9zZXR1cChzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcyxcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGRldl9wbV9kb21haW5fYXR0YWNoX2RhdGEgcGRfZGF0YSA9IHtcbiYjNDM7XHRcdC5wZF9uYW1lc1x0PSBldGhxb3Nfc2NtaV9wZF9uYW1lcyxcbiYjNDM7XHRcdC5udW1fcGRfbmFtZXNcdD0gQVJSQVlfU0laRShldGhxb3Nfc2NtaV9wZF9uYW1lcyksXG4mIzQzO1x0XHQucGRfZmxhZ3NcdD0gUERfRkxBR19ERVZfTElOS19PTixcbiYjNDM7XHR9O1xuJiM0MztcbiYjNDM7XHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gZXRocW9zLVx1MDAzZXBkZXY7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gZGV2bV9wbV9kb21haW5fYXR0YWNoX2xpc3QoZGV2LCBcdTAwMjZwZF9kYXRhLCBcdTAwMjZldGhxb3MtXHUwMDNlcGRzKTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsXG4mIzQzO1x0XHRcdFx0ICAgICBcJiMzNDtGYWlsZWQgdG8gYXR0YWNoIHBvd2VyIGRvbWFpbnNcXG5cJiMzNDspO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFRoZSBTZXJEZXMgbGFuZSwgaXRzIGNsb2NrcyBhbmQgdGhlIE1BQyBBWEkvQUhCIGNsb2NrcyBhcmUgb3duZWQgYnlcbiYjNDM7XHQgKiBmaXJtd2FyZSBhbmQgYnJvdWdodCB1cCB0aHJvdWdoIHRoZSBTQ01JIHBvd2VyIGRvbWFpbnMgYWJvdmUuIFRoZVxuJiM0MztcdCAqIE1BQyB3cmFwcGVyIGl0c2VsZiwgaG93ZXZlciBpcyBpbiB0aGUga2VybmVsJiMzOTtzIHJlZ2lzdGVyIHNwYWNlOiB0aGVcbiYjNDM7XHQgKiBtdXggdGhhdCBmZWVkcyB0aGUgU2VyRGVzIHJlY292ZXJlZCBSWCBjbG9jayBpbnRvIHRoZSBNQUMmIzM5O3MgY2xrX3J4X2lcbiYjNDM7XHQgKiBpcyBub3QgY29uZmlndXJlZCBieSBmaXJtd2FyZS4gV2l0aG91dCBpdCwgY2xrX3J4X2kgbmV2ZXIgdG9nZ2xlc1xuJiM0MztcdCAqIGFuZCB0aGUgRE1BIFNXLXJlc2V0IHBvbGxlZCBpbiBkd21hYzRfZG1hX3Jlc2V0KCkgbmV2ZXIgY29tcGxldGVzLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogTWFwIHRoZSB3cmFwcGVyIGFuZCBwcm9ncmFtIHRoZSBzYW1lIGxvb3BiYWNrL2Z1bmN0aW9uYWwgY2xvY2sgYml0c1xuJiM0MztcdCAqIHRoZSBub24tZmlybXdhcmUgcGxhdGZvcm1zIHJlbHkgb24gKHNlZSBldGhxb3NfY2xrc19jb25maWcpIHNvIHRoZVxuJiM0MztcdCAqIFJYIGNsb2NrIGlzIHByZXNlbnQgYnkgdGhlIHRpbWUgdGhlIERNQSBlbmdpbmUgaXMgcmVzZXQuXG4mIzQzO1x0ICovXG4mIzQzO1x0ZXRocW9zLVx1MDAzZXJnbWlpX2Jhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2VfYnluYW1lKHBkZXYsIFwmIzM0O3JnbWlpXCYjMzQ7KTtcbiYjNDM7XHRpZiAoSVNfRVJSKGV0aHFvcy1cdTAwM2VyZ21paV9iYXNlKSlcbiYjNDM7XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihldGhxb3MtXHUwMDNlcmdtaWlfYmFzZSksXG4mIzQzO1x0XHRcdFx0ICAgICBcJiMzNDtGYWlsZWQgdG8gbWFwIHJnbWlpIHJlc291cmNlXFxuXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBSdW4gb24gZXZlcnkgcnVudGltZSByZXN1bWUsIHdoaWNoIHN0bW1hYyBwZXJmb3JtcyBhZnRlciB0aGUgcG93ZXJcbiYjNDM7XHQgKiBkb21haW5zIGFyZSBvbiBidXQgYmVmb3JlIHNlcmRlc19wb3dlcnVwKCkgYW5kIHRoZSBETUEgcmVzZXQsIHNvIHRoZVxuJiM0MztcdCAqIHdyYXBwZXIgaXMgYWx3YXlzIGNvbmZpZ3VyZWQgYWhlYWQgb2YgdGhlIHJlc2V0LlxuJiM0MztcdCAqL1xuJiM0MztcdHBsYXRfZGF0LVx1MDAzZWNsa3NfY29uZmlnID0gZXRocW9zX2Nsa3NfY29uZmlnO1xuJiM0MztcdHBsYXRfZGF0LVx1MDAzZWNsa19wdHBfcmF0ZSA9IGV0aHFvcy1cdTAwM2VkYXRhLVx1MDAzZXB0cF9jbGtfcmF0ZTtcbiYjNDM7XG4mIzQzO1x0c3dpdGNoIChldGhxb3MtXHUwMDNlcGh5X21vZGUpIHtcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6XG4mIzQzO1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4mIzQzO1x0XHRwbGF0X2RhdC1cdTAwM2VmaXhfbWFjX3NwZWVkID0gZXRocW9zX2ZpeF9tYWNfc3BlZWRfc2dtaWk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IHFjb21fZXRocW9zX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4ge1xuIFx0c3RydWN0IGRldmljZV9ub2RlICpucCA9IHBkZXYtXHUwMDNlZGV2Lm9mX25vZGU7XG5AQCAtNzAyLDIzICYjNDM7ODY2LDIwIEBAIHN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0XHRcdCAgICAgXCYjMzQ7ZHQgY29uZmlndXJhdGlvbiBmYWlsZWRcXG5cJiMzNDspO1xuIFx0fVxuIFxuLVx0cGxhdF9kYXQtXHUwMDNlY2xrc19jb25maWcgPSBldGhxb3NfY2xrc19jb25maWc7XG4tXG4gXHRldGhxb3MgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmV0aHFvcyksIEdGUF9LRVJORUwpO1xuIFx0aWYgKCFldGhxb3MpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0ZXRocW9zLVx1MDAzZXBoeV9tb2RlID0gcGxhdF9kYXQtXHUwMDNlcGh5X2ludGVyZmFjZTtcbiYjNDM7XG4gXHRzd2l0Y2ggKGV0aHFvcy1cdTAwM2VwaHlfbW9kZSkge1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQ6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEOlxuLVx0XHRwbGF0X2RhdC1cdTAwM2VmaXhfbWFjX3NwZWVkID0gZXRocW9zX2ZpeF9tYWNfc3BlZWRfcmdtaWk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4tXHRcdHBsYXRfZGF0LVx1MDAzZWZpeF9tYWNfc3BlZWQgPSBldGhxb3NfZml4X21hY19zcGVlZF9zZ21paTtcbiBcdFx0cGxhdF9kYXQtXHUwMDNlbWFjX2ZpbmlzaCA9IGV0aHFvc19tYWNfZmluaXNoX3NlcmRlcztcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuQEAgLTcyOCwyOCAmIzQzOzg4OSwxMyBAQCBzdGF0aWMgaW50IHFjb21fZXRocW9zX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHR9XG4gXG4gXHRldGhxb3MtXHUwMDNlcGRldiA9IHBkZXY7XG4tXHRldGhxb3MtXHUwMDNlcmdtaWlfYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgXCYjMzQ7cmdtaWlcJiMzNDspO1xuLVx0aWYgKElTX0VSUihldGhxb3MtXHUwMDNlcmdtaWlfYmFzZSkpXG4tXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihldGhxb3MtXHUwMDNlcmdtaWlfYmFzZSksXG4tXHRcdFx0XHQgICAgIFwmIzM0O0ZhaWxlZCB0byBtYXAgcmdtaWkgcmVzb3VyY2VcXG5cJiMzNDspO1xuLVxuIFx0ZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuLVx0ZXRocW9zLVx1MDAzZXJnbWlpX3BvciA9IGRhdGEtXHUwMDNlcmdtaWlfcG9yO1xuLVx0ZXRocW9zLVx1MDAzZW51bV9yZ21paV9wb3IgPSBkYXRhLVx1MDAzZW51bV9yZ21paV9wb3I7XG4tXHRldGhxb3MtXHUwMDNlcmdtaWlfY29uZmlnX2xvb3BiYWNrX2VuID0gZGF0YS1cdTAwM2VyZ21paV9jb25maWdfbG9vcGJhY2tfZW47XG4tXHRldGhxb3MtXHUwMDNlaGFzX2VtYWNfZ2VfMyA9IGRhdGEtXHUwMDNlaGFzX2VtYWNfZ2VfMztcbi1cdGV0aHFvcy1cdTAwM2VuZWVkc19zZ21paV9sb29wYmFjayA9IGRhdGEtXHUwMDNlbmVlZHNfc2dtaWlfbG9vcGJhY2s7XG4mIzQzO1x0ZXRocW9zLVx1MDAzZWRhdGEgPSBkYXRhO1xuIFxuLVx0ZXRocW9zLVx1MDAzZWxpbmtfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgZGF0YS1cdTAwM2VsaW5rX2Nsa19uYW1lID86IFwmIzM0O3JnbWlpXCYjMzQ7KTtcbi1cdGlmIChJU19FUlIoZXRocW9zLVx1MDAzZWxpbmtfY2xrKSlcbi1cdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGV0aHFvcy1cdTAwM2VsaW5rX2NsayksXG4tXHRcdFx0XHQgICAgIFwmIzM0O0ZhaWxlZCB0byBnZXQgbGlua19jbGtcXG5cJiMzNDspO1xuJiM0MztcdGlmIChXQVJOX09OKCFkYXRhLVx1MDAzZXNldHVwKSlcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0cmV0ID0gZXRocW9zX2Nsa3NfY29uZmlnKGV0aHFvcywgdHJ1ZSk7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgZXRocW9zX2Nsa3NfZGlzYWJsZSwgZXRocW9zKTtcbiYjNDM7XHRyZXQgPSBkYXRhLVx1MDAzZXNldHVwKGV0aHFvcywgcGxhdF9kYXQpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbkBAIC03NTgsMjQgJiM0Mzs5MDQsMTEgQEAgc3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZXRocW9zLVx1MDAzZXNlcmRlc19waHkpLFxuIFx0XHRcdFx0ICAgICBcJiMzNDtGYWlsZWQgdG8gZ2V0IHNlcmRlcyBwaHlcXG5cJiMzNDspO1xuIFxuLVx0ZXRocW9zX3NldF9jbGtfdHhfcmF0ZShldGhxb3MsIE5VTEwsIHBsYXRfZGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UsXG4tXHRcdFx0ICAgICAgIFNQRUVEXzEwMDApO1xuLVxuLVx0cWNvbV9ldGhxb3Nfc2V0X3NnbWlpX2xvb3BiYWNrKGV0aHFvcywgdHJ1ZSk7XG4tXHRldGhxb3Nfc2V0X2Z1bmNfY2xrX2VuKGV0aHFvcyk7XG4tXG4tXHQvKiBUaGUgY2xvY2tzIGFyZSBjb250cm9sbGVkIGJ5IGZpcm13YXJlLCBzbyB3ZSBkb24mIzM5O3Qga25vdyBmb3IgY2VydGFpblxuLVx0ICogd2hhdCBjbG9jayByYXRlIGlzIGJlaW5nIHVzZWQuIEhhcmR3YXJlIGRvY3VtZW50YXRpb24gbWVudGlvbnMgdGhhdFxuLVx0ICogdGhlIEFIQiBzbGF2ZSBjbG9jayB3aWxsIGJlIGluIHRoZSByYW5nZSBvZiA1MCB0byAxMDBNSHosIHdoaWNoXG4tXHQgKiBlcXVhdGVzIHRvIGEgTURDIGJldHdlZW4gMS4xOSBhbmQgMi4zOE1Iei5cbi1cdCAqL1xuIFx0cGxhdF9kYXQtXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfNjBfMTAwTTtcbiBcdHBsYXRfZGF0LVx1MDAzZWJzcF9wcml2ID0gZXRocW9zO1xuLVx0cGxhdF9kYXQtXHUwMDNlc2V0X2Nsa190eF9yYXRlID0gZXRocW9zX3NldF9jbGtfdHhfcmF0ZTtcbi1cdHBsYXRfZGF0LVx1MDAzZWR1bXBfZGVidWdfcmVncyA9IHJnbWlpX2R1bXA7XG4gXHRwbGF0X2RhdC1cdTAwM2VwdHBfY2xrX2ZyZXFfY29uZmlnID0gZXRocW9zX3B0cF9jbGtfZnJlcV9jb25maWc7XG4gXHRwbGF0X2RhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM0O1xuLVx0aWYgKGV0aHFvcy1cdTAwM2VoYXNfZW1hY19nZV8zKVxuJiM0MztcdGlmIChkYXRhLVx1MDAzZWhhc19lbWFjX2dlXzMpXG4gXHRcdHBsYXRfZGF0LVx1MDAzZWR3bWFjNF9hZGRycyA9IFx1MDAyNmRhdGEtXHUwMDNlZHdtYWM0X2FkZHJzO1xuIFx0cGxhdF9kYXQtXHUwMDNlcG10ID0gdHJ1ZTtcbiBcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobnAsIFwmIzM0O3NucHMsdHNvXCYjMzQ7KSlcbkBAIC03OTksNiAmIzQzOzkzMiw3IEBAIHN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBxY29tX2V0aHFvc19tYXRjaFtdID0ge1xuIFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3Fjb20scWNzNDA0LWV0aHFvc1wmIzM0OywgLmRhdGEgPSBcdTAwMjZlbWFjX3YyXzNfMF9kYXRhfSxcbiYjNDM7XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cWNvbSxzYTgyNTVwLWV0aHFvc1wmIzM0OywgLmRhdGEgPSBcdTAwMjZlbWFjX3Y0XzBfMF9zY21pX2RhdGF9LFxuIFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3Fjb20sc2E4Nzc1cC1ldGhxb3NcJiMzNDssIC5kYXRhID0gXHUwMDI2ZW1hY192NF8wXzBfZGF0YX0sXG4gXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cWNvbSxzYzgyODB4cC1ldGhxb3NcJiMzNDssIC5kYXRhID0gXHUwMDI2ZW1hY192M18wXzBfZGF0YX0sXG4gXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cWNvbSxzbTgxNTAtZXRocW9zXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNmVtYWNfdjJfMV8wX2RhdGF9LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMgYi9kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jXG5pbmRleCBlOTVkMzkxYTZkYzIzMy4uYjcyMGU0ZTkwMjhjYzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jXG5AQCAtNTQ0LDcgJiM0Mzs1NDQsNyBAQCBzdGF0aWMgaW50IGFxcl9nZW4xX3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0aWYgKCFwaHlkZXYtXHUwMDNlbGluayB8fCBwaHlkZXYtXHUwMDNlYXV0b25lZyA9PSBBVVRPTkVHX0RJU0FCTEUpXG4mIzQzO1x0aWYgKCFwaHlkZXYtXHUwMDNlbGluaylcbiBcdFx0cmV0dXJuIDA7XG4gXG4gXHQvKiBUaGUgc3RhdHVzIHJlZ2lzdGVyIGlzIG5vdCBpbW1lZGlhdGVseSBjb3JyZWN0IG9uIGxpbmUgc2lkZSBsaW5rIHVwLlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L3F1YWxjb21tL0tjb25maWcgYi9kcml2ZXJzL3BoeS9xdWFsY29tbS9LY29uZmlnXG5pbmRleCA2MGEwZWFkMTI3ZmE5Zi4uYTdjZjM0OGY2YTdhYTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9LY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3BoeS9xdWFsY29tbS9LY29uZmlnXG5AQCAtMjMyLDMgJiM0MzsyMzIsMTQgQEAgY29uZmlnIFBIWV9RQ09NX1NHTUlJX0VUSFxuIFx0aGVscFxuIFx0ICBFbmFibGUgdGhpcyB0byBzdXBwb3J0IHRoZSBpbnRlcm5hbCBTZXJEZXMvU0dNSUkgUEhZIG9uIHZhcmlvdXNcbiBcdCAgUXVhbGNvbW0gY2hpcHNldHMuXG4mIzQzO1xuJiM0Mztjb25maWcgUEhZX1FDT01fU0dNSUlfRVRIX1NDTUlcbiYjNDM7XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBEV01BQyBTR01JSSBTZXJEZXMvUEhZIGRyaXZlciAoZmlybXdhcmUgbWFuYWdlZClcJiMzNDtcbiYjNDM7XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcbiYjNDM7XHRzZWxlY3QgR0VORVJJQ19QSFlcbiYjNDM7XHRzZWxlY3QgUE1cbiYjNDM7XHRzZWxlY3QgUE1fR0VORVJJQ19ET01BSU5TXG4mIzQzO1x0aGVscFxuJiM0MztcdCAgRW5hYmxlIHRoaXMgdG8gc3VwcG9ydCB0aGUgaW50ZXJuYWwgU2VyRGVzL1NHTUlJIFBIWSBvbiBRdWFsY29tbVxuJiM0MztcdCAgY2hpcHNldHMgd2hlcmUgdGhlIFNlckRlcyBoYXJkd2FyZSAoY2xvY2tzIGFuZCByZWdpc3RlcnMpIGlzIG93bmVkXG4mIzQzO1x0ICBieSB0aGUgZmlybXdhcmUuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcXVhbGNvbW0vTWFrZWZpbGUgYi9kcml2ZXJzL3BoeS9xdWFsY29tbS9NYWtlZmlsZVxuaW5kZXggYjcxYTZhMGJlZDNmMTQuLjAzMmU1ODJmMmUxYWY5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9waHkvcXVhbGNvbW0vTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL01ha2VmaWxlXG5AQCAtMjUsMyAmIzQzOzI1LDQgQEAgb2JqLSQoQ09ORklHX1BIWV9RQ09NX1VTQl9TUylcdFx0JiM0Mzs9IHBoeS1xY29tLXVzYi1zcy5vXG4gb2JqLSQoQ09ORklHX1BIWV9RQ09NX1VTQl9TTlBTX0ZFTVRPX1YyKSYjNDM7PSBwaHktcWNvbS1zbnBzLWZlbXRvLXYyLm9cbiBvYmotJChDT05GSUdfUEhZX1FDT01fSVBRODA2WF9VU0IpXHQmIzQzOz0gcGh5LXFjb20taXBxODA2eC11c2Iub1xuIG9iai0kKENPTkZJR19QSFlfUUNPTV9TR01JSV9FVEgpXHQmIzQzOz0gcGh5LXFjb20tc2dtaWktZXRoLm9cbiYjNDM7b2JqLSQoQ09ORklHX1BIWV9RQ09NX1NHTUlJX0VUSF9TQ01JKVx0JiM0Mzs9IHBoeS1xY29tLXNnbWlpLWV0aC1zY21pLm9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS1zZ21paS1ldGgtc2NtaS5jIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tc2dtaWktZXRoLXNjbWkuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5hYTdjZTkzOTNiMjg1M1xuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tc2dtaWktZXRoLXNjbWkuY1xuQEAgLTAsMCAmIzQzOzEsMTY1IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiYjNDM7LypcbiYjNDM7ICogQ29weXJpZ2h0IChjKSBRdWFsY29tbSBUZWNobm9sb2dpZXMsIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4mIzQzOyAqXG4mIzQzOyAqIEZpcm13YXJlLW1hbmFnZWQgdmFyaWFudCBvZiB0aGUgUXVhbGNvbW0gRFdNQUMgU0dNSUkgU2VyRGVzL1BIWSBkcml2ZXIuXG4mIzQzOyAqL1xuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9kZXZpY2UtaWQvb2YuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkvcGh5LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcG1fZG9tYWluLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcG1fcnVudGltZS5oXHUwMDNlXG4mIzQzO1xuJiM0MztzdHJ1Y3QgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaSB7XG4mIzQzO1x0dW5zaWduZWQgaW50IHBlcmZfc3RhdGU7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfcG93ZXJfb24oc3RydWN0IHBoeSAqcGh5KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWkgKnByaXYgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTtcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwaHktXHUwMDNlZGV2LnBhcmVudDtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSBwbV9ydW50aW1lX3Jlc3VtZV9hbmRfZ2V0KGRldik7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IGRldl9wbV9nZW5wZF9zZXRfcGVyZm9ybWFuY2Vfc3RhdGUoZGV2LCBwcml2LVx1MDAzZXBlcmZfc3RhdGUpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdHBtX3J1bnRpbWVfcHV0KGRldik7XG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0dXNsZWVwX3JhbmdlKDUwMDAsIDEwMDAwKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9wb3dlcl9vZmYoc3RydWN0IHBoeSAqcGh5KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gcGh5LVx1MDAzZWRldi5wYXJlbnQ7XG4mIzQzO1xuJiM0MztcdGRldl9wbV9nZW5wZF9zZXRfcGVyZm9ybWFuY2Vfc3RhdGUoZGV2LCAwKTtcbiYjNDM7XHRwbV9ydW50aW1lX3B1dChkZXYpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3ZhbGlkYXRlKHN0cnVjdCBwaHkgKnBoeSwgZW51bSBwaHlfbW9kZSBtb2RlLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgaW50IHN1Ym1vZGUsXG4mIzQzO1x0XHRcdFx0XHQgICAgICB1bmlvbiBwaHlfY29uZmlndXJlX29wdHMgKm9wdHMpXG4mIzQzO3tcbiYjNDM7XHRpZiAobW9kZSAhPSBQSFlfTU9ERV9FVEhFUk5FVClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHN1Ym1vZGUpIHtcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg6XG4mIzQzO1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYOlxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3NldF9tb2RlKHN0cnVjdCBwaHkgKnBoeSwgZW51bSBwaHlfbW9kZSBtb2RlLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgaW50IHN1Ym1vZGUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaSAqcHJpdiA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpO1xuJiM0MztcdHN0cnVjdCBkZXZpY2UgKmRldiA9IHBoeS1cdTAwM2VkZXYucGFyZW50O1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfdmFsaWRhdGUocGh5LCBtb2RlLCBzdWJtb2RlLCBOVUxMKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cHJpdi1cdTAwM2VwZXJmX3N0YXRlID0gKHN1Ym1vZGUgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCkgP1xuJiM0MztcdFx0XHQgICBTUEVFRF8yNTAwIDogU1BFRURfMTAwMDtcbiYjNDM7XG4mIzQzO1x0aWYgKHBoeS1cdTAwM2Vwb3dlcl9jb3VudCA9PSAwKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHJldHVybiBkZXZfcG1fZ2VucGRfc2V0X3BlcmZvcm1hbmNlX3N0YXRlKGRldiwgcHJpdi1cdTAwM2VwZXJmX3N0YXRlKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlfb3BzIHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfb3BzID0ge1xuJiM0MztcdC5wb3dlcl9vblx0PSBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Bvd2VyX29uLFxuJiM0MztcdC5wb3dlcl9vZmZcdD0gcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9wb3dlcl9vZmYsXG4mIzQzO1x0LnNldF9tb2RlXHQ9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfc2V0X21vZGUsXG4mIzQzO1x0LnZhbGlkYXRlXHQ9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfdmFsaWRhdGUsXG4mIzQzO1x0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3J1bnRpbWVfZGlzYWJsZSh2b2lkICpkYXRhKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gZGF0YTtcbiYjNDM7XG4mIzQzO1x0cG1fcnVudGltZV9kaXNhYmxlKGRldik7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWkgKnByaXY7XG4mIzQzO1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4mIzQzO1x0c3RydWN0IHBoeV9wcm92aWRlciAqcHJvdmlkZXI7XG4mIzQzO1x0c3RydWN0IHBoeSAqcGh5O1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRpZiAoIXByaXYpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0cHJpdi1cdTAwM2VwZXJmX3N0YXRlID0gU1BFRURfMTAwMDtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBFbmFibGUgcnVudGltZSBQTSBvbiB0aGUgcHJvdmlkZXIgYmVmb3JlIGNyZWF0aW5nIHRoZSBQSFkgc28gdGhhdCB0aGVcbiYjNDM7XHQgKiBQSFkgY29yZSBlbmFibGVzIHJ1bnRpbWUgUE0gb24gdGhlIFBIWSBkZXZpY2UgdG9vLiBUaGUgc2luZ2xlIFNDTUlcbiYjNDM7XHQgKiBwb3dlciBkb21haW4gaGFzIGFscmVhZHkgYmVlbiBhdHRhY2hlZCB0byB0aGlzIGRldmljZSBieSB0aGUgZHJpdmVyXG4mIzQzO1x0ICogY29yZSwgc28gcnVudGltZSBQTSB2b3RlcyBwcm9wYWdhdGUgdG8gZmlybXdhcmUgdGhyb3VnaCB0aGUgZ2VucGRcbiYjNDM7XHQgKiBkZXZpY2UgbGluay4gTm8gcmVnaXN0ZXIgb3IgY2xvY2sgYWNjZXNzIGlzIGRvbmUgaGVyZSAtIGZpcm13YXJlIG93bnNcbiYjNDM7XHQgKiB0aGUgU2VyRGVzLlxuJiM0MztcdCAqL1xuJiM0MztcdHBtX3J1bnRpbWVfZW5hYmxlKGRldik7XG4mIzQzO1xuJiM0MztcdHJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfcnVudGltZV9kaXNhYmxlLCBkZXYpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRwaHkgPSBkZXZtX3BoeV9jcmVhdGUoZGV2LCBOVUxMLCBcdTAwMjZxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX29wcyk7XG4mIzQzO1x0aWYgKElTX0VSUihwaHkpKVxuJiM0MztcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHBoeSksIFwmIzM0O2ZhaWxlZCB0byBjcmVhdGUgdGhlIHBoeVxcblwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdHBoeV9zZXRfZHJ2ZGF0YShwaHksIHByaXYpO1xuJiM0MztcbiYjNDM7XHRwcm92aWRlciA9IGRldm1fb2ZfcGh5X3Byb3ZpZGVyX3JlZ2lzdGVyKGRldiwgb2ZfcGh5X3NpbXBsZV94bGF0ZSk7XG4mIzQzO1x0aWYgKElTX0VSUihwcm92aWRlcikpXG4mIzQzO1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJvdmlkZXIpLFxuJiM0MztcdFx0XHRcdCAgICAgXCYjMzQ7ZmFpbGVkIHRvIHJlZ2lzdGVyIHRoZSBQSFkgcHJvdmlkZXJcXG5cJiMzNDspO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9vZl9tYXRjaFtdID0ge1xuJiM0MztcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtxY29tLHNhODI1NXAtZHdtYWMtc2dtaWktcGh5XCYjMzQ7IH0sXG4mIzQzO1x0eyB9XG4mIzQzO307XG4mIzQzO01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfb2ZfbWF0Y2gpO1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9kcml2ZXIgPSB7XG4mIzQzO1x0LnByb2JlXHQ9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfcHJvYmUsXG4mIzQzO1x0LmRyaXZlciA9IHtcbiYjNDM7XHRcdC5uYW1lID0gXCYjMzQ7cWNvbS1kd21hYy1zZ21paS1waHktc2NtaVwmIzM0OyxcbiYjNDM7XHRcdC5vZl9tYXRjaF90YWJsZSA9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfb2ZfbWF0Y2gsXG4mIzQzO1x0fSxcbiYjNDM7fTtcbiYjNDM7bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX2RyaXZlcik7XG4mIzQzO1xuJiM0MztNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7UXVhbGNvbW0gRFdNQUMgU0dNSUkgUEhZIGRyaXZlciAoZmlybXdhcmUgbWFuYWdlZClcJiMzNDspO1xuJiM0MztNT0RVTEVfQVVUSE9SKFwmIzM0O0JhcnRvc3ogR29sYXN6ZXdza2kgXHUwMDNjYmFydG9zei5nb2xhc3pld3NraUBvc3MucXVhbGNvbW0uY29tXHUwMDNlXCYjMzQ7KTtcbiYjNDM7TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNzozMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgcHJpbWFyaWx5IGFkZHMgc3VwcG9ydCBmb3IgYSBmaXJtd2FyZS1tYW5hZ2VkIFF1YWxjb21tIEV0aGVybmV0IEVUSFFPUyBkZXZpY2UgYW5kIGl0cyBjb3JyZXNwb25kaW5nIFNlckRlcy9TR01JSSBQSFkuIFRoZXNlIGFyZSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXJzIChRdWFsY29tbSBTb0NzKSBhbmQgYSBtaW5vciBmaXggaW4gYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgZHJpdmVyIChBcXVhbnRpYSkuIFN1Y2ggaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZGV2aWNlcyBhbmQgUEhZcyBhcmUgbm90IGVtdWxhdGVkIG9yIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB1c2VkIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGMzNTNiOWQ4NmVhMThhODRlNTM5N2RlYTI2MTI2MGU5ZTQxZjNhNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDEzIDE3OjMzOjIxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuN2ktYTIwLWdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjdpLWEyMC1nbWFjLnlhbWwKaW5kZXggMjNlOTJiZTMzYWM4NjAuLmIxMjYzMjU0NTY3M2IyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW43aS1hMjAtZ21hYy55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjdpLWEyMC1nbWFjLnlhbWwKQEAgLTQwLDYgJiM0Mzs0MCw5IEBAIHByb3BlcnRpZXM6CiAgICAgZGVzY3JpcHRpb246CiAgICAgICBQSFkgcmVndWxhdG9yCiAKJiM0MzsgIHBvd2VyLWRvbWFpbnM6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiByZXF1aXJlZDoKICAgLSBjb21wYXRpYmxlCiAgIC0gcmVnCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sCmluZGV4IGZjNDQ1YWQ1YTFmMWFjLi40NDhlNjE3Y2RkYzRjZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWwKQEAgLTE0MCw2ICYjNDM7MTQwLDkgQEAgcHJvcGVydGllczoKICAgICAgICAgICAtIGRlc2NyaXB0aW9uOiBvZmZzZXQgb2YgdGhlIGNvbnRyb2wgcmVnaXN0ZXIKICAgICAgICAgICAtIGRlc2NyaXB0aW9uOiBzaGlmdCB3aXRoaW4gdGhlIGNvbnRyb2wgcmVnaXN0ZXIKIAomIzQzOyAgcG93ZXItZG9tYWluczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKIHBhdHRlcm5Qcm9wZXJ0aWVzOgogICAmIzM0O15tZGlvWzAtOV0kJiMzNDs6CiAgICAgdHlwZTogb2JqZWN0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1sb2dpYyxtZXNvbi1kd21hYy55YW1sCmluZGV4IDVjOTE3MTZkMWYyMWU2Li45YzljYzNlZjM4NGRhMCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWwKQEAgLTE1OCw2ICYjNDM7MTU4LDkgQEAgcHJvcGVydGllczoKICAgaW50ZXJydXB0LW5hbWVzOgogICAgIGNvbnN0OiBtYWNpcnEKIAomIzQzOyAgcG93ZXItZG9tYWluczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKIHJlcXVpcmVkOgogICAtIGNvbXBhdGlibGUKICAgLSByZWcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbAppbmRleCA2NTg4MmZmNzlkOGQ3ZS4uMDgxYTIxMTc0ZmQ0MmIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwKQEAgLTk1LDYgJiM0Mzs5NSw5IEBAIHByb3BlcnRpZXM6CiAgICAgICAgICAgLSBkZXNjcmlwdGlvbjogT3B0aW9uYWwgb2Zmc2V0IG9mIHJlZ2lzdGVyIGNvbnRyb2xsaW5nIFRYRCBkZWxheQogICAgICAgICAgIC0gZGVzY3JpcHRpb246IE9wdGlvbmFsIG9mZnNldCBvZiByZWdpc3RlciBjb250cm9sbGluZyBSWEQgZGVsYXkKIAomIzQzOyAgcG93ZXItZG9tYWluczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKIHJlcXVpcmVkOgogICAtIGNvbXBhdGlibGUKICAgLSByZWcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWwKaW5kZXggNjJjMWRhMzZhMmI1YTIuLmU0MTg1MTkzMWI5NDc1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbApAQCAtNDcsNiAmIzQzOzQ3LDkgQEAgcHJvcGVydGllczoKICAgaW50ZXJydXB0LW5hbWVzOgogICAgIGNvbnN0OiBtYWNpcnEKIAomIzQzOyAgcG93ZXItZG9tYWluczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKIHJlcXVpcmVkOgogICAtIGNvbXBhdGlibGUKICAgLSBjbG9ja3MKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbG9vbmdzb24sbHMxYi1nbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWItZ21hYy55YW1sCmluZGV4IGM0ZjMyMjRiYWQzODdiLi5jOWExMzFiOGQ4MzA0YyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFiLWdtYWMueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWItZ21hYy55YW1sCkBAIC02Niw2ICYjNDM7NjYsOSBAQCBwcm9wZXJ0aWVzOgogICAgICAgLSBtaWkKICAgICAgIC0gcmdtaWktaWQKIAomIzQzOyAgcG93ZXItZG9tYWluczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKIHJlcXVpcmVkOgogICAtIGNvbXBhdGlibGUKICAgLSByZWcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbG9vbmdzb24sbHMxYy1lbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWMtZW1hYy55YW1sCmluZGV4IDk5MDAxYjk0MGI4MzYxLi40OWRiMTg0MjNkZDgwNyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFjLWVtYWMueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWMtZW1hYy55YW1sCkBAIC02NSw2ICYjNDM7NjUsOSBAQCBwcm9wZXJ0aWVzOgogICAgICAgLSBtaWkKICAgICAgIC0gcm1paQogCiYjNDM7ICBwb3dlci1kb21haW5zOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwogcmVxdWlyZWQ6CiAgIC0gY29tcGF0aWJsZQogICAtIHJlZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsZHdtYWMtaW14LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxkd21hYy1pbXgueWFtbAppbmRleCBlNWRiMzQ2YmVjYTk2NC4uYjI0MGM3NmU3ZGQ1MjUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGR3bWFjLWlteC55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGR3bWFjLWlteC55YW1sCkBAIC04Myw2ICYjNDM7ODMsOSBAQCBwcm9wZXJ0aWVzOgogICAgIGRlc2NyaXB0aW9uOgogICAgICAgVG8gc2VsZWN0IFJNSUkgcmVmZXJlbmNlIGNsb2NrIGZyb20gZXh0ZXJuYWwuCiAKJiM0MzsgIHBvd2VyLWRvbWFpbnM6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiByZXF1aXJlZDoKICAgLSBjb21wYXRpYmxlCiAgIC0gY2xvY2tzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxscGMxODUwLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxscGMxODUwLWR3bWFjLnlhbWwKaW5kZXggMDVhY2Q5YmM3NjE2MzUuLmY2MTE4OGFiMGRiZTNjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxscGMxODUwLWR3bWFjLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsbHBjMTg1MC1kd21hYy55YW1sCkBAIC01MSw2ICYjNDM7NTEsOSBAQCBwcm9wZXJ0aWVzOgogICAgIGl0ZW1zOgogICAgICAgLSBjb25zdDogc3RtbWFjZXRoCiAKJiM0MzsgIHBvd2VyLWRvbWFpbnM6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiByZXF1aXJlZDoKICAgLSBjb21wYXRpYmxlCiAgIC0gcmVnCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxzMzItZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sCmluZGV4IDc1M2EwNDk0MTY1OWI4Li5mY2FkMjI3NDMwMmQ5YyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWwKQEAgLTgxLDYgJiM0Mzs4MSw5IEBAIHByb3BlcnRpZXM6CiAgICAgICAtIGNvbnN0OiByeAogICAgICAgLSBjb25zdDogcHRwX3JlZgogCiYjNDM7ICBwb3dlci1kb21haW5zOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwogcmVxdWlyZWQ6CiAgIC0gY2xvY2tzCiAgIC0gY2xvY2stbmFtZXMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbAppbmRleCA0MjM5NTljYjkyOGQ5NC4uZWY1MjBmODEwNTc3M2UgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sZXRocW9zLnlhbWwKQEAgLTg2LDYgJiM0Mzs4Niw5IEBAIHByb3BlcnRpZXM6CiAgIHBoeS1uYW1lczoKICAgICBjb25zdDogc2VyZGVzCiAKJiM0MzsgIHBvd2VyLWRvbWFpbnM6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiByZXF1aXJlZDoKICAgLSBjb21wYXRpYmxlCiAgIC0gY2xvY2tzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sc2E4MjU1cC1ldGhxb3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxzYTgyNTVwLWV0aHFvcy55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi41MTU4NDgxZTVlNWIwZgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxzYTgyNTVwLWV0aHFvcy55YW1sCkBAIC0wLDAgJiM0MzsxLDEwNyBAQAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTItQ2xhdXNlCiYjNDM7JVlBTUwgMS4yCiYjNDM7LS0tCiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvcWNvbSxzYTgyNTVwLWV0aHFvcy55YW1sIwomIzQzOyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sIwomIzQzOwomIzQzO3RpdGxlOiBRdWFsY29tbSBFdGhlcm5ldCBFVEhRT1MgZGV2aWNlIChmaXJtd2FyZSBtYW5hZ2VkKQomIzQzOwomIzQzO21haW50YWluZXJzOgomIzQzOyAgLSBCam9ybiBBbmRlcnNzb24gJmx0O2FuZGVyc3NvbkBrZXJuZWwub3JnJmd0OwomIzQzOyAgLSBLb25yYWQgRHliY2lvICZsdDtrb25yYWR5YmNpb0BrZXJuZWwub3JnJmd0OwomIzQzOyAgLSBCYXJ0b3N6IEdvbGFzemV3c2tpICZsdDtiYXJ0b3N6LmdvbGFzemV3c2tpQGxpbmFyby5vcmcmZ3Q7CiYjNDM7CiYjNDM7ZGVzY3JpcHRpb246CiYjNDM7ICBkd21hYyBiYXNlZCBRdWFsY29tbSBldGhlcm5ldCBkZXZpY2VzIHdoaWNoIHN1cHBvcnQgR2lnYWJpdAomIzQzOyAgZXRoZXJuZXQgKHZlcnNpb24gdjIuMy4wIGFuZCBvbndhcmRzKSB3aXRoIGNsb2NrcywgaW50ZXJjb25uZWN0cywgZXRjLgomIzQzOyAgbWFuYWdlZCBieSBmaXJtd2FyZQomIzQzOwomIzQzO2FsbE9mOgomIzQzOyAgLSAkcmVmOiBzbnBzLGR3bWFjLnlhbWwjCiYjNDM7CiYjNDM7cHJvcGVydGllczoKJiM0MzsgIGNvbXBhdGlibGU6CiYjNDM7ICAgIGNvbnN0OiBxY29tLHNhODI1NXAtZXRocW9zCiYjNDM7CiYjNDM7ICByZWc6CiYjNDM7ICAgIG1heEl0ZW1zOiAyCiYjNDM7CiYjNDM7ICByZWctbmFtZXM6CiYjNDM7ICAgIGl0ZW1zOgomIzQzOyAgICAgIC0gY29uc3Q6IHN0bW1hY2V0aAomIzQzOyAgICAgIC0gY29uc3Q6IHJnbWlpCiYjNDM7CiYjNDM7ICBpbnRlcnJ1cHRzOgomIzQzOyAgICBpdGVtczoKJiM0MzsgICAgICAtIGRlc2NyaXB0aW9uOiBDb21iaW5lZCBzaWduYWwgZm9yIHZhcmlvdXMgaW50ZXJydXB0IGV2ZW50cwomIzQzOyAgICAgIC0gZGVzY3JpcHRpb246IFRoZSBpbnRlcnJ1cHQgdGhhdCBvY2N1cnMgd2hlbiBIVyBzYWZldHkgZXJyb3IgdHJpZ2dlcmVkCiYjNDM7CiYjNDM7ICBpbnRlcnJ1cHQtbmFtZXM6CiYjNDM7ICAgIGl0ZW1zOgomIzQzOyAgICAgIC0gY29uc3Q6IG1hY2lycQomIzQzOyAgICAgIC0gY29uc3Q6IHNmdHkKJiM0MzsKJiM0MzsgIHBvd2VyLWRvbWFpbnM6CiYjNDM7ICAgIG1pbkl0ZW1zOiAyCiYjNDM7ICAgIG1heEl0ZW1zOiAyCiYjNDM7CiYjNDM7ICBwb3dlci1kb21haW4tbmFtZXM6CiYjNDM7ICAgIGl0ZW1zOgomIzQzOyAgICAgIC0gY29uc3Q6IGNvcmUKJiM0MzsgICAgICAtIGNvbnN0OiBtZGlvCiYjNDM7CiYjNDM7ICBwaHlzOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwomIzQzOyAgcGh5LW5hbWVzOgomIzQzOyAgICBpdGVtczoKJiM0MzsgICAgICAtIGNvbnN0OiBzZXJkZXMKJiM0MzsKJiM0MzsgIGlvbW11czoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKJiM0MzsgIGRtYS1jb2hlcmVudDogdHJ1ZQomIzQzOwomIzQzO3JlcXVpcmVkOgomIzQzOyAgLSBjb21wYXRpYmxlCiYjNDM7ICAtIHJlZy1uYW1lcwomIzQzOyAgLSBwb3dlci1kb21haW5zCiYjNDM7ICAtIHBvd2VyLWRvbWFpbi1uYW1lcwomIzQzOwomIzQzO3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2UKJiM0MzsKJiM0MztleGFtcGxlczoKJiM0MzsgIC0gfAomIzQzOyAgICAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYXJtLWdpYy5oJmd0OwomIzQzOwomIzQzOyAgICBldGhlcm5ldDogZXRoZXJuZXRAMjMwNDAwMDAgewomIzQzOyAgICAgICAgY29tcGF0aWJsZSA9ICYjMzQ7cWNvbSxzYTgyNTVwLWV0aHFvcyYjMzQ7OwomIzQzOyAgICAgICAgcmVnID0gJmx0OzB4MjMwNDAwMDAgMHgxMDAwMCZndDssCiYjNDM7ICAgICAgICAgICAgICAmbHQ7MHgyMzA1NjAwMCAweDEwMCZndDs7CiYjNDM7ICAgICAgICByZWctbmFtZXMgPSAmIzM0O3N0bW1hY2V0aCYjMzQ7LCAmIzM0O3JnbWlpJiMzNDs7CiYjNDM7CiYjNDM7ICAgICAgICBpb21tdXMgPSAmbHQ7JmFtcDthcHBzX3NtbXUgMHgxMjAgMHg3Jmd0OzsKJiM0MzsKJiM0MzsgICAgICAgIGludGVycnVwdHMgPSAmbHQ7R0lDX1NQSSA5NDYgSVJRX1RZUEVfTEVWRUxfSElHSCZndDssCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgJmx0O0dJQ19TUEkgNzgyIElSUV9UWVBFX0xFVkVMX0hJR0gmZ3Q7OwomIzQzOyAgICAgICAgaW50ZXJydXB0LW5hbWVzID0gJiMzNDttYWNpcnEmIzM0OywgJiMzNDtzZnR5JiMzNDs7CiYjNDM7CiYjNDM7ICAgICAgICBkbWEtY29oZXJlbnQ7CiYjNDM7CiYjNDM7ICAgICAgICBzbnBzLHRzbzsKJiM0MzsgICAgICAgIHNucHMscGJsID0gJmx0OzMyJmd0OzsKJiM0MzsgICAgICAgIHJ4LWZpZm8tZGVwdGggPSAmbHQ7MTYzODQmZ3Q7OwomIzQzOyAgICAgICAgdHgtZmlmby1kZXB0aCA9ICZsdDsxNjM4NCZndDs7CiYjNDM7CiYjNDM7ICAgICAgICBwaHktaGFuZGxlID0gJmx0OyZhbXA7ZXRoZXJuZXRfcGh5Jmd0OzsKJiM0MzsgICAgICAgIHBoeS1tb2RlID0gJiMzNDsyNTAwYmFzZS14JiMzNDs7CiYjNDM7CiYjNDM7ICAgICAgICBzbnBzLG10bC1yeC1jb25maWcgPSAmbHQ7JmFtcDttdGxfcnhfc2V0dXAxJmd0OzsKJiM0MzsgICAgICAgIHNucHMsbXRsLXR4LWNvbmZpZyA9ICZsdDsmYW1wO210bF90eF9zZXR1cDEmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgcG93ZXItZG9tYWlucyA9ICZsdDsmYW1wO3NjbWk4X3BkIDAmZ3Q7LCAmbHQ7JmFtcDtzY21pOF9wZCAxJmd0OzsKJiM0MzsgICAgICAgIHBvd2VyLWRvbWFpbi1uYW1lcyA9ICYjMzQ7Y29yZSYjMzQ7LCAmIzM0O21kaW8mIzM0OzsKJiM0MzsKJiM0MzsgICAgICAgIHBoeXMgPSAmbHQ7JmFtcDtzZXJkZXMxJmd0OzsKJiM0MzsgICAgICAgIHBoeS1uYW1lcyA9ICYjMzQ7c2VyZGVzJiMzNDs7CiYjNDM7ICAgIH07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnpuMS1nbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnpuMS1nbWFjLnlhbWwKaW5kZXggMTZkZDdhMjYzMWFiZjYuLmVkMGQxMGExOWNhNGM0IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnpuMS1nbWFjLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6bjEtZ21hYy55YW1sCkBAIC00NCw2ICYjNDM7NDQsOSBAQCBwcm9wZXJ0aWVzOgogICAgICAgcGhhbmRsZSBwb2ludGluZyB0byBhIFBDUyBzdWItbm9kZSBjb21wYXRpYmxlIHdpdGgKICAgICAgIHJlbmVzYXMscnpuMS1taWljLnlhbWwjCiAKJiM0MzsgIHBvd2VyLWRvbWFpbnM6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiByZXF1aXJlZDoKICAgLSBjb21wYXRpYmxlCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6djJoLWdiZXRoLnlhbWwKaW5kZXggMjEyNWI1ZGRmNzNkYWQuLjgzMzg4MzRmNDljZDIxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnp2MmgtZ2JldGgueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnp2MmgtZ2JldGgueWFtbApAQCAtMTU0LDYgJiM0MzsxNTQsOSBAQCBwcm9wZXJ0aWVzOgogICAgICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3MvcmVuZXNhcyxyem4xLW1paWMueWFtbCMKICAgICAgIChSZWZlciBSWi9UMkggcG9ydGlvbiBpbiB0aGUgRFQtYmluZGluZyBmaWxlKQogCiYjNDM7ICBwb3dlci1kb21haW5zOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwogcmVxdWlyZWQ6CiAgIC0gY29tcGF0aWJsZQogICAtIHJlZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yb2NrY2hpcC1kd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yb2NrY2hpcC1kd21hYy55YW1sCmluZGV4IDgwYzI1Mjg0NTM0OWM0Li4zZWMzZjZkYzJhMTI1OSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yb2NrY2hpcC1kd21hYy55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcm9ja2NoaXAtZHdtYWMueWFtbApAQCAtMTIzLDYgJiM0MzsxMjMsOSBAQCBwcm9wZXJ0aWVzOgogICBwaHktc3VwcGx5OgogICAgIGRlc2NyaXB0aW9uOiBQSFkgcmVndWxhdG9yCiAKJiM0MzsgIHBvd2VyLWRvbWFpbnM6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiByZXF1aXJlZDoKICAgLSBjb21wYXRpYmxlCiAgIC0gY2xvY2tzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc25wcyxkd21hYy55YW1sCmluZGV4IDI0NDkzMTFjNmQyOGVkLi5kM2FmZjFkZjMwNzBkMSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWwKQEAgLTcyLDYgJiM0Mzs3Miw3IEBAIHByb3BlcnRpZXM6CiAgICAgICAgIC0gbnV2b3RvbixtYTM1ZDEtZHdtYWMKICAgICAgICAgLSBueHAsczMyZzItZHdtYWMKICAgICAgICAgLSBxY29tLHFjczQwNC1ldGhxb3MKJiM0MzsgICAgICAgIC0gcWNvbSxzYTgyNTVwLWV0aHFvcwogICAgICAgICAtIHFjb20sc2E4Nzc1cC1ldGhxb3MKICAgICAgICAgLSBxY29tLHNjODI4MHhwLWV0aHFvcwogICAgICAgICAtIHFjb20sc204MTUwLWV0aHFvcwpAQCAtMTg1LDcgJiM0MzsxODYsOCBAQCBwcm9wZXJ0aWVzOgogICAgICAgICAgIC0gY29uc3Q6IGFoYgogCiAgIHBvd2VyLWRvbWFpbnM6Ci0gICAgbWF4SXRlbXM6IDEKJiM0MzsgICAgbWluSXRlbXM6IDEKJiM0MzsgICAgbWF4SXRlbXM6IDIKIAogICBtYWMtbW9kZToKICAgICAkcmVmOiBldGhlcm5ldC1jb250cm9sbGVyLnlhbWwjL3Byb3BlcnRpZXMvcGh5LWNvbm5lY3Rpb24tdHlwZQpAQCAtNjMwLDYgJiM0Mzs2MzIsNyBAQCBhbGxPZjoKICAgICAgICAgICAgICAgICAtIGluZ2VuaWMseDE4MzAtbWFjCiAgICAgICAgICAgICAgICAgLSBpbmdlbmljLHgyMDAwLW1hYwogICAgICAgICAgICAgICAgIC0gcWNvbSxxY3M0MDQtZXRocW9zCiYjNDM7ICAgICAgICAgICAgICAgIC0gcWNvbSxzYTgyNTVwLWV0aHFvcwogICAgICAgICAgICAgICAgIC0gcWNvbSxzYTg3NzVwLWV0aHFvcwogICAgICAgICAgICAgICAgIC0gcWNvbSxzYzgyODB4cC1ldGhxb3MKICAgICAgICAgICAgICAgICAtIHFjb20sc204MTUwLWV0aHFvcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sCmluZGV4IGI4OTQ1NmYwZWY4MzA5Li5lNzhjYmY1OTRjNjk1MiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbApAQCAtNDksNiAmIzQzOzQ5LDkgQEAgcHJvcGVydGllczoKICAgcmVzZXQtbmFtZXM6CiAgICAgY29uc3Q6IHN0bW1hY2V0aAogCiYjNDM7ICBwb3dlci1kb21haW5zOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwogcmVxdWlyZWQ6CiAgIC0gY29tcGF0aWJsZQogICAtIHJlZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxzZzIwNDQtZHdtYWMueWFtbAppbmRleCBlOGQzODE0ZGIwZTk0Zi4uODQ1ZTJjNjdkMjAwMzcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sCkBAIC01Miw2ICYjNDM7NTIsOSBAQCBwcm9wZXJ0aWVzOgogICBpbnRlcnJ1cHQtbmFtZXM6CiAgICAgbWF4SXRlbXM6IDEKIAomIzQzOyAgcG93ZXItZG9tYWluczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKICAgcmVzZXRzOgogICAgIG1heEl0ZW1zOiAxCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sCmluZGV4IGZkY2M2MWM2NWY4N2QxLi5jNDI0ZTc3OTczOTIxZSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sCkBAIC03NSw2ICYjNDM7NzUsOSBAQCBwcm9wZXJ0aWVzOgogICAgICAgVGhlIGFyZ3VtZW50IG9uZSBpcyB0aGUgb2Zmc2V0IG9mIHBoeSBtb2RlIHNlbGVjdGlvbiwgdGhlCiAgICAgICBhcmd1bWVudCB0d28gaXMgdGhlIHNoaWZ0IG9mIHBoeSBtb2RlIHNlbGVjdGlvbi4KIAomIzQzOyAgcG93ZXItZG9tYWluczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKIHJlcXVpcmVkOgogICAtIGNvbXBhdGlibGUKICAgLSByZWcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RtMzItZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RtMzItZHdtYWMueWFtbAppbmRleCA5ODcyNTQ5MDBkMGRhNy4uMjliODc4MDc5ZmYwYzEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RtMzItZHdtYWMueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWwKQEAgLTEyMSw2ICYjNDM7MTIxLDkgQEAgcHJvcGVydGllczoKICAgICBtaW5JdGVtczogMQogICAgIG1heEl0ZW1zOiAyCiAKJiM0MzsgIHBvd2VyLWRvbWFpbnM6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiByZXF1aXJlZDoKICAgLSBjb21wYXRpYmxlCiAgIC0gY2xvY2tzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rlc2xhLGZzZC1ldGhxb3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGVzbGEsZnNkLWV0aHFvcy55YW1sCmluZGV4IGRkNzQ4MWJiMTZlNTk5Li5hZDYzNTUyOWQ2NzZlZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90ZXNsYSxmc2QtZXRocW9zLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90ZXNsYSxmc2QtZXRocW9zLnlhbWwKQEAgLTY3LDYgJiM0Mzs2Nyw5IEBAIHByb3BlcnRpZXM6CiAgICAgICAtIHJnbWlpLXJ4aWQKICAgICAgIC0gcmdtaWktdHhpZAogCiYjNDM7ICBwb3dlci1kb21haW5zOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwogcmVxdWlyZWQ6CiAgIC0gY29tcGF0aWJsZQogICAtIHJlZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90aGVhZCx0aDE1MjAtZ21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90aGVhZCx0aDE1MjAtZ21hYy55YW1sCmluZGV4IGIzNDkyYTlhYTRlZmZhLi5jODU5ZjhiYjVkNTgyYSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90aGVhZCx0aDE1MjAtZ21hYy55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGhlYWQsdGgxNTIwLWdtYWMueWFtbApAQCAtNzgsNiAmIzQzOzc4LDkgQEAgcHJvcGVydGllczoKICAgICBpdGVtczoKICAgICAgIC0gY29uc3Q6IG1hY2lycQogCiYjNDM7ICBwb3dlci1kb21haW5zOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwogcmVxdWlyZWQ6CiAgIC0gY2xvY2tzCiAgIC0gY2xvY2stbmFtZXMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdG9zaGliYSx2aXNjb250aS1kd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90b3NoaWJhLHZpc2NvbnRpLWR3bWFjLnlhbWwKaW5kZXggZjBmMzJlMThmYzg1NTAuLmVmYTM5ZWFiMDI1NmExIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rvc2hpYmEsdmlzY29udGktZHdtYWMueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rvc2hpYmEsdmlzY29udGktZHdtYWMueWFtbApAQCAtNDgsNiAmIzQzOzQ4LDkgQEAgcHJvcGVydGllczoKICAgaW50ZXJydXB0LW5hbWVzOgogICAgIGNvbnN0OiBtYWNpcnEKIAomIzQzOyAgcG93ZXItZG9tYWluczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKIHJlcXVpcmVkOgogICAtIGNvbXBhdGlibGUKICAgLSByZWcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeS55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9xY29tLHNhODI1NXAtZHdtYWMtc2dtaWktcGh5LnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjllODQ2ZTM4MTU1NTUxCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9xY29tLHNhODI1NXAtZHdtYWMtc2dtaWktcGh5LnlhbWwKQEAgLTAsMCAmIzQzOzEsNTAgQEAKJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMCBPUiBCU0QtMi1DbGF1c2UpCiYjNDM7JVlBTUwgMS4yCiYjNDM7LS0tCiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9waHkvcWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeS55YW1sIwomIzQzOyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sIwomIzQzOwomIzQzO3RpdGxlOiBRdWFsY29tbSBTZXJEZXMvU0dNSUkgZXRoZXJuZXQgUEhZIGNvbnRyb2xsZXIgKGZpcm13YXJlIG1hbmFnZWQpCiYjNDM7CiYjNDM7bWFpbnRhaW5lcnM6CiYjNDM7ICAtIEJhcnRvc3ogR29sYXN6ZXdza2kgJmx0O2JyZ2xAa2VybmVsLm9yZyZndDsKJiM0MzsKJiM0MztkZXNjcmlwdGlvbjoKJiM0MzsgIFRoZSBTZXJEZXMgUEhZIHNpdHMgYmV0d2VlbiB0aGUgTUFDIGFuZCB0aGUgZXh0ZXJuYWwgUEhZIGFuZCBwcm92aWRlcwomIzQzOyAgc2VwYXJhdGUgUnggVHggbGluZXMuCiYjNDM7CiYjNDM7cHJvcGVydGllczoKJiM0MzsgIGNvbXBhdGlibGU6CiYjNDM7ICAgIGNvbnN0OiBxY29tLHNhODI1NXAtZHdtYWMtc2dtaWktcGh5CiYjNDM7CiYjNDM7ICByZWc6CiYjNDM7ICAgIGl0ZW1zOgomIzQzOyAgICAgIC0gZGVzY3JpcHRpb246IHNlcmRlcwomIzQzOwomIzQzOyAgcG93ZXItZG9tYWluczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKJiM0MzsgIHBvd2VyLWRvbWFpbi1uYW1lczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsKJiM0MzsgICYjMzQ7I3BoeS1jZWxscyYjMzQ7OgomIzQzOyAgICBjb25zdDogMAomIzQzOwomIzQzO3JlcXVpcmVkOgomIzQzOyAgLSBjb21wYXRpYmxlCiYjNDM7ICAtIHJlZwomIzQzOyAgLSAmIzM0OyNwaHktY2VsbHMmIzM0OwomIzQzOyAgLSBwb3dlci1kb21haW5zCiYjNDM7ICAtIHBvd2VyLWRvbWFpbi1uYW1lcwomIzQzOwomIzQzO2FkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZQomIzQzOwomIzQzO2V4YW1wbGVzOgomIzQzOyAgLSB8CiYjNDM7ICAgIHBoeUA4OTAxMDAwIHsKJiM0MzsgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O3Fjb20sc2E4MjU1cC1kd21hYy1zZ21paS1waHkmIzM0OzsKJiM0MzsgICAgICAgIHJlZyA9ICZsdDsweDA4OTAxMDAwIDB4ZTEwJmd0OzsKJiM0MzsgICAgICAgICNwaHktY2VsbHMgPSAmbHQ7MCZndDs7CiYjNDM7ICAgICAgICBwb3dlci1kb21haW5zID0gJmx0OyZhbXA7c2NtaTdfZHZmcyAwJmd0OzsKJiM0MzsgICAgICAgIHBvd2VyLWRvbWFpbi1uYW1lcyA9ICYjMzQ7c2VyZGVzJiMzNDs7CiYjNDM7ICAgIH07CmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IDgwNmJkMmQ4MGQxNTM1Li44NmU2N2FhNGZiOWRkMSAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlMKQEAgLTIyMTg1LDYgJiM0MzsyMjE4NSw3IEBAIEw6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKIEw6CWxpbnV4LWFybS1tc21Admdlci5rZXJuZWwub3JnCiBTOglNYWludGFpbmVkCiBGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sZXRocW9zLnlhbWwKJiM0MztGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sc2E4MjU1cC1ldGhxb3MueWFtbAogRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYwogCiBRVUFMQ09NTSBGQVNUUlBDIERSSVZFUgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMKaW5kZXggYWM3ZDZkM2UyMDVhMWEuLmQzNGYyMGY4NjgxMzhjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMKQEAgLTUsNiAmIzQzOzUsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L29mLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvb2ZfbmV0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGxhdGZvcm1fZGV2aWNlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BtX2RvbWFpbi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BoeS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BoeS9waHkuaCZndDsKIApAQCAtODEsNiAmIzQzOzgyLDggQEAKIAogI2RlZmluZSBTR01JSV8xME1fUlhfQ0xLX0RWRFIJCQkweDMxCiAKJiM0MztzdHJ1Y3QgcWNvbV9ldGhxb3M7CiYjNDM7CiBzdHJ1Y3QgZXRocW9zX2VtYWNfcG9yIHsKIAl1bnNpZ25lZCBpbnQgb2Zmc2V0OwogCXVuc2lnbmVkIGludCB2YWx1ZTsKQEAgLTk1LDYgJiM0Mzs5OCwxMyBAQCBzdHJ1Y3QgZXRocW9zX2VtYWNfZHJpdmVyX2RhdGEgewogCWNvbnN0IGNoYXIgKmxpbmtfY2xrX25hbWU7CiAJc3RydWN0IGR3bWFjNF9hZGRycyBkd21hYzRfYWRkcnM7CiAJYm9vbCBuZWVkc19zZ21paV9sb29wYmFjazsKJiM0MzsJLyogRml4ZWQgUFRQIHJlZmVyZW5jZSBjbG9jayByYXRlLCB1c2VkIG9uIFNDTUkgcGxhdGZvcm1zIHdoZXJlCiYjNDM7CSAqIGZpcm13YXJlIGRvZXMgbm90IGltcGxlbWVudCB0aGUgY2xvY2sgcHJvdG9jb2wgYWxsb3dpbmcgbGludXggdG8KJiM0MzsJICogcXVlcnkgaXQuCiYjNDM7CSAqLwomIzQzOwl1bnNpZ25lZCBsb25nIHB0cF9jbGtfcmF0ZTsKJiM0MzsJaW50ICgqc2V0dXApKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLAomIzQzOwkJICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KTsKIH07CiAKIHN0cnVjdCBxY29tX2V0aHFvcyB7CkBAIC0xMDMsMTIgJiM0MzsxMTMsOCBAQCBzdHJ1Y3QgcWNvbV9ldGhxb3MgewogCXN0cnVjdCBjbGsgKmxpbmtfY2xrOwogCXN0cnVjdCBwaHkgKnNlcmRlc19waHk7CiAJcGh5X2ludGVyZmFjZV90IHBoeV9tb2RlOwotCi0JY29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX3BvciAqcmdtaWlfcG9yOwotCXVuc2lnbmVkIGludCBudW1fcmdtaWlfcG9yOwotCWJvb2wgcmdtaWlfY29uZmlnX2xvb3BiYWNrX2VuOwotCWJvb2wgaGFzX2VtYWNfZ2VfMzsKLQlib29sIG5lZWRzX3NnbWlpX2xvb3BiYWNrOwomIzQzOwlzdHJ1Y3QgZGV2X3BtX2RvbWFpbl9saXN0ICpwZHM7CiYjNDM7CWNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSAqZGF0YTsKIH07CiAKIHN0YXRpYyB1MzIgcmdtaWlfcmVhZGwoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MsIHVuc2lnbmVkIGludCBvZmZzZXQpCkBAIC0xODksOCAmIzQzOzE5NSw5IEBAIHN0YXRpYyBpbnQgZXRocW9zX3NldF9jbGtfdHhfcmF0ZSh2b2lkICpic3BfcHJpdiwgc3RydWN0IGNsayAqY2xrX3R4X2ksCiBzdGF0aWMgdm9pZAogcWNvbV9ldGhxb3Nfc2V0X3NnbWlpX2xvb3BiYWNrKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLCBib29sIGVuYWJsZSkKIHsKLQlpZiAoIWV0aHFvcy0mZ3Q7bmVlZHNfc2dtaWlfbG9vcGJhY2sgfHwKLQkgICAgZXRocW9zLSZndDtwaHlfbW9kZSAhPSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYKQomIzQzOwlpZiAoIWV0aHFvcy0mZ3Q7ZGF0YS0mZ3Q7bmVlZHNfc2dtaWlfbG9vcGJhY2sgfHwKJiM0MzsJICAgIChldGhxb3MtJmd0O3BoeV9tb2RlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVggJmFtcDsmYW1wOwomIzQzOwkgICAgIGV0aHFvcy0mZ3Q7cGh5X21vZGUgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSkKIAkJcmV0dXJuOwogCiAJcmdtaWlfdXBkYXRlbChldGhxb3MsCkBAIC0yMDQsNiAmIzQzOzIxMSwxMSBAQCBzdGF0aWMgdm9pZCBldGhxb3Nfc2V0X2Z1bmNfY2xrX2VuKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zKQogCXJnbWlpX3NldG1hc2soZXRocW9zLCBSR01JSV9DT05GSUdfRlVOQ19DTEtfRU4sIFJHTUlJX0lPX01BQ1JPX0NPTkZJRyk7CiB9CiAKJiM0MztzdGF0aWMgaW50IGV0aHFvc19obG9zX3NldHVwKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLAomIzQzOwkJCSAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCk7CiYjNDM7c3RhdGljIGludCBldGhxb3Nfc2NtaV9zZXR1cChzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcywKJiM0MzsJCQkgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQpOwomIzQzOwogc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19wb3IgZW1hY192Ml8zXzBfcG9yW10gPSB7CiAJeyAub2Zmc2V0ID0gUkdNSUlfSU9fTUFDUk9fQ09ORklHLAkudmFsdWUgPSAweDAwQzAxMzQzIH0sCiAJeyAub2Zmc2V0ID0gU0RDQ19IQ19SRUdfRExMX0NPTkZJRywJLnZhbHVlID0gMHgyMDA0NjQyQyB9LApAQCAtMjE4LDYgJiM0MzsyMzAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX2RyaXZlcl9kYXRhIGVtYWNfdjJfM18wX2RhdGEgPSB7CiAJLm51bV9yZ21paV9wb3IgPSBBUlJBWV9TSVpFKGVtYWNfdjJfM18wX3BvciksCiAJLnJnbWlpX2NvbmZpZ19sb29wYmFja19lbiA9IHRydWUsCiAJLmhhc19lbWFjX2dlXzMgPSBmYWxzZSwKJiM0MzsJLnNldHVwID0gZXRocW9zX2hsb3Nfc2V0dXAsCiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX3BvciBlbWFjX3YyXzFfMF9wb3JbXSA9IHsKQEAgLTIzNCw2ICYjNDM7MjQ3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSBlbWFjX3YyXzFfMF9kYXRhID0gewogCS5udW1fcmdtaWlfcG9yID0gQVJSQVlfU0laRShlbWFjX3YyXzFfMF9wb3IpLAogCS5yZ21paV9jb25maWdfbG9vcGJhY2tfZW4gPSBmYWxzZSwKIAkuaGFzX2VtYWNfZ2VfMyA9IGZhbHNlLAomIzQzOwkuc2V0dXAgPSBldGhxb3NfaGxvc19zZXR1cCwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfcG9yIGVtYWNfdjNfMF8wX3BvcltdID0gewpAQCAtMjY2LDYgJiM0MzsyODAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX2RyaXZlcl9kYXRhIGVtYWNfdjNfMF8wX2RhdGEgPSB7CiAJCS5tdGxfbG93X2NyZWQgPSAweDAwMDA4MDI0LAogCQkubXRsX2xvd19jcmVkX29mZnNldCA9IDB4MTAwMCwKIAl9LAomIzQzOwkuc2V0dXAgPSBldGhxb3NfaGxvc19zZXR1cCwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfcG9yIGVtYWNfdjRfMF8wX3BvcltdID0gewpAQCAtMzAxLDYgJiM0MzszMTYsMzEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSBlbWFjX3Y0XzBfMF9kYXRhID0gewogCQkubXRsX2xvd19jcmVkID0gMHgwMDAwODAyNCwKIAkJLm10bF9sb3dfY3JlZF9vZmZzZXQgPSAweDEwMDAsCiAJfSwKJiM0MzsJLnNldHVwID0gZXRocW9zX2hsb3Nfc2V0dXAsCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX2RyaXZlcl9kYXRhIGVtYWNfdjRfMF8wX3NjbWlfZGF0YSA9IHsKJiM0MzsJLmhhc19lbWFjX2dlXzMgPSB0cnVlLAomIzQzOwkubmVlZHNfc2dtaWlfbG9vcGJhY2sgPSB0cnVlLAomIzQzOwkuZG1hX2FkZHJfd2lkdGggPSAzNiwKJiM0MzsJLnB0cF9jbGtfcmF0ZSA9IDIzMDQwMDAwMCwKJiM0MzsJLmR3bWFjNF9hZGRycyA9IHsKJiM0MzsJCS5kbWFfY2hhbiA9IDB4MDAwMDgxMDAsCiYjNDM7CQkuZG1hX2NoYW5fb2Zmc2V0ID0gMHgxMDAwLAomIzQzOwkJLm10bF9jaGFuID0gMHgwMDAwODAwMCwKJiM0MzsJCS5tdGxfY2hhbl9vZmZzZXQgPSAweDEwMDAsCiYjNDM7CQkubXRsX2V0c19jdHJsID0gMHgwMDAwODAxMCwKJiM0MzsJCS5tdGxfZXRzX2N0cmxfb2Zmc2V0ID0gMHgxMDAwLAomIzQzOwkJLm10bF90eHFfd2VpZ2h0ID0gMHgwMDAwODAxOCwKJiM0MzsJCS5tdGxfdHhxX3dlaWdodF9vZmZzZXQgPSAweDEwMDAsCiYjNDM7CQkubXRsX3NlbmRfc2xwX2NyZWQgPSAweDAwMDA4MDFjLAomIzQzOwkJLm10bF9zZW5kX3NscF9jcmVkX29mZnNldCA9IDB4MTAwMCwKJiM0MzsJCS5tdGxfaGlnaF9jcmVkID0gMHgwMDAwODAyMCwKJiM0MzsJCS5tdGxfaGlnaF9jcmVkX29mZnNldCA9IDB4MTAwMCwKJiM0MzsJCS5tdGxfbG93X2NyZWQgPSAweDAwMDA4MDI0LAomIzQzOwkJLm10bF9sb3dfY3JlZF9vZmZzZXQgPSAweDEwMDAsCiYjNDM7CX0sCiYjNDM7CS5zZXR1cCA9IGV0aHFvc19zY21pX3NldHVwLAogfTsKIAogc3RhdGljIGludCBldGhxb3NfZGxsX2NvbmZpZ3VyZShzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcykKQEAgLTMyMiw3ICYjNDM7MzYyLDcgQEAgc3RhdGljIGludCBldGhxb3NfZGxsX2NvbmZpZ3VyZShzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcykKIAkvKiBTZXQgRExMX0VOICovCiAJcmdtaWlfc2V0bWFzayhldGhxb3MsIFNEQ0NfRExMX0NPTkZJR19ETExfRU4sIFNEQ0NfSENfUkVHX0RMTF9DT05GSUcpOwogCi0JaWYgKCFldGhxb3MtJmd0O2hhc19lbWFjX2dlXzMpIHsKJiM0MzsJaWYgKCFldGhxb3MtJmd0O2RhdGEtJmd0O2hhc19lbWFjX2dlXzMpIHsKIAkJcmdtaWlfY2xybWFzayhldGhxb3MsIFNEQ0NfRExMX01DTEtfR0FUSU5HX0VOLAogCQkJICAgICAgU0RDQ19IQ19SRUdfRExMX0NPTkZJRyk7CiAKQEAgLTM1Miw3ICYjNDM7MzkyLDcgQEAgc3RhdGljIGludCBldGhxb3NfZGxsX2NvbmZpZ3VyZShzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcykKIAlyZ21paV9zZXRtYXNrKGV0aHFvcywgU0RDQ19ETExfQ09ORklHMl9ERFJfQ0FMX0VOLAogCQkgICAgICBTRENDX0hDX1JFR19ETExfQ09ORklHMik7CiAKLQlpZiAoIWV0aHFvcy0mZ3Q7aGFzX2VtYWNfZ2VfMykgewomIzQzOwlpZiAoIWV0aHFvcy0mZ3Q7ZGF0YS0mZ3Q7aGFzX2VtYWNfZ2VfMykgewogCQlyZ21paV9jbHJtYXNrKGV0aHFvcywgU0RDQ19ETExfQ09ORklHMl9ETExfQ0xPQ0tfRElTLAogCQkJICAgICAgU0RDQ19IQ19SRUdfRExMX0NPTkZJRzIpOwogCkBAIC00MzIsNyAmIzQzOzQ3Miw3IEBAIHN0YXRpYyBpbnQgZXRocW9zX3JnbWlpX21hY3JvX2luaXQoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MsIGludCBzcGVlZCkKIAlyZ21paV9jbHJtYXNrKGV0aHFvcywgUkdNSUlfQ09ORklHMl9SU1ZEX0NPTkZJRzE1LAogCQkgICAgICBSR01JSV9JT19NQUNST19DT05GSUcyKTsKIAotCWlmIChzcGVlZCA9PSBTUEVFRF8xMDAwIHx8IGV0aHFvcy0mZ3Q7aGFzX2VtYWNfZ2VfMykKJiM0MzsJaWYgKHNwZWVkID09IFNQRUVEXzEwMDAgfHwgZXRocW9zLSZndDtkYXRhLSZndDtoYXNfZW1hY19nZV8zKQogCQlyZ21paV9zZXRtYXNrKGV0aHFvcywgUkdNSUlfQ09ORklHMl9SWF9QUk9HX1NXQVAsCiAJCQkgICAgICBSR01JSV9JT19NQUNST19DT05GSUcyKTsKIAllbHNlCkBAIC00NTYsNyAmIzQzOzQ5Niw3IEBAIHN0YXRpYyBpbnQgZXRocW9zX3JnbWlpX21hY3JvX2luaXQoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MsIGludCBzcGVlZCkKIAkJICogaW4gcHJhY3RpY2UgdGhpcyBiZWNvbWVzIFBSR19SQ0xLX0RMWSA9IDUyICogNCAvCiAJCSAqICAoMiAqIFJYIGRlbGF5IG5zKQogCQkgKi8KLQkJaWYgKGV0aHFvcy0mZ3Q7aGFzX2VtYWNfZ2VfMykgewomIzQzOwkJaWYgKGV0aHFvcy0mZ3Q7ZGF0YS0mZ3Q7aGFzX2VtYWNfZ2VfMykgewogCQkJLyogMC45IG5zICovCiAJCQlwcmdfcmNsa19kbHkgPSAxMTU7CiAJCX0gZWxzZSB7CkBAIC00NzIsNyAmIzQzOzUxMiw3IEBAIHN0YXRpYyBpbnQgZXRocW9zX3JnbWlpX21hY3JvX2luaXQoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MsIGludCBzcGVlZCkKIAkJCSAgICAgIFNEQ0NfSENfUkVHX0REUl9DT05GSUcpOwogCX0KIAotCWlmIChldGhxb3MtJmd0O3JnbWlpX2NvbmZpZ19sb29wYmFja19lbikKJiM0MzsJaWYgKGV0aHFvcy0mZ3Q7ZGF0YS0mZ3Q7cmdtaWlfY29uZmlnX2xvb3BiYWNrX2VuKQogCQlsb29wYmFjayA9IFJHTUlJX0NPTkZJR19MT09QQkFDS19FTjsKIAllbHNlCiAJCWxvb3BiYWNrID0gMDsKQEAgLTQ5NSw5ICYjNDM7NTM1LDkgQEAgc3RhdGljIHZvaWQgZXRocW9zX2ZpeF9tYWNfc3BlZWRfcmdtaWkodm9pZCAqYnNwX3ByaXYsCiAJZGV2ID0gJmFtcDtldGhxb3MtJmd0O3BkZXYtJmd0O2RldjsKIAogCS8qIFJlc2V0IHRvIFBPUiB2YWx1ZXMgYW5kIGVuYWJsZSBjbGsgKi8KLQlmb3IgKGkgPSAwOyBpICZsdDsgZXRocW9zLSZndDtudW1fcmdtaWlfcG9yOyBpJiM0MzsmIzQzOykKLQkJcmdtaWlfd3JpdGVsKGV0aHFvcywgZXRocW9zLSZndDtyZ21paV9wb3JbaV0udmFsdWUsCi0JCQkgICAgIGV0aHFvcy0mZ3Q7cmdtaWlfcG9yW2ldLm9mZnNldCk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBldGhxb3MtJmd0O2RhdGEtJmd0O251bV9yZ21paV9wb3I7IGkmIzQzOyYjNDM7KQomIzQzOwkJcmdtaWlfd3JpdGVsKGV0aHFvcywgZXRocW9zLSZndDtkYXRhLSZndDtyZ21paV9wb3JbaV0udmFsdWUsCiYjNDM7CQkJICAgICBldGhxb3MtJmd0O2RhdGEtJmd0O3JnbWlpX3BvcltpXS5vZmZzZXQpOwogCiAJZXRocW9zX3NldF9mdW5jX2Nsa19lbihldGhxb3MpOwogCkBAIC01MTEsNyAmIzQzOzU1MSw3IEBAIHN0YXRpYyB2b2lkIGV0aHFvc19maXhfbWFjX3NwZWVkX3JnbWlpKHZvaWQgKmJzcF9wcml2LAogCXJnbWlpX3NldG1hc2soZXRocW9zLCBTRENDX0RMTF9DT05GSUdfUEROLAogCQkgICAgICBTRENDX0hDX1JFR19ETExfQ09ORklHKTsKIAotCWlmIChldGhxb3MtJmd0O2hhc19lbWFjX2dlXzMpIHsKJiM0MzsJaWYgKGV0aHFvcy0mZ3Q7ZGF0YS0mZ3Q7aGFzX2VtYWNfZ2VfMykgewogCQlpZiAoc3BlZWQgPT0gU1BFRURfMTAwMCkgewogCQkJcmdtaWlfd3JpdGVsKGV0aHFvcywgMHgxODAwMDAwLCBTRENDX1RFU1RfQ1RMKTsKIAkJCXJnbWlpX3dyaXRlbChldGhxb3MsIDB4MkMwMTA4MDAsIFNEQ0NfVVNSX0NUTCk7CkBAIC01MzgsNyAmIzQzOzU3OCw3IEBAIHN0YXRpYyB2b2lkIGV0aHFvc19maXhfbWFjX3NwZWVkX3JnbWlpKHZvaWQgKmJzcF9wcml2LAogCQkJICAgICAgU0RDQ19IQ19SRUdfRExMX0NPTkZJRyk7CiAKIAkJLyogU2V0IFVTUl9DVEwgYml0IDI2IHdpdGggbWFzayBvZiAzIGJpdHMgKi8KLQkJaWYgKCFldGhxb3MtJmd0O2hhc19lbWFjX2dlXzMpCiYjNDM7CQlpZiAoIWV0aHFvcy0mZ3Q7ZGF0YS0mZ3Q7aGFzX2VtYWNfZ2VfMykKIAkJCXJnbWlpX3VwZGF0ZWwoZXRocW9zLCBHRU5NQVNLKDI2LCAyNCksIEJJVCgyNiksCiAJCQkJICAgICAgU0RDQ19VU1JfQ1RMKTsKIApAQCAtNjAxLDEwICYjNDM7NjQxLDE5IEBAIHN0YXRpYyBpbnQgcWNvbV9ldGhxb3Nfc2VyZGVzX3Bvd2VydXAoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKnByaXYpCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAomIzQzOwlyZXQgPSBwaHlfc2V0X21vZGVfZXh0KGV0aHFvcy0mZ3Q7c2VyZGVzX3BoeSwgUEhZX01PREVfRVRIRVJORVQsCiYjNDM7CQkJICAgICAgIGV0aHFvcy0mZ3Q7cGh5X21vZGUpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJZ290byBlcnJfb3V0OwomIzQzOwogCXJldCA9IHBoeV9wb3dlcl9vbihldGhxb3MtJmd0O3NlcmRlc19waHkpOwogCWlmIChyZXQpCi0JCXBoeV9leGl0KGV0aHFvcy0mZ3Q7c2VyZGVzX3BoeSk7CiYjNDM7CQlnb3RvIGVycl9vdXQ7CiYjNDM7CiYjNDM7CXJldHVybiAwOwogCiYjNDM7ZXJyX291dDoKJiM0MzsJcGh5X2V4aXQoZXRocW9zLSZndDtzZXJkZXNfcGh5KTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC02MjMsNiAmIzQzOzY3MiwxMiBAQCBzdGF0aWMgaW50IGV0aHFvc19tYWNfZmluaXNoX3NlcmRlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdm9pZCAqcHJpdiwKIAlzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcyA9IHByaXY7CiAJaW50IHJldCA9IDA7CiAKJiM0MzsJLyogVGhlIGludGVyZmFjZSBtb2RlIGlzIG9ubHkga25vd24gb25jZSBwaHlsaW5rIGhhcyByZXNvbHZlZCBpdCBhbmQKJiM0MzsJICogbWF5IGNoYW5nZSBhdCBydW50aW1lLCBzbyBrZWVwIGl0IGluIHN5bmMgZm9yIGxhdGVyCiYjNDM7CSAqIHNlcmRlc19wb3dlcnVwKCkvc2VyZGVzX3Bvd2VyZG93bigpIGNhbGxzLgomIzQzOwkgKi8KJiM0MzsJZXRocW9zLSZndDtwaHlfbW9kZSA9IGludGVyZmFjZTsKJiM0MzsKIAlxY29tX2V0aHFvc19zZXRfc2dtaWlfbG9vcGJhY2soZXRocW9zLCBmYWxzZSk7CiAKIAlpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSB8fApAQCAtNjgxLDYgJiM0Mzs3MzYsMTE1IEBAIHN0YXRpYyB2b2lkIGV0aHFvc19wdHBfY2xrX2ZyZXFfY29uZmlnKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAluZXRkZXZfZGJnKHByaXYtJmd0O2RldiwgJiMzNDtQVFAgcmF0ZSAlbHVcbiYjMzQ7LCBwbGF0X2RhdC0mZ3Q7Y2xrX3B0cF9yYXRlKTsKIH0KIAomIzQzO3N0YXRpYyBpbnQgZXRocW9zX2hsb3Nfc2V0dXAoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MsCiYjNDM7CQkJICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KQomIzQzO3sKJiM0MzsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IGV0aHFvcy0mZ3Q7cGRldjsKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtwZGV2LSZndDtkZXY7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWV0aHFvcy0mZ3Q7cmdtaWlfYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgJiMzNDtyZ21paSYjMzQ7KTsKJiM0MzsJaWYgKElTX0VSUihldGhxb3MtJmd0O3JnbWlpX2Jhc2UpKQomIzQzOwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGV0aHFvcy0mZ3Q7cmdtaWlfYmFzZSksCiYjNDM7CQkJCSAgICAgJiMzNDtGYWlsZWQgdG8gbWFwIHJnbWlpIHJlc291cmNlXG4mIzM0Oyk7CiYjNDM7CiYjNDM7CWV0aHFvcy0mZ3Q7bGlua19jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCBldGhxb3MtJmd0O2RhdGEtJmd0O2xpbmtfY2xrX25hbWUgPzogJiMzNDtyZ21paSYjMzQ7KTsKJiM0MzsJaWYgKElTX0VSUihldGhxb3MtJmd0O2xpbmtfY2xrKSkKJiM0MzsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihldGhxb3MtJmd0O2xpbmtfY2xrKSwKJiM0MzsJCQkJICAgICAmIzM0O0ZhaWxlZCB0byBnZXQgbGlua19jbGtcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJcGxhdF9kYXQtJmd0O2Nsa3NfY29uZmlnID0gZXRocW9zX2Nsa3NfY29uZmlnOwomIzQzOwomIzQzOwlyZXQgPSBldGhxb3NfY2xrc19jb25maWcoZXRocW9zLCB0cnVlKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIGV0aHFvc19jbGtzX2Rpc2FibGUsIGV0aHFvcyk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlldGhxb3Nfc2V0X2Nsa190eF9yYXRlKGV0aHFvcywgTlVMTCwgcGxhdF9kYXQtJmd0O3BoeV9pbnRlcmZhY2UsIFNQRUVEXzEwMDApOwomIzQzOwlxY29tX2V0aHFvc19zZXRfc2dtaWlfbG9vcGJhY2soZXRocW9zLCB0cnVlKTsKJiM0MzsJZXRocW9zX3NldF9mdW5jX2Nsa19lbihldGhxb3MpOwomIzQzOwomIzQzOwlzd2l0Y2ggKGV0aHFvcy0mZ3Q7cGh5X21vZGUpIHsKJiM0MzsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6CiYjNDM7CWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX0lEOgomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEOgomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEOgomIzQzOwkJcGxhdF9kYXQtJmd0O2ZpeF9tYWNfc3BlZWQgPSBldGhxb3NfZml4X21hY19zcGVlZF9yZ21paTsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6CiYjNDM7CWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOgomIzQzOwkJcGxhdF9kYXQtJmd0O2ZpeF9tYWNfc3BlZWQgPSBldGhxb3NfZml4X21hY19zcGVlZF9zZ21paTsKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJYnJlYWs7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcGxhdF9kYXQtJmd0O3NldF9jbGtfdHhfcmF0ZSA9IGV0aHFvc19zZXRfY2xrX3R4X3JhdGU7CiYjNDM7CXBsYXRfZGF0LSZndDtkdW1wX2RlYnVnX3JlZ3MgPSByZ21paV9kdW1wOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGV0aHFvc19zY21pX3BkX25hbWVzW10gPSB7ICYjMzQ7Y29yZSYjMzQ7LCAmIzM0O21kaW8mIzM0OyB9OwomIzQzOwomIzQzO3N0YXRpYyBpbnQgZXRocW9zX3NjbWlfc2V0dXAoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MsCiYjNDM7CQkJICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IGRldl9wbV9kb21haW5fYXR0YWNoX2RhdGEgcGRfZGF0YSA9IHsKJiM0MzsJCS5wZF9uYW1lcwk9IGV0aHFvc19zY21pX3BkX25hbWVzLAomIzQzOwkJLm51bV9wZF9uYW1lcwk9IEFSUkFZX1NJWkUoZXRocW9zX3NjbWlfcGRfbmFtZXMpLAomIzQzOwkJLnBkX2ZsYWdzCT0gUERfRkxBR19ERVZfTElOS19PTiwKJiM0MzsJfTsKJiM0MzsKJiM0MzsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IGV0aHFvcy0mZ3Q7cGRldjsKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtwZGV2LSZndDtkZXY7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IGRldm1fcG1fZG9tYWluX2F0dGFjaF9saXN0KGRldiwgJmFtcDtwZF9kYXRhLCAmYW1wO2V0aHFvcy0mZ3Q7cGRzKTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCwKJiM0MzsJCQkJICAgICAmIzM0O0ZhaWxlZCB0byBhdHRhY2ggcG93ZXIgZG9tYWluc1xuJiMzNDspOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBUaGUgU2VyRGVzIGxhbmUsIGl0cyBjbG9ja3MgYW5kIHRoZSBNQUMgQVhJL0FIQiBjbG9ja3MgYXJlIG93bmVkIGJ5CiYjNDM7CSAqIGZpcm13YXJlIGFuZCBicm91Z2h0IHVwIHRocm91Z2ggdGhlIFNDTUkgcG93ZXIgZG9tYWlucyBhYm92ZS4gVGhlCiYjNDM7CSAqIE1BQyB3cmFwcGVyIGl0c2VsZiwgaG93ZXZlciBpcyBpbiB0aGUga2VybmVsJiMzOTtzIHJlZ2lzdGVyIHNwYWNlOiB0aGUKJiM0MzsJICogbXV4IHRoYXQgZmVlZHMgdGhlIFNlckRlcyByZWNvdmVyZWQgUlggY2xvY2sgaW50byB0aGUgTUFDJiMzOTtzIGNsa19yeF9pCiYjNDM7CSAqIGlzIG5vdCBjb25maWd1cmVkIGJ5IGZpcm13YXJlLiBXaXRob3V0IGl0LCBjbGtfcnhfaSBuZXZlciB0b2dnbGVzCiYjNDM7CSAqIGFuZCB0aGUgRE1BIFNXLXJlc2V0IHBvbGxlZCBpbiBkd21hYzRfZG1hX3Jlc2V0KCkgbmV2ZXIgY29tcGxldGVzLgomIzQzOwkgKgomIzQzOwkgKiBNYXAgdGhlIHdyYXBwZXIgYW5kIHByb2dyYW0gdGhlIHNhbWUgbG9vcGJhY2svZnVuY3Rpb25hbCBjbG9jayBiaXRzCiYjNDM7CSAqIHRoZSBub24tZmlybXdhcmUgcGxhdGZvcm1zIHJlbHkgb24gKHNlZSBldGhxb3NfY2xrc19jb25maWcpIHNvIHRoZQomIzQzOwkgKiBSWCBjbG9jayBpcyBwcmVzZW50IGJ5IHRoZSB0aW1lIHRoZSBETUEgZW5naW5lIGlzIHJlc2V0LgomIzQzOwkgKi8KJiM0MzsJZXRocW9zLSZndDtyZ21paV9iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlX2J5bmFtZShwZGV2LCAmIzM0O3JnbWlpJiMzNDspOwomIzQzOwlpZiAoSVNfRVJSKGV0aHFvcy0mZ3Q7cmdtaWlfYmFzZSkpCiYjNDM7CQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZXRocW9zLSZndDtyZ21paV9iYXNlKSwKJiM0MzsJCQkJICAgICAmIzM0O0ZhaWxlZCB0byBtYXAgcmdtaWkgcmVzb3VyY2VcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogUnVuIG9uIGV2ZXJ5IHJ1bnRpbWUgcmVzdW1lLCB3aGljaCBzdG1tYWMgcGVyZm9ybXMgYWZ0ZXIgdGhlIHBvd2VyCiYjNDM7CSAqIGRvbWFpbnMgYXJlIG9uIGJ1dCBiZWZvcmUgc2VyZGVzX3Bvd2VydXAoKSBhbmQgdGhlIERNQSByZXNldCwgc28gdGhlCiYjNDM7CSAqIHdyYXBwZXIgaXMgYWx3YXlzIGNvbmZpZ3VyZWQgYWhlYWQgb2YgdGhlIHJlc2V0LgomIzQzOwkgKi8KJiM0MzsJcGxhdF9kYXQtJmd0O2Nsa3NfY29uZmlnID0gZXRocW9zX2Nsa3NfY29uZmlnOwomIzQzOwlwbGF0X2RhdC0mZ3Q7Y2xrX3B0cF9yYXRlID0gZXRocW9zLSZndDtkYXRhLSZndDtwdHBfY2xrX3JhdGU7CiYjNDM7CiYjNDM7CXN3aXRjaCAoZXRocW9zLSZndDtwaHlfbW9kZSkgewomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6CiYjNDM7CWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOgomIzQzOwkJcGxhdF9kYXQtJmd0O2ZpeF9tYWNfc3BlZWQgPSBldGhxb3NfZml4X21hY19zcGVlZF9zZ21paTsKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJYnJlYWs7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogewogCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBwZGV2LSZndDtkZXYub2Zfbm9kZTsKQEAgLTcwMiwyMyAmIzQzOzg2NiwyMCBAQCBzdGF0aWMgaW50IHFjb21fZXRocW9zX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCQkJICAgICAmIzM0O2R0IGNvbmZpZ3VyYXRpb24gZmFpbGVkXG4mIzM0Oyk7CiAJfQogCi0JcGxhdF9kYXQtJmd0O2Nsa3NfY29uZmlnID0gZXRocW9zX2Nsa3NfY29uZmlnOwotCiAJZXRocW9zID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpldGhxb3MpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWV0aHFvcykKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlldGhxb3MtJmd0O3BoeV9tb2RlID0gcGxhdF9kYXQtJmd0O3BoeV9pbnRlcmZhY2U7CiYjNDM7CiAJc3dpdGNoIChldGhxb3MtJmd0O3BoeV9tb2RlKSB7CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfSUQ6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDoKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEOgotCQlwbGF0X2RhdC0mZ3Q7Zml4X21hY19zcGVlZCA9IGV0aHFvc19maXhfbWFjX3NwZWVkX3JnbWlpOwogCQlicmVhazsKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6Ci0JCXBsYXRfZGF0LSZndDtmaXhfbWFjX3NwZWVkID0gZXRocW9zX2ZpeF9tYWNfc3BlZWRfc2dtaWk7CiAJCXBsYXRfZGF0LSZndDttYWNfZmluaXNoID0gZXRocW9zX21hY19maW5pc2hfc2VyZGVzOwogCQlicmVhazsKIAlkZWZhdWx0OgpAQCAtNzI4LDI4ICYjNDM7ODg5LDEzIEBAIHN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAl9CiAKIAlldGhxb3MtJmd0O3BkZXYgPSBwZGV2OwotCWV0aHFvcy0mZ3Q7cmdtaWlfYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgJiMzNDtyZ21paSYjMzQ7KTsKLQlpZiAoSVNfRVJSKGV0aHFvcy0mZ3Q7cmdtaWlfYmFzZSkpCi0JCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihldGhxb3MtJmd0O3JnbWlpX2Jhc2UpLAotCQkJCSAgICAgJiMzNDtGYWlsZWQgdG8gbWFwIHJnbWlpIHJlc291cmNlXG4mIzM0Oyk7Ci0KIAlkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7Ci0JZXRocW9zLSZndDtyZ21paV9wb3IgPSBkYXRhLSZndDtyZ21paV9wb3I7Ci0JZXRocW9zLSZndDtudW1fcmdtaWlfcG9yID0gZGF0YS0mZ3Q7bnVtX3JnbWlpX3BvcjsKLQlldGhxb3MtJmd0O3JnbWlpX2NvbmZpZ19sb29wYmFja19lbiA9IGRhdGEtJmd0O3JnbWlpX2NvbmZpZ19sb29wYmFja19lbjsKLQlldGhxb3MtJmd0O2hhc19lbWFjX2dlXzMgPSBkYXRhLSZndDtoYXNfZW1hY19nZV8zOwotCWV0aHFvcy0mZ3Q7bmVlZHNfc2dtaWlfbG9vcGJhY2sgPSBkYXRhLSZndDtuZWVkc19zZ21paV9sb29wYmFjazsKJiM0MzsJZXRocW9zLSZndDtkYXRhID0gZGF0YTsKIAotCWV0aHFvcy0mZ3Q7bGlua19jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCBkYXRhLSZndDtsaW5rX2Nsa19uYW1lID86ICYjMzQ7cmdtaWkmIzM0Oyk7Ci0JaWYgKElTX0VSUihldGhxb3MtJmd0O2xpbmtfY2xrKSkKLQkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGV0aHFvcy0mZ3Q7bGlua19jbGspLAotCQkJCSAgICAgJiMzNDtGYWlsZWQgdG8gZ2V0IGxpbmtfY2xrXG4mIzM0Oyk7CiYjNDM7CWlmIChXQVJOX09OKCFkYXRhLSZndDtzZXR1cCkpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKIAotCXJldCA9IGV0aHFvc19jbGtzX2NvbmZpZyhldGhxb3MsIHRydWUpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQlyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCBldGhxb3NfY2xrc19kaXNhYmxlLCBldGhxb3MpOwomIzQzOwlyZXQgPSBkYXRhLSZndDtzZXR1cChldGhxb3MsIHBsYXRfZGF0KTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCkBAIC03NTgsMjQgJiM0Mzs5MDQsMTEgQEAgc3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZXRocW9zLSZndDtzZXJkZXNfcGh5KSwKIAkJCQkgICAgICYjMzQ7RmFpbGVkIHRvIGdldCBzZXJkZXMgcGh5XG4mIzM0Oyk7CiAKLQlldGhxb3Nfc2V0X2Nsa190eF9yYXRlKGV0aHFvcywgTlVMTCwgcGxhdF9kYXQtJmd0O3BoeV9pbnRlcmZhY2UsCi0JCQkgICAgICAgU1BFRURfMTAwMCk7Ci0KLQlxY29tX2V0aHFvc19zZXRfc2dtaWlfbG9vcGJhY2soZXRocW9zLCB0cnVlKTsKLQlldGhxb3Nfc2V0X2Z1bmNfY2xrX2VuKGV0aHFvcyk7Ci0KLQkvKiBUaGUgY2xvY2tzIGFyZSBjb250cm9sbGVkIGJ5IGZpcm13YXJlLCBzbyB3ZSBkb24mIzM5O3Qga25vdyBmb3IgY2VydGFpbgotCSAqIHdoYXQgY2xvY2sgcmF0ZSBpcyBiZWluZyB1c2VkLiBIYXJkd2FyZSBkb2N1bWVudGF0aW9uIG1lbnRpb25zIHRoYXQKLQkgKiB0aGUgQUhCIHNsYXZlIGNsb2NrIHdpbGwgYmUgaW4gdGhlIHJhbmdlIG9mIDUwIHRvIDEwME1Ieiwgd2hpY2gKLQkgKiBlcXVhdGVzIHRvIGEgTURDIGJldHdlZW4gMS4xOSBhbmQgMi4zOE1Iei4KLQkgKi8KIAlwbGF0X2RhdC0mZ3Q7Y2xrX2NzciA9IFNUTU1BQ19DU1JfNjBfMTAwTTsKIAlwbGF0X2RhdC0mZ3Q7YnNwX3ByaXYgPSBldGhxb3M7Ci0JcGxhdF9kYXQtJmd0O3NldF9jbGtfdHhfcmF0ZSA9IGV0aHFvc19zZXRfY2xrX3R4X3JhdGU7Ci0JcGxhdF9kYXQtJmd0O2R1bXBfZGVidWdfcmVncyA9IHJnbWlpX2R1bXA7CiAJcGxhdF9kYXQtJmd0O3B0cF9jbGtfZnJlcV9jb25maWcgPSBldGhxb3NfcHRwX2Nsa19mcmVxX2NvbmZpZzsKIAlwbGF0X2RhdC0mZ3Q7Y29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDsKLQlpZiAoZXRocW9zLSZndDtoYXNfZW1hY19nZV8zKQomIzQzOwlpZiAoZGF0YS0mZ3Q7aGFzX2VtYWNfZ2VfMykKIAkJcGxhdF9kYXQtJmd0O2R3bWFjNF9hZGRycyA9ICZhbXA7ZGF0YS0mZ3Q7ZHdtYWM0X2FkZHJzOwogCXBsYXRfZGF0LSZndDtwbXQgPSB0cnVlOwogCWlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobnAsICYjMzQ7c25wcyx0c28mIzM0OykpCkBAIC03OTksNiAmIzQzOzkzMiw3IEBAIHN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcWNvbV9ldGhxb3NfbWF0Y2hbXSA9IHsKIAl7IC5jb21wYXRpYmxlID0gJiMzNDtxY29tLHFjczQwNC1ldGhxb3MmIzM0OywgLmRhdGEgPSAmYW1wO2VtYWNfdjJfM18wX2RhdGF9LAomIzQzOwl7IC5jb21wYXRpYmxlID0gJiMzNDtxY29tLHNhODI1NXAtZXRocW9zJiMzNDssIC5kYXRhID0gJmFtcDtlbWFjX3Y0XzBfMF9zY21pX2RhdGF9LAogCXsgLmNvbXBhdGlibGUgPSAmIzM0O3Fjb20sc2E4Nzc1cC1ldGhxb3MmIzM0OywgLmRhdGEgPSAmYW1wO2VtYWNfdjRfMF8wX2RhdGF9LAogCXsgLmNvbXBhdGlibGUgPSAmIzM0O3Fjb20sc2M4MjgweHAtZXRocW9zJiMzNDssIC5kYXRhID0gJmFtcDtlbWFjX3YzXzBfMF9kYXRhfSwKIAl7IC5jb21wYXRpYmxlID0gJiMzNDtxY29tLHNtODE1MC1ldGhxb3MmIzM0OywgLmRhdGEgPSAmYW1wO2VtYWNfdjJfMV8wX2RhdGF9LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uYyBiL2RyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMKaW5kZXggZTk1ZDM5MWE2ZGMyMzMuLmI3MjBlNGU5MDI4Y2MyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMKQEAgLTU0NCw3ICYjNDM7NTQ0LDcgQEAgc3RhdGljIGludCBhcXJfZ2VuMV9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpZiAoIXBoeWRldi0mZ3Q7bGluayB8fCBwaHlkZXYtJmd0O2F1dG9uZWcgPT0gQVVUT05FR19ESVNBQkxFKQomIzQzOwlpZiAoIXBoeWRldi0mZ3Q7bGluaykKIAkJcmV0dXJuIDA7CiAKIAkvKiBUaGUgc3RhdHVzIHJlZ2lzdGVyIGlzIG5vdCBpbW1lZGlhdGVseSBjb3JyZWN0IG9uIGxpbmUgc2lkZSBsaW5rIHVwLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcXVhbGNvbW0vS2NvbmZpZyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL0tjb25maWcKaW5kZXggNjBhMGVhZDEyN2ZhOWYuLmE3Y2YzNDhmNmE3YWExIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9LY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL0tjb25maWcKQEAgLTIzMiwzICYjNDM7MjMyLDE0IEBAIGNvbmZpZyBQSFlfUUNPTV9TR01JSV9FVEgKIAloZWxwCiAJICBFbmFibGUgdGhpcyB0byBzdXBwb3J0IHRoZSBpbnRlcm5hbCBTZXJEZXMvU0dNSUkgUEhZIG9uIHZhcmlvdXMKIAkgIFF1YWxjb21tIGNoaXBzZXRzLgomIzQzOwomIzQzO2NvbmZpZyBQSFlfUUNPTV9TR01JSV9FVEhfU0NNSQomIzQzOwl0cmlzdGF0ZSAmIzM0O1F1YWxjb21tIERXTUFDIFNHTUlJIFNlckRlcy9QSFkgZHJpdmVyIChmaXJtd2FyZSBtYW5hZ2VkKSYjMzQ7CiYjNDM7CWRlcGVuZHMgb24gT0YgJmFtcDsmYW1wOyAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVCkKJiM0MzsJc2VsZWN0IEdFTkVSSUNfUEhZCiYjNDM7CXNlbGVjdCBQTQomIzQzOwlzZWxlY3QgUE1fR0VORVJJQ19ET01BSU5TCiYjNDM7CWhlbHAKJiM0MzsJICBFbmFibGUgdGhpcyB0byBzdXBwb3J0IHRoZSBpbnRlcm5hbCBTZXJEZXMvU0dNSUkgUEhZIG9uIFF1YWxjb21tCiYjNDM7CSAgY2hpcHNldHMgd2hlcmUgdGhlIFNlckRlcyBoYXJkd2FyZSAoY2xvY2tzIGFuZCByZWdpc3RlcnMpIGlzIG93bmVkCiYjNDM7CSAgYnkgdGhlIGZpcm13YXJlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcXVhbGNvbW0vTWFrZWZpbGUgYi9kcml2ZXJzL3BoeS9xdWFsY29tbS9NYWtlZmlsZQppbmRleCBiNzFhNmEwYmVkM2YxNC4uMDMyZTU4MmYyZTFhZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGh5L3F1YWxjb21tL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL01ha2VmaWxlCkBAIC0yNSwzICYjNDM7MjUsNCBAQCBvYmotJChDT05GSUdfUEhZX1FDT01fVVNCX1NTKQkJJiM0Mzs9IHBoeS1xY29tLXVzYi1zcy5vCiBvYmotJChDT05GSUdfUEhZX1FDT01fVVNCX1NOUFNfRkVNVE9fVjIpJiM0Mzs9IHBoeS1xY29tLXNucHMtZmVtdG8tdjIubwogb2JqLSQoQ09ORklHX1BIWV9RQ09NX0lQUTgwNlhfVVNCKQkmIzQzOz0gcGh5LXFjb20taXBxODA2eC11c2Iubwogb2JqLSQoQ09ORklHX1BIWV9RQ09NX1NHTUlJX0VUSCkJJiM0Mzs9IHBoeS1xY29tLXNnbWlpLWV0aC5vCiYjNDM7b2JqLSQoQ09ORklHX1BIWV9RQ09NX1NHTUlJX0VUSF9TQ01JKQkmIzQzOz0gcGh5LXFjb20tc2dtaWktZXRoLXNjbWkubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tc2dtaWktZXRoLXNjbWkuYyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLXNnbWlpLWV0aC1zY21pLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmFhN2NlOTM5M2IyODUzCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tc2dtaWktZXRoLXNjbWkuYwpAQCAtMCwwICYjNDM7MSwxNjUgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiYjNDM7LyoKJiM0MzsgKiBDb3B5cmlnaHQgKGMpIFF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy4KJiM0MzsgKgomIzQzOyAqIEZpcm13YXJlLW1hbmFnZWQgdmFyaWFudCBvZiB0aGUgUXVhbGNvbW0gRFdNQUMgU0dNSUkgU2VyRGVzL1BIWSBkcml2ZXIuCiYjNDM7ICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2RlbGF5LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2RldmljZS1pZC9vZi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9ldGh0b29sLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9vZi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9waHkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGh5L3BoeS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcG1fZG9tYWluLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BtX3J1bnRpbWUuaCZndDsKJiM0MzsKJiM0MztzdHJ1Y3QgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaSB7CiYjNDM7CXVuc2lnbmVkIGludCBwZXJmX3N0YXRlOwomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGludCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Bvd2VyX29uKHN0cnVjdCBwaHkgKnBoeSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pICpwcml2ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7CiYjNDM7CXN0cnVjdCBkZXZpY2UgKmRldiA9IHBoeS0mZ3Q7ZGV2LnBhcmVudDsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldChkZXYpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gZGV2X3BtX2dlbnBkX3NldF9wZXJmb3JtYW5jZV9zdGF0ZShkZXYsIHByaXYtJmd0O3BlcmZfc3RhdGUpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlwbV9ydW50aW1lX3B1dChkZXYpOwomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJfQomIzQzOwomIzQzOwl1c2xlZXBfcmFuZ2UoNTAwMCwgMTAwMDApOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Bvd2VyX29mZihzdHJ1Y3QgcGh5ICpwaHkpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwaHktJmd0O2Rldi5wYXJlbnQ7CiYjNDM7CiYjNDM7CWRldl9wbV9nZW5wZF9zZXRfcGVyZm9ybWFuY2Vfc3RhdGUoZGV2LCAwKTsKJiM0MzsJcG1fcnVudGltZV9wdXQoZGV2KTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV92YWxpZGF0ZShzdHJ1Y3QgcGh5ICpwaHksIGVudW0gcGh5X21vZGUgbW9kZSwKJiM0MzsJCQkJCSAgICAgIGludCBzdWJtb2RlLAomIzQzOwkJCQkJICAgICAgdW5pb24gcGh5X2NvbmZpZ3VyZV9vcHRzICpvcHRzKQomIzQzO3sKJiM0MzsJaWYgKG1vZGUgIT0gUEhZX01PREVfRVRIRVJORVQpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJc3dpdGNoIChzdWJtb2RlKSB7CiYjNDM7CWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOgomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg6CiYjNDM7CWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWDoKJiM0MzsJCXJldHVybiAwOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3NldF9tb2RlKHN0cnVjdCBwaHkgKnBoeSwgZW51bSBwaHlfbW9kZSBtb2RlLAomIzQzOwkJCQkJICAgICAgaW50IHN1Ym1vZGUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaSAqcHJpdiA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwomIzQzOwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwaHktJmd0O2Rldi5wYXJlbnQ7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfdmFsaWRhdGUocGh5LCBtb2RlLCBzdWJtb2RlLCBOVUxMKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXByaXYtJmd0O3BlcmZfc3RhdGUgPSAoc3VibW9kZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYKSA/CiYjNDM7CQkJICAgU1BFRURfMjUwMCA6IFNQRUVEXzEwMDA7CiYjNDM7CiYjNDM7CWlmIChwaHktJmd0O3Bvd2VyX2NvdW50ID09IDApCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJcmV0dXJuIGRldl9wbV9nZW5wZF9zZXRfcGVyZm9ybWFuY2Vfc3RhdGUoZGV2LCBwcml2LSZndDtwZXJmX3N0YXRlKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlfb3BzIHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfb3BzID0gewomIzQzOwkucG93ZXJfb24JPSBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Bvd2VyX29uLAomIzQzOwkucG93ZXJfb2ZmCT0gcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9wb3dlcl9vZmYsCiYjNDM7CS5zZXRfbW9kZQk9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfc2V0X21vZGUsCiYjNDM7CS52YWxpZGF0ZQk9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfdmFsaWRhdGUsCiYjNDM7CS5vd25lcgkJPSBUSElTX01PRFVMRSwKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfcnVudGltZV9kaXNhYmxlKHZvaWQgKmRhdGEpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBkYXRhOwomIzQzOwomIzQzOwlwbV9ydW50aW1lX2Rpc2FibGUoZGV2KTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaSAqcHJpdjsKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtwZGV2LSZndDtkZXY7CiYjNDM7CXN0cnVjdCBwaHlfcHJvdmlkZXIgKnByb3ZpZGVyOwomIzQzOwlzdHJ1Y3QgcGh5ICpwaHk7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCFwcml2KQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CXByaXYtJmd0O3BlcmZfc3RhdGUgPSBTUEVFRF8xMDAwOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBFbmFibGUgcnVudGltZSBQTSBvbiB0aGUgcHJvdmlkZXIgYmVmb3JlIGNyZWF0aW5nIHRoZSBQSFkgc28gdGhhdCB0aGUKJiM0MzsJICogUEhZIGNvcmUgZW5hYmxlcyBydW50aW1lIFBNIG9uIHRoZSBQSFkgZGV2aWNlIHRvby4gVGhlIHNpbmdsZSBTQ01JCiYjNDM7CSAqIHBvd2VyIGRvbWFpbiBoYXMgYWxyZWFkeSBiZWVuIGF0dGFjaGVkIHRvIHRoaXMgZGV2aWNlIGJ5IHRoZSBkcml2ZXIKJiM0MzsJICogY29yZSwgc28gcnVudGltZSBQTSB2b3RlcyBwcm9wYWdhdGUgdG8gZmlybXdhcmUgdGhyb3VnaCB0aGUgZ2VucGQKJiM0MzsJICogZGV2aWNlIGxpbmsuIE5vIHJlZ2lzdGVyIG9yIGNsb2NrIGFjY2VzcyBpcyBkb25lIGhlcmUgLSBmaXJtd2FyZSBvd25zCiYjNDM7CSAqIHRoZSBTZXJEZXMuCiYjNDM7CSAqLwomIzQzOwlwbV9ydW50aW1lX2VuYWJsZShkZXYpOwomIzQzOwomIzQzOwlyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3J1bnRpbWVfZGlzYWJsZSwgZGV2KTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXBoeSA9IGRldm1fcGh5X2NyZWF0ZShkZXYsIE5VTEwsICZhbXA7cWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9vcHMpOwomIzQzOwlpZiAoSVNfRVJSKHBoeSkpCiYjNDM7CQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocGh5KSwgJiMzNDtmYWlsZWQgdG8gY3JlYXRlIHRoZSBwaHlcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJcGh5X3NldF9kcnZkYXRhKHBoeSwgcHJpdik7CiYjNDM7CiYjNDM7CXByb3ZpZGVyID0gZGV2bV9vZl9waHlfcHJvdmlkZXJfcmVnaXN0ZXIoZGV2LCBvZl9waHlfc2ltcGxlX3hsYXRlKTsKJiM0MzsJaWYgKElTX0VSUihwcm92aWRlcikpCiYjNDM7CQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJvdmlkZXIpLAomIzQzOwkJCQkgICAgICYjMzQ7ZmFpbGVkIHRvIHJlZ2lzdGVyIHRoZSBQSFkgcHJvdmlkZXJcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfb2ZfbWF0Y2hbXSA9IHsKJiM0MzsJeyAuY29tcGF0aWJsZSA9ICYjMzQ7cWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeSYjMzQ7IH0sCiYjNDM7CXsgfQomIzQzO307CiYjNDM7TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9vZl9tYXRjaCk7CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9kcml2ZXIgPSB7CiYjNDM7CS5wcm9iZQk9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfcHJvYmUsCiYjNDM7CS5kcml2ZXIgPSB7CiYjNDM7CQkubmFtZSA9ICYjMzQ7cWNvbS1kd21hYy1zZ21paS1waHktc2NtaSYjMzQ7LAomIzQzOwkJLm9mX21hdGNoX3RhYmxlID0gcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9vZl9tYXRjaCwKJiM0MzsJfSwKJiM0Mzt9OwomIzQzO21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9kcml2ZXIpOwomIzQzOwomIzQzO01PRFVMRV9ERVNDUklQVElPTigmIzM0O1F1YWxjb21tIERXTUFDIFNHTUlJIFBIWSBkcml2ZXIgKGZpcm13YXJlIG1hbmFnZWQpJiMzNDspOwomIzQzO01PRFVMRV9BVVRIT1IoJiMzNDtCYXJ0b3N6IEdvbGFzemV3c2tpICZsdDtiYXJ0b3N6LmdvbGFzemV3c2tpQG9zcy5xdWFsY29tbS5jb20mZ3Q7JiMzNDspOwomIzQzO01PRFVMRV9MSUNFTlNFKCYjMzQ7R1BMJiMzNDspOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNzozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzk1MwoJCQkJCQkJb3V0cHV0OiAxMjAKCQkJCQkJCXRob3VnaHRzOiAxODk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBQYXRjaCBTZXJpZXMgZm9yIEZ1enppbmcgRmVhc2liaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UgaGF2ZSBhIHBhdGNoIHNlcmllcyBkZWFsaW5nIHdpdGggYSBRdWFsY29tbSBFdGhlcm5ldCBFVEhRT1MgZGV2aWNlIGFuZCBpdHMgY29ycmVzcG9uZGluZyBTZXJEZXMvU0dNSUkgUEhZLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNzZXNzIHRoZSBmdXp6aW5nIHBvdGVudGlhbC4gU3BlY2lmaWNhbGx5LCBjYW4gdGhpcyBjb2RlIGJlIHJlYWxpc3RpY2FsbHkgcmVhY2hlZCBpbiBhIHR5cGljYWwgZnV6emluZyBzZXR1cCwgbGlrZSBRRU1VIG9yIEdDRT8KCkZpcnN0LCB3ZSBzZWUgZGV2aWNlIHRyZWUgYmluZGluZ3MgYW5kIG5ldyBkcml2ZXJzIGZvciBib3RoIGBxY29tLHNhODI1NXAtZXRocW9zYCBhbmQgaXRzIFNHTUlJIFBIWS4gVGhlc2UgYXJlIHBsYXRmb3JtIGRldmljZXMsIGFuZCB0aGUgY29yZSBjaGFsbGVuZ2UgaXMgdGhhdCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgb2Z0ZW4gKmRvbiYjMzk7dCogbmF0aXZlbHkgZW11bGF0ZSBzcGVjaWZpYyBRdWFsY29tbSBoYXJkd2FyZS4gSSBpbW1lZGlhdGVseSB0aGluayB0aGF0LCB1bmxlc3MgUUVNVSAqc3BlY2lmaWNhbGx5KiBlbXVsYXRlcyB0aGlzLCB3ZSYjMzk7cmUgbm90IGdvaW5nIHRvIGhpdCB0aGUgbmV3IGNvZGUgcGF0aHMuIFN5emthbGxlciBjYW4gaW5qZWN0IHBsYXRmb3JtIGRldmljZXMgdmlhIERUIG92ZXJsYXlzIG9yIHBzZXVkby1zeXNjYWxscyBidXQgdGhhdCBpcyBsaW1pdGVkIHdpdGhvdXQgcHJlY2lzZSBkZXNjcmlwdGlvbnMuCgpUaGVuIHRoZXJlJiMzOTtzIHRoZSBgZHdtYWMtcWNvbS1ldGhxb3MuY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIFF1YWxjb21tIEVUSFFPUy4gQWxzbyBhIHBsYXRmb3JtIGRldmljZS4gQWdhaW4sIGEgaHVnZSByZWQgZmxhZzogaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyB0aGF0IG5lZWQgTU1JTyBhbmQgY2xvY2svcG93ZXIgZG9tYWluIHNldHVwIGFyZSBub3RvcmlvdXNseSBkaWZmaWN1bHQgdG8gdHJpZ2dlciBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50ICp1bmxlc3MqIHRoZXJlJiMzOTtzIGEgZ29vZCBlbXVsYXRvciBmb3IgdGhpcyBwYXJ0aWN1bGFyIGhhcmR3YXJlLgoKTmV4dCwgdGhlIGZpeCBpbiBgYXF1YW50aWFfbWFpbi5jYCwgd2hpY2ggYXBwZWFycyB0byBiZSBhICpnZW5lcmljKiBQSFkgZHJpdmVyLiBJdCYjMzk7cyBhIHNtYWxsIGNoYW5nZSB0byBhIGxpbmsgY2hlY2suIFBIWSBkcml2ZXJzIGFyZSBnZW5lcmFsbHkgcHJvYmVkIHdoZW4gYW4gTURJTyBidXMgaXMgcHJlc2VudC4gSWYgdGhlcmUgaXMgYSB2aXJ0dWFsIE1BQyBhbmQgYW4gTURJTyBidXMgcHJlc2VudCwgaXQgKmNvdWxkKiBiZSByZWFjaGFibGUuIEhvd2V2ZXIsIFN5emthbGxlciB0eXBpY2FsbHkgZG9lc24mIzM5O3QgZW11bGF0ZSBNRElPIGJ1c2VzIHVubGVzcyB0aGVyZSYjMzk7cyBhbiBNRElPIGJ1cyBkcml2ZXIgcHJlc2VudC4gU28gZXZlbiB0aGlzIGNoYW5nZSBpcyBsaWtlbHkgdW5yZWFjaGFibGUsIHVubGVzcyB0aGUgTURJTyBidXMgaXMgZW11bGF0ZWQgb3IgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBmdXp6ZXIgZm9yIGl0LgoKVGhlIG5ldyBgcGh5LXFjb20tc2dtaWktZXRoLXNjbWkuY2AgZHJpdmVyIGZvciB0aGUgU2VyRGVzL1NHTUlJIFBIWSBpcywgb25jZSBhZ2FpbiwgYSBwbGF0Zm9ybSBkcml2ZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIFF1YWxjb21tIGhhcmR3YXJlLiBOb3QgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KCkkga25vdyBzeXprYWxsZXIgY2FuIGdlbmVyYXRlIERUcywgYnV0IGl0JiMzOTtzIG5vdCBnb2luZyB0byBtYWdpYyB1cCBhbiBlbXVsYXRlZCBRdWFsY29tbSBFVEhRT1MgZGV2aWNlLCBwb3dlciBkb21haW5zLCBhbmQgY2xvY2tzLCBlc3BlY2lhbGx5IGlmIGl0IGlzIHBsYXRmb3JtLXNwZWNpZmljIGFuZCByZXF1aXJlcyBTQ01JIGludGVyYWN0aW9uLgoKVGhlIGluc3RydWN0aW9ucyBpbmRpY2F0ZSB0aGF0IGlmIHRoZSBjaGFuZ2VzIGFyZSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuCgpHaXZlbiB0aGlzIGFuYWx5c2lzLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggc2VyaWVzIGZvY3VzZXMgb24gaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyAoUXVhbGNvbW0gRVRIUU9TIGFuZCBpdHMgUEhZKSB0aGF0IGFyZSAqdW5saWtlbHkqIHRvIGJlIHJlYWNoYWJsZSBpbiBjb21tb24gZnV6emluZyBzZXR1cHMgbGlrZSBRRU1VIGFuZCBHQ0UsIGVzcGVjaWFsbHkgd2l0aG91dCBzcGVjaWFsaXplZCBlbXVsYXRpb24uCgpUaGVyZWZvcmUsIG15IGZpbmFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNzozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBwcmltYXJpbHkgYWRkcyBzdXBwb3J0IGZvciBhIGZpcm13YXJlLW1hbmFnZWQgUXVhbGNvbW0gRXRoZXJuZXQgRVRIUU9TIGRldmljZSBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgU2VyRGVzL1NHTUlJIFBIWS4gVGhlc2UgYXJlIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlcnMgKFF1YWxjb21tIFNvQ3MpIGFuZCBhIG1pbm9yIGZpeCBpbiBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWSBkcml2ZXIgKEFxdWFudGlhKS4gU3VjaCBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkZXZpY2VzIGFuZCBQSFlzIGFyZSBub3QgZW11bGF0ZWQgb3IgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHVzZWQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgcHJpbWFyaWx5IGFkZHMgc3VwcG9ydCBmb3IgYSBmaXJtd2FyZS1tYW5hZ2VkIFF1YWxjb21tIEV0aGVybmV0IEVUSFFPUyBkZXZpY2UgYW5kIGl0cyBjb3JyZXNwb25kaW5nIFNlckRlcy9TR01JSSBQSFkuIFRoZXNlIGFyZSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXJzIChRdWFsY29tbSBTb0NzKSBhbmQgYSBtaW5vciBmaXggaW4gYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgZHJpdmVyIChBcXVhbnRpYSkuIFN1Y2ggaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZGV2aWNlcyBhbmQgUEhZcyBhcmUgbm90IGVtdWxhdGVkIG9yIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB1c2VkIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE3OjMzOjIzLjAzOTc1MjUxN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODg5NTk2NTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgcHJpbWFyaWx5IGFkZHMgc3VwcG9ydCBmb3IgYSBmaXJtd2FyZS1tYW5hZ2VkIFF1YWxjb21tIEV0aGVybmV0IEVUSFFPUyBkZXZpY2UgYW5kIGl0cyBjb3JyZXNwb25kaW5nIFNlckRlcy9TR01JSSBQSFkuIFRoZXNlIGFyZSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXJzIChRdWFsY29tbSBTb0NzKSBhbmQgYSBtaW5vciBmaXggaW4gYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgZHJpdmVyIChBcXVhbnRpYSkuIFN1Y2ggaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZGV2aWNlcyBhbmQgUEhZcyBhcmUgbm90IGVtdWxhdGVkIG9yIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB1c2VkIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTc6MzM6MjMuMDM5NzU3Njk3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTIzNDkzMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4YzM1M2I5ZDg2ZWExOGE4NGU1Mzk3ZGVhMjYxMjYwZTllNDFmM2E2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDEzIDE3OjMzOjIxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjdpLWEyMC1nbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW43aS1hMjAtZ21hYy55YW1sXFxuaW5kZXggMjNlOTJiZTMzYWM4NjAuLmIxMjYzMjU0NTY3M2IyIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjdpLWEyMC1nbWFjLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW43aS1hMjAtZ21hYy55YW1sXFxuQEAgLTQwLDYgKzQwLDkgQEAgcHJvcGVydGllczpcXG4gICAgIGRlc2NyaXB0aW9uOlxcbiAgICAgICBQSFkgcmVndWxhdG9yXFxuIFxcbisgIHBvd2VyLWRvbWFpbnM6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4gcmVxdWlyZWQ6XFxuICAgLSBjb21wYXRpYmxlXFxuICAgLSByZWdcXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbFxcbmluZGV4IGZjNDQ1YWQ1YTFmMWFjLi40NDhlNjE3Y2RkYzRjZCAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sXFxuQEAgLTE0MCw2ICsxNDAsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgICAgICAgLSBkZXNjcmlwdGlvbjogb2Zmc2V0IG9mIHRoZSBjb250cm9sIHJlZ2lzdGVyXFxuICAgICAgICAgICAtIGRlc2NyaXB0aW9uOiBzaGlmdCB3aXRoaW4gdGhlIGNvbnRyb2wgcmVnaXN0ZXJcXG4gXFxuKyAgcG93ZXItZG9tYWluczpcXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbiBwYXR0ZXJuUHJvcGVydGllczpcXG4gICBcXFwiXm1kaW9bMC05XSRcXFwiOlxcbiAgICAgdHlwZTogb2JqZWN0XFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1sb2dpYyxtZXNvbi1kd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWxcXG5pbmRleCA1YzkxNzE2ZDFmMjFlNi4uOWM5Y2MzZWYzODRkYTAgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbFxcbkBAIC0xNTgsNiArMTU4LDkgQEAgcHJvcGVydGllczpcXG4gICBpbnRlcnJ1cHQtbmFtZXM6XFxuICAgICBjb25zdDogbWFjaXJxXFxuIFxcbisgIHBvd2VyLWRvbWFpbnM6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4gcmVxdWlyZWQ6XFxuICAgLSBjb21wYXRpYmxlXFxuICAgLSByZWdcXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sXFxuaW5kZXggNjU4ODJmZjc5ZDhkN2UuLjA4MWEyMTE3NGZkNDJiIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbFxcbkBAIC05NSw2ICs5NSw5IEBAIHByb3BlcnRpZXM6XFxuICAgICAgICAgICAtIGRlc2NyaXB0aW9uOiBPcHRpb25hbCBvZmZzZXQgb2YgcmVnaXN0ZXIgY29udHJvbGxpbmcgVFhEIGRlbGF5XFxuICAgICAgICAgICAtIGRlc2NyaXB0aW9uOiBPcHRpb25hbCBvZmZzZXQgb2YgcmVnaXN0ZXIgY29udHJvbGxpbmcgUlhEIGRlbGF5XFxuIFxcbisgIHBvd2VyLWRvbWFpbnM6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4gcmVxdWlyZWQ6XFxuICAgLSBjb21wYXRpYmxlXFxuICAgLSByZWdcXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbFxcbmluZGV4IDYyYzFkYTM2YTJiNWEyLi5lNDE4NTE5MzFiOTQ3NSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sXFxuQEAgLTQ3LDYgKzQ3LDkgQEAgcHJvcGVydGllczpcXG4gICBpbnRlcnJ1cHQtbmFtZXM6XFxuICAgICBjb25zdDogbWFjaXJxXFxuIFxcbisgIHBvd2VyLWRvbWFpbnM6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4gcmVxdWlyZWQ6XFxuICAgLSBjb21wYXRpYmxlXFxuICAgLSBjbG9ja3NcXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFiLWdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbG9vbmdzb24sbHMxYi1nbWFjLnlhbWxcXG5pbmRleCBjNGYzMjI0YmFkMzg3Yi4uYzlhMTMxYjhkODMwNGMgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFiLWdtYWMueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbG9vbmdzb24sbHMxYi1nbWFjLnlhbWxcXG5AQCAtNjYsNiArNjYsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgICAtIG1paVxcbiAgICAgICAtIHJnbWlpLWlkXFxuIFxcbisgIHBvd2VyLWRvbWFpbnM6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4gcmVxdWlyZWQ6XFxuICAgLSBjb21wYXRpYmxlXFxuICAgLSByZWdcXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFjLWVtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbG9vbmdzb24sbHMxYy1lbWFjLnlhbWxcXG5pbmRleCA5OTAwMWI5NDBiODM2MS4uNDlkYjE4NDIzZGQ4MDcgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFjLWVtYWMueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbG9vbmdzb24sbHMxYy1lbWFjLnlhbWxcXG5AQCAtNjUsNiArNjUsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgICAtIG1paVxcbiAgICAgICAtIHJtaWlcXG4gXFxuKyAgcG93ZXItZG9tYWluczpcXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbiByZXF1aXJlZDpcXG4gICAtIGNvbXBhdGlibGVcXG4gICAtIHJlZ1xcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxkd21hYy1pbXgueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGR3bWFjLWlteC55YW1sXFxuaW5kZXggZTVkYjM0NmJlY2E5NjQuLmIyNDBjNzZlN2RkNTI1IDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGR3bWFjLWlteC55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsZHdtYWMtaW14LnlhbWxcXG5AQCAtODMsNiArODMsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgZGVzY3JpcHRpb246XFxuICAgICAgIFRvIHNlbGVjdCBSTUlJIHJlZmVyZW5jZSBjbG9jayBmcm9tIGV4dGVybmFsLlxcbiBcXG4rICBwb3dlci1kb21haW5zOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuIHJlcXVpcmVkOlxcbiAgIC0gY29tcGF0aWJsZVxcbiAgIC0gY2xvY2tzXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGxwYzE4NTAtZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGxwYzE4NTAtZHdtYWMueWFtbFxcbmluZGV4IDA1YWNkOWJjNzYxNjM1Li5mNjExODhhYjBkYmUzYyAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxscGMxODUwLWR3bWFjLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxscGMxODUwLWR3bWFjLnlhbWxcXG5AQCAtNTEsNiArNTEsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgaXRlbXM6XFxuICAgICAgIC0gY29uc3Q6IHN0bW1hY2V0aFxcbiBcXG4rICBwb3dlci1kb21haW5zOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuIHJlcXVpcmVkOlxcbiAgIC0gY29tcGF0aWJsZVxcbiAgIC0gcmVnXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWxcXG5pbmRleCA3NTNhMDQ5NDE2NTliOC4uZmNhZDIyNzQzMDJkOWMgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxzMzItZHdtYWMueWFtbFxcbkBAIC04MSw2ICs4MSw5IEBAIHByb3BlcnRpZXM6XFxuICAgICAgIC0gY29uc3Q6IHJ4XFxuICAgICAgIC0gY29uc3Q6IHB0cF9yZWZcXG4gXFxuKyAgcG93ZXItZG9tYWluczpcXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbiByZXF1aXJlZDpcXG4gICAtIGNsb2Nrc1xcbiAgIC0gY2xvY2stbmFtZXNcXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY29tLGV0aHFvcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY29tLGV0aHFvcy55YW1sXFxuaW5kZXggNDIzOTU5Y2I5MjhkOTQuLmVmNTIwZjgxMDU3NzNlIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbFxcbkBAIC04Niw2ICs4Niw5IEBAIHByb3BlcnRpZXM6XFxuICAgcGh5LW5hbWVzOlxcbiAgICAgY29uc3Q6IHNlcmRlc1xcbiBcXG4rICBwb3dlci1kb21haW5zOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuIHJlcXVpcmVkOlxcbiAgIC0gY29tcGF0aWJsZVxcbiAgIC0gY2xvY2tzXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxzYTgyNTVwLWV0aHFvcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY29tLHNhODI1NXAtZXRocW9zLnlhbWxcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi41MTU4NDgxZTVlNWIwZlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sc2E4MjU1cC1ldGhxb3MueWFtbFxcbkBAIC0wLDAgKzEsMTA3IEBAXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTItQ2xhdXNlXFxuKyVZQU1MIDEuMlxcbistLS1cXG4rJGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvcWNvbSxzYTgyNTVwLWV0aHFvcy55YW1sI1xcbiskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG4rXFxuK3RpdGxlOiBRdWFsY29tbSBFdGhlcm5ldCBFVEhRT1MgZGV2aWNlIChmaXJtd2FyZSBtYW5hZ2VkKVxcbitcXG4rbWFpbnRhaW5lcnM6XFxuKyAgLSBCam9ybiBBbmRlcnNzb24gXFx1MDAzY2FuZGVyc3NvbkBrZXJuZWwub3JnXFx1MDAzZVxcbisgIC0gS29ucmFkIER5YmNpbyBcXHUwMDNja29ucmFkeWJjaW9Aa2VybmVsLm9yZ1xcdTAwM2VcXG4rICAtIEJhcnRvc3ogR29sYXN6ZXdza2kgXFx1MDAzY2JhcnRvc3ouZ29sYXN6ZXdza2lAbGluYXJvLm9yZ1xcdTAwM2VcXG4rXFxuK2Rlc2NyaXB0aW9uOlxcbisgIGR3bWFjIGJhc2VkIFF1YWxjb21tIGV0aGVybmV0IGRldmljZXMgd2hpY2ggc3VwcG9ydCBHaWdhYml0XFxuKyAgZXRoZXJuZXQgKHZlcnNpb24gdjIuMy4wIGFuZCBvbndhcmRzKSB3aXRoIGNsb2NrcywgaW50ZXJjb25uZWN0cywgZXRjLlxcbisgIG1hbmFnZWQgYnkgZmlybXdhcmVcXG4rXFxuK2FsbE9mOlxcbisgIC0gJHJlZjogc25wcyxkd21hYy55YW1sI1xcbitcXG4rcHJvcGVydGllczpcXG4rICBjb21wYXRpYmxlOlxcbisgICAgY29uc3Q6IHFjb20sc2E4MjU1cC1ldGhxb3NcXG4rXFxuKyAgcmVnOlxcbisgICAgbWF4SXRlbXM6IDJcXG4rXFxuKyAgcmVnLW5hbWVzOlxcbisgICAgaXRlbXM6XFxuKyAgICAgIC0gY29uc3Q6IHN0bW1hY2V0aFxcbisgICAgICAtIGNvbnN0OiByZ21paVxcbitcXG4rICBpbnRlcnJ1cHRzOlxcbisgICAgaXRlbXM6XFxuKyAgICAgIC0gZGVzY3JpcHRpb246IENvbWJpbmVkIHNpZ25hbCBmb3IgdmFyaW91cyBpbnRlcnJ1cHQgZXZlbnRzXFxuKyAgICAgIC0gZGVzY3JpcHRpb246IFRoZSBpbnRlcnJ1cHQgdGhhdCBvY2N1cnMgd2hlbiBIVyBzYWZldHkgZXJyb3IgdHJpZ2dlcmVkXFxuK1xcbisgIGludGVycnVwdC1uYW1lczpcXG4rICAgIGl0ZW1zOlxcbisgICAgICAtIGNvbnN0OiBtYWNpcnFcXG4rICAgICAgLSBjb25zdDogc2Z0eVxcbitcXG4rICBwb3dlci1kb21haW5zOlxcbisgICAgbWluSXRlbXM6IDJcXG4rICAgIG1heEl0ZW1zOiAyXFxuK1xcbisgIHBvd2VyLWRvbWFpbi1uYW1lczpcXG4rICAgIGl0ZW1zOlxcbisgICAgICAtIGNvbnN0OiBjb3JlXFxuKyAgICAgIC0gY29uc3Q6IG1kaW9cXG4rXFxuKyAgcGh5czpcXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbisgIHBoeS1uYW1lczpcXG4rICAgIGl0ZW1zOlxcbisgICAgICAtIGNvbnN0OiBzZXJkZXNcXG4rXFxuKyAgaW9tbXVzOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuKyAgZG1hLWNvaGVyZW50OiB0cnVlXFxuK1xcbityZXF1aXJlZDpcXG4rICAtIGNvbXBhdGlibGVcXG4rICAtIHJlZy1uYW1lc1xcbisgIC0gcG93ZXItZG9tYWluc1xcbisgIC0gcG93ZXItZG9tYWluLW5hbWVzXFxuK1xcbit1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXFxuK1xcbitleGFtcGxlczpcXG4rICAtIHxcXG4rICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0tZ2ljLmhcXHUwMDNlXFxuK1xcbisgICAgZXRoZXJuZXQ6IGV0aGVybmV0QDIzMDQwMDAwIHtcXG4rICAgICAgICBjb21wYXRpYmxlID0gXFxcInFjb20sc2E4MjU1cC1ldGhxb3NcXFwiO1xcbisgICAgICAgIHJlZyA9IFxcdTAwM2MweDIzMDQwMDAwIDB4MTAwMDBcXHUwMDNlLFxcbisgICAgICAgICAgICAgIFxcdTAwM2MweDIzMDU2MDAwIDB4MTAwXFx1MDAzZTtcXG4rICAgICAgICByZWctbmFtZXMgPSBcXFwic3RtbWFjZXRoXFxcIiwgXFxcInJnbWlpXFxcIjtcXG4rXFxuKyAgICAgICAgaW9tbXVzID0gXFx1MDAzY1xcdTAwMjZhcHBzX3NtbXUgMHgxMjAgMHg3XFx1MDAzZTtcXG4rXFxuKyAgICAgICAgaW50ZXJydXB0cyA9IFxcdTAwM2NHSUNfU1BJIDk0NiBJUlFfVFlQRV9MRVZFTF9ISUdIXFx1MDAzZSxcXG4rICAgICAgICAgICAgICAgICAgICAgXFx1MDAzY0dJQ19TUEkgNzgyIElSUV9UWVBFX0xFVkVMX0hJR0hcXHUwMDNlO1xcbisgICAgICAgIGludGVycnVwdC1uYW1lcyA9IFxcXCJtYWNpcnFcXFwiLCBcXFwic2Z0eVxcXCI7XFxuK1xcbisgICAgICAgIGRtYS1jb2hlcmVudDtcXG4rXFxuKyAgICAgICAgc25wcyx0c287XFxuKyAgICAgICAgc25wcyxwYmwgPSBcXHUwMDNjMzJcXHUwMDNlO1xcbisgICAgICAgIHJ4LWZpZm8tZGVwdGggPSBcXHUwMDNjMTYzODRcXHUwMDNlO1xcbisgICAgICAgIHR4LWZpZm8tZGVwdGggPSBcXHUwMDNjMTYzODRcXHUwMDNlO1xcbitcXG4rICAgICAgICBwaHktaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZldGhlcm5ldF9waHlcXHUwMDNlO1xcbisgICAgICAgIHBoeS1tb2RlID0gXFxcIjI1MDBiYXNlLXhcXFwiO1xcbitcXG4rICAgICAgICBzbnBzLG10bC1yeC1jb25maWcgPSBcXHUwMDNjXFx1MDAyNm10bF9yeF9zZXR1cDFcXHUwMDNlO1xcbisgICAgICAgIHNucHMsbXRsLXR4LWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2bXRsX3R4X3NldHVwMVxcdTAwM2U7XFxuK1xcbisgICAgICAgIHBvd2VyLWRvbWFpbnMgPSBcXHUwMDNjXFx1MDAyNnNjbWk4X3BkIDBcXHUwMDNlLCBcXHUwMDNjXFx1MDAyNnNjbWk4X3BkIDFcXHUwMDNlO1xcbisgICAgICAgIHBvd2VyLWRvbWFpbi1uYW1lcyA9IFxcXCJjb3JlXFxcIiwgXFxcIm1kaW9cXFwiO1xcbitcXG4rICAgICAgICBwaHlzID0gXFx1MDAzY1xcdTAwMjZzZXJkZXMxXFx1MDAzZTtcXG4rICAgICAgICBwaHktbmFtZXMgPSBcXFwic2VyZGVzXFxcIjtcXG4rICAgIH07XFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyem4xLWdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyem4xLWdtYWMueWFtbFxcbmluZGV4IDE2ZGQ3YTI2MzFhYmY2Li5lZDBkMTBhMTljYTRjNCAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnpuMS1nbWFjLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnpuMS1nbWFjLnlhbWxcXG5AQCAtNDQsNiArNDQsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgICBwaGFuZGxlIHBvaW50aW5nIHRvIGEgUENTIHN1Yi1ub2RlIGNvbXBhdGlibGUgd2l0aFxcbiAgICAgICByZW5lc2FzLHJ6bjEtbWlpYy55YW1sI1xcbiBcXG4rICBwb3dlci1kb21haW5zOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuIHJlcXVpcmVkOlxcbiAgIC0gY29tcGF0aWJsZVxcbiBcXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6djJoLWdiZXRoLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnp2MmgtZ2JldGgueWFtbFxcbmluZGV4IDIxMjViNWRkZjczZGFkLi44MzM4ODM0ZjQ5Y2QyMSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnp2MmgtZ2JldGgueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sXFxuQEAgLTE1NCw2ICsxNTQsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sI1xcbiAgICAgICAoUmVmZXIgUlovVDJIIHBvcnRpb24gaW4gdGhlIERULWJpbmRpbmcgZmlsZSlcXG4gXFxuKyAgcG93ZXItZG9tYWluczpcXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbiByZXF1aXJlZDpcXG4gICAtIGNvbXBhdGlibGVcXG4gICAtIHJlZ1xcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JvY2tjaGlwLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JvY2tjaGlwLWR3bWFjLnlhbWxcXG5pbmRleCA4MGMyNTI4NDUzNDljNC4uM2VjM2Y2ZGMyYTEyNTkgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yb2NrY2hpcC1kd21hYy55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yb2NrY2hpcC1kd21hYy55YW1sXFxuQEAgLTEyMyw2ICsxMjMsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgIHBoeS1zdXBwbHk6XFxuICAgICBkZXNjcmlwdGlvbjogUEhZIHJlZ3VsYXRvclxcbiBcXG4rICBwb3dlci1kb21haW5zOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuIHJlcXVpcmVkOlxcbiAgIC0gY29tcGF0aWJsZVxcbiAgIC0gY2xvY2tzXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc25wcyxkd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWxcXG5pbmRleCAyNDQ5MzExYzZkMjhlZC4uZDNhZmYxZGYzMDcwZDEgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdtYWMueWFtbFxcbkBAIC03Miw2ICs3Miw3IEBAIHByb3BlcnRpZXM6XFxuICAgICAgICAgLSBudXZvdG9uLG1hMzVkMS1kd21hY1xcbiAgICAgICAgIC0gbnhwLHMzMmcyLWR3bWFjXFxuICAgICAgICAgLSBxY29tLHFjczQwNC1ldGhxb3NcXG4rICAgICAgICAtIHFjb20sc2E4MjU1cC1ldGhxb3NcXG4gICAgICAgICAtIHFjb20sc2E4Nzc1cC1ldGhxb3NcXG4gICAgICAgICAtIHFjb20sc2M4MjgweHAtZXRocW9zXFxuICAgICAgICAgLSBxY29tLHNtODE1MC1ldGhxb3NcXG5AQCAtMTg1LDcgKzE4Niw4IEBAIHByb3BlcnRpZXM6XFxuICAgICAgICAgICAtIGNvbnN0OiBhaGJcXG4gXFxuICAgcG93ZXItZG9tYWluczpcXG4tICAgIG1heEl0ZW1zOiAxXFxuKyAgICBtaW5JdGVtczogMVxcbisgICAgbWF4SXRlbXM6IDJcXG4gXFxuICAgbWFjLW1vZGU6XFxuICAgICAkcmVmOiBldGhlcm5ldC1jb250cm9sbGVyLnlhbWwjL3Byb3BlcnRpZXMvcGh5LWNvbm5lY3Rpb24tdHlwZVxcbkBAIC02MzAsNiArNjMyLDcgQEAgYWxsT2Y6XFxuICAgICAgICAgICAgICAgICAtIGluZ2VuaWMseDE4MzAtbWFjXFxuICAgICAgICAgICAgICAgICAtIGluZ2VuaWMseDIwMDAtbWFjXFxuICAgICAgICAgICAgICAgICAtIHFjb20scWNzNDA0LWV0aHFvc1xcbisgICAgICAgICAgICAgICAgLSBxY29tLHNhODI1NXAtZXRocW9zXFxuICAgICAgICAgICAgICAgICAtIHFjb20sc2E4Nzc1cC1ldGhxb3NcXG4gICAgICAgICAgICAgICAgIC0gcWNvbSxzYzgyODB4cC1ldGhxb3NcXG4gICAgICAgICAgICAgICAgIC0gcWNvbSxzbTgxNTAtZXRocW9zXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbFxcbmluZGV4IGI4OTQ1NmYwZWY4MzA5Li5lNzhjYmY1OTRjNjk1MiAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWxcXG5AQCAtNDksNiArNDksOSBAQCBwcm9wZXJ0aWVzOlxcbiAgIHJlc2V0LW5hbWVzOlxcbiAgICAgY29uc3Q6IHN0bW1hY2V0aFxcbiBcXG4rICBwb3dlci1kb21haW5zOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuIHJlcXVpcmVkOlxcbiAgIC0gY29tcGF0aWJsZVxcbiAgIC0gcmVnXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWxcXG5pbmRleCBlOGQzODE0ZGIwZTk0Zi4uODQ1ZTJjNjdkMjAwMzcgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxzZzIwNDQtZHdtYWMueWFtbFxcbkBAIC01Miw2ICs1Miw5IEBAIHByb3BlcnRpZXM6XFxuICAgaW50ZXJydXB0LW5hbWVzOlxcbiAgICAgbWF4SXRlbXM6IDFcXG4gXFxuKyAgcG93ZXItZG9tYWluczpcXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbiAgIHJlc2V0czpcXG4gICAgIG1heEl0ZW1zOiAxXFxuIFxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbFxcbmluZGV4IGZkY2M2MWM2NWY4N2QxLi5jNDI0ZTc3OTczOTIxZSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbFxcbkBAIC03NSw2ICs3NSw5IEBAIHByb3BlcnRpZXM6XFxuICAgICAgIFRoZSBhcmd1bWVudCBvbmUgaXMgdGhlIG9mZnNldCBvZiBwaHkgbW9kZSBzZWxlY3Rpb24sIHRoZVxcbiAgICAgICBhcmd1bWVudCB0d28gaXMgdGhlIHNoaWZ0IG9mIHBoeSBtb2RlIHNlbGVjdGlvbi5cXG4gXFxuKyAgcG93ZXItZG9tYWluczpcXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbiByZXF1aXJlZDpcXG4gICAtIGNvbXBhdGlibGVcXG4gICAtIHJlZ1xcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWxcXG5pbmRleCA5ODcyNTQ5MDBkMGRhNy4uMjliODc4MDc5ZmYwYzEgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG0zMi1kd21hYy55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG0zMi1kd21hYy55YW1sXFxuQEAgLTEyMSw2ICsxMjEsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgbWluSXRlbXM6IDFcXG4gICAgIG1heEl0ZW1zOiAyXFxuIFxcbisgIHBvd2VyLWRvbWFpbnM6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4gcmVxdWlyZWQ6XFxuICAgLSBjb21wYXRpYmxlXFxuICAgLSBjbG9ja3NcXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90ZXNsYSxmc2QtZXRocW9zLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rlc2xhLGZzZC1ldGhxb3MueWFtbFxcbmluZGV4IGRkNzQ4MWJiMTZlNTk5Li5hZDYzNTUyOWQ2NzZlZCAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rlc2xhLGZzZC1ldGhxb3MueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGVzbGEsZnNkLWV0aHFvcy55YW1sXFxuQEAgLTY3LDYgKzY3LDkgQEAgcHJvcGVydGllczpcXG4gICAgICAgLSByZ21paS1yeGlkXFxuICAgICAgIC0gcmdtaWktdHhpZFxcbiBcXG4rICBwb3dlci1kb21haW5zOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuIHJlcXVpcmVkOlxcbiAgIC0gY29tcGF0aWJsZVxcbiAgIC0gcmVnXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGhlYWQsdGgxNTIwLWdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGhlYWQsdGgxNTIwLWdtYWMueWFtbFxcbmluZGV4IGIzNDkyYTlhYTRlZmZhLi5jODU5ZjhiYjVkNTgyYSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3RoZWFkLHRoMTUyMC1nbWFjLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3RoZWFkLHRoMTUyMC1nbWFjLnlhbWxcXG5AQCAtNzgsNiArNzgsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgaXRlbXM6XFxuICAgICAgIC0gY29uc3Q6IG1hY2lycVxcbiBcXG4rICBwb3dlci1kb21haW5zOlxcbisgICAgbWF4SXRlbXM6IDFcXG4rXFxuIHJlcXVpcmVkOlxcbiAgIC0gY2xvY2tzXFxuICAgLSBjbG9jay1uYW1lc1xcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rvc2hpYmEsdmlzY29udGktZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdG9zaGliYSx2aXNjb250aS1kd21hYy55YW1sXFxuaW5kZXggZjBmMzJlMThmYzg1NTAuLmVmYTM5ZWFiMDI1NmExIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdG9zaGliYSx2aXNjb250aS1kd21hYy55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90b3NoaWJhLHZpc2NvbnRpLWR3bWFjLnlhbWxcXG5AQCAtNDgsNiArNDgsOSBAQCBwcm9wZXJ0aWVzOlxcbiAgIGludGVycnVwdC1uYW1lczpcXG4gICAgIGNvbnN0OiBtYWNpcnFcXG4gXFxuKyAgcG93ZXItZG9tYWluczpcXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbiByZXF1aXJlZDpcXG4gICAtIGNvbXBhdGlibGVcXG4gICAtIHJlZ1xcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3Fjb20sc2E4MjU1cC1kd21hYy1zZ21paS1waHkueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeS55YW1sXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOWU4NDZlMzgxNTU1NTFcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9xY29tLHNhODI1NXAtZHdtYWMtc2dtaWktcGh5LnlhbWxcXG5AQCAtMCwwICsxLDUwIEBAXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wIE9SIEJTRC0yLUNsYXVzZSlcXG4rJVlBTUwgMS4yXFxuKy0tLVxcbiskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL3BoeS9xY29tLHNhODI1NXAtZHdtYWMtc2dtaWktcGh5LnlhbWwjXFxuKyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xcbitcXG4rdGl0bGU6IFF1YWxjb21tIFNlckRlcy9TR01JSSBldGhlcm5ldCBQSFkgY29udHJvbGxlciAoZmlybXdhcmUgbWFuYWdlZClcXG4rXFxuK21haW50YWluZXJzOlxcbisgIC0gQmFydG9zeiBHb2xhc3pld3NraSBcXHUwMDNjYnJnbEBrZXJuZWwub3JnXFx1MDAzZVxcbitcXG4rZGVzY3JpcHRpb246XFxuKyAgVGhlIFNlckRlcyBQSFkgc2l0cyBiZXR3ZWVuIHRoZSBNQUMgYW5kIHRoZSBleHRlcm5hbCBQSFkgYW5kIHByb3ZpZGVzXFxuKyAgc2VwYXJhdGUgUnggVHggbGluZXMuXFxuK1xcbitwcm9wZXJ0aWVzOlxcbisgIGNvbXBhdGlibGU6XFxuKyAgICBjb25zdDogcWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeVxcbitcXG4rICByZWc6XFxuKyAgICBpdGVtczpcXG4rICAgICAgLSBkZXNjcmlwdGlvbjogc2VyZGVzXFxuK1xcbisgIHBvd2VyLWRvbWFpbnM6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4rICBwb3dlci1kb21haW4tbmFtZXM6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4rICBcXFwiI3BoeS1jZWxsc1xcXCI6XFxuKyAgICBjb25zdDogMFxcbitcXG4rcmVxdWlyZWQ6XFxuKyAgLSBjb21wYXRpYmxlXFxuKyAgLSByZWdcXG4rICAtIFxcXCIjcGh5LWNlbGxzXFxcIlxcbisgIC0gcG93ZXItZG9tYWluc1xcbisgIC0gcG93ZXItZG9tYWluLW5hbWVzXFxuK1xcbithZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2VcXG4rXFxuK2V4YW1wbGVzOlxcbisgIC0gfFxcbisgICAgcGh5QDg5MDEwMDAge1xcbisgICAgICAgIGNvbXBhdGlibGUgPSBcXFwicWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeVxcXCI7XFxuKyAgICAgICAgcmVnID0gXFx1MDAzYzB4MDg5MDEwMDAgMHhlMTBcXHUwMDNlO1xcbisgICAgICAgICNwaHktY2VsbHMgPSBcXHUwMDNjMFxcdTAwM2U7XFxuKyAgICAgICAgcG93ZXItZG9tYWlucyA9IFxcdTAwM2NcXHUwMDI2c2NtaTdfZHZmcyAwXFx1MDAzZTtcXG4rICAgICAgICBwb3dlci1kb21haW4tbmFtZXMgPSBcXFwic2VyZGVzXFxcIjtcXG4rICAgIH07XFxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcXG5pbmRleCA4MDZiZDJkODBkMTUzNS4uODZlNjdhYTRmYjlkZDEgMTAwNjQ0XFxuLS0tIGEvTUFJTlRBSU5FUlNcXG4rKysgYi9NQUlOVEFJTkVSU1xcbkBAIC0yMjE4NSw2ICsyMjE4NSw3IEBAIEw6XFx0bmV0ZGV2QHZnZXIua2VybmVsLm9yZ1xcbiBMOlxcdGxpbnV4LWFybS1tc21Admdlci5rZXJuZWwub3JnXFxuIFM6XFx0TWFpbnRhaW5lZFxcbiBGOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbFxcbitGOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxzYTgyNTVwLWV0aHFvcy55YW1sXFxuIEY6XFx0ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuY1xcbiBcXG4gUVVBTENPTU0gRkFTVFJQQyBEUklWRVJcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmNcXG5pbmRleCBhYzdkNmQzZTIwNWExYS4uZDM0ZjIwZjg2ODEzOGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmNcXG5AQCAtNSw2ICs1LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9uZXQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcG1fZG9tYWluLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS9waHkuaFxcdTAwM2VcXG4gXFxuQEAgLTgxLDYgKzgyLDggQEBcXG4gXFxuICNkZWZpbmUgU0dNSUlfMTBNX1JYX0NMS19EVkRSXFx0XFx0XFx0MHgzMVxcbiBcXG4rc3RydWN0IHFjb21fZXRocW9zO1xcbitcXG4gc3RydWN0IGV0aHFvc19lbWFjX3BvciB7XFxuIFxcdHVuc2lnbmVkIGludCBvZmZzZXQ7XFxuIFxcdHVuc2lnbmVkIGludCB2YWx1ZTtcXG5AQCAtOTUsNiArOTgsMTMgQEAgc3RydWN0IGV0aHFvc19lbWFjX2RyaXZlcl9kYXRhIHtcXG4gXFx0Y29uc3QgY2hhciAqbGlua19jbGtfbmFtZTtcXG4gXFx0c3RydWN0IGR3bWFjNF9hZGRycyBkd21hYzRfYWRkcnM7XFxuIFxcdGJvb2wgbmVlZHNfc2dtaWlfbG9vcGJhY2s7XFxuK1xcdC8qIEZpeGVkIFBUUCByZWZlcmVuY2UgY2xvY2sgcmF0ZSwgdXNlZCBvbiBTQ01JIHBsYXRmb3JtcyB3aGVyZVxcbitcXHQgKiBmaXJtd2FyZSBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGNsb2NrIHByb3RvY29sIGFsbG93aW5nIGxpbnV4IHRvXFxuK1xcdCAqIHF1ZXJ5IGl0LlxcbitcXHQgKi9cXG4rXFx0dW5zaWduZWQgbG9uZyBwdHBfY2xrX3JhdGU7XFxuK1xcdGludCAoKnNldHVwKShzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcyxcXG4rXFx0XFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KTtcXG4gfTtcXG4gXFxuIHN0cnVjdCBxY29tX2V0aHFvcyB7XFxuQEAgLTEwMywxMiArMTEzLDggQEAgc3RydWN0IHFjb21fZXRocW9zIHtcXG4gXFx0c3RydWN0IGNsayAqbGlua19jbGs7XFxuIFxcdHN0cnVjdCBwaHkgKnNlcmRlc19waHk7XFxuIFxcdHBoeV9pbnRlcmZhY2VfdCBwaHlfbW9kZTtcXG4tXFxuLVxcdGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19wb3IgKnJnbWlpX3BvcjtcXG4tXFx0dW5zaWduZWQgaW50IG51bV9yZ21paV9wb3I7XFxuLVxcdGJvb2wgcmdtaWlfY29uZmlnX2xvb3BiYWNrX2VuO1xcbi1cXHRib29sIGhhc19lbWFjX2dlXzM7XFxuLVxcdGJvb2wgbmVlZHNfc2dtaWlfbG9vcGJhY2s7XFxuK1xcdHN0cnVjdCBkZXZfcG1fZG9tYWluX2xpc3QgKnBkcztcXG4rXFx0Y29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX2RyaXZlcl9kYXRhICpkYXRhO1xcbiB9O1xcbiBcXG4gc3RhdGljIHUzMiByZ21paV9yZWFkbChzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcywgdW5zaWduZWQgaW50IG9mZnNldClcXG5AQCAtMTg5LDggKzE5NSw5IEBAIHN0YXRpYyBpbnQgZXRocW9zX3NldF9jbGtfdHhfcmF0ZSh2b2lkICpic3BfcHJpdiwgc3RydWN0IGNsayAqY2xrX3R4X2ksXFxuIHN0YXRpYyB2b2lkXFxuIHFjb21fZXRocW9zX3NldF9zZ21paV9sb29wYmFjayhzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcywgYm9vbCBlbmFibGUpXFxuIHtcXG4tXFx0aWYgKCFldGhxb3MtXFx1MDAzZW5lZWRzX3NnbWlpX2xvb3BiYWNrIHx8XFxuLVxcdCAgICBldGhxb3MtXFx1MDAzZXBoeV9tb2RlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgpXFxuK1xcdGlmICghZXRocW9zLVxcdTAwM2VkYXRhLVxcdTAwM2VuZWVkc19zZ21paV9sb29wYmFjayB8fFxcbitcXHQgICAgKGV0aHFvcy1cXHUwMDNlcGh5X21vZGUgIT0gUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgIGV0aHFvcy1cXHUwMDNlcGh5X21vZGUgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0cmdtaWlfdXBkYXRlbChldGhxb3MsXFxuQEAgLTIwNCw2ICsyMTEsMTEgQEAgc3RhdGljIHZvaWQgZXRocW9zX3NldF9mdW5jX2Nsa19lbihzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcylcXG4gXFx0cmdtaWlfc2V0bWFzayhldGhxb3MsIFJHTUlJX0NPTkZJR19GVU5DX0NMS19FTiwgUkdNSUlfSU9fTUFDUk9fQ09ORklHKTtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBldGhxb3NfaGxvc19zZXR1cChzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcyxcXG4rXFx0XFx0XFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KTtcXG4rc3RhdGljIGludCBldGhxb3Nfc2NtaV9zZXR1cChzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcyxcXG4rXFx0XFx0XFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KTtcXG4rXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfcG9yIGVtYWNfdjJfM18wX3BvcltdID0ge1xcbiBcXHR7IC5vZmZzZXQgPSBSR01JSV9JT19NQUNST19DT05GSUcsXFx0LnZhbHVlID0gMHgwMEMwMTM0MyB9LFxcbiBcXHR7IC5vZmZzZXQgPSBTRENDX0hDX1JFR19ETExfQ09ORklHLFxcdC52YWx1ZSA9IDB4MjAwNDY0MkMgfSxcXG5AQCAtMjE4LDYgKzIzMCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfZHJpdmVyX2RhdGEgZW1hY192Ml8zXzBfZGF0YSA9IHtcXG4gXFx0Lm51bV9yZ21paV9wb3IgPSBBUlJBWV9TSVpFKGVtYWNfdjJfM18wX3BvciksXFxuIFxcdC5yZ21paV9jb25maWdfbG9vcGJhY2tfZW4gPSB0cnVlLFxcbiBcXHQuaGFzX2VtYWNfZ2VfMyA9IGZhbHNlLFxcbitcXHQuc2V0dXAgPSBldGhxb3NfaGxvc19zZXR1cCxcXG4gfTtcXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfcG9yIGVtYWNfdjJfMV8wX3BvcltdID0ge1xcbkBAIC0yMzQsNiArMjQ3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSBlbWFjX3YyXzFfMF9kYXRhID0ge1xcbiBcXHQubnVtX3JnbWlpX3BvciA9IEFSUkFZX1NJWkUoZW1hY192Ml8xXzBfcG9yKSxcXG4gXFx0LnJnbWlpX2NvbmZpZ19sb29wYmFja19lbiA9IGZhbHNlLFxcbiBcXHQuaGFzX2VtYWNfZ2VfMyA9IGZhbHNlLFxcbitcXHQuc2V0dXAgPSBldGhxb3NfaGxvc19zZXR1cCxcXG4gfTtcXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfcG9yIGVtYWNfdjNfMF8wX3BvcltdID0ge1xcbkBAIC0yNjYsNiArMjgwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSBlbWFjX3YzXzBfMF9kYXRhID0ge1xcbiBcXHRcXHQubXRsX2xvd19jcmVkID0gMHgwMDAwODAyNCxcXG4gXFx0XFx0Lm10bF9sb3dfY3JlZF9vZmZzZXQgPSAweDEwMDAsXFxuIFxcdH0sXFxuK1xcdC5zZXR1cCA9IGV0aHFvc19obG9zX3NldHVwLFxcbiB9O1xcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19wb3IgZW1hY192NF8wXzBfcG9yW10gPSB7XFxuQEAgLTMwMSw2ICszMTYsMzEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSBlbWFjX3Y0XzBfMF9kYXRhID0ge1xcbiBcXHRcXHQubXRsX2xvd19jcmVkID0gMHgwMDAwODAyNCxcXG4gXFx0XFx0Lm10bF9sb3dfY3JlZF9vZmZzZXQgPSAweDEwMDAsXFxuIFxcdH0sXFxuK1xcdC5zZXR1cCA9IGV0aHFvc19obG9zX3NldHVwLFxcbit9O1xcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19kcml2ZXJfZGF0YSBlbWFjX3Y0XzBfMF9zY21pX2RhdGEgPSB7XFxuK1xcdC5oYXNfZW1hY19nZV8zID0gdHJ1ZSxcXG4rXFx0Lm5lZWRzX3NnbWlpX2xvb3BiYWNrID0gdHJ1ZSxcXG4rXFx0LmRtYV9hZGRyX3dpZHRoID0gMzYsXFxuK1xcdC5wdHBfY2xrX3JhdGUgPSAyMzA0MDAwMDAsXFxuK1xcdC5kd21hYzRfYWRkcnMgPSB7XFxuK1xcdFxcdC5kbWFfY2hhbiA9IDB4MDAwMDgxMDAsXFxuK1xcdFxcdC5kbWFfY2hhbl9vZmZzZXQgPSAweDEwMDAsXFxuK1xcdFxcdC5tdGxfY2hhbiA9IDB4MDAwMDgwMDAsXFxuK1xcdFxcdC5tdGxfY2hhbl9vZmZzZXQgPSAweDEwMDAsXFxuK1xcdFxcdC5tdGxfZXRzX2N0cmwgPSAweDAwMDA4MDEwLFxcbitcXHRcXHQubXRsX2V0c19jdHJsX29mZnNldCA9IDB4MTAwMCxcXG4rXFx0XFx0Lm10bF90eHFfd2VpZ2h0ID0gMHgwMDAwODAxOCxcXG4rXFx0XFx0Lm10bF90eHFfd2VpZ2h0X29mZnNldCA9IDB4MTAwMCxcXG4rXFx0XFx0Lm10bF9zZW5kX3NscF9jcmVkID0gMHgwMDAwODAxYyxcXG4rXFx0XFx0Lm10bF9zZW5kX3NscF9jcmVkX29mZnNldCA9IDB4MTAwMCxcXG4rXFx0XFx0Lm10bF9oaWdoX2NyZWQgPSAweDAwMDA4MDIwLFxcbitcXHRcXHQubXRsX2hpZ2hfY3JlZF9vZmZzZXQgPSAweDEwMDAsXFxuK1xcdFxcdC5tdGxfbG93X2NyZWQgPSAweDAwMDA4MDI0LFxcbitcXHRcXHQubXRsX2xvd19jcmVkX29mZnNldCA9IDB4MTAwMCxcXG4rXFx0fSxcXG4rXFx0LnNldHVwID0gZXRocW9zX3NjbWlfc2V0dXAsXFxuIH07XFxuIFxcbiBzdGF0aWMgaW50IGV0aHFvc19kbGxfY29uZmlndXJlKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zKVxcbkBAIC0zMjIsNyArMzYyLDcgQEAgc3RhdGljIGludCBldGhxb3NfZGxsX2NvbmZpZ3VyZShzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcylcXG4gXFx0LyogU2V0IERMTF9FTiAqL1xcbiBcXHRyZ21paV9zZXRtYXNrKGV0aHFvcywgU0RDQ19ETExfQ09ORklHX0RMTF9FTiwgU0RDQ19IQ19SRUdfRExMX0NPTkZJRyk7XFxuIFxcbi1cXHRpZiAoIWV0aHFvcy1cXHUwMDNlaGFzX2VtYWNfZ2VfMykge1xcbitcXHRpZiAoIWV0aHFvcy1cXHUwMDNlZGF0YS1cXHUwMDNlaGFzX2VtYWNfZ2VfMykge1xcbiBcXHRcXHRyZ21paV9jbHJtYXNrKGV0aHFvcywgU0RDQ19ETExfTUNMS19HQVRJTkdfRU4sXFxuIFxcdFxcdFxcdCAgICAgIFNEQ0NfSENfUkVHX0RMTF9DT05GSUcpO1xcbiBcXG5AQCAtMzUyLDcgKzM5Miw3IEBAIHN0YXRpYyBpbnQgZXRocW9zX2RsbF9jb25maWd1cmUoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MpXFxuIFxcdHJnbWlpX3NldG1hc2soZXRocW9zLCBTRENDX0RMTF9DT05GSUcyX0REUl9DQUxfRU4sXFxuIFxcdFxcdCAgICAgIFNEQ0NfSENfUkVHX0RMTF9DT05GSUcyKTtcXG4gXFxuLVxcdGlmICghZXRocW9zLVxcdTAwM2VoYXNfZW1hY19nZV8zKSB7XFxuK1xcdGlmICghZXRocW9zLVxcdTAwM2VkYXRhLVxcdTAwM2VoYXNfZW1hY19nZV8zKSB7XFxuIFxcdFxcdHJnbWlpX2Nscm1hc2soZXRocW9zLCBTRENDX0RMTF9DT05GSUcyX0RMTF9DTE9DS19ESVMsXFxuIFxcdFxcdFxcdCAgICAgIFNEQ0NfSENfUkVHX0RMTF9DT05GSUcyKTtcXG4gXFxuQEAgLTQzMiw3ICs0NzIsNyBAQCBzdGF0aWMgaW50IGV0aHFvc19yZ21paV9tYWNyb19pbml0KHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLCBpbnQgc3BlZWQpXFxuIFxcdHJnbWlpX2Nscm1hc2soZXRocW9zLCBSR01JSV9DT05GSUcyX1JTVkRfQ09ORklHMTUsXFxuIFxcdFxcdCAgICAgIFJHTUlJX0lPX01BQ1JPX0NPTkZJRzIpO1xcbiBcXG4tXFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDAgfHwgZXRocW9zLVxcdTAwM2VoYXNfZW1hY19nZV8zKVxcbitcXHRpZiAoc3BlZWQgPT0gU1BFRURfMTAwMCB8fCBldGhxb3MtXFx1MDAzZWRhdGEtXFx1MDAzZWhhc19lbWFjX2dlXzMpXFxuIFxcdFxcdHJnbWlpX3NldG1hc2soZXRocW9zLCBSR01JSV9DT05GSUcyX1JYX1BST0dfU1dBUCxcXG4gXFx0XFx0XFx0ICAgICAgUkdNSUlfSU9fTUFDUk9fQ09ORklHMik7XFxuIFxcdGVsc2VcXG5AQCAtNDU2LDcgKzQ5Niw3IEBAIHN0YXRpYyBpbnQgZXRocW9zX3JnbWlpX21hY3JvX2luaXQoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MsIGludCBzcGVlZClcXG4gXFx0XFx0ICogaW4gcHJhY3RpY2UgdGhpcyBiZWNvbWVzIFBSR19SQ0xLX0RMWSA9IDUyICogNCAvXFxuIFxcdFxcdCAqICAoMiAqIFJYIGRlbGF5IG5zKVxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0aWYgKGV0aHFvcy1cXHUwMDNlaGFzX2VtYWNfZ2VfMykge1xcbitcXHRcXHRpZiAoZXRocW9zLVxcdTAwM2VkYXRhLVxcdTAwM2VoYXNfZW1hY19nZV8zKSB7XFxuIFxcdFxcdFxcdC8qIDAuOSBucyAqL1xcbiBcXHRcXHRcXHRwcmdfcmNsa19kbHkgPSAxMTU7XFxuIFxcdFxcdH0gZWxzZSB7XFxuQEAgLTQ3Miw3ICs1MTIsNyBAQCBzdGF0aWMgaW50IGV0aHFvc19yZ21paV9tYWNyb19pbml0KHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLCBpbnQgc3BlZWQpXFxuIFxcdFxcdFxcdCAgICAgIFNEQ0NfSENfUkVHX0REUl9DT05GSUcpO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoZXRocW9zLVxcdTAwM2VyZ21paV9jb25maWdfbG9vcGJhY2tfZW4pXFxuK1xcdGlmIChldGhxb3MtXFx1MDAzZWRhdGEtXFx1MDAzZXJnbWlpX2NvbmZpZ19sb29wYmFja19lbilcXG4gXFx0XFx0bG9vcGJhY2sgPSBSR01JSV9DT05GSUdfTE9PUEJBQ0tfRU47XFxuIFxcdGVsc2VcXG4gXFx0XFx0bG9vcGJhY2sgPSAwO1xcbkBAIC00OTUsOSArNTM1LDkgQEAgc3RhdGljIHZvaWQgZXRocW9zX2ZpeF9tYWNfc3BlZWRfcmdtaWkodm9pZCAqYnNwX3ByaXYsXFxuIFxcdGRldiA9IFxcdTAwMjZldGhxb3MtXFx1MDAzZXBkZXYtXFx1MDAzZWRldjtcXG4gXFxuIFxcdC8qIFJlc2V0IHRvIFBPUiB2YWx1ZXMgYW5kIGVuYWJsZSBjbGsgKi9cXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGV0aHFvcy1cXHUwMDNlbnVtX3JnbWlpX3BvcjsgaSsrKVxcbi1cXHRcXHRyZ21paV93cml0ZWwoZXRocW9zLCBldGhxb3MtXFx1MDAzZXJnbWlpX3BvcltpXS52YWx1ZSxcXG4tXFx0XFx0XFx0ICAgICBldGhxb3MtXFx1MDAzZXJnbWlpX3BvcltpXS5vZmZzZXQpO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZXRocW9zLVxcdTAwM2VkYXRhLVxcdTAwM2VudW1fcmdtaWlfcG9yOyBpKyspXFxuK1xcdFxcdHJnbWlpX3dyaXRlbChldGhxb3MsIGV0aHFvcy1cXHUwMDNlZGF0YS1cXHUwMDNlcmdtaWlfcG9yW2ldLnZhbHVlLFxcbitcXHRcXHRcXHQgICAgIGV0aHFvcy1cXHUwMDNlZGF0YS1cXHUwMDNlcmdtaWlfcG9yW2ldLm9mZnNldCk7XFxuIFxcbiBcXHRldGhxb3Nfc2V0X2Z1bmNfY2xrX2VuKGV0aHFvcyk7XFxuIFxcbkBAIC01MTEsNyArNTUxLDcgQEAgc3RhdGljIHZvaWQgZXRocW9zX2ZpeF9tYWNfc3BlZWRfcmdtaWkodm9pZCAqYnNwX3ByaXYsXFxuIFxcdHJnbWlpX3NldG1hc2soZXRocW9zLCBTRENDX0RMTF9DT05GSUdfUEROLFxcbiBcXHRcXHQgICAgICBTRENDX0hDX1JFR19ETExfQ09ORklHKTtcXG4gXFxuLVxcdGlmIChldGhxb3MtXFx1MDAzZWhhc19lbWFjX2dlXzMpIHtcXG4rXFx0aWYgKGV0aHFvcy1cXHUwMDNlZGF0YS1cXHUwMDNlaGFzX2VtYWNfZ2VfMykge1xcbiBcXHRcXHRpZiAoc3BlZWQgPT0gU1BFRURfMTAwMCkge1xcbiBcXHRcXHRcXHRyZ21paV93cml0ZWwoZXRocW9zLCAweDE4MDAwMDAsIFNEQ0NfVEVTVF9DVEwpO1xcbiBcXHRcXHRcXHRyZ21paV93cml0ZWwoZXRocW9zLCAweDJDMDEwODAwLCBTRENDX1VTUl9DVEwpO1xcbkBAIC01MzgsNyArNTc4LDcgQEAgc3RhdGljIHZvaWQgZXRocW9zX2ZpeF9tYWNfc3BlZWRfcmdtaWkodm9pZCAqYnNwX3ByaXYsXFxuIFxcdFxcdFxcdCAgICAgIFNEQ0NfSENfUkVHX0RMTF9DT05GSUcpO1xcbiBcXG4gXFx0XFx0LyogU2V0IFVTUl9DVEwgYml0IDI2IHdpdGggbWFzayBvZiAzIGJpdHMgKi9cXG4tXFx0XFx0aWYgKCFldGhxb3MtXFx1MDAzZWhhc19lbWFjX2dlXzMpXFxuK1xcdFxcdGlmICghZXRocW9zLVxcdTAwM2VkYXRhLVxcdTAwM2VoYXNfZW1hY19nZV8zKVxcbiBcXHRcXHRcXHRyZ21paV91cGRhdGVsKGV0aHFvcywgR0VOTUFTSygyNiwgMjQpLCBCSVQoMjYpLFxcbiBcXHRcXHRcXHRcXHQgICAgICBTRENDX1VTUl9DVEwpO1xcbiBcXG5AQCAtNjAxLDEwICs2NDEsMTkgQEAgc3RhdGljIGludCBxY29tX2V0aHFvc19zZXJkZXNfcG93ZXJ1cChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdm9pZCAqcHJpdilcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuK1xcdHJldCA9IHBoeV9zZXRfbW9kZV9leHQoZXRocW9zLVxcdTAwM2VzZXJkZXNfcGh5LCBQSFlfTU9ERV9FVEhFUk5FVCxcXG4rXFx0XFx0XFx0ICAgICAgIGV0aHFvcy1cXHUwMDNlcGh5X21vZGUpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIGVycl9vdXQ7XFxuK1xcbiBcXHRyZXQgPSBwaHlfcG93ZXJfb24oZXRocW9zLVxcdTAwM2VzZXJkZXNfcGh5KTtcXG4gXFx0aWYgKHJldClcXG4tXFx0XFx0cGh5X2V4aXQoZXRocW9zLVxcdTAwM2VzZXJkZXNfcGh5KTtcXG4rXFx0XFx0Z290byBlcnJfb3V0O1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuIFxcbitlcnJfb3V0OlxcbitcXHRwaHlfZXhpdChldGhxb3MtXFx1MDAzZXNlcmRlc19waHkpO1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbkBAIC02MjMsNiArNjcyLDEyIEBAIHN0YXRpYyBpbnQgZXRocW9zX21hY19maW5pc2hfc2VyZGVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICpwcml2LFxcbiBcXHRzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcyA9IHByaXY7XFxuIFxcdGludCByZXQgPSAwO1xcbiBcXG4rXFx0LyogVGhlIGludGVyZmFjZSBtb2RlIGlzIG9ubHkga25vd24gb25jZSBwaHlsaW5rIGhhcyByZXNvbHZlZCBpdCBhbmRcXG4rXFx0ICogbWF5IGNoYW5nZSBhdCBydW50aW1lLCBzbyBrZWVwIGl0IGluIHN5bmMgZm9yIGxhdGVyXFxuK1xcdCAqIHNlcmRlc19wb3dlcnVwKCkvc2VyZGVzX3Bvd2VyZG93bigpIGNhbGxzLlxcbitcXHQgKi9cXG4rXFx0ZXRocW9zLVxcdTAwM2VwaHlfbW9kZSA9IGludGVyZmFjZTtcXG4rXFxuIFxcdHFjb21fZXRocW9zX3NldF9zZ21paV9sb29wYmFjayhldGhxb3MsIGZhbHNlKTtcXG4gXFxuIFxcdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJIHx8XFxuQEAgLTY4MSw2ICs3MzYsMTE1IEBAIHN0YXRpYyB2b2lkIGV0aHFvc19wdHBfY2xrX2ZyZXFfY29uZmlnKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gXFx0bmV0ZGV2X2RiZyhwcml2LVxcdTAwM2VkZXYsIFxcXCJQVFAgcmF0ZSAlbHVcXFxcblxcXCIsIHBsYXRfZGF0LVxcdTAwM2VjbGtfcHRwX3JhdGUpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGV0aHFvc19obG9zX3NldHVwKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLFxcbitcXHRcXHRcXHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQpXFxuK3tcXG4rXFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IGV0aHFvcy1cXHUwMDNlcGRldjtcXG4rXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdGV0aHFvcy1cXHUwMDNlcmdtaWlfYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgXFxcInJnbWlpXFxcIik7XFxuK1xcdGlmIChJU19FUlIoZXRocW9zLVxcdTAwM2VyZ21paV9iYXNlKSlcXG4rXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGV0aHFvcy1cXHUwMDNlcmdtaWlfYmFzZSksXFxuK1xcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBtYXAgcmdtaWkgcmVzb3VyY2VcXFxcblxcXCIpO1xcbitcXG4rXFx0ZXRocW9zLVxcdTAwM2VsaW5rX2NsayA9IGRldm1fY2xrX2dldChkZXYsIGV0aHFvcy1cXHUwMDNlZGF0YS1cXHUwMDNlbGlua19jbGtfbmFtZSA/OiBcXFwicmdtaWlcXFwiKTtcXG4rXFx0aWYgKElTX0VSUihldGhxb3MtXFx1MDAzZWxpbmtfY2xrKSlcXG4rXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGV0aHFvcy1cXHUwMDNlbGlua19jbGspLFxcbitcXHRcXHRcXHRcXHQgICAgIFxcXCJGYWlsZWQgdG8gZ2V0IGxpbmtfY2xrXFxcXG5cXFwiKTtcXG4rXFxuK1xcdHBsYXRfZGF0LVxcdTAwM2VjbGtzX2NvbmZpZyA9IGV0aHFvc19jbGtzX2NvbmZpZztcXG4rXFxuK1xcdHJldCA9IGV0aHFvc19jbGtzX2NvbmZpZyhldGhxb3MsIHRydWUpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgZXRocW9zX2Nsa3NfZGlzYWJsZSwgZXRocW9zKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdGV0aHFvc19zZXRfY2xrX3R4X3JhdGUoZXRocW9zLCBOVUxMLCBwbGF0X2RhdC1cXHUwMDNlcGh5X2ludGVyZmFjZSwgU1BFRURfMTAwMCk7XFxuK1xcdHFjb21fZXRocW9zX3NldF9zZ21paV9sb29wYmFjayhldGhxb3MsIHRydWUpO1xcbitcXHRldGhxb3Nfc2V0X2Z1bmNfY2xrX2VuKGV0aHFvcyk7XFxuK1xcbitcXHRzd2l0Y2ggKGV0aHFvcy1cXHUwMDNlcGh5X21vZGUpIHtcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX0lEOlxcbitcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEOlxcbitcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEOlxcbitcXHRcXHRwbGF0X2RhdC1cXHUwMDNlZml4X21hY19zcGVlZCA9IGV0aHFvc19maXhfbWFjX3NwZWVkX3JnbWlpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYOlxcbitcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG4rXFx0XFx0cGxhdF9kYXQtXFx1MDAzZWZpeF9tYWNfc3BlZWQgPSBldGhxb3NfZml4X21hY19zcGVlZF9zZ21paTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcbitcXHRwbGF0X2RhdC1cXHUwMDNlc2V0X2Nsa190eF9yYXRlID0gZXRocW9zX3NldF9jbGtfdHhfcmF0ZTtcXG4rXFx0cGxhdF9kYXQtXFx1MDAzZWR1bXBfZGVidWdfcmVncyA9IHJnbWlpX2R1bXA7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGV0aHFvc19zY21pX3BkX25hbWVzW10gPSB7IFxcXCJjb3JlXFxcIiwgXFxcIm1kaW9cXFwiIH07XFxuK1xcbitzdGF0aWMgaW50IGV0aHFvc19zY21pX3NldHVwKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLFxcbitcXHRcXHRcXHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQpXFxuK3tcXG4rXFx0Y29uc3Qgc3RydWN0IGRldl9wbV9kb21haW5fYXR0YWNoX2RhdGEgcGRfZGF0YSA9IHtcXG4rXFx0XFx0LnBkX25hbWVzXFx0PSBldGhxb3Nfc2NtaV9wZF9uYW1lcyxcXG4rXFx0XFx0Lm51bV9wZF9uYW1lc1xcdD0gQVJSQVlfU0laRShldGhxb3Nfc2NtaV9wZF9uYW1lcyksXFxuK1xcdFxcdC5wZF9mbGFnc1xcdD0gUERfRkxBR19ERVZfTElOS19PTixcXG4rXFx0fTtcXG4rXFxuK1xcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSBldGhxb3MtXFx1MDAzZXBkZXY7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRyZXQgPSBkZXZtX3BtX2RvbWFpbl9hdHRhY2hfbGlzdChkZXYsIFxcdTAwMjZwZF9kYXRhLCBcXHUwMDI2ZXRocW9zLVxcdTAwM2VwZHMpO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsXFxuK1xcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBhdHRhY2ggcG93ZXIgZG9tYWluc1xcXFxuXFxcIik7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBUaGUgU2VyRGVzIGxhbmUsIGl0cyBjbG9ja3MgYW5kIHRoZSBNQUMgQVhJL0FIQiBjbG9ja3MgYXJlIG93bmVkIGJ5XFxuK1xcdCAqIGZpcm13YXJlIGFuZCBicm91Z2h0IHVwIHRocm91Z2ggdGhlIFNDTUkgcG93ZXIgZG9tYWlucyBhYm92ZS4gVGhlXFxuK1xcdCAqIE1BQyB3cmFwcGVyIGl0c2VsZiwgaG93ZXZlciBpcyBpbiB0aGUga2VybmVsJ3MgcmVnaXN0ZXIgc3BhY2U6IHRoZVxcbitcXHQgKiBtdXggdGhhdCBmZWVkcyB0aGUgU2VyRGVzIHJlY292ZXJlZCBSWCBjbG9jayBpbnRvIHRoZSBNQUMncyBjbGtfcnhfaVxcbitcXHQgKiBpcyBub3QgY29uZmlndXJlZCBieSBmaXJtd2FyZS4gV2l0aG91dCBpdCwgY2xrX3J4X2kgbmV2ZXIgdG9nZ2xlc1xcbitcXHQgKiBhbmQgdGhlIERNQSBTVy1yZXNldCBwb2xsZWQgaW4gZHdtYWM0X2RtYV9yZXNldCgpIG5ldmVyIGNvbXBsZXRlcy5cXG4rXFx0ICpcXG4rXFx0ICogTWFwIHRoZSB3cmFwcGVyIGFuZCBwcm9ncmFtIHRoZSBzYW1lIGxvb3BiYWNrL2Z1bmN0aW9uYWwgY2xvY2sgYml0c1xcbitcXHQgKiB0aGUgbm9uLWZpcm13YXJlIHBsYXRmb3JtcyByZWx5IG9uIChzZWUgZXRocW9zX2Nsa3NfY29uZmlnKSBzbyB0aGVcXG4rXFx0ICogUlggY2xvY2sgaXMgcHJlc2VudCBieSB0aGUgdGltZSB0aGUgRE1BIGVuZ2luZSBpcyByZXNldC5cXG4rXFx0ICovXFxuK1xcdGV0aHFvcy1cXHUwMDNlcmdtaWlfYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgXFxcInJnbWlpXFxcIik7XFxuK1xcdGlmIChJU19FUlIoZXRocW9zLVxcdTAwM2VyZ21paV9iYXNlKSlcXG4rXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGV0aHFvcy1cXHUwMDNlcmdtaWlfYmFzZSksXFxuK1xcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBtYXAgcmdtaWkgcmVzb3VyY2VcXFxcblxcXCIpO1xcbitcXG4rXFx0LypcXG4rXFx0ICogUnVuIG9uIGV2ZXJ5IHJ1bnRpbWUgcmVzdW1lLCB3aGljaCBzdG1tYWMgcGVyZm9ybXMgYWZ0ZXIgdGhlIHBvd2VyXFxuK1xcdCAqIGRvbWFpbnMgYXJlIG9uIGJ1dCBiZWZvcmUgc2VyZGVzX3Bvd2VydXAoKSBhbmQgdGhlIERNQSByZXNldCwgc28gdGhlXFxuK1xcdCAqIHdyYXBwZXIgaXMgYWx3YXlzIGNvbmZpZ3VyZWQgYWhlYWQgb2YgdGhlIHJlc2V0LlxcbitcXHQgKi9cXG4rXFx0cGxhdF9kYXQtXFx1MDAzZWNsa3NfY29uZmlnID0gZXRocW9zX2Nsa3NfY29uZmlnO1xcbitcXHRwbGF0X2RhdC1cXHUwMDNlY2xrX3B0cF9yYXRlID0gZXRocW9zLVxcdTAwM2VkYXRhLVxcdTAwM2VwdHBfY2xrX3JhdGU7XFxuK1xcbitcXHRzd2l0Y2ggKGV0aHFvcy1cXHUwMDNlcGh5X21vZGUpIHtcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYOlxcbitcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG4rXFx0XFx0cGxhdF9kYXQtXFx1MDAzZWZpeF9tYWNfc3BlZWQgPSBldGhxb3NfZml4X21hY19zcGVlZF9zZ21paTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gc3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZTtcXG5AQCAtNzAyLDIzICs4NjYsMjAgQEAgc3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRcXHRcXHRcXHQgICAgIFxcXCJkdCBjb25maWd1cmF0aW9uIGZhaWxlZFxcXFxuXFxcIik7XFxuIFxcdH1cXG4gXFxuLVxcdHBsYXRfZGF0LVxcdTAwM2VjbGtzX2NvbmZpZyA9IGV0aHFvc19jbGtzX2NvbmZpZztcXG4tXFxuIFxcdGV0aHFvcyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqZXRocW9zKSwgR0ZQX0tFUk5FTCk7XFxuIFxcdGlmICghZXRocW9zKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuIFxcdGV0aHFvcy1cXHUwMDNlcGh5X21vZGUgPSBwbGF0X2RhdC1cXHUwMDNlcGh5X2ludGVyZmFjZTtcXG4rXFxuIFxcdHN3aXRjaCAoZXRocW9zLVxcdTAwM2VwaHlfbW9kZSkge1xcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfSUQ6XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQ6XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RYSUQ6XFxuLVxcdFxcdHBsYXRfZGF0LVxcdTAwM2VmaXhfbWFjX3NwZWVkID0gZXRocW9zX2ZpeF9tYWNfc3BlZWRfcmdtaWk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbi1cXHRcXHRwbGF0X2RhdC1cXHUwMDNlZml4X21hY19zcGVlZCA9IGV0aHFvc19maXhfbWFjX3NwZWVkX3NnbWlpO1xcbiBcXHRcXHRwbGF0X2RhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGV0aHFvc19tYWNfZmluaXNoX3NlcmRlcztcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuQEAgLTcyOCwyOCArODg5LDEzIEBAIHN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0fVxcbiBcXG4gXFx0ZXRocW9zLVxcdTAwM2VwZGV2ID0gcGRldjtcXG4tXFx0ZXRocW9zLVxcdTAwM2VyZ21paV9iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlX2J5bmFtZShwZGV2LCBcXFwicmdtaWlcXFwiKTtcXG4tXFx0aWYgKElTX0VSUihldGhxb3MtXFx1MDAzZXJnbWlpX2Jhc2UpKVxcbi1cXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZXRocW9zLVxcdTAwM2VyZ21paV9iYXNlKSxcXG4tXFx0XFx0XFx0XFx0ICAgICBcXFwiRmFpbGVkIHRvIG1hcCByZ21paSByZXNvdXJjZVxcXFxuXFxcIik7XFxuLVxcbiBcXHRkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuLVxcdGV0aHFvcy1cXHUwMDNlcmdtaWlfcG9yID0gZGF0YS1cXHUwMDNlcmdtaWlfcG9yO1xcbi1cXHRldGhxb3MtXFx1MDAzZW51bV9yZ21paV9wb3IgPSBkYXRhLVxcdTAwM2VudW1fcmdtaWlfcG9yO1xcbi1cXHRldGhxb3MtXFx1MDAzZXJnbWlpX2NvbmZpZ19sb29wYmFja19lbiA9IGRhdGEtXFx1MDAzZXJnbWlpX2NvbmZpZ19sb29wYmFja19lbjtcXG4tXFx0ZXRocW9zLVxcdTAwM2VoYXNfZW1hY19nZV8zID0gZGF0YS1cXHUwMDNlaGFzX2VtYWNfZ2VfMztcXG4tXFx0ZXRocW9zLVxcdTAwM2VuZWVkc19zZ21paV9sb29wYmFjayA9IGRhdGEtXFx1MDAzZW5lZWRzX3NnbWlpX2xvb3BiYWNrO1xcbitcXHRldGhxb3MtXFx1MDAzZWRhdGEgPSBkYXRhO1xcbiBcXG4tXFx0ZXRocW9zLVxcdTAwM2VsaW5rX2NsayA9IGRldm1fY2xrX2dldChkZXYsIGRhdGEtXFx1MDAzZWxpbmtfY2xrX25hbWUgPzogXFxcInJnbWlpXFxcIik7XFxuLVxcdGlmIChJU19FUlIoZXRocW9zLVxcdTAwM2VsaW5rX2NsaykpXFxuLVxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihldGhxb3MtXFx1MDAzZWxpbmtfY2xrKSxcXG4tXFx0XFx0XFx0XFx0ICAgICBcXFwiRmFpbGVkIHRvIGdldCBsaW5rX2Nsa1xcXFxuXFxcIik7XFxuK1xcdGlmIChXQVJOX09OKCFkYXRhLVxcdTAwM2VzZXR1cCkpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4tXFx0cmV0ID0gZXRocW9zX2Nsa3NfY29uZmlnKGV0aHFvcywgdHJ1ZSk7XFxuLVxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuLVxcbi1cXHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCBldGhxb3NfY2xrc19kaXNhYmxlLCBldGhxb3MpO1xcbitcXHRyZXQgPSBkYXRhLVxcdTAwM2VzZXR1cChldGhxb3MsIHBsYXRfZGF0KTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuQEAgLTc1OCwyNCArOTA0LDExIEBAIHN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGV0aHFvcy1cXHUwMDNlc2VyZGVzX3BoeSksXFxuIFxcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBnZXQgc2VyZGVzIHBoeVxcXFxuXFxcIik7XFxuIFxcbi1cXHRldGhxb3Nfc2V0X2Nsa190eF9yYXRlKGV0aHFvcywgTlVMTCwgcGxhdF9kYXQtXFx1MDAzZXBoeV9pbnRlcmZhY2UsXFxuLVxcdFxcdFxcdCAgICAgICBTUEVFRF8xMDAwKTtcXG4tXFxuLVxcdHFjb21fZXRocW9zX3NldF9zZ21paV9sb29wYmFjayhldGhxb3MsIHRydWUpO1xcbi1cXHRldGhxb3Nfc2V0X2Z1bmNfY2xrX2VuKGV0aHFvcyk7XFxuLVxcbi1cXHQvKiBUaGUgY2xvY2tzIGFyZSBjb250cm9sbGVkIGJ5IGZpcm13YXJlLCBzbyB3ZSBkb24ndCBrbm93IGZvciBjZXJ0YWluXFxuLVxcdCAqIHdoYXQgY2xvY2sgcmF0ZSBpcyBiZWluZyB1c2VkLiBIYXJkd2FyZSBkb2N1bWVudGF0aW9uIG1lbnRpb25zIHRoYXRcXG4tXFx0ICogdGhlIEFIQiBzbGF2ZSBjbG9jayB3aWxsIGJlIGluIHRoZSByYW5nZSBvZiA1MCB0byAxMDBNSHosIHdoaWNoXFxuLVxcdCAqIGVxdWF0ZXMgdG8gYSBNREMgYmV0d2VlbiAxLjE5IGFuZCAyLjM4TUh6Llxcbi1cXHQgKi9cXG4gXFx0cGxhdF9kYXQtXFx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzYwXzEwME07XFxuIFxcdHBsYXRfZGF0LVxcdTAwM2Vic3BfcHJpdiA9IGV0aHFvcztcXG4tXFx0cGxhdF9kYXQtXFx1MDAzZXNldF9jbGtfdHhfcmF0ZSA9IGV0aHFvc19zZXRfY2xrX3R4X3JhdGU7XFxuLVxcdHBsYXRfZGF0LVxcdTAwM2VkdW1wX2RlYnVnX3JlZ3MgPSByZ21paV9kdW1wO1xcbiBcXHRwbGF0X2RhdC1cXHUwMDNlcHRwX2Nsa19mcmVxX2NvbmZpZyA9IGV0aHFvc19wdHBfY2xrX2ZyZXFfY29uZmlnO1xcbiBcXHRwbGF0X2RhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtcXG4tXFx0aWYgKGV0aHFvcy1cXHUwMDNlaGFzX2VtYWNfZ2VfMylcXG4rXFx0aWYgKGRhdGEtXFx1MDAzZWhhc19lbWFjX2dlXzMpXFxuIFxcdFxcdHBsYXRfZGF0LVxcdTAwM2Vkd21hYzRfYWRkcnMgPSBcXHUwMDI2ZGF0YS1cXHUwMDNlZHdtYWM0X2FkZHJzO1xcbiBcXHRwbGF0X2RhdC1cXHUwMDNlcG10ID0gdHJ1ZTtcXG4gXFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChucCwgXFxcInNucHMsdHNvXFxcIikpXFxuQEAgLTc5OSw2ICs5MzIsNyBAQCBzdGF0aWMgaW50IHFjb21fZXRocW9zX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBxY29tX2V0aHFvc19tYXRjaFtdID0ge1xcbiBcXHR7IC5jb21wYXRpYmxlID0gXFxcInFjb20scWNzNDA0LWV0aHFvc1xcXCIsIC5kYXRhID0gXFx1MDAyNmVtYWNfdjJfM18wX2RhdGF9LFxcbitcXHR7IC5jb21wYXRpYmxlID0gXFxcInFjb20sc2E4MjU1cC1ldGhxb3NcXFwiLCAuZGF0YSA9IFxcdTAwMjZlbWFjX3Y0XzBfMF9zY21pX2RhdGF9LFxcbiBcXHR7IC5jb21wYXRpYmxlID0gXFxcInFjb20sc2E4Nzc1cC1ldGhxb3NcXFwiLCAuZGF0YSA9IFxcdTAwMjZlbWFjX3Y0XzBfMF9kYXRhfSxcXG4gXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJxY29tLHNjODI4MHhwLWV0aHFvc1xcXCIsIC5kYXRhID0gXFx1MDAyNmVtYWNfdjNfMF8wX2RhdGF9LFxcbiBcXHR7IC5jb21wYXRpYmxlID0gXFxcInFjb20sc204MTUwLWV0aHFvc1xcXCIsIC5kYXRhID0gXFx1MDAyNmVtYWNfdjJfMV8wX2RhdGF9LFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uY1xcbmluZGV4IGU5NWQzOTFhNmRjMjMzLi5iNzIwZTRlOTAyOGNjMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL2FxdWFudGlhX21haW4uY1xcbkBAIC01NDQsNyArNTQ0LDcgQEAgc3RhdGljIGludCBhcXJfZ2VuMV9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4tXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWxpbmsgfHwgcGh5ZGV2LVxcdTAwM2VhdXRvbmVnID09IEFVVE9ORUdfRElTQUJMRSlcXG4rXFx0aWYgKCFwaHlkZXYtXFx1MDAzZWxpbmspXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0LyogVGhlIHN0YXR1cyByZWdpc3RlciBpcyBub3QgaW1tZWRpYXRlbHkgY29ycmVjdCBvbiBsaW5lIHNpZGUgbGluayB1cC5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcXVhbGNvbW0vS2NvbmZpZyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL0tjb25maWdcXG5pbmRleCA2MGEwZWFkMTI3ZmE5Zi4uYTdjZjM0OGY2YTdhYTEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9waHkvcXVhbGNvbW0vS2NvbmZpZ1xcbisrKyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL0tjb25maWdcXG5AQCAtMjMyLDMgKzIzMiwxNCBAQCBjb25maWcgUEhZX1FDT01fU0dNSUlfRVRIXFxuIFxcdGhlbHBcXG4gXFx0ICBFbmFibGUgdGhpcyB0byBzdXBwb3J0IHRoZSBpbnRlcm5hbCBTZXJEZXMvU0dNSUkgUEhZIG9uIHZhcmlvdXNcXG4gXFx0ICBRdWFsY29tbSBjaGlwc2V0cy5cXG4rXFxuK2NvbmZpZyBQSFlfUUNPTV9TR01JSV9FVEhfU0NNSVxcbitcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gRFdNQUMgU0dNSUkgU2VyRGVzL1BIWSBkcml2ZXIgKGZpcm13YXJlIG1hbmFnZWQpXFxcIlxcbitcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1FDT00gfHwgQ09NUElMRV9URVNUKVxcbitcXHRzZWxlY3QgR0VORVJJQ19QSFlcXG4rXFx0c2VsZWN0IFBNXFxuK1xcdHNlbGVjdCBQTV9HRU5FUklDX0RPTUFJTlNcXG4rXFx0aGVscFxcbitcXHQgIEVuYWJsZSB0aGlzIHRvIHN1cHBvcnQgdGhlIGludGVybmFsIFNlckRlcy9TR01JSSBQSFkgb24gUXVhbGNvbW1cXG4rXFx0ICBjaGlwc2V0cyB3aGVyZSB0aGUgU2VyRGVzIGhhcmR3YXJlIChjbG9ja3MgYW5kIHJlZ2lzdGVycykgaXMgb3duZWRcXG4rXFx0ICBieSB0aGUgZmlybXdhcmUuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L3F1YWxjb21tL01ha2VmaWxlIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vTWFrZWZpbGVcXG5pbmRleCBiNzFhNmEwYmVkM2YxNC4uMDMyZTU4MmYyZTFhZjkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9waHkvcXVhbGNvbW0vTWFrZWZpbGVcXG4rKysgYi9kcml2ZXJzL3BoeS9xdWFsY29tbS9NYWtlZmlsZVxcbkBAIC0yNSwzICsyNSw0IEBAIG9iai0kKENPTkZJR19QSFlfUUNPTV9VU0JfU1MpXFx0XFx0Kz0gcGh5LXFjb20tdXNiLXNzLm9cXG4gb2JqLSQoQ09ORklHX1BIWV9RQ09NX1VTQl9TTlBTX0ZFTVRPX1YyKSs9IHBoeS1xY29tLXNucHMtZmVtdG8tdjIub1xcbiBvYmotJChDT05GSUdfUEhZX1FDT01fSVBRODA2WF9VU0IpXFx0Kz0gcGh5LXFjb20taXBxODA2eC11c2Iub1xcbiBvYmotJChDT05GSUdfUEhZX1FDT01fU0dNSUlfRVRIKVxcdCs9IHBoeS1xY29tLXNnbWlpLWV0aC5vXFxuK29iai0kKENPTkZJR19QSFlfUUNPTV9TR01JSV9FVEhfU0NNSSlcXHQrPSBwaHktcWNvbS1zZ21paS1ldGgtc2NtaS5vXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLXNnbWlpLWV0aC1zY21pLmMgYi9kcml2ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS1zZ21paS1ldGgtc2NtaS5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uYWE3Y2U5MzkzYjI4NTNcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tc2dtaWktZXRoLXNjbWkuY1xcbkBAIC0wLDAgKzEsMTY1IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4rLypcXG4rICogQ29weXJpZ2h0IChjKSBRdWFsY29tbSBUZWNobm9sb2dpZXMsIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXFxuKyAqXFxuKyAqIEZpcm13YXJlLW1hbmFnZWQgdmFyaWFudCBvZiB0aGUgUXVhbGNvbW0gRFdNQUMgU0dNSUkgU2VyRGVzL1BIWSBkcml2ZXIuXFxuKyAqL1xcbitcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RlbGF5LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZXZpY2UtaWQvb2YuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V0aHRvb2wuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5L3BoeS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wbV9kb21haW4uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFxcdTAwM2VcXG4rXFxuK3N0cnVjdCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pIHtcXG4rXFx0dW5zaWduZWQgaW50IHBlcmZfc3RhdGU7XFxuK307XFxuK1xcbitzdGF0aWMgaW50IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfcG93ZXJfb24oc3RydWN0IHBoeSAqcGh5KVxcbit7XFxuK1xcdHN0cnVjdCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pICpwcml2ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IHBoeS1cXHUwMDNlZGV2LnBhcmVudDtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoZGV2KTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldCA9IGRldl9wbV9nZW5wZF9zZXRfcGVyZm9ybWFuY2Vfc3RhdGUoZGV2LCBwcml2LVxcdTAwM2VwZXJmX3N0YXRlKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRwbV9ydW50aW1lX3B1dChkZXYpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHR1c2xlZXBfcmFuZ2UoNTAwMCwgMTAwMDApO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9wb3dlcl9vZmYoc3RydWN0IHBoeSAqcGh5KVxcbit7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IHBoeS1cXHUwMDNlZGV2LnBhcmVudDtcXG4rXFxuK1xcdGRldl9wbV9nZW5wZF9zZXRfcGVyZm9ybWFuY2Vfc3RhdGUoZGV2LCAwKTtcXG4rXFx0cG1fcnVudGltZV9wdXQoZGV2KTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfdmFsaWRhdGUoc3RydWN0IHBoeSAqcGh5LCBlbnVtIHBoeV9tb2RlIG1vZGUsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIGludCBzdWJtb2RlLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICB1bmlvbiBwaHlfY29uZmlndXJlX29wdHMgKm9wdHMpXFxuK3tcXG4rXFx0aWYgKG1vZGUgIT0gUEhZX01PREVfRVRIRVJORVQpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0c3dpdGNoIChzdWJtb2RlKSB7XFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbitcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg6XFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWDpcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9zZXRfbW9kZShzdHJ1Y3QgcGh5ICpwaHksIGVudW0gcGh5X21vZGUgbW9kZSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgaW50IHN1Ym1vZGUpXFxuK3tcXG4rXFx0c3RydWN0IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWkgKnByaXYgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTtcXG4rXFx0c3RydWN0IGRldmljZSAqZGV2ID0gcGh5LVxcdTAwM2VkZXYucGFyZW50O1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cmV0ID0gcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV92YWxpZGF0ZShwaHksIG1vZGUsIHN1Ym1vZGUsIE5VTEwpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0cHJpdi1cXHUwMDNlcGVyZl9zdGF0ZSA9IChzdWJtb2RlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgpID9cXG4rXFx0XFx0XFx0ICAgU1BFRURfMjUwMCA6IFNQRUVEXzEwMDA7XFxuK1xcbitcXHRpZiAocGh5LVxcdTAwM2Vwb3dlcl9jb3VudCA9PSAwKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHJldHVybiBkZXZfcG1fZ2VucGRfc2V0X3BlcmZvcm1hbmNlX3N0YXRlKGRldiwgcHJpdi1cXHUwMDNlcGVyZl9zdGF0ZSk7XFxuK31cXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5X29wcyBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX29wcyA9IHtcXG4rXFx0LnBvd2VyX29uXFx0PSBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Bvd2VyX29uLFxcbitcXHQucG93ZXJfb2ZmXFx0PSBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Bvd2VyX29mZixcXG4rXFx0LnNldF9tb2RlXFx0PSBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3NldF9tb2RlLFxcbitcXHQudmFsaWRhdGVcXHQ9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfdmFsaWRhdGUsXFxuK1xcdC5vd25lclxcdFxcdD0gVEhJU19NT0RVTEUsXFxuK307XFxuK1xcbitzdGF0aWMgdm9pZCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3J1bnRpbWVfZGlzYWJsZSh2b2lkICpkYXRhKVxcbit7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGRhdGE7XFxuK1xcbitcXHRwbV9ydW50aW1lX2Rpc2FibGUoZGV2KTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuK3tcXG4rXFx0c3RydWN0IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWkgKnByaXY7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuK1xcdHN0cnVjdCBwaHlfcHJvdmlkZXIgKnByb3ZpZGVyO1xcbitcXHRzdHJ1Y3QgcGh5ICpwaHk7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghcHJpdilcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRwcml2LVxcdTAwM2VwZXJmX3N0YXRlID0gU1BFRURfMTAwMDtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIEVuYWJsZSBydW50aW1lIFBNIG9uIHRoZSBwcm92aWRlciBiZWZvcmUgY3JlYXRpbmcgdGhlIFBIWSBzbyB0aGF0IHRoZVxcbitcXHQgKiBQSFkgY29yZSBlbmFibGVzIHJ1bnRpbWUgUE0gb24gdGhlIFBIWSBkZXZpY2UgdG9vLiBUaGUgc2luZ2xlIFNDTUlcXG4rXFx0ICogcG93ZXIgZG9tYWluIGhhcyBhbHJlYWR5IGJlZW4gYXR0YWNoZWQgdG8gdGhpcyBkZXZpY2UgYnkgdGhlIGRyaXZlclxcbitcXHQgKiBjb3JlLCBzbyBydW50aW1lIFBNIHZvdGVzIHByb3BhZ2F0ZSB0byBmaXJtd2FyZSB0aHJvdWdoIHRoZSBnZW5wZFxcbitcXHQgKiBkZXZpY2UgbGluay4gTm8gcmVnaXN0ZXIgb3IgY2xvY2sgYWNjZXNzIGlzIGRvbmUgaGVyZSAtIGZpcm13YXJlIG93bnNcXG4rXFx0ICogdGhlIFNlckRlcy5cXG4rXFx0ICovXFxuK1xcdHBtX3J1bnRpbWVfZW5hYmxlKGRldik7XFxuK1xcbitcXHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3J1bnRpbWVfZGlzYWJsZSwgZGV2KTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHBoeSA9IGRldm1fcGh5X2NyZWF0ZShkZXYsIE5VTEwsIFxcdTAwMjZxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX29wcyk7XFxuK1xcdGlmIChJU19FUlIocGh5KSlcXG4rXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHBoeSksIFxcXCJmYWlsZWQgdG8gY3JlYXRlIHRoZSBwaHlcXFxcblxcXCIpO1xcbitcXG4rXFx0cGh5X3NldF9kcnZkYXRhKHBoeSwgcHJpdik7XFxuK1xcbitcXHRwcm92aWRlciA9IGRldm1fb2ZfcGh5X3Byb3ZpZGVyX3JlZ2lzdGVyKGRldiwgb2ZfcGh5X3NpbXBsZV94bGF0ZSk7XFxuK1xcdGlmIChJU19FUlIocHJvdmlkZXIpKVxcbitcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJvdmlkZXIpLFxcbitcXHRcXHRcXHRcXHQgICAgIFxcXCJmYWlsZWQgdG8gcmVnaXN0ZXIgdGhlIFBIWSBwcm92aWRlclxcXFxuXFxcIik7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9vZl9tYXRjaFtdID0ge1xcbitcXHR7IC5jb21wYXRpYmxlID0gXFxcInFjb20sc2E4MjU1cC1kd21hYy1zZ21paS1waHlcXFwiIH0sXFxuK1xcdHsgfVxcbit9O1xcbitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX29mX21hdGNoKTtcXG4rXFxuK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfZHJpdmVyID0ge1xcbitcXHQucHJvYmVcXHQ9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfcHJvYmUsXFxuK1xcdC5kcml2ZXIgPSB7XFxuK1xcdFxcdC5uYW1lID0gXFxcInFjb20tZHdtYWMtc2dtaWktcGh5LXNjbWlcXFwiLFxcbitcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX29mX21hdGNoLFxcbitcXHR9LFxcbit9O1xcbittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfZHJpdmVyKTtcXG4rXFxuK01PRFVMRV9ERVNDUklQVElPTihcXFwiUXVhbGNvbW0gRFdNQUMgU0dNSUkgUEhZIGRyaXZlciAoZmlybXdhcmUgbWFuYWdlZClcXFwiKTtcXG4rTU9EVUxFX0FVVEhPUihcXFwiQmFydG9zeiBHb2xhc3pld3NraSBcXHUwMDNjYmFydG9zei5nb2xhc3pld3NraUBvc3MucXVhbGNvbW0uY29tXFx1MDAzZVxcXCIpO1xcbitNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE3OjMzOjIzLjYzMjgzNDYxMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjMyOTY1MDg0ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBwcmltYXJpbHkgYWRkcyBzdXBwb3J0IGZvciBhIGZpcm13YXJlLW1hbmFnZWQgUXVhbGNvbW0gRXRoZXJuZXQgRVRIUU9TIGRldmljZSBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgU2VyRGVzL1NHTUlJIFBIWS4gVGhlc2UgYXJlIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlcnMgKFF1YWxjb21tIFNvQ3MpIGFuZCBhIG1pbm9yIGZpeCBpbiBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWSBkcml2ZXIgKEFxdWFudGlhKS4gU3VjaCBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkZXZpY2VzIGFuZCBQSFlzIGFyZSBub3QgZW11bGF0ZWQgb3IgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHVzZWQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDhjMzUzYjlkODZlYTE4YTg0ZTUzOTdkZWEyNjEyNjBlOWU0MWYzYTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAxNzozMzoyMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjdpLWEyMC1nbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW43aS1hMjAtZ21hYy55YW1sXG5pbmRleCAyM2U5MmJlMzNhYzg2MC4uYjEyNjMyNTQ1NjczYjIgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW43aS1hMjAtZ21hYy55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW43aS1hMjAtZ21hYy55YW1sXG5AQCAtNDAsNiArNDAsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICBQSFkgcmVndWxhdG9yXG4gXG4rICBwb3dlci1kb21haW5zOlxuKyAgICBtYXhJdGVtczogMVxuK1xuIHJlcXVpcmVkOlxuICAgLSBjb21wYXRpYmxlXG4gICAtIHJlZ1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWxcbmluZGV4IGZjNDQ1YWQ1YTFmMWFjLi40NDhlNjE3Y2RkYzRjZCAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbFxuQEAgLTE0MCw2ICsxNDAsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICAgICAgICAtIGRlc2NyaXB0aW9uOiBvZmZzZXQgb2YgdGhlIGNvbnRyb2wgcmVnaXN0ZXJcbiAgICAgICAgICAgLSBkZXNjcmlwdGlvbjogc2hpZnQgd2l0aGluIHRoZSBjb250cm9sIHJlZ2lzdGVyXG4gXG4rICBwb3dlci1kb21haW5zOlxuKyAgICBtYXhJdGVtczogMVxuK1xuIHBhdHRlcm5Qcm9wZXJ0aWVzOlxuICAgXCJebWRpb1swLTldJFwiOlxuICAgICB0eXBlOiBvYmplY3RcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1sb2dpYyxtZXNvbi1kd21hYy55YW1sXG5pbmRleCA1YzkxNzE2ZDFmMjFlNi4uOWM5Y2MzZWYzODRkYTAgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWxcbkBAIC0xNTgsNiArMTU4LDkgQEAgcHJvcGVydGllczpcbiAgIGludGVycnVwdC1uYW1lczpcbiAgICAgY29uc3Q6IG1hY2lycVxuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWxcbmluZGV4IDY1ODgyZmY3OWQ4ZDdlLi4wODFhMjExNzRmZDQyYiAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sXG5AQCAtOTUsNiArOTUsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICAgICAgICAtIGRlc2NyaXB0aW9uOiBPcHRpb25hbCBvZmZzZXQgb2YgcmVnaXN0ZXIgY29udHJvbGxpbmcgVFhEIGRlbGF5XG4gICAgICAgICAgIC0gZGVzY3JpcHRpb246IE9wdGlvbmFsIG9mZnNldCBvZiByZWdpc3RlciBjb250cm9sbGluZyBSWEQgZGVsYXlcbiBcbisgIHBvd2VyLWRvbWFpbnM6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gcmVnXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbFxuaW5kZXggNjJjMWRhMzZhMmI1YTIuLmU0MTg1MTkzMWI5NDc1IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sXG5AQCAtNDcsNiArNDcsOSBAQCBwcm9wZXJ0aWVzOlxuICAgaW50ZXJydXB0LW5hbWVzOlxuICAgICBjb25zdDogbWFjaXJxXG4gXG4rICBwb3dlci1kb21haW5zOlxuKyAgICBtYXhJdGVtczogMVxuK1xuIHJlcXVpcmVkOlxuICAgLSBjb21wYXRpYmxlXG4gICAtIGNsb2Nrc1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbG9vbmdzb24sbHMxYi1nbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWItZ21hYy55YW1sXG5pbmRleCBjNGYzMjI0YmFkMzg3Yi4uYzlhMTMxYjhkODMwNGMgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWItZ21hYy55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWItZ21hYy55YW1sXG5AQCAtNjYsNiArNjYsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICAgIC0gbWlpXG4gICAgICAgLSByZ21paS1pZFxuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2xvb25nc29uLGxzMWMtZW1hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFjLWVtYWMueWFtbFxuaW5kZXggOTkwMDFiOTQwYjgzNjEuLjQ5ZGIxODQyM2RkODA3IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFjLWVtYWMueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sb29uZ3NvbixsczFjLWVtYWMueWFtbFxuQEAgLTY1LDYgKzY1LDkgQEAgcHJvcGVydGllczpcbiAgICAgICAtIG1paVxuICAgICAgIC0gcm1paVxuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxkd21hYy1pbXgueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGR3bWFjLWlteC55YW1sXG5pbmRleCBlNWRiMzQ2YmVjYTk2NC4uYjI0MGM3NmU3ZGQ1MjUgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxkd21hYy1pbXgueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsZHdtYWMtaW14LnlhbWxcbkBAIC04Myw2ICs4Myw5IEBAIHByb3BlcnRpZXM6XG4gICAgIGRlc2NyaXB0aW9uOlxuICAgICAgIFRvIHNlbGVjdCBSTUlJIHJlZmVyZW5jZSBjbG9jayBmcm9tIGV4dGVybmFsLlxuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSBjbG9ja3NcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxscGMxODUwLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxscGMxODUwLWR3bWFjLnlhbWxcbmluZGV4IDA1YWNkOWJjNzYxNjM1Li5mNjExODhhYjBkYmUzYyAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGxwYzE4NTAtZHdtYWMueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsbHBjMTg1MC1kd21hYy55YW1sXG5AQCAtNTEsNiArNTEsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICBpdGVtczpcbiAgICAgICAtIGNvbnN0OiBzdG1tYWNldGhcbiBcbisgIHBvd2VyLWRvbWFpbnM6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gcmVnXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxzMzItZHdtYWMueWFtbFxuaW5kZXggNzUzYTA0OTQxNjU5YjguLmZjYWQyMjc0MzAyZDljIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sXG5AQCAtODEsNiArODEsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICAgIC0gY29uc3Q6IHJ4XG4gICAgICAgLSBjb25zdDogcHRwX3JlZlxuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiByZXF1aXJlZDpcbiAgIC0gY2xvY2tzXG4gICAtIGNsb2NrLW5hbWVzXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY29tLGV0aHFvcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY29tLGV0aHFvcy55YW1sXG5pbmRleCA0MjM5NTljYjkyOGQ5NC4uZWY1MjBmODEwNTc3M2UgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sZXRocW9zLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbFxuQEAgLTg2LDYgKzg2LDkgQEAgcHJvcGVydGllczpcbiAgIHBoeS1uYW1lczpcbiAgICAgY29uc3Q6IHNlcmRlc1xuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSBjbG9ja3NcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sc2E4MjU1cC1ldGhxb3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxzYTgyNTVwLWV0aHFvcy55YW1sXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjUxNTg0ODFlNWU1YjBmXG4tLS0gL2Rldi9udWxsXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sc2E4MjU1cC1ldGhxb3MueWFtbFxuQEAgLTAsMCArMSwxMDcgQEBcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0yLUNsYXVzZVxuKyVZQU1MIDEuMlxuKy0tLVxuKyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L3Fjb20sc2E4MjU1cC1ldGhxb3MueWFtbCNcbiskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbitcbit0aXRsZTogUXVhbGNvbW0gRXRoZXJuZXQgRVRIUU9TIGRldmljZSAoZmlybXdhcmUgbWFuYWdlZClcbitcbittYWludGFpbmVyczpcbisgIC0gQmpvcm4gQW5kZXJzc29uIFx1MDAzY2FuZGVyc3NvbkBrZXJuZWwub3JnXHUwMDNlXG4rICAtIEtvbnJhZCBEeWJjaW8gXHUwMDNja29ucmFkeWJjaW9Aa2VybmVsLm9yZ1x1MDAzZVxuKyAgLSBCYXJ0b3N6IEdvbGFzemV3c2tpIFx1MDAzY2JhcnRvc3ouZ29sYXN6ZXdza2lAbGluYXJvLm9yZ1x1MDAzZVxuK1xuK2Rlc2NyaXB0aW9uOlxuKyAgZHdtYWMgYmFzZWQgUXVhbGNvbW0gZXRoZXJuZXQgZGV2aWNlcyB3aGljaCBzdXBwb3J0IEdpZ2FiaXRcbisgIGV0aGVybmV0ICh2ZXJzaW9uIHYyLjMuMCBhbmQgb253YXJkcykgd2l0aCBjbG9ja3MsIGludGVyY29ubmVjdHMsIGV0Yy5cbisgIG1hbmFnZWQgYnkgZmlybXdhcmVcbitcbithbGxPZjpcbisgIC0gJHJlZjogc25wcyxkd21hYy55YW1sI1xuK1xuK3Byb3BlcnRpZXM6XG4rICBjb21wYXRpYmxlOlxuKyAgICBjb25zdDogcWNvbSxzYTgyNTVwLWV0aHFvc1xuK1xuKyAgcmVnOlxuKyAgICBtYXhJdGVtczogMlxuK1xuKyAgcmVnLW5hbWVzOlxuKyAgICBpdGVtczpcbisgICAgICAtIGNvbnN0OiBzdG1tYWNldGhcbisgICAgICAtIGNvbnN0OiByZ21paVxuK1xuKyAgaW50ZXJydXB0czpcbisgICAgaXRlbXM6XG4rICAgICAgLSBkZXNjcmlwdGlvbjogQ29tYmluZWQgc2lnbmFsIGZvciB2YXJpb3VzIGludGVycnVwdCBldmVudHNcbisgICAgICAtIGRlc2NyaXB0aW9uOiBUaGUgaW50ZXJydXB0IHRoYXQgb2NjdXJzIHdoZW4gSFcgc2FmZXR5IGVycm9yIHRyaWdnZXJlZFxuK1xuKyAgaW50ZXJydXB0LW5hbWVzOlxuKyAgICBpdGVtczpcbisgICAgICAtIGNvbnN0OiBtYWNpcnFcbisgICAgICAtIGNvbnN0OiBzZnR5XG4rXG4rICBwb3dlci1kb21haW5zOlxuKyAgICBtaW5JdGVtczogMlxuKyAgICBtYXhJdGVtczogMlxuK1xuKyAgcG93ZXItZG9tYWluLW5hbWVzOlxuKyAgICBpdGVtczpcbisgICAgICAtIGNvbnN0OiBjb3JlXG4rICAgICAgLSBjb25zdDogbWRpb1xuK1xuKyAgcGh5czpcbisgICAgbWF4SXRlbXM6IDFcbitcbisgIHBoeS1uYW1lczpcbisgICAgaXRlbXM6XG4rICAgICAgLSBjb25zdDogc2VyZGVzXG4rXG4rICBpb21tdXM6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4rICBkbWEtY29oZXJlbnQ6IHRydWVcbitcbityZXF1aXJlZDpcbisgIC0gY29tcGF0aWJsZVxuKyAgLSByZWctbmFtZXNcbisgIC0gcG93ZXItZG9tYWluc1xuKyAgLSBwb3dlci1kb21haW4tbmFtZXNcbitcbit1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXG4rXG4rZXhhbXBsZXM6XG4rICAtIHxcbisgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYXJtLWdpYy5oXHUwMDNlXG4rXG4rICAgIGV0aGVybmV0OiBldGhlcm5ldEAyMzA0MDAwMCB7XG4rICAgICAgICBjb21wYXRpYmxlID0gXCJxY29tLHNhODI1NXAtZXRocW9zXCI7XG4rICAgICAgICByZWcgPSBcdTAwM2MweDIzMDQwMDAwIDB4MTAwMDBcdTAwM2UsXG4rICAgICAgICAgICAgICBcdTAwM2MweDIzMDU2MDAwIDB4MTAwXHUwMDNlO1xuKyAgICAgICAgcmVnLW5hbWVzID0gXCJzdG1tYWNldGhcIiwgXCJyZ21paVwiO1xuK1xuKyAgICAgICAgaW9tbXVzID0gXHUwMDNjXHUwMDI2YXBwc19zbW11IDB4MTIwIDB4N1x1MDAzZTtcbitcbisgICAgICAgIGludGVycnVwdHMgPSBcdTAwM2NHSUNfU1BJIDk0NiBJUlFfVFlQRV9MRVZFTF9ISUdIXHUwMDNlLFxuKyAgICAgICAgICAgICAgICAgICAgIFx1MDAzY0dJQ19TUEkgNzgyIElSUV9UWVBFX0xFVkVMX0hJR0hcdTAwM2U7XG4rICAgICAgICBpbnRlcnJ1cHQtbmFtZXMgPSBcIm1hY2lycVwiLCBcInNmdHlcIjtcbitcbisgICAgICAgIGRtYS1jb2hlcmVudDtcbitcbisgICAgICAgIHNucHMsdHNvO1xuKyAgICAgICAgc25wcyxwYmwgPSBcdTAwM2MzMlx1MDAzZTtcbisgICAgICAgIHJ4LWZpZm8tZGVwdGggPSBcdTAwM2MxNjM4NFx1MDAzZTtcbisgICAgICAgIHR4LWZpZm8tZGVwdGggPSBcdTAwM2MxNjM4NFx1MDAzZTtcbitcbisgICAgICAgIHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZldGhlcm5ldF9waHlcdTAwM2U7XG4rICAgICAgICBwaHktbW9kZSA9IFwiMjUwMGJhc2UteFwiO1xuK1xuKyAgICAgICAgc25wcyxtdGwtcngtY29uZmlnID0gXHUwMDNjXHUwMDI2bXRsX3J4X3NldHVwMVx1MDAzZTtcbisgICAgICAgIHNucHMsbXRsLXR4LWNvbmZpZyA9IFx1MDAzY1x1MDAyNm10bF90eF9zZXR1cDFcdTAwM2U7XG4rXG4rICAgICAgICBwb3dlci1kb21haW5zID0gXHUwMDNjXHUwMDI2c2NtaThfcGQgMFx1MDAzZSwgXHUwMDNjXHUwMDI2c2NtaThfcGQgMVx1MDAzZTtcbisgICAgICAgIHBvd2VyLWRvbWFpbi1uYW1lcyA9IFwiY29yZVwiLCBcIm1kaW9cIjtcbitcbisgICAgICAgIHBoeXMgPSBcdTAwM2NcdTAwMjZzZXJkZXMxXHUwMDNlO1xuKyAgICAgICAgcGh5LW5hbWVzID0gXCJzZXJkZXNcIjtcbisgICAgfTtcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnpuMS1nbWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnpuMS1nbWFjLnlhbWxcbmluZGV4IDE2ZGQ3YTI2MzFhYmY2Li5lZDBkMTBhMTljYTRjNCAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyem4xLWdtYWMueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6bjEtZ21hYy55YW1sXG5AQCAtNDQsNiArNDQsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICAgIHBoYW5kbGUgcG9pbnRpbmcgdG8gYSBQQ1Mgc3ViLW5vZGUgY29tcGF0aWJsZSB3aXRoXG4gICAgICAgcmVuZXNhcyxyem4xLW1paWMueWFtbCNcbiBcbisgIHBvd2VyLWRvbWFpbnM6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiBcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnp2MmgtZ2JldGgueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcmVuZXNhcyxyenYyaC1nYmV0aC55YW1sXG5pbmRleCAyMTI1YjVkZGY3M2RhZC4uODMzODgzNGY0OWNkMjEgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscnp2MmgtZ2JldGgueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJ6djJoLWdiZXRoLnlhbWxcbkBAIC0xNTQsNiArMTU0LDkgQEAgcHJvcGVydGllczpcbiAgICAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sI1xuICAgICAgIChSZWZlciBSWi9UMkggcG9ydGlvbiBpbiB0aGUgRFQtYmluZGluZyBmaWxlKVxuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSByZWdcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JvY2tjaGlwLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JvY2tjaGlwLWR3bWFjLnlhbWxcbmluZGV4IDgwYzI1Mjg0NTM0OWM0Li4zZWMzZjZkYzJhMTI1OSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcm9ja2NoaXAtZHdtYWMueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yb2NrY2hpcC1kd21hYy55YW1sXG5AQCAtMTIzLDYgKzEyMyw5IEBAIHByb3BlcnRpZXM6XG4gICBwaHktc3VwcGx5OlxuICAgICBkZXNjcmlwdGlvbjogUEhZIHJlZ3VsYXRvclxuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSBjbG9ja3NcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc25wcyxkd21hYy55YW1sXG5pbmRleCAyNDQ5MzExYzZkMjhlZC4uZDNhZmYxZGYzMDcwZDEgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdtYWMueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbnBzLGR3bWFjLnlhbWxcbkBAIC03Miw2ICs3Miw3IEBAIHByb3BlcnRpZXM6XG4gICAgICAgICAtIG51dm90b24sbWEzNWQxLWR3bWFjXG4gICAgICAgICAtIG54cCxzMzJnMi1kd21hY1xuICAgICAgICAgLSBxY29tLHFjczQwNC1ldGhxb3NcbisgICAgICAgIC0gcWNvbSxzYTgyNTVwLWV0aHFvc1xuICAgICAgICAgLSBxY29tLHNhODc3NXAtZXRocW9zXG4gICAgICAgICAtIHFjb20sc2M4MjgweHAtZXRocW9zXG4gICAgICAgICAtIHFjb20sc204MTUwLWV0aHFvc1xuQEAgLTE4NSw3ICsxODYsOCBAQCBwcm9wZXJ0aWVzOlxuICAgICAgICAgICAtIGNvbnN0OiBhaGJcbiBcbiAgIHBvd2VyLWRvbWFpbnM6XG4tICAgIG1heEl0ZW1zOiAxXG4rICAgIG1pbkl0ZW1zOiAxXG4rICAgIG1heEl0ZW1zOiAyXG4gXG4gICBtYWMtbW9kZTpcbiAgICAgJHJlZjogZXRoZXJuZXQtY29udHJvbGxlci55YW1sIy9wcm9wZXJ0aWVzL3BoeS1jb25uZWN0aW9uLXR5cGVcbkBAIC02MzAsNiArNjMyLDcgQEAgYWxsT2Y6XG4gICAgICAgICAgICAgICAgIC0gaW5nZW5pYyx4MTgzMC1tYWNcbiAgICAgICAgICAgICAgICAgLSBpbmdlbmljLHgyMDAwLW1hY1xuICAgICAgICAgICAgICAgICAtIHFjb20scWNzNDA0LWV0aHFvc1xuKyAgICAgICAgICAgICAgICAtIHFjb20sc2E4MjU1cC1ldGhxb3NcbiAgICAgICAgICAgICAgICAgLSBxY29tLHNhODc3NXAtZXRocW9zXG4gICAgICAgICAgICAgICAgIC0gcWNvbSxzYzgyODB4cC1ldGhxb3NcbiAgICAgICAgICAgICAgICAgLSBxY29tLHNtODE1MC1ldGhxb3NcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWxcbmluZGV4IGI4OTQ1NmYwZWY4MzA5Li5lNzhjYmY1OTRjNjk1MiAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sXG5AQCAtNDksNiArNDksOSBAQCBwcm9wZXJ0aWVzOlxuICAgcmVzZXQtbmFtZXM6XG4gICAgIGNvbnN0OiBzdG1tYWNldGhcbiBcbisgIHBvd2VyLWRvbWFpbnM6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gcmVnXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxzZzIwNDQtZHdtYWMueWFtbFxuaW5kZXggZThkMzgxNGRiMGU5NGYuLjg0NWUyYzY3ZDIwMDM3IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sXG5AQCAtNTIsNiArNTIsOSBAQCBwcm9wZXJ0aWVzOlxuICAgaW50ZXJydXB0LW5hbWVzOlxuICAgICBtYXhJdGVtczogMVxuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiAgIHJlc2V0czpcbiAgICAgbWF4SXRlbXM6IDFcbiBcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbFxuaW5kZXggZmRjYzYxYzY1Zjg3ZDEuLmM0MjRlNzc5NzM5MjFlIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbFxuQEAgLTc1LDYgKzc1LDkgQEAgcHJvcGVydGllczpcbiAgICAgICBUaGUgYXJndW1lbnQgb25lIGlzIHRoZSBvZmZzZXQgb2YgcGh5IG1vZGUgc2VsZWN0aW9uLCB0aGVcbiAgICAgICBhcmd1bWVudCB0d28gaXMgdGhlIHNoaWZ0IG9mIHBoeSBtb2RlIHNlbGVjdGlvbi5cbiBcbisgIHBvd2VyLWRvbWFpbnM6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4gcmVxdWlyZWQ6XG4gICAtIGNvbXBhdGlibGVcbiAgIC0gcmVnXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG0zMi1kd21hYy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG0zMi1kd21hYy55YW1sXG5pbmRleCA5ODcyNTQ5MDBkMGRhNy4uMjliODc4MDc5ZmYwYzEgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RtMzItZHdtYWMueWFtbFxuQEAgLTEyMSw2ICsxMjEsOSBAQCBwcm9wZXJ0aWVzOlxuICAgICBtaW5JdGVtczogMVxuICAgICBtYXhJdGVtczogMlxuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSBjbG9ja3NcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rlc2xhLGZzZC1ldGhxb3MueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGVzbGEsZnNkLWV0aHFvcy55YW1sXG5pbmRleCBkZDc0ODFiYjE2ZTU5OS4uYWQ2MzU1MjlkNjc2ZWQgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rlc2xhLGZzZC1ldGhxb3MueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90ZXNsYSxmc2QtZXRocW9zLnlhbWxcbkBAIC02Nyw2ICs2Nyw5IEBAIHByb3BlcnRpZXM6XG4gICAgICAgLSByZ21paS1yeGlkXG4gICAgICAgLSByZ21paS10eGlkXG4gXG4rICBwb3dlci1kb21haW5zOlxuKyAgICBtYXhJdGVtczogMVxuK1xuIHJlcXVpcmVkOlxuICAgLSBjb21wYXRpYmxlXG4gICAtIHJlZ1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGhlYWQsdGgxNTIwLWdtYWMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdGhlYWQsdGgxNTIwLWdtYWMueWFtbFxuaW5kZXggYjM0OTJhOWFhNGVmZmEuLmM4NTlmOGJiNWQ1ODJhIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90aGVhZCx0aDE1MjAtZ21hYy55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3RoZWFkLHRoMTUyMC1nbWFjLnlhbWxcbkBAIC03OCw2ICs3OCw5IEBAIHByb3BlcnRpZXM6XG4gICAgIGl0ZW1zOlxuICAgICAgIC0gY29uc3Q6IG1hY2lycVxuIFxuKyAgcG93ZXItZG9tYWluczpcbisgICAgbWF4SXRlbXM6IDFcbitcbiByZXF1aXJlZDpcbiAgIC0gY2xvY2tzXG4gICAtIGNsb2NrLW5hbWVzXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90b3NoaWJhLHZpc2NvbnRpLWR3bWFjLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rvc2hpYmEsdmlzY29udGktZHdtYWMueWFtbFxuaW5kZXggZjBmMzJlMThmYzg1NTAuLmVmYTM5ZWFiMDI1NmExIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90b3NoaWJhLHZpc2NvbnRpLWR3bWFjLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdG9zaGliYSx2aXNjb250aS1kd21hYy55YW1sXG5AQCAtNDgsNiArNDgsOSBAQCBwcm9wZXJ0aWVzOlxuICAgaW50ZXJydXB0LW5hbWVzOlxuICAgICBjb25zdDogbWFjaXJxXG4gXG4rICBwb3dlci1kb21haW5zOlxuKyAgICBtYXhJdGVtczogMVxuK1xuIHJlcXVpcmVkOlxuICAgLSBjb21wYXRpYmxlXG4gICAtIHJlZ1xuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeS55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9xY29tLHNhODI1NXAtZHdtYWMtc2dtaWktcGh5LnlhbWxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOWU4NDZlMzgxNTU1NTFcbi0tLSAvZGV2L251bGxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeS55YW1sXG5AQCAtMCwwICsxLDUwIEBAXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAgT1IgQlNELTItQ2xhdXNlKVxuKyVZQU1MIDEuMlxuKy0tLVxuKyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvcGh5L3Fjb20sc2E4MjU1cC1kd21hYy1zZ21paS1waHkueWFtbCNcbiskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbitcbit0aXRsZTogUXVhbGNvbW0gU2VyRGVzL1NHTUlJIGV0aGVybmV0IFBIWSBjb250cm9sbGVyIChmaXJtd2FyZSBtYW5hZ2VkKVxuK1xuK21haW50YWluZXJzOlxuKyAgLSBCYXJ0b3N6IEdvbGFzemV3c2tpIFx1MDAzY2JyZ2xAa2VybmVsLm9yZ1x1MDAzZVxuK1xuK2Rlc2NyaXB0aW9uOlxuKyAgVGhlIFNlckRlcyBQSFkgc2l0cyBiZXR3ZWVuIHRoZSBNQUMgYW5kIHRoZSBleHRlcm5hbCBQSFkgYW5kIHByb3ZpZGVzXG4rICBzZXBhcmF0ZSBSeCBUeCBsaW5lcy5cbitcbitwcm9wZXJ0aWVzOlxuKyAgY29tcGF0aWJsZTpcbisgICAgY29uc3Q6IHFjb20sc2E4MjU1cC1kd21hYy1zZ21paS1waHlcbitcbisgIHJlZzpcbisgICAgaXRlbXM6XG4rICAgICAgLSBkZXNjcmlwdGlvbjogc2VyZGVzXG4rXG4rICBwb3dlci1kb21haW5zOlxuKyAgICBtYXhJdGVtczogMVxuK1xuKyAgcG93ZXItZG9tYWluLW5hbWVzOlxuKyAgICBtYXhJdGVtczogMVxuK1xuKyAgXCIjcGh5LWNlbGxzXCI6XG4rICAgIGNvbnN0OiAwXG4rXG4rcmVxdWlyZWQ6XG4rICAtIGNvbXBhdGlibGVcbisgIC0gcmVnXG4rICAtIFwiI3BoeS1jZWxsc1wiXG4rICAtIHBvd2VyLWRvbWFpbnNcbisgIC0gcG93ZXItZG9tYWluLW5hbWVzXG4rXG4rYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlXG4rXG4rZXhhbXBsZXM6XG4rICAtIHxcbisgICAgcGh5QDg5MDEwMDAge1xuKyAgICAgICAgY29tcGF0aWJsZSA9IFwicWNvbSxzYTgyNTVwLWR3bWFjLXNnbWlpLXBoeVwiO1xuKyAgICAgICAgcmVnID0gXHUwMDNjMHgwODkwMTAwMCAweGUxMFx1MDAzZTtcbisgICAgICAgICNwaHktY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuKyAgICAgICAgcG93ZXItZG9tYWlucyA9IFx1MDAzY1x1MDAyNnNjbWk3X2R2ZnMgMFx1MDAzZTtcbisgICAgICAgIHBvd2VyLWRvbWFpbi1uYW1lcyA9IFwic2VyZGVzXCI7XG4rICAgIH07XG5kaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSU1xuaW5kZXggODA2YmQyZDgwZDE1MzUuLjg2ZTY3YWE0ZmI5ZGQxIDEwMDY0NFxuLS0tIGEvTUFJTlRBSU5FUlNcbisrKyBiL01BSU5UQUlORVJTXG5AQCAtMjIxODUsNiArMjIxODUsNyBAQCBMOlx0bmV0ZGV2QHZnZXIua2VybmVsLm9yZ1xuIEw6XHRsaW51eC1hcm0tbXNtQHZnZXIua2VybmVsLm9yZ1xuIFM6XHRNYWludGFpbmVkXG4gRjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbFxuK0Y6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Fjb20sc2E4MjU1cC1ldGhxb3MueWFtbFxuIEY6XHRkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jXG4gXG4gUVVBTENPTU0gRkFTVFJQQyBEUklWRVJcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuY1xuaW5kZXggYWM3ZDZkM2UyMDVhMWEuLmQzNGYyMGY4NjgxMzhjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuY1xuQEAgLTUsNiArNSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX25ldC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV9kb21haW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5L3BoeS5oXHUwMDNlXG4gXG5AQCAtODEsNiArODIsOCBAQFxuIFxuICNkZWZpbmUgU0dNSUlfMTBNX1JYX0NMS19EVkRSXHRcdFx0MHgzMVxuIFxuK3N0cnVjdCBxY29tX2V0aHFvcztcbitcbiBzdHJ1Y3QgZXRocW9zX2VtYWNfcG9yIHtcbiBcdHVuc2lnbmVkIGludCBvZmZzZXQ7XG4gXHR1bnNpZ25lZCBpbnQgdmFsdWU7XG5AQCAtOTUsNiArOTgsMTMgQEAgc3RydWN0IGV0aHFvc19lbWFjX2RyaXZlcl9kYXRhIHtcbiBcdGNvbnN0IGNoYXIgKmxpbmtfY2xrX25hbWU7XG4gXHRzdHJ1Y3QgZHdtYWM0X2FkZHJzIGR3bWFjNF9hZGRycztcbiBcdGJvb2wgbmVlZHNfc2dtaWlfbG9vcGJhY2s7XG4rXHQvKiBGaXhlZCBQVFAgcmVmZXJlbmNlIGNsb2NrIHJhdGUsIHVzZWQgb24gU0NNSSBwbGF0Zm9ybXMgd2hlcmVcbitcdCAqIGZpcm13YXJlIGRvZXMgbm90IGltcGxlbWVudCB0aGUgY2xvY2sgcHJvdG9jb2wgYWxsb3dpbmcgbGludXggdG9cbitcdCAqIHF1ZXJ5IGl0LlxuK1x0ICovXG4rXHR1bnNpZ25lZCBsb25nIHB0cF9jbGtfcmF0ZTtcbitcdGludCAoKnNldHVwKShzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcyxcbitcdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KTtcbiB9O1xuIFxuIHN0cnVjdCBxY29tX2V0aHFvcyB7XG5AQCAtMTAzLDEyICsxMTMsOCBAQCBzdHJ1Y3QgcWNvbV9ldGhxb3Mge1xuIFx0c3RydWN0IGNsayAqbGlua19jbGs7XG4gXHRzdHJ1Y3QgcGh5ICpzZXJkZXNfcGh5O1xuIFx0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xuLVxuLVx0Y29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX3BvciAqcmdtaWlfcG9yO1xuLVx0dW5zaWduZWQgaW50IG51bV9yZ21paV9wb3I7XG4tXHRib29sIHJnbWlpX2NvbmZpZ19sb29wYmFja19lbjtcbi1cdGJvb2wgaGFzX2VtYWNfZ2VfMztcbi1cdGJvb2wgbmVlZHNfc2dtaWlfbG9vcGJhY2s7XG4rXHRzdHJ1Y3QgZGV2X3BtX2RvbWFpbl9saXN0ICpwZHM7XG4rXHRjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfZHJpdmVyX2RhdGEgKmRhdGE7XG4gfTtcbiBcbiBzdGF0aWMgdTMyIHJnbWlpX3JlYWRsKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KVxuQEAgLTE4OSw4ICsxOTUsOSBAQCBzdGF0aWMgaW50IGV0aHFvc19zZXRfY2xrX3R4X3JhdGUodm9pZCAqYnNwX3ByaXYsIHN0cnVjdCBjbGsgKmNsa190eF9pLFxuIHN0YXRpYyB2b2lkXG4gcWNvbV9ldGhxb3Nfc2V0X3NnbWlpX2xvb3BiYWNrKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLCBib29sIGVuYWJsZSlcbiB7XG4tXHRpZiAoIWV0aHFvcy1cdTAwM2VuZWVkc19zZ21paV9sb29wYmFjayB8fFxuLVx0ICAgIGV0aHFvcy1cdTAwM2VwaHlfbW9kZSAhPSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYKVxuK1x0aWYgKCFldGhxb3MtXHUwMDNlZGF0YS1cdTAwM2VuZWVkc19zZ21paV9sb29wYmFjayB8fFxuK1x0ICAgIChldGhxb3MtXHUwMDNlcGh5X21vZGUgIT0gUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCBcdTAwMjZcdTAwMjZcbitcdCAgICAgZXRocW9zLVx1MDAzZXBoeV9tb2RlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkpXG4gXHRcdHJldHVybjtcbiBcbiBcdHJnbWlpX3VwZGF0ZWwoZXRocW9zLFxuQEAgLTIwNCw2ICsyMTEsMTEgQEAgc3RhdGljIHZvaWQgZXRocW9zX3NldF9mdW5jX2Nsa19lbihzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcylcbiBcdHJnbWlpX3NldG1hc2soZXRocW9zLCBSR01JSV9DT05GSUdfRlVOQ19DTEtfRU4sIFJHTUlJX0lPX01BQ1JPX0NPTkZJRyk7XG4gfVxuIFxuK3N0YXRpYyBpbnQgZXRocW9zX2hsb3Nfc2V0dXAoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MsXG4rXHRcdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KTtcbitzdGF0aWMgaW50IGV0aHFvc19zY21pX3NldHVwKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLFxuK1x0XHRcdCAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCk7XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19wb3IgZW1hY192Ml8zXzBfcG9yW10gPSB7XG4gXHR7IC5vZmZzZXQgPSBSR01JSV9JT19NQUNST19DT05GSUcsXHQudmFsdWUgPSAweDAwQzAxMzQzIH0sXG4gXHR7IC5vZmZzZXQgPSBTRENDX0hDX1JFR19ETExfQ09ORklHLFx0LnZhbHVlID0gMHgyMDA0NjQyQyB9LFxuQEAgLTIxOCw2ICsyMzAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX2RyaXZlcl9kYXRhIGVtYWNfdjJfM18wX2RhdGEgPSB7XG4gXHQubnVtX3JnbWlpX3BvciA9IEFSUkFZX1NJWkUoZW1hY192Ml8zXzBfcG9yKSxcbiBcdC5yZ21paV9jb25maWdfbG9vcGJhY2tfZW4gPSB0cnVlLFxuIFx0Lmhhc19lbWFjX2dlXzMgPSBmYWxzZSxcbitcdC5zZXR1cCA9IGV0aHFvc19obG9zX3NldHVwLFxuIH07XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19wb3IgZW1hY192Ml8xXzBfcG9yW10gPSB7XG5AQCAtMjM0LDYgKzI0Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfZHJpdmVyX2RhdGEgZW1hY192Ml8xXzBfZGF0YSA9IHtcbiBcdC5udW1fcmdtaWlfcG9yID0gQVJSQVlfU0laRShlbWFjX3YyXzFfMF9wb3IpLFxuIFx0LnJnbWlpX2NvbmZpZ19sb29wYmFja19lbiA9IGZhbHNlLFxuIFx0Lmhhc19lbWFjX2dlXzMgPSBmYWxzZSxcbitcdC5zZXR1cCA9IGV0aHFvc19obG9zX3NldHVwLFxuIH07XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19wb3IgZW1hY192M18wXzBfcG9yW10gPSB7XG5AQCAtMjY2LDYgKzI4MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfZHJpdmVyX2RhdGEgZW1hY192M18wXzBfZGF0YSA9IHtcbiBcdFx0Lm10bF9sb3dfY3JlZCA9IDB4MDAwMDgwMjQsXG4gXHRcdC5tdGxfbG93X2NyZWRfb2Zmc2V0ID0gMHgxMDAwLFxuIFx0fSxcbitcdC5zZXR1cCA9IGV0aHFvc19obG9zX3NldHVwLFxuIH07XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBldGhxb3NfZW1hY19wb3IgZW1hY192NF8wXzBfcG9yW10gPSB7XG5AQCAtMzAxLDYgKzMxNiwzMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHFvc19lbWFjX2RyaXZlcl9kYXRhIGVtYWNfdjRfMF8wX2RhdGEgPSB7XG4gXHRcdC5tdGxfbG93X2NyZWQgPSAweDAwMDA4MDI0LFxuIFx0XHQubXRsX2xvd19jcmVkX29mZnNldCA9IDB4MTAwMCxcbiBcdH0sXG4rXHQuc2V0dXAgPSBldGhxb3NfaGxvc19zZXR1cCxcbit9O1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZXRocW9zX2VtYWNfZHJpdmVyX2RhdGEgZW1hY192NF8wXzBfc2NtaV9kYXRhID0ge1xuK1x0Lmhhc19lbWFjX2dlXzMgPSB0cnVlLFxuK1x0Lm5lZWRzX3NnbWlpX2xvb3BiYWNrID0gdHJ1ZSxcbitcdC5kbWFfYWRkcl93aWR0aCA9IDM2LFxuK1x0LnB0cF9jbGtfcmF0ZSA9IDIzMDQwMDAwMCxcbitcdC5kd21hYzRfYWRkcnMgPSB7XG4rXHRcdC5kbWFfY2hhbiA9IDB4MDAwMDgxMDAsXG4rXHRcdC5kbWFfY2hhbl9vZmZzZXQgPSAweDEwMDAsXG4rXHRcdC5tdGxfY2hhbiA9IDB4MDAwMDgwMDAsXG4rXHRcdC5tdGxfY2hhbl9vZmZzZXQgPSAweDEwMDAsXG4rXHRcdC5tdGxfZXRzX2N0cmwgPSAweDAwMDA4MDEwLFxuK1x0XHQubXRsX2V0c19jdHJsX29mZnNldCA9IDB4MTAwMCxcbitcdFx0Lm10bF90eHFfd2VpZ2h0ID0gMHgwMDAwODAxOCxcbitcdFx0Lm10bF90eHFfd2VpZ2h0X29mZnNldCA9IDB4MTAwMCxcbitcdFx0Lm10bF9zZW5kX3NscF9jcmVkID0gMHgwMDAwODAxYyxcbitcdFx0Lm10bF9zZW5kX3NscF9jcmVkX29mZnNldCA9IDB4MTAwMCxcbitcdFx0Lm10bF9oaWdoX2NyZWQgPSAweDAwMDA4MDIwLFxuK1x0XHQubXRsX2hpZ2hfY3JlZF9vZmZzZXQgPSAweDEwMDAsXG4rXHRcdC5tdGxfbG93X2NyZWQgPSAweDAwMDA4MDI0LFxuK1x0XHQubXRsX2xvd19jcmVkX29mZnNldCA9IDB4MTAwMCxcbitcdH0sXG4rXHQuc2V0dXAgPSBldGhxb3Nfc2NtaV9zZXR1cCxcbiB9O1xuIFxuIHN0YXRpYyBpbnQgZXRocW9zX2RsbF9jb25maWd1cmUoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MpXG5AQCAtMzIyLDcgKzM2Miw3IEBAIHN0YXRpYyBpbnQgZXRocW9zX2RsbF9jb25maWd1cmUoc3RydWN0IHFjb21fZXRocW9zICpldGhxb3MpXG4gXHQvKiBTZXQgRExMX0VOICovXG4gXHRyZ21paV9zZXRtYXNrKGV0aHFvcywgU0RDQ19ETExfQ09ORklHX0RMTF9FTiwgU0RDQ19IQ19SRUdfRExMX0NPTkZJRyk7XG4gXG4tXHRpZiAoIWV0aHFvcy1cdTAwM2VoYXNfZW1hY19nZV8zKSB7XG4rXHRpZiAoIWV0aHFvcy1cdTAwM2VkYXRhLVx1MDAzZWhhc19lbWFjX2dlXzMpIHtcbiBcdFx0cmdtaWlfY2xybWFzayhldGhxb3MsIFNEQ0NfRExMX01DTEtfR0FUSU5HX0VOLFxuIFx0XHRcdCAgICAgIFNEQ0NfSENfUkVHX0RMTF9DT05GSUcpO1xuIFxuQEAgLTM1Miw3ICszOTIsNyBAQCBzdGF0aWMgaW50IGV0aHFvc19kbGxfY29uZmlndXJlKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zKVxuIFx0cmdtaWlfc2V0bWFzayhldGhxb3MsIFNEQ0NfRExMX0NPTkZJRzJfRERSX0NBTF9FTixcbiBcdFx0ICAgICAgU0RDQ19IQ19SRUdfRExMX0NPTkZJRzIpO1xuIFxuLVx0aWYgKCFldGhxb3MtXHUwMDNlaGFzX2VtYWNfZ2VfMykge1xuK1x0aWYgKCFldGhxb3MtXHUwMDNlZGF0YS1cdTAwM2VoYXNfZW1hY19nZV8zKSB7XG4gXHRcdHJnbWlpX2Nscm1hc2soZXRocW9zLCBTRENDX0RMTF9DT05GSUcyX0RMTF9DTE9DS19ESVMsXG4gXHRcdFx0ICAgICAgU0RDQ19IQ19SRUdfRExMX0NPTkZJRzIpO1xuIFxuQEAgLTQzMiw3ICs0NzIsNyBAQCBzdGF0aWMgaW50IGV0aHFvc19yZ21paV9tYWNyb19pbml0KHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLCBpbnQgc3BlZWQpXG4gXHRyZ21paV9jbHJtYXNrKGV0aHFvcywgUkdNSUlfQ09ORklHMl9SU1ZEX0NPTkZJRzE1LFxuIFx0XHQgICAgICBSR01JSV9JT19NQUNST19DT05GSUcyKTtcbiBcbi1cdGlmIChzcGVlZCA9PSBTUEVFRF8xMDAwIHx8IGV0aHFvcy1cdTAwM2VoYXNfZW1hY19nZV8zKVxuK1x0aWYgKHNwZWVkID09IFNQRUVEXzEwMDAgfHwgZXRocW9zLVx1MDAzZWRhdGEtXHUwMDNlaGFzX2VtYWNfZ2VfMylcbiBcdFx0cmdtaWlfc2V0bWFzayhldGhxb3MsIFJHTUlJX0NPTkZJRzJfUlhfUFJPR19TV0FQLFxuIFx0XHRcdCAgICAgIFJHTUlJX0lPX01BQ1JPX0NPTkZJRzIpO1xuIFx0ZWxzZVxuQEAgLTQ1Niw3ICs0OTYsNyBAQCBzdGF0aWMgaW50IGV0aHFvc19yZ21paV9tYWNyb19pbml0KHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLCBpbnQgc3BlZWQpXG4gXHRcdCAqIGluIHByYWN0aWNlIHRoaXMgYmVjb21lcyBQUkdfUkNMS19ETFkgPSA1MiAqIDQgL1xuIFx0XHQgKiAgKDIgKiBSWCBkZWxheSBucylcbiBcdFx0ICovXG4tXHRcdGlmIChldGhxb3MtXHUwMDNlaGFzX2VtYWNfZ2VfMykge1xuK1x0XHRpZiAoZXRocW9zLVx1MDAzZWRhdGEtXHUwMDNlaGFzX2VtYWNfZ2VfMykge1xuIFx0XHRcdC8qIDAuOSBucyAqL1xuIFx0XHRcdHByZ19yY2xrX2RseSA9IDExNTtcbiBcdFx0fSBlbHNlIHtcbkBAIC00NzIsNyArNTEyLDcgQEAgc3RhdGljIGludCBldGhxb3NfcmdtaWlfbWFjcm9faW5pdChzdHJ1Y3QgcWNvbV9ldGhxb3MgKmV0aHFvcywgaW50IHNwZWVkKVxuIFx0XHRcdCAgICAgIFNEQ0NfSENfUkVHX0REUl9DT05GSUcpO1xuIFx0fVxuIFxuLVx0aWYgKGV0aHFvcy1cdTAwM2VyZ21paV9jb25maWdfbG9vcGJhY2tfZW4pXG4rXHRpZiAoZXRocW9zLVx1MDAzZWRhdGEtXHUwMDNlcmdtaWlfY29uZmlnX2xvb3BiYWNrX2VuKVxuIFx0XHRsb29wYmFjayA9IFJHTUlJX0NPTkZJR19MT09QQkFDS19FTjtcbiBcdGVsc2VcbiBcdFx0bG9vcGJhY2sgPSAwO1xuQEAgLTQ5NSw5ICs1MzUsOSBAQCBzdGF0aWMgdm9pZCBldGhxb3NfZml4X21hY19zcGVlZF9yZ21paSh2b2lkICpic3BfcHJpdixcbiBcdGRldiA9IFx1MDAyNmV0aHFvcy1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbiBcbiBcdC8qIFJlc2V0IHRvIFBPUiB2YWx1ZXMgYW5kIGVuYWJsZSBjbGsgKi9cbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGV0aHFvcy1cdTAwM2VudW1fcmdtaWlfcG9yOyBpKyspXG4tXHRcdHJnbWlpX3dyaXRlbChldGhxb3MsIGV0aHFvcy1cdTAwM2VyZ21paV9wb3JbaV0udmFsdWUsXG4tXHRcdFx0ICAgICBldGhxb3MtXHUwMDNlcmdtaWlfcG9yW2ldLm9mZnNldCk7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBldGhxb3MtXHUwMDNlZGF0YS1cdTAwM2VudW1fcmdtaWlfcG9yOyBpKyspXG4rXHRcdHJnbWlpX3dyaXRlbChldGhxb3MsIGV0aHFvcy1cdTAwM2VkYXRhLVx1MDAzZXJnbWlpX3BvcltpXS52YWx1ZSxcbitcdFx0XHQgICAgIGV0aHFvcy1cdTAwM2VkYXRhLVx1MDAzZXJnbWlpX3BvcltpXS5vZmZzZXQpO1xuIFxuIFx0ZXRocW9zX3NldF9mdW5jX2Nsa19lbihldGhxb3MpO1xuIFxuQEAgLTUxMSw3ICs1NTEsNyBAQCBzdGF0aWMgdm9pZCBldGhxb3NfZml4X21hY19zcGVlZF9yZ21paSh2b2lkICpic3BfcHJpdixcbiBcdHJnbWlpX3NldG1hc2soZXRocW9zLCBTRENDX0RMTF9DT05GSUdfUEROLFxuIFx0XHQgICAgICBTRENDX0hDX1JFR19ETExfQ09ORklHKTtcbiBcbi1cdGlmIChldGhxb3MtXHUwMDNlaGFzX2VtYWNfZ2VfMykge1xuK1x0aWYgKGV0aHFvcy1cdTAwM2VkYXRhLVx1MDAzZWhhc19lbWFjX2dlXzMpIHtcbiBcdFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMDApIHtcbiBcdFx0XHRyZ21paV93cml0ZWwoZXRocW9zLCAweDE4MDAwMDAsIFNEQ0NfVEVTVF9DVEwpO1xuIFx0XHRcdHJnbWlpX3dyaXRlbChldGhxb3MsIDB4MkMwMTA4MDAsIFNEQ0NfVVNSX0NUTCk7XG5AQCAtNTM4LDcgKzU3OCw3IEBAIHN0YXRpYyB2b2lkIGV0aHFvc19maXhfbWFjX3NwZWVkX3JnbWlpKHZvaWQgKmJzcF9wcml2LFxuIFx0XHRcdCAgICAgIFNEQ0NfSENfUkVHX0RMTF9DT05GSUcpO1xuIFxuIFx0XHQvKiBTZXQgVVNSX0NUTCBiaXQgMjYgd2l0aCBtYXNrIG9mIDMgYml0cyAqL1xuLVx0XHRpZiAoIWV0aHFvcy1cdTAwM2VoYXNfZW1hY19nZV8zKVxuK1x0XHRpZiAoIWV0aHFvcy1cdTAwM2VkYXRhLVx1MDAzZWhhc19lbWFjX2dlXzMpXG4gXHRcdFx0cmdtaWlfdXBkYXRlbChldGhxb3MsIEdFTk1BU0soMjYsIDI0KSwgQklUKDI2KSxcbiBcdFx0XHRcdCAgICAgIFNEQ0NfVVNSX0NUTCk7XG4gXG5AQCAtNjAxLDEwICs2NDEsMTkgQEAgc3RhdGljIGludCBxY29tX2V0aHFvc19zZXJkZXNfcG93ZXJ1cChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdm9pZCAqcHJpdilcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4rXHRyZXQgPSBwaHlfc2V0X21vZGVfZXh0KGV0aHFvcy1cdTAwM2VzZXJkZXNfcGh5LCBQSFlfTU9ERV9FVEhFUk5FVCxcbitcdFx0XHQgICAgICAgZXRocW9zLVx1MDAzZXBoeV9tb2RlKTtcbitcdGlmIChyZXQpXG4rXHRcdGdvdG8gZXJyX291dDtcbitcbiBcdHJldCA9IHBoeV9wb3dlcl9vbihldGhxb3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4gXHRpZiAocmV0KVxuLVx0XHRwaHlfZXhpdChldGhxb3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4rXHRcdGdvdG8gZXJyX291dDtcbitcbitcdHJldHVybiAwO1xuIFxuK2Vycl9vdXQ6XG4rXHRwaHlfZXhpdChldGhxb3MtXHUwMDNlc2VyZGVzX3BoeSk7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbkBAIC02MjMsNiArNjcyLDEyIEBAIHN0YXRpYyBpbnQgZXRocW9zX21hY19maW5pc2hfc2VyZGVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICpwcml2LFxuIFx0c3RydWN0IHFjb21fZXRocW9zICpldGhxb3MgPSBwcml2O1xuIFx0aW50IHJldCA9IDA7XG4gXG4rXHQvKiBUaGUgaW50ZXJmYWNlIG1vZGUgaXMgb25seSBrbm93biBvbmNlIHBoeWxpbmsgaGFzIHJlc29sdmVkIGl0IGFuZFxuK1x0ICogbWF5IGNoYW5nZSBhdCBydW50aW1lLCBzbyBrZWVwIGl0IGluIHN5bmMgZm9yIGxhdGVyXG4rXHQgKiBzZXJkZXNfcG93ZXJ1cCgpL3NlcmRlc19wb3dlcmRvd24oKSBjYWxscy5cbitcdCAqL1xuK1x0ZXRocW9zLVx1MDAzZXBoeV9tb2RlID0gaW50ZXJmYWNlO1xuK1xuIFx0cWNvbV9ldGhxb3Nfc2V0X3NnbWlpX2xvb3BiYWNrKGV0aHFvcywgZmFsc2UpO1xuIFxuIFx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkgfHxcbkBAIC02ODEsNiArNzM2LDExNSBAQCBzdGF0aWMgdm9pZCBldGhxb3NfcHRwX2Nsa19mcmVxX2NvbmZpZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXHRuZXRkZXZfZGJnKHByaXYtXHUwMDNlZGV2LCBcIlBUUCByYXRlICVsdVxcblwiLCBwbGF0X2RhdC1cdTAwM2VjbGtfcHRwX3JhdGUpO1xuIH1cbiBcbitzdGF0aWMgaW50IGV0aHFvc19obG9zX3NldHVwKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLFxuK1x0XHRcdCAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdClcbit7XG4rXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gZXRocW9zLVx1MDAzZXBkZXY7XG4rXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbitcdGludCByZXQ7XG4rXG4rXHRldGhxb3MtXHUwMDNlcmdtaWlfYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgXCJyZ21paVwiKTtcbitcdGlmIChJU19FUlIoZXRocW9zLVx1MDAzZXJnbWlpX2Jhc2UpKVxuK1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZXRocW9zLVx1MDAzZXJnbWlpX2Jhc2UpLFxuK1x0XHRcdFx0ICAgICBcIkZhaWxlZCB0byBtYXAgcmdtaWkgcmVzb3VyY2VcXG5cIik7XG4rXG4rXHRldGhxb3MtXHUwMDNlbGlua19jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCBldGhxb3MtXHUwMDNlZGF0YS1cdTAwM2VsaW5rX2Nsa19uYW1lID86IFwicmdtaWlcIik7XG4rXHRpZiAoSVNfRVJSKGV0aHFvcy1cdTAwM2VsaW5rX2NsaykpXG4rXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihldGhxb3MtXHUwMDNlbGlua19jbGspLFxuK1x0XHRcdFx0ICAgICBcIkZhaWxlZCB0byBnZXQgbGlua19jbGtcXG5cIik7XG4rXG4rXHRwbGF0X2RhdC1cdTAwM2VjbGtzX2NvbmZpZyA9IGV0aHFvc19jbGtzX2NvbmZpZztcbitcbitcdHJldCA9IGV0aHFvc19jbGtzX2NvbmZpZyhldGhxb3MsIHRydWUpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdHJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIGV0aHFvc19jbGtzX2Rpc2FibGUsIGV0aHFvcyk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0ZXRocW9zX3NldF9jbGtfdHhfcmF0ZShldGhxb3MsIE5VTEwsIHBsYXRfZGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UsIFNQRUVEXzEwMDApO1xuK1x0cWNvbV9ldGhxb3Nfc2V0X3NnbWlpX2xvb3BiYWNrKGV0aHFvcywgdHJ1ZSk7XG4rXHRldGhxb3Nfc2V0X2Z1bmNfY2xrX2VuKGV0aHFvcyk7XG4rXG4rXHRzd2l0Y2ggKGV0aHFvcy1cdTAwM2VwaHlfbW9kZSkge1xuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XG4rXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDpcbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQ6XG4rXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEOlxuK1x0XHRwbGF0X2RhdC1cdTAwM2VmaXhfbWFjX3NwZWVkID0gZXRocW9zX2ZpeF9tYWNfc3BlZWRfcmdtaWk7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYOlxuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4rXHRcdHBsYXRfZGF0LVx1MDAzZWZpeF9tYWNfc3BlZWQgPSBldGhxb3NfZml4X21hY19zcGVlZF9zZ21paTtcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHRicmVhaztcbitcdH1cbitcbitcdHBsYXRfZGF0LVx1MDAzZXNldF9jbGtfdHhfcmF0ZSA9IGV0aHFvc19zZXRfY2xrX3R4X3JhdGU7XG4rXHRwbGF0X2RhdC1cdTAwM2VkdW1wX2RlYnVnX3JlZ3MgPSByZ21paV9kdW1wO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdCBldGhxb3Nfc2NtaV9wZF9uYW1lc1tdID0geyBcImNvcmVcIiwgXCJtZGlvXCIgfTtcbitcbitzdGF0aWMgaW50IGV0aHFvc19zY21pX3NldHVwKHN0cnVjdCBxY29tX2V0aHFvcyAqZXRocW9zLFxuK1x0XHRcdCAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdClcbit7XG4rXHRjb25zdCBzdHJ1Y3QgZGV2X3BtX2RvbWFpbl9hdHRhY2hfZGF0YSBwZF9kYXRhID0ge1xuK1x0XHQucGRfbmFtZXNcdD0gZXRocW9zX3NjbWlfcGRfbmFtZXMsXG4rXHRcdC5udW1fcGRfbmFtZXNcdD0gQVJSQVlfU0laRShldGhxb3Nfc2NtaV9wZF9uYW1lcyksXG4rXHRcdC5wZF9mbGFnc1x0PSBQRF9GTEFHX0RFVl9MSU5LX09OLFxuK1x0fTtcbitcbitcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSBldGhxb3MtXHUwMDNlcGRldjtcbitcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuK1x0aW50IHJldDtcbitcbitcdHJldCA9IGRldm1fcG1fZG9tYWluX2F0dGFjaF9saXN0KGRldiwgXHUwMDI2cGRfZGF0YSwgXHUwMDI2ZXRocW9zLVx1MDAzZXBkcyk7XG4rXHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCxcbitcdFx0XHRcdCAgICAgXCJGYWlsZWQgdG8gYXR0YWNoIHBvd2VyIGRvbWFpbnNcXG5cIik7XG4rXG4rXHQvKlxuK1x0ICogVGhlIFNlckRlcyBsYW5lLCBpdHMgY2xvY2tzIGFuZCB0aGUgTUFDIEFYSS9BSEIgY2xvY2tzIGFyZSBvd25lZCBieVxuK1x0ICogZmlybXdhcmUgYW5kIGJyb3VnaHQgdXAgdGhyb3VnaCB0aGUgU0NNSSBwb3dlciBkb21haW5zIGFib3ZlLiBUaGVcbitcdCAqIE1BQyB3cmFwcGVyIGl0c2VsZiwgaG93ZXZlciBpcyBpbiB0aGUga2VybmVsJ3MgcmVnaXN0ZXIgc3BhY2U6IHRoZVxuK1x0ICogbXV4IHRoYXQgZmVlZHMgdGhlIFNlckRlcyByZWNvdmVyZWQgUlggY2xvY2sgaW50byB0aGUgTUFDJ3MgY2xrX3J4X2lcbitcdCAqIGlzIG5vdCBjb25maWd1cmVkIGJ5IGZpcm13YXJlLiBXaXRob3V0IGl0LCBjbGtfcnhfaSBuZXZlciB0b2dnbGVzXG4rXHQgKiBhbmQgdGhlIERNQSBTVy1yZXNldCBwb2xsZWQgaW4gZHdtYWM0X2RtYV9yZXNldCgpIG5ldmVyIGNvbXBsZXRlcy5cbitcdCAqXG4rXHQgKiBNYXAgdGhlIHdyYXBwZXIgYW5kIHByb2dyYW0gdGhlIHNhbWUgbG9vcGJhY2svZnVuY3Rpb25hbCBjbG9jayBiaXRzXG4rXHQgKiB0aGUgbm9uLWZpcm13YXJlIHBsYXRmb3JtcyByZWx5IG9uIChzZWUgZXRocW9zX2Nsa3NfY29uZmlnKSBzbyB0aGVcbitcdCAqIFJYIGNsb2NrIGlzIHByZXNlbnQgYnkgdGhlIHRpbWUgdGhlIERNQSBlbmdpbmUgaXMgcmVzZXQuXG4rXHQgKi9cbitcdGV0aHFvcy1cdTAwM2VyZ21paV9iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlX2J5bmFtZShwZGV2LCBcInJnbWlpXCIpO1xuK1x0aWYgKElTX0VSUihldGhxb3MtXHUwMDNlcmdtaWlfYmFzZSkpXG4rXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihldGhxb3MtXHUwMDNlcmdtaWlfYmFzZSksXG4rXHRcdFx0XHQgICAgIFwiRmFpbGVkIHRvIG1hcCByZ21paSByZXNvdXJjZVxcblwiKTtcbitcbitcdC8qXG4rXHQgKiBSdW4gb24gZXZlcnkgcnVudGltZSByZXN1bWUsIHdoaWNoIHN0bW1hYyBwZXJmb3JtcyBhZnRlciB0aGUgcG93ZXJcbitcdCAqIGRvbWFpbnMgYXJlIG9uIGJ1dCBiZWZvcmUgc2VyZGVzX3Bvd2VydXAoKSBhbmQgdGhlIERNQSByZXNldCwgc28gdGhlXG4rXHQgKiB3cmFwcGVyIGlzIGFsd2F5cyBjb25maWd1cmVkIGFoZWFkIG9mIHRoZSByZXNldC5cbitcdCAqL1xuK1x0cGxhdF9kYXQtXHUwMDNlY2xrc19jb25maWcgPSBldGhxb3NfY2xrc19jb25maWc7XG4rXHRwbGF0X2RhdC1cdTAwM2VjbGtfcHRwX3JhdGUgPSBldGhxb3MtXHUwMDNlZGF0YS1cdTAwM2VwdHBfY2xrX3JhdGU7XG4rXG4rXHRzd2l0Y2ggKGV0aHFvcy1cdTAwM2VwaHlfbW9kZSkge1xuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYOlxuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4rXHRcdHBsYXRfZGF0LVx1MDAzZWZpeF9tYWNfc3BlZWQgPSBldGhxb3NfZml4X21hY19zcGVlZF9zZ21paTtcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHRicmVhaztcbitcdH1cbitcbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgaW50IHFjb21fZXRocW9zX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4ge1xuIFx0c3RydWN0IGRldmljZV9ub2RlICpucCA9IHBkZXYtXHUwMDNlZGV2Lm9mX25vZGU7XG5AQCAtNzAyLDIzICs4NjYsMjAgQEAgc3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRcdFx0ICAgICBcImR0IGNvbmZpZ3VyYXRpb24gZmFpbGVkXFxuXCIpO1xuIFx0fVxuIFxuLVx0cGxhdF9kYXQtXHUwMDNlY2xrc19jb25maWcgPSBldGhxb3NfY2xrc19jb25maWc7XG4tXG4gXHRldGhxb3MgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmV0aHFvcyksIEdGUF9LRVJORUwpO1xuIFx0aWYgKCFldGhxb3MpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0ZXRocW9zLVx1MDAzZXBoeV9tb2RlID0gcGxhdF9kYXQtXHUwMDNlcGh5X2ludGVyZmFjZTtcbitcbiBcdHN3aXRjaCAoZXRocW9zLVx1MDAzZXBoeV9tb2RlKSB7XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX0lEOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RYSUQ6XG4tXHRcdHBsYXRfZGF0LVx1MDAzZWZpeF9tYWNfc3BlZWQgPSBldGhxb3NfZml4X21hY19zcGVlZF9yZ21paTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbi1cdFx0cGxhdF9kYXQtXHUwMDNlZml4X21hY19zcGVlZCA9IGV0aHFvc19maXhfbWFjX3NwZWVkX3NnbWlpO1xuIFx0XHRwbGF0X2RhdC1cdTAwM2VtYWNfZmluaXNoID0gZXRocW9zX21hY19maW5pc2hfc2VyZGVzO1xuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG5AQCAtNzI4LDI4ICs4ODksMTMgQEAgc3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0fVxuIFxuIFx0ZXRocW9zLVx1MDAzZXBkZXYgPSBwZGV2O1xuLVx0ZXRocW9zLVx1MDAzZXJnbWlpX2Jhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2VfYnluYW1lKHBkZXYsIFwicmdtaWlcIik7XG4tXHRpZiAoSVNfRVJSKGV0aHFvcy1cdTAwM2VyZ21paV9iYXNlKSlcbi1cdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGV0aHFvcy1cdTAwM2VyZ21paV9iYXNlKSxcbi1cdFx0XHRcdCAgICAgXCJGYWlsZWQgdG8gbWFwIHJnbWlpIHJlc291cmNlXFxuXCIpO1xuLVxuIFx0ZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuLVx0ZXRocW9zLVx1MDAzZXJnbWlpX3BvciA9IGRhdGEtXHUwMDNlcmdtaWlfcG9yO1xuLVx0ZXRocW9zLVx1MDAzZW51bV9yZ21paV9wb3IgPSBkYXRhLVx1MDAzZW51bV9yZ21paV9wb3I7XG4tXHRldGhxb3MtXHUwMDNlcmdtaWlfY29uZmlnX2xvb3BiYWNrX2VuID0gZGF0YS1cdTAwM2VyZ21paV9jb25maWdfbG9vcGJhY2tfZW47XG4tXHRldGhxb3MtXHUwMDNlaGFzX2VtYWNfZ2VfMyA9IGRhdGEtXHUwMDNlaGFzX2VtYWNfZ2VfMztcbi1cdGV0aHFvcy1cdTAwM2VuZWVkc19zZ21paV9sb29wYmFjayA9IGRhdGEtXHUwMDNlbmVlZHNfc2dtaWlfbG9vcGJhY2s7XG4rXHRldGhxb3MtXHUwMDNlZGF0YSA9IGRhdGE7XG4gXG4tXHRldGhxb3MtXHUwMDNlbGlua19jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCBkYXRhLVx1MDAzZWxpbmtfY2xrX25hbWUgPzogXCJyZ21paVwiKTtcbi1cdGlmIChJU19FUlIoZXRocW9zLVx1MDAzZWxpbmtfY2xrKSlcbi1cdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGV0aHFvcy1cdTAwM2VsaW5rX2NsayksXG4tXHRcdFx0XHQgICAgIFwiRmFpbGVkIHRvIGdldCBsaW5rX2Nsa1xcblwiKTtcbitcdGlmIChXQVJOX09OKCFkYXRhLVx1MDAzZXNldHVwKSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRyZXQgPSBldGhxb3NfY2xrc19jb25maWcoZXRocW9zLCB0cnVlKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCBldGhxb3NfY2xrc19kaXNhYmxlLCBldGhxb3MpO1xuK1x0cmV0ID0gZGF0YS1cdTAwM2VzZXR1cChldGhxb3MsIHBsYXRfZGF0KTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG5AQCAtNzU4LDI0ICs5MDQsMTEgQEAgc3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZXRocW9zLVx1MDAzZXNlcmRlc19waHkpLFxuIFx0XHRcdFx0ICAgICBcIkZhaWxlZCB0byBnZXQgc2VyZGVzIHBoeVxcblwiKTtcbiBcbi1cdGV0aHFvc19zZXRfY2xrX3R4X3JhdGUoZXRocW9zLCBOVUxMLCBwbGF0X2RhdC1cdTAwM2VwaHlfaW50ZXJmYWNlLFxuLVx0XHRcdCAgICAgICBTUEVFRF8xMDAwKTtcbi1cbi1cdHFjb21fZXRocW9zX3NldF9zZ21paV9sb29wYmFjayhldGhxb3MsIHRydWUpO1xuLVx0ZXRocW9zX3NldF9mdW5jX2Nsa19lbihldGhxb3MpO1xuLVxuLVx0LyogVGhlIGNsb2NrcyBhcmUgY29udHJvbGxlZCBieSBmaXJtd2FyZSwgc28gd2UgZG9uJ3Qga25vdyBmb3IgY2VydGFpblxuLVx0ICogd2hhdCBjbG9jayByYXRlIGlzIGJlaW5nIHVzZWQuIEhhcmR3YXJlIGRvY3VtZW50YXRpb24gbWVudGlvbnMgdGhhdFxuLVx0ICogdGhlIEFIQiBzbGF2ZSBjbG9jayB3aWxsIGJlIGluIHRoZSByYW5nZSBvZiA1MCB0byAxMDBNSHosIHdoaWNoXG4tXHQgKiBlcXVhdGVzIHRvIGEgTURDIGJldHdlZW4gMS4xOSBhbmQgMi4zOE1Iei5cbi1cdCAqL1xuIFx0cGxhdF9kYXQtXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfNjBfMTAwTTtcbiBcdHBsYXRfZGF0LVx1MDAzZWJzcF9wcml2ID0gZXRocW9zO1xuLVx0cGxhdF9kYXQtXHUwMDNlc2V0X2Nsa190eF9yYXRlID0gZXRocW9zX3NldF9jbGtfdHhfcmF0ZTtcbi1cdHBsYXRfZGF0LVx1MDAzZWR1bXBfZGVidWdfcmVncyA9IHJnbWlpX2R1bXA7XG4gXHRwbGF0X2RhdC1cdTAwM2VwdHBfY2xrX2ZyZXFfY29uZmlnID0gZXRocW9zX3B0cF9jbGtfZnJlcV9jb25maWc7XG4gXHRwbGF0X2RhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM0O1xuLVx0aWYgKGV0aHFvcy1cdTAwM2VoYXNfZW1hY19nZV8zKVxuK1x0aWYgKGRhdGEtXHUwMDNlaGFzX2VtYWNfZ2VfMylcbiBcdFx0cGxhdF9kYXQtXHUwMDNlZHdtYWM0X2FkZHJzID0gXHUwMDI2ZGF0YS1cdTAwM2Vkd21hYzRfYWRkcnM7XG4gXHRwbGF0X2RhdC1cdTAwM2VwbXQgPSB0cnVlO1xuIFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChucCwgXCJzbnBzLHRzb1wiKSlcbkBAIC03OTksNiArOTMyLDcgQEAgc3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHFjb21fZXRocW9zX21hdGNoW10gPSB7XG4gXHR7IC5jb21wYXRpYmxlID0gXCJxY29tLHFjczQwNC1ldGhxb3NcIiwgLmRhdGEgPSBcdTAwMjZlbWFjX3YyXzNfMF9kYXRhfSxcbitcdHsgLmNvbXBhdGlibGUgPSBcInFjb20sc2E4MjU1cC1ldGhxb3NcIiwgLmRhdGEgPSBcdTAwMjZlbWFjX3Y0XzBfMF9zY21pX2RhdGF9LFxuIFx0eyAuY29tcGF0aWJsZSA9IFwicWNvbSxzYTg3NzVwLWV0aHFvc1wiLCAuZGF0YSA9IFx1MDAyNmVtYWNfdjRfMF8wX2RhdGF9LFxuIFx0eyAuY29tcGF0aWJsZSA9IFwicWNvbSxzYzgyODB4cC1ldGhxb3NcIiwgLmRhdGEgPSBcdTAwMjZlbWFjX3YzXzBfMF9kYXRhfSxcbiBcdHsgLmNvbXBhdGlibGUgPSBcInFjb20sc204MTUwLWV0aHFvc1wiLCAuZGF0YSA9IFx1MDAyNmVtYWNfdjJfMV8wX2RhdGF9LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9hcXVhbnRpYV9tYWluLmMgYi9kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jXG5pbmRleCBlOTVkMzkxYTZkYzIzMy4uYjcyMGU0ZTkwMjhjYzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvYXF1YW50aWEvYXF1YW50aWFfbWFpbi5jXG5AQCAtNTQ0LDcgKzU0NCw3IEBAIHN0YXRpYyBpbnQgYXFyX2dlbjFfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRpZiAoIXBoeWRldi1cdTAwM2VsaW5rIHx8IHBoeWRldi1cdTAwM2VhdXRvbmVnID09IEFVVE9ORUdfRElTQUJMRSlcbitcdGlmICghcGh5ZGV2LVx1MDAzZWxpbmspXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0LyogVGhlIHN0YXR1cyByZWdpc3RlciBpcyBub3QgaW1tZWRpYXRlbHkgY29ycmVjdCBvbiBsaW5lIHNpZGUgbGluayB1cC5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9LY29uZmlnIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vS2NvbmZpZ1xuaW5kZXggNjBhMGVhZDEyN2ZhOWYuLmE3Y2YzNDhmNmE3YWExIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9waHkvcXVhbGNvbW0vS2NvbmZpZ1xuKysrIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vS2NvbmZpZ1xuQEAgLTIzMiwzICsyMzIsMTQgQEAgY29uZmlnIFBIWV9RQ09NX1NHTUlJX0VUSFxuIFx0aGVscFxuIFx0ICBFbmFibGUgdGhpcyB0byBzdXBwb3J0IHRoZSBpbnRlcm5hbCBTZXJEZXMvU0dNSUkgUEhZIG9uIHZhcmlvdXNcbiBcdCAgUXVhbGNvbW0gY2hpcHNldHMuXG4rXG4rY29uZmlnIFBIWV9RQ09NX1NHTUlJX0VUSF9TQ01JXG4rXHR0cmlzdGF0ZSBcIlF1YWxjb21tIERXTUFDIFNHTUlJIFNlckRlcy9QSFkgZHJpdmVyIChmaXJtd2FyZSBtYW5hZ2VkKVwiXG4rXHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcbitcdHNlbGVjdCBHRU5FUklDX1BIWVxuK1x0c2VsZWN0IFBNXG4rXHRzZWxlY3QgUE1fR0VORVJJQ19ET01BSU5TXG4rXHRoZWxwXG4rXHQgIEVuYWJsZSB0aGlzIHRvIHN1cHBvcnQgdGhlIGludGVybmFsIFNlckRlcy9TR01JSSBQSFkgb24gUXVhbGNvbW1cbitcdCAgY2hpcHNldHMgd2hlcmUgdGhlIFNlckRlcyBoYXJkd2FyZSAoY2xvY2tzIGFuZCByZWdpc3RlcnMpIGlzIG93bmVkXG4rXHQgIGJ5IHRoZSBmaXJtd2FyZS5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9NYWtlZmlsZSBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL01ha2VmaWxlXG5pbmRleCBiNzFhNmEwYmVkM2YxNC4uMDMyZTU4MmYyZTFhZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9NYWtlZmlsZVxuKysrIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vTWFrZWZpbGVcbkBAIC0yNSwzICsyNSw0IEBAIG9iai0kKENPTkZJR19QSFlfUUNPTV9VU0JfU1MpXHRcdCs9IHBoeS1xY29tLXVzYi1zcy5vXG4gb2JqLSQoQ09ORklHX1BIWV9RQ09NX1VTQl9TTlBTX0ZFTVRPX1YyKSs9IHBoeS1xY29tLXNucHMtZmVtdG8tdjIub1xuIG9iai0kKENPTkZJR19QSFlfUUNPTV9JUFE4MDZYX1VTQilcdCs9IHBoeS1xY29tLWlwcTgwNngtdXNiLm9cbiBvYmotJChDT05GSUdfUEhZX1FDT01fU0dNSUlfRVRIKVx0Kz0gcGh5LXFjb20tc2dtaWktZXRoLm9cbitvYmotJChDT05GSUdfUEhZX1FDT01fU0dNSUlfRVRIX1NDTUkpXHQrPSBwaHktcWNvbS1zZ21paS1ldGgtc2NtaS5vXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tc2dtaWktZXRoLXNjbWkuYyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLXNnbWlpLWV0aC1zY21pLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uYWE3Y2U5MzkzYjI4NTNcbi0tLSAvZGV2L251bGxcbisrKyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLXNnbWlpLWV0aC1zY21pLmNcbkBAIC0wLDAgKzEsMTY1IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuKy8qXG4rICogQ29weXJpZ2h0IChjKSBRdWFsY29tbSBUZWNobm9sb2dpZXMsIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4rICpcbisgKiBGaXJtd2FyZS1tYW5hZ2VkIHZhcmlhbnQgb2YgdGhlIFF1YWxjb21tIERXTUFDIFNHTUlJIFNlckRlcy9QSFkgZHJpdmVyLlxuKyAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9kZXZpY2UtaWQvb2YuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2V0aHRvb2wuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5L3BoeS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wbV9kb21haW4uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFx1MDAzZVxuK1xuK3N0cnVjdCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pIHtcbitcdHVuc2lnbmVkIGludCBwZXJmX3N0YXRlO1xuK307XG4rXG4rc3RhdGljIGludCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Bvd2VyX29uKHN0cnVjdCBwaHkgKnBoeSlcbit7XG4rXHRzdHJ1Y3QgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaSAqcHJpdiA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpO1xuK1x0c3RydWN0IGRldmljZSAqZGV2ID0gcGh5LVx1MDAzZWRldi5wYXJlbnQ7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldChkZXYpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdHJldCA9IGRldl9wbV9nZW5wZF9zZXRfcGVyZm9ybWFuY2Vfc3RhdGUoZGV2LCBwcml2LVx1MDAzZXBlcmZfc3RhdGUpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRwbV9ydW50aW1lX3B1dChkZXYpO1xuK1x0XHRyZXR1cm4gcmV0O1xuK1x0fVxuK1xuK1x0dXNsZWVwX3JhbmdlKDUwMDAsIDEwMDAwKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgaW50IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfcG93ZXJfb2ZmKHN0cnVjdCBwaHkgKnBoeSlcbit7XG4rXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwaHktXHUwMDNlZGV2LnBhcmVudDtcbitcbitcdGRldl9wbV9nZW5wZF9zZXRfcGVyZm9ybWFuY2Vfc3RhdGUoZGV2LCAwKTtcbitcdHBtX3J1bnRpbWVfcHV0KGRldik7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3ZhbGlkYXRlKHN0cnVjdCBwaHkgKnBoeSwgZW51bSBwaHlfbW9kZSBtb2RlLFxuK1x0XHRcdFx0XHQgICAgICBpbnQgc3VibW9kZSxcbitcdFx0XHRcdFx0ICAgICAgdW5pb24gcGh5X2NvbmZpZ3VyZV9vcHRzICpvcHRzKVxuK3tcbitcdGlmIChtb2RlICE9IFBIWV9NT0RFX0VUSEVSTkVUKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdHN3aXRjaCAoc3VibW9kZSkge1xuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4rXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg6XG4rXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6XG4rXHRcdHJldHVybiAwO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyBpbnQgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9zZXRfbW9kZShzdHJ1Y3QgcGh5ICpwaHksIGVudW0gcGh5X21vZGUgbW9kZSxcbitcdFx0XHRcdFx0ICAgICAgaW50IHN1Ym1vZGUpXG4re1xuK1x0c3RydWN0IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWkgKnByaXYgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTtcbitcdHN0cnVjdCBkZXZpY2UgKmRldiA9IHBoeS1cdTAwM2VkZXYucGFyZW50O1xuK1x0aW50IHJldDtcbitcbitcdHJldCA9IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfdmFsaWRhdGUocGh5LCBtb2RlLCBzdWJtb2RlLCBOVUxMKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRwcml2LVx1MDAzZXBlcmZfc3RhdGUgPSAoc3VibW9kZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYKSA/XG4rXHRcdFx0ICAgU1BFRURfMjUwMCA6IFNQRUVEXzEwMDA7XG4rXG4rXHRpZiAocGh5LVx1MDAzZXBvd2VyX2NvdW50ID09IDApXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cmV0dXJuIGRldl9wbV9nZW5wZF9zZXRfcGVyZm9ybWFuY2Vfc3RhdGUoZGV2LCBwcml2LVx1MDAzZXBlcmZfc3RhdGUpO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IHBoeV9vcHMgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9vcHMgPSB7XG4rXHQucG93ZXJfb25cdD0gcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9wb3dlcl9vbixcbitcdC5wb3dlcl9vZmZcdD0gcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9wb3dlcl9vZmYsXG4rXHQuc2V0X21vZGVcdD0gcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9zZXRfbW9kZSxcbitcdC52YWxpZGF0ZVx0PSBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3ZhbGlkYXRlLFxuK1x0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4rfTtcbitcbitzdGF0aWMgdm9pZCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3J1bnRpbWVfZGlzYWJsZSh2b2lkICpkYXRhKVxuK3tcbitcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGRhdGE7XG4rXG4rXHRwbV9ydW50aW1lX2Rpc2FibGUoZGV2KTtcbit9XG4rXG4rc3RhdGljIGludCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4re1xuK1x0c3RydWN0IHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWkgKnByaXY7XG4rXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbitcdHN0cnVjdCBwaHlfcHJvdmlkZXIgKnByb3ZpZGVyO1xuK1x0c3RydWN0IHBoeSAqcGh5O1xuK1x0aW50IHJldDtcbitcbitcdHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcbitcdGlmICghcHJpdilcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRwcml2LVx1MDAzZXBlcmZfc3RhdGUgPSBTUEVFRF8xMDAwO1xuK1xuK1x0LypcbitcdCAqIEVuYWJsZSBydW50aW1lIFBNIG9uIHRoZSBwcm92aWRlciBiZWZvcmUgY3JlYXRpbmcgdGhlIFBIWSBzbyB0aGF0IHRoZVxuK1x0ICogUEhZIGNvcmUgZW5hYmxlcyBydW50aW1lIFBNIG9uIHRoZSBQSFkgZGV2aWNlIHRvby4gVGhlIHNpbmdsZSBTQ01JXG4rXHQgKiBwb3dlciBkb21haW4gaGFzIGFscmVhZHkgYmVlbiBhdHRhY2hlZCB0byB0aGlzIGRldmljZSBieSB0aGUgZHJpdmVyXG4rXHQgKiBjb3JlLCBzbyBydW50aW1lIFBNIHZvdGVzIHByb3BhZ2F0ZSB0byBmaXJtd2FyZSB0aHJvdWdoIHRoZSBnZW5wZFxuK1x0ICogZGV2aWNlIGxpbmsuIE5vIHJlZ2lzdGVyIG9yIGNsb2NrIGFjY2VzcyBpcyBkb25lIGhlcmUgLSBmaXJtd2FyZSBvd25zXG4rXHQgKiB0aGUgU2VyRGVzLlxuK1x0ICovXG4rXHRwbV9ydW50aW1lX2VuYWJsZShkZXYpO1xuK1xuK1x0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9ydW50aW1lX2Rpc2FibGUsIGRldik7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cGh5ID0gZGV2bV9waHlfY3JlYXRlKGRldiwgTlVMTCwgXHUwMDI2cWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9vcHMpO1xuK1x0aWYgKElTX0VSUihwaHkpKVxuK1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocGh5KSwgXCJmYWlsZWQgdG8gY3JlYXRlIHRoZSBwaHlcXG5cIik7XG4rXG4rXHRwaHlfc2V0X2RydmRhdGEocGh5LCBwcml2KTtcbitcbitcdHByb3ZpZGVyID0gZGV2bV9vZl9waHlfcHJvdmlkZXJfcmVnaXN0ZXIoZGV2LCBvZl9waHlfc2ltcGxlX3hsYXRlKTtcbitcdGlmIChJU19FUlIocHJvdmlkZXIpKVxuK1x0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJvdmlkZXIpLFxuK1x0XHRcdFx0ICAgICBcImZhaWxlZCB0byByZWdpc3RlciB0aGUgUEhZIHByb3ZpZGVyXFxuXCIpO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfb2ZfbWF0Y2hbXSA9IHtcbitcdHsgLmNvbXBhdGlibGUgPSBcInFjb20sc2E4MjU1cC1kd21hYy1zZ21paS1waHlcIiB9LFxuK1x0eyB9XG4rfTtcbitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX29mX21hdGNoKTtcbitcbitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX2RyaXZlciA9IHtcbitcdC5wcm9iZVx0PSBxY29tX2R3bWFjX3NnbWlpX3BoeV9zY21pX3Byb2JlLFxuK1x0LmRyaXZlciA9IHtcbitcdFx0Lm5hbWUgPSBcInFjb20tZHdtYWMtc2dtaWktcGh5LXNjbWlcIixcbitcdFx0Lm9mX21hdGNoX3RhYmxlID0gcWNvbV9kd21hY19zZ21paV9waHlfc2NtaV9vZl9tYXRjaCxcbitcdH0sXG4rfTtcbittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHFjb21fZHdtYWNfc2dtaWlfcGh5X3NjbWlfZHJpdmVyKTtcbitcbitNT0RVTEVfREVTQ1JJUFRJT04oXCJRdWFsY29tbSBEV01BQyBTR01JSSBQSFkgZHJpdmVyIChmaXJtd2FyZSBtYW5hZ2VkKVwiKTtcbitNT0RVTEVfQVVUSE9SKFwiQmFydG9zeiBHb2xhc3pld3NraSBcdTAwM2NiYXJ0b3N6LmdvbGFzemV3c2tpQG9zcy5xdWFsY29tbS5jb21cdTAwM2VcIik7XG4rTU9EVUxFX0xJQ0VOU0UoXCJHUExcIik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNzozMzoyMy42MzI4MzY5NzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMzI5NjQ4MTcwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgUGF0Y2ggU2VyaWVzIGZvciBGdXp6aW5nIEZlYXNpYmlsaXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSBoYXZlIGEgcGF0Y2ggc2VyaWVzIGRlYWxpbmcgd2l0aCBhIFF1YWxjb21tIEV0aGVybmV0IEVUSFFPUyBkZXZpY2UgYW5kIGl0cyBjb3JyZXNwb25kaW5nIFNlckRlcy9TR01JSSBQSFkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgdGhlIGZ1enppbmcgcG90ZW50aWFsLiBTcGVjaWZpY2FsbHksIGNhbiB0aGlzIGNvZGUgYmUgcmVhbGlzdGljYWxseSByZWFjaGVkIGluIGEgdHlwaWNhbCBmdXp6aW5nIHNldHVwLCBsaWtlIFFFTVUgb3IgR0NFP1xuXG5GaXJzdCwgd2Ugc2VlIGRldmljZSB0cmVlIGJpbmRpbmdzIGFuZCBuZXcgZHJpdmVycyBmb3IgYm90aCBgcWNvbSxzYTgyNTVwLWV0aHFvc2AgYW5kIGl0cyBTR01JSSBQSFkuIFRoZXNlIGFyZSBwbGF0Zm9ybSBkZXZpY2VzLCBhbmQgdGhlIGNvcmUgY2hhbGxlbmdlIGlzIHRoYXQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIG9mdGVuICpkb24ndCogbmF0aXZlbHkgZW11bGF0ZSBzcGVjaWZpYyBRdWFsY29tbSBoYXJkd2FyZS4gSSBpbW1lZGlhdGVseSB0aGluayB0aGF0LCB1bmxlc3MgUUVNVSAqc3BlY2lmaWNhbGx5KiBlbXVsYXRlcyB0aGlzLCB3ZSdyZSBub3QgZ29pbmcgdG8gaGl0IHRoZSBuZXcgY29kZSBwYXRocy4gU3l6a2FsbGVyIGNhbiBpbmplY3QgcGxhdGZvcm0gZGV2aWNlcyB2aWEgRFQgb3ZlcmxheXMgb3IgcHNldWRvLXN5c2NhbGxzIGJ1dCB0aGF0IGlzIGxpbWl0ZWQgd2l0aG91dCBwcmVjaXNlIGRlc2NyaXB0aW9ucy5cblxuVGhlbiB0aGVyZSdzIHRoZSBgZHdtYWMtcWNvbS1ldGhxb3MuY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIFF1YWxjb21tIEVUSFFPUy4gQWxzbyBhIHBsYXRmb3JtIGRldmljZS4gQWdhaW4sIGEgaHVnZSByZWQgZmxhZzogaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyB0aGF0IG5lZWQgTU1JTyBhbmQgY2xvY2svcG93ZXIgZG9tYWluIHNldHVwIGFyZSBub3RvcmlvdXNseSBkaWZmaWN1bHQgdG8gdHJpZ2dlciBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50ICp1bmxlc3MqIHRoZXJlJ3MgYSBnb29kIGVtdWxhdG9yIGZvciB0aGlzIHBhcnRpY3VsYXIgaGFyZHdhcmUuXG5cbk5leHQsIHRoZSBmaXggaW4gYGFxdWFudGlhX21haW4uY2AsIHdoaWNoIGFwcGVhcnMgdG8gYmUgYSAqZ2VuZXJpYyogUEhZIGRyaXZlci4gSXQncyBhIHNtYWxsIGNoYW5nZSB0byBhIGxpbmsgY2hlY2suIFBIWSBkcml2ZXJzIGFyZSBnZW5lcmFsbHkgcHJvYmVkIHdoZW4gYW4gTURJTyBidXMgaXMgcHJlc2VudC4gSWYgdGhlcmUgaXMgYSB2aXJ0dWFsIE1BQyBhbmQgYW4gTURJTyBidXMgcHJlc2VudCwgaXQgKmNvdWxkKiBiZSByZWFjaGFibGUuIEhvd2V2ZXIsIFN5emthbGxlciB0eXBpY2FsbHkgZG9lc24ndCBlbXVsYXRlIE1ESU8gYnVzZXMgdW5sZXNzIHRoZXJlJ3MgYW4gTURJTyBidXMgZHJpdmVyIHByZXNlbnQuIFNvIGV2ZW4gdGhpcyBjaGFuZ2UgaXMgbGlrZWx5IHVucmVhY2hhYmxlLCB1bmxlc3MgdGhlIE1ESU8gYnVzIGlzIGVtdWxhdGVkIG9yIHRoZXJlJ3MgYSBzcGVjaWZpYyBmdXp6ZXIgZm9yIGl0LlxuXG5UaGUgbmV3IGBwaHktcWNvbS1zZ21paS1ldGgtc2NtaS5jYCBkcml2ZXIgZm9yIHRoZSBTZXJEZXMvU0dNSUkgUEhZIGlzLCBvbmNlIGFnYWluLCBhIHBsYXRmb3JtIGRyaXZlciBhc3NvY2lhdGVkIHdpdGggdGhlIHNhbWUgUXVhbGNvbW0gaGFyZHdhcmUuIE5vdCByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5JIGtub3cgc3l6a2FsbGVyIGNhbiBnZW5lcmF0ZSBEVHMsIGJ1dCBpdCdzIG5vdCBnb2luZyB0byBtYWdpYyB1cCBhbiBlbXVsYXRlZCBRdWFsY29tbSBFVEhRT1MgZGV2aWNlLCBwb3dlciBkb21haW5zLCBhbmQgY2xvY2tzLCBlc3BlY2lhbGx5IGlmIGl0IGlzIHBsYXRmb3JtLXNwZWNpZmljIGFuZCByZXF1aXJlcyBTQ01JIGludGVyYWN0aW9uLlxuXG5UaGUgaW5zdHJ1Y3Rpb25zIGluZGljYXRlIHRoYXQgaWYgdGhlIGNoYW5nZXMgYXJlIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgd2Ugc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuR2l2ZW4gdGhpcyBhbmFseXNpcywgSSdtIGNvbmZpZGVudCB0aGF0IHRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggc2VyaWVzIGZvY3VzZXMgb24gaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyAoUXVhbGNvbW0gRVRIUU9TIGFuZCBpdHMgUEhZKSB0aGF0IGFyZSAqdW5saWtlbHkqIHRvIGJlIHJlYWNoYWJsZSBpbiBjb21tb24gZnV6emluZyBzZXR1cHMgbGlrZSBRRU1VIGFuZCBHQ0UsIGVzcGVjaWFsbHkgd2l0aG91dCBzcGVjaWFsaXplZCBlbXVsYXRpb24uXG5cblRoZXJlZm9yZSwgbXkgZmluYWwgYXNzZXNzbWVudCBpcyB0aGF0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzk1MywiT3V0cHV0VG9rZW5zIjoxMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODk1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTc6MzM6NDYuOTI5MzIxMzk5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgcHJpbWFyaWx5IGFkZHMgc3VwcG9ydCBmb3IgYSBmaXJtd2FyZS1tYW5hZ2VkIFF1YWxjb21tIEV0aGVybmV0IEVUSFFPUyBkZXZpY2UgYW5kIGl0cyBjb3JyZXNwb25kaW5nIFNlckRlcy9TR01JSSBQSFkuIFRoZXNlIGFyZSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXJzIChRdWFsY29tbSBTb0NzKSBhbmQgYSBtaW5vciBmaXggaW4gYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgZHJpdmVyIChBcXVhbnRpYSkuIFN1Y2ggaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZGV2aWNlcyBhbmQgUEhZcyBhcmUgbm90IGVtdWxhdGVkIG9yIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB1c2VkIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIHByaW1hcmlseSBhZGRzIHN1cHBvcnQgZm9yIGEgZmlybXdhcmUtbWFuYWdlZCBRdWFsY29tbSBFdGhlcm5ldCBFVEhRT1MgZGV2aWNlIGFuZCBpdHMgY29ycmVzcG9uZGluZyBTZXJEZXMvU0dNSUkgUEhZLiBUaGVzZSBhcmUgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVycyAoUXVhbGNvbW0gU29DcykgYW5kIGEgbWlub3IgZml4IGluIGEgaGFyZHdhcmUtc3BlY2lmaWMgUEhZIGRyaXZlciAoQXF1YW50aWEpLiBTdWNoIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRldmljZXMgYW5kIFBIWXMgYXJlIG5vdCBlbXVsYXRlZCBvciByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UgdXNlZCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow459v4[1] Phase: Running StartedAt: 2026-07-13 17:34:45 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow459v4[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-13 17:34:45 +0000 UTC FinishedAt: 2026-07-13 17:34:50 +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,}