LyoKICogQ29weXJpZ2h0IDIwMDAgUGV0ZXIgSXZhbnlpCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfU0xPVkFLLCBTVUJMQU5HX05FVVRSQUwKQkVHSU4KCi8qIE1NU1lTIGVycm9ycyAqLwpNTVNZU0VSUl9OT0VSUk9SLCAJCSKKcGVjaWZpa292YW79IHBy7WtheiBib2wgdnlrb25hbv0uIgpNTVNZU0VSUl9FUlJPUiwgCQkiTmVkZWZpbm92YW7hIGV4dGVybuEgY2h5YmEuIgpNTVNZU0VSUl9CQURERVZJQ0VJRCwgCQkiQSBkZXZpY2UgSUQgaGFzIGJlZW4gdXNlZCB0aGF0IGlzIG91dCBvZiByYW5nZSBmb3IgeW91ciBzeXN0ZW0uIgpNTVNZU0VSUl9OT1RFTkFCTEVELCAJCSJUaGUgZHJpdmVyIHdhcyBub3QgZW5hYmxlZC4iCk1NU1lTRVJSX0FMTE9DQVRFRCwgCQkiVGhlIHNwZWNpZmllZCBkZXZpY2UgaXMgYWxyZWFkeSBpbiB1c2UuIFdhaXQgdW50aWwgaXQgaXMgZnJlZSwgYW5kIHRoZW4gdHJ5IGFnYWluLiIKTU1TWVNFUlJfSU5WQUxIQU5ETEUsIAkJIlRoZSBzcGVjaWZpZWQgZGV2aWNlIGhhbmRsZSBpcyBpbnZhbGlkLiIKTU1TWVNFUlJfTk9EUklWRVIsIAkJIlRoZXJlIGlzIG5vIGRyaXZlciBpbnN0YWxsZWQgb24geW91ciBzeXN0ZW0gIVxuIgpNTVNZU0VSUl9OT01FTSwgCQkiTm90IGVub3VnaCBtZW1vcnkgYXZhaWxhYmxlIGZvciB0aGlzIHRhc2suIFF1aXQgb25lIG9yIG1vcmUgYXBwbGljYXRpb25zIHRvIGluY3JlYXNlIGF2YWlsYWJsZSBtZW1vcnksIGFuZCB0aGVuIHRyeSBhZ2Fpbi4iCk1NU1lTRVJSX05PVFNVUFBPUlRFRCwgCQkiVGhpcyBmdW5jdGlvbiBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgdGhlIENhcGFiaWxpdGllcyBmdW5jdGlvbiB0byBkZXRlcm1pbmUgd2hpY2ggZnVuY3Rpb25zIGFuZCBtZXNzYWdlcyB0aGUgZHJpdmVyIHN1cHBvcnRzLiIKTU1TWVNFUlJfQkFERVJSTlVNLCAJCSJBbiBlcnJvciBudW1iZXIgd2FzIHNwZWNpZmllZCB0aGF0IGlzIG5vdCBkZWZpbmVkIGluIHRoZSBzeXN0ZW0uIgpNTVNZU0VSUl9JTlZBTEZMQUcsIAkJIkFuIGludmFsaWQgZmxhZyB3YXMgcGFzc2VkIHRvIGEgc3lzdGVtIGZ1bmN0aW9uLiIKTU1TWVNFUlJfSU5WQUxQQVJBTSwgCQkiQW4gaW52YWxpZCBwYXJhbWV0ZXIgd2FzIHBhc3NlZCB0byBhIHN5c3RlbSBmdW5jdGlvbi4iCgovKiBXQVZFIGVycm9ycyAqLwpXQVZFUlJfQkFERk9STUFULCAJCSJUaGUgc3BlY2lmaWVkIGZvcm1hdCBpcyBub3Qgc3VwcG9ydGVkIG9yIGNhbm5vdCBiZSB0cmFuc2xhdGVkLiBVc2UgdGhlIENhcGFiaWxpdGllcyBmdW5jdGlvbiB0byBkZXRlcm1pbmUgdGhlIHN1cHBvcnRlZCBmb3JtYXRzIgpXQVZFUlJfU1RJTExQTEFZSU5HLCAJCSJDYW5ub3QgcGVyZm9ybSB0aGlzIG9wZXJhdGlvbiB3aGlsZSBtZWRpYSBkYXRhIGlzIHN0aWxsIHBsYXlpbmcuIFJlc2V0IHRoZSBkZXZpY2UsIG9yIHdhaXQgdW50aWwgdGhlIGRhdGEgaXMgZmluaXNoZWQgcGxheWluZy4iCldBVkVSUl9VTlBSRVBBUkVELCAJCSJUaGUgd2F2ZSBoZWFkZXIgd2FzIG5vdCBwcmVwYXJlZC4gVXNlIHRoZSBQcmVwYXJlIGZ1bmN0aW9uIHRvIHByZXBhcmUgdGhlIGhlYWRlciwgYW5kIHRoZW4gdHJ5IGFnYWluLiIKV0FWRVJSX1NZTkMsIAkJCSJDYW5ub3Qgb3BlbiB0aGUgZGV2aWNlIHdpdGhvdXQgdXNpbmcgdGhlIFdBVkVfQUxMT1dTWU5DIGZsYWcuIFVzZSB0aGUgZmxhZywgYW5kIHRoZW4gdHJ5IGFnYWluLiIKCi8qIE1JREkgZXJyb3JzICovCk1JRElFUlJfVU5QUkVQQVJFRCwgCQkiVGhlIE1JREkgaGVhZGVyIHdhcyBub3QgcHJlcGFyZWQuIFVzZSB0aGUgUHJlcGFyZSBmdW5jdGlvbiB0byBwcmVwYXJlIHRoZSBoZWFkZXIsIGFuZCB0aGVuIHRyeSBhZ2Fpbi4iCk1JRElFUlJfU1RJTExQTEFZSU5HLCAJCSJDYW5ub3QgcGVyZm9ybSB0aGlzIG9wZXJhdGlvbiB3aGlsZSBtZWRpYSBkYXRhIGlzIHN0aWxsIHBsYXlpbmcuIFJlc2V0IHRoZSBkZXZpY2UsIG9yIHdhaXQgdW50aWwgdGhlIGRhdGEgaXMgZmluaXNoZWQgcGxheWluZy4iCk1JRElFUlJfTk9NQVAsIAkJCSJBIE1JREkgbWFwIHdhcyBub3QgZm91bmQuIFRoZXJlIG1heSBiZSBhIHByb2JsZW0gd2l0aCB0aGUgZHJpdmVyLCBvciB0aGUgTUlESU1BUC5DRkcgZmlsZSBtYXkgYmUgY29ycnVwdCBvciBtaXNzaW5nLiIKTUlESUVSUl9OT1RSRUFEWSwgCQkiVGhlIHBvcnQgaXMgdHJhbnNtaXR0aW5nIGRhdGEgdG8gdGhlIGRldmljZS4gV2FpdCB1bnRpbCB0aGUgZGF0YSBoYXMgYmVlbiB0cmFuc21pdHRlZCwgYW5kIHRoZW4gdHJ5IGFnYWluLiIKTUlESUVSUl9OT0RFVklDRSwgCQkiVGhlIGN1cnJlbnQgTUlESSBNYXBwZXIgc2V0dXAgcmVmZXJzIHRvIGEgTUlESSBkZXZpY2UgdGhhdCBpcyBub3QgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0uIFVzZSBNSURJIE1hcHBlciB0byBlZGl0IHRoZSBzZXR1cC4iCk1JRElFUlJfSU5WQUxJRFNFVFVQLCAJCSJUaGUgY3VycmVudCBNSURJIHNldHVwIGlzIGRhbWFnZWQuIENvcHkgdGhlIG9yaWdpbmFsIE1JRElNQVAuQ0ZHIGZpbGUgdG8gdGhlIFdpbmRvd3MgU1lTVEVNIGRpcmVjdG9yeSwgYW5kIHRoZW4gdHJ5IGFnYWluLiIKCi8qIE1DSSBlcnJvcnMgKi8KTUNJRVJSX0lOVkFMSURfREVWSUNFX0lELCAJIkludmFsaWQgTUNJIGRldmljZSBJRC4gVXNlIHRoZSBJRCByZXR1cm5lZCB3aGVuIG9wZW5pbmcgdGhlIE1DSSBkZXZpY2UuIgpNQ0lFUlJfVU5SRUNPR05JWkVEX0tFWVdPUkQsIAkiVGhlIGRyaXZlciBjYW5ub3QgcmVjb2duaXplIHRoZSBzcGVjaWZpZWQgY29tbWFuZCBwYXJhbWV0ZXIuIgpNQ0lFUlJfVU5SRUNPR05JWkVEX0NPTU1BTkQsCSJUaGUgZHJpdmVyIGNhbm5vdCByZWNvZ25pemUgdGhlIHNwZWNpZmllZCBjb21tYW5kLiIKTUNJRVJSX0hBUkRXQVJFLCAJCSJUaGVyZSBpcyBhIHByb2JsZW0gd2l0aCB5b3VyIG1lZGlhIGRldmljZS4gTWFrZSBzdXJlIGl0IGlzIHdvcmtpbmcgY29ycmVjdGx5IG9yIGNvbnRhY3QgdGhlIGRldmljZSBtYW51ZmFjdHVyZXIuIgpNQ0lFUlJfSU5WQUxJRF9ERVZJQ0VfTkFNRSwgCSJUaGUgc3BlY2lmaWVkIGRldmljZSBpcyBub3Qgb3BlbiBvciBpcyBub3QgcmVjb2duaXplZCBieSBNQ0kuIgpNQ0lFUlJfT1VUX09GX01FTU9SWSwgCQkiTm90IGVub3VnaCBtZW1vcnkgYXZhaWxhYmxlIGZvciB0aGlzIHRhc2suIFxuUXVpdCBvbmUgb3IgbW9yZSBhcHBsaWNhdGlvbnMgdG8gaW5jcmVhc2UgYXZhaWxhYmxlIG1lbW9yeSwgYW5kIHRoZW4gdHJ5IGFnYWluLiIKTUNJRVJSX0RFVklDRV9PUEVOLCAJCSJUaGUgZGV2aWNlIG5hbWUgaXMgYWxyZWFkeSBiZWluZyB1c2VkIGFzIGFuIGFsaWFzIGJ5IHRoaXMgYXBwbGljYXRpb24uIFVzZSBhIHVuaXF1ZSBhbGlhcy4iCk1DSUVSUl9DQU5OT1RfTE9BRF9EUklWRVIsIAkiVGhlcmUgaXMgYW4gdW5kZXRlY3RhYmxlIHByb2JsZW0gaW4gbG9hZGluZyB0aGUgc3BlY2lmaWVkIGRldmljZSBkcml2ZXIuIgpNQ0lFUlJfTUlTU0lOR19DT01NQU5EX1NUUklORywgCSJOZWJvbCCacGVjaWZpa292YW79IJ5pYWRueSBwcu1rYXouIgpNQ0lFUlJfUEFSQU1fT1ZFUkZMT1csIAkJIlRoZSBvdXRwdXQgc3RyaW5nIHdhcyB0byBsYXJnZSB0byBmaXQgaW4gdGhlIHJldHVybiBidWZmZXIuIEluY3JlYXNlIHRoZSBzaXplIG9mIHRoZSBidWZmZXIuIgpNQ0lFUlJfTUlTU0lOR19TVFJJTkdfQVJHVU1FTlQsICJUaGUgc3BlY2lmaWVkIGNvbW1hbmQgcmVxdWlyZXMgYSBjaGFyYWN0ZXItc3RyaW5nIHBhcmFtZXRlci4gUGxlYXNlIHByb3ZpZGUgb25lLiIKTUNJRVJSX0JBRF9JTlRFR0VSLCAJCSJUaGUgc3BlY2lmaWVkIGludGVnZXIgaXMgaW52YWxpZCBmb3IgdGhpcyBjb21tYW5kLiIKTUNJRVJSX1BBUlNFUl9JTlRFUk5BTCwgCSJUaGUgZGV2aWNlIGRyaXZlciByZXR1cm5lZCBhbiBpbnZhbGlkIHJldHVybiB0eXBlLiBDaGVjayB3aXRoIHRoZSBkZXZpY2UgbWFudWZhY3R1cmVyIGFib3V0IG9idGFpbmluZyBhIG5ldyBkcml2ZXIuIgpNQ0lFUlJfRFJJVkVSX0lOVEVSTkFMLCAJIlRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBkZXZpY2UgZHJpdmVyLiBDaGVjayB3aXRoIHRoZSBkZXZpY2UgbWFudWZhY3R1cmVyIGFib3V0IG9idGFpbmluZyBhIG5ldyBkcml2ZXIuIgpNQ0lFUlJfTUlTU0lOR19QQVJBTUVURVIsIAkiVGhlIHNwZWNpZmllZCBjb21tYW5kIHJlcXVpcmVzIGEgcGFyYW1ldGVyLiBQbGVhc2Ugc3VwcGx5IG9uZS4iCk1DSUVSUl9VTlNVUFBPUlRFRF9GVU5DVElPTiwgCSJUaGUgTUNJIGRldmljZSB5b3UgYXJlIHVzaW5nIGRvZXMgbm90IHN1cHBvcnQgdGhlIHNwZWNpZmllZCBjb21tYW5kLiIKTUNJRVJSX0ZJTEVfTk9UX0ZPVU5ELCAJCSJDYW5ub3QgZmluZCB0aGUgc3BlY2lmaWVkIGZpbGUuIE1ha2Ugc3VyZSB0aGUgcGF0aCBhbmQgZmlsZW5hbWUgYXJlIGNvcnJlY3QuIgpNQ0lFUlJfREVWSUNFX05PVF9SRUFEWSwgCSJPdmzhZGHoIHphcmlhZGVuaWEgbmllIGplIHByaXByYXZlbv0uIgpNQ0lFUlJfSU5URVJOQUwsIAkJIkEgcHJvYmxlbSBvY2N1cnJlZCBpbiBpbml0aWFsaXppbmcgTUNJLiBUcnkgcmVzdGFydGluZyBXaW5kb3dzLiIKTUNJRVJSX0RSSVZFUiwgCQkJIlRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBkZXZpY2UgZHJpdmVyLiBUaGUgZHJpdmVyIGhhcyBjbG9zZWQuIENhbm5vdCBhY2Nlc3MgZXJyb3IuIgpNQ0lFUlJfQ0FOTk9UX1VTRV9BTEwsIAkJIkNhbm5vdCB1c2UgJ2FsbCcgYXMgdGhlIGRldmljZSBuYW1lIHdpdGggdGhlIHNwZWNpZmllZCBjb21tYW5kLiIKTUNJRVJSX01VTFRJUExFLCAJCSJFcnJvcnMgb2NjdXJyZWQgaW4gbW9yZSB0aGFuIG9uZSBkZXZpY2UuIFNwZWNpZnkgZWFjaCBjb21tYW5kIGFuZCBkZXZpY2Ugc2VwYXJhdGVseSB0byBkZXRlcm1pbmUgd2hpY2ggZGV2aWNlcyBjYXVzZWQgdGhlIGVycm9yIgpNQ0lFUlJfRVhURU5TSU9OX05PVF9GT1VORCwgCSJDYW5ub3QgZGV0ZXJtaW5lIHRoZSBkZXZpY2UgdHlwZSBmcm9tIHRoZSBnaXZlbiBmaWxlbmFtZSBleHRlbnNpb24uIgpNQ0lFUlJfT1VUT0ZSQU5HRSwgCQkiVGhlIHNwZWNpZmllZCBwYXJhbWV0ZXIgaXMgb3V0IG9mIHJhbmdlIGZvciB0aGUgc3BlY2lmaWVkIGNvbW1hbmQuIgpNQ0lFUlJfRkxBR1NfTk9UX0NPTVBBVElCTEUsIAkiVGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyLiIKTUNJRVJSX0ZJTEVfTk9UX1NBVkVELCAJCSJDYW5ub3Qgc2F2ZSB0aGUgc3BlY2lmaWVkIGZpbGUuIE1ha2Ugc3VyZSB5b3UgaGF2ZSBlbm91Z2ggZGlzayBzcGFjZSBvciBhcmUgc3RpbGwgY29ubmVjdGVkIHRvIHRoZSBuZXR3b3JrLiIKTUNJRVJSX0RFVklDRV9UWVBFX1JFUVVJUkVELCAJIkNhbm5vdCBmaW5kIHRoZSBzcGVjaWZpZWQgZGV2aWNlLiBNYWtlIHN1cmUgaXQgaXMgaW5zdGFsbGVkIG9yIHRoYXQgdGhlIGRldmljZSBuYW1lIGlzIHNwZWxsZWQgY29ycmVjdGx5LiIKTUNJRVJSX0RFVklDRV9MT0NLRUQsIAkJIlRoZSBzcGVjaWZpZWQgZGV2aWNlIGlzIG5vdyBiZWluZyBjbG9zZWQuIFdhaXQgYSBmZXcgc2Vjb25kcywgYW5kIHRoZW4gdHJ5IGFnYWluLiIKTUNJRVJSX0RVUExJQ0FURV9BTElBUywgCSJUaGUgc3BlY2lmaWVkIGFsaWFzIGlzIGFscmVhZHkgYmVpbmcgdXNlZCBpbiB0aGlzIGFwcGxpY2F0aW9uLiBVc2UgYSB1bmlxdWUgYWxpYXMuIgpNQ0lFUlJfQkFEX0NPTlNUQU5ULCAJCSJUaGUgc3BlY2lmaWVkIHBhcmFtZXRlciBpcyBpbnZhbGlkIGZvciB0aGlzIGNvbW1hbmQuIgpNQ0lFUlJfTVVTVF9VU0VfU0hBUkVBQkxFLCAJIlRoZSBkZXZpY2UgZHJpdmVyIGlzIGFscmVhZHkgaW4gdXNlLiBUbyBzaGFyZSBpdCwgdXNlIHRoZSAnc2hhcmVhYmxlJyBwYXJhbWV0ZXIgd2l0aCBlYWNoICdvcGVuJyBjb21tYW5kLiIKTUNJRVJSX01JU1NJTkdfREVWSUNFX05BTUUsIAkiVGhlIHNwZWNpZmllZCBjb21tYW5kIHJlcXVpcmVzIGFuIGFsaWFzLCBmaWxlLCBkcml2ZXIsIG9yIGRldmljZSBuYW1lLiBQbGVhc2Ugc3VwcGx5IG9uZS4iCk1DSUVSUl9CQURfVElNRV9GT1JNQVQsIAkiVGhlIHNwZWNpZmllZCB2YWx1ZSBmb3IgdGhlIHRpbWUgZm9ybWF0IGlzIGludmFsaWQuIFJlZmVyIHRvIHRoZSBNQ0kgZG9jdW1lbnRhdGlvbiBmb3IgdmFsaWQgZm9ybWF0cy4iCk1DSUVSUl9OT19DTE9TSU5HX1FVT1RFLCAJIkEgY2xvc2luZyBkb3VibGUtcXVvdGF0aW9uIG1hcmsgaXMgbWlzc2luZyBmcm9tIHRoZSBwYXJhbWV0ZXIgdmFsdWUuIFBsZWFzZSBzdXBwbHkgb25lLiIKTUNJRVJSX0RVUExJQ0FURV9GTEFHUywgCSJBIHBhcmFtZXRlciBvciB2YWx1ZSB3YXMgc3BlY2lmaWVkIHR3aWNlLiBPbmx5IHNwZWNpZnkgaXQgb25jZS4iCk1DSUVSUl9JTlZBTElEX0ZJTEUsIAkJIlRoZSBzcGVjaWZpZWQgZmlsZSBjYW5ub3QgYmUgcGxheWVkIG9uIHRoZSBzcGVjaWZpZWQgTUNJIGRldmljZS4gVGhlIGZpbGUgbWF5IGJlIGNvcnJ1cHQsIG9yIG5vdCBpbiB0aGUgY29ycmVjdCBmb3JtYXQuIgpNQ0lFUlJfTlVMTF9QQVJBTUVURVJfQkxPQ0ssIAkiQSBudWxsIHBhcmFtZXRlciBibG9jayB3YXMgcGFzc2VkIHRvIE1DSS4iCk1DSUVSUl9VTk5BTUVEX1JFU09VUkNFLCAJIkNhbm5vdCBzYXZlIGFuIHVubmFtZWQgZmlsZS4gU3VwcGx5IGEgZmlsZW5hbWUuIgpNQ0lFUlJfTkVXX1JFUVVJUkVTX0FMSUFTLCAJIllvdSBtdXN0IHNwZWNpZnkgYW4gYWxpYXMgd2hlbiB1c2luZyB0aGUgJ25ldycgcGFyYW1ldGVyLiIKTUNJRVJSX05PVElGWV9PTl9BVVRPX09QRU4sIAkiQ2Fubm90IHVzZSB0aGUgJ25vdGlmeScgZmxhZyB3aXRoIGF1dG8tb3BlbmVkIGRldmljZXMuIgpNQ0lFUlJfTk9fRUxFTUVOVF9BTExPV0VELCAJIkNhbm5vdCB1c2UgYSBmaWxlbmFtZSB3aXRoIHRoZSBzcGVjaWZpZWQgZGV2aWNlLiIKTUNJRVJSX05PTkFQUExJQ0FCTEVfRlVOQ1RJT04sIAkiQ2Fubm90IGNhcnJ5IG91dCB0aGUgY29tbWFuZHMgaW4gdGhlIG9yZGVyIHNwZWNpZmllZC4gQ29ycmVjdCB0aGUgY29tbWFuZCBzZXF1ZW5jZSwgYW5kIHRoZW4gdHJ5IGFnYWluLiIKTUNJRVJSX0lMTEVHQUxfRk9SX0FVVE9fT1BFTiwgCSJDYW5ub3QgY2Fycnkgb3V0IHRoZSBzcGVjaWZpZWQgY29tbWFuZCBvbiBhbiBhdXRvLW9wZW5lZCBkZXZpY2UuIFdhaXQgdW50aWwgdGhlIGRldmljZSBpcyBjbG9zZWQsIGFuZCB0aGVuIHRyeSBhZ2Fpbi4iCk1DSUVSUl9GSUxFTkFNRV9SRVFVSVJFRCwgCSJUaGUgZmlsZW5hbWUgaXMgaW52YWxpZC4gTWFrZSBzdXJlIHRoZSBmaWxlbmFtZSBpcyBub3QgbG9uZ2VyIHRoYW4gOCBjaGFyYWN0ZXJzLCBmb2xsb3dlZCBieSBhIHBlcmlvZCBhbmQgYW4gZXh0ZW5zaW9uLiIKTUNJRVJSX0VYVFJBX0NIQVJBQ1RFUlMsIAkiQ2Fubm90IHNwZWNpZnkgZXh0cmEgY2hhcmFjdGVycyBhZnRlciBhIHN0cmluZyBlbmNsb3NlZCBpbiBxdW90YXRpb24gbWFya3MuIgpNQ0lFUlJfREVWSUNFX05PVF9JTlNUQUxMRUQsIAkiVGhlIHNwZWNpZmllZCBkZXZpY2UgaXMgbm90IGluc3RhbGxlZCBvbiB0aGUgc3lzdGVtLiBVc2UgdGhlIERyaXZlcnMgb3B0aW9uIGluIENvbnRyb2wgUGFuZWwgdG8gaW5zdGFsbCB0aGUgZGV2aWNlLiIKTUNJRVJSX0dFVF9DRCwgCQkJIkNhbm5vdCBhY2Nlc3MgdGhlIHNwZWNpZmllZCBmaWxlIG9yIE1DSSBkZXZpY2UuIFRyeSBjaGFuZ2luZyBkaXJlY3RvcmllcyBvciByZXN0YXJ0aW5nIHlvdXIgY29tcHV0ZXIuIgpNQ0lFUlJfU0VUX0NELCAJCQkiQ2Fubm90IGFjY2VzcyB0aGUgc3BlY2lmaWVkIGZpbGUgb3IgTUNJIGRldmljZSBiZWNhdXNlIHRoZSBhcHBsaWNhdGlvbiBjYW5ub3QgY2hhbmdlIGRpcmVjdG9yaWVzLiIKTUNJRVJSX1NFVF9EUklWRSwgCQkiQ2Fubm90IGFjY2VzcyBzcGVjaWZpZWQgZmlsZSBvciBNQ0kgZGV2aWNlIGJlY2F1c2UgdGhlIGFwcGxpY2F0aW9uIGNhbm5vdCBjaGFuZ2UgZHJpdmVzLiIKTUNJRVJSX0RFVklDRV9MRU5HVEgsIAkJIlNwZWNpZnkgYSBkZXZpY2Ugb3IgZHJpdmVyIG5hbWUgdGhhdCBpcyBsZXNzIHRoYW4gNzkgY2hhcmFjdGVycy4iCk1DSUVSUl9ERVZJQ0VfT1JEX0xFTkdUSCwgCSJTcGVjaWZ5IGEgZGV2aWNlIG9yIGRyaXZlciBuYW1lIHRoYXQgaXMgbGVzcyB0aGFuIDY5IGNoYXJhY3RlcnMuIgpNQ0lFUlJfTk9fSU5URUdFUiwgCQkiVGhlIHNwZWNpZmllZCBjb21tYW5kIHJlcXVpcmVzIGFuIGludGVnZXIgcGFyYW1ldGVyLiBQbGVhc2UgcHJvdmlkZSBvbmUuIgpNQ0lFUlJfV0FWRV9PVVRQVVRTSU5VU0UsIAkiQWxsIHdhdmUgZGV2aWNlcyB0aGF0IGNhbiBwbGF5IGZpbGVzIGluIHRoZSBjdXJyZW50IGZvcm1hdCBhcmUgaW4gdXNlLiBXYWl0IHVudGlsIGEgd2F2ZSBkZXZpY2UgaXMgZnJlZSwgYW5kIHRoZW4gdHJ5IGFnYWluLiIKTUNJRVJSX1dBVkVfU0VUT1VUUFVUSU5VU0UsIAkiQ2Fubm90IHNldCB0aGUgY3VycmVudCB3YXZlIGRldmljZSBmb3IgcGxheSBiYWNrIGJlY2F1c2UgaXQgaXMgaW4gdXNlLiBXYWl0IHVudGlsIHRoZSBkZXZpY2UgaXMgZnJlZSwgYW5kIHRoZW4gdHJ5IGFnYWluLiIKTUNJRVJSX1dBVkVfSU5QVVRTSU5VU0UsIAkiQWxsIHdhdmUgZGV2aWNlcyB0aGF0IGNhbiByZWNvcmQgZmlsZXMgaW4gdGhlIGN1cnJlbnQgZm9ybWF0IGFyZSBpbiB1c2UuIFdhaXQgdW50aWwgYSB3YXZlIGRldmljZSBpcyBmcmVlLCBhbmQgdGhlbiB0cnkgYWdhaW4uIgpNQ0lFUlJfV0FWRV9TRVRJTlBVVElOVVNFLCAJIkNhbm5vdCBzZXQgdGhlIGN1cnJlbnQgd2F2ZSBkZXZpY2UgZm9yIHJlY29yZGluZyBiZWNhdXNlIGl0IGlzIGluIHVzZS4gV2FpdCB1bnRpbCB0aGUgZGV2aWNlIGlzIGZyZWUsIGFuZCB0aGVuIHRyeSBhZ2Fpbi4iCk1DSUVSUl9XQVZFX09VVFBVVFVOU1BFQ0lGSUVELAkiQW55IGNvbXBhdGlibGUgd2F2ZWZvcm0gcGxheWJhY2sgZGV2aWNlIG1heSBiZSB1c2VkLiIKTUNJRVJSX1dBVkVfSU5QVVRVTlNQRUNJRklFRCwgCSJBbnkgY29tcGF0aWJsZSB3YXZlZm9ybSByZWNvcmRpbmcgZGV2aWNlIG1heSBiZSB1c2VkLiIKTUNJRVJSX1dBVkVfT1VUUFVUU1VOU1VJVEFCTEUsIAkiTm8gd2F2ZSBkZXZpY2UgdGhhdCBjYW4gcGxheSBmaWxlcyBpbiB0aGUgY3VycmVudCBmb3JtYXQgaXMgaW5zdGFsbGVkLiBVc2UgdGhlIERyaXZlcnMgb3B0aW9uIHRvIGluc3RhbGwgdGhlIHdhdmUgZGV2aWNlLiIKTUNJRVJSX1dBVkVfU0VUT1VUUFVUVU5TVUlUQUJMRSwiVGhlIGRldmljZSB5b3UgYXJlIHRyeWluZyB0byBwbGF5IHRvIGNhbm5vdCByZWNvZ25pemUgdGhlIGN1cnJlbnQgZmlsZSBmb3JtYXQuIgpNQ0lFUlJfV0FWRV9JTlBVVFNVTlNVSVRBQkxFLCAJIk5vIHdhdmUgZGV2aWNlIHRoYXQgY2FuIHJlY29yZCBmaWxlcyBpbiB0aGUgY3VycmVudCBmb3JtYXQgaXMgaW5zdGFsbGVkLiBVc2UgdGhlIERyaXZlcnMgb3B0aW9uIHRvIGluc3RhbGwgdGhlIHdhdmUgZGV2aWNlLiIKTUNJRVJSX1dBVkVfU0VUSU5QVVRVTlNVSVRBQkxFLCAiVGhlIGRldmljZSB5b3UgYXJlIHRyeWluZyB0byByZWNvcmQgZnJvbSBjYW5ub3QgcmVjb2duaXplIHRoZSBjdXJyZW50IGZpbGUgZm9ybWF0LiIKTUNJRVJSX05PX1dJTkRPVywgCQkiVGhlcmUgaXMgbm8gZGlzcGxheSB3aW5kb3cuIgpNQ0lFUlJfQ1JFQVRFV0lORE9XLCAJCSJOZW30nmVtIHZ5dHZvcmmdIGFsZWJvIHBvdZ5pnSBva25vLiIKTUNJRVJSX0ZJTEVfUkVBRCwgCQkiQ2Fubm90IHJlYWQgdGhlIHNwZWNpZmllZCBmaWxlLiBNYWtlIHN1cmUgdGhlIGZpbGUgaXMgc3RpbGwgcHJlc2VudCwgb3IgY2hlY2sgeW91ciBkaXNrIG9yIG5ldHdvcmsgY29ubmVjdGlvbi4iCk1DSUVSUl9GSUxFX1dSSVRFLCAJCSJDYW5ub3Qgd3JpdGUgdG8gdGhlIHNwZWNpZmllZCBmaWxlLiBNYWtlIHN1cmUgeW91IGhhdmUgZW5vdWdoIGRpc2sgc3BhY2Ugb3IgYXJlIHN0aWxsIGNvbm5lY3RlZCB0byB0aGUgbmV0d29yay4iCk1DSUVSUl9TRVFfRElWX0lOQ09NUEFUSUJMRSwgCSJUaGUgdGltZSBmb3JtYXRzIG9mIHRoZSAiInNvbmcgcG9pbnRlciIiIGFuZCBTTVBURSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiBZb3UgY2FuJ3QgdXNlIHRoZW0gdG9nZXRoZXIuIgpNQ0lFUlJfU0VRX05PTUlESVBSRVNFTlQsIAkiVGhlIHN5c3RlbSBoYXMgbm8gaW5zdGFsbGVkIE1JREkgZGV2aWNlcy4gVXNlIHRoZSBEcml2ZXJzIG9wdGlvbiBmcm9tIHRoZSBDb250cm9sIFBhbmVsIHRvIGluc3RhbGwgYSBNSURJIGRyaXZlci4iCk1DSUVSUl9TRVFfUE9SVF9JTlVTRSwgCQkiVGhlIHNwZWNpZmllZCBNSURJIHBvcnQgaXMgYWxyZWFkeSBpbiB1c2UuIFdhaXQgdW50aWwgaXQgaXMgZnJlZTsgdGhlIHRyeSBhZ2Fpbi4iCk1DSUVSUl9TRVFfUE9SVF9NQVBOT0RFVklDRSwgCSJUaGUgY3VycmVudCBNSURJIE1hcHBlciBzZXR1cCByZWZlcnMgdG8gYSBNSURJIGRldmljZSB0aGF0IGlzIG5vdCBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbS4gVXNlIHRoZSBNSURJIE1hcHBlciBvcHRpb24gZnJvbSB0aGUgQ29udHJvbCBQYW5lbCB0byBlZGl0IHRoZSBzZXR1cC4iCk1DSUVSUl9TRVFfUE9SVF9NSVNDRVJST1IsIAkiQW4gZXJyb3Igb2NjdXJyZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHBvcnQuIgpNQ0lFUlJfU0VRX1BPUlRfTk9ORVhJU1RFTlQsIAkiVGhlIHNwZWNpZmllZCBNSURJIGRldmljZSBpcyBub3QgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0uIFVzZSB0aGUgRHJpdmVycyBvcHRpb24gZnJvbSB0aGUgQ29udHJvbCBQYW5lbCB0byBpbnN0YWxsIGEgTUlESSBkZXZpY2UuIgpNQ0lFUlJfU0VRX1BPUlRVTlNQRUNJRklFRCwgCSJUaGUgc3lzdGVtIGRvZXNub3QgaGF2ZSBhIGN1cnJlbnQgTUlESSBwb3J0IHNwZWNpZmllZC4iCk1DSUVSUl9TRVFfVElNRVIsIAkJIkFsbCBtdWx0aW1lZGlhIHRpbWVycyBhcmUgYmVpbmcgdXNlZCBieSBvdGhlciBhcHBsaWNhdGlvbnMuIFF1aXQgb25lIG9mIHRoZXNlIGFwcGxpY2F0aW9uczsgdGhlbiwgdHJ5IGFnYWluLiIKCkVORAo=