S2VybmVsIGRyaXZlciBzaXM1NTk1Cj09PT09PT09PT09PT09PT09PT09PQoKU3VwcG9ydGVkIGNoaXBzOgogICogU2lsaWNvbiBJbnRlZ3JhdGVkIFN5c3RlbXMgQ29ycC4gU2lTNTU5NSBTb3V0aGJyaWRnZSBIYXJkd2FyZSBNb25pdG9yCiAgICBQcmVmaXg6ICdzaXM1NTk1JwogICAgQWRkcmVzc2VzIHNjYW5uZWQ6IElTQSBpbiBQQ0ktc3BhY2UgZW5jb2RlZCBhZGRyZXNzCiAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgU2lsaWNvbiBJbnRlZ3JhdGVkIFN5c3RlbXMgQ29ycC4gc2l0ZS4KCkF1dGhvcnM6CiAgICAgICAgS3n2c3RpIE3kbGtraSA8a21hbGtraUBjYy5odXQuZmk+LAogICAgICAgIE1hcmsgRC4gU3R1ZGViYWtlciA8bWRzeHl6MTIzQHlhaG9vLmNvbT4sCiAgICAgICAgQXVyZWxpZW4gSmFybm8gPGF1cmVsaWVuQGF1cmVsMzIubmV0PiAyLjYgcG9ydAoKICAgU2lTIHNvdXRoYnJpZGdlIGhhcyBhIExNNzgtbGlrZSBjaGlwIGludGVncmF0ZWQgb24gdGhlIHNhbWUgSUMuCiAgIFRoaXMgZHJpdmVyIGlzIGEgY3VzdG9taXplZCBjb3B5IG9mIGxtNzguYwoKICAgU3VwcG9ydHMgZm9sbG93aW5nIHJldmlzaW9uczoKICAgICAgIFZlcnNpb24gICAgICAgICBQQ0kgSUQgICAgICAgICAgUENJIFJldmlzaW9uCiAgICAgICAxICAgICAgICAgICAgICAgMTAzOS8wMDA4ICAgICAgIEFGIG9yIGxlc3MKICAgICAgIDIgICAgICAgICAgICAgICAxMDM5LzAwMDggICAgICAgQjAgb3IgZ3JlYXRlcgoKICAgTm90ZTogdGhlc2UgY2hpcHMgY29udGFpbiBhIDAwMDggZGV2aWNlIHdoaWNoIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZQogICAgICAgIDU1OTUuIFdlIHJlY29nbml6ZSB0aGVzZSBieSB0aGUgcHJlc2VuY2Ugb2YgdGhlIGxpc3RlZAogICAgICAgICJibGFja2xpc3QiIFBDSSBJRCBhbmQgcmVmdXNlIHRvIGxvYWQuCgogICBOT1QgU1VQUE9SVEVEICAgICAgIFBDSSBJRCAgICAgICAgICBCTEFDS0xJU1QgUENJIElECiAgICAgICAgNTQwICAgICAgICAgICAgMDAwOCAgICAgICAgICAgIDA1NDAKICAgICAgICA1NTAgICAgICAgICAgICAwMDA4ICAgICAgICAgICAgMDU1MAogICAgICAgNTUxMyAgICAgICAgICAgIDAwMDggICAgICAgICAgICA1NTExCiAgICAgICA1NTgxICAgICAgICAgICAgMDAwOCAgICAgICAgICAgIDU1OTcKICAgICAgIDU1ODIgICAgICAgICAgICAwMDA4ICAgICAgICAgICAgNTU5NwogICAgICAgNTU5NyAgICAgICAgICAgIDAwMDggICAgICAgICAgICA1NTk3CiAgICAgICAgNjMwICAgICAgICAgICAgMDAwOCAgICAgICAgICAgIDA2MzAKICAgICAgICA2NDUgICAgICAgICAgICAwMDA4ICAgICAgICAgICAgMDY0NQogICAgICAgIDczMCAgICAgICAgICAgIDAwMDggICAgICAgICAgICAwNzMwCiAgICAgICAgNzM1ICAgICAgICAgICAgMDAwOCAgICAgICAgICAgIDA3MzUKCgpNb2R1bGUgUGFyYW1ldGVycwotLS0tLS0tLS0tLS0tLS0tLQpmb3JjZV9hZGRyPTB4YWRkcglTZXQgdGhlIEkvTyBiYXNlIGFkZHJlc3MuIFVzZWZ1bCBmb3IgYm9hcmRzCgkJCXRoYXQgZG9uJ3Qgc2V0IHRoZSBhZGRyZXNzIGluIHRoZSBCSU9TLiBEb2VzIG5vdCBkbyBhCgkJCVBDSSBmb3JjZTsgdGhlIGRldmljZSBtdXN0IHN0aWxsIGJlIHByZXNlbnQgaW4gbHNwY2kuCgkJCURvbid0IHVzZSB0aGlzIHVubGVzcyB0aGUgZHJpdmVyIGNvbXBsYWlucyB0aGF0IHRoZQoJCQliYXNlIGFkZHJlc3MgaXMgbm90IHNldC4KCQkJRXhhbXBsZTogJ21vZHByb2JlIHNpczU1OTUgZm9yY2VfYWRkcj0weDI5MCcKCgpEZXNjcmlwdGlvbgotLS0tLS0tLS0tLQoKVGhlIFNpUzU1OTUgc291dGhicmlkZ2UgaGFzIGludGVncmF0ZWQgaGFyZHdhcmUgbW9uaXRvciBmdW5jdGlvbnMuIEl0IGFsc28KaGFzIGFuIEkyQyBidXMsIGJ1dCB0aGlzIGRyaXZlciBvbmx5IHN1cHBvcnRzIHRoZSBoYXJkd2FyZSBtb25pdG9yLiBGb3IgdGhlCkkyQyBidXMgZHJpdmVyIHNlZSBpMmMtc2lzNTU5NS4KClRoZSBTaVM1NTk1IGltcGxlbWVudHMgemVybyBvciBvbmUgdGVtcGVyYXR1cmUgc2Vuc29yLCB0d28gZmFuIHNwZWVkCnNlbnNvcnMsIGZvdXIgb3IgZml2ZSB2b2x0YWdlIHNlbnNvcnMsIGFuZCBhbGFybXMuCgpPbiB0aGUgZmlyc3QgdmVyc2lvbiBvZiB0aGUgY2hpcCwgdGhlcmUgYXJlIGZvdXIgdm9sdGFnZSBzZW5zb3JzIGFuZCBvbmUKdGVtcGVyYXR1cmUgc2Vuc29yLgoKT24gdGhlIHNlY29uZCB2ZXJzaW9uIG9mIHRoZSBjaGlwLCB0aGUgdGVtcGVyYXR1cmUgc2Vuc29yICh0ZW1wKSBhbmQgdGhlCmZpZnRoIHZvbHRhZ2Ugc2Vuc29yIChpbjQpIHNoYXJlIGEgcGluIHdoaWNoIGlzIGNvbmZpZ3VyYWJsZSwgYnV0IG5vdAp0aHJvdWdoIHRoZSBkcml2ZXIuIFNvcnJ5LiBUaGUgZHJpdmVyIHNlbnNlcyB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgcGluLAp3aGljaCB3YXMgaG9wZWZ1bGx5IHNldCBieSB0aGUgQklPUy4KClRlbXBlcmF0dXJlcyBhcmUgbWVhc3VyZWQgaW4gZGVncmVlcyBDZWxzaXVzLiBBbiBhbGFybSBpcyB0cmlnZ2VyZWQgb25jZQp3aGVuIHRoZSBtYXggaXMgY3Jvc3NlZDsgaXQgaXMgYWxzbyB0cmlnZ2VyZWQgd2hlbiBpdCBkcm9wcyBiZWxvdyB0aGUgbWluCnZhbHVlLiBNZWFzdXJlbWVudHMgYXJlIGd1YXJhbnRlZWQgYmV0d2VlbiAtNTUgYW5kICsxMjUgZGVncmVlcywgd2l0aCBhCnJlc29sdXRpb24gb2YgMSBkZWdyZWUuCgpGYW4gcm90YXRpb24gc3BlZWRzIGFyZSByZXBvcnRlZCBpbiBSUE0gKHJvdGF0aW9ucyBwZXIgbWludXRlKS4gQW4gYWxhcm0gaXMKdHJpZ2dlcmVkIGlmIHRoZSByb3RhdGlvbiBzcGVlZCBoYXMgZHJvcHBlZCBiZWxvdyBhIHByb2dyYW1tYWJsZSBsaW1pdC4gRmFuCnJlYWRpbmdzIGNhbiBiZSBkaXZpZGVkIGJ5IGEgcHJvZ3JhbW1hYmxlIGRpdmlkZXIgKDEsIDIsIDQgb3IgOCkgdG8gZ2l2ZQp0aGUgcmVhZGluZ3MgbW9yZSByYW5nZSBvciBhY2N1cmFjeS4gTm90IGFsbCBSUE0gdmFsdWVzIGNhbiBhY2N1cmF0ZWx5IGJlCnJlcHJlc2VudGVkLCBzbyBzb21lIHJvdW5kaW5nIGlzIGRvbmUuIFdpdGggYSBkaXZpZGVyIG9mIDIsIHRoZSBsb3dlc3QKcmVwcmVzZW50YWJsZSB2YWx1ZSBpcyBhcm91bmQgMjYwMCBSUE0uCgpWb2x0YWdlIHNlbnNvcnMgKGFsc28ga25vd24gYXMgSU4gc2Vuc29ycykgcmVwb3J0IHRoZWlyIHZhbHVlcyBpbiB2b2x0cy4gQW4KYWxhcm0gaXMgdHJpZ2dlcmVkIGlmIHRoZSB2b2x0YWdlIGhhcyBjcm9zc2VkIGEgcHJvZ3JhbW1hYmxlIG1pbmltdW0gb3IKbWF4aW11bSBsaW1pdC4gTm90ZSB0aGF0IG1pbmltdW0gaW4gdGhpcyBjYXNlIGFsd2F5cyBtZWFucyAnY2xvc2VzdCB0bwp6ZXJvJzsgdGhpcyBpcyBpbXBvcnRhbnQgZm9yIG5lZ2F0aXZlIHZvbHRhZ2UgbWVhc3VyZW1lbnRzLiBBbGwgdm9sdGFnZQppbnB1dHMgY2FuIG1lYXN1cmUgdm9sdGFnZXMgYmV0d2VlbiAwIGFuZCA0LjA4IHZvbHRzLCB3aXRoIGEgcmVzb2x1dGlvbiBvZgowLjAxNiB2b2x0LgoKSW4gYWRkaXRpb24gdG8gdGhlIGFsYXJtcyBkZXNjcmliZWQgYWJvdmUsIHRoZXJlIGlzIGEgQlRJIGFsYXJtLCB3aGljaCBnZXRzCnRyaWdnZXJlZCB3aGVuIGFuIGV4dGVybmFsIGNoaXAgaGFzIGNyb3NzZWQgaXRzIGxpbWl0cy4gVXN1YWxseSwgdGhpcyBpcwpjb25uZWN0ZWQgdG8gc29tZSBMTTc1LWxpa2UgY2hpcDsgaWYgYXQgbGVhc3Qgb25lIGNyb3NzZXMgaXRzIGxpbWl0cywgdGhpcwpiaXQgZ2V0cyBzZXQuCgpJZiBhbiBhbGFybSB0cmlnZ2VycywgaXQgd2lsbCByZW1haW4gdHJpZ2dlcmVkIHVudGlsIHRoZSBoYXJkd2FyZSByZWdpc3RlcgppcyByZWFkIGF0IGxlYXN0IG9uY2UuIFRoaXMgbWVhbnMgdGhhdCB0aGUgY2F1c2UgZm9yIHRoZSBhbGFybSBtYXkgYWxyZWFkeQpoYXZlIGRpc2FwcGVhcmVkISBOb3RlIHRoYXQgaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIGFsbCBoYXJkd2FyZQpyZWdpc3RlcnMgYXJlIHJlYWQgd2hlbmV2ZXIgYW55IGRhdGEgaXMgcmVhZCAodW5sZXNzIGl0IGlzIGxlc3MgdGhhbiAxLjUKc2Vjb25kcyBzaW5jZSB0aGUgbGFzdCB1cGRhdGUpLiBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiBlYXNpbHkgbWlzcwpvbmNlLW9ubHkgYWxhcm1zLgoKVGhlIFNpUzU1OTUgb25seSB1cGRhdGVzIGl0cyB2YWx1ZXMgZWFjaCAxLjUgc2Vjb25kczsgcmVhZGluZyBpdCBtb3JlIG9mdGVuCndpbGwgZG8gbm8gaGFybSwgYnV0IHdpbGwgcmV0dXJuICdvbGQnIHZhbHVlcy4KClByb2JsZW1zCi0tLS0tLS0tClNvbWUgY2hpcHMgcmVmdXNlIHRvIGJlIGVuYWJsZWQuIFdlIGRvbid0IGtub3cgd2h5LgpUaGUgZHJpdmVyIHdpbGwgcmVjb2duaXplIHRoaXMgYW5kIHByaW50IGEgbWVzc2FnZSBpbiBkbWVzZy4KCg==