LyoKICogQ29weXJpZ2h0IDIwMDAgUGV0ZXIgSXZhbnlpCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfU0xPVkFLLCBTVUJMQU5HX05FVVRSQUwKQkVHSU4KCi8qIE1NU1lTIGVycm9ycyAqLwpNTVNZU0VSUl9OT0VSUk9SLCAJCSKKcGVjaWZpa292YW79IHBy7WtheiBib2wgdnlrb25hbv0uIgpNTVNZU0VSUl9FUlJPUiwgCQkiTmVkZWZpbm92YW7hIGV4dGVybuEgY2h5YmEuIgpNTVNZU0VSUl9CQURERVZJQ0VJRCwgCQkiQSBkZXZpY2UgSUQgaGFzIGJlZW4gdXNlZCB0aGF0IGlzIG91dCBvZiByYW5nZSBmb3IgeW91ciBzeXN0ZW0uIgpNTVNZU0VSUl9OT1RFTkFCTEVELCAJCSJUaGUgZHJpdmVyIHdhcyBub3QgZW5hYmxlZC4iCk1NU1lTRVJSX0FMTE9DQVRFRCwgCQkiVGhlIHNwZWNpZmllZCBkZXZpY2UgaXMgYWxyZWFkeSBpbiB1c2UuIFdhaXQgdW50aWwgaXQgaXMgZnJlZSwgYW5kIHRoZW4gdHJ5IGFnYWluLiIKTU1TWVNFUlJfSU5WQUxIQU5ETEUsIAkJIlRoZSBzcGVjaWZpZWQgZGV2aWNlIGhhbmRsZSBpcyBpbnZhbGlkLiIKTU1TWVNFUlJfTk9EUklWRVIsIAkJIlRoZXJlIGlzIG5vIGRyaXZlciBpbnN0YWxsZWQgb24geW91ciBzeXN0ZW0gIVxuIgpNTVNZU0VSUl9OT01FTSwgCQkiTm90IGVub3VnaCBtZW1vcnkgYXZhaWxhYmxlIGZvciB0aGlzIHRhc2suIFF1aXQgb25lIG9yIG1vcmUgYXBwbGljYXRpb25zIHRvIGluY3JlYXNlIGF2YWlsYWJsZSBtZW1vcnksIGFuZCB0aGVuIHRyeSBhZ2Fpbi4iCk1NU1lTRVJSX05PVFNVUFBPUlRFRCwgCQkiVGhpcyBmdW5jdGlvbiBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgdGhlIENhcGFiaWxpdGllcyBmdW5jdGlvbiB0byBkZXRlcm1pbmUgd2hpY2ggZnVuY3Rpb25zIGFuZCBtZXNzYWdlcyB0aGUgZHJpdmVyIHN1cHBvcnRzLiIKTU1TWVNFUlJfQkFERVJSTlVNLCAJCSJBbiBlcnJvciBudW1iZXIgd2FzIHNwZWNpZmllZCB0aGF0IGlzIG5vdCBkZWZpbmVkIGluIHRoZSBzeXN0ZW0uIgpNTVNZU0VSUl9JTlZBTEZMQUcsIAkJIkFuIGludmFsaWQgZmxhZyB3YXMgcGFzc2VkIHRvIGEgc3lzdGVtIGZ1bmN0aW9uLiIKTU1TWVNFUlJfSU5WQUxQQVJBTSwgCQkiQW4gaW52YWxpZCBwYXJhbWV0ZXIgd2FzIHBhc3NlZCB0byBhIHN5c3RlbSBmdW5jdGlvbi4iCgovKiBXQVZFIGVycm9ycyAqLwpXQVZFUlJfQkFERk9STUFULCAJCSJUaGUgc3BlY2lmaWVkIGZvcm1hdCBpcyBub3Qgc3VwcG9ydGVkIG9yIGNhbm5vdCBiZSB0cmFuc2xhdGVkLiBVc2UgdGhlIENhcGFiaWxpdGllcyBmdW5jdGlvbiB0byBkZXRlcm1pbmUgdGhlIHN1cHBvcnRlZCBmb3JtYXRzIgpXQVZFUlJfU1RJTExQTEFZSU5HLCAJCSJDYW5ub3QgcGVyZm9ybSB0aGlzIG9wZXJhdGlvbiB3aGlsZSBtZWRpYSBkYXRhIGlzIHN0aWxsIHBsYXlpbmcuIFJlc2V0IHRoZSBkZXZpY2UsIG9yIHdhaXQgdW50aWwgdGhlIGRhdGEgaXMgZmluaXNoZWQgcGxheWluZy4iCldBVkVSUl9VTlBSRVBBUkVELCAJCSJUaGUgd2F2ZSBoZWFkZXIgd2FzIG5vdCBwcmVwYXJlZC4gVXNlIHRoZSBQcmVwYXJlIGZ1bmN0aW9uIHRvIHByZXBhcmUgdGhlIGhlYWRlciwgYW5kIHRoZW4gdHJ5IGFnYWluLiIKV0FWRVJSX1NZTkMsIAkJCSJDYW5ub3Qgb3BlbiB0aGUgZGV2aWNlIHdpdGhvdXQgdXNpbmcgdGhlIFdBVkVfQUxMT1dTWU5DIGZsYWcuIFVzZSB0aGUgZmxhZywgYW5kIHRoZW4gdHJ5IGFnYWluLiIKCi8qIE1JREkgZXJyb3JzICovCk1JRElFUlJfVU5QUkVQQVJFRCwgCQkiVGhlIE1JREkgaGVhZGVyIHdhcyBub3QgcHJlcGFyZWQuIFVzZSB0aGUgUHJlcGFyZSBmdW5jdGlvbiB0byBwcmVwYXJlIHRoZSBoZWFkZXIsIGFuZCB0aGVuIHRyeSBhZ2Fpbi4iCk1JRElFUlJfU1RJTExQTEFZSU5HLCAJCSJDYW5ub3QgcGVyZm9ybSB0aGlzIG9wZXJhdGlvbiB3aGlsZSBtZWRpYSBkYXRhIGlzIHN0aWxsIHBsYXlpbmcuIFJlc2V0IHRoZSBkZXZpY2UsIG9yIHdhaXQgdW50aWwgdGhlIGRhdGEgaXMgZmluaXNoZWQgcGxheWluZy4iCk1JRElFUlJfTk9NQVAsIAkJCSJBIE1JREkgbWFwIHdhcyBub3QgZm91bmQuIFRoZXJlIG1heSBiZSBhIHByb2JsZW0gd2l0aCB0aGUgZHJpdmVyLCBvciB0aGUgTUlESU1BUC5DRkcgZmlsZSBtYXkgYmUgY29ycnVwdCBvciBtaXNzaW5nLiIKTUlESUVSUl9OT1RSRUFEWSwgCQkiVGhlIHBvcnQgaXMgdHJhbnNtaXR0aW5nIGRhdGEgdG8gdGhlIGRldmljZS4gV2FpdCB1bnRpbCB0aGUgZGF0YSBoYXMgYmVlbiB0cmFuc21pdHRlZCwgYW5kIHRoZW4gdHJ5IGFnYWluLiIKTUlESUVSUl9OT0RFVklDRSwgCQkiVGhlIGN1cnJlbnQgTUlESSBNYXBwZXIgc2V0dXAgcmVmZXJzIHRvIGEgTUlESSBkZXZpY2UgdGhhdCBpcyBub3QgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0uIFVzZSBNSURJIE1hcHBlciB0byBlZGl0IHRoZSBzZXR1cC4iCk1JRElFUlJfSU5WQUxJRFNFVFVQLCAJCSJUaGUgY3VycmVudCBNSURJIHNldHVwIGlzIGRhbWFnZWQuIENvcHkgdGhlIG9yaWdpbmFsIE1JRElNQVAuQ0ZHIGZpbGUgdG8gdGhlIFdpbmRvd3MgU1lTVEVNIGRpcmVjdG9yeSwgYW5kIHRoZW4gdHJ5IGFnYWluLiIKCi8qIE1DSSBlcnJvcnMgKi8KTUNJRVJSX0lOVkFMSURfREVWSUNFX0lELCAJIkludmFsaWQgTUNJIGRldmljZSBJRC4gVXNlIHRoZSBJRCByZXR1cm5lZCB3aGVuIG9wZW5pbmcgdGhlIE1DSSBkZXZpY2UuIgpNQ0lFUlJfVU5SRUNPR05JWkVEX0tFWVdPUkQsIAkiVGhlIGRyaXZlciBjYW5ub3QgcmVjb2duaXplIHRoZSBzcGVjaWZpZWQgY29tbWFuZCBwYXJhbWV0ZXIuIgpNQ0lFUlJfVU5SRUNPR05JWkVEX0NPTU1BTkQsCSJUaGUgZHJpdmVyIGNhbm5vdCByZWNvZ25pemUgdGhlIHNwZWNpZmllZCBjb21tYW5kLiIKTUNJRVJSX0hBUkRXQVJFLCAJCSJUaGVyZSBpcyBhIHByb2JsZW0gd2l0aCB5b3VyIG1lZGlhIGRldmljZS4gTWFrZSBzdXJlIGl0IGlzIHdvcmtpbmcgY29ycmVjdGx5IG9yIGNvbnRhY3QgdGhlIGRldmljZSBtYW51ZmFjdHVyZXIuIgpNQ0lFUlJfSU5WQUxJRF9ERVZJQ0VfTkFNRSwgCSJUaGUgc3BlY2lmaWVkIGRldmljZSBpcyBub3Qgb3BlbiBvciBpcyBub3QgcmVjb2duaXplZCBieSBNQ0kuIgpNQ0lFUlJfT1VUX09GX01FTU9SWSwgCQkiTm90IGVub3VnaCBtZW1vcnkgYXZhaWxhYmxlIGZvciB0aGlzIHRhc2suXG5RdWl0IG9uZSBvciBtb3JlIGFwcGxpY2F0aW9ucyB0byBpbmNyZWFzZSBhdmFpbGFibGUgbWVtb3J5LCBhbmQgdGhlbiB0cnkgYWdhaW4uIgpNQ0lFUlJfREVWSUNFX09QRU4sIAkJIlRoZSBkZXZpY2UgbmFtZSBpcyBhbHJlYWR5IGJlaW5nIHVzZWQgYXMgYW4gYWxpYXMgYnkgdGhpcyBhcHBsaWNhdGlvbi4gVXNlIGEgdW5pcXVlIGFsaWFzLiIKTUNJRVJSX0NBTk5PVF9MT0FEX0RSSVZFUiwgCSJUaGVyZSBpcyBhbiB1bmRldGVjdGFibGUgcHJvYmxlbSBpbiBsb2FkaW5nIHRoZSBzcGVjaWZpZWQgZGV2aWNlIGRyaXZlci4iCk1DSUVSUl9NSVNTSU5HX0NPTU1BTkRfU1RSSU5HLCAJIk5lYm9sIJpwZWNpZmlrb3Zhbv0gnmlhZG55IHBy7Wthei4iCk1DSUVSUl9QQVJBTV9PVkVSRkxPVywgCQkiVGhlIG91dHB1dCBzdHJpbmcgd2FzIHRvIGxhcmdlIHRvIGZpdCBpbiB0aGUgcmV0dXJuIGJ1ZmZlci4gSW5jcmVhc2UgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlci4iCk1DSUVSUl9NSVNTSU5HX1NUUklOR19BUkdVTUVOVCwgIlRoZSBzcGVjaWZpZWQgY29tbWFuZCByZXF1aXJlcyBhIGNoYXJhY3Rlci1zdHJpbmcgcGFyYW1ldGVyLiBQbGVhc2UgcHJvdmlkZSBvbmUuIgpNQ0lFUlJfQkFEX0lOVEVHRVIsIAkJIlRoZSBzcGVjaWZpZWQgaW50ZWdlciBpcyBpbnZhbGlkIGZvciB0aGlzIGNvbW1hbmQuIgpNQ0lFUlJfUEFSU0VSX0lOVEVSTkFMLCAJIlRoZSBkZXZpY2UgZHJpdmVyIHJldHVybmVkIGFuIGludmFsaWQgcmV0dXJuIHR5cGUuIENoZWNrIHdpdGggdGhlIGRldmljZSBtYW51ZmFjdHVyZXIgYWJvdXQgb2J0YWluaW5nIGEgbmV3IGRyaXZlci4iCk1DSUVSUl9EUklWRVJfSU5URVJOQUwsIAkiVGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGRldmljZSBkcml2ZXIuIENoZWNrIHdpdGggdGhlIGRldmljZSBtYW51ZmFjdHVyZXIgYWJvdXQgb2J0YWluaW5nIGEgbmV3IGRyaXZlci4iCk1DSUVSUl9NSVNTSU5HX1BBUkFNRVRFUiwgCSJUaGUgc3BlY2lmaWVkIGNvbW1hbmQgcmVxdWlyZXMgYSBwYXJhbWV0ZXIuIFBsZWFzZSBzdXBwbHkgb25lLiIKTUNJRVJSX1VOU1VQUE9SVEVEX0ZVTkNUSU9OLCAJIlRoZSBNQ0kgZGV2aWNlIHlvdSBhcmUgdXNpbmcgZG9lcyBub3Qgc3VwcG9ydCB0aGUgc3BlY2lmaWVkIGNvbW1hbmQuIgpNQ0lFUlJfRklMRV9OT1RfRk9VTkQsIAkJIkNhbm5vdCBmaW5kIHRoZSBzcGVjaWZpZWQgZmlsZS4gTWFrZSBzdXJlIHRoZSBwYXRoIGFuZCBmaWxlbmFtZSBhcmUgY29ycmVjdC4iCk1DSUVSUl9ERVZJQ0VfTk9UX1JFQURZLCAJIk92bOFkYeggemFyaWFkZW5pYSBuaWUgamUgcHJpcHJhdmVu/S4iCk1DSUVSUl9JTlRFUk5BTCwgCQkiQSBwcm9ibGVtIG9jY3VycmVkIGluIGluaXRpYWxpemluZyBNQ0kuIFRyeSByZXN0YXJ0aW5nIFdpbmRvd3MuIgpNQ0lFUlJfRFJJVkVSLCAJCQkiVGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGRldmljZSBkcml2ZXIuIFRoZSBkcml2ZXIgaGFzIGNsb3NlZC4gQ2Fubm90IGFjY2VzcyBlcnJvci4iCk1DSUVSUl9DQU5OT1RfVVNFX0FMTCwgCQkiQ2Fubm90IHVzZSAnYWxsJyBhcyB0aGUgZGV2aWNlIG5hbWUgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbW1hbmQuIgpNQ0lFUlJfTVVMVElQTEUsIAkJIkVycm9ycyBvY2N1cnJlZCBpbiBtb3JlIHRoYW4gb25lIGRldmljZS4gU3BlY2lmeSBlYWNoIGNvbW1hbmQgYW5kIGRldmljZSBzZXBhcmF0ZWx5IHRvIGRldGVybWluZSB3aGljaCBkZXZpY2VzIGNhdXNlZCB0aGUgZXJyb3IiCk1DSUVSUl9FWFRFTlNJT05fTk9UX0ZPVU5ELCAJIkNhbm5vdCBkZXRlcm1pbmUgdGhlIGRldmljZSB0eXBlIGZyb20gdGhlIGdpdmVuIGZpbGVuYW1lIGV4dGVuc2lvbi4iCk1DSUVSUl9PVVRPRlJBTkdFLCAJCSJUaGUgc3BlY2lmaWVkIHBhcmFtZXRlciBpcyBvdXQgb2YgcmFuZ2UgZm9yIHRoZSBzcGVjaWZpZWQgY29tbWFuZC4iCk1DSUVSUl9GTEFHU19OT1RfQ09NUEFUSUJMRSwgCSJUaGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIuIgpNQ0lFUlJfRklMRV9OT1RfU0FWRUQsIAkJIkNhbm5vdCBzYXZlIHRoZSBzcGVjaWZpZWQgZmlsZS4gTWFrZSBzdXJlIHlvdSBoYXZlIGVub3VnaCBkaXNrIHNwYWNlIG9yIGFyZSBzdGlsbCBjb25uZWN0ZWQgdG8gdGhlIG5ldHdvcmsuIgpNQ0lFUlJfREVWSUNFX1RZUEVfUkVRVUlSRUQsIAkiQ2Fubm90IGZpbmQgdGhlIHNwZWNpZmllZCBkZXZpY2UuIE1ha2Ugc3VyZSBpdCBpcyBpbnN0YWxsZWQgb3IgdGhhdCB0aGUgZGV2aWNlIG5hbWUgaXMgc3BlbGxlZCBjb3JyZWN0bHkuIgpNQ0lFUlJfREVWSUNFX0xPQ0tFRCwgCQkiVGhlIHNwZWNpZmllZCBkZXZpY2UgaXMgbm93IGJlaW5nIGNsb3NlZC4gV2FpdCBhIGZldyBzZWNvbmRzLCBhbmQgdGhlbiB0cnkgYWdhaW4uIgpNQ0lFUlJfRFVQTElDQVRFX0FMSUFTLCAJIlRoZSBzcGVjaWZpZWQgYWxpYXMgaXMgYWxyZWFkeSBiZWluZyB1c2VkIGluIHRoaXMgYXBwbGljYXRpb24uIFVzZSBhIHVuaXF1ZSBhbGlhcy4iCk1DSUVSUl9CQURfQ09OU1RBTlQsIAkJIlRoZSBzcGVjaWZpZWQgcGFyYW1ldGVyIGlzIGludmFsaWQgZm9yIHRoaXMgY29tbWFuZC4iCk1DSUVSUl9NVVNUX1VTRV9TSEFSRUFCTEUsIAkiVGhlIGRldmljZSBkcml2ZXIgaXMgYWxyZWFkeSBpbiB1c2UuIFRvIHNoYXJlIGl0LCB1c2UgdGhlICdzaGFyZWFibGUnIHBhcmFtZXRlciB3aXRoIGVhY2ggJ29wZW4nIGNvbW1hbmQuIgpNQ0lFUlJfTUlTU0lOR19ERVZJQ0VfTkFNRSwgCSJUaGUgc3BlY2lmaWVkIGNvbW1hbmQgcmVxdWlyZXMgYW4gYWxpYXMsIGZpbGUsIGRyaXZlciwgb3IgZGV2aWNlIG5hbWUuIFBsZWFzZSBzdXBwbHkgb25lLiIKTUNJRVJSX0JBRF9USU1FX0ZPUk1BVCwgCSJUaGUgc3BlY2lmaWVkIHZhbHVlIGZvciB0aGUgdGltZSBmb3JtYXQgaXMgaW52YWxpZC4gUmVmZXIgdG8gdGhlIE1DSSBkb2N1bWVudGF0aW9uIGZvciB2YWxpZCBmb3JtYXRzLiIKTUNJRVJSX05PX0NMT1NJTkdfUVVPVEUsIAkiQSBjbG9zaW5nIGRvdWJsZS1xdW90YXRpb24gbWFyayBpcyBtaXNzaW5nIGZyb20gdGhlIHBhcmFtZXRlciB2YWx1ZS4gUGxlYXNlIHN1cHBseSBvbmUuIgpNQ0lFUlJfRFVQTElDQVRFX0ZMQUdTLCAJIkEgcGFyYW1ldGVyIG9yIHZhbHVlIHdhcyBzcGVjaWZpZWQgdHdpY2UuIE9ubHkgc3BlY2lmeSBpdCBvbmNlLiIKTUNJRVJSX0lOVkFMSURfRklMRSwgCQkiVGhlIHNwZWNpZmllZCBmaWxlIGNhbm5vdCBiZSBwbGF5ZWQgb24gdGhlIHNwZWNpZmllZCBNQ0kgZGV2aWNlLiBUaGUgZmlsZSBtYXkgYmUgY29ycnVwdCwgb3Igbm90IGluIHRoZSBjb3JyZWN0IGZvcm1hdC4iCk1DSUVSUl9OVUxMX1BBUkFNRVRFUl9CTE9DSywgCSJBIG51bGwgcGFyYW1ldGVyIGJsb2NrIHdhcyBwYXNzZWQgdG8gTUNJLiIKTUNJRVJSX1VOTkFNRURfUkVTT1VSQ0UsIAkiQ2Fubm90IHNhdmUgYW4gdW5uYW1lZCBmaWxlLiBTdXBwbHkgYSBmaWxlbmFtZS4iCk1DSUVSUl9ORVdfUkVRVUlSRVNfQUxJQVMsIAkiWW91IG11c3Qgc3BlY2lmeSBhbiBhbGlhcyB3aGVuIHVzaW5nIHRoZSAnbmV3JyBwYXJhbWV0ZXIuIgpNQ0lFUlJfTk9USUZZX09OX0FVVE9fT1BFTiwgCSJDYW5ub3QgdXNlIHRoZSAnbm90aWZ5JyBmbGFnIHdpdGggYXV0by1vcGVuZWQgZGV2aWNlcy4iCk1DSUVSUl9OT19FTEVNRU5UX0FMTE9XRUQsIAkiQ2Fubm90IHVzZSBhIGZpbGVuYW1lIHdpdGggdGhlIHNwZWNpZmllZCBkZXZpY2UuIgpNQ0lFUlJfTk9OQVBQTElDQUJMRV9GVU5DVElPTiwgCSJDYW5ub3QgY2Fycnkgb3V0IHRoZSBjb21tYW5kcyBpbiB0aGUgb3JkZXIgc3BlY2lmaWVkLiBDb3JyZWN0IHRoZSBjb21tYW5kIHNlcXVlbmNlLCBhbmQgdGhlbiB0cnkgYWdhaW4uIgpNQ0lFUlJfSUxMRUdBTF9GT1JfQVVUT19PUEVOLCAJIkNhbm5vdCBjYXJyeSBvdXQgdGhlIHNwZWNpZmllZCBjb21tYW5kIG9uIGFuIGF1dG8tb3BlbmVkIGRldmljZS4gV2FpdCB1bnRpbCB0aGUgZGV2aWNlIGlzIGNsb3NlZCwgYW5kIHRoZW4gdHJ5IGFnYWluLiIKTUNJRVJSX0ZJTEVOQU1FX1JFUVVJUkVELCAJIlRoZSBmaWxlbmFtZSBpcyBpbnZhbGlkLiBNYWtlIHN1cmUgdGhlIGZpbGVuYW1lIGlzIG5vdCBsb25nZXIgdGhhbiA4IGNoYXJhY3RlcnMsIGZvbGxvd2VkIGJ5IGEgcGVyaW9kIGFuZCBhbiBleHRlbnNpb24uIgpNQ0lFUlJfRVhUUkFfQ0hBUkFDVEVSUywgCSJDYW5ub3Qgc3BlY2lmeSBleHRyYSBjaGFyYWN0ZXJzIGFmdGVyIGEgc3RyaW5nIGVuY2xvc2VkIGluIHF1b3RhdGlvbiBtYXJrcy4iCk1DSUVSUl9ERVZJQ0VfTk9UX0lOU1RBTExFRCwgCSJUaGUgc3BlY2lmaWVkIGRldmljZSBpcyBub3QgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0uIFVzZSB0aGUgRHJpdmVycyBvcHRpb24gaW4gQ29udHJvbCBQYW5lbCB0byBpbnN0YWxsIHRoZSBkZXZpY2UuIgpNQ0lFUlJfR0VUX0NELCAJCQkiQ2Fubm90IGFjY2VzcyB0aGUgc3BlY2lmaWVkIGZpbGUgb3IgTUNJIGRldmljZS4gVHJ5IGNoYW5naW5nIGRpcmVjdG9yaWVzIG9yIHJlc3RhcnRpbmcgeW91ciBjb21wdXRlci4iCk1DSUVSUl9TRVRfQ0QsIAkJCSJDYW5ub3QgYWNjZXNzIHRoZSBzcGVjaWZpZWQgZmlsZSBvciBNQ0kgZGV2aWNlIGJlY2F1c2UgdGhlIGFwcGxpY2F0aW9uIGNhbm5vdCBjaGFuZ2UgZGlyZWN0b3JpZXMuIgpNQ0lFUlJfU0VUX0RSSVZFLCAJCSJDYW5ub3QgYWNjZXNzIHNwZWNpZmllZCBmaWxlIG9yIE1DSSBkZXZpY2UgYmVjYXVzZSB0aGUgYXBwbGljYXRpb24gY2Fubm90IGNoYW5nZSBkcml2ZXMuIgpNQ0lFUlJfREVWSUNFX0xFTkdUSCwgCQkiU3BlY2lmeSBhIGRldmljZSBvciBkcml2ZXIgbmFtZSB0aGF0IGlzIGxlc3MgdGhhbiA3OSBjaGFyYWN0ZXJzLiIKTUNJRVJSX0RFVklDRV9PUkRfTEVOR1RILCAJIlNwZWNpZnkgYSBkZXZpY2Ugb3IgZHJpdmVyIG5hbWUgdGhhdCBpcyBsZXNzIHRoYW4gNjkgY2hhcmFjdGVycy4iCk1DSUVSUl9OT19JTlRFR0VSLCAJCSJUaGUgc3BlY2lmaWVkIGNvbW1hbmQgcmVxdWlyZXMgYW4gaW50ZWdlciBwYXJhbWV0ZXIuIFBsZWFzZSBwcm92aWRlIG9uZS4iCk1DSUVSUl9XQVZFX09VVFBVVFNJTlVTRSwgCSJBbGwgd2F2ZSBkZXZpY2VzIHRoYXQgY2FuIHBsYXkgZmlsZXMgaW4gdGhlIGN1cnJlbnQgZm9ybWF0IGFyZSBpbiB1c2UuIFdhaXQgdW50aWwgYSB3YXZlIGRldmljZSBpcyBmcmVlLCBhbmQgdGhlbiB0cnkgYWdhaW4uIgpNQ0lFUlJfV0FWRV9TRVRPVVRQVVRJTlVTRSwgCSJDYW5ub3Qgc2V0IHRoZSBjdXJyZW50IHdhdmUgZGV2aWNlIGZvciBwbGF5IGJhY2sgYmVjYXVzZSBpdCBpcyBpbiB1c2UuIFdhaXQgdW50aWwgdGhlIGRldmljZSBpcyBmcmVlLCBhbmQgdGhlbiB0cnkgYWdhaW4uIgpNQ0lFUlJfV0FWRV9JTlBVVFNJTlVTRSwgCSJBbGwgd2F2ZSBkZXZpY2VzIHRoYXQgY2FuIHJlY29yZCBmaWxlcyBpbiB0aGUgY3VycmVudCBmb3JtYXQgYXJlIGluIHVzZS4gV2FpdCB1bnRpbCBhIHdhdmUgZGV2aWNlIGlzIGZyZWUsIGFuZCB0aGVuIHRyeSBhZ2Fpbi4iCk1DSUVSUl9XQVZFX1NFVElOUFVUSU5VU0UsIAkiQ2Fubm90IHNldCB0aGUgY3VycmVudCB3YXZlIGRldmljZSBmb3IgcmVjb3JkaW5nIGJlY2F1c2UgaXQgaXMgaW4gdXNlLiBXYWl0IHVudGlsIHRoZSBkZXZpY2UgaXMgZnJlZSwgYW5kIHRoZW4gdHJ5IGFnYWluLiIKTUNJRVJSX1dBVkVfT1VUUFVUVU5TUEVDSUZJRUQsCSJBbnkgY29tcGF0aWJsZSB3YXZlZm9ybSBwbGF5YmFjayBkZXZpY2UgbWF5IGJlIHVzZWQuIgpNQ0lFUlJfV0FWRV9JTlBVVFVOU1BFQ0lGSUVELCAJIkFueSBjb21wYXRpYmxlIHdhdmVmb3JtIHJlY29yZGluZyBkZXZpY2UgbWF5IGJlIHVzZWQuIgpNQ0lFUlJfV0FWRV9PVVRQVVRTVU5TVUlUQUJMRSwgCSJObyB3YXZlIGRldmljZSB0aGF0IGNhbiBwbGF5IGZpbGVzIGluIHRoZSBjdXJyZW50IGZvcm1hdCBpcyBpbnN0YWxsZWQuIFVzZSB0aGUgRHJpdmVycyBvcHRpb24gdG8gaW5zdGFsbCB0aGUgd2F2ZSBkZXZpY2UuIgpNQ0lFUlJfV0FWRV9TRVRPVVRQVVRVTlNVSVRBQkxFLCJUaGUgZGV2aWNlIHlvdSBhcmUgdHJ5aW5nIHRvIHBsYXkgdG8gY2Fubm90IHJlY29nbml6ZSB0aGUgY3VycmVudCBmaWxlIGZvcm1hdC4iCk1DSUVSUl9XQVZFX0lOUFVUU1VOU1VJVEFCTEUsIAkiTm8gd2F2ZSBkZXZpY2UgdGhhdCBjYW4gcmVjb3JkIGZpbGVzIGluIHRoZSBjdXJyZW50IGZvcm1hdCBpcyBpbnN0YWxsZWQuIFVzZSB0aGUgRHJpdmVycyBvcHRpb24gdG8gaW5zdGFsbCB0aGUgd2F2ZSBkZXZpY2UuIgpNQ0lFUlJfV0FWRV9TRVRJTlBVVFVOU1VJVEFCTEUsICJUaGUgZGV2aWNlIHlvdSBhcmUgdHJ5aW5nIHRvIHJlY29yZCBmcm9tIGNhbm5vdCByZWNvZ25pemUgdGhlIGN1cnJlbnQgZmlsZSBmb3JtYXQuIgpNQ0lFUlJfTk9fV0lORE9XLCAJCSJUaGVyZSBpcyBubyBkaXNwbGF5IHdpbmRvdy4iCk1DSUVSUl9DUkVBVEVXSU5ET1csIAkJIk5lbfSeZW0gdnl0dm9yaZ0gYWxlYm8gcG91nmmdIG9rbm8uIgpNQ0lFUlJfRklMRV9SRUFELCAJCSJDYW5ub3QgcmVhZCB0aGUgc3BlY2lmaWVkIGZpbGUuIE1ha2Ugc3VyZSB0aGUgZmlsZSBpcyBzdGlsbCBwcmVzZW50LCBvciBjaGVjayB5b3VyIGRpc2sgb3IgbmV0d29yayBjb25uZWN0aW9uLiIKTUNJRVJSX0ZJTEVfV1JJVEUsIAkJIkNhbm5vdCB3cml0ZSB0byB0aGUgc3BlY2lmaWVkIGZpbGUuIE1ha2Ugc3VyZSB5b3UgaGF2ZSBlbm91Z2ggZGlzayBzcGFjZSBvciBhcmUgc3RpbGwgY29ubmVjdGVkIHRvIHRoZSBuZXR3b3JrLiIKTUNJRVJSX1NFUV9ESVZfSU5DT01QQVRJQkxFLCAJIlRoZSB0aW1lIGZvcm1hdHMgb2YgdGhlICIic29uZyBwb2ludGVyIiIgYW5kIFNNUFRFIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIFlvdSBjYW4ndCB1c2UgdGhlbSB0b2dldGhlci4iCk1DSUVSUl9TRVFfTk9NSURJUFJFU0VOVCwgCSJUaGUgc3lzdGVtIGhhcyBubyBpbnN0YWxsZWQgTUlESSBkZXZpY2VzLiBVc2UgdGhlIERyaXZlcnMgb3B0aW9uIGZyb20gdGhlIENvbnRyb2wgUGFuZWwgdG8gaW5zdGFsbCBhIE1JREkgZHJpdmVyLiIKTUNJRVJSX1NFUV9QT1JUX0lOVVNFLCAJCSJUaGUgc3BlY2lmaWVkIE1JREkgcG9ydCBpcyBhbHJlYWR5IGluIHVzZS4gV2FpdCB1bnRpbCBpdCBpcyBmcmVlOyB0aGUgdHJ5IGFnYWluLiIKTUNJRVJSX1NFUV9QT1JUX01BUE5PREVWSUNFLCAJIlRoZSBjdXJyZW50IE1JREkgTWFwcGVyIHNldHVwIHJlZmVycyB0byBhIE1JREkgZGV2aWNlIHRoYXQgaXMgbm90IGluc3RhbGxlZCBvbiB0aGUgc3lzdGVtLiBVc2UgdGhlIE1JREkgTWFwcGVyIG9wdGlvbiBmcm9tIHRoZSBDb250cm9sIFBhbmVsIHRvIGVkaXQgdGhlIHNldHVwLiIKTUNJRVJSX1NFUV9QT1JUX01JU0NFUlJPUiwgCSJBbiBlcnJvciBvY2N1cnJlZCB3aXRoIHRoZSBzcGVjaWZpZWQgcG9ydC4iCk1DSUVSUl9TRVFfUE9SVF9OT05FWElTVEVOVCwgCSJUaGUgc3BlY2lmaWVkIE1JREkgZGV2aWNlIGlzIG5vdCBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbS4gVXNlIHRoZSBEcml2ZXJzIG9wdGlvbiBmcm9tIHRoZSBDb250cm9sIFBhbmVsIHRvIGluc3RhbGwgYSBNSURJIGRldmljZS4iCk1DSUVSUl9TRVFfUE9SVFVOU1BFQ0lGSUVELCAJIlRoZSBzeXN0ZW0gZG9lc25vdCBoYXZlIGEgY3VycmVudCBNSURJIHBvcnQgc3BlY2lmaWVkLiIKTUNJRVJSX1NFUV9USU1FUiwgCQkiQWxsIG11bHRpbWVkaWEgdGltZXJzIGFyZSBiZWluZyB1c2VkIGJ5IG90aGVyIGFwcGxpY2F0aW9ucy4gUXVpdCBvbmUgb2YgdGhlc2UgYXBwbGljYXRpb25zOyB0aGVuLCB0cnkgYWdhaW4uIgoKRU5ECg==