U29ueSBQcm9ncmFtbWFibGUgSS9PIENvbnRyb2wgRGV2aWNlIERyaXZlciBSZWFkbWUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCUNvcHlyaWdodCAoQykgMjAwMS0yMDA0IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CglDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiBBbGP0dmUgPHd3dy5hbGNvdmUuY29tPgoJQ29weXJpZ2h0IChDKSAyMDAxIE1pY2hhZWwgQXNobGV5IDxtLmFzaGxleUB1bnN3LmVkdS5hdT4KCUNvcHlyaWdodCAoQykgMjAwMSBKdW5pY2hpIE1vcml0YSA8anVuMW1AbWFycy5kdGkubmUuanA+CglDb3B5cmlnaHQgKEMpIDIwMDAgVGFrYXlhIEtpbmpvIDx0LWtpbmpvQHRjNC5zby1uZXQubmUuanA+CglDb3B5cmlnaHQgKEMpIDIwMDAgQW5kcmV3IFRyaWRnZWxsIDx0cmlkZ2VAc2FtYmEub3JnPgoKVGhpcyBkcml2ZXIgZW5hYmxlcyBhY2Nlc3MgdG8gdGhlIFNvbnkgUHJvZ3JhbW1hYmxlIEkvTyBDb250cm9sIERldmljZSB3aGljaApjYW4gYmUgZm91bmQgaW4gbWFueSBTb255IFZhaW8gbGFwdG9wcy4gU29tZSBuZXdlciBTb255IGxhcHRvcHMgKHNlZW1zIHRvIGJlCmxpbWl0ZWQgdG8gbmV3IEZYIHNlcmllcyBsYXB0b3BzLCBhdCBsZWFzdCB0aGUgRlg1MDEgYW5kIHRoZSBGWDcwMikgbGFjayBhCnNvbnlwaSBkZXZpY2UgYW5kIGFyZSBub3Qgc3VwcG9ydGVkIGF0IGFsbCBieSB0aGlzIGRyaXZlci4KCkl0IHdpbGwgZ2l2ZSBhY2Nlc3MgKHRocm91Z2ggYSB1c2VyIHNwYWNlIHV0aWxpdHkpIHRvIHNvbWUgZXZlbnRzIHRob3NlIGxhcHRvcHMKZ2VuZXJhdGUsIGxpa2U6CgktIGpvZ2RpYWwgZXZlbnRzICh0aGUgc21hbGwgd2hlZWwgb24gdGhlIHNpZGUgb2YgVmFpb3MpCgktIGNhcHR1cmUgYnV0dG9uIGV2ZW50cyAob25seSBvbiBWYWlvIFBpY3R1cmVib29rIHNlcmllcykKCS0gRm4ga2V5cwoJLSBibHVldG9vdGggYnV0dG9uIChvbmx5IG9uIEMxVlIgbW9kZWwpCgktIHByb2dyYW1tYWJsZSBrZXlzLCBiYWNrLCBoZWxwLCB6b29tLCB0aHVtYnBocmFzZSBidXR0b25zLCBldGMuCgkgICh3aGVuIGF2YWlsYWJsZSkKClRob3NlIGV2ZW50cyAoc2VlIGxpbnV4L3NvbnlwaS5oKSBjYW4gYmUgcG9sbGVkIHVzaW5nIHRoZSBjaGFyYWN0ZXIgZGV2aWNlIG5vZGUKL2Rldi9zb255cGkgKG1ham9yIDEwLCBtaW5vciBhdXRvIGFsbG9jYXRlZCBvciBzcGVjaWZpZWQgYXMgYSBvcHRpb24pLgpBIHNpbXBsZSBkYWVtb24gd2hpY2ggdHJhbnNsYXRlcyB0aGUgam9nZGlhbCBtb3ZlbWVudHMgaW50byBtb3VzZSB3aGVlbCBldmVudHMKY2FuIGJlIGRvd25sb2FkZWQgYXQ6IDxodHRwOi8vcG9waWVzLm5ldC9zb255cGkvPgoKQW5vdGhlciBvcHRpb24gdG8gaW50ZXJjZXB0IHRoZSBldmVudHMgaXMgdG8gZ2V0IHRoZW0gZGlyZWN0bHkgdGhyb3VnaCB0aGUKaW5wdXQgbGF5ZXIuCgpUaGlzIGRyaXZlciBzdXBwb3J0cyBhbHNvIHNvbWUgaW9jdGwgY29tbWFuZHMgZm9yIHNldHRpbmcgdGhlIExDRCBzY3JlZW4KYnJpZ2h0bmVzcyBhbmQgcXVlcnlpbmcgdGhlIGJhdHRlcmllcyBjaGFyZ2UgaW5mb3JtYXRpb24gKHNvbWUgbW9yZQpjb21tYW5kcyBtYXkgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZSkuCgpUaGlzIGRyaXZlciBjYW4gYWxzbyBiZSB1c2VkIHRvIHNldCB0aGUgY2FtZXJhIGNvbnRyb2xzIG9uIFBpY3R1cmVib29rIHNlcmllcwooYnJpZ2h0bmVzcywgY29udHJhc3QgZXRjKSwgYW5kIGlzIHVzZWQgYnkgdGhlIHZpZGVvNGxpbnV4IGRyaXZlciBmb3IgdGhlCk1vdGlvbiBFeWUgY2FtZXJhLgoKUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGRyaXZlciB3YXMgY3JlYXRlZCBieSByZXZlcnNlIGVuZ2luZWVyaW5nIHRoZSBXaW5kb3dzCmRyaXZlciBhbmQgdGhlIEFDUEkgQklPUywgYmVjYXVzZSBTb255IGRvZXNuJ3QgYWdyZWUgdG8gcmVsZWFzZSBhbnkgcHJvZ3JhbW1pbmcKc3BlY3MgZm9yIGl0cyBsYXB0b3BzLiBJZiBzb21lb25lIGNvbnZpbmNlcyB0aGVtIHRvIGRvIHNvLCBkcm9wIG1lIGEgbm90ZS4KCkRyaXZlciBvcHRpb25zOgotLS0tLS0tLS0tLS0tLS0KClNldmVyYWwgb3B0aW9ucyBjYW4gYmUgcGFzc2VkIHRvIHRoZSBzb255cGkgZHJpdmVyIHVzaW5nIHRoZSBzdGFuZGFyZAptb2R1bGUgYXJndW1lbnQgc3ludGF4ICg8cGFyYW0+PTx2YWx1ZT4gd2hlbiBwYXNzaW5nIHRoZSBvcHRpb24gdG8gdGhlCm1vZHVsZSBvciBzb255cGkuPHBhcmFtPj08dmFsdWU+IG9uIHRoZSBrZXJuZWwgYm9vdCBsaW5lIHdoZW4gc29ueXBpIGlzCnN0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlIGtlcm5lbCkuIFRob3NlIG9wdGlvbnMgYXJlOgoKCW1pbm9yOiAJCW1pbm9yIG51bWJlciBvZiB0aGUgbWlzYyBkZXZpY2UgL2Rldi9zb255cGksCgkJCWRlZmF1bHQgaXMgLTEgKGF1dG9tYXRpYyBhbGxvY2F0aW9uLCBzZWUgL3Byb2MvbWlzYwoJCQlvciBrZXJuZWwgbG9ncykKCgljYW1lcmE6CQlpZiB5b3UgaGF2ZSBhIFBpY3R1cmVCb29rIHNlcmllcyBWYWlvICh3aXRoIHRoZQoJCQlpbnRlZ3JhdGVkIE1vdGlvbkV5ZSBjYW1lcmEpLCBzZXQgdGhpcyBwYXJhbWV0ZXIgdG8gMQoJCQlpbiBvcmRlciB0byBsZXQgdGhlIGRyaXZlciBhY2Nlc3MgdG8gdGhlIGNhbWVyYQoKCWZua2V5aW5pdDoJb24gc29tZSBWYWlvcyAoQzFWRSwgQzFWUiBldGMpLCB0aGUgRm4ga2V5IGV2ZW50cyBkb24ndAoJCQlnZXQgZW5hYmxlZCB1bmxlc3MgeW91IHNldCB0aGlzIHBhcmFtZXRlciB0byAxLgoJCQlEbyBub3QgdXNlIHRoaXMgb3B0aW9uIHVubGVzcyBpdCdzIGFjdHVhbGx5IG5lY2Vzc2FyeSwKCQkJc29tZSBWYWlvIG1vZGVscyBkb24ndCBkZWFsIHdlbGwgd2l0aCB0aGlzIG9wdGlvbi4KCQkJVGhpcyBvcHRpb24gaXMgYXZhaWxhYmxlIG9ubHkgaWYgdGhlIGtlcm5lbCBpcwoJCQljb21waWxlZCB3aXRob3V0IEFDUEkgc3VwcG9ydCAoc2luY2UgaXQgY29uZmxpY3RzCgkJCXdpdGggaXQgYW5kIGl0IHNob3VsZG4ndCBiZSByZXF1aXJlZCBhbnl3YXkgaWYKCQkJQUNQSSBpcyBhbHJlYWR5IGVuYWJsZWQpLgoKCXZlcmJvc2U6CXNldCB0byAxIHRvIHByaW50IHVua25vd24gZXZlbnRzIHJlY2VpdmVkIGZyb20gdGhlCgkJCXNvbnlwaSBkZXZpY2UuCgkJCXNldCB0byAyIHRvIHByaW50IGFsbCBldmVudHMgcmVjZWl2ZWQgZnJvbSB0aGUKCQkJc29ueXBpIGRldmljZS4KCgljb21wYXQ6CQl1c2VzIHNvbWUgY29tcGF0aWJpbGl0eSBjb2RlIGZvciBlbmFibGluZyB0aGUgc29ueXBpCgkJCWV2ZW50cy4gSWYgdGhlIGRyaXZlciB3b3JrZWQgZm9yIHlvdSBpbiB0aGUgcGFzdAoJCQkocHJpb3IgdG8gdmVyc2lvbiAxLjUpIGFuZCBkb2VzIG5vdCB3b3JrIGFueW1vcmUsCgkJCWFkZCB0aGlzIG9wdGlvbiBhbmQgcmVwb3J0IHRvIHRoZSBhdXRob3IuCgoJbWFzazoJCWV2ZW50IG1hc2sgdGVsbGluZyB0aGUgZHJpdmVyIHdoYXQgZXZlbnRzIHdpbGwgYmUKCQkJcmVwb3J0ZWQgdG8gdGhlIHVzZXIuIFRoaXMgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIGZvcgoJCQlzb21lIFZhaW8gbW9kZWxzIHdoZXJlIHRoZSBoYXJkd2FyZSByZXVzZXMgdmFsdWVzCgkJCXVzZWQgaW4gb3RoZXIgVmFpbyBtb2RlbHMgKGxpa2UgdGhlIEZYIHNlcmllcyB3aG8gZG9lcwoJCQlub3QgaGF2ZSBhIGpvZ2RpYWwgYnV0IHJldXNlcyB0aGUgam9nZGlhbCBldmVudHMgZm9yCgkJCXByb2dyYW1tYWJsZSBrZXlzIGV2ZW50cykuIFRoZSBkZWZhdWx0IGV2ZW50IG1hc2sgaXMKCQkJc2V0IHRvIDB4ZmZmZmZmZmYsIG1lYW5pbmcgdGhhdCBhbGwgcG9zc2libGUgZXZlbnRzCgkJCXdpbGwgYmUgdHJpZWQuIFlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgYml0cyB0bwoJCQljb25zdHJ1Y3QgeW91ciBvd24gZXZlbnQgbWFzayAoZnJvbQoJCQlkcml2ZXJzL2NoYXIvc29ueXBpLmgpOgoJCQkJU09OWVBJX0pPR0dFUl9NQVNLIAkJMHgwMDAxCgkJCQlTT05ZUElfQ0FQVFVSRV9NQVNLIAkJMHgwMDAyCgkJCQlTT05ZUElfRk5LRVlfTUFTSyAJCTB4MDAwNAoJCQkJU09OWVBJX0JMVUVUT09USF9NQVNLIAkJMHgwMDA4CgkJCQlTT05ZUElfUEtFWV9NQVNLIAkJMHgwMDEwCgkJCQlTT05ZUElfQkFDS19NQVNLIAkJMHgwMDIwCgkJCQlTT05ZUElfSEVMUF9NQVNLIAkJMHgwMDQwCgkJCQlTT05ZUElfTElEX01BU0sgCQkweDAwODAKCQkJCVNPTllQSV9aT09NX01BU0sgCQkweDAxMDAKCQkJCVNPTllQSV9USFVNQlBIUkFTRV9NQVNLIAkweDAyMDAKCQkJCVNPTllQSV9NRVlFX01BU0sJCTB4MDQwMAoJCQkJU09OWVBJX01FTU9SWVNUSUNLX01BU0sJCTB4MDgwMAoJCQkJU09OWVBJX0JBVFRFUllfTUFTSwkJMHgxMDAwCgoJdXNlaW5wdXQ6CWlmIHNldCAod2hpY2ggaXMgdGhlIGRlZmF1bHQpIHR3byBpbnB1dCBkZXZpY2VzIGFyZQoJCQljcmVhdGVkLCBvbmUgd2hpY2ggaW50ZXJwcmV0cyB0aGUgam9nZGlhbCBldmVudHMgYXMKCQkJbW91c2UgZXZlbnRzLCB0aGUgb3RoZXIgb25lIHdoaWNoIGFjdHMgbGlrZSBhCgkJCWtleWJvYXJkIHJlcG9ydGluZyB0aGUgcHJlc3Npbmcgb2YgdGhlIHNwZWNpYWwga2V5cy4KCk1vZHVsZSB1c2U6Ci0tLS0tLS0tLS0tCgpJbiBvcmRlciB0byBhdXRvbWF0aWNhbGx5IGxvYWQgdGhlIHNvbnlwaSBtb2R1bGUgb24gdXNlLCB5b3UgY2FuIHB1dCB0aG9zZQpsaW5lcyBpbiB5b3VyIC9ldGMvbW9kcHJvYmUuY29uZiBmaWxlOgoKCWFsaWFzIGNoYXItbWFqb3ItMTAtMjUwIHNvbnlwaQoJb3B0aW9ucyBzb255cGkgbWlub3I9MjUwCgpUaGlzIHN1cHBvc2VzIHRoZSB1c2Ugb2YgbWlub3IgMjUwIGZvciB0aGUgc29ueXBpIGRldmljZToKCgkjIG1rbm9kIC9kZXYvc29ueXBpIGMgMTAgMjUwCgpCdWdzOgotLS0tLQoKCS0gc2V2ZXJhbCB1c2VycyByZXBvcnRlZCB0aGF0IHRoaXMgZHJpdmVyIGRpc2FibGVzIHRoZSBCSU9TLW1hbmFnZWQKCSAgRm4ta2V5cyB3aGljaCBwdXQgdGhlIGxhcHRvcCBpbiBzbGVlcGluZyBzdGF0ZSwgb3Igc3dpdGNoIHRoZQoJICBleHRlcm5hbCBtb25pdG9yIG9uL29mZi4gVGhlcmUgaXMgbm8gd29ya2Fyb3VuZCB5ZXQsIHNpbmNlIHRoaXMKCSAgZHJpdmVyIGRpc2FibGVzIGFsbCBBUE0gbWFuYWdlbWVudCBmb3IgdGhvc2Uga2V5cywgYnkgZW5hYmxpbmcgdGhlCgkgIEFDUEkgbWFuYWdlbWVudCAoYW5kIHRoZSBBQ1BJIGNvcmUgc3R1ZmYgaXMgbm90IGNvbXBsZXRlIHlldCkuIElmCgkgIHlvdSBoYXZlIG9uZSBvZiB0aG9zZSBsYXB0b3BzIHdpdGggd29ya2luZyBGbiBrZXlzIGFuZCB3YW50IHRvCgkgIGNvbnRpbnVlIHRvIHVzZSB0aGVtLCBkb24ndCB1c2UgdGhpcyBkcml2ZXIuCgoJLSBzb21lIHVzZXJzIHJlcG9ydGVkIHRoYXQgdGhlIGxhcHRvcCBzcGVlZCBpcyBsb3dlciAoZGhyeXN0b25lCgkgIHRlc3RlZCkgd2hlbiB1c2luZyB0aGUgZHJpdmVyIHdpdGggdGhlIGZua2V5aW5pdCBwYXJhbWV0ZXIuIEkgY2Fubm90CgkgIHJlcHJvZHVjZSBpdCBvbiBteSBsYXB0b3AgYW5kIG5vdCBhbGwgdXNlcnMgaGF2ZSB0aGlzIHByb2JsZW0uCgkgIFRoaXMgaGFwcGVucyBiZWNhdXNlIHRoZSBmbmtleWluaXQgcGFyYW1ldGVyIGVuYWJsZXMgdGhlIEFDUEkKCSAgbW9kZSAoYnV0IHdpdGhvdXQgYWRkaXRpb25hbCBBQ1BJIGNvbnRyb2wsIGxpa2UgcHJvY2Vzc29yCgkgIHNwZWVkIGhhbmRsaW5nIGV0YykuIFVzZSBBQ1BJIGluc3RlYWQgb2YgQVBNIGlmIGl0IHdvcmtzIG9uIHlvdXIKCSAgbGFwdG9wLgoKCS0gc2luY2UgYWxsIGRldmVsb3BtZW50IHdhcyBkb25lIGJ5IHJldmVyc2UgZW5naW5lZXJpbmcsIHRoZXJlIGlzCgkgIF9hYnNvbHV0ZWx5IG5vIGd1YXJhbnRlZV8gdGhhdCB0aGlzIGRyaXZlciB3aWxsIG5vdCBjcmFzaCB5b3VyCgkgIGxhcHRvcC4gUGVybWFuZW50bHkuCg==