ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZGV2ZnMvQ2hhbmdlTG9nIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9kZXZmcy9DaGFuZ2VMb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVhYmE1MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZGV2ZnMvQ2hhbmdlTG9nCkBAIC0wLDAgKzEsMTk3NyBAQAorLyogLSotIGF1dG8tZmlsbCAtKi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjEKKworLSBjcmVhdGlvbiBvZiBkZXZmcworCistIG1vZGlmaWVkIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyIGRldmljZXMgdG8gc3VwcG9ydCBkZXZmcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjIKKworLSBidWcgZml4IHdpdGggbWFudWFsIGlub2RlIGNyZWF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MworCistIGJ1Z2ZpeGVzCisKKy0gZG9jdW1lbnRhdGlvbiBpbXByb3ZlbWVudHMKKworLSBjcmVhdGVkIGEgY291cGxlIG9mIHNjcmlwdHMgKG9uZSB0byBzYXZlJnJlc3RvcmUgYSBkZXZmcyBhbmQgdGhlCisgIG90aGVyIHRvIHNldCB1cCBjb21wYXRpYmlsaXR5IHN5bWxpbmtzKQorCistIGRldmZzIHN1cHBvcnQgZm9yIFNDU0kgZGlzY3MuIE5ldyBuYW1lIGZvcm1hdCBpczogc2RfaEhjQ2lJbEwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY0CisKKy0gYnVnZml4IGZvciB0aGUgZGlyZWN0b3J5IHJlYWRpbmcgY29kZQorCistIGJ1Z2ZpeCBmb3IgY29tcGlsYXRpb24gd2l0aCBrZXJuZWxkCisKKy0gZGV2ZnMgc3VwcG9ydCBmb3IgZ2VuZXJpYyBoYXJkIGRpc2NzCisKKy0gcmF0aW9uYWxpc2F0aW9uIG9mIHRoZSB2YXJpb3VzIHdhdGNoZG9nIGRyaXZlcnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY1CisKKy0gc3VwcG9ydCBmb3IgbW91bnRpbmcgZGlyZWN0bHkgZnJvbSBlbnRyaWVzIGluIHRoZSBkZXZmcyAoaXQgZG9lc24ndAorICBuZWVkIHRvIGJlIG1vdW50ZWQgdG8gZG8gdGhpcyksIGluY2x1ZGluZyB0aGUgcm9vdCBmaWxlc3lzdGVtLgorICBNb3VudGluZyBvZiBzd2FwIHBhcnRpdGlvbnMgYWxzbyB3b3Jrcy4gSGVuY2UsIG5vdyBpZiB5b3Ugc2V0CisgIENPTkZJR19ERVZGU19PTkxZIHRvICdZJyB0aGVuIHlvdSB3b24ndCBiZSBhYmxlIHRvIGFjY2VzcyB5b3VyIGRpc2NzCisgIHZpYSBvcmRpbmFyeSBkZXZpY2Ugbm9kZXMuIE5hdHVyYWxseSwgdGhlIGRlZmF1bHQgaXMgJ04nIHNvIHRoYXQgeW91CisgIGNhbiBzdGlsbCB1c2UgeW91ciBvbGQgZGV2aWNlIG5vZGVzLiAgSWYgeW91IHdhbnQgdG8gbW91bnQgZnJvbSBkZXZmcworICBlbnRyaWVzLCBtYWtlIHN1cmUgeW91IHVzZTogYXBwZW5kID0gInJvb3Q9L2Rldi9zZF8uLi4iIGluIHlvdXIKKyAgbGlsby5jb25mLiBJdCBzZWVtcyBMSUxPIGxvb2tzIGZvciB0aGUgZGV2aWNlIG51bWJlciAobWFqb3ImbWlub3IpCisgIGFuZCB3cml0ZXMgdGhhdCBpbnRvIHRoZSBrZXJuZWwgaW1hZ2UgOi0oIAorCistIHN1cHBvcnQgZm9yIGNoYXJhY3RlciBtZW1vcnkgZGV2aWNlcyAoL2Rldi9udWxsLCAvZGV2L3plcm8sIC9kZXYvZnVsbAorICBhbmQgc28gb24pLiBUaGFua3MgdG8gQy4gU2NvdHQgQW5hbmlhbiA8Y2FuYW5pYW5AYWx1bW5pLnByaW5jZXRvbi5lZHU+Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2NgorCistIHN1cHBvcnQgZm9yIHN1YmRpcmVjdG9yaWVzCisKKy0gc3VwcG9ydCBmb3Igc3ltYm9saWMgbGlua3MgKGNyZWF0ZWQgYnkgZGV2ZnNfbWtfc3ltbGluaygpLCBubworICBzdXBwb3J0IHlldCBmb3IgY3JlYXRpb24gdmlhIHN5bWxpbmsoMikpCisKKy0gU0NTSSBkaXNjIG5hbWluZyBub3cgY2FzdCBpbiBzdG9uZSwgd2l0aCB0aGUgZm9ybWF0OgorICAvZGV2L3NkL2MwYjF0MnUzCWNvbnRyb2xsZXI9MCwgYnVzPTEsIElEPTIsIExVTj0zLCB3aG9sZSBkaXNjCisgIC9kZXYvc2QvYzBiMXQydTNwNAljb250cm9sbGVyPTAsIGJ1cz0xLCBJRD0yLCBMVU49MywgNHRoIHBhcnRpdGlvbgorCistIGxvb3AgZGV2aWNlcyBub3cgYXBwZWFyIGluIGRldmZzCisKKy0gdHR5IGRldmljZXMsIGNvbnNvbGUsIHNlcmlhbCBwb3J0cywgZXRjLiBub3cgYXBwZWFyIGluIGRldmZzCisgIFRoYW5rcyB0byBDLiBTY290dCBBbmFuaWFuIDxjYW5hbmlhbkBhbHVtbmkucHJpbmNldG9uLmVkdT4KKworLSBidWdzIHdpdGggbW91bnRpbmcgZGV2ZnMtb25seSBkZXZpY2VzIG5vdyBmaXhlZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjcKKworLSBTQ1NJIENELVJPTVMsIHRhcGVzIGFuZCBnZW5lcmljIGRldmljZXMgbm93IGFwcGVhciBpbiBkZXZmcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjgKKworLSBidWdmaXggd2l0aCBuby1yZXdpbmQgU0NTSSB0YXBlcworCistIFJBTURJU0NzIG5vdyBhcHBlYXIgaW4gZGV2ZnMKKworLSBiZXR0ZXIgY2xlYW5pbmcgdXAgb2YgZGV2ZnMgZW50cmllcyBjcmVhdGVkIGJ5IHZhcmlvdXMgbW9kdWxlcworCistIGludGVyZmFjZSBjaGFuZ2UgdG8gPGRldmZzX3JlZ2lzdGVyPgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjkKKworLSB0aGUgdjggcGF0Y2ggd2FzIGNvcnJ1cHRlZCBzb21laG93LCB3aGljaCB3b3VsZCBhZmZlY3QgdGhlIHBhdGNoIGZvcgorICBsaW51eC9mcy9maWxlc3lzdGVtcy5jCisgIEkndmUgYWxzbyBmaXhlZCB0aGUgdjggcGF0Y2ggZmlsZSBvbiB0aGUgV1dXCisKKy0gTWV0YURldmljZXMgKC9kZXYvbWQqKSBzaG91bGQgbm93IGFwcGVhciBpbiBkZXZmcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjEwCisKKy0gYnVnZml4IGluIG1ldGEgZGV2aWNlIHN1cHBvcnQgZm9yIGRldmZzCisKKy0gY3JlYXRlZCB0aGlzIENoYW5nZUxvZyBmaWxlCisKKy0gYWRkZWQgZGV2ZnMgc3VwcG9ydCB0byB0aGUgZmxvcHB5IGRyaXZlcgorCistIGFkZGVkIHN1cHBvcnQgZm9yIGNyZWF0aW5nIHNvY2tldHMgaW4gYSBkZXZmcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjExCisKKy0gYWRkZWQgREVWRlNfRkxfSElERV9VTlJFRyBmbGFnCisKKy0gaW5jb3Jwb3JhdGVkIGJldHRlciBwYXRjaCBmb3IgdHR5bmFtZSgpIGluIGxpYmMgNS40LjQzIGZyb20gSC5KLiBMdS4KKworLSBpbnRlcmZhY2UgY2hhbmdlIHRvIDxkZXZmc19ta19zeW1saW5rPgorCistIHN1cHBvcnQgZm9yIGNyZWF0aW5nIHN5bWxpbmtzIHdpdGggc3ltbGluaygyKQorCistIHBhcmFsbGVsIHBvcnQgcHJpbnRlciAoL2Rldi9scCopIG5vdyBhcHBlYXJzIGluIGRldmZzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTIKKworLSBhZGRlZCBpbm9kZSBjaGVjayB0byA8ZGV2ZnNfZmlsbF9maWxlPiBmdW5jdGlvbgorCistIGltcHJvdmVkIGRldmZzIHN1cHBvcnQgd2hlbiBtb3VudGluZyBmcm9tIGRldmZzCisKKy0gYWRkZWQgY2FsbCB0byA8PHJlbGVhc2U+PiBvcGVyYXRpb24gd2hlbiByZW1vdmluZyBzd2FwIGFyZWFzIG9uCisgIGRldmZzIGRldmljZXMKKworLSBpbmNyZWFzZWQgTlJfU1VQRVIgdG8gMTI4IHRvIHN1cHBvcnQgbGFyZ2UgbnVtYmVycyBvZiBkZXZmcyBtb3VudHMKKyAgKGZvciBjaHJvb3QoMikgZ2FvbHMpCisKKy0gZml4ZWQgYnVnIGluIFNDU0kgZGlzYyBzdXBwb3J0OiB3YXMgZ2VuZXJhdGluZyBpbmNvcnJlY3QgbWlub3JzIGlmCisgIFNDU0kgSUQncyBkaWQgbm90IHN0YXJ0IGF0IDAgYW5kIGluY3JlYXNlIGJ5IDEKKworLSBzdXBwb3J0IHN5bWxpbmsgdHJhdmVyc2FsIHdoZW4gbW91bnRpbmcgcm9vdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjEzCisKKy0gYWRkZWQgZGV2ZnMgc3VwcG9ydCB0byBzb3VuZGNhcmQgZHJpdmVyCisgIFRoYW5rcyB0byBFcmljIER1bWFzIDxkdW1hc0BsaW51eC5ldS5vcmc+IGFuZAorICBDLiBTY290dCBBbmFuaWFuIDxjYW5hbmlhbkBhbHVtbmkucHJpbmNldG9uLmVkdT4KKworLSBhZGRlZCBkZXZmcyBzdXBwb3J0IHRvIHRoZSBqb3lzdGljayBkcml2ZXIKKworLSBsb29wIGRyaXZlciBub3cgaGFzIGl0J3Mgb3duIHN1YmRpcmVjdG9yeSAiL2Rldi9sb29wLyIKKworLSBjcmVhdGVkIDxkZXZmc19nZXRfZmxhZ3M+IGFuZCA8ZGV2ZnNfc2V0X2ZsYWdzPiBmdW5jdGlvbnMKKworLSBmaXggcHJvYmxlbSB3aXRoIFNDU0kgZGlzYyBjb21wYXRpYmlsaXR5IG5hbWVzIChzZHthLGIsYyxkLGUsZn0pCisgIHdoaWNoIGFzc3VtZXMgSUQncyBzdGFydCBhdCAwIGFuZCBpbmNyZWFzZSBieSAxLiBBbHNvIG9ubHkgY3JlYXRlCisgIGRldmZzIGVudHJpZXMgZm9yIFNDU0kgZGlzYyBwYXJ0aXRpb25zIHdoaWNoIGFjdHVhbGx5IGV4aXN0CisgIFNob3cgbmV3IG5hbWVzIGluIHBhcnRpdGlvbiBjaGVjaworICBUaGFua3MgdG8gSmFrdWIgSmVsaW5layA8ampAc3Vuc2l0ZS5tcy5tZmYuY3VuaS5jej4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxNAorCistIGJ1ZyBmaXggaW4gZmxvcHB5IGRyaXZlcjogd291bGQgbm90IGNvbXBpbGUgd2l0aG91dAorICBDT05GSUdfREVWRlNfRlM9J1knCisgIFRoYW5rcyB0byBKdXJnZW4gQm90eiA8amJvdHpAbm92YS5ib3R6Lm9yZz4KKworLSBidWcgZml4IGluIGxvb3AgZHJpdmVyCisgIFRoYW5rcyB0byBDLiBTY290dCBBbmFuaWFuIDxjYW5hbmlhbkBhbHVtbmkucHJpbmNldG9uLmVkdT4KKworLSBkbyBub3QgY3JlYXRlIGRldmZzIGVudHJpZXMgZm9yIHByaW50ZXJzIG5vdCBjb25maWd1cmVkCisgIFRoYW5rcyB0byBDLiBTY290dCBBbmFuaWFuIDxjYW5hbmlhbkBhbHVtbmkucHJpbmNldG9uLmVkdT4KKworLSBkbyBub3QgY3JlYXRlIGRldmZzIGVudHJpZXMgZm9yIHNlcmlhbCBwb3J0cyBub3QgcHJlc2VudAorICBUaGFua3MgdG8gQy4gU2NvdHQgQW5hbmlhbiA8Y2FuYW5pYW5AYWx1bW5pLnByaW5jZXRvbi5lZHU+CisKKy0gZW5zdXJlIDx0dHlfcmVnaXN0ZXJfZGV2ZnM+IGlzIGV4cG9ydGVkIGZyb20gdHR5X2lvLmMKKyAgVGhhbmtzIHRvIEMuIFNjb3R0IEFuYW5pYW4gPGNhbmFuaWFuQGFsdW1uaS5wcmluY2V0b24uZWR1PgorCistIGFsbG93IHVucmVnaXN0ZXJpbmcgb2YgZGV2ZnMgc3ltbGluayBlbnRyaWVzCisKKy0gZml4ZWQgYnVnIGluIFNDU0kgZGlzYyBuYW1pbmcgaW50cm9kdWNlZCBpbiBsYXN0IHBhdGNoIHZlcnNpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxNQorCistIHBvcnRlZCB0byBrZXJuZWwgMi4xLjgxCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTYKKworLSBjcmVhdGVkIDxkZXZmc19zZXRfc3ltbGlua19kZXN0aW5hdGlvbj4gZnVuY3Rpb24KKworLSBtb3ZlZCBERVZGU19TVVBFUl9NQUdJQyBpbnRvIGhlYWRlciBmaWxlCisKKy0gYWRkZWQgREVWRlNfRkxfSElERSBmbGFnCisKKy0gY3JlYXRlZCA8ZGV2ZnNfZ2V0X21hal9taW4+CisKKy0gY3JlYXRlZCA8ZGV2ZnNfZ2V0X2hhbmRsZV9mcm9tX2lub2RlPgorCistIGZpeGVkIGJ1Z3MgaW4gc2VhcmNoaW5nIGJ5IG1ham9yJm1pbm9yCisKKy0gY2hhbmdlZCBpbnRlcmZhY2UgdG8gPGRldmZzX3VucmVnaXN0ZXI+LCA8ZGV2ZnNfZmlsbF9maWxlPiBhbmQKKyAgPGRldmZzX2ZpbmRfaGFuZGxlPgorCistIGZpeGVkIGlub2RlIHRpbWVzIHdoZW4gc3ltbGluayBjcmVhdGVkIHdpdGggc3ltbGluaygyKQorCistIGNoYW5nZSB0dHkgZHJpdmVyIHRvIGRvIGF1dG8tY3JlYXRpb24gb2YgZGV2ZnMgZW50cmllcworICBUaGFua3MgdG8gQy4gU2NvdHQgQW5hbmlhbiA8Y2FuYW5pYW5AYWx1bW5pLnByaW5jZXRvbi5lZHU+CisKKy0gZml4ZWQgYnVnIGluIGdlbmhkLmM6IHdob2xlIGRpc2MgKG5vbi1TQ1NJKSB3YXMgbm90IHJlZ2lzdGVyZWQgdG8KKyAgZGV2ZnMKKworLSB1cGRhdGVkIGxpYmMgNS40LjQzIHBhdGNoIGZvciB0dHluYW1lKCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxNworCistIGFkZGVkIENPTkZJR19ERVZGU19UVFlfQ09NUEFUCisgIFRoYW5rcyB0byBDLiBTY290dCBBbmFuaWFuIDxjYW5hbmlhbkBhbHVtbmkucHJpbmNldG9uLmVkdT4KKworLSBidWdmaXggaW4gZGV2ZnMgc3VwcG9ydCBmb3IgZHJpdmVycy9jaGFyL2xwLmMKKyAgVGhhbmtzIHRvIEMuIFNjb3R0IEFuYW5pYW4gPGNhbmFuaWFuQGFsdW1uaS5wcmluY2V0b24uZWR1PgorCistIGNsZWFuIHVwIHNlcmlhbCBkcml2ZXIgc28gdGhhdCBQQ01DSUEgZGV2aWNlcyB1bnJlZ2lzdGVyIGNvcnJlY3RseQorICBUaGFua3MgdG8gQy4gU2NvdHQgQW5hbmlhbiA8Y2FuYW5pYW5AYWx1bW5pLnByaW5jZXRvbi5lZHU+CisKKy0gZml4ZWQgYnVnIGluIGdlbmhkLmM6IHdob2xlIGRpc2MgKG5vbi1TQ1NJKSB3YXMgbm90IHJlZ2lzdGVyZWQgdG8KKyAgZGV2ZnMgW3dhcyBtaXNzaW5nIGluIHBhdGNoIHYxNl0KKworLSB1cGRhdGVkIGxpYmMgNS40LjQzIHBhdGNoIGZvciB0dHluYW1lKCkgW3dhcyBtaXNzaW5nIGluIHBhdGNoIHYxNl0KKworLSBhbGwgU0NTSSBkZXZpY2VzIG5vdyByZWdpc3RlcmVkIGluIC9kZXYvc2cKKworLSBzdXBwb3J0IHJlbW92YWwgb2YgZGV2ZnMgZW50cmllcyB2aWEgdW5saW5rKDIpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTgKKworLSBhZGRlZCBmbG9wcHkvP3U3MjAgZmxvcHB5IGVudHJ5CisKKy0gZml4ZWQga2VybmVsZCBzdXBwb3J0IGZvciBlbnRyaWVzIGluIGRldmZzIHN1YmRpcmVjdG9yaWVzCisKKy0gaW5jb3Jwb3JhdGVkIGxhdGVzdCBwYXRjaCBmb3IgdHR5bmFtZSgpIGluIGxpYmMgNS40LjQzIGZyb20gSC5KLiBMdS4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxOQorCistIGJ1ZyBmaXggd2hlbiBsb29raW5nIHVwIHVucmVnaXN0ZXJlZCBlbnRyaWVzOiBrZXJuZWxkIHdhcyBub3QgY2FsbGVkCisKKy0gZml4ZXMgZm9yIGtlcm5lbCAyLjEuODYgKG5vdyByZXF1aXJlcyAyLjEuODYpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MjAKKworLSBvbmx5IGNyZWF0ZSBhdmFpbGFibGUgZmxvcHB5IGVudHJpZXMKKyAgVGhhbmtzIHRvIEFuZHJ6ZWogS3J6eXN6dG9mb3dpY3ogPGFua3J5QGdyZWVuLm1pZi5wZy5nZGEucGw+CisKKy0gbmV3IElERSBuYW1pbmcgc2NoZW1lIGZvbGxvd2luZyBTQ1NJIGZvcm1hdCAoaS5lLiAvZGV2L2lkL2MwYjB0MHUwcDEKKyAgaW5zdGVhZCBvZiAvZGV2L2hkYTEpCisgIFRoYW5rcyB0byBBbmRyemVqIEtyenlzenRvZm93aWN6IDxhbmtyeUBncmVlbi5taWYucGcuZ2RhLnBsPgorCistIG5ldyBYVCBkaXNjIG5hbWluZyBzY2hlbWUgZm9sbG93aW5nIFNDU0kgZm9ybWF0IChpLmUuIC9kZXYveGQvYzB0MHAxCisgIGluc3RlYWQgb2YgL2Rldi94ZGExKQorICBUaGFua3MgdG8gQW5kcnplaiBLcnp5c3p0b2Zvd2ljeiA8YW5rcnlAZ3JlZW4ubWlmLnBnLmdkYS5wbD4KKworLSBuZXcgbm9uLXN0YW5kYXJkIENELVJPTSBuYW1lcyAoaS5lLiAvZGV2L3NicC9jI3QjKQorICBUaGFua3MgdG8gQW5kcnplaiBLcnp5c3p0b2Zvd2ljeiA8YW5rcnlAZ3JlZW4ubWlmLnBnLmdkYS5wbD4KKworLSBhbGxvdyBzeW1saW5rIHRyYXZlcnNhbCB3aGVuIG1vdW50aW5nIHRoZSByb290IGZpbGVzeXN0ZW0KKworLSBDcmVhdGUgZW50cmllcyBmb3IgTUQgZGV2aWNlcyBhdCBNRCBpbml0CisgIFRoYW5rcyB0byBDaHJpc3RvcGhlIExlcm95IDxjaHJpc3RvcGhlLmxlcm95NUBjYXB3YXkuY29tPgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjIxCisKKy0gcG9ydGVkIHRvIGtlcm5lbCAyLjEuOTEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYyMgorCistIFNDU0kgaG9zdCBudW1iZXIgcGF0Y2ggKCJzY3NpaG9zdHM9IiBrZXJuZWwgb3B0aW9uKQorICBUaGFua3MgdG8gQW5kcnplaiBLcnp5c3p0b2Zvd2ljeiA8YW5rcnlAZ3JlZW4ubWlmLnBnLmdkYS5wbD4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYyMworCistIEZpeGVkIHBlcnNpc3RlbmNlIGJ1ZyB3aXRoIGRldmljZSBudW1iZXJzIGZvciBtYW51YWxseSBjcmVhdGVkCisgIGRldmljZSBmaWxlcworCistIEZpeGVkIHByb2JsZW0gd2l0aCByZWNyZWF0aW5nIHN5bWxpbmtzIHdpdGggZGlmZmVyZW50IGNvbnRlbnQKKworLSBBZGRlZCBDT05GSUdfREVWRlNfTU9VTlQgKG1vdW50IGRldmZzIG9uIC9kZXYgYXQgYm9vdCB0aW1lKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjI0CisKKy0gU3dpdGNoZWQgZnJvbSBDT05GSUdfS0VSTkVMRCB0byBDT05GSUdfS01PRDogbW9kdWxlIGF1dG9sb2FkaW5nCisgIHNob3VsZCBub3cgd29yayBhZ2FpbgorCistIEhpZGUgZW50cmllcyB3aGljaCBhcmUgbWFudWFsbHkgdW5saW5rZWQKKworLSBBbHdheXMgaW52YWxpZGF0ZSBkZXZmcyBkZW50cnkgY2FjaGUgd2hlbiByZWdpc3RlcmluZyBlbnRyaWVzCisKKy0gU3VwcG9ydCByZW1vdmFsIG9mIGRldmZzIGRpcmVjdG9yaWVzIHZpYSBybWRpcigyKQorCistIEVuc3VyZSBkaXJlY3RvcmllcyBjcmVhdGVkIGJ5IDxkZXZmc19ta19kaXI+IGFyZSB2aXNpYmxlCisKKy0gRGVmYXVsdCBubyBhY2Nlc3MgZm9yICJvdGhlciIgZm9yIGZsb3BweSBkZXZpY2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYyNQorCistIFVwZGF0ZXMgdG8gQ1JFRElUUyBmaWxlIGFuZCBtaW5vciBJREUgbnVtYmVyaW5nIGNoYW5nZQorICBUaGFua3MgdG8gQW5kcnplaiBLcnp5c3p0b2Zvd2ljeiA8YW5rcnlAZ3JlZW4ubWlmLnBnLmdkYS5wbD4KKworLSBJbnZhbGlkYXRlIGRldmZzIGRlbnRyeSBjYWNoZSB3aGVuIG1ha2luZyBkaXJlY3RvcmllcworCistIEludmFsaWRhdGUgZGV2ZnMgZGVudHJ5IGNhY2hlIHdoZW4gcmVtb3ZpbmcgZW50cmllcworCistIE1vcmUgaW5mb3JtYXRpdmUgbWVzc2FnZSBpZiByb290IEZTIG1vdW50IGZhaWxzIHdoZW4gZGV2ZnMKKyAgY29uZmlndXJlZAorCistIEZpeGVkIHBlcnNpc3RlbmNlIGJ1ZyB3aXRoIGZpZm9zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MjYKKworLSBwb3J0ZWQgdG8ga2VybmVsIDIuMS45NworCistIENoYW5nZWQgc2VyaWFsIGRpcmVjdG9yeSBmcm9tICIvZGV2L3NlcmlhbCIgdG8gIi9kZXYvdHRzIiBhbmQKKyAgIi9kZXYvY29uc29sZXMiIHRvICIvZGV2L3ZjIiB0byBiZSBtb3JlIGZyaWVuZGx5IHRvIG5ldyBwcm9jcHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYyNworCistIEFkZGVkIHN1cHBvcnQgZm9yIElERTQgYW5kIElERTUKKyAgVGhhbmtzIHRvIEFuZHJ6ZWogS3J6eXN6dG9mb3dpY3ogPGFua3J5QGdyZWVuLm1pZi5wZy5nZGEucGw+CisKKy0gRG9jdW1lbnRlZCAic2NzaWhvc3RzPSIgYm9vdCBwYXJhbWV0ZXIKKworLSBQcmludCBwcm9jZXNzIGNvbW1hbmQgd2hlbiBkZWJ1Z2dpbmcga2VybmVsZC9rbW9kCisKKy0gQWRkZWQgZGVidWdnaW5nIGZvciByZWdpc3Rlci91bnJlZ2lzdGVyL2NoYW5nZSBvcGVyYXRpb25zCisKKy0gQWRkZWQgImRldmZzPSIgYm9vdCBvcHRpb25zCisKKy0gSGlkZSB1bnJlZ2lzdGVyZWQgZW50cmllcyBieSBkZWZhdWx0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MjgKKworLSBObyBsb25nZXIgbG9jay91bmxvY2sgc3VwZXJibG9jayBpbiA8ZGV2ZnNfcHV0X3N1cGVyPiAoY29wZSB3aXRoCisgIHJlY2VudCBWRlMgaW50ZXJmYWNlIGNoYW5nZSkKKworLSBEbyBub3QgYXV0b21hdGljYWxseSBjaGFuZ2Ugb3duZXJzaGlwL3Byb3RlY3Rpb24gb2YgL2Rldi90dHkKKworLSBEcm9wIG5lZ2F0aXZlIGRlbnRyaWVzIHdoZW4gdGhleSBhcmUgcmVsZWFzZWQKKworLSBNYW5hZ2UgZGNhY2hlIG1vcmUgZWZmaWNpZW50bHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYyOQorCistIEFkZGVkIERFVkZTX0ZMX0FVVE9fREVWTlVNIGZsYWcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYzMAorCistIE5vIGxvbmdlciBzZXQgdW5uZWNlc3NhcnkgbWV0aG9kcworCistIFBvcnRlZCB0byBrZXJuZWwgMi4xLjk5LXByZTMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYzMQorCistIEFkZGVkIFBJRCBkaXNwbGF5IHRvIDxjYWxsX2tlcm5lbGQ+IGRlYnVnZ2luZyBtZXNzYWdlCisKKy0gQWRkZWQgImRpcmVhZCIgYW5kICJkaXdyaXRlIiBvcHRpb25zCisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjEuMTAyCisKKy0gRml4ZWQgcGVyc2lzdGVuY2UgcHJvYmxlbSB3aXRoIHBlcm1pc3Npb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MzIKKworLSBGaXhlZCBkZXZmcyBzdXBwb3J0IGluIGRyaXZlcnMvYmxvY2svbWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjMzCisKKy0gU3VwcG9ydCBsZWdhY3kgZGV2aWNlIG5vZGVzCisKKy0gRml4ZWQgYnVnIHdoZXJlIHJlY3JlYXRlZCBpbm9kZXMgd2VyZSBoaWRkZW4KKworLSBOZXcgSURFIG5hbWluZyBzY2hlbWU6IGV2ZXJ5dGhpbmcgaXMgdW5kZXIgL2Rldi9pZGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYzNAorCistIEltcHJvdmVkIGRlYnVnZ2luZyBpbiA8Z2V0X3Zmc19pbm9kZT4KKworLSBQcmV2ZW50IGR1cGxpY2F0ZSBjYWxscyB0byA8ZGV2ZnNfbWtfZGlyPiBpbiBTQ1NJIGxheWVyCisKKy0gTm8gbG9uZ2VyIGZyZWUgb2xkIGRlbnRyaWVzIGluIDxkZXZmc19ta19kaXI+CisKKy0gRnJlZSBhbGwgZGVudHJpZXMgZm9yIGEgZ2l2ZW4gZW50cnkgd2hlbiBkZWxldGluZyBpbm9kZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYzNQorCistIFBvcnRlZCB0byBrZXJuZWwgMi4xLjEwNSAoc291bmQgZHJpdmVyIGNoYW5nZXMpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MzYKKworLSBGaXhlZCBzb3VuZCBkcml2ZXIgcG9ydAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjM3CisKKy0gTWlub3IgZG9jdW1lbnRhdGlvbiB0d2Vha3MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYzOAorCistIE1vcmUgZG9jdW1lbnRhdGlvbiB0d2Vha3MKKworLSBGaXggZm9yIHNvdW5kIGRyaXZlciBwb3J0CisKKy0gUmVtb3ZlZCB0dHluYW1lLXBhdGNoIChncmFiIGxpYmMgNS40LjQ0IGluc3RlYWQpCisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjEuMTA3LXByZTIgKGxvb3AgZHJpdmVyIGZpeCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYzOQorCistIFBvcnRlZCB0byBrZXJuZWwgMi4xLjEwNyAoaGQuYyBodW5rIGJyb2tlIGR1ZSB0byBzcGVsbGluZyAiZml4ZXMiKS4gU2lnaAorCistIFJlbW92ZWQgbWFueSAjaWZkZWYncywgcmVwbGFjZWQgd2l0aCB0cmlja2VyeSBpbiBpbmNsdWRlL2RldmZzX2ZzLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY0MAorCistIEZpeCBmb3Igc291bmQgZHJpdmVyIHBvcnQKKworLSBMaW1pdCBhdXRvLWRldmljZSBudW1iZXJpbmcgdG8gbWFqb3JzIDEyOCB0byAyMzkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY0MQorCistIEZpeGVkIGlub2RlIHRpbWVzIHBlcnNpc3RlbmNlIHByb2JsZW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY0MgorCistIFBvcnRlZCB0byBrZXJuZWwgMi4xLjEwOCAoZHJpdmVycy9zY3NpL2hvc3RzLmMgaHVuayBicm9rZSkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY0MworCistIEZpeGVkIHNwZWxsaW5nIGluIDxkZXZmc19yZWFkbGluaz4gZGVidWcKKworLSBGaXhlZCBidWcgaW4gPGRldmZzX3NldHVwPiBwYXJzaW5nICJkaWxvb2t1cCIKKworLSBNb3JlICNpZmRlZidzIHJlbW92ZWQKKworLSBTdXBwb3J0ZWQgU3BhcmMga2V5Ym9hcmQgKC9kZXYva2JkKQorCistIFN1cHBvcnRlZCBEU1A1NjAwMSBkaWdpdGFsIHNpZ25hbCBwcm9jZXNzb3IgKC9kZXYvZHNwNTZrKQorCistIFN1cHBvcnRlZCBBcHBsZSBEZXNrdG9wIEJ1cyAoL2Rldi9hZGIpCisKKy0gU3VwcG9ydGVkIENvZGEgbmV0d29yayBmaWxlIHN5c3RlbSAoL2Rldi9jZnMqKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjQ0CisKKy0gRml4ZWQgZGV2ZnMgaW5vZGUgbGVhayB3aGVuIG1hbnVhbGx5IHJlY3JlYXRpbmcgaW5vZGVzCisKKy0gRml4ZWQgcGVybWlzc2lvbiBwZXJzaXN0ZW5jZSBwcm9ibGVtIHdoZW4gcmVjcmVhdGluZyBpbm9kZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY0NQorCistIFBvcnRlZCB0byBrZXJuZWwgMi4xLjExMAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjQ2CisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjEuMTEyLXByZTEKKworLSBSZW1vdmVkIGhhcm1sZXNzICJ1bnVzZWQgdmFyaWFibGUiIGNvbXBpbGVyIHdhcm5pbmcKKworLSBGaXhlZCBtb2RlcyBmb3IgbWFudWFsbHkgcmVjcmVhdGVkIGRldmljZSBub2RlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjQ3CisKKy0gQWRkZWQgTlVMTCBkZXZmcyBpbm9kZSB3YXJuaW5nIGluIDxkZXZmc19yZWFkX2lub2RlPgorCistIEZvcmNlIGFsbCBpbm9kZSBubGluayB2YWx1ZXMgdG8gMQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjQ4CisKKy0gQWRkZWQgImRpbWtub2QiIG9wdGlvbgorCistIFNldCBpbm9kZSBubGluayB0byAwIHdoZW4gZnJlZWluZyBkZW50cmllcworCistIEFkZGVkIHN1cHBvcnQgZm9yIHZpcnR1YWwgY29uc29sZSBjYXB0dXJlIGRldmljZXMgKC9kZXYvdmNzKikKKyAgVGhhbmtzIHRvIERlbm5pcyBIb3UgPHNtaWxheEBtaW5kbWVsZC55aS5vcmc+CisKKy0gRml4ZWQgbW9kZXMgZm9yIG1hbnVhbGx5IHJlY3JlYXRlZCBzeW1saW5rcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjQ5CisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjEuMTEzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2NTAKKworLSBGaXhlZCBidWdzIGluIHJlY3JlYXRlZCBkaXJlY3RvcmllcyBhbmQgc3ltbGlua3MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY1MQorCistIEltcHJvdmVkIHJvYnVzdG5lc3Mgb2YgcmMuZGV2ZnMgc2NyaXB0CisgIFRoYW5rcyB0byBSb2RlcmljaCBTY2h1cHAgPHJzY2hAZXhwZXJ0ZWFtLmRlPgorCistIEZpeGVkIGJ1Z3MgaW4gcmVjcmVhdGVkIGRldmljZSBub2RlcworCistIEZpeGVkIGJ1ZyBpbiBjdXJyZW50bHkgdW51c2VkIDxkZXZmc19nZXRfaGFuZGxlX2Zyb21faW5vZGU+CisKKy0gRGVmaW5lZCBuZXcgPGRldmZzX2hhbmRsZV90PiB0eXBlCisKKy0gSW1wcm92ZWQgZGVidWdnaW5nIHdoZW4gZ2V0dGluZyBlbnRyaWVzCisKKy0gRml4ZWQgYnVnIHdoZXJlIGRpcmVjdG9yaWVzIGNvdWxkIGJlIGVtcHRpZWQKKworLSBQb3J0ZWQgdG8ga2VybmVsIDIuMS4xMTUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY1MgorCistIFJlcGxhY2VkIGR1bW15IC5lcG9jaCBpbm9kZSB3aXRoIC5kZXZmc2QgY2hhcmFjdGVyIGRldmljZQorCistIE1vZGlmaWVkIHJjLmRldmZzIHRvIHRha2UgYWNjb3VudCBvZiBhYm92ZSBjaGFuZ2UKKworLSBSZW1vdmVkIHNwdXJpb3VzIGRyaXZlciB3YXJuaW5nIG1lc3NhZ2VzIHdoZW4gQ09ORklHX0RFVkZTX0ZTPW4KKworLSBJbXBsZW1lbnRlZCBkZXZmc2QgcHJvdG9jb2wgcmV2aXNpb24gMAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjUzCisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjEuMTE2IChrbW9kIGNoYW5nZSBicm9rZSBodW5rKQorCistIFVwZGF0ZWQgRG9jdW1lbnRhdGlvbi9Db25maWd1cmUuaGVscAorCistIFRlc3QgYW5kIHR0eSBwYXR0ZXJuIHBhdGNoIGZvciByYy5kZXZmcyBzY3JpcHQKKyAgVGhhbmtzIHRvIFJvZGVyaWNoIFNjaHVwcCA8cnNjaEBleHBlcnRlYW0uZGU+CisKKy0gQWRkZWQgc29vdGhpbmcgbWVzc2FnZSB0byB3YXJuaW5nIGluIDxkZXZmc19kX2lwdXQ+Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2NTQKKworLSBQb3J0ZWQgdG8ga2VybmVsIDIuMS4xMTcKKworLSBGaXhlZCBkZWZhdWx0IHBlcm1pc3Npb25zIGluIHNvdW5kIGRyaXZlcgorCistIEFkZGVkIHN1cHBvcnQgZm9yIGZyYW1lIGJ1ZmZlciBkZXZpY2VzICgvZGV2L2ZiKikKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY1NQorCistIFBvcnRlZCB0byBrZXJuZWwgMi4xLjExOQorCistIFVzZSBHQ0MgZXh0ZW5zaW9ucyBmb3Igc3RydWN0dXJlIGluaXRpYWxpc2F0aW9ucworCistIEltcGxlbWVudGVkIGFzeW5jIG9wZW4gbm90aWZpY2F0aW9uCisKKy0gSW5jcmVtZW50ZWQgZGV2ZnNkIHByb3RvY29sIHJldmlzaW9uIHRvIDEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY1NgorCistIFBvcnRlZCB0byBrZXJuZWwgMi4xLjEyMC1wcmUzCisKKy0gTW92ZWQgYXN5bmMgb3BlbiBub3RpZmljYXRpb24gdG8gZW5kIG9mIDxkZXZmc19vcGVuPgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjU3CisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjEuMTIxCisKKy0gUHJlcGVuZGVkICIvZGV2LyIgdG8gbW9kdWxlIGxvYWQgcmVxdWVzdAorCistIFJlbmFtZWQgPGNhbGxfa2VybmVsZD4gdG8gPGNhbGxfa21vZD4KKworLSBDcmVhdGVkIHNhbXBsZSBtb2R1bGVzLmNvbmYgZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjU4CisKKy0gRml4ZWQgdHlwbyAiQVlTTkMiIC0+ICJBU1lOQyIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY1OQorCistIEFkZGVkIG9wZW4gZmxhZyBmb3IgZmlsZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY2MAorCistIFBvcnRlZCB0byBrZXJuZWwgMi4xLjEyMy1wcmUyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2NjEKKworLSBTZXQgaV9ibG9ja3M9MCBhbmQgaV9ibGtzaXplPTEwMjQgaW4gPGRldmZzX3JlYWRfaW5vZGU+Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2NjIKKworLSBQb3J0ZWQgdG8ga2VybmVsIDIuMS4xMjMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY2MworCistIFBvcnRlZCB0byBrZXJuZWwgMi4xLjEyNC1wcmUyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2NjQKKworLSBGaXhlZCBVbml4OTggcHR5IHN1cHBvcnQKKworLSBJbmNyZWFzZWQgYnVmZmVyIHNpemUgaW4gPGdldF9wYXJ0aXRpb25fbGlzdD4gdG8gYXZvaWQgY3Jhc2ggYW5kCisgIGJ1cm4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY2NQorCistIE1vcmUgVW5peDk4IHB0eSBzdXBwb3J0IGZpeGVzCisKKy0gQWRkZWQgdGVzdCBmb3IgZW1wdHkgPDxuYW1lPj4gaW4gPGRldmZzX2ZpbmRfaGFuZGxlPgorCistIFJlbmFtZWQgPGdlbmVyYXRlX3BhdGg+IHRvIDxkZXZmc19nZW5lcmF0ZV9wYXRoPiBhbmQgcHVibGlzaGVkCisKKy0gQ3JlYXRlZCAvZGV2L3Jvb3Qgc3ltbGluaworICBUaGFua3MgdG8gUm9kZXJpY2ggU2NodXBwIDxyc2NoQEV4cGVyVGVhbS5kZT4KKyAgd2l0aCBmdXJ0aGVyIG1vZGlmaWNhdGlvbnMgYnkgbWUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY2NgorCistIFlldCBtb3JlIFVuaXg5OCBwdHkgc3VwcG9ydCBmaXhlcyAobm93IHRlc3RlZCkKKworLSBDcmVhdGVkIDxkZXZmc19nZXRfZm9wcz4KKworLSBTdXBwb3J0IG1lZGlhIGNoYW5nZSBjaGVja3Mgd2hlbiBDT05GSUdfREVWRlNfT05MWT15CisKKy0gQWJvbGlzaGVkIFVuaXg5OC1zdHlsZSBQVFkgbmFtZXMgZm9yIG9sZCBQVFkgZGV2aWNlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjY3CisKKy0gQWRkZWQgaW5saW5lIGRlY2xhcmF0aW9uIGZvciBkdW1teSA8ZGV2ZnNfZ2VuZXJhdGVfcGF0aD4KKworLSBSZW1vdmVkIHNwdXJpb3VzICJ1bmFibGUgdG8gcmVnaXN0ZXIuLi4gaW4gZGV2ZnMiIG1lc3NhZ2VzIHdoZW4KKyAgQ09ORklHX0RFVkZTX0ZTPW4KKworLSBGaXhlZCBtaXNjLiBkZXZpY2VzIHdoZW4gQ09ORklHX0RFVkZTX0ZTPW4KKworLSBMaW1pdCBhdXRvLWRldmljZSBudW1iZXJpbmcgdG8gbWFqb3JzIDE0NCB0byAyMzkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY2OAorCistIEhpZGUgdW5vcGVuZWQgdmlydHVhbCBjb25zb2xlcyBmcm9tIGRpcmVjdG9yeSBsaXN0aW5ncworCistIEFkZGVkIHN1cHBvcnQgZm9yIHZpZGVvIGNhcHR1cmUgZGV2aWNlcworCistIFBvcnRlZCB0byBrZXJuZWwgMi4xLjEyNQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjY5CisKKy0gRml4IGZvciBDT05GSUdfVlQ9bgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjcwCisKKy0gQWRkZWQgc3VwcG9ydCBmb3Igbm9uLU9TUy9GcmVlIHNvdW5kIGNhcmRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2NzEKKworLSBQb3J0ZWQgdG8ga2VybmVsIDIuMS4xMjYtcHJlMgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjcyCisKKy0gI2lmZGVmJ3MgZm9yIENPTkZJR19ERVZGU19ESVNBQkxFX09MRF9OQU1FUyByZW1vdmVkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2NzMKKworLSBDT05GSUdfREVWRlNfRElTQUJMRV9PTERfTkFNRVMgcmVwbGFjZWQgd2l0aCAibm9jb21wYXQiIGJvb3Qgb3B0aW9uCisKKy0gQ09ORklHX0RFVkZTX0JPT1RfT1BUSU9OUyByZW1vdmVkOiBib290IG9wdGlvbnMgYWx3YXlzIGF2YWlsYWJsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjc0CisKKy0gUmVtb3ZlZCBDT05GSUdfREVWRlNfTU9VTlQgYW5kICJtb3VudCIgYm9vdCBvcHRpb24gYW5kIHJlcGxhY2VkIHdpdGgKKyAgIm5vbW91bnQiIGJvb3Qgb3B0aW9uCisKKy0gRG9jdW1lbnRhdGlvbiB1cGRhdGVzCisKKy0gVXBkYXRlZCBzYW1wbGUgbW9kdWxlcy5jb25mCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2NzUKKworLSBVcGRhdGVkIHNhbXBsZSBtb2R1bGVzLmNvbmYKKworLSBSZW1vdW50IGRldmZzIGFmdGVyIGluaXRyZCBmaW5pc2hlcworCistIFBvcnRlZCB0byBrZXJuZWwgMi4xLjEyNworCistIEFkZGVkIHN1cHBvcnQgZm9yIElTRE4KKyAgVGhhbmtzIHRvIENocmlzdG9waGUgTGVyb3kgPGNocmlzdG9waGUubGVyb3k1QGNhcHdheS5jb20+Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2NzYKKworLSBVcGRhdGVkIGFuIGVtYWlsIGFkZHJlc3MgaW4gQ2hhbmdlTG9nCisKKy0gQ09ORklHX0RFVkZTX09OTFkgcmVwbGFjZWQgd2l0aCAib25seSIgYm9vdCBvcHRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY3NworCistIEFkZGVkIERFVkZTX0ZMX1JFTU9WQUJMRSBmbGFnCisKKy0gQ2hlY2sgZm9yIGRpc2MgY2hhbmdlIHdoZW4gbGlzdGluZyBkaXJlY3RvcmllcyB3aXRoIHJlbW92YWJsZSBtZWRpYQorICBkZXZpY2VzCisKKy0gVXNlIERFVkZTX0ZMX1JFTU9WQUJMRSBpbiBzZC5jCisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjEuMTI4Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2NzgKKworLSBPbmx5IGNhbGwgPHNjYW5fZGlyX2Zvcl9yZW1vdmFibGU+IG9uIGZpcnN0IGNhbGwgdG8gPGRldmZzX3JlYWRkaXI+CisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjEuMTI5LXByZTUKKworLSBJU0ROIHN1cHBvcnQgaW1wcm92ZW1lbnRzCisgIFRoYW5rcyB0byBDaHJpc3RvcGhlIExlcm95IDxjaHJpc3RvcGhlLmxlcm95NUBjYXB3YXkuY29tPgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjc5CisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjEuMTMwCisKKy0gUmVuYW1lZCBtaXNjZGV2aWNlICJhcG0iIHRvICJhcG1fYmlvcyIgdG8gYmUgY29uc2lzdGVudCB3aXRoCisgIGRldmljZXMudHh0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2ODAKKworLSBQb3J0ZWQgdG8ga2VybmVsIDIuMS4xMzEKKworLSBVcGRhdGVkIDxkZXZmc19ybWRpcj4gZm9yIFZGUyBjaGFuZ2UgaW4gMi4xLjEzMQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjgxCisKKy0gRml4ZWQgcGVybWlzc2lvbnMgb24gL2Rldi9wdG14Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2ODIKKworLSBQb3J0ZWQgdG8ga2VybmVsIDIuMS4xMzItcHJlNAorCistIENoYW5nZWQgaW5pdGlhbCBwZXJtaXNzaW9ucyBvbiAvZGV2L3B0cy8qCisKKy0gQ3JlYXRlZCA8ZGV2ZnNfbWtfY29tcGF0PgorCistIEFkZGVkICJzeW1saW5rcyIgYm9vdCBvcHRpb24KKworLSBDaGFuZ2VkIGRldmZzX3JlZ2lzdGVyX2Jsa2RldigpIGJhY2sgdG8gcmVnaXN0ZXJfYmxrZGV2KCkgZm9yIElERQorCistIENoZWNrIGZvciBwYXJ0aXRpb25zIG9uIHJlbW92YWJsZSBtZWRpYSBpbiA8ZGV2ZnNfbG9va3VwPgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjgzCisKKy0gRml4ZWQgc3VwcG9ydCBmb3IgcmFtZGlzYyB3aGVuIHVzaW5nIHN0cmluZy1iYXNlZCByb290IEZTIG5hbWUKKworLSBQb3J0ZWQgdG8ga2VybmVsIDIuMi4wLXByZTEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY4NAorCistIFBvcnRlZCB0byBrZXJuZWwgMi4yLjAtcHJlNworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjg1CisKKy0gQ29tcGlsZSBmaXhlcyBmb3IgZHJpdmVyL3NvdW5kL3NvdW5kX2NvbW1vbi5jIChub24tbW9kdWxlKSBhbmQKKyAgZHJpdmVycy9pc2RuL2lzZG5fY29tbW9uLmMKKyAgVGhhbmtzIHRvIENocmlzdG9waGUgTGVyb3kgPGNocmlzdG9waGUubGVyb3k1QGNhcHdheS5jb20+CisKKy0gQWRkZWQgc3VwcG9ydCBmb3IgcmVnaXN0ZXJpbmcgcmVndWxhciBmaWxlcworCistIENyZWF0ZWQgPGRldmZzX3NldF9maWxlX3NpemU+CisKKy0gQWRkZWQgL2Rldi9jcHUvbXRyciBhcyBhbiBhbHRlcm5hdGl2ZSBpbnRlcmZhY2UgdG8gL3Byb2MvbXRycgorCistIFVwZGF0ZSBkZXZmcyBpbm9kZXMgZnJvbSBlbnRyaWVzIGlmIG5vdCBjaGFuZ2VkIHRocm91Z2ggRlMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY4NgorCistIFBvcnRlZCB0byBrZXJuZWwgMi4yLjAtcHJlOQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjg3CisKKy0gRml4ZWQgYnVnIHdoZW4gbW91bnRpbmcgbm9uLWRldmZzIGRldmljZXMgaW4gYSBkZXZmcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjg4CisKKy0gRml4ZWQgPGRldmZzX2ZpbGxfZmlsZT4gdG8gb25seSBpbml0aWFsaXNlIHRlbXBvcmFyeSBpbm9kZXMKKworLSBUcmFwIGZvciBOVUxMIGZvcHMgaW4gPGRldmZzX3JlZ2lzdGVyPgorCistIFJldHVybiAtRU5PREVWIGluIDxkZXZmc19maWxsX2ZpbGU+IGZvciBub24tZHJpdmVyIGlub2RlcworCistIEZpeGVkIGJ1ZyB3aGVuIHVuc3dhcHBpbmcgbm9uLWRldmZzIGRldmljZXMgaW4gYSBkZXZmcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjg5CisKKy0gU3dpdGNoZWQgdG8gQyBkYXRhIHR5cGVzIGluIGluY2x1ZGUvbGludXgvZGV2ZnNfZnMuaAorCistIFN3aXRjaGVkIGZyb20gUEFUSF9NQVggdG8gREVWRlNfUEFUSExFTgorCistIFVwZGF0ZWQgRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9kZXZmcy9tb2R1bGVzLmNvbmYgdG8gdGFrZSBhY2NvdW50CisgIG9mIHJldmVyc2Ugc2Nhbm5pbmcgKCEpIGJ5IG1vZHByb2JlCisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjIuMAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjkwCisKKy0gQ09ORklHX0RFVkZTX0RJU0FCTEVfT0xEX1RUWV9OQU1FUyByZXBsYWNlZCB3aXRoICJub3R0eWNvbXBhdCIgYm9vdAorICBvcHRpb24KKworLSBDT05GSUdfREVWRlNfVFRZX0NPTVBBVCByZW1vdmVkOiBleGlzdGluZyAic3ltbGlua3MiIGJvb3Qgb3B0aW9uIG5vdworICBjb250cm9scyB0aGlzLiBUaGlzIG1lYW5zIHlvdSBtdXN0IGhhdmUgbGliYyA1LjQuNDQgb3IgbGF0ZXIsIG9yIGEKKyAgcmVjZW50IHZlcnNpb24gb2YgbGliYyA2IGlmIHlvdSB1c2UgdGhlICJzeW1saW5rcyIgb3B0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2OTEKKworLSBTd2l0Y2ggZnJvbSA8ZGV2ZnNfbWtfc3ltbGluaz4gdG8gPGRldmZzX21rX2NvbXBhdD4gaW4KKyAgZHJpdmVycy9jaGFyL3ZjX3NjcmVlbi5jIHRvIGZpeCBwcm9ibGVtcyB3aXRoIE1pZG5pZ2h0IENvbW1hbmRlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjkyCisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjIuMi1wcmU1Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2OTMKKworLSBNb2RpZmllZCA8c2RfbmFtZT4gaW4gZHJpdmVycy9zY3NpL3NkLmMgdG8gY29wZSB3aXRoIGRldmljZXMgdGhhdAorICBkb24ndCBleGlzdCAod2hpY2ggaGFwcGVucyB3aXRoIG5ldyBSQUlEIGF1dG9zdGFydCBjb2RlIHByaW50aygpcykKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY5NAorCistIEZpeGVkIGJ1ZyBpbiBqb3lzdGljayBkcml2ZXI6IG9ubHkgZmlyc3Qgam95c3RpY2sgd2FzIHJlZ2lzdGVyZWQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY5NQorCistIEZpeGVkIGFub3RoZXIgYnVnIGluIGpveXN0aWNrIGRyaXZlcgorCistIEZpeGVkIDxkZXZmc2RfcmVhZD4gdG8gbm90IG92ZXJydW4gZXZlbnQgYnVmZmVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2OTYKKworLSBQb3J0ZWQgdG8ga2VybmVsIDIuMi41LTIKKworLSBDcmVhdGVkIDxkZXZmc19hdXRvX3VucmVnaXN0ZXI+CisKKy0gRml4ZWQgYnVnczogY29tcGF0aWJpbGl0eSBlbnRyaWVzIHdlcmUgbm90IHVucmVnaXN0ZXJlZCBmb3I6CisgICAgbG9vcCBkcml2ZXIKKyAgICBmbG9wcHkgZHJpdmVyCisgICAgUkFNRElTQyBkcml2ZXIKKyAgICBJREUgdGFwZSBkcml2ZXIKKyAgICBTQ1NJIENELVJPTSBkcml2ZXIKKyAgICBTQ1NJIEhERCBkcml2ZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY5NworCistIEZpeGVkIGJ1Z3M6IGNvbXBhdGliaWxpdHkgZW50cmllcyB3ZXJlIG5vdCB1bnJlZ2lzdGVyZWQgZm9yOgorICAgIEFMU0Egc291bmQgZHJpdmVyCisgICAgcGFydGl0aW9ucyBpbiBnZW5lcmljIGRpc2MgZHJpdmVyCisKKy0gRG9uJ3QgcmV0dXJuIHVucmVnaXN0cmVkIGVudHJpZXMgaW4gPGRldmZzX2ZpbmRfaGFuZGxlPgorCistIFBhbmljIGluIDxkZXZmc191bnJlZ2lzdGVyPiBpZiBlbnRyeSB1bnJlZ2lzdGVyZWQKKworLSBEb24ndCBwYW5pYyBpbiA8ZGV2ZnNfYXV0b191bnJlZ2lzdGVyPiBmb3IgZHVwbGljYXRlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjk4CisKKy0gRG9uJ3QgdW5yZWdpc3RlciBhbHJlYWR5IHVucmVnaXN0ZXJlZCBlbnRyaWVzIGluIDx1bnJlZ2lzdGVyPgorCistIFJlZ2lzdGVyIGVudHJ5IGluIDxzZF9kZXRlY3Q+CisKKy0gVW5yZWdpc3RlciBlbnRyeSBpbiA8c2RfZGV0YWNoPgorCistIENoYW5nZWQgdG8gPGRldmZzXypyZWdpc3Rlcl9jaHJkZXY+IGluIGRyaXZlcnMvY2hhci90dHlfaW8uYworCistIFBvcnRlZCB0byBrZXJuZWwgMi4yLjcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHY5OQorCistIFBvcnRlZCB0byBrZXJuZWwgMi4yLjgKKworLSBGaXhlZCBidWcgaW4gZHJpdmVycy9zY3NpL3NkLmMgd2hlbiA+MTYgU0NTSSBkaXNjcworCistIERpc2FibGUgd2FybmluZyBtZXNzYWdlcyB3aGVuIHVuYWJsZSB0byByZWFkIHBhcnRpdGlvbiB0YWJsZSBmb3IKKyAgcmVtb3ZhYmxlIG1lZGlhCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTAwCisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjMuMS1wcmU1CisKKy0gQWRkZWQgIm9vcHMtb24tcGFuaWMiIGJvb3Qgb3B0aW9uCisKKy0gSW1wcm92ZWQgZGVidWdnaW5nIGluIDxkZXZmc19yZWdpc3Rlcj4gYW5kIDxkZXZmc191bnJlZ2lzdGVyPgorCistIFJlZ2lzdGVyIGVudHJ5IGluIDxzcl9kZXRlY3Q+CisKKy0gVW5yZWdpc3RlciBlbnRyeSBpbiA8c3JfZGV0YWNoPgorCistIFJlZ2lzdGVyIGVudHJ5IGluIDxzZ19kZXRlY3Q+CisKKy0gVW5yZWdpc3RlciBlbnRyeSBpbiA8c2dfZGV0YWNoPgorCistIEFkZGVkIHN1cHBvcnQgZm9yIEFMU0EgZHJpdmVycworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjEwMQorCistIFBvcnRlZCB0byBrZXJuZWwgMi4zLjIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxMDIKKworLSBVcGRhdGUgc2VyaWFsIGRyaXZlciB0byByZWdpc3RlciBQQ01DSUEgZW50cmllcworICBUaGFua3MgdG8gUm9jaC1BbGV4YW5kcmUgTm9taW5lLUJlZ3VpbiA8cm9jaEBzYW1hcmthbmQuaW5maW5pLmZyPgorCistIFVwZGF0ZWQgYW4gZW1haWwgYWRkcmVzcyBpbiBDaGFuZ2VMb2cKKworLSBIaWRlIHZpcnR1YWwgY29uc29sZSBjYXB0dXJlIGVudHJpZXMgZnJvbSBkaXJlY3RvcnkgbGlzdGluZ3Mgd2hlbgorICBjb3JyZXNwb25kaW5nIGNvbnNvbGUgZGV2aWNlIGlzIG5vdCBvcGVuCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTAzCisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjMuMworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjEwNAorCistIEFkZGVkIGRvY3VtZW50YXRpb24gZm9yIHNvbWUgZnVuY3Rpb25zCisKKy0gQWRkZWQgImRvYyIgdGFyZ2V0IHRvIGZzL2RldmZzL01ha2VmaWxlCisKKy0gQWRkZWQgInY0bCIgZGlyZWN0b3J5IGZvciB2aWRlbzRsaW51eCBkZXZpY2VzCisKKy0gUmVwbGFjZWQgY2FsbCB0byA8ZGV2ZnNfdW5yZWdpc3Rlcj4gaW4gPHNkX2RldGFjaD4gd2l0aCBjYWxsIHRvCisgIDxkZXZmc19yZWdpc3Rlcl9wYXJ0aXRpb25zPgorCistIE1vdmVkIHJlZ2lzdHJhdGlvbiBmb3Igc3IgYW5kIHNnIGRyaXZlcnMgZnJvbSBkZXRlY3QoKSB0byBhdHRhY2goKQorICBtZXRob2RzCisKKy0gUmVnaXN0ZXIgZW50cmllcyBpbiA8c3RfYXR0YWNoPiBhbmQgdW5yZWdpc3RlciBpbiA8c3RfZGV0YWNoPgorCistIFdvcmsgYXJvdW5kIElERSBkcml2ZXIgdHJlYXRpbmcgQ0QtUk9NIGFzIGdlbmRpc2sKKworLSBVc2UgPHNlZD4gaW5zdGVhZCBvZiA8dHI+IGluIHJjLmRldmZzCisKKy0gVXBkYXRlZCBUb0RvIGxpc3QKKworLSBSZW1vdmVkICJvb3BzLW9uLXBhbmljIiBib290IG9wdGlvbjogbm93IGFsd2F5cyBPb3BzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTA1CisKKy0gVW5yZWdpc3RlciBTQ1NJIGhvc3QgZnJvbSA8c2NzaV9ob3N0X25vX2xpc3Q+IGluIDxzY3NpX3VucmVnaXN0ZXI+CisgIFRoYW5rcyB0byBab2x04W4gQvZzevZybelueWkgPHpib3N6b3JAbWFpbC5leHRlcm5ldC5odT4KKworLSBEb24ndCBzYXZlIC9kZXYvbG9nIGluIHJjLmRldmZzCisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjMuNC1wcmUxCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTA2CisKKy0gRml4ZWQgc2lsbHkgdHlwbyBpbiBkcml2ZXJzL3Njc2kvc3QuYworCistIEltcHJvdmVkIGRlYnVnZ2luZyBpbiA8ZGV2ZnNfcmVnaXN0ZXI+Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTA3CisKKy0gQWRkZWQgImRpdW5saW5rIiBhbmQgIm5va21vZCIgYm9vdCBvcHRpb25zCisKKy0gUmVtb3ZlZCBzdXBlcmZsdW91cyB3YXJuaW5nIG1lc3NhZ2UgaW4gPGRldmZzX2RfaXB1dD4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxMDgKKworLSBSZW1vdmUgZW50cmllcyB3aGVuIHVubG9hZGluZyBzb3VuZCBtb2R1bGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxMDkKKworLSBQb3J0ZWQgdG8ga2VybmVsIDIuMy42LXByZTIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxMTAKKworLSBUb29rIGFjY291bnQgb2YgY2hhbmdlIHRvIDxkX2FsbG9jX3Jvb3Q+Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTExCisKKy0gQ3JlYXRlZCBzZXBhcmF0ZSBldmVudCBxdWV1ZSBmb3IgZWFjaCBtb3VudGVkIGRldmZzCisKKy0gUmVtb3ZlZCA8ZGV2ZnNfaW52YWxpZGF0ZV9kY2FjaGU+CisKKy0gQ3JlYXRlZCBuZXcgaW9jdGwoKXMgZm9yIGRldmZzZAorCistIEluY3JlbWVudGVkIGRldmZzZCBwcm90b2NvbCByZXZpc2lvbiB0byAzCisKKy0gRml4ZWQgYnVnIHdoZW4gcmUtY3JlYXRpbmcgZGlyZWN0b3JpZXM6IGNvbnRlbnRzIHdlcmUgbG9zdAorCistIEJsb2NrIGFjY2VzcyB0byBpbm9kZXMgdW50aWwgZGV2ZnNkIHVwZGF0ZXMgcGVybWlzc2lvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxMTIKKworLSBNb2RpZmllZCBwYXRjaCBzbyBpdCBhcHBsaWVzIGFnYWluc3QgMi4zLjUgYW5kIDIuMy42CisKKy0gVXBkYXRlZCBhbiBlbWFpbCBhZGRyZXNzIGluIENoYW5nZUxvZworCistIERvIG5vdCBhdXRvbWF0aWNhbGx5IGNoYW5nZSBvd25lcnNoaXAvcHJvdGVjdGlvbiBvZiAvZGV2L3R0eTxuPgorCistIFVwZGF0ZWQgc2FtcGxlIG1vZHVsZXMuY29uZgorCistIFN3aXRjaGVkIHRvIHNlbmRpbmcgcHJvY2VzcyB1aWQvZ2lkIHRvIGRldmZzZAorCistIFJlbmFtZWQgPGNhbGxfa21vZD4gdG8gPHRyeV9tb2Rsb2FkPgorCistIEFkZGVkIERFVkZTRF9OT1RJRllfTE9PS1VQIGV2ZW50CisKKy0gQWRkZWQgREVWRlNEX05PVElGWV9DSEFOR0UgZXZlbnQKKworLSBBZGRlZCBERVZGU0RfTk9USUZZX0NSRUFURSBldmVudAorCistIEluY3JlbWVudGVkIGRldmZzZCBwcm90b2NvbCByZXZpc2lvbiB0byA0CisKKy0gTW92ZWQga2VybmVsLXNwZWNpZmljIHN0dWZmIHRvIGluY2x1ZGUvbGludXgvZGV2ZnNfZnNfa2VybmVsLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxMTMKKworLSBQb3J0ZWQgdG8ga2VybmVsIDIuMy45CisKKy0gUmVzdHJpY3RlZCBwZXJtaXNzaW9ucyBvbiBzb21lIGJsb2NrIGRldmljZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxMTQKKworLSBBZGRlZCBzdXBwb3J0IGZvciAvZGV2L25ldGxpbmsKKyAgVGhhbmtzIHRvIERlbm5pcyBIb3UgPHNtaWxheEBtaW5kbWVsZC55aS5vcmc+CisKKy0gUmV0dXJuIEVJU0RJUiByYXRoZXIgdGhhbiBFSU5WQUwgZm9yIHJlYWQoMikgb24gZGlyZWN0b3JpZXMKKworLSBQb3J0ZWQgdG8ga2VybmVsIDIuMy4xMAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjExNQorCistIEFkZGVkIHN1cHBvcnQgZm9yIGFsbCByZW1haW5pbmcgY2hhcmFjdGVyIGRldmljZXMKKyAgVGhhbmtzIHRvIERlbm5pcyBIb3UgPHNtaWxheEBtaW5kbWVsZC55aS5vcmc+CisKKy0gQ2xlYW5lZCB1cCBuZXRsaW5rIHN1cHBvcnQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxMTYKKworLSBBZGRlZCBzdXBwb3J0IGZvciAvZGV2L3BhcnBvcnQlZAorICBUaGFua3MgdG8gVGltIFdhdWdoIDx0aW1AY3liZXJlbGsuZGVtb24uY28udWs+CisKKy0gRml4ZWQgcGFyYWxsZWwgcG9ydCBBVEFQSSB0YXBlIGRyaXZlcgorCistIEZpeGVkIEF0YXJpIFNMTSBsYXNlciBwcmludGVyIGRyaXZlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjExNworCistIEFkZGVkIHN1cHBvcnQgZm9yIENPU0EgY2FyZAorICBUaGFua3MgdG8gRGVubmlzIEhvdSA8c21pbGF4QG1pbmRtZWxkLnlpLm9yZz4KKworLSBGaXhlZCBkcml2ZXJzL2NoYXIvcHBkZXYuYzogbWlzc2luZyAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorCistIEZpeGVkIGRyaXZlcnMvY2hhci9mdGFwZS96ZnRhcGUvemZ0YXBlLWluaXQuYworICBUaGFua3MgdG8gVmxhZGltaXIgUG9wb3YgPG1hc2hncmFkQHVzYS5uZXQ+Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTE4CisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjMuMTUtcHJlMworCistIEZpeGVkIGJ1ZyBpbiBsb29wIGRyaXZlcgorCistIFVucmVnaXN0ZXIgL2Rldi9scCVkIGVudHJpZXMgaW4gZHJpdmVycy9jaGFyL2xwLmMKKyAgVGhhbmtzIHRvIE1hY2llaiBXLiBSb3p5Y2tpIDxtYWNyb0BkczIucGcuZ2RhLnBsPgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjExOQorCistIFBvcnRlZCB0byBrZXJuZWwgMi4zLjE2Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTIwCisKKy0gRml4ZWQgYnVnIGluIGRyaXZlcnMvc2NzaS9zY3NpLmMKKworLSBBZGRlZCAvZGV2L3BwcAorICBUaGFua3MgdG8gRGVubmlzIEhvdSA8c21pbGF4QG1pbmRtZWxkLnlpLm9yZz4KKworLSBQb3J0ZWQgdG8ga2VybmVsIDIuMy4xNworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjEyMQorCistIEZpeGVkIGJ1ZyBpbiBkcml2ZXJzL2Jsb2NrL2xvb3AuYworCistIFBvcnRlZCB0byBrZXJuZWwgMi4zLjE4Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTIyCisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjMuMTkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxMjMKKworLSBQb3J0ZWQgdG8ga2VybmVsIDIuMy4yMAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjEyNAorCistIFBvcnRlZCB0byBrZXJuZWwgMi4zLjIxCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTI1CisKKy0gQ3JlYXRlZCA8ZGV2ZnNfZ2V0X2luZm8+LCA8ZGV2ZnNfc2V0X2luZm8+LAorICA8ZGV2ZnNfZ2V0X2ZpcnN0X2NoaWxkPiBhbmQgPGRldmZzX2dldF9uZXh0X3NpYmxpbmc+CisgIEFkZGVkIDw8ZGlyPj4gcGFyYW1ldGVyIHRvIDxkZXZmc19yZWdpc3Rlcj4sIDxkZXZmc19ta19jb21wYXQ+LAorICA8ZGV2ZnNfbWtfZGlyPiBhbmQgPGRldmZzX2ZpbmRfaGFuZGxlPgorICBXb3JrIHNwb25zb3JlZCBieSBTR0kKKworLSBGaXhlZCBhcHBhcmVudCBidWcgaW4gQ09TQSBkcml2ZXIKKworLSBSZS1pbnN0YXRlZCAic2NzaWhvc3RzPSIgYm9vdCBvcHRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxMjYKKworLSBBbHdheXMgY3JlYXRlIC9kZXYvcHRzIGlmIENPTkZJR19VTklYOThfUFRZUz15CisKKy0gRml4ZWQgY2FsbCB0byA8ZGV2ZnNfbWtfZGlyPiBpbiBkcml2ZXJzL2Jsb2NrL2lkZS1kaXNrLmMKKyAgVGhhbmtzIHRvIERlbm5pcyBIb3UgPHNtaWxheEBtaW5kbWVsZC55aS5vcmc+CisKKy0gQWxsb3cgbXVsdGlwbGUgdW5yZWdpc3RyYXRpb25zCisKKy0gQ3JlYXRlZCAvZGV2L3Njc2kgaGllcmFyY2h5CisgIFdvcmsgc3BvbnNvcmVkIGJ5IFNHSQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjEyNworCitXb3JrIHNwb25zb3JlZCBieSBTR0kKKworLSBObyBsb25nZXIgZGlzYWJsZSBkZXZwdHMgaWYgZGV2ZnMgZW5hYmxlZCAoY2F2ZWF0IGVtcHRvcikKKworLSBBZGRlZCBmbGFncyBhcnJheSB0byBzdHJ1Y3QgZ2VuZGlzayBhbmQgcmVtb3ZlZCBjb2RlIGZyb20KKyAgZHJpdmVycy9zY3NpL3NkLmMKKworLSBDcmVhdGVkIC9kZXYvZGlzY3MgaGllcmFyY2h5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTI4CisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIENyZWF0ZWQgL2Rldi9jZHJvbXMgaGllcmFyY2h5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTI5CisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBlbnRyaWVzIGZvciBzb3VuZCBkZXZpY2VzCisKKy0gUmVtb3ZlZCBjb21wYXRpYmlsaXR5IGVudHJpZXMgZm9yIHByaW50ZXIgZGV2aWNlcworCistIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBlbnRyaWVzIGZvciB2aWRlbzRsaW51eCBkZXZpY2VzCisKKy0gUmVtb3ZlZCBjb21wYXRpYmlsaXR5IGVudHJpZXMgZm9yIHBhcmFsbGVsIHBvcnQgZGV2aWNlcworCistIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBlbnRyaWVzIGZvciBmcmFtZSBidWZmZXIgZGV2aWNlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjEzMAorCitXb3JrIHNwb25zb3JlZCBieSBTR0kKKworLSBBZGRlZCBtYWpvciBhbmQgbWlub3IgbnVtYmVyIHRvIGRldmZzZCBwcm90b2NvbAorCistIEluY3JlbWVudGVkIGRldmZzZCBwcm90b2NvbCByZXZpc2lvbiB0byA1CisKKy0gUmVtb3ZlZCBjb21wYXRpYmlsaXR5IGVudHJpZXMgZm9yIFNvdW5kQmxhc3RlciBDRC1ST01zCisKKy0gUmVtb3ZlZCBjb21wYXRpYmlsaXR5IGVudHJpZXMgZm9yIG5ldGxpbmsgZGV2aWNlcworCistIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBlbnRyaWVzIGZvciBTQ1NJIGdlbmVyaWMgZGV2aWNlcworCistIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBlbnRyaWVzIGZvciBTQ1NJIHRhcGUgZGV2aWNlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjEzMQorCitXb3JrIHNwb25zb3JlZCBieSBTR0kKKworLSBTdXBwb3J0IGluZm8gcG9pbnRlciBmb3IgYWxsIGRldmZzIGVudHJ5IHR5cGVzCisKKy0gQWRkZWQgPDxpbmZvPj4gcGFyYW1ldGVyIHRvIDxkZXZmc19ta19kaXI+IGFuZCA8ZGV2ZnNfbWtfc3ltbGluaz4KKworLSBSZW1vdmVkIC9kZXYvc3QgaGllcmFyY2h5CisKKy0gUmVtb3ZlZCAvZGV2L3NnIGhpZXJhcmNoeQorCistIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBlbnRyaWVzIGZvciBsb29wIGRldmljZXMKKworLSBSZW1vdmVkIGNvbXBhdGliaWxpdHkgZW50cmllcyBmb3IgSURFIHRhcGUgZGV2aWNlcworCistIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBlbnRyaWVzIGZvciBTQ1NJIENELVJPTXMKKworLSBSZW1vdmVkIC9kZXYvc3IgaGllcmFyY2h5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTMyCisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBlbnRyaWVzIGZvciBmbG9wcHkgZGV2aWNlcworCistIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBlbnRyaWVzIGZvciBSQU1ESVNDcworCistIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBlbnRyaWVzIGZvciBtZXRhLWRldmljZXMKKworLSBSZW1vdmVkIGNvbXBhdGliaWxpdHkgZW50cmllcyBmb3IgU0NTSSBkaXNjcworCistIENyZWF0ZWQgPGRldmZzX21ha2Vfcm9vdD4KKworLSBSZW1vdmVkIC9kZXYvc2QgaGllcmFyY2h5CisKKy0gU3VwcG9ydCAiLi4vIiB3aGVuIHNlYXJjaGluZyBkZXZmcyBuYW1lc3BhY2UKKworLSBDcmVhdGVkIC9kZXYvaWRlL2hvc3QqIGhpZXJhcmNoeQorCistIFN1cHBvcnRlZCBJREUgaGFyZCBkaXNjcyBpbiAvZGV2L2lkZS9ob3N0KiBoaWVyYXJjaHkKKworLSBSZW1vdmVkIGNvbXBhdGliaWxpdHkgZW50cmllcyBmb3IgSURFIGRpc2NzCisKKy0gUmVtb3ZlZCAvZGV2L2lkZS9oZCBoaWVyYXJjaHkKKworLSBTdXBwb3J0ZWQgSURFIENELVJPTXMgaW4gL2Rldi9pZGUvaG9zdCogaGllcmFyY2h5CisKKy0gUmVtb3ZlZCBjb21wYXRpYmlsaXR5IGVudHJpZXMgZm9yIElERSBDRC1ST01zCisKKy0gUmVtb3ZlZCAvZGV2L2lkZS9jZCBoaWVyYXJjaHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxMzMKKworV29yayBzcG9uc29yZWQgYnkgU0dJCisKKy0gQ3JlYXRlZCA8ZGV2ZnNfZ2V0X3VucmVnaXN0ZXJfc2xhdmU+CisKKy0gRml4ZWQgYnVnIGluIGZzL3BhcnRpdGlvbnMvY2hlY2suYyB3aGVuIHJlc2Nhbm5pbmcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxMzQKKworV29yayBzcG9uc29yZWQgYnkgU0dJCisKKy0gUmVtb3ZlZCAvZGV2L3NkLCAvZGV2L3NyLCAvZGV2L3N0IGFuZCAvZGV2L3NnIGRpcmVjdG9yaWVzCisKKy0gUmVtb3ZlZCAvZGV2L2lkZS9oZCBkaXJlY3RvcnkKKworLSBFeHBvcnRlZCA8ZGV2ZnNfZ2V0X3BhcmVudD4KKworLSBDcmVhdGVkIDxkZXZmc19yZWdpc3Rlcl90YXBlPiBhbmQgL2Rldi90YXBlcyBoaWVyYXJjaHkKKworLSBSZW1vdmVkIC9kZXYvaWRlL210IGhpZXJhcmNoeQorCistIFJlbW92ZWQgL2Rldi9pZGUvZmQgaGllcmFyY2h5CisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjMuMjUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxMzUKKworV29yayBzcG9uc29yZWQgYnkgU0dJCisKKy0gUmVtb3ZlZCBjb21wYXRpYmlsaXR5IGVudHJpZXMgZm9yIHZpcnR1YWwgY29uc29sZSBjYXB0dXJlIGRldmljZXMKKworLSBSZW1vdmVkIHVudXNlZCA8ZGV2ZnNfc2V0X3N5bWxpbmtfZGVzdGluYXRpb24+CisKKy0gUmVtb3ZlZCBjb21wYXRpYmlsaXR5IGVudHJpZXMgZm9yIHNlcmlhbCBkZXZpY2VzCisKKy0gUmVtb3ZlZCBjb21wYXRpYmlsaXR5IGVudHJpZXMgZm9yIGNvbnNvbGUgZGV2aWNlcworCistIERvIG5vdCBoaWRlIGVudHJpZXMgZnJvbSBkZXZmc2Qgb3IgY2hpbGRyZW4KKworLSBSZW1vdmVkIERFVkZTX0ZMX1RUWV9DT01QQVQgZmxhZworCistIFJlbW92ZWQgIm5vdHR5Y29tcGF0IiBib290IG9wdGlvbgorCistIFJlbW92ZWQgPGRldmZzX21rX2NvbXBhdD4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxMzYKKworV29yayBzcG9uc29yZWQgYnkgU0dJCisKKy0gTW92ZWQgQlNEIHB0eSBkZXZpY2VzIHRvIC9kZXYvcHR5CisKKy0gQWRkZWQgREVWRlNfRkxfV0FJVCBmbGFnCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTM3CisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIFJlYWxseSBmaXhlZCBidWcgaW4gZnMvcGFydGl0aW9ucy9jaGVjay5jIHdoZW4gcmVzY2FubmluZworCistIFN1cHBvcnQgbmV3ICJkaXNjIiBuYW1pbmcgc2NoZW1lIGluIDxnZXRfcmVtb3ZhYmxlX3BhcnRpdGlvbj4KKworLSBBbGxvdyBOVUxMIGZvcHMgaW4gPGRldmZzX3JlZ2lzdGVyPgorCistIFJlbW92ZWQgcmVkdW5kYW50IG5hbWUgZnVuY3Rpb25zIGluIFNDU0kgZGlzYyBhbmQgSURFIGRyaXZlcnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxMzgKKworV29yayBzcG9uc29yZWQgYnkgU0dJCisKKy0gRml4ZWQgb2xkIGJ1Z3MgaW4gZHJpdmVycy9ibG9jay9wYXJpZGUvcHQuYywgZHJpdmVycy9jaGFyL3RwcWljMDIuYywKKyAgZHJpdmVycy9uZXQvd2FuL2Nvc2EuYyBhbmQgZHJpdmVycy9zY3NpL3Njc2kuYworICBUaGFua3MgdG8gU2VyZ2V5IEt1YnVzaGluIDxrc2lAa3NpLWxpbnV4LmNvbT4KKworLSBGYWxsIGJhY2sgdG8gbWFqb3IgdGFibGUgaWYgTlVMTCBmb3BzIGdpdmVuIHRvIDxkZXZmc19yZWdpc3Rlcj4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxMzkKKworV29yayBzcG9uc29yZWQgYnkgU0dJCisKKy0gQ29ycmVjdGVkIGFuZCBtb3ZlZCA8Z2V0X2Jsa2ZvcHM+IGFuZCA8Z2V0X2NocmZvcHM+IGRlY2xhcmF0aW9ucworICBmcm9tIGFyY2gvYWxwaGEva2VybmVsL29zZl9zeXMuYyB0byBpbmNsdWRlL2xpbnV4L2ZzLmgKKworLSBSZW1vdmVkIG5hbWUgZnVuY3Rpb24gZnJvbSBzdHJ1Y3QgZ2VuZGlzaworCistIFVwZGF0ZWQgZGV2ZnMgRkFRCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTQwCisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIFBvcnRlZCB0byBrZXJuZWwgMi4zLjI3Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTQxCisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIEJ1ZyBmaXggaW4gYXJjaC9tNjhrL2F0YXJpL2pveXN0aWNrLmMKKworLSBNb3ZlZCBJU0ROIGFuZCBjYXBpIGRldmljZXMgdG8gL2Rldi9pc2RuCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTQyCisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIEJ1ZyBmaXggaW4gZHJpdmVycy9ibG9jay9pZGUtcHJvYmUuYyAocGF0Y2ggY29uZnVzaW9uKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjE0MworCitXb3JrIHNwb25zb3JlZCBieSBTR0kKKworLSBCdWcgZml4IGluIGRyaXZlcnMvYmxvY2svYmxrcGcuYzpwYXJ0aXRpb25fbmFtZSgpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTQ0CisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIFBvcnRlZCB0byBrZXJuZWwgMi4zLjI5CisKKy0gUmVtb3ZlZCBjYWxscyB0byA8ZGV2ZnNfcmVnaXN0ZXI+IGZyb20gY2R1MzFhLCBjbTIwNiwgbWNkIGFuZCBtY2R4CisgIENELVJPTSBkcml2ZXJzOiBnZW5lcmljIGRyaXZlciBoYW5kbGVzIHRoaXMgbm93CisKKy0gTW92ZWQgam95c3RpY2sgZGV2aWNlcyB0byAvZGV2L2pveXN0aWNrcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjE0NQorCitXb3JrIHNwb25zb3JlZCBieSBTR0kKKworLSBQb3J0ZWQgdG8ga2VybmVsIDIuMy4zMC1wcmUzCisKKy0gUmVnaXN0ZXIgd2hvbGUtZGlzYyBlbnRyeSBldmVuIGZvciBpbnZhbGlkIHBhcnRpdGlvbiB0YWJsZXMKKworLSBGaXhlZCBidWcgaW4gbW91bnRpbmcgcm9vdCBGUyB3aGVuIGluaXRyZCBlbmFibGVkCisKKy0gRml4ZWQgZGV2aWNlIGVudHJ5IGxlYWsgd2l0aCBJREUgQ0QtUk9NcworCistIEZpeGVkIGNvbXBpbGUgcHJvYmxlbSB3aXRoIGRyaXZlcnMvaXNkbi9pc2RuX2NvbW1vbi5jCisKKy0gTW92ZWQgQ09TQSBkZXZpY2VzIHRvIC9kZXYvY29zYQorCistIFN1cHBvcnQgZmlmb3Mgd2hlbiB1bnJlZ2lzdGVyaW5nCisKKy0gQ3JlYXRlZCA8ZGV2ZnNfcmVnaXN0ZXJfc2VyaWVzPiBhbmQgdXNlZCBpbiBtYW55IGRyaXZlcnMKKworLSBNb3ZlZCBDb2RhIGRldmljZXMgdG8gL2Rldi9jb2RhCisKKy0gTW92ZWQgcGFyYWxsZWwgcG9ydCBJREUgdGFwZXMgdG8gL2Rldi9wdAorCistIE1vdmVkIHBhcmFsbGVsIHBvcnQgSURFIGdlbmVyaWMgZGV2aWNlcyB0byAvZGV2L3BnCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTQ2CisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIFJlbW92ZWQgb2Jzb2xldGUgREVWRlNfRkxfQ09NUEFUIGFuZCBERVZGU19GTF9UT0xFUkFOVCBmbGFncworCistIEZpeGVkIGNvbXBpbGUgcHJvYmxlbSB3aXRoIGZzL2NvZGEvcHNkZXYuYworCistIFJlaW5zdGF0ZSBjaGFuZ2UgdG8gPGRldmZzX3JlZ2lzdGVyX2Jsa2Rldj4gaW4KKyAgZHJpdmVycy9ibG9jay9pZGUtcHJvYmUuYyBub3cgdGhhdCBmcy9pc29mcy9pbm9kZS5jIGlzIGZpeGVkCisKKy0gU3dpdGNoZWQgdG8gPGRldmZzX3JlZ2lzdGVyX2Jsa2Rldj4gaW4gZHJpdmVycy9ibG9jay9mbG9wcHkuYywKKyAgZHJpdmVycy9zY3NpL3NyLmMgYW5kIGRyaXZlcnMvYmxvY2svbWQuYworCistIE1vdmVkIERBQzk2MCBkZXZpY2VzIHRvIC9kZXYvZGFjOTYwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTQ3CisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIFBvcnRlZCB0byBrZXJuZWwgMi4zLjMyLXByZTQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxNDgKKworV29yayBzcG9uc29yZWQgYnkgU0dJCisKKy0gUmVtb3ZlZCBrbW9kIHN1cHBvcnQ6IHVzZSBkZXZmc2QgaW5zdGVhZAorCistIE1vdmVkIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyIGRldmljZXMgdG8gL2Rldi9taXNjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTQ5CisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIEVuc3VyZSBpbmNsdWRlL2xpbnV4L2pveXN0aWNrLmggaXMgT0sgZm9yIHVzZXItc3BhY2UKKworLSBJbXByb3ZlZCBkZWJ1Z2dpbmcgaW4gPGdldF92ZnNfaW5vZGU+CisKKy0gRW5zdXJlIGRlbnRyaWVzIGNyZWF0ZWQgYnkgZGV2ZnNkIHdpbGwgYmUgY2xlYW5lZCB1cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjE1MAorCitXb3JrIHNwb25zb3JlZCBieSBTR0kKKworLSBQb3J0ZWQgdG8ga2VybmVsIDIuMy4zNAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjE1MQorCitXb3JrIHNwb25zb3JlZCBieSBTR0kKKworLSBQb3J0ZWQgdG8ga2VybmVsIDIuMy4zNS1wcmUxCisKKy0gQ3JlYXRlZCA8ZGV2ZnNfZ2V0X25hbWU+Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTUyCisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIFVwZGF0ZWQgc2FtcGxlIG1vZHVsZXMuY29uZgorCistIFBvcnRlZCB0byBrZXJuZWwgMi4zLjM2LXByZTEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxNTMKKworV29yayBzcG9uc29yZWQgYnkgU0dJCisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjMuNDIKKworLSBSZW1vdmVkIDxkZXZmc19maWxsX2ZpbGU+Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTU0CisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIFRvb2sgYWNjb3VudCBvZiBkZXZpY2UgbnVtYmVyIGNoYW5nZXMgZm9yIC9kZXYvZmIqCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTU1CisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIFBvcnRlZCB0byBrZXJuZWwgMi4zLjQzLXByZTgKKworLSBNb3ZlZCAvZGV2L3R0eTAgdG8gL2Rldi92Yy8wCisKKy0gTW92ZWQgc2VxdWVuY2UgbnVtYmVyIGZvcm1hdHRpbmcgZnJvbSA8X3R0eV9tYWtlX25hbWU+IHRvIGRyaXZlcnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxNTYKKworV29yayBzcG9uc29yZWQgYnkgU0dJCisKKy0gRml4ZWQgYnJlYWthZ2UgaW4gZHJpdmVycy9zY3NpL3NkLmMgZHVlIHRvIHJlY2VudCBTQ1NJIGNoYW5nZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxNTcKKworV29yayBzcG9uc29yZWQgYnkgU0dJCisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjMuNDUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxNTgKKworV29yayBzcG9uc29yZWQgYnkgU0dJCisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjMuNDYtcHJlMgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjE1OQorCitXb3JrIHNwb25zb3JlZCBieSBTR0kKKworLSBGaXhlZCBkcml2ZXJzL2Jsb2NrL21kLmMKKyAgVGhhbmtzIHRvIE1pa2UgR2FsYnJhaXRoIDxtaWtlZ0B3ZWlkZW4uZGU+CisKKy0gRG9jdW1lbnRhdGlvbiBmaXhlcworCistIE1vdmVkIGRldmljZSByZWdpc3RyYXRpb24gZnJvbSA8bHBfaW5pdD4gdG8gPGxwX3JlZ2lzdGVyPgorICBUaGFua3MgdG8gVGltIFdhdWdoIDx0d2F1Z2hAcmVkaGF0LmNvbT4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxNjAKKworV29yayBzcG9uc29yZWQgYnkgU0dJCisKKy0gRml4ZWQgZHJpdmVycy9jaGFyL2pveXN0aWNrL2pveXN0aWNrLmMKKyAgVGhhbmtzIHRvIFZvanRlY2ggUGF2bGlrIDx2b2p0ZWNoQHN1c2UuY3o+CisKKy0gRG9jdW1lbnRhdGlvbiB1cGRhdGVzCisKKy0gRml4ZWQgYXJjaC9pMzg2L2tlcm5lbC9tdHJyLmMgaWYgcHJvY2ZzIGFuZCBkZXZmcyBub3QgZW5hYmxlZAorCistIEZpeGVkIGRyaXZlcnMvY2hhci9zdGFsbGlvbi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTYxCisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIFJlbW92ZSAvZGV2L2lkZSB3aGVuIGlkZS1tb2QgaXMgdW5sb2FkZWQKKworLSBGaXhlZCBidWcgaW4gZHJpdmVycy9ibG9jay9pZGUtcHJvYmUuYyB3aGVuIHNlY29uZGFyeSBidXQgbm8gcHJpbWFyeQorCistIEFkZGVkIERFVkZTX0ZMX05PX1BFUlNJU1RFTkNFIGZsYWcKKworLSBVc2VkIG5ldyBERVZGU19GTF9OT19QRVJTSVNURU5DRSBmbGFnIGZvciBVbml4OTggcHR5IHNsYXZlcworCistIFJlbW92ZWQgdW5uZWNlc3NhcnkgY2FsbCB0byA8dXBkYXRlX2RldmZzX2lub2RlX2Zyb21fZW50cnk+IGluCisgIDxkZXZmc19yZWFkZGlyPgorCistIE9ubHkgc2V0IGF1dG8tb3duZXJzaGlwIGZvciAvZGV2L3B0eS9zKgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjE2MgorCitXb3JrIHNwb25zb3JlZCBieSBTR0kKKworLSBTZXQgaW5vZGUtPmlfc2l6ZSB0byBjb3JyZWN0IHNpemUgZm9yIHN5bWxpbmtzCisgIFRoYW5rcyB0byBKZXJlbXkgRml0emhhcmRpbmdlIDxqZXJlbXlAZ29vcC5vcmc+CisKKy0gT25seSBnaXZlIGxvb2t1cCgpIG1ldGhvZCB0byBkaXJlY3RvcmllcyB0byBjb21wbHkgd2l0aCBuZXcgVkZTCisgIGFzc3VtcHRpb25zCisKKy0gUmVtb3ZlIHVubmVjZXNzYXJ5IHRlc3RzIGluIHN5bWxpbmsgbWV0aG9kcworCistIERvbid0IGtpbGwgZXhpc3RpbmcgYmxvY2sgb3BzIGluIDxkZXZmc19yZWFkX2lub2RlPgorCistIFJlc3RvcmUgYXV0by1vd25lcnNoaXAgZm9yIC9kZXYvcHR5L20qCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTYzCisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIERvbid0IGNyZWF0ZSBtaXNzaW5nIGRpcmVjdG9yaWVzIGluIDxkZXZmc19maW5kX2hhbmRsZT4KKworLSBSZW1vdmVkIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZGV2ZnMvbWstZGV2bGlua3MKKworLSBVcGRhdGVkIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZGV2ZnMvUkVBRE1FCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTY0CisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIEZpeGVkIENPTkZJR19ERVZGUyBicmVha2FnZSBpbiBkcml2ZXJzL2NoYXIvc2VyaWFsLmMgaW50cm9kdWNlZCBpbgorICBsaW51eC0yLjMuOTktcHJlNi03Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTY1CisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIFBvcnRlZCB0byBrZXJuZWwgMi4zLjk5LXByZTYKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxNjYKKworV29yayBzcG9uc29yZWQgYnkgU0dJCisKKy0gQWRkZWQgQ09ORklHX0RFVkZTX01PVU5UCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTY3CisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIFVwZGF0ZWQgRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9kZXZmcy9SRUFETUUKKworLSBVcGRhdGVkIHNhbXBsZSBtb2R1bGVzLmNvbmYKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxNjgKKworV29yayBzcG9uc29yZWQgYnkgU0dJCisKKy0gRGlzYWJsZWQgbXVsdGktbW91bnQgY2FwYWJpbGl0eSAodXNlIFZGUyBiaW5kaW5ncyBpbnN0ZWFkKQorCistIFVwZGF0ZWQgUkVBRE1FIGZyb20gbWFzdGVyIEhUTUwgZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjE2OQorCitXb3JrIHNwb25zb3JlZCBieSBTR0kKKworLSBSZW1vdmVkIG11bHRpLW1vdW50IGNvZGUKKworLSBSZW1vdmVkIGNvbXBhdGliaWxpdHkgbWFjcm9zOiBWRlMgaGFzIGNoYW5nZWQgdG9vIG11Y2gKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxNzAKKworV29yayBzcG9uc29yZWQgYnkgU0dJCisKKy0gVXBkYXRlZCBSRUFETUUgZnJvbSBtYXN0ZXIgSFRNTCBmaWxlCisKKy0gTWVyZ2VkIGRldmZzIGlub2RlIGludG8gZGV2ZnMgZW50cnkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxNzEKKworV29yayBzcG9uc29yZWQgYnkgU0dJCisKKy0gVXBkYXRlZCBzYW1wbGUgbW9kdWxlcy5jb25mCisKKy0gUmVtb3ZlZCBkZWFkIGNvZGUgaW4gPGRldmZzX3JlZ2lzdGVyPiB3aGljaCB1c2VkIHRvIGNhbGwKKyAgPGZyZWVfZGVudHJpZXM+CisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjQuMC10ZXN0Mi1wcmUzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTcyCisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIENoYW5nZWQgaW50ZXJmYWNlIHRvIDxkZXZmc19yZWdpc3Rlcj4KKworLSBDaGFuZ2VkIGludGVyZmFjZSB0byA8ZGV2ZnNfcmVnaXN0ZXJfc2VyaWVzPgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjE3MworCitXb3JrIHNwb25zb3JlZCBieSBTR0kKKworLSBTaW1wbGlmaWVkIGludGVyZmFjZSB0byA8ZGV2ZnNfbWtfc3ltbGluaz4KKworLSBTaW1wbGlmaWVkIGludGVyZmFjZSB0byA8ZGV2ZnNfbWtfZGlyPgorCistIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIDxkZXZmc19maW5kX2hhbmRsZT4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxNzQKKworV29yayBzcG9uc29yZWQgYnkgU0dJCisKKy0gVXBkYXRlZCBSRUFETUUgZnJvbSBtYXN0ZXIgSFRNTCBmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTc1CisKK1dvcmsgc3BvbnNvcmVkIGJ5IFNHSQorCistIERvY0Jvb2sgdXBkYXRlIGZvciBmcy9kZXZmcy9iYXNlLmMKKyAgVGhhbmtzIHRvIFRpbSBXYXVnaCA8dHdhdWdoQHJlZGhhdC5jb20+CisKKy0gUmVtb3ZlZCBzdGFsZSBmcy90dW5uZWwuYyAod2FzIG5ldmVyIHVzZWQgb3IgY29tcGxldGVkKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjE3NgorCitXb3JrIHNwb25zb3JlZCBieSBTR0kKKworLSBVcGRhdGVkIFRvRG8gbGlzdAorCistIFJlbW92ZWQgc2FtcGxlIG1vZHVsZXMuY29uZjogbm93IGRpc3RyaWJ1dGVkIHdpdGggZGV2ZnNkCisKKy0gVXBkYXRlZCBSRUFETUUgZnJvbSBtYXN0ZXIgSFRNTCBmaWxlCisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjQuMC10ZXN0My1wcmU0ICh3aGljaCBoYWQgZGV2ZnMtcGF0Y2gtdjE3NCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxNzcKKworLSBVcGRhdGVkIFJFQURNRSBmcm9tIG1hc3RlciBIVE1MIGZpbGUKKworLSBEb2N1bWVudGF0aW9uIGNsZWFudXBzCisKKy0gRW5zdXJlIDxkZXZmc19nZW5lcmF0ZV9wYXRoPiB0ZXJtaW5hdGVzIHN0cmluZyBmb3Igcm9vdCBlbnRyeQorICBUaGFua3MgdG8gVGltIEphbnNlbiA8dGltQHRqYW5zZW4uZGU+CisKKy0gRXhwb3J0ZWQgPGRldmZzX2dldF9uYW1lPiB0byBtb2R1bGVzCisKKy0gTWFrZSA8ZGV2ZnNfbWtfc3ltbGluaz4gc2VuZCBldmVudHMgdG8gZGV2ZnNkCisKKy0gQ2xlYW5lZCB1cCBvcHRpb24gcHJvY2Vzc2luZyBpbiA8ZGV2ZnNfc2V0dXA+CisKKy0gRml4ZWQgYnVncyBpbiBoYW5kbGluZyBzeW1saW5rczogY291bGQgbGVhayBvciBjYXVzZSBPb3BzCisKKy0gQ2xlYW5lZCB1cCBkaXJlY3RvcnkgaGFuZGxpbmcgYnkgc2VwYXJhdGluZyBmb3BzCisgIFRoYW5rcyB0byBBbGV4YW5kZXIgVmlybyA8dmlyb0BwYXJjZWxmYXJjZS5saW51eC50aGVwbGFuZXQuY28udWs+Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTc4CisKKy0gRml4ZWQgaGFuZGxpbmcgb2YgaW52ZXJ0ZWQgb3B0aW9ucyBpbiA8ZGV2ZnNfc2V0dXA+Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTc5CisKKy0gQWRqdXN0ZWQgPHRyeV9tb2Rsb2FkPiB0byBhY2NvdW50IGZvciA8ZGV2ZnNfZ2VuZXJhdGVfcGF0aD4gZml4Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTgwCisKKy0gRml4ZWQgIUNPTkZJR19ERVZGU19GUyBzdHViIGRlY2xhcmF0aW9uIG9mIDxkZXZmc19nZXRfaW5mbz4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxODEKKworLSBBbnN3ZXJlZCBxdWVzdGlvbiBwb3NlZCBieSBBbCBWaXJvIGFuZCByZW1vdmVkIGhpcyBjb21tZW50cyBmcm9tIDxkZXZmc19vcGVuPgorCistIE1vdmVkIHNldHRpbmcgb2YgcmVnaXN0ZXJlZCBmbGFnIGFmdGVyIG90aGVyIGZpZWxkcyBhcmUgY2hhbmdlZAorCistIEZpeGVkIHJhY2UgYmV0d2VlbiA8ZGV2ZnNkX2Nsb3NlPiBhbmQgPGRldmZzZF9ub3RpZnlfb25lPgorCistIEdsb2JhbCBWRlMgY2hhbmdlcyBhZGRlZCBib2d1cyBCS0wgdG8gZGV2ZnNkX2Nsb3NlKCk6IHJlbW92ZWQKKworLSBXaWRlbmVkIGxvY2tpbmcgaW4gPGRldmZzX3JlYWRsaW5rPiBhbmQgPGRldmZzX2ZvbGxvd19saW5rPgorCistIFJlcGxhY2VkIDxkZXZmc2RfcmVhZD4gc3RhY2sgdXNhZ2Ugd2l0aCA8ZGV2ZnNkX2lvY3RsPiBrbWFsbG9jCisKKy0gU2ltcGxpZmllZCBsb2NraW5nIGluIDxkZXZmc2RfaW9jdGw+IGFuZCBmaXhlZCBtZW1vcnkgbGVhaworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjE4MgorCistIENyZWF0ZWQgPGRldmZzXyphbGxvY19tYWpvcj4gYW5kIDxkZXZmc18qYWxsb2NfZGV2bnVtPgorCistIFJlbW92ZWQgYnJva2VuIGRldm51bSBhbGxvY2F0aW9uIGFuZCB1c2UgPGRldmZzX2FsbG9jX2Rldm51bT4KKworLSBGaXhlZCBvbGQgZGV2bnVtIGxlYWsgYnkgY2FsbGluZyBuZXcgPGRldmZzX2RlYWxsb2NfZGV2bnVtPgorCistIENyZWF0ZWQgPGRldmZzXyphbGxvY191bmlxdWVfbnVtYmVyPgorCistIEZpeGVkIG51bWJlciBsZWFrIGZvciAvZGV2L2Nkcm9tcy9jZHJvbSVkCisKKy0gRml4ZWQgbnVtYmVyIGxlYWsgZm9yIC9kZXYvZGlzY3MvZGlzYyVkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTgzCisKKy0gRml4ZWQgYnVnIGluIDxkZXZmc19zZXR1cD4gd2hpY2ggY291bGQgaGFuZyBib290IHByb2Nlc3MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxODQKKworLSBEb2N1bWVudGF0aW9uIHR5cG8gZml4IGZvciBmcy9kZXZmcy91dGlsLmMKKworLSBGaXhlZCBkcml2ZXJzL2NoYXIvc3RhbGxpb24uYyBmb3IgZGV2ZnMKKworLSBBZGRlZCBERVZGU0RfTk9USUZZX0RFTEVURSBldmVudAorCistIFVwZGF0ZWQgUkVBRE1FIGZyb20gbWFzdGVyIEhUTUwgZmlsZQorCistIFJlbW92ZWQgI2luY2x1ZGUgPGFzbS9zZWdtZW50Lmg+IGZyb20gZnMvZGV2ZnMvYmFzZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTg1CisKKy0gTWFkZSA8YmxvY2tfc2VtYXBob3JlPiBhbmQgPGNoYXJfc2VtYXBob3JlPiBpbiBmcy9kZXZmcy91dGlsLmMKKyAgcHJpdmF0ZQorCistIEZpeGVkIGlub2RlIHRhYmxlIHJhY2VzIGJ5IHJlbW92aW5nIGl0IGFuZCB1c2luZyBpbm9kZS0+dS5nZW5lcmljX2lwCisgIGluc3RlYWQKKworLSBNb3ZlZCA8ZGV2ZnNfcmVhZF9pbm9kZT4gaW50byA8Z2V0X3Zmc19pbm9kZT4KKworLSBNb3ZlZCA8ZGV2ZnNfd3JpdGVfaW5vZGU+IGludG8gPGRldmZzX25vdGlmeV9jaGFuZ2U+Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTg2CisKKy0gRml4ZWQgcmFjZSBpbiA8ZGV2ZnNfZG9fc3ltbGluaz4gZm9yIHVuaS1wcm9jZXNzb3IKKworLSBVcGRhdGVkIFJFQURNRSBmcm9tIG1hc3RlciBIVE1MIGZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxODcKKworLSBGaXhlZCBkcml2ZXJzL2NoYXIvc3RhbGxpb24uYyBmb3IgZGV2ZnMKKworLSBGaXhlZCBkcml2ZXJzL2NoYXIvcm9ja2V0LmMgZm9yIGRldmZzCisKKy0gRml4ZWQgYnVnIGluIDxkZXZmc19hbGxvY191bmlxdWVfbnVtYmVyPjogbGltaXRlZCB0byAxMjggbnVtYmVycworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjE4OAorCistIFVwZGF0ZWQgbWFqb3IgbWFza3MgaW4gZnMvZGV2ZnMvdXRpbC5jIHVwIHRvIExpbnVzJyAibm8gbmV3IG1ham9ycyIKKyAgcHJvY2xhbWF0aW9uLiBCbG9jazogd2VyZSAxMjYgbm93IDEyMiBmcmVlLCBjaGFyOiB3ZXJlIDI2IG5vdyAxOSBmcmVlCisKKy0gVXBkYXRlZCBSRUFETUUgZnJvbSBtYXN0ZXIgSFRNTCBmaWxlCisKKy0gUmVtb3ZlZCByZW1uYW50IG9mIG11bHRpLW1vdW50IHN1cHBvcnQgaW4gPGRldmZzX21rbm9kPgorCistIFJlbW92ZWQgdW51c2VkIERFVkZTX0ZMX1NIT1dfVU5SRUcgZmxhZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjE4OQorCistIFJlbW92ZWQgbmxpbmsgZmllbGQgZnJvbSBzdHJ1Y3QgZGV2ZnNfaW5vZGUKKworLSBSZW1vdmVkIGF1dG8tb3duZXJzaGlwIGZvciAvZGV2L3B0eS8qIChCU0QgcHR5cykgYW5kIHVzZWQKKyAgREVWRlNfRkxfQ1VSUkVOVF9PV05FUnxERVZGU19GTF9OT19QRVJTSVNURU5DRSBmb3IgL2Rldi9wdHkvcyogKGp1c3QKKyAgbGlrZSBVbml4OTggcHR5IHNsYXZlcykgYW5kIG1hZGUgL2Rldi9wdHkvbSogcnctcnctcnctIGFjY2VzcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjE5MAorCistIFVwZGF0ZWQgUkVBRE1FIGZyb20gbWFzdGVyIEhUTUwgZmlsZQorCistIFJlcGxhY2VkIEJLTCB3aXRoIGdsb2JhbCByd3NlbSB0byBwcm90ZWN0IHN5bWxpbmsgZGF0YSAocXVpY2sgYW5kCisgIGRpcnR5IGhhY2spCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTkxCisKKy0gUmVwbGFjZWQgZ2xvYmFsIHJ3c2VtIGZvciBzeW1saW5rIHdpdGggcGVyLWxpbmsgcmVmY291bnQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxOTIKKworLSBSZW1vdmVkIHVubmVjZXNzYXJ5ICNpZmRlZiBDT05GSUdfREVWRlNfRlMgZnJvbSBhcmNoL2kzODYva2VybmVsL210cnIuYworCistIFBvcnRlZCB0byBrZXJuZWwgMi40LjEwLXByZTExCisKKy0gU2V0IGlub2RlLT5pX21hcHBpbmctPmFfb3BzIGZvciBibG9jayBub2RlcyBpbiA8Z2V0X3Zmc19pbm9kZT4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxOTMKKworLSBXZW50IGJhY2sgdG8gZ2xvYmFsIHJ3c2VtIGZvciBzeW1saW5rcyAocmVmY291bnQgc2NoZW1lIG5vIGdvb2QpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTk0CisKKy0gRml4ZWQgb3ZlcnJ1biBpbiA8ZGV2ZnNfbGluaz4gYnkgcmVtb3ZpbmcgZnVuY3Rpb24gKG5vdCBuZWVkZWQpCisKKy0gVXBkYXRlZCBSRUFETUUgZnJvbSBtYXN0ZXIgSFRNTCBmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTk1CisKKy0gRml4ZWQgYnVmZmVyIHVuZGVycnVuIGluIDx0cnlfbW9kbG9hZD4KKworLSBNb3ZlZCBkb3duX3JlYWQoKSBmcm9tIDxzZWFyY2hfZm9yX2VudHJ5X2luX2Rpcj4gdG8gPGZpbmRfZW50cnk+Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTk2CisKKy0gRml4ZWQgcmFjZSBpbiA8ZGV2ZnNkX2lvY3RsPiB3aGVuIHNldHRpbmcgZXZlbnQgbWFzaworICBUaGFua3MgdG8gS2FyaSBIdXJ0dGEgPGh1cnR0YUBsZWlqYS5taC5mbWkuZmk+CisKKy0gQXZvaWQgZGVhZGxvY2sgaW4gPGRldmZzX2ZvbGxvd19saW5rPiBieSB1c2luZyB0ZW1wb3JhcnkgYnVmZmVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTk3CisKKy0gRmlyc3QgcmVsZWFzZSBvZiBuZXcgbG9ja2luZyBjb2RlIGZvciBkZXZmcyBjb3JlICh2MS4wKQorCistIEZpeGVkIGJ1ZyBpbiBkcml2ZXJzL2Nkcm9tL2Nkcm9tLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYxOTgKKworLSBEaXNjYXJkIHRlbXBvcmFyeSBidWZmZXIsIG5vdyB1c2UgIiVzIiBmb3IgZGVudHJ5IG5hbWVzCisKKy0gRG9uJ3QgZ2VuZXJhdGUgcGF0aCBpbiA8dHJ5X21vZGxvYWQ+OiB1c2UgZmFrZSBlbnRyeSBpbnN0ZWFkCisKKy0gVXNlICJleGlzdGluZyIgZGlyZWN0b3J5IGluIDxfZGV2ZnNfbWFrZV9wYXJlbnRfZm9yX2xlYWY+CisKKy0gVXNlIHNsYWIgY2FjaGUgcmF0aGVyIHRoYW4gZml4ZWQgYnVmZmVyIGZvciBkZXZmc2QgZXZlbnRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MTk5CisKKy0gUmVtb3ZlZCBvYnNvbGV0ZSB1c2FnZSBvZiBERVZGU19GTF9OT19QRVJTSVNURU5DRQorCistIFNlbmQgREVWRlNEX05PVElGWV9SRUdJU1RFUkVEIGV2ZW50cyBpbiA8ZGV2ZnNfbWtfZGlyPgorCistIEZpeGVkIGxvY2tpbmcgYnVnIGluIDxkZXZmc19kX3JldmFsaWRhdGVfd2FpdD4gZHVlIHRvIHR5cG8KKworLSBEbyBub3Qgc2VuZCBDUkVBVEUsIENIQU5HRSwgQVNZTkNfT1BFTiBvciBERUxFVEUgZXZlbnRzIGZyb20gZGV2ZnNkCisgIG9yIGNoaWxkcmVuCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MjAwCisKKy0gUG9ydGVkIHRvIGtlcm5lbCAyLjUuMS1wcmUyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MjAxCisKKy0gRml4ZWQgYnVnIGluIDxkZXZmc2RfcmVhZD46IHdhcyBkZXJlZmVyZW5jaW5nIGZyZWVkIHBvaW50ZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYyMDIKKworLSBGaXhlZCBidWcgaW4gPGRldmZzZF9jbG9zZT46IHdhcyBkZXJlZmVyZW5jaW5nIGZyZWVkIHBvaW50ZXIKKworLSBBZGRlZCBwcm9jZXNzIGdyb3VwIGNoZWNrIGZvciBkZXZmc2QgcHJpdmlsZWdlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjIwMworCistIFVzZSBTTEFCX0FUT01JQyBpbiA8ZGV2ZnNkX25vdGlmeV9kZT4gZnJvbSA8ZGV2ZnNfZF9kZWxldGU+Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MjA0CisKKy0gUmVtb3ZlZCBsb25nIG9ic29sZXRlIHJjLmRldmZzCisKKy0gUmV0dXJuIG9sZCBlbnRyeSBpbiA8ZGV2ZnNfbWtfZGlyPiBmb3IgMi40Lngga2VybmVscworCistIFVwZGF0ZWQgUkVBRE1FIGZyb20gbWFzdGVyIEhUTUwgZmlsZQorCistIEluY3JlbWVudCByZWZjb3VudCBvbiBtb2R1bGUgaW4gPGNoZWNrX2Rpc2NfY2hhbmdlZD4KKworLSBDcmVhdGVkIDxkZXZmc19nZXRfaGFuZGxlPiBhbmQgZXhwb3J0ZWQgPGRldmZzX3B1dD4KKworLSBJbmNyZW1lbnQgcmVmY291bnQgb24gbW9kdWxlIGluIDxkZXZmc19nZXRfb3BzPgorCistIENyZWF0ZWQgPGRldmZzX3B1dF9vcHM+IGFuZCB1c2VkIHdoZXJlIG5lZWRlZCB0byBmaXggcmFjZXMKKworLSBBZGRlZCBjbGFyaWZ5aW5nIGNvbW1lbnRzIGluIHJlc3BvbnNlIHRvIHByZWxpbWluYXJ5IEVNQyBjb2RlIHJldmlldworCistIEFkZGVkIHBvaXNvbmluZyB0byA8ZGV2ZnNfcHV0PgorCistIEltcHJvdmVkIGRlYnVnZ2luZyBtZXNzYWdlcworCistIEZpeGVkIHVucmVnaXN0ZXIgYnVncyBpbiBkcml2ZXJzL21kL2x2bS1mcy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MjA1CisKKy0gQ29ycmVjdGVkIChtYWRlIHVzZWZ1bCkgZGVidWdnaW5nIG1lc3NhZ2UgaW4gPHVucmVnaXN0ZXI+CisKKy0gTW92ZWQgPGttZW1fY2FjaGVfY3JlYXRlPiBpbiA8bW91bnRfZGV2ZnNfZnM+IHRvIDxpbml0X2RldmZzX2ZzPgorCistIEZpeGVkIGRyaXZlcnMvbWQvbHZtLWZzLmMgdG8gY3JlYXRlICJsdm0iIGVudHJ5CisKKy0gQWRkZWQgbWFnaWMgbnVtYmVyIHRvIGd1YXJkIGFnYWluc3Qgc2NyaWJibGluZyBkcml2ZXJzCisKKy0gT25seSByZXR1cm4gb2xkIGVudHJ5IGluIDxkZXZmc19ta19kaXI+IGlmIGEgZGlyZWN0b3J5CisKKy0gRGVmaW5lZCBtYWNyb3MgZm9yIGVycm9yIGFuZCBkZWJ1ZyBtZXNzYWdlcworCistIFVwZGF0ZWQgUkVBRE1FIGZyb20gbWFzdGVyIEhUTUwgZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjIwNgorCistIEFkZGVkIHN1cHBvcnQgZm9yIG11bHRpcGxlIENvbXBhcSBjcHFhcnJheSBjb250cm9sbGVycworCistIEZpeGVkIChyYXJlLCBvbGQpIHJhY2UgaW4gPGRldmZzX2xvb2t1cD4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYyMDcKKworLSBGaXhlZCBkZWFkbG9jayBidWcgaW4gPGRldmZzX2RfcmV2YWxpZGF0ZV93YWl0PgorCistIFRhZyBWRlMgZGVsZXRhYmxlIGluIDxkZXZmc19ta19zeW1saW5rPiBpZiBoYW5kbGUgaWdub3JlZAorCistIFVwZGF0ZWQgUkVBRE1FIGZyb20gbWFzdGVyIEhUTUwgZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjIwOAorCistIEFkZGVkIEtFUk5fKiB0byByZW1haW5pbmcgbWVzc2FnZXMKKworLSBDbGVhbmVkIHVwIGRlY2xhcmF0aW9uIG9mIDxzdGF0X3JlYWQ+CisKKy0gVXBkYXRlZCBSRUFETUUgZnJvbSBtYXN0ZXIgSFRNTCBmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MjA5CisKKy0gVXBkYXRlZCBSRUFETUUgZnJvbSBtYXN0ZXIgSFRNTCBmaWxlCisKKy0gUmVtb3ZlZCBzaWxlbnRseSBpbnRyb2R1Y2VkIGNhbGxzIHRvIGxvY2tfa2VybmVsKCkgYW5kCisgIHVubG9ja19rZXJuZWwoKSBkdWUgdG8gcmVjZW50IFZGUyBsb2NraW5nIGNoYW5nZXMuIEJLTCBpc24ndAorICByZXF1aXJlZCBpbiBkZXZmcyAKKworLSBDaGFuZ2VkIDxkZXZmc19ybWRpcj4gdG8gYWxsb3cgbGF0ZXIgYWRkaXRpb25zIGlmIG5vdCB5ZXQgZW1wdHkKKworLSBBZGRlZCBjYWxscyB0byA8ZGV2ZnNfcmVnaXN0ZXJfcGFydGl0aW9ucz4gaW4gZHJpdmVycy9ibG9jay9ibGtwYy5jCisgIDxhZGRfcGFydGl0aW9uPiBhbmQgPGRlbF9wYXJ0aXRpb24+CisKKy0gRml4ZWQgYnVnIGluIDxkZXZmc19hbGxvY191bmlxdWVfbnVtYmVyPjogd2FzIGNsZWFyaW5nIGJleW9uZAorICBiaXRmaWVsZAorCistIEZpeGVkIGJpdGZpZWxkIGRhdGEgdHlwZSBmb3IgPGRldmZzXyphbGxvY19kZXZudW0+CisKKy0gTWFkZSBtYWpvciBiaXRmaWVsZCB0eXBlIGFuZCBpbml0aWFsaXNlciA2NCBiaXQgc2FmZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjIxMAorCistIFVwZGF0ZWQgZnMvZGV2ZnMvdXRpbC5jIHRvIGZpeCBzaGlmdCB3YXJuaW5nIG9uIDY0IGJpdCBtYWNoaW5lcworICBUaGFua3MgdG8gQW50b24gQmxhbmNoYXJkIDxhbnRvbkBzYW1iYS5vcmc+CisKKy0gVXBkYXRlZCBSRUFETUUgZnJvbSBtYXN0ZXIgSFRNTCBmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MjExCisKKy0gRG8gbm90IHB1dCBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlciBkZXZpY2VzIGluIC9kZXYvbWlzYyBpZiB0aGV5CisgIHNwZWNpZnkgdGhlaXIgb3duIGRpcmVjdG9yeSAoaS5lLiBjb250YWluIGEgJy8nIGNoYXJhY3RlcikKKworLSBDb3BpZWQgbWFjcm8gZm9yIGVycm9yIG1lc3NhZ2VzIGZyb20gZnMvZGV2ZnMvYmFzZS5jIHRvCisgIGZzL2RldmZzL3V0aWwuYyBhbmQgbWFkZSB1c2Ugb2YgdGhpcyBtYWNybworCistIFJlbW92ZWQgMi40LnggY29tcGF0aWJpbGl0eSBjb2RlIGZyb20gZnMvZGV2ZnMvYmFzZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MjEyCisKKy0gQWRkZWQgQktMIHRvIDxkZXZmc19vcGVuPiBiZWNhdXNlIGRyaXZlcnMgc3RpbGwgbmVlZCBpdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjIxMworCistIFByb3RlY3RlZCA8c2Nhbl9kaXJfZm9yX3JlbW92YWJsZT4gYW5kIDxnZXRfcmVtb3ZhYmxlX3BhcnRpdGlvbj4KKyAgZnJvbSBjaGFuZ2luZyBkaXJlY3RvcnkgY29udGVudHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYyMTQKKworLSBTd2l0Y2hlZCB0byBJU08gQyBzdHJ1Y3R1cmUgZmllbGQgaW5pdGlhbGlzZXJzCisKKy0gU3dpdGNoIHRvIHNldF9jdXJyZW50X3N0YXRlKCkgYW5kIG1vdmUgYmVmb3JlIGFkZF93YWl0X3F1ZXVlKCkKKworLSBVcGRhdGVkIFJFQURNRSBmcm9tIG1hc3RlciBIVE1MIGZpbGUKKworLSBGaXhlZCBkZXZmcyBlbnRyeSBsZWFrIGluIDxkZXZmc19yZWFkZGlyPiB3aGVuICpyZWFkZGlyIGZhaWxzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDaGFuZ2VzIGZvciBwYXRjaCB2MjE1CisKKy0gQ3JlYXRlZCA8ZGV2ZnNfZmluZF9hbmRfdW5yZWdpc3Rlcj4KKworLSBTd2l0Y2hlZCBtYW55IGZ1bmN0aW9ucyBmcm9tIDxkZXZmc19maW5kX2hhbmRsZT4gdG8KKyAgPGRldmZzX2ZpbmRfYW5kX3VucmVnaXN0ZXI+CisKKy0gU3dpdGNoZWQgbWFueSBmdW5jdGlvbnMgZnJvbSA8ZGV2ZnNfZmluZF9oYW5kbGU+IHRvIDxkZXZmc19nZXRfaGFuZGxlPgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjIxNgorCistIFN3aXRjaGVkIGFyY2gvaWE2NC9zbi9pby9oY2wuYyBmcm9tIDxkZXZmc19maW5kX2hhbmRsZT4gdG8KKyAgPGRldmZzX2dldF9oYW5kbGU+CisKKy0gUmVtb3ZlZCBkZXByZWNhdGVkIDxkZXZmc19maW5kX2hhbmRsZT4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYW5nZXMgZm9yIHBhdGNoIHYyMTcKKworLSBFeHBvcnRlZCA8ZGV2ZnNfZmluZF9hbmRfdW5yZWdpc3Rlcj4gYW5kIDxkZXZmc19vbmx5PiB0byBtb2R1bGVzCisKKy0gVXBkYXRlZCBSRUFETUUgZnJvbSBtYXN0ZXIgSFRNTCBmaWxlCisKKy0gRml4ZWQgbW9kdWxlIHVubG9hZCByYWNlIGluIDxkZXZmc19vcGVuPgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhbmdlcyBmb3IgcGF0Y2ggdjIxOAorCistIFJlbW92ZWQgREVWRlNfRkxfQVVUT19PV05FUiBmbGFnCisKKy0gU3dpdGNoZWQgbGluZ2VyaW5nIHN0cnVjdHVyZSBmaWVsZCBpbml0aWFsaXNlciB0byBJU08gQworCistIEFkZGVkIGxvY2tpbmcgd2hlbiBzZXR0aW5nL2NsZWFyaW5nIGZsYWdzCisKKy0gRG9jdW1lbnRhdGlvbiBmaXggaW4gZnMvZGV2ZnMvdXRpbC5jCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2RldmZzL1JFQURNRSBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZGV2ZnMvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MzY2ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2RldmZzL1JFQURNRQpAQCAtMCwwICsxLDE5NjQgQEAKK0RldmZzIChEZXZpY2UgRmlsZSBTeXN0ZW0pIEZBUQorCisKK0xpbnV4IERldmZzIChEZXZpY2UgRmlsZSBTeXN0ZW0pIEZBUQorUmljaGFyZCBHb29jaAorMjAtQVVHLTIwMDIKKworCitEb2N1bWVudCBsYW5ndWFnZXM6CisKKworCisKKworCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05PVEU6IHRoZSBtYXN0ZXIgY29weSBvZiB0aGlzIGRvY3VtZW50IGlzIGF2YWlsYWJsZSBvbmxpbmUgYXQ6CisKK2h0dHA6Ly93d3cuYXRuZi5jc2lyby5hdS9+cmdvb2NoL2xpbnV4L2RvY3MvZGV2ZnMuaHRtbAorYW5kIGxvb2tzIG11Y2ggYmV0dGVyIHRoYW4gdGhlIHRleHQgdmVyc2lvbiBkaXN0cmlidXRlZCB3aXRoIHRoZQora2VybmVsIHNvdXJjZXMuIEEgbWlycm9yIHNpdGUgaXMgYXZhaWxhYmxlIGF0OgorCitodHRwOi8vd3d3LnJhcy51Y2FsZ2FyeS5jYS9+cmdvb2NoL2xpbnV4L2RvY3MvZGV2ZnMuaHRtbAorCitUaGVyZSBpcyBhbHNvIGFuIG9wdGlvbmFsIGRhZW1vbiB0aGF0IG1heSBiZSB1c2VkIHdpdGggZGV2ZnMuIFlvdSBjYW4KK2ZpbmQgb3V0IG1vcmUgYWJvdXQgaXQgYXQ6CisKK2h0dHA6Ly93d3cuYXRuZi5jc2lyby5hdS9+cmdvb2NoL2xpbnV4LworCitBIG1haWxpbmcgbGlzdCBpcyBhdmFpbGFibGUgd2hpY2ggeW91IG1heSBzdWJzY3JpYmUgdG8uIFNlbmQKK2VtYWlsCit0byBtYWpvcmRvbW9Ab3NzLnNnaS5jb20gd2l0aCB0aGUgZm9sbG93aW5nIGxpbmUgaW4gdGhlCitib2R5IG9mIHRoZSBtZXNzYWdlOgorc3Vic2NyaWJlIGRldmZzCitUbyB1bnN1YnNjcmliZSwgc2VuZCB0aGUgbWVzc2FnZSBib2R5OgordW5zdWJzY3JpYmUgZGV2ZnMKK2luc3RlYWQuIFRoZSBsaXN0IGlzIGFyY2hpdmVkIGF0CisKK2h0dHA6Ly9vc3Muc2dpLmNvbS9wcm9qZWN0cy9kZXZmcy9hcmNoaXZlLy4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29udGVudHMKKworCitXaGF0IGlzIGl0PworCitXaHkgZG8gaXQ/CisKK1dobyBlbHNlIGRvZXMgaXQ/CisKK0hvdyBpdCB3b3JrcworCitPcGVyYXRpb25hbCBpc3N1ZXMgKGVzc2VudGlhbCByZWFkaW5nKQorCitJbnN0cnVjdGlvbnMgZm9yIHRoZSBpbXBhdGllbnQKK1Blcm1pc3Npb25zIHBlcnNpc3RlbmNlIGFjcm9zcyByZWJvb3RzCitEZWFsaW5nIHdpdGggZHJpdmVycyB3aXRob3V0IGRldmZzIHN1cHBvcnQKK0FsbCB0aGUgd2F5IHdpdGggRGV2ZnMKK090aGVyIElzc3VlcworS2VybmVsIE5hbWluZyBTY2hlbWUKK0RldmZzZCBOYW1pbmcgU2NoZW1lCitPbGQgQ29tcGF0aWJpbGl0eSBOYW1lcworU0NTSSBIb3N0IFByb2JpbmcgSXNzdWVzCisKKworCitEZXZpY2UgZHJpdmVycyBjdXJyZW50bHkgcG9ydGVkCisKK0FsbG9jYXRpb24gb2YgRGV2aWNlIE51bWJlcnMKKworUXVlc3Rpb25zIGFuZCBBbnN3ZXJzCisKK01ha2luZyB0aGluZ3Mgd29yaworQWx0ZXJuYXRpdmVzIHRvIGRldmZzCitXaGF0IEkgZG9uJ3QgbGlrZSBhYm91dCBkZXZmcworSG93IHRvIHJlcG9ydCBidWdzCitTdHJhbmdlIGtlcm5lbCBtZXNzYWdlcworQ29tcGlsYXRpb24gcHJvYmxlbXMgd2l0aCBkZXZmc2QKKworCitPdGhlciByZXNvdXJjZXMKKworVHJhbnNsYXRpb25zIG9mIHRoaXMgZG9jdW1lbnQKKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK1doYXQgaXMgaXQ/CisKK0RldmZzIGlzIGFuIGFsdGVybmF0aXZlIHRvICJyZWFsIiBjaGFyYWN0ZXIgYW5kIGJsb2NrIHNwZWNpYWwgZGV2aWNlcworb24geW91ciByb290IGZpbGVzeXN0ZW0uIEtlcm5lbCBkZXZpY2UgZHJpdmVycyBjYW4gcmVnaXN0ZXIgZGV2aWNlcyBieQorbmFtZSByYXRoZXIgdGhhbiBtYWpvciBhbmQgbWlub3IgbnVtYmVycy4gVGhlc2UgZGV2aWNlcyB3aWxsIGFwcGVhciBpbgorZGV2ZnMgYXV0b21hdGljYWxseSwgd2l0aCB3aGF0ZXZlciBkZWZhdWx0IG93bmVyc2hpcCBhbmQKK3Byb3RlY3Rpb24gdGhlIGRyaXZlciBzcGVjaWZpZWQuIEEgZGFlbW9uIChkZXZmc2QpIGNhbiBiZSB1c2VkIHRvCitvdmVycmlkZSB0aGVzZSBkZWZhdWx0cy4gRGV2ZnMgaGFzIGJlZW4gaW4gdGhlIGtlcm5lbCBzaW5jZSAyLjMuNDYuCisKK05PVEUgdGhhdCBkZXZmcyBpcyBlbnRpcmVseSBvcHRpb25hbC4gSWYgeW91IHByZWZlciB0aGUgb2xkCitkaXNjLWJhc2VkIGRldmljZSBub2RlcywgdGhlbiBzaW1wbHkgbGVhdmUgQ09ORklHX0RFVkZTX0ZTPW4gKHRoZQorZGVmYXVsdCkuIEluIHRoaXMgY2FzZSwgbm90aGluZyB3aWxsIGNoYW5nZS4gIEFMU08gTk9URSB0aGF0IGlmIHlvdSBkbworZW5hYmxlIGRldmZzLCB0aGUgZGVmYXVsdHMgYXJlIHN1Y2ggdGhhdCBmdWxsIGNvbXBhdGliaWxpdHkgaXMKK21haW50YWluZWQgd2l0aCB0aGUgb2xkIGRldmljZXMgbmFtZXMuCisKK1RoZXJlIGFyZSB0d28gYXNwZWN0cyB0byBkZXZmczogb25lIGlzIHRoZSB1bmRlcmx5aW5nIGRldmljZQorbmFtZXNwYWNlLCB3aGljaCBpcyBhIG5hbWVzcGFjZSBqdXN0IGxpa2UgYW55IG1vdW50ZWQgZmlsZXN5c3RlbS4gVGhlCitvdGhlciBhc3BlY3QgaXMgdGhlIGZpbGVzeXN0ZW0gY29kZSB3aGljaCBwcm92aWRlcyBhIHZpZXcgb2YgdGhlCitkZXZpY2UgbmFtZXNwYWNlLiBUaGUgcmVhc29uIEkgbWFrZSBhIGRpc3RpbmN0aW9uIGlzIGJlY2F1c2UgZGV2ZnMKK2NhbiBiZSBtb3VudGVkIG1hbnkgdGltZXMsIHdpdGggZWFjaCBtb3VudCBzaG93aW5nIHRoZSBzYW1lIGRldmljZQorbmFtZXNwYWNlLiBDaGFuZ2VzIG1hZGUgYXJlIGdsb2JhbCB0byBhbGwgbW91bnRlZCBkZXZmcyBmaWxlc3lzdGVtcy4KK0Fsc28sIGJlY2F1c2UgdGhlIGRldmZzIG5hbWVzcGFjZSBleGlzdHMgd2l0aG91dCBhbnkgZGV2ZnMgbW91bnRzLCB5b3UKK2NhbiBlYXNpbHkgbW91bnQgdGhlIHJvb3QgZmlsZXN5c3RlbSBieSByZWZlcnJpbmcgdG8gYW4gZW50cnkgaW4gdGhlCitkZXZmcyBuYW1lc3BhY2UuCisKKworVGhlIGNvc3Qgb2YgZGV2ZnMgaXMgYSBzbWFsbCBpbmNyZWFzZSBpbiBrZXJuZWwgY29kZSBzaXplIGFuZCBtZW1vcnkKK3VzYWdlLiBBYm91dCA3IHBhZ2VzIG9mIGNvZGUgKHNvbWUgb2YgdGhhdCBpbiBfX2luaXQgc2VjdGlvbnMpIGFuZCA3MgorYnl0ZXMgZm9yIGVhY2ggZW50cnkgaW4gdGhlIG5hbWVzcGFjZS4gQSBtb2Rlc3Qgc3lzdGVtIGhhcyBvbmx5IGEKK2NvdXBsZSBvZiBodW5kcmVkIGRldmljZSBlbnRyaWVzLCBzbyB0aGlzIGNvc3RzIGEgZmV3IG1vcmUKK3BhZ2VzLiBDb21wYXJlIHRoaXMgd2l0aCB0aGUgc3VnZ2VzdGlvbiB0byBwdXQgL2RldiBvbiBhIDxhCitocmVmPSIjd2h5LWZhcS1yYW1kaXNjIj5yYW1kaXNjLgorCitPbiBhIHR5cGljYWwgbWFjaGluZSwgdGhlIGNvc3QgaXMgdW5kZXIgMC4yIHBlcmNlbnQuIE9uIGEgbW9kZXN0CitzeXN0ZW0gd2l0aCA2NCBNQnl0ZXMgb2YgUkFNLCB0aGUgY29zdCBpcyB1bmRlciAwLjEgcGVyY2VudC4gIFRoZQorYWNjdXNhdGlvbnMgb2YgImJsb2F0d2FyZSIgbGV2ZWxsZWQgYXQgZGV2ZnMgYXJlIG5vdCBqdXN0aWZpZWQuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworV2h5IGRvIGl0PworCitUaGVyZSBhcmUgc2V2ZXJhbCBwcm9ibGVtcyB0aGF0IGRldmZzIGFkZHJlc3Nlcy4gU29tZSBvZiB0aGVzZQorcHJvYmxlbXMgYXJlIG1vcmUgc2VyaW91cyB0aGFuIG90aGVycyAoZGVwZW5kaW5nIG9uIHlvdXIgcG9pbnQgb2YKK3ZpZXcpLCBhbmQgc29tZSBjYW4gYmUgc29sdmVkIHdpdGhvdXQgZGV2ZnMuIEhvd2V2ZXIsIHRoZSB0b3RhbGl0eSBvZgordGhlc2UgcHJvYmxlbXMgcmVhbGx5IGNhbGxzIG91dCBmb3IgZGV2ZnMuCisKK1RoZSBjaG9pY2UgaXMgYSBwYXRjaHdvcmsgb2YgaW5lZmZpY2llbnQgdXNlciBzcGFjZSBzb2x1dGlvbnMsIHdoaWNoCithcmUgY29tcGxleCBhbmQgbGlrZWx5IHRvIGJlIGZyYWdpbGUsIG9yIHRvIHVzZSBhIHNpbXBsZSBhbmQgZWZmaWNpZW50CitkZXZmcyB3aGljaCBpcyByb2J1c3QuCisKK1RoZXJlIGhhdmUgYmVlbiBtYW55IGNvdW50ZXItcHJvcG9zYWxzIHRvIGRldmZzLCBhbGwgc2Vla2luZyB0bworcHJvdmlkZSBzb21lIG9mIHRoZSBiZW5lZml0cyB3aXRob3V0IGFjdHVhbGx5IGltcGxlbWVudGluZyBkZXZmcy4gU28KK2ZhciB0aGVyZSBoYXMgYmVlbiBhbiBhYnNlbmNlIG9mIGNvZGUgYW5kIG5vIHByb3Bvc2VkIGFsdGVybmF0aXZlIGhhcworYmVlbiBhYmxlIHRvIHByb3ZpZGUgYWxsIHRoZSBmZWF0dXJlcyB0aGF0IGRldmZzIGRvZXMuIEZ1cnRoZXIsCithbHRlcm5hdGl2ZSBwcm9wb3NhbHMgcmVxdWlyZSBmYXIgbW9yZSBjb21wbGV4aXR5IGluIHVzZXItc3BhY2UgKGFuZAorc3RpbGwgZGVsaXZlciBsZXNzIGZ1bmN0aW9uYWxpdHkgdGhhbiBkZXZmcykuIFNvbWUgcGVvcGxlIGhhdmUgdGhlCittYW50cmEgb2YgcmVkdWNpbmcgImtlcm5lbCBibG9hdCIsIGJ1dCBkb24ndCBjb25zaWRlciB0aGUgZWZmZWN0cyBvbgordXNlci1zcGFjZS4KKworQSBnb29kIHNvbHV0aW9uIGxpbWl0cyB0aGUgdG90YWwgY29tcGxleGl0eSBvZiBrZXJuZWwtc3BhY2UgYW5kCit1c2VyLXNwYWNlLgorCisKK01ham9yJm1pbm9yIGFsbG9jYXRpb24KKworVGhlIGV4aXN0aW5nIHNjaGVtZSByZXF1aXJlcyB0aGUgYWxsb2NhdGlvbiBvZiBtYWpvciBhbmQgbWlub3IgZGV2aWNlCitudW1iZXJzIGZvciBlYWNoIGFuZCBldmVyeSBkZXZpY2UuIFRoaXMgbWVhbnMgdGhhdCBhIGNlbnRyYWwKK2NvLW9yZGluYXRpbmcgYXV0aG9yaXR5IGlzIHJlcXVpcmVkIHRvIGlzc3VlIHRoZXNlIGRldmljZSBudW1iZXJzCisodW5sZXNzIHlvdSdyZSBkZXZlbG9waW5nIGEgInByaXZhdGUiIGRldmljZSBkcml2ZXIpLCBpbiBvcmRlciB0bworcHJlc2VydmUgdW5pcXVlbmVzcy4gRGV2ZnMgc2hpZnRzIHRoZSBidXJkZW4gdG8gYSBuYW1lc3BhY2UuIFRoaXMgbWF5Citub3Qgc2VlbSBsaWtlIGEgaHVnZSBiZW5lZml0LCBidXQgYWN0dWFsbHkgaXQgaXMuIFNpbmNlIGRyaXZlciBhdXRob3JzCit3aWxsIG5hdHVyYWxseSBjaG9vc2UgYSBkZXZpY2UgbmFtZSB3aGljaCByZWZsZWN0cyB0aGUgZnVuY3Rpb25hbGl0eQorb2YgdGhlIGRldmljZSwgdGhlcmUgaXMgZmFyIGxlc3MgcG90ZW50aWFsIGZvciBuYW1lc3BhY2UgY29uZmxpY3QuCitTb2x2aW5nIHRoaXMgcmVxdWlyZXMgYSBrZXJuZWwgY2hhbmdlLgorCisvZGV2IG1hbmFnZW1lbnQKKworQmVjYXVzZSB5b3UgY3VycmVudGx5IGFjY2VzcyBkZXZpY2VzIHRocm91Z2ggZGV2aWNlIG5vZGVzLCB0aGVzZSBtdXN0CitiZSBjcmVhdGVkIGJ5IHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvci4gRm9yIHN0YW5kYXJkIGRldmljZXMgeW91IGNhbgordXN1YWxseSBmaW5kIGEgTUFLRURFViBwcm9ncmFtbWUgd2hpY2ggY3JlYXRlcyBhbGwgdGhlc2UgKGh1bmRyZWRzISkKK29mIG5vZGVzLiBUaGlzIG1lYW5zIHRoYXQgY2hhbmdlcyBpbiB0aGUga2VybmVsIG11c3QgYmUgcmVmbGVjdGVkIGJ5CitjaGFuZ2VzIGluIHRoZSBNQUtFREVWIHByb2dyYW1tZSwgb3IgZWxzZSB0aGUgc3lzdGVtIGFkbWluaXN0cmF0b3IKK2NyZWF0ZXMgZGV2aWNlIG5vZGVzIGJ5IGhhbmQuCisKK1RoZSBiYXNpYyBwcm9ibGVtIGlzIHRoYXQgdGhlcmUgYXJlIHR3byBzZXBhcmF0ZSBkYXRhYmFzZXMgb2YKK21ham9yIGFuZCBtaW5vciBudW1iZXJzLiBPbmUgaXMgaW4gdGhlIGtlcm5lbCBhbmQgb25lIGlzIGluIC9kZXYgKG9yCitpbiBhIE1BS0VERVYgcHJvZ3JhbW1lLCBpZiB5b3Ugd2FudCB0byBsb29rIGF0IGl0IHRoYXQgd2F5KS4gVGhpcyBpcworZHVwbGljYXRpb24gb2YgaW5mb3JtYXRpb24sIHdoaWNoIGlzIG5vdCBnb29kIHByYWN0aWNlLgorU29sdmluZyB0aGlzIHJlcXVpcmVzIGEga2VybmVsIGNoYW5nZS4KKworL2RldiBncm93dGgKKworQSB0eXBpY2FsIC9kZXYgaGFzIG92ZXIgMTIwMCBub2RlcyEgTW9zdCBvZiB0aGVzZSBkZXZpY2VzIHNpbXBseSBkb24ndAorZXhpc3QgYmVjYXVzZSB0aGUgaGFyZHdhcmUgaXMgbm90IGF2YWlsYWJsZS4gQSBodWdlIC9kZXYgaW5jcmVhc2VzIHRoZQordGltZSB0byBhY2Nlc3MgZGV2aWNlcyAoSSdtIGp1c3QgcmVmZXJyaW5nIHRvIHRoZSBkZW50cnkgbG9va3VwIHRpbWVzCithbmQgdGhlIHRpbWUgdGFrZW4gdG8gcmVhZCBpbm9kZXMgb2ZmIGRpc2M6IHRoZSBuZXh0IHN1YnNlY3Rpb24gc2hvd3MKK3NvbWUgbW9yZSBob3Jyb3JzKS4KKworQW4gZXhhbXBsZSBvZiBob3cgYmlnIC9kZXYgY2FuIGdyb3cgaXMgaWYgd2UgY29uc2lkZXIgU0NTSSBkZXZpY2VzOgorCitob3N0ICAgICAgICAgICA2ICBiaXRzICAoc2F5IHVwIHRvIDY0IGhvc3RzIG9uIGEgcmVhbGx5IGJpZyBtYWNoaW5lKQorY2hhbm5lbCAgICAgICAgNCAgYml0cyAgKHNheSB1cCB0byAxNiBTQ1NJIGJ1c2VzIHBlciBob3N0KQoraWQgICAgICAgICAgICAgNCAgYml0cworbHVuICAgICAgICAgICAgMyAgYml0cworcGFydGl0aW9uICAgICAgNiAgYml0cworVE9UQUwgICAgICAgICAgMjMgYml0cworCisKK1RoaXMgcmVxdWlyZXMgOCBNZWdhICgxMDI0KjEwMjQpIGlub2RlcyBpZiB3ZSB3YW50IHRvIHN0b3JlIGFsbAorcG9zc2libGUgZGV2aWNlIG5vZGVzLiBFdmVuIGlmIHdlIHNjcmFwIGV2ZXJ5dGhpbmcgYnV0IGlkLHBhcnRpdGlvbgorYW5kIGFzc3VtZSBhIHNpbmdsZSBob3N0IGFkYXB0ZXIgd2l0aCBhIHNpbmdsZSBTQ1NJIGJ1cyBhbmQgb25seSBvbmUKK2xvZ2ljYWwgdW5pdCBwZXIgU0NTSSB0YXJnZXQgKGlkKSwgdGhhdCdzIHN0aWxsIDEwIGJpdHMgb3IgMTAyNAoraW5vZGVzLiBFYWNoIFZGUyBpbm9kZSB0YWtlcyBhcm91bmQgMjU2IGJ5dGVzIChrZXJuZWwgMi4xLjc4KSwgc28KK3RoYXQncyAyNTYga0J5dGVzIG9mIGlub2RlIHN0b3JhZ2Ugb24gZGlzYyAoYXNzdW1pbmcgcmVhbCBpbm9kZXMgdGFrZQorYSBzaW1pbGFyIGFtb3VudCBvZiBzcGFjZSBhcyBWRlMgaW5vZGVzKS4gVGhpcyBpcyBhY3R1YWxseSBub3Qgc28gYmFkLAorYmVjYXVzZSBkaXNjIGlzIGNoZWFwIHRoZXNlIGRheXMuIEVtYmVkZGVkIHN5c3RlbXMgd291bGQgY2FyZSBhYm91dAorMjU2IGtCeXRlcyBvZiAvZGV2IGlub2RlcywgYnV0IHlvdSBjb3VsZCBhcmd1ZSB0aGF0IGVtYmVkZGVkIHN5c3RlbXMKK3dvdWxkIGhhdmUgaGFuZC10dW5lZCAvZGV2IGRpcmVjdG9yaWVzLiBJJ3ZlIGhhZCB0byBkbyBqdXN0IHRoYXQgb24gbXkKK2VtYmVkZGVkIHN5c3RlbXMsIGJ1dCBJIHdvdWxkIHJhdGhlciBqdXN0IGxlYXZlIGl0IHRvIGRldmZzLgorCitBbm90aGVyIGlzc3VlIGlzIHRoZSB0aW1lIHRha2VuIHRvIGxvb2t1cCBhbiBpbm9kZSB3aGVuIGZpcnN0CityZWZlcmVuY2VkLiBOb3Qgb25seSBkb2VzIHRoaXMgdGFrZSB0aW1lIGluIHNjYW5uaW5nIHRocm91Z2ggYSBsaXN0IGluCittZW1vcnksIGJ1dCBhbHNvIHRoZSBzZWVrIHRpbWVzIHRvIHJlYWQgdGhlIGlub2RlcyBvZmYgZGlzYy4KK1RoaXMgY291bGQgYmUgc29sdmVkIGluIHVzZXItc3BhY2UgdXNpbmcgYSBjbGV2ZXIgcHJvZ3JhbW1lIHdoaWNoCitzY2FubmVkIHRoZSBrZXJuZWwgbG9ncyBhbmQgZGVsZXRlZCAvZGV2IGVudHJpZXMgd2hpY2ggYXJlIG5vdAorYXZhaWxhYmxlIGFuZCBjcmVhdGVkIHRoZW0gd2hlbiB0aGV5IHdlcmUgYXZhaWxhYmxlLiBUaGlzIHByb2dyYW1tZQord291bGQgbmVlZCB0byBiZSBydW4gZXZlcnkgdGltZSBhIG5ldyBtb2R1bGUgd2FzIGxvYWRlZCwgd2hpY2ggd291bGQKK3Nsb3cgdGhpbmdzIGRvd24gYSBsb3QuCisKK1RoZXJlIGlzIGFuIGV4aXN0aW5nIHByb2dyYW1tZSBjYWxsZWQgc2NzaWRldiB3aGljaCB3aWxsIGF1dG9tYXRpY2FsbHkKK2NyZWF0ZSBkZXZpY2Ugbm9kZXMgZm9yIFNDU0kgZGV2aWNlcy4gSXQgY2FuIGRvIHRoaXMgYnkgc2Nhbm5pbmcgZmlsZXMKK2luIC9wcm9jL3Njc2kuIFVuZm9ydHVuYXRlbHksIHRvIGV4dGVuZCB0aGlzIGlkZWEgdG8gb3RoZXIgZGV2aWNlCitub2RlcyB3b3VsZCByZXF1aXJlIHNpZ25pZmljYW50IG1vZGlmaWNhdGlvbnMgdG8gZXhpc3RpbmcgZHJpdmVycyAoc28KK3RoZXkgdG9vIHdvdWxkIHByb3ZpZGUgaW5mb3JtYXRpb24gaW4gL3Byb2MpLiBUaGlzIGlzIGEgbm9uLXRyaXZpYWwKK2NoYW5nZSAoSSBzaG91bGQga25vdzogZGV2ZnMgaGFzIGhhZCB0byBkbyBzb21ldGhpbmcgc2ltaWxhcikuIE9uY2UKK3lvdSBnbyB0byB0aGlzIG11Y2ggZWZmb3J0LCB5b3UgbWF5IGFzIHdlbGwgdXNlIGRldmZzIGl0c2VsZiAod2hpY2gKK2Fsc28gcHJvdmlkZXMgdGhpcyBpbmZvcm1hdGlvbikuICBGdXJ0aGVybW9yZSwgc3VjaCBhIHN5c3RlbSB3b3VsZAorbGlrZWx5IGJlIGltcGxlbWVudGVkIGluIGFuIGFkLWhvYyBmYXNoaW9uLCBhcyBkaWZmZXJlbnQgZHJpdmVycyB3aWxsCitwcm92aWRlIHRoZWlyIGluZm9ybWF0aW9uIGluIGRpZmZlcmVudCB3YXlzLgorCitEZXZmcyBpcyBtdWNoIGNsZWFuZXIsIGJlY2F1c2UgaXQgKG5hdHVyYWxseSkgaGFzIGEgdW5pZm9ybSBtZWNoYW5pc20KK3RvIHByb3ZpZGUgdGhpcyBpbmZvcm1hdGlvbjogdGhlIGRldmljZSBub2RlcyB0aGVtc2VsdmVzIQorCisKK05vZGUgdG8gZHJpdmVyIGZpbGVfb3BlcmF0aW9ucyB0cmFuc2xhdGlvbgorCitUaGVyZSBpcyBhbiBpbXBvcnRhbnQgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB3YXkgZGlzYy1iYXNlZCBjaGFyYWN0ZXIKK2FuZCBibG9jayBub2RlcyBhbmQgZGV2ZnMgZW50cmllcyBtYWtlIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gYW4gZW50cnkKK2luIC9kZXYgYW5kIHRoZSBhY3R1YWwgZGV2aWNlIGRyaXZlci4KKworV2l0aCB0aGUgY3VycmVudCA4IGJpdCBtYWpvciBhbmQgbWlub3IgbnVtYmVycyB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuCitkaXNjLWJhc2VkIGMmYiBub2RlcyBhbmQgcGVyLW1ham9yIGRyaXZlcnMgaXMgZG9uZSB0aHJvdWdoIGEKK2ZpeGVkLWxlbmd0aCB0YWJsZSBvZiAxMjggZW50cmllcy4gVGhlIHZhcmlvdXMgZmlsZXN5c3RlbSB0eXBlcyBzZXQKK3RoZSBpbm9kZSBvcGVyYXRpb25zIGZvciBjJmIgbm9kZXMgdG8ge2NocixibGt9ZGV2X2lub2RlX29wZXJhdGlvbnMsCitzbyB3aGVuIGEgZGV2aWNlIGlzIG9wZW5lZCBhIGZldyBxdWljayBsZXZlbHMgb2YgaW5kaXJlY3Rpb24gYnJpbmcgdXMKK3RvIHRoZSBkcml2ZXIgZmlsZV9vcGVyYXRpb25zLgorCitGb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXIgZGV2aWNlcyBhIHNlY29uZCBzdGVwIGlzIHJlcXVpcmVkOiB0aGVyZQoraXMgYSBzY2FuIGZvciB0aGUgZHJpdmVyIGVudHJ5IHdpdGggdGhlIHNhbWUgbWlub3IgbnVtYmVyIGFzIHRoZSBmaWxlCit0aGF0IHdhcyBvcGVuZWQsIGFuZCB0aGUgYXBwcm9wcmlhdGUgbWlub3Igb3BlbiBtZXRob2QgaXMgY2FsbGVkLiBUaGlzCitzY2FubmluZyBpcyBkb25lICpldmVyeSB0aW1lKiB5b3Ugb3BlbiBhIGRldmljZSBub2RlLiBQb3RlbnRpYWxseSwgeW91CittYXkgYmUgc2VhcmNoaW5nIHRocm91Z2ggZG96ZW5zIG9mIG1pc2MuIGVudHJpZXMgYmVmb3JlIHlvdSBmaW5kIHlvdXIKK29wZW4gbWV0aG9kLiBXaGlsZSBub3QgYW4gZW5vcm1vdXMgcGVyZm9ybWFuY2Ugb3ZlcmhlYWQsIHRoaXMgZG9lcworc2VlbSBwb2ludGxlc3MuCisKK0xpbnV4ICptdXN0KiBtb3ZlIGJleW9uZCB0aGUgOCBiaXQgbWFqb3IgYW5kIG1pbm9yIGJhcnJpZXIsCitzb21laG93LiBJZiB3ZSBzaW1wbHkgaW5jcmVhc2UgZWFjaCB0byAxNiBiaXRzLCB0aGVuIHRoZSBpbmRleGluZworc2NoZW1lIHVzZWQgZm9yIG1ham9yIGRyaXZlciBsb29rdXAgYmVjb21lcyB1bnRlbmFibGUsIGJlY2F1c2UgdGhlCittYWpvciB0YWJsZXMgKG9uZSBlYWNoIGZvciBjaGFyYWN0ZXIgYW5kIGJsb2NrIGRldmljZXMpIHdvdWxkIG5lZWQgdG8KK2JlIDY0IGsgZW50cmllcyBsb25nICg1MTIga0J5dGVzIG9uIHg4NiwgMSBNQnl0ZSBmb3IgNjQgYml0CitzeXN0ZW1zKS4gU28gd2Ugd291bGQgaGF2ZSB0byB1c2UgYSBzY2hlbWUgbGlrZSB0aGF0IHVzZWQgZm9yCittaXNjZWxsYW5lb3VzIGNoYXJhY3RlciBkZXZpY2VzLCB3aGljaCBtZWFucyB0aGUgc2VhcmNoIHRpbWUgZ29lcyB1cAorbGluZWFybHkgd2l0aCB0aGUgYXZlcmFnZSBudW1iZXIgb2YgbWFqb3IgZGV2aWNlIGRyaXZlcnMgb24geW91cgorc3lzdGVtLiBOb3QgYWxsICJkZXZpY2VzIiBhcmUgaGFyZHdhcmUsIHNvbWUgYXJlIGhpZ2hlci1sZXZlbCBkcml2ZXJzCitsaWtlIEtHSSwgc28geW91IGNhbiBnZXQgbW9yZSAiZGV2aWNlcyIgd2l0aG91dCBhZGRpbmcgaGFyZHdhcmUKK1lvdSBjYW4gaW1wcm92ZSB0aGlzIGJ5IGNyZWF0aW5nIGFuIG9yZGVyZWQgKGJhbGFuY2VkOi0pCitiaW5hcnkgdHJlZSwgaW4gd2hpY2ggY2FzZSB5b3VyIHNlYXJjaCB0aW1lIGJlY29tZXMgbG9nKE4pLgorQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgaGFzaGluZyB0byBzcGVlZCB1cCB0aGUgc2VhcmNoLgorQnV0IHdoeSBkbyB0aGF0IHNlYXJjaCBhdCBhbGwgaWYgeW91IGRvbid0IGhhdmUgdG8/IE9uY2UgYWdhaW4sIGl0CitzZWVtcyBwb2ludGxlc3MuCisKK05vdGUgdGhhdCBkZXZmcyBkb2Vzbid0IHVzZSB0aGUgbWFqb3ImbWlub3Igc3lzdGVtLiBGb3IgZGV2ZnMKK2VudHJpZXMsIHRoZSBjb25uZWN0aW9uIGlzIGRvbmUgd2hlbiB5b3UgbG9va3VwIHRoZSAvZGV2IGVudHJ5LiBXaGVuCitkZXZmc19yZWdpc3RlcigpIGlzIGNhbGxlZCwgYW4gaW50ZXJuYWwgdGFibGUgaXMgYXBwZW5kZWQgd2hpY2ggaGFzCit0aGUgZW50cnkgbmFtZSBhbmQgdGhlIGZpbGVfb3BlcmF0aW9ucy4gSWYgdGhlIGRlbnRyeSBjYWNoZSBkb2Vzbid0CitoYXZlIHRoZSAvZGV2IGVudHJ5IGFscmVhZHksIHRoaXMgaW50ZXJuYWwgdGFibGUgaXMgc2Nhbm5lZCB0byBnZXQgdGhlCitmaWxlX29wZXJhdGlvbnMsIGFuZCBhbiBpbm9kZSBpcyBjcmVhdGVkLiBJZiB0aGUgZGVudHJ5IGNhY2hlIGFscmVhZHkKK2hhcyB0aGUgZW50cnksIHRoZXJlIGlzICpubyBsb29rdXAgdGltZSogKG90aGVyIHRoYW4gdGhlIGRlbnRyeSBzY2FuCitpdHNlbGYsIGJ1dCB3ZSBjYW4ndCBhdm9pZCB0aGF0IGFueXdheSwgYW5kIGJlc2lkZXMgTGludXggZGVudHJpZXMKK2NyZWFtIG90aGVyIE9TJ3Mgd2hpY2ggZG9uJ3QgaGF2ZSB0aGVtOi0pLiBGdXJ0aGVybW9yZSwgdGhlIG51bWJlciBvZgorbm9kZSBlbnRyaWVzIGluIGEgZGV2ZnMgaXMgb25seSB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBkZXZpY2UKK2VudHJpZXMsIG5vdCB0aGUgbnVtYmVyIG9mICpjb25jZWl2YWJsZSogZW50cmllcy4gRXZlbiBpZiB5b3UgcmVtb3ZlCit1bm5lY2Vzc2FyeSBlbnRyaWVzIGluIGEgZGlzYy1iYXNlZCAvZGV2LCB0aGUgbnVtYmVyIG9mIGNvbmNlaXZhYmxlCitlbnRyaWVzIHJlbWFpbnMgdGhlIHNhbWU6IHlvdSBqdXN0IGxpbWl0IHlvdXJzZWxmIGluIG9yZGVyIHRvIHNhdmUKK3NwYWNlLgorCitEZXZmcyBwcm92aWRlcyBhIGZhc3QgY29ubmVjdGlvbiBiZXR3ZWVuIGEgVkZTIG5vZGUgYW5kIHRoZSBkZXZpY2UKK2RyaXZlciwgaW4gYSBzY2FsYWJsZSB3YXkuCisKKy9kZXYgYXMgYSBzeXN0ZW0gYWRtaW5pc3RyYXRpb24gdG9vbAorCitSaWdodCBub3cgL2RldiBjb250YWlucyBhIGxpc3Qgb2YgY29uY2VpdmFibGUgZGV2aWNlcywgbW9zdCBvZiB3aGljaCBJCitkb24ndCBoYXZlLiBEZXZmcyBvbmx5IHNob3dzIHRob3NlIGRldmljZXMgYXZhaWxhYmxlIG9uIG15CitzeXN0ZW0uIFRoaXMgbWVhbnMgdGhhdCBsaXN0aW5nIC9kZXYgaXMgYSBoYW5keSB3YXkgb2YgY2hlY2tpbmcgd2hhdAorZGV2aWNlcyBhcmUgYXZhaWxhYmxlLgorCitNYWpvciZtaW5vciBzaXplCisKK0V4aXN0aW5nIG1ham9yIGFuZCBtaW5vciBudW1iZXJzIGFyZSBsaW1pdGVkIHRvIDggYml0cyBlYWNoLiBUaGlzIGlzCitub3cgYSBsaW1pdGluZyBmYWN0b3IgZm9yIHNvbWUgZHJpdmVycywgcGFydGljdWxhcmx5IHRoZSBTQ1NJIGRpc2MKK2RyaXZlciwgd2hpY2ggY29uc3VtZXMgYSBzaW5nbGUgbWFqb3IgbnVtYmVyLiBPbmx5IDE2IGRpc2NzIGFyZQorc3VwcG9ydGVkLCBhbmQgZWFjaCBkaXNjIG1heSBoYXZlIG9ubHkgMTUgcGFydGl0aW9ucy4gTWF5YmUgdGhpcyBpc24ndAorYSBwcm9ibGVtIGZvciB5b3UsIGJ1dCBzb21lIG9mIHVzIGFyZSBidWlsZGluZyBodWdlIExpbnV4IHN5c3RlbXMgd2l0aAorZGlzYyBhcnJheXMuIFdpdGggZGV2ZnMgYW4gYXJiaXRyYXJ5IHBvaW50ZXIgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aAorZWFjaCBkZXZpY2UgZW50cnksIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGdpdmUgYW4gZWZmZWN0aXZlIDMyIGJpdAorZGV2aWNlIGlkZW50aWZpZXIgKGkuZS4gdGhhdCdzIGxpa2UgaGF2aW5nIGEgMzIgYml0IG1pbm9yCitudW1iZXIpLiBTaW5jZSB0aGlzIGlzIHByaXZhdGUgdG8gdGhlIGtlcm5lbCwgdGhlcmUgYXJlIG5vIEMgbGlicmFyeQorY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2hpY2ggeW91IHdvdWxkIGhhdmUgd2l0aCBpbmNyZWFzaW5nIG1ham9yIGFuZAorbWlub3IgbnVtYmVyIHNpemVzLiBTZWUgdGhlIHNlY3Rpb24gb24gIkFsbG9jYXRpb24gb2YgRGV2aWNlIE51bWJlcnMiCitmb3IgZGV0YWlscyBvbiBtYWludGFpbmluZyBjb21wYXRpYmlsaXR5IHdpdGggdXNlcnNwYWNlLgorCitTb2x2aW5nIHRoaXMgcmVxdWlyZXMgYSBrZXJuZWwgY2hhbmdlLgorCitTaW5jZSB3cml0aW5nIHRoaXMsIHRoZSBrZXJuZWwgaGFzIGJlZW4gbW9kaWZpZWQgc28gdGhhdCB0aGUgU0NTSSBkaXNjCitkcml2ZXIgaGFzIG1vcmUgbWFqb3IgbnVtYmVycyBhbGxvY2F0ZWQgdG8gaXQgYW5kIG5vdyBzdXBwb3J0cyB1cCB0bworMTI4IGRpc2NzLiBTaW5jZSB0aGVzZSBtYWpvciBudW1iZXJzIGFyZSBub24tY29udGlndW91cyAoYSByZXN1bHQgb2YKK3VucGxhbm5lZCBleHBhbnNpb24pLCB0aGUgaW1wbGVtZW50YXRpb24gaXMgYSBsaXR0bGUgbW9yZSBjdW1iZXJzb21lCit0aGFuIG9yaWdpbmFsbHkuCisKK0p1c3QgbGlrZSB0aGUgY2hhbmdlcyB0byBJUHY0IHRvIGZpeCBpbXBlbmRpbmcgbGltaXRhdGlvbnMgaW4gdGhlCithZGRyZXNzIHNwYWNlLCBwZW9wbGUgZmluZCB3YXlzIGFyb3VuZCB0aGUgbGltaXRhdGlvbnMuIEluIHRoZSBsb25nCitydW4sIGhvd2V2ZXIsIHNvbHV0aW9ucyBsaWtlIElQdjYgb3IgZGV2ZnMgY2FuJ3QgYmUgcHV0IG9mZiBmb3JldmVyLgorCitSZWFkLW9ubHkgcm9vdCBmaWxlc3lzdGVtCisKK0hhdmluZyB5b3VyIGRldmljZSBub2RlcyBvbiB0aGUgcm9vdCBmaWxlc3lzdGVtIG1lYW5zIHRoYXQgeW91IGNhbid0CitvcGVyYXRlIHByb3Blcmx5IHdpdGggYSByZWFkLW9ubHkgcm9vdCBmaWxlc3lzdGVtLiBUaGlzIGlzIGJlY2F1c2UgeW91Cit3YW50IHRvIGNoYW5nZSBvd25lcnNoaXBzIGFuZCBwcm90ZWN0aW9ucyBvZiB0dHkgZGV2aWNlcy4gRXhpc3RpbmcKK3ByYWN0aWNlIHByZXZlbnRzIHlvdSB1c2luZyBhIENELVJPTSBhcyB5b3VyIHJvb3QgZmlsZXN5c3RlbSBmb3IgYQorKnJlYWwqIHN5c3RlbS4gU3VyZSwgeW91IGNhbiBib290IG9mZiBhIENELVJPTSwgYnV0IHlvdSBjYW4ndCBjaGFuZ2UKK3R0eSBvd25lcnNoaXBzLCBzbyBpdCdzIG9ubHkgZ29vZCBmb3IgaW5zdGFsbGluZy4KKworQWxzbywgeW91IGNhbid0IHVzZSBhIHNoYXJlZCBORlMgcm9vdCBmaWxlc3lzdGVtIGZvciBhIGNsdXN0ZXIgb2YKK2Rpc2NsZXNzIExpbnV4IG1hY2hpbmVzIChoYXZpbmcgdHR5IG93bmVyc2hpcHMgY2hhbmdlZCBvbiBhIGNvbW1vbgorL2RldiBpcyBub3QgZ29vZCkuIE5vciBjYW4geW91IGVtYmVkIHlvdXIgcm9vdCBmaWxlc3lzdGVtIGluIGEKK1JPTS1GUy4KKworWW91IGNhbiBnZXQgYXJvdW5kIHRoaXMgYnkgY3JlYXRpbmcgYSBSQU1ESVNDIGF0IGJvb3QgdGltZSwgbWFraW5nCithbiBleHQyIGZpbGVzeXN0ZW0gaW4gaXQsIG1vdW50aW5nIGl0IHNvbWV3aGVyZSBhbmQgY29weWluZyB0aGUKK2NvbnRlbnRzIG9mIC9kZXYgaW50byBpdCwgdGhlbiB1bm1vdW50aW5nIGl0IGFuZCBtb3VudGluZyBpdCBvdmVyCisvZGV2LgorCitBIGRldmZzIGlzIGEgY2xlYW5lciB3YXkgb2Ygc29sdmluZyB0aGlzLgorCitOb24tVW5peCByb290IGZpbGVzeXN0ZW0KKworTm9uLVVuaXggZmlsZXN5c3RlbXMgKHN1Y2ggYXMgTlRGUykgY2FuJ3QgYmUgdXNlZCBmb3IgYSByb290CitmaWxlc3lzdGVtIGJlY2F1c2UgdGhleSB2YXJpb3VzbHkgZG9uJ3Qgc3VwcG9ydCBjaGFyYWN0ZXIgYW5kIGJsb2NrCitzcGVjaWFsIGZpbGVzIG9yIHN5bWJvbGljIGxpbmtzLiBZb3UgY2FuJ3QgaGF2ZSBhIHNlcGFyYXRlIGRpc2MtYmFzZWQKK29yIFJBTURJU0MtYmFzZWQgZmlsZXN5c3RlbSBtb3VudGVkIG9uIC9kZXYgYmVjYXVzZSB5b3UgbmVlZCBkZXZpY2UKK25vZGVzIGJlZm9yZSB5b3UgY2FuIG1vdW50IHRoZXNlLiBEZXZmcyBjYW4gYmUgbW91bnRlZCB3aXRob3V0IGFueQorZGV2aWNlIG5vZGVzLiBEZXZsaW5rcyB3b24ndCB3b3JrIGJlY2F1c2Ugc3ltbGlua3MgYXJlbid0IHN1cHBvcnRlZC4KK0FuIGFsdGVybmF0aXZlIHNvbHV0aW9uIGlzIHRvIHVzZSBpbml0cmQgdG8gbW91bnQgYSBSQU1ESVNDIGluaXRpYWwKK3Jvb3QgZmlsZXN5c3RlbSAod2hpY2ggaXMgcG9wdWxhdGVkIHdpdGggYSBtaW5pbWFsIHNldCBvZiBkZXZpY2UKK25vZGVzKSwgYW5kIHRoZW4gY29uc3RydWN0IGEgbmV3IC9kZXYgaW4gYW5vdGhlciBSQU1ESVNDLCBhbmQgZmluYWxseQorc3dpdGNoIHRvIHlvdXIgbm9uLVVuaXggcm9vdCBmaWxlc3lzdGVtLiBUaGlzIHJlcXVpcmVzIGNsZXZlciBib290CitzY3JpcHRzIGFuZCBhIGZyYWdpbGUgYW5kIGNvbmNlcHR1YWxseSBjb21wbGV4IGJvb3QgcHJvY2VkdXJlLgorCitEZXZmcyBzb2x2ZXMgdGhpcyBpbiBhIHJvYnVzdCBhbmQgY29uY2VwdHVhbGx5IHNpbXBsZSB3YXkuCisKK1BUWSBzZWN1cml0eQorCitDdXJyZW50IHBzZXVkby10dHkgKHB0eSkgZGV2aWNlcyBhcmUgb3duZWQgYnkgcm9vdCBhbmQgcmVhZC13cml0YWJsZQorYnkgZXZlcnlvbmUuIFRoZSB1c2VyIG9mIGEgcHR5LXBhaXIgY2Fubm90IGNoYW5nZQorb3duZXJzaGlwL3Byb3RlY3Rpb25zIHdpdGhvdXQgYmVpbmcgc3VpZC1yb290LgorCitUaGlzIGNvdWxkIGJlIHNvbHZlZCB3aXRoIGEgc2VjdXJlIHVzZXItc3BhY2UgZGFlbW9uIHdoaWNoIHJ1bnMgYXMKK3Jvb3QgYW5kIGRvZXMgdGhlIGFjdHVhbCBjcmVhdGlvbiBvZiBwdHktcGFpcnMuIFN1Y2ggYSBkYWVtb24gd291bGQKK3JlcXVpcmUgbW9kaWZpY2F0aW9uIHRvICpldmVyeSogcHJvZ3JhbW1lIHRoYXQgd2FudHMgdG8gdXNlIHRoaXMgbmV3CittZWNoYW5pc20uIEl0IGFsc28gc2xvd3MgZG93biBjcmVhdGlvbiBvZiBwdHktcGFpcnMuCisKK0FuIGFsdGVybmF0aXZlIGlzIHRvIGNyZWF0ZSBhIG5ldyBvcGVuX3B0eSgpIHN5c2NhbGwgd2hpY2ggZG9lcyBtdWNoCit0aGUgc2FtZSB0aGluZyBhcyB0aGUgdXNlci1zcGFjZSBkYWVtb24uIE9uY2UgYWdhaW4sIHRoaXMgcmVxdWlyZXMKK21vZGlmaWNhdGlvbnMgdG8gcHR5LWhhbmRsaW5nIHByb2dyYW1tZXMuCisKK1RoZSBkZXZmcyBzb2x1dGlvbiBhbGxvd3MgYSBkZXZpY2UgZHJpdmVyIHRvICJ0YWciIGNlcnRhaW4gZGV2aWNlCitmaWxlcyBzbyB0aGF0IHdoZW4gYW4gdW5vcGVuZWQgZGV2aWNlIGlzIG9wZW5lZCwgdGhlIG93bmVyc2hpcHMgYXJlCitjaGFuZ2VkIHRvIHRoZSBjdXJyZW50IGV1aWQgYW5kIGVnaWQgb2YgdGhlIG9wZW5pbmcgcHJvY2VzcywgYW5kIHRoZQorcHJvdGVjdGlvbnMgYXJlIGNoYW5nZWQgdG8gdGhlIGRlZmF1bHQgcmVnaXN0ZXJlZCBieSB0aGUgZHJpdmVyLiBXaGVuCit0aGUgZGV2aWNlIGlzIGNsb3NlZCBvd25lcnNoaXAgaXMgc2V0IGJhY2sgdG8gcm9vdCBhbmQgcHJvdGVjdGlvbnMgYXJlCitzZXQgYmFjayB0byByZWFkLXdyaXRlIGZvciBldmVyeWJvZHkuIE5vIHByb2dyYW1tZSBuZWVkIGJlIGNoYW5nZWQuCitUaGUgZGV2cHRzIGZpbGVzeXN0ZW0gcHJvdmlkZXMgdGhpcyBhdXRvLW93bmVyc2hpcCBmZWF0dXJlIGZvciBVbml4OTgKK3B0eXMuIEl0IGRvZXNuJ3Qgc3VwcG9ydCBvbGQtc3R5bGUgcHR5IGRldmljZXMsIG5vciBkb2VzIGl0IGhhdmUgYWxsCit0aGUgb3RoZXIgZmVhdHVyZXMgb2YgZGV2ZnMuCisKK0ludGVsbGlnZW50IGRldmljZSBtYW5hZ2VtZW50CisKK0RldmZzIGltcGxlbWVudHMgYSBzaW1wbGUgeWV0IHBvd2VyZnVsIHByb3RvY29sIGZvciBjb21tdW5pY2F0aW9uIHdpdGgKK2EgZGV2aWNlIG1hbmFnZW1lbnQgZGFlbW9uIChkZXZmc2QpIHdoaWNoIHJ1bnMgaW4gdXNlciBzcGFjZS4gSXQgaXMKK3Bvc3NpYmxlIHRvIHNlbmQgYSBtZXNzYWdlIChlaXRoZXIgc3luY2hyb25vdXNseSBvciBhc3luY2hyb25vdXNseSkgdG8KK2RldmZzZCBvbiBhbnkgZXZlbnQsIHN1Y2ggYXMgcmVnaXN0cmF0aW9uL3VucmVnaXN0cmF0aW9uIG9mIGRldmljZQorZW50cmllcywgb3BlbmluZyBhbmQgY2xvc2luZyBkZXZpY2VzLCBsb29raW5nIHVwIGlub2Rlcywgc2Nhbm5pbmcKK2RpcmVjdG9yaWVzIGFuZCBtb3JlLiBUaGlzIGhhcyBtYW55IHBvc3NpYmlsaXRpZXMuIFNvbWUgb2YgdGhlc2UgYXJlCithbHJlYWR5IGltcGxlbWVudGVkLiBTZWU6CisKKworaHR0cDovL3d3dy5hdG5mLmNzaXJvLmF1L35yZ29vY2gvbGludXgvCisKK0RldmljZSBlbnRyeSByZWdpc3RyYXRpb24gZXZlbnRzIGNhbiBiZSB1c2VkIGJ5IGRldmZzZCB0byBjaGFuZ2UKK3Blcm1pc3Npb25zIG9mIG5ld2x5LWNyZWF0ZWQgZGV2aWNlIG5vZGVzLiBUaGlzIGlzIG9uZSBtZWNoYW5pc20gdG8KK2NvbnRyb2wgZGV2aWNlIHBlcm1pc3Npb25zLgorCitEZXZpY2UgZW50cnkgcmVnaXN0cmF0aW9uL3VucmVnaXN0cmF0aW9uIGV2ZW50cyBjYW4gYmUgdXNlZCB0byBydW4KK3Byb2dyYW1tZXMgb3Igc2NyaXB0cy4gVGhpcyBjYW4gYmUgdXNlZCB0byBwcm92aWRlIGF1dG9tYXRpYyBtb3VudGluZworb2YgZmlsZXN5c3RlbXMgd2hlbiBhIG5ldyBibG9jayBkZXZpY2UgbWVkaWEgaXMgaW5zZXJ0ZWQgaW50byB0aGUKK2RyaXZlLgorCitBc3luY2hyb25vdXMgZGV2aWNlIG9wZW4gYW5kIGNsb3NlIGV2ZW50cyBjYW4gYmUgdXNlZCB0byBpbXBsZW1lbnQKK2NsZXZlciBwZXJtaXNzaW9ucyBtYW5hZ2VtZW50LiBGb3IgZXhhbXBsZSwgdGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgb24KKy9kZXYvZHNwIGRvIG5vdCBhbGxvdyBldmVyeWJvZHkgdG8gcmVhZCBmcm9tIHRoZSBkZXZpY2UuIFRoaXMgaXMKK3NlbnNpYmxlLCBhcyB5b3UgZG9uJ3Qgd2FudCBzb21lIHJlbW90ZSB1c2VyIHJlY29yZGluZyB3aGF0IHlvdSBzYXkgYXQKK3lvdXIgY29uc29sZS4gSG93ZXZlciwgdGhlIGNvbnNvbGUgdXNlciBpcyBhbHNvIHByZXZlbnRlZCBmcm9tCityZWNvcmRpbmcuIFRoaXMgYmVoYXZpb3VyIGlzIG5vdCBkZXNpcmFibGUuIFdpdGggYXN5bmNocm9ub3VzIGRldmljZQorb3BlbiBhbmQgY2xvc2UgZXZlbnRzLCB5b3UgY2FuIGhhdmUgZGV2ZnNkIHJ1biBhIHByb2dyYW1tZSBvciBzY3JpcHQKK3doZW4gY29uc29sZSBkZXZpY2VzIGFyZSBvcGVuZWQgdG8gY2hhbmdlIHRoZSBvd25lcnNoaXBzIGZvciAqb3RoZXIqCitkZXZpY2Ugbm9kZXMgKHN1Y2ggYXMgL2Rldi9kc3ApLiBPbiBjbG9zdXJlLCB5b3UgY2FuIHJ1biBhIGRpZmZlcmVudAorc2NyaXB0IHRvIHJlc3RvcmUgcGVybWlzc2lvbnMuIEFuIGFkdmFudGFnZSBvZiB0aGlzIHNjaGVtZSBvdmVyCittb2RpZnlpbmcgdGhlIEMgbGlicmFyeSB0dHkgaGFuZGxpbmcgaXMgdGhhdCB0aGlzIHdvcmtzIGV2ZW4gaWYgeW91cgorcHJvZ3JhbW1lIGNyYXNoZXMgKGhvdyBtYW55IHRpbWVzIGhhdmUgeW91IHNlZW4gdGhlIHV0bXAgZGF0YWJhc2Ugd2l0aAorbGluZ2VyaW5nIGVudHJpZXMgZm9yIG5vbi1leGlzdGVudCBsb2dpbnM/KS4KKworU3luY2hyb25vdXMgZGV2aWNlIG9wZW4gZXZlbnRzIGNhbiBiZSB1c2VkIHRvIHBlcmZvcm0gaW50ZWxsaWdlbnQKK2RldmljZSBhY2Nlc3MgcHJvdGVjdGlvbnMuIEJlZm9yZSB0aGUgZGV2aWNlIGRyaXZlciBvcGVuKCkgbWV0aG9kIGlzCitjYWxsZWQsIHRoZSBkYWVtb24gbXVzdCBmaXJzdCB2YWxpZGF0ZSB0aGUgb3BlbiBhdHRlbXB0LCBieSBydW5uaW5nIGFuCitleHRlcm5hbCBwcm9ncmFtbWUgb3Igc2NyaXB0LiBUaGlzIGlzIGZhciBtb3JlIGZsZXhpYmxlIHRoYW4gYWNjZXNzCitjb250cm9sIGxpc3RzLCBhcyBhY2Nlc3MgY2FuIGJlIGRldGVybWluZWQgb24gdGhlIGJhc2lzIG9mIG90aGVyCitzeXN0ZW0gY29uZGl0aW9ucyBpbnN0ZWFkIG9mIGp1c3QgdGhlIFVJRCBhbmQgR0lELgorCitJbm9kZSBsb29rdXAgZXZlbnRzIGNhbiBiZSB1c2VkIHRvIGF1dGhlbnRpY2F0ZSBtb2R1bGUgYXV0b2xvYWQKK3JlcXVlc3RzLiBJbnN0ZWFkIG9mIHVzaW5nIGttb2QgZGlyZWN0bHksIHRoZSBldmVudCBpcyBzZW50IHRvCitkZXZmc2Qgd2hpY2ggY2FuIGltcGxlbWVudCBhbiBhcmJpdHJhcnkgYXV0aGVudGljYXRpb24gYmVmb3JlIGxvYWRpbmcKK3RoZSBtb2R1bGUgaXRzZWxmLgorCitJbm9kZSBsb29rdXAgZXZlbnRzIGNhbiBhbHNvIGJlIHVzZWQgdG8gY29uc3RydWN0IGFyYml0cmFyeQorbmFtZXNwYWNlcywgd2l0aG91dCBoYXZpbmcgdG8gcmVzb3J0IHRvIHBvcHVsYXRpbmcgZGV2ZnMgd2l0aCBzeW1saW5rcwordG8gZGV2aWNlcyB0aGF0IGRvbid0IGV4aXN0LgorCitTcGVjdWxhdGl2ZSBEZXZpY2UgU2Nhbm5pbmcKKworQ29uc2lkZXIgYW4gYXBwbGljYXRpb24gKGxpa2UgY2RwYXJhbm9pYSkgdGhhdCB3YW50cyB0byBmaW5kIGFsbAorQ0QtUk9NIGRldmljZXMgb24gdGhlIHN5c3RlbSAoU0NTSSwgSURFIGFuZCBvdGhlciB0eXBlcyksIHdoZXRoZXIgb3IKK25vdCB0aGVpciByZXNwZWN0aXZlIG1vZHVsZXMgYXJlIGxvYWRlZC4gVGhlIGFwcGxpY2F0aW9uIG11c3QKK3NwZWN1bGF0aXZlbHkgb3BlbiBjZXJ0YWluIGRldmljZSBub2RlcyAoc3VjaCBhcyAvZGV2L3NyMCBmb3IgdGhlIFNDU0kKK0NELVJPTXMpIGluIG9yZGVyIHRvIG1ha2Ugc3VyZSB0aGUgbW9kdWxlIGlzIGxvYWRlZC4gVGhpcyByZXF1aXJlcwordGhhdCBhbGwgTGludXggZGlzdHJpYnV0aW9ucyBmb2xsb3cgdGhlIHN0YW5kYXJkIGRldmljZSBuYW1pbmcgc2NoZW1lCisobGFzdCB0aW1lIEkgbG9va2VkIFJlZEhhdCBkaWQgdGhpbmdzIGRpZmZlcmVudGx5KS4gRGV2ZnMgc29sdmVzIHRoZQorbmFtaW5nIHByb2JsZW0uCisKK1RoZSBzYW1lIGFwcGxpY2F0aW9uIGFsc28gd2FudHMgdG8gc2VlIHdoaWNoIGRldmljZXMgYXJlIGFjdHVhbGx5CithdmFpbGFibGUgb24gdGhlIHN5c3RlbS4gV2l0aCB0aGUgZXhpc3Rpbmcgc3lzdGVtIGl0IG5lZWRzIHRvIHJlYWQgdGhlCisvZGV2IGRpcmVjdG9yeSBhbmQgc3BlY3VsYXRpdmVseSBvcGVuIGVhY2ggL2Rldi9zciogZGV2aWNlIHRvCitkZXRlcm1pbmUgaWYgdGhlIGRldmljZSBleGlzdHMgb3Igbm90LiBXaXRoIGEgbGFyZ2UgL2RldiB0aGlzIGlzIGFuCitpbmVmZmljaWVudCBvcGVyYXRpb24sIGVzcGVjaWFsbHkgaWYgdGhlcmUgYXJlIG1hbnkgL2Rldi9zciogbm9kZXMuIEEKK3NvbHV0aW9uIGxpa2Ugc2NzaWRldiBjb3VsZCByZWR1Y2UgdGhlIG51bWJlciBvZiAvZGV2L3NyKiBlbnRyaWVzIChidXQKK29mIGNvdXJzZSB0aGF0IGFsc28gcmVxdWlyZXMgYWxsIHRoYXQgaW5lZmZpY2llbnQgZGlyZWN0b3J5IHNjYW5uaW5nKS4KKworV2l0aCBkZXZmcywgdGhlIGFwcGxpY2F0aW9uIGNhbiBvcGVuIHRoZSAvZGV2L3NyIGRpcmVjdG9yeQorKHdoaWNoIHRyaWdnZXJzIHRoZSBtb2R1bGUgYXV0b2xvYWRpbmcgaWYgcmVxdWlyZWQpLCBhbmQgcHJvY2VlZCB0bworcmVhZCAvZGV2L3NyLiBTaW5jZSBvbmx5IHRoZSBhdmFpbGFibGUgZGV2aWNlcyB3aWxsIGhhdmUKK2VudHJpZXMsIHRoZXJlIGFyZSBubyBpbmVmZmljZW5jaWVzIGluIGRpcmVjdG9yeSBzY2FubmluZyBvciBkZXZpY2UKK29wZW5pbmdzLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaG8gZWxzZSBkb2VzIGl0PworCitGcmVlQlNEIGhhcyBhIGRldmZzIGltcGxlbWVudGF0aW9uLiBTb2xhcmlzIGFuZCBBSVggZWFjaCBoYXZlIGEKK3BzZXVkby1kZXZmcyAoc29tZXRoaW5nIGFraW4gdG8gc2NzaWRldiBidXQgZm9yIGFsbCBkZXZpY2VzLCB3aXRoIHNvbWUKK3Vuc3BlY2lmaWVkIGtlcm5lbCBzdXBwb3J0KS4gQmVPUywgUGxhbjkgYW5kIFFOWCBhbHNvIGhhdmUgaXQuIFNHSSdzCitJUklYIDYuNCBhbmQgYWJvdmUgYWxzbyBoYXZlIGEgZGV2aWNlIGZpbGVzeXN0ZW0uCisKK1doaWxlIHdlIHNob3VsZG4ndCBqdXN0IGF1dG9tYXRpY2FsbHkgZG8gc29tZXRoaW5nIGJlY2F1c2Ugb3RoZXJzIGRvCitpdCwgd2Ugc2hvdWxkIG5vdCBpZ25vcmUgdGhlIHdvcmsgb2Ygb3RoZXJzIGVpdGhlci4gRnJlZUJTRCBoYXMgYSBsb3QKK29mIGNvbXBldGVudCBwZW9wbGUgd29ya2luZyBvbiBpdCwgc28gdGhlaXIgb3BpbmlvbiBzaG91bGQgbm90IGJlCitibGl0aGVseSBpZ25vcmVkLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK0hvdyBpdCB3b3JrcworCitSZWdpc3RlcmluZyBkZXZpY2UgZW50cmllcworCitGb3IgZXZlcnkgZW50cnkgKGRldmljZSBub2RlKSBpbiBhIGRldmZzLWJhc2VkIC9kZXYgYSBkcml2ZXIgbXVzdCBjYWxsCitkZXZmc19yZWdpc3RlcigpLiBUaGlzIGFkZHMgdGhlIG5hbWUgb2YgdGhlIGRldmljZSBlbnRyeSwgdGhlCitmaWxlX29wZXJhdGlvbnMgc3RydWN0dXJlIHBvaW50ZXIgYW5kIGEgZmV3IG90aGVyIHRoaW5ncyB0byBhbgoraW50ZXJuYWwgdGFibGUuIERldmljZSBlbnRyaWVzIG1heSBiZSBhZGRlZCBhbmQgcmVtb3ZlZCBhdCBhbnkKK3RpbWUuIFdoZW4gYSBkZXZpY2UgZW50cnkgaXMgcmVnaXN0ZXJlZCwgaXQgYXV0b21hZ2ljYWxseSBhcHBlYXJzIGluCithbnkgbW91bnRlZCBkZXZmcycuCisKK0lub2RlIGxvb2t1cAorCitXaGVuIGEgbG9va3VwIG9wZXJhdGlvbiBvbiBhbiBlbnRyeSBpcyBwZXJmb3JtZWQgYW5kIGlmIHRoZXJlIGlzIG5vCitkcml2ZXIgaW5mb3JtYXRpb24gZm9yIHRoYXQgZW50cnkgZGV2ZnMgd2lsbCBhdHRlbXB0IHRvIGNhbGwKK2RldmZzZC4gSWYgc3RpbGwgbm8gZHJpdmVyIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCB0aGVuIGEgbmVnYXRpdmUKK2RlbnRyeSBpcyB5aWVsZGVkIGFuZCB0aGUgbmV4dCBzdGFnZSBvcGVyYXRpb24gd2lsbCBiZSBjYWxsZWQgYnkgdGhlCitWRlMgKHN1Y2ggYXMgY3JlYXRlKCkgb3IgbWtub2QoKSBpbm9kZSBtZXRob2RzKS4gSWYgZHJpdmVyIGluZm9ybWF0aW9uCitjYW4gYmUgZm91bmQsIGFuIGlub2RlIGlzIGNyZWF0ZWQgKGlmIG9uZSBkb2VzIG5vdCBleGlzdCBhbHJlYWR5KSBhbmQKK2FsbCBpcyB3ZWxsLgorCitNYW51YWxseSBjcmVhdGluZyBkZXZpY2Ugbm9kZXMKKworVGhlIG1rbm9kKCkgbWV0aG9kIGFsbG93cyB5b3UgdG8gY3JlYXRlIGFuIG9yZGluYXJ5IG5hbWVkIHBpcGUgaW4gdGhlCitkZXZmcywgb3IgeW91IGNhbiBjcmVhdGUgYSBjaGFyYWN0ZXIgb3IgYmxvY2sgc3BlY2lhbCBpbm9kZSBpZiBvbmUKK2RvZXMgbm90IGFscmVhZHkgZXhpc3QuIFlvdSBtYXkgd2lzaCB0byBjcmVhdGUgYSBjaGFyYWN0ZXIgb3IgYmxvY2sKK3NwZWNpYWwgaW5vZGUgc28gdGhhdCB5b3UgY2FuIHNldCBwZXJtaXNzaW9ucyBhbmQgb3duZXJzaGlwLiBMYXRlciwgaWYKK2EgZGV2aWNlIGRyaXZlciByZWdpc3RlcnMgYW4gZW50cnkgd2l0aCB0aGUgc2FtZSBuYW1lLCB0aGUKK3Blcm1pc3Npb25zLCBvd25lcnNoaXAgYW5kIHRpbWVzIGFyZSByZXRhaW5lZC4gVGhpcyBpcyBob3cgeW91IGNhbiBzZXQKK3RoZSBwcm90ZWN0aW9ucyBvbiBhIGRldmljZSBldmVuIGJlZm9yZSB0aGUgZHJpdmVyIGlzIGxvYWRlZC4gT25jZSB5b3UKK2NyZWF0ZSBhbiBpbm9kZSBpdCBhcHBlYXJzIGluIHRoZSBkaXJlY3RvcnkgbGlzdGluZy4KKworVW5yZWdpc3RlcmluZyBkZXZpY2UgZW50cmllcworCitBIGRldmljZSBkcml2ZXIgY2FsbHMgZGV2ZnNfdW5yZWdpc3RlcigpIHRvIHVucmVnaXN0ZXIgYW4gZW50cnkuCisKK0Nocm9vdCgpIGdhb2xzCisKKzIuMi54IGtlcm5lbHMKKworVGhlIHNlbWFudGljcyBvZiBpbm9kZSBjcmVhdGlvbiBhcmUgZGlmZmVyZW50IHdoZW4gZGV2ZnMgaXMgbW91bnRlZAord2l0aCB0aGUgImV4cGxpY2l0IiBvcHRpb24uIE5vdywgd2hlbiBhIGRldmljZSBlbnRyeSBpcyByZWdpc3RlcmVkLCBpdAord2lsbCBub3QgYXBwZWFyIHVudGlsIHlvdSB1c2UgbWtub2QoKSB0byBjcmVhdGUgdGhlIGRldmljZS4gSXQgZG9lc24ndAorbWF0dGVyIGlmIHlvdSBta25vZCgpIGJlZm9yZSBvciBhZnRlciB0aGUgZGV2aWNlIGlzIHJlZ2lzdGVyZWQgd2l0aAorZGV2ZnNfcmVnaXN0ZXIoKS4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBiZWhhdmlvdXIgaXMgdG8gc3VwcG9ydAorY2hyb290KDIpIGdhb2xzLCB3aGVyZSB5b3Ugd2FudCB0byBtb3VudCBhIG1pbmltYWwgZGV2ZnMgaW5zaWRlIHRoZQorZ2FvbC4gT25seSB0aGUgZGV2aWNlcyB5b3Ugc3BlY2lmaWNhbGx5IHdhbnQgdG8gYmUgYXZhaWxhYmxlICh0aHJvdWdoCit5b3VyIG1rbm9kKCkgc2V0dXApIHdpbGwgYmUgYWNjZXNzaWJsZS4KKworMi40Lngga2VybmVscworCitBcyBvZiBrZXJuZWwgMi4zLjk5LCB0aGUgVkZTIGhhcyBoYWQgdGhlIGFiaWxpdHkgdG8gcmViaW5kIHBhcnRzIG9mCit0aGUgZ2xvYmFsIGZpbGVzeXN0ZW0gbmFtZXNwYWNlIGludG8gYW5vdGhlciBwYXJ0IG9mIHRoZSBuYW1lc3BhY2UuCitUaGlzIG5vdyB3b3JrcyBldmVuIGF0IHRoZSBsZWFmLW5vZGUgbGV2ZWwsIHdoaWNoIG1lYW5zIHRoYXQKK2luZGl2aWR1YWwgZmlsZXMgYW5kIGRldmljZSBub2RlcyBtYXkgYmUgYm91bmQgaW50byBvdGhlciBwYXJ0cyBvZiB0aGUKK25hbWVzcGFjZS4gVGhpcyBpcyBsaWtlIG1ha2luZyBsaW5rcywgYnV0IGJldHRlciwgYmVjYXVzZSBpdCB3b3JrcworYWNyb3NzIGZpbGVzeXN0ZW1zICh1bmxpa2UgaGFyZCBsaW5rcykgYW5kIHdvcmtzIHRocm91Z2ggY2hyb290KCkKK2dhb2xzICh1bmxpa2Ugc3ltYm9saWMgbGlua3MpLgorCitCZWNhdXNlIG9mIHRoZXNlIGltcHJvdmVtZW50cyB0byB0aGUgVkZTLCB0aGUgbXVsdGktbW91bnQgY2FwYWJpbGl0eQoraW4gZGV2ZnMgaXMgbm8gbG9uZ2VyIG5lZWRlZC4gVGhlIGFkbWluaXN0cmF0b3IgbWF5IGNyZWF0ZSBhIG1pbmltYWwKK2RldmljZSB0cmVlIGluc2lkZSBhIGNocm9vdCgyKSBnYW9sIGJ5IHVzaW5nIFZGUyBiaW5kaW5ncy4gQXMgdGhpcworcHJvdmlkZXMgbW9zdCBvZiB0aGUgZmVhdHVyZXMgb2YgdGhlIGRldmZzIG11bHRpLW1vdW50IGNhcGFiaWxpdHksIEkKK3JlbW92ZWQgdGhlIG11bHRpLW1vdW50IHN1cHBvcnQgY29kZSAoYWZ0ZXIgaXNzdWluZyBhbiBSRkMpLiBUaGlzCit5aWVsZGVkIGNvZGUgc2l6ZSByZWR1Y3Rpb25zIGFuZCBzaW1wbGlmaWNhdGlvbnMuCisKK0lmIHlvdSB3YW50IHRvIGNvbnN0cnVjdCBhIG1pbmltYWwgY2hyb290KCkgZ2FvbCwgdGhlIGZvbGxvd2luZworY29tbWFuZCBzaG91bGQgc3VmZmljZToKKworbW91bnQgLS1iaW5kIC9kZXYvbnVsbCAvZ2FvbC9kZXYvbnVsbAorCisKK1JlcGVhdCBmb3Igb3RoZXIgZGV2aWNlIG5vZGVzIHlvdSB3YW50IHRvIGV4cG9zZS4gU2ltcGxlIQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK09wZXJhdGlvbmFsIGlzc3VlcworCisKK0luc3RydWN0aW9ucyBmb3IgdGhlIGltcGF0aWVudAorCitOb2JvZHkgbGlrZXMgcmVhZGluZyBkb2N1bWVudGF0aW9uLiBQZW9wbGUganVzdCB3YW50IHRvIGdldCBpbiB0aGVyZQorYW5kIHBsYXkuIFNvIHRoaXMgc2VjdGlvbiB0ZWxscyB5b3UgcXVpY2tseSB0aGUgc3RlcHMgeW91IG5lZWQgdG8gdGFrZQordG8gcnVuIHdpdGggZGV2ZnMgbW91bnRlZCBvdmVyIC9kZXYuIFNraXAgdGhlc2Ugc3RlcHMgYW5kIHlvdSB3aWxsIGVuZAordXAgd2l0aCBhIG5lYXJseSB1bmJvb3RhYmxlIHN5c3RlbS4gU3Vic2VxdWVudCBzZWN0aW9ucyBkZXNjcmliZSB0aGUKK2lzc3VlcyBpbiBtb3JlIGRldGFpbCwgYW5kIGRpc2N1c3Mgbm9uLWVzc2VudGlhbCBjb25maWd1cmF0aW9uCitvcHRpb25zLgorCitEZXZmc2QKK09LLCBpZiB5b3UncmUgcmVhZGluZyB0aGlzLCBJIGFzc3VtZSB5b3Ugd2FudCB0byBwbGF5IHdpdGgKK2RldmZzLiBGaXJzdCB5b3Ugc2hvdWxkIGVuc3VyZSB0aGF0IC91c3Ivc3JjL2xpbnV4IGNvbnRhaW5zIGEKK3JlY2VudCBrZXJuZWwgc291cmNlIHRyZWUuIFRoZW4geW91IG5lZWQgdG8gY29tcGlsZSBkZXZmc2QsIHRoZSBkZXZpY2UKK21hbmFnZW1lbnQgZGFlbW9uLCBhdmFpbGFibGUgYXQKKworaHR0cDovL3d3dy5hdG5mLmNzaXJvLmF1L35yZ29vY2gvbGludXgvLgorQmVjYXVzZSB0aGUga2VybmVsIGhhcyBhIG5hbWluZyBzY2hlbWUKK3doaWNoIGlzIHF1aXRlIGRpZmZlcmVudCBmcm9tIHRoZSBvbGQgbmFtaW5nIHNjaGVtZSwgeW91IG5lZWQgdG8KK2luc3RhbGwgZGV2ZnNkIHNvIHRoYXQgc29mdHdhcmUgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCB1c2UgdGhlCitvbGQgbmFtaW5nIHNjaGVtZSB3aWxsIG5vdCBicmVhay4KKworQ29tcGlsZSBhbmQgaW5zdGFsbCBkZXZmc2QuIFlvdSB3aWxsIGJlIHByb3ZpZGVkIHdpdGggYSBkZWZhdWx0Citjb25maWd1cmF0aW9uIGZpbGUgL2V0Yy9kZXZmc2QuY29uZiB3aGljaCB3aWxsIHByb3ZpZGUKK2NvbXBhdGliaWxpdHkgc3ltbGlua3MgZm9yIHRoZSBvbGQgbmFtaW5nIHNjaGVtZS4gRG9uJ3QgY2hhbmdlIHRoaXMKK2NvbmZpZyBmaWxlIHVubGVzcyB5b3Uga25vdyB3aGF0IHlvdSdyZSBkb2luZy4gRXZlbiBpZiB5b3UgdGhpbmsgeW91CitkbyBrbm93IHdoYXQgeW91J3JlIGRvaW5nLCBkb24ndCBjaGFuZ2UgaXQgdW50aWwgeW91J3ZlIGZvbGxvd2VkIGFsbAordGhlIHN0ZXBzIGJlbG93IGFuZCBib290ZWQgYSBkZXZmcy1lbmFibGVkIHN5c3RlbSBhbmQgdmVyaWZpZWQgdGhhdCBpdAord29ya3MuCisKK05vdyBlZGl0IHlvdXIgbWFpbiBzeXN0ZW0gYm9vdCBzY3JpcHQgc28gdGhhdCBkZXZmc2QgaXMgc3RhcnRlZCBhdCB0aGUKK3ZlcnkgYmVnaW5uaW5nIChiZWZvcmUgYW55IGZpbGVzeXN0ZW0KK2NoZWNrcykuIC9ldGMvcmMuZC9yYy5zeXNpbml0IGlzIG9mdGVuIHRoZSBtYWluIGJvb3Qgc2NyaXB0CitvbiBzeXN0ZW1zIHdpdGggU3lzVi1zdHlsZSBib290IHNjcmlwdHMuIE9uIHN5c3RlbXMgd2l0aCBCU0Qtc3R5bGUKK2Jvb3Qgc2NyaXB0cyBpdCBpcyBvZnRlbiAvZXRjL3JjLiBBbHNvIGNoZWNrCisvc2Jpbi9yYy4KKworTk9URSB0aGF0IHRoZSBsaW5lIHlvdSBwdXQgaW50byB0aGUgYm9vdAorc2NyaXB0IHNob3VsZCBiZSBleGFjdGx5OgorCisvc2Jpbi9kZXZmc2QgL2RldgorCitETyBOT1QgdXNlIHNvbWUgc3BlY2lhbCBkYWVtb24tbGF1bmNoaW5nCitwcm9ncmFtbWUsIG90aGVyd2lzZSB0aGUgYm9vdCBzY3JpcHQgbWF5IG5vdCB3YWl0IGZvciBkZXZmc2QgdG8gZmluaXNoCitpbml0aWFsaXNpbmcuCisKK1N5c3RlbSBMaWJyYXJpZXMKK1RoZXJlIG1heSBzdGlsbCBiZSBzb21lIHByb2JsZW1zIGJlY2F1c2Ugb2YgYnJva2VuIHNvZnR3YXJlIG1ha2luZworYXNzdW1wdGlvbnMgYWJvdXQgZGV2aWNlIG5hbWVzLiBJbiBwYXJ0aWN1bGFyLCBzb21lIHNvZnR3YXJlIGRvZXMgbm90CitoYW5kbGUgZGV2aWNlcyB3aGljaCBhcmUgc3ltYm9saWMgbGlua3MuIElmIHlvdSBhcmUgcnVubmluZyBhIGxpYmMgNQorYmFzZWQgc3lzdGVtLCBpbnN0YWxsIGxpYmMgNS40LjQ0IChpZiB5b3UgaGF2ZSBsaWJjIDUuNC40NiwgZ28gYmFjayB0bworbGliYyA1LjQuNDQsIHdoaWNoIGlzIGFjdHVhbGx5IGNvcnJlY3QpLiBJZiB5b3UgYXJlIHJ1bm5pbmcgYSBnbGliYworYmFzZWQgc3lzdGVtLCBtYWtlIHN1cmUgeW91IGhhdmUgZ2xpYmMgMi4xLjMgb3IgbGF0ZXIuCisKKy9ldGMvc2VjdXJldHR5CitQQU0gKFBsdWdnYWJsZSBBdXRoZW50aWNhdGlvbiBNb2R1bGVzKSBpcyBzdXBwb3NlZCB0byBiZSBhIGZsZXhpYmxlCittZWNoYW5pc20gZm9yIHByb3ZpZGluZyBiZXR0ZXIgdXNlciBhdXRoZW50aWNhdGlvbiBhbmQgYWNjZXNzIHRvCitzZXJ2aWNlcy4gVW5mb3J0dW5hdGVseSwgaXQncyBhbHNvIGZyYWdpbGUsIGNvbXBsZXggYW5kIHVuZG9jdW1lbnRlZAorKGNoZWNrIG91dCBSZWRIYXQgNi4xLCBhbmQgcHJvYmFibHkgb3RoZXIgZGlzdHJpYnV0aW9ucyBhcyB3ZWxsKS4gUEFNCitoYXMgcHJvYmxlbXMgd2l0aCBzeW1ib2xpYyBsaW5rcy4gQXBwZW5kIHRoZSBmb2xsb3dpbmcgbGluZXMgdG8geW91cgorL2V0Yy9zZWN1cmV0dHkgZmlsZToKKwordmMvMQordmMvMgordmMvMwordmMvNAordmMvNQordmMvNgordmMvNwordmMvOAorCitUaGlzIHdpbGwgbm90IHdlYWtlbiBzZWN1cml0eS4gSWYgeW91IGhhdmUgYSB2ZXJzaW9uIG9mIHV0aWwtbGludXgKK2VhcmxpZXIgdGhhbiAyLjEwLmgsIHBsZWFzZSB1cGdyYWRlIHRvIDIuMTAuaCBvciBsYXRlci4gSWYgeW91CithYnNvbHV0ZWx5IGNhbm5vdCB1cGdyYWRlLCB0aGVuIGFsc28gYXBwZW5kIHRoZSBmb2xsb3dpbmcgbGluZXMgdG8KK3lvdXIgL2V0Yy9zZWN1cmV0dHkgZmlsZToKKworMQorMgorMworNAorNQorNgorNworOAorCitUaGlzIG1heSBwb3RlbnRpYWxseSB3ZWFrZW4gc2VjdXJpdHkgYnkgYWxsb3dpbmcgcm9vdCBsb2dpbnMgb3ZlciB0aGUKK25ldHdvcmsgKGEgcGFzc3dvcmQgaXMgc3RpbGwgcmVxdWlyZWQsIHRob3VnaCkuIEhvd2V2ZXIsIHNpbmNlIHRoZXJlCithcmUgcHJvYmxlbXMgd2l0aCBkZWFsaW5nIHdpdGggc3ltbGlua3MsIEknbSBzdXNwaWNpb3VzIG9mIHRoZSBsZXZlbAorb2Ygc2VjdXJpdHkgb2ZmZXJlZCBpbiBhbnkgY2FzZS4KKworWEZyZWU4NgorV2hpbGUgbm90IGVzc2VudGlhbCwgaXQncyBwcm9iYWJseSBhIGdvb2QgaWRlYSB0byB1cGdyYWRlIHRvIFhGcmVlODYKKzQuMCwgYXMgcGF0Y2hlcyB3ZW50IGluIHRvIG1ha2UgaXQgbW9yZSBkZXZmcy1mcmllbmRseS4gSWYgeW91IGRvbid0LAoreW91J2xsIHByb2JhYmx5IG5lZWQgdG8gYXBwbHkgdGhlIGZvbGxvd2luZyBwYXRjaCB0bworL2V0Yy9zZWN1cml0eS9jb25zb2xlLnBlcm1zIHNvIHRoYXQgb3JkaW5hcnkgdXNlcnMgY2FuIHJ1bgorc3RhcnR4LiBOb3RlIHRoYXQgbm90IGFsbCBkaXN0cmlidXRpb25zIGhhdmUgdGhpcyBmaWxlIChlLmcuIERlYmlhbiksCitzbyBpZiBpdCdzIG5vdCBwcmVzZW50LCBkb24ndCB3b3JyeSBhYm91dCBpdC4KKworLS0tIC9ldGMvc2VjdXJpdHkvY29uc29sZS5wZXJtcy5vcmlnICAgIFNhdCBBcHIgMTcgMTY6MjY6NDcgMTk5OSAKKysrKyAvZXRjL3NlY3VyaXR5L2NvbnNvbGUucGVybXMgRnJpIEZlYiAyNSAyMzo1Mzo1NSAyMDAwIAorQEAgLTE0LDcgKzE0LDcgQEAgCisgIyBtYW4gNSBjb25zb2xlLnBlcm1zIAorCisgIyBmaWxlIGNsYXNzZXMgLS0gdGhlc2UgYXJlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgCistPGNvbnNvbGU+PXR0eVswLTldWzAtOV0qIDpbMC05XVwuWzAtOV0gOlswLTldIAorKzxjb25zb2xlPj10dHlbMC05XVswLTldKiB2Yy9bMC05XVswLTldKiA6WzAtOV1cLlswLTldIDpbMC05XSAKKworICMgZGV2aWNlIGNsYXNzZXMgLS0gdGhlc2UgYXJlIHNoZWxsLXN0eWxlIGdsb2JzIAorIDxmbG9wcHk+PS9kZXYvZmRbMC0xXSogCisKK0lmIHRoZSBwYXRjaCBkb2VzIG5vdCBhcHBseSwgdGhlbiBjaGFuZ2UgdGhlIGxpbmU6CisKKzxjb25zb2xlPj10dHlbMC05XVswLTldKiA6WzAtOV1cLlswLTldIDpbMC05XQorCit3aXRoOgorCis8Y29uc29sZT49dHR5WzAtOV1bMC05XSogdmMvWzAtOV1bMC05XSogOlswLTldXC5bMC05XSA6WzAtOV0KKworCitEaXNhYmxlIGRldnB0cworSSd2ZSBoYWQgYSByZXBvcnQgb2YgZGV2cHRzIG1vdW50ZWQgb24gL2Rldi9wdHMgbm90IHdvcmtpbmcKK2NvcnJlY3RseS4gU2luY2UgZGV2ZnMgd2lsbCBhbHNvIG1hbmFnZSAvZGV2L3B0cywgdGhlcmUgaXMgbm8KK25lZWQgdG8gbW91bnQgZGV2cHRzIGFzIHdlbGwuIFlvdSBzaG91bGQgZWl0aGVyIGVkaXQgeW91cgorL2V0Yy9mc3RhYiBzbyBkZXZwdHMgaXMgbm90IG1vdW50ZWQsIG9yIGRpc2FibGUgZGV2cHRzIGZyb20KK3lvdXIga2VybmVsIGNvbmZpZ3VyYXRpb24uCisKK1Vuc3VwcG9ydGVkIGRyaXZlcnMKK05vdCBhbGwgZHJpdmVycyBoYXZlIGRldmZzIHN1cHBvcnQuIElmIHlvdSBkZXBlbmQgb24gb25lIG9mIHRoZXNlCitkcml2ZXJzLCB5b3Ugd2lsbCBuZWVkIHRvIGNyZWF0ZSBhIHNjcmlwdCBvciB0YXJmaWxlIHRoYXQgeW91IGNhbiB1c2UKK2F0IGJvb3QgdGltZSB0byBjcmVhdGUgZGV2aWNlIG5vZGVzIGFzIGFwcHJvcHJpYXRlLiBUaGVyZSBpcyBhCitzZWN0aW9uIHdoaWNoIGRlc2NyaWJlcyB0aGlzLiBBbm90aGVyCitzZWN0aW9uIGxpc3RzIHRoZSBkcml2ZXJzIHdoaWNoIGhhdmUKK2RldmZzIHN1cHBvcnQuCisKKy9kZXYvbW91c2UKKworTWFueSBkaXNyaWJ1dGlvbnMgY29uZmlndXJlIC9kZXYvbW91c2UgdG8gYmUgdGhlIG1vdXNlIGRldmljZQorZm9yIFhGcmVlODYgYW5kIEdQTS4gSSBhY3R1YWxseSB0aGluayB0aGlzIGlzIGEgYmFkIGlkZWEsIGJlY2F1c2UgaXQKK2FkZHMgYW5vdGhlciBsZXZlbCBvZiBpbmRpcmVjdGlvbi4gV2hlbiBsb29raW5nIGF0IGEgY29uZmlnIGZpbGUsIGlmCit5b3Ugc2VlIC9kZXYvbW91c2UgeW91J3JlIGxlZnQgd29uZGVyaW5nIHdoaWNoIG1vdXNlCitpcyBiZWluZyByZWZlcnJlZCB0by4gSGVuY2UgSSByZWNvbW1lbmQgcHV0dGluZyB0aGUgYWN0dWFsIG1vdXNlCitkZXZpY2UgKGZvciBleGFtcGxlIC9kZXYvcHNhdXgpIGludG8geW91cgorL2V0Yy9YMTEvWEY4NkNvbmZpZyBmaWxlIChhbmQgc2ltaWxhcmx5IGZvciB0aGUgR1BNCitjb25maWd1cmF0aW9uIGZpbGUpLgorCitBbHRlcm5hdGl2ZWx5LCB1c2UgdGhlIHNhbWUgdGVjaG5pcXVlIHVzZWQgZm9yIHVuc3VwcG9ydGVkIGRyaXZlcnMKK2Rlc2NyaWJlZCBhYm92ZS4KKworVGhlIEtlcm5lbAorRmluYWxseSwgeW91IG5lZWQgdG8gbWFrZSBzdXJlIGRldmZzIGlzIGNvbXBpbGVkIGludG8geW91ciBrZXJuZWwuIFNldAorQ09ORklHX0VYUEVSSU1FTlRBTD15LCBDT05GSUdfREVWRlNfRlM9eSBhbmQgQ09ORklHX0RFVkZTX01PVU5UPXkgYnkKK3VzaW5nIGZhdm91cml0ZSBjb25maWd1cmF0aW9uIHRvb2wgKGkuZS4gbWFrZSBjb25maWcgb3IKK21ha2UgeGNvbmZpZykgYW5kIHRoZW4gbWFrZSBjbGVhbiBhbmQgdGhlbiByZWNvbXBpbGUgeW91ciBrZXJuZWwgYW5kIAorbW9kdWxlcy4gQXQgYm9vdCwgZGV2ZnMgd2lsbCBiZSBtb3VudGVkIG9udG8gL2Rldi4KKworSWYgeW91IGVuY291bnRlciBwcm9ibGVtcyBib290aW5nIChmb3IgZXhhbXBsZSBpZiB5b3UgZm9yZ290IGEKK2NvbmZpZ3VyYXRpb24gc3RlcCksIHlvdSBjYW4gcGFzcyBkZXZmcz1ub21vdW50IGF0IHRoZSBrZXJuZWwKK2Jvb3QgY29tbWFuZCBsaW5lLiBUaGlzIHdpbGwgcHJldmVudCB0aGUga2VybmVsIGZyb20gbW91bnRpbmcgZGV2ZnMgYXQKK2Jvb3QgdGltZSBvbnRvIC9kZXYuCisKK0luIGdlbmVyYWwsIGEga2VybmVsIGJ1aWx0IHdpdGggQ09ORklHX0RFVkZTX0ZTPXkgYnV0IHdpdGhvdXQgbW91bnRpbmcKK2RldmZzIG9udG8gL2RldiBpcyBjb21wbGV0ZWx5IHNhZmUsIGFuZCByZXF1aXJlcyBubworY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBPbmUgZXhjZXB0aW9uIHRvIHRha2Ugbm90ZSBvZiBpcyB3aGVuCitMQUJFTD0gZGlyZWN0aXZlcyBhcmUgdXNlZCBpbiAvZXRjL2ZzdGFiLiBJbiB0aGlzCitjYXNlIHlvdSB3aWxsIGJlIHVuYWJsZSB0byBib290IHByb3Blcmx5LiBUaGlzIGlzIGJlY2F1c2UgdGhlCittb3VudCg4KSBwcm9ncmFtbWUgdXNlcyAvcHJvYy9wYXJ0aXRpb25zIGFzIHBhcnQgb2YKK3RoZSB2b2x1bWUgbGFiZWwgc2VhcmNoIHByb2Nlc3MsIGFuZCB0aGUgZGV2aWNlIG5hbWVzIGl0IGZpbmRzIGFyZSBub3QKK2F2YWlsYWJsZSwgYmVjYXVzZSBzZXR0aW5nIENPTkZJR19ERVZGU19GUz15IGNoYW5nZXMgdGhlIG5hbWVzIGluCisvcHJvYy9wYXJ0aXRpb25zLCBpcnJlc3BlY3RpdmUgb2Ygd2hldGhlciBkZXZmcyBpcyBtb3VudGVkLgorCitOb3cgeW91J3ZlIGZpbmlzaGVkIGFsbCB0aGUgc3RlcHMgcmVxdWlyZWQuIFlvdSdyZSBub3cgcmVhZHkgdG8gYm9vdAoreW91ciBzaGlueSBuZXcga2VybmVsLiBFbmpveS4KKworQ2hhbmdpbmcgdGhlIGNvbmZpZ3VyYXRpb24KKworT0ssIHlvdSd2ZSBub3cgYm9vdGVkIGEgZGV2ZnMtZW5hYmxlZCBzeXN0ZW0sIGFuZCBldmVyeXRoaW5nIHdvcmtzLgorTm93IHlvdSBtYXkgZmVlbCBsaWtlIGNoYW5naW5nIHRoZSBjb25maWd1cmF0aW9uIChjb21tb24gdGFyZ2V0cyBhcmUKKy9ldGMvZnN0YWIgYW5kIC9ldGMvZGV2ZnNkLmNvbmYpLiBTaW5jZSB5b3UgaGF2ZSBhCitzeXN0ZW0gdGhhdCB3b3JrcywgaWYgeW91IG1ha2UgYW55IGNoYW5nZXMgYW5kIGl0IGRvZXNuJ3Qgd29yaywgeW91Citub3cga25vdyB0aGF0IHlvdSBvbmx5IGhhdmUgdG8gcmVzdG9yZSB5b3VyIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gdGhlCitkZWZhdWx0IGFuZCBpdCB3aWxsIHdvcmsgYWdhaW4uCisKKworUGVybWlzc2lvbnMgcGVyc2lzdGVuY2UgYWNyb3NzIHJlYm9vdHMKKworSWYgeW91IGRvbid0IHVzZSBta25vZCgyKSB0byBjcmVhdGUgYSBkZXZpY2UgZmlsZSwgbm9yIHVzZSBjaG1vZCgyKSBvcgorY2hvd24oMikgdG8gY2hhbmdlIHRoZSBvd25lcnNoaXBzL3Blcm1pc3Npb25zLCB0aGUgaW5vZGUgY3RpbWUgd2lsbAorcmVtYWluIGF0IDAgKHRoZSBlcG9jaCwgMTIgYW0sIDEtSkFOLTE5NzAsIEdNVCkuIEFueXRoaW5nIHdpdGggYSBjdGltZQorbGF0ZXIgdGhhbiB0aGlzIGhhcyBoYWQgaXQncyBvd25lcnNoaXAvcGVybWlzc2lvbnMgY2hhbmdlZC4gSGVuY2UsIGEKK3NpbXBsZSBzY3JpcHQgb3IgcHJvZ3JhbW1lIG1heSBiZSB1c2VkIHRvIHRhciB1cCBhbGwgY2hhbmdlZCBpbm9kZXMsCitwcmlvciB0byBzaHV0ZG93bi4gQWx0aG91Z2ggZWZmZWN0aXZlLCBtYW55IGNvbnNpZGVyIHRoaXMgYXBwcm9hY2ggYQora2x1ZGdlLgorCitBIG11Y2ggYmV0dGVyIGFwcHJvYWNoIGlzIHRvIHVzZSBkZXZmc2QgdG8gc2F2ZSBhbmQgcmVzdG9yZQorcGVybWlzc2lvbnMuIEl0IG1heSBiZSBjb25maWd1cmVkIHRvIHJlY29yZCBjaGFuZ2VzIGluIHBlcm1pc3Npb25zIGFuZAord2lsbCBzYXZlIHRoZW0gaW4gYSBkYXRhYmFzZSAoaW4gZmFjdCBhIGRpcmVjdG9yeSB0cmVlKSwgYW5kIHJlc3RvcmUKK3RoZXNlIHVwb24gYm9vdC4gVGhpcyBpcyBhbiBlZmZpY2llbnQgbWV0aG9kIGFuZCByZXN1bHRzIGluIGltbWVkaWF0ZQorc2F2aW5nIG9mIGN1cnJlbnQgcGVybWlzc2lvbnMgKHVubGlrZSB0aGUgdGFyIGFwcHJvYWNoLCB3aGljaCBzYXZlcworcGVybWlzc2lvbnMgYXQgc29tZSB1bnNwZWNpZmllZCBmdXR1cmUgdGltZSkuCisKK1RoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZSBzdXBwbGllZCB3aXRoIGRldmZzZCBoYXMgY29uZmlnIGVudHJpZXMKK3doaWNoIHlvdSBtYXkgdW5jb21tZW50IHRvIGVuYWJsZSBwZXJzaXN0ZW5jZSBtYW5hZ2VtZW50LgorCitJZiB5b3UgZGVjaWRlIHRvIHVzZSB0aGUgdGFyIGFwcHJvYWNoIGFueXdheSwgYmUgYXdhcmUgdGhhdCB0YXIgd2lsbAorZmlyc3QgdW5saW5rKDIpIGFuIGlub2RlIGJlZm9yZSBjcmVhdGluZyBhIG5ldyBkZXZpY2Ugbm9kZS4gVGhlCit1bmxpbmsoMikgaGFzIHRoZSBlZmZlY3Qgb2YgYnJlYWtpbmcgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBhIGRldmZzCitlbnRyeSBhbmQgdGhlIGRldmljZSBkcml2ZXIuIElmIHlvdSB1c2UgdGhlICJkZXZmcz1vbmx5IiBib290IG9wdGlvbiwKK3lvdSBsb3NlIGFjY2VzcyB0byB0aGUgZGV2aWNlIGRyaXZlciwgcmVxdWlyaW5nIHlvdSB0byByZWxvYWQgdGhlCittb2R1bGUuIEkgY29uc2lkZXIgdGhpcyBhIGJ1ZyBpbiB0YXIgKHRoZXJlIGlzIG5vIHJlYWwgbmVlZCB0bwordW5saW5rKDIpIHRoZSBpbm9kZSBmaXJzdCkuCisKK0FsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIGRldmZzZCB0byBwcm92aWRlIG1vcmUgc29waGlzdGljYXRlZAorbWFuYWdlbWVudCBvZiBkZXZpY2UgcGVybWlzc2lvbnMuIFlvdSBjYW4gdXNlIGRldmZzZCB0byBzdG9yZQorcGVybWlzc2lvbnMgZm9yIHdob2xlIGdyb3VwcyBvZiBkZXZpY2VzIHdpdGggYSBzaW5nbGUgY29uZmlndXJhdGlvbgorZW50cnksIHJhdGhlciB0aGFuIHRoZSBjb252ZW50aW9uYWwgc2luZ2xlIGVudHJ5IHBlciBkZXZpY2UgZW50cnkuCisKK1Blcm1pc3Npb25zIGRhdGFiYXNlIHN0b3JlZCBpbiBtb3VudGVkLW92ZXIgL2RldgorCitJZiB5b3Ugd2lzaCB0byBzYXZlIGFuZCByZXN0b3JlIHlvdXIgZGV2aWNlIHBlcm1pc3Npb25zIGludG8gdGhlCitkaXNjLWJhc2VkIC9kZXYgd2hpbGUgc3RpbGwgbW91bnRpbmcgZGV2ZnMgb250byAvZGV2Cit5b3UgbWF5IGRvIHNvLiBUaGlzIHJlcXVpcmVzIGEgMi40Lngga2VybmVsIChpbiBmYWN0LCAyLjMuOTkgb3IKK2xhdGVyKSwgd2hpY2ggaGFzIHRoZSBWRlMgYmluZGluZyBmYWNpbGl0eS4gWW91IG5lZWQgdG8gZG8gdGhlCitmb2xsb3dpbmcgdG8gc2V0IHRoaXMgdXA6CisKKworCittYWtlIHN1cmUgdGhlIGtlcm5lbCBkb2VzIG5vdCBtb3VudCBkZXZmcyBhdCBib290IHRpbWUKKworCittYWtlIHN1cmUgeW91IGhhdmUgYSBjb3JyZWN0IC9kZXYvY29uc29sZSBlbnRyeSBpbiB5b3VyCityb290IGZpbGUtc3lzdGVtICh3aGVyZSB5b3VyIGRpc2MtYmFzZWQgL2RldiBsaXZlcykKKworY3JlYXRlIHRoZSAvZGV2LXN0YXRlIGRpcmVjdG9yeQorCisKK2FkZCB0aGUgZm9sbG93aW5nIGxpbmVzIG5lYXIgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHlvdXIgYm9vdAorc2NyaXB0czoKKworbW91bnQgLS1iaW5kIC9kZXYgL2Rldi1zdGF0ZQorbW91bnQgLXQgZGV2ZnMgbm9uZSAvZGV2CitkZXZmc2QgL2RldgorCisKKworCithZGQgdGhlIGZvbGxvd2luZyBsaW5lcyB0byB5b3VyIC9ldGMvZGV2ZnNkLmNvbmYgZmlsZToKKworUkVHSVNURVIJXnB0W3N5XQkJSUdOT1JFCitDUkVBVEUJCV5wdFtzeV0JCUlHTk9SRQorQ0hBTkdFCQlecHRbc3ldCQlJR05PUkUKK0RFTEVURQkJXnB0W3N5XQkJSUdOT1JFCitSRUdJU1RFUgkuKgkJQ09QWQkvZGV2LXN0YXRlLyRkZXZuYW1lICRkZXZwYXRoCitDUkVBVEUJCS4qCQlDT1BZCSRkZXZwYXRoIC9kZXYtc3RhdGUvJGRldm5hbWUKK0NIQU5HRQkJLioJCUNPUFkJJGRldnBhdGggL2Rldi1zdGF0ZS8kZGV2bmFtZQorREVMRVRFCQkuKgkJQ0ZVTkNUSU9OIEdMT0JBTCB1bmxpbmsgL2Rldi1zdGF0ZS8kZGV2bmFtZQorUkVTVE9SRQkJL2Rldi1zdGF0ZQorCitOb3RlIHRoYXQgdGhlIHNhbXBsZSBkZXZmc2QuY29uZiBmaWxlIGNvbnRhaW5zIHRoZXNlIGxpbmVzLAorYXMgd2VsbCBhcyBvdGhlciBzYW1wbGUgY29uZmlndXJhdGlvbnMgeW91IG1heSBmaW5kIHVzZWZ1bC4gU2VlIHRoZQorZGV2ZnNkIGRpc3RyaWJ1dGlvbgorCisKK3JlYm9vdC4KKworCisKKworUGVybWlzc2lvbnMgZGF0YWJhc2Ugc3RvcmVkIGluIG5vcm1hbCBkaXJlY3RvcnkKKworSWYgeW91IGFyZSB1c2luZyBhbiBvbGRlciBrZXJuZWwgd2hpY2ggZG9lc24ndCBzdXBwb3J0IFZGUyBiaW5kaW5nLAordGhlbiB5b3Ugd29uJ3QgYmUgYWJsZSB0byBoYXZlIHRoZSBwZXJtaXNzaW9ucyBkYXRhYmFzZSBpbiBhCittb3VudGVkLW92ZXIgL2Rldi4gSG93ZXZlciwgeW91IGNhbiBzdGlsbCB1c2UgYSByZWd1bGFyCitkaXJlY3RvcnkgdG8gc3RvcmUgdGhlIGRhdGFiYXNlLiBUaGUgc2FtcGxlIC9ldGMvZGV2ZnNkLmNvbmYKK2ZpbGUgYWJvdmUgbWF5IHN0aWxsIGJlIHVzZWQuIFlvdSB3aWxsIG5lZWQgdG8gY3JlYXRlIHRoZQorL2Rldi1zdGF0ZSBkaXJlY3RvcnkgcHJpb3IgdG8gaW5zdGFsbGluZyBkZXZmc2QuIElmIHlvdSBoYXZlCitvbGQgcGVybWlzc2lvbnMgaW4gL2RldiwgdGhlbiBqdXN0IGNvcHkgKG9yIG1vdmUpIHRoZSBkZXZpY2UKK25vZGVzIG92ZXIgdG8gdGhlIG5ldyBkaXJlY3RvcnkuCisKK1doaWNoIG1ldGhvZCBpcyBiZXR0ZXI/CisKK1RoZSBiZXN0IG1ldGhvZCBpcyB0byBoYXZlIHRoZSBwZXJtaXNzaW9ucyBkYXRhYmFzZSBzdG9yZWQgaW4gdGhlCittb3VudGVkLW92ZXIgL2Rldi4gVGhpcyBpcyBiZWNhdXNlIHlvdSB3aWxsIG5vdCBuZWVkIHRvIGNvcHkKK2RldmljZSBub2RlcyBvdmVyIHRvIC9kZXYtc3RhdGUsIGFuZCBiZWNhdXNlIGl0IGFsbG93cyB5b3UgdG8KK3N3aXRjaCBiZXR3ZWVuIGRldmZzIGFuZCBub24tZGV2ZnMga2VybmVscywgd2l0aG91dCByZXF1aXJpbmcgeW91IHRvCitjb3B5IHBlcm1pc3Npb25zIGJldHdlZW4gL2Rldi1zdGF0ZSAoZm9yIGRldmZzKSBhbmQKKy9kZXYgKGZvciBub24tZGV2ZnMpLgorCisKK0RlYWxpbmcgd2l0aCBkcml2ZXJzIHdpdGhvdXQgZGV2ZnMgc3VwcG9ydAorCitDdXJyZW50bHksIG5vdCBhbGwgZGV2aWNlIGRyaXZlcnMgaW4gdGhlIGtlcm5lbCBoYXZlIGJlZW4gbW9kaWZpZWQgdG8KK3VzZSBkZXZmcy4gRGV2aWNlIGRyaXZlcnMgd2hpY2ggZG8gbm90IHlldCBoYXZlIGRldmZzIHN1cHBvcnQgd2lsbCBub3QKK2F1dG9tYWdpY2FsbHkgYXBwZWFyIGluIGRldmZzLiBUaGUgc2ltcGxlc3Qgd2F5IHRvIGNyZWF0ZSBkZXZpY2Ugbm9kZXMKK2ZvciB0aGVzZSBkcml2ZXJzIGlzIHRvIHVucGFjayBhIHRhcmZpbGUgY29udGFpbmluZyB0aGUgcmVxdWlyZWQKK2RldmljZSBub2Rlcy4gWW91IGNhbiBkbyB0aGlzIGluIHlvdXIgYm9vdCBzY3JpcHRzLiBBbGwgeW91ciBkcml2ZXJzCit3aWxsIG5vdyB3b3JrIGFzIGJlZm9yZS4KKworSG9wZWZ1bGx5IGZvciBtb3N0IHBlb3BsZSBkZXZmcyB3aWxsIGhhdmUgZW5vdWdoIHN1cHBvcnQgc28gdGhhdCB0aGV5CitjYW4gbW91bnQgZGV2ZnMgZGlyZWN0bHkgb3ZlciAvZGV2IHdpdGhvdXQgbG9zaW5nIG1vc3QgZnVuY3Rpb25hbGl0eQorKGkuZS4gbG9zaW5nIGFjY2VzcyB0byB2YXJpb3VzIGRldmljZXMpLiBBcyBvZiAyMi1KQU4tMTk5OCAoZGV2ZnMKK3BhdGNoIHZlcnNpb24gMTApIEkgYW0gbm93IHJ1bm5pbmcgdGhpcyB3YXkuIEFsbCB0aGUgZGV2aWNlcyBJIGhhdmUKK2FyZSBhdmFpbGFibGUgaW4gZGV2ZnMsIHNvIEkgZG9uJ3QgbG9zZSBhbnl0aGluZy4KKworV0FSTklORzogaWYgeW91ciBjb25maWd1cmF0aW9uIHJlcXVpcmVzIHRoZSBvbGQtc3R5bGUgZGV2aWNlIG5hbWVzCisoaS5lLiAvZGV2L2hkYTEgb3IgL2Rldi9zZGExKSwgeW91IG11c3QgaW5zdGFsbCBkZXZmc2QgYW5kIGNvbmZpZ3VyZQoraXQgdG8gbWFpbnRhaW4gY29tcGF0aWJpbGl0eSBlbnRyaWVzLiBJdCBpcyBhbG1vc3QgY2VydGFpbiB0aGF0IHlvdQord2lsbCByZXF1aXJlIHRoaXMuIE5vdGUgdGhhdCB0aGUga2VybmVsIGNyZWF0ZXMgYSBjb21wYXRpYmlsaXR5IGVudHJ5Citmb3IgdGhlIHJvb3QgZGV2aWNlLCBzbyB5b3UgZG9uJ3QgbmVlZCBpbml0cmQuCisKK05vdGUgdGhhdCB5b3Ugbm8gbG9uZ2VyIG5lZWQgdG8gbW91bnQgZGV2cHRzIGlmIHlvdSB1c2UgVW5peDk4IFBUWXMsCithcyBkZXZmcyBjYW4gbWFuYWdlIC9kZXYvcHRzIGl0c2VsZi4gVGhpcyBzYXZlcyB5b3Ugc29tZSBSQU0sIGFzIHlvdQorZG9uJ3QgbmVlZCB0byBjb21waWxlIGFuZCBpbnN0YWxsIGRldnB0cy4gTm90ZSB0aGF0IHNvbWUgdmVyc2lvbnMgb2YKK2dsaWJjIGhhdmUgYSBidWcgd2l0aCBVbml4OTggcHR5IGhhbmRsaW5nIG9uIGRldmZzIHN5c3RlbXMuIENvbnRhY3QKK3RoZSBnbGliYyBtYWludGFpbmVycyBmb3IgYSBmaXguIEdsaWJjIDIuMS4zIGhhcyB0aGUgZml4LgorCitOb3RlIGFsc28gdGhhdCBhcGFydCBmcm9tIGVkaXRpbmcgL2V0Yy9mc3RhYiwgb3RoZXIgdGhpbmdzIHdpbGwgbmVlZAordG8gYmUgY2hhbmdlZCBpZiB5b3UgKmRvbid0KiBpbnN0YWxsIGRldmZzZC4gU29tZSBzb2Z0d2FyZSAobGlrZSB0aGUgWAorc2VydmVyKSBoYXJkLXdpcmUgZGV2aWNlIG5hbWVzIGluIHRoZWlyIHNvdXJjZS4gSXQgcmVhbGx5IGlzIG11Y2gKK2Vhc2llciB0byBpbnN0YWxsIGRldmZzZCBzbyB0aGF0IGNvbXBhdGliaWxpdHkgZW50cmllcyBhcmUgY3JlYXRlZC4KK1lvdSBjYW4gdGhlbiBzbG93bHkgbWlncmF0ZSB5b3VyIHN5c3RlbSB0byB1c2luZyB0aGUgbmV3IGRldmljZSBuYW1lcworKGZvciBleGFtcGxlLCBieSBzdGFydGluZyB3aXRoIC9ldGMvZnN0YWIpLCBhbmQgdGhlbiBsaW1pdGluZyB0aGUKK2NvbXBhdGliaWxpdHkgZW50cmllcyB0aGF0IGRldmZzZCBjcmVhdGVzLgorCitJRiBZT1UgQ09ORklHVVJFIFRPIE1PVU5UIERFVkZTIEFUIEJPT1QsIE1BS0UgU1VSRSBZT1UgSU5TVEFMTCBERVZGU0QKK0JFRk9SRSBZT1UgQk9PVCBBIERFVkZTLUVOQUJMRUQgS0VSTkVMIQorCitOb3cgdGhhdCBkZXZmcyBoYXMgZ29uZSBpbnRvIHRoZSAyLjMuNDYga2VybmVsLCBJJ20gZ2V0dGluZyBhIGxvdCBvZgorcmVwb3J0cyBiYWNrLiBNYW55IG9mIHRoZXNlIGFyZSBiZWNhdXNlIHBlb3BsZSBhcmUgdHJ5aW5nIHRvIHJ1bgord2l0aG91dCBkZXZmc2QsIGFuZCBoZW5jZSBzb21lIHRoaW5ncyBicmVhay4gUGxlYXNlIGp1c3QgcnVuIGRldmZzZCBpZgordGhpbmdzIGJyZWFrLiBJIHdhbnQgdG8gY29uY2VudHJhdGUgb24gcmVhbCBidWdzIHJhdGhlciB0aGFuCittaXNjb25maWd1cmF0aW9uIHByb2JsZW1zIGF0IHRoZSBtb21lbnQuIElmIHBlb3BsZSBhcmUgd2lsbGluZyB0byBmaXgKK2J1Z3MvZmFsc2UgYXNzdW1wdGlvbnMgaW4gb3RoZXIgY29kZSAoaS5lLiBnbGliYywgWCBzZXJ2ZXIpIGFuZCBzdWJtaXQKK3RoYXQgdG8gdGhlIHJlc3BlY3RpdmUgbWFpbnRhaW5lcnMsIHRoYXQgd291bGQgYmUgZ3JlYXQuCisKKworQWxsIHRoZSB3YXkgd2l0aCBEZXZmcworCitUaGUgZGV2ZnMga2VybmVsIHBhdGNoIGNyZWF0ZXMgYSByYXRpb25hbGlzZWQgZGV2aWNlIHRyZWUuIEFzIHN0YXRlZAorYWJvdmUsIGlmIHlvdSB3YW50IHRvIGtlZXAgdXNpbmcgdGhlIG9sZCAvZGV2IG5hbWluZyBzY2hlbWUsCit5b3UganVzdCBuZWVkIHRvIGNvbmZpZ3VyZSBkZXZmc2QgYXBwb3ByaWF0ZWx5IChzZWUgdGhlIG1hbgorcGFnZSkuIFBlb3BsZSB3aG8gcHJlZmVyIHRoZSBvbGQgbmFtZXMgY2FuIGlnbm9yZSB0aGlzIHNlY3Rpb24uIEZvcgordGhvc2Ugb2YgdXMgd2hvIGxpa2UgdGhlIHJhdGlvbmFsaXNlZCBuYW1lcyBhbmQgYW4gdW5jbHV0dGVyZWQKKy9kZXYsIHJlYWQgb24uCisKK0lmIHlvdSBkb24ndCBydW4gZGV2ZnNkLCBvciBkb24ndCBlbmFibGUgY29tcGF0aWJpbGl0eSBlbnRyeQorbWFuYWdlbWVudCwgdGhlbiB5b3Ugd2lsbCBoYXZlIHRvIGNvbmZpZ3VyZSB5b3VyIHN5c3RlbSB0byB1c2UgdGhlIG5ldworbmFtZXMuIEZvciBleGFtcGxlLCB5b3Ugd2lsbCB0aGVuIG5lZWQgdG8gZWRpdCB5b3VyCisvZXRjL2ZzdGFiIHRvIHVzZSB0aGUgbmV3IGRpc2MgbmFtaW5nIHNjaGVtZS4gSWYgeW91IHdhbnQgdG8KK2JlIGFibGUgdG8gYm9vdCBub24tZGV2ZnMga2VybmVscywgeW91IHdpbGwgbmVlZCBjb21wYXRpYmlsaXR5CitzeW1saW5rcyBpbiB0aGUgdW5kZXJseWluZyBkaXNjLWJhc2VkIC9kZXYgcG9pbnRpbmcgYmFjayB0bwordGhlIG9sZC1zdHlsZSBuYW1lcyBmb3Igd2hlbiB5b3UgYm9vdCBhIGtlcm5lbCB3aXRob3V0IGRldmZzLgorCitZb3UgY2FuIHNlbGVjdGl2ZWx5IGRlY2lkZSB3aGljaCBkZXZpY2VzIHlvdSB3YW50IGNvbXBhdGliaWxpdHkKK2VudHJpZXMgZm9yLiBGb3IgZXhhbXBsZSwgeW91IG1heSBvbmx5IHdhbnQgY29tcGF0aWJpbGl0eSBlbnRyaWVzIGZvcgorQlNEIHBzZXVkby10ZXJtaW5hbCBkZXZpY2VzIChvdGhlcndpc2UgeW91J2xsIGhhdmUgdG8gcGF0Y2ggeW91IEMKK2xpYnJhcnkgb3IgdXNlIFVuaXg5OCBwdHlzIGluc3RlYWQpLiBJdCdzIGp1c3QgYSBtYXR0ZXIgb2YgcHV0dGluZyBpbgordGhlIGNvcnJlY3QgcmVndWxhciBleHByZXNzaW9uIGludG8gL2Rldi9kZXZmc2QuY29uZi4KKworVGhlcmUgYXJlIG90aGVyIGNob2ljZXMgb2YgbmFtaW5nIHNjaGVtZXMgdGhhdCB5b3UgbWF5IHByZWZlci4gRm9yCitleGFtcGxlLCBJIGRvbid0IHVzZSB0aGUga2VybmVsLXN1cHBsaWVkCituYW1lcywgYmVjYXVzZSB0aGV5IGFyZSB0b28gdmVyYm9zZS4gQSBjb21tb24gbWlzY29uY2VwdGlvbiBpcwordGhhdCB0aGUga2VybmVsLXN1cHBsaWVkIG5hbWVzIGFyZSBtZWFudCB0byBiZSB1c2VkIGRpcmVjdGx5IGluCitjb25maWd1cmF0aW9uIGZpbGVzLiBUaGlzIGlzIG5vdCB0aGUgY2FzZS4gVGhleSBhcmUgZGVzaWduZWQgdG8KK3JlZmxlY3QgdGhlIGxheW91dCBvZiB0aGUgZGV2aWNlcyBhdHRhY2hlZCBhbmQgdG8gcHJvdmlkZSBlYXN5CitjbGFzc2lmaWNhdGlvbi4KKworSWYgeW91IGxpa2UgdGhlIGtlcm5lbC1zdXBwbGllZCBuYW1lcywgdGhhdCdzIGZpbmUuIElmIHlvdSBkb24ndCB0aGVuCit5b3Ugc2hvdWxkIGJlIHVzaW5nIGRldmZzZCB0byBjb25zdHJ1Y3QgYSBuYW1lc3BhY2UgbW9yZSB0byB5b3VyCitsaWtpbmcuIERldmZzZCBoYXMgYnVpbHQtaW4gY29kZSB0byBjb25zdHJ1Y3QgYQorbmFtZXNwYWNlIHRoYXQgaXMgYm90aCBsb2dpY2FsIGFuZCBlYXN5IHRvCittYW5hZ2UuIEluIGVzc2VuY2UsIGl0IGNyZWF0ZXMgYSBjb252ZW5pZW50IGFiYnJldmlhdGlvbiBvZiB0aGUKK2tlcm5lbC1zdXBwbGllZCBuYW1lc3BhY2UuCisKK1lvdSBhcmUgb2YgY291cnNlIGZyZWUgdG8gYnVpbGQgeW91ciBvd24gbmFtZXNwYWNlLiBEZXZmc2QgaGFzIGFsbCB0aGUKK2luZnJhc3RydWN0dXJlIHJlcXVpcmVkIHRvIG1ha2UgdGhpcyBlYXN5IGZvciB5b3UuIEFsbCB5b3UgbmVlZCBkbyBpcword3JpdGUgYSBzY3JpcHQuIFlvdSBjYW4gZXZlbiB3cml0ZSBzb21lIEMgY29kZSBhbmQgZGV2ZnNkIGNhbiBsb2FkIHRoZQorc2hhcmVkIG9iamVjdCBhcyBhIGNhbGxhYmxlIGV4dGVuc2lvbi4KKworCitPdGhlciBJc3N1ZXMKKworVGhlIGluaXQgcHJvZ3JhbW1lCitBbm90aGVyIHRoaW5nIHRvIHRha2Ugbm90ZSBvZiBpcyB3aGV0aGVyIHlvdXIgaW5pdCBwcm9ncmFtbWUKK2NyZWF0ZXMgYSBVbml4IHNvY2tldCAvZGV2L3RlbGluaXQuIFNvbWUgdmVyc2lvbnMgb2YgaW5pdAorY3JlYXRlIC9kZXYvdGVsaW5pdCBzbyB0aGF0IHRoZSB0ZWxpbml0IHByb2dyYW1tZSBjYW4KK2NvbW11bmljYXRlIHdpdGggdGhlIGluaXQgcHJvY2Vzcy4gSWYgeW91IGhhdmUgc3VjaCBhIHN5c3RlbSB5b3UgbmVlZAordG8gbWFrZSBzdXJlIHRoYXQgZGV2ZnMgaXMgbW91bnRlZCBvdmVyIC9kZXYgKmJlZm9yZSogaW5pdAorc3RhcnRzLiBJbiBvdGhlciB3b3JkcywgeW91IGNhbid0IGxlYXZlIHRoZSBtb3VudGluZyBvZiBkZXZmcyB0bworL2V0Yy9yYywgc2luY2UgdGhpcyBpcyBleGVjdXRlZCBhZnRlciBpbml0LiBPdGhlcgordmVyc2lvbnMgb2YgaW5pdCByZXF1aXJlIGEgbmFtZWQgcGlwZSAvZGV2L2luaXRjdGwKK3doaWNoIG11c3QgZXhpc3QgKmJlZm9yZSogaW5pdCBzdGFydHMuIE9uY2UgYWdhaW4sIHlvdSBuZWVkIHRvCittb3VudCBkZXZmcyBhbmQgdGhlbiBjcmVhdGUgdGhlIG5hbWVkIHBpcGUgKmJlZm9yZSogaW5pdAorc3RhcnRzLgorCitUaGUgZGVmYXVsdCBiZWhhdmlvdXIgbm93IGlzIG5vdCB0byBtb3VudCBkZXZmcyBvbnRvIC9kZXYgYXQKK2Jvb3QgdGltZSBmb3IgMi4zLnggYW5kIGxhdGVyIGtlcm5lbHMuIFlvdSBjYW4gY29ycmVjdCB0aGlzIHdpdGggdGhlCisiZGV2ZnM9bW91bnQiIGJvb3Qgb3B0aW9uLiBUaGlzIHNvbHZlcyBhbnkgcHJvYmxlbXMgd2l0aCBpbml0LAorYW5kIGFsc28gcHJldmVudHMgdGhlIGRyZWFkZWQ6CisKK0Nhbm5vdCBvcGVuIGluaXRpYWwgY29uc29sZQorCittZXNzYWdlLiBGb3IgMi4yLngga2VybmVscyB3aGVyZSB5b3UgbmVlZCB0byBhcHBseSB0aGUgZGV2ZnMgcGF0Y2gsCit0aGUgZGVmYXVsdCBpcyB0byBtb3VudC4KKworSWYgeW91IGhhdmUgYXV0b21hdGljIG1vdW50aW5nIG9mIGRldmZzIG9udG8gL2RldiB0aGVuIHlvdQorbWF5IG5lZWQgdG8gY3JlYXRlIC9kZXYvaW5pdGN0bCBpbiB5b3VyIGJvb3Qgc2NyaXB0cy4gVGhlCitmb2xsb3dpbmcgbGluZXMgc2hvdWxkIHN1ZmZpY2U6CisKK21rbm9kIC9kZXYvaW5pdGN0bCBwCitraWxsIC1TSUdVU1IxIDEgICAgICAgIyB0ZWxsIGluaXQgdGhhdCAvZGV2L2luaXRjdGwgbm93IGV4aXN0cworCitBbHRlcm5hdGl2ZWx5LCBpZiB5b3UgZG9uJ3Qgd2FudCB0aGUga2VybmVsIHRvIG1vdW50IGRldmZzIG9udG8KKy9kZXYgdGhlbiB5b3UgY291bGQgdXNlIHRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlIGlzIGEKK2d1aWRlbGluZSBmb3IgaG93IHRvIGdldCBhcm91bmQgL2Rldi9pbml0Y3RsIHByb2JsZW1zOgorCisjIGNkIC9zYmluCisjIG12IGluaXQgaW5pdC5yZWFsCisjIGNhdCA+IGluaXQKKyMhIC9iaW4vc2gKK21vdW50IC1uIC10IGRldmZzIG5vbmUgL2RldgorbWtub2QgL2Rldi9pbml0Y3RsIHAKK2V4ZWMgL3NiaW4vaW5pdC5yZWFsICQqCitbY29udHJvbC1EXQorIyBjaG1vZCBhK3ggaW5pdAorCitOb3RlIHRoYXQgbmV3ZXIgdmVyc2lvbnMgb2YgaW5pdCBjcmVhdGUgL2Rldi9pbml0Y3RsCithdXRvbWF0aWNhbGx5LCBzbyB5b3UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB0aGlzLgorCitNb2R1bGUgYXV0b2xvYWRpbmcKK1lvdSB3aWxsIG5lZWQgdG8gY29uZmlndXJlIGRldmZzZCB0byBlbmFibGUgbW9kdWxlCithdXRvbG9hZGluZy4gVGhlIGZvbGxvd2luZyBsaW5lcyBzaG91bGQgYmUgcGxhY2VkIGluIHlvdXIKKy9ldGMvZGV2ZnNkLmNvbmYgZmlsZToKKworTE9PS1VQCS4qCQlNT0RMT0FECisKKworQXMgb2YgZGV2ZnNkLXYxLjMuMTAsIGEgZ2VuZXJpYyAvZXRjL21vZHVsZXMuZGV2ZnMKK2NvbmZpZ3VyYXRpb24gZmlsZSBpcyBpbnN0YWxsZWQsIHdoaWNoIGlzIHVzZWQgYnkgdGhlIE1PRExPQUQKK2FjdGlvbi4gVGhpcyBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgbW9zdCBjb25maWd1cmF0aW9ucy4gSWYgeW91CityZXF1aXJlIGZ1cnRoZXIgY29uZmlndXJhdGlvbiwgZWRpdCB5b3VyIC9ldGMvbW9kdWxlcy5jb25mCitmaWxlLiBUaGUgd2F5IG1vZHVsZSBhdXRvbG9hZGluZyB3b3JrIHdpdGggZGV2ZnMgaXM6CisKKworYSBwcm9jZXNzIGF0dGVtcHRzIHRvIGxvb2t1cCBhIGRldmljZSBub2RlIChlLmcuIC9kZXYvZnJlZCkKKworCitpZiB0aGF0IGRldmljZSBub2RlIGRvZXMgbm90IGV4aXN0LCB0aGUgZnVsbCBwYXRobmFtZSBpcyBwYXNzZWQgdG8KK2RldmZzZCBhcyBhIHN0cmluZworCisKK2RldmZzZCB3aWxsIHBhc3MgdGhlIHN0cmluZyB0byB0aGUgbW9kcHJvYmUgcHJvZ3JhbW1lIChwcm92aWRlZCB0aGUKK2NvbmZpZ3VyYXRpb24gbGluZSBzaG93biBhYm92ZSBpcyBwcmVzZW50KSwgYW5kIHNwZWNpZmllcyB0aGF0CisvZXRjL21vZHVsZXMuZGV2ZnMgaXMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZQorCisKKy9ldGMvbW9kdWxlcy5kZXZmcyBpbmNsdWRlcyAvZXRjL21vZHVsZXMuY29uZiB0bworYWNjZXNzIGxvY2FsIGNvbmZpZ3VyYXRpb25zCisKK21vZHByb2JlIHdpbGwgc2VhcmNoIGl0J3MgY29uZmlndXJhdGlvbiBmaWxlcywgbG9va2luZyBmb3IgYW4gYWxpYXMKK3RoYXQgdHJhbnNsYXRlcyB0aGUgcGF0aG5hbWUgaW50byBhIG1vZHVsZSBuYW1lCisKKwordGhlIHRyYW5zbGF0ZWQgcGF0aG5hbWUgaXMgdGhlbiB1c2VkIHRvIGxvYWQgdGhlIG1vZHVsZS4KKworCitJZiB5b3Ugd2FudGVkIGEgbG9va3VwIG9mIC9kZXYvZnJlZCB0byBsb2FkIHRoZQorbXltb2QgbW9kdWxlLCB5b3Ugd291bGQgcmVxdWlyZSB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24KK2xpbmUgaW4gL2V0Yy9tb2R1bGVzLmNvbmY6CisKK2FsaWFzICAgIC9kZXYvZnJlZCAgICBteW1vZAorCitUaGUgL2V0Yy9tb2R1bGVzLmRldmZzIGNvbmZpZ3VyYXRpb24gZmlsZSBwcm92aWRlcyBtYW55IHN1Y2gKK2FsaWFzZXMgZm9yIHN0YW5kYXJkIGRldmljZSBuYW1lcy4gSWYgeW91IGxvb2sgY2xvc2VseSBhdCB0aGlzIGZpbGUsCit5b3Ugd2lsbCBub3RlIHRoYXQgc29tZSBtb2R1bGVzIHJlcXVpcmUgbXVsdGlwbGUgYWxpYXMgY29uZmlndXJhdGlvbgorbGluZXMuIFRoaXMgaXMgcmVxdWlyZWQgdG8gc3VwcG9ydCBtb2R1bGUgYXV0b2xvYWRpbmcgZm9yIG9sZCBhbmQgbmV3CitkZXZpY2UgbmFtZXMuCisKK01vdW50aW5nIHJvb3Qgb2ZmIGEgZGV2ZnMgZGV2aWNlCitJZiB5b3Ugd2lzaCB0byBtb3VudCByb290IG9mZiBhIGRldmZzIGRldmljZSB3aGVuIHlvdSBwYXNzIHRoZQorImRldmZzPW9ubHkiIGJvb3Qgb3B0aW9uLCB0aGVuIHlvdSBuZWVkIHRvIHBhc3MgaW4gdGhlCisicm9vdD08ZGV2aWNlPiIgb3B0aW9uIHRvIHRoZSBrZXJuZWwgd2hlbiBib290aW5nLiBJZiB5b3UgdXNlCitMSUxPLCB0aGVuIHlvdSBtdXN0IGhhdmUgdGhpcyBpbiBsaWxvLmNvbmY6CisKK2FwcGVuZCA9ICJyb290PTxkZXZpY2U+IgorCitTdXJwcmlzZWQ/IFllcCwgc28gd2FzIEkuIEl0IHR1cm5zIG91dCBpZiB5b3UgaGF2ZSAoYXMgbW9zdCBwZW9wbGUKK2RvKToKKworcm9vdCA9IDxkZXZpY2U+CisKKwordGhlbiBMSUxPIHdpbGwgZGV0ZXJtaW5lIHRoZSBkZXZpY2UgbnVtYmVyIG9mIDxkZXZpY2U+IGFuZCB3aWxsCit3cml0ZSB0aGF0IGRldmljZSBudW1iZXIgaW50byBhIHNwZWNpYWwgcGxhY2UgaW4gdGhlIGtlcm5lbCBpbWFnZQorYmVmb3JlIHN0YXJ0aW5nIHRoZSBrZXJuZWwsIGFuZCB0aGUga2VybmVsIHdpbGwgdXNlIHRoYXQgZGV2aWNlIG51bWJlcgordG8gbW91bnQgdGhlIHJvb3QgZmlsZXN5c3RlbS4gU28sIHVzaW5nIHRoZSAiYXBwZW5kIiB2YXJpZXR5IGVuc3VyZXMKK3RoYXQgTElMTyBwYXNzZXMgdGhlIHJvb3QgZmlsZXN5c3RlbSBkZXZpY2UgYXMgYSBzdHJpbmcsIHdoaWNoIGRldmZzCitjYW4gdGhlbiB1c2UuCisKK05vdGUgdGhhdCB0aGlzIGlzbid0IGFuIGlzc3VlIGlmIHlvdSBkb24ndCBwYXNzICJkZXZmcz1vbmx5Ii4KKworVFRZIGlzc3VlcworVGhlIHR0eW5hbWUoMykgZnVuY3Rpb24gaW4gc29tZSB2ZXJzaW9ucyBvZiB0aGUgQyBsaWJyYXJ5IG1ha2VzCitmYWxzZSBhc3N1bXB0aW9ucyBhYm91dCBkZXZpY2UgZW50cmllcyB3aGljaCBhcmUgc3ltYm9saWMgbGlua3MuICBUaGUKK3R0eSgxKSBwcm9ncmFtbWUgaXMgb25lIHRoYXQgZGVwZW5kcyBvbiB0aGlzIGZ1bmN0aW9uLiAgSSd2ZQord3JpdHRlbiBhIHBhdGNoIHRvIGxpYmMgNS40LjQzIHdoaWNoIGZpeGVzIHRoaXMuIFRoaXMgaGFzIGJlZW4KK2luY2x1ZGVkIGluIGxpYmMgNS40LjQ0IGFuZCBhIHNpbWlsYXIgZml4IGlzIGluIGdsaWJjIDIuMS4zLgorCisKK0tlcm5lbCBOYW1pbmcgU2NoZW1lCisKK1RoZSBrZXJuZWwgcHJvdmlkZXMgYSBkZWZhdWx0IG5hbWluZyBzY2hlbWUuIFRoaXMgc2NoZW1lIGlzIGRlc2lnbmVkCit0byBtYWtlIGl0IGVhc3kgdG8gc2VhcmNoIGZvciBzcGVjaWZpYyBkZXZpY2VzIG9yIGRldmljZSB0eXBlcywgYW5kIHRvCit2aWV3IHRoZSBhdmFpbGFibGUgZGV2aWNlcy4gU29tZSBkZXZpY2UgdHlwZXMgKHN1Y2ggYXMgaGFyZCBkaXNjcyksCitoYXZlIGEgZGlyZWN0b3J5IG9mIGVudHJpZXMsIG1ha2luZyBpdCBlYXN5IHRvIHNlZSB3aGF0IGRldmljZXMgb2YKK3RoYXQgY2xhc3MgYXJlIGF2YWlsYWJsZS4gT2Z0ZW4sIHRoZSBlbnRyaWVzIGFyZSBzeW1ib2xpYyBsaW5rcyBpbnRvIGEKK2RpcmVjdG9yeSB0cmVlIHRoYXQgcmVmbGVjdHMgdGhlIHRvcG9sb2d5IG9mIGF2YWlsYWJsZSBkZXZpY2VzLiBUaGUKK3RvcG9sb2dpY2FsIHRyZWUgaXMgdXNlZnVsIGZvciBmaW5kaW5nIGhvdyB5b3VyIGRldmljZXMgYXJlIGFycmFuZ2VkLgorCitCZWxvdyBpcyBhIGxpc3Qgb2YgdGhlIG5hbWluZyBzY2hlbWVzIGZvciB0aGUgbW9zdCBjb21tb24gZHJpdmVycy4gQQorbGlzdCBvZiByZXNlcnZlZCBkZXZpY2UgbmFtZXMgaXMKK2F2YWlsYWJsZSBmb3IgcmVmZXJlbmNlLiBQbGVhc2Ugc2VuZCBlbWFpbCB0bworcmdvb2NoQGF0bmYuY3Npcm8uYXUgdG8gb2J0YWluIGFuIGFsbG9jYXRpb24uIFBsZWFzZSBiZQorcGF0aWVudCAodGhlIG1haW50YWluZXIgaXMgYnVzeSkuIEFuIGFsdGVybmF0aXZlIG5hbWUgbWF5IGJlIGFsbG9jYXRlZAoraW5zdGVhZCBvZiB0aGUgcmVxdWVzdGVkIG5hbWUsIGF0IHRoZSBkaXNjcmV0aW9uIG9mIHRoZSBtYWludGFpbmVyLgorCitEaXNjIERldmljZXMKKworQWxsIGRpc2NzLCB3aGV0aGVyIFNDU0ksIElERSBvciB3aGF0ZXZlciwgYXJlIHBsYWNlZCB1bmRlciB0aGUKKy9kZXYvZGlzY3MgaGllcmFyY2h5OgorCisJL2Rldi9kaXNjcy9kaXNjMAlmaXJzdCBkaXNjCisJL2Rldi9kaXNjcy9kaXNjMQlzZWNvbmQgZGlzYworCisKK0VhY2ggb2YgdGhlc2UgZW50cmllcyBpcyBhIHN5bWJvbGljIGxpbmsgdG8gdGhlIGRpcmVjdG9yeSBmb3IgdGhhdAorZGV2aWNlLiBUaGUgZGV2aWNlIGRpcmVjdG9yeSBjb250YWluczoKKworCWRpc2MJZm9yIHRoZSB3aG9sZSBkaXNjCisJcGFydCoJZm9yIGluZGl2aWR1YWwgcGFydGl0aW9ucworCisKK0NELVJPTSBEZXZpY2VzCisKK0FsbCBDRC1ST01zLCB3aGV0aGVyIFNDU0ksIElERSBvciB3aGF0ZXZlciwgYXJlIHBsYWNlZCB1bmRlciB0aGUKKy9kZXYvY2Ryb21zIGhpZXJhcmNoeToKKworCS9kZXYvY2Ryb21zL2Nkcm9tMAlmaXJzdCBDRC1ST00KKwkvZGV2L2Nkcm9tcy9jZHJvbTEJc2Vjb25kIENELVJPTQorCisKK0VhY2ggb2YgdGhlc2UgZW50cmllcyBpcyBhIHN5bWJvbGljIGxpbmsgdG8gdGhlIHJlYWwgZGV2aWNlIGVudHJ5IGZvcgordGhhdCBkZXZpY2UuCisKK1RhcGUgRGV2aWNlcworCitBbGwgdGFwZXMsIHdoZXRoZXIgU0NTSSwgSURFIG9yIHdoYXRldmVyLCBhcmUgcGxhY2VkIHVuZGVyIHRoZQorL2Rldi90YXBlcyBoaWVyYXJjaHk6CisKKwkvZGV2L3RhcGVzL3RhcGUwCWZpcnN0IHRhcGUKKwkvZGV2L3RhcGVzL3RhcGUxCXNlY29uZCB0YXBlCisKKworRWFjaCBvZiB0aGVzZSBlbnRyaWVzIGlzIGEgc3ltYm9saWMgbGluayB0byB0aGUgZGlyZWN0b3J5IGZvciB0aGF0CitkZXZpY2UuIFRoZSBkZXZpY2UgZGlyZWN0b3J5IGNvbnRhaW5zOgorCisJbXQJCQlmb3IgbW9kZSAwCisJbXRsCQkJZm9yIG1vZGUgMQorCW10bQkJCWZvciBtb2RlIDIKKwltdGEJCQlmb3IgbW9kZSAzCisJbXRuCQkJZm9yIG1vZGUgMCwgbm8gcmV3aW5kCisJbXRsbgkJCWZvciBtb2RlIDEsIG5vIHJld2luZAorCW10bW4JCQlmb3IgbW9kZSAyLCBubyByZXdpbmQKKwltdGFuCQkJZm9yIG1vZGUgMywgbm8gcmV3aW5kCisKKworU0NTSSBEZXZpY2VzCisKK1RvIHVuaXF1ZWx5IGlkZW50aWZ5IGFueSBTQ1NJIGRldmljZSByZXF1aXJlcyB0aGUgZm9sbG93aW5nCitpbmZvcm1hdGlvbjoKKworICBjb250cm9sbGVyCShob3N0IGFkYXB0ZXIpCisgIGJ1cwkJKFNDU0kgY2hhbm5lbCkKKyAgdGFyZ2V0CShTQ1NJIElEKQorICB1bml0CQkoTG9naWNhbCBVbml0IE51bWJlcikKKworCitBbGwgU0NTSSBkZXZpY2VzIGFyZSBwbGFjZWQgdW5kZXIgL2Rldi9zY3NpIChhc3N1bWluZyBkZXZmcworaXMgbW91bnRlZCBvbiAvZGV2KS4gSGVuY2UsIGEgU0NTSSBkZXZpY2Ugd2l0aCB0aGUgZm9sbG93aW5nCitwYXJhbWV0ZXJzOiBjPTEsYj0yLHQ9Myx1PTQgd291bGQgYXBwZWFyIGFzOgorCisJL2Rldi9zY3NpL2hvc3QxL2J1czIvdGFyZ2V0My9sdW40CWRldmljZSBkaXJlY3RvcnkKKworCitJbnNpZGUgdGhpcyBkaXJlY3RvcnksIGEgbnVtYmVyIG9mIGRldmljZSBlbnRyaWVzIG1heSBiZSBjcmVhdGVkLAorZGVwZW5kaW5nIG9uIHdoaWNoIFNDU0kgZGV2aWNlLXR5cGUgZHJpdmVycyB3ZXJlIGluc3RhbGxlZC4KKworU2VlIHRoZSBzZWN0aW9uIG9uIHRoZSBkaXNjIG5hbWluZyBzY2hlbWUgdG8gc2VlIHdoYXQgZW50cmllcyB0aGUgU0NTSQorZGlzYyBkcml2ZXIgY3JlYXRlcy4KKworU2VlIHRoZSBzZWN0aW9uIG9uIHRoZSB0YXBlIG5hbWluZyBzY2hlbWUgdG8gc2VlIHdoYXQgZW50cmllcyB0aGUgU0NTSQordGFwZSBkcml2ZXIgY3JlYXRlcy4KKworVGhlIFNDU0kgQ0QtUk9NIGRyaXZlciBjcmVhdGVzOgorCisJY2QKKworCitUaGUgU0NTSSBnZW5lcmljIGRyaXZlciBjcmVhdGVzOgorCisJZ2VuZXJpYworCisKK0lERSBEZXZpY2VzCisKK1RvIHVuaXF1ZWx5IGlkZW50aWZ5IGFueSBJREUgZGV2aWNlIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcKK2luZm9ybWF0aW9uOgorCisgIGNvbnRyb2xsZXIKKyAgYnVzCQkoYWthLiBwcmltYXJ5L3NlY29uZGFyeSkKKyAgdGFyZ2V0CShha2EuIG1hc3Rlci9zbGF2ZSkKKyAgdW5pdAorCisKK0FsbCBJREUgZGV2aWNlcyBhcmUgcGxhY2VkIHVuZGVyIC9kZXYvaWRlLCBhbmQgdXNlcyBhIHNpbWlsYXIKK25hbWluZyBzY2hlbWUgdG8gdGhlIFNDU0kgc3Vic3lzdGVtLgorCitYVCBIYXJkIERpc2NzCisKK0FsbCBYVCBkaXNjcyBhcmUgcGxhY2VkIHVuZGVyIC9kZXYveGQuIFRoZSBmaXJzdCBYVCBkaXNjIGhhcwordGhlIGRpcmVjdG9yeSAvZGV2L3hkL2Rpc2MwLgorCitUVFkgZGV2aWNlcworCitUaGUgdHR5IGRldmljZXMgbm93IGFwcGVhciBhczoKKworICBOZXcgbmFtZSAgICAgICAgICAgICAgICAgICBPbGQtbmFtZSAgICAgICAgICAgICAgICAgICBEZXZpY2UgVHlwZQorICAtLS0tLS0tLSAgICAgICAgICAgICAgICAgICAtLS0tLS0tLSAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLQorICAvZGV2L3R0cy97MCwxLC4uLn0gICAgICAgICAvZGV2L3R0eVN7MCwxLC4uLn0gICAgICAgICBTZXJpYWwgcG9ydHMKKyAgL2Rldi9jdWEvezAsMSwuLi59ICAgICAgICAgL2Rldi9jdWF7MCwxLC4uLn0gICAgICAgICAgQ2FsbCBvdXQgZGV2aWNlcworICAvZGV2L3ZjLzAgICAgICAgICAgICAgICAgICAvZGV2L3R0eSAgICAgICAgICAgICAgICAgICBDdXJyZW50IHZpcnR1YWwgY29uc29sZQorICAvZGV2L3ZjL3sxLDIsLi4ufSAgICAgICAgICAvZGV2L3R0eXsxLi4uNjN9ICAgICAgICAgICBWaXJ0dWFsIGNvbnNvbGVzCisgIC9kZXYvdmNjL3swLDEsLi4ufSAgICAgICAgIC9kZXYvdmNzezEuLi42M30gICAgICAgICAgIFZpcnR1YWwgY29uc29sZXMKKyAgL2Rldi9wdHkvbXswLDEsLi4ufSAgICAgICAgL2Rldi9wdHlwPz8gICAgICAgICAgICAgICAgUFRZIG1hc3RlcnMKKyAgL2Rldi9wdHkvc3swLDEsLi4ufSAgICAgICAgL2Rldi90dHlwPz8gICAgICAgICAgICAgICAgUFRZIHNsYXZlcworCisKK1JBTURJU0NTCisKK1RoZSBSQU1ESVNDUyBhcmUgcGxhY2VkIGluIHRoZWlyIG93biBkaXJlY3RvcnksIGFuZCBhcmUgbmFtZWQgdGh1czoKKworICAvZGV2L3JkL3swLDEsMiwuLi59CisKKworTWV0YSBEZXZpY2VzCisKK1RoZSBtZXRhIGRldmljZXMgYXJlIHBsYWNlZCBpbiB0aGVpciBvd24gZGlyZWN0b3J5LCBhbmQgYXJlIG5hbWVkCit0aHVzOgorCisgIC9kZXYvbWQvezAsMSwyLC4uLn0KKworCitGbG9wcHkgZGlzY3MKKworRmxvcHB5IGRpc2NzIGFyZSBwbGFjZWQgaW4gdGhlIC9kZXYvZmxvcHB5IGRpcmVjdG9yeS4KKworTG9vcCBkZXZpY2VzCisKK0xvb3AgZGV2aWNlcyBhcmUgcGxhY2VkIGluIHRoZSAvZGV2L2xvb3AgZGlyZWN0b3J5LgorCitTb3VuZCBkZXZpY2VzCisKK1NvdW5kIGRldmljZXMgYXJlIHBsYWNlZCBpbiB0aGUgL2Rldi9zb3VuZCBkaXJlY3RvcnkKKyhhdWRpbywgc2VxdWVuY2VyLCAuLi4pLgorCisKK0RldmZzZCBOYW1pbmcgU2NoZW1lCisKK0RldmZzZCBwcm92aWRlcyBhIG5hbWluZyBzY2hlbWUgd2hpY2ggaXMgYSBjb252ZW5pZW50IGFiYnJldmlhdGlvbiBvZgordGhlIGtlcm5lbC1zdXBwbGllZCBuYW1lc3BhY2UuIEluIHNvbWUKK2Nhc2VzLCB0aGUga2VybmVsLXN1cHBsaWVkIG5hbWluZyBzY2hlbWUgaXMgcXVpdGUgY29udmVuaWVudCwgc28KK2RldmZzZCBkb2VzIG5vdCBwcm92aWRlIGFub3RoZXIgbmFtaW5nIHNjaGVtZS4gVGhlIGNvbnZlbmllbmNlIG5hbWVzCit0aGF0IGRldmZzZCBjcmVhdGVzIGFyZSBpbiBmYWN0IHRoZSBzYW1lIG5hbWVzIGFzIHRoZSBvcmlnaW5hbCBkZXZmcwora2VybmVsIHBhdGNoIGNyZWF0ZWQgKGJlZm9yZSBMaW51cyBtYW5kYXRlZCB0aGUgQmlnIE5hbWUKK0NoYW5nZSkuIFRoZXNlIGFyZSByZWZlcnJlZCB0byBhcyAibmV3IGNvbXBhdGliaWxpdHkgZW50cmllcyIuCisKK0luIG9yZGVyIHRvIGNvbmZpZ3VyZSBkZXZmc2QgdG8gY3JlYXRlIHRoZXNlIGNvbnZlbmllbmNlIG5hbWVzLCB0aGUKK2ZvbGxvd2luZyBsaW5lcyBzaG91bGQgYmUgcGxhY2VkIGluIHlvdXIgL2V0Yy9kZXZmc2QuY29uZjoKKworUkVHSVNURVIJLioJCU1LTkVXQ09NUEFUCitVTlJFR0lTVEVSCS4qCQlSTU5FV0NPTVBBVAorCitUaGlzIHdpbGwgY2F1c2UgZGV2ZnNkIHRvIGNyZWF0ZSAoYW5kIGRlc3Ryb3kpIHN5bWJvbGljIGxpbmtzIHdoaWNoCitwb2ludCB0byB0aGUga2VybmVsLXN1cHBsaWVkIG5hbWVzLgorCitTQ1NJIEhhcmQgRGlzY3MKKworQWxsIFNDU0kgZGlzY3MgYXJlIHBsYWNlZCB1bmRlciAvZGV2L3NkIChhc3N1bWluZyBkZXZmcyBpcworbW91bnRlZCBvbiAvZGV2KS4gSGVuY2UsIGEgU0NTSSBkaXNjIHdpdGggdGhlIGZvbGxvd2luZworcGFyYW1ldGVyczogYz0xLGI9Mix0PTMsdT00IHdvdWxkIGFwcGVhciBhczoKKworCS9kZXYvc2QvYzFiMnQzdTQJZm9yIHRoZSB3aG9sZSBkaXNjCisJL2Rldi9zZC9jMWIydDN1NHA1CWZvciB0aGUgNXRoIHBhcnRpdGlvbgorCS9kZXYvc2QvYzFiMnQzdTRwNXM2CWZvciB0aGUgNnRoIHNsaWNlIGluIHRoZSA1dGggcGFydGl0aW9uCisKKworU0NTSSBUYXBlcworCitBbGwgU0NTSSB0YXBlcyBhcmUgcGxhY2VkIHVuZGVyIC9kZXYvc3QuIEEgc2ltaWxhciBuYW1pbmcKK3NjaGVtZSBpcyB1c2VkIGFzIGZvciBTQ1NJIGRpc2NzLiBBIFNDU0kgdGFwZSB3aXRoIHRoZQorcGFyYW1ldGVyczpjPTEsYj0yLHQ9Myx1PTQgd291bGQgYXBwZWFyIGFzOgorCisJL2Rldi9zdC9jMWIydDN1NG0wCWZvciBtb2RlIDAKKwkvZGV2L3N0L2MxYjJ0M3U0bTEJZm9yIG1vZGUgMQorCS9kZXYvc3QvYzFiMnQzdTRtMglmb3IgbW9kZSAyCisJL2Rldi9zdC9jMWIydDN1NG0zCWZvciBtb2RlIDMKKwkvZGV2L3N0L2MxYjJ0M3U0bTBuCWZvciBtb2RlIDAsIG5vIHJld2luZAorCS9kZXYvc3QvYzFiMnQzdTRtMW4JZm9yIG1vZGUgMSwgbm8gcmV3aW5kCisJL2Rldi9zdC9jMWIydDN1NG0ybglmb3IgbW9kZSAyLCBubyByZXdpbmQKKwkvZGV2L3N0L2MxYjJ0M3U0bTNuCWZvciBtb2RlIDMsIG5vIHJld2luZAorCisKK1NDU0kgQ0QtUk9NcworCitBbGwgU0NTSSBDRC1ST01zIGFyZSBwbGFjZWQgdW5kZXIgL2Rldi9zci4gQSBzaW1pbGFyIG5hbWluZworc2NoZW1lIGlzIHVzZWQgYXMgZm9yIFNDU0kgZGlzY3MuIEEgU0NTSSBDRC1ST00gd2l0aCB0aGUKK3BhcmFtZXRlcnM6Yz0xLGI9Mix0PTMsdT00IHdvdWxkIGFwcGVhciBhczoKKworCS9kZXYvc3IvYzFiMnQzdTQKKworCitTQ1NJIEdlbmVyaWMgRGV2aWNlcworCitUaGUgZ2VuZXJpYyAoYWthLiByYXcpIGludGVyZmFjZSBmb3IgYWxsIFNDU0kgZGV2aWNlcyBhcmUgcGxhY2VkIHVuZGVyCisvZGV2L3NnLiBBIHNpbWlsYXIgbmFtaW5nIHNjaGVtZSBpcyB1c2VkIGFzIGZvciBTQ1NJIGRpc2NzLiBBCitTQ1NJIGdlbmVyaWMgZGV2aWNlIHdpdGggdGhlIHBhcmFtZXRlcnM6Yz0xLGI9Mix0PTMsdT00IHdvdWxkIGFwcGVhcgorYXM6CisKKwkvZGV2L3NnL2MxYjJ0M3U0CisKKworSURFIEhhcmQgRGlzY3MKKworQWxsIElERSBkaXNjcyBhcmUgcGxhY2VkIHVuZGVyIC9kZXYvaWRlL2hkLCB1c2luZyBhIHNpbWlsYXIKK2NvbnZlbnRpb24gdG8gU0NTSSBkaXNjcy4gVGhlIGZvbGxvd2luZyBtYXBwaW5ncyBleGlzdCBiZXR3ZWVuIHRoZSBuZXcKK2FuZCB0aGUgb2xkIG5hbWVzOgorCisJL2Rldi9oZGEJL2Rldi9pZGUvaGQvYzBiMHQwdTAKKwkvZGV2L2hkYgkvZGV2L2lkZS9oZC9jMGIwdDF1MAorCS9kZXYvaGRjCS9kZXYvaWRlL2hkL2MwYjF0MHUwCisJL2Rldi9oZGQJL2Rldi9pZGUvaGQvYzBiMXQxdTAKKworCitJREUgVGFwZXMKKworQSBzaW1pbGFyIG5hbWluZyBzY2hlbWUgaXMgdXNlZCBhcyBmb3IgSURFIGRpc2NzLiBUaGUgZW50cmllcyB3aWxsCithcHBlYXIgaW4gdGhlIC9kZXYvaWRlL210IGRpcmVjdG9yeS4KKworSURFIENELVJPTQorCitBIHNpbWlsYXIgbmFtaW5nIHNjaGVtZSBpcyB1c2VkIGFzIGZvciBJREUgZGlzY3MuIFRoZSBlbnRyaWVzIHdpbGwKK2FwcGVhciBpbiB0aGUgL2Rldi9pZGUvY2QgZGlyZWN0b3J5LgorCitJREUgRmxvcHBpZXMKKworQSBzaW1pbGFyIG5hbWluZyBzY2hlbWUgaXMgdXNlZCBhcyBmb3IgSURFIGRpc2NzLiBUaGUgZW50cmllcyB3aWxsCithcHBlYXIgaW4gdGhlIC9kZXYvaWRlL2ZkIGRpcmVjdG9yeS4KKworWFQgSGFyZCBEaXNjcworCitBbGwgWFQgZGlzY3MgYXJlIHBsYWNlZCB1bmRlciAvZGV2L3hkLiBUaGUgZmlyc3QgWFQgZGlzYword291bGQgYXBwZWFyIGFzIC9kZXYveGQvYzB0MC4KKworCitPbGQgQ29tcGF0aWJpbGl0eSBOYW1lcworCitUaGUgb2xkIGNvbXBhdGliaWxpdHkgbmFtZXMgYXJlIHRoZSBsZWdhY3kgZGV2aWNlIG5hbWVzLCBzdWNoIGFzCisvZGV2L2hkYSwgL2Rldi9zZGEsIC9kZXYvcnRjIGFuZCBzbyBvbi4KK0RldmZzZCBjYW4gYmUgY29uZmlndXJlZCB0byBjcmVhdGUgY29tcGF0aWJpbGl0eSBzeW1saW5rcyBzbyB0aGF0IHlvdQorbWF5IGNvbnRpbnVlIHRvIHVzZSB0aGUgb2xkIG5hbWVzIGluIHlvdXIgY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgc28KK3RoYXQgb2xkIGFwcGxpY2F0aW9ucyB3aWxsIGNvbnRpbnVlIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4KKworSW4gb3JkZXIgdG8gY29uZmlndXJlIGRldmZzZCB0byBjcmVhdGUgdGhlc2UgbGVnYWN5IG5hbWVzLCB0aGUKK2ZvbGxvd2luZyBsaW5lcyBzaG91bGQgYmUgcGxhY2VkIGluIHlvdXIgL2V0Yy9kZXZmc2QuY29uZjoKKworUkVHSVNURVIJLioJCU1LT0xEQ09NUEFUCitVTlJFR0lTVEVSCS4qCQlSTU9MRENPTVBBVAorCitUaGlzIHdpbGwgY2F1c2UgZGV2ZnNkIHRvIGNyZWF0ZSAoYW5kIGRlc3Ryb3kpIHN5bWJvbGljIGxpbmtzIHdoaWNoCitwb2ludCB0byB0aGUga2VybmVsLXN1cHBsaWVkIG5hbWVzLgorCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworRGV2aWNlIGRyaXZlcnMgY3VycmVudGx5IHBvcnRlZAorCistIEFsbCBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlciBkZXZpY2VzIHN1cHBvcnQgZGV2ZnMgKHRoaXMgaXMgZG9uZQorICB0cmFuc3BhcmVudGx5IHRocm91Z2ggbWlzY19yZWdpc3RlcigpKQorCistIFNDU0kgZGlzY3MgYW5kIGdlbmVyaWMgaGFyZCBkaXNjcworCistIENoYXJhY3RlciBtZW1vcnkgZGV2aWNlcyAobnVsbCwgemVybywgZnVsbCBhbmQgc28gb24pCisgIFRoYW5rcyB0byBDLiBTY290dCBBbmFuaWFuIDxjYW5hbmlhbkBhbHVtbmkucHJpbmNldG9uLmVkdT4KKworLSBMb29wIGRldmljZXMgKC9kZXYvbG9vcD8pCisgCistIFRUWSBkZXZpY2VzIChjb25zb2xlLCBzZXJpYWwgcG9ydHMsIHRlcm1pbmFscyBhbmQgcHNldWRvLXRlcm1pbmFscykKKyAgVGhhbmtzIHRvIEMuIFNjb3R0IEFuYW5pYW4gPGNhbmFuaWFuQGFsdW1uaS5wcmluY2V0b24uZWR1PgorCistIFNDU0kgdGFwZXMgKC9kZXYvc2NzaSBhbmQgL2Rldi90YXBlcykKKworLSBTQ1NJIENELVJPTXMgKC9kZXYvc2NzaSBhbmQgL2Rldi9jZHJvbXMpCisKKy0gU0NTSSBnZW5lcmljIGRldmljZXMgKC9kZXYvc2NzaSkKKworLSBSQU1ESVNDUyAoL2Rldi9yYW0/KQorCistIE1ldGEgRGV2aWNlcyAoL2Rldi9tZCopCisKKy0gRmxvcHB5IGRpc2NzICgvZGV2L2Zsb3BweSkKKworLSBQYXJhbGxlbCBwb3J0IHByaW50ZXJzICgvZGV2L3ByaW50ZXJzKQorCistIFNvdW5kIGRldmljZXMgKC9kZXYvc291bmQpCisgIFRoYW5rcyB0byBFcmljIER1bWFzIDxkdW1hc0BsaW51eC5ldS5vcmc+IGFuZAorICBDLiBTY290dCBBbmFuaWFuIDxjYW5hbmlhbkBhbHVtbmkucHJpbmNldG9uLmVkdT4KKworLSBKb3lzdGlja3MgKC9kZXYvam95c3RpY2tzKQorCistIFNwYXJjIGtleWJvYXJkICgvZGV2L2tiZCkKKworLSBEU1A1NjAwMSBkaWdpdGFsIHNpZ25hbCBwcm9jZXNzb3IgKC9kZXYvZHNwNTZrKQorCistIEFwcGxlIERlc2t0b3AgQnVzICgvZGV2L2FkYikKKworLSBDb2RhIG5ldHdvcmsgZmlsZSBzeXN0ZW0gKC9kZXYvY2ZzKikKKworLSBWaXJ0dWFsIGNvbnNvbGUgY2FwdHVyZSBkZXZpY2VzICgvZGV2L3ZjYykKKyAgVGhhbmtzIHRvIERlbm5pcyBIb3UgPHNtaWxheEBtaW5kbWVsZC55aS5vcmc+CisKKy0gRnJhbWUgYnVmZmVyIGRldmljZXMgKC9kZXYvZmIpCisKKy0gVmlkZW8gY2FwdHVyZSBkZXZpY2VzICgvZGV2L3Y0bCkKKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK0FsbG9jYXRpb24gb2YgRGV2aWNlIE51bWJlcnMKKworRGV2ZnMgYWxsb3dzIHlvdSB0byB3cml0ZSBhIGRyaXZlciB3aGljaCBkb2Vzbid0IG5lZWQgdG8gYWxsb2NhdGUgYQorZGV2aWNlIG51bWJlciAobWFqb3ImbWlub3IgbnVtYmVycykgZm9yIHRoZSBpbnRlcm5hbCBvcGVyYXRpb24gb2YgdGhlCitrZXJuZWwuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiB1c2Vyc3BhY2UgcHJvZ3JhbW1lcyB0aGF0IHVzZQordGhlIGRldmljZSBudW1iZXIgYXMgYSB1bmlxdWUgaGFuZGxlIGZvciBhIGRldmljZS4gQW4gZXhhbXBsZSBpcyB0aGUKK2ZpbmQgcHJvZ3JhbW1lLCB3aGljaCB1c2VzIGRldmljZSBudW1iZXJzIHRvIGRldGVybWluZSB3aGV0aGVyCithbiBpbm9kZSBpcyBvbiBhIGRpZmZlcmVudCBmaWxlc3lzdGVtIHRoYW4gYW5vdGhlciBpbm9kZS4gVGhlIGRldmljZQorbnVtYmVyIHVzZWQgaXMgdGhlIG9uZSBmb3IgdGhlIGJsb2NrIGRldmljZSB3aGljaCBhIGZpbGVzeXN0ZW0gaXMKK3VzaW5nLiBUbyBwcmVzZXJ2ZSBjb21wYXRpYmlsaXR5IHdpdGggdXNlcnNwYWNlIHByb2dyYW1tZXMsIGJsb2NrCitkZXZpY2VzIHVzaW5nIGRldmZzIG5lZWQgdG8gaGF2ZSB1bmlxdWUgZGV2aWNlIG51bWJlcnMgYWxsb2NhdGVkIHRvCit0aGVtLiBGdXJ0aGVybW9yZSwgUE9TSVggc3BlY2lmaWVzIGRldmljZSBudW1iZXJzLCBzbyBzb21lIGtpbmQgb2YKK2RldmljZSBudW1iZXIgbmVlZHMgdG8gYmUgcHJlc2VudGVkIHRvIHVzZXJzcGFjZS4KKworVGhlIHNpbXBsZXN0IG9wdGlvbiAoZXNwZWNpYWxseSB3aGVuIHBvcnRpbmcgZHJpdmVycyB0byBkZXZmcykgaXMgdG8KK2tlZXAgdXNpbmcgdGhlIG9sZCBtYWpvciBhbmQgbWlub3IgbnVtYmVycy4gRGV2ZnMgd2lsbCB0YWtlIHdoYXRldmVyCit2YWx1ZXMgYXJlIGdpdmVuIGZvciBtYWpvciZtaW5vciBhbmQgcGFzcyB0aGVtIG9udG8gdXNlcnNwYWNlLgorCitUaGlzIGRldmljZSBudW1iZXIgaXMgYSAxNiBiaXQgbnVtYmVyLCBzbyB0aGlzIGxlYXZlcyBwbGVudHkgb2Ygc3BhY2UKK2ZvciBsYXJnZSBudW1iZXJzIG9mIGRpc2NzIGFuZCBwYXJ0aXRpb25zLiBUaGlzIHNjaGVtZSBjYW4gYWxzbyBiZQordXNlZCBmb3IgY2hhcmFjdGVyIGRldmljZXMsIGluIHBhcnRpY3VsYXIgdGhlIHR0eSBkZXZpY2VzLCB3aGljaCBhcmUKK2N1cnJlbnRseSBsaW1pdGVkIHRvIDI1NiBwc2V1ZG8tdHR5cyAodGhpcyBsaW1pdHMgdGhlIHRvdGFsIG51bWJlciBvZgorc2ltdWx0YW5lb3VzIHh0ZXJtcyBhbmQgcmVtb3RlIGxvZ2lucykuICBOb3RlIHRoYXQgdGhlIGRldmljZSBudW1iZXIKK2lzIGxpbWl0ZWQgdG8gdGhlIHJhbmdlIDM2ODY0LTYxNDM5IChtYWpvcnMgMTQ0LTIzOSksIGluIG9yZGVyIHRvCithdm9pZCBhbnkgcG9zc2libGUgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcgb2ZmaWNpYWwgYWxsb2NhdGlvbnMuCisKK1BsZWFzZSBub3RlIHRoYXQgdXNpbmcgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGJsb2NrIGRldmljZSBudW1iZXJzIG1heQorYnJlYWsgdGhlIE5GUyBkYWVtb25zIChib3RoIHVzZXIgYW5kIGtlcm5lbCBtb2RlKSwgd2hpY2ggZXhwZWN0IGRldl90Citmb3IgYSBnaXZlbiBkZXZpY2UgdG8gYmUgY29uc3RhbnQgb3ZlciB0aGUgbGlmZXRpbWUgb2YgcmVtb3RlIG1vdW50cy4KKworQSBmaW5hbCBub3RlIG9uIHRoaXMgc2NoZW1lOiBzaW5jZSBpdCBkb2Vzbid0IGluY3JlYXNlIHRoZSBzaXplIG9mCitkZXZpY2UgbnVtYmVycywgdGhlcmUgYXJlIG5vIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggdXNlcnNwYWNlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK1F1ZXN0aW9ucyBhbmQgQW5zd2VycworCisKK01ha2luZyB0aGluZ3Mgd29yaworQWx0ZXJuYXRpdmVzIHRvIGRldmZzCitXaGF0IEkgZG9uJ3QgbGlrZSBhYm91dCBkZXZmcworSG93IHRvIHJlcG9ydCBidWdzCitTdHJhbmdlIGtlcm5lbCBtZXNzYWdlcworQ29tcGlsYXRpb24gcHJvYmxlbXMgd2l0aCBkZXZmc2QKKworCisKK01ha2luZyB0aGluZ3Mgd29yaworCitIZXJlIGFyZSBzb21lIGNvbW1vbiBxdWVzdGlvbnMgYW5kIGFuc3dlcnMuCisKKworCitEZXZmc2QgZG9lc24ndCBzdGFydAorCitNYWtlIHN1cmUgeW91IGhhdmUgY29tcGlsZWQgYW5kIGluc3RhbGxlZCBkZXZmc2QKK01ha2Ugc3VyZSBkZXZmc2QgaXMgYmVpbmcgc3RhcnRlZCBmcm9tIHlvdXIgYm9vdAorc2NyaXB0cworTWFrZSBzdXJlIHlvdSBoYXZlIGNvbmZpZ3VyZWQgeW91ciBrZXJuZWwgdG8gZW5hYmxlIGRldmZzIChzZWUKK2JlbG93KQorTWFrZSBzdXJlIGRldmZzIGlzIG1vdW50ZWQgKHNlZSBiZWxvdykKKworCitEZXZmc2QgaXMgbm90IG1hbmFnaW5nIGFsbCBteSBwZXJtaXNzaW9ucworCitNYWtlIHN1cmUgeW91IGFyZSBjYXB0dXJpbmcgdGhlIGFwcHJvcHJpYXRlIGV2ZW50cy4gRm9yIGV4YW1wbGUsCitkZXZpY2UgZW50cmllcyBjcmVhdGVkIGJ5IHRoZSBrZXJuZWwgZ2VuZXJhdGUgUkVHSVNURVIgZXZlbnRzLAorYnV0IHRob3NlIGNyZWF0ZWQgYnkgZGV2ZnNkIGdlbmVyYXRlIENSRUFURSBldmVudHMuCisKKworRGV2ZnNkIGlzIG5vdCBjYXB0dXJpbmcgYWxsIFJFR0lTVEVSIGV2ZW50cworCitTZWUgdGhlIHByZXZpb3VzIGVudHJ5OiB5b3UgbWF5IG5lZWQgdG8gY2FwdHVyZSBDUkVBVEUgZXZlbnRzLgorCisKK1ggd2lsbCBub3Qgc3RhcnQKKworTWFrZSBzdXJlIHlvdSBmb2xsb3dlZCB0aGUgc3RlcHMgCitvdXRsaW5lZCBhYm92ZS4KKworCitXaHkgZG9uJ3QgbXkgbmV0d29yayBkZXZpY2VzIGFwcGVhciBpbiBkZXZmcz8KKworVGhpcyBpcyBub3QgYSBidWcuIE5ldHdvcmsgZGV2aWNlcyBoYXZlIHRoZWlyIG93biwgY29tcGxldGVseSBzZXBhcmF0ZQorbmFtZXNwYWNlLiBUaGV5IGFyZSBhY2Nlc3NlZCB2aWEgc29ja2V0KDIpIGFuZAorc2V0c29ja29wdCgyKSBjYWxscywgYW5kIHRodXMgcmVxdWlyZSBubyBkZXZpY2Ugbm9kZXMuIEkgaGF2ZQorcmFpc2VkIHRoZSBwb3NzaWJpbHR5IG9mIG1vdmluZyBuZXR3b3JrIGRldmljZXMgaW50byB0aGUgZGV2aWNlCituYW1lc3BhY2UsIGJ1dCBoYXZlIGhhZCBubyByZXNwb25zZS4KKworCitIb3cgY2FuIEkgdGVzdCBpZiBJIGhhdmUgZGV2ZnMgY29tcGlsZWQgaW50byBteSBrZXJuZWw/CisKK0FsbCBmaWxlc3lzdGVtcyBidWlsdC1pbiBvciBjdXJyZW50bHkgbG9hZGVkIGFyZSBsaXN0ZWQgaW4KKy9wcm9jL2ZpbGVzeXN0ZW1zLiBJZiB5b3Ugc2VlIGEgZGV2ZnMgZW50cnksIHRoZW4KK3lvdSBrbm93IHRoYXQgZGV2ZnMgd2FzIGNvbXBpbGVkIGludG8geW91ciBrZXJuZWwuIElmIHlvdSBoYXZlCitjb3JyZWN0bHkgY29uZmlndXJlZCBhbmQgcmVidWlsdCB5b3VyIGtlcm5lbCwgdGhlbiBkZXZmcyB3aWxsIGJlCitidWlsdC1pbi4gSWYgeW91IHRoaW5rIHlvdSd2ZSBjb25maWd1cmVkIGl0IGluLCBidXQKKy9wcm9jL2ZpbGVzeXN0ZW1zIGRvZXNuJ3Qgc2hvdyBpdCwgeW91J3ZlIG1hZGUgYSBtaXN0YWtlLgorQ29tbW9uIG1pc3Rha2VzIGluY2x1ZGU6CisKK1VzaW5nIGEgMi4yLngga2VybmVsIHdpdGhvdXQgYXBwbHlpbmcgdGhlIGRldmZzIHBhdGNoIChpZiB5b3UKK2Rvbid0IGtub3cgaG93IHRvIHBhdGNoIHlvdXIga2VybmVsLCB1c2UgMi40LnggaW5zdGVhZCwgZG9uJ3QgYm90aGVyCithc2tpbmcgbWUgaG93IHRvIHBhdGNoKQorRm9yZ2V0dGluZyB0byBzZXQgQ09ORklHX0VYUEVSSU1FTlRBTD15CitGb3JnZXR0aW5nIHRvIHNldCBDT05GSUdfREVWRlNfRlM9eQorRm9yZ2V0dGluZyB0byBzZXQgQ09ORklHX0RFVkZTX01PVU5UPXkgKGlmIHlvdSB3YW50IGRldmZzCit0byBiZSBhdXRvbWF0aWNhbGx5IG1vdW50ZWQgYXQgYm9vdCkKK0VkaXRpbmcgeW91ciAuY29uZmlnIG1hbnVhbGx5LCBpbnN0ZWFkIG9mIHVzaW5nIG1ha2UKK2NvbmZpZyBvciBtYWtlIHhjb25maWcKK0ZvcmdldHRpbmcgdG8gcnVuIG1ha2UgZGVwOyBtYWtlIGNsZWFuIGFmdGVyIGNoYW5naW5nIHRoZQorY29uZmlndXJhdGlvbiBhbmQgYmVmb3JlIGNvbXBpbGluZworRm9yZ2V0dGluZyB0byBjb21waWxlIHlvdXIga2VybmVsIGFuZCBtb2R1bGVzCitGb3JnZXR0aW5nIHRvIGluc3RhbGwgeW91ciBrZXJuZWwKK0ZvcmdldHRpbmcgdG8gaW5zdGFsbCB5b3VyIG1vZHVsZXMKKworUGxlYXNlIGNoZWNrIHR3aWNlIHRoYXQgeW91J3ZlIGRvbmUgYWxsIHRoZXNlIHN0ZXBzIGJlZm9yZSBzZW5kaW5nIGluCithIGJ1ZyByZXBvcnQuCisKKworCitIb3cgY2FuIEkgdGVzdCBpZiBkZXZmcyBpcyBtb3VudGVkIG9uIC9kZXY/CisKK1RoZSBkZXZpY2UgZmlsZXN5c3RlbSB3aWxsIGFsd2F5cyBjcmVhdGUgYW4gZW50cnkgY2FsbGVkCisiLmRldmZzZCIsIHdoaWNoIGlzIHVzZWQgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgZGFlbW9uLiBFdmVuCitpZiB0aGUgZGFlbW9uIGlzIG5vdCBydW5uaW5nLCB0aGlzIGVudHJ5IHdpbGwgZXhpc3QuIFRlc3RpbmcgZm9yIHRoZQorZXhpc3RlbmNlIG9mIHRoaXMgZW50cnkgaXMgdGhlIGFwcHJvdmVkIG1ldGhvZCBvZiBkZXRlcm1pbmluZyBpZiBkZXZmcworaXMgbW91bnRlZCBvciBub3QuIE5vdGUgdGhhdCB0aGUgdHlwZSBvZiBlbnRyeSAoaS5lLiByZWd1bGFyIGZpbGUsCitjaGFyYWN0ZXIgZGV2aWNlLCBuYW1lZCBwaXBlLCBldGMuKSBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLiBPbmx5Cit0aGUgZXhpc3RlbmNlIG9mIHRoZSBlbnRyeSBzaG91bGQgYmUgcmVsaWVkIHVwb24uCisKKworV2hlbiBJIHN0YXJ0IGRldmZzZCwgSSBzZWUgdGhlIGVycm9yOgorRXJyb3Igb3BlbmluZyBmaWxlOiAiLmRldmZzZCIgICBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5PworCitUaGlzIG1lYW5zIHRoYXQgZGV2ZnMgaXMgbm90IG1vdW50ZWQuIE1ha2Ugc3VyZSB5b3UgaGF2ZSBkZXZmcyBtb3VudGVkLgorCisKK0hvdyBkbyBJIG1vdW50IGRldmZzPworCitGaXJzdCBtYWtlIHN1cmUgeW91IGhhdmUgZGV2ZnMgY29tcGlsZWQgaW50byB5b3VyIGtlcm5lbCAoc2VlCithYm92ZSkuIFRoZW4geW91IHdpbGwgZWl0aGVyIG5lZWQgdG86CisKK3NldCBDT05GSUdfREVWRlNfTU9VTlQ9eSBpbiB5b3VyIGtlcm5lbCBjb25maWcKK3Bhc3MgZGV2ZnM9bW91bnQgdG8geW91ciBib290IGxvYWRlcgorbW91bnQgZGV2ZnMgbWFudWFsbHkgaW4geW91ciBib290IHNjcmlwdHMgd2l0aDoKK21vdW50IC10IG5vbmUgZGV2ZnMgL2RldgorCisKKworTW91bnQgYnkgdm9sdW1lIExBQkVMPTxsYWJlbD4gZG9lc24ndCB3b3JrIHdpdGgKK2RldmZzCisKK01vc3QgcHJvYmFibHkgeW91IGFyZSBub3QgbW91bnRpbmcgZGV2ZnMgb250byAvZGV2LiBXaGF0CitoYXBwZW5zIGlzIHRoYXQgaWYgeW91ciBrZXJuZWwgY29uZmlnIGhhcyBDT05GSUdfREVWRlNfRlM9eQordGhlbiB0aGUgY29udGVudHMgb2YgL3Byb2MvcGFydGl0aW9ucyB3aWxsIGhhdmUgdGhlIGRldmZzCituYW1lcyAoc3VjaCBhcyBzY3NpL2hvc3QwL2J1czAvdGFyZ2V0MC9sdW4wL3BhcnQxKS4gVGhlCitjb250ZW50cyBvZiAvcHJvYy9wYXJ0aXRpb25zIGFyZSB1c2VkIGJ5IG1vdW50KDgpIHdoZW4KK21vdW50aW5nIGJ5IHZvbHVtZSBsYWJlbC4gSWYgZGV2ZnMgaXMgbm90IG1vdW50ZWQgb24gL2RldiwKK3RoZW4gbW91bnQoOCkgd2lsbCBmYWlsIHRvIGZpbmQgZGV2aWNlcy4gVGhlIHNvbHV0aW9uIGlzIHRvCittYWtlIHN1cmUgdGhhdCBkZXZmcyBpcyBtb3VudGVkIG9uIC9kZXYuIFNlZSBhYm92ZSBmb3IgaG93IHRvCitkbyB0aGF0LgorCisKK0kgaGF2ZSBleHRyYSBvciBpbmNvcnJlY3QgZW50cmllcyBpbiAvZGV2CisKK1lvdSBtYXkgaGF2ZSBzdGFsZSBlbnRyaWVzIGluIHlvdXIgZGV2LXN0YXRlIGFyZWEuIENoZWNrIGZvciBhCitSRVNUT1JFIGNvbmZpZ3VyYXRpb24gbGluZSBpbiB5b3VyIGRldmZzZCBjb25maWd1cmF0aW9uCisodHlwaWNhbGx5IC9ldGMvZGV2ZnNkLmNvbmYpLiBJZiB5b3UgaGF2ZSB0aGlzIGxpbmUsIGNoZWNrCit0aGUgY29udGVudHMgb2YgdGhlIHNwZWNpZmllZCBkaXJlY3RvcnkgZm9yIHN0YWxlIGVudHJpZXMuIFJlbW92ZQorYW55IGVudHJpZXMgd2hpY2ggYXJlIGluY29ycmVjdCwgdGhlbiByZWJvb3QuCisKKworSSBnZXQgIlVuYWJsZSB0byBvcGVuIGluaXRpYWwgY29uc29sZSIgbWVzc2FnZXMgYXQgYm9vdAorCitUaGlzIHVzdWFsbHkgaGFwcGVucyB3aGVuIHlvdSBkb24ndCBoYXZlIGRldmZzIGF1dG9tb3VudGVkIG9udG8KKy9kZXYgYXQgYm9vdCB0aW1lLCBhbmQgdGhlcmUgaXMgbm8gdmFsaWQKKy9kZXYvY29uc29sZSBlbnRyeSBvbiB5b3VyIHJvb3QgZmlsZS1zeXN0ZW0uIENyZWF0ZSBhIHZhbGlkCisvZGV2L2NvbnNvbGUgZGV2aWNlIG5vZGUuCisKKworCisKKworQWx0ZXJuYXRpdmVzIHRvIGRldmZzCisKK0kndmUgYXR0ZW1wdGVkIHRvIGNvbGxhdGUgYWxsIHRoZSBhbnRpLWRldmZzIHByb3Bvc2FscyBhbmQgZXhwbGFpbgordGhlaXIgbGltaXRhdGlvbnMuIFVuZGVyIGNvbnN0cnVjdGlvbi4KKworCitXaHkgbm90IGp1c3QgcGFzcyBkZXZpY2UgY3JlYXRlL3JlbW92ZSBldmVudHMgdG8gYSBkYWVtb24/CisKK0hlcmUgdGhlIHN1Z2dlc3Rpb24gaXMgdG8gZGV2ZWxvcCBhbiBBUEkgaW4gdGhlIGtlcm5lbCBzbyB0aGF0IGRldmljZXMKK2NhbiByZWdpc3RlciBjcmVhdGUgYW5kIHJlbW92ZSBldmVudHMsIGFuZCBhIGRhZW1vbiBsaXN0ZW5zIGZvciB0aG9zZQorZXZlbnRzLiBUaGUgZGFlbW9uIHdvdWxkIHRoZW4gcG9wdWxhdGUvZGVwb3B1bGF0ZSAvZGV2ICh3aGljaAorcmVzaWRlcyBvbiBkaXNjKS4KKworVGhpcyBoYXMgc2V2ZXJhbCBsaW1pdGF0aW9uczoKKworCitpdCBvbmx5IHdvcmtzIGZvciBtb2R1bGVzIGxvYWRlZCBhbmQgdW5sb2FkZWQgKG9yIGRldmljZXMgaW5zZXJ0ZWQKK2FuZCByZW1vdmVkKSBhZnRlciB0aGUga2VybmVsIGhhcyBmaW5pc2hlZCBib290aW5nLiBXaXRob3V0IGEgZGF0YWJhc2UKK29mIGV2ZW50cywgdGhlcmUgaXMgbm8gd2F5IHRoZSBkYWVtb24gY291bGQgZnVsbHkgcG9wdWxhdGUKKy9kZXYKKworCitpZiB5b3UgYWRkIGEgZGF0YWJhc2UgdG8gdGhpcyBzY2hlbWUsIHRoZSBxdWVzdGlvbiBpcyB0aGVuIGhvdyB0bworcHJlc2VudCB0aGF0IGRhdGFiYXNlIHRvIHVzZXItc3BhY2UuIElmIHlvdSBtYWtlIGl0IGEgbGlzdCBvZiBzdHJpbmdzCit3aXRoIGVtYmVkZGVkIGV2ZW50IGNvZGVzIHdoaWNoIGFyZSBwYXNzZWQgdGhyb3VnaCBhIHBpcGUgdG8gdGhlCitkYWVtb24sIHRoZW4gdGhpcyBpcyBvbmx5IG9mIHVzZSB0byB0aGUgZGFlbW9uLiBJIHdvdWxkIGFyZ3VlIHRoYXQgdGhlCituYXR1cmFsIHdheSB0byBwcmVzZW50IHRoaXMgZGF0YSBpcyB2aWEgYSBmaWxlc3lzdGVtIChzaW5jZSBtYW55IG9mCit0aGUgZXZlbnRzIHdpbGwgYmUgb2YgYSBoaWVyYXJjaGljYWwgbmF0dXJlKSwgc3VjaCBhcyBkZXZmcy4KK1ByZXNlbnRpbmcgdGhlIGRhdGEgYXMgYSBmaWxlc3lzdGVtIG1ha2VzIGl0IGVhc3kgZm9yIHRoZSB1c2VyIHRvIHNlZQord2hhdCBpcyBhdmFpbGFibGUgYW5kIGFsc28gbWFrZXMgaXQgZWFzeSB0byB3cml0ZSBzY3JpcHRzIHRvIHNjYW4gdGhlCisiZGF0YWJhc2UiCisKKwordGhlIHRpZ2h0IGJpbmRpbmcgYmV0d2VlbiBkZXZpY2Ugbm9kZXMgYW5kIGRyaXZlcnMgaXMgbm8gbG9uZ2VyCitwb3NzaWJsZSAocmVxdWlyaW5nIHRoZSBvdGhlcndpc2UgcGVyZmVjdGx5IGF2b2lkYWJsZQordGFibGUgbG9va3VwcykKKworCit5b3UgY2Fubm90IGNhdGNoIGlub2RlIGxvb2t1cCBldmVudHMgb24gL2RldiB3aGljaCBtZWFucwordGhhdCBtb2R1bGUgYXV0b2xvYWRpbmcgcmVxdWlyZXMgZGV2aWNlIG5vZGVzIHRvIGJlIGNyZWF0ZWQuIFRoaXMgaXMgYQorcHJvYmxlbSwgcGFydGljdWxhcmx5IGZvciBkcml2ZXJzIHdoZXJlIG9ubHkgYSBmZXcgaW5vZGVzIGFyZSBjcmVhdGVkCitmcm9tIGEgcG90ZW50aWFsbHkgbGFyZ2Ugc2V0CisKKwordGhpcyB0ZWNobmlxdWUgY2FuJ3QgYmUgdXNlZCB3aGVuIHRoZSByb290IEZTIGlzIG1vdW50ZWQKK3JlYWQtb25seQorCisKKworCitKdXN0IGltcGxlbWVudCBhIGJldHRlciBzY3NpZGV2CisKK1RoaXMgc3VnZ2VzdGlvbiBpbnZvbHZlcyB0YWtpbmcgdGhlIHNjc2lkZXYgcHJvZ3JhbW1lIGFuZAorZXh0ZW5kaW5nIGl0IHRvIHNjYW4gZm9yIGFsbCBkZXZpY2VzLCBub3QganVzdCBTQ1NJIGRldmljZXMuIFRoZQorc2NzaWRldiBwcm9ncmFtbWUgd29ya3MgYnkgc2Nhbm5pbmcgL3Byb2Mvc2NzaQorCitQcm9ibGVtczoKKworCit0aGUga2VybmVsIGRvZXMgbm90IGN1cnJlbnRseSBwcm92aWRlIGEgbGlzdCBvZiBhbGwgZGV2aWNlcworYXZhaWxhYmxlLiBOb3QgYWxsIGRyaXZlcnMgcmVnaXN0ZXIgZW50cmllcyBpbiAvcHJvYyBvcgorZ2VuZXJhdGUga2VybmVsIG1lc3NhZ2VzCisKKwordGhlcmUgaXMgbm8gdW5pZm9ybSBtZWNoYW5pc20gdG8gcmVnaXN0ZXIgZGV2aWNlcyBvdGhlciB0aGFuIHRoZQorZGV2ZnMgQVBJCisKKworaW1wbGVtZW50aW5nIHN1Y2ggYW4gQVBJIGlzIHRoZW4gdGhlIHNhbWUgYXMgdGhlCitwcm9wb3NhbCBhYm92ZQorCisKKworCitQdXQgL2RldiBvbiBhIHJhbWRpc2MKKworVGhpcyBzdWdnZXN0aW9uIGludm9sdmVzIGNyZWF0aW5nIGEgcmFtZGlzYyBhbmQgcG9wdWxhdGluZyBpdCB3aXRoCitkZXZpY2Ugbm9kZXMgYW5kIHRoZW4gbW91bnRpbmcgaXQgb3ZlciAvZGV2LgorCitQcm9ibGVtczoKKworCisKK3RoaXMgZG9lc24ndCBoZWxwIHdoZW4gbW91bnRpbmcgdGhlIHJvb3QgZmlsZXN5c3RlbSwgc2luY2UgeW91CitzdGlsbCBuZWVkIGEgZGV2aWNlIG5vZGUgdG8gZG8gdGhhdAorCisKK2lmIHlvdSB3YW50IHRvIHVzZSB0aGlzIHRlY2huaXF1ZSBmb3IgdGhlIHJvb3QgZGV2aWNlIG5vZGUgYXMKK3dlbGwsIHlvdSBuZWVkIHRvIHVzZSBpbml0cmQuIFRoaXMgY29tcGxpY2F0ZXMgdGhlIGJvb3Rpbmcgc2VxdWVuY2UKK2FuZCBtYWtlcyBpdCBzaWduaWZpY2FudGx5IGhhcmRlciB0byBhZG1pbmlzdGVyIGFuZCBjb25maWd1cmUuIFRoZQoraW5pdHJkIGlzIGVzc2VudGlhbGx5IG9wYXF1ZSwgcm9iYmluZyB0aGUgc3lzdGVtIGFkbWluaXN0cmF0b3Igb2YgZWFzeQorY29uZmlndXJhdGlvbgorCisKK2luc3VmZmljaWVudCBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgdG8gY29ycmVjdGx5IHBvcHVsYXRlIHRoZQorcmFtZGlzYy4gU28gd2UgY29tZSBiYWNrIHRvIHRoZQorcHJvcG9zYWwgYWJvdmUgdG8gInNvbHZlIiB0aGlzCisKKworYSByYW1kaXNjLWJhc2VkIHNvbHV0aW9uIHdvdWxkIHRha2UgbW9yZSBrZXJuZWwgbWVtb3J5LCBzaW5jZSB0aGUKK2JhY2tpbmcgc3RvcmUgd291bGQgYmUgKGF0IGJlc3QpIG5vcm1hbCBWRlMgaW5vZGVzIGFuZCBkZW50cmllcywgd2hpY2gKK3Rha2UgMjg0IGJ5dGVzIGFuZCAxMTIgYnl0ZXMsIHJlc3BlY3RpdmVseSwgZm9yIGVhY2ggZW50cnkuIENvbXBhcmUKK3RoYXQgdG8gNzIgYnl0ZXMgZm9yIGRldmZzCisKKworCisKK0RvIG5vdGhpbmc6IHRoZXJlJ3Mgbm8gcHJvYmxlbQorCitTb21ldGltZXMgcGVvcGxlIGNhbiBiZSBoZWFyZCB0byBjbGFpbSB0aGF0IHRoZSBleGlzdGluZyBzY2hlbWUgaXMKK2ZpbmUuIFRoaXMgaXMgd2hhdCB0aGV5J3JlIGlnbm9yaW5nOgorCisKK2RldmljZSBudW1iZXIgc2l6ZSAoOCBiaXRzIGVhY2ggZm9yIG1ham9yIGFuZCBtaW5vcikgaXMgYSByZWFsCitsaW1pdGF0aW9uLCBhbmQgbXVzdCBiZSBmaXhlZCBzb21laG93LiBTeXN0ZW1zIHdpdGggbGFyZ2UgbnVtYmVycyBvZgorU0NTSSBkZXZpY2VzLCBmb3IgZXhhbXBsZSwgd2lsbCBjb250aW51ZSB0byBjb25zdW1lIHRoZSByZW1haW5pbmcKK3VuYWxsb2NhdGVkIG1ham9yIG51bWJlcnMuIFVTQiB3aWxsIGFsc28gbmVlZCB0byBwdXNoIGJleW9uZCB0aGUgOCBiaXQKK21pbm9yIGxpbWl0YXRpb24KKworCitzaW1wbHkgaW5jcmVhc2luZyB0aGUgZGV2aWNlIG51bWJlciBzaXplIGlzIGluc3VmZmljaWVudC4gQXBhcnQKK2Zyb20gY2F1c2luZyBhIGxvdCBvZiBwYWluLCBpdCBkb2Vzbid0IHNvbHZlIHRoZSBtYW5hZ2VtZW50IGlzc3Vlcworb2YgYSAvZGV2IHdpdGggdGhvdXNhbmRzIG9yIG1vcmUgZGV2aWNlIG5vZGVzCisKKworaWdub3JpbmcgdGhlIHByb2JsZW0gb2YgYSBodWdlIC9kZXYgd2lsbCBub3QgbWFrZSBpdCBnbworYXdheSwgYW5kIGRpc21pc3NlcyB0aGUgbGVnaXRpbWFjeSBvZiBhIGxhcmdlIG51bWJlciBvZiBwZW9wbGUgd2hvCit3YW50IGEgZHluYW1pYyAvZGV2CisKKwordGhlIHN0YW5kYXJkIHJlc3BvbnNlIHRoZW4gYmVjb21lczogIndyaXRlIGEgZGV2aWNlIG1hbmFnZW1lbnQKK2RhZW1vbiIsIHdoaWNoIGJyaW5ncyB1cyBiYWNrIHRvIHRoZQorcHJvcG9zYWwgYWJvdmUKKworCisKKworV2hhdCBJIGRvbid0IGxpa2UgYWJvdXQgZGV2ZnMKKworSGVyZSBhcmUgc29tZSBjb21tb24gY29tcGxhaW50cyBhYm91dCBkZXZmcywgYW5kIHNvbWUgc3VnZ2VzdGlvbnMgYW5kCitzb2x1dGlvbnMgdGhhdCBtYXkgbWFrZSBpdCBtb3JlIHBhbGF0YWJsZSBmb3IgeW91LiBJIGNhbid0IHBsZWFzZQorZXZlcnlib2R5LCBidXQgSSBkbyB0cnkgOi0pCisKK0kgaGF0ZSB0aGUgbmFtaW5nIHNjaGVtZQorCitGaXJzdCwgcmVtZW1iZXIgdGhhdCBubyBuYW1pbmcgc2NoZW1lIHdpbGwgcGxlYXNlIGV2ZXJ5Ym9keS4gWW91IGhhdGUKK3RoZSBzY2hlbWUsIG90aGVycyBsb3ZlIGl0LiBXaG8ncyB0byBzYXkgd2hvJ3MgcmlnaHQgYW5kIHdobydzIHdyb25nPworVWx0aW1hdGVseSwgdGhlIHBlcnNvbiB3aG8gd3JpdGVzIHRoZSBjb2RlIGdldHMgdG8gY2hvb3NlLCBhbmQgd2hhdAorZXhpc3RzIG5vdyBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBjaG9pY2VzIG1hZGUgYnkgdGhlCitkZXZmcyBhdXRob3IgYW5kIHRoZQora2VybmVsIG1haW50YWluZXIgKExpbnVzKS4KKworSG93ZXZlciwgbm90IGFsbCBpcyBsb3N0LiBJZiB5b3Ugd2FudCB0byBjcmVhdGUgeW91ciBvd24gbmFtaW5nCitzY2hlbWUsIGl0IGlzIGEgc2ltcGxlIG1hdHRlciB0byB3cml0ZSBhIHN0YW5kYWxvbmUgc2NyaXB0LCBoYWNrCitkZXZmc2QsIG9yIHdyaXRlIGEgc2NyaXB0IGNhbGxlZCBieSBkZXZmc2QuIFlvdSBjYW4gY3JlYXRlIHdoYXRldmVyCituYW1pbmcgc2NoZW1lIHlvdSBsaWtlLgorCitGdXJ0aGVyLCBpZiB5b3Ugd2FudCB0byByZW1vdmUgYWxsIHRyYWNlcyBvZiB0aGUgZGV2ZnMgbmFtaW5nIHNjaGVtZQorZnJvbSAvZGV2LCB5b3UgY2FuIG1vdW50IGRldmZzIGVsc2V3aGVyZSAoc2F5CisvZGV2ZnMpIGFuZCBwb3B1bGF0ZSAvZGV2IHdpdGggbGlua3MgaW50bworL2RldmZzLiBUaGlzIHBvcHVsYXRpb24gY2FuIGJlIGF1dG9tYXRlZCB1c2luZyBkZXZmc2QgaWYgeW91Cit3aXNoLgorCitZb3UgY2FuIGV2ZW4gdXNlIHRoZSBWRlMgYmluZGluZyBmYWNpbGl0eSB0byBtYWtlIHRoZSBsaW5rcywgcmF0aGVyCit0aGFuIHVzaW5nIHN5bWJvbGljIGxpbmtzLiBUaGlzIHdheSwgeW91IGRvbid0IGV2ZW4gaGF2ZSB0byBzZWUgdGhlCisiZGVzdGluYXRpb24iIG9mIHRoZXNlIHN5bWJvbGljIGxpbmtzLgorCitEZXZmcyBwdXRzIHBvbGljeSBpbnRvIHRoZSBrZXJuZWwKKworVGhlcmUncyBhbHJlYWR5IHBvbGljeSBpbiB0aGUga2VybmVsLiBEZXZpY2UgbnVtYmVycyBhcmUgaW4gZmFjdAorcG9saWN5ICh3aHkgc2hvdWxkIHRoZSBrZXJuZWwgZGljdGF0ZSB3aGF0IGRldmljZSBudW1iZXJzIEkgdXNlPykuCitGYWNlIGl0LCBzb21lIHBvbGljeSBoYXMgdG8gYmUgaW4gdGhlIGtlcm5lbC4gVGhlIHJlYWwgZGlmZmVyZW5jZQorYmV0d2VlbiBkZXZpY2UgbmFtZXMgYXMgcG9saWN5IGFuZCBkZXZpY2UgbnVtYmVycyBhcyBwb2xpY3kgaXMgdGhhdAorbm8gb25lIHdpbGwgdXNlIGRldmljZSBudW1iZXJzIGRpcmVjdGx5LCBiZWNhdXNlIGRldmljZQorbnVtYmVycyBhcmUgZGV2b2lkIG9mIG1lYW5pbmcgdG8gaHVtYW5zIGFuZCBhcmUgdWdseS4gQXQgbGVhc3Qgd2l0aAordGhlIGRldmZzIGRldmljZSBuYW1lcywgKGV2ZW4gdGhvdWdoIHlvdSBjYW4gYWRkIHlvdXIgb3duIG5hbWluZworc2NoZW1lKSBzb21lIHBlb3BsZSB3aWxsIHVzZSB0aGUgZGV2ZnMtc3VwcGxpZWQgbmFtZXMgZGlyZWN0bHkuIFRoaXMKK29mZmVuZHMgc29tZSBwZW9wbGUgOi0pCisKK0RldmZzIGlzIGJsb2F0d2FyZQorCitUaGlzIGlzIG5vdCBldmVuIHJlbW90ZWx5IHRydWUuIEFzIHNob3duIGFib3ZlLAorYm90aCBjb2RlIGFuZCBkYXRhIHNpemUgYXJlIHF1aXRlIG1vZGVzdC4KKworCitIb3cgdG8gcmVwb3J0IGJ1Z3MKKworSWYgeW91IGhhdmUgKG9yIHRoaW5rIHlvdSBoYXZlKSBhIGJ1ZyB3aXRoIGRldmZzLCBwbGVhc2UgZm9sbG93IHRoZQorc3RlcHMgYmVsb3c6CisKKworCittYWtlIHN1cmUgeW91IGhhdmUgZW5hYmxlZCBkZWJ1Z2dpbmcgb3V0cHV0IHdoZW4gY29uZmlndXJpbmcgeW91cgora2VybmVsLiBZb3Ugd2lsbCBuZWVkIHRvIHNldCAoYXQgbGVhc3QpIHRoZSBmb2xsb3dpbmcgY29uZmlnIG9wdGlvbnM6CisKK0NPTkZJR19ERVZGU19ERUJVRz15CitDT05GSUdfREVCVUdfS0VSTkVMPXkKK0NPTkZJR19ERUJVR19TTEFCPXkKKworCisKK3BsZWFzZSBtYWtlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCBkZXZmcyBwYXRjaGVzIGFwcGxpZWQuIFRoZQorbGF0ZXN0IGtlcm5lbCB2ZXJzaW9uIG1pZ2h0IG5vdCBoYXZlIHRoZSBsYXRlc3QgZGV2ZnMgcGF0Y2hlcyBhcHBsaWVkCit5ZXQgKExpbnVzIGlzIHZlcnkgYnVzeSkKKworCitzYXZlIGEgY29weSBvZiB5b3VyIGNvbXBsZXRlIGtlcm5lbCBsb2dzIChwcmVmZXJhYmx5IGJ5Cit1c2luZyB0aGUgZG1lc2cgcHJvZ3JhbW1lKSBmb3IgbGF0ZXIgaW5jbHVzaW9uIGluIHlvdXIgYnVnCityZXBvcnQuIFlvdSBtYXkgbmVlZCB0byB1c2UgdGhlIC1zIHN3aXRjaCB0byBpbmNyZWFzZSB0aGUKK2ludGVybmFsIGJ1ZmZlciBzaXplIHNvIHlvdSBjYW4gY2FwdHVyZSBhbGwgdGhlIGJvb3QgbWVzc2FnZXMuCitEb24ndCBlZGl0IG9yIHRyaW0gdGhlIGRtZXNnIG91dHB1dAorCisKKworCit0cnkgYm9vdGluZyB3aXRoIGRldmZzPWRhbGwgcGFzc2VkIHRvIHRoZSBrZXJuZWwgYm9vdAorY29tbWFuZCBsaW5lIChyZWFkIHRoZSBkb2N1bWVudGF0aW9uIG9uIHlvdXIgYm9vdGxvYWRlciBvbiBob3cgdG8gZG8KK3RoaXMpLCBhbmQgc2F2ZSB0aGUgcmVzdWx0IHRvIGEgZmlsZS4gVGhpcyBtYXkgYmUgcXVpdGUgdmVyYm9zZSwgYW5kCitpdCBtYXkgb3ZlcmZsb3cgdGhlIG1lc3NhZ2VzIGJ1ZmZlciwgYnV0IHRyeSB0byBnZXQgYXMgbXVjaCBvZiBpdCBhcworeW91IGNhbgorCisKK2lmIHlvdSBnZXQgYW4gT29wcywgcnVuIGtzeW1vb3BzIHRvIGRlY29kZSBpdCBzbyB0aGF0IHRoZQorbmFtZXMgb2YgdGhlIG9mZmVuZGluZyBmdW5jdGlvbnMgYXJlIHByb3ZpZGVkLiBBIG5vbi1kZWNvZGVkIE9vcHMgaXMKK3ByZXR0eSB1c2VsZXNzCisKKworc2VuZCBhIGNvcHkgb2YgeW91ciBkZXZmc2QgY29uZmlndXJhdGlvbiBmaWxlKHMpCisKK3NlbmQgdGhlIGJ1ZyByZXBvcnQgdG8gbWUgZmlyc3QuCitEb24ndCBleHBlY3QgdGhhdCBJIHdpbGwgc2VlIGl0IGlmIHlvdSBwb3N0IGl0IHRvIHRoZSBsaW51eC1rZXJuZWwKK21haWxpbmcgbGlzdC4gSW5jbHVkZSBhbGwgdGhlIGluZm9ybWF0aW9uIGxpc3RlZCBhYm92ZSwgcGx1cworYW55dGhpbmcgZWxzZSB0aGF0IHlvdSB0aGluayBtaWdodCBiZSByZWxldmFudC4gUHV0IHRoZSBzdHJpbmcKK2RldmZzIHNvbWV3aGVyZSBpbiB0aGUgc3ViamVjdCBsaW5lLCBzbyBteSBtYWlsIGZpbHRlcnMgbWFyaworaXQgYXMgdXJnZW50CisKKworCisKK0hlcmUgaXMgYSBnZW5lcmFsIGd1aWRlIG9uIGhvdyB0byBhc2sgcXVlc3Rpb25zIGluIGEgd2F5IHRoYXQgZ3JlYXRseQoraW1wcm92ZXMgeW91ciBjaGFuY2VzIG9mIGdldHRpbmcgYSByZXBseToKKworaHR0cDovL3d3dy50dXhlZG8ub3JnL35lc3IvZmFxcy9zbWFydC1xdWVzdGlvbnMuaHRtbC4gSWYgeW91IGhhdmUKK2EgYnVnIHRvIHJlcG9ydCwgeW91IHNob3VsZCBhbHNvIHJlYWQKKworaHR0cDovL3d3dy5jaGlhcmsuZ3JlZW5lbmQub3JnLnVrL35zZ3RhdGhhbS9idWdzLmh0bWwuCisKKworU3RyYW5nZSBrZXJuZWwgbWVzc2FnZXMKKworWW91IG1heSBzZWUgZGV2ZnMtcmVsYXRlZCBtZXNzYWdlcyBpbiB5b3VyIGtlcm5lbCBsb2dzLiBCZWxvdyBhcmUgc29tZQorbWVzc2FnZXMgYW5kIHdoYXQgdGhleSBtZWFuIChhbmQgd2hhdCB5b3Ugc2hvdWxkIGRvIGFib3V0IHRoZW0sIGlmCithbnl0aGluZykuCisKKworCitkZXZmc19yZWdpc3RlcihmcmVkKTogY291bGQgbm90IGFwcGVuZCB0byBwYXJlbnQsIGVycjogLTE3CisKK1lvdSBuZWVkIHRvIGNoZWNrIHdoYXQgdGhlIGVycm9yIGNvZGUgbWVhbnMsIGJ1dCB1c3VhbGx5IDE3IG1lYW5zCitFRVhJU1QuIFRoaXMgbWVhbnMgdGhhdCBhIGRyaXZlciBhdHRlbXB0ZWQgdG8gY3JlYXRlIGFuIGVudHJ5CitmcmVkIGluIGEgZGlyZWN0b3J5LCBidXQgdGhlcmUgYWxyZWFkeSB3YXMgYW4gZW50cnkgd2l0aCB0aGF0CituYW1lLiBUaGlzIGlzIG9mdGVuIGNhdXNlZCBieSBmbGF3ZWQgYm9vdCBzY3JpcHRzIHdoaWNoIHVudGFyIGEgYnVuY2gKK29mIGlub2RlcyBpbnRvIC9kZXYsIGFzIGEgd2F5IHRvIHJlc3RvcmUgcGVybWlzc2lvbnMuIFRoaXMKK21lc3NhZ2UgaXMgaGFybWxlc3MsIGFzIHRoZSBkZXZpY2Ugbm9kZXMgd2lsbCBzdGlsbAorcHJvdmlkZSBhY2Nlc3MgdG8gdGhlIGRyaXZlciAodW5sZXNzIHlvdSB1c2UgdGhlIGRldmZzPW9ubHkKK2Jvb3Qgb3B0aW9uLCB3aGljaCBpcyBvbmx5IGZvciBkZWRpY2F0ZWQgc291bHM6LSkuIElmIHlvdSB3YW50IHRvIGdldAorcmlkIG9mIHRoZXNlIGFubm95aW5nIG1lc3NhZ2VzLCB1cGdyYWRlIHRvIGRldmZzZC12MS4zLjIwIGFuZCB1c2UgdGhlCityZWNvbW1lbmRlZCBSRVNUT1JFIGRpcmVjdGl2ZSB0byByZXN0b3JlIHBlcm1pc3Npb25zLgorCisKK2RldmZzX21rX2RpcihiaWxsKTogdXNpbmcgb2xkIGVudHJ5IGluIGRpcjogYzE4MDg3MjQgIiIKKworVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBtZXNzYWdlIGFib3ZlLCBleGNlcHQgdGhhdCBhIGRyaXZlciBhdHRlbXB0ZWQKK3RvIGNyZWF0ZSBhIGRpcmVjdG9yeSBuYW1lZCBiaWxsLCBhbmQgdGhlIHBhcmVudCBkaXJlY3RvcnkKK2hhcyBhbiBlbnRyeSB3aXRoIHRoZSBzYW1lIG5hbWUuIEluIHRoaXMgY2FzZSwgdG8gZW5zdXJlIHRoYXQgZHJpdmVycworY29udGludWUgdG8gd29yayBwcm9wZXJseSwgdGhlIG9sZCBlbnRyeSBpcyByZS11c2VkIGFuZCBnaXZlbiB0byB0aGUKK2RyaXZlci4gSW4gMi41IGtlcm5lbHMsIHRoZSBkcml2ZXIgaXMgZ2l2ZW4gYSBOVUxMIGVudHJ5LCBhbmQgdGh1cywKK3VuZGVyIHJhcmUgY2lyY3Vtc3RhbmNlcywgbWF5IG5vdCBjcmVhdGUgdGhlIHJlcXVpcmUgZGV2aWNlIG5vZGVzLgorVGhlIHNvbHV0aW9uIGlzIHRoZSBzYW1lIGFzIGFib3ZlLgorCisKKworCisKK0NvbXBpbGF0aW9uIHByb2JsZW1zIHdpdGggZGV2ZnNkCisKK1VzdWFsbHksIHlvdSBjYW4gY29tcGlsZSBkZXZmc2QganVzdCBieSB0eXBpbmcgaW4KK21ha2UgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnksIGZvbGxvd2VkIGJ5IGEgbWFrZQoraW5zdGFsbCAoYXMgcm9vdCkuIFNvbWV0aW1lcywgeW91IG1heSBoYXZlIHByb2JsZW1zLCBwYXJ0aWN1bGFybHkKK29uIGJyb2tlbiBjb25maWd1cmF0aW9ucy4KKworCisKK2Vycm9yIG1lc3NhZ2VzIHJlbGF0aW5nIHRvIERFVkZTRF9OT1RJRllfREVMRVRFCisKK1RoaXMgaGFwcGVuZWQgYmVjYXVzZSB5b3UgaGF2ZSBhbiBhbmNpZW50IHNldCBvZiBrZXJuZWwgaGVhZGVycworaW5zdGFsbGVkIGluIC91c3IvaW5jbHVkZS9saW51eCBvciAvdXNyL3NyYy9saW51eC4KK0luc3RhbGwga2VybmVsIDIuNC4xMCBvciBsYXRlci4gWW91IG1heSBuZWVkIHRvIHBhc3MgdGhlCitLRVJORUxfRElSIHZhcmlhYmxlIHRvIG1ha2UgKGlmIHlvdSBkaWQgbm90IGluc3RhbGwKK3RoZSBuZXcga2VybmVsIHNvdXJjZXMgYXMgL3Vzci9zcmMvbGludXgpLCBvciB5b3UgbWF5IGNvcHkKK3RoZSBkZXZmc19mcy5oIGZpbGUgaW4gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSBpbnRvCisvdXNyL2luY2x1ZGUvbGludXguCisKKworCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworT3RoZXIgcmVzb3VyY2VzCisKKworCitEb3VnbGFzIEdpbGJlcnQgaGFzIHdyaXR0ZW4gYSB1c2VmdWwgZG9jdW1lbnQgYXQKKworaHR0cDovL3d3dy50b3JxdWUubmV0L3NnL2RldmZzX3Njc2kuaHRtbCB3aGljaAorZXhwbG9yZXMgdGhlIFNDU0kgc3Vic3lzdGVtIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggZGV2ZnMKKworCitEb3VnbGFzIEdpbGJlcnQgaGFzIHdyaXR0ZW4gYW5vdGhlciB1c2VmdWwgZG9jdW1lbnQgYXQKKworaHR0cDovL3d3dy50b3JxdWUubmV0L3Njc2kvU0NTSS0yLjQtSE9XVE8vIHdoaWNoCitkaXNjdXNzZXMgdGhlIExpbnV4IFNDU0kgc3Vic3lzdGVtIGluIDIuNC4KKworCitKb2hhbm5lcyBFcmRmZWx0IGhhcyBzdGFydGVkIGEgZGlzY3Vzc2lvbiBwYXBlciBvbiBMaW51eCBhbmQKK2hvdC1zd2FwIGRldmljZXMsIGRlc2NyaWJpbmcgd2hhdCB0aGUgcmVxdWlyZW1lbnRzIGFyZSBmb3IgYSBzY2FsYWJsZQorc29sdXRpb24gYW5kIGhvdyBhbmQgd2h5IGhlJ3MgdXNlZCBkZXZmcytkZXZmc2QuIE5vdGUgdGhhdCB0aGlzIGlzIGFuCitlYXJseSBkcmFmdCBvbmx5LCBhdmFpbGFibGUgaW4gcGxhaW4gdGV4dCBmb3JtIGF0OgorCitodHRwOi8vam9oYW5uZXMuZXJkZmVsdC5jb20vaG90c3dhcC50eHQuCitKb2hhbm5lcyBoYXMgcHJvbWlzZWQgYSBIVE1MIHZlcnNpb24gd2lsbCBmb2xsb3cuCisKKworSSBwcmVzZW50ZWQgYW4gaW52aXRlZCAKK3BhcGVyCithdCB0aGUKKworMm5kIEFubnVhbCBTdG9yYWdlIE1hbmFnZW1lbnQgV29ya3Nob3AgaGVsZCBpbiBNaWFtaWEsIEZsb3JpZGEsCitVLlMuQS4gaW4gT2N0b2JlciAyMDAwLgorCisKKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK1RyYW5zbGF0aW9ucyBvZiB0aGlzIGRvY3VtZW50CisKK1RoaXMgZG9jdW1lbnQgaGFzIGJlZW4gdHJhbnNsYXRlZCBpbnRvIG90aGVyIGxhbmd1YWdlcy4KKworCisKKworVGhlIGRvY3VtZW50IG1hc3RlciAoaW4gRW5nbGlzaCkgYnkgcmdvb2NoQGF0bmYuY3Npcm8uYXUgaXMKK2F2YWlsYWJsZSBhdAorCitodHRwOi8vd3d3LmF0bmYuY3Npcm8uYXUvfnJnb29jaC9saW51eC9kb2NzL2RldmZzLmh0bWwKKworCisKK0EgS29yZWFuIHRyYW5zbGF0aW9uIGJ5IHZpYXRvcmlzQG5vd251cmkubmV0IGlzIGF2YWlsYWJsZSBhdAorCitodHRwOi8veW91ci5kZXN0aW55LnBlLmtyL2RldmZzL2RldmZzLmh0bWwKKworCisKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK01vc3QgZmxhZ3MgY291cnRlc3kgb2YgSVRBJ3MgCitGbGFncyBvZiBBbGwgQ291bnRyaWVzCit1c2VkIHdpdGggcGVybWlzc2lvbi4gCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2RldmZzL1RvRG8gYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2RldmZzL1RvRG8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZkNWE4ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZGV2ZnMvVG9EbwpAQCAtMCwwICsxLDQwIEBACisJCURldmljZSBGaWxlIFN5c3RlbSAoZGV2ZnMpIFRvRG8gTGlzdAorCisJCVJpY2hhcmQgR29vY2ggPHJnb29jaEBhdG5mLmNzaXJvLmF1PgorCisJCQkgICAgICAzLUpVTC0yMDAwCisKK1RoaXMgaXMgYSBsaXN0IG9mIHRoaW5ncyB0byBiZSBkb25lIGZvciBiZXR0ZXIgZGV2ZnMgc3VwcG9ydCBpbiB0aGUKK0xpbnV4IGtlcm5lbC4gSWYgeW91J2QgbGlrZSB0byBjb250cmlidXRlIHRvIHRoZSBkZXZmcywgcGxlYXNlIGhhdmUgYQorbG9vayBhdCB0aGlzIGxpc3QgZm9yIGFueXRoaW5nIHRoYXQgaXMgdW5hbGxvY2F0ZWQuIEFsc28sIGlmIHRoZXJlIGFyZQoraXRlbXMgbWlzc2luZyAoc3VyZWx5KSwgcGxlYXNlIGNvbnRhY3QgbWUgc28gSSBjYW4gYWRkIHRoZW0gdG8gdGhlCitsaXN0IChwcmVmZXJhYmx5IHdpdGggeW91ciBuYW1lIGF0dGFjaGVkIHRvIHRoZW06LSkuCisKKworLSA+MjU2IHB0eXMKKyAgVGhhbmtzIHRvIEMuIFNjb3R0IEFuYW5pYW4gPGNhbmFuaWFuQGFsdW1uaS5wcmluY2V0b24uZWR1PgorCistIEFtaWdhIGZsb3BweSBkcml2ZXIgKGRyaXZlcnMvYmxvY2svYW1pZmxvcC5jKQorCistIEF0YXJpIGZsb3BweSBkcml2ZXIgKGRyaXZlcnMvYmxvY2svYXRhZmxvcC5jKQorCistIFNXSU0zIChTdXBlciBXb3ogSW50ZWdyYXRlZCBNYWNoaW5lIDMpIGZsb3BweSBkcml2ZXIgKGRyaXZlcnMvYmxvY2svc3dpbTMuYykKKworLSBBbWlnYSBab3Jyb0lJIHJhbWRpc2MgZHJpdmVyIChkcml2ZXJzL2Jsb2NrL3oycmFtLmMpCisKKy0gUGFyYWxsZWwgcG9ydCBBVEFQSSBDRC1ST00gKGRyaXZlcnMvYmxvY2svcGFyaWRlL3BjZC5jKQorCistIFBhcmFsbGVsIHBvcnQgQVRBUEkgZmxvcHB5IChkcml2ZXJzL2Jsb2NrL3BhcmlkZS9wZi5jKQorCistIEFQMTAwMCBibG9jayBkcml2ZXIgKGRyaXZlcnMvYXAxMDAwL2FwLmMsIGRyaXZlcnMvYXAxMDAwL2Rkdi5jKQorCistIEFyY2hpbWVkZXMgZmxvcHB5IChkcml2ZXJzL2Fjb3JuL2Jsb2NrL2ZkMTc3Mi5jKQorCistIE1GTSBoYXJkIGRyaXZlIChkcml2ZXJzL2Fjb3JuL2Jsb2NrL21mbWhkLmMpCisKKy0gSTJPIGJsb2NrIGRldmljZSAoZHJpdmVycy9tZXNzYWdlL2kyby9pMm9fYmxvY2suYykKKworLSBTVC1SQU0gZGV2aWNlIChhcmNoL202OGsvYXRhcmkvc3RyYW0uYykKKworLSBSYXcgZGV2aWNlcworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2RldmZzL2Jvb3Qtb3B0aW9ucyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZGV2ZnMvYm9vdC1vcHRpb25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmM2QzM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2RldmZzL2Jvb3Qtb3B0aW9ucwpAQCAtMCwwICsxLDY1IEBACisvKiAtKi0gYXV0by1maWxsIC0qLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKwkJRGV2aWNlIEZpbGUgU3lzdGVtIChkZXZmcykgQm9vdCBPcHRpb25zCisKKwkJUmljaGFyZCBHb29jaCA8cmdvb2NoQGF0bmYuY3Npcm8uYXU+CisKKwkJCSAgICAgIDE4LUFVRy0yMDAxCisKKworV2hlbiBDT05GSUdfREVWRlNfREVCVUcgaXMgZW5hYmxlZCwgeW91IGNhbiBwYXNzIHNldmVyYWwgYm9vdCBvcHRpb25zCit0byB0aGUga2VybmVsIHRvIGRlYnVnIGRldmZzLiBUaGUgYm9vdCBvcHRpb25zIGFyZSBwcmVmaXhlZCBieQorImRldmZzPSIsIGFuZCBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcy4gU3BhY2VzIGFyZSBub3QgYWxsb3dlZC4gVGhlCitzeW50YXggbG9va3MgbGlrZSB0aGlzOgorCitkZXZmcz08b3B0aW9uMT4sPG9wdGlvbjI+LDxvcHRpb24zPgorCithbmQgc28gb24uIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudGVkIHRvIHR1cm4gb24gZGVidWdnaW5nIGZvciBtb2R1bGUKK2xvYWQgcmVxdWVzdHMgYW5kIGRldmljZSByZWdpc3RyYXRpb24sIHlvdSB3b3VsZCBkbzoKKworZGV2ZnM9ZG1vZCxkcmVnCisKK1lvdSBtYXkgcHJlZml4ICJubyIgdG8gYW55IG9wdGlvbi4gVGhpcyB3aWxsIGludmVydCB0aGUgb3B0aW9uLgorCisKK0RlYnVnZ2luZyBPcHRpb25zCis9PT09PT09PT09PT09PT09PQorCitUaGVzZSByZXF1aXJlcyBDT05GSUdfREVWRlNfREVCVUcgdG8gYmUgZW5hYmxlZC4KK05vdGUgdGhhdCBhbGwgZGVidWdnaW5nIG9wdGlvbnMgaGF2ZSAnZCcgYXMgdGhlIGZpcnN0IGNoYXJhY3Rlci4gQnkKK2RlZmF1bHQgYWxsIG9wdGlvbnMgYXJlIG9mZi4gQWxsIGRlYnVnZ2luZyBvdXRwdXQgaXMgc2VudCB0byB0aGUKK2tlcm5lbCBsb2dzLiBUaGUgZGVidWdnaW5nIG9wdGlvbnMgZG8gbm90IHRha2UgZWZmZWN0IHVudGlsIHRoZSBkZXZmcwordmVyc2lvbiBtZXNzYWdlIGFwcGVhcnMgKGp1c3QgcHJpb3IgdG8gdGhlIHJvb3QgZmlsZXN5c3RlbSBiZWluZworbW91bnRlZCkuCisKK1RoZXNlIGFyZSB0aGUgb3B0aW9uczoKKworZG1vZAkJcHJpbnQgbW9kdWxlIGxvYWQgcmVxdWVzdHMgdG8gPHJlcXVlc3RfbW9kdWxlPgorCitkcmVnCQlwcmludCBkZXZpY2UgcmVnaXN0ZXIgcmVxdWVzdHMgdG8gPGRldmZzX3JlZ2lzdGVyPgorCitkdW5yZWcJCXByaW50IGRldmljZSB1bnJlZ2lzdGVyIHJlcXVlc3RzIHRvIDxkZXZmc191bnJlZ2lzdGVyPgorCitkY2hhbmdlCQlwcmludCBkZXZpY2UgY2hhbmdlIHJlcXVlc3RzIHRvIDxkZXZmc19zZXRfZmxhZ3M+CisKK2RpbG9va3VwCXByaW50IGlub2RlIGxvb2t1cCByZXF1ZXN0cworCitkaWdldAkJcHJpbnQgVkZTIGlub2RlIGFsbG9jYXRpb25zCisKK2RpdW5saW5rCXByaW50IGlub2RlIHVubGlua3MKKworZGljaGFuZ2UJcHJpbnQgaW5vZGUgY2hhbmdlcworCitkaW1rbm9kCQlwcmludCBjYWxscyB0byBta25vZCgyKQorCitkYWxsCQlzb21lIGRlYnVnZ2luZyB0dXJuZWQgb24KKworCitPdGhlciBPcHRpb25zCis9PT09PT09PT09PT09CisKK1RoZXNlIGNvbnRyb2wgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIG9mIGRldmZzLiBUaGUgb3B0aW9ucyBhcmU6CisKK21vdW50CQltb3VudCBkZXZmcyBvbnRvIC9kZXYgYXQgYm9vdCB0aW1lCisKK29ubHkJCWRpc2FibGUgbm9uLWRldmZzIGRldmljZSBub2RlcyBmb3IgZGV2ZnMtY2FwYWJsZSBkcml2ZXJzCg==