ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmdhYXJiaXRlci50eHQgYi9Eb2N1bWVudGF0aW9uL3ZnYWFyYml0ZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4N2Y5YjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZnYWFyYml0ZXIudHh0CkBAIC0wLDAgKzEsMTk0IEBACisKK1ZHQSBBcmJpdGVyCis9PT09PT09PT09PQorCitHcmFwaGljIGRldmljZXMgYXJlIGFjY2Vzc2VkIHRocm91Z2ggcmFuZ2VzIGluIEkvTyBvciBtZW1vcnkgc3BhY2UuIFdoaWxlIG1vc3QKK21vZGVybiBkZXZpY2VzIGFsbG93IHJlbG9jYXRpb24gb2Ygc3VjaCByYW5nZXMsIHNvbWUgIkxlZ2FjeSIgVkdBIGRldmljZXMKK2ltcGxlbWVudGVkIG9uIFBDSSB3aWxsIHR5cGljYWxseSBoYXZlIHRoZSBzYW1lICJoYXJkLWRlY29kZWQiIGFkZHJlc3NlcyBhcwordGhleSBkaWQgb24gSVNBLiBGb3IgbW9yZSBkZXRhaWxzIHNlZSAiUENJIEJ1cyBCaW5kaW5nIHRvIElFRUUgU3RkIDEyNzUtMTk5NAorU3RhbmRhcmQgZm9yIEJvb3QgKEluaXRpYWxpemF0aW9uIENvbmZpZ3VyYXRpb24pIEZpcm13YXJlIFJldmlzaW9uIDIuMSIKK1NlY3Rpb24gNywgTGVnYWN5IERldmljZXMuCisKK1RoZSBSZXNvdXJjZSBBY2Nlc3MgQ29udHJvbCAoUkFDKSBtb2R1bGUgaW5zaWRlIHRoZSBYIHNlcnZlciBbMF0gZXhpc3RlZCBmb3IKK3RoZSBsZWdhY3kgVkdBIGFyYml0cmF0aW9uIHRhc2sgKGJlc2lkZXMgb3RoZXIgYnVzIG1hbmFnZW1lbnQgdGFza3MpIHdoZW4gbW9yZQordGhhbiBvbmUgbGVnYWN5IGRldmljZSBjby1leGlzdHMgb24gdGhlIHNhbWUgbWFjaGluZS4gQnV0IHRoZSBwcm9ibGVtIGhhcHBlbnMKK3doZW4gdGhlc2UgZGV2aWNlcyBhcmUgdHJ5aW5nIHRvIGJlIGFjY2Vzc2VkIGJ5IGRpZmZlcmVudCB1c2Vyc3BhY2UgY2xpZW50cworKGUuZy4gdHdvIHNlcnZlciBpbiBwYXJhbGxlbCkuIFRoZWlyIGFkZHJlc3MgYXNzaWdubWVudHMgY29uZmxpY3QuIE1vcmVvdmVyLAoraWRlYWxseSwgYmVpbmcgYW4gdXNlcnNwYWNlIGFwcGxpY2F0aW9uLCBpdCBpcyBub3QgdGhlIHJvbGUgb2YgdGhlIHRoZSBYCitzZXJ2ZXIgdG8gY29udHJvbCBidXMgcmVzb3VyY2VzLiBUaGVyZWZvcmUgYW4gYXJiaXRyYXRpb24gc2NoZW1lIG91dHNpZGUgb2YKK3RoZSBYIHNlcnZlciBpcyBuZWVkZWQgdG8gY29udHJvbCB0aGUgc2hhcmluZyBvZiB0aGVzZSByZXNvdXJjZXMuIFRoaXMKK2RvY3VtZW50IGludHJvZHVjZXMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgVkdBIGFyYml0ZXIgaW1wbGVtZW50ZWQgZm9yIExpbnV4CitrZXJuZWwuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSS4gIERldGFpbHMgYW5kIFRoZW9yeSBvZiBPcGVyYXRpb24KKyAgICAgICAgSS4xIHZnYWFyYgorICAgICAgICBJLjIgbGlicGNpYWNjZXNzCisgICAgICAgIEkuMyB4Zjg2VkdBQXJiaXRlciAoWCBzZXJ2ZXIgaW1wbGVtZW50YXRpb24pCitJSS4gQ3JlZGl0cworSUlJLlJlZmVyZW5jZXMKKworCitJLiBEZXRhaWxzIGFuZCBUaGVvcnkgb2YgT3BlcmF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0kuMSB2Z2FhcmIKKy0tLS0tLS0tLS0KKworVGhlIHZnYWFyYiBpcyBhIG1vZHVsZSBvZiB0aGUgTGludXggS2VybmVsLiBXaGVuIGl0IGlzIGluaXRpYWxseSBsb2FkZWQsIGl0CitzY2FucyBhbGwgUENJIGRldmljZXMgYW5kIGFkZHMgdGhlIFZHQSBvbmVzIGluc2lkZSB0aGUgYXJiaXRyYXRpb24uIFRoZQorYXJiaXRlciB0aGVuIGVuYWJsZXMvZGlzYWJsZXMgdGhlIGRlY29kaW5nIG9uIGRpZmZlcmVudCBkZXZpY2VzIG9mIHRoZSBWR0EKK2xlZ2FjeSBpbnN0cnVjdGlvbnMuIERldmljZSB3aGljaCBkbyBub3Qgd2FudC9uZWVkIHRvIHVzZSB0aGUgYXJiaXRlciBtYXkKK2V4cGxpY2l0bHkgdGVsbCBpdCBieSBjYWxsaW5nIHZnYV9zZXRfbGVnYWN5X2RlY29kaW5nKCkuCisKK1RoZSBrZXJuZWwgZXhwb3J0cyBhIGNoYXIgZGV2aWNlIGludGVyZmFjZSAoL2Rldi92Z2FfYXJiaXRlcikgdG8gdGhlIGNsaWVudHMsCit3aGljaCBoYXMgdGhlIGZvbGxvd2luZyBzZW1hbnRpY3M6CisKKyBvcGVuICAgICAgIDogb3BlbiB1c2VyIGluc3RhbmNlIG9mIHRoZSBhcmJpdGVyLiBCeSBkZWZhdWx0LCBpdCdzIGF0dGFjaGVkIHRvCisgICAgICAgICAgICAgIHRoZSBkZWZhdWx0IFZHQSBkZXZpY2Ugb2YgdGhlIHN5c3RlbS4KKworIGNsb3NlICAgICAgOiBjbG9zZSB1c2VyIGluc3RhbmNlLiBSZWxlYXNlIGxvY2tzIG1hZGUgYnkgdGhlIHVzZXIKKworIHJlYWQgICAgICAgOiByZXR1cm4gYSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgc3RhdHVzIG9mIHRoZSB0YXJnZXQgbGlrZToKKworICAgICAgICAgICAgICAiPGNhcmRfSUQ+LGRlY29kZXM9PGlvX3N0YXRlPixvd25zPTxpb19zdGF0ZT4sbG9ja3M9PGlvX3N0YXRlPiAoaWMsbWMpIgorCisgICAgICAgICAgICAgIEFuIElPIHN0YXRlIHN0cmluZyBpcyBvZiB0aGUgZm9ybSB7aW8sbWVtLGlvK21lbSxub25lfSwgbWMgYW5kCisgICAgICAgICAgICAgIGljIGFyZSByZXNwZWN0aXZlbHkgbWVtIGFuZCBpbyBsb2NrIGNvdW50cyAoZm9yIGRlYnVnZ2luZy8KKyAgICAgICAgICAgICAgZGlhZ25vc3RpYyBvbmx5KS4gImRlY29kZXMiIGluZGljYXRlIHdoYXQgdGhlIGNhcmQgY3VycmVudGx5CisgICAgICAgICAgICAgIGRlY29kZXMsICJvd25zIiBpbmRpY2F0ZXMgd2hhdCBpcyBjdXJyZW50bHkgZW5hYmxlZCBvbiBpdCwgYW5kCisgICAgICAgICAgICAgICJsb2NrcyIgaW5kaWNhdGVzIHdoYXQgaXMgbG9ja2VkIGJ5IHRoaXMgY2FyZC4gSWYgdGhlIGNhcmQgaXMKKyAgICAgICAgICAgICAgdW5wbHVnZ2VkLCB3ZSBnZXQgImludmFsaWQiIHRoZW4gZm9yIGNhcmRfSUQgYW5kIGFuIC1FTk9ERVYKKyAgICAgICAgICAgICAgZXJyb3IgaXMgcmV0dXJuZWQgZm9yIGFueSBjb21tYW5kIHVudGlsIGEgbmV3IGNhcmQgaXMgdGFyZ2V0ZWQuCisKKworIHdyaXRlICAgICAgIDogd3JpdGUgYSBjb21tYW5kIHRvIHRoZSBhcmJpdGVyLiBMaXN0IG9mIGNvbW1hbmRzOgorCisgIHRhcmdldCA8Y2FyZF9JRD4gICA6IHN3aXRjaCB0YXJnZXQgdG8gY2FyZCA8Y2FyZF9JRD4gKHNlZSBiZWxvdykKKyAgbG9jayA8aW9fc3RhdGU+ICAgIDogYWNxdWlyZXMgbG9ja3Mgb24gdGFyZ2V0ICgibm9uZSIgaXMgYW4gaW52YWxpZCBpb19zdGF0ZSkKKyAgdHJ5bG9jayA8aW9fc3RhdGU+IDogbm9uLWJsb2NraW5nIGFjcXVpcmUgbG9ja3Mgb24gdGFyZ2V0IChyZXR1cm5zIEVCVVNZIGlmCisgICAgICAgICAgICAgICAgICAgICAgIHVuc3VjY2Vzc2Z1bCkKKyAgdW5sb2NrIDxpb19zdGF0ZT4gIDogcmVsZWFzZSBsb2NrcyBvbiB0YXJnZXQKKyAgdW5sb2NrIGFsbCAgICAgICAgIDogcmVsZWFzZSBhbGwgbG9ja3Mgb24gdGFyZ2V0IGhlbGQgYnkgdGhpcyB1c2VyIChub3QKKyAgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50ZWQgeWV0KQorICBkZWNvZGVzIDxpb19zdGF0ZT4gOiBzZXQgdGhlIGxlZ2FjeSBkZWNvZGluZyBhdHRyaWJ1dGVzIGZvciB0aGUgY2FyZAorCisgIHBvbGwgICAgICAgICAgICAgICA6IGV2ZW50IGlmIHNvbWV0aGluZyBjaGFuZ2VzIG9uIGFueSBjYXJkIChub3QganVzdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0KQorCisgIGNhcmRfSUQgaXMgb2YgdGhlIGZvcm0gIlBDSTpkb21haW46YnVzOmRldi5mbiIuIEl0IGNhbiBiZSBzZXQgdG8gImRlZmF1bHQiCisgIHRvIGdvIGJhY2sgdG8gdGhlIHN5c3RlbSBkZWZhdWx0IGNhcmQgKFRPRE86IG5vdCBpbXBsZW1lbnRlZCB5ZXQpLiBDdXJyZW50bHksCisgIG9ubHkgUENJIGlzIHN1cHBvcnRlZCBhcyBhIHByZWZpeCwgYnV0IHRoZSB1c2VybGFuZCBBUEkgbWF5IHN1cHBvcnQgb3RoZXIgYnVzCisgIHR5cGVzIGluIHRoZSBmdXR1cmUsIGV2ZW4gaWYgdGhlIGN1cnJlbnQga2VybmVsIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QuCisKK05vdGUgYWJvdXQgbG9ja3M6CisKK1RoZSBkcml2ZXIga2VlcHMgdHJhY2sgb2Ygd2hpY2ggdXNlciBoYXMgd2hpY2ggbG9ja3Mgb24gd2hpY2ggY2FyZC4gSXQKK3N1cHBvcnRzIHN0YWNraW5nLCBsaWtlIHRoZSBrZXJuZWwgb25lLiBUaGlzIGNvbXBsZXhpZmllcyB0aGUgaW1wbGVtZW50YXRpb24KK2EgYml0LCBidXQgbWFrZXMgdGhlIGFyYml0ZXIgbW9yZSB0b2xlcmFudCB0byB1c2VyIHNwYWNlIHByb2JsZW1zIGFuZCBhYmxlCit0byBwcm9wZXJseSBjbGVhbnVwIGluIGFsbCBjYXNlcyB3aGVuIGEgcHJvY2VzcyBkaWVzLgorQ3VycmVudGx5LCBhIG1heCBvZiAxNiBjYXJkcyBjYW4gaGF2ZSBsb2NrcyBzaW11bHRhbmVvdXNseSBpc3N1ZWQgZnJvbQordXNlciBzcGFjZSBmb3IgYSBnaXZlbiB1c2VyIChmaWxlIGRlc2NyaXB0b3IgaW5zdGFuY2UpIG9mIHRoZSBhcmJpdGVyLgorCitJbiB0aGUgY2FzZSBvZiBkZXZpY2VzIGhvdC17dW4sfXBsdWdnZWQsIHRoZXJlIGlzIGEgaG9vayAtIHBjaV9ub3RpZnkoKSAtIHRvCitub3RpZnkgdGhlbSBiZWluZyBhZGRlZC9yZW1vdmVkIGluIHRoZSBzeXN0ZW0gYW5kIGF1dG9tYXRpY2FsbHkgYWRkZWQvcmVtb3ZlZAoraW4gdGhlIGFyYml0ZXIuCisKK1RoZXJlJ3MgYWxzbyBhIGluLWtlcm5lbCBBUEkgb2YgdGhlIGFyYml0ZXIgaW4gdGhlIGNhc2Ugb2YgRFJNLCB2Z2Fjb24gYW5kCitvdGhlcnMgd2hpY2ggbWF5IHVzZSB0aGUgYXJiaXRlci4KKworCitJLjIgbGlicGNpYWNjZXNzCistLS0tLS0tLS0tLS0tLS0tCisKK1RvIHVzZSB0aGUgdmdhIGFyYml0ZXIgY2hhciBkZXZpY2UgaXQgd2FzIGltcGxlbWVudGVkIGFuIEFQSSBpbnNpZGUgdGhlCitsaWJwY2lhY2Nlc3MgbGlicmFyeS4gT25lIGZpZWxkZCB3YXMgYWRkZWQgdG8gc3RydWN0IHBjaV9kZXZpY2UgKGVhY2ggZGV2aWNlCitvbiB0aGUgc3lzdGVtKToKKworICAgIC8qIHRoZSB0eXBlIG9mIHJlc291cmNlIGRlY29kZWQgYnkgdGhlIGRldmljZSAqLworICAgIGludCB2Z2FhcmJfcnNyYzsKKworQmVzaWRlcyBpdCwgaW4gcGNpX3N5c3RlbSB3ZXJlIGFkZGVkOgorCisgICAgaW50IHZnYWFyYl9mZDsKKyAgICBpbnQgdmdhX2NvdW50OworICAgIHN0cnVjdCBwY2lfZGV2aWNlICp2Z2FfdGFyZ2V0OworICAgIHN0cnVjdCBwY2lfZGV2aWNlICp2Z2FfZGVmYXVsdF9kZXY7CisKKworVGhlIHZnYV9jb3VudCBpcyB1c3VhbGx5IG5lZWQgdG8ga2VlcCBpbmZvcm1lZCBob3cgbWFueSBjYXJkcyBhcmUgYmVpbmcKK2FyYml0cmF0ZWQsIHNvIGZvciBpbnN0YW5jZSBpZiB0aGVyZSdzIG9ubHkgb25lIHRoZW4gaXQgY2FuIHRvdGFsbHkgZXNjYXBlIHRoZQorc2NoZW1lLgorCisKK1RoZXNlIGZ1bmN0aW9ucyBiZWxvdyBhY3F1aXJlIFZHQSByZXNvdXJjZXMgZm9yIHRoZSBnaXZlbiBjYXJkIGFuZCBtYXJrIHRob3NlCityZXNvdXJjZXMgYXMgbG9ja2VkLiBJZiB0aGUgcmVzb3VyY2VzIHJlcXVlc3RlZCBhcmUgIm5vcm1hbCIgKGFuZCBub3QgbGVnYWN5KQorcmVzb3VyY2VzLCB0aGUgYXJiaXRlciB3aWxsIGZpcnN0IGNoZWNrIHdoZXRoZXIgdGhlIGNhcmQgaXMgZG9pbmcgbGVnYWN5CitkZWNvZGluZyBmb3IgdGhhdCB0eXBlIG9mIHJlc291cmNlLiBJZiB5ZXMsIHRoZSBsb2NrIGlzICJjb252ZXJ0ZWQiIGludG8gYQorbGVnYWN5IHJlc291cmNlIGxvY2suIFRoZSBhcmJpdGVyIHdpbGwgZmlyc3QgbG9vayBmb3IgYWxsIFZHQSBjYXJkcyB0aGF0CittaWdodCBjb25mbGljdCBhbmQgZGlzYWJsZSB0aGVpciBJT3MgYW5kL29yIE1lbW9yeSBhY2Nlc3MsIGluY2x1ZGluZyBWR0EKK2ZvcndhcmRpbmcgb24gUDJQIGJyaWRnZXMgaWYgbmVjZXNzYXJ5LCBzbyB0aGF0IHRoZSByZXF1ZXN0ZWQgcmVzb3VyY2VzIGNhbgorYmUgdXNlZC4gVGhlbiwgdGhlIGNhcmQgaXMgbWFya2VkIGFzIGxvY2tpbmcgdGhlc2UgcmVzb3VyY2VzIGFuZCB0aGUgSU8gYW5kL29yCitNZW1vcnkgYWNjZXNzIGlzIGVuYWJsZWQgb24gdGhlIGNhcmQgKGluY2x1ZGluZyBWR0EgZm9yd2FyZGluZyBvbiBwYXJlbnQKK1AyUCBicmlkZ2VzIGlmIGFueSkuIEluIHRoZSBjYXNlIG9mIHZnYV9hcmJfbG9jaygpLCB0aGUgZnVuY3Rpb24gd2lsbCBibG9jaworaWYgc29tZSBjb25mbGljdGluZyBjYXJkIGlzIGFscmVhZHkgbG9ja2luZyBvbmUgb2YgdGhlIHJlcXVpcmVkIHJlc291cmNlcyAob3IKK2FueSByZXNvdXJjZSBvbiBhIGRpZmZlcmVudCBidXMgc2VnbWVudCwgc2luY2UgUDJQIGJyaWRnZXMgZG9uJ3QgZGlmZmVyZW50aWF0ZQorVkdBIG1lbW9yeSBhbmQgSU8gYWZhaWspLiBJZiB0aGUgY2FyZCBhbHJlYWR5IG93bnMgdGhlIHJlc291cmNlcywgdGhlIGZ1bmN0aW9uCitzdWNjZWVkcy4gIHZnYV9hcmJfdHJ5bG9jaygpIHdpbGwgcmV0dXJuICgtRUJVU1kpIGluc3RlYWQgb2YgYmxvY2tpbmcuIE5lc3RlZAorY2FsbHMgYXJlIHN1cHBvcnRlZCAoYSBwZXItcmVzb3VyY2UgY291bnRlciBpcyBtYWludGFpbmVkKS4KKworCitTZXQgdGhlIHRhcmdldCBkZXZpY2Ugb2YgdGhpcyBjbGllbnQuCisgICAgaW50ICBwY2lfZGV2aWNlX3ZnYWFyYl9zZXRfdGFyZ2V0ICAgKHN0cnVjdCBwY2lfZGV2aWNlICpkZXYpOworCisKK0ZvciBpbnN0YW5jZSwgaW4geDg2IGlmIHR3byBkZXZpY2VzIG9uIHRoZSBzYW1lIGJ1cyB3YW50IHRvIGxvY2sgZGlmZmVyZW50CityZXNvdXJjZXMsIGJvdGggd2lsbCBzdWNjZWVkIChsb2NrKS4gSWYgZGV2aWNlcyBhcmUgaW4gZGlmZmVyZW50IGJ1c2VzIGFuZAordHJ5aW5nIHRvIGxvY2sgZGlmZmVyZW50IHJlc291cmNlcywgb25seSB0aGUgZmlyc3Qgd2hvIHRyaWVkIHN1Y2NlZWRzLgorICAgIGludCAgcGNpX2RldmljZV92Z2FhcmJfbG9jayAgICAgICAgICh2b2lkKTsKKyAgICBpbnQgIHBjaV9kZXZpY2VfdmdhYXJiX3RyeWxvY2sgICAgICAodm9pZCk7CisKK1VubG9jayByZXNvdXJjZXMgb2YgZGV2aWNlLgorICAgIGludCAgcGNpX2RldmljZV92Z2FhcmJfdW5sb2NrICAgICAgICh2b2lkKTsKKworSW5kaWNhdGVzIHRvIHRoZSBhcmJpdGVyIGlmIHRoZSBjYXJkIGRlY29kZXMgbGVnYWN5IFZHQSBJT3MsIGxlZ2FjeSBWR0EKK01lbW9yeSwgYm90aCwgb3Igbm9uZS4gQWxsIGNhcmRzIGRlZmF1bHQgdG8gYm90aCwgdGhlIGNhcmQgZHJpdmVyIChmYmRldiBmb3IKK2V4YW1wbGUpIHNob3VsZCB0ZWxsIHRoZSBhcmJpdGVyIGlmIGl0IGhhcyBkaXNhYmxlZCBsZWdhY3kgZGVjb2RpbmcsIHNvIHRoZQorY2FyZCBjYW4gYmUgbGVmdCBvdXQgb2YgdGhlIGFyYml0cmF0aW9uIHByb2Nlc3MgKGFuZCBjYW4gYmUgc2FmZSB0byB0YWtlCitpbnRlcnJ1cHRzIGF0IGFueSB0aW1lLgorICAgIGludCAgcGNpX2RldmljZV92Z2FhcmJfZGVjb2RlcyAgICAgIChpbnQgbmV3X3ZnYWFyYl9yc3JjKTsKKworQ29ubmVjdHMgdG8gdGhlIGFyYml0ZXIgZGV2aWNlLCBhbGxvY2F0ZXMgdGhlIHN0cnVjdAorICAgIGludCAgcGNpX2RldmljZV92Z2FhcmJfaW5pdCAgICAgICAgICh2b2lkKTsKKworQ2xvc2UgdGhlIGNvbm5lY3Rpb24KKyAgICB2b2lkIHBjaV9kZXZpY2VfdmdhYXJiX2ZpbmkgICAgICAgICAodm9pZCk7CisKKworSS4zIHhmODZWR0FBcmJpdGVyIChYIHNlcnZlciBpbXBsZW1lbnRhdGlvbikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyhUT0RPKQorCitYIHNlcnZlciBiYXNpY2FsbHkgd3JhcHMgYWxsIHRoZSBmdW5jdGlvbnMgdGhhdCB0b3VjaCBWR0EgcmVnaXN0ZXJzIHNvbWVob3cuCisKKworSUkuIENyZWRpdHMKKz09PT09PT09PT09CisKK0JlbmphbWluIEhlcnJlbnNjaG1pZHQgKElCTT8pIHN0YXJ0ZWQgdGhpcyB3b3JrIHdoZW4gaGUgZGlzY3Vzc2VkIHN1Y2ggZGVzaWduCit3aXRoIHRoZSBYb3JnIGNvbW11bml0eSBpbiAyMDA1IFsxLCAyXS4gSW4gdGhlIGVuZCBvZiAyMDA3LCBQYXVsbyBaYW5vbmkgYW5kCitUaWFnbyBWaWduYXR0aSAoYm90aCBvZiBDM1NML0ZlZGVyYWwgVW5pdmVyc2l0eSBvZiBQYXJhbuEpIHByb2NlZWRlZCBoaXMgd29yaworZW5oYW5jaW5nIHRoZSBrZXJuZWwgY29kZSB0byBhZGFwdCBhcyBhIGtlcm5lbCBtb2R1bGUgYW5kIGFsc28gZGlkIHRoZQoraW1wbGVtZW50YXRpb24gb2YgdGhlIHVzZXIgc3BhY2Ugc2lkZSBbM10uIE5vdyAoMjAwOSkgVGlhZ28gVmlnbmF0dGkgYW5kIERhdmUKK0FpcmxpZSBmaW5hbGx5IHB1dCB0aGlzIHdvcmsgaW4gc2hhcGUgYW5kIHF1ZXVlZCB0byBKZXNzZSBCYXJuZXMnIFBDSSB0cmVlLgorCisKK0lJSS4gUmVmZXJlbmNlcworPT09PT09PT09PT09PT0KKworWzBdIGh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL3hzZXJ2ZXIvY29tbWl0Lz9pZD00YjQyNDQ4YTIzODhkNDBmMjU3Nzc0ZmJmZmRjY2FlYTg3YmQwMzQ3CitbMV0gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy94b3JnLzIwMDUtTWFyY2gvMDA2NjYzLmh0bWwKK1syXSBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmVzL3hvcmcvMjAwNS1NYXJjaC8wMDY3NDUuaHRtbAorWzNdIGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZXMveG9yZy8yMDA3LU9jdG9iZXIvMDI5NTA3Lmh0bWwK