U29ueSBQcm9ncmFtbWFibGUgSS9PIENvbnRyb2wgRGV2aWNlIERyaXZlciBSZWFkbWUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCUNvcHlyaWdodCAoQykgMjAwMS0yMDAzIFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CglDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiBBbGP0dmUgPHd3dy5hbGNvdmUuY29tPgoJQ29weXJpZ2h0IChDKSAyMDAxIE1pY2hhZWwgQXNobGV5IDxtLmFzaGxleUB1bnN3LmVkdS5hdT4KCUNvcHlyaWdodCAoQykgMjAwMSBKdW5pY2hpIE1vcml0YSA8anVuMW1AbWFycy5kdGkubmUuanA+CglDb3B5cmlnaHQgKEMpIDIwMDAgVGFrYXlhIEtpbmpvIDx0LWtpbmpvQHRjNC5zby1uZXQubmUuanA+CglDb3B5cmlnaHQgKEMpIDIwMDAgQW5kcmV3IFRyaWRnZWxsIDx0cmlkZ2VAc2FtYmEub3JnPgoKVGhpcyBkcml2ZXIgZW5hYmxlcyBhY2Nlc3MgdG8gdGhlIFNvbnkgUHJvZ3JhbW1hYmxlIEkvTyBDb250cm9sIERldmljZSB3aGljaApjYW4gYmUgZm91bmQgaW4gbWFueSBTb255IFZhaW8gbGFwdG9wcy4gU29tZSBuZXdlciBTb255IGxhcHRvcHMgKHNlZW1zIHRvIGJlCmxpbWl0ZWQgdG8gbmV3IEZYIHNlcmllcyBsYXB0b3BzLCBhdCBsZWFzdCB0aGUgRlg1MDEgYW5kIHRoZSBGWDcwMikgbGFjayBhCnNvbnlwaSBkZXZpY2UgYW5kIGFyZSBub3Qgc3VwcG9ydGVkIGF0IGFsbCBieSB0aGlzIGRyaXZlci4KCkl0IHdpbGwgZ2l2ZSBhY2Nlc3MgKHRocm91Z2ggYSB1c2VyIHNwYWNlIHV0aWxpdHkpIHRvIHNvbWUgZXZlbnRzIHRob3NlIGxhcHRvcHMKZ2VuZXJhdGUsIGxpa2U6CgktIGpvZ2RpYWwgZXZlbnRzICh0aGUgc21hbGwgd2hlZWwgb24gdGhlIHNpZGUgb2YgVmFpb3MpCgktIGNhcHR1cmUgYnV0dG9uIGV2ZW50cyAob25seSBvbiBWYWlvIFBpY3R1cmVib29rIHNlcmllcykKCS0gRm4ga2V5cwoJLSBibHVldG9vdGggYnV0dG9uIChvbmx5IG9uIEMxVlIgbW9kZWwpCgktIHByb2dyYW1tYWJsZSBrZXlzLCBiYWNrLCBoZWxwLCB6b29tLCB0aHVtYnBocmFzZSBidXR0b25zLCBldGMuCgkgICh3aGVuIGF2YWlsYWJsZSkKClRob3NlIGV2ZW50cyAoc2VlIGxpbnV4L3NvbnlwaS5oKSBjYW4gYmUgcG9sbGVkIHVzaW5nIHRoZSBjaGFyYWN0ZXIgZGV2aWNlIG5vZGUKL2Rldi9zb255cGkgKG1ham9yIDEwLCBtaW5vciBhdXRvIGFsbG9jYXRlZCBvciBzcGVjaWZpZWQgYXMgYSBvcHRpb24pLgoKQSBzaW1wbGUgZGFlbW9uIHdoaWNoIHRyYW5zbGF0ZXMgdGhlIGpvZ2RpYWwgbW92ZW1lbnRzIGludG8gbW91c2Ugd2hlZWwgZXZlbnRzCmNhbiBiZSBkb3dubG9hZGVkIGF0OiA8aHR0cDovL3BvcGllcy5uZXQvc29ueXBpLz4KClRoaXMgZHJpdmVyIHN1cHBvcnRzIGFsc28gc29tZSBpb2N0bCBjb21tYW5kcyBmb3Igc2V0dGluZyB0aGUgTENEIHNjcmVlbgpicmlnaHRuZXNzIGFuZCBxdWVyeWluZyB0aGUgYmF0dGVyaWVzIGNoYXJnZSBpbmZvcm1hdGlvbiAoc29tZSBtb3JlIApjb21tYW5kcyBtYXkgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZSkuCgpUaGlzIGRyaXZlciBjYW4gYWxzbyBiZSB1c2VkIHRvIHNldCB0aGUgY2FtZXJhIGNvbnRyb2xzIG9uIFBpY3R1cmVib29rIHNlcmllcwooYnJpZ2h0bmVzcywgY29udHJhc3QgZXRjKSwgYW5kIGlzIHVzZWQgYnkgdGhlIHZpZGVvNGxpbnV4IGRyaXZlciBmb3IgdGhlIApNb3Rpb24gRXllIGNhbWVyYS4KClBsZWFzZSBub3RlIHRoYXQgdGhpcyBkcml2ZXIgd2FzIGNyZWF0ZWQgYnkgcmV2ZXJzZSBlbmdpbmVlcmluZyB0aGUgV2luZG93cwpkcml2ZXIgYW5kIHRoZSBBQ1BJIEJJT1MsIGJlY2F1c2UgU29ueSBkb2Vzbid0IGFncmVlIHRvIHJlbGVhc2UgYW55IHByb2dyYW1taW5nCnNwZWNzIGZvciBpdHMgbGFwdG9wcy4gSWYgc29tZW9uZSBjb252aW5jZXMgdGhlbSB0byBkbyBzbywgZHJvcCBtZSBhIG5vdGUuCgpEcml2ZXIgb3B0aW9uczoKLS0tLS0tLS0tLS0tLS0tCgpTZXZlcmFsIG9wdGlvbnMgY2FuIGJlIHBhc3NlZCB0byB0aGUgc29ueXBpIGRyaXZlciwgZWl0aGVyIGJ5IGFkZGluZyB0aGVtCnRvIC9ldGMvbW9kdWxlcy5jb25mIGZpbGUsIHdoZW4gdGhlIGRyaXZlciBpcyBjb21waWxlZCBhcyBhIG1vZHVsZSBvciBieQphZGRpbmcgdGhlIGZvbGxvd2luZyB0byB0aGUga2VybmVsIGNvbW1hbmQgbGluZSAoaW4geW91ciBib290bG9hZGVyKToKCglzb255cGk9bWlub3JbLHZlcmJvc2VbLGZua2V5aW5pdFssY2FtZXJhWyxjb21wYXRbLG1hc2tbLHVzZWlucHV0XV1dXV1dCgp3aGVyZToKCgltaW5vcjogCQltaW5vciBudW1iZXIgb2YgdGhlIG1pc2MgZGV2aWNlIC9kZXYvc29ueXBpLCAKCQkJZGVmYXVsdCBpcyAtMSAoYXV0b21hdGljIGFsbG9jYXRpb24sIHNlZSAvcHJvYy9taXNjCgkJCW9yIGtlcm5lbCBsb2dzKQoKCWNhbWVyYToJCWlmIHlvdSBoYXZlIGEgUGljdHVyZUJvb2sgc2VyaWVzIFZhaW8gKHdpdGggdGhlCgkJCWludGVncmF0ZWQgTW90aW9uRXllIGNhbWVyYSksIHNldCB0aGlzIHBhcmFtZXRlciB0byAxCgkJCWluIG9yZGVyIHRvIGxldCB0aGUgZHJpdmVyIGFjY2VzcyB0byB0aGUgY2FtZXJhCgoJZm5rZXlpbml0OglvbiBzb21lIFZhaW9zIChDMVZFLCBDMVZSIGV0YyksIHRoZSBGbiBrZXkgZXZlbnRzIGRvbid0CgkJCWdldCBlbmFibGVkIHVubGVzcyB5b3Ugc2V0IHRoaXMgcGFyYW1ldGVyIHRvIDEuCgkJCURvIG5vdCB1c2UgdGhpcyBvcHRpb24gdW5sZXNzIGl0J3MgYWN0dWFsbHkgbmVjZXNzYXJ5LAoJCQlzb21lIFZhaW8gbW9kZWxzIGRvbid0IGRlYWwgd2VsbCB3aXRoIHRoaXMgb3B0aW9uLgoJCQlUaGlzIG9wdGlvbiBpcyBhdmFpbGFibGUgb25seSBpZiB0aGUga2VybmVsIGlzIAoJCQljb21waWxlZCB3aXRob3V0IEFDUEkgc3VwcG9ydCAoc2luY2UgaXQgY29uZmxpY3RzCgkJCXdpdGggaXQgYW5kIGl0IHNob3VsZG4ndCBiZSByZXF1aXJlZCBhbnl3YXkgaWYgCgkJCUFDUEkgaXMgYWxyZWFkeSBlbmFibGVkKS4KCgl2ZXJib3NlOglzZXQgdG8gMSB0byBwcmludCB1bmtub3duIGV2ZW50cyByZWNlaXZlZCBmcm9tIHRoZSAKCQkJc29ueXBpIGRldmljZS4KCQkJc2V0IHRvIDIgdG8gcHJpbnQgYWxsIGV2ZW50cyByZWNlaXZlZCBmcm9tIHRoZSAKCQkJc29ueXBpIGRldmljZS4KCgljb21wYXQ6CQl1c2VzIHNvbWUgY29tcGF0aWJpbGl0eSBjb2RlIGZvciBlbmFibGluZyB0aGUgc29ueXBpCgkJCWV2ZW50cy4gSWYgdGhlIGRyaXZlciB3b3JrZWQgZm9yIHlvdSBpbiB0aGUgcGFzdAoJCQkocHJpb3IgdG8gdmVyc2lvbiAxLjUpIGFuZCBkb2VzIG5vdCB3b3JrIGFueW1vcmUsCgkJCWFkZCB0aGlzIG9wdGlvbiBhbmQgcmVwb3J0IHRvIHRoZSBhdXRob3IuCgoJbWFzazoJCWV2ZW50IG1hc2sgdGVsbGluZyB0aGUgZHJpdmVyIHdoYXQgZXZlbnRzIHdpbGwgYmUKCQkJcmVwb3J0ZWQgdG8gdGhlIHVzZXIuIFRoaXMgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIGZvciBzb21lIAoJCQlWYWlvIG1vZGVscyB3aGVyZSB0aGUgaGFyZHdhcmUgcmV1c2VzIHZhbHVlcyB1c2VkIGluIAoJCQlvdGhlciBWYWlvIG1vZGVscyAobGlrZSB0aGUgRlggc2VyaWVzIHdobyBkb2VzIG5vdAoJCQloYXZlIGEgam9nZGlhbCBidXQgcmV1c2VzIHRoZSBqb2dkaWFsIGV2ZW50cyBmb3IKCQkJcHJvZ3JhbW1hYmxlIGtleXMgZXZlbnRzKS4gVGhlIGRlZmF1bHQgZXZlbnQgbWFzayBpcwoJCQlzZXQgdG8gMHhmZmZmZmZmZiwgbWVhbmluZyB0aGF0IGFsbCBwb3NzaWJsZSBldmVudHMgd2lsbCBiZQoJCQl0cmllZC4gWW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBiaXRzIHRvIGNvbnN0cnVjdAoJCQl5b3VyIG93biBldmVudCBtYXNrIChmcm9tIGRyaXZlcnMvY2hhci9zb255cGkuaCk6CgkJCQlTT05ZUElfSk9HR0VSX01BU0sgCQkweDAwMDEKCQkJCVNPTllQSV9DQVBUVVJFX01BU0sgCQkweDAwMDIKCQkJCVNPTllQSV9GTktFWV9NQVNLIAkJMHgwMDA0CgkJCQlTT05ZUElfQkxVRVRPT1RIX01BU0sgCQkweDAwMDgKCQkJCVNPTllQSV9QS0VZX01BU0sgCQkweDAwMTAKCQkJCVNPTllQSV9CQUNLX01BU0sgCQkweDAwMjAKCQkJCVNPTllQSV9IRUxQX01BU0sgCQkweDAwNDAKCQkJCVNPTllQSV9MSURfTUFTSyAJCTB4MDA4MAoJCQkJU09OWVBJX1pPT01fTUFTSyAJCTB4MDEwMAoJCQkJU09OWVBJX1RIVU1CUEhSQVNFX01BU0sgCTB4MDIwMAoJCQkJU09OWVBJX01FWUVfTUFTSwkJMHgwNDAwCgkJCQlTT05ZUElfTUVNT1JZU1RJQ0tfTUFTSwkJMHgwODAwCgkJCQlTT05ZUElfQkFUVEVSWV9NQVNLCQkweDEwMDAKCgl1c2VpbnB1dDoJaWYgc2V0ICh3aGljaCBpcyB0aGUgZGVmYXVsdCkgam9nZGlhbCBldmVudHMgYXJlCgkJCWZvcndhcmRlZCB0byB0aGUgaW5wdXQgc3Vic3lzdGVtIGFzIG1vdXNlIHdoZWVsCgkJCWV2ZW50cy4KCQkJCgpNb2R1bGUgdXNlOgotLS0tLS0tLS0tLQoKSW4gb3JkZXIgdG8gYXV0b21hdGljYWxseSBsb2FkIHRoZSBzb255cGkgbW9kdWxlIG9uIHVzZSwgeW91IGNhbiBwdXQgdGhvc2UKbGluZXMgaW4geW91ciAvZXRjL21vZHVsZXMuY29uZiBmaWxlOgoKCWFsaWFzIGNoYXItbWFqb3ItMTAtMjUwIHNvbnlwaQoJb3B0aW9ucyBzb255cGkgbWlub3I9MjUwCgpUaGlzIHN1cHBvc2VzIHRoZSB1c2Ugb2YgbWlub3IgMjUwIGZvciB0aGUgc29ueXBpIGRldmljZToKCgkjIG1rbm9kIC9kZXYvc29ueXBpIGMgMTAgMjUwCgpCdWdzOgotLS0tLQoKCS0gc2V2ZXJhbCB1c2VycyByZXBvcnRlZCB0aGF0IHRoaXMgZHJpdmVyIGRpc2FibGVzIHRoZSBCSU9TLW1hbmFnZWQKCSAgRm4ta2V5cyB3aGljaCBwdXQgdGhlIGxhcHRvcCBpbiBzbGVlcGluZyBzdGF0ZSwgb3Igc3dpdGNoIHRoZQoJICBleHRlcm5hbCBtb25pdG9yIG9uL29mZi4gVGhlcmUgaXMgbm8gd29ya2Fyb3VuZCB5ZXQsIHNpbmNlIHRoaXMKCSAgZHJpdmVyIGRpc2FibGVzIGFsbCBBUE0gbWFuYWdlbWVudCBmb3IgdGhvc2Uga2V5cywgYnkgZW5hYmxpbmcgdGhlCgkgIEFDUEkgbWFuYWdlbWVudCAoYW5kIHRoZSBBQ1BJIGNvcmUgc3R1ZmYgaXMgbm90IGNvbXBsZXRlIHlldCkuIElmCgkgIHlvdSBoYXZlIG9uZSBvZiB0aG9zZSBsYXB0b3BzIHdpdGggd29ya2luZyBGbiBrZXlzIGFuZCB3YW50IHRvIAoJICBjb250aW51ZSB0byB1c2UgdGhlbSwgZG9uJ3QgdXNlIHRoaXMgZHJpdmVyLgoKCS0gc29tZSB1c2VycyByZXBvcnRlZCB0aGF0IHRoZSBsYXB0b3Agc3BlZWQgaXMgbG93ZXIgKGRocnlzdG9uZQoJICB0ZXN0ZWQpIHdoZW4gdXNpbmcgdGhlIGRyaXZlciB3aXRoIHRoZSBmbmtleWluaXQgcGFyYW1ldGVyLiBJIGNhbm5vdAoJICByZXByb2R1Y2UgaXQgb24gbXkgbGFwdG9wIGFuZCBub3QgYWxsIHVzZXJzIGhhdmUgdGhpcyBwcm9ibGVtLgoJICBUaGlzIGhhcHBlbnMgYmVjYXVzZSB0aGUgZm5rZXlpbml0IHBhcmFtZXRlciBlbmFibGVzIHRoZSBBQ1BJIAoJICBtb2RlIChidXQgd2l0aG91dCBhZGRpdGlvbmFsIEFDUEkgY29udHJvbCwgbGlrZSBwcm9jZXNzb3IgCgkgIHNwZWVkIGhhbmRsaW5nIGV0YykuIFVzZSBBQ1BJIGluc3RlYWQgb2YgQVBNIGlmIGl0IHdvcmtzIG9uIHlvdXIKCSAgbGFwdG9wLgoJCgktIHNpbmNlIGFsbCBkZXZlbG9wbWVudCB3YXMgZG9uZSBieSByZXZlcnNlIGVuZ2luZWVyaW5nLCB0aGVyZSBpcwoJICBfYWJzb2x1dGVseSBubyBndWFyYW50ZWVfIHRoYXQgdGhpcyBkcml2ZXIgd2lsbCBub3QgY3Jhc2ggeW91cgoJICBsYXB0b3AuIFBlcm1hbmVudGx5Lgo=