ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc29ueXBpLnR4dCBiL0RvY3VtZW50YXRpb24vc29ueXBpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjNiMjQwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb255cGkudHh0CkBAIC0wLDAgKzEsMTQyIEBACitTb255IFByb2dyYW1tYWJsZSBJL08gQ29udHJvbCBEZXZpY2UgRHJpdmVyIFJlYWRtZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNCBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgorCUNvcHlyaWdodCAoQykgMjAwMS0yMDAyIEFsY/R2ZSA8d3d3LmFsY292ZS5jb20+CisJQ29weXJpZ2h0IChDKSAyMDAxIE1pY2hhZWwgQXNobGV5IDxtLmFzaGxleUB1bnN3LmVkdS5hdT4KKwlDb3B5cmlnaHQgKEMpIDIwMDEgSnVuaWNoaSBNb3JpdGEgPGp1bjFtQG1hcnMuZHRpLm5lLmpwPgorCUNvcHlyaWdodCAoQykgMjAwMCBUYWtheWEgS2luam8gPHQta2luam9AdGM0LnNvLW5ldC5uZS5qcD4KKwlDb3B5cmlnaHQgKEMpIDIwMDAgQW5kcmV3IFRyaWRnZWxsIDx0cmlkZ2VAc2FtYmEub3JnPgorCitUaGlzIGRyaXZlciBlbmFibGVzIGFjY2VzcyB0byB0aGUgU29ueSBQcm9ncmFtbWFibGUgSS9PIENvbnRyb2wgRGV2aWNlIHdoaWNoCitjYW4gYmUgZm91bmQgaW4gbWFueSBTb255IFZhaW8gbGFwdG9wcy4gU29tZSBuZXdlciBTb255IGxhcHRvcHMgKHNlZW1zIHRvIGJlCitsaW1pdGVkIHRvIG5ldyBGWCBzZXJpZXMgbGFwdG9wcywgYXQgbGVhc3QgdGhlIEZYNTAxIGFuZCB0aGUgRlg3MDIpIGxhY2sgYQorc29ueXBpIGRldmljZSBhbmQgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgYWxsIGJ5IHRoaXMgZHJpdmVyLgorCitJdCB3aWxsIGdpdmUgYWNjZXNzICh0aHJvdWdoIGEgdXNlciBzcGFjZSB1dGlsaXR5KSB0byBzb21lIGV2ZW50cyB0aG9zZSBsYXB0b3BzCitnZW5lcmF0ZSwgbGlrZToKKwktIGpvZ2RpYWwgZXZlbnRzICh0aGUgc21hbGwgd2hlZWwgb24gdGhlIHNpZGUgb2YgVmFpb3MpCisJLSBjYXB0dXJlIGJ1dHRvbiBldmVudHMgKG9ubHkgb24gVmFpbyBQaWN0dXJlYm9vayBzZXJpZXMpCisJLSBGbiBrZXlzCisJLSBibHVldG9vdGggYnV0dG9uIChvbmx5IG9uIEMxVlIgbW9kZWwpCisJLSBwcm9ncmFtbWFibGUga2V5cywgYmFjaywgaGVscCwgem9vbSwgdGh1bWJwaHJhc2UgYnV0dG9ucywgZXRjLgorCSAgKHdoZW4gYXZhaWxhYmxlKQorCitUaG9zZSBldmVudHMgKHNlZSBsaW51eC9zb255cGkuaCkgY2FuIGJlIHBvbGxlZCB1c2luZyB0aGUgY2hhcmFjdGVyIGRldmljZSBub2RlCisvZGV2L3NvbnlwaSAobWFqb3IgMTAsIG1pbm9yIGF1dG8gYWxsb2NhdGVkIG9yIHNwZWNpZmllZCBhcyBhIG9wdGlvbikuCitBIHNpbXBsZSBkYWVtb24gd2hpY2ggdHJhbnNsYXRlcyB0aGUgam9nZGlhbCBtb3ZlbWVudHMgaW50byBtb3VzZSB3aGVlbCBldmVudHMKK2NhbiBiZSBkb3dubG9hZGVkIGF0OiA8aHR0cDovL3BvcGllcy5uZXQvc29ueXBpLz4KKworQW5vdGhlciBvcHRpb24gdG8gaW50ZXJjZXB0IHRoZSBldmVudHMgaXMgdG8gZ2V0IHRoZW0gZGlyZWN0bHkgdGhyb3VnaCB0aGUKK2lucHV0IGxheWVyLgorCitUaGlzIGRyaXZlciBzdXBwb3J0cyBhbHNvIHNvbWUgaW9jdGwgY29tbWFuZHMgZm9yIHNldHRpbmcgdGhlIExDRCBzY3JlZW4KK2JyaWdodG5lc3MgYW5kIHF1ZXJ5aW5nIHRoZSBiYXR0ZXJpZXMgY2hhcmdlIGluZm9ybWF0aW9uIChzb21lIG1vcmUKK2NvbW1hbmRzIG1heSBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlKS4KKworVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgdXNlZCB0byBzZXQgdGhlIGNhbWVyYSBjb250cm9scyBvbiBQaWN0dXJlYm9vayBzZXJpZXMKKyhicmlnaHRuZXNzLCBjb250cmFzdCBldGMpLCBhbmQgaXMgdXNlZCBieSB0aGUgdmlkZW80bGludXggZHJpdmVyIGZvciB0aGUKK01vdGlvbiBFeWUgY2FtZXJhLgorCitQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZHJpdmVyIHdhcyBjcmVhdGVkIGJ5IHJldmVyc2UgZW5naW5lZXJpbmcgdGhlIFdpbmRvd3MKK2RyaXZlciBhbmQgdGhlIEFDUEkgQklPUywgYmVjYXVzZSBTb255IGRvZXNuJ3QgYWdyZWUgdG8gcmVsZWFzZSBhbnkgcHJvZ3JhbW1pbmcKK3NwZWNzIGZvciBpdHMgbGFwdG9wcy4gSWYgc29tZW9uZSBjb252aW5jZXMgdGhlbSB0byBkbyBzbywgZHJvcCBtZSBhIG5vdGUuCisKK0RyaXZlciBvcHRpb25zOgorLS0tLS0tLS0tLS0tLS0tCisKK1NldmVyYWwgb3B0aW9ucyBjYW4gYmUgcGFzc2VkIHRvIHRoZSBzb255cGkgZHJpdmVyIHVzaW5nIHRoZSBzdGFuZGFyZAorbW9kdWxlIGFyZ3VtZW50IHN5bnRheCAoPHBhcmFtPj08dmFsdWU+IHdoZW4gcGFzc2luZyB0aGUgb3B0aW9uIHRvIHRoZQorbW9kdWxlIG9yIHNvbnlwaS48cGFyYW0+PTx2YWx1ZT4gb24gdGhlIGtlcm5lbCBib290IGxpbmUgd2hlbiBzb255cGkgaXMKK3N0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlIGtlcm5lbCkuIFRob3NlIG9wdGlvbnMgYXJlOgorCisJbWlub3I6IAkJbWlub3IgbnVtYmVyIG9mIHRoZSBtaXNjIGRldmljZSAvZGV2L3NvbnlwaSwKKwkJCWRlZmF1bHQgaXMgLTEgKGF1dG9tYXRpYyBhbGxvY2F0aW9uLCBzZWUgL3Byb2MvbWlzYworCQkJb3Iga2VybmVsIGxvZ3MpCisKKwljYW1lcmE6CQlpZiB5b3UgaGF2ZSBhIFBpY3R1cmVCb29rIHNlcmllcyBWYWlvICh3aXRoIHRoZQorCQkJaW50ZWdyYXRlZCBNb3Rpb25FeWUgY2FtZXJhKSwgc2V0IHRoaXMgcGFyYW1ldGVyIHRvIDEKKwkJCWluIG9yZGVyIHRvIGxldCB0aGUgZHJpdmVyIGFjY2VzcyB0byB0aGUgY2FtZXJhCisKKwlmbmtleWluaXQ6CW9uIHNvbWUgVmFpb3MgKEMxVkUsIEMxVlIgZXRjKSwgdGhlIEZuIGtleSBldmVudHMgZG9uJ3QKKwkJCWdldCBlbmFibGVkIHVubGVzcyB5b3Ugc2V0IHRoaXMgcGFyYW1ldGVyIHRvIDEuCisJCQlEbyBub3QgdXNlIHRoaXMgb3B0aW9uIHVubGVzcyBpdCdzIGFjdHVhbGx5IG5lY2Vzc2FyeSwKKwkJCXNvbWUgVmFpbyBtb2RlbHMgZG9uJ3QgZGVhbCB3ZWxsIHdpdGggdGhpcyBvcHRpb24uCisJCQlUaGlzIG9wdGlvbiBpcyBhdmFpbGFibGUgb25seSBpZiB0aGUga2VybmVsIGlzCisJCQljb21waWxlZCB3aXRob3V0IEFDUEkgc3VwcG9ydCAoc2luY2UgaXQgY29uZmxpY3RzCisJCQl3aXRoIGl0IGFuZCBpdCBzaG91bGRuJ3QgYmUgcmVxdWlyZWQgYW55d2F5IGlmCisJCQlBQ1BJIGlzIGFscmVhZHkgZW5hYmxlZCkuCisKKwl2ZXJib3NlOglzZXQgdG8gMSB0byBwcmludCB1bmtub3duIGV2ZW50cyByZWNlaXZlZCBmcm9tIHRoZQorCQkJc29ueXBpIGRldmljZS4KKwkJCXNldCB0byAyIHRvIHByaW50IGFsbCBldmVudHMgcmVjZWl2ZWQgZnJvbSB0aGUKKwkJCXNvbnlwaSBkZXZpY2UuCisKKwljb21wYXQ6CQl1c2VzIHNvbWUgY29tcGF0aWJpbGl0eSBjb2RlIGZvciBlbmFibGluZyB0aGUgc29ueXBpCisJCQlldmVudHMuIElmIHRoZSBkcml2ZXIgd29ya2VkIGZvciB5b3UgaW4gdGhlIHBhc3QKKwkJCShwcmlvciB0byB2ZXJzaW9uIDEuNSkgYW5kIGRvZXMgbm90IHdvcmsgYW55bW9yZSwKKwkJCWFkZCB0aGlzIG9wdGlvbiBhbmQgcmVwb3J0IHRvIHRoZSBhdXRob3IuCisKKwltYXNrOgkJZXZlbnQgbWFzayB0ZWxsaW5nIHRoZSBkcml2ZXIgd2hhdCBldmVudHMgd2lsbCBiZQorCQkJcmVwb3J0ZWQgdG8gdGhlIHVzZXIuIFRoaXMgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIGZvcgorCQkJc29tZSBWYWlvIG1vZGVscyB3aGVyZSB0aGUgaGFyZHdhcmUgcmV1c2VzIHZhbHVlcworCQkJdXNlZCBpbiBvdGhlciBWYWlvIG1vZGVscyAobGlrZSB0aGUgRlggc2VyaWVzIHdobyBkb2VzCisJCQlub3QgaGF2ZSBhIGpvZ2RpYWwgYnV0IHJldXNlcyB0aGUgam9nZGlhbCBldmVudHMgZm9yCisJCQlwcm9ncmFtbWFibGUga2V5cyBldmVudHMpLiBUaGUgZGVmYXVsdCBldmVudCBtYXNrIGlzCisJCQlzZXQgdG8gMHhmZmZmZmZmZiwgbWVhbmluZyB0aGF0IGFsbCBwb3NzaWJsZSBldmVudHMKKwkJCXdpbGwgYmUgdHJpZWQuIFlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgYml0cyB0bworCQkJY29uc3RydWN0IHlvdXIgb3duIGV2ZW50IG1hc2sgKGZyb20KKwkJCWRyaXZlcnMvY2hhci9zb255cGkuaCk6CisJCQkJU09OWVBJX0pPR0dFUl9NQVNLIAkJMHgwMDAxCisJCQkJU09OWVBJX0NBUFRVUkVfTUFTSyAJCTB4MDAwMgorCQkJCVNPTllQSV9GTktFWV9NQVNLIAkJMHgwMDA0CisJCQkJU09OWVBJX0JMVUVUT09USF9NQVNLIAkJMHgwMDA4CisJCQkJU09OWVBJX1BLRVlfTUFTSyAJCTB4MDAxMAorCQkJCVNPTllQSV9CQUNLX01BU0sgCQkweDAwMjAKKwkJCQlTT05ZUElfSEVMUF9NQVNLIAkJMHgwMDQwCisJCQkJU09OWVBJX0xJRF9NQVNLIAkJMHgwMDgwCisJCQkJU09OWVBJX1pPT01fTUFTSyAJCTB4MDEwMAorCQkJCVNPTllQSV9USFVNQlBIUkFTRV9NQVNLIAkweDAyMDAKKwkJCQlTT05ZUElfTUVZRV9NQVNLCQkweDA0MDAKKwkJCQlTT05ZUElfTUVNT1JZU1RJQ0tfTUFTSwkJMHgwODAwCisJCQkJU09OWVBJX0JBVFRFUllfTUFTSwkJMHgxMDAwCisKKwl1c2VpbnB1dDoJaWYgc2V0ICh3aGljaCBpcyB0aGUgZGVmYXVsdCkgdHdvIGlucHV0IGRldmljZXMgYXJlCisJCQljcmVhdGVkLCBvbmUgd2hpY2ggaW50ZXJwcmV0cyB0aGUgam9nZGlhbCBldmVudHMgYXMKKwkJCW1vdXNlIGV2ZW50cywgdGhlIG90aGVyIG9uZSB3aGljaCBhY3RzIGxpa2UgYQorCQkJa2V5Ym9hcmQgcmVwb3J0aW5nIHRoZSBwcmVzc2luZyBvZiB0aGUgc3BlY2lhbCBrZXlzLgorCitNb2R1bGUgdXNlOgorLS0tLS0tLS0tLS0KKworSW4gb3JkZXIgdG8gYXV0b21hdGljYWxseSBsb2FkIHRoZSBzb255cGkgbW9kdWxlIG9uIHVzZSwgeW91IGNhbiBwdXQgdGhvc2UKK2xpbmVzIGluIHlvdXIgL2V0Yy9tb2Rwcm9iZS5jb25mIGZpbGU6CisKKwlhbGlhcyBjaGFyLW1ham9yLTEwLTI1MCBzb255cGkKKwlvcHRpb25zIHNvbnlwaSBtaW5vcj0yNTAKKworVGhpcyBzdXBwb3NlcyB0aGUgdXNlIG9mIG1pbm9yIDI1MCBmb3IgdGhlIHNvbnlwaSBkZXZpY2U6CisKKwkjIG1rbm9kIC9kZXYvc29ueXBpIGMgMTAgMjUwCisKK0J1Z3M6CistLS0tLQorCisJLSBzZXZlcmFsIHVzZXJzIHJlcG9ydGVkIHRoYXQgdGhpcyBkcml2ZXIgZGlzYWJsZXMgdGhlIEJJT1MtbWFuYWdlZAorCSAgRm4ta2V5cyB3aGljaCBwdXQgdGhlIGxhcHRvcCBpbiBzbGVlcGluZyBzdGF0ZSwgb3Igc3dpdGNoIHRoZQorCSAgZXh0ZXJuYWwgbW9uaXRvciBvbi9vZmYuIFRoZXJlIGlzIG5vIHdvcmthcm91bmQgeWV0LCBzaW5jZSB0aGlzCisJICBkcml2ZXIgZGlzYWJsZXMgYWxsIEFQTSBtYW5hZ2VtZW50IGZvciB0aG9zZSBrZXlzLCBieSBlbmFibGluZyB0aGUKKwkgIEFDUEkgbWFuYWdlbWVudCAoYW5kIHRoZSBBQ1BJIGNvcmUgc3R1ZmYgaXMgbm90IGNvbXBsZXRlIHlldCkuIElmCisJICB5b3UgaGF2ZSBvbmUgb2YgdGhvc2UgbGFwdG9wcyB3aXRoIHdvcmtpbmcgRm4ga2V5cyBhbmQgd2FudCB0bworCSAgY29udGludWUgdG8gdXNlIHRoZW0sIGRvbid0IHVzZSB0aGlzIGRyaXZlci4KKworCS0gc29tZSB1c2VycyByZXBvcnRlZCB0aGF0IHRoZSBsYXB0b3Agc3BlZWQgaXMgbG93ZXIgKGRocnlzdG9uZQorCSAgdGVzdGVkKSB3aGVuIHVzaW5nIHRoZSBkcml2ZXIgd2l0aCB0aGUgZm5rZXlpbml0IHBhcmFtZXRlci4gSSBjYW5ub3QKKwkgIHJlcHJvZHVjZSBpdCBvbiBteSBsYXB0b3AgYW5kIG5vdCBhbGwgdXNlcnMgaGF2ZSB0aGlzIHByb2JsZW0uCisJICBUaGlzIGhhcHBlbnMgYmVjYXVzZSB0aGUgZm5rZXlpbml0IHBhcmFtZXRlciBlbmFibGVzIHRoZSBBQ1BJCisJICBtb2RlIChidXQgd2l0aG91dCBhZGRpdGlvbmFsIEFDUEkgY29udHJvbCwgbGlrZSBwcm9jZXNzb3IKKwkgIHNwZWVkIGhhbmRsaW5nIGV0YykuIFVzZSBBQ1BJIGluc3RlYWQgb2YgQVBNIGlmIGl0IHdvcmtzIG9uIHlvdXIKKwkgIGxhcHRvcC4KKworCS0gc2luY2UgYWxsIGRldmVsb3BtZW50IHdhcyBkb25lIGJ5IHJldmVyc2UgZW5naW5lZXJpbmcsIHRoZXJlIGlzCisJICBfYWJzb2x1dGVseSBubyBndWFyYW50ZWVfIHRoYXQgdGhpcyBkcml2ZXIgd2lsbCBub3QgY3Jhc2ggeW91cgorCSAgbGFwdG9wLiBQZXJtYW5lbnRseS4K