eGZzcHJvZ3MtNC4xMS4wLXJjMSAoNCBBcHIgMjAxNykKCS0geGZzX2lvOiBhZGQgc3RhdHggc3VwcG9ydCAoRGF2aWQgSG93ZWxscywgRXJpYyBTYW5kZWVuKQoJLSB4ZnNfaW86IGZpeCAiZmFsbG9jIC1wIiB0byBwYXNzIEtFRVBfU0laRSAoQ2FsdmluIE93ZW5zKQoJLSB4ZnNfaW86IHN1cHBvcnQgc2h1dGRvd24gb24gZm9yZWlnbiBmaWxlc3lzdGVtcyAoRGFycmljayBXb25nKQoJLSB4ZnNfcmVwYWlyOiByZXBhaXIgemVyby1zaXplZCBzeW1saW5rcyAoQnJpYW4gRm9zdGVyKQoJLSB4ZnNfcmVwYWlyOiB3YXJuIGFib3V0IGRpcnR5IGxvZyB3aXRoIC1uIG9wdGlvbiAoRXJpYyBTYW5kZWVuKQoJLSB4ZnMuNTogZG9jdW1lbnQgYmFycmllciBtb3VudCBvcHRpb24gZGVwcmVjYXRpb24gKEVyaWMgU2FuZGVlbikKCnhmc3Byb2dzLTQuMTAuMCAoNiBGZWIgMjAxNykKCS0gYnVpbGQ6IGZpeCBfX2JpdHdpc2UgZGVmaW5pdGlvbnMgdnMga2VybmVsIGhlYWRlcnMgKERhcnJpY2sgV29uZykKCnhmc3Byb2dzLTQuMTAuMC1yYzEgKDE1IEZlYiAyMDE3KQoJLSBidWlsZDogZml4IGNyb3NzLWNvbXBpbGUgKEd3ZW5kYWwgR3JpZ25vdSkKCS0gcmVtb3ZlIG9sZCBJcml4IHN1cHBvcnQgKENocmlzdG9waCBIZWxsd2lnKQoJLSB4ZnNfcmVwYWlyOiB2YXJpb3VzIGFkZGl0aW9uYWwgY2hlY2tzIChEYXJyaWNrIFdvbmcpCgktIHhmc19yZXBhaXI6IGRvY3VtZW50IGRpcnR5IGxvZyBjb25kaXRpb25zIChEYXJyaWNrIFdvbmcpCgktIHhmc19yZXBhaXI6IGRvY3VtZW50IGV4aXQgY29kZXMgKFppcm9uZyBMYW5nKQoJLSB4ZnNfaW86IGZpeCBidWlsZGluZyB3aXRoIG11c2wgKFJhbHBoIFNlbm5oYXVzZXIpCgktIHhmc19pbzogYWRkIHNldF9lbmNwb2xpY3kgLyBnZXRfZW5jcG9saWN5IChFcmljIEJpZ2dlcnMpCgktIHhmc19pbzogRml4IGNvbW1hbmQgaXRlcmF0aW9uIChEYXZlIENoaW5uZXIpCgktIHhmc19pbzogZml4IG1pc3Npbmcgc3luY2ZzIGNvbW1hbmQgIChBbWlyIEdvbGRzdGVpbikKCS0geGZzX2RiOiBmaXggJ3NvdXJjZScgY29tbWFuZCB3aGVuIHBhc3NlZCBhcyBhIC1jIG9wdGlvbiAoRGFycmljayBXb25nKQoJLSB4ZnNfbG9ncHJpbnQ6IGhhbmRsZSBsb2cgb3BlcmF0aW9uIHNwbGl0IG9mIGlub2RlIGl0ZW0gKEhvdSBUYW8pCgktIHhmc19tZXRhZHVtcDogaWdub3JlIGVtcHR5IGF0dHJpYnV0ZSBsZWFmIChFcmljIFNhbmRlZW4pCgktIGxpYnhmczogZG9uJ3QgT09NIG9uIGNvcnJ1cHQgYWdjb3VudCAoRGFycmljayBXb25nKQoKeGZzcHJvZ3MtNC45LjAgKDUgSmFuIDIwMTcpCgktIG5vIGNoYW5nZXMgZnJvbSB2NC45LjAtcmMxCgp4ZnNwcm9ncy00LjkuMC1yYzEgKDIyIERlYyAyMDE2KQoJLSBhZGQgcmVmbGluayBhbmQgZGVkdXBlIHN1cHBvcnQgKERhcnJpY2sgV29uZykKCS0gQ29udmVydCBmcm9tIG9mZjY0X3QgdG8gb2ZmX3QgKEZlbGl4IEphbmRhKQoJLSB4ZnNfaW86IGFkZCBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIHN0YXJ0IGFuIGlkbGUgdGhyZWFkIChBbWlyIEdvbGRzdGVpbikKCS0geGZzX3JlcGFpcjoganVuayBsZWFmIGF0dHJpYnV0ZSBpZiBjb3VudCA9PSAwIChFcmljIFNhbmRlZW4pCgktIHhmc19xdW90YTogaGFuZGxlIHdyYXBwZWQgaWQgZnJvbSBHRVRORVhUUVVPVEEgKEVyaWMgU2FuZGVlbikKCS0geGZzX3JlcGFpcjogZml4IHNvbWUgcG90ZW50aWFsIG51bGwgcG9pbnRlciBkZWZlcmVuY2VzIChEYXJyaWNrIFdvbmcpCgktIGxpYnhmc19hcHBseTogZmlsdGVyaW5nIGZpeGVzIChEYXZlIENoaW5uZXIpCgp4ZnNwcm9ncy00LjguMCAoMTcgT2N0IDIwMTYpCgktIG5vIGNoYW5nZXMgZnJvbSB2NC44LjAtcmMzCgp4ZnNwcm9ncy00LjguMC1yYzMgKDMgT2N0IDIwMTYpCgktIHhmc19pbzogY2xlYW4gdXAgaW5vZGUgY29tbWFuZCAoRXJpYyBTYW5kZWVuKQoJLSB4ZnNfcmVwYWlyOiBmaXggcGhhc2UgNSBidHJlZSBzaXplIG92ZXJlc3RpbWF0aW9uIChEYXJyaWNrIFdvbmcpCgktIHhmc19yZXBhaXI6IGZpeCBwaGFzZSA1IEFHRkwgcm1hcCB1cGRhdGUgKERhcnJpY2sgV29uZykKCS0gbGlieGZzOiBsaWJ4ZnNfaWdldCgpIGNsZWFudXAgKEVyaWMgU2FuZGVlbikKCS0gbGlieGNtZDogZml4IGNvdW50IG9mIFhGUyBmaWxlc3lzdGVtcyBpbiBwYXRoIHRhYmxlIChFcnl1IEd1YW4pCgp4ZnNwcm9ncy00LjguMC1yYzIgKDIzIFNlcCAyMDE2KQoJLSB4ZnNfY29weTogdXVpZCBoYW5kbGluZyBmaXhlcyAoRXJpYyBTYW5kZWVuKQoJLSB4ZnNfcmVwYWlyOiBkaXJlY3RvcnkgcmVidWlsZCBzZWdmYXVsdCBmaXggKEVyaWMgU2FuZGVlbikKCS0geGZzX3JlcGFpcjogcmVwb3J0IGxvZyBkaXJ0aW5lc3MgY29ycmVjdGx5IChFcmljIFNhbmRlZW4pCgktIGxpYnhmczogbW91bnRlZCBmaWxlc3lzdGVtIGRldGVjdGlvbiBjbGVhbnVwcyAoRXJpYyBTYW5kZWVuKQoJLSB4ZnNfbG9ncHJpbnQ6IGRvbid0IHByaW50IHRyYW5zYWN0aW9uIHR5cGVzIGFueW1vcmUgKEhvdSBUYW8pCgktIHhmc19xdW90YTogYWxsb3cgb3BlcmF0aW9uIG9uIG5vbi1YRlMgZmlsZXN5c3RlbXMgKEJpbGwgTydEb25uZWxsKQoJLSB4ZnNfaW86IGFsbG93IHByb2plY3QgcXVvdGEgb3BlcmF0aW9ucyBvbiBub24tWEZTIChFcmljIFNhbmRlZW4pCgktIG1rZnMueGZzOiBtYW4gcGFnZSBjYWxyaWZpY2F0aW9uIGZvciBmdHlwZSBkZWZhdWx0cyAoRXJpYyBTYW5kZWVuKQoKeGZzcHJvZ3MtNC44LjAtcmMxICg5IFNlcCAyMDE2KQoJLSBjaGFuZ2UgY29udGFjdCBlbWFpbHMgdG8gbGludXgteGZzQHZnZXIua2VybmVsLm9yZwoJLSBsaWJ4ZnM6IGtlcm5lbCBzeW5jIHVwIHRvIDQuOC1yYzEKCS0gSW5pdGlhbCByZXZlcnNlIG1hcHBpbmcgc3VwcG9ydCAoRGFycmljayBXb25nKQoJLSBidWZmZXIgbG9jayB0cmFjZSBhbmFseXNpcyB0b29sIChEYXJyaWNrIFdvbmcpCgktIGxvZ3ByaW50OiBjbGVhbnVwcyBhbmQgZml4ZXMgKERhcnJpY2sgV29uZykKCS0gbWFuIHBhZ2UgdXBkYXRlcyAodmFyaW91cykKCS0gbGlieGNtZDogbW91bnQgb3B0aW9uIHBhcnNpbmcgZml4ZXMgKERhcnJpY2sgV29uZykKCS0geGZzX3F1b3RhOiB1c2UgWEZTX0dFVFFTVEFUViAoRXJpYyBTYW5kZWVuKQoJLSB4ZnNfcXVvdGE6IGFsbG93IHVzZSBvbiBub24tWEZTIGZpbGVzeXN0ZW1zIChCaWxsIE8nRG9ubmVsbCkKCS0geGZzX2RiOiBhbGxvdyBkaXJlY3QgbWFuaXB1bGF0aW9uIG9mIENSQ3MgKEVyaWMgU2FuZGVlbikKCS0gbGlieGZzOiBnZXQgcmlkIG9mIHVzdGF0KCkgY2FsbHMgKEZlbGl4IEphbmRhKQoKeGZzcHJvZ3MtNC43LjAgKDUgQXVnIDIwMTYpCgktIHhmc19pbzogbWFuIHBhZ2UgZm9yIGNvcHlfZmlsZV9yYW5nZSAoQW5uYSBTY2h1bWFrZXIpCgktIHhmc19xdW90YTogaGFuZGxlIFhGU19HRVRORVhUUVVPVEEgZmFpbHVyZSBzYW5lbHkgKFpvcnJvIExhbmcpCgktIG1rZnM6IHJlbW92ZSBvbGQgZ2xpYmMgYnVpbGQgZmFpbHVyZSB3b3JrYXJvdW5kIChGZWxpeCBKYW5kYSkKCnhmc3Byb2dzLTQuNy4wLXJjMiAoMjAgSnVsIDIwMTYpCgktIHhmc19pbzogYWRkIHN1cHBvcnQgZm9yIGNvcHlfZmlsZV9yYW5nZSAoQW5uYSBTY2h1bWFrZXIpCgktIHJlcGFpcjogZml4IGV4aXQgdmFsdWUgYWZ0ZXIgbG93IG1lbW9yeSBpcyBkZXRlY3RlZCAoWm9ycm8gTGFuZykKCS0gcmVwYWlyOiBmaXggcXVvdGEgaW5vZGUgZGV0ZWN0aW9uIGlzc3VlIChFcmljIFNhbmRlZW4pCgktIGZpeCBjb3Zlcml0eSBpc3N1ZXMgZnJvbSA0LjctcmMxIChCaWxsIE8nRG9ubmVsbCkKCnhmc3Byb2dzLTQuNy4wLXJjMSAoMjIgSnVuIDIwMTYpCgktIGxpYnhmcyBrZXJuZWwgc3luYyB1cCB0byA0LjctcmMxCgktIHF1b3RhOiBuZXcgZWZmaWNpZW50IGl0ZXJhdGlvbiBtZWNoYW5pc20gKEVyaWMgU2FuZGVlbikKCS0gcXVvdGE6IHN1cHBvcnQgdXNlcm5hbWVzIHN0YXJ0aW5nIHdpdGggZGlnaXRzIChab3JybyBMYW5nKQoJLSB4ZnNfaW86IG1tYXAvbXJlbWFwIGZpeGVzIChab3JybyBMYW5nKQoJLSBidWlsZC90cmFuc2xhdGlvbiBmaXhlcyAoTWlrZSBGcnlzaW5nZXIpCgktIHJlcGFpcjogZXJyb3IgbWVzc2dlIGNsZWFudXBzIChFcmljIFNhbmRlZW4pCgktIG1rZnM6IHRhYmxlIGJhc2VkIG9wdGlvbiBwYXJzaW5nIChKYW4gVHVsYWssIEVyaWMgU2FuZGVlbikKCS0gbWV0YWR1bXA6IHNlY3RvciBzaXplIHN1cHBvcnQgZml4ZXMgKEVyaWMgU2FuZGVlbikKCS0gZGI6IHVuYWxpZ25lZCBhY2NlcyBmaXhlcyAoRXJpYyBTYW5kZWVuKQoJLSBkYjogYWRkIENSQyByZWNhbGN1bGF0aW9uIGZvciBjb3JydXB0IGJsb2NrcwoJLSBkYjogZml4IGFycmF5IG5vdGF0aW9uIGhhbmRsaW5nIGluIHByaW50IGNvbW1hbmRzCgktIGRiOiBOb3RlIHRoYXQgZnJhZ21lbmF0aW9uIGZhY3RvciBpcyBtZWFuaW5nbGVzcyAoRXJpYyBTYW5kZWVuKQoJLSByZXBhaXI6IG1vcmUgZWZmaWNpZW50IHNlY29uZGFyeSBzdXBlcmJsb2NrIHNlYXJjaCAoQmlsbCBPJ0Rvbm5lbGwpCgktIHF1b3RhOiB0aW1lciByZXBvcnRpbmcgY29ybmVyIGNhc2UgZml4ZXMgKEVyaWMgU2FuZGVlbikKCS0gaGVhZGVyczogc3RydWN0IGZzeGF0dHIgcmVkaWZpbml0aW9uIGZpeGVzIChDaHJpc3RvcGggSGVsbHdpZykKCS0gbWFuIHBhZ2UgdXBkYXRlcyAoRXJpYyBTYW5kZWVuLCBKYW4gVHVsYWssIFpvcnJvIExhbmcpCgktIHJlcGFpcjogUlQgc3VtbWFyeSBpbm9kZSByZWJ1aWxkIGZpeCAoRXJpYyBTYW5kZWVuKQoJLSBkYjogc3BhcnNlIGlub2RlIGNoZWNrIGZpeGVzIChCcmlhbiBGb3N0ZXIpCgp4ZnNwcm9ncy00LjUuMCAoMTUgTWFyIDIwMTYpCgktIHhmc19pbzogcHJldmVudCBkaXZpZGUtYnktemVybyBvbiByYW5kb20gSU8gKERtaXRyeSBNb25ha2hvdikKCS0geGZzX2RiOiBkcXVvdCBjb21tYW5kIGRvY3VtZW50YXRpb24gZml4ZXMgKEVyaWMgU2FuZGVlbikKCS0geGZzX3F1b3RhOiBiZXR0ZXIgY29tbWFuZCBsaW5lIHBhcnNpbmcgYW5kIGRvY3VtZW50YXRpb24KCSAgKFpvcnJvIExhbmcpCgp4ZnNwcm9ncy00LjUuMC1yYzEgKDE3IEZlYiAyMDE2KQoJLSBsaWJ4ZnM6IHVwZGF0ZSB0byBtYXRjaCBrZXJuZWwgNC41LXJjMSBjb2RlIGJhc2UKCS0geGZzX2lvOiBhZGQgREFYIGlub2RlIGZsYWcgc3VwcG9ydAoJLSByZXBhaXI6IHNjYWxhYmlsaXR5IGltcHJvdmVtZW50cyBvbiBsYXJnZSBjb3JydXB0IGZpbGVzeXN0ZW1zCgktIHJlcGFpcjogZGlyZWN0b3J5IHJlYnVpbGQgZml4ZXMKCS0gbWRyZXN0b3JlOiBwcm9ncmVzcyBhY2NvdW50aW5nIG5vdyB3b3JrcwoJLSBtZXRhZHVtcDogZml4IGJ0cmVlIGJsb2NrIHVudXNlZCByZWdpb24gemVyb2luZwoJLSBxdW90YTogdGltZXIgY29tbWFuZCBmaXhlcyAoRXJpYyBTYW5kZWVuKQoJLSBta2ZzOiBtYW4gcGFnZSBjbGVhbnVwcyAoRXJpYyBTYW5kZWVuKQoJLSB4ZnNfaW86IHJlZmxpbmssIGRlZHVwZSBhbmQgb3RoZXIgZml4ZXMgKERhcnJpY2sgV29uZykKCS0gcXVvdGE6IFFfWEdFVE5FWFRRVU9UQSBzdXBwb3J0IChFcmljIFNhbmRlZW4pCgktIGJ1aWxkIGNsZWFudXBzIGZvciBhbHRlcm5hdGUgQyBsaWJyYXJ5cyAoSm9zaHVhIEtpbmFyZCwgRmVsaXggSmFuZGEpCgktIGRiOiBjaGVjayBmaXhlcyBmb3Igc3BhcnNlIGlub2RlcyAoRGFycmljayBXb25nKQoJLSB2YXJpb3VzOiBGaXhlcyBmb3IgQ292ZXJpdHkgcmVwb3J0cyAoVml2ZWsgVHJpdmVkaSkKCS0geGZzX2lvOiBEb2N1bWVudCB6ZXJvIGFuZCBoZWxwIGNvbW1hbmRzIChFcmljIFNhbmRlZW4pCgktIG1rZnM6IERJTyBjYW4gdXNlIGxvZ2ljYWwgc2VjdG9yIHNpemUgbGltaXRzIChFcmljIFNhbmRlZW4pCgktIHJlcGFpcjogZG9uJ3QgcmVzZXQgbG9nIGN5Y2xlIG51bWJlcnMgd2hlbiB6ZXJvaW5nIChCcmlhbiBGb3N0ZXIpCgktIGRiOiBhZGQgYWJpbGl0eSB0byBmb3JtYXQgbG9nIHRvIGEgc3BlY2lmaWMgY3ljbGUgKEJyaWFuIEZvc3RlcikKCnhmc3Byb2dzLTQuMy4wICgyMyBOb3YgMjAxNSkKCS0geGZzX2ZzcjogY2xlYW51cHMgdG8gcmVjZW50IGNoYW5nZXMgKEVyaWMgU2FuZGVlbikKCS0geGZzX2ZzcjogaW1wcm92ZWQgdGVtcCBmaWxlIGF0dHIgZm9yayBoYW5kbGluZyAoRXJpYyBTYW5kZWVuKQoJLSBsaWJ4ZnM6IG91dHB1dCB2ZXJpZmllciBuYW1lcyBpbiB3YXJuaW5ncyAoRXJpYyBTYW5kZWVuKQoJLSB4ZnNfcmVwYWlyOiBlbmFibGUgdmVyaWZpZXIgY29ycnVwdGlvbiB3YXJuaW5ncyBvbiB2ZXJ5IHZlcmJvc2UKCSAgb3V0cHV0IHNldHRpbmdzIChFcmljIFNhbmRlZW4pCgktIGRlYmlhbjogdXBkYXRlIGluaXRyYW1mcyBpbiBwb3N0aW5zdCBzY3JpcHQgKFN0ZXZlIE1jSW50eXJlKQoKeGZzcHJvZ3MtNC4zLjAtcmMyICgxMCBOb3YgMjAxNSkKCS0geGZzX2ZzcjogYWJzdHJhY3QgbW50aW5mby9tbnRlbnQgZGlmZmVyZW5jZXMgKEphbiBUdWxhaykKCS0geGZzX2lvOiB1cGRhdGUgcmVmbGluay9kZWR1cGUgaW9jdGwgZGVmaW5pdGlvbnMgYW5kIGltcGxlbWVudGF0aW9uCgkgIChEYXJyaWNrIFdvbmcpCgktIGxpYnhjbWQ6IGZhY3RvcmluZyBvZiBydW50aW1lIHJlcG9ydGluZyAoRGFycmljayBXb25nKQoJLSBtYW4gcGFnZSBmaXhlcyAoVmlsbGUgU2t5dHTkKQoJLSByZW1vdmFsIG9mIEFTU0VSVCBmcm9tIGV4cG9ydGVkIGhlYWRlcnMKCnhmc3Byb2dzLTQuMy4wLXJjMSAoMTQgT2N0IDIwMTUpCgktIHhmc19pbzogcmVmbGluayBhbmQgZGVkdXBlIG9wZXJhdGlvbiBzdXBwb3J0IChEYXJyaWNrIFdvbmcpCgktIHhmc19kYjogYmxvY2tnZXQvYmxvY2t0cmFzaCBzdXBwb3J0IGZvciB2NSBmaWxlc3lzdGVtcwoJICAoRGFycmljayBXb25nKQoJLSB4ZnNfcmVwYWlyOiBtYW55IGRpcmVjdG9yeS9hdHRyIGNsZWFudXBzIGFuZCBmaXhlcyAoRXJpYyBTYW5kZWVuKQoJLSBNb3JlIE9TIFggYnVpbGQgaW1wcm92ZW1lbnRzIChKYW4gVHVsYWspCgktIExvZyB6ZXJvaW5nIHJld29yayBmb3IgdjUgZmlsZXN5c3RlbXMgdG8gcHJldmVudCBsb2cgc2VxdWVuY2UKCSAgbnVtYmVycyBmcm9tIGdvaW5nIGJhY2t3YXJkcyAoQnJhaW4gRm9zdGVyKQoKeGZzcHJvZ3MtNC4yLjAgKDcgU2VwIDIwMTUpCgktIHJlcGFpcjogZml4IGNyYXNoZXMgZHVlIHRvIG1pc3NpbmcgZ2VvbWV0cnkgcG9pbnRlciAoRXJpYyBTYW5kZWVuKQoJLSByZXBhaXI6IGZpeCBub2RlIGhhbmRsaW5nIG9uIGxhcmdlIGF0dHJpYnV0ZSBidHJlZXMgKEJyaWFuIEZvc3RlcikKCS0gcmVwYWlyOiBhdHRyaWJ1dGUgYmxvY2sgaGVhZGVyIHZlcmlmaWNhdGlvbiBmaXhlcyAoRGFycmljayBXb25nKQoJLSBsaWJ4ZnM6IG1vcmUgZXJyb3IgbmVnYXRpb24gZml4ZXMgKERhcnJpY2sgV29uZykKCS0gbGlieGZzOiBjYW5jZWxsZWQgcmVhZGFoZWFkIGJ1ZmZlciBzdGF0ZSBpbml0aWFsaXNhdGlvbiBmaXhlcwoJICAoRGFycmljayBXb25nKQoJLSBidWlsZDogaW5jbHVkZS94ZnMgaGVhZGVyIHBhdGggZml4IChMdWNhcyBTdGFjaCkKCnhmc3Byb2dzLTQuMi4wLXJjMyAoMjUgQXVnIDIwMTUpCgktIHhmc19yZXBhaXI6IGRpcmVjdG9yeSB2ZXJpZmljYXRpb24gZml4ZXMgKERhcnJpY2sgV29uZykKCS0gbGlieGZzOiBlcnJubyBuZWdhdGlvbiBmaXhlcyAoRGFycmljayBXb25nKQoJLSB4ZnNfZGI6IGNvcnJ1cHQgaW5vZGUgaGFuZGxpbmcgZml4ZXMgKERhcnJpY2sgV29uZykKCS0gcmVwYWlyOiBtZW1vcnkgbGVhayBmaXhlcyAoRXJpYyBTYW5kZWVuKQoJLSBsaWJ4ZnM6IGRpcmVjdG9yeSBjb3JydXB0aW9uIGZpeCAoSmFuIEthcmEpCgktIGxpYnhmczogZ2NjIG1pc2NvbXBpbGUgZml4ZXMgKEphbiBLYXJhKQoJLSBsaWJ4ZnM6IG1lcmdlIGFjcm9zcyBidWcgZml4ZXMgZnJvbSA0LjIga2VybmVsIGNvZGUKCS0gbWFuIHBhZ2VzOiBtaW5vciB1cGRhdGVzIChFcmljIFNhbmRlZW4pCgp4ZnNwcm9ncy00LjIuMC1yYzIgKDE4IEF1ZyAyMDE1KQoJLSBPUyBYIGJ1aWxkIGltcHJvdmVtZW50cyAoSmFuIFR1bGFrKQoJLSBsaWJ4ZnM6IGZpeCBjb2RlIG1pc2NvbXBpbGF0aW9uIHcvIGdjYyA0LjguMyAoSmFuIEthcmEpCgktIG1rZnMueGZzOiBkZWZhdWx0IHRvIHVzaW5nIGZ0eXBlPTEgZm9yIGFsbCBmaWxlc3lzdGVtcwoJLSBta2ZzLnhmczogQ0xJIG9wdGlvbnMgcGFyc2luZyBvcmRlciBmaXggKEVyaWMgU2FuZGVlbikKCS0geGZzX3JlcGFpcjogaW1wcm92ZSBpbm9kZSB2ZXJzaW9uIGNoZWNrcyAoUm9nZXIgV2lsbGNvY2tzKQoJLSBsaWJ4ZnM6IHJlbW92ZSBleGNlc3NpdmUgRVhQRVJJTUVOVEFMIGZlYXR1cmUgd2FybmluZ3MKCSAgZm9yIHNwYXJzZSBpbm9kZXMgKEJyaWFuIEZvc3RlcikKCS0geGZzX2RiOiBmaXggbmV3IGdjYyA0LjkuMyBidWlsZCB3YXJuaW5ncwoKeGZzcHJvZ3MtNC4yLjAtcmMxICg0IEF1ZyAyMDE1KQoJLSB1cGRhdGUgbGlieGZzIHRvIG1hdGNoIGtlcm5lbCA0LjItcmMxCgktIGxpYnhmcyBhbmQgaW5jbHVkZSByZXN0cnVjdHVyaW5nIHRvIG1hdGNoIGtlcm5lbCBjb2RlCgktIHNwYXJzZSBpbm9kZSBzdXBwb3J0IChCcmlhbiBGb3N0ZXIpCgktIEFuZHJvaWQgYnVpbGQgc3VwcG9ydCAoVGVkIFRzbykKCS0gTWFjIE9TIFggYnVpbGQgZml4ZXMgKEphbiBUdWxhaykKCS0gY2hhbmdpbmcgVVVJRHMgb24gdjUgZmlsZXN5c3RlbXMgKEVyaWMgU2FuZGVlbikKCS0gbGlieGZzLWFwcGx5IHNjcmlwdCBmb3Iga2VlcGluZyBrZXJuZWwvcHJvZ3MgbGlieGZzIGluIHN5bmMKCSAgKEVyaWMgU2FuZGVlbikKCS0gbG90cyBvZiBoZWFkZXIgYW5kIHR5cGUgY2xlYW51cHMgKENocmlzdG9waCBIZWxsd2lnKQoJLSBsaWJibGtpZCBub3cgbWFuZGF0b3J5IChKYW4gVHVsYWspCgktIGxvdHMgb2YgYnVnIGZpeGVzIChCcmlhbiBGb3N0ZXIsIEVyaWMgU2FuZGVlbiwgQ2hyaXN0b3BoIEhlbGx3aWcsCgkgIE1pa2UgR3JhbnQpCgp4ZnNwcm9ncy0zLjIuNCAoMzAgSnVsIDIwMTUpCgktIHhmc19tZXRhZHVtcDogaW5mb3JtYXRpb24gbGVha2FnZSBmaXhlcyAoQ1ZFLTIwMTItMjE1MCkgKEVyaWMgU2FuZGVlbikKCnhmc3Byb2dzLTMuMi4zICgxMCBKdW4gMjAxNSkKCS0gRGViaWFuIHBhY2thZ2luZyB1cGRhdGVzIChOYXRoYW4gU2NvdHQpCgp4ZnNwcm9ncy0zLjIuMy1yYzIgKDEgSnVuIDIwMTUpCgktIHhmc19yZXBhaXI6IGhhbmRsZSBzcGVjaWFsbCBhdHJpYnV0ZSBuYW1lcyBjb3JyZWN0bHkgKEVyaWMgU2FuZGVlbikKCS0geGZzX3JlcGFpcjogaGFuZGxlIHY1IGZvcm1hdCBmZWF0dXJlIGZsYWdzIGNvcnJlY3RseSAoRGFycmljayBXb25nKQoJLSB4ZnNfcmVwYWlyOiBCZXR0ZXIgdjUgZm9ybWF0IHZhbGlkYXRpb24gZm9yIGRpcmVjdG9yaWVzIChEYXJyaWNrIFdvbmcpCgp4ZnNwcm9ncy0zLjIuMy1yYzEgKDExIE1heSAyMDE1KQoJLSBta2ZzLnhmczogZW5hYmxlIG1ldGFkYXRhIENSQ3MgYnkgZGVmYXVsdAoJLSBta2ZzLnhmczogZW5hYmxlIGZyZWUgaW5vZGUgYnRyZWVzIGJ5IGRlZmF1bHQKCS0gYnVpbGQ6IGdsaWJjIHN1cHBvcnQgdXBkYXRlcyAoSmFuIFR1bGFrKQoJLSBtYW4gcGFnZSB1cGRhdGVzIChTYWdlIFdlaWwsIE5hbWphZSBKZW9uLCBFcmljIFNhbmRlZW4pCgktIHhmc19hZG1pbjogQ2hhbmdpbmcgVVVJRHMgZGlzYWJsZSBmb3IgQ1JDIGVuYWJsZWQgZmlsZXN5c3RlbXMKCSAgKEVyaWMgU2FuZGVlbikKCS0geGZzX3JlcGFpcjogU2VwYXJhdGUgcHF1b3RhIGlub2RlIGZpeGVzIChCcmlhbiBGb3N0ZXIpCgktIHhmc19kYjogaW5vZGUgYWxpZ25tZW50IGZpeGVzIChCcmlhbiBGb3N0ZXIpCgktIG1rZnMueGZzOiBmaXggZmFpbHVyZXMgY3JlYXRpbmcgZmlsZSBpbWFnZXMgKEJyaWFuIEZvc3RlcikKCS0gbGlieGZzOiB6ZXJvIG5ldyBidWZmZXJzIGJlZm9yZSB1c2UgKERhcnJpY2sgSi4gV29uZykKCS0geGZzX3JlcGFpcjogaGFuZGxlIGRpcmVjdG9yeSBsZWFmIENSQyBlcnJvcnMgZ3JhY2VmdWxseQoJICAoRGFycmljayBKLiAgV29uZykKCS0geGZzX3JlcGFpcjogdmFsaWRhdGUgYW5kIHJlcGFpciBpbm9kZSBDUkNzIChFcmljIFNhbmRlZW4pCgktIHhmc19yZXBhaXI6IGxvdHMgb2YgYnJva2VuIGRpcmVjdG9yeSByZXBhaXIgZml4ZXMgKEVyaWMgU2FuZGVlbikKCS0geGZzX2RiOiBoYW5kbGUgdjMgaW5vZGVzIHByb3Blcmx5IChFcmljIFNhbmRlZW4pCgktIHhmc19kYjogYWxsb3cgd3JpdGluZyBjb3JydXB0ZWQgbWV0YWRhdGEgb24gQ1JDIGVuYWJsZWQgZmlsZXN5c3RlbXMKCSAgKEVyaWMgU2FuZGVlbikKCS0geGZzX3JlcGFpcjogZ3JhY2VmdWxseSBoYW5kbGUgPiA1MTIgYnl0ZSBzZWN0b3Igc3VwZXJibG9ja3MKCS0gbWtmcy54ZnM6IHRha2UgaW50byBhY29jdW50IGxvZyBzdHJpcGUgdW5pdCB3aGVuIHNpemluZyBsb2cKCS0geGZzX21ldGFkdW1wOiBpbm9kZSBhbGlnbm1lbnQgYW5kIG51bGwgaW5vZGUgZml4ZXMgKEJyaWFuIEZvc3RlcikKCS0geGZzX2lvOiBGQUxMT0NfRkxfSU5TRVJUX1JBTkdFIHN1cHBvcnQgKE5hbWphZSBKZW9uKQoJLSBidWlsZDogbGlidG9vbCBzdGF0aWMgbGlicmFyeSBidWlsZCBmaXhlcyAoUm9tYWluIE5hb3VyKQoJLSBta2ZzLnhmczogbGFyZ2UgYmxvY2sgc2l6ZSBpbm9kZSBhbGlnbm1lbnQgZml4ZXMgKEJyaWFuIEZvc3RlcikKCS0geGZzX3JlcGFpcjogc2Vjb25kYXJ5IHN1cGVyYmxvY2sgc2NhbiBmaXhlcyAoQnJpYW4gRm9zdGVyKQoJLSB4ZnNfcmVwYWlyOiBkb24ndCBjYXJlIGFib3V0IHN5bWxpbmsgY29tcGVuZW50IGxlbmd0aHMKCSAgKEVyaWMgU2FuZGVlbikKCnhmc3Byb2dzLTMuMi4yICg0IERlY2VtYmVyIDIwMTQpCgktIERlYmlhbiBwYWNrYWdpbmcgdXBkYXRlcyAoTmF0aGFuIFNjb3R0KQoJLSB4ZnNfcmVwYWlyLCBta2ZzLnhmcyBzdHJpcGUgZ2VvbWV0cnkgZml4ZXMgKEVyaWMgU2FuZGVlbikKCS0gbGlieGNtZCBwYXRoIGhhbmRsaW5nIGZpeGVzIChFcmljIFNhbmRlZW4pCgktIHhmc19jcmFzaCBjcmFzaCBmaXggKEppZSBMaXUpCgktIHhmc19sb2dwcmludCBBR0kvQUdGIGhhbmRsaW5nIGltcHJvdmVtZW50cyAoSmFuIEthcmEpCgktIGxpYmhhbmRsZSBzdXBwb3J0IGZvciBzeW1saW5rZWQgL3VzciAoSmFuIFR1bGFrKQoJLSBmaXggbXVsdGlwbGUgQ292ZXJpdHkgYW5kIHNwYXJzZSByZXBvcnRlZCBpc3N1ZXMgKEVyaWMgU2FuZGVlbikKCS0gbmV3IG1yZW1hcCwgc3luYywgc3luY2ZzIGNvbW1hbmRzIGZvciB4ZnNfaW8gKEVyaWMgU2FuZGVlbikKCS0gbWFuIHBhZ2UgdXBkYXRlcyAoRXJpYyBTYW5kZWVuLCBNYXJrIFRpbmd1ZWx5KQoJLSB4ZnNfcmVwYWlyIHNldHMgZnR5cGUgaW4gbG9zdCtmb3VuZCBkaXJlbnRzIChKYW4gS2FyYSkKCS0geGZzX3JlcGFpciBoYW5kbGVzIGJhZCBpbm9kZXMgYmV0dGVyIChFcmljIFNhbmRlZW4pCgktIHhmc19yZXBhaXIgZnJlZWxpc3QgcmVidWlsZCBpbXByb3ZlbWVudHMKCS0geGZzX3JlcGFpciBmaW5vYnQgY3Jhc2ggZml4ZXMgKEJyaWFuIEZvc3RlcikKCS0geGZzX2NvcHkgaGFuZGxlcyA0ayBzZWN0b3IgZGV2aWNlcyBiZXR0ZXIgKEVyaWMgU2FuZGVlbikKCnhmc3Byb2dzLTMuMi4xICgxNSBKdWx5IDIwMTQpCgktIEFkZGVkIHN1cHBvcnQgZm9yIG5ldyBvbi1kaXNrIGZyZWUgaW5vZGUgYnRyZWUgKEJyaWFuIEZvc3RlcikKCS0gbGlieGZzIGlub2RlIHVzZS1hZnRlciBmcmVlIGZpeGVzIChNYXJrIFRpbmd1ZWx5KQoJLSB4ZnNfY29weSB0aHJlYWRpbmcgY2xlYW51cHMgKEp1bnhpYW8gQmkpCgktIHhmc19jaGVjayBoYXMgYmVlbiByZW1vdmVkCgktIEMrKyBoZWFkZXIgY29tcGlsZXIgZml4ZXMgKFJvZ2VyIFdpbGxjb2NrcykKCS0geGZzX3JlcGFpciBwcmVmZXRjaCBmaXhlcyAoRXJpYyBTYW5kZWVuKQoJLSB4ZnNfcmVwYWlyIGRpcmVjdG9yeSBibG9jayBDUkMgZGV0ZWN0aW9uIGZpeGVzIChKYW4gS2FyYSkKCS0geGZzX3JlcGFpciBkaXJlY3RvcnkgcmVidWlsZCBmaXhlcwoJLSBsaWJ4ZnMgYnVmZmVyIGVycm9yIGhhbmRsaW5nIGZpeGVzCgktIHhmc19yZXBhaXIgcXVvdGEgaW5vZGUgaGFuZGxpbmcgZml4ZXMKCS0gcmVtb3ZlZCBpbmNvcnJlY3QgYXNzZXJ0cyBmcm9tIHBoYXNlIDIgb2YgeGZzX3JlcGFpcgoJLSB1cGRhdGVkIFBvbGlzaCB0cmFuc2xhdGlvbnMgKEpha3ViIEJvZ3VzeikKCS0geGZzX21rZnMgNGsgc2VjdG9yIGRldmljZSBmaXhlcyAoRXJpYyBTYW5kZWVuKQoJLSB4ZnNfZnNyIGNsZWFudXBzIG5kIGZpeGVzIChFcmljIFNhbmRlZW4pCgktIG1vdW50IG9wdGlvbnMgZGVzY3JpYmVkIGluIHhmcyg1KSBtYW4gcGFnZSAoRXJpYyBTYW5kZWVuKQoKeGZzcHJvZ3MtMy4yLjAgKDE2IE1heSAyMDE0KQoJLSBGaXJzdCByZWxlYXNlIHdpdGggZnVsbCBzdXBwb3J0IG9mIENSQyBlbmFibGVkIGZpbGVzeXN0ZW1zCgktIE5vIGNvZGUgY2hhbmdlcyBmcm9tIDMuMi4wLXJjMwoKeGZzcHJvZ3MtMy4yLjAtcmMzICg5IE1heSAyMDE0KQoJLSBUaGlyZCByZWxlYXNlIGNhbmRpZGF0ZSBmb3IgZnVsbCBzdXBwb3J0IG9mIENSQyBlbmFibGVkIGZpbGVzeXN0ZW1zCgktIFVwZGF0ZWQgRGViaWFuIGNoYW5nZSBsb2dzIGluIHByZXBhcmF0aW9uIGZvciByZWxlYXNlIChOYXRoYW4gU2NvdHQpCgktIEJ1aWxkIHdhcm5pbmcgZml4ZXMgKE5hdGhhbiBTY290dCkKCS0geGZzX3JlcGFpciBwcmVmZXRjaCBmaXggKEVyaWMgU2FuZGVlbikKCS0geGZzX3JlcGFpciBibG9jayB0cmFja2luZyBzY2FsYWJpbGl0eSBmaXgKCnhmc3Byb2dzLTMuMi4wLXJjMiAoMiBNYXkgMjAxNCkKCS0gU2Vjb25kIHJlbGVhc2UgY2FuZGlkYXRlIGZvciBmdWxsIHN1cHBvcnQgb2YgQ1JDIGVuYWJsZWQgZmlsZXN5c3RlbXMKCS0geGZzX3JlcGFpciBoYXMgZnVsbCBDUkMgdmFsaWRhdGlvbiBhbmQgcmVwYWlyCgktIENvdmVyaXR5IHJlbGF0ZWQgY2xlYW51cHMgYW5kIGZpeGVzCgp4ZnNwcm9ncy0zLjIuMC1yYzEgKDE0IEFwcmlsIDIwMTQpCgktIEZpcnN0IHJlbGVhc2UgY2FuZGlkYXRlIGZvciBmdWxsIHN1cHBvcnQgb2YgQ1JDIGVuYWJsZWQgZmlsZXN5c3RlbXMKCS0gTGFyZ2UgbnVtYmVyIG9mIENvdmVyaXR5IHJlbGF0ZWQgZml4ZXMgYW5kIGNsZWFudXBzCgktIGRpc2FtYmlndW91cyBvZiBDUkMgdmFsaWRhdGlvbiBlcnJvcnMgZnJvbSBJTyBlcnJvcnMuCgktIEltcHJvdmVkIGRhbmdlcm91cyBtb2RlIGhhbmRsaW5nIGluIHJlcGFpcgoJLSByZXBhaXIgaGFuZGxlcyBnYXJiYWdlIGluIHplcm9lZCBhcmVhcyBvZiBzdXBlcmJsb2NrcyBiZXR0ZXIKCS0gcmVwYWlyIHZhbGlkYXRlcyBkaXJlbnQgZnR5cGUgZmllbGQgZnVsbHkKCS0gbWV0YWR1bXAgZnVsbHkgc3VwcG9ydHMgZGlzY29udGlndW91cyBkaXJlY3RvcnkgYmxvY2tzCgktIG1ldGFkdW1wIG9ubHkgcmVjYWxjdWxhdGVzIENSQ3Mgb24gbWV0YWRhdGEgaXQgb2JmdXNjYXRlcyBzbyBhcyB0bwoJICBwcmVzZXJ2ZSBlcnJvcnMgaW4gdGhlIG1ldGFkYXRhIHdoZXJlIHBvc3NpYmxlLgoJLSBkZWZhdWx0IGxvZyBzaXplIHRoYXQgbWtmcyBjcmVhdGVzIGlzIG5vdyByZXZlcnRlZCB0byB0aGUgc2FtZSBzaXplCgkgIGFzIDMuMS54IHJlbGVhc2VzIGNyZWF0ZS4KCS0gbWtmcyBzZXRzIHRoZSBmdHlwZSBvbiBkaXJlY3RvcnkgZW50cmllcyBjb3JyZWN0bHkgZHVyaW5nIHByb3RvZmlsZQoJICBwb3B1bGF0aW9uCgktIHhmc19pbyBzdXBwb3J0IE9fVE1QRklMRSwgZmxpbmssIEZBTExPQ19GTF9aRVJPX1JBTkdFIGFuZAoJICBGQUxMT0NfRkxfQ09MTEFQU0VfUkFOR0UsCgktIGxvZ3ByaW50IGhhbmRsZXMgc3BsaXQgZW50cmllcyBiZXR0ZXIKCnhmc3Byb2dzLTMuMi4wLWFscGhhMiAoMjUgTm92ZW1iZXIgMjAxMykKCS0gQWxwaGEgcmVsZWFzZSBmb3IgdGhlIHB1cnBvc2Ugb2YgdGVzdGluZyB0aGUgQ1JDIGZlYXR1cmUgaW4KCSAga2VybmVscyAzLjEwIGFuZCBuZXdlci4KCS0gRW5hYmxlIHhmc19kYiB3cml0ZSBzdXBwb3J0IGFuZCB4ZnNfbWV0YWR1bXAgc3VwcG9ydCBmb3IgQ1JDCgkgIGVuYWJsZWQgZmlsZXN5c3RlbXMuCgktIEFkZCBkaXJlY3RvcnkgZW50cnkgZmlsZXR5cGUgc3VwcG9ydCBmb3Igbm9uLUNSQyBmaWxlc3lzdGVtcy4KCS0gUmVtb3ZlIGV4cGVyaW1lbnRhbCB3YXJuaW5ncyBmb3IgQ1JDIGZpbGVzeXN0ZW1zLgoJLSBFbnN1cmUgYWxsIGlub2RlcyBjcmVhdGVkIGJ5IHhmc19yZXBhaXIgaGF2ZSBhIHByb3BlciBkX3R5cGUgc2V0LgoJLSBGaXggYnVpbGQgb24gYmlnIGVuZGlhbiBtYWNoaW5lcy4KCS0gUHJvcGVybHkgaGFuZGxlIHN5bWxpbmtzIHRvIGRldmljZXMgb24gdmFyaW91cyB0b29sIGNvbW1hbmRsaW5lcy4KCS0gRml4IHhmc19yZXBhaXIncyBkaXJ0eSBsb2cgZGV0ZWN0aW9uIGZvciA0ayBzZWN0b3IgbG9ncywgYnJva2VuCgkgIGluIEFscGhhMS4KCS0gRml4IGEgcG90ZW50aWFsIHNlZ2ZhdWx0IGluIHhmc19yZXBhaXIgd2hlbiBpc3N1aW5nIHByb2dyZXNzIAoJICByZXBvcnRzLgoJLSBGaXggcG90ZW50aWFsIHhmc19mc3IgZmFpbHVyZXMgd2hlbiBydW5uaW5nIHcvIHNlbGludXguCgktIFVwZGF0ZSBjb25maWcuZ3Vlc3MvY29uZmlnLnN1YiBmb3IgYXJtNjQsIHRoYW5rcyB0byBDb2xpbiBXYXRzb24uCgktIFN0b3Agd2FzdGluZyBtZW1vcnkgYnkgY2FjaGluZyBpbm9kZSBzdHJ1Y3R1cmVzIGluIHhmc19yZXBhaXIgLQoJICB0aGV5IGFyZSBuZXZlciByZS11c2VkLiAgVGhhbmtzIHRvIENocmlzdG9waCBIZWxsd2lnLgoJLSBGaXggc2V2ZXJhbCBDb3Zlcml0eS1mb3VuZCBkZWZlY3RzLCB0aGFua3MgdG8gTGkgWmhvbmcuCgktIEZpeCBwbGF0Zm9ybV90ZXN0X3hmc19mZCB0byByZXR1cm4gZmFsc2Ugb24gc3BlY2lhbCBmaWxlcyB3aGljaAoJICBjYW5ub3QgdGFrZSBhbiB4ZnMgaW9jdGwuCgktIFN5bmMgdXAgbGlieGZzIHdpdGgga2VybmVsIGNvZGUuCgktIEltcHJvdmVkIHhmc19yZXBhaXIgcGVyZm9ybWFuY2Ugb24gbGFyZ2UgZmlsZXN5c3RlbXMKCSAgKGFsd2F5cyB1c2UgcHJlZmV0Y2ggYW5kIHN0cmlkZWQgQUcgc2Nhbm5pbmcgZnVuY3Rpb25hbGl0eSkKCgp4ZnNwcm9ncy0zLjIuMC1hbHBoYTEgKDI2IFNlcHRlbWJlciAyMDEzKQoJLSBBbHBoYSByZWxlYXNlIGZvciB0aGUgcHVycG9zZSBvZiB0ZXN0aW5nIHRoZSBDUkMgZmVhdHVyZSBpbgoJICBrZXJuZWxzIDMuMTAgYW5kIG5ld2VyLgoJLSBSZW1vdmUgYWxsIHZlc3RpZ2VzIG9mIG9sZCwgdW5zdXBwb3J0ZWQgdmVyc2lvbiAxIGRpcmVjdG9yeSBjb2RlLgoJLSBBZGQgYSAicmVhZGRpciIgY29tbWFuZCB0byB4ZnNfaW8sIHRoYW5rcyB0byBCcmlhbiBGb3N0ZXIuCgktIEZpeCBwb3RlbnRpYWwgc2VnZmF1bHQgaW4geGZzX3JlcGFpciB3aGVuIGNyZWF0aW5nIGxvc3QrZm91bmQuCgktIFplcm8gb3V0IHVudXNlZCBwYXJ0cyBvZiBvbi1kaXNrIHN1cGVyYmxvY2tzIGR1cmluZyByZXBhaXIsIHRvCgkgIGF2b2lkIG1ldGFkYXRhIHZlcmlmaWVyIGZhaWx1cmVzIGF0IHJ1bnRpbWUuCgktIEFkZCBkaXJlY3RvcnkgZW50cnkgdHlwZSBzdXBwb3J0IHRvIG1rZnMueGZzIGFuZCB4ZnNfZGIuCgktIEFkZCB0aGUgaWNyZWF0ZSB0cmFuc2FjdGlvbiB0byB4ZnNfbG9ncHJpbnQsIGFuZCBmaXggY29udGludWF0aW9uCgkgIHRyYW5zYWN0aW9ucy4KCS0gQWRkIHRoZSBsc2VlayBTRUVLX0RBVEEvU0VFS19IT0xFIHN1cHBvcnQgaW50byB4ZnNfaW8uCgktIFByaW50IGFsbCBBR0kgdW5saW5rZWQgYnVja2V0cyBpbiB4ZnNfbG9ncHJpbnQuCgktIEZpeCBta2ZzLnhmcyBFTk9TUEMgd2l0aCBwcm90b2ZpbGUgd2hpY2ggY3JlYXRlcyBhIHZlcnkgbGFyZ2UKCSAgZGlyZWN0b3J5LgoJLSBGaXggc2V2ZXJhbCBDb3Zlcml0eS1mb3VuZCBkZWZlY3RzLCB0aGFua3MgdG8gTGkgWmhvbmcuCgktIERvIGFsbCBmaWxlIHJlYWRzIGluIHhmc19mc3IgdXNpbmcgT19ESVJFQ1QuCgktIFN5bmMgdXAgbGlieGZzIHdpdGgga2VybmVsIGNvZGUuCgktIEFkZCBzdXBwb3J0IGZvciBjb25jdXJyZW50IGdyb3VwIGFuZCBwcm9qZWN0IHF1b3RhIHVzYWdlIG9uIENSQwoJICBlbmFibGVkIGZpbGVzeXN0ZW1zLgoJLSBFbnN1cmUgbWtmcyBjcmVhdGVzIGxvZyBzaXplcyB0aGF0IGFyZSBhbHdheXMgbGFyZ2UgZW5vdWdoIGZvcgoJICB0aGUgY29uZmlndXJlZCBmaWxleXN0ZW0gZ2VvbWV0cnkuCgp4ZnNwcm9ncy0zLjEuMTEgKDggTWF5IDIwMTMpCgktIFN1cHBvcnQgZm9yIHJlbGF0aXZlIHBhdGhzIGluIHhmc19xdW90YSB0aGFua3MgdG8gU2F0b3J1IFRha2V1Y2hpLgoJLSBta2ZzLnhmcyB3aWxsIGFsd2F5cyBnbyBpbnRvIG11bHRpZGlzayBtb2RlIHdoZW4gZmlsZXN5c3RlbQoJICBnZW9tZXRyeSBpcyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KCS0gRG9jdW1lbnQgYWxsIGNvbW1hbmRzIGluIHhmc19pby4KCS0gUmVtb3ZlIHNldGZsIGNvbW1hbmQgZnJvbSB4ZnNfaW8uCgktIHhmc19tZXRhZHVtcCB3aWxsIG9iZnVzY2F0ZSBzeW1saW5rcyBieSBwYXRoIGNvbXBvbmVudC4KCS0gbWtmcy54ZnMgbm8gbG9uZ2VyIGFjY2VwdHMgZ2VvbWV0cnkgc2V0dGluZ3Mgc21hbGxlciB0aGFuIHRoZQoJICBwaHlzaWNhbCBzZWN0b3Igc2l6ZS4KCS0geGZzX2xvZ3ByaW50IG5vdyBzdXBwb3J0cyBtdWx0aXBseS1sb2dnZWQgaW5vZGUgZmllbGRzIGFuZAoJICBoYW5kbGVzIGNvbnRpbnVlZCBpbm9kZSB0cmFuc2FjdGlvbnMgY29ycmVjdGx5LgoJLSBraWxsIFhMT0dfU0VUCgktIFVwZGF0ZSByZWxlYXNlIHNjcmlwdHMgdG8gdXNlIGdpdCBhcmNoaXZlIHRvIGFkZHJlc3MgYQoJICBtaXNzaW5nIHNvdXJjZSBmaWxlIHJlcG9ydGVkIGJ5IEFya2FkaXVzeiBNaT9raWV3aWN6CgktIEZpeCBhIGJ1aWxkIGVycm9yIHdpdGggLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHksIHJlcG9ydGVkCgkgIGJ5IEFya2FkaXVzeiBNaT9raWV3aWN6CgktIG1rZnMueGZzIG5vIGxvbmdlciBhdHRlbXB0cyB0byBkaXNjYXJkIHdoZW4gLU4gb3B0aW9uIGlzIHVzZWQuCgktIFVwZGF0ZSAnbWFrZSBkZWInIHRvIHVzZSB0YXJiYWxsCgktIFN5bmMgdXAgd2l0aCBsb2cgcmVzZXJ2YXRpb24gY2hhbmdlcyBpbiB0aGUga2VybmVsLgoJLSBGaXggcG9zc2libGUgdW5hbGxvY2F0ZWQgbWVtb3J5IGFjY2VzcyBpbiBmaWVtYXAuCgktIEd1YXJkIGFnYWluc3Qgc3RyaW5nIG92ZXJmbG93IGluIHBhdGhfdG9fZnNwYXRoLgoJLSBGaXggc2V0dXBfY3Vyc29yIGFycmF5IGFsbG9jYXRpb24uCgktIEZpeCBmcmVlIG9mIHVuaW50aWFsaXplZCBwb2ludGVyIGluIHhmc19hY2xfdmFsaWQgZXJyb3IgcGF0aC4KCS0gR3VhcmQgYWdhaW5zdCBwYXRoIHN0cmluZyBvdmVyZmxvd3MuCgktIENoZWNrIHN0cmR1cCByZXN1bHRzIHByb3Blcmx5IGluIGluaXRhbGxmcygpLgoJLSBGaXggYXR0cmlidXRlIG5vX2NoYW5nZV9jb3VudCBsb2dpYy4KCS0gUmVtb3ZlIGV4dHJhbmVvdXMgY2xvc2UoKSBpbiBmc3JhbGxmcygpLgoJLSB4ZnNfcmVwYWlyIG5vdyBza2lwcyB0aGUgZnJlZWxpc3Qgc2NhbiBvZiBhIGNvcnJ1cHQgYWdmCgkgIHdoZW4gaW4gbm8tbW9kaWZ5IG1vZGUuCgktIHhmc19kYiBub3cgc2tpcHMgZnJlZWxpc3Qgc2NhbnMgb2YgY29ycnVwdCBhZ2ZzLgoJLSBSZW1vdmUgdW5jb25kaXRpb25hbCBBU1NFUlQoMCkgaW4geGZzX3JlcGFpci4KCS0gUmVkdWNlIGJiX251bXJlY3MgaW4gYm5vL2NudCBidHJlZXMgd2hlbiBsb2cgY29uc3VtZXMgYWxsIGFnZiBzcGFjZS4KCS0gQWRkIGRlcHJhY3Rpb24gbWVzc2FnZSBmb3IgeGZzX2NoZWNrLgoJLSB4ZnNfcXVvdGEgYWxsb3cgdXNlciBvciBncm91cCBuYW1lcyBiZWdpbm5pbmcgd2l0aCBkaWdpdHMgcmVwb3J0ZWQKCSAgYnkgSmFtZXMgQ2FydGVyLgoJLSBGaXggbWFucGFnZXMgYW5kIHVzYWdlKCkgc3BlbGxpbmcsIGVycm9ycyBhbmQgb21pc3Npb25zLgoJLSBWYWxpZGF0ZSB0aGUgZXh0ZW50IGNvdW50IGlzIGF0IGxlYXN0IHdpdGhpbiB0aGUgcG9zaXRpdmUKCSAgcmFuZ2Ugb2YgYSBzaWduZWQgMzIgYml0IGludGVnZXIgYmVmb3JlIHVzaW5nIGl0LgoKeGZzcHJvZ3MtMy4xLjEwICgxMyBEZWNlbWJlciAyMDEyKQoJLSBVcGRhdGUgcmVsZWFzZSBzY3JpcHQgdG8gbWFrZSBhIHNvdXJjZSB0YXJiYWxsLgoKeGZzcHJvZ3MtMy4xLjkgKDMxIE9jdG9iZXIgMjAxMikKCS0gUHJpbnQgbmljZSBkZXRhaWxzIGlmIGFnc2l6ZSBpcyBvdXQgb2YgYm91bmRzIGluIG1rZnMueGZzLgoJLSBWYXJpb3VzIGZpeGVzIGZvciBmcmFnbWVudGVkIG11bHRpLWJsb2NrIGRpcjIgaGFuZGxpbmcgaW4KCSAgeGZzX3JlcGFpci4KCS0gRml4IGV4dGVudCByZWNvcmQgcHJpbnRpbmcgaW4geGZzX2RiIG9uIGJpZyBlbmRpYW4gYXJjaGVzLgoJLSBVc2UgdGhlIGNvcnJlY3QgbWFjcm9zIHdoZW4gZHVtcGluZyBibG9jayBtYXBzIGluIGV4dGVudAoJICBmb3JtIGluIHhmc19kYiwgdGhhbmtzIHRvIFBldGVyIFdhdGtpbnMuCgktIEFkZCBzeW5jIGZpbGUgcmFuZ2Ugc3VwcG9ydCB0byB4ZnNfaW8uCgktIEltcGxlbWVudCBwcmVhZHYvcHdyaXRldiBpbiB4ZnNfaW8uCgktIExpbmsgYWdhaW5zdCBsaWJyZWFkbGluZSBmb3IgbGlieGNtZCwgdGhhbmtzIHRvIE1pa2UgRnJ5c2luZ2VyLgoJLSBDbGVhbiB1cCBta2ZzLnhmcyBvdXRwdXQgb24gaW52YWxpZCBpbm9kZSBzaXplLgoJLSBWYXJpb3VzIGJ1aWxkIGZpeGVzLCB0aGFua3MgdG8gTWlrZSBGcnlzaW5nZXIgYW5kIEphbiBFbmdlbGhhcmR0LgoKeGZzcHJvZ3MtMy4xLjggKDIwIE1hcmNoIDIwMTIpCgktIEZpeCB4ZnNfcmVwYWlyIHNlZ2ZhdWx0IG9uIGEgY29ycnVwdGVkIGZpbGVzeXN0ZW0gYnkgdmFsaWRhdGluZyB0aGUKCSAgYWNsIGNvdW50IGJlZm9yZSByZWFkaW5nIGl0LgoJLSBBdm9pZCB4ZnNfcmVwYWlyIGRlYWRsb2NrcyBvbiBwcmVmZXRjaGVkIGJ1ZmZlcnMuCgktIEZpeCB2YXJpb3VzIGluY29ycmVjdCBwcmludGYgZm9ybWF0cywgdGhhbmtzIHRvIEpha3ViIEJvZ3VzeiBmb3IKCSAgcmVwb3J0aW5nLgoJLSBQb2xpc2ggdHJhbnNsYXRpb24gdXBkYXRlLCB0aGFua3MgdG8gSmFrdWIgQm9ndXN6LgoJLSBSZWZ1c2UgbWtmcy54ZnMgb24gbWlzYWxpZ25lZCBkZXZpY2VzIHdoZW4gdXNpbmcgNGsgc2VjdG9ycywgdW5sZXNzCgkgIHRoZSAtZiBvcHRpb24gaXMgc3BlY2lmaWVkLCBhbmQgdGhlbiBmb3JjZSA1MTJiIHNlY3RvciBzaXplLAoJICB0aGFua3MgdG8gQ2FybG9zIE1haW9saW5vLgoJLSBBdm9pZCBhIHBvc3NpYmxlIGxvb3Agb24gdGhlIHVubGlua2VkIGlub2RlIGxpc3QgaW4gcGhhc2UgMyBvZgoJICB4ZnNfcmVwYWlyLCB0aGFua3MgdG8gU3RlZmFuIFBmZXR6aW5nIGZvciByZXBvcnRpbmcuCgktIEFsbG9jYXRlIGlub2RlIGFuZCBmcmVlIGV4dGVudCByZWNvcmRzIGluZGl2aWR1YWxseSBpbiB4ZnNfcmVwYWlyLgoJLSBGaXggYSBwb3NzaWJsZSBkZWFkbG9jayBidHJlZSBub2RlcyBpbiB4ZnNfcmVwYWlyIGJ5IHVzaW5nIHJlY3Vyc2l2ZQoJICBsb2NraW5nLCB0aGFua3MgdG8gQXJrYWRpdXN6IE1pxZtraWV3aWN6IGZvciByZXBvcnRpbmcgYW5kIHRlc3RpbmcuCgktIEZpeCBwb3NzaWJsZSB4ZnNfcmVwYWlyIGRlYWRsb2NrcyBpbiBpbm9kZSBwcmVmZXRjaGluZywgdGhhbmtzIHRvCgkgIEFya2FkaXVzeiBNacWba2lld2ljeiBmb3IgcmVwb3J0aW5nIGFuZCB0ZXN0aW5nLgoJLSBNYWtlIHhmc19yZXBhaXIgaGFuZGxlIGZpbGVzeXN0ZW1zIHdpdGggdGhlIGxvZyBpbiBhZyAwLCB0aGFua3MgdG8KCSAgU2luZHJlIFNrb2dlbiBmb3IgcmVwb3J0aW5nLgoJLSBEZXByZWNhdGUgdGhlIC1GIGZvcmVpZ24gZmxhZyB0byB4ZnNfaW8uCgktIEFkZCBkZWJpYW4gbGludXgtbGliYy1kZXYgYnVpbGQgZGVwZW5kYW5jeS4KCS0gQWRkIGFuIGV4dGVuZGVkIGZpZW1hcCBjb25maWd1cmUgY2hlY2suCgktIFZhcmlvdXMgY2xlYW51cHMgaW4geGZzX3JlcGFpci4KCS0gVXBkYXRlIHhmc19jaGVjayBtYW4gcGFnZSB0byByZWNvbW1lbmQgeGZzX3JlcGFpciBvdmVyIHhmc19jaGVjaywKCSAgdGhhbmtzIHRvIEFya2FkaXVzeiBNacWba2lld2ljei4KCS0gVXBkYXRlIHRoZSBvbi1kaXNrIGV4dGVudCBjb3VudCBhcyBwYXJ0IG9mIGlub2RlIHJlcGFpciB3aGVuIG1vdmluZwoJICBpbm9kZXMgdG8gbG9zdCtmb3VuZCB0byBhdm9pZCB0byBhdm9pZCB0cmlwcGluZyBvdmVyIGEgY2hlY2sgaW4KCSAgeGZzX2lmb3JtYXQsIHRoYW5rcyB0byBBcmthZGl1c3ogTWnFm2tpZXdpY3ogZm9yIHJlcG9ydGluZyBhbmQKCSAgdGVzdGluZy4KCS0gQ2hlY2sgZm9yIHNpemUgcGFyc2luZyBlcnJvcnMgaW4geGZzX3F1b3RhLCB0aGFua3MgdG8gSmFtZXMgTGF3cmllCgkgIGZvciByZXBvcnRpbmcuCgktIEZpeCBmaWVtYXAgbG9vcCBjb250aW51YXRpb24gaW4geGZzX2lvLgoJLSBNYWtlIG1rZnMueGZzIHByb3Blcmx5IGhhbmRsZSBwaHlzaWNhbCBzZWN0b3Igc2l6ZS4KCS0gRml4IC9wcm9jL21vdW50cyBwYXJzaW5nIGluIHhmc19mc3IuCgktIEZpeCB4ZnNfcmVwYWlyIHdoZW4gYWdfc3RyaWRlIG9wdGlvbnMgd2l0aCBhdHRyaWJ1dGVzIGFuZCBkaXJ2MSBjb2RlLAoJICB0aGFua3MgdG8gVG9tIENyYW5lIGZvciByZXBvcnRpbmcgYW5kIHRlc3RpbmcuCgktIEZpeCBtZXNzYWdlIGZvcm1hdHMgaW4gcHJvY2Vzc19kaW5vZGVfaW50LgoJLSBGaXggeGZzX3JlcGFpciBoYW5kbGluZyBvZiBsaW5rIGNvdW50cyB3aGVuIHRoZSBvbi1kaXNrIGNvdW50CgkgIG92ZXJmbG93cyA4IGJpdHMuCgktIEZpeCBtZXNzYWdlcyBmcm9tIHNldF9ubGlua3MgaW4geGZzX3JlcGFpci4KCnhmc3Byb2dzLTMuMS43ICgxNyBOb3ZlbWJlciAyMDExKQoJLSBQdWxsIGluIGZpeCBmb3IgZGViaWFuL2NvbnRyb2wKCS0gUG9saXNoIHRyYW5zbGF0aW9uIHVwZGF0ZSwgdGhhbmtzIHRvIEpha3ViIEJvZ3VzegoJLSBGaXggeGZzX3JlcGFpciBsaW5rIGNvdW50IG9uIGxvc3QrZm91bmQsIHRoYW5rcyB0byBDYXJsb3MgTWFpb2xpbm8KCS0gRml4IHZhcmlvdXMgaW5jb3JyZWN0IHByaW50ZiBmb3JtYXRzCgp4ZnNwcm9ncy0zLjEuNiAoMTQgT2N0b2JlciAyMDExKQoJLSBSZS1zeW5jaCBvZiB0aGUgaGVhZGVyIGFuZCBsaWJ4ZnMgZmlsZXMgd2l0aCB0aGUga2VybmVsCgkgIGNvZGUgYXMgb2YgTGludXggMi42LjM3LCBpbmNsdWRpbmcgcmV2aXZpbmcgeGZzX3JlcGFpcgoJICByYWRpeCB0cmVlIGNvZGUuCgktIEZpeCBhIHhmc19yZXBhaXIgcGhhc2UgNCBoYW5nLCB0aGFua3MgdG8gQWplZXQgWWFkYXYuCgktIFN1YmNvbW1hbmQgbmFtZXMgd2l0aGluIHZhcmlvdXMgcHJvZ3JhbXMgYXJlIG5vIGxvbmdlcgoJICB0cmFuc2xhdGVkL2xvY2FsaXplZCwgdGhhbmtzIHRvIEFya2FkaXVzeiBNaT9raWV3aWN6LgoJLSBCdWlsZCBzeXN0ZW0gZml4ZXMsIHRoYW5rcyB0byBUZWQgVHMnby4KCS0gVXBkYXRlcyB0byB0ZWggeGZzX2luZm8oOCkveGZzX2dyb3dmcyg4KSBtYW4gcGFnZSwgdGhhbmtzCgkgIHRvIFJvbWFuIE92Y2hpbm5pa292LgoJLSB4ZnNfcXVvdGEgImRmIiBubyBsb25nZXIgcmVwb3J0cyB2YWx1ZXMgdHdpY2Ugd2hhdCB0aGV5CgkgIHNob3VsZCBoYXZlIGJlZW4gZm9yIHByb2plY3QgcXVvdGFzLgoJLSBta2ZzLnhmcyBub3cgcmVxdWlyZXMgdGhhdCBzdWItb3B0aW9ucyBhcmUgbm9uLWVtcHR5CgkgIHN0cmluZ3M7IHRoYW5rcyB0byBDaHJpcyBQZWFyc29uIGZvciByZXBvcnRpbmcuCgktIEJldHRlciBoYW5kbGluZyBvZiBzaG9ydCByZWFkcyBpbiBsaWJ4ZnMuCgktIHhmc19xdW90YSBub3cgcHJpbnRzICJOL0EiIHJhdGhlciB0aGFuIGEgbGFyZ2UgbnVtYmVyIGZvcgoJICB0aGUgcXVvdGEgZmlsZSBpbm9kZSBudW1iZXIgZm9yIGRpc2FibGVkIHF1b3RhIHR5cGVzLgoJLSBCb2d1cyAodW5yZWxhdGVkKSBtb3VudCBwb2ludCBlbnRyaWVzIG5vIGxvbmdlciBjYXVzZQoJICB4ZnNfZ3Jvd2ZzLCB4ZnNfcXVvdGEsIGFuZCB4ZnNfaW8gdG8gcXVpdCBlYXJseS4KCS0geGZzX3JlcGFpciBubyBsb25nZXIgZmFpbHMgd2hlbiB0aGUgc2VjdG9yIHNpemUgb2YgYW4KCSAgdW5kZXJseWluZyBkZXZpY2UgaXMgbGFyZ2VyIHRoYW4gdGhlIHNlY3RvciBzaXplIGluIGEKCSAgaG9zdGVkIGZpbGVzeXN0ZW0gaW1hZ2UuCgktIFZhcmlvdXMgb3RoZXIgaW50ZXJuYWwgaW1wcm92ZW1lbnRzLCBpbmNsdWRpbmcgcmVmYWN0b3JpbmcKCSAgYW5kIGVsaW1pbmF0aW5nIG1vcmUgYnVpbGQgd2FybmluZ3MuCgp4ZnNwcm9ncy0zLjEuNSAoMzAgTWFyY2ggMjAxMSkKCS0gUG9saXNoIHRyYW5zbGF0aW9uIHVwZGF0ZSwgdGhhbmtzIHRvIEpha3ViIEJvZ3VzegoJLSB4ZnNfcmVwYWlyIG5vdyB3YXJucyBpZiBydW5uaW5nIGluIGxvdyBtZW1vcnkgbW9kZQoJLSBQaGFzZSAyIG9mIHhmc19yZXBhaXIgaXMgbm93IG11bHRpdGhyZWFkZWQKCS0geGZzX3F1b3RhIG5vIGxvbmdlciBhdHRlbXB0cyB0byBnZXQgcXVvdGEgaW5mb3JtYXRpb24gaWYKCSAgbm90IGVuYWJsZWQKCS0gSW5vZGUgZmxhZ3MgYXJlIG5vdyBwcm9wZXJseSB2YWxpZGF0ZWQgYnkgeGZzX3JlcGFpcgoJLSBNZXRhZHVtcCBub3cgb2JmdXNjYXRlcyBhbGwgZmlsZSBuYW1lcyByZWxpYWJseQoJLSB4ZnNfaW8gbm93IHN1cHBvcnRzIHRoZSAiZmllbWFwIiBjb21tYW5kLCBhIG1vcmUgZ2VuZXJpYwoJICBmb3JtIG9mIHRoZSAiYm1hcCIgY29tbWFuZAoJLSB4ZnNfaW8gbm93IHN1cHBvcnRzIHRoZSAiZnB1bmNoIiBjb21tYW5kLCBhcyB3ZWxsIGFzIGEKCSAgIi1wIiBmbGFnIHRvIHRoZSAiZmFsbG9jYXRlIGNvbW1hbmQuICBCb3RoIGltcGxlbWVudCBob2xlCgkgIHB1bmNoaW5nLiAgVGhhbmtzIHRvIEpvc2VmIEJhY2lrCgktIEEgbnVtYmVyIG9mIG90aGVyIGJ1ZyBmaXhlcyB0aGFua3MgdG8gQWplZXQgWWFkYXYKCnhmc3Byb2dzLTMuMS40ICg5IE5vdmVtYmVyIDIwMTApCgktIEFkZCBwcm9qaWQzMmJpdCBoYW5kbGluZyB0byB1c2Vyc3BhY2UsIHJlc29sdmluZyB0eXBlCgkgIHNpemluZyBpc3N1ZXMgd2hlbiBkZWFsaW5nIHdpdGggMzIgYml0IHByb2plY3QgaWRzLgoJLSBNYWtlIHhmc19mc3IgdXNlIC9wcm9jL21vdW50cyBpZiBhdmFpbGFibGUuCgktIEFubm90YXRlIHRoYXQgRGViaWFuIHBhY2thZ2VzIGFyZSBncm91cCBtYWludGFpbmVkLgoJLSBGaXggYSBEZWJpYW4gcGFja2FnaW5nIGlzc3VlIGNhdXNpbmcgdXBncmFkZSBwYWluLgoKeGZzcHJvZ3MtMy4xLjMgKDI2IEF1Z3VzdCAyMDEwKQoJLSBBZGQgeGZzX2lvIHN1cHBvcnQgZm9yIFhGU19JT0NfWkVST19SQU5HRQoJLSBGaXggZGVwZW5kIHRhcmdldHMuCgktIEFsbG93IHhmc19pbyByZXN2c3AgY29tbWFuZCBmb3IgZm9yZWlnbiBmaWxlc3lzdGVtcy4KCS0gRml4IGNvbmZpZ3VyZSAtLXByZWZpeC4KCS0gTWFrZSB4ZnNfZGIgY2hlY2sgZm9yIHZhbGlkIGlub2RlIGRhdGEgcG9pbnRlciBiZWZvcmUgZGVyZWZlcmVuY2luZy4KCS0gVmFsaWRhdGUgYnRyZWUgYmxvY2sgbWFnaWMgaW4gdGhlIHhmc19kYiBmcmVlc3AgY29tbWFuZCwKCSAgdGhhbmtzIHRvIFBldGVyIFdhdGtpbnMuCgktIFVuYnJlYWsgbWFrZSB1cGRhdGUtcG8sIHBlcm1pc3Npb25zIHByb2JsZW0sCgkgIHRoYW5rcyB0byBBcmthZGl1c3ogTWnFm2tpZXdpY3ouCgktIEZpeCBsaW5raW5nIG9mIGxpYnhmcyBhbmQgbGlicnQgZGV0ZWN0aW9uIChuZWVkcyBwdGhyZWFkKSwKCSAgdGhhbmtzIHRvIEFya2FkaXVzeiBNacWba2lld2ljei4KCS0gQWRkIGEgcGxhdGZvcm1fZGlzY2FyZF9ibG9ja3Mgc3R1YiBmb3IgR05VL2tGcmVlYnNkLgoKeGZzcHJvZ3MtMy4xLjIgKDYgTWF5IDIwMTApCgktIEZpeCBtaXNzaW5nIHRocmVhZCBzeW5jaHJvbml6YXRpb24gaW4geGZzX3JlcGFpciBkdXBsaWNhdGUKCSAgZXh0ZW50IHRyYWNraW5nLgoJLSBGaXggaGFuZGxpbmcgb2YgZHluYW1pYyBhdHRyaWJ1dGUgZm9yayByb290cyBpbiB4ZnNfZnNyLgoJLSBGaXggc2JfYmFkX2ZlYXR1cmVzMiBtYW5pcHVsYXRpb25zIHdoZW4gdHdlYWtpbmcgdGhlIGxhenkgY291bnQKCSAgZmxhZy4KCS0gQWRkIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIG9uIERlYmlhbiBHTlUva0ZyZWVCU0QsIHRoYW5rcwoJICB0byBQZXRyIFNhbGluZ2VyLgoJLSBJbXByb3ZlbWVudHMgdG8gdGhlIG1rZnMueGZzIG1hbnBhZ2UsIHRoYW5rcyB0byBXZW5nYW5nIFdhbmcuCgktIFZhcmlvdXMgc21hbGwgYmxraWQgaW50ZWdyYXRpb24gZml4ZXMgaW4gbWtmcy54ZnMuCgktIEZpeCBidWlsZCBhZ2FpbnN0IHN0cmljdGVyIHN5c3RlbSBoZWFkZXJzLgoKeGZzcHJvZ3MtMy4xLjEgKDI5IEphbnVhcnkgMjAxMCkKCS0gRml4IHZhcmlvdXMgYmxraWQgdG9wb2xvZ3kgc3VwcG9ydCBwcm9ibGVtcyBpbiBta2ZzLnhmcy4KCS0gRml4IHZhcmlvdXMgYnVpbGQgd2FybmluZ3MuCgktIEFkZCBhdXRvbWF0aWMgYnVpbGQgZGVwZW5kZW5jeSBjYWxjdWxhdGlvbnMuCgktIENsZWFuZXIgYnVpbGQgc3lzdGVtIG91dHB1dC4KCS0gQWRkIG1pc3NpbmcgYWNsb2NhbCBtNCBmaWxlIHRvIHRoZSBwYWNrYWdlIGdlbmVyYXRpb24uCgktIEFycmFuZ2UgZm9yIHJlbGVhc2UgdGFncyB0byBiZSBkaWdpdGFsbHkgc2lnbmVkLgoKeGZzcHJvZ3MtMy4xLjAgKDEzIEphbnVhcnkgMjAxMCkKCS0gUmVkdWNlIG1lbW9yeSB1c2FnZSBpbiB4ZnNfcmVwYWlyIGJ5IHVzaW5nIGJldHRlciBkYXRhIHN0cnVjdHVyZXMuCgktIEFkZCBhZGRpdGlvbmFsIGNoZWNrcyBpbiB4ZnNfcmVwYWlyIHRvIGRldGVjdCBmcmVlc3BhY2UgYnRyZWUKCSAgY29ycnVwdGlvbiBpbnN0ZWFkIG9mIG9ubHkgcmVidWlsZGluZyB0aGUgYnRyZWVzLiAgVXNlZnVsIGZvciB0aGUKCSAgbm8tbW9kaWZ5IG1vZGUuCgktIEZpeCBsaWJoYW5kbGUgdG8gdXNlIHRoZSByaWdodCBwYXRoIHRvIGlzc3VlIGJ5LWhhbmRsZSBpb2N0bHMgZm9yCgkgIHN5bWJvbGljIGxpbmtzIGFuZCBzcGVjaWFsIGZpbGVzLgoJLSBVc2UgbGF6eSBzdXBlcmJsb2NrIGNvdW50ZXJzIGJ5IGRlZmF1bHQuICBBdCBsZWFzdCBrZXJuZWwgMi42LjIyIGlzCgkgIG5lZWRlZCBmb3IgdGhpcyBmZWF0dXJlLgoJLSBVc2UgcGh5c2ljYWwgZGV2aWNlIHNlY3RvciBzaXplIGlmIGF2YWlsYWJsZSBpbiBta2ZzLnhmcywKCSAgc28gNEsgc2VjdG9yIGRldmljZXMgYXJlIGhhbmRlZCBtb3JlIGdyYWNlZnVsbHkuCgktIEFkZCBhIEdlcm1hbiB0cmFuc2xhdGlvbiwgdGhhbmtzIHRvIENocmlzIExlaWNrLgoJLSBFbmFibGUgdGhlIG1hZHZpc2UgYW5kIG1pbmNvciBjb21tYW5kcyBpbiB4ZnNfaW8uCgktIEZpeCB1bnNhZmUgdGVtcG9yYXJ5IGZpbGUgY3JlYXRpb24gaW4geGZzX2Zzci4KCS0gQWRkIHN1cHBvcnQgZm9yIGRpc2NhcmRpbmcgdW51c2VkIHNwYWNlIG9uIFNTRHMgb3IgdGhpbiBwcm92aXNpb25lZAoJICBhcnJheXMgaW4gbWtmcy54ZnMuCgktIEFsbG93IGxpbmtpbmcgYWdhaW5zdCBsaWJibGtpZCBmb3IgdG9wb2xvZ3kgaW5mb3JtYXRpb24uCgktIEFkZCBzeW1ib2wgdmVyc2lvbmluZyBmb3IgbGliaGFuZGxlLgoJLSBSZW1vdmUgdGhlIGluY2x1ZGVkIFJQTSBhbmQgYmluYXJ5IHRhcmJhbGwgYnVpbHQgaW5mcmFzdHJ1Y3R1cmUuCgktIFZhcmlvdXMgYnVpbGQgc3lzdGVtIGltcHJvdmVtZW50cy4KCS0gU21hbGwgZml4ZXMgdG8geGZzX2RiIGFuZCB4ZnNfaW8uCgp4ZnNwcm9ncy0zLjAuNCAoMTcgU2VwdGVtYmVyIDIwMDkpCgktIEZpeCBhIG1lbW9yeSBsZWFrIGluIHhmc3Byb2dzLgoJLSBJbmNyZWFzZSBoYXNoIGNoYWluIGxlbmd0aCBpbiB4ZnNwcm9ncyB3aGVuIHJ1bm5pbmcgb3V0IG9mIG1lbW9yeS4KCS0gRml4IGRtc2V0dXAgaW52b2NhdGlvbiBpbiBsaWJkaXNrIHRvIGF2b2lkIHdhcm5pbmdzIGR1cmluZyBta2ZzCgkgIG9uIG11bHRpcGF0aCBkZXZpY2VzLgoJLSBGaXggdGhlIC1WIG9wdGlvbiB0byB2YXJpb3VzIGluc3RhbGxlZCB0b29scy4KCS0gU21hbGwgaW50ZXJuYWwgZml4ZXMgdG8gcGxlYXNlIHRoZSBjbGFuZyBzZW1hbnRpY2FsIGFuYWx5c2lzIHRvb2wuCgktIERlYmlhbiBwYWNrYWdpbmcgdXBkYXRlcy4KCS0gUmV3b3JrIE1ha2Vwa2dzIGFuZCBNYWtlZmlsZXMgdG8gaW1wcm92ZSBkZWIgZ2VuZXJhdGlvbi4KCnhmc3Byb2dzLTMuMC4zICgzMCBBdWd1c3QgMjAwOSkKCS0gRml4IHVuYWxpZ25lZCBhY2Nlc3NlcyBpbiBsaWJ4ZnMuCgktIFZhcmlvdXMgc21hbGwgZml4ZXMgdG8geGZzX2RiLCB4ZnNfcmVwYWlyIGFuZCB4ZnNfaW8uCgktIEFkZCBmYWxsb2NhdGUgY29tbWFuZCB0byB4ZnNfaW8uCgktIEVuYWJsZSByZWFkbGluZSBzdXBwb3J0IGluIHhmc19pbyBhbmQgeGZzX3F1b3RhLgoJLSBBbGxvdyBsb2cgc2l6ZXMgdXAgdG8gMkdpQiAobWludXMgMSBieXRlKSBpbiB4ZnNfbWtmcy4KCS0gT3BlbiB0aGUgYmxvY2sgZGV2aWNlIGluIHhmc19yZXBhaXIgZXhjbHVzaXZlbHksIHRoYW5rcyB0bwoJICBOYXRoYW5pZWwgVy4gVHVybmVyLgoKeGZzcHJvZ3MtMy4wLjIgKDYgTWF5IDIwMDkpCgktIFVwZGF0ZXMgdG8gRGViaWFuIGJ1aWxkIHByb2Nlc3MgYWZ0ZXIgcmVjZW50IGF1dG9jb25mIHR3ZWFrcy4KCS0gRml4IGEgY291cGxlIG9mIG1pbm9yIG1hbiBwYWdlIHN5bnRheCBpc3N1ZXMuCgp4ZnNwcm9ncy0zLjAuMSAoNCBNYXkgMjAwOSkKCS0gVXBkYXRlIHRoZSBNYWtlcGtncyBzY3JpcHQgdG8gZ2VuZXJhdGUgcHJvcGVyIHNvdXJjZSB0YXJiYWxscy4KCS0gTmV3IHByb2plY3QoNSkgYW5kIHByb2ppZCg1KSBtYW4gcGFnZXMuCgktIEZpeCBleHRlbnQgYXJyYXkgcmVhbGxvY2F0aW9uIGluIHRoZSB4ZnNfaW8gYm1hcCBjb21tYW5kLAoJICB0aGFua3MgdG8gVG9tYXN6IE1hamtvd3NraS4KCS0gU21hbGwgc3BlY2ZpbGUgaW1wcm92ZW1lbnRzLCB0aGFua3MgdG8gSmFuIEVuZ2VsaGFyZHQuCgktIEFsbG93IHhmc19mcmVlemUgdG8gZnJlZXplIG5vbi1YRlMgZmlsZXN5c3RlbXMuCgktIEZpeCB0aGUgeGZzX2RiIGJtYnRhIGNvbW1hbmQuCgktIEZpeCBwYXJhbGxlbCBidWlsZHMsIHRoYW5rcyB0byBNaWtlIEZyeXNpbmdlci4KCS0gVmFyaW91cyBhdXRvY29uZi9saWJ0b29sIGZpeGVzLCB0aGFua3MgdG8gQW5kcmVhcyBHcnVlbmJhY2hlci4KCnhmc3Byb2dzLTMuMC4wICg0IEZlYnJ1YXJ5IDIwMDkpCgktIFZhcmlvdXMgc21hbGxlciB4ZnNfcmVwYWlyIGltcHJvdmVtZW50cy4KCS0gVmFyaW91cyBnZXR0ZXh0IGltcHJvdmVtZW50cywgdGhhbmtzIHRvIEpha3ViIEJvZ3Vzei4KCS0gUG9saXNoIHRyYW5zbGF0aW9uIHVwZGF0ZSwgdGhhbmtzIHRvIEpha3ViIEJvZ3Vzei4KCS0gVmFyaW91cyB4ZnNfcXVvdGEgZml4ZXMsIHRoYW5rcyB0byBBcmthZGl1c3ogTWlza2lld2ljei4KCS0gU3VwcG9ydCBwYXJhbGxlbCBidWlsZHMuCgktIERldGVjdGlvbiBvZiBidHJmcywgZ2ZzIGFuZCBnZnMyIGluIGxpYmRpc2suCgktIEFkZGl0aW9uIG9mIHRoZSB4ZnNfZnNyIGFuZCB4ZnNfZXN0aW1hdGUgdG9vbHMgcHJldmlvdXMgZm91bmQKCSAgaW4gdGhlIHhmc2R1bXAgcGFja2FnZS4KCS0gUmVzeW5jIGxpYnhmcyB0byBsYXRlc3Qga2VybmVsIGltcGxlbWVuYXRpb24uCgktIFVwZGF0ZSBhbGwgb2YgeGZzcHJvZ3MgdG8gbGF0ZXN0IGtlcm5lbCBpbnRlcmZhY2VzLgoJLSBBZGQgc3BhcnNlIHN1cHBvcnQgdG8geGZzcHJvZ3MgYnVpbGQuCgktIENsZWFudXAgZGV2ZWwgcGFja2FnZSBmb3IgeGZzY3RsLCBsaWJoYW5kbGUgYW5kIGxpYmRpc2sgb25seQoJICAocmVtb3ZlIGxpYnhmcyBpbnRlcmZhY2VzKS4KCnhmc3Byb2dzLTIuMTAuMSAoNSBTZXB0ZW1iZXIgMjAwOCkKCS0gSW1wcm92ZSB4ZnNfcmVwYWlyIC1QIG9wdGlvbiB0byBkaXNhYmxlIHhmc19idWZfdCBsb2NraW5nLgoJLSBGaXggaW5vZGUgY2x1c3RlciBJL08gc2l6ZSBmb3IgPiA4S0IgYmxvY2sgc2l6ZSBmaWxlc3lzdGVtcy4KCS0gRml4IHVwIEFTQ0lJIENJIG91dHB1dCBmb3IgbWtmcy54ZnMgYW5kIHhmc19ncm93ZnMuCgktIEZpeCBidWZmZXIgaGFuZGxpbmcgaW4gZXJyb3IgY2FzZXMgaW4geGZzX2RiIChpbmNsdWRlcyB4ZnNfY2hlY2sKCSAgYW5kIHhmc19tZXRhZHVtcCkuCgktIEFkZCBwYWNrZWQgb24tZGlzayBzaG9ydGZvcm0gZGlyZWN0b3J5IGZvciBBUk0ncyBvbGQgQUJJLCB0aGFua3MgdG8KCSAgRXJpYyBTYW5kZWVuLgoJLSBJbmNyZWFzZSBkZWZhdWx0IHZhbGlkIGJsb2NrIGNvdW50IGZvciBhIGRpcmVjdG9yeSBleHRlbnQgaW4KCSAgeGZzX21ldGFkdW1wIChmcm9tIDIwIHRvIDEwMDApLgoJLSBGaXggdXAgbWtmcy54ZnMgLU4gb3B0aW9uIHdpdGggIi1kIGZpbGUiIHNvIGl0IGRvZXNuJ3QgcmVzaXplIHRoZQoJICB0YXJnZXQgZmlsZSAodGhhbmtzIHRvIE1pY2hhbCBNYXJlaykuCgktIEltcHJvdmUgbGlieGZzIGNhY2hlIGhhbmRsaW5nIHdpdGggKHVuKXJlZmVyZW5jZWQgYmxvY2tzLgoJLSBDaGVjayB0aGF0IGRpcmVjdG9yeSBzaXplIGlzIG5vdCB0b28gYmlnIGluIHhmc19yZXBhaXIuCgktIEltcHJvdmUgeGZzX3JlcGFpciB0byByZXN0b3JlIGJhZCBvciBtaXNzaW5nICIuLiIgZW50cmllcy4KCnhmc3Byb2dzLTIuMTAuMCAoMjYgTWF5IDIwMDgpCgktIEFkZCBBU0NJSSBjYXNlLWluc2Vuc2l0aXZlIHN1cHBvcnQgdG8geGZzcHJvZ3MuCgp4ZnNwcm9ncy0yLjkuOCAoMjEgQXByaWwgMjAwOCkKCS0gQWRkIHN1cHBvcnQgZm9yIHNiX2ZlYXR1cmVzMiBpbiB3cm9uZyBsb2NhdGlvbiBpbiBta2ZzLnhmcywKCSAgeGZzX3JlcGFpciBhbmQgeGZzX2RiLgoJLSBJbXByb3ZlIG1lbW9yeSBsaW1pdHMgZm9yIGxpYnhmcyBjYWNoZSBpbiB4ZnNfcmVwYWlyIGFuZCBhZGRlZAoJICBhIC1tIG9wdGlvbiB0byBtYW51YWxseSBsaW1pdCB1c2FnZSBvZiB4ZnNfcmVwYWlyLgoJLSBBZGQgLWMgb3B0aW9uIHRvIHhmc19hZG1pbiB0byB0dXJuIGxhenktY291bnRlcnMgb24vb2ZmLgoJLSBBZGRlZCBzdXBwb3J0IGZvciBtZHAgaW4gbGliZGlzay9ta2ZzLnhmcywgdGhhbmtzIHRvCgkgIEh1YmVydCBWZXJzdHJhZXRlLgoJLSBBZGQgLXAgb3B0aW9uIHRvIGZzY2sueGZzLCB0aGFua3MgdG8gTWFya3VzIFJvdGhlLgoJLSBDbGVhbnVwIHN5cyB2MyBiemVyby9iY29weSBjYWxscywgdGhhbmtzIHRvIE5pZ2VsIEt1a2FyZC4KCnhmc3Byb2dzLTIuOS43ICgxIE1hciAyMDA4KQoJLSBMYXp5IHN1cGVyYmxvY2sgY291bnRlcnMgbm90IHlldCB0aGUgZGVmYXVsdCB3aXRoIG1rZnMueGZzLgoJLSBBZGQgLXkgKGFub3RoZXIgbm8tb3ApIGZzY2sgb3B0aW9uLgoJLSBSZXNvbHZlIG1rZnMgYWxsb2NhdGlvbiBncm91cCBjb3VudCBpc3N1ZSB3aXRoIHNtYWxsIGRldmljZXMuCgktIEZpeCBta2ZzIHRvIHNlY3RvciBhbGlnbiB0aGUgZGV2aWNlIHNpemUgc28gemVyb2luZyB0aGUgZW5kCgkgIG9mIHRoZSBkZXZpY2UgZG9lc24ndCBmYWlsLgoKeGZzcHJvZ3MtMi45LjYgKDcgRmViIDIwMDgpCgktIEZpeCByZWdyZXNzaW9uIGludHJvZHVjZWQgYnkgY2hhbmdpbmcgdGhlIG1rZnMueGZzIGRlZmF1bHRzLgoJLSBNYWRlIGxhenkgc3VwZXJibG9jayBjb3VudGVycyB0aGUgZGVmYXVsdCB3aXRoIG1rZnMueGZzLgoKeGZzcHJvZ3MtMi45LjUgKDIxIEphbiAyMDA4KQoJLSBVcGRhdGVkIG1rZnMueGZzIGRlZmF1bHRzLgoJLSBNYWtlIHhmc19pbmZvIGhhbmRsZSBtb3VudCBwb2ludHMgd2l0aCBzcGFjZXMuCgktIEltcHJvdmUgeGZzX3JlcGFpcidzIGhhbmRsaW5nIG9mIGludmFsaWQgZnJlZXNwYWNlIGJ0cmVlIGV4dGVudHMuCgktIFJlYnVpbGQgZGlyZWN0b3JpZXMgaW4geGZzX3JlcGFpciBpZiAiLiIgYW5kICIuLiIgYXJlbid0IHRoZSBmaXJzdAoJICB0d28gZGlyZWN0b3J5IGVudHJpZXMuIFRoaXMgZ3VhcmFudGVlcyBhIGRpcmVjdG9yeSBpcyBkZWxldGFibGUuCgktIENoYW5nZWQgbWtmcy54ZnMgLWYgdG8gd2lwZSBhbGwgb2xkIEFHIGhlYWRlcnMsIG5vdCBqdXN0IHRoZSBvbmVzCgkgIHVwIHRvIHRoZSBlbmQgb2YgdGhlIG5ldyBmaWxlc3lzdGVtIHNpemUuCgktIFB1cmdlZCB0aGUgZW5kIG9mIGRldmljZSB3aGFjayBidWZmZXIgaW4gbWtmcy54ZnMgdG8gcHJldmVudCBhCgkgIHdhcm5pbmcgaW4gY2VydGFpbiBkZXZpY2Ugc2l6ZXMuCgktIE1hbiBwYWdlIGZpeGVzLiBUaGFua3MgdG8gVXRha28gS3VzYWthIDx1LWt1c2FrYUB3bS5qcC5uZWMuY29tPgoJICBmb3IgdGhpcy4KCS0gRGlzYWJsZSB0aGUgYWJpbGl0eSB0byB0dXJuIG9mZiB1bndyaXR0ZW4gZXh0ZW50cyBpbiBta2ZzLgoKeGZzcHJvZ3MtMi45LjQgKDcgU2VwIDIwMDcpCgktIEZpeGVkIHhmc19yZXBhaXIgc2VnZmF1bHRpbmcgd2l0aCBkaXJlY3RvcnkgYmxvY2sgc2l6ZSBkaWZmZXJlbnQKCSAgdG8gdGhlIGZpbGVzeXN0ZW0gYmxvY2tzaXplLgoJLSBGaXhlZCB4ZnNfcXVvdGEgZGlzYWJsZSwgZW5hYmxlLCBvZmYgYW5kIHJlbW92ZSBjb21tYW5kcy4KCSAgVGhhbmtzIHRvIFV0YWtvIEt1c2FrYSA8dXRha29AdG5lcy5uZWMuY28uanA+IGZvciB0aGlzLgoJLSBJbXByb3ZlZCB0aGUgcm9idXN0bmVzcyBvZiB4ZnNfbWV0YWR1bXAuCgktIEZpeCBsaW5rIGlzc3VlcyB3aXRoIHB0aHJlYWQgbGlicmFyeS4KCnhmc3Byb2dzLTIuOS4zICgyMyBKdWx5IDIwMDcpCgktIE1ha2UgeGZzX3JlcGFpciBzdXBwb3J0ID4gNTEyIGJ5dGUgc2VjdG9yIHNpemVzLgoJLSBGaXhlZCBpbmNsdWRlIE1ha2VmaWxlIGZvciBuZXcgY29tbW9uIGhlYWRlciAoeGZzX21ldGFkdW1wLmgpLgoJLSBGaXhlZCB4ZnNfcXVvdGEgc3RhdGUgY29tbWFuZCBzZWdmYXVsdGluZyB3aXRoIG5vIG1vdW50ZWQKCSAgWEZTIGZpbGVzeXN0ZW1zLgoJLSBGaXhlZCB4ZnNfcXVvdGEgcHJpbnRpbmcgb3V0IHVudXN1YWwgbWVzc2FnZSB3aXRoICJwYXRoIG4iIGNvbW1hbmQKCSAgd2l0aCBubyBtb3VudGVkIFhGUyBmaWxlc3lzdGVtcy4KCS0gRml4ZWQgInF1b3RhIC1uIiBjb21tYW5kIHdpdGggcHJvamVjdCBJRHMuCgktIEltcHJvdmVkICJmcmVlIiBvdXRwdXQgd2hlbiBwcm9qZWN0IHF1b3RhcyBhcmUgZGVmaW5lZCwgYnV0CgkgIGhhdmVuJ3QgYmVlbiBlbmFibGUgb24gdGhlIGZpbGVzeXN0ZW0uCgkgIFRoYW5rcyB0byBVdGFrbyBLdXNha2EgPHV0YWtvQHRuZXMubmVjLmNvLmpwPiBmb3IgdGhlIGFib3ZlIGZvdXIKCSAgZml4ZXMuCgp4ZnNwcm9ncy0yLjkuMiAoMTggSnVseSAyMDA3KQoJLSBOZXh0IG1ham9yIHJvdW5kIG9mIHhmc19yZXBhaXIgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzOgoJCS0gQ2FjaGUgZGlzayBubGluayB2YWx1ZXMgaW4gUGhhc2UgMyBmb3IgUGhhc2UgNy4KCQktIERvIG11bHRpdGhyZWFkZWQgcHJlZmV0Y2gvcHJvY2Vzc2luZyBiYXNlZCBvbiBBRyBzdHJpZGUKCQkgIG9wdGlvbiAoaWUuIGZvciBjb25jYXRzKS4KCQktIERvbid0IHRyYXNoIGxvc3QrZm91bmQgYXQgdGhlIHN0YXJ0IG9mIFBoYXNlIDQsIGVsaW1pbmF0ZXMKCQkgIHJlcGVhdGVkICJtb3ZpbmcgZGlzY29ubmVjdGVkIGlub2RlIHRvIGxvc3QrZm91bmQiIHdpdGgKCQkgIHN1Y2Nlc3NpdmUgeGZzX3JlcGFpciBydW5zLgoJCS0gRG8gbXVsdGktdGhyZWFkZWQgc2VxdWVudGlhbCBtZXRhZGF0YSBwcmVmZXRjaC4KCQkgIE1ldGhvZCBiYXNlZCBvbiBBZ2FtaSBwYXRjaGVzIHBvc3RlZCBmb3IgMi43LjE4IHhmc3Byb2dzLgoJCS0gSW1wcm92ZSB0aGUgbGlieGZzIGNhY2hlIHdpdGggcHJpb3JpdHkgdGFnZ2luZyB0byBrZWVwCgkJICBibG9ja3MgYXJvdW5kIHRoYXQgaGF2ZSB1bmZhdm91cmFibGUgSS9PIGNoYXJhY3RlcmlzdGljcy4KCS0gTWFrZSBta2ZzLnhmcyAtZiB6ZXJvIHRoZSBvbGQgc2Vjb25kYXJ5IHN1cGVyYmxvY2tzIGJlZm9yZSB3cml0aW5nCgkgIHRoZSBuZXcgc3VwZXJibG9ja3MuCgktIEZpeCB1cCB4ZnNfaW5mbyBhbmQgeGZzX3F1b3RhJ3MgLWMgaGFuZGxpbmcgd2l0aCBnbG9iYWwgY29tbWFuZHMuCgktIEltcHJvdmUgeGZzX2JtYXAgLXZwIG91dHB1dCB0byBhbHdheXMgc2hvdyB0aGUgRkxBR1MgY29sdW1uLgoJLSBVcGRhdGUgbWFuIHBhZ2VzLgoKeGZzcHJvZ3MtMi45LjEgKDI4IEp1bmUgMjAwNykKCS0gQWRkZWQgZmlsZXN0cmVhbXMgc3VwcG9ydCB0byB4ZnNfaW8uCgktIEZpeCB1cCBsaWJhdHRyIE1ha2VmaWxlIHRvIGFwcGVuZCB0byBMVExERkxBR1MuIFRoYW5rcyB0bwoJICBBcmZyZXZlciBGcmVodGVzIFRhaWZlcnNhciBBcmFoZXNpcyA8QXJmcmV2ZXIuRlRBQEdNYWlsLkNvbT4gZm9yIHRoaXMuCgktIEZpeCB1cCBidWlsZCBub3QgdG8gaWdub3JlIExERkxBR1MgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4KCSAgVGhhbmtzIHRvIFNwYW5LWSA8dmFwaWVyQGdlbnRvby5vcmc+IGZvciB0aGlzLgoKeGZzcHJvZ3MtMi45LjAgKDUgSnVuZSAyMDA3KQoJLSBBZGRlZCBuZXcgdG9vbHM6IHhmc19tZXRhZHVtcCBhbmQgeGZzX21kcmVzdG9yZS4KCS0gRml4IHVwIHRoZSBIQVZFX19fVTMyIGZpeCBmcm9tIDIuOC4yMAoJICBUaGFua3MgdG8gRXJpYyBTYW5kZWVuIGZvciBwb2ludGluZyB0aGlzIG91dC4KCnhmc3Byb2dzLTIuOC4yMSAoMjggTWF5IDIwMDcpCgktIEFkZCBzdXBwb3J0IGZvciBsYXp5IHN1cGVyYmxvY2sgY291bnRlcnMgaW4gbWtmcy54ZnMsIHhmc19kYiwKCSAgeGZzX3JlcGFpciwgeGZzX2dyb3dmcyBhbmQgYWxzbyBsaWJ4ZnMuCgktIEZpeCB4ZnNfcXVvdGEgcHJvamVjdCBjb21tYW5kIHRvIHN0b3AgaXQgb3BlcmF0aW5nIG9uIHNwZWNpYWwgZmlsZXMuCgkgIFRoYW5rcyB0byBMZW8gQmFsdHVzLgoKeGZzcHJvZ3MtMi44LjIwICgyMyBGZWJydWFyeSAyMDA3KQoJLSBGaXggeGZzX3JlcGFpciBub3QgZGV0ZWN0aW5nIGludmFsaWQgYnRyZWUgcm9vdCBpbiBpbm9kZXMuCgktIEZpeCB4ZnNfcmVwYWlyIHJlc3RvcmluZyBjb3JydXB0ZWQgc3VwZXJibG9jayBhZnRlciByZXBhaXJpbmcgaXQuCgktIEZpeCB4ZnNfcmVwYWlyIGNyYXNoaW5nIG9uIGludmFsaWQgcXVvdGEgaW5vZGUgdmFsdWVzLgoJLSBGaXggeGZzX3F1b3RhIGdyYWNldGltZSByZXBvcnRpbmcuCgkgIFRoYW5rcyB0byBVdGFrbyBLdXNha2EgPHV0YWtvQHRuZXMubmVjLmNvLmpwPiBmb3IgdGhpcy4KCS0gRml4IGxpYnhmcyBJT19ERUJVRyBvdXRwdXQuCgktIEluc3RlYWQgb2YgdXNpbmcgQUNfQ0hFQ0tfVFlQRVMgd2hpY2ggaXNuJ3Qgc3VwcG9ydGVkIGZvcgoJICBvbGRlciB2ZXJzaW9ucyBvZiBhdXRvY29uZiwgYWRkIG91ciBvd24gdHlwZSBjaGVjayBpbiB0aGUKCSAgbTQvcGFja2FnZV90eXBlcy5tNCBmaWxlIGZvciBfX3UzMi4KCSAgU3VnZ2VzdGVkIGJ5IE5hdGhhbiBTY290dCBhbmQgZGlzY292ZXJlZCBieSB3b29rZXlAYWxlcGgxLmNvLnVrLgoKeGZzcHJvZ3MtMi44LjE5ICgzMSBKYW51YXJ5IDIwMDcpCgktIEZpeCBwdGhyZWFkIHN0YWNrIHNpemUgc2V0dGluZyBpbiB4ZnNfcmVwYWlyLgoJLSBGaXggeGZzX2JtYXAgLW4gb3B0aW9uIGRpc3BsYXlpbmcgYSB0cnVuY2F0ZWQgZXh0ZW50LgoJLSBGaXggeGZzX2lvIG13cml0ZSBzZWdmYXVsdC4gVGhhbmtzIHRvIFV0YWtvIEt1c2FrYSBmb3IgdGhlc2UgdHdvCgkgIGZpeGVzLgoJLSBGaXggZXJyb3JzIGluIHhmc19xdW90YSg4KSBtYW4gcGFnZS4KCnhmc3Byb2dzLTIuOC4xOCAoOCBEZWNlbWJlciAyMDA2KQogCS0gPHhmcy9saXN0Lmg+IGlzIGFuIGluc3RhbGxlZCBmaWxlLCB3ZSBjYW5ub3Qgc2ltcGx5IHJlbmFtZSBpdCwKIAkgIGFzIG90aGVyIGFwcGxpY2F0aW9ucyB1c2luZyBpdCAoYWNjaWRlbnRhbGx5IG9yIG5vdCkgbWF5IGJyZWFrLgogCSAgVGhlIHhmc19saXN0LmggbmFtZSB3YXMgaW5jb25zaXN0ZW50IHdpdGggZXZlcnl0aGluZyBlbHNlIHRvby4KIAktIEZpeCAicG9pbnRlciB0YXJnZXRzIGluIGFzc2lnbm1lbnQgZGlmZmVyIGluIHNpZ25lZG5lc3MiIHdhcm5pbmdzCiAJLSBVcGRhdGUgRGViaWFuIHBhY2thZ2luZy4KCS0gRml4IHVwIHR3byBpc3N1ZXMgd2l0aCB4ZnNfZGIgYW5kIGJtYXAuIElmIHRoZSBkYXRhL2F0dHIgZm9yayBpcwoJICBsb2NhbCwgaXQgZWl0aGVyIGluZmluaXRlIGxvb3BzIG9yIGNyYXNoZXMuIElmIGJvdGggYXJlIGRpc3BsYXllZCwKCSAgdGhlIGF0dHJzIGFyZSB3cm9uZy4KCS0gRml4IHVwIHhmc19pbyBtbWFwIHJlYWQgdGhhdCByZWFkIGZyb20gdGhlIHdyb25nIG9mZnNldC4KCS0gVXBkYXRlZCB4ZnNfaW8gbWFuIHBhZ2UuCgkgIFRoYW5rcyB0byBVdGFrbyBLdXNha2EgPHV0YWtvQHRuZXMubmVjLmNvLmpwPiBmb3IgdGhlIGFib3ZlIHRocmVlCgkgIGZpeGVzLgoKeGZzcHJvZ3MtMi44LjE3ICg1IERlY2VtYmVyIDIwMDYpCgktIEZpeCB1cCBsaWJ4ZnMgU0VHViB3aGVuIGF0dGVtcHRpbmcgdG8gbW91bnQgYSBub24tWEZTIGZpbGVzeXN0ZW0uCgkgIFRoYW5rcyB0byBVdGFrbyBLdXNha2EgPHV0YWtvQHRuZXMubmVjLmNvLmpwPiBmb3IgdGhpcy4KCS0gRml4IHVwIHhmc19yZXBhaXIgYWJvcnRpbmcgaWYgaXQgZmluZHMgYW4gaW5vZGUgd2l0aCBhbiBpbnZhbGlkCgkgIGlub2RlIHR5cGUuCgktIEZpeCB1cCBkZWZhdWx0IHJlYWx0aW1lIGV4dGVudCBzaXplIGZvciBsYXJnZSBibG9jayBzaXplcy4KCS0gUmVuYW1lIGluY2x1ZGUvbGlzdC5oIHRvIHhmc19saXN0Lmggc28gdGhhdCBvdGhlciBhcHBsaWNhdGlvbnMKCSAgZG8gbm90IGFjY2lkZW50YWxseSB1c2UgaXQuCgp4ZnNwcm9ncy0yLjguMTYgKDMwIE9jdG9iZXIgMjAwNikKCS0gRml4IHVwIGFuIGVuZGlhbiBwcm9ibGVtIGZvciBubGluayBzZXR0aW5nIGluIHBoYXNlIDcgZm9yIHhmc19yZXBhaXIuCgp4ZnNwcm9ncy0yLjguMTUgKDE5IE9jdG9iZXIgMjAwNikKCS0gRml4IHVwIG5saW5rIGNoZWNrcyBhbmQgcmVwYWlycyBpbiBwaGFzZSA3IGZvciB4ZnNfcmVwYWlyLgoJLSBSZW1vdmUgYSBib2d1cyBMRUFGTiB3YXJuaW5nIGZvciBhIHNpbmdsZSBsZWFmIG5vZGUgdjIgZGlyLgoJICBUaGFua3MgdG8gUm9nZXIgV2lsbGNvY2tzIDxyb2dlckBmaWxtbGlnaHQubHRkLnVrPiBmb3IgdGhpcy4KCnhmc3Byb2dzLTIuOC4xNCAoNiBPY3RvYmVyIDIwMDYpCgktIEZpeCB1cCB0aGUgcmluZyBjb21tYW5kIGluIHhmc19kYiwKCSAgVGhhbmtzIHRvIFV0YWtvIEt1c2FrYSA8dXRha29AdG5lcy5uZWMuY28uanA+IGZvciB0aGlzLgoJLSBTZXQgdGhlIGJsb2Nrc2l6ZSBvbiB0aGUgZGV2aWNlIHRvIHRoZSBnaXZlbiBzZWN0b3IKCSAgc2l6ZSB3aGljaCBpcyBfbm90XyBuZWNlc3NhcmlseSA1MTIgYnl0ZXM7CgkgIGlkZWEgc3VnZ2VzdGVkIGJ5IFNoYWlsZW5kcmEgVHJpcGF0aGkuCgktIEZpeCB1cCB4ZnNfY29weSBhbmQgaXRzIHZhcmlhYmxlIGFyZ3VtZW50IGhhbmRsaW5nCgkgIGFyb3VuZCB2ZnByaW50ZjsgeGZzX2NvcHkgd2FzIHNlZyBmYXVsdGluZyBvbiB4ODZfNjQuCgp4ZnNwcm9ncy0yLjguMTMgKDIxIFNlcHRlbWJlciAyMDA2KQoJLSBGaXggdjIgZGlyZWN0b3J5IGNoZWNraW5nIHdpdGggaG9sZXMgYW5kIHVucmVhZGFibGUgYmxvY2tzLgoJLSBGaXggYSBtZW1vcnkgbGVhayBpbiBkaXIyIGNoZWNraW5nLgoJLSBVcGRhdGUgbGliZGlzay9tZCBzdXBwb3J0IHRvIHdvcmsgb3V0IHRoZSBzdHJpcGUgd2lkdGgKCSAgYmFzZWQgb24gKCMgcmFpZC1kaXNrcyAtICMgcGFyaXR5IGRpc2tzKSB3aGljaAoJICBkb2Vzbid0IGluY2x1ZGUgYW55IHNwYXJlIGRpc2tzICh3aGljaCB3ZSBtaXN0YWtlbmx5IGRpZCBiZWZvcmUpLgoJICBUaGFua3MgdG8gU2hhaWxlbmRyYSBUcmlwYXRoaSdzIHN1Z2dlc3Rpb25zLgoJLSBHZXQgdGhlIGtlcm5lbCBpbnQgdHlwZXMgb2YgX191MzIgYW5kIGZyaWVuZHMgZnJvbSA8YXNtL3R5cGVzLmg+CgkgIGlmIHdlIGNhbiwgb3RoZXJ3aXNlIGRlZmluZSB0aGVtIG91cnNlbHZlcy4KCnhmc3Byb2dzLTIuOC4xMiAoMjkgQXVndXN0IDIwMDYpCgktIE11bHRpLXRocmVhZCBtb2RpZmljYXRpb25zIHRvIHhmc19yZXBhaXIuCgktIFVwZGF0ZWQgUG9saXNoIHRyYW5zbGF0aW9uLCB0aGFua3MgdG8gSmFrdWIgQm9ndXN6LgoJLSBDaGFuZ2UgZGVmYXVsdCBta2ZzIHJlYWx0aW1lIGV4dGVudCBzaXplIHNldHRpbmcgdG8KCSAgcGVyZm9ybSBiZXR0ZXIgZm9yIGJ1ZmZlcmVkIHdyaXRlcy4KCnhmc3Byb2dzLTIuOC4xMSAoMDggQXVndXN0IDIwMDYpCgktIHhmc19yZXBhaXIgcHJlZmV0Y2ggb3B0aW1pc2F0aW9ucy4KCS0gTWFrZSBtYW55IHRvb2xzIHVzZSBkaXJlY3QgSS9PIG9uIExpbnV4IGlmIHRoZSB1bmRlcmx5aW5nCgkgIGRldmljZSBzdXBwb3J0cyBpdC4gIE1haW5seSBmb3Igc3BlZWRpbmcgdXAgeGZzX3JlcGFpciBhcwoJICBsaWJ4ZnMgZG9lcyBpdHMgb3duIGludGVybmFsIG1ldGFkYXRhIGJ1ZmZlcmluZyBub3cuCgktIEZpeCB3YXJuaW5ncyBmcm9tIG1rZnMueGZzIG9uIHJhbWRpc2sgZGV2aWNlcy4KCS0gRml4IGlzc3VlcyB3aXRoIHN5bWJvbGljIGxpbmsgaGFuZGxpbmcgaW4gTWFrZWZpbGVzLgoKeGZzcHJvZ3MtMi44LjEwICgwMiBBdWd1c3QgMjAwNikKCS0gRml4IHYyIGRpcmVjdG9yeSByZWJ1aWxkcyBpbiBwaGFzZTYgb2YgeGZzX3JlcGFpci4KCS0gRml4IGJ1ZmZlciBzaXppbmcgaXNzdWUgZm9yIGxhcmdlIHBhZ2VzaXplIHN5c3RlbXMsCgkgIGFmZmVjdGluZyBta2ZzIGF1dG8tZGV2aWNlLXR5cGUtZGV0ZWN0aW9uIGhldXJpc3RpY3MuCgp4ZnNwcm9ncy0yLjguOSAoMTggSnVseSAyMDA2KQoJLSBGaXggcnBtIGlzc3VlIHdpdGggaW5zdGFsbCB0YXJnZXRzIGFzIHVpZC9naWQgemVybyAod2Ugbm93CgkgIHVzaW5nIHN5bWJvbGljIG5hbWVzIHJhdGhlciB0aGFuIHRoZSBudW1lcmljIHZlcnNpb25zKS4KCnhmc3Byb2dzLTIuOC44ICgxNCBKdWx5IDIwMDYpCgktIEZpeCBpc3N1ZXMgd2l0aCBtYWtlZGVwZW5kIG9uIGxpYnRvb2wgbGlicmFyaWVzLgoKeGZzcHJvZ3MtMi44LjcgKDEwIEp1bHkgMjAwNikKCS0gRml4IGJ1aWxkIG9mIHhmc19sb2dwcmludCBmb3IgZGlmZmVyZW50IHV1aWRfdCBkZWZpbml0aW9uczsKCSAgdGhhbmtzIHRvIENyYWlnIFJvZHJpZ3Vlcy4KCnhmc3Byb2dzLTIuOC42ICgwNyBKdWx5IDIwMDYpCgktIEZpeGVkIHhmc19yZXBhaXIgaGFuZGxpbmcgb2YgZHVwbGljYXRlIG5hbWVzIGluIGEgZGlyZWN0b3J5LgoKeGZzcHJvZ3MtMi44LjUgKDA1IEp1bHkgMjAwNikKCS0gVXBkYXRlIHRyYW5zbGF0aW9uIE1ha2VmaWxlIHRvIHdvcmsgYmV0dGVyIHdpdGggdGhlIFVidW50dQoJICB0cmFuc2xhdGlvbiBzeXN0ZW0uICBUaGFua3MgdG8gZmVlZGJhY2sgZnJvbSBNYXJ0aW4gUGl0dC4KCS0gRml4IGFubm95aW5nICJpZ25vcmVzIGRhdGFyb290ZGlyIiB3YXJuaW5nIGZyb20gY29uZmlndXJlLgoJLSBGaXggaXNzdWVzIHdpdGggbWFrZWRlcGVuZCBidWlsZCBpbmZyYXN0cnVjdHVyZS4KCS0gQWRkIHByZWZldGNoIGNvZGUgZm9yIGltcHJvdmVkIHhmc19yZXBhaXIgcnVuIHRpbWVzLgoKeGZzcHJvZ3MtMi44LjQgKDIzIEp1bmUgMjAwNikKCS0gSW1wcm92ZSBEZWJpYW4gdWRlYiBwYWNrYWdlIGhhbmRsaW5nLCB0aGFua3MgdG8gRnJhbnMgUG9wLgoJLSBGaXggYSBzaXR1YXRpb24gd2hlcmUgeGZzX2dyb3dmcyBjYW4gZmFpbCB0byBtYXRjaCBhIGJsb2NrCgkgIGRldmljZSB0byBhIGZpbGVzeXN0ZW0gY29ycmVjdGx5OyB0aGFua3MgdG8gQmFzdGlhbiBLbGVpbmVpZGFtLgoJLSBNaW5vciBjb3JyZWN0aW9ucyB0byB0aGUgeGZzX2dyb3dmcyBtYW4gcGFnZS4KCnhmc3Byb2dzLTIuOC4zICgyMSBKdW5lIDIwMDYpCgktIEZpeCBhIHBvc3NpYmxlIHNlZ3YgaW4geGZzX2dyb3dmczsgdGhhbmtzIHRvIEJhc3RpYW4gS2xlaW5laWRhbS4KCnhmc3Byb2dzLTIuOC4yICgxNyBKdW5lIDIwMDYpCgktIE1vcmUgdXBkYXRlcyB0byByZXBhaXIvbGlieGZzIGZvciBpbXByb3ZpbmcgcGVyZm9ybWFuY2UKCS0gSW5jb3Jwb3JhdGUgbGlicnQgaW50byB0aGUgYnVpbGQgcHJvY2VzcyBmb3IgbGlvX2xpc3RpbwoJLSBNaW5vciB4ZnNfbG9ncHJpbnQgdHdlYWtzIGFuZCBmaXhlcy4KCS0gU21hbGwgdXBkYXRlcyB0byB4ZnNfaW8gbWFudWFsIHBhZ2UuCgktIFNldmVyYWwgZml4ZXMgZnJvbSBlYXJsZXIgMi44IHJlbGVhc2VzIHdpdGggcmVzcGVjdCB0bwoJICBpbm9kZS9idWZmZXIgY2FjaGUgcmVmY291bnRpbmcuCgp4ZnNwcm9ncy0yLjguMSAoMjkgTWF5IDIwMDYpCgktIEZpeCBlbmRpYW5uZXNzIGlzc3VlcyBvbiBGcmVlQlNELgoKeGZzcHJvZ3MtMi44LjAgKDE4IE1heSAyMDA2KQoJLSBJbml0aWFsIHBhc3MgYXQgdXNlciBzcGFjZSBjYWNoaW5nLCB1bHRpbWF0ZWx5IHByb3ZpZGVzCgkgIGEgc3RhcnRpbmcgcG9pbnQgZm9yIGEgZmFzdGVyLCBwYXJhbGxlbCB2ZXJzaW9uIG9mIHJlcGFpci4KCS0gRml4IHNldmVyYWwgaW5vZGUvYnVmZmVyIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZXMuCgktIEZpeCBjb21waWxlciB3YXJuaW5ncywgYW5kIGJ1aWxkcyBvbiBjZXJ0YWluIGdsaWJjIHZlcnNpb25zCgkgIGhhdmluZyBpc3N1ZXMgd2l0aCB0aGUgZGV2aWNlIG1ham9yKCkgbWFjcm8uCgktIEFkZGVkIGNvZGUgdG8geGZzX2RiIGFuZCB4ZnNfYWRtaW4gdG8gYWxsb3cgY29udmVyc2lvbgoJICBmcm9tIHZlcnNpb24gMSB0byB2ZXJzaW9uIDIgbG9ncy4KCnhmc3Byb2dzLTIuNy4xOCAoMTYgTWF5IDIwMDYpCgktIEZpeGVkIGEgY2FzZSB3aGVyZSB4ZnNfcmVwYWlyIHdhcyByZXBvcnRpbmcgYSB2YWxpZCB1c2VkCgkgIGJsb2NrIGFzIGEgZHVwbGljYXRlIGR1cmluZyBwaGFzZSA0LgoJLSBGaXhlZCBhIGNhc2Ugd2hlcmUgeGZzX3JlcGFpciBjb3VsZCBpbmNvcnJlY3RseSBmbGFnIGV4dGVudAoJICBiK3RyZWUgbm9kZXMgYXMgY29ycnVwdC4KCS0gUG9ydGFiaWxpdHkgY2hhbmdlcywgZ2V0IHhmc19yZXBhaXIgY29tcGlsaW5nIG9uIElSSVguCgktIFBhcmVudCBwb2ludGVyIHVwZGF0ZXMgaW4geGZzX2lvIGNoZWNrZXIgY29tbWFuZC4KCS0gQWxsb3cgTERGTEFHUyB0byBiZSBvdmVycmlkZGVuLCBmb3IgR2VudG9vIHB1bnRlcnMuCgp4ZnNwcm9ncy0yLjcuMTcgKDA1IEFwcmlsIDIwMDYpCgktIEZpeCBsaWJ4ZnMgYWNjZXNzKDIpIGNoZWNrIG9uIC9wcm9jL21vdW50cywgd2hpY2ggd2FzCgkgIGNhdXNpbmcgaXNzdWVzIHdoZW4geGZzX2NoZWNrL3hmc19yZXBhaXIgcnVuIG9uIHJlYWRvbmx5CgkgIHJvb3QgZmlsZXN5c3RlbSBtb3VudHMuCgktIEZpeCBEZWJpYW4gcGFja2FnaW5nIGZvciBsaWJjLWRldiBidWlsZCBkZXBlbmRlbmN5LgoJLSBGaXggdXAgYXV0byBsaWI2NCBpbnN0YWxsIGRldGVjdGlvbiBmb3IgeDg2XzY0IHBsYXRmb3Jtcy4KCnhmc3Byb2dzLTIuNy4xNiAoMjIgTWFyY2ggMjAwNikKCS0gRml4IGZyZWVzcGFjZSBhY2NvdW50aW5nIGluIHhmc19xdW90YSg4KSBkZiBjb21tYW5kLgoJLSBGaXggYSB0eXBvIG9uIHRoZSB4ZnNfcXVvdGEoOCkgbWFuIHBhZ2UuCgktIE1ha2UgLU8yIChjYyBvcHRpbWlzYXRpb24gbGV2ZWwpIHRoZSBkZWZhdWx0LgoKeGZzcHJvZ3MtMi43LjE1ICgwMyBNYXJjaCAyMDA2KQoJLSBGaXggdGhlIHdheSBleHRlcm5hbCBsb2cvcmVhbHRpbWUgZGV2aWNlcyB3ZXJlIGhhbmRsZWQgaW4KCSAgdXNlcnNwYWNlIHdpdGggb2xkZXIga2VybmVscyAoc3VidGVseSBkaWZmZXJlbnQgaW4gcHJvY2ZzKQoJLSBGaXggYSBjb3JydXB0aW9uIHByb2JsZW0gaW4geGZzX2NvcHkoOCkgd2hlbiBhdHRlbXB0aW5nIHRvCgkgIHplcm8gdGhlIChvbGQpIGxvZywgYSBzZWN0aW9uIHdhcyBzb21ldGltZXMgbWlzc2VkIChkZXBlbmRzCgkgIG9uIGxvZyBhbmQgSS9PIGJ1ZmZlciAobWlzKWFsaWdubWVudCkuCgp4ZnNwcm9ncy0yLjcuMTQgKDE1IEZlYnJ1YXJ5IDIwMDYpCgktIERlYmlhbiBwYWNrYWdpbmcgdXBkYXRlcyAoZGVibWFrZSBvdXQsIGRlYmhlbHBlciBpbikuCgktIEZpeCBhIGhlYWRlciB0byB3b3JrIHdpdGggYWRkaXRpb25hbCBjb21waWxlciB2YXJpYW50cy4KCnhmc3Byb2dzLTIuNy4xMyAoMDggRmVicnVhcnkgMjAwNikKCS0gQ29udmVydCBmc2NrIGludG8gYSBzaGVsbCBzY3JpcHQgYW5kIG1ha2UgaXQgcHJvdmlkZSBhCgkgIGhpbnQgdG8gcnVuIHJlcGFpci9jaGVjayAoaW4gbm9uLWF1dG8gZnNjayBtb2RlcykuCgkgIFRoYW5rcyB0byBNYXJpYW4gSmFuY2FyIDxtamFuY2FyQHN1c2UuY3o+IGZvciB0aGlzLgoJLSBGaXggY29tcGlsYXRpb24gYm90Y2ggb24gbm9uLUxpbnV4IHBsYXRmb3JtcyAoZHVwbGljYXRlCgkgIHR5cGUgZGVmaW5pdGlvbnMpLgoKeGZzcHJvZ3MtMi43LjEyICgzMSBKYW51YXJ5IDIwMDYpCgktIEFkZGVkIGluaXRpYWwgUG9saXNoIHRyYW5zbGF0aW9uLgoJICBUaGFua3MgdG8gSmFrdWIgQm9ndXN6IDxxYm9vc2hAcGxkLWxpbnV4Lm9yZz4gZm9yIHRoaXMuCgktIEZpeGVkIHJwbSBzcGVjZmlsZSB3aXRoIHJlc3BlY3QgdG8gSU5TVEFMTF97VVNFUixHUk9VUH0uCgp4ZnNwcm9ncy0yLjcuMTEgKDE2IEphbnVhcnkgMjAwNikKCS0gRml4IGEgcHJvYmxlbSB3aXRoIHRoZSBnZW5lcmF0ZWQgc291cmNlIHRhcmJhbGxzIGFuZCBhCgkgIG1pc3NpbmcgcGFyZW50LmggaGVhZGVyIGZpbGUuCgp4ZnNwcm9ncy0yLjcuMTAgKDE2IERlY2VtYmVyIDIwMDUpCgktIE1ha2UgeGZzX2RiIGtlZXAgdHJ5aW5nIHdoZW4gcm9vdCBpbm9kZSBjYW4ndCBiZSByZWFkLgoJLSBNYWtlIHhmc19kYiBjaGVjayBBR0YgQk5PIGFuZCBDTlQgYnRyZWUgY29uc2lzdGVuY3kuCgktIFR3ZWFrIGEgY291cGxlIG9mIGxpYnhmcyBoZWFkZXJzIHNvIHRoZXkgY2FuIGJlIHVzZWQgYnkKCSAgQysrIHByb2dyYW1zIChyZW1vdmVzIG5lc3RlZCBzdHJ1Y3QgZGVjbGFyYXRpb25zLCB3aGljaAoJICBhcmUgdXNlZCBvdXRzaWRlIHRoZSBzY29wZSB0aGV5J3JlIGRlY2xhcmVkIGluKS4KCS0gRml4IGEgcm91bmRpbmcgaXNzdWUgaW4geGZzX3F1b3RhIHRpbWUgcmVwb3J0aW5nLCBtYWtpbmcKCSAgaXQgbW9yZSBjb25zaXN0ZW50IHdpdGggdGhlIHN0YW5kYXJkIHF1b3RhIHV0aWxpdGllcy4KCS0gRml4IGRvcGV5IGxpYnhmcyBtZXNzYWdlICJVbm1vdW50IGFuZCBydW4geGZzX3JlcGFpci4iLAoJICBlc3BlY2lhbGx5IGFubm95aW5nIHdoZW4gcHJpbnRlZCBieSB4ZnNfcmVwYWlyIGl0c2VsZi4KCS0gRml4IGEgZGlyMiB4ZnNfcmVwYWlyIGJ1ZywgbWlzZGlhZ25vc2luZyBhIHZhbGlkIGRpciBhcwoJICBjb3JydXB0LiAgVGhhbmtzIHRvIE1hc2Fub3JpIFRzdWRhLgoKeGZzcHJvZ3MtMi43LjkgKDA4IERlY2VtYmVyIDIwMDUpCgktIEZpeCB0aGlua28gaW4gbGlieGNtZCBjdnRudW0gcm91dGluZQoJLSBGaXggRUZJL0VGRCBwcmludGluZyBpbiB4ZnNfbG9ncHJpbnQKCnhmc3Byb2dzLTIuNy44ICgwNSBEZWNlbWJlciAyMDA1KQoJLSBFeHRlbmQgeGZzX2lvIHRvIGRvIGFsaWduZWQgZGlyZWN0IElPIGF1dG9tYXRpY2FsbHkKCS0gUmVwb3J0IGRpcmVjdCBJTyBwYXJhbWV0ZXJzIChkaW9pbmZvKSBpbiB4ZnNfaW8KCS0gTWFrZSB4ZnNfbWtmaWxlIGEgc2hlbGwgc2NyaXB0IHdyYXBwZXIgYXJvdW5kIHhmc19pbwoKeGZzcHJvZ3MtMi43LjcgKDE2IE5vdmVtYmVyIDIwMDUpCgktIEZpeCBzb21lIGdjYyBjb21waWxlciB3YXJuaW5ncyBvbiA2NCBiaXQgcGxhdGZvcm1zLgoJLSBSZW1vdmUgbGFzdCByZWZlcmVuY2UgdG8gYSA8bGludXgvKi5oPiAoa2VybmVsKSBoZWFkZXIuCgktIFVwZGF0ZWQgYWNsb2NhbC5tNAoJLSBGaXggYSBidWcgaW4geGZzX2lvIGxzcHJvai9jaHByb2ogcmVjdXJzaXZlIG1vZGVzLgoJLSBBZGQgeGZzX2lvIHJlY3Vyc2l2ZSBtb2RlcyBmb3IgdGhlIGV4dHNpemUgY29tbWFuZC4KCS0gQWRkIHhmc19kYiB2ZXJzaW9uIGNvbW1hbmQgbW9kZXMgZm9yIGF0dHIxIGFuZCBhdHRyMi4KCnhmc3Byb2dzLTIuNy42ICgzMSBPY3RvYmVyIDIwMDUpCgktIEFkZCBzdXBwb3J0IGZvciB0aGUgaW5vZGUgZXh0ZW50IHNpemUgaGludCBmb3IgdGhlIHJlZ3VsYXIKCSAgZGF0YSBkZXZpY2UgKHByZXZpb3VzbHkgd2FzIHJlYWx0aW1lIG9ubHkpLCBhbmQgYWxsb3cgdGhlCgkgIG9wdGlvbmFsIGluaGVyaXRhbmNlIG9mIHRoaXMgcHJvcGVydHkuCgktIEFkZCBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIHJlYWQvd3JpdGUgcGF0dGVybnMgaW4geGZzX2lvCgkgIChyZXZlcnNlIGFuZCByYW5kb20sIGluIGFkZGl0aW9uIHRvIHNlcXVlbnRpYWwgZm9yd2FyZHMpLgoJLSBBZGQgc29tZSBta2ZzIGRlYnVnZ2luZyBvcHRpb25zIHRvIGFpZCB0ZXN0aW5nIGluaGVyaXRhbmNlCgkgIG9mIHJlYWx0aW1lLCBwcm9qZWN0IElELCBhbmQgZXh0c2l6ZSBpbm9kZSBhdHRyaWJ1dGVzLgoJLSBBZGQgbWtmcyBvcHRpb24gZm9yIGZvcmNpbmcgdXNlIG9mIEFUVFIyLCBhbmQgbWFrZSBncm93ZnMKCSAgcmVwb3J0IGl0cyB1c2UuCgktIEZpeCB1c2Ugb2YgY3Vyc29yIGluIGF0dHJfbGlzdF9ieV9oYW5kbGUoKSBsaWJoYW5kbGUgY29kZS4KCS0gRml4IHNldmVyYWwgY29tcGlsZXIgd2FybmluZ3Mgd2hlbiBidWlsZGluZyBvbiBJUklYLgoKeGZzcHJvZ3MtMi43LjUgKDI2IE9jdG9iZXIgMjAwNSkKCS0gRml4IGFuIGVuZGlhbiBidWcgaW4geGZzX2RiICJmcmFnIiBjb21tYW5kLgoJLSBGaXggc29tZSBlcnJvcnMgb24gdGhlIHhmc19xdW90YSg4KSBtYW4gcGFnZS4KCnhmc3Byb2dzLTIuNy40ICgwOCBPY3RvYmVyIDIwMDUpCgktIEZpeCByZWFkIGFuZCB3cml0ZSBjYWxscyBpbiB4ZnNfaW8gdG8gYWxsb3cgYnVmZmVycyBsYXJnZXIKCSAgdGhhbiA0R2lCIG9uIDY0IGJpdCBwbGF0Zm9ybXMuCgktIEZyZWVCU0QgYnVpbGQgdHdlYWtzIGZyb20gQ3JhaWcgUm9kcmlndWVzLgoJLSBGaXhlZCBhIGZldyBtaW5vciBjb21waWxlciB3YXJuaW5ncy4KCnhmc3Byb2dzLTIuNy4zICgyOSBTZXB0ZW1iZXIgMjAwNSkKCS0gRml4IHhmc19yZXBhaXIgaGFuZGxpbmcgb2YgdGhlIG1vcmViaXRzIGJpdC4KCS0gTWVyZ2UgYmFjayBzZXZlcmFsIGtlcm5lbCBjaGFuZ2VzIHJlbGF0ZWQgdG8gYXR0cjIuCgktIEV4dGVuZGVkIHhmc19kYiBleHBlcnQgbW9kZSBjb21tYW5kcwoJLSBDbGVhbiB1cCBzb21lIGZzeGF0dHIgdXNlcyB0byByZWR1Y2UgbnVtYmVyIG9mIHN5c2NhbGxzLAoJICBub3cgdGhhdCBJUklYIGFsc28gc3VwcG9ydHMgcHJvamVjdCBpZGVudGlmaWVycyB2aWEgdGhpcwoJICBpbnRlcmZhY2UuCgp4ZnNwcm9ncy0yLjcuMiAoMjggU2VwdGVtYmVyIDIwMDUpCgktIEZpeCB1cCB4ZnNfcmVwYWlyIHNlZ21lbnRhdGlvbiBmYXVsdCBkdWUgdG8gd3JvbmcgYWxsb2NhdGlvbgoJICBzaXplLgoKeGZzcHJvZ3MtMi43LjEgKDIwIFNlcHRlbWJlciAyMDA1KQoJLSBGaXggdXAgcmVwb3J0aW5nIG9mIGRldmljZXMgaW4geGZzX2dyb3dmcyAtIG5vdyB1c2VzCgkgIC9wcm9jL21vdW50cyBpbiBwcmVmZXJlbmNlIHRvIC9ldGMvbXRhYi4KCS0gRml4IGEgc3RydG9rLXJlbGF0ZWQgYnVnIGluIHRoZSBleHRyYWN0aW9uIG9mIGRldmljZSBuYW1lcywKCSAgYWxzbyBvbmx5IGFmZmVjdGluZyB4ZnNfZ3Jvd2ZzLgoKeGZzcHJvZ3MtMi43LjAgKDE2IFNlcHRlbWJlciAyMDA1KQoJLSBTdXBwb3J0IGZvciB1cGRhdGVkIGV4dGVuZGVkIGF0dHJpYnV0ZXMgZm9ybWF0IChhdHRyMikKCS0gTWFrZSB4ZnNfcXVvdGEgdG9vbCBpc3N1ZSBhIHF1b3RhIHN5bmMgaW4gYWxsIHRoZSBuZWVkZWQKCSAgcGxhY2VzLCBiZWZvcmUgcmVwb3J0aW5nLCB0byBjb3VudGVyIGFmZmVjdHMgb2YgZGVsYXllZAoJICBhbGxvY2F0aW9uLgoJLSBRdW90YS1yZWxhdGVkIElEIHNpZ25lZG5lc3MgaXNzdWUgZml4ZXMuCgktIEV4cGVydCBtb2RlIHhmc19kYiBjb21tYW5kcyB0byBzZXQvcmVtb3ZlIGF0dHJpYnV0ZXMuCgp4ZnNwcm9ncy0yLjYuMzcgKDExIEF1Z3VzdCAyMDA1KQoJLSBGaXggRnJlZUJTRCBidWlsZHMgKGdldG1udGluZm8pLCB0aGFua3MgdG8gQ3JhaWcgUm9kcmlndWVzLgoKeGZzcHJvZ3MtMi42LjM2ICgyOCBKdWx5IDIwMDUpCgktIEZpeCBta2ZzIHN0cmlwZSB1bml0IGFsaWdubWVudCBjaGVja3MgZm9yIGV4dGVybmFsIGxvZ3MKCS0gRml4IHJ1bm5pbmcgeGZzX2RiIG9uIG5vbi1YRlMgZGV2aWNlcyAod2FzIHNlZ2ZhdWx0aW5nKQoJLSBGaXggYSAzMiBiaXQgd3JhcCBpbiB4ZnNfcmVwYWlyIHNlYXJjaGluZyBmb3Igc2Vjb25kYXJ5CgkgIHN1cGVyYmxvY2tzLgoKeGZzcHJvZ3MtMi42LjM1ICgwMSBKdWx5IDIwMDUpCgktIEFkZCBiYWNrIGZkX3RvX2hhbmRsZSgpIHRvIGxpYmhhbmRsZS4KCS0gQWRkIGhhbmRsZSBjYWxsIG1hcHBpbmdzIHRvIHhmc2N0bCgpIGZvciBJUklYLgoKeGZzcHJvZ3MtMi42LjM0ICgyMCBKdW5lIDIwMDUpCgktIFN3aXRjaCB0byB0aGUgZnN4YXR0ciB4ZnNjdGwgZm9yIGdldHRpbmcvc2V0dGluZyBwcm9qZWN0CgkgIGlkZW50aWZpZXJzIG9uIGlub2RlcywgcmVtb3ZlIHRoZSBzaG9ydC1saXZlZCBzcGVjaWFsaXNlZAoJICBpb2N0bHMgZm9yIGRvaW5nIHRoaXMuCgktIE1ha2UgdGhlICJibG9ja3RyYXNoIiB4ZnNfZGIgY29tbWFuZCBhdmFpbGFibGUgaW4gZXhwZXJ0LQoJICBtb2RlIG9ubHkuCgp4ZnNwcm9ncy0yLjYuMzMgKDEzIEp1bmUgMjAwNSkKCS0gQW5vdGhlciBsaWJoYW5kbGUgZml4IG9uIDY0Yml0LCBCaWcgRW5kaWFuIHN5c3RlbXMuCgp4ZnNwcm9ncy0yLjYuMzIgKDA4IEp1bmUgMjAwNSkKCS0gTWlub3IgZW5kaWFuIGNsZWFudXBzIGluIHNvbWUgdG9vbHMuCgktIEZpeCBhIGNvdXBsZSBvZiB4ZnNfcXVvdGEgZG91YmxlLXJlcG9ydGluZyBpc3N1ZXMgd2hlbgoJICBpc3N1aW5nIGNvbW1hbmRzIHZpYSB0aGUgLWMgKGNvbW1hbmQgbGluZSkgMG9wdGlvbi4KCnhmc3Byb2dzLTIuNi4zMSAoMDYgSnVuZSAyMDA1KQoJLSBGaXggcHJldmlvdXMgTUQgZHJpdmVyLXNwZWNpZmljIGNoYW5nZSB0byBjb3JyZWN0bHkgaGFuZGxlCgkgIChpLmUuIG5vdCAic3RyaXBlIGFsaWduIikgbGluZWFyIGFycmF5cy4KCS0gQWRkIE1EIFJBSUQgbGV2ZWwgNCwgNiwgYW5kIDEwIHN1cHBvcnQuCgktIE1ha2UgbWtmcy54ZnMgYXV0b21hdGljYWxseSBhZGppdXN0IHRoZSBnZW9tZXRyeSB0byB1c2UKCSAgYSBzZWN0b3Igc2l6ZSB0aGF0IG1hdGNoZXMgdGhlIGJsb2NrIHNpemUgd2hlbiBNRCBSQUlECgkgIGxldmVsIDQvNS82IGFyZSBpbiB1c2UuCgktIENvdXBsZSBvZiBtaW5vciBtYW4gcGFnZSBmaXh1cHMsIGluY2x1ZGluZyBwYXRjaCBib3RjaCBvbgoJICBpbml0aWFsIHJldmlzaW9uIG9mIHhmc19xdW90YSg4KS4KCnhmc3Byb2dzLTIuNi4zMCAoMDMgSnVuZSAyMDA1KQoJLSBBZGQgeGZzX3F1b3RhKDgpIGNvbW1hbmQgd2hpY2gga25vd3MgaG93IHRvIGRvIGFsbCB0aGluZ3MKCSAgcXVvdGEgcmVsYXRlZCwgYW5kIGNhbiBhbHNvIGRvIHRoZSBYRlMgc3BlY2lmaWMgZXh0ZW5zaW9ucwoJICBsaWtlIHByb2plY3QgcXVvdGEsIHJlYWx0aW1lIGRldmljZSBxdW90YSwgZXRjLgoJLSBDcmVhdGVkIGEgbGlicmFyeSBvZiBjb21tb24gY29kZSAobGlieGNtZC5hKSBzaGFyZWQgYnkKCSAgeGZzX2dyb3dmcywgeGZzX2lvIGFuZCB4ZnNfcXVvdGEuCgktIEZpeCB1c2Ugb2YgcmVndWxhciBmaWxlcyBmb3IgcmVhbHRpbWUgc3Vidm9sdW1lcyAoZGVidWdnaW5nCgkgIG9ubHksIHJlYWxseSkuCgktIEZpeCBidWcgaW4geGZzX2lvIGNvbW1hbmQgbGluZSBvcHRpb24gaGFuZGxpbmcgd2hlbiBjb21tYW5kcwoJICB3aGVyZSBzcGVjaWZpZWQgZm9yIG11bHRpcGxlIGZpbGVzIGF0IG9uY2UuCgktIEFsbG93IHhmc19pbyB0byBzcGVjaWZ5IE9fTk9OQkxPQ0sgZm9yIHJlZ3VsYXIgZmlsZSBJTy4KCS0gRml4IE1EIGRyaXZlci1zcGVjaWZpYyBjb2RlIHRvIG5vdCBhdHRlbXB0IHN0cmlwZSBhbGlnbm1lbnQKCSAgZm9yIHZvbHVtZXMgdGhhdCBhcmUgbm90IHN0cmlwZXMgKGUuZy4gY29uY2F0L21pcnJvcikuCgp4ZnNwcm9ncy0yLjYuMjkgKDE5IEFwcmlsIDIwMDUpCgktIEZpeCBta2ZzLnhmcyAtZGZpbGUuCgktIEZpeCBsaWJoYW5kbGUgb24gNjRiaXQsIEJpZyBFbmRpYW4gc3lzdGVtcy4KCnhmc3Byb2dzLTIuNi4yOCAoMzAgTWFyY2ggMjAwNSkKCS0gRml4IGNvbXBpbGVyIHdhcm5pbmcgaW4gcmVwYWlyL2Rpci5jIHNpemUgY2hlY2tzLgoJLSBGaXggbW9yZSBjb21waWxhdGlvbiBwcm9ibGVtIHdpdGggdmVyc2lvbiA0IG9mIGdjYwoJICAodGhhbmtzIHRvIEFuZHJlYXMgSm9jaGVucykuCgktIE1ha2UgeGZzX2RiIGFuZCB4ZnNfcmVwYWlyIGNvcGUgd2l0aCBmaWxlc3lzdGVtcyB0aGF0CgkgIGhhdmUgcHJvamVjdCBxdW90YSBlbmFibGVkLgoKeGZzcHJvZ3MtMi42LjI3ICgyMyBNYXJjaCAyMDA1KQoJLSBGaXggZGVmYXVsdCBta2ZzIGFsbG9jYXRpb24gZ3JvdXAgc2l6ZSBjYWxjdWxhdGlvbnMKCSAgZm9yIGZpbGVzeXN0ZW0gc2l6ZXMgaW4gdGhlIHJhbmdlIDMyIC0gNjQgdGVyYWJ5dGVzLgoJLSBBZGQgbm9hbGlnbiBta2ZzIHN1Ym9wdGlvbnMgZm9yIC1kLy1yIHRvIGRpc2FibGUgdGhlCgkgIHN1bml0L3N3aWR0aCBhdXRvLWFsaWdubWVudCAoYmFzZWQgb24gbG9naWNhbCB2b2x1bWUKCSAgZ2VvbWV0cnksIGV4dHJhY3RlZCBmcm9tIHRoZSBkcml2ZXIpLgoKeGZzcHJvZ3MtMi42LjI2ICgwOCBNYXJjaCAyMDA1KQoJLSBGaXggY29tcGlsYXRpb24gcHJvYmxlbSB3aXRoIHZlcnNpb24gNCBvZiBnY2MKCSAgKHRoYW5rcyB0byBBbmRyZWFzIEpvY2hlbnMpLgoJLSBBZGRlZCBhIHN0cmVhbWxpbmVkIDx4ZnMveGZzLmg+IGZvciBwcm9ncmFtcyB3YW50aW5nCgkgIHRvIG1ha2UgdXNlIG9mIHRoZSBYRlMtc3BlY2lmaWMga2VybmVsIGludGVyZmFjZXMgKHRvCgkgIGFkZHJlc3MgY29tcGxhaW50cyB0aGF0IDx4ZnMvbGlieGZzLmg+IHdhcyAiaGVhdnkiKS4KCS0gQWRkIGltYXAgYXMgYW4gZXhwZXJ0IGNvbW1hbmQgaW4geGZzX2lvLCBtYWtpbmcgaXQKCSAgbW9yZSBlYXNpbHkgYWNjZXNzaWJsZSB0byB0aG9zZSB3aG8gbmVlZCBpdC4KCS0gRXh0ZW5kZWQgc3RhdGlzdGljcyByZXBvcnRpbmcgZm9yIHhmc19pbyBjb21tYW5kLgoJLSBGaXhlZCByZWFkbGluZSBzdXBwb3J0IGZvciBjdXJyZW50IGRpc3RyaWJ1dGlvbnMuCgktIEFkZCBhbiAtLWVuYWJsZS10ZXJtY2FwPVt5ZXMvbm9dIGNvbmZpZ3VyZSBvcHRpb24sCgkgIGFuZCBjaGFuZ2VkIC0tZW5hYmxlLXJlYWRsaW5lPVt5ZXMvbm9dIHRvIG5vdCBmb3JjZQoJICBsaW5raW5nIHdpdGggbGlidGVybWNhcC4gIEJ1aWxkcyBvbiBzb21lIHBsYXRmb3JtcwoJICBtYXkgbmVlZCB0byB1c2UgYm90aCBvcHRpb25zLCBidXQgbW9zdCBkaXN0cmlidXRpb25zCgkgIGRvIG5vdCByZXF1aXJlIC0tZW5hYmxlLXRlcm1jYXAgd2hlbiBsaW5raW5nIGFnYWluc3QKCSAgbGlicmVhZGxpbmUuCgktIE1pbm9yIG1hbiBwYWdlIHVwZGF0ZXMuCgp4ZnNwcm9ncy0yLjYuMjUgKDA4IE9jdG9iZXIgMjAwNCkKCS0gRml4IGJ1aWxkIHdpdGggcmVhbGx5IG9sZCBnbGliYyB2ZXJzaW9ucy4KCnhmc3Byb2dzLTIuNi4yNCAoMjkgU2VwdGVtYmVyIDIwMDQpCgktIEFsbG93ICdlJyBzdWZmaXggaW4gc2l6ZSBhcmd1bWVudHMgdG8gbWtmcy4KCS0gVXBkYXRlIG1rZnMgbWFuIHBhZ2UgZGVzY3JpcHRpb24gb2YgbWF4aW11bSBhbGxvY2F0aW9uCgkgIGdyb3VwIHNpemUuCgktIFVwZGF0ZSBta2ZzIGFuZCB4ZnNfZGIgbWFuIHBhZ2VzIHRvIHVzZSBjb25zaXN0ZW50LAoJICBzdGFuZGFyZCBub3RhdGlvbnMuCgktIFN5bmMgdXAgdXNlci9rZXJuZWwgc291cmNlIGluIGxpYnhmcyBhbmQgaGVhZGVycy4KCnhmc3Byb2dzLTIuNi4yMyAoMTcgU2VwdGVtYmVyIDIwMDQpCgktIEZpeCB4ZnNfaW8gcHJlYWQvcHdyaXRlIC1iIG9wdGlvbiwgd2hlbiB1c2VkIG1vcmUgdGhhbgoJICBvbmNlIHdlIHdvdWxkIHVzZSB0aGUgbGFyZ2VzdCBvZiB0aGUgcHJldmlvdXMgdmFsdWVzLAoJICBpbnN0ZWFkIG9mIHRoZSAocG9zc2libHkgc21hbGxlcikgdmFsdWUgc3BlY2lmaWVkLgoJLSBBZGQgcmVjdXJzaXZlIG1vZGVzIHRvIGxzYXR0ci9jaGF0dHIgeGZzX2lvIGNvbW1hbmRzLgoJLSBNYWtlIHhmc19pbyBydW4gYW55IGdpdmVuIGNvbW1hbmQgbGluZSBjb21tYW5kcyAoLWMpCgkgIG9uIGFsbCBmaWxlcyBzcGVjaWZpZWQsIG5vdCBqdXN0IHRoZSBmaXJzdC4KCnhmc3Byb2dzLTIuNi4yMiAoMTAgU2VwdGVtYmVyIDIwMDQpCgktIFVwZGF0ZSB4ZnNfaW8gdG8gZ2V0IGEgY2xlYW4gY29tcGlsZSBvbiBJUklYIHdpdGggdGhlCgkgIE1JUFNQcm8gY29tcGlsZXJzLgoJLSBBZGQgZG9jdW1lbnRhdGlvbiBhYm91dCBhZGRpdGlvbmFsIFhGUyBpbm9kZSBmbGFncy4KCS0gQWRkIHhmc19pbyB3cml0ZSBvcHRpb25zIHRvIGluY2x1ZGUgZnN5bmMvZmRhdGFzeW5jCgkgIGluIHRoZSB0aW1pbmcgcmVzdWx0cyBpdCBkaXNwbGF5cy4KCS0gQWRkIHhmc19mc29wX2NvdW50cyBvdXRwdXQgdG8gdGhlIHhmc19pbyBzdGF0ZnMgZGF0YSwKCSAgd2hpY2ggYWxzbyBzaG93cyBmcmVlIHJlYWx0aW1lIHNwYWNlLCBldGMuCgktIEFkZCBrbm93bGVkZ2Ugb2YgYWRkaXRpb25hbCBpbm9kZSBmbGFncyBmb3Igbm9zeW1saW5rcwoJICBhbmQgcHJvamVjdCBJRCBpbmhlcml0YW5jZS4KCnhmc3Byb2dzLTIuNi4yMSAoMDkgQXVndXN0IDIwMDQpCgktIFN1cHBvcnQgcmVhbHRpbWUgYml0IGluaGVyaXRhbmNlIG9uIGRpcmVjdG9yaWVzLgoJLSBGaXggeGZzX2lvIGJ1aWxkIHdpdGggdW51c3VhbCAob2xkKSBnbGliYyB2ZXJzaW9ucy4KCS0gRml4IHRvb2xzIHRvIG5vdCBpc3N1ZSB0aGUgQkxLRkxTQlVGIGlvY3RsIHRvIHJhbWRpc2sKCSAgZGV2aWNlcy4gIFRoYW5rcyB0byBCbyBZYW5nIGZvciB0aGlzIGZpeC4KCnhmc3Byb2dzLTIuNi4yMCAoMjggSnVseSAyMDA0KQoJLSBGaXggYSBzZWdmYXVsdCBvbiB4ZnNfaW8gb3BlbiBlcnJvciBwYXRoIGZvciBub24tWEZTCgkgIGZpbGVzLiAgVGhhbmtzIHRvIFN0ZWluYXIgSC4gR3VuZGVyc29uIGZvciB0aGlzIGZpeC4KCnhmc3Byb2dzLTIuNi4xOSAoMTYgSnVseSAyMDA0KQoJLSBGaXggdHdvIGJ5dGUgY291bnQgc2l6ZSB3cmFwcyBpbiB4ZnNfY29weS4KCS0gTWlub3IgbWFuIHBhZ2UgZml4ZXMgZnJvbSBFcmljIFJheW1vbmQuCgp4ZnNwcm9ncy0yLjYuMTggKDIzIEp1bmUgMjAwNCkKCS0gRml4IGxpYmhhbmRsZSBmcm9tIHBvc3NpYmx5IHJldHVybmluZyBhbiBpbnZhbGlkCgkgIGhhbmRsZSBsZW5ndGggb24gc3lzdGVtcyB3aGVyZSBzaXplX3QgaXMgNjQgYml0cy4KCS0gTWlub3IgYXV0b2NvbmYgZml4dXBzIHRvIGdldCBycG0gdGVzdCB3b3JraW5nIG9uCgkgIGFsbCBwbGF0Zm9ybXMgYWdhaW4uCgktIE1pbm9yIG1hbiBwYWdlIHVwZGF0ZXMgZml4aW5nIG1pbnVzL2h5cGhlbiB1c2FnZS4KCnhmc3Byb2dzLTIuNi4xNyAoMjMgSnVuZSAyMDA0KQoJLSBGaXggdXNlIG9mIGlzc2V0IG1hY3JvLCBnZXR0aW5nIHJlYWx0aW1lIGRldmljZXMgdG8KCSAgZnVuY3Rpb24gY29ycmVjdGx5IGluIHhmc19kYiBhbmQgeGZzX3JlcGFpci4KCS0gRml4IGluaXRpYWxpc2F0aW9uIG9mIHJlYWx0aW1lIGRldmljZXMgaW4gbGlieGZzLgoKeGZzcHJvZ3MtMi42LjE2ICgxNyBKdW5lIDIwMDQpCgktIEFkZCBzZW5kZmlsZSBjb21tYW5kIGludG8geGZzX2lvKDgpIHRvIGV4ZXJjaXNlIHRoYXQKCSAgZnVuY3Rpb25hbGl0eS4KCS0gUmVtb3ZlIG1heHRycmVzIHByb2dyYW0gdGhhdCB3YXMgdXNlZCBpbiB0aGUgYnVpbGQKCSAgdG8gZ2VuZXJhdGUgYSBoZWFkZXIgZm9yIG1rZnMnIGNvbnN1bXB0aW9uLgoJLSBUaGlzIGFsbG93cyBjcm9zcy1jb21waWxlcyB0byBiZSBncmVhdGx5IHNpbXBsaWZpZWQuCgktIFBvcnRhYmlsaXR5IHR3ZWFrcyBmb3IgYnVpbGRpbmcgb24gb3RoZXIgcGxhdGZvcm1zLgoJLSBGaXggb2JzY3VyZSBidWcgaW4gbG9nIHNpemUgbG93ZXIgYm91bmRhcnkgY2hlY2tzIGZvcgoJICBhdXRvLXNpemVkIGxvZ3Mgd2hlbiBzdHJpcGUgYWxpZ25tZW50IGlzIGluIGVmZmVjdDsKCSAgdGhlIGVuZm9yY2VkIGxvd2VyIGJvdW5kIGNvdWxkIGhhdmUgYmVlbiBzZXQgdG9vIGxvdy4KCnhmc3Byb2dzLTIuNi4xNSAoMDkgSnVuZSAyMDA0KQoJLSBNYWtlIHhmc19jaGVjayB0ZXN0IGZvciBhIGRpcnR5IGxvZyBiZWZvcmUgcHJvY2VlZGluZyB0bwoJICBjaGVjayB0aGUgZmlsZXN5c3RlbS4KCS0gRml4IGNvdXBsZSBvZiBtaW5vciBidWdzIGluIHhmc19pbyAocmVhZG9ubHkgaGFuZGxpbmcgb24KCSAgd3JpdGVzLCBvZmYtYnktb25lIGVycm9yIGluIG9wZW4gZmlsZSBlcnJvciByZXBvcnRpbmcpLgoKeGZzcHJvZ3MtMi42LjE0ICgxMyBNYXkgMjAwNCkKCS0gQWxsb3cgbG9ncHJpbnQgdG8gY29weSBhIGxvZyB0byBhIGZpbGUgKC1DKSBhbmQgdG8gZHVtcAoJICBhIGxvZyBmcm9tIGJlZ2lubmluZyB0byBlbmQgc2hvd2luZyBvbmRpc2sgbG9nIHJlY29yZCAoLWQpLgoJLSBGaXggbG9ncHJpbnQgaGFuZGxpbmcgb2YgLWYgb3B0aW9uIC0gc2hvdWxkbid0IGJlIGRvaW5nCgkgIHRoZSBVVUlEIGNoZWNrIGluIHRoYXQgY2FzZSwgc2luY2Ugd2UgZG9uJ3QgaGF2ZSB0aGUgU0IuCgktIFJlbW92ZSBNRCBkZXZpY2Ugc3VwZXJibG9jayAiY2xlYW4iIGNoZWNrLCBmb2xsb3dpbmcgTmVpbAoJICBCcm93bidzIGFkdmljZS4KCS0gU21hbGwgRGViaWFuIHBhY2thZ2luZyB0d2VhayB0byBzYXkgeGZzcHJvZ3MgaGFzIGFuIGZzY2suCgp4ZnNwcm9ncy0yLjYuMTMgKDAzIE1heSAyMDA0KQoJLSBaZXJvIG91dCBtb3JlIGF0IGJlZ2lubmluZyBhbmQgZW5kIG9mIGRldmljZSBhdCBta2ZzIHRpbWUKCSAgKGdldCBhbGwgb2xkIE1EIHN1cGVyYmxvY2tzIGF0IHRoZSBlbmQsIGZvciBtb3VudCBieSBsYWJlbCkuCgp4ZnNwcm9ncy0yLjYuMTIgKDMwIEFwcmlsIDIwMDQpCgktIEV4dHJhY3Qgc3RyaXBlIHVuaXQvd2lkdGggZnJvbSBkZXZpY2UgbWFwcGVyIGRldmljZXMKCSAgKGFkZGVkIGxpYmRpc2sgaW5mcmFzdHJ1Y3R1cmUsIHVzZWQgYnkgbWtmcy54ZnMpLgoJLSBGaXggcm91bmRpbmcgaW4geGZzX2lvKDgpIGJ5dGVzIHJlYWQvd3JpdHRlbiBvdXRwdXQuCgktIFN5bmMgdXAgdXNlci9rZXJuZWwgc291cmNlIGluIGxpYnhmcyBhbmQgaGVhZGVycy4KCS0gRml4IGNvbXBpbGVyIHdhcm5pbmdzIG9uIDY0IGJpdCBwbGF0Zm9ybXMuCgktIFVwZGF0ZSBpMThuIG1lc3NhZ2UgY2F0YWxvZy4KCnhmc3Byb2dzLTIuNi4xMSAoMTUgQXByaWwgMjAwNCkKCS0gRml4IGZpbGUgZGVzY3JpcHRvciBsZWFrIGluIHBhdGhfdG9fZnNoYW5kbGUuIEEgZmlsZQoJICB3YXMgYmVpbmcgb3BlbmVkIGJ1dCBuZXZlciBjbG9zZWQsIHJlZ2FyZGxlc3Mgb2YKCSAgd2hldGhlciB0aGF0IGRlc2NyaXB0b3Igd2FzIGJlaW5nIGNhY2hlZC4gTm93IGNsb3NlCgkgIHRoZSBmaWxlIG9uIGVycm9yIG9yIGlmIGl0IGlzIG5vdCBiZWluZyBjYWNoZWQuCgktIEZpeCB4ZnNfcmVwYWlyIGhhbmRsaW5nIG9mIGEgY29ycnVwdCB2MiBkaXJlY3Rvcnkgd2l0aAoJICBtdWx0aXBsZSBlbnRyaWVzIGhhdmluZyB0aGUgc2FtZSBuYW1lLgoKeGZzcHJvZ3MtMi42LjEwICgwNSBBcHJpbCAyMDA0KQoJLSBGaXggYm90Y2ggaW4gcmVjZW50IGFkZGl0aW9uIG9mIG5ldyBzdXBlcmJsb2NrIGZpZWxkCgkgIChmZWF0dXJlczIpIHdoaWNoIGNvdWxkIHJlc3VsdCBpbiBmaWxlc3lzdGVtcyB3aXRoIHYyCgkgIGxvZ3MgYmVpbmcgY3JlYXRlZCB3aXRoIGludmFsaWQgc3VwZXJibG9jayBmaWVsZHMuCgkgIFRoYW5rcyB0byBDaHJpcyBQYXNjb2UgZm9yIHRoaXMgZml4LgoJLSBGaXggZXJyb3Igd2hlbiBmb3JjaW5nIGEgdG9vLWxhcmdlIHYyIGxvZyBzdHJpcGUgc2l6ZQoJICBiYWNrIHRvIDMySy4gIFRoYW5rcyB0byBDaHJpcyBQYXNjb2UgZm9yIHRoaXMgZml4IHRvby4KCS0gRml4IHhmc19jb3B5IC1kIG9wdGlvbiBzbyB0aGF0IGl0IHJlYWxseSBkb2VzIGNyZWF0ZSBhCgkgIGR1cGxpY2F0ZSBmaWxlc3lzdGVtICh0aGUgbG9nIGlzIGR1cGxpY2F0ZWQgdG9vIG5vdyBpbgoJICB0aGF0IGNhc2UsIHdoZXJlYXMgcHJldmlvdXNseSBhIGZyZXNoIGxvZyB3YXMgY3JlYXRlZCkuCgp4ZnNwcm9ncy0yLjYuOSAoMjYgTWFyY2ggMjAwNCkKCS0gVXBkYXRlIEhGSUxFUyBpbiB4ZnNwcm9ncy9pby9NYWtlZmlsZSB0byBwYWNrYWdlIGlvL2lvLmgKCnhmc3Byb2dzLTIuNi44ICgyNSBNYXJjaCAyMDA0KQoJLSBGaXggeGZzX2RiIHdoZW4gZHVtcGluZyB2MiBkaXJzIGxhcmdlciB0aGFuIHRoZSBmc2Igc2l6ZS4KCS0gU2V2ZXJhbCB4ZnNfaW8gYWRkaXRpb25zIC0gc3VwcG9ydCBmb3IgbWVtb3J5IG1hcHBlZCBhcmVhcywKCSAgbXVsdGlwbGUgb3BlbiBmaWxlcywgZXhwZXJ0IG1vZGUgKGZyZWV6ZSwgc2h1dGRvd24sIGVycm9yCgkgIGluamVjdGlvbiwgZXRjKSwgZmFkdmlzZSAoTGludXgtc3BlY2lmaWMpLCBhbGxvdyB1c2VyIHRvCgkgIHNwZWNpZnkgYSBjcmVhdGUgbW9kZSB0byBvcGVuKDIpLgoJLSBGaXggeGZzX2JtYXAgdmVyYm9zZSBtb2RlIHN0cmlwZSBhbGlnbm1lbnQgaW5mb3JtYXRpb24uCgktIEZpeCB0eXBvIG9uIHhmcyg1KSBtYW4gcGFnZS4KCnhmc3Byb2dzLTIuNi43ICgxOSBNYXJjaCAyMDA0KQoJLSBGaXggdXAgVVVJRCBsaWJyYXJ5IGNoZWNrcyBhZ2FpbiwgcHJldmlvdXMgZml4IGRpZG4ndCB3b3JrCgkgIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBhdXRjb25mLgoJLSBBbGxvdyBmb3IgZnV0dXJlIGV4dGVuc2lvbnMgdG8gdGhlIFhGUyBvbmRpc2sgc3RydWN0dXJlIGJ5CgkgIHJlc2VydmluZyBhbiBleHRyYSAzMiBiaXRzIGluIHRoZSBzdXBlcmJsb2NrIGZvciBmZWF0dXJlCgkgIGJpdHMgKHVwZGF0ZSB4ZnNfZGIgdG8gZHVtcCB0aGVtKS4KCS0gRml4IHhmc19yZXBhaXIgaGFuZGxpbmcgb2YgdmVyc2lvbiAyIGRpcmVjdG9yaWVzIHdpdGggYQoJICBob2xlIGF0IHRoZSBzdGFydC4KCS0gRml4IGFuIGVuZGlhbiBidWcgaW4geGZzX2NvcHksIHdoZW4gb3BlcmF0aW5nIG9uIGFsbG9jYXRpb24KCSAgZ3JvdXBzIHdpdGggbXVsdGktbGV2ZWwgZnJlZXNwYWNlIGJ0cmVlcy4KCS0gRW5zdXJlIHhmc19yZXBhaXIgImRhbmdlcm91cyIgbW9kZSBkb2VzIG5vdCBhdHRlbXB0IHRvIHNldAoJICB0aGUgZGV2aWNlIGJsb2Nrc2l6ZSwgdGhpcyBnZW5lcmF0ZXMgYW4gZXJyb3Igd2hlbiB0YXJnZXQKCSAgZmlsZXN5c3RlbSBpcyBtb3VudGVkIHJlYWRvbmx5LgoKeGZzcHJvZ3MtMi42LjYgKDAzIE1hcmNoIDIwMDQpCgktIG1rZnMgbm93IG9wZW5zIHRoZSBkZXZpY2VzIGl0J3Mgb3BlcmF0aW5nIG9uIHdpdGggdGhlCgkgIE9fRVhDTCBmbGFnIHNldCwgd2hpY2ggaXMgdXNlZCBieSB0aGUgTGludXggMi42IGJsb2NrCgkgIGxheWVyIHRvIGVuc3VyZSBjb25jdXJyZW50IGFjY2VzcyBkb2VzIG5vdCBoYXBwZW4uCgktIEFsbG93IHhmc19pbyB0byBvcGVyYXRlIG9uIGZpbGVzIGZyb20gb3RoZXIgZmlsZXN5c3RlbXMsCgkgIHdpdGggdGhlIFhGUy1zcGVjaWZpYyBjb21tYW5kcyB1bmF2YWlsYWJsZSBpbiB0aGlzIG1vZGUuCgktIEZpeCBjb25maWd1cmUgc2NyaXB0cyB0byBhbHNvIHNlYXJjaCBmb3IgYSBVVUlEIGxpYnJhcnkKCSAgaW4gL3Vzci9saWI2NCB3aGljaCBpcyBpdHMgaG9tZSBvbiBBTUQ2NC94ODZfNjQuCgp4ZnNwcm9ncy0yLjYuNSAoMjAgRmVicnVhcnkgMjAwNCkKCS0gRml4IHVwIG1rZnMgdG8gZW5zdXJlIHRoYXQgdGhlIGxvZyBzaXplIGlzIGEgbXVsdGlwbGUgb2YKCSAgdGhlIHYyIGxvZyBzdHJpcGUgc2l6ZSBldmVuIGlmIHRoZSBsb2cgaGFwcGVucyB0byBiZSBhbGlnbmVkCgkgIG9uIGEgbG9nIHN0cmlwZSBib3VuZGFyeSAoYWx3YXlzIGNoZWNrIGl0KS4KCnhmc3Byb2dzLTIuNi40ICgxNyBGZWJydWFyeSAyMDA0KQoJLSBGaXggYSBmZXcgbW9yZSBsaWJ4ZnMvcmVwYWlyIGxlYWtzLgoJLSBGaXggdXAgc29tZSBsaWJoYW5kbGUgcm91dGluZXMsIGFkZCB0aGUgb3Blbl9ieV9mc2hhbmRsZQoJICByb3V0aW5lIHJlcXVpcmVkIGJ5IHJlY2VudCB2ZXJzaW9ucyBvZiB4ZnNkdW1wLgoKeGZzcHJvZ3MtMi42LjMgKDE5IEphbnVhcnkgMjAwNCkKCS0gTWVyZ2UgU3RldmUgTGFuZ2FzZWsncyB3b3JrIG9uIHRoZSBEZWJpYW4gaW5zdGFsbGVyCgkgIHN1cHBvcnQgZm9yIHhmc3Byb2dzLgoJLSBBZGQga25vd2xlZGdlIHRvIHhmc19kYiBhYm91dCB0aGUgc2VjdXJpdHkgbmFtZXNwYWNlIGluCgkgIGl0cyBleHRlbmRlZCBhdHRyaWJ1dGVzIGNvbW1hbmRzLgoJLSBTeW5jIHVwIHVzZXIva2VybmVsIHNvdXJjZSBpbiBsaWJ4ZnMgYW5kIGhlYWRlcnMuCgktIEZpeCBhIGNvdXBsZSBvZiBjb21waWxhdGlvbiB3YXJuaW5ncy4KCS0gV29ya2Fyb3VuZCBmb3Igc29tZSB2ZXJzaW9ucyBvZiBhdXRvY29uZiBtaXNoYW5kbGluZyB0aGUKCSAgQUNfQ0hFQ0tfU0laRU9GIG1hY3JvLgoJLSBGaXggYSBtZW1vcnkgbGVhayBpbiBsaWJ4ZnMsIG1vc3Qgbm90aWNhYmxlIGluIHhmc19yZXBhaXIuCgp4ZnNwcm9ncy0yLjYuMiAoMTcgRGVjZW1iZXIgMjAwMykKCS0gRml4IGRldl90IHNpemluZyBpc3N1ZXMgaW4gdXNlciB0b29scyAtIGdsaWJjIHVzZXMgYSA2NAoJICBiaXQgbnVtYmVyIGFuZCBYRlMgaGFzIGEgMzIgZGV2aWNlIGJpdCBudW1iZXIsIGNvbmZ1c2lvbgoJICByZWlnbnMuICBOb3QgbXVjaCBtYW5pcHVsYXRlcyBkZXZpY2UgbnVtYmVycyBpbiB0aGUgWEZTCgkgIHVzZXIgdG9vbHMgdGhvdWdoLCBoZW5jZSBoYXNuJ3QgcmVhbGx5IGJlZW4gc2VlbiBiZWZvcmUuCgkgIFRoYW5rcyB0byBDaHJpc3RvcGggZm9yIHRoZSBwYXRjaC4KCnhmc3Byb2dzLTIuNi4xICgyNyBOb3ZlbWJlciAyMDAzKQoJLSBIdW1hbi1mcmllbmRseSB4ZnNfaW8gcmVhZC93cml0ZSBic2l6ZSBzcGVjaWZpY2F0aW9ucy4KCS0gRHVtcCB0aHJvdWdocHV0IGFuZCBJT1BzIHZhbHVlcyBhZnRlciB4ZnNfaW8gcmVhZHMvd3JpdGVzLgoJLSBTeW5jIHVwIHVzZXIva2VybmVsIHNvdXJjZSBpbiBsaWJ4ZnMsIGxpYnhsb2cgYW5kIGhlYWRlcnMuCgp4ZnNwcm9ncy0yLjYuMCAoMjggT2N0b2JlciAyMDAzKQoJLSBDaGFuZ2UgdG8gbWtmcyBzdHJhdGVneSBmb3IgYWxsb2NhdGlvbiBncm91cCBjb3VudCBhbmQgc2l6ZQoJICBkZWZhdWx0LiAgU2NhbGVzIHNpZ25pZmljYW50bHkgYmV0dGVyIGZvciBsYXJnZSBmaWxlc3lzdGVtcy4KCnhmc3Byb2dzLTIuNS4xMSAoMTAgT2N0b2JlciAyMDAzKQoJLSBJbmNvcnBvcmF0ZSBKYW4gRGVyZmluYWtzIGNoYW5nZSB0byB0aGUgTGludXggYmxvY2sgaW9jdGxzCgkgIHVzZWQgaW4gbGlieGZzLCBhbGxvd2luZyB0aGlzIGNvZGUgdG8gY29tcGlsZSBjbGVhbmx5IHdpdGgKCSAgaW5jbHVkZSBmaWxlcyBmcm9tIExpbnV4IDIuNi4wLXRlc3Q1IG9ud2FyZC4KCnhmc3Byb2dzLTIuNS4xMCAoMzAgU2VwdGVtYmVyIDIwMDMpCgktIEZpeCB1cCB4ZnNfbG9ncHJpbnQgdG8gaGFuZGxlIHZlcnNpb24gMiBsb2dzIGZvciBpdHMKCSAgb3BlcmF0aW9uIG91dHB1dCAocHJldmlvdXNseSBjb3JlIGR1bXBlZCBvbiBpdCkuCgp4ZnNwcm9ncy0yLjUuOSAoMTkgU2VwdGVtYmVyIDIwMDMpCgktIFN5bmMgdXAgdXNlci9rZXJuZWwgc291cmNlIGluIGxpYnhmcywgbGlieGxvZyBhbmQgaGVhZGVycy4KCS0gQWRkIG5ldyBpbm9kZSBmbGFncyBpbnRvIHhmc19kYiB0b28uCgp4ZnNwcm9ncy0yLjUuOCAoMTIgU2VwdGVtYmVyIDIwMDMpCgktIEFkZCBtaXNzaW5nIG9wdGlvbnMgdG8geGZzX2RiIGZyYWcgY29tbWFuZCBvbmUtbGluZSBzdW1tYXJ5LgoJLSBBZGQgeGZzX2lvIGNvbW1hbmRzIGZvciBzZXR0aW5nIGFuZCBjbGVhcmluZyBuZXcgaW5vZGUgZmxhZ3MKCSAgZm9yIGltbXV0YWJsZS9hcHBlbmQtb25seS9zeW5jL25vLWF0aW1lL25vLWR1bXAuCgktIER1bXAgc29tZSBvdGhlciBzdGF0ZnMgZmllbGRzIGluIHRoZSB4ZnNfaW8gc3RhdGZzIGNvbW1hbmRzLgoJLSBSZW1vdmUgInRlc3QiIG1vZGUgZnJvbSB4ZnNfcmVwYWlyLCBvbmx5IHVzZWZ1bCBpbiB4ZnNfY2hlY2suCgktIEZpeCBwcm9ibGVtIGluIHhmc19sb2dwcmludCB3aGVyZSBpdCB3YXMgdHJ5aW5nIHRvIGNvbnRpbnVlCgkgIGluIHRoZSBwcmVzZW5jZSBvZiBhIGNvcnJ1cHQgbG9nIHdoZW4gaXQgc2hvdWxkbid0IGhhdmUuCgktIEZpeCBhbiBpbmNvcnJlY3QgYXNzZXJ0aW9uIGluIHhmc19sb2dwcmludCBpbiByZWdhcmRzIHRvIHRoZQoJICB2YWxpZGl0eSBvZiB0aGUgbG9nIHN0YXJ0IGJsb2NrLgoJLSBGaXggeGZzX2dyb3dmcyAoYW5kIGhlbmNlIHhmc19pbmZvKSB0byBhbGxvdyBpdCB0byBiZSBnaXZlbgoJICBlaXRoZXIgYSBtb3VudCBwb2ludCBvciBhIGRldmljZSBpbiB0aGUgbW91bnQgdGFibGUgLSBpdCdsbAoJICBmaWd1cmUgaXQgb3V0IGFuZCBzaG91bGQgZG8gdGhlIHJpZ2h0IHRoaW5nIGVpdGhlciB3YXkgbm93LgoKeGZzcHJvZ3MtMi41LjcgKDI5IEF1Z3VzdCAyMDAzKQoJLSBTeW5jIHVwIHVzZXIva2VybmVsIHNvdXJjZSBpbiBsaWJ4ZnMgYW5kIGhlYWRlcnMuCgktIE1ha2UgeGZzX2NvcHkgYSB0YWQgbW9yZSBwb3J0YWJsZSwgYWx0aG91Z2ggd29yayByZW1haW5zLgoJLSBBZGQgYSAidGVzdCIgbW9kZSB0byB4ZnNfcmVwYWlyIGFuZCB4ZnNfY2hlY2sgd2hpY2ggYWxsb3dzCgkgIGZvciBzcGFyc2UgKGFuZCBoZW5jZSBleHRyZW1lbHkgbGFyZ2UpIGZpbGVzeXN0ZW0gdGVzdGluZy4KCnhmc3Byb2dzLTIuNS42ICgxOSBBdWd1c3QgMjAwMykKCS0gRml4IGEgbWtmcyBwcm9ibGVtIHdoZXJlIGl0IGNvdWxkIGV4aXQgaW5hcHByb3ByaWF0ZWx5IHdoZW4KCSAgYSBsYXJnZSBkYXRhIHZvbHVtZSBzdHJpcGUgdW5pdCB3YXMgZWl0aGVyIHNwZWNpZmllZCBvbiB0aGUKCSAgY29tbWFuZCBsaW5lIG9yIHZpYSBxdWVyeWluZyB0aGUgdW5kZXJseWluZyB2b2x1bWUgbWFuYWdlci4KCnhmc3Byb2dzLTIuNS41ICgwNyBBdWd1c3QgMjAwMykKCS0gVXBkYXRlIHhmc19pbyBjb21tYW5kIHRvIGFsbG93IHJlYWRpbmcgZnJvbSBub24tWEZTIGZpbGVzLgoJLSBTeW5jIHVwIHVzZXIva2VybmVsIHNvdXJjZSBpbiBsaWJ4ZnMsIGxpYnhsb2cgYW5kIGhlYWRlcnMuCgktIFVwZGF0ZSB4ZnNfZGIgYW5kIHhmc19sb2dwcmludCBjb21tYW5kcyB0byBwcmludCBuZXcgaW5vZGUKCSAgZmx1c2ggaXRlcmF0aW9uIGZpZWxkLgoKeGZzcHJvZ3MtMi41LjQgKDIzIEp1bHkgMjAwMykKCS0gVXBkYXRlIHhmc19pbyBibWFwIGNvbW1hbmQgdG8gcmVwb3J0IHVud3JpdHRlbiBleHRlbnQgZmxhZwoJICBpZiBpdCBpcyBzZXQgb24gYW4gZXh0ZW50IChpbiB2ZXJib3NlIG1vZGUgb25seSkuCgktIEludHJvZHVjaW5nIHhmc19jb3B5LgoJLSBGaXggc2hlbGwgcXVvdGluZyBwcm9ibGVtIGluIHhmc19ibWFwIHNjcmlwdC4KCnhmc3Byb2dzLTIuNS4zICgwNyBKdWx5IDIwMDMpCgktIFVwZGF0ZSB4ZnNfaW8gY29tbWFuZHMgd2hpY2ggdGFrZSB1c2VyIGlucHV0IGluIHRlcm1zIG9mCgkgIGJ5dGUgY291bnRzIHRvIG5vdyBhbHNvIGFsbG93IHVuaXQgcHJlZml4ZXMgbGlrZSBta2ZzLnhmcy4KCS0gVHdlYWsgYnVpbGQgdG8gYXZvaWQgdW5uZWNlc3NhcnkgcmVidWlsZHMgb2YgaW50ZXJuYXRpb25hbAoJICBsYW5ndWFnZSBmaWxlcyAoaWYgcHJlc2VudCksIHN1Z2dlc3RlZCBieSBTdGV2ZSBMYW5nYXNlay4KCS0gRml4IHVzYWdlIG1lc3NhZ2UgaW4gbWtmcy54ZnMsIGl0IHdhcyBvdXQgb2YgZGF0ZS4KCS0gRml4IHNvbWUgZmlsZXN5c3RlbSB0eXBlIGRldGVjdGlvbiBjb2RlLCBpbiBwYXJ0aWN1bGFyIHRoZQoJICBiZnMgcHJvYmUgY29kZSB3YXMgYnJva2VuIGZvciA2NCBiaXQgbWFjaGluZXMgKGZvdW5kIGJ5IFFBCgkgIHRlc3QgMDMyKSBhbmQgdGhlIGhmcyBjb2RlIHdhcyBicm9rZW4gdG9vIChvcmlnaW5hbGx5IGZvdW5kCgkgIGJ5IEV0aGFuIEJlbnNvbikuICBXZSBub3cgYWxzbyBkZXRlY3QgaGZzKyBmaWxlc3lzdGVtcy4KCnhmc3Byb2dzLTIuNS4yICgyNSBKdW5lIDIwMDMpCgktIEZpeCB4dm0gc3RyaXBlIGRldGVjdGlvbiBpbiBsaWJkaXNrIC0gcGFzcyBjb3JyZWN0bHkKCSAgc2l6ZWQgc3RydWN0dXJlcyB0byB4dm0gaW9jdGxzLgoJLSBBZGQgcHRocmVhZCBsaWJyYXJ5IGNoZWNrcyBpbnRvIGNvbmZpZ3VyZSBhbmQgYnVpbGQgc2NyaXB0cwoJICBmb3Igd29yay1pbi1wcm9ncmVzcyBvbiB4ZnNfcmVwYWlyIGFuZCB4ZnNfY29weS4KCS0gRml4IG1pc3NpbmcgaW5pdGlhbGlzYXRpb24gb2Ygc3RyaXBlIHVuaXQvd2lkdGggYWxpZ25tZW50CgkgIGluZm9ybWF0aW9uIGR1cmluZyBsaWJ4ZnNfbW91bnQuCgktIEZpeCBib3RjaGVkIHJlcGFpciB0eXBlY2FzdCBmb3IgbXVsdGktdGVyYWJ5dGUgZmlsZXN5c3RlbXMuCgp4ZnNwcm9ncy0yLjUuMSAoMjMgSnVuZSAyMDAzKQoJLSBGaXggbGliZGlzayBkZXZpY2UgZHJpdmVyICh2b2x1bWUgbWFuYWdlcnMpIGRldGVjdGlvbiBjb2RlCgkgIHVzZWQgYnkgbWtmcywgc28gdGhhdCBkcml2ZXJzIHdpdGggbXVsdGlwbGUgbWFqb3JzIGFyZSBub3QKCSAgaW5jb3JyZWN0bHkgcHJvY2Vzc2VkLgoKeGZzcHJvZ3MtMi41LjAgKDE4IEp1bmUgMjAwMykKCS0gRml4IGxpYmRpc2sgKGFuZCBoZW5jZSBta2ZzKSBjb2RlIHdoaWNoIHdhcm5zIG9uIE1EIGRldmljZXMKCSAgd2l0aCB0aGUgY2xlYW4gZmxhZyBub3Qgc2V0LCBhcHBhcmVudGx5IHRoaXMgaXMgbm90IHNvIHdpc2UuCgktIEZpeCBsaWJ4ZnNfZGV2aWNlX3plcm8gdG8gd29yayB3aXRoIHNtYWxsZXItdGhhbi1yZXF1ZXN0ZWQKCSAgd3JpdGUgcmV0dXJuIHZhbHVlcy4KCS0gRml4IGVycm9yIGluIHhmc19pbyBwd3JpdGUgY29kZSB3aXRoIGxhcmdlIHJlcXVlc3Qgc2l6ZXMuCgktIEZpeCByb3VuZGluZy1kb3duLWlucHV0IHByb2JsZW1zIGluIHNldmVyYWwgeGZzX2lvIGNvbW1hbmRzLgoJLSBDaGFuZ2VkIG1rZnMueGZzIGRlZmF1bHQgbG9nIHNpemUgc2NhbGluZyBhbGdvcml0aG0gc2xpZ2h0bHksCgkgIHRvIGNyZWF0ZSBsYXJnZXIgbG9ncyBhdCBzbWFsbGVyIGZpbGVzeXN0ZW0gc2l6ZXMgYnkgZGVmYXVsdAoJICAodGhhbmtzIHRvIEFuZGkgS2xlZW4gZm9yIHRoZSBwYXRjaCkuCgktIEVuYWJsZSBzdXBwb3J0IGZvciBzZWN0b3Igc2l6ZXMgbGFyZ2VyIHRoYW4gNTEyIGJ5dGVzLgoKeGZzcHJvZ3MtMi40LjEyICgwMiBKdW5lIDIwMDMpCgktIEZpeCB4ZnNfbG9ncHJpbnQgaGFuZGxpbmcgb2YgYW55IHZlcnNpb24gMiBsb2cgZGV2aWNlLgoJLSBSZW1vdmUgY2FsbHMgdG8gZXhpdCBpbiBsaWJoYW5kbGUsIHByb3BvZ2F0ZSBlcnJvcnMgdG8KCSAgY2FsbGVyLCBhbmQgYnVtcGVkIGxpYmhhbmRsZSB2ZXJzaW9uIGZyb20gMS4wLjEgdG8gMS4wLjIuCgp4ZnNwcm9ncy0yLjQuMTEgKDMwIE1heSAyMDAzKQoJLSBFeHRyYWN0IGRldmljZSBzZWN0b3Igc2l6ZSBhdCBta2ZzIHRpbWUgYW5kIGlzc3VlIHdhcm5pbmdzCgkgIGlmIHRoZSByZXF1ZXN0ZWQgZmlsZXN5c3RlbSBzZWN0b3Igc2l6ZSBpcyB0b28gc21hbGwuCgktIFN5bmMgdXAgdXNlci9rZXJuZWwgc291cmNlIGluIGxpYnhmcywgbGlieGxvZyBhbmQgaGVhZGVycy4KCS0gU2tpcCByZWFsdGltZSBpbml0aWFsaXNhdGlvbiBpbiBsaWJ4ZnMgbW91bnQgcGF0aCBpZiB0aGUKCSAgY2FsbGVyIGlzIHhmc19kYiwgb3RoZXJ3aXNlIHdlIGdldCBub25zZW5zZSB3YXJuaW5ncy4KCS0gVXBkYXRlIHhmc19pbyB3aXRoIGEgY291cGxlIG9mIGFkZGl0aW9uYWwgY29tbWFuZHMuCgktIEZpeCB4ZnNfbG9ncHJpbnQgaGFuZGxpbmcgb2YgY29ycnVwdCB2MiBsb2cgZGV2aWNlcy4KCnhmc3Byb2dzLTIuNC4xMCAoMTIgTWF5IDIwMDMpCgktIEZpeCBhIGJ1ZyBpbiBta2ZzIC0gY3JlYXRpbmcgdmVyc2lvbiAyIGxvZ3MsIGFuIGluY29ycmVjdAoJICBzdHJpcGUgdW5pdCB2YWx1ZSB3YXMgYmVpbmcgcGFzc2VkIHRvIGxpYnhmc19jbGVhcl9sb2cuCgkgIEFsbCByZWNlbnQgdmVyc2lvbnMgb2YgeGZzX3JlcGFpciB3aWxsIGZpeCB0aGlzLCBob3dldmVyLAoJICBiZWNhdXNlIHhmc19yZXBhaXIgdXNlcyB0aGUgY29ycmVjdCBzdHJpcGUgdW5pdCB2YWx1ZS4KCS0gRml4IGEgYnVnIGluIHhmc19sb2dwcmludCwgd2hlbiBkdW1waW5nIGEgY29ycnVwdCBsb2cuCgktIEZyZWVCU0QgdXBkYXRlcyBmcm9tIEFsZXhhbmRlciBLYWJhZXYuCgktIExhcmdlIHNlY3RvciBzaXplIHVwZGF0ZXMgZm9yIG1rZnMgKGRpc2FibGVkIGF0IHRoZSBtb21lbnQpLgoJLSBMYXJnZSBzZWN0b3Igc2l6ZSBmaXhlcyBmb3IgeGZzX3JlcGFpci4KCS0gU3luYyB1cCB3aXRoIGFlYidzIG1vdW50IHNvdXJjZSBmb3IgZmlsZXN5c3RlbSBkZXRlY3Rpb24uCgp4ZnNwcm9ncy0yLjQuOSAoMDMgTWF5IDIwMDMpCgktIEFsbG93IHhmc19yZXBhaXIgdG8gcnVuIG9uIHJlYWQtb25seSBmaWxlc3lzdGVtcy4KCnhmc3Byb2dzLTIuNC44ICgyNiBBcHJpbCAyMDAzKQoJLSBSZXdvcmsgY29uZmlndXJlLmluIHRvIG1ha2UgdXNlIG9mIHNoYXJlZCBtYWNyb3MuCgktIEZpeCB1cCAjaW5jbHVkZSBsaW5lcyB0byBhbGxvdyBjb21waWxhdGlvbiBvZiBzb3VyY2VzCgkgIHdpdGggaW5zdGFsbGVkIGhlYWRlcnMgcmF0aGVyIHRoYW4gbG9jYWwgaGVhZGVycy4KCS0gRml4IGJvdGNoZXMgaW4geGZzX2JtYXAgc2hlbGwgc2NyaXB0IHdoaWNoIHByZXZlbnRlZCBhbnkKCSAgYXJndW1lbnRzIGJlaW5nIHBhc3NlZCBvbiB0byB4ZnNfaW8gKGZyb20gSmFuIERlcmZpbmFrKS4KCnhmc3Byb2dzLTIuNC43ICgyMiBBcHJpbCAyMDAzKQoJLSBDbGFyaWZ5IFhGUyBzeXN0ZW0gY2FsbCBpbnRlcmZhY2VzLCBmaXggdXAgZG9jdW1lbnRhdGlvbi4KCnhmc3Byb2dzLTIuNC42ICgxMSBBcHJpbCAyMDAzKQoJLSBGaXggYSBidWcgaW4gZGV0ZWN0aW9uIG9mICJjbGVhbiIgYW5kICJlcnJvciIgc3RhdGVzIHdpdGgKCSAgTUQgZGV2aWNlcy4KCS0gRml4IGNvbmZpZ3VyZSB0ZXN0cyB0aGF0IHVzZWQgQUNfUEFUSF9QUk9HIGluY29ycmVjdGx5LgoJLSBBZGQgc3VwcG9ydCBmb3IgbGliZWRpdCwgaWYgbGlicmVhZGxpbmUgaXMgdW5hdmFpbGFibGUuCgktIEZpeCB0aGUgbGlieGZzIGJ1aWxkIG9uIGJpZyBlbmRpYW4gcGxhdGZvcm1zLgoJLSBTeW5jIHVwIHVzZXIva2VybmVsIHNvdXJjZSBpbiBsaWJ4ZnMgYW5kIGhlYWRlcnMuCgp4ZnNwcm9ncy0yLjQuNSAoMDMgQXByaWwgMjAwMykKCS0gU3luYyB1cCB4ZnNfaW5vZGUuYyBpbiBsaWJ4ZnMuCgktIEltcGxlbWVudCBnZXRfdW5hbGlnbmVkL3B1dF91bmFsaWduZWQgaW4gbGlieGZzLgoKeGZzcHJvZ3MtMi40LjQgKDMwIE1hcmNoIDIwMDMpCgktIENvcnJlY3QgZGlzcGxheSBvZiBpbWF4cGN0IGluIG1rZnMueGZzIG91dHB1dC4KCS0gUG9ydGFiaWxpdHkgY2hhbmdlczsgaW5jbHVkaW5nIHNvbWUgY29kZSB0byBzdXBwb3J0IHVzZQoJICBvZiBzZXZlcmFsIHRvb2xzIG9uIE1hYyBPUyBYIChmb3IgUnVzc2VsbCksIGRpdHRvIGZvcgoJICBGcmVlQlNEIChmcm9tIFJ1c3NlbGwpOyBhbHNvIGRpZCBhIHNpbXBsaXN0aWMgYmFja3BvcnQKCSAgdG8gSVJJWCAoZm9yIG1lKSwgc28gdGhhdCBJIGNhbiBydW4gcHVyaWZ5IG9uIHNvbWUgb2YKCSAgdGhlIHRvb2xzLgoJLSBTZWUgZG9jL0lOU1RBTEwgZm9yIG1vcmUgZGV0YWlscyBvbiB0aGlzLgoJLSBTeW5jIHVwIHVzZXIva2VybmVsIHNvdXJjZSBpbiBsaWJ4ZnMgYW5kIGhlYWRlcnMuCgktIEZpeCB1cCBzb21lIHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nIGxpYnhmcyBvbiBiaWcgZW5kaWFuCgkgIHBsYXRmb3Jtcy4KCS0gRml4IGEgY29uZmlndXJlLmluIGJvdGNoIHdoaWNoIHJlc3VsdGVkIGluIGxpYnJlYWRsaW5lCgkgIGFsd2F5cyBiZWluZyB1c2VkIGV2ZW4gd2hlbiBpdCB3YXMgbm90IGFza2VkIGZvci4KCS0gRml4ZWQgdGhlIGNvbmZpZ3VyZS5pbiBzY3JpcHQgc28gdGhhdCBpZiBnZXR0ZXh0IGRpc2FibGVkLAoJICB3ZSBkb24ndCBjaGVjayBmb3IgdGhlIGdldHRleHQgdG9vbHMgKGFuZCBubyBsb25nZXIgZmFpbHMKCSAgaWYgdGhleSB3ZXJlIG5vdCBmb3VuZCkuCgktIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHNwZWNpZnkgYSBkaWZmZXJlbnQgdXNlciBhbmQvb3IgZ3JvdXAKCSAgdG8gaW5zdGFsbCBhcyAocHJldmlvdXNseSwgYW5kIHN0aWxsIGJ5IGRlZmF1bHQsIHJvb3Qvcm9vdAoJICB3ZXJlIGFsd2F5cyB1c2VkIGhlcmUpLgoKeGZzcHJvZ3MtMi40LjMgKDI3IE1hcmNoIDIwMDMpCgktIENsZWFudXBzIHRvIHRoZSBidWlsZCBwcm9jZXNzLCBpbiBwYXJ0aWN1bGFyIHRoZSBhdXRvbWF0aWMKCSAgcnBtIHBhY2thZ2UgZ2VuZXJhdGlvbiBNYWtlZmlsZSBhbmQgc3BlYyBmaWxlIHRlbXBsYXRlLgoJLSBNYWtlcGtncyBzY3JpcHQgY2FuIG5vdyBwcm9wYWdhdGUgZmFpbHVyZXMgYmFjayBmcm9tIG1ha2UuCgktIE1pbm9yIGNvbmZpZ3VyZS5pbiB1cGRhdGUgdG8gZGVhbCB3aXRoIHJlYWRsaW5lIGxpYnJhcmllcwoJICB3aGljaCBoYXZlIG5vdCBiZWVuIGxpbmtlZCBjb3JyZWN0bHkuCgp4ZnNwcm9ncy0yLjQuMiAoMjUgTWFyY2ggMjAwMykKCS0gQWRkZWQgdGhlIHhmc19pbyg4KSBjb21tYW5kLCBhbiB4ZnNfZGIoOCkgYWxpa2UgY29tbWFuZAoJICBmb3IgdGVzdGluZyBhbmQgZGVidWdnaW5nIHRoZSBYRlMgZmlsZSBJTyBwYXRoLgoJLSBBZGRlZCBhbiBvcHRpb25hbCBkZXBlbmRlbmN5IG9uIHRoZSBHTlUgcmVhZGxpbmUgbGlicmFyeQoJICB3aGljaCBpcyAib2ZmIiBieSBkZWZhdWx0IGFuZCBlbmFibGVkIHdpdGggdGhlIGNvbmZpZ3VyZQoJICBvcHRpb24gLS1lbmFibGUtcmVhZGxpbmU9eWVzOyBpdCBhZmZlY3RzIHRoZSBpbnRlcmFjdGl2ZQoJICB0b29scyBvbmx5ICh4ZnNfZGIgYW5kIG5vdyB4ZnNfaW8pLgoJLSBJbXBsZW1lbnRlZCB4ZnNfYm1hcCg4KSBhcyBhIHNoZWxsIHNjcmlwdCB3cmFwcGVyLgoJLSBEb2N1bWVudGVkIHRoZSBta2ZzLnhmcyAtZiwgLWxsb2dkZXYgYW5kIC1ycnRkZXYgb3B0aW9ucy4KCS0gQ29ycmVjdGVkIHNpemUgY2hlY2sgZm9yIHJlYWx0aW1lIHN1bW1hcnkgaW5vZGUgKG5vdCB0aGUKCSAgc2FtZSBhcyB0aGUgcmVhbHRpbWUgYml0bWFwIGlub2RlKSBpbiB4ZnNfcmVwYWlyLgoKeGZzcHJvZ3MtMi40LjEgKDE4IE1hcmNoIDIwMDMpCgktIEZpeCBlcnJvciByZXBvcnRpbmcgd2hlbiB6ZXJvaW5nIHBhcnRzIG9mIHRoZSByZWFsdGltZQoJICBkZXZpY2UgaW4gcGhhc2U2IG9mIHhmc19yZXBhaXIuCgktIEFkZCBhIG1rZnMueGZzIGNoZWNrIGZvciBNYWMgcGFydGl0aW9ucyBiZWZvcmUgd3JpdGluZwoJICB0byB0aGUgZGV2aWNlLgoJLSBUaGFua3MgdG8gRXRoYW4gQmVuc29uIDxlcmJlbnNvbkBhbGFza2EubmV0PiBmb3IgdGhpcy4KCS0gTWlub3IgZml4IHRvIHRoZSB4ZnNfYm1hcCg4KSBtYW4gcGFnZS4KCS0gU3luYyB1cCB1c2VyL2tlcm5lbCBzb3VyY2UgaW4gbGlieGZzIGFuZCBoZWFkZXJzLgoKeGZzcHJvZ3MtMi40LjAgKDA2IE1hcmNoIDIwMDMpCgktIEVuYWJsZSB1bndyaXR0ZW4gZXh0ZW50cyBieSBkZWZhdWx0IGluIG1rZnMueGZzLgoJLSBBZGQgYSBjb21tYW5kIHRvIHhmc19kYiB0byBlbmFibGUgdW53cml0dGVuIGV4dGVudHMuCgktIEFkZCBhbiBvcHRpb24gdG8geGZzX2FkbWluIHRvIHVzZSB0aGUgYWJvdmUgY29tbWFuZC4KCS0gQWRkIGNvbW1hbmQgdG8geGZzX2RiIHRvIHByaW50IG91dCB0aGUgY3VycmVudGx5IGVuYWJsZWQKCSAgZmVhdHVyZSBiaXRzIGFuZCB2ZXJzaW9uIG51bWJlci4KCS0gTWFrZSB4ZnNfZGIgc2xpZ2h0bHkgbW9yZSByb2J1c3QgaW4gdGhlIHByZXNlbnNlIG9mIGJhZAoJICBvbmRpc2sgZGF0YS4KCS0gUmF0aW9uYWxpc2Ugc29tZSB4ZnNfZGIgc3VwZXJibG9jay1yZWxhdGVkIGNvZGUgYW5kIHRoZQoJICB1dWlkIGNvbW1hbmQgbm93IGNoZWNrcyBmb3IgYSBkaXJ0eSBsb2cgYmVmb3JlIHplcm9pbmcuCgktIEFkZCBzdHJpcGUgYWxpZ25tZW50IGluZm9ybWF0aW9uIHRvIHhmc19ibWFwLgoJLSBTeW5jIHVwIHVzZXIva2VybmVsIHNvdXJjZSBpbiBsaWJ4ZnMgYW5kIGhlYWRlcnMuCgktIFVwZGF0ZSBtYW4gcGFnZXMsIGZpeCBhIHR5cG8gaW4gdGhlIHhmc19hZG1pbiBtYW4gcGFnZQoJICByZWxhdGluZyB0byB0aGUgVVVJRCBvcHRpb25zLgoKeGZzcHJvZ3MtMi4zLjExICgxOCBGZWJydWFyeSAyMDAzKQoJLSBNaXNzZWQgYSBidWlsZCBkZXBlbmRlbmN5IGZvciB0aGUgRGViaWFuIGJ1aWxkIHByb2Nlc3MuCgp4ZnNwcm9ncy0yLjMuMTAgKDE3IEZlYnJ1YXJ5IDIwMDMpCgktIEZpeCBhIGRpdmlkZS1ieS16ZXJvIGVycm9yIGluIG1rZnMgd2l0aCBjZXJ0YWluIHN0cmlwZSB1bml0CgkgIGFuZC9vciB3aWR0aCBvcHRpb25zIHNwZWNpZmllZC4KCS0gU3luYyB1cCB1c2VyL2tlcm5lbCBzb3VyY2UgaW4gbGlieGZzIGFuZCBoZWFkZXJzLgoKeGZzcHJvZ3MtMi4zLjkgKDMxIERlY2VtYmVyIDIwMDIpCgktIEFkZGl0aW9uYWwgeGZzX3JlcGFpciBjaGVjayBpbiB2MiBkaXJlY3RvcnkgaGFuZGxpbmcgZm9yIGJsa3MKCSAgd2l0aCBubyBkYXRhIGVudHJpZXMgKG1lcmdlZCBmcm9tIElSSVgpLCBpbmNsdWRlcyBzZXZlcmFsCgkgIGhhbmR5IGNvbW1lbnRzIHNwcmlua2xlZCB0aHJvdWdob3V0IHRoaXMgdjIgZGlyIGNvZGUuCgktIEZpeCBhbiBlbmRpYW4gYnVnIGluIHRoZSBzYW1lIGFyZWEgb2YgY29kZSAodjIgZGlycywgcGhhc2UgNiwKCSAgbG9uZ2Zvcm1fZGlyMl9yZWJ1aWxkX3NldHVwKQoJLSB4ZnNfcmVwYWlyIGhhcyBhZGRpdGlvbmFsIGNoZWNrcyBmb3IgYmFkIHNlY3RvciB2YWx1ZXMgbm93LgoJLSB4ZnNfcmVwYWlyIEkxOE4gY2hhbmdlcy4KCS0gRml4IGRldGVjdGlvbiBvZiByZWFkb25seSBtb3VudHMsIHNsaWdodGx5IGJvdGNoZWQgaW4gMi4zLjguCgktIEZpeCByZWZlcmVuY2VzIHRvIHJlbW92ZWQgaW9jdGwgY29tbWFuZHMgb24geGZzKDUpIG1hbiBwYWdlLgoKeGZzcHJvZ3MtMi4zLjggKDE4IERlY2VtYmVyIDIwMDIpCgktIEluaXRpYWwgc3VwcG9ydCBmb3IgSTE4TiAoc3RpbGwgbW9yZSB0byBkbyBoZXJlKS4KCS0gSW5pdGlhbCBjaGFuZ2VzIGZvciBmaWxlc3lzdGVtcyB3aXRoIGdyZWF0ZXIgdGhhbiA1MTIgYnl0ZQoJICBzZWN0b3Igc2l6ZXMgKHN0aWxsIHBsZW50eSBtb3JlIHRvIGRvIGhlcmUgdG9vKS4KCS0gVGlkeSB1cCBsaWJ4ZnMgZnVuY3Rpb25zIHdoaWNoIHRha2UgYSAiZmxhZ3MiIGFyZ3VtZW50LgoJLSBTeW5jIHVwIHVzZXIva2VybmVsIHNvdXJjZSBpbiBsaWJ7eGZzLHhsb2d9IGFuZCBoZWFkZXJzLgoJLSBGaXhlZCBpbmNvcnJlY3QgdXNlIG9mIFhGU19GU0JfVE9fREFERFIgbWFjcm8gaW4geGZzX2RiJ3MKCSAgZmFkZHIuYzo6ZmFfZGlyYmxvY2sgcm91dGluZSAtIG5vdyB1c2UgWEZTX0ZTQl9UT19CQiBoZXJlLAoJICBhcyBzZXRfY3VyKCkgdGFrZXMgYmFzaWMgYmxvY2tzIGFzIGl0cyB0aGlyZCBwYXJhbWV0ZXIuCgktIEZpeGVkIG9ic2N1cmUgaXNzdWUgaW4gbWtmcyB3aGVyZSBvbmx5IHRoZSBmaXJzdCBBRyB3b3VsZAoJICBnZXQgaXRzIEFHRkwgZnJlZWxpc3QgImZpeGVkIiAtIG5vdCBjbGVhciB0aGlzIGNhdXNlZCBhbnkKCSAgaXNzdWVzIGluIHByYWN0aWNlIChvbiBMaW51eCBpdCdzIGFsd2F5cyBiZWVuIHRoaXMgd2F5LCB3ZQoJICBub3cgbWF0Y2ggdXAgd2l0aCBJUklYIHRob3VnaCkuCgktIE1hZGUgeGZzX2dyb3dmcyBmaWxlc3lzdGVtIGdlb21ldHJ5IG91dHB1dCBtYXRjaCB1cCB3aXRoCgkgIHRoYXQgZGlzcGxheWVkIGJ5IG1rZnMueGZzICh4ZnNfZ3Jvd2ZzIHdhcyBtaXNzaW5nIGEgY29tbWEKCSAgYmVmb3JlIHRoZSBsb2cgdmVyc2lvbiBmaWVsZCkuCgktIEZpeGVkIGFuIGlzc3VlIGluIHhmc19yZXBhaXIgd2hlcmUgZGF0YSBwYXN0IHRoZSBlbmQgb2YgdGhlCgkgIHZhbGlkIHN1cGVyYmxvY2sgZmllbGRzIHdhcyBzb21ldGltZXMgbm90IGNsZWFyZWQsIHdoZW4gaXQKCSAgcmVhbGx5IHNob3VsZCBoYXZlIGJlZW4gKGR1ZSB0byBhIGxpYnhmcyBwcm9ibGVtKS4KCS0gU2hlbGwgc2NyaXB0cyAoeGZzX2luZm8sIHhmc19jaGVjaywgZXRjKSBub3cgYWxzbyByZXBvcnQKCSAgdGhlIHhmc3Byb2dzIHZlcnNpb24gbnVtYmVyIHZpYSAtViwgbGlrZSBvdGhlciBjb21tYW5kcy4KCnhmc3Byb2dzLTIuMy43ICgxNCBOb3ZlbWJlciAyMDAyKQoJLSBGaXggYW4gZW5kaWFuIGJ1ZyBpbiB4ZnNfZGIgZnJlZXNwIGNvbW1hbmQgd2hlbiBkZXNjZW5kaW5nCgkgIGludG8gbXVsdGktbGV2ZWwgYWdmIGNudC9ibm8gYnRyZWVzLgoKeGZzcHJvZ3MtMi4zLjYgKDMxIE9jdG9iZXIgMjAwMikKCS0gU3luYyB1cCB1c2VyL2tlcm5lbCBzb3VyY2UgaW4gbGlie3hmcyx4bG9nfSBhbmQgaGVhZGVycy4KCS0gRml4IHNldmVyYWwgd2FybmluZ3MgZnJvbSBuZXdlciAoMy4yKSB2ZXJzaW9ucyBvZiBnY2MuCgktIE1pbm9yIGhlYWRlciBmaWxlIHNodWZmbGluZy4KCnhmc3Byb2dzLTIuMy41ICgxMCBPY3RvYmVyIDIwMDIpCgktIFN5bmMgdXAgdXNlci9rZXJuZWwgc291cmNlIGluIGxpYnt4ZnMseGxvZ30gYW5kIGhlYWRlcnMuCgktIEZpeCBta2ZzIChsaWJ4ZnMpIGJ1ZyB3aGVuIHVzaW5nIEJMS0ZMU0JVRiBpb2N0bCAtIHdlIHBhc3NlZAoJICBpbiB0aGUgZGV2aWNlIG51bWJlciBpbnN0ZWFkIG9mIGEgZmlsZSBkZXNjcmlwdG9yIChhbmQgRUJBREYKCSAgd2FzIHRoZSBlbmQgcmVzdWx0LCB3aGljaCB3ZSBpZ25vcmVkKS4KCS0gVGhhbmtzIHRvIEFudG9uIEJsYW5jaGFyZCA8YW50b25Ac2FtYmEub3JnPiBmb3IgZml4aW5nIHRoaXMuCgp4ZnNwcm9ncy0yLjMuNCAoMDQgT2N0b2JlciAyMDAyKQoJLSBGaXggc2l6ZSBjYWxjdWxhdGlvbiBidWcgaW4geGZzX3JlcGFpcidzIG1lbW9yeSBhbGxvY2F0aW9uLAoJICByZWR1Y2VzIG1lbW9yeSB1c2FnZSBieSBhIGZhY3RvciBvZiA0LgoKeGZzcHJvZ3MtMi4zLjMgKDE2IFNlcHRlbWJlciAyMDAyKQoJLSBGaXggbWtmcyBidWcgd2hlbiBvcHRpbWl6aW5nIEFHIHNpemUgb24gc3RyaXBlZCBkZXZpY2VzLAoJICBBU1NFUlQoYWdjb3VudCAhPSAwKSB0cmlwcGVkIG9uIHNpbmdsZS1hZyBmaWxlc3lzdGVtcy4KCnhmc3Byb2dzLTIuMy4yICgxMCBTZXB0ZW1iZXIgMjAwMikKCS0gVXNlIHByZWFkL3B3cml0ZSBpbnN0ZWFkIG9mIGxzZWVrICsgcmVhZC93cml0ZS4KCnhmc3Byb2dzLTIuMy4xICgwMyBTZXB0ZW1iZXIgMjAwMikKCS0gQWxsb3cgeGZzX2RiIHRvIGFjY2VwdCBuZWdhdGl2ZSBudW1iZXJzIHdoZW4gd3JpdGluZyB2YWx1ZXMuCgp4ZnNwcm9ncy0yLjMuMCAoMDMgU2VwdGVtYmVyIDIwMDIpCgktIFNldmVyYWwgY2hhbmdlcyB0byBnZW9tZXRyeSBpb2N0bCBjYWxsZXJzIHdoaWNoIHdpbGwgbWFrZQoJICB0aGUgdG9vbHMgdXNlYWJsZSBvbiBvbGRlciBrZXJuZWwgdmVyc2lvbnMgdG9vLgoJLSBNYWlubHkgYWZmZWN0cyB4ZnNfYm1hcCBhbmQgeGZzX2dyb3dmcy4KCS0gRG8gc29tZSBhZGRpdGlvbmFsIGNsZWFudXAgYWZ0ZXIgYXV0b2NvbmYgaGFzIHJ1bi4KCnhmc3Byb2dzLTIuMi4zICgyOCBBdWd1c3QgMjAwMikKCS0gVXBkYXRlIGxpYmRpc2sgZm9yIGEgZmV3IG90aGVyIGZpbGVzeXN0ZW1zLgoJLSBGaXggY2FsbCB0byBsdmRpc3BsYXkgb24gTFZNIHZvbHVtZXMgc28gdGhhdCBsdmRpc3BsYXkKCSAgYWx3YXlzIGdldHMgdGhlIGZ1bGwsIHJlYWwgcGF0aCB0byB0aGUgdm9sdW1lLCBhcyByZXF1aXJlZC4KCnhmc3Byb2dzLTIuMi4yICgxOSBBdWd1c3QgMjAwMikKCS0gRml4IGVuZGlhbiBidWcgaW4geGZzX2RiLCB3YXMgbm90IGZsaXBwaW5nIDE2LWJpdCBudW1iZXJzLgoJLSBNYWtlIHhmc19yZXBhaXIgcmVjb2duaXplIGEgTlVMTEZTSU5PIGFuZCBwcmludCB0aGF0IGluCgkgIGFkZGl0aW9uIHRvICIxODQ0Njc0NDA3MzcwOTU1MTYxNSIgZm9yIGVhc3kgcmVjb2duaXRpb24uCgktIEZpeCBmb3JtYXQgc3RyaW5nIHRoYXQgeGZzX3JlcGFpciB1c2VzIHdoZW4gZml4aW5nIGlub2RlcywKCSAgc28gdGhhdCB0aGUgbmV3IGlub2RlIG51bWJlcnMgYXJlIHByaW50ZWQgY29ycmVjdGx5LgoKeGZzcHJvZ3MtMi4yLjEgKDA5IEF1Z3VzdCAyMDAyKQoJLSBGaXggYnVnbGV0IGluIGxpYmRpc2sgZ2V0X2RyaXZlcl9ibG9ja19tYWpvcigpIHJvdXRpbmUgd2hpY2gKCSAgd291bGQgcmVzdWx0IGluIGluY29ycmVjdCBtYWpvcnMgYmVpbmcgcmV0dXJuZWQgZm9yIG5vdC1mb3VuZAoJICBkcml2ZXJzLgoJLSBGaXggcHJvYmxlbSBpbiBpbnN0YWxsIHByb2Nlc3Mgd2l0aCBuZXdlciBhdXRvY29uZiB2ZXJzaW9ucy4KCnhmc3Byb2dzLTIuMi4wICgwOCBBdWd1c3QgMjAwMikKCS0gbWtmcy54ZnMgZGVmYXVsdHMgdG8gYSBibG9ja3NpemUgb2YgNDA5NiBieXRlcywgYW5kIG5vIGxvbmdlcgoJICB1c2VzIGdldHBhZ2VzaXplKDIpIHRvIGR5bmFtaWNhbGx5IGNvbmZpZ3VyZSB0aGUgZGVmYXVsdCBzaXplLgoJLSBBZGQgRVZNUyBzdHJpcGUgdW5pdC93aWR0aCBhdXRvLWRldGVjdGlvbiBzdXBwb3J0IGluIG1rZnMueGZzCgkgIChwYXRjaCBmcm9tIEx1Y2lhbm8gQ2hhdmV6KS4KCS0gU3luYyB1c2VyL2tlcm5lbCBoZWFkZXJzIChhcmNoLmggaW5jb3Jwb3JhdGVkIGludG8geGZzX2FyY2guaCwKCSAgYW5kIHNldmVyYWwgb3RoZXIgbWlub3IgY2hhbmdlcykuCgp4ZnNwcm9ncy0yLjEuMiAoMTcgSnVseSAyMDAyKQoJLSBGaXggdXAgbG9nIHN0cmlwZSB1bml0IHNwZWNpZmljYXRpb24gb3B0aW9ucywgYW5kIHVwZGF0ZQoJICBtYW4gcGFnZS4gIEFsc28gZml4IHN1ZmZpeCBoYW5kbGluZyBmb3IgZGF0YSBzdS9zdyBvcHRpb25zCgkgIChkaXNhbGxvdyB1bml0IHN1ZmZpeGVzIG9uIC1kIHN1bml0LHN3aWR0aCxzdyBhbmQgLWwgc3VuaXQpLgoJICBBZGQgInMiICg1MTItYnl0ZSBzZWN0b3JzKSBhcyB2YWxpZCBzdWZmaXguCgktIEF1dG9tYXRpY2FsbHkgc2VsZWN0IHYyIGxvZ3MgaWYgYSBsb2cgc3RyaXBlIHVuaXQgaXMKCSAgc3BlY2lmaWVkLgoKeGZzcHJvZ3MtMi4xLjEgKDA0IEp1bHkgMjAwMikKCS0gQnVpbGQgaW5mcmFzdHJ1Y3R1cmUgdXBkYXRlcyBzbyB0aGF0IGNvbmZpZ3VyZSBvcHRpb25zIGNhbiBiZQoJICB1c2VkIHRvIHNwZWNpZnkgcGF0aHMgcmF0aGVyIHRoYW4gc2VtaS1oYXJkLWNvZGVkIHBhdGggbmFtZXMKCSAgY29udHJvbGxlZCBieSB0aGUgUk9PVC9ST09UX1BSRUZJWCBlbnZpcm9ubWVudCB2YXJpYWJsZXM7IGVnLgoJICBub3cgYWxsb3dzIC9saWI2NCBhbmQgL2xpYjMyCgp4ZnNwcm9ncy0yLjEuMCAoMTQgSnVuZSAyMDAyKQoJLSBTdXBwb3J0IGZvciBYRlMgdmVyc2lvbiAyIGxvZyBmb3JtYXQuCgktIEZpeCBmb3IgeGZzX3JlcGFpciBtYW5nbGluZyBpOGNvdW50IGZvciBkaXIyX3NmIGRpcmVjdG9yaWVzCgktIE1pbm9yIG1rZnMueGZzIG1hbiBwYWdlIHVwZGF0ZSBmb3IgYmxvY2tzaXplIGxpbWl0cyBvbiBMaW51eAoJLSB4ZnNfY3JlZC5oIHNwbGl0IGludG8geGZzX2FjbC5oLCB4ZnNfY2FwLmggYW5kIHhmc19tYWMuaAoJLSBGaXggdHlwbyBpbiBta2ZzIHJlYWx0aW1lIHN1bW1hcnkgaW5vZGUgYWxsb2MgZmFpbHVyZSBtZXNzYWdlCgp4ZnNwcm9ncy0yLjAuNiAoMzAgTWF5IDIwMDIpCgktIEZpeCBlcnJvciByZXR1cm5zIGZyb20gbG9nIHJlY292ZXJ5IChhZmZlY3RzIHhmc19yZXBhaXIpLgoJLSBGaXggdGhlIHdheSBta2ZzLnhmcyByb3VuZCBkb3ducyB0aGUgZGV2aWNlIHdoZW4gdGhlIGxhc3QKCSAgQUcgaXMgc21hbGxlciB0aGFuIHRoZSBtaW5pbXVtIEFHIHNpemUuCgktIEZpeCBidWcgaW4geGZzX3JlcGFpciBkYV93cml0ZSgpIHJvdXRpbmUsIHdoaWNoIGFmZmVjdHMKCSAgZmlsZXN5c3RlbXMgd2hlcmUgdGhlIGRhdGEgYmxvY2tzaXplICE9IG5hbWluZyBibG9ja3NpemUKCSAgKHNlZSB4ZnNfaW5mbyBvdXRwdXQpLgoJLSBGaXggYSB1c2UtYWZ0ZXItZnJlZSBidWcgaW4geGZzX3JlcGFpciBjb2RlIGZvciBjaGVja2luZwoJICB2ZXJzaW9uIDEgYnRyZWUtZm9ybWF0IGRpcmVjdG9yaWVzLgoJLSBBZGQgY2hlY2tzIG9mIHRoZSBBQ0wgcGVybWlzc2lvbnMgZmllbGQgaW50byB4ZnNfcmVwYWlyLgoKeGZzcHJvZ3MtMi4wLjUgKDAyIE1heSAyMDAyKQoJLSBTaXplIEFHcyBzbyB0aGF0IHRoZXkgZG8gbm90IGFsd2F5cyBzdGFydCBvbiB0aGUgc2FtZQoJICBwYXJ0IG9mIGEgc3RyaXBlZCBkaXNrCgktIEZpeCBhbiBvZmYtYnktb25lIGVycm9yIG9uIHJvdW5kaW5nIGRvd24gYW4gQUcgdGhhdCBpcwoJICB0b28gc21hbGwgdG8gYmUgYW4gQUcKCS0gRG9uJ3QgYXV0by1ncm93IHRoZSBsb2cgdG8gYmUgbGFyZ2VyIHRoYW4gYW4gQUcKCS0gQ2hhbmdlIHRoZSBlcnJvciBwaGlsb3NvcGh5IGZvciAtZCBzdT0sc3c9IGF3YXkgZnJvbSBmb3JjaW5nCgkgIHRoZSBYRlMgc3RyaXBlIHNpemUgdG8gbWF0Y2ggdGhlIHZvbHVtZSBtYW5hZ2VyIHN0cmlwZSBzaXplCgkgIGFuZCBpbnN0ZWFkIGFjY2VwdCwgd2l0aCBhIHdhcm5pbmcsIHRoZSBzdHJpcGUgdW5pdCAmIHdpZHRoCgkgIHN1cHBsaWVkIG9uIHRoZSBjb21tYW5kbGluZS4KCS0gVXBkYXRlIHhmc19ncm93ZnMgbWFuIHBhZ2UKCS0gRG9uJ3QgYnVpbGQgbGlieGxvZy5hIHdpdGggREVCVUcgZW5hYmxlZAoJLSB4ZnNfZGIgZml4ZXMgZnJvbSBBU0FOTyBNYXNhaGlybyBhdCBORUMKCnhmc3Byb2dzLTIuMC40ICgxNyBBcHJpbCAyMDAyKQoJLSBNaW5vciB1cGRhdGUgc3luYydpbmcgd2l0aCBrZXJuZWwgY2hhbmdlcyAobGVzcyBlbmRpYW4KCSAgc3dhYmJpbmcgaW4gbGlieGZzIGNvZGUpCgp4ZnNwcm9ncy0yLjAuMyAoMTMgQXByaWwgMjAwMikKCS0gSW1wb3J0YW50IGJ1aWxkIHN5c3RlbSB1cGRhdGUsIHdhcyBjYXVzaW5nIGxpYnhmcyB0byBiZQoJICBidWlsdCBpbmNvcnJlY3RseSwgd2hpY2ggY2FuIGNhdXNlIHhmc19yZXBhaXIgdG8gZmFpbCBieQoJICB0cmlwcGluZyBhc3NlcnRzIGluIGFkZGl0aW9uYWwgbGlieGZzIGRlYnVnIGNvZGUuCgp4ZnNwcm9ncy0yLjAuMiAoMDQgQXByaWwgMjAwMikKCS0gQnVtcGVkIHZlcnNpb24gb2YgbGliaGFuZGxlIHRvIGxpYmhhbmRsZS5zby4xLjAuMQoJICBUaGlzIGNoYW5nZXMgb3Blbl9ieV9oYW5kbGUoKSBhbmQgZnJpZW5kcyBzbyB0aGF0CgkgIE9fTEFSR0VGSUxFIGlzIGFkZGVkIHRvIHRoZSBvcGVuIGZsYWdzLgoJICBUaGlzIGFsbG93cyB4ZnNkdW1wIHRvIGR1bXAgZmlsZXMgZ3JlYXRlciB0aGFuCgkgIDJeMzEtMSBieXRlcyBpbnN0ZWFkIG9mIG5vdCBkdW1waW5nIHRoZSBsYXJnZQoJICBmaWxlcyBhbmQgZ2l2aW5nIHdhcm5pbmcgbWVzc2FnZXMuCgp4ZnNwcm9ncy0yLjAuMSAoMTIgTWFyY2ggMjAwMikKCS0gRmFsbCBiYWNrIHRvIEJMS0dFVFNJWkUgaWYgQkxLR0VUU0laRTY0IGZhaWxzCgktIFN5bmMgdXNlci9rZXJuZWwgaGVhZGVycyBhbmQgc2hhcmVkIGNvZGUKCnhmc3Byb2dzLTIuMC4wICgyNiBGZWJydWFyeSAyMDAyKQoJLSBNYWpvciByZWxlYXNlIHRvIGNvaW5jaWRlIHdpdGggc3dpdGNoIHRvIG5ldyBleHRlbmRlZAoJICBhdHRyaWJ1dGVzIHN5c3RlbSBjYWxsIGludGVyZmFjZXMKCS0gYnVtcGVkIHZlcnNpb24gb2YgbGliaGFuZGxlLCBhZGRlZCBuZXcgc3ltYm9scyB0byB1c2UKCSAgdGhlIHJld29ya2VkIGV4dGVuZGVkIGF0dHJpYnV0ZXMgaGFuZGxlIGlvY3RsIGludGVyZmFjZQoJLSB4ZnNfcmVwYWlyIGluIG5vLW1vZGlmeSBtb2RlIG9wZW5zIHRoZSBmaWxlc3lzdGVtIGRldmljZQoJICByZWFkLW9ubHkgbm93IChmaXggZnJvbSBDaHJpcyBQYXNjb2UpCgktIHN5bmMgdXAgd2l0aCByZWNlbnQgKG1pbm9yKSBjaGFuZ2VzIHRvIHNoYXJlZCBrZXJuZWwgY29kZQoJLSBzd2l0Y2ggdG8gdXNpbmcgdGhlIEJMS0dFVFNJWkU2NCBpb2N0bCBpbiBsaWJ4ZnMsIGluc3RlYWQKCSAgb2YgdGhlIChwcmV2aW91c2x5IGJ1c3RlZCkgQkxLR0VUU0laRSBpb2N0bAoKeGZzcHJvZ3MtMS4zLjE5ICgxNSBGZWJydWFyeSAyMDAyKQoJLSBmaXggeGZzX3JlcGFpciBvcHRpb24gcGFyc2luZyBmb3IgZXh0ZXJuYWwgbG9ncwoJLSBhZGQgeGZzX3JlcGFpciBvcHRpb24gcGFyc2luZyBmb3IgcmVhbHRpbWUgZGV2aWNlCgktIGZpeCB4ZnNfcmVwYWlyIHZlcnNpb24gKC1WKSBvcHRpb24gLSBzaG91bGQgbm90CgkgIHJlcXVpcmUgYW4gYXJndW1lbnQKCS0gYWRkIC1WIG9wdGlvbiB0byB1c2FnZSBzdHJpbmcKCS0gZG9jdW1lbnQgdmVyYm9zZSAoLXYpIGFuZCAtciBvcHRpb25zIGluIG1hbnBhZ2UKCnhmc3Byb2dzLTEuMy4xOCAoMTcgSmFudWFyeSAyMDAyKQoJLSBmaXggbWtmcy54ZnMgYnVnbGV0IGluIG92ZXJ3cml0aW5nIHNpZ25hdHVyZXMgd2hlbiBydW4KCSAgb24gYSByZWd1bGFyIGZpbGUKCnhmc3Byb2dzLTEuMy4xNyAoMTQgSmFudWFyeSAyMDAyKQoJLSBta2ZzLnhmcyBvdmVyd3JpdGVzIHByZS1leGlzdGluZyBmaWxlc3lzdGVtLCBzd2FwLCBvciBtZAoJICBkcml2ZXIgc2lnbmF0dXJlcy4KCS0geGZzX3JlcGFpciBmaXggdG8gcHJldmVudCBkb3VibGUgaW5zZXJ0aW9uIGludG8gdGhlCgkgIHVuY2VydGFpbl9pbm9kZSBBVkwgdHJlZXMgKCJhdmxfaW5zZXJ0OiBkdXBsaWNhdGUgcmFuZ2UiKQoJLSB4ZnNfcmVwYWlyIGZpeCBpZiB0aGUgbG9nIGlzIGNvcnJ1cHRlZCBhbmQgd2UgY2FuJ3QgZmluZAoJICB0aGUgaGVhZCwgZG9uJ3QgZXhpdCAtIGp1c3QgcHJvY2VlZCBvbiB3aXRoIHplcm9pbmcgaXQKCS0gdXNlIHNucHJpbnRmIGluc3RlYWQgb2Ygc3ByaW50ZiB0aHJvdWdob3V0Cgp4ZnNwcm9ncy0xLjMuMTYgKDE3IERlY2VtYmVyIDIwMDEpCgktIGFkZGVkIHRleHQgZHVtcCB0eXBlIHRvIHhmc19kYiAobWtwKQoJLSByZW1vdmVkIHVzZSBvZiBhIHRlbXBvcmFyeSBmaWxlIGluIHhmc19kYiB3aGVuIHByb2Nlc3NpbmcKCSAgY29tbWFuZHMgb24gdGhlIGNvbW1hbmQgbGluZSAtIGFsbG93cyB4ZnNfY2hlY2sgdG8gYmUgcnVuCgkgIG9uIHJlYWQtb25seSByb290IGZpbGVzeXN0ZW1zCgp4ZnNwcm9ncy0xLjMuMTUgKDEyIERlY2VtYmVyIDIwMDEpCgktIHJlZW5hYmxlIHRoZSB1c2Ugb2YgdGhlIEJMS0JTWlNFVCBpb2N0bCwgaXQncyBiYWFhY2sKCS0gc3luYyByZWNlbnQgWEZTIGtlcm5lbCBzb3VyY2UgY2hhbmdlcyBiYWNrIGludG8gbGlieGZzCgp4ZnNwcm9ncy0xLjMuMTQgKDA1IERlY2VtYmVyIDIwMDEpCgktIGZpeCBtaW5vciBkZWJpYW4gcGFja2FnZSB2ZXJzaW9uIG51bWJlcmluZyBpc3N1ZQoJLSBhZGQgZG9jdW1lbnRhdGlvbiBmb3IgeGZzX2RiKDgpIGxhYmVsL3V1aWQgY29tbWFuZHMKCS0gYXV0b21hdGljIGlub2RlIHNpemluZyBjb2RlIGluIG1rZnMueGZzIGhhcyBiZWVuIHJlbW92ZWQKCSAgKHJlc3RyaWN0aW5nIGlub2RlcyB0byAzMiBiaXRzKSAtIFN0ZXZlJ3MgcmVjZW50IGtlcm5lbAoJICBjaGFuZ2VzIG1lYW4gdGhpcyBpcyBubyBsb25nZXIgYW4gaXNzdWUKCS0gZml4IGJ1ZyBpbiBta2ZzLnhmcyBzaXplIGNyb3NzLWNoZWNrIGZvciByZWFsdGltZSBkZXZpY2UKCnhmc3Byb2dzLTEuMy4xMyAoMjUgT2N0b2JlciAyMDAxKQoJLSBmaXggYnVnIGluIG1rZnMgZm9yIDFUYnl0ZSArIGZpbGVzeXN0ZW1zCgktIHN5bmMgd2l0aCByZWNlbnQga2VybmVsIGNoYW5nZXMgLSB0aGlzIGRvZXMgbm90IGFmZmVjdAoJICB1c2Vyc3BhY2UgKGxpYnhmcyksIGFsbCBhZmZlY3RlZCBjb2RlIGlzIHJlbW92ZWQgYnkgY3BwLgoKeGZzcHJvZ3MtMS4zLjEyICgxNyBPY3RvYmVyIDIwMDEpCgktIGltcGxlbWVudCB0aGUgLWYgKGZpbGUpIG9wdGlvbiB0byB4ZnNfbG9ncHJpbnQKCS0gcmV3b3JrIHRoZSB4bG9nIGNvZGUgaW50byBsaWJ4bG9nIGZvciBjb2RlIHNoYXJpbmcKCS0geGZzX3JlcGFpciBub3cgZGV0ZWN0cyBhIGRpcnR5IGxvZyBhbmQsIHdpdGhvdXQgLUwsIHdpbGwKCSAgbm8gbG9uZ2VyIGJsaW5kbHkgemVybyBpdCAod2hpY2ggcHJldmVudHMgYW55IHJlY292ZXJ5KQoKeGZzcHJvZ3MtMS4zLjExICgxNyBPY3RvYmVyIDIwMDEpCgktIHRpZHkgdXAgc29tZSAoYmVuaWduKSBjb21waWxlciB3YXJuaW5ncyBmcm9tIGxpYnhmcwoJLSBmaXhlZCA2NC1iaXQgcG9pbnRlciBhbGlnbm1lbnQgaXNzdWVzIGluIHhmc19jaGVjawoJLSBmaXhlZCA2NC1iaXQgcG9pbnRlciBhbGlnbm1lbnQgaXNzdWVzIGluIHhmc19yZXBhaXIKCS0gdmVyaWZpZWQgdGhlc2Ugb24gSUE2NCwgYWxzbyByZXBvcnRlZCB0byBmaXggc3BhcmMgaXNzdWVzCgp4ZnNwcm9ncy0xLjMuMTAgKDEyIE9jdG9iZXIgMjAwMSkKCS0gc3luYyB3aXRoIFhGUyBrZXJuZWwgaGVhZGVyIGNoYW5nZXMgZm9yIEVBcyBieS1oYW5kbGUKCS0gcG9ydGVkIHhmc19pbWFwIGNvbW1hbmQgZm9yIGR1bXBpbmcgdGhlIGlub2RlIG1hcAoKeGZzcHJvZ3MtMS4zLjkgKDAzIE9jdG9iZXIgMjAwMSkKCS0gZml4IHhmc19yZXBhaXIgYnVnIGluIGhhbmRsaW5nIGEgY29ycnVwdCByb290IGRpcmVjdG9yeQoJICBpbm9kZSB3aXRoIG11bHRpcGxlICJsb3N0K2ZvdW5kIiBlbnRyaWVzCgktIGZpeCB4ZnNfbG9ncHJpbnQgYnVnIGluIHNjYW5uaW5nIGZvciBsb2cgaGVhZCBhbmQgdGFpbAoJLSBlbnN1cmUgeGZzX2JtYXAgZG9lc24ndCBpc3N1ZSBYRlMgaW9jdGxzIHRvIG5vbi1YRlMgZmlsZXMKCS0gbnVtZXJvdXMgbWFuIHBhZ2UgdXBkYXRlcwoKeGZzcHJvZ3MtMS4zLjggKDE5IFNlcHRlbWJlciAyMDAxKQoJLSByZXdyb3RlIHRoZSBMVk0gc3VwcG9ydCB1c2VkIGJ5IG1rZnMueGZzIHRvIGNhbGwgZXh0ZXJuYWwKCSAgbHZkaXNwbGF5IHByb2dyYW0gdG8gZ2V0IHZvbHVtZSBnZW9tZXRyeSAobWtwQG1rcC5uZXQpCgktIGZpeCBidWcgaW4gTFZNIGRyaXZlciB3cmFwcGVyIHdoZXJlIGl0IHdvdWxkIG5vdCBoYXZlIGJlZW4KCSAgdXNlZCBhdCBhbGwsIGV2ZXIgKHNpbmNlIDEuMy4wKSwgZHVlIHRvIGlkaW90IHByb2dyYW1tZXIKCSAgZXJyb3IgKCpibHVzaCopIC0tIGFsc28gdGhhbmtzIHRvIG1rcCBmb3IgdGhlIGJ1ZyBmaXgKCnhmc3Byb2dzLTEuMy43ICgxMCBTZXB0ZW1iZXIgMjAwMSkKCS0gZW5hYmxlIHByZWFsbG9jYXRpb24gaW4geGZzX21rZmlsZSBbbWlzc2VkIGR1cmluZyBwb3J0P10KCS0gZml4IHhmc19kYiBjb3JlIGR1bXAgd2hlbiByZXBvcnRpbmcgZnJlZXNwYWNlCgktIGFsbG93IGxpYnV1aWQgdG8gYmUgbGlua2VkIGR5bmFtaWNhbGx5IGlmIGRlc2lyZWQgKGJhc2VkCgkgIG9uIGEgcGF0Y2ggZnJvbSBDb2xpbiBXYWx0ZXJzIDx3YWx0ZXJzQHZlcmJ1bS5vcmc+LCBoZWxwcwoJICB0aGUgZm9sayB3b3JraW5nIG9uIHRoZSBEZWJpYW4gaW5zdGFsbGVyIGZvciBYRlMpCgktIGxpY2Vuc2luZyBjaGFuZ2UgZm9yICJsaWJoYW5kbGUiICh3YXMgR1BMLCBub3cgTEdQTC0yLjEpCgkgIGFuZCBzb21lIHJlbGF0ZWQgaGVhZGVyIGZpbGVzCgp4ZnNwcm9ncy0xLjMuNiAoMzEgQXVndXN0IDIwMDEpCgktIG1ha2UgbWtmcy54ZnMgYXdhcmUgb2YgZ2VvbWV0cmllcyB0aGF0IG1pZ2h0IGNhdXNlCgkgIGlub2RlIG51bWJlcnMgdG8gZXhjZWVkIDMyIHNpZ25pZmljYW50IGJpdHMuCgktIG1ha2UgeGZzX2dyb3dmcyB3YXJuIGlmIG5ldyBmaWxlc3lzdGVtIHdpbGwgaGF2ZQoJICBpbm9kZSBudW1iZXJzIHRoYXQgZXhjZWVkIDMyIHNpZ25pZmljYW50IGJpdHMuCgktIGZpeCBsb2dwcmludCBidWcgaW4gcmVwb3J0aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZXMKCSAgKHRoYW5rcyB0byBUYW5nIExpbmdibyA8dGFuZ2xiQHNpbmEuY29tPiBmb3IgZml4aW5nIHRoaXMpCgktIGZpeCBta2ZzLnhmcyBjb3JlIGR1bXAgd2hlbiBhdHRlbXBpbmcgdG8gcnVuIG9uIGRldmljZXMKCSAgd2hpY2ggYXJlIHRvbyBzbWFsbCB0byBob2xkIGEgdmFsaWQgWEZTIGZpbGVzeXN0ZW0KCnhmc3Byb2dzLTEuMy41ICgxMyBBdWd1c3QgMjAwMSkKCS0gZml4IGJ1ZyBpbiB4ZnNfZGIgYml0IGhhbmRsaW5nIG9uIGJpZyBlbmRpYW4gcGxhdGZvcm1zCgktIGZpeCBta2ZzIGJ1ZyByZWxhdGVkIHRvIHRvby1zbWFsbCBmaW5hbCBhbGxvY2F0aW9uIGdyb3VwCgktIGZpeCBzaWduZWRuZXNzIGJ1ZyBpbiBETUFQSSBpb2N0bCBzdHJ1Y3R1cmUgZGVmaW5pdGlvbgoKeGZzcHJvZ3MtMS4zLjQgKDA0IEF1Z3VzdCAyMDAxKQoJLSBmaXggZW5kaWFuIGJ1ZyBpbiB4ZnNfZGIgImZyYWciIGNvbW1hbmQKCS0gc21hbGwgY29uZmlndXJlIHNjcmlwdCBjaGFuZ2VzIHRvIGFsbG93IGNyb3NzIGNvbXBpbGF0aW9uCgktIHNldmVyYWwgbWFuIHBhZ2VzIHVwZGF0ZWQgdG8gZG9jdW1lbnQgZXh0ZXJuYWwgbG9nIHVzYWdlCgktIGluc3RhbGwgYW5vdGhlciBzaGFyZWQgbGlicmFyeSBzeW1saW5rIGZvciBsZCB0byBmaW5kCgktIHN3aXRjaGVkIG9uIC1mbm8tc3RyaWN0LWFsaWFzaW5nIGZvciBsaWJyYXJ5IG9iamVjdCBidWlsZHMKCS0gZml4IHNldmVyYWwgbWlub3IgY29tcGlsZXIgd2FybmluZ3Mgd2hlbiBidWlsZGluZyBvbiBJQTY0Cgp4ZnNwcm9ncy0xLjMuMyAoMjcgSnVseSAyMDAxKQoJLSBmaXhlcyBmb3IgKGhvcGVmdWxseSkgdGhlIGxhc3QgZmV3IG5pdHMgaW4gbGlidG9vbCB1c2FnZQoKeGZzcHJvZ3MtMS4zLjIgKDIzIEp1bHkgMjAwMSkKCS0gaW5zdGFsbCBzdGF0aWMgbGlicyBhbmQgbGlidG9vbCBhcmNoaXZlcyBpbnRvIC91c3IvbGliCgktIHNoYXJlZCBsaWJyYXJpZXMgYXJlIHVuY2hhbmdlZCwgaG93ZXZlcgoKeGZzcHJvZ3MtMS4zLjEgKDE1IEp1bHkgMjAwMSkKCS0gdXBkYXRlZCB4ZnNfdHlwZXMuaCBmaWxlIGZyb20gdGhlIGtlcm5lbCBjaGFuZ2VzIG5lZWRlZCBmb3IKCSAgYW4geGZzZHVtcCBmaXguCgktIHRpZHkgdXAgdmFyaW91cyBhc3BlY3RzIG9mIHRoZSBsaWJ0b29sIHJld29yawoJLSBYVk0gc3RyaXBlIHVuaXQvd2lkdGggZXh0cmFjdGlvbgoJLSBmaXggYW4gZW5kaWFuIGJ1ZyBpbiB4ZnNfZGIgIndyaXRlIiBjb21tYW5kCgktIGZpeCBhIGJ1aWxkIHByb2JsZW0gd2l0aCBsaWJsdm0uYSBpbnN0YWxsZWQKCS0gZml4IGJ1ZyBpbiB4ZnNfZ3Jvd2ZzIG1vdW50IG9wdGlvbiBwYXJzaW5nIHdpdGggZXh0ZXJuYWwgbG9nCgktIEJMS1NaU0VUIGlvY3RsIG5vdyBjb25kaXRpb25hbCB2aWEgdGhlIE1ha2VmaWxlIChvZmYgYnkgZGVmYXVsdCkKCS0gcmV3b3JrIHNvbWUgb2YgdGhlIERlYmlhbiBwYWNrYWdpbmcgcnVsZXMKCS0gZml4IHNpZ24gb2YgQkxLR0VUU0laRSBpb2N0bCBhcmd1bWVudCBpbiBsaWJ4ZnMKCS0gdXBkYXRlZCB4ZnNfZnMuaCB3aXRoIERNQVBJIHNldGRtIGRldGFpbHMgZm9yIGR1bXAvcmVzdG9yZQoKeGZzcHJvZ3MtMS4zLjAgKDExIEp1bHkgMjAwMSkKCS0gcmV3b3JrZWQgTWFrZWZpbGVzIHRvIHVzZSBsaWJ0b29sCgktIG5ldyBsaWJkaXNrIHRvIGFsbG93IHNoYXJpbmcgb2YgZ2VuZXJpYyBtb3VudC9kaXNrIGNvZGUgYW5kCgktIGFsc28gYWJzdHJhY3RzIGluZGl2aWR1YWwgZHJpdmVyIHN1cHBvcnQgKExWTSwgTUQsIFhWTS4uKQoJLSBwYXJ0aXRpb24gdGFibGUgZGV0ZWN0aW9uIHNvIG1rZnMueGZzIGRvZXNuJ3QgYmxpbmRseSBvdmVyd3JpdGUKCS0gc21hbGwgeGZzX3JlcGFpciBidWcgZml4IGZyb20gU3RldmUKCnhmc3Byb2dzLTEuMi44ICgwMiBKdWx5IDIwMDEpCgktIGZpeGVkIGEgYnVnIGluIGxpYnhmcyAvZXRjL210YWIgcmVhZC1vbmx5IG1vdW50IGRldGVjdGlvbgoJLSBmaXJzdCB0cnkgcHJvY2ZzLCBmYWxsIGJhY2sgdG8gL2V0Yy9tdGFiLCBmb3IgcmVhZC1vbmx5IG1vdW50cwoJLSBzeW5jIHdpdGggcmVjZW50IG1vdW50IGNvZGUgY2hhbmdlcyBmb3IgcmVpc2VyZnMgYW5kIGV4dDMgcHJvYmVzCgktIGZpeCBsb2dwcmludCBidWlsZCBwcm9ibGVtIHVuZGVyIGdjYyAzLjAKCnhmc3Byb2dzLTEuMi43ICgyMiBNYXkgMjAwMSkKCS0gbmV3IHhmc19mcmVlemUoOCkgY29tbWFuZCAtIHZvbHVtZSBtYW5hZ2VyIHNuYXBzaG90IGhlbHBlcgoKeGZzcHJvZ3MtMS4yLjYgKDE1IE1heSAyMDAxKQoJLSBtZXJnZSBzdXBwb3J0IGZvciAtZCBhZ3NpemU9L3N1PS9zdz0gKEFHLCBzdHJpcGUgdW5pdC93aWR0aCBzaXplKQoJLSBtZXJnZSBzdXBwb3J0IGZvciBkeW5hbWljIGNvbmZpZ3VyYXRpb24gb2YgZGVmYXVsdCBsb2cgc2l6ZQoJLSBkb2N1bWVudCB0aGVzZSBhbmQgZml4IGEgY291cGxlIG9mIG1hbiBwYWdlIHR5cG9zIHRvbwoKeGZzcHJvZ3MtMS4yLjUgKDA3IE1heSAyMDAxKQoJLSBmaXggbWlzc2luZyBNYWtlZmlsZSBpbmNsdWRlIGVudHJpZXMgZm9yIExWTSBoZWFkZXJzCgktIGNvbmZpZ3VyZSBzY3JpcHQgZGVmYXVsdCBtYW4gcGF0aCBub3cgL3Vzci9zaGFyZS9tYW4KCS0gYWRkIGV4cGVyaW1lbnRhbCB4ZnNfcnRjcCAocmVhbHRpbWUgY29weSkgY29tbWFuZAoJLSBwb3dlcnBjIGJ1aWxkIGZhaWx1cmUgZml4dXBzIC0gdGhhbmtzIHRvIFJvYmVydCBSYW1pZWdhCgktIGNsZWFudXAgYXJjaC1zcGVjaWZpYyBjb2RlLCBlc3AuIHRoZSBieXRlc3dhYiByb3V0aW5lcwoJLSBhcyBhIHJlc3VsdCwgbW92ZSB0byAtTzEgYXMgZGVmYXVsdCBmb3IgZXh0ZXJuIGlubGluZXMKCnhmc3Byb2dzLTEuMi40ICgwMSBNYXkgMjAwMSkKCS0gYWRkZWQgLUwgb3B0aW9uIHRvIG1rZnMueGZzIChmaWxlc3lzdGVtIGxhYmVsKQoKeGZzcHJvZ3MtMS4yLjMgKDI3IEFwcmlsIDIwMDEpCgktIGFkZCBkcXVvdCBhbmQgcXVvdGFvZmYgbG9nIGl0ZW0gc3VwcG9ydCBpbnRvIHhmc19sb2dwcmludAoJLSBmaXggbG9ncHJpbnQgY29yZSBkdW1wIHJlcG9ydGluZyBBR0kgaW4gImNvbnRpbnVlIidkIHRyYW5zYWN0aW9ucwoKeGZzcHJvZ3MtMS4yLjIgKDA5IEFwcmlsIDIwMDEpCgktIGZpeCBwcm9ibGVtIGluIHhmc19kYiAoY2hlY2spIGdyb3VwIHF1b3RhIGxvZ2ljCgktIGZpeGVzIHRvIHdhcm5pbmdzIGZyb20gcmVjZW50IGdjYyBhbmQvb3IgNjQtYml0IGJ1aWxkcwoKeGZzcHJvZ3MtMS4yLjEgKDA0IEFwcmlsIDIwMDEpCgktIHN5bmMgdXAgd2l0aCByZWNlbnQgY2hhbmdlcyB0byBYRlMga2VybmVsIGhlYWRlcnMKCnhmc3Byb2dzLTEuMi4wICgwMSBBcHJpbCAyMDAxKQoJLSBzdXBwb3J0IGZvciBncm91cCBxdW90YSBhZGRlZAoJLSBzb21lIGhlYWRlcnMgdXBkYXRlZCwgaW4gcGFydGljdWxhciA8eHFtLmg+CgktIG5vdyBpbiBsYXRlIHN0YWdlcyBvZiBiZXRhCgp4ZnNwcm9ncy0xLjEuOSAoMjYgTWFyY2ggMjAwMSkKCS0gYWRkZWQgYXV0b21hZ2ljIHN0cmlwZSB1bml0L3N0cmlwZSB3aWR0aCBleHRyYWN0aW9uIGZvciBNRCBkZXZpY2VzCgp4ZnNwcm9ncy0xLjEuOCAoMjMgTWFyY2ggMjAwMSkKCS0gbWtmcyBoZXVyaXN0aWNzIHRvIG1ha2UgYSBxdWFsaWZpZWQgZ3Vlc3Mgb2YgaW50ZXJuYWwgbG9nc2l6ZQoKeGZzcHJvZ3MtMS4xLjcgKDIwIE1hcmNoIDIwMDEpCgktIHVwZ3JhZGVkIExWTSB0byAwLjliZXRhNgoJLSBtaW5vciBycG0gc3BlYyBmaWxlIGNoYW5nZXMKCnhmc3Byb2dzLTEuMS42ICgyMCBNYXJjaCAyMDAxKQoJLSBmaXggc3BhcmMgYnVpbGQgZmFpbHVyZSAtIGZjbnRsLmggbWlzc2luZyBPX0RJUkVDVAoJLSBhZGRlZCBSRUFETUUucXVvdGEgZGVzY3JpYmluZyB1c2Ugb2YgcXVvdGEgd2l0aCBYRlMKCnhmc3Byb2dzLTEuMS41ICgxMiBNYXJjaCAyMDAxKQoJLSB1cGdyYWRlZCBMVk0gc3VwcG9ydCB0byAwLjliZXRhMiAoSU9QIDEwKQoKeGZzcHJvZ3MtMS4xLjQgKDEwIE1hcmNoIDIwMDEpCgktIGtlcm5lbCBub3cgc3VwcG9ydHMgT19ESVJFQ1QgLSByZS1lbmFibGUgaXRzIHVzZSBpbiB4ZnNfbWtmaWxlCgktIEJMS1NFVFNJWkUgaW9jdGwgcmVwbGFjZWQgYnkgQkxLQlNaU0VUIGlvY3RsIGluIGxpYnhmcwoJLSBsaWJ4ZnNfaW5pdCBleHRlbmRlZCBzbyBvbmx5IG1rZnMgYW5kIHhmc19yZXBhaXIgdXNlIEJMS0JTWlNFVAoJLSBOT1RFOiB0aGlzIHZlcnNpb24gcmVxdWlyZXMgYW4gWEZTIGtlcm5lbCBmcm9tIE1hcmNoIDkgb3IgbGF0ZXIKCnhmc3Byb2dzLTEuMS4zICgwMiBNYXJjaCAyMDAxKQoJLSBtaW5vciBNYWtlZmlsZS1yZWxhdGVkIGNsZWFudXBzCgp4ZnNwcm9ncy0xLjEuMiAoMTAgRmVicnVhcnkgMjAwMSkKCS0gYWRkZWQgbGliaGFuZGxlIHJvdXRpbmVzIHRvIHNpbXBsaWZ5IGR1bXAvcmVzdG9yZSBFQSBzdXBwb3J0Cgp4ZnNwcm9ncy0xLjEuMSAoMzAgSmFudWFyeSAyMDAxKQoJLSBtaW5vciBycG0gYW5kIGRlYiBwYWNrYWdpbmcgd29yawoKeGZzcHJvZ3MtMS4xLjAgKDE1IEphbnVhcnkgMjAwMSkKCS0gcmV3b3JrIHhmcy1jbWRzIHBhY2thZ2UgaW50byBiYXNlLCBkZXZlbCBhbmQgZHVtcCBwYWNrYWdlcwoJLSBjb21wbGV0ZWQgRGViaWFuIHBhY2thZ2luZwoJLSBsYXRlIGJldGEgY29kZQoKeGZzLWNtZHMtMS4wLjcgKDAyIEphbnVhcnkgMjAwMSkKCS0gYWRkZWQgbWtmcyBzdXBwb3J0IGZvciBleHRyYWN0aW5nIExWTSBzdHJpcGUgdW5pdC93aWR0aAoJLSBsaWJhdHRyICgqZXhwZXJpbWVudGFsKiBleHRlbmRlZCBhdHRyaWJ1dGVzIGludGVyZmFjZSkgYWRkZWQKCS0gcmVtb3ZlZCB4ZnNfZnN0YWIuNSBtYW4gcGFnZSAobWVyZ2VkIGludG8gbW91bnQuOCkKCS0gaW5zdGFsbCB4ZnNfcmVwYWlyIGludG8gL3NiaW4sIG5vdCAvdXNyL3NiaW4KCnhmcy1jbWRzLTEuMC42ICgwNCBPY3RvYmVyIDIwMDApCgktIHJld29ya2VkIGV4dGVybmFsIGxvZyBmb3JtYXQgdG8gYmUgSVJJWCBjb21wYXRpYmxlCgktIG1rZnMsIHJlcGFpciwgZGIsIGxvZ3ByaW50IG5vdyB3b3JrIHdpdGggbmV3IGZvcm1hdAoJLSB4ZnNfYWRtaW4gYWRkZWQgZm9yIHNldHRpbmcgZmlsZXN5c3RlbSBsYWJlbAoKeGZzLWNtZHMtMS4wLjUgKDE4IFNlcHRlbWJlciAyMDAwKQoJLSBtaW5vciBidWcgZml4ZXMKCS0gZmlyc3QgYmV0YSByZWxlYXNlCgp4ZnMtY21kcy0xLjAuNCAoMTggQXVndXN0IDIwMDApCgktIG1pbm9yIGJ1ZyBmaXhlcwoJLSB4ZnNfZ3Jvd2ZzIGFkZGVkCgktIHhmc19pbmZvIGFkZGVkCgktIGxhdGUgYWxwaGEgY29kZQoKeGZzLWNtZHMtMS4wLjMgKDE2IEF1Z3VzdCAyMDAwKQoJLSBudW1lcm91cyBidWcgZml4ZXMKCS0geGZzZHVtcCBhbmQgeGZzcmVzdG9yZSBhZGRlZAoJLSB4ZnNzdGF0cyBhZGRlZAoJLSBmc2NrLnhmcyAoc3ltbGluayB0byAvYmluL3RydWUpIGFkZGVkCgktIGRlbWlzZSBvZiBzaW0gbGlicmFyeSBjb21wbGV0ZSwgbWtmcyBhbmQgcmVwYWlyIHJld29ya2VkCgktIG5vIGxvbmdlciBuZWVkIHRvIGhhdmUgYW4gWEZTIGtlcm5lbCBoYW5keSBmb3IgYnVpbGRpbmcgeGZzLWNtZHMKCS0geGZzX2NvcHkgY29tcGlsZXMgb24gTGludXgKCS0gZHVtcC9yZXN0b3JlIFJFQURNRSBhZGRlZAoJLSBsYXRlIGFscGhhIGNvZGUKCnhmcy1jbWRzLTEuMC4yICgyNyBKdWx5IDIwMDApCgktIG51bWVyb3VzIGJ1ZyBmaXhlcwoJLSB4ZnNfYXR0ciAoZXh0ZW5kZWQgYXR0cmlidXRlcykgY29tbWFuZCBhZGRlZAoJLSBmc3JfeGZzIGFkZGVkIChwb3J0ZWQgYnkgam9uZXNAdGFjYy51dGV4YXMuZWR1KQoJLSBMVk0rWEZTIFJFQURNRSBhZGRlZAoJLSBlYXJseSBhbHBoYSBjb2RlCgp4ZnMtY21kcy0xLjAuMSAoNSBKdWx5IDIwMDApCgktIG51bWVyb3VzIGJ1ZyBmaXhlcwoJLSByZXdvcmtlZCBidWlsZCBlbnZpcm9ubWVudAoJLSBiZWd1biB3b3JrIG9uIHVzZXIva2VybmVsIHNlcGFyYXRpb24KCS0gZWFybHkgYWxwaGEgY29kZQoKeGZzLWNtZHMtMS4wLjAgKDE2IEp1bmUgMjAwMCkKCS0gaW5pdGlhbCByZWxlYXNlIGZvciBVU0VOSVggQ0RzCgktIGVhcmx5IGFscGhhIGNvZGUK