sabato 1 gennaio 2000

[AL CORPUS] The Christian Creed [1/1]

VEhFIENIUklTVElBTiBDUkVFRCAKCgpBQkVSREVFTiBVTklWRVJTSVRZIFBSRVNTIAoKClRIRSAKCgpDSFJJU1RJQU4gQ1JFRUQgCgoKSVRTIE9SSUdJTiBBTkQgU0lHTklGSUNBVElPTiAKCgpCWSAKCgpDLiBXLiBMRUFEQkVBVEVSIAoKCkxPTkRPTiAKVEhFIFRIRU9TT1BISUNBTCBQVUJMSVNISU5HIFNPQ0lFVFkgCjI2IENIQVJJTkcgQ1JPU1MsIFMuVy4gCk5FVyBZT1JLOiBUSEUgVEhFT1NPUEhJQ0FMIFBVQkxJU0hJTkcgU09DSUVUWSwgNjUgRklGVEggQVZFTlVFIApCRU5BUkVTOiBUSEUgVEhFT1NPUEhJQ0FMIFBVQkxJU0hJTkcgU09DSUVUWSAKTUFEUkFTOyBUSEUg4oCcIFRIRU9TT1BISVNUIOKAnSBPRkZJQ0UsIEFEWUFSIAoKClRIRSBDSFJJU1RJQU4gQ1JFRUQuIAoKClRIRVJFIGFyZSBtYW55IHN0dWRlbnRzIG9mIFRoZW9zb3BoeSB3aG8gaGF2ZSBiZWVuLCAKYW5kIGluZGVlZCBzdGlsbCBhcmUsIGVhcm5lc3QgQ2hyaXN0aWFucywgYW5kIHRob3VnaCAKdGhlaXIgZmFpdGggaGFzIGdyYWR1YWxseSBicm9hZGVuZWQgb3V0IGludG8gdW5vcnRoby0gCmRveHkgdGhleSBoYXZlIHJldGFpbmVkIGEgc3Ryb25nIGFmZmVjdGlvbiBmb3IgdGhlIGZvcm1zIAphbmQgY2VyZW1vbmlhbHMgb2YgdGhlIHJlbGlnaW9uIGludG8gd2hpY2ggdGhleSB3ZXJlIApib3JuLiBJdCBpcyBhIHBsZWFzdXJlIHRvIHRoZW0gdG8gaGVhciB0aGUgcmVjaXRhdGlvbiAKb2YgdGhlIG9sZCBmb3JtdWxlLCB0aG91Z2ggdGhleSB0cnkgdG8gcmVhZCBpbnRvIHRoZW0gCmEgaGlnaGVyIGFuZCB3aWRlciBtZWFuaW5nIHRoYW4gdGhlIG9yZGluYXJ5IG9ydGhvZG94IAppbnRlcnByZXRhdGlvbi4gCgpJIGhhdmUgdGhvdWdodCB0aGF0IGl0IG1pZ2h0IGJlIG9mIGludGVyZXN0IHRvIHN1Y2ggCnN0dWRlbnRzIHRvIGhhdmUgc29tZSBzbGlnaHQgYWNjb3VudCBvZiB0aGUgcmVhbCBtZWFuLSAKaW5nIGFuZCBvcmlnaW4gb2YgdGhvc2UgdmVyeSByZW1hcmthYmxlIGJhc2ljIGZvcm11bGUgCm9mIHRoZSBDaHVyY2ggd2hpY2ggYXJlIGNhbGxlZCB0aGUgQ3JlZWRzLCBzbyB0aGF0IHdoZW4gCnRoZXkgaGVhciB0aGVtIG9yIGpvaW4gaW4gdGhlaXIgcmVjaXRhdGlvbiB0aGUgaWRlYXMgCmJyb3VnaHQgaW50byB0aGVpciBtaW5kcyB0aGVyZWJ5IG1heSBiZSB0aGUgZ3JhbmRlciAKYW5kIG5vYmxlciBvbmVzIG9yaWdpbmFsbHkgY29ubmVjdGVkIHdpdGggdGhlbSByYXRoZXIgCnRoYW4gdGhlIG1pc2xlYWRpbmcgbWF0ZXJpYWxpc20gb2YgbW9kZXJuIG1pc2FwcHJlLSAKaGVuc2lvbi4gCgpJIGhhdmUgc3Bva2VuIG9mIHRoZSBpZGVhcyBvcmlnaW5hbGx5IGNvbm5lY3RlZCB3aXRoIAp0aGVtOyBJIG91Z2h0IHBlcmhhcHMgcmF0aGVyIHRvIHNheSB0aGUgaWRlYXMgY29uLSAKbmVjdGVkIHdpdGggdGhlIGFuY2llbnQgZm9ybXVsYSB1cG9uIHdoaWNoIGFsbCB0aGUgCm1vc3QgdmFsdWFibGUgcG9ydGlvbiBvZiB0aGVtIGlzIGJhc2VkLiBGb3IgSSBkbyBub3QgCgoKNSAKCgo2IFRIRSBDSFJJU1RJQU4gQ1JFRUQuIAoKCm1lYW4gdG8gc2F5IGZvcmEgbW9tZW50IHRoYXQgYW55IGxhcmdlIG51bWJlciBvZiB0aGUgCm1lbWJlcnMsIG9yIGV2ZW4gb2YgdGhlIGxlYWRlcnMsIG9mIHRoZSBDaHVyY2ggd2hpY2ggCm5vdyByZWNpdGVzIHRoZXNlIENyZWVkcyBoYXZlIGZvciBtYW55IGEgY2VudHVyeSAKa25vd24gdGhlaXIgdHJ1ZSBtZWFuaW5nLiBJIGRvIG5vdCBldmVuIGNsYWltIHRoYXQgCnRoZSBlY2NsZXNpYXN0aWNhbCBjb3VuY2lscyB3aGljaCBlZGl0ZWQgYW5kIGF1dGhvcml6ZWQgCnRoZW0gZXZlciByZWFsaXplZCB0aGUgZnVsbCBhbmQgZ2xvcmlvdXMgc2lnbmlmaWNhdGlvbiBvZiAKdGhlIHJvbGxpbmcgcGhyYXNlcyB3aGljaCB0aGV5IHVzZWQgOyBmb3IgbXVjaCBvZiB0aGUgCnRydWUgbWVhbmluZyBoYWQgYWxyZWFkeSBiZWVuIGxvc3QsIG11Y2ggb2YgdGhlIAptYXRlcmlhbGl6aW5nIGNvcnJ1cHRpb24gaGFkIGJlZW4gaW50cm9kdWNlZCBsb25nIApiZWZvcmUgdGhvc2UgdW5mb3J0dW5hdGUgYXNzZW1ibGllcyB3ZXJlIGNvbnZva2VkLiAKCkJ1dCB0aGlzIGF0IGxlYXN0IGRvZXMgc2VlbSBjZXJ0YWlu4oCUdGhhdCBuYXJyb3dlZCwgCmRlZ3JhZGVkIGFuZCBtYXRlcmlhbGl6ZWQgYXMgdGhlIENocmlzdGlhbiBmYWl0aCBoYXMgCmJlZW4sIGNvcnJ1cHQgYWxtb3N0IGJleW9uZCByZWNvZ25pdGlvbiBhcyBpdHMgc2NyaXAtIAp0dXJlcyBoYXZlIGJlY29tZSwgYW4gYXR0ZW1wdCBoYXMgYXQgbGVhc3QgYmVlbiBtYWRlIApieSBzb21lIG9mIHRoZSBoaWdoZXIgcG93ZXJzIHRvIGd1aWRlIHRob3NlIHdobyBoYXZlIApjb21waWxlZCBmb3IgaXQgdGhlc2UgZ3JlYXQgc3ltYm9scyBjYWxsZWQgdGhlIENyZWVkcywgCnNvIHRoYXQgd2hhdGV2ZXIgdGhleSBtYXkgdGhlbXNlbHZlcyBoYXZlIGtub3duLCAKdGhlaXIgbGFuZ3VhZ2Ugc3RpbGwgY2xlYXJseSBjb252ZXlzIHRoZSBncmFuZCB0cnV0aHMgCm9mIHRoZSBhbmNpZW50IHdpc2RvbSB0byBhbGwgd2hvIGhhdmUgZWFycyB0byBoZWFyOyAKYW5kIG11Y2ggdGhhdCBpbiB0aGVzZSBmb3JtdWxlIHNlZW1zIGZhbHNlIGFuZCBpbi0gCmNvbXByZWhlbnNpYmxlIHdoZW4gdGhlIGVuZGVhdm91ciBpcyBtYWRlIHRvIHJlYWQgCnRoZW0gaW4gYWNjb3JkYW5jZSB3aXRoIG1vZGVybiBtaXNjb25jZXB0aW9ucywgYmUtIApjb21lcyBhdCBvbmNlIGx1bWlub3VzIGFuZCBmdWxsIG9mIG1lYW5pbmcgd2hlbiAKdW5kZXJzdG9vZCBpbiB0aGF0IGlubmVyIHNlbnNlIHdoaWNoIGV4YWx0cyBpdCBmcm9tIGEgCmZyYWdtZW50IG9mIHVucmVsaWFibGUgYmlvZ3JhcGh5IGludG8gYSBkZWNsYXJhdGlvbiBvZiAKZXRlcm5hbCB0cnV0aC4gCgpJdCBpcyB3aXRoIHRoZSBlbHVjaWRhdGlvbiBvZiB0aGlzIGlubmVyIHNlbnNlIG9mIHRoZSAKQ3JlZWRzLCB0aGVuLCB0aGF0IEkgYW0gY29uY2VybmVkOyBhbmQgYWx0aG91Z2ggaW4gCndyaXRpbmcgb2YgdGhpcyBpdCB3aWxsIGJlIG5lY2Vzc2FyeSBmb3JtZSB0byBtYWtlIHNvbWUgCgoKT0NDVUxUIElOVkVTVElHQVRJT04sIDcgCgoKcmVmZXJlbmNlIHRvIHRoZWlyIHJlYWwgaGlzdG9yeSwgSSBuZWVkIGhhcmRseSBzYXkgdGhhdCBJIAphbSBub3QgaW4gYW55IHdheSBhdHRlbXB0aW5nIHRvIGFwcHJvYWNoIHRoZSBzdWJqZWN0IApmcm9tIHRoZSBvcmRpbmFyeSBzY2hvbGFybHkgc3RhbmRwb2ludC4gU3VjaCBpbmZvcm1hLSAKdGlvbiBhcyBJIGhhdmUgdG8gZ2l2ZSBhYm91dCB0aGUgQ3JlZWRzIGlzIG9idGFpbmVkIApuZWl0aGVyIGZyb20gdGhlIGNvbXBhcmlzb24gb2YgYW5jaWVudCBtYW51c2NyaXB0cyAKbm9yIGZyb20gdGhlIHN0dWR5IG9mIHRoZSB2b2x1bWlub3VzIHdvcmtzIG9mIHRoZW8tIApsb2dpY2FsIHdyaXRlcnMsIGJ1dCBpcyBzaW1wbHkgdGhlIHJlc3VsdCBvZiBhbiBpbnZlc3RpZ2EtIAp0aW9uIGludG8gdGhlIDRrYXNoaWMgcmVjb3JkcyBtYWRlIGJ5IGEgZmV3IHN0dWRlbnRzIG9mIApvY2N1bHRpc20uIFRoZWlyIG5vdGljZSB3YXMgaW5jaWRlbnRhbGx5IGF0dHJhY3RlZCB0byAKdGhlIHF1ZXN0aW9uIHdoaWxlIGZvbGxvd2luZyB1cCBxdWl0ZSBhbm90aGVyIGxpbmUgb2YgCnJlc2VhcmNoLCBhbmQgaXQgd2FzIHRoZW4gc2VlbiB0aGF0IHRoZSBtYXR0ZXIgd2FzIG9mIApzdWZmaWNpZW50IGludGVyZXN0IHRvIHJlcGF5IGZ1cnRoZXIgYW5kIG1vcmUgZGV0YWlsZWQgCmV4YW1pbmF0aW9uLiAKCkFzIEkgYW0gd3JpdGluZyBpbiB0aGUgbWFpbiBmb3Igc3R1ZGVudHMgb2YgVGhlby0gCnNvcGh5LCBJIHNoYWxsIGZlZWwgbXlzZWxmIGF0IGxpYmVydHkgdG8gdXNlIHdpdGhvdXQgCmRldGFpbGVkIGV4cGxhbmF0aW9uIHRoZSBvcmRpbmFyeSBUaGVvc29waGljYWwgdGVybXMgCndpdGggd2hpY2ggSSBtYXkgc2FmZWx5IGFzc3VtZSB0aGVtIHRvIGJlIGZhbWlsaWFyLCAKc2luY2Ugb3RoZXJ3aXNlIG15IGxpdHRsZSBib29rIHdvdWxkIGZhciBleGNlZWQgaXRzIAphbGxvdHRlZCBsaW1pdHMuIFNob3VsZCBpdCwgaG93ZXZlciwgZmFsbCBpbnRvIHRoZSBoYW5kcyAKb2YgYW55IHRvIHdob20gdGhlIG9jY2FzaW9uYWwgdXNlIG9mIHN1Y2ggdGVybXMgY29uLSAKc3RpdHV0ZXMgYSBkaWZmaWN1bHR5LCBJIGNhbiBvbmx5IGFwb2xvZ2l6ZSB0byB0aGVtIGFuZCAKcmVmZXIgdGhlbSBmb3IgdGhlc2UgcHJlbGltaW5hcnkgZXhwbGFuYXRpb25zIHRvIGFueSAKZWxlbWVudGFyeSBUaGVvc29waGljYWwgd29yaywgc3VjaCBhcyBNcnMuIEJlc2FudOKAmXMgCkFuY2llbnQgV2lzZG9tIG9yIE1hbmFuZCBoaXMgQm9kaWVzLiAKCkJlZm9yZSBkZXNjcmliaW5nIHRoZSB0cnVlIG9yaWdpbiBvZiB0aGUgQ3JlZWRzIG9mIHRoZSAKQ2h1cmNoLCBpdCBtYXkgYmUgd2VsbCBqdXN0IHRvIGVwaXRvbWl6ZSB0aGUgY3VycmVudCAKaWRlYXMgb2Ygb3J0aG9kb3ggd3JpdGVycyBhcyB0byB0aGVpciBkYXRlIGFuZCBoaXN0b3J5LiAKVGhlIENocmlzdGlhbiBDaHVyY2ggaGFzIHRocmVlIG9mIHRoZXNlIGZvcm11bGF0aW9ucyAKb2YgYmVsaWVmLCBjYWxsZWQgcmVzcGVjdGl2ZWx5IHRoZSBBcG9zdGxlc+KAmSwgdGhlIE5pY2VuZSAKCgo4IFRIRSBDSFJJU1RJQU4gQ1JFRUQuIAoKCmFuZCB0aGUgQXRoYW5hc2lhbi4gQXQgb25lIHRpbWUgdGhlIGVjY2xlc2lhc3RpY2FsIAp0aGVvcnkgd2FzIHRoYXQgdGhlIHNlY29uZCBhbmQgdGhpcmQgd2VyZSBtZXJlbHkgCmFtcGxpZmljYXRpb25zIG9mIHRoZSBmaXJzdCwgYnV0IGl0IGlzIG5vdyB1bml2ZXJzYWxseSAKcmVjb2duaXplZCB0aGF0IHRoZSBOaWNlbmUgQ3JlZWQgaXMgaGlzdG9yaWNhbGx5IHRoZSAKb2xkZXN0IG9mIHRoZSB0aHJlZS4gTGV0IHVzIHRha2UgdGhlbSBvbmUgYnkgb25lLCBhbmQgCmV4cGxhaW4gdmVyeSBicmllZmx5IHdoYXQgaXMgY29tbW9ubHkga25vd24gb2YgdGhlbS4gClNvbWUgc29ydCBvZiBicmllZiBhbmQgc2ltcGxlIENyZWVkIHNlZW1zIHRvIGhhdmUgCmJlZW4gaW4gdXNlIGZyb20gYSB2ZXJ5IGVhcmx5IHBlcmlvZCwgbm90IG9ubHkgYXMgYSAKc3ltYm9sIG9mIGZhaXRoLCBidXQgYXMgYSBwYXNzLXdvcmQgaW4gbWlsaXRhcnkgc3R5bGUuIApCdXQgdGhlIHdvcmRpbmcgb2YgdGhpcyBmb3JtdWxhIGFwcGVhcnMgdG8gaGF2ZSB2YXJpZWQgCmNvbnNpZGVyYWJseSBpbiBkaWZmZXJlbnQgY291bnRyaWVzLCBhbmQgaXQgd2FzIG5vdCB1bnRpbCAKY2VudHVyaWVzIGxhdGVyIHRoYXQgYW55dGhpbmcgbGlrZSB1bmlmb3JtaXR5IHdhcyBhdC0gCnRhaW5lZC4gQW4gZXhhbXBsZSBvZiB0aGUgZWFybGllciBmb3JtIGlzIHRoZSBDcmVlZCAKZ2l2ZW4gYnkgSXJlbnp1cyBpbiBoaXMgd29yayBBZ2FpbnN0IEhlcmVzaWVzOiDigJxJIApiZWxpZXZlIGluIE9uZSBHb2QgYWxtaWdodHksIG9mIHdob20gYXJlIGFsbCB0aGluZ3MgCi4gYW5kIGluIHRoZSBTb24gb2YgR29kLCBieSB3aG9tIGFyZSBhbGwgdGhpbmdz4oCdLiAKVGhlIGVhcmxpZXN0IG1lbnRpb24gb2YgYSBDcmVlZCBiZWFyaW5nIHRoZSBuYW1lIG9mIAp0aGUgQXBvc3RsZXMgb2NjdXJzIGluIHRoZSBmb3VydGggY2VudHVyeSBpbiB0aGUgd3JpdC0gCmluZ3Mgb2YgUnVmaW51cywgd2hvIHN0YXRlcyB0aGF0IGl0IGlzIHNvIGNhbGxlZCBiZWNhdXNlIAppdCBjb25zaXN0cyBvZiB0d2VsdmUgYXJ0aWNsZXMsIG9uZSBvZiB3aGljaCB3YXMgY29udHJpLSAKYnV0ZWQgYnkgZWFjaCBvZiB0aGUgdHdlbHZlIEFwb3N0bGVzIGFzc2VtYmxlZCBpbiAKc29sZW1uIGNvbmNsYXZlIGZvciB0aGUgcHVycG9zZS4gQnV0IFJ1ZmludXMgaXMgbm90IApyZWdhcmRlZCBhcyBhbnkgZ3JlYXQgaGlzdG9yaWNhbCBhdXRob3JpdHksIGFuZCBldmVuIAppbiB0aGUgUm9tYW4gQ2F0aG9saWMgZW5jeWNsb3BlZGlhIG9mIFdldHplciBhbmQgCldlbHRlIGhpcyBzdG9yeSBpcyBjb25zaWRlcmVkIGFzIGEgbWVyZSBwaW91cyBsZWdlbmQuIApUaGUgQXBvc3RsZXPigJkgQ3JlZWQgaXMgbm90IGZvdW5kIGluIGFueXRoaW5nIGxpa2UgaXRzIApwcmVzZW50IGZvcm0gdGlsbCBmdWxseSBmb3VyIGNlbnR1cmllcyBhZnRlciB0aGUgY29tcG9zaS0gCnRpb24gb2YgdGhlIE5pY2VuZSBzeW1ib2wsIGFuZCB0aGUgbW9zdCBhdXRob3JpdGF0aXZlIAp3cml0ZXJzIG9uIHRoZSBzdWJqZWN0IHN1cHBvc2UgaXQgdG8gYmUgYSBtZXJlIGNvbmdsby0gCgoKVEhFIENPVU5DSUwgT0YgTklDQeKAmEEuIDkgCgoKbWVyYXRlIHNsb3dseSBmb3JtZWQgYnkgdGhlIGdyYWR1YWwgY29sbGF0aW9uIG9mIGVhcmxpZXIgCmFuZCBzaW1wbGVyIGV4cHJlc3Npb25zIG9mIGJlbGllZi4gT2NjdWx0IGludmVzdGlnYXRpb24gCm5lZ2F0aXZlcyB0aGlzIGlkZWEsIGFzIHdpbGwgYmUgZXhwbGFpbmVkIGxhdGVyLCBhbmQsIAp0aG91Z2ggcXVpdGUgYWRtaXR0aW5nIGl0cyBjb21wb3NpdGUgY2hhcmFjdGVyLCBhc3NpZ25zIAp0byBwYXJ0IG9mIGl0IGF0IGFueSByYXRlIGEgZmFyIGhpZ2hlciBvcmlnaW4gdGhhbiBldmVuIAp0aGF0IGNsYWltZWQgYnkgUnVmaW51cy4gCgpNdWNoIG1vcmUgZGVmaW5pdGUgYW5kIHNhdGlzZmFjdG9yeSwgZnJvbSB0aGUgb3JkaW4tIAphcnkgcG9pbnQgb2YgdmlldywgaXMgdGhlIGhpc3Rvcnkgb2YgdGhlIGxvbmdlciBmb3JtdWxhIApjYWxsZWQgdGhlIE5pY2VuZSBDcmVlZCwgd2hpY2ggYXBwZWFycyBpbiB0aGUgbWFzcyBvZiAKdGhlIFJvbWFuIENodXJjaCBhbmQgdGhlIGNvbW11bmlvbiBzZXJ2aWNlIG9mIHRoZSAKQ2h1cmNoIG9mIEVuZ2xhbmQuIFByYWN0aWNhbGx5IGFsbCB3cml0ZXJzIHNlZW0gYWdyZWVkIAp0aGF0IHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0d28gbm90YWJsZSBvbWlzc2lvbnMgaXQgd2FzIApkcmF3biB1cCBhdCB0aGUgQ291bmNpbCBvZiBOaWN6ZWEgaW4gdGhlIHllYXIgMzI1LiBBcyAKbW9zdCByZWFkZXJzIHdpbGwgYmUgYXdhcmUsIHRoYXQgY291bmNpbCB3YXMgc3VtLSAKbW9uZWQgaW4gb3JkZXIgdG8gc2V0dGxlIHRoZSBjb250cm92ZXJzaWVzIHRoZW4gcmFnaW5nIAphbW9uZyBlY2NsZXNpYXN0aWNhbCBhdXRob3JpdGllcyBhcyB0byB0aGUgZXhhY3QgbmF0dXJlIApvZiBDaHJpc3QuIFRoZSBBdGhhbmFzaWFuIG9yIG1hdGVyaWFsaXN0aWMgcGFydHkgZGUtIApjbGFyZWQgaGltIHRvIGJlIG9mIHRoZSBzYW1lIHN1YnN0YW5jZSBhcyB0aGUgRmF0aGVyLCAKd2hpbGUgdGhlIGZvbGxvd2VycyBvZiBBcml1cyBwcmVmZXJyZWQgbm90IHRvIGNvbW1pdCAKdGhlbXNlbHZlcyB0byBhbnl0aGluZyBzdHJvbmdlciB0aGFuIHRoZSBzdGF0ZW1lbnQgCnRoYXQgaGUgd2FzIG9mIGxpa2Ugc3Vic3RhbmNlLCBub3Igd2VyZSB0aGV5IHdpbGxpbmcgCnRvIGFkbWl0IHRoYXQgaGUgYWxzbyB3YXMgd2l0aG91dCBiZWdpbm5pbmcuIAoKVGhlIHBvaW50IHNlZW1zIGEgc21hbGwgb25lIHRvIGhhdmUgY2F1c2VkIHNvIG11Y2ggCmV4Y2l0ZW1lbnQgYW5kIGlsbC1mZWVsaW5nIDsgYnV0IGl0IGFwcGVhcnMgdG8gYmUgb25lIG9mIAp0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZW9sb2dpY2FsIGNvbnRyb3ZlcnN5IHRoYXQgdGhlIApzbWFsbGVyIHRoZSBkaWZmZXJlbmNlIG9mIG9waW5pb24gdGhlIG1vcmUgYWNyaW1vbmlvdXMgCmlzIHRoZSBoYXRyZWQgYmV0d2VlbiB0aGUgZGlzcHV0YW50cy4gU3VnZ2VzdGlvbnMgaGF2ZS4gCmJlZW4gbWFkZSB0aGF0IENvbnN0YW50aW5lIGhpbXNlbGYgZXhlcmNpc2VkIGEgc29tZS0gCndoYXQgdW5kdWUgaW5mbHVlbmNlIG92ZXIgdGhlIGRlbGliZXJhdGlvbnMgb2YgdGhlIAoKCklvIFRIRSBDSFJJU1RJQU4gQ1JFRUQuIAoKCmNvdW5jaWwgOyBob3dldmVyIHRoYXQgbWF5IGhhdmUgYmVlbiwgaXRzIGRlY2lzaW9uIHdhcyAKaW4gZmF2b3VyIG9mIHRoZSBBdGhhbmFzaWFuIHBhcnR5LCBhbmQgdGhlIE5pY2VuZSBDcmVlZCAKd2FzIGFjY2VwdGVkIGFzIHRoZSBleHByZXNzaW9uIG9mIHRoZSBmYWl0aCBvZiB0aGUgbWEtIApqb3JpdHkuIEFzIHRoZW4gZHJhd24gdXAsIGl0IGVuZGVkIChpZiB3ZSBvbWl0IHRoZSAKYXdmdWwgYW5hdGhlbWEsIHdoaWNoIHNob3dzIHZlcnkgY2xlYXJseSB0aGUgcmVhbCAKc3Bpcml0IG9mIHRoZSBjb3VuY2lsKSB3aXRoIHRoZSB3b3Jkcywg4oCcSSBiZWxpZXZlIGluIHRoZSAKSG9seSBHaG9zdCzigJ3igJkgYW5kIHRoZSBjbGF1c2VzIHdpdGggd2hpY2ggaXQgbm93IGNvbi0gCmNsdWRlcyB3ZXJlIGFkZGVkIGF0IHRoZSBDb3VuY2lsIG9mIENvbnN0YW50aW5vcGxlIGluIAp0aGUgeWVhciAzODEsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgd29yZHMg4oCcYW5kIHRoZSAKU29uLOKAnSB3aGljaCB3ZXJlIGluc2VydGVkIGJ5IHRoZSBXZXN0ZXJuIENodXJjaCBhdCAKdGhlIENvdW5jaWwgb2YgVG9sZWRvIGluIHRoZSB5ZWFyIDU4OS4gCgpJdCB3YXMgbm9taW5hbGx5IG9uIHRoaXMgZG9jdHJpbmUgb2YgdGhlIHByb2Nlc3Npb24gCm9mIHRoZSBIb2x5IEdob3N0IGZyb20gdGhlIFNvbiBhcyB3ZWxsIGFzIGZyb20gdGhlIApGYXRoZXIgdGhhdCB0aGVyZSBvY2N1cnJlZCB0aGUgZ3JlYXRlc3Qgc2NoaXNtIHdoaWNoIApoYXMgeWV0IHJlbnQgdGhlIENocmlzdGlhbiBDaHVyY2jigJR0aGUgZGl2aXNpb24gYmUtIAp0d2VlbiB0aGUgRWFzdGVybiBhbmQgV2VzdGVybiAob3IgYXMgd2Ugbm93IGNhbGwgdGhlbSwgCnRoZSBHcmVlayBhbmQgdGhlIFJvbWFuKSBDaHVyY2hlcywgd2hpY2ggdG9vayBwbGFjZSAKaW4gdGhlIGVsZXZlbnRoIGNlbnR1cnkuIEl0IGlzLCBob3dldmVyLCBwcm9iYWJsZSB0aGF0IAp0aGlzIHF1ZXN0aW9uIHdhcyBtZXJlbHkgYSBwcmV0ZXh0LCBhcyB0aGUgcHJvZ3Jlc3NpdmUgCmNlbnRyYWxpemF0aW9uIG9mIHRoZSBXZXN0ZXJuIENodXJjaCB1bmRlciB0aGUgc2VlIG9mIApSb21lIHdhcyBiZWNvbWluZyBleGNlZWRpbmdseSBpbmNvbnZlbmllbnQgdG8gdGhlIApPcmllbnRhbCBwYXRyaWFyY2hzLCBhbmQgc3RyYWluZWQgcmVsYXRpb25zIGhhZCBiZWVuIApleGlzdGluZyBmb3Igc29tZSB0aW1lIDsgd2hpbGUgdGhlIGZpbmFsIGRldGVybWluaW5nIApjYXVzZSBvZiB0aGUgc2VjZXNzaW9uIHNlZW1zIHRvIGhhdmUgYmVlbiB0aGUgdHJhbnNmZXIgCm9mIHRoZWlyIGFsbGVnaWFuY2UgYnkgdGhlIEJ1bGdhcmlhbnMgZnJvbSB0aGUgcGF0cmktIAphcmNocyB0byB0aGUgcG9wZXMuIFN0aWxsIGl0cyB1c2UgZXZlbiBhcyBhIHByZXRleHQgaW4gCnNvIGltcG9ydGFudCBhbiBldmVudCBpbiBDaHVyY2ggaGlzdG9yeSBoYXMgaW52ZXN0ZWQgCnRoaXMg4oCY4oCYZmlsaW9xdWXigJnigJkgY2xhdXNlIHdpdGggYW4gaW50ZXJlc3Qgd2hpY2ggaXMgcGVyaGFwcyAKZ3JlYXRlciB0aGFuIGl0cyBpbnRyaW5zaWMgaW1wb3J0YW5jZSB3b3VsZCB3YXJyYW50LiAKCgpUSEUgQVRIQU5BU0lBTiBDUkVFRC4gSUkgCgoKVGhlIEF0aGFuYXNpYW4gQ3JlZWQgaXMgYWRtaXR0ZWRseSBhIG11Y2ggbGF0ZXIgCnByb2R1Y3Rpb24gdGhhbiB0aGUgb3RoZXJzLiBPZiBjb3Vyc2UgZXZlcnkgb25lIGlzIAphd2FyZSB0aGF0IGl0IGlzIG5vdCBpbiBhbnkgd2F5IGNvbm5lY3RlZCB3aXRoIEF0aGFuLSAKYXNpdXMsIGFuZCBiZWFycyBoaXMgbmFtZSBvbmx5IGJlY2F1c2UgaXRzIGNvbXBpbGVycyAKd2lzaGVkIGl0IHRvIGJlIGNvbnNpZGVyZWQgYXMgYW4gZXhwcmVzc2lvbiBvZiB0aGUgCmRvY3RyaW5lcyB3aGljaCBoZSBoYWQgc28gc3RvdXRseSB1cGhlbGQgY2VudHVyaWVzIApiZWZvcmUuIFBhcnQgb2YgaXQgYXQgYW55IHJhdGUgaGFzIGJlZW4gYXR0cmlidXRlZCB0byAKSGlsYXJ5LCBCaXNob3Agb2YgQXJsZXMsIGFuZCBwYXJ0IGFsc28gYXBwZWFycyBpbiB0aGUgClByb2Zlc3Npb24gb2YgRGVuZWJlcnQsIHRob3VnaCBpdCBpcyBub3RpY2VhYmxlIHRoYXQgCmluIGFsbCB0aGVzZSBlYXJsaWVyIGZyYWdtZW50cyB3aGF0IGFyZSBjYWxsZWQgdGhlIApkYW1uYXRvcnkgY2xhdXNlcyBhcmUgY29uc3BpY3VvdXMgYnkgdGhlaXIgYWJzZW5jZS4gCkJ1dCBhcyBhIENyZWVkIGl0IHdhcyBjZXJ0YWlubHkgdW5rbm93biBldmVuIGF0IHRoZSAKdmVyeSBlbmQgb2YgdGhlIGVpZ2h0aCBjZW50dXJ5LCBmb3IgYXQgdGhlIENvdW5jaWwgb2YgCkZyaXVsaSwgaGVsZCBpbiA3OTYsIHRoZSBuZWVkIG9mIGp1c3Qgc3VjaCBhbiBhbXBsaWZpY2EtIAp0aW9uIG9mIHRoZSBlYXJsaWVyIENvbmZlc3Npb24gb2YgRmFpdGggd2FzIGRlcGxvcmVkLCAKYW5kIGluZGVlZCBpdCB3YXMgdmVyeSBwcm9iYWJseSBpbiBjb25zZXF1ZW5jZSBvZiB0aGUgCmRpc2N1c3Npb24gd2hpY2ggdGhlbiB0b29rIHBsYWNlIG9uIHRoZSBzdWJqZWN0IHRoYXQgCnRoZSBBdGhhbmFzaWFuIENyZWVkIGFwcGVhcmVkIGluIGl0cyBwcmVzZW50IGZvcm0uIApUaGVyZSBpcyBzb21lIGV2aWRlbmNlIHRvIHNob3cgdGhhdCB0aGUgdHdvIHBhcnRzIAppbnRvIHdoaWNoIGl0IHNvIG9idmlvdXNseSBkaXZpZGVzIGl0c2VsZuKAlHRoZSBmaXJzdCAKZGVhbGluZyB3aXRoIHRoZSBkb2N0cmluZSBvZiB0aGUgVHJpbml0eSwgdGhlIHNlY29uZCAKd2l0aCB0aGF0IG9mIHRoZSBJbmNhcm5hdGlvbuKAlGV4aXN0ZWQgc2VwYXJhdGVseSBzb21lIApmZXcgeWVhcnMgYmVmb3JlLCBidXQgaXQgc2VlbXMgY2VydGFpbiB0aGF0IHRoZXkgd2VyZSAKbm90IHB1YmxpY2x5IHVzZWQgaW4gdGhlIGNvbWJpbmVkIGFuZCBhbXBsaWZpZWQgZm9ybSAKZWFybGllciB0aGFuIHRoZSB5ZWFyIDgwMC4gCgpOZXZlcnRoZWxlc3MsIGFuZCBpbiBzcGl0ZSBvZiB0aGUgZGVjaXNpb24gb2YgdGhlIApjcml0aWNzLCBjbGFpcnZveWFudCBleGFtaW5hdGlvbiBzaG93cyB0aGF0IGFzIGEgbWF0dGVyIApvZiBmYWN0IGJvdGggdGhlIHBhcnRzIHdlcmUgcGVubmVkIGJ5IHRoZSBzYW1lIGhhbmQgCmluIHRoZSBzZWEtZ2lydCBtb25hc3Rlcnkgb2YgTMOpcmlucyBhdCBhIGRhdGUgY29uc2lkZXItIAoKCjEyIFRIRSBDSFJJU1RJQU4gQ1JFRUQuIAoKCmFibHkgcHJpb3IgdG8gdGhpcywgdGhvdWdoIGl0IGlzIGNlcnRhaW5seSB0cnVlIHRoYXQgdGhlIAp3cml0aW5nIHdhcyBub3QgbWFkZSBwdWJsaWMuIAoKSGF2aW5nIHRodXMgdmVyeSBicmllZmx5IGVwaXRvbWl6ZWQgd2hhdCBpcyBnZW5lcmFsbHkgCmFjY2VwdGVkIGJ5IG9ydGhvZG94IHNjaG9sYXJzIHdpdGggcmVnYXJkIHRvIHRoZSAKaGlzdG9yeSBvZiB0aGUgQ3JlZWRzLCBJIHdpbGwgbm93IHByb2NlZWQgdG8gcmVjb3VudCAKd2hhdCB3YXMgZGlzY292ZXJlZCBpbiByZWxhdGlvbiB0byB0aGVtIGluIHRoZSAKY291cnNlIG9mIHRoZSBpbnZlc3RpZ2F0aW9ucyB0byB3aGljaCBJIGhhdmUgYWxyZWFkeSAKcmVmZXJyZWQuIAoKVGhlIGZpcnN0IHBvaW50IHRvIGJlYXIgaW4gbWluZCBpcyB0aGF0IGFsbCB0aGUgQ3JlZWRzIAphcyB3ZSBoYXZlIHRoZW0gbm93IGFyZSBlc3NlbnRpYWxseSBjb21wb3NpdGUgcHJvLSAKZHVjdGlvbnMsIGFuZCB0aGF0IHRoZSBvbmx5IG9uZSBvZiB0aGVtIHdoaWNoIGluIGFueSAKd2F5IHJlcHJlc2VudHMgYSBzaW5nbGUgb3JpZ2luYWwgZG9jdW1lbnQgaXMgdGhlIGxhdGVzdCAKb2YgYWxs4oCUdGhlIEF0aGFuYXNpYW4uIEkgYW0gcGVyZmVjdGx5IGF3YXJlIHRoYXQgCmV2ZW4gdGhpcyBvcGVuaW5nIHN0YXRlbWVudCBmbGllcyBkaXJlY3RseSBpbiB0aGUgZmFjZSAKb2YgdGhlIGlkZWFzIG9yZGluYXJpbHkgcmVjZWl2ZWQgdXBvbiB0aGlzIHN1YmplY3QsIGJ1dCBJIApjYW5ub3QgaGVscCB0aGF0OyBJIGFtIHNpbXBseSBzdGF0aW5nIHRoZSBmYWN0cyBhcyB0aGUgCmludmVzdGlnYXRvcnMgZm91bmQgdGhlbS4gCgpUaGVzZSBDcmVlZHMsIHRoZW4sIGVtYm9keSBzdGF0ZW1lbnRzIHdoaWNoIGFyZSAKZGVyaXZlZCBmcm9tIHRocmVlIHF1aXRlIHNlcGFyYXRlIHNvdXJjZXMsIGFuZCB3ZSBzaGFsbCAKZmluZCBpdCBvZiBncmVhdCBpbnRlcmVzdCB0byBlbmRlYXZvdXIgdG8gZGlzZW50YW5nbGUgCnRoZXNlIHRocmVlIGVsZW1lbnRzIGZyb20gb25lIGFub3RoZXIsIGFuZCB0byBhc3NpZ24gCnRvIGVhY2ggb2YgdGhlbSByZXNwZWN0aXZlbHkgdGhvc2UgY2xhdXNlcyBvZiB0aGUgCkNyZWVkIChhcyB3ZSBoYXZlIGl0IG5vdykgd2hpY2ggaGF2ZSBmbG93ZWQgZnJvbSB0aGVtLiAKVGhlc2UgYXJlIDrigJQgCgooYTIpIEFuIGFuY2llbnQgZm9ybXVsYSBvZiBjb3Ntb2dlbmVzaXMsIHJlc3Rpbmcgb24gCnZlcnkgaGlnaCBhdXRob3JpdHkgaW5kZWVkLiAKCig2KSBUaGUgcnVicmljIGZvciB0aGUgZ3VpZGFuY2Ugb2YgdGhlIGhpZXJvcGhhbnQgCmluIHRoZSBFZ3lwdGlhbiBmb3JtIG9mIHRoZSBTb2hhbiBvciBTb3TDqXBhdHRpIApJbml0aWF0aW9uLiAKCgpPUklHSU4gT0YgVEhFIENSRUVELiAxMyAKCgooYykgVGhlIG1hdGVyaWFsaXppbmcgdGVuZGVuY3kgd2hpY2ggbWlzdGFrZW5seSAKc291Z2h0IHRvIGludGVycHJldCBkb2N1bWVudHMgKGEpIGFuZCAoYmQpIGFzIHJlbGF0aW5nIAp0aGUgYmlvZ3JhcGh5IG9mIGFuIGluZGl2aWR1YWwuIAoKTGV0IHVzIGNvbnNpZGVyIGVhY2ggb2YgdGhlc2Ugc291cmNlcyBhIGxpdHRsZSBtb3JlIGluIApkZXRhaWwuIAoKSXQgaXMgbm90IG15IGludGVudGlvbiBoZXJlIHRvIGVudGVyIGF0IGxlbmd0aCBpbnRvIAp0aGUgZXh0cmVtZWx5IGludGVyZXN0aW5nIGluZm9ybWF0aW9uIHdoaWNoIGNsYWlydm95YW50IAppbnZlc3RpZ2F0aW9uIGhhcyBnaXZlbiB0byB1cyB3aXRoIHJlZ2FyZCB0byB0aGUgdHJ1ZSAKbGlmZS1zdG9yeSBvZiB0aGUgZ3JlYXQgdGVhY2hlciBDaHJpc3QuIFRoYXQgd2lsbCBiZSBhIAp3b3JrIHRvIGJlIGRvbmUgaGVyZWFmdGVyLCBidXQgaXQgd2lsbCBhc3N1cmVkbHkgbm90IGJlIAp1bmRlcnRha2VuIHVubGVzcyBhbmQgdW50aWwgaXQgaXMgcG9zc2libGUgZm9yIHVzIHRvIAphZGR1Y2UgaW4gc3VwcG9ydCBvZiBvdXIgc3RhdGVtZW50cyBldmlkZW5jZSBlbnRpcmVseSAKYXBhcnQgZnJvbSB0aGF0IG9mIGNsYWlydm95YW5jZeKAlGV2aWRlbmNlIHN1Y2ggYXMgd2lsbCAKYXBwZWFsIHRvIHRoZSBtaW5kcyBvZiB0aGUgc2Nob2xhciBhbmQgdGhlIGFudGlxdWFyaWFuLiAKSXQgd2lsbCwgaG93ZXZlciwgYmUgbmVjZXNzYXJ5IGZvciBhIGNvbXByZWhlbnNpb24gb2YgCnRoZSBwdXJwb3NlIG9mIHRoZSBhbmNpZW50IGZvcm11bGEgYWJvdmUgbWVudGlvbmVkIAp0aGF0IGp1c3QgYSBmZXcgd29yZHMgdXBvbiB0aGF0IHN1YmplY3Qgc2hvdWxkIGJlIAppbnRyb2R1Y2VkIGludG8gdGhpcyB0cmVhdGlzZS4gCgpBcyBhIG1hdHRlciBvZiBmYWN0IHRoZSBDaHJpc3QgYXJvc2UgKGF0IGEgZGF0ZSBjb24tIApzaWRlcmFibHkgZWFybGllciB0aGFuIHRoYXQgdXN1YWxseSBhc3NpZ25lZCB0byBoaW0pIGFzIAphIHRlYWNoZXIgd2l0aGluIHRoZSBib3NvbSBvZiB0aGUgRXNzZW5lIGNvbW11bml0eSwgCmxpdmluZyBhbW9uZ3N0IHRoZW0gYW5kIGluc3RydWN0aW5nIHRoZW0gZm9yIHNvbWUgCnRpbWUgYmVmb3JlIGhpcyBwdWJsaWMgbWluaXN0cnkgY29tbWVuY2VkLiBUaGUgCmhlYWRzIG9mIHRoaXMgY29tbXVuaXR5IHdlcmUgYWxyZWFkeSBpbiBwb3NzZXNzaW9uIApvZiBmcmFnbWVudHMgb2YgbW9yZSBvciBsZXNzIGFjY3VyYXRlIGluZm9ybWF0aW9u4oCUIApwb3NzaWJseSBvYnRhaW5lZCBmcm9tIEJ1ZGRoaXN0IHNvdXJjZXPigJR3aXRoIHJlZ2FyZCAKdG8gdGhlIG9yaWdpbiBvZiBhbGwgdGhpbmdzLiBUaGVzZSB0aGUgQ2hyaXN0IHB1dCAKdG9nZXRoZXIgYW5kIHJlbmRlcmVkIGNvaGVyZW50LCBjYXN0aW5nIHRoZW0gZm9yIHRoZSAKcHVycG9zZSBvZiByZWFkeSBtZW1vcml6YXRpb24gaW50byB0aGUgc2hhcGUgb2YgYSAKCgoxNCBUSEUgQ0hSSVNUSUFOIENSRUVELiAKCgpmb3JtdWxhIG9mIGJlbGllZiB3aGljaCBtYXkgYmUgcmVnYXJkZWQgYXMgdGhlIGZpcnN0IApzb3VyY2Ugb2YgdGhlIENocmlzdGlhbiBDcmVlZC4gCgpUaGUgb3JpZ2luYWwgb2YgdGhpcyBmb3JtdWxhIG1heSBwZXJoYXBzIHNvbWUgCmRheSBiZSBleGFjdGx5IHRyYW5zbGF0ZWQgaW50byBFbmdsaXNoOyBidXQgc3VjaCBhbiAKdW5kZXJ0YWtpbmcgd291bGQgbmVlZCB0aGUgY28tb3BlcmF0aW9uIG9mIHNldmVyYWwgCnBlcnNvbnMsIGFuZCB2ZXJ5IG1pbnV0ZSBjYXJlIGFzIHRvIHRoZSBuaWNldGllcyBvZiAKbWVhbmluZyBhbmQgY2hvaWNlIG9mIHdvcmRzLiBUaGUgYXR0ZW1wdCB3aWxsIAp0aGVyZWZvcmUgbm90IGJlIG1hZGUgaGVyZSwgYnV0IHdlIHNoYWxsIGNvbmZpbmUgCm91cnNlbHZlcyB0byBpbmRpY2F0aW5nIHRob3NlIGNsYXVzZXMgb2Ygb3VyIHByZXNlbnQgCkNyZWVkcyB3aGljaCB3ZXJlIHJlcHJlc2VudGVkIGluIHRoaXMgb3JpZ2luYWwgZm9ybXVsYSwgCmFuZCBlbmRlYXZvdXJpbmcgdG8gbWFrZSB0aGVpciBtZWFuaW5nIG1vcmUgaW4tIAp0ZWxsaWdpYmxlLiAKClRoZSBwdXJwb3NlIGZvciB3aGljaCB0aGlzIHN5bWJvbCB3YXMgY29uc3RydWN0ZWQsIAp0aGVuLCB3YXMgdG8gY29uZGVuc2UgaW50byBhIGZvcm0gZWFzaWx5IHJlbWVtYmVyZWQgCnRoZSB0ZWFjaGluZyBhcyB0byB0aGUgb3JpZ2luIG9mIHRoZSBjb3Ntb3Mgd2hpY2ggdGhlIApDaHJpc3QgaGFkIGJlZW4gZ2l2aW5nIHRvIHRoZSBoZWFkcyBvZiB0aGUgRXNzZW5lIApjb21tdW5pdHkuIEVhY2ggcGhyYXNlIG9mIGl0IHdvdWxkIHJlY2FsbCB0byB0aGVpciAKbWluZHMgbXVjaCBtb3JlIHRoYW4gdGhlIG1lcmUgd29yZHMgaW4gd2hpY2ggaXQgCndhcyBleHByZXNzZWQ7IGluIGZhY3QsIGl0IHdhcyBhIG1uZW1vbmljIHN1Y2ggYXMgCnRoZSBCdWRkaGEgdXNlZCB3aGVuIGhlIGdhdmUgdG8gaGlzIGhlYXJlcnMgdGhlIApGb3VyIE5vYmxlIFRydXRocywgYW5kIG5vIGRvdWJ0IGVhY2ggY2xhdXNlIHdhcyAKdGFrZW4gYXMgYSB0ZXh0IGZvciBleHBsYW5hdGlvbiBhbmQgZXhwYW5zaW9uLCBtdWNoIAppbiB0aGUgc2FtZSB3YXkgYXMgTWFkYW1lIEJsYXZhdHNreSB3cm90ZSB0aGUgCndob2xlIG9mIFRoZSBTZWNyZXQgRG9jdHJpbmUgdXBvbiB0aGUgYmFzaXMgb2YgdGhlIApTdGFuemFzIG9mIER6eWFuLiAKCkluIGNvbnNpZGVyaW5nIHRoZSBzZWNvbmQgc291cmNlLCB3aGljaCB3ZSBoYXZlIApkZWNpZGVkIHRvIG1hcmsgYXMgKGIpLCB3ZSBoYXZlIHRvIHJlbWVtYmVyIHRoYXQgdGhlIApFZ3lwdGlhbiByZWxpZ2lvbiBleHByZXNzZWQgaXRzZWxmIHByaW5jaXBhbGx5IHRocm91Z2ggCmEgbXVsdGlwbGljaXR5IG9mIGZvcm1zIGFuZCBjZXJlbW9uaWVzLCBhbmQgdGhhdCBldmVuIAoKClRIRSBFR1lQVElBTiBSVUJSSUMuIDE1IAoKCmluIGl0cyBNeXN0ZXJpZXMgdGhlIHNhbWUgdGVuZGVuY3kgcmVwZWF0ZWRseSBzaG93ZWQgCml0c2VsZi4gVGhlIGhpZ2hlc3Qgc3RlcCBvZiB0aGVzZSBNeXN0ZXJpZXMgcGxhY2VkIGEgCm1hbiBkZWZpbml0ZWx5IHVwb24gdGhlIFBhdGgsIGFzIHdlIHNob3VsZCBub3cgY2FsbCAKaXQsIHRoYXQgaXMgdG8gc2F5LCBpdCBjb3JyZXNwb25kZWQgd2l0aCB3aGF0IGluIEJ1ZGRoaXN0IAp0ZXJtaW5vbG9neSBpcyBjYWxsZWQgdGhlIFNvdGFwYXR0aSBpbml0aWF0aW9uLiBBbiBlbGEtIApib3JhdGUgc3ltYm9saWNhbCByaXR1YWwgd2FzIHBlcmZvcm1lZCBpbiBjb25uZWN0aW9uIAp3aXRoIHRoaXMgc3RlcCwgYW5kIHBhcnQgb2Ygb3VyIENyZWVkIGlzIGEgZGlyZWN0IHJlcHJvLSAKZHVjdGlvbiBvZiB0aGUgaW5zdHJ1Y3Rpb25zIGxhaWQgZG93biBieSB0aGF0IHJpdHVhbCBmb3IgCnRoZSBvZmZpY2lhdGluZyBoaWVyb3BoYW50LCB0aGUgb25seSBkaWZmZXJlbmNlIGJlaW5nIHRoYXQgCndoYXQgdGhlcmUgc3Rvb2QgYXMgYSBzZXJpZXMgb2YgZGlyZWN0aW9ucyBoYXMgYmVlbiAKcmVjYXN0IGludG8gdGhlIGZvcm0gb2YgYSBoaXN0b3JpY2FsIG5hcnJhdGl2ZSBkZXNjcmliLSAKaW5nIHRoYXQgZGVzY2VudCBvZiB0aGUgTG9nb3MgaW50byBtYXR0ZXIgd2hpY2ggdGhlIApvcmlnaW5hbCByaXR1YWwgd2FzIGludGVuZGVkIHRvIHN5bWJvbGl6ZS4gCgpUaGlzIHJ1YnJpYyBvZiBpbml0aWF0aW9uLCBpbiB0aGUgbmV3IGZvcm0gd2hpY2ggd2UgCmhhdmUgZGVzY3JpYmVkLCB3YXMgaW5zZXJ0ZWQgaW4gdGhlIGZvcm11bGEgKGEpIGJ5IHRoZSAKbGVhZGVycyBvZiB0aGUgRXNzZW5lIGNvbW11bml0eSBzaG9ydGx5IGFmdGVyIENocmlzdCdzIApkZXBhcnR1cmUgZnJvbSBhbW9uZyB0aGVtLCBpbiBvcmRlciB0aGF0IHRoZSBkZXRhaWxzIAphcyB0byB0aGUgZGVzY2VudCBvZiB0aGUgU2Vjb25kIExvZ29zICh3aGljaCBoZSAKaGFkIHNvIG9mdGVuIGlsbHVzdHJhdGVkIGZvciB0aGVtIGJ5IHJlZmVyZW5jZSB0byB0aGUgCnJpdHVhbCBvZiB0aGlzIGluaXRpYXRpb24pIG1pZ2h0IGJlIGNvbW1lbW9yYXRlZCBpbiAKdGhlIHNhbWUgc3ltYm9sIHdoaWNoIGdhdmUgdGhlIGdyZWF0IG91dGxpbmUgb2YgdGhlIApkb2N0cmluZS4gCgpUZWFjaGluZyBzaW1pbGFyIGluIGNoYXJhY3RlciBhbmQgc2ltaWxhcmx5IGlsbHVzLSAKdHJhdGVkIGJ5IHN5bWJvbCB3YXMgZ2l2ZW4gYnkgaGltIHdpdGggcmVnYXJkIHRvIHRoZSAKd29yayBvZiB0aGUgRmlyc3QgYW5kIHRoZSBUaGlyZCBMb2dvaSwgdGhvdWdoIGNvbS0gCnBhcmF0aXZlbHkgbGl0dGxlIG9mIGl0IGhhcyBiZWVuIHByZXNlcnZlZCB0byB1czsgYnV0IAp0aGVyZSBzZWVtcyBubyBkb3VidCB0aGF0IHNwZWNpYWwgaW1wb3J0YW5jZSB3YXMgCmF0dGFjaGVkIGJ5IHRoZSBDaHJpc3QgdG8gdGhlIGFjY3VyYXRlIGNvbXByZWhlbnNpb24gCmJ5IGhpcyBkaXNjaXBsZXMgb2YgdGhlIGRlc2NlbnQgaW50byBtYXR0ZXIgb2YgdGhlIAoKCjE2IFRIRSBDSFJJU1RJQU4gQ1JFRUQuIAoKCm1vbmFkaWMgZXNzZW5jZSB3aGljaCBpcyBvdXRwb3VyZWQgYnkgdGhlIFNlY29uZCAKTG9nb3MuIAoKVGhpcyBpcyByZWFkaWx5IGNvbXByZWhlbnNpYmxlIGlmIHdlIHJlZmxlY3QgdGhhdCBpdCBpcyAKdGhpcyBtb25hZGljIGVzc2VuY2Ugd2hpY2ggZW5zb3VscyBhbGwgdGhlIGZvcm1zIAphcm91bmQgdXMsIGFuZCB0aGF0IGl0IGlzIG9ubHkgdGhyb3VnaCBpdHMgc3R1ZHkgdGhhdCAKdGhlIGdyZWF0IHByaW5jaXBsZSBvZiBldm9sdXRpb24gY2FuIGJlIGdyYXNwZWQsIGFuZCB0aGUgCmxhdyBvZiBsb3ZlIHdoaWNoIHN3YXlzIHRoZSB1bml2ZXJzZSBhdCBhbGwgdW5kZXJzdG9vZC4gCkZvciB0aG91Z2ggdW5kb3VidGVkbHkgZXZvbHV0aW9uIGlzIGFsc28gdGFraW5nIHBsYWNlIAppbiB0aGUgY2FzZSBvZiB0aGUgbGlmZSB3aGljaCBlbnNvdWxzIGF0b21zIGFuZCBtb2xlLSAKY3VsZXMsIGl0cyBwcm9ncmVzcyBpcyBlbnRpcmVseSBiZXlvbmQgb3VyIGtlbjsgYW5kIAphc3N1cmVkbHkgdGhlIHNhbWUgbWF5IGJlIHNhaWQsIGF0IGFueSByYXRlIGFzIHJlLSAKZ2FyZHMgdGhlIHZhc3QgbWFqb3JpdHkgb2YgbWVuLCB3aXRoIHJlZmVyZW5jZSB0byB0aGF0IApmYXIgaGlnaGVyIGV2b2x1dGlvbiB3aGljaCB3ZSBtdXN0IHN1cHBvc2UgdG8gYmUgaW4gCm9wZXJhdGlvbiBpbiBjb25uZWN0aW9uIHdpdGggdGhhdCB0aGlyZCBncmVhdCBvdXQtIApwb3VyaW5nIHdoaWNoIGNvbWVzIGZyb20gdGhlIEZpcnN0IExvZ29zLiAKClRodXMgaXQgaXMgZXZpZGVudCB0aGF0IGl0IGlzIG9ubHkgdGhyb3VnaCB0aGUgc3R1ZHkgCm9mIHRoZSBtZXRob2Qgb2YgdGhpcyBzZWNvbmQgb3V0cG91cmluZyB0aGF0IGEgY29tcHJlLSAKaGVuc2lvbiBvZiB0aGUgd2hvbGUgc3lzdGVtIG1heSBiZSBhcHByb2FjaGVkLCBhbmQgCnRoaXMgd291bGQgYWNjb3VudCBmb3IgdGhlIGVtcGhhc2lzIHdoaWNoIHRoZSBDaHJpc3QgCnNlZW1zIHRvIGhhdmUgbGFpZCB1cG9uIHRoaXMgcGFydCBvZiBoaXMgdGVhY2hpbmcuIApLbm93aW5nIGFzIHRoZXkgZGlkIHRoZSBuZWNlc3NpdHkgZm9yIHRoaXMgZW1waGFzaXMsIAppdCBpcyBub3Qgd29uZGVyZnVsIHRoYXQgdGhvc2Ugd2hvIGZlbHQgdGhlbXNlbHZlcyAKcmVzcG9uc2libGUgZm9yIGhhbmRpbmcgb24gdGhlIHRlYWNoaW5nIHNob3VsZCBoYXZlIAppbmNvcnBvcmF0ZWQgdGhpcyBzeW1ib2xpY2FsIG91dGxpbmUgb2YgaXQgaW50byB0aGUgCnNwZWNpYWwgZm9ybXVsYSB3aGljaCB3YXMgaW50ZW5kZWQgdG8gZXBpdG9taXplIHRoZWlyIApmYWl0aC4gTm8gZG91YnQgaW4gZG9pbmcgc28gdGhleSB3ZXJlIGFjdHVhdGVkIGJ5IHRoZSAKaGlnaGVzdCBhbmQgcHVyZXN0IG1vdGl2ZXMsIGFuZCBpdCB3YXMgbm90IHBvc3NpYmxlIGZvciAKdGhlbSB0byBmb3Jlc2VlIHRoYXQgdGhpcyB2ZXJ5IGluc2VydGlvbiB3b3VsZCBwcmVzZW50bHkgCm9wZW4gdGhlIHdheSBmb3IgdGhlIGRlZ3JhZGluZyBhbmQgZGVzdHJ1Y3RpdmUgYWN0aW9uIAoKClRIRSBUSElSRCBURU5ERU5DWS4gMTcgCgoKb2YgdGVuZGVuY3kgKGMpLCBvZiB3aGljaCBpbiB0aGVpciB0aW1lIHRoZXJlIHdhcyBhcyB5ZXQgCm5vIHNpZ24uIAoKSXQgbWF5IHBlcmhhcHMgYmUgYXNrZWQgd2h5IHRoZSBDaHJpc3Qgc2hvdWxkIGhhdmUgCmNob3NlbiB0aGUgc29tZXdoYXQgY29tcGxpY2F0ZWQgYW5kIG1hdGVyaWFsIHN5bS0gCmJvbGlzbSBvZiB0aGlzIEVneXB0aWFuIHJpdGUgdG8gaWxsdXN0cmF0ZSBoaXMgdGVhY2hpbmcgCm9uIHN1Y2ggYSBzdWJqZWN0LiBXZSBhcmUgaW4gbm8gcG9zaXRpb24gdG8gcHJlc3VtZSAKdG8gY3JpdGljaXplIHRoZSBtZXRob2RzIGFkb3B0ZWQgYnkgb25lIHdobyBrbm93cyA7IApidXQgcGVyaGFwcyB3ZSBtYXkgdmVudHVyZSB0byBzdWdnZXN0IHRoYXQgYSBwb3NzaWJsZSAKcmVhc29uIG1heSBiZSBmb3VuZCBpbiB0aGUgY2xvc2UgY29ubmVjdGlvbiBvZiB0aGUgCkVzc2VuZXMgd2l0aCB0aGUgRWd5cHRpYW4gdHJhZGl0aW9uLCBhbmQgaW4gdGhlIGZhY3QgCnRoYXQgSmVzdXMgaGltc2VsZiBoYWQgaW4gZWFybGllciBsaWZlIHNwZW50IHNvbWUgY29uLSAKc2lkZXJhYmxlIHRpbWUgaW4gRWd5cHQgYW5kIHBhc3NlZCB0aHJvdWdoIGF0IGxlYXN0IApvbmUgaW5pdGlhdGlvbiBhY2NvcmRpbmcgdG8gaXRzIG1ldGhvZHMuIAoKKGMpIEF0IGEgdmVyeSBlYXJseSBwZXJpb2QgaW4gdGhlIGhpc3Rvcnkgb2YgdGhlIG1vdmUtIAptZW50IHdoaWNoIGFmdGVyd2FyZHMgYmVjYW1lIGtub3duIGFzIENocmlzdGlhbml0eSAKd2UgZmluZCB0d28gcml2YWwgc2Nob29scyBvciB0ZW5kZW5jaWVzIGFzc2VydGluZyB0aGVtLSAKc2VsdmVzLCB3aGljaCBhcmUgaW4gcmVhbGl0eSB0aGUgb3V0Y29tZSBvZiB0d28gcGhhc2VzIApvZiB0aGUgbGlmZS13b3JrIG9mIHRoZSBDaHJpc3QuIEFzIGhhcyBiZWVuIHNhaWQsIHRoZSAKZ3JlYXRlciBwb3J0aW9uIG9mIGhpcyB0aW1lIHdhcyBkZXZvdGVkIHRvIGdpdmluZyBkZWZpbi0gCml0ZSBpbnN0cnVjdGlvbiB3aXRoaW4gdGhlIGJvdW5kYXJpZXMgb2YgdGhlIEVzc2VuZSAKY29tbXVuaXR5OyBidXQgaW4gYWRkaXRpb24gdG8gdGhpcywgYW5kIGluIG9wcG9zaXRpb24gCnRvIHRoZSB2aWV3cyBvZiB0aGUgb2ZmaWNpYWwgbGVhZGVycyBvZiB0aGF0IGNvbW11bml0eSwgCmhlIGFsc28gcGFzc2VkIGJleW9uZCB0aGVzZSBjb21wYXJhdGl2ZWx5IG5hcnJvdyAKbGltaXRzLCBhbmQgZGV2b3RlZCBhIHNob3J0IHBlcmlvZCBhdCB0aGUgY2xvc2Ugb2YgaGlzIApsaWZlIHRvIHB1YmxpYyBwcmVhY2hpbmcuIAoKSXQgd2FzIG9idmlvdXNseSBpbXBvc3NpYmxlIGZvciBoaW0gdG8gcHV0IGJlZm9yZSAKdGhlIGlnbm9yYW50IG11bHRpdHVkZSB0aG9zZSBkZWVwZXIgdGVhY2hpbmdzIG9mIHRoZSAKQW5jaWVudCBXaXNkb20gd2hpY2ggaGUgaGFkIGltcGFydGVkIHRvIHRoZSBmZXcgCndobyBieSBzcGVjaWFsIGVkdWNhdGlvbiBhbmQgYSBsb25nIGxpZmUgb2YgYXNjZXRpYyAKCgoxMyBUSEUgQ0hSSVNUSUFOIENSRUVELCAKCnRyYWluaW5nIGhhZCBmaXR0ZWQgdGhlbXNlbHZlcywgYXQgbGVhc3QgdG8gc29tZSBleHRlbnQsIApmb3IgdGhlaXIgcmVjZXB0aW9uLiBXZSBmaW5kLCB0aGVyZWZvcmUsIHRoYXQgaGlzIHB1YmxpYyAKYWRkcmVzc2VzIG1heSBiZSBkaXZpZGVkIGludG8gdHdvIGNsYXNzZXMsIHRoZSBmaXJzdCBjb24tIApzaXN0aW5nIG9mIHRoZSBBZHlhLCBhIHNlcmllcyBvZiBzaG9ydCBzZW50ZW5jZXMgZWFjaCAKY29udGFpbmluZyBlaXRoZXIgYW4gaW1wb3J0YW50IHRydXRoIG9yIGEgcnVsZSBvZiBjb24tIApkdWN0LCBhbmQgdGhlIHNlY29uZCBiZWluZyBjb21wb3NlZCBvZiB0aGUgemFwYXhBbnJ5cHJhLiAKb3Ig4oCY4oCYIHdvcmRzIG9mIGNvbWZvcnTigJ0g4oCUIHRob3NlIGVsb3F1ZW50IGRpc2NvdXJzZXMgCndoaWNoIHdlcmUgY2FsbGVkIGZvcnRoIGJ5IHRoZSBkZWVwIGNvbXBhc3Npb24gaGUgZmVsdCAKZm9yIHRoZSBwcm9mb3VuZCBtaXNjcnkgYWxtb3N0IHVuaXZlcnNhbCBhdCB0aGF0IHRpbWUgCmFtb25nIHRoZSBsb3dlciBjbGFzc2VzLCBhbmQgdGhlIHRlcnJpYmxlIGF0bW9zcGhlcmUgCm9mIGRlc3BhaXIsIGRlcHJlc3Npb24gYW5kIGRlZ3JhZGF0aW9uIGJ5IHdoaWNoIHRoZXkgCndlcmUgb3ZlcndoZWxtZWQuIAoKU29tZSB0cmFkaXRpb25hbCBmcmFnbWVudHMgb2YgdGhlIExvZ2lhIGhhdmUgYmVlbiAKaW5jb3Jwb3JhdGVkIGhlcmUgYW5kIHRoZXJlIGluIHdoYXQgYXJlIG5vdyBjYWxsZWQgdGhlIApnb3NwZWxzOyBhbmQgd2hhdCBzZWVtcyB0byBiZSBhIGdlbnVpbmUgbGVhZiBmcm9tIGEgCmNvbGxlY3Rpb24gb2YgdGhlbSB3YXMgcmVjZW50bHkgZGlzY292ZXJlZCBpbiBFZ3lwdCBieSAKTWVzc3JzLiBHcmVuZmVsbCBhbmQgSHVudC4gQ2hyaXN0IGhpbXNlbGYgYXBwZWFycyB0byAKaGF2ZSB3cml0dGVuIG5vdGhpbmcsIG9yIGF0IGFueSByYXRlIG5vdGhpbmcgdGhhdCBoZSAKd3JvdGUgaXMgbm93IGtub3duIHRvIHVzOyBidXQgZHVyaW5nIHRoZSBmaXJzdCB0d28gCmNlbnR1cmllcyBhZnRlciBoaXMgZGVhdGggKHdoaWNoLCBiZSBpdCByZW1lbWJlcmVkLCAKdG9vayBwbGFjZSBjb25zaWRlcmFibHkgYmVmb3JlIHdoYXQgd2Ugbm93IGNhbGwgdGhlIApDaHJpc3RpYW4gZXJhKSBtYW55IG9mIGhpcyBkaXNjaXBsZXMgc2VlbSB0byBoYXZlIAptYWRlIGFuZCB3cml0dGVuIGRvd24gY29sbGVjdGlvbnMgb2YgdGhlIHNheWluZ3MgCndoaWNoIHdlcmUgYXNjcmliZWQgdG8gaGltIGJ5IHRoZSBjdXJyZW50IG9yYWwgdHJhZGktIAp0aW9uLiBJbiBzdWNoIGNvbGxlY3Rpb25zLCBob3dldmVyLCBubyBhdHRlbXB0IHdhcyAKbWFkZSB0byBnaXZlIGEgYmlvZ3JhcGh5IG9mIHRoZSBDaHJpc3QgOyB0aG91Z2ggc29tZS0gCnRpbWVzIGEgZmV3IHdvcmRzIG9mIGludHJvZHVjdGlvbiBkZXNjcmliZWQgdGhlIG9jLSAKY2FzaW9uIHVwb24gd2hpY2ggY2VydGFpbiBzYXlpbmdzIHdlcmUgdXR0ZXJlZCwganVzdCBhcyAKaW4gdGhlIEJ1ZGRoaXN0IGJvb2tzIHdlIGNvbnN0YW50bHkgZmluZCBhIHNlcm1vbiAKCgpUSEUgVEVBQ0hJTkcgT0YgVEhFIENIUklTVC4gMTkgCgoKb2YgdGhlIEJ1ZGRoYeKAmXMgaW50cm9kdWNlZCBieSB0aGUgc3RhdGVtZW50LCDigJjigJzigJhPbiBhIApjZXJ0YWluIG9jY2FzaW9uIHRoZSBCbGVzc2VkIE9uZSB3YXMgZHdlbGxpbmcgaW4gdGhlIApiYW1ib28gZ2FyZGVuIGF0IFJhamFncmloYSzigJ0gZXRjLiAKClRob3VnaCBzb21lIG9mIGhpcyBMb2dpYSBoYXZlIGJlZW4gZGlzdG9ydGVkLCBhbmQgCm1hbnkgc2F5aW5ncyBoYXZlIGJlZW4gYXR0cmlidXRlZCB0byBoaW0gd2hpY2ggaGUgCmNlcnRhaW5seSBuZXZlciB1dHRlcmVkLCB5ZXQgaGUgaGFzIGJlZW4gc3RpbGwgbW9yZSAKc2VyaW91c2x5IG1pc3JlcHJlc2VudGVkIHdpdGggcmVmZXJlbmNlIHRvIHRoZSDigJjigJggd29yZHMgCm9mIGNvbWZvcnTigJ0gb3IgUGFyYWtsw6l0w6lyaWEsIGFuZCB3aXRoIGV2ZW4gbW9yZSBkaXMtIAphc3Ryb3VzIGNvbnNlcXVlbmNlcy4gVGhlIGdlbmVyYWwgdGVub3VyIG9mIHRoZXNlIGFkIApkcmVzc2VzIHdhcyBhbiBlbmRlYXZvdXIgdG8gaW5zcGlyZSBmcmVzaCBob3BlIGluIHRoZSAKaGVhcnRzIG9mIHRoZSBkZXNwYWlyaW5nLCBieSBleHBsYWluaW5nIHRvIHRoZW0gdGhhdCBpZiAKdGhleSBmb2xsb3dlZCB0aGUgdGVhY2hpbmcgd2hpY2ggaGUgcHV0IGJlZm9yZSB0aGVtIAp0aGV5IHdvdWxkIGFzc3VyZWRseSBmaW5kIHRoZW1zZWx2ZXMgaW4gYmV0dGVyIGNhc2UgaW4gCnRoZSBmdXR1cmUgdGhhbiBpbiB0aGUgcHJlc2VudCwgYW5kIHRoYXQgdGhvdWdoIG5vdyAKdGhleSB3ZXJlIHBvb3IgYW5kIHN1ZmZlcmluZyB0aGV5IG1pZ2h0IHlldCBzbyBsaXZlIGFzIAp0byBlbnN1cmUgZm9yIHRoZW1zZWx2ZXMgYW4gZXhpc3RlbmNlIGFmdGVyIGRlYXRoIGFuZCAKY29uZGl0aW9ucyBvZiBsaWZlIHVwb24gdGhlaXIgbmV4dCByZXR1cm4gdG8gZWFydGggZmFyIAptb3JlIGRlc2lyYWJsZSB0aGFuIHRoZSBmYXRlIG9mIHRob3NlIHdobyBub3cgc28gCmNydWVsbHkgb3BwcmVzc2VkIHRoZW0uIAoKSXQgd2FzIHBlcmhhcHMgbm90IHVubmF0dXJhbCB0aGF0IG1hbnkgb2YgdGhlIG1vcmUgCmlnbm9yYW50IG9mIGhpcyBoZWFyZXJzIHNob3VsZCBhcHByZWhlbmQgaGlzIG1lYW4tIAppbmcgYnV0IGRpbWx5LCBhbmQgc2hvdWxkIGdvIGF3YXkgd2l0aCBhIGdlbmVyYWwgaW0tIApwcmVzc2lvbiB0aGF0IGhlIHdhcyB2YWd1ZWx5IHByb3BoZXN5aW5nIGEgZnV0dXJlIGluIAp3aGljaCB3aGF0IHRoZXkgY29uc2lkZXJlZCBpbmp1c3RpY2Ugc2hvdWxkIGJlIHJpZ2h0ZWQgCmFjY29yZGluZyB0byB0aGVpciB3aXNoZXPigJRpbiB3aGljaCBzYXZhZ2UgcmV0cmlidXRpb24gCnNob3VsZCBvdmVydGFrZSB0aGUgcmljaCBtYW4sIG1haW5seSBmb3IgdGhlIGNyaW1lIG9mIApiZWluZyByaWNoLCB3aGlsZSB0aGV5IHRoZW1zZWx2ZXMgc2hvdWxkIGluaGVyaXQgYWxsIApraW5kcyBvZiBwb3dlciBhbmQgZ2xvcnkgbWVyZWx5IGJlY2F1c2UgdGhleSBub3cgd2VyZSAKcG9vci4gCgoKMjAgVEhFIENIUklTVElBTiBDUkVFRC4gCgoKSXQgd2lsbCBiZSByZWFkaWx5IHVuZGVyc3Rvb2QgdGhhdCB0aGlzIHdhcyBhIGRvY3RyaW5lIAp3aGljaCBlYXNpbHkgc2VjdXJlZCB0aGUgYWRoZXNpb24gb2YgYWxsIHRoZSBsZWFzdCBkZS0gCnNpcmFibGUgZWxlbWVudHMgb2YgdGhlIGNvbW11bml0eSwgYW5kIGFtb25nIHN1Y2ggCmNsYXNzZXMgaW4gdGhlIGFuY2llbnQgd29ybGQgaXQgc2VlbXMgdG8gaGF2ZSBzcHJlYWQgCndpdGggbWFydmVsbG91cyByYXBpZGl0eS4gTm9yIGlzIGl0IHdvbmRlcmZ1bCB0aGF0IApzdWNoIG1lbiBzaG91bGQgaGF2ZSBhbHRvZ2V0aGVyIGVsaW1pbmF0ZWQgZnJvbSB0aGVpciAKZG9jdHJpbmUgdGhlIGNvbmRpdGlvbiBvZiBnb29kIGxpdmluZywgYW5kIHNpbXBseSAKYmFuZGVkIHRoZW1zZWx2ZXMgdG9nZXRoZXIsIG9mdGVuIGluIG9yZ2llcyBvZiB0aGUgCm1vc3Qgb2JqZWN0aW9uYWJsZSBjaGFyYWN0ZXIsIGFzIGJlbGlldmVycyBpbiDigJjigJzigJhhIGdvb2QgCnRpbWUgY29taW5nLOKAnSB3aGVuIHRoZXkgc2hvdWxkIHJldmVuZ2UgdGhlbXNlbHZlcyAKdXBvbiBhbGwgdGhlaXIgcGVyc29uYWwgZW5lbWllcywgYW5kIHdpdGhvdXQgZWZmb3J0IG9mIAp0aGVpciBvd24gZW50ZXIgZm9ydGh3aXRoIGludG8gcG9zc2Vzc2lvbiBvZiB0aGUgd2VhbHRoIAphbmQgbHV4dXJ5IHdoaWNoIGhhZCBiZWVuIGFjY3VtdWxhdGVkIGJ5IHRoZSBsYWJvdXJzIApvZiBvdGhlcnMuIAoKQXMgdGhpcyB0ZW5kZW5jeSBkZXZlbG9wZWQsIGl0IG5hdHVyYWxseSBhc3N1bWVkIGEgCm1vcmUgYW5kIG1vcmUgcG9saXRpY2FsIGFuZCByZXZvbHV0aW9uYXJ5IGNoYXJhY3RlciwgCnVudGlsIGl0IGNhbWUgdG8gYmUgdHJ1ZSBvZiB0aGUgbGVhZGVycyBvZiB0aGlzIGZhY3Rpb24gYXMgCm9mIERhdmlkIG9mIG9sZCwgdGhhdCDigJhldmVyeSBvbmUgdGhhdCB3YXMgaW4gZGlzdHJlc3MsIAphbmQgZXZlcnkgb25lIHRoYXQgd2FzIGluIGRlYnQsIGFuZCBldmVyeSBvbmUgdGhhdCB3YXMgCmRpc2NvbnRlbnRlZCwgZ2F0aGVyZWQgdGhlbXNlbHZlcyB1bnRvIHRoZW0u4oCdIEl0IGlzIApsaXR0bGUgd29uZGVyLCB0aGVyZWZvcmUsIHRoYXQgdGhlIG9yZ2FuaXphdGlvbiB3aGljaCAKZ2F0aGVyZWQgcm91bmQgc3VjaCBtZW4sIGZpbGxlZCBhcyBpdCB3YXMgd2l0aCBqZWFsb3VzIApoYXRyZWQgb2YgYW55IGtub3dsZWRnZSBzdXBlcmlvciB0byB0aGVpciBvd24sIHNob3VsZCAKZXZlbnR1YWxseSBjb21lIHRvIHJlZ2FyZCBpZ25vcmFuY2UgYXMgcHJhY3RpY2FsbHkgYSAKcXVhbGlmaWNhdGlvbiBmb3Igc2FsdmF0aW9uLCBhbmQgdG8gbG9vayB3aXRoIHVuY29tLSAKcHJlaGVuZGluZyBjb250ZW1wdCB1cG9uIHRoZSBHbm9zaXMgcG9zc2Vzc2VkIGJ5IAp0aG9zZSB3aG8gc3RpbGwgcmV0YWluZWQgc29tZSB0cmFkaXRpb24gb2YgdGhlIHJlYWwgCnRlYWNoaW5nIG9mIHRoZSBDaHJpc3QuIAoKSXQgbXVzdCBub3QsIGhvd2V2ZXIsIGJlIHN1cHBvc2VkIHRoYXQgdGhpcyB0dXJidWxlbnQgCgoKVEhFIFRIUkVFIFRFTkRFTkNJRVMuIDIxIAoKCmFuZCBjb3ZldG91cyBtYWpvcml0eSBjb21wcmlzZWQgdGhlIHdob2xlIG9mIHRoZSAKZWFybHkgQ2hyaXN0aWFuIG1vdmVtZW50LiBBcGFydCBmcm9tIHRoZSB2YXJpb3VzIApib2RpZXMgb2YgR25vc3RpYyBwaGlsb3NvcGhlcnMgd2hvIGhhZCBpbmhlcml0ZWQgYSAKbW9yZSBvciBsZXNzIGFjY3VyYXRlIHRyYWRpdGlvbiBmcm9tIGF1dGhlbnRpYyBzb3VyY2VzIApvZiB0aGUgc2VjcmV0IHRlYWNoaW5nIGdpdmVuIGJ5IENocmlzdCB0byB0aGUgRXNzZW5lcywgCnRoZXJlIHdhcyBhbHNvIGEgc3RlYWRpbHkgaW5jcmVhc2luZyBib2R5IG9mIGNvbXBhcmEtIAp0aXZlbHkgcXVpZXQgYW5kIHJlc3BlY3RhYmxlIHBlb3BsZSB3aG8sIHRob3VnaCB3aXRob3V0IAphbnkga25vd2xlZGdlIG9mIHRoZSBHbm9zaXMsIHRvb2sgd2hhdCB0aGV5IGtuZXcgCm9mIHRoZSBMb2dpYSBvZiBDaHJpc3QgYXMgdGhlaXIgZ3VpZGUgaW4gbGlmZSwgYW5kIHRoaXMgCmJvZHkgZXZlbnR1YWxseSBiZWNhbWUgdGhlIHByZWRvbWluYW50IGZvcmNlIGluIHdoYXQgCndhcyBhZnRlcndhcmRzIGNhbGxlZCB0aGUgb3J0aG9kb3ggcGFydHkuIAoKVGh1cyB3ZSBzZWUgdGhhdCBpbiB0aGUgY291cnNlIG9mIHRoZSBkZXZlbG9wbWVudCAKb2YgdGhlIENocmlzdGlhbiBtb3ZlbWVudCB0aHJlZSBtYWluIHN0cmVhbXMgb2YgCnRlbmRlbmN5IG1heSBiZSBjbGVhcmx5IHJlY29nbml6ZWQgYXMgcmVzdWx0aW5nIGZyb20gCnRoZSB0ZWFjaGluZyBvZiB0aGUgQ2hyaXN0OyBmaXJzdCwgdGhlIHZhc3QgY29uZ2VyaWVzIG9mIApHbm9zdGljIHNlY3RzIHdoaWNoLCBnZW5lcmFsbHkgc3BlYWtpbmcsIHJlcHJlc2VudGVkIApzb21ldGhpbmcgb2YgdGhlIGlubmVyIHRlYWNoaW5nIGdpdmVuIHRvIHRoZSBFc3NlbmVzLCAKdGhvdWdoIGluIG1hbnkgY2FzZXMgdGluZ2VkIHdpdGggaWRlYXMgZGVyaXZlZCBmcm9tIAp2YXJpb3VzIG91dHNpZGUgc291cmNlcywgc3VjaCBhcyBab3JvYXN0cmlhbmlzbSwgClNhYmFpc20sIGV0Yy47IHNlY29uZCwgdGhlIG1vZGVyYXRlIHBhcnR5IHdobyBhdCAKZmlyc3QgdHJvdWJsZWQgdGhlbXNlbHZlcyBsaXR0bGUgYWJvdXQgZG9jdHJpbmUsIGJ1dCAKYWRvcHRlZCB0aGUgcmVwdXRlZCBzYXlpbmdzIG9mIENocmlzdCBhcyB0aGVpciBydWxlIG9mIApsaWZlOyBhbmQgdGhpcmQsIHRoZSBpZ25vcmFudCBob3JkZSBuaWNrbmFtZWQg4oCY4oCcIHBvb3IgCm1lbizigJ0gd2hvc2Ugb25seSByZWFsIHJlbGlnaW9uIHdhcyBhIHZhZ3VlIGhvcGUgb2YgCnJldm9sdXRpb24uIAoKQXMgQ2hyaXN0aWFuaXR5IGdyYWR1YWxseSBzcHJlYWQsIGl0cyBmb2xsb3dlcnMgYmVjYW1lIApzdWZmaWNpZW50bHkgbnVtZXJvdXMgdG8gZWFybiByZWNvZ25pdGlvbiBhcyBhIHBvbGl0aWNhbCAKZmFjdG9yLCBhbmQgdGh1cyB0byBnYWluIGEgY2VydGFpbiBhbW91bnQgb2Ygc29jaWFsIAppbmZsdWVuY2UuIEJ5IGRlZ3JlZXMgdGhlIHJlcHJlc2VudGF0aXZlcyBvZiBvdXIgCgoKMjIgVEhFIENIUklTVElBTiBDUkVFRC4gCgoKc2Vjb25kIGFuZCB0aGlyZCB0ZW5kZW5jaWVzIGdyYWR1YWxseSBkcmV3IHRvZ2V0aGVyIAppbnRvIGEgcGFydHkgd2hpY2ggY2FsbGVkIGl0c2VsZiBvcnRob2RveCwgYW5kIGJlaW5nIAp1bml0ZWQgaW4gaXRzIGRpc3RydXN0IG9mIHRoZSBoaWdoZXIgdGVhY2hpbmdzIG9mIHRoZSAKR25vc3RpY3MsIGZvdW5kIGl0c2VsZiBjb21wZWxsZWQgdG8gZGV2ZWxvcCBzb21lIHNvcnQgCm9mIGRvY3RyaW5hbCBzeXN0ZW0gdG8gb2ZmZXIgaW5zdGVhZCBvZiB0aGVpcnMuIEJ5IHRoaXMgCnRpbWUsIGhvd2V2ZXIsIHRoZSBvcmlnaW5hbCBFc3NlbmUgY29tbXVuaXR5IGhhZCAKYmVlbiBicm9rZW4gdXAsIGFuZCB0aGUgZm9ybXVsYSAod2hpY2ggYW1vbmcgdGhlbSAKaGFkIG5ldmVyIGJlZW4gd3JpdHRlbiwgYnV0IHdhcyBoYW5kZWQgZG93biBmcm9tIAptb3V0aCB0byBtb3V0aCkgaGFkIGluIHZhcmlvdXMgbW9yZSBvciBsZXNzIGltcGVyZmVjdCAKZm9ybXMgYmVjb21lIHByYWN0aWNhbGx5IHB1YmxpYyBwcm9wZXJ0eSBhbW9uZyBhbGwgCnRoZSBzZWN0czsgYW5kIG9mIGNvdXJzZSB0aGUgb3J0aG9kb3ggcGFydHkgZm91bmQgaXRzZWxmIApvYmxpZ2VkIHRvIHByb2R1Y2UgYW4gaW50ZXJwcmV0YXRpb24gb2YgaXQgdG8gc2V0IHVwIAphZ2FpbnN0IHRoZSB0cnVlIG9uZSBhcyBwcm9wb3VuZGVkIGJ5IHRoZSBHbm9zdGljcy4gClRoZW4gaXQgd2FzIHRoYXQgdGhlcmUgZGF3bmVkIHVwb24gdGhlaXIgbWVudGFsIApob3Jpem9uIG9uZSBvZiB0aGUgbW9zdCBjb2xvc3NhbCBtaXN1bmRlcnN0YW5kaW5ncyAKZXZlciBpbnZlbnRlZCBieSB0aGUgY3Jhc3Mgc3R1cGlkaXR5IG9mIG1hbi4gSXQgCm9jY3VycmVkIHRvIHNvbWVib2R54oCUcHJvYmFibHkgaXQgaGFkIGxvbmcgYmVmb3JlIApvY2N1cnJlZCB0byB0aGUgZGVuc2VseSBpZ25vcmFudCDigJjigJggcG9vciBtZW7igJnigJnigJR0aGF0IAp0aGUgYmVhdXRpZnVsIGFsbGVnb3JpY2FsIGlsbHVzdHJhdGlvbiBvZiB0aGUgZGVzY2VudCBvZiAKdGhlIFNlY29uZCBMb2dvcyBpbnRvIG1hdHRlciBjb250YWluZWQgaW4gdGhlIHN5bWJvbGljIApyaXR1YWwgb2YgdGhlIEVneXB0aWFuIGluaXRpYXRpb24gd2FzIG5vdCBhbiBhbGxlZ29yeSAKYXQgYWxsLCBidXQgdGhlIGxpZmUtc3Rvcnkgb2YgYSBwaHlzaWNhbCBodW1hbiBiZWluZyAKd2hvbSB0aGV5IGlkZW50aWZpZWQgd2l0aCBKZXN1cyBvZiBOYXphcmV0aC4gTm8gCmlkZWEgY291bGQgaGF2ZSBiZWVuIG1vcmUgZGVncmFkaW5nIHRvIHRoZSBncmFuZGV1ciAKb2YgdGhlIGZhaXRoLCBvciBtb3JlIG1pc2xlYWRpbmcgdG8gdGhlIHVuZm9ydHVuYXRlIApwZW9wbGUgd2hvIGFjY2VwdGVkIGl0LCB5ZXQgb25lIGNhbiB1bmRlcnN0YW5kIGl0cyAKd2VsY29tZSBieSB0aGUgZ3Jvc3NseSBpZ25vcmFudCwgYXMgYmVpbmcgbW9yZSBuZWFybHkgCndpdGhpbiB0aGUgZ3Jhc3Agb2YgdGhlaXIgdmVyeSBzbWFsbCBtZW50YWwgY2FsaWJyZSAKdGhhbiB0aGUgbWFnbmlmaWNlbnQgYnJlYWR0aCBvZiB0aGUgdHJ1ZSBpbnRlcnByZXRhdGlvbi4gCgoKVEhFIENSRUVEIE9GIFRIRSBDT1VOQ0lMLiAyMyAKCgpUaGUgc2xpZ2h0IGFkZGl0aW9ucyBuZWNlc3NhcnkgdG8gZW5ncmFmdCB0aGlzIHVuLSAKd29ydGh5IHRoZW9yeSB1cG9uIHRoZSBncm93aW5nIENyZWVkIHdlcmUgZWFzaWx5IAptYWRlLCBhbmQgbm90IHZlcnkgbG9uZyBhZnRlciB0aGlzIHBlcmlvZCBmcmFnbWVudGFyeSAKdmVyc2lvbnMgb2YgaXQgYmVnYW4gdG8gYmUgY29tbWl0dGVkIHRvIHdyaXRpbmcuIFNvIAp0aGF0IHRoZSBjb21tb25seSBhY2NlcHRlZCBpZGVhIHRoYXQgdGhlIENyZWVkIHdhcyBhIApjb25nbG9tZXJhdGUgZ3JhZHVhbGx5IGdhdGhlcmVkIHRvZ2V0aGVyIGlzLCB0aG91Z2ggCm5vdCBxdWl0ZSBpbiB0aGUgc2Vuc2UgdXN1YWxseSBzdXBwb3NlZCwgcGFydGlhbGx5IHRydWUsIApidXQgdGhlIHRyYWRpdGlvbiB3aGljaCBhc3NpZ25zIGl0cyBhdXRob3JzaGlwIHRvIHRoZSAKdHdlbHZlIGFwb3N0bGVzIGlzIGVudGlyZWx5IHVud29ydGh5IG9mIGNyZWRpdC4gVGhlIAp0cnVlIGdlbmVzaXMgb2YgdGhlIGdyZWF0ZXIgcGFydCBvZiBpdCBpcyBpbmRlZWQgZmFyIApoaWdoZXIgdGhhbiB0aGF0LCBhcyB3ZSBoYXZlIHNlZW4sIGFuZCB0aGUgZWFybHkgCmZyYWdtZW50cyBhcmUgaW1wZXJmZWN0IHJlY29sbGVjdGlvbnMgb2YgYW4gb3JhbCB0cmFkaS0gCnRpb24sIG91dCBvZiB3aGljaCBldmVudHVhbGx5IGEgdmVyeSBmYWlyIHJlcHJlc2VudGF0aW9uIApvZiB0aGUgb3JpZ2luYWwgd2FzIGNvbXBpbGVkLCBhbmQgdGhpcyB3YXMgZm9ybWFsbHkgCmFkb3B0ZWQgYnkgdGhlIENvdW5jaWwgb2YgTmljemEsIHRob3VnaCB0aGF0IGNvdW5jaWwgCnNob3dlZCBpdHMgYWJzb2x1dGUgbWlzY29tcHJlaGVuc2lvbiBvZiB0aGUgd2hvbGUgCnRoaW5nIGJ5IGNvbmNsdWRpbmcgaXQgd2l0aCBhIGN1cnNlIGVudGlyZWx5IGZvcmVpZ24gCnRvIGl0cyBzcGlyaXQuIAoKSW4gb3JkZXIgdGhhdCB3ZSBtYXkgaGF2ZSBiZWZvcmUgdXMgdGhlIGV4YWN0IGZvcm0gCm9mIENyZWVkIHdoaWNoIHdhcyB0aGUgb3V0Y29tZSBvZiB0aGlzIGV4Y2VlZGluZ2x5IAp0dXJidWxlbnQgY291bmNpbCwgSSBzdWJqb2luIGhlcmUgYSBjYXJlZnVsIHRyYW5zbGF0aW9uIApvZiBpdCwgZ2l2ZW4gYnkgTXIuIE1lYWQgaW4gTHVjaWZlciwgdm9sLiAxeC4sIHAuIDIwNC4gCgrigJjigJhXZSBiZWxpZXZlIGluIG9uZSBHb2QsIHRoZSBGYXRoZXIgQWxtaWdodHksIApNYWtlciBvZiBhbGwgdGhpbmdzIGJvdGggdmlzaWJsZSBhbmQgaW52aXNpYmxlIDsgYW5kIGluIApvbmUgTG9yZCwgSmVzdXMgQ2hyaXN0LCB0aGUgU29uIG9mIEdvZCwgYmVnb3R0ZW4gb2YgCnRoZSBGYXRoZXIsIG9ubHktYmVnb3R0ZW4sIHRoYXQgaXMgdG8gc2F5LCBvZiB0aGUgc3ViLSAKc3RhbmNlIG9mIHRoZSBGYXRoZXIsIEdvZCBvZiBHb2QsIExpZ2h0IG9mIExpZ2h0LCB2ZXJ5IApHb2Qgb2YgdmVyeSBHb2QsIGJlZ290dGVuLCBub3QgbWFkZSwgYmVpbmcgb2Ygb25lIApzdWJzdGFuY2Ugd2l0aCB0aGUgRmF0aGVyLCBieSB3aG9tIGFsbCB0aGluZ3Mgd2VyZSAKCgoyNCBUSEUgQ0hSSVNUSUFOIENSRUVELiAKCgptYWRlLCBib3RoIHRoaW5ncyBpbiBoZWF2ZW4gYW5kIHRoaW5ncyBpbiBlYXJ0aOKAlHdobyAKZm9yIHVzIG1lbiBhbmQgZm9yIG91ciBzYWx2YXRpb24gY2FtZSBkb3duIGFuZCB3YXMgCm1hZGUgZmxlc2gsIGFuZCB3YXMgbWFkZSBtYW4sIHN1ZmZlcmVkIGFuZCByb3NlIGFnYWluIApvbiB0aGUgdGhpcmQgZGF5LCB3ZW50IHVwIGludG8gdGhlIGhlYXZlbnMsIGFuZCBpcyB0byAKY29tZSBhZ2FpbiB0byBqdWRnZSB0aGUgcXVpY2sgYW5kIHRoZSBkZWFkOyBhbmQgaW4gCnRoZSBIb2x5IEdob3N0LiBCdXQgdGhvc2Ugd2hvIHNheSwg4oCYdGhlcmUgd2FzIHdoZW4gCmhlIHdhcyBub3Qs4oCZIGFuZCDigJhiZWZvcmUgaGUgd2FzIGJlZ290dGVuIGhlIHdhcyAKbm90LOKAmSBhbmQgdGhhdCDigJhoZSBjYW1lIGludG8gZXhpc3RlbmNlIGZyb20gd2hhdCB3YXMgCm5vdCzigJkgb3Igd2hvIHByb2Zlc3MgdGhhdCB0aGUgU29uIG9mIEdvZCBpcyBvZiBhIGRpZi0gCmZlcmVudCBwZXJzb24gb3Igc3Vic3RhbmNlLCBvciB0aGF0IGhlIGlzIGNyZWF0ZWQsIG9yIApjaGFuZ2VhYmxlLCBvciB2YXJpYWJsZSwgYXJlIGFuYXRoZW1hdGl6ZWQgYnkgdGhlIApDYXRob2xpYyBDaHVyY2gu4oCdIAoKSXQgd2lsbCBiZSBwZXJjZWl2ZWQgdGhhdCB0aG91Z2ggdGhpcyBmb3JtIGlzIGJyb2FkbHkgCnNpbWlsYXIgdG8gdGhhdCB3aGljaCBub3cgb2NjdXJzIGluIHRoZSBjb21tdW5pb24gCnNlcnZpY2Ugb2YgdGhlIENodXJjaCBvZiBFbmdsYW5kLCB0aGVyZSBhcmUgeWV0IHNldmVyYWwgCm5vdCB1bmltcG9ydGFudCBwb2ludHMgb2YgZGlmZmVyZW5jZS4gTXVjaCBvZiB0aGUgCm1hdGVyaWFsaXN0aWMgcXVhc2ktaGlzdG9yaWNhbCBjb3JydXB0aW9uIGhhcyBub3QgeWV0IApmb3VuZCBlbnRyYW5jZSwgdGhvdWdoIGV2ZW4gYWxyZWFkeSB0aGUgZmF0YWwgaWRlbnRpLSAKZmljYXRpb24gb2YgQ2hyaXN0IHdpdGggSmVzdXMsIGFuZCBvZiBib3RoIG9mIHRoZW0gd2l0aCAKdGhlIFNlY29uZCBMb2dvcywgc2hvd3MgaXRzZWxmIGFsbCB0b28gcGxhaW5seS4gQnV0IApzaW5jZSBhbGxdIGFjY291bnRzIGFncmVlIHRoYXQgdGhlIG1lbWJlcnMgb2YgdGhpcyBjZWxlLSAKYnJhdGVkIGNvdW5jaWwgd2VyZSBpbiB0aGUgbWFpbiBpZ25vcmFudCBhbmQgdHVyYnVsZW50IApmYW5hdGljcywgZHJhd24gdG9nZXRoZXIgbGFyZ2VseSBieSB0aGUgaG9wZSBvZiBwcm9tb3QtIAppbmcgdGhlaXIgcGVyc29uYWwgaW50ZXJlc3RzLCBpdCBpcyBzbWFsbCB3b25kZXIgdGhhdCB0aGUgCm5hcnJvd2VyIHJhdGhlciB0aGFuIHRoZSB3aWRlciBpZGVhIGNvbW1lbmRlZCBpdHNlbGYgCnRvIHRoZW0uIFN0aWxsIGl0IHdpbGwgYmUgbm90ZWQgdGhhdCB0aGUgY29uZnVzaW9uIG9mIAp0aGUgY29uY2VwdGlvbiBieSB0aGUgSG9seSBHaG9zdCBhbmQgdGhlIGJpcnRoIGZyb20gCnRoZSBWaXJnaW4gZG9lcyBub3QgYXBwZWFyOyB0aGUgc3ltYm9sIG9mIHRoZSBjcnVjaS0gCmZpeGlvbiBpcyBub3QgZGVncmFkZWQgaW50byBhIGhpc3RvcmljYWwgZmFjdCwgbm9yIGhhcyB0aGUgCgoKVEhFIE1BVEVSSUFMSVpJTkcgTUFOSUEuIDI1IAoKCmNsdW1zeSBhdHRlbXB0IGJlZW4gbWFkZSB0byBnaXZlIGFuIGFpciBvZiB2ZXJpc2ltaWxpLSAKdHVkZSB0byB0aGUgc3RvcnkgYnkgaW1wb3J0aW5nIGludG8gaXQgYW4gZW50aXJlbHkgaW5hYy0gCmN1cmF0ZSBkYXRlIGluIHRoZSBzaGFwZSBvZiBhbiB1bndhcnJhbnRlZCByZWZlcmVuY2UgCnRvIHRoYXQgdW5mb3J0dW5hdGUgYW5kIG11Y2gtbWFsaWduZWQgbWFuLCBQb250aXVzIApQaWxhdGUuIAoKQWxsIHRoZXNlIG1pc3NpbmcgY2xhdXNlcywgaG93ZXZlciwgYXBwZWFyIGluIHdoYXQgCmlzIGNhbGxlZCDigJjigJggVGhlIFJvbWFuIENvbmZlc3Npb24s4oCdIHdoaWNoIGlzIHVzdWFsbHkgCmFzc2lnbmVkIHRvIGFuIGVhcmxpZXIgZGF0ZSwgYnV0IHdlIGFyZSBpbiBubyB3YXkgY29uLSAKY2VybmVkIGluIHRoaXMgZGlzY3Vzc2lvbiwgc2luY2Ugd2UgcmVjb2duaXplIHRoYXQgbW9zdCAKb2YgdGhlc2UgY2xhdXNlcyBhcmUgbWVyZWx5IHNsaWdodCBkaXN0b3J0aW9ucyBvZiB0aGUgCkVneXB0aWFuIGZvcm11bGEgb2YgaW5pdGlhdGlvbiwgd2hpY2ggaGFkIGNlcnRhaW5seSAKZXhpc3RlZCBmb3IgbWFueSBjZW50dXJpZXMuIAoKV2hhdGV2ZXIgbWF5IGhhdmUgYmVlbiB0aGUgZGF0ZSAoYW5kIGl0IHdhcyB1bi0gCmRvdWJ0ZWRseSBhbiBlYXJseSBvbmUpIGF0IHdoaWNoIHRoZSBkZWdyYWRhdGlvbiBvZiAKYWxsZWdvcnkgaW50byBwc2V1ZG8tYmlvZ3JhcGh5IGZpcnN0IHRvb2sgcGxhY2UsIHdlIHNlZSAKaXRzIGluZmx1ZW5jZSB3b3JraW5nIHVwb24gb3RoZXIgZG9jdW1lbnRzIGFzIHdlbGwgYXMgCnVwb24gdGhlIENyZWVkLiBUaGUgZ29zcGVscyBhbHNvIGhhdmUgc3VmZmVyZWQgdW5kZXIgCmFuIGV4YWN0bHkgc2ltaWxhciBtYXRlcmlhbGl6aW5nIG1hbmlhLCBmb3IgdGhlIGJlYXV0aWZ1bCAKcGFyYWJsZSBvZiB0aGUgb3JpZ2luYWwgaGFzIGFnYWluIGFuZCBhZ2FpbiBiZWVuIGNvci0gCnJ1cHRlZCBieSB0aGUgYWRkaXRpb24gb2YgcG9wdWxhciBsZWdlbmRzIGFuZCB0aGUgaW50ZXItIApzcGVyc2lvbiBvZiBzb21lIG9mIHRoZSB0cmFkaXRpb25hbCBMb2dpYSwgdW50aWwgaW4gd2hhdCAKYXJlIG5vdyBjYWxsZWQgdGhlIGdvc3BlbHMgd2UgaGF2ZSBhIGNvbmZ1c2VkIGNvbS0gCnBpbGF0aW9u4oCUaG9wZWxlc3NseSBpbXBvc3NpYmxlLCBpZiByZWdhcmRlZCBhcyBoaXN0b3J5LCAKYW5kIGV4Y2VlZGluZ2x5IGRpZmZpY3VsdCB0byBzb3J0IG91dCBpbnRvIGl0cyBjb21wb25lbnQgCnBhcnRzLiAKCldlIG11c3Qgbm90LCBob3dldmVyLCBhbGxvdyBvdXJzZWx2ZXMgdG8gYmUgbGVkIGF3YXkgCmludG8gdGhlIGZhc2NpbmF0aW5nIGJ5ZS1wYXRoIG9mIGdvc3BlbCBjcml0aWNpc20sIGJ1dCAKbXVzdCBjb25maW5lIG91cnNlbHZlcyB0byB0aGUgY29uc2lkZXJhdGlvbiBvZiB0aGUgQ3JlZWQuIApCZWZvcmUsIGhvd2V2ZXIsIGl0IHdpbGwgYmUgcG9zc2libGUgZm9yIHRoZSByZWFkZXIgdG8gCgoKMjYgVEhFIENIUklTVElBTiBDUkVFRC4gCgoKYXBwcmVjaWF0ZSBmdWxseSB0aGUgcmVhbCBtZWFuaW5nIG9mIGl0cyB2YXJpb3VzIGNsYXVzZXMsIAppdCBpcyBuZWNlc3NhcnkgdGhhdCBoZSBzaG91bGQgdW5kZXJzdGFuZCBhcyBmYXIgYXMgbWF5IApiZSBwb3NzaWJsZSB0aGUgb3V0bGluZSBvZiB0aGUgc3lzdGVtIG9mIGNvc21vZ2VuZXNpcyAKd2hpY2ggaXQgd2FzIG9yaWdpbmFsbHkgaW50ZW5kZWQgdG8gaW5kaWNhdGUuIFRoaXMgaXMgCm9mIGNvdXJzZSBpZGVudGljYWwgd2l0aCB0aGF0IHRhdWdodCBieSB0aGUgV2lzZG9tLSAKUmVsaWdpb24sIGFuZCB0aGUgc3RhdGVtZW50IG9mIGl0IHdpdGggd2hpY2ggd2UgYXJlIApub3cgY29uY2VybmVkIGlzIGluIGZhY3QgYW4gb3V0bGluZSBvZiB0aGUgcmVzcGVjdGl2ZSAKZnVuY3Rpb25zIG9mIHRoZSBUaHJlZSBMb2dvaSBpbiBodW1hbiBldm9sdXRpb24uIAoKSXQgaXMgb2YgY291cnNlIHVuZGVyc3Rvb2QgZnJvbSB0aGUgYmVnaW5uaW5nIHRoYXQgCnRoaXMgaXMgYSBzdWJqZWN0IG9mIHdoaWNoIG5vbmUgb2YgdXMgY2FuIGhvcGUgdG8gYXR0YWluIApwZXJmZWN0IGNvbXByZWhlbnNpb24gZm9yIG1hbnkgYW4gem9uIHRvIGNvbWUsIGZvciAKaGUgd2hvIGdyYXNwcyBpdCB0aG9yb3VnaGx5IG11c3QgYmUgY29uc2Npb3VzbHkgb25lIAp3aXRoIHRoZSBIaWdoZXN0LiBTb21lIGluZGljYXRpb25zIG1heSwgaG93ZXZlciwgCmJlIGdpdmVuIHdoaWNoIG1heSBwZXJoYXBzIGhlbHAgdXMgaW4gb3VyIHRoaW5raW5nLCAKdGhvdWdoIGl0IGlzIG1vc3QgZW1waGF0aWNhbGx5IG5lY2Vzc2FyeSB0byBiZWFyIGluIAptaW5kIGFsbCB0aGUgd2F5IHRocm91Z2ggdGhhdCwgc2luY2Ugd2UgYXJlIGxvb2tpbmcgYXQgCnRoZSBwcm9ibGVtIGZyb20gYmVsb3cgaW5zdGVhZCBvZiBmcm9tIGFib3ZlLCBmcm9tIAp0aGUgc3RhbmRwb2ludCBvZiBvdXIgZXh0cmVtZSBpZ25vcmFuY2UgaW5zdGVhZCBvZiAKZnJvbSB0aGF0IG9mIG9tbmlzY2llbmNlLCBhbnkgY29uY2VwdGlvbiB0aGF0IHdlIG1heSAKZm9ybSBvZiBpdCBtdXN0IGJlIGltcGVyZmVjdCBhbmQgdGhlcmVmb3JlIGluYWNjdXJhdGUuIAoKV2UgYXJlIHRvbGQgdGhhdCB3aGF0IGhhcHBlbnMgYXQgdGhlIGJlZ2lubmluZyBvZiAKYSBzb2xhciBzeXN0ZW0gKHN1Y2ggYXMgb3VyIG93bikgaXMsIGFsbG93aW5nIGZvciBjZXItIAp0YWluIG9idmlvdXMgZGlmZmVyZW5jZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvbmRpdGlvbnMsIAppZGVudGljYWwgd2l0aCB3aGF0IGhhcHBlbnMgYXQgdGhlIHJlLWF3YWtlbmluZyBhZnRlciAKb25lIG9mIHRoZSBncmVhdCBwZXJpb2RzIG9mIGNvc21pYyByZXN0OyBhbmQgaXQgd2lsbCBwcm8tIApiYWJseSBiZSBtb3JlIHBvc3NpYmxlIGZvciB1cyBub3QgZW50aXJlbHkgdG8gbWlzdW5kZXItIApzdGFuZCBpZiB3ZSBlbmRlYXZvdXIgdG8gZGlyZWN0IG91ciBhdHRlbnRpb24gdG8gdGhlIApmb3JtZXIgcmF0aGVyIHRoYW4gdG8gdGhlIGxhdHRlci4gCgpJdCBzaG91bGQgYmUgcmVhbGl6ZWTigJkgdG8gYmVnaW4gd2l0aCwgdGhhdCBpbiB0aGUgZXZvLSAKCgpUSEUgVEhSRUUgTE9HT0kuIDI3IAoKCmx1dGlvbiBvZiBhIHNvbGFyIHN5c3RlbSB0aHJlZSBvdCB0aGUgaGlnaGVzdCBwcmluY2lwbGVzIApvZiB0aGUgTG9nb3Mgb2YgdGhhdCBzeXN0ZW0gY29ycmVzcG9uZCB0byBhbmQgcmVzcGVjLSAKdGl2ZWx5IGZ1bGZpbCB0aGUgZnVuY3Rpb25zIG9mIHRoZSB0aHJlZSBHcmVhdCBMb2dvaSBpbiAKY29zbWljIGV2b2x1dGlvbiA7IGluIHBvaW50IG9mIGZhY3QsIHRob3NlIHRocmVlIHByaW4tIApjaXBsZXMgYXJlIGlkZW50aWNhbCB3aXRoIHRoZSB0aHJlZSBHcmVhdCBMb2dvaSBpbiAKYSBtYW5uZXIgd2hpY2ggdG8gdXMgZG93biBoZXJlIGlzIHdob2xseSBpbmNvbXByZS0gCmhlbnNpYmxlLCBldmVuIHRob3VnaCB3ZSBtYXkgc2VlIHRoYXQgaXQgbXVzdCBiZSBzby4gCgpZZXQgd2Ugc2hvdWxkIGJlIGNhcmVmdWwsIHdoaWxlIHJlY29nbml6aW5nIHRoaXMgCmlkZW50aXR5IGluIGVzc2VuY2UsIG9uIG5vIGFjY291bnQgdG8gY29uZnVzZSB0aGUgcmUtIApzcGVjdGl2ZSBmdW5jdGlvbnMgb2YgYmVpbmdzIGRpZmZlcmluZyBzbyB3aWRlbHkgaW4gdGhlaXIgCnNwaGVyZSBvZiBhY3Rpb24uIEl0IHNob3VsZCBiZSByZW1lbWJlcmVkIHRoYXQgZnJvbSAKdGhlIEZpcnN0IExvZ29zLCB3aGljaCBzdGFuZHMgbmV4dCB0byB0aGUgQWJzb2x1dGUsIAplbWFuYXRlcyB0aGUgU2Vjb25kIG9yIER1YWwgTG9nb3MsIGZyb20gd2hpY2ggaW4gCnR1cm4gY29tZXMgdGhlIFRoaXJkLiBGcm9tIHRoYXQgVGhpcmQgTG9nb3MgY29tZSAKZm9ydGggdGhlIFNldmVuIEdyZWF0IExvZ29pLCBjYWxsZWQgc29tZXRpbWVzIHRoZSAKU2V2ZW4gU3Bpcml0cyBiZWZvcmUgdGhlIHRocm9uZSBvZiBHb2Q7IGFuZCBhcyB0aGUgCmRpdmluZSBvdXRicmVhdGhpbmcgcG91cnMgaXRzZWxmIGV2ZXIgZnVydGhlciBvdXR3YXJkIAphbmQgZG93bndhcmQsIGZyb20gZWFjaCBvZiB0aGVzZSB3ZSBoYXZlIHVwb24gdGhlIApuZXh0IHBsYW5lIHNldmVuIExvZ28gYWxzbywgdG9nZXRoZXIgbWFraW5nIHVwIG9uIAp0aGF0IHBsYW5lIGZvcnR5LW5pbmUuIAoKSXQgd2lsbCBiZSBvYnNlcnZlZCB0aGF0IHdlIGhhdmUgYWxyZWFkeSBwYXNzZWQgCnRocm91Z2ggbWFueSBzdGFnZXMgb24gdGhlIGdyZWF0IGRvd253YXJkIHN3ZWVwIAp0b3dhcmRzIG1hdHRlcjsgeWV0LCBvbWl0dGluZyB0aGUgZGV0YWlsIG9mIGludGVybWVkaWF0ZSAKaGllcmFyY2hpZXMsIGl0IGlzIHNhaWQgdGhhdCB0byBlYWNoIG9mIHRoZXNlIGZvcnR5LW5pbmUgCmJlbG9uZyBtaWxsaW9ucyBvZiBzb2xhciBzeXN0ZW1zLCBlYWNoIGVuZXJnaXplZCBhbmQgCmNvbnRyb2xsZWQgYnkgaXRzIG93biBzb2xhciBMb2dvcy4gVGhvdWdoLCBhdCBsZXZlbHMgCnNvIGV4YWx0ZWQgYXMgdGhlc2UsIGRpZmZlcmVuY2VzIGluIGdsb3J5IGFuZCBwb3dlciAKY2FuIG1lYW4gYnV0IGxpdHRsZSB0byB1cywgd2UgbWF5IHlldCB0byBzb21lIGV4dGVudCAKcmVhbGl6ZSBob3cgdmFzdCBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgdGhyZWUgR3JlYXQgCgoKVEhFIENIUklTVElBTiBDUkVFRC4gCgoKTG9nb2kgYW5kIHRoZSBMb2dvcyBvZiBhIHNpbmdsZSBzeXN0ZW0sIGFuZCBzbyBhdm9pZCAKYSBtaXN0YWtlIGludG8gd2hpY2ggY2FyZWxlc3Mgc3R1ZGVudHMgYXJlIGNvbnN0YW50bHkgCmZhbGxpbmcuIAoKSXQgaGFzIG9mdGVuIGJlZW4gc3RhdGVkIHRoYXQgZWFjaCBvZiB0aGUgcGxhbmVzIG9mIApvdXIgc3lzdGVtIGlzIGRpdmlkZWQgaW50byBzZXZlbiBzdWItcGxhbmVzLCBhbmQgdGhhdCAKdGhlIG1hdHRlciBvZiB0aGUgaGlnaGVzdCBzdWItcGxhbmUgaW4gZWFjaCBtYXkgYmUgcmUtIApnYXJkZWQgYXMgYXRvbWljIHF1ZCBpdHMgcGFydGljdWxhciBwbGFuZeKAlHRoYXQgaXMgdG8gCnNheSwgdGhhdCBpdHMgYXRvbXMgY2Fubm90IGJlIGZ1cnRoZXIgc3ViZGl2aWRlZCB3aXRoLSAKb3V0IHBhc3NpbmcgZnJvbSB0aGF0IHBsYW5lIHRvIHRoZSBvbmUgbmV4dCBhYm92ZSAKaXQuIE5vdyB0aGVzZSBzZXZlbiBhdG9taWMgc3ViLXBsYW5lcywgdGFrZW4gYnkgCnRoZW1zZWx2ZXMgYW5kIGVudGlyZWx5IHdpdGhvdXQgcmVmZXJlbmNlIHRvIGFueSBvZiAKdGhlIG90aGVyIHN1Yi1wbGFuZXMgd2hpY2ggYXJlIGFmdGVyd2FyZHMgY2FsbGVkIGludG8gCmV4aXN0ZW5jZSBieSB0aGUgdmFyaW91cyBjb21iaW5hdGlvbnMgb2YgdGhlaXIgYXRvbXMsIApjb21wb3NlIHRoZSBsb3dlc3Qgb2YgdGhlIGdyZWF0IGNvc21pYyBwbGFuZXMsIGFuZCBhcmUgCnRoZW1zZWx2ZXMgaXRzIHNldmVuIHN1YmRpdmlzaW9ucy4gCgpTbyB0aGF0IGJlZm9yZSBhIHNvbGFyIHN5c3RlbSBjb21lcyBpbnRvIGV4aXN0ZW5jZSAKd2UgaGF2ZSBvbiBpdHMgZnV0dXJlIHNpdGUsIHNvIHRvIHNwZWFrLCBub3RoaW5nIGJ1dCB0aGUgCm9yZGluYXJ5IGNvbmRpdGlvbnMgb2YgaW50ZXJzdGVsbGFyIHNwYWNl4oCUdGhhdCBpcyB0byAKc2F5LCB3ZSBoYXZlIG1hdHRlciBvZiB0aGUgc2V2ZW4gc3ViZGl2aXNpb25zIG9mIHRoZSAKbG93ZXN0IGNvc21pYyBwbGFuZSAoc29tZXRpbWVzIGNhbGxlZCB0aGUgY29zbWljIApwcmFrcml0aWMpLCBhbmQgZnJvbSBvdXIgcG9pbnQgb2YgdmlldyB0aGlzIGlzIHNpbXBseSAKdGhlIGF0b21pYyBtYXR0ZXIgb2YgZWFjaCBvZiBvdXIgc3ViLXBsYW5lcyB3aXRob3V0IAp0aGUgdmFyaW91cyBjb21iaW5hdGlvbnMgb2Ygd2hpY2ggd2UgYXJlIGFjY3VzdG9tZWQgCnRvIHRoaW5rIGFzIGxpbmtpbmcgdGhlbSB0b2dldGhlciBhbmQgbGVhZGluZyB1cyAKZ3JhZHVhbGx5IGZyb20gb25lIHRvIHRoZSBvdGhlci4gCgpOb3cgaW4gdGhlIGV2b2x1dGlvbiBvZiBhIHN5c3RlbSB0aGUgYWN0aW9uIG9mIHRoZSAKdGhyZWUgaGlnaGVyIHByaW5jaXBsZXMgb2YgaXRzIExvZ29zIChnZW5lcmFsbHkgY2FsbGVkIAp0aGUgdGhyZWUgTG9nb2kgb2YgdGhlIHN5c3RlbSkgdXBvbiB0aGlzIGFudGVjZWRlbnQgCmNvbmRpdGlvbiBvZiBhZmZhaXJzIHRha2VzIHBsYWNlIGluIHdoYXQgd2UgbWF5IGNhbGwgCgoKVEhFIEZJUlNUIE9VVFBPVVJJTkcuIDI5IAoKCmEgcmV2ZXJzZWQgb3JkZXIuIEluIHRoZSBjb3Vyc2Ugb2YgdGhlIGdyZWF0IHdvcmsgCmVhY2ggb2YgdGhlbSBwb3VycyBvdXQgaGlzIGluZmx1ZW5jZSwgYnV0IHRoZSBvdXQtIApwb3VyaW5nIHdoaWNoIGNvbWVzIGZpcnN0IGluIHRpbWUgaXMgZnJvbSB0aGF0IHByaW5jaXBsZSAKb2Ygb3VyIExvZ29zIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSBtYW5hcyBpbiBtYW4sIAp0aG91Z2ggb2YgY291cnNlIG9uIGFuIGluZmluaXRlbHkgaGlnaGVyIHBsYW5lLiBUaGlzIAppcyB1c3VhbGx5IHNwb2tlbiBvZiBhcyB0aGUgVGhpcmQgTG9nb3MsIG9yIE1haGF0LCAKY29ycmVzcG9uZGluZyB0byB0aGUgSG9seSBHaG9zdCBpbiB0aGUgQ2hyaXN0aWFuIApzeXN0ZW3igJR0aGUg4oCcU3Bpcml0IG9mIEdvZCB3aGljaCBicm9vZHMgb3ZlciB0aGUgCmZhY2Ugb2YgdGhlIHdhdGVyc+KAmeKAmSBvZiBzcGFjZSwgYW5kIHNvIGJyaW5ncyB0aGUgd29ybGRzIAppbnRvIGV4aXN0ZW5jZS4gCgpUaGUgcmVzdWx0IG9mIHRoaXMgZmlyc3QgZ3JlYXQgb3V0cG91cmluZyBpcyB0aGUgcXVpY2tlbi0gCmluZyBvZiB0aGF0IHdvbmRlcmZ1bCBhbmQgZ2xvcmlvdXMgdml0YWxpdHkgd2hpY2ggcGVyLSAKdmFkZXMgYWxsIG1hdHRlciAoaW5lcnQgdGhvdWdoIGl0IG1heSBzZWVtIHRvIG91ciBkaW0gCnBoeXNpY2FsIGV5ZXMpLCBzbyB0aGF0IHRoZSBhdG9tcyBvZiB0aGUgdmFyaW91cyBwbGFuZXMgCmRldmVsb3AsIHdoZW4gZWxlY3RyaWZpZWQgYnkgaXQsIGFsbCBzb3J0cyBvZiBwcmV2aW91c2x5IApsYXRlbnQgYXR0cmFjdGlvbnMgYW5kIHJlcHVsc2lvbnMsIGFuZCBlbnRlciBpbnRvIGNvbS0gCmJpbmF0aW9ucyBvZiBhbGwga2luZHMsIHRodXMgYnkgZGVncmVlcyBicmluZ2luZyBpbnRvIApleGlzdGVuY2UgYWxsIHRoZSBsb3dlciBzdWJkaXZpc2lvbnMgb2YgZWFjaCBsZXZlbCwgdW50aWwgCndlIGhhdmUgYmVmb3JlIHVzIGluIGZ1bGwgYWN0aW9uIHRoZSBtYXJ2ZWxsb3VzIGNvbS0gCnBsZXhpdHkgb2YgdGhlIGZvcnR5LW5pbmUgc3ViLXBsYW5lcyBhcyB3ZSBzZWUgdGhlbSAKdG8tZGF5LiAKCkZvciB0aGlzIHJlYXNvbiBpcyBpdCB0aGF0IGluIHRoZSBOaWN6YW4gc3ltYm9sIHRoZSAKSG9seSBHaG9zdCBpcyBzbyBiZWF1dGlmdWxseSBkZXNjcmliZWQgYXMg4oCcdGhlIExvcmQgCmFuZCBHaXZlciBvZiBMaWZl4oCZ4oCZOyBhbmQgc29tZSBjbHVlIGFzIHRvIHRoZSBtZXRob2QgCm9mIEhpcyB3b3JraW5nIG1heSBiZSBvYnRhaW5lZCBieSBhbnkgb25lIHdobyB3aWxsIApzdHVkeSBjYXJlZnVsbHkgU2lyIFdpbGxpYW0gQ3Jvb2tlc+KAmSBwYXBlciBvbiDigJjigJwgVGhlIApHZW5lc2lzIG9mIHRoZSBFbGVtZW50cyzigJ0gcmVhZCBiZWZvcmUgdGhlIFJveWFsIApJbnN0aXR1dGlvbiBvZiBHcmVhdCBCcml0YWluIG9uIEZlYnJ1YXJ5IDE4dGgsIDE4ODcuIAoKV2hlbiBtYXR0ZXIgb2YgYWxsIHRoZSBzdWItcGxhbmVzIG9mIHRoZSBzeXN0ZW0gCgoKNDMwIFRIRSBDSFJJU1RJQU4gQ1JFRUQuIAoKCmlzIGFscmVhZHkgaW4gZXhpc3RlbmNlIGFuZCB0aGUgZmllbGQgaGFzIHRodXMgYmVlbiAKcHJlcGFyZWQgZm9yIGl0cyBhY3Rpdml0eSwgdGhlIHNlY29uZCBncmVhdCBvdXRwb3VyaW5nIApiZWdpbnPigJR0aGUgb3V0ZmxvdyBvZiB3aGF0IHdlIGhhdmUgc29tZXRpbWVzIGNhbGxlZCAKdGhlIG1vbmFkaWMgZXNzZW5jZTsgYW5kIGl0IGNvbWVzIHRoaXMgdGltZSBmcm9tIAp0aGF0IGhpZ2hlciBwcmluY2lwbGUgY29ycmVzcG9uZGluZyBpbiBvdXIgc3lzdGVtIHRvIAp0aGUgU2Vjb25kIExvZ29zLCBvZiB3aG9tIHRoZSBDaHJpc3RpYW4gd3JpdGVycyAKc3BlYWsgYXMgR29kIHRoZSBTb24uIE11Y2ggdGhhdCBoYXMgYmVlbiBzYWlkIG9mIApIaW0sIHRob3VnaCBiZWF1dGlmdWwgYW5kIHRydWUgd2hlbiByaWdodGx5IHVuZGVyLSAKc3Rvb2QsIGhhcyBiZWVuIGdyb3NzbHkgZGVncmFkZWQgYW5kIG1pc2ludGVycHJldGVkIApieSB0aG9zZSB3aG8gY291bGQgbm90IGdyYXNwIHRoZSBncmFuZCBzaW1wbGljaXR5IG9mIAp0aGUgdHJ1dGggOyBidXQgdG8gdGhpcyB3ZSBzaGFsbCByZXR1cm4gbGF0ZXIuIAoKU2xvd2x5IGFuZCBzdGVhZGlseSwgYnV0IHdpdGggcmVzaXN0bGVzcyBmb3JjZSwgdGhpcyAKZ3JlYXQgaW5mbHVlbmNlIHBvdXJzIGl0c2VsZiBmb3J0aCwgZWFjaCBzdWNjZXNzaXZlIHdhdmUgCm9mIGl0IHNwZW5kaW5nIGEgd2hvbGUgbWFudmFudGFyYSBpbiBlYWNoIG9mIHRoZSAKa2luZ2RvbXMgb2YgbmF0dXJl4oCUdGhlIHRocmVlIGVsZW1lbnRhbCwgdGhlIG1pbmVyYWwsIAp0aGUgdmVnZXRhYmxlLCB0aGUgYW5pbWFsIGFuZCB0aGUgaHVtYW4uIE9uIHRoZSAKZG93bndhcmQgYXJjIG9mIGl0cyBtaWdodHkgY3VydmUgaXQgc2ltcGx5IGFnZ3JlZ2F0ZXMgCnJvdW5kIGl0c2VsZiB0aGUgZGlmZmVyZW50IGtpbmRzIG9mIG1hdHRlciBvbiB0aGUgdmFyaW91cyAKcGxhbmVzLCBzbyB0aGF0IGFsbCBtYXkgYmUgYWNjdXN0b21lZCBhbmQgYWRhcHRlZCAKdG8gYWN0IGFzIGl0cyB2ZWhpY2xlczsgYnV0IHdoZW4gaXQgaGFzIHJlYWNoZWQgdGhlIApsb3dlc3QgcG9pbnQgb2YgaXRzIGRlc3RpbmVkIGltbWVzaGluZyBpbiBtYXR0ZXIsIGFuZCAKdHVybnMgdG8gYmVnaW4gdGhlIGdyYW5kIHVwd2FyZCBzd2VlcCBvZiBldm9sdXRpb24gCnRvd2FyZHMgZGl2aW5pdHksIGl0cyBvYmplY3QgaXMgdG8gZGV2ZWxvcCBjb25zY2lvdXNuZXNzIAppbiBlYWNoIG9mIHRoZXNlIGdyYWRlcyBvZiBtYXR0ZXIgaW4gdHVybiwgYmVnaW5uaW5nIG90IApjb3Vyc2Ugd2l0aCB0aGUgbG93ZXN0LiAKClRodXMgaXQgaXMgdGhhdCBtYW4sIGFsdGhvdWdoIHBvc3Nlc3NpbmcgaW4gYSBtb3JlIApvciBsZXNzIGxhdGVudCBjb25kaXRpb24gc28gbWFueSBoaWdoZXIgcHJpbmNpcGxlcywgaXMgCnlldCBmb3IgYSBsb25nIHRpbWUgYXQgZmlyc3QgZnVsbHkgY29uc2Npb3VzIGluIGhpcyBwaHlzaS0gCmNhbCBib2R5IG9ubHksIGFuZCBhZnRlcndhcmRzIHZlcnkgZ3JhZHVhbGx5IGJlY29tZXMgCgoKRVZPTFVUSU9OIE9GIENPTlNDSU9VU05FU1MuIDMxIAoKCnNvIGluIGhpcyBhc3RyYWwgdmVoaWNsZSwgYW5kIGxhdGVyIHN0aWxsIGluIGhpcyBtaW5kLSAKYm9keS4gCgpUaHVzIGFsc28gd2hpbGUgd2Ugc2VlIGluIHRoZSBtaW5lcmFsIGtpbmdkb20gCnNjYXJjZWx5IGFueXRoaW5nIHRoYXQgd2Ugc2hvdWxkIGNhbGwgY29uc2Npb3VzbmVzc+KAlCAKbm90aGluZyBidXQgdGhlIGZpcnN0IGZhaW50IGJlZ2lubmluZ3Mgb2YgZGVzaXJlIGFzIApzaG93biBpbiBjaGVtaWNhbCBhZmZpbml0eeKAlGluIHRoZSB2ZWdldGFibGUga2luZ2RvbSAKd2UgZmluZCBsaWtlcyBhbmQgZGlzbGlrZXMgKGRlc2lyZSwgaW4gZmFjdCkgYmVjb21pbmcgCnZlcnkgbXVjaCBtb3JlIHByb21pbmVudDsgaW5kZWVkLCB3ZSBoYXZlIG9ubHkgdG8gCnJlYWQgYW55IG9mIHRoZSBsYXRlciB3b3JrcyBvbiBib3RhbnkgdG8gc2VlIHRoYXQgbWFueSAKcGxhbnRzIGV4ZXJjaXNlIGEgZ3JlYXQgZGVhbCBvZiBpbmdlbnVpdHkgYW5kIHNhZ2FjaXR5IAppbiBhdHRhaW5pbmcgdGhlaXIgZW5kcywgbGltaXRlZCB0aG91Z2ggdGhlc2UgZW5kcyAKbWF5IGJlLiAKCkluIHRoZSBhbmltYWwga2luZ2RvbSBkZXNpcmUgb2NjdXBpZXMgYSB2ZXJ5IHByby0gCm1pbmVudCBwbGFjZSwgYW5kIHRoZXJlIGNhbiBiZSBubyBkb3VidCB0aGF0IHRoZSBhc3RyYWwgCmJvZHkgaXMgZGVmaW5pdGVseSBiZWdpbm5pbmcgdG8gZnVuY3Rpb24sIHRob3VnaCB0aGUgCmFuaW1hbCBoYXMgYXMgeWV0IG5vdGhpbmcgdGhhdCBjYW4gYmUgY2FsbGVkIGNvbnNjaW91cy0gCm5lc3MgaW4gaXQgYXBhcnQgZnJvbSB0aGUgcGh5c2ljYWwgdmVoaWNsZS4gSW4gdGhlIApoaWdoZXIgZG9tZXN0aWMgYW5pbWFscywgaG93ZXZlciwgdGhlIGFzdHJhbCBib2R5IGhhcyAKc3VmZmljaWVudCBkZXZlbG9wbWVudCB0byBiZSBtYWRlIGFmdGVyIGRlYXRoIGludG8gYSAKa2FtYXJpcGEgd2hpY2ggcGVyc2lzdHMgZm9yIHNvbWUgZGF5cyBhdCBsZWFzdCwgb3IgCnNvbWV0aW1lcyBldmVuIGZvciB3ZWVrcywgd2hpbGUgYSBjZXJ0YWluIGFtb3VudCBvdCAKbWFuYXNpYyBhY3Rpdml0eSBpcyBkaXN0aW5jdGx5IGJlZ2lubmluZyB0byBzaG93IGl0c2VsZi4gCgpXaGVuIHdlIGNvbWUgdG8gdGhlIGh1bWFuIGtpbmdkb20gd2UgZmluZCB0aGF0IAp3aXRoIHRoZSBsb3dlciB0eXBlcyBvZiBtZW4gZGVzaXJlIGlzIHN0aWxsIGVtcGhhdGljYWxseSAKdGhlIG1vc3QgcHJvbWluZW50IGZlYXR1cmUsIHRob3VnaCB0aGUgbWFuYXNpYyBkZS0gCnZlbG9wbWVudCBoYXMgYWxzbyBwcm9jZWVkZWQgdG8gc29tZSBleHRlbnQ7IGR1cmluZyAKbGlmZSB0aGUgbWFuIGhhcyBhIGRpbSBjb25zY2lvdXNuZXNzIGluIGhpcyBhc3RyYWwgCnZlaGljbGUgd2hpbGUgaGUgaXMgYXNsZWVwLCBhbmQgYWZ0ZXIgZGVhdGggaGlzIGthbWFyaXBhIAppcyB2ZXJ5IGZhaXJseSBjb25zY2lvdXMgYW5kIGFjdGl2ZSwgYW5kIGVuZHVyZXMgZm9yIAoKCjMyIFRIRSBDSFJJU1RJQU4gQ1JFRUQuIAoKCm1hbnkgeWVhcnMsIHRob3VnaCBhcyB5ZXQgaGUgaGFzIHByYWN0aWNhbGx5IG5vdGhpbmcgCm9mIHRoZSBkZXZhY2hhbmljIGxpZmUuIAoKQ29taW5nIHRvIHRoZSBvcmRpbmFyeSBjdWx0dXJlZCBtYW4gb2Ygb3VyIG93biAKcmFjZSwgd2UgZmluZCBoaW0gc2hvd2luZyBoaWdoIG1lbnRhbCBhY3Rpdml0eSBkdXJpbmcgCmxpZmUsIGFuZCBwb3NzZXNzaW5nIHF1YWxpdGllcyB3aGljaCBnaXZlIGhpbSB0aGUgcG9zc2ktIApiaWxpdHkgb2YgYSB2ZXJ5IGxvbmcgZGV2YWNoYW5pYyBleGlzdGVuY2UgYWZ0ZXIgZGVhdGguIApIZSBpcyBmdWxseSBjb25zY2lvdXMgaW4gaGlzIGFzdHJhbCBib2R5IGR1cmluZyBzbGVlcCwgCnRob3VnaCBub3QgdXN1YWxseSBhYmxlIHRvIGNhcnJ5IHRocm91Z2ggYW55IG1lbW9yeSAKZnJvbSB0aGUgb25lIGNvbmRpdGlvbiBvZiBleGlzdGVuY2UgdG8gdGhlIG90aGVyLiBUaGUgCmNhc2VzIG9mIHRoZSBjb21wYXJhdGl2ZWx5IGZldyBtZW4gd2hvIGhhdmUgYXMgeWV0IAp1bmRlcnRha2VuIHRoZSB0YXNrIG9mIHNlbGYtZGV2ZWxvcG1lbnQgYWxvbmcgb2NjdWx0IApsaW5lcyBzaG93IHVzIHRoYXQgdGhlIGZ1dHVyZSBjb3Vyc2Ugb2YgZXZvbHV0aW9uIHNpbXBseSAKbWVhbnMgdGhlIHVuZm9sZGluZyBvZiBjb25zY2lvdXNuZXNzIG9uIGhpZ2hlciBhbmQgCmhpZ2hlciBwbGFuZXMgYXMgaHVtYW5pdHkgcGFzc2VzIG9ud2FyZCBhbmQgYmVjb21lcyAKZml0IGZvciBzdWNoIGRldmVsb3BtZW50LiAKCkJ1dCBsb25nIGJlZm9yZSB0aGlzIHBlcmlvZCB0aGUgdGhpcmQgZ3JlYXQgb3V0cG91cmluZyAKb2YgZGl2aW5lIGxpZmUgaGFzIHRha2VuIHBsYWNl4oCUdGhhdCBmcm9tIHRoZSBoaWdoZXN0IApwcmluY2lwbGUgb2YgdGhlIExvZ29zIG9mIHRoZSBzeXN0ZW0sIGNvcnJlc3BvbmRpbmcgCnRvIHRoZSBBdG1hIGluIG1hbiwgYW5kIGhvbGRpbmcgdGhlIHBsYWNlIGZpbGxlZCBpbiAKY29zbWljIGV2b2x1dGlvbiBieSB0aGUgRmlyc3QgTG9nb3MsIHdoaWNoIGhhcyBiZWVuIApjYWxsZWQgYnkgQ2hyaXN0aWFuaXR5IEdvZCB0aGUgRmF0aGVyLiAKCkFuIGF0dGVtcHQgaGFzIGJlZW4gbWFkZSB0byBpbmRpY2F0ZSBob3cgdGhlIAptb25hZGljIGVzc2VuY2UgaW4gaXRzIHVwd2FyZCBjb3Vyc2UgZ3JhZHVhbGx5IHVuLSAKZm9sZHMgY29uc2Npb3VzbmVzcyBmaXJzdCBpbiB0aGUgcGh5c2ljYWwgcGxhbmUsIHRoZW4gaW4gCnRoZSBhc3RyYWwsIGFuZCB0aGVuIGluIHRoZSBsb3dlciBtYW5hc2ljLiBCdXQgaXQgaXMgCm9ubHkgd2hlbiBpbiB0aGUgaGlnaGVzdCBvZiB0aGUgZG9tZXN0aWMgYW5pbWFscyBpdCAKcmVhY2hlcyB0aGlzIGxhdHRlciBzdGFnZSB0aGF0IHRoZSBwb3NzaWJpbGl0eSBvZiB0aGUgdGhpcmQgCm91dHBvdXJpbmcgY29tZXMgd2l0aGluIG1lYXN1cmFibGUgZGlzdGFuY2UuIEZvciAKdGhpcyB0aGlyZCB3YXZlIG9mIGRpdmluZSBsaWZlIGNhbiBkZXNjZW5kIG9mIGl0c2VsZiBubyAKCgpUSEUgVEhJUkQgT1VUUE9VUklORy4gMzMgCgoKbG93ZXIgdGhhbiBvdXIgYnVkZGhpYyBwbGFuZSwgYW5kIHRoZXJlIGl0IHNlZW1zIGFzIAppdCB3ZXJlIHRvIGhvdmVyLCB3YWl0aW5nIGZvciB0aGUgZGV2ZWxvcG1lbnQgb2YgZml0IAp2ZWhpY2xlcyB0byBlbmFibGUgaXQgdG8gY29tZSBkb3duIG9uZSBzdGVwIGZ1cnRoZXIgYW5kIApiZSB0aGUgaW5kaXZpZHVhbCBzb3VscyBvZiBtZW4uIFRoZSBwaHJhc2Ugc291bmRzIApzdHJhbmdlLCBidXQgaXQgaXMgZGlmZmljdWx0IHRvIGV4cHJlc3MgYWNjdXJhdGVseSBpbiAKaHVtYW4gd29yZHMgdGhlIG15c3RlcmllcyBvZiB0aGUgaGlnaGVyIGxpZmUuIAoKbWFnaW5lICh0byB1c2UgYW4gRWFzdGVybiBzaW1pbGUpIHRoZSBzZWEgb2YgbW9uYS0gCmRpYyBlc3NlbmNlIHN0ZWFkaWx5IHByZXNzZWQgdXB3YXJkIGludG8gdGhlIG1hbmFzaWMgCnBsYW5lIGJ5IHRoZSBmb3JjZSBvZiBldm9sdXRpb24gaW5oZXJlbnQgaW4gaXQsIGFuZCB0aGlzIAp0aGlyZCBvdXRwb3VyaW5nIGhvdmVyaW5nIGFib3ZlIHRoYXQgcGxhbmUgbGlrZSBhIGNsb3VkLCAKY29uc3RhbnRseSBhdHRyYWN0aW5nIGFuZCBhdHRyYWN0ZWQgYnkgdGhlIHdhdmVzIGJlbG93LiAKQW55IG9uZSB3aG8gaGFzIGV2ZXIgc2VlbiB0aGUgZm9ybWF0aW9uIG9mIGEgd2F0ZXItIApzcG91dCBpbiB0cm9waWNhbCBzZWFzIHdpbGwgZ3Jhc3AgdGhlIGlkZWEgb2YgdGhpcyAKT3JpZW50YWwgaWxsdXN0cmF0aW9u4oCUd2lsbCB1bmRlcnN0YW5kIGhvdyB0aGUgZG93bi0gCndhcmQtcG9pbnRpbmcgY29uZSBvZiBjbG91ZCBmcm9tIGFib3ZlIGFuZCB0aGUgCnVwd2FyZC1wb2ludGluZyBjb25lIG9mIHdhdGVyIGZyb20gYmVsb3cgZHJhdyBuZWFyZXIgCmFuZCBuZWFyZXIgYnkgbXV0dWFsIGF0dHJhY3Rpb24sIHVudGlsIGEgbW9tZW50IGNvbWVzIAp3aGVuIHRoZXkgc3VkZGVubHkgbGVhcCB0b2dldGhlciwgYW5kIHRoZSBncmVhdCBjb2x1bW4gCm9mIG1pbmdsZWQgd2F0ZXIgYW5kIHZhcG91ciBpcyBmb3JtZWQuIAoKU2ltaWxhcmx5IHRoZSBibG9ja3Mgb2YgYW5pbWFsIG1vbmFkaWMgZXNzZW5jZSBhcmUgCmNvbnN0YW50bHkgdGhyb3dpbmcgcGFydHMgb2YgdGhlbXNlbHZlcyBpbnRvIGluY2FyLSAKbmF0aW9uIGxpa2UgdGVtcG9yYXJ5IHdhdmVzIG9uIHRoZSBzdXJmYWNlIG9mIHRoZSBzZWEsIAphbmQgdGhlIHByb2Nlc3Mgb2YgZGlmZmVyZW50aWF0aW9uIGdvZXMgb24gdW50aWwgYXQgbGFzdCAKYSB0aW1lIGNvbWVzIHdoZW4gb25lIG9mIHRoZXNlIHdhdmVzIHJpc2VzIGhpZ2ggCmVub3VnaCB0byBlbmFibGUgdGhlIGhvdmVyaW5nIGNsb3VkIHRvIGVmZmVjdCBhIGp1bmN0aW9uIAp3aXRoIGl0LCBhbmQgaXQgaXMgdGhlbiBkcmF3biB1cCBpbnRvIGEgbmV3IGV4aXN0ZW5jZSAKbmVpdGhlciBpbiB0aGUgY2xvdWQgbm9yIGluIHRoZSBzZWEsIGJ1dCBiZXR3ZWVuIHRoZSAKdHdvLCBhbmQgcGFydGFraW5nIG9mIHRoZSBuYXR1cmUgb2YgYm90aDsgYW5kIHNvIGl0IAoKCmlzIHNlcGFyYXRlZCBmcm9tIHRoZSBibG9jayBvZiB3aGljaCBpdCBoYXMgaGl0aGVydG8gCmMgCgoKMzQgVEhFIENIUklTVElBTiBDUkVFRC4gCgoKZm9ybWVkIGEgcGFydCwgYW5kIGZhbGxzIGJhY2sgaW50byB0aGUgc2VhIG5vIG1vcmUuIApUaGF0IGlzIHRvIHNheSwgYW4gYW5pbWFsIGJlbG9uZ2luZyB0byBvbmUgb2YgdGhlIG1vcmUgCmFkdmFuY2VkIGJsb2NrcyBvZiBlc3NlbmNlIG1heSBieSBoaXMgbG92ZSBmb3IgYW5kIApkZXZvdGlvbiB0byBoaXMgbWFzdGVyLCBhbmQgYnkgdGhlIG1lbnRhbCBlZmZvcnQgaW4tIAp2b2x2ZWQgaW4gdGhlIGVhcm5lc3QgZW5kZWF2b3VyIHRvIHVuZGVyc3RhbmQgaGltIGFuZCAKcGxlYXNlIGhpbSwgc28gcmFpc2UgaGltc2VsZiBhYm92ZSBoaXMgb3JpZ2luYWwgbGV2ZWwgdGhhdCAKaGUgYmVjb21lcyBhIGZpdCB2ZWhpY2xlIGZvciB0aGlzIHRoaXJkIG91dHBvdXJpbmcsIHRoZSAKcmVjZXB0aW9uIG9mIHdoaWNoIGJyZWFrcyBoaW0gYXdheSBmcm9tIGhpcyBibG9jayBhbmQgCnN0YXJ0cyBoaW0gb24gaGlzIGNhcmVlciBvZiBpbW1vcnRhbGl0eSBhcyBhbiBpbmRpdmlkdWFsLiAKCklmIHdlIHJlbWVtYmVyIHRoYXQgdGhlIGNvbnNjaW91c25lc3Mgb2YgdGhlIG1vbmEtIApkaWMgZXNzZW5jZSBoYXMgYmVlbiBkZXZlbG9wZWQgdXAgdG8gdGhlIGxvd2VyIG1hbmFzaWMgCmxldmVsLCBhbmQgdGhhdCB0aGUgaG92ZXJpbmcgaW5mbHVlbmNlIG9mIHRoZSBkaXZpbmUgbGlmZSAKaGFzIGRlc2NlbmRlZCB0byB0aGUgYnVkZGhpYyBwbGFuZSwgd2Ugc2hhbGwgYmUgcHJlLSAKcGFyZWQgdG8gbG9vayBvbiB0aGUgaGlnaGVyIG1hbmFzaWMgbGV2ZWxzLCB0aGUgYXJmcGEgCmRpdmlzaW9uIG9mIHRoZSBkZXZhY2hhbmljIHBsYW5lLCBmb3IgdGhlIHJlc3VsdGFudCBjb20tIApiaW5hdGlvbiA7IGFuZCB0aGF0IGlzIHRydWx5IHRoZSBoYWJpdGF0IG9mIHRoZSBjYXVzYWwgYm9keSAKb2YgbWFuLCB0aGUgdmVoaWNsZSBvZiB0aGUgcmVpbmNhcm5hdGluZyBlZ28uIAoKQnV0IGhlcmUgd2Ugbm90ZSB0aGF0IGEgY3VyaW91cyBjaGFuZ2UgaGFzIHRha2VuIApwbGFjZSBpbiB0aGUgcG9zaXRpb24gb2YgdGhlIG1vbmFkaWMgZXNzZW5jZS4gQWxsIHRoZSAKd2F5IHRocm91Z2ggaXRzIGxvbmcgbGluZSBvZiBldm9sdXRpb24gaW4gYWxsIHRoZSBwcmUtIAp2aW91cyBraW5nZG9tcyBpdCBoYXMgaW52YXJpYWJseSBiZWVuIHRoZSBlbnNvdWxpbmcgCmFuZCBlbmVyZ2l6aW5nIHByaW5jaXBsZSwgdGhlIGZvcmNlIGJlaGluZCB3aGF0ZXZlciAKZm9ybXMgaXQgbWF5IGhhdmUgdGVtcG9yYXJpbHkgb2NjdXBpZWQuIEJ1dCBub3cgCnRoYXQgd2hpY2ggaGFzIGhpdGhlcnRvIGJlZW4gdGhlIGVuc291bGVyIGJlY29tZXMgCml0c2VsZiBpbiB0dXJuIHRoZSBlbnNvdWxlZDsgZnJvbSB0aGF0IG1vbmFkaWMgZXNzZW5jZSAKaXMgZm9ybWVkIHRoZSBjYXVzYWwgYm9keeKAlHRoYXQgcmVzcGxlbmRlbnQgc3BoZXJlIG9mIApsaXZpbmcgbGlnaHQgaW50byB3aGljaCB0aGUgc3RpbGwgbW9yZSBnbG9yaW91cyBsaWdodCBmcm9tIAphYm92ZSBkZXNjZW5kcywgYW5kIGJ5IG1lYW5zIG9mIHdoaWNoIGl0IGlzIGVuYWJsZWQgCnRvIGV4cHJlc3MgaXRzZWxmIGFzIGEgaHVtYW4gaW5kaXZpZHVhbGl0eS4gCgoKVEhFIENFUlRBSU5UWSBPRiBJTU1PUlRBTElUWS4gMzUgCgoKTm9yIHNob3VsZCBhbnkgdGhpbmsgdGhhdCBpdCBpcyBhbiB1bndvcnRoeSBnb2FsIHRvIApyZWFjaCBhcyB0aGUgcmVzdWx0IG9mIHNvIGxvbmcgYW5kIHdlYXJ5IGFuIGV2b2x1dGlvbiwgCnRodXMgdG8gYmVjb21lIHRoZSB2ZWhpY2xlIG9mIHRoaXMgbGFzdCBhbmQgZ3JhbmRlc3QgCm91dHBvdXJpbmcgb2YgdGhlIGRpdmluZSBzcGlyaXQ7IGZvciBpdCBtdXN0IGJlIHJlbWVtLSAKYmVyZWQgdGhhdCB3aXRob3V0IHRoZSBwcmVwYXJhdGlvbiBvZiB0aGlzIHZlaGljbGUgdG8gYWN0IAphcyBhIGNvbm5lY3RpbmcgbGluayB0aGUgaW1tb3J0YWwgaW5kaXZpZHVhbGl0eSBvZiBtYW4gCmNvdWxkIG5ldmVyIGNvbWUgaW50byBiZWluZywgYW5kIHRoYXQgdGhpcyB1cHBlciB0cmlhZCAKdGh1cyBmb3JtZWQgYmVjb21lcyBhIHRyYW5zY2VuZGVudCB1bml0eeKAlOKAmCBub3QgYnkgCmNvbnZlcnNpb24gb2YgdGhlIEdvZGhlYWQgaW50byBmbGVzaCwgYnV0IGJ5IHRha2luZyAKb2YgdGhlIG1hbmhvb2QgaW50byBHb2Qu4oCdIFNvIHRoYXQgbm8gZnJhZ21lbnQgb2YgCnRoZSB3b3JrIHRoYXQgaGFzIGJlZW4gZG9uZSB0aHJvdWdoIGFsbCB0aGVzZSBhZ2VzIGlzIApsb3N0LCBhbmQgbm90aGluZyBoYXMgYmVlbiB1c2VsZXNzOyBmb3Igd2l0aG91dCB0aGF0IAp3b3JrIHRoaXMgZmluYWwgY29uc3VtbWF0aW9uIGNvdWxkIG5ldmVyIGhhdmUgYmVlbiAKcmVhY2hlZCwgdGhhdCBtYW4gc2hvdWxkIGJlY29tZSB0aGUgZXF1YWwgb2YgdGhlIApMb2dvcyBmcm9tIHdob20gaGUgY2FtZSBmb3J0aCwgYW5kIHRoYXQgdGh1cyB0aGUgCnZlcnkgTG9nb3MgSGltc2VsZiBzaG91bGQgYmUgcGVyZmVjdGVkLCBpbiB0aGF0IEhlIApoYXMgb2YgSGlzIG93biBvZmZzcHJpbmcgdGhvc2UgZXF1YWwgdG8gSGltc2VsZiB1cG9uIAp3aG9tIHRoYXQgbG92ZSB3aGljaCBpcyB0aGUgZXNzZW5jZSBvZiBIaXMgZGl2aW5lIApuYXR1cmUgY2FuIGZvciB0aGUgZmlyc3QgdGltZSBiZSBmdWxseSBsYXZpc2hlZC4gCgpCZSBpdCByZW1lbSBiZXJlZCBhbHNvIHRoYXQgaXQgaXMgb25seSBpbiB0aGUgcHJlc2VuY2UgCndpdGhpbiBoaW0gb2YgdGhpcyB0aGlyZCBvdXRwb3VyaW5nIG9mIHRoZSBkaXZpbmUgbGlmZSAKdGhhdCBtYW4gcG9zc2Vzc2VzIGFuIGFic29sdXRlIGd1YXJhbnRlZSBvZiBoaXMgaW0tIAptb3J0YWxpdHkgOyBmb3IgdGhpcyBpcyDigJh0aGUgc3Bpcml0IG9mIG1hbiB0aGF0IGdvZXRoIHVwLSAKd2FyZOKAnSBpbiBjb250cmFkaXN0aW5jdGlvbiB0byDigJh0aGUgc3Bpcml0IG9mIHRoZSBiZWFzdCAKdGhhdCBnb2V0aCBkb3dud2FyZOKAneKAlHRoYXQgaXMgdG8gc2F5LCB3aGljaCBmbG93cyAKYmFjayBhZ2FpbiBhdCB0aGUgZGVhdGggb2YgdGhlIGFuaW1hbCBpbnRvIHRoZSBibG9jayBvZiAKbW9uYWRpYyBlc3NlbmNlIGZyb20gd2hpY2ggaXQgY2FtZS4gCgpBIHRpbWUgd2lsbCBjb21lLCBzbyB3ZSBhcmUgdG9sZCwgdGhvdWdoIHRvIG91ciAKaW50ZWxsZWN0IGl0IG1heSB3ZWxsIHNlZW0gdW50aGlua2FibGXigJR0aGUgdGltZSBvZiB0aGUgCgoKMzYgVEhFIENIUklTVElBTiBDUkVFRC4gCgoKbWFoQXByYWxheWHigJR3aGVuIOKAnGFsbCB0aGluZ3MgdmlzaWJsZSBhbmQgaW52aXNpYmxl4oCdIAp3aWxsIGJlIHJlLWFic29yYmVkIGludG8gVGhhdCBmcm9tIHdoaWNoIHRoZXkgY2FtZTsgCndoZW4gZXZlbiB0aGUgU2Vjb25kIGFuZCBUaGlyZCBMb2dvaSB0aGVtc2VsdmVzLCAKYW5kIGFsbCB0aGF0IGlzIG9mIHRoZWlyIGVzc2VuY2UsIG11c3QgZm9yIHRoZSB0aW1lIHNpbmsgCmludG8gc2xlZXAgYW5kIGRpc2FwcGVhci4gQnV0IGV2ZW4gaW4gdGhhdCBwZXJpb2Qgb2YgCnVuaXZlcnNhbCByZXN0IHRoZXJlIDFzIG9uZSBFbnRpdHkgd2hvIHJlbWFpbnMgdW4tIAphZmZlY3RlZDsgdGhlIEZpcnN0LCB0aGUgVW5tYW5pZmVzdGVkIExvZ29zIHJlc3RzIHN0aWxsLCAKYXMgZXZlciwgaW4gdGhlIGJvc29tIG9mIHRoZSBJbmZpbml0ZS4gQW5kIHNpbmNlIHRoZSAKZGlyZWN0IGVzc2VuY2Ugb2YgdGhpcywgdGhlIGRpdmluZSBGYXRoZXIgb2YgYWxsLCBlbnRlcnMgCmludG8gdGhlIGNvbXBvc2l0aW9uIG9mIHRoZSBzcGlyaXQgb2YgbWFuLCBieSB0aGF0IAphbG1pZ2h0eSBwb3dlciBoaXMgaW1tb3J0YWxpdHkgaXMgYWJzb2x1dGVseSBhc3N1cmVkLiAKCkhvdyBiZWF1dGlmdWxseSwgaG93IGdyYW5kbHkgdGhlc2UgZ2xvcmlvdXMgY29uY2VwLSAKdGlvbnMgYXJlIG1pcnJvcmVkIGV2ZW4gaW4gd2hhdCBpcyBsZWZ0IHRvIHVzIG9mIHRoZSAKQ2hyaXN0aWFuIENyZWVkcywgSSBzaGFsbCBob3BlIHRvIHNob3cgYXMgd2UgY29uc2lkZXIgCnRoZW0gY2xhdXNlIGJ5IGNsYXVzZS4gCgpUaGUgQXBvc3RsZXPigJkgYW5kIHRoZSBOaWNlbmUgQ3JlZWRzIHNvIGNsb3NlbHkgcmUtIApzZW1ibGUgb25lIGFub3RoZXIgdGhhdCBpdCB3aWxsIGJlIHRoZSBtb3N0IGNvbnZlbmllbnQgCm1ldGhvZCBmb3IgdXMgdG8gY29uc2lkZXIgdGhlbSB0b2dldGhlciwgdGFraW5nIGZvciAKdGhlIHByZXNlbnQgb25seSBvY2Nhc2lvbmFsIGlsbHVzdHJhdGlvbnMgZnJvbSB0aGUgCkF0aGFuYXNpYW4sIGFuZCBsZWF2aW5nIHRoZSBtb3JlIGltcG9ydGFudCBjbGF1c2VzIApvZiB0aGUgbGF0dGVyIHRvIGJlIGRlYWx0IHdpdGggc2VwYXJhdGVseSBhZnRlcndhcmRzLiBJdCAKaXMgZXZpZGVudCB0aGF0IGluIHRoZXNlIHR3byBzaG9ydGVyIENyZWVkcyB3ZSBoYXZlIApzaW1wbHkgdHdvIGRpZmZlcmVudCB0cmFkaXRpb25zIG9mIG9uZSBvcmlnaW5hbCBmb3Jt4oCUIAphIGZvcm0gYWxyZWFkeSBpbmNsdWRpbmcgcmVtaW5pc2NlbmNlcyBvZiB0aGUgZG9jdS0gCm1lbnRzIHdoaWNoIHdlIGhhdmUgY2FsbGVkIChhKSBhbmQgKDApLCBhbmQgYWxyZWFkeSAKdGluZ2VkIGNvbnNpZGVyYWJseSBieSB0aGUgaW5mbHVlbmNlIG9mIHRlbmRlbmN5IChjKS4gCgpUaGUgZGF0ZSBhdCB3aGljaCB0aGlzIG9yaWdpbmFsIGZvcm0gYmVjYW1lIGZhaXJseSAKY3J5c3RhbGxpemVkIGFzIHJlZ2FyZHMgaXRzIG1haW4gb3V0bGluZXMgY2Fubm90IHlldCBiZSAKZml4ZWQgd2l0aCBjZXJ0YWludHksIGJ1dCB3ZSBzaG91bGQgcHJvYmFibHkgbm90IGJlIGZhciAKCgrigJjigJxJTiBHT0QgVEhFIEZBVEhFUi7igJ0gMzcgCgoKd3JvbmcgaW4gYXNzaWduaW5nIGl0IHRvIHRoZSBtaWRkbGUgb2YgdGhlIHNlY29uZCAKY2VudHVyeSBvZiBvdXIgZXJh4oCUYWx3YXlzIGJlYXJpbmcgaW4gbWluZCB0aGF0IHRoYXQgCmVyYSBoYXMgbm90aGluZyB0byBkbyB3aXRoIHRoZSByZWFsIHRpbWUgb2YgdGhlIGJpcnRoIApvZiB0aGUgdGVhY2hlciBjYWxsZWQgdGhlIENocmlzdCwgYW5kIHJlbWVtYmVyaW5nIGFsc28gCnRoYXQgaW4gYWxsIGxpa2VsaWhvb2Qgbm8gYXR0ZW1wdCB3YXMgbWFkZSB0byByZWR1Y2UgCnRoZSBmb3JtIHRvIHdyaXRpbmcgdW50aWwgYSBjb25zaWRlcmFibHkgbGF0ZXIgcGVyaW9kLiAKVGhlIHR3byBDcmVlZHMgZGlmZmVyLCBhcyBldmlkZW50bHkgdGhlIHNjaG9vbHMgb2YgCnRob3VnaHQgd2hpY2ggcHJlc2VydmVkIHRoZW0gbXVzdCBoYXZlIGRpZmZlcmVkLCAKdGhlIE5pY2VuZSBiZWluZyBhbHdheXMgbW9yZSBtZXRhcGh5c2ljYWwgYW5kIGxlc3MgCm1hdGVyaWFsaXN0aWMgdGhhbiB0aGUgb3RoZXIsIHRha2luZyBhbHdheXMgYSBzb21lLSAKd2hhdCBoaWdoZXIgdmlldywgYW5kIHRoZXJlZm9yZSBsZW5kaW5nIGl0c2VsZiBtb3JlIApyZWFkaWx5IHRvIHN1Y2ggYW4gYXR0ZW1wdCB0byByZXZpdmUgdGhlIG9yaWdpbmFsIGFuZCAKb25seSB0ZW5hYmxlIGludGVycHJldGF0aW9uIGFzIEkgd2lzaCB0byBtYWtlLiAKCuKAmOKAmFQgYmVsaWV2ZSBpbiBHb2QgdGhlIEZhdGhlciBhbG1pZ2h0eSwgbWFrZXIgb3QgCmhlYXZlbiBhbmQgZWFydGgu4oCdIFNvIHJ1bnMgdGhlIG9wZW5pbmcgY2xhdXNlIG9mIHRoZSAKQXBvc3RsZXPigJkgQ3JlZWQsIHJlZmVycmluZyBldmlkZW50bHkgdG8gdGhlIExvZ29zIG9mIApvdXIgc29sYXIgc3lzdGVtOyB0aGUgTmljemFuIHN5bWJvbCwgdGFraW5nIGFuIGV2ZW4gCndpZGVyIHJhbmdlLCBpcyBjYXN0IGludG8gYSBmb3JtIG1vcmUgYXBwbGljYWJsZSB0byB0aGUgCkZpcnN0IENhdXNlIG9mIGFsbCwgYW5kIHNvIGl0IHNwZWFrcyBvZiB0aGUgb25lIEdvZCwgCm1ha2VyIG5vdCBvbmx5IG9mIGhlYXZlbiBhbmQgZWFydGgsIGJ1dCDigJxvZiBhbGwgdGhpbmdzIAp2aXNpYmxlIGFuZCBpbnZpc2libGUu4oCdIFdlbGwgbWF5IHRoZSBnbG9yaW91cyB0aXRsZSBvZiAK4oCcdGhlIEZhdGhlcuKAnSBiZSBnaXZlbiB0byBUaGF0IHdoaWNoIGlzIHRoZSBmaXJzdCAKZXBpcGhhbnkgb2YgdGhlIEluZmluaXRlLCBmb3IgZnJvbSBIaW0gYWxsIGNhbWUsIApldmVuIHRoZSBTZWNvbmQgYW5kIFRoaXJkIExvZ29pIHRoZW1zZWx2ZXMsIGFuZCBpbnRvIApIaW0gb25lIGRheSBhbGwgdGhhdCBjYW1lIGZvcnRoIG11c3QgcmV0dXJuLiBOb3QgdG8gCmxvc2UgY29uc2Npb3VzbmVzcywgYmUgaXQgb2JzZXJ2ZWQsIGZvciB0aGF0IHdvdWxkIGJlIHRvIAp0aHJvdyBhd2F5IHRoZSByZXN1bHQgb2YgYWxsIHRoZXNlIHpvbnMgb2YgZXZvbHV0aW9uIDsgCmJ1dCByYXRoZXIgdG8gYmVjb21lIGluIHNvbWUgd2F5IHRoYXQgdG8gb3VyIGZpbml0ZSAKbWluZHMgaXMgYXMgeWV0IHVuaW50ZWxsaWdpYmxlLCBhIGNvbnNjaW91cyBwYXJ0IG9mIHRoYXQgCgoKMzggVEhFIENIUklTVElBTiBDUkVFRC4gCgoKc3R1cGVuZG91cyB3aG9sZeKAlGEgZmFjZXQgb2YgdGhhdCBhbGwtZW1icmFjaW5nIENvbi0gCnNjaW91c25lc3Mgd2hpY2ggaXMgaW5kZWVkIHRoZSBkaXZpbmUgRmF0aGVyIG9mIGFsbCwgCuKAmGFib3ZlIGFsbCwgYW5kIHRocm91Z2ggYWxsLCBhbmQgaW4geW91IGFsbC7igJ0g4oCcIFRoZW4gCnNoYWxsIHRoZSBTb24gYWxzbyBoaW1zZWxmIGJlIHN1YmplY3QgdW50byBoaW0gdGhhdCAKcHV0IGFsbCB0aGluZ3MgdW5kZXIgaGltLCB0aGF0IEdvZCBtYXkgYmUgYWxsIGluIGFsbC7igJ0gCuKAmOKAmEFuZCBpbiBvbmUgTG9yZCBKZXN1cyBDaHJpc3QsIHRoZSBvbmx5LWJlZ290dGVuIApTb24gb2YgR29kLCBiZWdvdHRlbiBvZiBoaXMgRmF0aGVyIGJlZm9yZSBhbGwgd29ybGRzLCAKR29kIG9mIEdvZCwgTGlnaHQgb2YgTGlnaHQsIHZlcnkgR29kIG9mIHZlcnkgR29kLCAKYmVnb3R0ZW4sIG5vdCBtYWRlLCBiZWluZyBvZiBvbmUgc3Vic3RhbmNlIHdpdGggdGhlIApGYXRoZXI7IGJ5IHdob20gYWxsIHRoaW5ncyB3ZXJlIG1hZGU7IHdobyBmb3IgdXMgCm1lbiBhbmQgZm9yIG91ciBzYWx2YXRpb24gY2FtZSBkb3duIGZyb20gaGVhdmVuLuKAnSAKV2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBmaXJzdCBmZXcgd29yZHMgdGhlIHdob2xlIG9mIAp0aGlzIGlzIG9taXR0ZWQgZnJvbSB0aGUgQXBvc3RsZXPigJkgQ3JlZWQsIGFzIHdlIG1pZ2h0IApwZXJoYXBzIGV4cGVjdCB0aGF0IGl0IHdvdWxkIGJlIGluIGEgZm9ybSBpbnRlbmRlZCB0byAKYXBwbHkgdG8gYSBzb21ld2hhdCBsZXNzIGxvZnR5IGxldmVsIG9mIHRoZSB1bml2ZXJzZS4gCkhlcmUsIGluIHRoZSBpbnNlcnRpb24gb2YgdGhlIG5hbWUgSmVzdXMgQ2hyaXN0LCB3ZSAKY29tZSB1cG9uIHRoZSBmaXJzdCB0cmFjZSBvZiB0aGUgbWF0ZXJpYWxpemluZyBpbmZsdWVuY2UgCndoaWNoIHdlIGNsYXNzaWZpZWQgYXMgKGMpLCBmb3IgdGhlIG9yaWdpbmFsIGZvcm11bGEgKGEpIApjb250YWlucyBuZWl0aGVyIG9mIHRoZXNlIHdvcmRzLiBJbiB0aGUgZWFybGllc3QgY29waWVzIAp3cml0dGVuIGluIEdyZWVrIHdoaWNoIGhhdmUgYXMgeWV0IGJlZW4gY2xhaXJ2b3lhbnRseSAKc2VlbiBieSBvdXIgaW52ZXN0aWdhdG9ycyB0aGUgd29yZHMgbm93IHJlbmRlcmVkIGFzIApJSFNPWU5YUElTVE9OIGFuZCB0cmFuc2xhdGVkIOKAnEplc3VzIENocmlzdCDigJnigJkgYXAtIApwZWFyIGVpdGhlciBhcyBJSFRQT05BUElTVE9OLCB3aGljaCB3b3VsZCBtZWFuIArigJx0aGUgY2hpZWZlc3QgaGVhbGVyIChvciBkZWxpdmVyZXIpLOKAmeKAmSBvciBhcyBJRVBPTkFQSS0gClNUT04sIHdoaWNoIHNlZW1zIHRvIG1lYW4gc2ltcGx5IOKAnHRoZSBtb3N0IGhvbHkgCm9uZS7igJ0gSXQgaXMsIGhvd2V2ZXIsIG9mIGxpdHRsZSB1c2UgZm9yIHVzIHRvIHNwZWFrIG9mIAp0aGVzZSB2YXJpb3VzIHJlYWRpbmdzIHVudGlsIHNvbWUgZXhwbG9yZXIgb24gdGhlIApwaHlzaWNhbCBwbGFuZSBkaXNjb3ZlcnMgYSBtYW51c2NyaXB0IGNvbnRhaW5pbmcgCnRoZW0sIGZvciB0aGVuIG9ubHkgd2lsbCB0aGUgd29ybGQgb2Ygc2Nob2xhcnMgYmUgCgoK4oCc4oCZIFRIRSBPTkxZLUJFR09UVEVOLuKAnSAzOSAKCgpkaXNwb3NlZCB0byBsaXN0ZW4gdG8gdGhlIHN1Z2dlc3Rpb25zIHdoaWNoIG5hdHVyYWxseSAKZm9sbG93IGZyb20gdGhlbS4gCgpJbiBhbnkgY2FzZSB0aGUgR3JlZWsgZm9ybSBvZiB0aGUgZm9ybXVsYSAoYSkgaXMgYnV0IAphIHRyYW5zbGF0aW9uIGZyb20gYW4gb3JpZ2luYWwgZ2l2ZW4gaW4gYW4gb2xkZXIgdG9uZ3VlLCAKc28gdGhhdCB0byB1cyBhcyBzdHVkZW50cyBpdCBpcyBtb3JlIGludGVyZXN0aW5nIHRvIHNlZSAKdGhlIG1lYW5pbmcgYXR0YWNoZWQgdG8gdGhlc2Ugd29yZHMgaW4gdGhlIG1pbmRzIG9mIAp0aG9zZSB3aG8gaGFkIGhlYXJkIHRoZW0gc3Bva2VuIGJ5IHRoZSBncmVhdCBUZWFjaGVyIAp0aGFuIHRvIGZvbGxvdyBvdXQgdGhlIGRldGFpbHMgb2YgdGhlaXIgcmVuZGVyaW5nIGludG8gCnRoZSBjb3JydXB0IGFuZCBIZWxsZW5pc3RpYyBkaWFsZWN0IG9mIHRoZSBwZXJpb2QuIEJlLSAKeW9uZCBhbGwgc2hhZG93IG9mIGRvdWJ0IHRoYXQgb3JpZ2luYWwgY29uY2VwdGlvbiByZS0gCmZlcnMgZXhjbHVzaXZlbHkgdG8gdGhlIFNlY29uZCBMb2dvcyBhcyBtYW5pZmVzdGluZyAKSGltc2VsZiBhdCBkaWZmZXJlbnQgbGV2ZWxzIG9mIHRoZSBncmVhdCBkZXNjZW50IGludG8gCm1hdHRlciwgYW5kIG5vdCBpbiB0aGUgc2xpZ2h0ZXN0IGRlZ3JlZSBlaXRoZXIgdG8gdGhlIApUZWFjaGVyIG9yIHRvIGFueSBpbmRpdmlkdWFsIG1hbiBhdCBhbGwuIAoKVGhlIGdyZWF0ZXIgcGFydCBvZiB0aGlzIHBvZXRpYyBwYXNzYWdlIGlzIGFuIGVuLSAKZGVhdm91ciB0byBtYWtlIGNsZWFyIHRoZSBwb3NpdGlvbiBhbmQgZnVuY3Rpb25zIG9mIAp0aGUgU2Vjb25kIExvZ29zLCBhbmQgdG8gZ3VhcmQgc28gZmFyIGFzIG1heSBiZSBwb3NzLSAKaWJsZSBhZ2FpbnN0IHZhcmlvdXMgbWlzY29uY2VwdGlvbnMgb2YgdGhlbS4gR3JlYXQgCnN0cmVzcyBpcyBsYWlkIHVwb24gdGhlIGZhY3QgdGhhdCBuYXVnaHQgZWxzZSBpbiB0aGUgCnVuaXZlcnNlIGNvbWVzIGludG8gZXhpc3RlbmNlIGluIHRoZSBzYW1lIHdheSBhcyAKZG9lcyB0aGlzIFNlY29uZCBMb2dvcywgY2FsbGVkIGludG8gYmVpbmcgYXMgSGUgaXMgCmJ5IHRoZSBtZXJlIGFjdGlvbiBvZiB0aGUgd2lsbCBvZiB0aGUgRmlyc3QsIHdvcmtpbmcgCndpdGhvdXQgaW50ZXJtZWRpYXJ5IDsgc28gdGhhdCB0aGUgb2xkIHRyYW5zbGF0b3Igc3Bva2UgCnRydWx5IGVub3VnaCBpbiBpbnRlbnRpb24sIGhvd2V2ZXIgdW5mb3J0dW5hdGUgaGUgd2FzIAppbiBoaXMgY2hvaWNlIG9mIGFuIGV4cHJlc3Npb24sIHdoZW4gaGUgY2FsbGVkIEhpbSAK4oCY4oCYdGhlIG9ubHktYmVnb3R0ZW4gU29uIG9mIEdvZCwgYmVnb3R0ZW4gb2YgSGlzIApGYXRoZXIgYmVmb3JlIGFsbCB3b3JsZHMsIGJ5IHdob20gYWxsIHRoaW5ncyB3ZXJlIAptYWRlO+KAneKAmSBzaW5jZSBIZSBpcyBpbmRlZWQgdGhlIG9ubHkgZGlyZWN0IG1hbmlmZXN0YS0gCnRpb24gb2YgdGhlIEZpcnN0LCB0aGUgVW5tYW5pZmVzdGVkLCBhbmQgdW5kb3VidGVkbHkgCgoKNDAgLCBUSEUgQ0hSSVNUSUFOIENSRUVELiAKCgrigJh3aXRob3V0IEhpbSB3YXMgbm90IGFueXRoaW5nIG1hZGUgd2hpY2ggd2FzIAptYWRlIDvigJ0gZm9yIHRoZSBtb25hZGljIGVzc2VuY2Ugd2hpY2ggSGUgcG91cnMgCmZvcnRoIGlzIHRoZSBlbnNvdWxpbmcgYW5kIGVuZXJnaXppbmcgcHJpbmNpcGxlIGF0IHRoZSAKYmFjayBvZiBhbGwgb3JnYW5pYyBsaWZlIG9mIHdoaWNoIHdlIGtub3cgYW55dGhpbmcuIAoKVGhlIHRydWUgbWVhbmluZyBvZiB0aGUgd29yZCBwb3ZveWV2anMgaXMgdmVyeSAKY2xlYXJseSBzdGF0ZWQgYnkgTXIuIE1lYWQgaW4gYW4gYXJ0aWNsZSBpbiBUaGUgClRoZW9zb3BoaWNhbCBSZXZpZXcsIHZvbC4geHhpLiwgcC4gMTQxLCBpbiB3aGljaCBoZSAKcmVtYXJrczog4oCY4oCYVGhlcmUgaXMgbm8gbG9uZ2VyIGFueSBkb3VidCB0aGF0IHRoZSAKdGVybSBpbnZhcmlhYmx5IHRyYW5zbGF0ZWQg4oCYb25seS1iZWdvdHRlbuKAmSBtZWFucyAKbm90aGluZyBvZiB0aGUga2luZCwgYnV0IOKAmGNyZWF0ZWQgYWxvbmUs4oCZIHRoYXQgaXMgdG8gc2F5LCAKY3JlYXRlZCBmcm9tIG9uZSBwcmluY2lwbGUgYW5kIG5vdCBmcm9tIGEgc3l6eWd5IG9yIApwYWlyLuKAneKAmSAKCkl0IGlzIG9idmlvdXMgdGhhdCB0aGlzIHRpdGxlIGlzIGFuZCBjYW4gYmUgdHJ1bHkgZ2l2ZW4gCm9ubHkgdG8gdGhlIFNlY29uZCBMb2dvcywgZm9yIHRoZSBtYW5uZXIgaW4gd2hpY2ggCkhlIGlzIGVtYW5hdGVkIGZyb20gdGhlIEZpcnN0IG11c3QgZXZpZGVudGx5IGRpZmZlciAKZnJvbSBhbGwgb3RoZXIgYW5kIGxhdGVyIHByb2Nlc3NlcyBvZiBnZW5lcmF0aW9uLCB3aGljaCAKYXJlIGludmFyaWFibHkgdGhlIHJlc3VsdCBvZiBpbnRlcmFjdGlvbi4gCgpJdCBzaG91bGQgYWxzbyBiZSBib3JuZSBpbiBtaW5kIHRoYXQg4oCcYmVmb3JlIGFsbCAKd29ybGRzLOKAnSBob3dldmVyIHRydWUgaXQgbWF5IGJlIGFzIGEgc3RhdGVtZW50IHJlLSAKZmVycmluZyB0byB0aGUgZW1hbmF0aW9uIG9mIHRoZSBDaHJpc3QsIGlzIGEgZmxhZ3JhbnQgCm1pc3RyYW5zbGF0aW9uIG9mIG1wZCBtd2F2cnd5ICJ0cmF2IGFpZHZleSwgd2hpY2ggY2FuIApzaWduaWZ5IG5vdGhpbmcgYnV0IOKAmGJlZm9yZSBhbGwgdGhlIGVvbnMu4oCdIFRvIGFueSBvbmUgCndobyBpcyBldmVuIHN1cGVyZmljaWFsbHkgZmFtaWxpYXIgd2l0aCBHbm9zdGljIG5vbWVuLSAKY2xhdHVyZSB0aGlzIGJlYXJzIGl0cyBtZWFuaW5nIG9uIGl0cyBmYWNlLCBhbmQgdGVsbHMgdXMgCnNpbXBseSB0aGF0IHRoZSBTZWNvbmQgTG9nb3MgaXMgdGhlIGZpcnN0IGluIHRpbWUsIGFzIApIZSBpcyB0aGUgZ3JlYXRlc3QsIG9mIGFsbCB0aGUgejJvbnMgb3IgZW1hbmF0aW9ucyBmcm9tIAp0aGUgZXRlcm5hbCBGYXRoZXIuIAoKSGVyZSBhbHNvIGNvbWVzIHRoZSBlbXBoYXRpYyBhbmQgcmVpdGVyYXRlZCBhc3Nlci0gCnRpb24gdGhhdCBIZSBpcyDigJjigJhvZiBvbmUgc3Vic3RhbmNlIHdpdGggdGhlIEZhdGhlcizigJ0gCgoK4oCYU05PVCBUV08sIEJVVCBPTkUu4oCdIDR0IAoKCmlkZW50aWNhbCBpbiBldmVyeSByZXNwZWN0IHdpdGggSGltIGZyb20gd2hvbSBIZSAKY2FtZSwgc2F2ZSBvbmx5IHRoYXQgSGUgaGFzIGRlc2NlbmRlZCB0aGlzIG9uZSBzdGVwIApmdXJ0aGVyLCBhbmQgaW4gdGh1cyBiZWNvbWluZyBtYW5pZmVzdCBoYXMgZm9yIHRoZSAKdGltZSBsaW1pdGVkIHRoZSBmdWxsIGV4cHJlc3Npb24gb2YgdGhhdCB3aGljaCB5ZXQgSGUgCmlzIGluIGVzc2VuY2UsIHNvIHRoYXQgSGUgaGFzIGEgZHVhbCBhc3BlY3TigJTigJjigJwgZXF1YWwgCnRvIHRoZSBGYXRoZXIgYXMgdG91Y2hpbmcgSGlzIEdvZGhlYWQsIHlldCBpbmZlcmlvciAKdG8gdGhlIEZhdGhlciBhcyB0b3VjaGluZyBIaXMgbWFuaG9vZDvigJ0gYW5kIHlldCAKdGhyb3VnaCBhbGwgcmluZ3MgdGhlIHRyaXVtcGhhbnQgcHJvY2xhbWF0aW9uIHRoYXQgCnRoZSBldGVybmFsIHVuaXR5IGlzIHN0aWxsIG1haW50YWluZWQsIOKAmOKAmCBmb3IgYWx0aG91Z2ggSGUgCmJlIEdvZCBhbmQgbWFuLCB5ZXQgSGUgaXMgbm90IHR3bywgYnV0IG9uZSBDaHJpc3Qs4oCd4oCZIApub3cgYXMgZXZlciwg4oCcR29kIG9mIEdvZCwgTGlnaHQgb2YgTGlnaHQsIHZlcnkgR29kIApvZiB2ZXJ5IEdvZC7igJ0gCgpGZXcgZ3JhbmRlciBwcm90ZXN0cyBhZ2FpbnN0IHRoZSBkb2N0cmluZSBvZiBldGVybmFsIApkdWFsaXR54oCUdGhlIEdvZCBhbmQgdGhlIG5vdC1Hb2TigJRoYXZlIGV2ZXIgYmVlbiAKcGVubmVkIGJ5IG1vcnRhbCBtYW47IGFuZCBpbiB0aGUgbGF0ZXIgYW5kIG1vcmUgCmRldGFpbGVkIEF0aGFuYXNpYW4gQ3JlZWQgd2UgaGF2ZSB0aGUgdmVyeSBwcm9vZiBvZiAKdGhlIGVzc2VudGlhbCB1bml0eSBhZGR1Y2VkLCBpbiB0aGUgc3RhdGVtZW50IG9mIHRoZSAKcG93ZXIgdG8gYmVhciBiYWNrIGludG8gdGhlIEhpZ2hlc3QgYWxsIHRoZSBmcnVpdCBvZiAKdGhlIGRlc2NlbnQgaW50byBtYXR0ZXIsIGZvciB3ZSBhcmUgdG9sZCB0aGF0IEhlIGlzIArigJjigJhvbmUsIG5vdCBieSB0aGUgY29udmVyc2lvbiBvZiB0aGUgR29kaGVhZCBpbnRvIGZsZXNoLCAKYnV0IGJ5IHRoZSB0YWtpbmcgb2YgdGhlIG1hbmhvb2QgaW50byBHb2Qu4oCdIAoKTW9zdCB0cnVseSBhbmQgbW9zdCBiZWF1dGlmdWxseSBhbHNvIGlzIGl0IHdyaXR0ZW4gb2YgCkhpbSB0aGF0IOKAmOKAmCBmb3IgdXMgbWVuIGFuZCBmb3Igb3VyIHNhbHZhdGlvbiBIZSBjYW1lIApkb3duIGZyb20gaGVhdmVuIDvigJ0gZm9yIHRob3VnaCBpbmRlZWQgaXQgaXMgdHJ1ZSB0aGF0IAp0aGUgaW1tb3J0YWwgc3Bpcml0IG9mIG1hbiBpcyBvZiB0aGUgbmF0dXJlIG9mIHRoZSAKRmF0aGVyIEhpbXNlbGYsIHlldCBidXQgZm9yIHRoZSBzYWNyaWZpY2Ugb2YgdGhlIFNvbiwgCndobyBwb3VyZWQgZm9ydGggb2YgSGlzIHN1YnN0YW5jZSBhcyBtb25hZGljIGVzc2VuY2UgCmludG8gYWxsIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgbG93ZXIga2luZ2RvbXMsIHRoZSAKY2F1c2FsIGJvZHkgY291bGQgbmV2ZXIgaGF2ZSBiZWVuLCBhbmQgd2l0aG91dCB0aGF0IAoKCjQyIFRIRSBDSFJJU1RJQU4gQ1JFRUQuIAoKCmFzIHZlaGljbGUsIGFzIHRoZSB2YXNlIHRvIGhvbGQgdGhlIGVsaXhpciBvZiBsaWZlLCBoZWF2ZW4gCmFuZCBlYXJ0aCBjb3VsZCBuZXZlciBoYXZlIG1ldCB0b2dldGhlciwgbm9yIHRoaXMgCm1vcnRhbCBoYXZlIHB1dCBvbiBpbW1vcnRhbGl0eS4gQW5kIHNvIGlzIHRoZSB0cnVlIApDaHJpc3QgYXQgb25jZSB0aGUgY3JlYXRvciBhbmQgdGhlIHNhdmlvdXIgb2YgbWFuLCBmb3IgCndpdGhvdXQgSGltIHRoZSBnYXAgYmV0d2VlbiBzcGlyaXQgYW5kIG1hdHRlciBjb3VsZCAKbmV2ZXIgYmUgYnJpZGdlZCBvdmVyLCBhbmQgaW5kaXZpZHVhbGl0eSBjb3VsZCBub3QgYmUuIAoK4oCYQW5kIHdhcyBpbmNhcm5hdGUgYnkgdGhlIEhvbHkgR2hvc3Qgb2YgdGhlIApWaXJnaW4gTWFyeS7igJ0gSGVyZSB0aGVyZSBzZWVtcyBmb3IgYSBtb21lbnQgdG8gYmUgCmEgZGlmZmljdWx0eSwgZm9yIGhvdyBjYW4gdGhlIGJpcnRoIG9mIHRoZSBTZWNvbmQgTG9nb3MgCmJlIGR1ZSBpbiBhbnkgd2F5IHRvIHRoZSBhY3Rpb24gb2YgdGhlIFRoaXJkLCB3aG8gCkhpbXNlbGYgaG9sZHMgdG8gSGltIHRoZSByZWxhdGlvbiBvZiBjaGlsZCByYXRoZXIgdGhhbiAKb2YgZmF0aGVyPyBZZXQgaWYgd2UgZm9sbG93IHRoZSBvcmlnaW5hbCBsaW5lcyBvZiAKdGhvdWdodCB3ZSBzaGFsbCBub3QgYmUgbWlzbGVkIGJ5IHRoZSBhcHBhcmVudCBjb24tIAp0cmFkaWN0aW9uLCBmb3Igd2Ugc2hhbGwgcmVhbGl6ZSB0aGF0IHdoYXQgd2UgYXJlIGRlYWxpbmcgCndpdGggaXMgc2ltcGx5IGEgZnVydGhlciBzdGFnZSBvZiB0aGUgZ3JlYXQgc2FjcmlmaWNlIG9mIAp0aGUgZGVzY2VudCBpbnRvIG1hdHRlci4gCgpUaGUgRW5nbGlzaCB0cmFuc2xhdG9yLCBvciBwZXJoYXBzIHN0aWxsIG1vcmUgaGlzIApMYXRpbiBwcmVkZWNlc3NvciwgaGFzIHVuZm9ydHVuYXRlbHkgY29uZnVzZWQgdGhlIAptZWFuaW5nIGJ5IGFuIGVudGlyZWx5IHVud2FycmFudGVkIGNoYW5nZSBpbiBvbmUgCm9mIGhpcyBwcmVwb3NpdGlvbnPigJRhIHZlcnkgcmVtYXJrYWJsZSBtaXN0cmFuc2xhdGlvbiwgCnNvIG9idmlvdXMgYW5kIHNvIGFzdG9uaXNoaW5nIHRoYXQgaXQgY291bGQgbmV2ZXIgaGF2ZSAKZXNjYXBlZCB0aGUgbm90aWNlIG9mIHNjaG9sYXJzLCB3ZXJlIGl0IG5vdCBmb3IgdGhlIG1pc3QgCnRocm93biByb3VuZCBpdCBieSB0aGUgaW5pdGlhbCBtaXNjb25jZXB0aW9uIHdoaWNoIApibGluZGVkIHRoZWlyIGV5ZXMgdG8gdGhlIHBvc3NpYmlsaXR5IG9mIGFueSBidXQgdGhlIApncm9zc2VzdCBtYXRlcmlhbCBpbnRlcnByZXRhdGlvbiBvZiB0aGUgd2hvbGUgc2VudGVuY2UuIApFdmVuIGluIHRoZSBsYXRlc3QgR3JlZWsgZm9ybSB0aGVyZSBpcyBidXQgb25lIHByZXBvc2ktIAp0aW9uIGZvciB0aGUgdHdvIG5vdW5zLCBhbmQgdGhlIHBocmFzZSBydW5zIGNhcHh3wqfDqXJhIArDqXggbXZldnBhcm9zIGR5aW92IEthbCBNYXBpYXMgcmlzIHdhcGbDqXZvduKAlOKAnCBhbmQgd2FzIGluLSAKY2FybmF0ZSBvZiB0aGUgSG9seSBHaG9zdCBhbmQgdGhlIFZpcmdpbiBNYXJ5LuKAnSBUaGF0IAoKClRIRSBWSVJHSU4gTUFUVEVSLiA0MyAKCgppcyB0byBzYXksIHRoZSBtb25hZGljIGVzc2VuY2UsIGhhdmluZyBhbHJlYWR5IOKAmOKAnOKAmCBjb21lIApkb3duIGZyb20gaGVhdmVuLOKAnSBhcyBtZW50aW9uZWQgaW4gdGhlIHByZXZpb3VzIGNsYXVzZSwgCm1hdGVyaWFsaXplcyBpdHNlbGYgYnkgYXNzdW1pbmcgYSBnYXJtZW50IG9mIHRoZSB2aXNpYmxlIAphbmQgdGFuZ2libGUgbWF0dGVyIGFscmVhZHkgcHJlcGFyZWQgZm9yIGl0cyByZWNlcHRpb24gCmJ5IHRoZSBhY3Rpb24gb2YgdGhlIFRoaXJkIExvZ29zIHVwb24gd2hhdCB3aXRob3V0IApIaW0gd291bGQgaGF2ZSBiZWVuIHZpcmdpbiwgb3IgdW5wcm9kdWN0aXZlLCBtYXR0ZXIuIAoKVGhpcyBuYW1lIOKAmOKAmHZpcmdpbuKAnSBoYXMgZnJlcXVlbnRseSBiZWVuIGFwcGxpZWQgCnRvIHRoZSBhdG9taWMgbWF0dGVyIG9mIHRoZSB2YXJpb3VzIHBsYW5lcywgYmVjYXVzZSAKd2hlbiBpbiB0aGlzIGNvbmRpdGlvbiBpdCBkb2VzIG5vdCBvZiBpdHMgb3duIG1vdGlvbiAKZW50ZXIgaW50byBhbnkgc29ydCBvZiBjb21iaW5hdGlvbiwgYW5kIHNvIGl0IHJlbWFpbnMsIAphcyBpdCB3ZXJlLCBpbmVydCBhbmQgdW5mcnVpdGZ1bC4gQnV0IG5vIHNvb25lciBpcyBpdCAKZWxlY3RyaWZpZWQgYnkgdGhlIG91dHBvdXJpbmcgb2YgdGhlIEhvbHkgR2hvc3QgdGhhbiAKaXQgd2FrZW5zIGludG8gYWN0aXZpdHksIGNvbWJpbmVzIGludG8gbW9sZWN1bGVzLCBhbmQgCnJhcGlkbHkgZ2VuZXJhdGVzIHRoZSBtYXR0ZXIgb2YgdGhlIGxvd2VyIHN1Yi1wbGFuZXMsIAp0aHVzIGJyaW5naW5nIGludG8gZXhpc3RlbmNlIG91dCBvZiB0aGUgYXRvbWljIGV0aGVyIAp3aGF0IGNoZW1pc3RzIGNhbGwgdGhlIGVsZW1lbnRzOyBhbmQgaXQgaXMgb2YgdGhpcyAKbWF0dGVyLCB0aHVzIHZpdmlmaWVkIGJ5IHRoYXQgZmlyc3Qgb3V0cG91cmluZywgdGhhdCBhcmUgCmNvbXBvc2VkIHRoZSBtYW5pZm9sZCBmb3JtcyB3aGljaCBhcmUgZW5zb3VsZWQgYnkgCnRoZSBtb25hZGljIGVzc2VuY2UuIAoKV2hlbiB0aGlzIHNlY29uZCBvdXRwb3VyaW5nIHJlYWNoZXMgdGhlIHBoeXNpY2FsIApwbGFuZSBpbiB0aGUgc2hhcGUgb2Ygd2hhdCB3ZSBoYXZlIHNvbWV0aW1lcyBjYWxsZWQgCnRoZSBtaW5lcmFsIG1vbmFkLCBpdCBnaXZlcyB0byB0aGVzZSB2YXJpb3VzIGNoZW1pY2FsIAplbGVtZW50cyBhIGZ1cnRoZXIgcG93ZXIgb2YgY29tYmluYXRpb24sIGFuZCB0aHVzIHRoZSAKd2F5IGlzIHByZXBhcmVkIGZvciB0aGUgb3RoZXIgYW5kIGhpZ2hlciBtYW5pZmVzdGF0aW9ucyAKb2YgbGlmZSB3aGljaCBhcmUgdG8gZm9sbG93IGluIHRoZSBsYXRlciBraW5nZG9tcy4gVGhlIApTZWNvbmQgTG9nb3MsIHRoZXJlZm9yZSwgdGFrZXMgZm9ybSBub3Qgb2YgdGhlIOKAnHZpcmdpbuKAnSAKbWF0dGVyIGFsb25lLCBidXQgb2YgbWF0dGVyIHdoaWNoIGlzIGFscmVhZHkgaW5zdGluY3QgCmFuZCBwdWxzYXRpbmcgd2l0aCB0aGUgbGlmZSBvZiB0aGUgVGhpcmQgTG9nb3MsIHNvIHRoYXQgCmJvdGggdGhlIGxpZmUgYW5kIHRoZSBtYXR0ZXIgc3Vycm91bmQgSGltIGFzIGEgdmVzdHVyZSwgCgoKNDQgVEhFIENIUklTVElBTiBDUkVFRC4gCgoKYW5kIHRodXMgaW4gdmVyeSB0cnV0aCBIZSBpcyDigJhpbmNhcm5hdGUgb2YgdGhlIEhvbHkgCkdob3N0IGFuZCB0aGUgVmlyZ2luIE1hcnku4oCdIAoKSGVyZSBhZ2FpbiB0aGUgbWF0ZXJpYWxpemluZyB0ZW5kZW5jeSBoYXMgaW50cm9kdWNlZCAKYSB0b3RhbGx5IGRpZmZlcmVudCBpZGVhIGJ5IGEgdmVyeSB0cmlmbGluZyBhbHRlcmF0aW9u4oCUaW4gCmZhY3QsIGJ5IHRoZSBpbnNlcnRpb24gb2YgYSBzaW5nbGUgbGV0dGVyLCBmb3IgaW4gdGhlIGVhcmxpZXN0IApmb3JtIHRoZSBuYW1lIHdhcyBub3QgTWFwaWEsIGJ1dCBNYS9hLCBtZWFuaW5nIApzaW1wbHkgbW90aGVyLiBJdCB3b3VsZCBiZSB0ZW1wdGluZyB0byBzcGVjdWxhdGUgYXMgCnRvIHdoZXRoZXIgdGhlcmUgY291bGQgcG9zc2libHkgYmUgYW55IHRyYWRpdGlvbmFsIGNvbi0gCm5lY3Rpb24gYmV0d2VlbiB0aGlzIHN0cmFuZ2VseSBzdWdnZXN0aXZlIHdvcmQgYW5kIHRoZSAKU2Fuc2tyaXQgTWF5YSwgd2hpY2ggaXMgc28gb2Z0ZW4gdXNlZCB0byBleHByZXNzIHRoaXMgCnNhbWUgaWxsdXNvcnkgdmVpbCBvZiBtYXR0ZXIgd2hpY2ggdGhlIExvZ29zIGRyYXdzIApyb3VuZCBIaW0gaW4gSGlzIGRlc2NlbnQ7IGJ1dCBhbGwgdGhhdCBjYW4gYmUgc2FpZCBhdCAKcHJlc2VudCBpcyB0aGF0IG5vIHN1Y2ggY29ubmVjdGlvbiBoYXMgeWV0IGJlZW4gdHJhY2VkLiAKCuKAmOKAmCBBbmQgd2FzIG1hZGUgbWFuLuKAnSBUaGUgaW5zZXJ0aW9uIG9mIHRoaXMgY2xhdXNlIAppcyBleGNlZWRpbmdseSBzaWduaWZpY2FudCwgc2luY2UgaXQgZGlzdGluY3RseSBzaG93cyB0aGF0IAp0aGUgYXJyaXZhbCBvZiB0aGUgbW9uYWRpYyBlc3NlbmNlIGF0IHRoZSBsZXZlbCBvZiAKaHVtYW5pdHkgd2FzIGEgc3RhZ2Ugc2VwYXJhdGUgfCBmcm9tIGFuZCBsYXRlci4gdGhhbiB0aGUgCmRlc2NlbnQgaW50byBtYXR0ZXIsIGFuZCB0aGF0IGNvbnNlcXVlbnRseSB0aGUg4oCcdGFraW5nIApmbGVzaCBvZiB0aGUgSG9seSBHaG9zdCBhbmQgdGhlIFZpcmdpbiBNYXJ54oCdIHByZXZpLSAKb3VzbHkgbWVudGlvbmVkIGRpZCBub3QgYW5kIGNvdWxkIG5vdCByZWZlciB0byBhIGh1bWFuIApiaXJ0aC4gVGhpcyBjbGF1c2UgaXMgb21pdHRlZCBmcm9tIHRoZSBBcG9zdGxlc+KAmSBDcmVlZCwgCmJ1dCBkdWx5IGFwcGVhcnMgaW4gdGhlIGRyYWZ0IG1hZGUgYnkgdGhlIENvdW5jaWwgb2YgCk5pY2VhLCB3aGVyZSBpdCBpcyBldmVuIG1vcmUgZXZpZGVudGx5IGludGVuZGVkIHRvIApkZXNjcmliZSA5IGxhdGVyLCBzdGVwIGluIGV2b2x1dGlvbiwgc2luY2UgdGhlIHRleHQgcnVucyAK4oCY4oCYYW5kIHdhcyBtYWRlIGZsZXNoLCBhbmQgd2FzIG1hZGUgbWFuLOKAmSB0aGUgYXMtIApzdW1wdGlvbiBvZiB0aGUgZmxlc2ggY2xlYXJseSByZWZlcnJpbmcgdG8gdGhlIHByZXZpb3VzIApwYXNzYWdlIG9mIHRoZSBtb25hZGljIGVzc2VuY2UgdGhyb3VnaCB0aGUgYW5pbWFsIApraW5nZG9tLiBJbiB0aGUgQXBvc3RsZXPigJkgQ3JlZWQgdGhlIGluZmx1ZW5jZSBvZiB0ZW4tIApkZW5jeSAoYykgaXMgcHJlZG9taW5hbnQsIGZvciB0aGUgd2hvbGUgcHJvY2VzcyBpcyAKCgpBTiBBU1RPTklTSElORyBBTFRFUkFUSU9OLiA0NSAKCgpkZXNjcmliZWQgaW4gdGhlIG1vc3QgZ3Jvc3NseSBtYXRlcmlhbGlzdGljIG1hbm5lcuKAlCAK4oCY4oCYd2hvIHdhcyBjb25jZWl2ZWQgYnkgdGhlIEhvbHkgR2hvc3QsIGJvcm4gb2YgdGhlIApWaXJnaW4gTWFyeS7igJ0gCgrigJjigJggU3VmZmVyZWQgdW5kZXIgUG9udGl1cyBQaWxhdGUu4oCdIEluIHRoaXMgY2xhdXNlIHdlIApoYXZlIHF1aXRlIHRoZSBtb3N0IHJlbWFya2FibGUgaW5zdGFuY2Ugb24gcmVjb3JkIG9mIAp0aGUgZGVncmFkaW5nIGFuZCBuYXJyb3dpbmcgaW5mbHVlbmNlIG9mIHRoZSB0ZW5kZW5jeSAKd2hpY2ggd2UgaGF2ZSBjYWxsZWQgKGMpLCBmb3IgYnkgdGhlIGluc2VydGlvbiBvZiB0aGUgCnRpbmllc3QgbGV0dGVyIG9mIHRoZSBHcmVlayBhbHBoYWJldCAodGhlIGlvdGEsIGNvcnJlLSAKc3BvbmRpbmcgdG8gdGhlIOKAmOKAmGpvdOKAmeKAmSBzcG9rZW4gb2YgaW4gdGhlIGdvc3BlbCkgdGhlIApvcmlnaW5hbCBtZWFuaW5nIGhhcyBiZWVuIG5vdCBtZXJlbHkgb2JzY3VyZWQsIGJ1dCAKYWJzb2x1dGVseSBsb3N0IGFuZCBmb3Jnb3R0ZW4uIFRoZSBhbHRlcmF0aW9uIGlzIHNvIApzaW1wbGUgYW5kIGVhc3kgdG8gbWFrZSwgYW5kIHlldCBpdHMgZWZmZWN0cyBhcmUgc28gZXgtIAp0cmFvcmRpbmFyeSBhbmQgc28gY29sb3NzYWwsIHRoYXQgdGhvc2Ugd2hvIGRpc2NvdmVyZWQgCml0IGNvdWxkIGZvciBzb21lIHRpbWUgc2NhcmNlbHkgYmVsaWV2ZSB0aGVpciBleWVzLCBhbmQgCndoZW4gdGhleSBoYWQgZ3Jhc3BlZCB0aGUgc2l0dWF0aW9uLCB0aGV5IHdlcmUgdW5hYmxlIAp0byBjb21wcmVoZW5kIGhvdyBpdCBoYWQgYmVlbiBwb3NzaWJsZSBzbyBsb25nIHRvIApvdmVybG9vayBhbnl0aGluZyBzbyBleGNlZWRpbmdseSBvYnZpb3VzLiAKCkluc3RlYWQgb2YgTU9OVElPWUlUSUFBVE9ZIHRoZSBlYXJsaWVzdCBHcmVlayAKbWFudXNjcmlwdHMgd2hpY2ggdGhlIGNsYWlydm95YW50IGludmVzdGlnYXRvcnMgaGF2ZSAKeWV0IGJlZW4gYWJsZSB0byBmaW5kLCBhbGwgcmVhZCBUSU9OVE9ZSElBSFRPWS4gCk5vdyB0aGUgaW50ZXJjaGFuZ2Ugb2YgQSBhbmQgSCBpcyBieSBubyBtZWFucyBpbmZyZS0gCnF1ZW50IGluIHZhcmlvdXMgR3JlZWsgZGlhbGVjdHMsIHNvIHRoYXQgdGhlIG9ubHkgcmVhbCAKYWx0ZXJhdGlvbiBoZXJlIGlzIHRoZSBpbnNlcnRpb24gb2YgdGhlIEksIHdoaWNoIGNoYW5nZXMgCndvdnJvcywgTWVhbmluZyBhIHNlYSwgaW50byBJZHZyaXMsIHdoaWNoIGlzIGEgUm9tYW4gCnByb3BlciBuYW1lLiBJIGhhdmUgbm8gd2lzaCB0byBzdWdnZXN0IHRoYXQgdGhpcyAKYWx0ZXJhdGlvbiwgb3IgZWl0aGVyIG9mIHRoZSBvdGhlcnMgd2hpY2ggSSBoYXZlIG1lbi0gCnRpb25lZCwgd2FzIG5lY2Vzc2FyaWx5IG1hZGUgd2l0aCBhbnkgZGVjZWl0ZnVsIG9iamVjdCwgCm9yIHdpdGggaW50ZW50aW9uIHRvIG1pc2xlYWQgOyBpdCBtYXkgcXVpdGUgZWFzaWx5IGhhdmUgCmJlZW4gbWFkZSB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IGl0IHdhcyBtZXJlbHkgYSAKCgo0NiBUSEUgQ0hSSVNUSUFOIENSRUVELiAKCgpjb3JyZWN0aW9uIG9mIHRoZSB1bmltcG9ydGFudCBtaXN0YWtlIG9mIHNvbWUgZWFybGllciAKY29weWlzdC4gCgpJdCB3YXMgb2J2aW91cyB0byB0aGUgaW52ZXN0aWdhdG9ycyB0aGF0IHRoZSAKRXNzZW5lIG1vbmsgd2hvIGZpcnN0IHRyYW5zbGF0ZWQgdGhlIGZvcm11bGEgaW50byAKR3JlZWsgd2FzIGJ5IG5vIG1lYW5zIHBlcmZlY3RseSBhY3F1YWludGVkIHdpdGggdGhhdCAKdG9uZ3VlLCBhbmQgdGhlIHJlc3VsdCB3YXMgY29uc2VxdWVudGx5IGFueXRoaW5nIGJ1dCAKY2xhc3NpY2FsLCBNZW4gaW50byB3aG9zZSBoYW5kcyB0aGUgbWFudXNjcmlwdCAob3IgCmNvcGllcyBvZiBpdCkgY2FtZSBhdCBsYXRlciBwZXJpb2RzIGFtZW5kZWQgaGVyZSBhbmQgCnRoZXJlIG9idmlvdXMgZXJyb3JzIGluIHNwZWxsaW5nIG9yIGNvbnN0cnVjdGlvbiwgYW5kIGl0IAppcyBxdWl0ZSBwb3NzaWJsZSB0aGF0IG9uZSB3aG8gYXBwcm9hY2hlZCBpdHMgY29uc2lkZXJhLSAKdGlvbiB3aXRoIGEgbWluZCBpbmNhcGFibGUgb2YgYXBwcmVjaWF0aW5nIGl0cyB0cnVlIApteXN0aWNhbCBzaWduaWZpY2F0aW9uLCBhbmQgZmlsbGVkIHdpdGggdGhlIGFudGhyb3BvLSAKbW9ycGhpYyBpbnRlcnByZXRhdGlvbiwgbWlnaHQgc3VwcG9zZSB0aGF0IGluIHRoaXMgY2FzZSwgCmZvciBleGFtcGxlLCBhIGxldHRlciBtdXN0IGhhdmUgYmVlbiBvbWl0dGVkIGJ5IHNvbWUgCmlnbm9yYW50IHNjcmliZSwgYW5kIHNvIG1pZ2h0IGluc2VydCB0aGF0IGxldHRlciB3aXRob3V0IAp0aGUgbGVhc3QgaWRlYSB0aGF0IGhlIHdhcyB0aGVyZWJ5IGNoYW5naW5nIHRoZSBlbnRpcmUgCm1lYW5pbmcgb2YgdGhlIGNsYXVzZSBhbmQgaW50cm9kdWNpbmcgYSBjb25jZXB0aW9uIAphYnNvbHV0ZWx5IGZvcmVpZ24gdG8gdGhlIHNwaXJpdCBvZiB0aGUgd2hvbGUgZG9jdW1lbnQuIAoKTm8gZG91YnQgaW4gZWNjbGVzaWFzdGljYWwgaGlzdG9yeSB0aGVyZSBoYXMgYmVlbiBhIApsYXJnZSBhbW91bnQgb2YgZGlyZWN0LCB1bmJsdXNoaW5nIGZvcmdlcnksIGRvbmUg4oCYIGZvciAKdGhlIGdyZWF0ZXIgZ2xvcnkgb2YgR29kLOKAnSB3aGljaCBpbiB0aGUgZXllcyBvZiB0aGUgCm1vbmtzIHNpbXBseSBtZWFudCB0aGUgYWR2YW5jZW1lbnQgb2YgdGhlIGludGVyZXN0cyAKb2YgdGhlIENodXJjaCA7IGJ1dCB3ZSBhcmUgZm9ydHVuYXRlbHkgbm90IGNvbXBlbGxlZCB0byAKcG9zdHVsYXRlIGRpc2hvbmVzdHkgaW4gdGhpcyBjYXNlLCBzaW5jZSB3ZSBzZWUgdGhhdCAKaWdub3JhbmNlIGFuZCBwcmVqdWRpY2UgbWF5IHZlcnkgZWFzaWx5IGhhdmUgZG9uZSAKcXVpdGUgaW5ub2NlbnRseSB0aGUgZmF0YWwgd29yayBvZiB0aGUgdXR0ZXIgbWF0ZXJpLSAKYWxpemF0aW9uIG9mIGNvbmNlcHRpb25zIG9yaWdpbmFsbHkgc28gZ3JhbmQgYW5kIHNvIApsdW1pbm91cy4gCgpJdCB3YXMgbm8gZG91YnQgd2l0aCB0aGUgc2FtZSBsYXVkYWJsZSwgdGhvdWdoIG1pcy0gCgoK4oCcIFBPTlRJVVMgUElMQVRFLuKAnSA0OSAKCgp0YWtlbiBpZGVhIG9mIHBvbGlzaGluZyB0aGUgZGljdGlvbiB0aGF0IHRoZSBwcmVwb3NpdGlvbiAKw6lydCB3YXMgKG11Y2ggbGF0ZXIpIHN1YnN0aXR1dGVkIGZvciB0aGUgZWFybGllciDDqTfDqSwgCnRob3VnaCBhZnRlciB0aGUgdGhlb3J5IG9mIHRoZSBwcm9wZXIgbmFtZSB3YXMgb25jZSAKYWNjZXB0ZWQgdGhlIG1pc2NoaWVmIHdhcyBkb25lLCBhbmQgdGhpcyBmdXJ0aGVyIGFsdGVyYS0gCnRpb24gbWVyZWx5IHB1dCB0aGUgcGhyYXNlIGludG8gbW9yZSBlbGVnYW50IHNoYXBlLCBhbmQgCnNvIGxlc3NlbmVkIHRoZSBwcm9iYWJpbGl0eSBvZiBpbnF1aXJ5IGFzIHRvIGFueSBvdGhlciAKcG9zc2libGUgbWVhbmluZyB0aGFuIHRoZSBhcHBhcmVudCBvbmUuIEluIHRoZSBvcmlnaS0gCm5hbCB0cmFuc2xhdGlvbiB0aGUgcmVhbCBpbnRlbnRpb24gb2YgdGhlIHdyaXRlciB3YXMgbWFkZSAKZXZlbiBjbGVhcmVyIHN0aWxsIGJ5IHRoZSB1c2Ugb2YgdGhlIGRhdGl2ZSBjYXNlLCB0aHVzIAppbmRpY2F0aW5nIHRoYXQgdGhlIGV4cHJlc3Npb24gcmVmZXJyZWQgdG8gYSBwbGFjZSwgbm90IAphIHBlcnNvbiA7IGJ1dCB0aGlzIHdhcyBhbG1vc3QgaW1tZWRpYXRlbHkgY2hhbmdlZCB0byAKdGhlIG1vcmUgdXN1YWwgZ2VuaXRpdmUsIGV2ZW4gYmVmb3JlIHRoZSB1bmZvcnR1bmF0ZSAKaW5zZXJ0aW9uIG9mIHRoZSBpb3RhLiAKClRoZSB3b3JkcyB6cm92cm9zIG1BbnJvcywgdGhlbiwgc2ltcGx5IG1lYW4gYSBjb20tIApwcmVzc2VkIG9yIGRlbnNpZmllZCBzZWHigJRieSBubyBtZWFucyBhIGJhZCBkZXNjcmlwdGlvbiAKb2YgdGhlLiBqb3dlci4gcGFydCBvZiB0aGUgYXN0cmFsIHBsYW5lLCB3aGljaCBpcyBzbyAKY29uc3RhbnRseSB0eXBpZmllZCBieSB3YXRlci4gVGhlIGNsYXVzZSB1c3VhbGx5IAp0cmFuc2xhdGVkIOKAmOKAmHN1ZmZlcmVkIHVuZGVyIFBvbnRpdXMgUGlsYXRl4oCdIHNob3VsZCBiZSAKcmVuZGVyZWQsIOKAnCBIZSBlbmR1cmVkIHRoZSBkZW5zZSBzZWHigJ3igJR0aGF0IGlzLCB0aGF0IApmb3IgdXMgbWVuIGFuZCBmb3Igb3VyIHNhbHZhdGlvbiBIZSBhbGxvd2VkIEhpbS0gCnNlbGYgdG8gYmUgZm9yIHRoZSB0aW1lIGxpbWl0ZWQgYnksIGFuZCBpbXByaXNvbmVkIGluLCAKYXN0cmFsIG1hdHRlci4gV2Ugc2hvdWxkIG5vdGUgdGhlIGV4YWN0IG9yZGVyIG9mIHRoZSAKY2xhdXNlcyBoZXJlLiBOZWl0aGVyIG9mIHRoZSBDcmVlZHMgYXMgdGhleSBzdGFuZCBhdCAKcHJlc2VudCBjb250YWlucyBxdWl0ZSB0aGUgd2hvbGUgb2YgdGhlIG9yaWdpbmFsIGlkZWE7IApmb3IgaW4gdGhlIEFwb3N0bGVz4oCZLCB0aG91Z2ggdGhlIG9yZGVyIGlzIGFjY3VyYXRlLCAKc2V2ZXJhbCBzdGFnZXMgYXJlIG9taXR0ZWQsIGFuZCB3aGlsZSB0aGUgTmljZW5lIGlzIApmdWxsZXIsIHRoZXJlIGlzIGEgY29uZnVzaW9uIGluIGl0cyBhcnJhbmdlbWVudC4gVGhlIApmaXJzdCBzdGVwIG1lbnRpb25lZCBpcyB0aGUgYXNzdW1wdGlvbiBvZiB0aGUgdmVzdHVyZSBvZiAKbWF0dGVy4oCU4oCY4oCYIHRoZSBpbmNhcm5hdGlvbiA74oCdIHRoZW4gdGhlIHRha2luZyBvZiBodW1hbiAKCgo0OCBUSEUgQ0hSSVNUSUFOIENSRUVELiAKCgpmb3JtLCB0aG91Z2ggc3RpbGwgaW4gaXRzIGhpZ2hlciBwcmluY2lwbGVzIG9ubHk7IHRoZW4gCnRoZSDigJxzdWZmZXJpbmcgdW5kZXIgUG9udGl1cyBQaWxhdGUs4oCdIG9yIGRlc2NlbnQgaW50byAKdGhlIGFzdHJhbCBzZWE7IGFuZCBvbmx5IGFmdGVyIHRoYXQgdGhlIGNydWNpZml4aW9uIG9uIAp0aGUgY3Jvc3Mgb2YgcGh5c2ljYWwgbWF0dGVyLCBpbiB3aGljaCBIZWlzIGdyYXBoaWNhbGx5IApkZXNjcmliZWQgYXMg4oCY4oCc4oCYIGRlYWQgYW5kIGJ1cmllZC7igJ0gCgrigJxXYXMgY3J1Y2lmaWVkLCBkZWFkIGFuZCBidXJpZWQu4oCdIEhlcmUgYWdhaW4gd2UgCmFyZSBmYWNlIHRvIGZhY2Ugd2l0aCBhbiBhbG1vc3QgdW5pdmVyc2FsIG1pc3VuZGVyLSAKc3RhbmRpbmcgd2hvc2UgcHJvcG9ydGlvbnMgaGF2ZSBiZWVuIGNvbG9zc2FsIGFuZCBpdHMgCnJlc3VsdHMgbW9zdCBkaXNhc3Ryb3VzLiBUaGUgYXN0b25pc2hpbmcgZXZvbHV0aW9uIG9mIAphIHBlcmZlY3RseSByZWFzb25hYmxlIGFsbGVnb3J5IGludG8gYW4gYWJzb2x1dGVseSBpbS0gCnBvc3NpYmxlIGJpb2dyYXBoeSBoYXMgaGFkIGEgdmVyeSBzYWQgaW5mbHVlbmNlIHVwb24gCnRoZSBlbnRpcmUgQ2hyaXN0aWFuIENodXJjaCBhbmQgdXBvbiB0aGUgZmFpdGggd2hpY2ggCml0IGhhcyB0YXVnaHQsIGFuZCB0aGUgZW5vcm1vdXMgYW1vdW50IG9mIGRldm90aW9uYWwgCnN5bXBhdGh5IHdoaWNoIGhhcyBiZWVuIHBvdXJlZCBmb3J0aCB0aHJvdWdoIHRoZSAKY2VudHVyaWVzIGluIGNvbm5lY3Rpb24gd2l0aCBhIHN0b3J5IG9mIHBoeXNpY2FsIHN1ZmZlci0gCmluZyB0aGF0IGlzIHdob2xseSBpbWFnaW5hcnkgaXMgcGVyaGFwcyB0aGUgbW9zdCBleC0gCnRyYW9yZGluYXJ5IGFuZCBsYW1lbnRhYmxlIHdhc3RlIG9mIHBzeWNoaWMgZW5lcmd5IGluIAp0aGUgaGlzdG9yeSBvZiB0aGUgd29ybGQuIAoKT25jZSBtb3JlIHdlIGhhdmUgdG8gcmVwZWF0IHRoYXQgbmVpdGhlciB0aGUgQ3JlZWQgCm5vciB0aGUgZ29zcGVscyBoYWQgYmVlbiBvcmlnaW5hbGx5IGludGVuZGVkIHRvIHJlbGF0ZSAKdG8gdGhlIGxpZmUtc3Rvcnkgb2YgdGhlIGdyZWF0IFRlYWNoZXIgQ2hyaXN0LiBCdXQgdGhlIApnb3NwZWwgYWNjb3VudCBhcyBpdCBzdGFuZHMgbm93IGlzIHNvIGV4dHJhb3JkaW5hcnkgYSAKY29uZ2xvbWVyYXRlLCBzbyBpbmV4dHJpY2FibGUgYW4gZW50YW5nbGVtZW50IG9mIAp0aGUgc29sYXIgbXl0aCwgdGhlIENocmlzdC1hbGxlZ29yeSBvZiBpbml0aWF0aW9uIApjb21tb24gdG8gYWxtb3N0IGFsbCByZWxpZ2lvbnMsIGFuZCBhIHRyYWRpdGlvbiBvZiAKdGhlIHJlYWwgc3Rvcnkgb2YgcGFydCBvZiB0aGUgZWFydGgtbGlmZSBvZiBKZXN1cywgdGhhdCBpdCAKd291bGQgYmUgYSB0YXNrIG9mIG5vIG9yZGluYXJ5IGRpZmZpY3VsdHkgYWNjdXJhdGVseSAKdG8gYXBwb3J0aW9uIGl0cyB2YXJpb3VzIGluY2lkZW50cyB0byB0aGVpciByZXNwZWN0aXZlIApTT1VJQ0VTLCAKCgpUSEUgREFURSBPRiBFQVNURVIuIDQ5IAoKClRoZSBjcnVjaWZpeGlvbiBhbmQgdGhlIHJlc3VycmVjdGlvbiwgaG93ZXZlciwgY2xlYXJseSAKYmVsb25nIHRvIHRoZSBDaHJpc3QtYWxsZWdvcnk7IGFuZCB0aGF0IHRoZXkgZG8gc28gCm91Z2h0IHRvIGJlIGV2aWRlbnQgdG8gYWxsIHN0dWRlbnRzIGZyb20gdGhlIHZlcnkgZmFjdCAKdGhhdCB0aGUgZGF0ZSBvZiB0aGVpciBjb21tZW1vcmF0aW9uIGJ5IHRoZSBDaHVyY2ggCmlzIG5vdCBhIGZpeGVkIG9uZSwgYXMgd291bGQgYmUgdGhlIGFubml2ZXJzYXJ5IG9mIAphbnkgYWN0dWFsIGV2ZW50LCBidXQgaXMgbW92YWJsZSBhbmQgZGVwZW5kZW50IHVwb24gCmFzdHJvbm9taWNhbCBjYWxjdWxhdGlvbi4gQSByZWZlcmVuY2UgdG8gdGhlIHByYXllci0gCmJvb2sgd2lsbCBzaG93IHRoYXQgRWFzdGVyIGlzIGNlbGVicmF0ZWQgb24gdGhlIFN1bi0gCmRheSBmb2xsb3dpbmcgdGhlIGRhdGUgb2YgdGhlIG5leHQgZnVsbC1tb29uIGFmdGVyIHRoZSAKdmVybmFsIGVxdWlub3guIAoKTm93IHRoaXMgbWV0aG9kIG9mIGZpeGluZyBhIGRhdGUgd291bGQgYmUgCmdyb3Rlc3F1ZSBpZiBzdXBwb3NlZCB0byBhcHBseSB0byBhIGhpc3RvcmljYWwgYW5uaS0gCnZlcnNhcnksIGFuZCBpcyByZWFzb25hYmx5IGV4cGxpY2FibGUgb25seSB1cG9uIApzb21lIG1vZGlmaWNhdGlvbiBvZiB0aGUgc29sYXIgbXl0aCB0aGVvcnkuIFVuLSAKZG91YnRlZGx5IHRoZXJlIGhhcyBiZWVuIGEgdGVuZGVuY3kgb2YgbGF0ZSB5ZWFycyB0byAKdHVuIHRoYXQgaWRlYSB0byBkZWF0aCwgYW5kIHRvIHNlZSBhIHNvbGFyIG15dGggaW4gCmV2ZXJ5IGZyYWdtZW50IG9mIHByZWhpc3RvcmljIGdvc3NpcCB3aGljaCBoYXBwZW5zIAp0byBoYXZlIGZvdW5kIGEgY2hyb25pY2xlcjsgYnV0IHRoaXMgbXVzdCBub3QgYmxpbmQgCnVzIHRvIHRoZSBmYWN0IHRoYXQgdGhlcmUgaXMgYSBnb29kIGRlYWwgb2YgdHJ1dGggaW4gdGhlIAp0aGVvcnksIGVzcGVjaWFsbHkgd2hlbiB3ZSByZWNvZ25pemUgdGhhdCB0aGUgeWVhcmx5IApjb3Vyc2Ugb2YgdGhlIHN1biBpcyBpdHNlbGYgdXNlZCBhcyBhbiBhbGxlZ29yeSB0byByZW1pbmQgCnRob3NlIHdobyB1bmRlcnN0YW5kIGl0IG9mIHRoZSBncmVhdCBzcGlyaXR1YWwgdHJ1dGhzIAp3aGljaCBpdCBoYXMgc28gbG9uZyBiZWVuIGVtcGxveWVkIHRvIHN5bWJvbGl6ZS4gCgpUaGUgb3J0aG9kb3ggZXhwbGFuYXRpb24gb2YgdGhlIGFycmFuZ2VtZW50IG9mIHRoZSAKY29tbWVtb3JhdGlvbiBvZiBFYXN0ZXIgaXMgc3RhdGVkIHRvIGJlIHRoYXQgYSBncmVhdCAKcG9pbnQgaW4gdGhlIEpld2lzaCBjb250cm92ZXJzeSB0dXJuZWQgb24gdGhlIGNydWNpLSAKZml4aW9uIGhhdmluZyB0YWtlbiBwbGFjZSBhdCB0aGUgcGVyaW9kIG9mIHRoZSBQYXNzLSAKb3ZlciwgYW5kIHNvIGJlaW5nIGVtcGhhc2l6ZWQgYXMgdGhlIHRydWUgUGFzY2hhbCAKc2FjcmlmaWNlOyBhbmQgdGhhdCBzaW5jZSB0aGUgUGFzc292ZXIgZGF5IG1vdmVkIHdpdGggCgoKTGllKSBUSEUgQ0hSSVNUSUFOIENSRUVELiAKCgp0aGUgbW9vbiwgdGhlIGNlbGVicmF0aW9uIG9mIEVhc3RlciBoYWQgdG8gZG8gczAgYWxzbywgClRoaXMgaXMgcXVpdGUgcHJvYmFibGUsIGJ1dCBpdCBpbiBubyB3YXkgaW52YWxpZGF0ZXMgbXkgCmNvbnRlbnRpb24gdGhhdCB0aGUgbWVyZSBmYWN0IHRoYXQgdGhleSBhcmUgbW92YWJsZSAKc2hvd3MgdGhhdCBuZWl0aGVyIHRoZSBQYXNzb3ZlciBub3IgdGhlIEVhc3RlciBmZXN0aXZhbCAKY2FuIGJlIGludGVuZGVkIHRvIGNvbW1lbW9yYXRlIGEgZGVmaW5pdGUgaGlzdG9yaWNhbCAKZXZlbnQgYXQgYWxsLCBvdGhlcndpc2UgdGhleSB3b3VsZCBiZSBjZWxlYnJhdGVkIG9uYSAKZGVmaW5pdGUgYW5uaXZlcnNhcnkuIE9uIHRoZSBjb250cmFyeSwgaXQgZG9lcyB2ZXJ5IApjbGVhcmx5IHNob3cgdGhhdCB0aGUgZmVzdGl2YWwgc28gZml4ZWQgaXMgYW4gYXN0cm9uby0gCm1pY2FsIG9uZSwgY29ubmVjdGVkIGluIHNvbWUgd2F5IHdpdGggdGhlIHdvcnNoaXAgCm9mIHRoZSBoZWF2ZW5seSBib2RpZXMgdXBvbiB3aG9zZSBtb3Rpb24gaXQgZGVwZW5kcy4gCgpBcyBhIG1hdHRlciBvZiBmYWN0IHRoZSBwYXJ0IG9mIHRoZSBDcmVlZCB3aGljaCB3ZSAKYXJlIG5vdyBjb25zaWRlcmluZyBpcyBzaW1wbHkgcXVvdGVkIGZyb20gdGhlIHJ1YnJpYyAKb2YgdGhlIG9sZCBFZ3lwdGlhbiBpbml0aWF0aW9uLCB3aGljaCBpcyBpbiB0dXJuIGludGVuZGVkIAp0byBpbGx1c3RyYXRlIHRoZSBsYXRlciBzdGFnZXMgb2YgdGhlIGRlc2NlbnQgb2YgdGhlIG1vbi0gCmFkaWMgZXNzZW5jZSBpbnRvIG1hdHRlci4gTGV0IHVzIGNvbnNpZGVyIGZpcnN0IGhvdyAKdGhpcyBkZXNjZW50IGNhbWUgdG8gYmUgc3ltYm9saXplZCBhcyBhIGNydWNpZml4aW9uLCAKYW5kIHRoZW4gaG93IGl0IHdhcyByZXByZXNlbnRlZCBiZWZvcmUgdGhlIGV5ZXMgb2YgdGhlIApuZW9waHl0ZXMgaW4gYW5jaWVudCBLaGVtLiAKClRvIHVuZGVyc3RhbmQgdGhpcyBjbGVhcmx5IHdlIG11c3QgZmlyc3QgZW5kZWF2b3VyIAp0byBhc2NlcnRhaW4gd2hhdCB3YXMgdGhlIG1lYW5pbmcgYXR0YWNoZWQgdG8gdGhlIAplbWJsZW0gb2YgdGhlIGNyb3NzIGluIHRoZSBzYWNyZWQgbXlzdGVyaWVzIG9mIGFuLSAKdGlxdWl0eS4gTW9zdCBvZiB1cyB3ZXJlIGJyb3VnaHQgdXAgaW4gdGhlIGJlbGllZiAKdGhhdCB0aGUgY3Jvc3Mgd2FzIGFuIGV4Y2x1c2l2ZWx5IENocmlzdGlhbiBzeW1ib2wsIAphbmQgaXQgbWF5IGJlIHRoYXQgdGhlcmUgYXJlIHN0aWxsIHNvbWUgcGVvcGxlIGxlZnQgCndobyBob2xkIHRvIHRoYXQgdmlldy4gSWYgc28sIGl0IGlzIG9mIGNvdXJzZSBzaW1wbHkgCmJlY2F1c2UgaXQgaGFzIG5ldmVyIG9jY3VycmVkIHRvIHRoZW0gdG8gaW52ZXN0aWdhdGUgCnRoZSBxdWVzdGlvbiA7IGZvciBpZiB0aGV5IHRvb2sgdXAgdGhlIG1hdHRlciBhbmQgZXgtIAphbWluZWQgdGhlIGV2aWRlbmNlIHRoZXkgY291bGQgbm90IGZhaWwgdG8gYmUgc3RydWNrIAp3aXRoIHRoZSByZW1hcmthYmxlIHVuaXZlcnNhbGl0eSBvZiB0aGUgdXNlIG9mIHRoaXMgc2lnbiwgCgoKUFJFLUNIUklTVElBTiBDUk9TU0VTLiA1MSAKCgpBbiBleGhhdXN0aXZlIGNhdGFsb2d1ZSBvZiB0aGUgcGxhY2VzIGluIHdoaWNoIHRoZSAKY3Jvc3Mgb2NjdXJzIGJlZm9yZSB0aGUgQ2hyaXN0aWFuIGVyYSB3b3VsZCBtYWtlIGEgCnJlc3BlY3RhYmxlIGJvb2sgaW4gaXRzZWxmLCBidXQgaW4gZ2xhbmNpbmcgb3ZlciBzb21lIApvZiB0aGUgbW9kZXJuIHdvcmtzIG9uIHRoZSBzdWJqZWN0IEkgc2VlIHRoYXQgZXZpZGVuY2UgCmlzIGFkZHVjZWQgb2YgaXRzIHVzZSBpbiBvbmUgb3Igb3RoZXIgb2YgaXRzIGZvcm1zIGluIAphbmNpZW50IEVneXB0LCBhdCBOaW5ldmVoLCBhbW9uZyB0aGUgUGhvZW5pY2lhbnMgYXQgCkdvenpvLCBhbW9uZyB0aGUgRXRydXNjYW5zIGFuZCB0aGUgcHJlaGlzdG9yaWMgcmFjZSAKd2hvIGluaGFiaXRlZCBJdGFseSBiZWZvcmUgdGhlIEV0cnVzY2FucyBhcnJpdmVkLCB1cG9uIAp0aGUgcG90dGVyeSBvZiB0aGUgcHJpbWl0aXZlIGxha2UtZHdlbGxlcnMsIGFtaWQgdGhlIApydWlucyBvZiBQYWxlbnF1ZSwgaW4gdGhlIGVhcmxpZXN0IHJlbWFpbnMgeWV0IGRpcy0gCmNvdmVyZWQgb2YgYW5jaWVudCBQZXJ1LCBJbmRpYSwgQ2hpbmEsIEphcGFuLCBDb3JlYSwgClRpYmV0LCBCYWJ5bG9uaWEsIEFzc3lyaWEsIENoYWxkemEsIFBlcnNpYSwgUGhjZW5pLSAKY2lhLCBBcm1lbmlhLCBBbGdlcmlhLCBBc2hhbnRpLCBDeXBydXMsIFJob2RlcywgYW5kIAphbW9uZyB0aGUgcHJlaGlzdG9yaWMgaW5oYWJpdGFudHMgb2YgQnJpdGFpbiwgRnJhbmNlLCAKR2VybWFueSBhbmQgQW1lcmljYeKAlGEgbGlzdCB3aGljaCwgcGFydGlhbCBhbmQgaW4tIApjb21wbGV0ZSBhcyBpdCBpcywgbWlnaHQgd2VsbCBhc3RvbmlzaCB0aGUgYWR2b2NhdGVzIApvZiB0aGUgZXhjbHVzaXZlbHkgQ2hyaXN0aWFuIHRoZW9yeSBvZiB0aGUgY3Jvc3Mgd2hpY2ggCnByZXZhaWxlZCBpbiB0aGUgZGF5cyBvZiBvdXIgeW91dGguIAoKVGhlIG9ubHkgZm9ybSBvZiB0aGlzIHN5bWJvbCB3aGljaCBpcyBnZW5lcmFsbHkgCmFzc29jaWF0ZWQgd2l0aCBFZ3lwdCBpcyB0aGUgY3J1eCBhbnNhdGEsIG9yIGhhbmRsZWQgCmNyb3NzLCBidXQgaXQgaXMgcXVpdGUgYSBtaXN0YWtlIHRvIHN1cHBvc2UgdGhhdCB0aGUgCmFuY2llbnQgaW5oYWJpdGFudHMgb2YgS2hlbSB3ZXJlIHVuYWNxdWFpbnRlZCB3aXRoIAp0aGUgb3RoZXIgdmFyaWV0aWVzLCBmb3IgYm90aCBHcmVlaywgTGF0aW4gYW5kIE1hbHRlc2UgCmNyb3NzZXMsIGFzIHdlbGwgYXMgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBzdmFzdGlrYSwgYXJlIAp0byBiZSBmb3VuZCBhbW9uZyB0aGUgcmVsaWNzIHRoYXQgdGhleSBoYXZlIGxlZnQgdG8gdXMuIApJIGhhZCB0aGUgcGxlYXN1cmUgaW4gMTg4NCBvZiBnb2luZyBvdmVyIHRoZSBtdXNldW0gCm9mIEVneXB0aWFuIGFudGlxdWl0aWVzIGF0IEJvdWxhayBpbiB0aGUgY29tcGFueSBvZiAKTWFkYW1lIEJsYXZhdHNreSBhbmQgdW5kZXIgdGhlIGd1aWRhbmNlIG9mLiBpdHMgCmxlYXJuZWQgY3VyYXRvciwgTS4gTWFzcGVybywgYW5kIEkgd2VsbCByZW1lbWJlciAKCgrCpzIgVEhFIENIUklTVElBTiBDUkVFRC4gCgoKdGhlIGludGVyZXN0IHdpdGggd2hpY2ggSSBub3RpY2VkIGFtb25nIHRoZSBjb250ZW50cyAKb2YgYSBjYXNlIG9mIHRyaW5rZXRzIGF0dHJpYnV0ZWQgdG8gb25lIG9mIHRoZSB2ZXJ5IAplYXJsaWVzdCBkeW5hc3RpZXMgc2V2ZXJhbCBiZWF1dGlmdWxseSBjdXQgY29ybmVsaWFuIHJlLSAKcHJlc2VudGF0aW9ucyBvZiB0aGUgY3Jvc3MgcmlzaW5nIG91dCBvZiB0aGUgaGVhcnQsIApleGFjdGx5IHNpbWlsYXIgdG8gdGhlIGxpdHRsZSBjaGFybXMgb2YgdGhhdCBzaGFwZSAKd2hpY2ggbWF5IGJlIGJvdWdodCBhdCBhIENhdGhvbGljIHNob3AgaW4gTG9uZG9uIAppbiB0aGUgbmluZXRlZW50aCBjZW50dXJ5LiAKClRoZSBtb3N0IHdpZGVseSBzcHJlYWQgb2YgdGhlIGRlcml2YXRpdmVzIG9mIHRoZSAKc2ltcGxlIGNyb3NzIGlzIHBlcmhhcHMgdGhlIHN2YXN0aWthLCB3aGljaCBpcyB0byBiZSAKZm91bmQsIEkgYmVsaWV2ZSwgaW4gZXZlcnkgb25lIG9mIHRoZSBjb3VudHJpZXMgbWVuLSAKdGlvbmVkIGFib3ZlLiBJdCBoYXMgYmVlbiBnZW5lcmFsbHkgc3VwcG9zZWQgdG8gYmUgCmlkZW50aWNhbCB3aXRoIHRoZSBoYW1tZXIgb2YgVGhvciwgYnV0IHRoZXJlIHNlZW1zIApzb21lIHJlYXNvbiB0byBiZWxpZXZlIHRoYXQgdGhlIGxhdHRlciBzaWduIHdhcyBvcmlnaW4tIAphbGx5IG1hZGUgc2ltcGx5IGluIHRoZSBzaGFwZSBvZiB0aGUgbGV0dGVyIFQuIEF0IGFueSAKcmF0ZSBpdCBpcyBjZXJ0YWluIHRoYXQgd2hlbiwgYXMgS2luZyBPbGFmIHdhcyBrZWVwaW5nIApDaHJpc3RtYXMgYXQgRHJvbnRoZWltLCAKCgpP4oCZZXIgaGlzIGRyaW5raW5nLWhvcm4gdGhlIHNpZ24gCkhlIG1hZGUgb2YgdGhlIGNyb3NzIGRpdmluZSAKQXMgaGUgZHJhbmssIGFuZCBtdXR0ZXJlZCBoaXMgcHJheWVycywgCkJ1dCB0aGUgQmVyc2Vya3MgZXZlcm1vcmUgCk1hZGUgdGhlIHNpZ24gb2YgdGhlIGhhbW1lciBvZiBUaG9yIApPdmVyIHRoZWlyc+KAlCAKdGhleSB3ZXJlIGluIHJlYWxpdHkgdXNpbmcgc3ltYm9scyBwcmFjdGljYWxseSBpZGVudGljYWwuIApUaGUgc3Zhc3Rpa2EgYWxzbyBhcHBlYXJzIG9jY2FzaW9uYWxseSBpbiBsYXRlciBDaHJpc3RpYW4gCnN5bWJvbG9neSA7IGZvciBleGFtcGxlLCBpdCBtYXkgYmUgc2VlbiBvcm5hbWVudGluZyAKdGhlIGhlbSBvZiB0aGUgY2hhc3VibGUgb2YgYSBtZWRpZXZhbCBiaXNob3AgaW4gYSBmaW5lIApmdWxsLWxlbmd0aCBmaWd1cmUgc2N1bHB0dXJlZCB1cG9uIG9uZSBvZiB0aGUgdG9tYnMgaW4gCldpbmNoZXN0ZXIgQ2F0aGVkcmFsLiAKVGhlIFRoZW9zb3BoaWNhbCBzdHVkZW50IHNob3VsZCB0YWtlIGNhcmUgdG8gYXZvaWQgCgoKdGhlIG1pc3Rha2UsIHNvIG9mdGVuIG1hZGUgYnkgdGhlIG1vcmUgc3VwZXJmaWNpYWwgCgoKUEhBTExJQ0lTTSBBIERFTFVTSU9OLiA1MyAKCgpvYnNlcnZlciwgb2YgY29uZnVzaW5nIHRoZSBtZWFuaW5nIG9mIGFsbCB0aGVzZSB2YXJpb3VzIApmb3JtcyBvZiB0aGUgY3Jvc3Mgc3ltYm9sLiBFYWNoIG9mIHRoZW3igJR0aGUgR3JlZWssIAp0aGUgTGF0aW4sIHRoZSBNYWx0ZXNlLCB0aGUg4oCYbCdhdSwgdGhlIFN2YXN0aWth4oCUaGFzIGl0cyAKb3duIHBhcnRpY3VsYXIgc2lnbmlmaWNhdGlvbiwgYW5kIGlzIGJ5IG5vIG1lYW5zIHRvIGJlIApjb25mb3VuZGVkIHdpdGggYW55IG90aGVyLCBhcyB3aWxsIHByZXNlbnRseSBiZSBzZWVuLiAKClRoZXJlIGlzIG9uZSBwYXJ0aWN1bGFybHkgZ3Jvc3MgZGVsdXNpb24sIHVuaGFwcGlseSAKd2lkZWx5IHByZXZhbGVudCBpbiBjb25uZWN0aW9uIHdpdGggdGhpcyBzdWJqZWN0LCBmcm9tIAp3aGljaCB3ZSBvdWdodCBkZWZpbml0ZWx5IHRvIGNsZWFyIG91ciBtaW5kcyBiZWZvcmUgd2UgCmNhbiBob3BlIHRvIGNvbnNpZGVyIGl0IHdpdGggcHJvZml04oCUYW5kIHRoYXQgaXMgdGhlIApkZWx1c2lvbiBvZiBwaGFsbGljaXNtLiBNYW55IHdyaXRlcnMgYXBwZWFyIHRvIGJlIAphYnNvbHV0ZWx5IG9ic2Vzc2VkIGJ5IHRoaXMgdW5jbGVhbiBpZGVhLCBhbmQgY2FuIHNlZSAKbm90aGluZyBidXQgcGhhbGxpYyBlbWJsZW1zIGluIGFsbCB0aGUgaG9saWVzdCBzeW1ib2xzIApvZiBhbnRpcXVpdHkgOyB3aGV0aGVyIGl0IGJlIHRoZSBjcm9zcywgdGhlIHRyaWFuZ2xlLCB0aGUgCmNpcmNsZSwgdGhlIHB5cmFtaWQsIHRoZSBvYmVsaXNrLCB0aGUgZGFnb2JhLCBvciB0aGUgCmxvdHVzLCB0byB0aGVpciBwcnVyaWVudCBpbWFnaW5hdGlvbiBpdCBjYW4gaGF2ZSBidXQgb25lIApvYnNjZW5lIHNpZ25pZmljYXRpb24uIAoKSGFwcGlseSBvY2N1bHQgaW52ZXN0aWdhdGlvbiBhc3N1cmVzIHVzIChhcyBpbmRlZWQgCmNvbW1vbi1zZW5zZSB3b3VsZCBuYXR1cmFsbHkgc3VnZ2VzdCBldmVuIHdpdGhvdXQgCnN1Y2ggYWlkKSB0aGF0IHRoaXMgdW5wbGVhc2FudCB0aGVvcnkgb2YgdGhlIG9yaWdpbiBvZiAKYWxsIHJlbGlnaW9uIGlzIGFic29sdXRlbHkgZGV2b2lkIG9mIGZvdW5kYXRpb24uIEluIApldmVyeSBjYXNlIHlldCBleGFtaW5lZCBpdCBoYXMgYmVlbiBmb3VuZCB0aGF0IGluIHRoZSAKZWFybGllciBhbmQgcHVyZXIgc3RhZ2VzIG9mIGFueSBmYWl0aCBub25lIGJ1dCB0aGUgc3BpcmktIAp0dWFsIG1lYW5pbmcgd2FzIGV2ZXIgdGhvdWdodCBvZiBpbiBjb25uZWN0aW9uIHdpdGggCml0cyB2YXJpb3VzIHN5bWJvbHMsIGFuZCB0aGF0IHdoZXJlIGNyZWF0aW9uIHdhcyBzdWctIApnZXN0ZWQgaXQgd2FzIGFsd2F5cyB0aGUgY3JlYXRpb24gb2YgaWRlYXMgYnkgdGhlIGRpdmluZSAKbWpwZC4gV2hlbmV2ZXIgb24gdGhlIG90aGVyIGhhbmQgcGhhbGxpYyBlbWJsZW1zIAoKfmFuZCBjZXJlbW9uaWVzIG9mIGFuIGluZGVjZW50IG5hdHVyZSBhcmUgZm91bmQgdG8gYmUgCmFzc29jaWF0ZWQgd2l0aCBhIHJlbGlnaW9uLCBpdCBtYXkgYmUgdGFrZW4gYXMgYSBzdXJlIAoKCnNpZ24gb2YgdGhlIGRlZ2VuZXJhY3kgb2YgdGhhdCByZWxpZ2lvbuKAlGFuIGluZGljYXRpb24gCgoKNTQgVEhFIENIUklTVElBTiBDUkVFRC4gCgoKdGhhdCwgYXQgYW55IHJhdGUgaW4gdGhlIGNvdW50cnkgd2hlcmUgc3VjaCBlbWJsZW1zIAphbmQgcHJhY3RpY2VzIG1heSBiZSBzZWVuLCB0aGUgcHJpc3RpbmUgcHVyaXR5IG9mIHRoZSAKZmFpdGggaGFzIGJlZW4gbG9zdCBhbmQgaXRzIHNwaXJpdHVhbCBwb3dlciBpcyByYXBpZGx5IApwYXNzaW5nIGF3YXkuIAoKTmV2ZXIgdW5kZXIgYW55IGNpcmN1bXN0YW5jZXMgYXJlIHRoZSBwaGFsbGljaXNtIAphbmQgdGhlIGluZGVjZW5jeSBhIHBhcnQgb2YgdGhlIG9yaWdpbmFsIGNvbmNlcHRpb24gb2YgYSAKZ3JlYXQgcmVsaWdpb24sIGFuZCB0aGUgbW9kZXJuIHRoZW9yeeKAlHRoYXQgYWxsIHN5bWJvbHMgCmhhZCBwcmltYXJpbHkgc29tZSBvYnNjZW5lIG1lYW5pbmcgaW4gdGhlIG1pbmRzIG9mIAp0aGUgc2F2YWdlcyB3aG8gaW52ZW50ZWQgdGhlbSwgYW5kIHRoYXQgYXMgaW4gdGhlIApjb3Vyc2Ugb2YgYWdlcyBhIG5hdGlvbiBldm9sdmVkIHRvIGEgaGlnaGVyIGxldmVsIGl0IGJlLSAKY2FtZSBhc2hhbWVkIG9mIHRoZXNlIGNydWRlciBpZGVhcyBhbmQgaW52ZW50ZWQgZmFyLSAKZmV0Y2hlZCBzcGlyaXR1YWwgaW50ZXJwcmV0YXRpb25zIHRvIHZlaWwgdGhlaXIgaW1tb2Rlc3R5IArigJRpcyBleGFjdGx5IHRoZSByZXZlcnNlIG9mIHRoZSB0cnV0aC4gVGhlIGdyZWF0IHNwaXJpLSAKdHVhbCB0cnV0aCBhbHdheXMgY29tZXMgZmlyc3QsIGFuZCBpdCBpcyBvbmx5IGFmdGVyIGxvbmcgCnllYXJzLCB3aGVuIHRoYXQgaGFzIGJlZW4gZm9yZ290dGVuLCB0aGF0IGEgZGVnZW5lcmF0ZSAKcmFjZSBlbmRlYXZvdXJzIHRvIGF0dGFjaCBhIGdyb3NzZXIgc2lnbmlmaWNhdGlvbiB0byBpdHMgCnN5bWJvbHMuIAoKUHV0dGluZyBhc2lkZSB0aGVuIGFsbCBsYXRlciBtaXNyZXByZXNlbnRhdGlvbnMsIHdoYXQgCm1lYW5pbmcgd2FzIG9yaWdpbmFsbHkgY29udmV5ZWQgYnkgdGhlIHdvcmxkLXdpZGUgCnN5bWJvbCBvZiB0aGUgY3Jvc3M/IFBhcnQgYXQgYW55IHJhdGUgb2YgdGhlIGFuc3dlciAKaXMgZ2l2ZW4gdG8gdXMgYnkgTWFkYW1lIEJsYXZhdHNreSBoZXJzZWxmIGluIHRoZSAKcHJvZW0gdG8gVGhlIFNlY3JldCBEb2N0cmluZSwgd2hlbiBzaGUgZGVzY3JpYmVzIHRoZSAKc2lnbnMgaW1wcmVzc2VkIHVwb24gdGhlIHN1Y2Nlc3NpdmUgbGVhdmVzIG9mIGEgY2VydGFpbiAKYXJjaGFpYyBtYW51c2NyaXB0LiBJdCB3aWxsIGJlIHJlbWVtYmVyZWQgdGhhdCBmaXJzdCAKb2YgYWxsIHRoZXJlIGlzIHRoZSBwbGFpbiB3aGl0ZSBjaXJjbGUgd2hpY2ggaXMgdW5kZXJzdG9vZCAKdG8gdHlwaWZ5IHRoZSBBYnNvbHV0ZSA7IGluIHRoYXQgYXBwZWFycyB0aGUgY2VudHJhbCBzcG90LCAKdGhlIHNpZ24gdGhhdCB0aGUgRmlyc3QgTG9nb3MgaGFzIGVudGVyZWQgdXBvbiBhIGN5Y2xlIApvZiBhY3Rpdml0eSA7IHRoZSBzcG90IGJyb2FkZW5zIGludG8gYSBsaW5lIGRpdmlkaW5nIHRoZSAKY2lyY2xlIGludG8gdHdvIHBhcnRzLCB0aHVzIHN5bWJvbGl6aW5nIHRoZSBkdWFsIGFzcGVjdCAKCgpUSEUgU1ZBU1RJS0EuIDU1IAoKCm9mIHRoZSBTZWNvbmQgTG9nb3MgYXMgbWFsZS1mZW1hbGUsIEdvZC1tYW4sIHNwaXJpdC0gCm1hdHRlciA7IGFuZCB0aGVuLCB0byBzaG93IHRoZSBuZXh0IHN0YWdlLCB0aGlzIGRpdmlkaW5nIApsaW5lIDFzIGNyb3NzZWQgYnkgYW5vdGhlciwgYW5kIHdlIGhhdmUgdGhlIGhpZXJvZ2x5cGggCm9mIHRoZSBUaGlyZCBMb2dvc+KAlEdvZCB0aGUgSG9seSBHaG9zdCwgdGhlIExvcmQsIHRoZSAKTGlmZS1naXZlci4gCgpCdXQgYWxsIHRoZXNlIHN5bWJvbHMsIGJlIGl0IG5vdGVkLCBhcmUgc3RpbGwgd2l0aGluIAoKdGhlIGNpcmNsZSwgYW5kIHNvIGFyZSBlbWJsZW1zIG9mIGRpZmZlcmVudCBzdGFnZXMgaW4gdGhlIAp1bmZvbGRpbmcgb2YgdGhlIFRyaXBsZSBMb2dvc+KAlG5vdCBhcyB5ZXQgb2YgSGlzIG1hbmktIApmZXN0YXRpb24uIFdoZW4gaW4gdGhlIGZ1bG5lc3Mgb2YgdGltZSBIZSBwcmVwYXJlcyAKZm9yIHRoaXMgZnVydGhlciBkZXNjZW50LCB0aGUgc3ltYm9sIGNoYW5nZXMsIHVzdWFsbHkgaW4gCm9uZSBvciBvdGhlciBvZiB0d28gd2F5cy4gU29tZXRpbWVzIHRoZSBjaXJjbGUgZmFsbHMgCmF3YXkgYWx0b2dldGhlciwgYW5kIHdlIGhhdmUgdGhlbiB0aGUgZXZlbi1hcm1lZCAKR3JlZWsgY3Jvc3MgYXMgdGhlIHNpZ24gb2YgdGhlIFRoaXJkIExvZ29zIGF0IHRoZSBjb20tIAptZW50IG9mIGEgbWFoYWthbHBhLCBvciBncmVhdCBjeWNsZSwgd2l0aCBIaXMgY3JlYXRpdmUgCnBvd2VyIGhlbGQgaW4gcmVhZGluZXNzIGZvciBleGVyY2lzZSwgYnV0IG5vdCBhcyB5ZXQgCmV4ZXJjaXNlZC4gClwvIEFsb25nIHRoaXMgbGluZSBvZiBzeW1ib2xpc20gdGhlIG5leHQgc3RlcCBpcyB0aGUgCnN2YXN0aWthLCB3aGljaCBhbHdheXMgaW1wbGllcyBtb3Rpb27igJR0aGUgY3JlYXRpdmUgCnBvd2VyIGluIGFjdGl2aXR5IDsgZm9yIHRoZSBsaW5lcyBhZGRlZCBhdCByaWdodCBhbmdsZXMgdG8gCnRoZSBhcm1zIG9mIHRoZSBjcm9zcyBhcmUgc3VwcG9zZWQgdG8gcmVwcmVzZW50IGZsYW1lcyAKc3RyZWFtaW5nIGJhY2t3YXJkcyBhcyB0aGUgY3Jvc3Mgd2hpcmxzIHJvdW5kLCBhbmQgCnRodXMgdGhleSBkb3VibHkgaW5kaWNhdGUgdGhlIGV0ZXJuYWwgYWN0aXZpdHkgb2YgdGhlIApVbml2ZXJzYWwgTGlmZSwgZmlyc3QgYnkgdGhlIGNlYXNlbGVzcyBvdXRwb3VyaW5nIG9mIHRoZSAKZmlyZSBmcm9tIHRoZSBjZW50cmUgdGhyb3VnaCB0aGUgYXJtcywgYW5kIHNlY29uZGx5IGJ5IAp0aGUgcm90YXRpb24gb2YgdGhlIGNyb3NzIGl0c2VsZi4gQW5vdGhlciBtZXRob2Qgb2YgZXgtIApwcmVzc2luZyB0aGUgc2FtZSBpZGVhIGlzIHNlZW4gaW4gdGhlIE1hbHRlc2UgY3Jvc3MsIGluIAp3aGljaCB0aGUgYXJtcyBldmVyIHdpZGVuaW5nIG91dCBhcyB0aGV5IHJlY2VkZSBmcm9tIAp0aGUgY2VudHJlIG9uY2UgbW9yZSB0eXBpZnkgdGhlIGRpdmluZSBlbmVyZ3kgc3ByZWFkLSAKaW5nIGl0c2VsZiBmb3J0aCBpbiBldmVyeSBkaXJlY3Rpb24gb2Ygc3BhY2UsIAoKCjU2IFRIRSBDSFJJU1RJQU4gQ1JFRUQuIC8gCgoKU29tZXRpbWVzIGluc3RlYWQgb2YgZHJvcHBpbmcgdGhlIGNpcmNsZSBhbHRvZ2V0aGVyIAp0aGUgY3Jvc3Mgc2ltcGx5IGV4dGVuZHMgaXRzZWxmIG91dHNpZGUgaXQuIFRoZW4gd2UgZ2V0IAp0aGUgZXF1YWwtYXJtZWQgY3Jvc3Mgd2l0aCB0aGUgc21hbGwgY2lyY2xlIGluIHRoZSBtaWRzdCAKb2YgaXQsIGFuZCBpbiB0aGUgbmV4dCBzdGFnZSB0aGF0IGNpcmNsZSBibG9zc29tcyBmb3J0aCAKaW50byB0aGUgcm9zZeKAlGFub3RoZXIgd2VsbC1rbm93biBsaWZlLWVtYmxlbeKAlGFuZCAKc28gd2UgaGF2ZSB0aGUgZmFtaWxpYXIgc3ltYm9sIGZyb20gd2hpY2ggdGhlIFJvc2ktIApjcnVjaWFucyB0YWtlIHRoZWlyIG5hbWUuIEFnYWluLCB0aGUgY3Jvc3Mgbm90IG9ubHkgCmJlYXJzIHRoZSBteXN0aWMgcm9zZSBpbiBpdHMgY2VudHJlLCBidXQgaXRzZWxmIGJlY29tZXMgCnJvc3kgaW4gY29sb3VyLCBzaG93aW5nIHRoYXQgdGhhdCB3aGljaCBpcyBwb3VyZWQgb3V0IApmcm9tIGl0IGFuZCB0aHJvdWdoIGl0IGlzIGV2ZXIgdGhlIGZpcmUgb2YgdGhlIGRpdmluZSAKbG92ZS4gCgpOYXR1cmFsbHkgdGhlIGdyZWF0IG9jY3VsdCBydWxlLCDigJhBcyBhYm92ZSwgc28gYmVsb3cs4oCd4oCZIApob2xkcyBnb29kIGluIHRoaXMgY29ubmVjdGlvbiBhbHNvLCBhbmQgd2l0aCB2ZXJ5IHNsaWdodCAKdmFyaWF0aW9uIHRoZXNlIHN5bWJvbHMgbWF5IGJlLCBhbmQgc29tZXRpbWVzIGFyZSwgCmVtcGxveWVkIHRvIGluZGljYXRlIG11Y2ggbG93ZXIgc3RhZ2VzIG9mIGV2b2x1dGlvbiA7IApoZW5jZSBNYWRhbWUgQmxhdmF0c2t54oCZcyByZWZlcmVuY2UgdG8gdGhlIHZhcmlvdXMgCnJhY2VzIG9mIG1lbiBpbiBoZXIgZXhwbGFuYXRpb24gb2YgdGhlbS4gT25lIGNhbiAKZWFzaWx5IHNlZSBob3cgb3V0IG9mIGEgbWlzdW5kZXJzdGFuZGluZyBvZiB0aGlzIGxvd2VyIAppbnRlcnByZXRhdGlvbiwgYW5kIGl0cyBhc3NvY2lhdGlvbiBhdCBvbmUgc3RhZ2Ugd2l0aCB0aGUgCnNlcGFyYXRpb24gb2YgdGhlIHNleGVzLCB0aGUgdW5zYXZvdXJ5IGlkZWFzIG9mIHBoYWxsaS0gCmNpc20gd291bGQgdGFrZSB0aGVpciByaXNlLiBJbmRlZWQsIHRoZSBrbm93bGVkZ2Ugb2YgCnRoZSB0cnVlIG1lYW5pbmcgb2YgdGhlIEdyZWVrIGNyb3NzIHNlZW1zIHRvIGhhdmUgYmVlbiAKbG9zdCB0byBwdWJsaWMgdmlldyBhdCBhdmVyeSBlYXJseSBwZXJpb2Q7IGl0cyBjb25uZWMtIAp0aW9uIHdpdGggdGhlIFRoaXJkIExvZ29zIGhhcyByZW1haW5lZCBmb3IgYWdlcyAKa25vd24gdG8gb2NjdWx0aXN0cyBvbmx5LCBhbmQgc3VwZXJmaWNpYWwgc3R1ZGVudHMgaGF2ZSAKYWxtb3N0IGludmFyaWFibHkgY29uZnVzZWQgaXQgd2l0aCB0aGUgTGF0aW4gY3Jvc3Mgb2YgCnRoZSBTZWNvbmQgTG9nb3MsIHRoZSBkZXJpdmF0aW9uIG9mIHdoaWNoIGluIHJlYWxpdHkgaXMgCmVudGlyZWx5IGRpZmZlcmVudC4gCgpJbiB0cmFjaW5nIHRoZSBzeW1ib2xpc20gb2YgdGhpcyBMYXRpbiBjcm9zcywgb3IgCgoKVEhFIFRSVUUgU0FDUklGSUNFLiA1NyAKCgpyYXRoZXIgb2YgdGhlIGNydWNpZml4LCBiYWNrIGludG8gdGhlIG5pZ2h0IG9mIHRpbWUsIHRoZSAKaW52ZXN0aWdhdG9ycyBoYWQgZXhwZWN0ZWQgdG8gZmluZCB0aGUgZmlndXJlIGRpc2FwcGVhciwgCmxlYXZpbmcgYmVoaW5kIHdoYXQgdGhleSBzdXBwb3NlZCB0byBiZSB0aGUgZWFybGllciAKY3Jvc3MtZW1ibGVtLiBBcyBhIG1hdHRlciBvZiBmYWN0IGV4YWN0bHkgdGhlIHJldmVyc2UgCnRvb2sgcGxhY2UsIGFuZCB0aGV5IHdlcmUgc3RhcnRsZWQgdG8gZmluZCB0aGF0IGV2ZW50dS0gCmFsbHkgdGhlIGNyb3NzIGRyb3BzIGF3YXksIGxlYXZpbmcgb25seSB0aGUgZmlndXJlIHdpdGggCnVwbGlmdGVkIGFybXMuIE5vIGxvbmdlciBpcyB0aGVyZSBhbnkgdGhvdWdodCBvZiBwYWluIApvciBzb3Jyb3cgY29ubmVjdGVkIHdpdGggdGhhdCBmaWd1cmUsIHRob3VnaCBzdGlsbCBpdCAKdGVsbHMgb2Ygc2FjcmlmaWNlOyByYXRoZXIgaXMgaXQgbm93IHRoZSBzeW1ib2wgb2YgdGhlIApwdXJlc3Qgam95IHRoZSB3b3JsZCBjYW4gaG9sZOKAlHRoZSBqb3kgb2YgZnJlZWx5IGdpdmluZyAK4oCUZm9yIGl0IHR5cGlmaWVzIHRoZSBEaXZpbmUgTWFuIHN0YW5kaW5nIGluIHNwYWNlIAp3aXRoIGFybXMgdXByYWlzZWQgaW4gYmxlc3NpbmcsIGNhc3RpbmcgYWJyb2FkIEhpcyAKZ2lmdHMgdG8gYWxsIGh1bWFuaXR5LCBwb3VyaW5nIGZvcnRoIGZyZWVseSBvZiBIaW1zZWxmIAppbiBhbGwgZGlyZWN0aW9ucywgZGVzY2VuZGluZyBpbnRvIHRoYXQg4oCY4oCYIGRlbnNlIHNlYeKAmeKAneKAmSBvZiAKbWF0dGVyLCB0byBiZSBjcmliYmVkLCBjYWJpbmVkIGFuZCBjb25maW5lZCB0aGVyZWluLCBpbiAKb3JkZXIgdGhhdCB0aHJvdWdoIHRoYXQgZGVzY2VudCB3ZSBtYXkgY29tZSBpbnRvIApiZWluZy4gCgpBIHNhY3JpZmljZSwgdHJ1bHkgKGF0IGxlYXN0IGZyb20gb3VyIHBvaW50IG9mIHZpZXcpLCAKeWV0IHdpdGggbm8gdGhvdWdodCBvZiBzdWZmZXJpbmcsIGJ1dCBvbmx5IG9mIHRyYW5zLSAKY2VuZGVudCBqb3kuIEZvciB0aGF0IGlzIHRoZSBlc3NlbmNlIG9mIHRoZSBsYXcgb2YgCnNhY3JpZmljZSDigJR0aGUgbGF3IHdoaWNoIG1vdmVzIHRoZSB3b3JsZHMgZXZlbiAKZG93biBoZXJlLiBTbyBsb25nIGFzIGFueSB0aG91Z2h0IG9mIHBhaW4gaXMgCmNvbm5lY3RlZCB3aXRoIGl0LCB0aGUgc2FjcmlmaWNlIGlzIG5vdCBwZXJmZWN0OyBzbyAKbG9uZyBhcyBhIG1hbiBpcyBmb3JjaW5nIGhpbXNlbGYgdG8gZG8gdGhhdCB3aGljaCAKaGUgd291bGQgcmF0aGVyIG5vdCBkbywgaGUgaXMgYnV0IG9uIHRoZSB3YXkgdG93YXJkcyAKdGhlIGZ1bGZpbGxpbmcgb2YgdGhlIGdyZWF0IGxhdy4gQnV0IHdoZW4gaGUgZ2l2ZXMgCmhpbXNlbGYgZnVsbHkgYW5kIGZyZWVseSBiZWNhdXNlLCBoYXZpbmcgb25jZSBzZWVuIAp0aGUgZ2xvcnkgYW5kIHRoZSBiZWF1dHkgb2YgdGhlIEdyZWF0IFNhY3JpZmljZSwgdGhlcmUgCmlzIGZvciBoaW0gbm8gb3RoZXIgY291cnNlIHBvc3NpYmxlIGluIHRoZSB0aHJlZSB3b3JsZHMgCgoKdyAKCgo1OCBUSEUgQ0hSSVNUSUFOIENSRUVELiAKCgpidXQgdG8gam9pbiBoaW1zZWxmIHdpdGggaXQsIGhvd2V2ZXIgZmFyIGF3YXksIGhvd2V2ZXIgCmZlZWJseSBhbmQgaW1wZXJmZWN0bHkgOyB3aGVuIGhlIGdpdmVzIGhpbXNlbGYgd2l0aG91dCAKZXZlciB0aGlua2luZyBvZiBwYWluIG9yIHRyb3VibGXigJRpbmRlZWQsIHdpdGhvdXQgYW55IAp0aG91Z2h0IG9mIGhpbXNlbGYgYXQgYWxsLCBidXQgb25seSBvZiB0aGF0IGZvciB3aGljaCAKaGUgaXMgd29ya2luZzsgdGhlbiwgYW5kIHRoZW4gb25seSwgaXMgaGlzIHNhY3JpZmljZSAKcGVyZmVjdCwgZm9yIGl0IGlzIG9mIHRoZSBzYW1lIG5hdHVyZSBhcyB0aGUgc2FjcmlmaWNlIG9mIAp0aGUgTG9nb3MsIGFuZCBwYXJ0YWtlcyBvZiB0aGUgZXNzZW5jZSBvZiB0aGF0IGxhdyBvZiAKbG92ZSB3aGljaCBhbG9uZSBpcyB0aGUgbGF3IG9mIGxpZmUgZXRlcm5hbC4gCgpUaGF0IGV2ZW4gdGhlIGVhcmx5IENocmlzdGlhbiBDaHVyY2ggaGFkIHNvbWUgCnRyYWRpdGlvbiBvZiBhbGwgdGhpcyBzZWVtcyB0byBiZSBzaG93biBieSB0aGUgZmFjdCB0aGF0IAppbiB0aGUgcGFpbnRpbmdzIGluIHRoZSBjYXRhY29tYnMgYXQgUm9tZSB3ZSBmcmUtIApxdWVudGx5IGZpbmQganVzdCBzdWNoIGEgZmlndXJlIGFzIHRoZSBvbmUgZGVzY3JpYmVkLCAKd2l0aCBhcm1zIHVwbGlmdGVkIGluIHRoZSBwZWN1bGlhciBtYW5uZXIgaW5kaWNhdGVkLCAKc3RhbmRpbmcgaW4gdGhlIG1pZHN0IG9mIHRoZSB0d2VsdmUgYXBvc3RsZXMsIGV4YWN0bHkgCndoZXJlIHRoZSBmaWd1cmUgb2YgdGhlIENocmlzdCB3b3VsZCBuYXR1cmFsbHkgYmUgZXgtIApwZWN0ZWQuIFRoaXMgaXMgZ2VuZXJhbGx5IHNwb2tlbiBvZiBhcyB0aGUg4oCcIG9yYW50ZSDigJ0gCm9yIHByYXlpbmcgZmlndXJlOiBpdCBoYXMgc29tZXRpbWVzIGJlZW4gc3VwcG9zZWQgdG8gCmJlIGZlbWluaW5lLCBhbmQgaGFzIGdpdmVuIHJpc2UsIEkgYmVsaWV2ZSwgdG8gY29uc2lkZXItIAphYmxlIHNwZWN1bGF0aW9uIGFtb25nIGVjY2xlc2lhc3RpY2FsIGFyY2hlb2xvZ2lzdHMsIApidXQgdGhlIG1vc3QgbmF0dXJhbCBleHBsYW5hdGlvbiBvZiBpdCBhcHBlYXJzIHRvIG1lIAp0byBiZSB0aGF0IHdoaWNoIEkgaGF2ZSBzdWdnZXN0ZWQgYWJvdmUuIAoKV2Ugc2VlLCB0aGVuLCB0aGF0IHRoZSBjcm9zcyBoYXMgYmVlbiB1c2VkIGZyb20gCnZlcnkgZWFybHkgcGVyaW9kcyBhcyB0aGUgc3ltYm9sIG9mIG1hdHRlciBhbmQgbWFuaS0gCmZlc3RhdGlvbuKAlG9mIHRoZSBtYXRlcmlhbCB3b3JsZC4g4oCYSXQgd2FzIHRoZXJlZm9yZSBieSAKbm8gbWVhbnMgdW5uYXR1cmFsIHRoYXQgdGhlIGZ1cnRoZXIgZGVzY2VudCBvZiB0aGUgCkRpdmluZSBNYW4gaW50byBtYXR0ZXIgc2hvdWxkIGJlIHN5bWJvbGl6ZWQgYnkgdGhlIApiaW5kaW5nIG9mIHRoZSBib2R5IHRvIHRoZSBjcm9zcywgd2hpY2ggYWxzbyBzaWduaWZpZWQgCuKAnGFjY3VyYXRlbHkgZW5vdWdoIHRoZSBleHRyZW1lIGxpbWl0YXRpb24gb2YsIHRoZWFjdGlvbiAKb2YgdGhlIExvZ29zIGJ5IHN1Y2ggZGVzY2VudOKAlHRoZSBleHRlbnQgdG8gd2hpY2ggCgoKVFJJVU1QSEFOVCBPTiBUSEUgQ1JPU1MuIDU5IAoKCkhpcyBleHByZXNzaW9uIG9mIEhpbXNlbGYgd2FzIGN1cnRhaWxlZCBvbiB0aGlzIHBoeXNpLSAKY2FsIHBsYW5lLiBPZiBjb3Vyc2UgdGhlIG5haWxzLCB0aGUgYmxvb2QsIHRoZSB3b3VuZHMsIAphbmQgYWxsIHRoZSBnaGFzdGx5IGhvcnJvcnMgb2YgdGhlIG1vZGVybiByZXByZXNlbnRhLSAKdGlvbiwgYXJlIHNpbXBseSBhY2NyZXRpb25zIGR1ZSB0byB0aGUgZGlzZWFzZWQgaW1hZ2luYS0gCnRpb24gb2YgdGhlIG1hdGVyaWFsaXppbmcgbW9uaywgd2hvIGhhZCBuZWl0aGVyIHRoZSAKaW50ZWxsZWN0IG5vciB0aGUgZWR1Y2F0aW9uIHdoaWNoIGNvdWxkIGVuYWJsZSBoaW0gCnRvIGFwcHJlY2lhdGUgdGhlIGJlYXV0aWZ1bCBtZWFuaW5nIGNvbnZleWVkIGJ5IHRoZSAKb3JpZ2luYWwgYWxsZWdvcnkuIAoKVGhpcyBtdWNoIGF0IGxlYXN0IG9mIHRoZSB0cnV0aCBpcyBub3cgYmVnaW5uaW5nIAp0byBiZSB1bmRlcnN0b29kIGJ5IGV2ZW4gdGhlIENocmlzdGlhbiBpbnZlc3RpZ2F0b3JzLCAKb3IgaW4gYW4gYXJ0aWNsZSBieSBILiBNYXJ1Y2NoaSwgdGhlIHdlbGwta25vd24gCkNhdGhvbGljIGFyY2hlb2xvZ2lzdCwgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5IG9mIHRoZSAKQWJiw6kgVmlnb3JvdXgsIHRoZSB3cml0ZXIgcmVmZXJzIHRvIHRoZSBmaWZ0aC1jZW50dXJ5IApnYXRlIG9mIFNhbnRhIFNhYmluYSBhdCBSb21lIGFuZCB0byBhbiBpdm9yeSBvZiB0aGUgCnNhbWUgZGF0ZSBpbiB0aGUgQnJpdGlzaCBNdXNldW0gYXMgdGhlIG9sZGVzdCBrbm93biAKZXhhbXBsZXMgb2YgdGhlIGNydWNpZml4LCBhbmQgc2F5cywg4oCcSXQgaXMgdG8gYmUgcmUtIAptYXJrZWQgdGhhdCB0aGUgQ2hyaXN0IGlzIGhlcmUgcmVwcmVzZW50ZWQgYXMgc3RpbGwgCmxpdmluZywgd2l0aCB0aGUgZXllcyBvcGVuIGFuZCB3aXRob3V0IGFueSBtYXJrIG9mIApwaHlzaWNhbCBzdWZmZXJpbmcu4oCdIAoKSGUgZ29lcyBvbiB0byBzYXkgdGhhdCBpbiB0aGUgc2l4dGggY2VudHVyeSB0aGUgCmNydWNpZml4IGlzIG1vcmUgZnJlcXVlbnQsIGJ1dCBzdGlsbCB0aGUgZmlndXJlIGlzIGFsd2F5cyAKbGl2aW5nIGFuZCBjbG90aGVkIGluIGEgbG9uZyB0dW5pYywgYW5kIHRoYXQgaXQgaXMgb25seSAKaW4gdGhlIHR3ZWxmdGggY2VudHVyeSB0aGF0IOKAmOKAmCB0aGV5IGNlYXNlIHRvIHJlcHJlc2VudCAKdGhlIENocmlzdCBhcyBsaXZpbmcgYW5kIHRyaXVtcGhhbnQgb24gdGhlIGNyb3NzLuKAmSAKSGUgc2VlbXMgdG8gdGhpbmsgdGhhdCB0aGUgbmV3IHNjaG9vbCBvZiBwYWludGluZyAKb2YgQ2ltYWJ1ZSBhbmQgR2lvdHRvIGlzIHRvIGEgbGFyZ2UgZXh0ZW50IHJlc3BvbnNpYmxlIApmb3IgdGhlIGNoYW5nZS4gCgpXZSBhcmUgbm90LCBob3dldmVyLCB3aXRob3V0IG90aGVyIHRlc3RpbW9ueSB3aGljaCAKc2hvd3MgdGhhdCB0aGVyZSBoYXZlIGJlZW4gbWFueSB3aG8gaGF2ZSB0byBzb21lIAoKCjYwIFRIRSBDSFJJU1RJQU4gQ1JFRUQuIAoKCmV4dGVudCBjb21wcmVoZW5kZWQgdGhlIHRydWUgc2lnbmlmaWNhdGlvbiBvZiB0aGUgY3Jvc3MuIApUaGUgZGVzY3JpcHRpb24gZ2l2ZW4gaW4gdGhlIEFjdHMgb2YgSnVkYXMgVGhvbWFzIG9mIAp0aGUgQ2hyaXN0IHN0YW5kaW5nIGluIGdsb3J5IGFib3ZlIHRoZSBjcm9zcyB3aGljaCAKc2VwYXJhdGVkIHRoZSBsb3dlciB3b3JsZCBmcm9tIHRoZSBoaWdoZXIsIGFuZCB0aGF0IApvZiB0aGUgc3BsZW5kaWQgdmlzaW9uIG9mIHRoZSBjcm9zcyBvZiBsaWdodCwgYnkgbG9va2luZyAKaW50byBhbmQgdGhyb3VnaCB3aGljaCBhbGwgdGhlIG1hbmlmZXN0ZWQgd29ybGRzIHdlcmUgCnRvIGJlIHNlZW4sIHdoaWxlIHlldCB0aGUgYXVyYSBvZiB0aGUgSGVhdmVubHkgTWFuIAppbmNsdWRlZCBhbGwsIGludGVycGVuZXRyYXRlZCBhbGwsIGFuZCB3YXMgdGhlIGxpZmUgb2YgYWxsIArigJR0aGVzZSBhcmUgc3VmZmljaWVudCB0byBldmlkZW5jZSB0aGF0IHRydXRoIHdhcyBub3QgCmxlZnQgZW50aXJlbHkgd2l0aG91dCBpdHMgd2l0bmVzc2VzIGluIHRoZSBlYXJsaWVyIGFnZXMgCm9mIG91ciBlcmEsIGFuZCB0aGF0IGl0cyBsaWdodCB3YXMgYWJzb2x1dGVseSBoaWRkZW4gCm9ubHkgd2hlbiB0aGUgZGVuc2UgZm9nIG9mIENocmlzdGlhbiBzdXBlcnN0aXRpb24gZGUtIApzY2VuZGVkIHdpdGggYWxsIGl0cyB3ZWlnaHQgdXBvbiBFdXJvcGUgYW5kIHN0aWZsZWQgdGhlIAp3aG9sZSBvZiBpdHMgaW50ZWxsZWN0dWFsIGxpZmUgZm9yIGNsb3NlIHVwb24gYSB0aG91c2FuZCAKeWVhcnMuIAoKSXQgbWF5IGJlIHRoYXQgdGhlcmUgYXJlIHNvbWUgd2hvIHdpbGwgZmVlbCB0aGlzIAp3aWRlciBwcmVzZW50YXRpb24gb2YgdGhlIHRydWUgbWVhbmluZyBvZiB0aGUgY3Jvc3MgCnRvIGJlIHZhZ3VlciBhbmQgY29sZGVyIHRoYW4gdGhlIHZlcnkgY29uY3JldGUgZm9ybSAKaW4gd2hpY2ggaXQgaGFkIHByZXZpb3VzbHkgc2hhcGVkIGl0c2VsZiB0byB0aGVt4oCUd2lsbCAKZmVlbCB0aGF0IHdpdGggdGhlIGVtYW5jaXBhdGlvbiBvZiB0aGVpciBtaW5kcyBmcm9tIAp0aGUgaW1hZ2Ugb2YgdGhhdCBuaWdodG1hcmUgdGFsZSBvZiBhcHBhbGxpbmcgcGh5c2ljYWwgCnN1ZmZlcmluZyB0aGV5IGhhdmUgbG9zdCBhbHNvIHNvbWUgZmFtaWxpYXIgc2VudGltZW50YWwgCmFzc29jaWF0aW9ucyB3aGljaCB0aGV5IGNhbiBoYXJkbHkgaGVscCByZWdyZXR0aW5nLiAKCklmIHRoZXJlIGJlIGFueSBzdWNoIGFtb25nIG15IHJlYWRlcnMgbGV0IG1lIHJlLSAKbWluZCB0aGVtIHRoYXQgd2hpbGUgd2UgY2Fubm90IGJ1dCByZWNvaWwgd2l0aCBob3Jyb3IgCmZyb20gYWxsIHRoZSB0ZXJyaWJsZSBhbmQgaW5kZWVkIGJsYXNwaGVtb3VzIGlkZWFzIAphc3NvY2lhdGVkIGJ5IHRoZSBvcnRob2RveCB3aXRoIHRoZSB0aG91Z2h0IG9mIGNydWNpLSAKZml4aW9uLCB3ZSBtYXkgeWV0IGdyYXRlZnVsbHkgcmVjb2duaXplIGluIHRoZSBzaWduIG9mIAp0aGUgY3Jvc3MgYSBjb25zdGFudCByZW1pbmRlciBvZiB0aGUgaW5lZmZhYmxlIHNlbGYtIAoKCklUUyBUUlVFIE1FQU5JTkcuIDZyIAoKCnNhY3JpZmljZSBvZiB0aGUgSUxvZ29z4oCUb2YgdGhlIGVub3Jtb3VzIHBhdGllbmNlIHdpdGggCndoaWNoIEhpcyBhbG1pZ2h0eSBwb3dlciBiZWFycyB3aXRoIGFsbCBsaW1pdGF0aW9ucywgCmluIG9yZGVyIHRoYXQgaW4gdGhlIHNsb3cgcHJvZ3Jlc3Mgb2YgdGhlaXIgZGV2ZWxvcG1lbnQgCnRoZXNlIG1hbmlmb2xkIGZvcm1zIHdoaWNoIEhlIHRha2VzIG1heSBiZSBncmFkdWFsbHkgCmV4cGFuZGVkIGFuZCB5ZXQgbWF5IG5vdCB0b28gc29vbiBiZSBicm9rZW4sIHNvIHRoYXQgCmVhY2ggb2YgdGhlbSBtYXkgYmUgc2VydmljZWFibGUgdG8gdGhlIHV0dGVybW9zdC4gCgpJdCBtYXkgc2VydmUgdG8gcmVtaW5kIHVzIGFsc28gdGhhdCBtYW4gaGltc2VsZiBpcyAKdGh1cyBjcnVjaWZpZWQsIGlmIGhlIGRpZCBidXQga25vdyBpdDsgYW5kIHRoYXQgaWYgaGUgCmtub3dzIGl0IG5vdCwgaXQgaXMgYmVjYXVzZSB0aGUgbGl2aW5nIHNvdWwsIHRoZSB0cnVlIApDaHJpc3Qgd2l0aGluIGhpbSwgaXMgc3RpbGwgYmxpbmRseSBpZGVudGlmeWluZyBoaW1zZWxmIAp3aXRoIHRoZSBjcm9zcyBvZiBtYXR0ZXIgdG8gd2hpY2ggaGUgaXMgYm91bmQuIEl0IAptYXkgaGVscCB1cyB0byByZWFsaXplIHRoYXQgb3VyIGJvZGllcywgd2hldGhlciBwaHlzaS0gCmNhbCwgYXN0cmFsIG9yIG1lbnRhbCwgYXJlIG5vdCBvdXJzZWx2ZXMsIGFuZCB0aGF0IAp3aGVuZXZlciB3ZSBmaW5kIGFzIGl0IHdlcmUgdHdvIHNlbHZlcyB3YXJyaW5nIAp3aXRoaW4gdXMgd2UgaGF2ZSB0byByZW1lbWJlciB0aGF0IHdlIGFyZSBpbiB0cnV0aCAKdGhlIGhpZ2hlciwgYW5kIG5vdCB0aGUgbG93ZXLigJR0aGUgQ2hyaXN0IGFuZCBub3QgdGhlIApjcm9zcy4gCgpBbmQgaW5kZWVkIHRoaXMgc3ltYm9sIG9mIHRoZSBjcm9zcyBtYXkgYmUgdG8gdXMgCmFzIGEgdG91Y2gtc3RvbmUgdG8gZGlzdGluZ3Vpc2ggdGhlIGdvb2QgZnJvbSB0aGUgZXZpbCAKaW4gbWFueSBvZiB0aGUgZGlmZmljdWx0aWVzIG9mIGxpZmUuIOKAmCBPbmx5IHRob3NlIGFjdGlvbnMgCnRocm91Z2ggd2hpY2ggc2hpbmVzIHRoZSBsaWdodCBvZiB0aGUgY3Jvc3MgYXJlIHdvcnRoeSAKb2YgdGhlIGxpZmUgb2YgdGhlIGRpc2NpcGxlLOKAnSBzYXlzIG9uZSBvZiB0aGUgdmVyc2VzIGluIGEgCmJvb2sgb2Ygb2NjdWx0IG1heGltczsgYW5kIGl0IGlzIGludGVycHJldGVkIHRvIG1lYW4gCnRoYXQgYWxsIHRoYXQgdGhlIGFzcGlyYW50IGRvZXMgc2hvdWxkIGJlIHByb21wdGVkIGJ5IAp0aGUgZmVydm91ciBvZiBzZWxmLXNhY3JpZmljaW5nIGxvdmUuIFRoZSBzYW1lIHRob3VnaHQgCmFwcGVhcnMgaW4gYSBsYXRlciB2ZXJzZTog4oCY4oCcIFdoZW4gb25lIGVudGVycyB0aGUgcGF0aCwgCmhlIGxheXMgaGlzIGhlYXJ0IHVwb24gdGhlIGNyb3NzOyB3aGVuIHRoZSBjcm9zcyBhbmQgCnRoZSBoZWFydCBoYXZlIGJlY29tZSBvbmUsIHRoZW4gaGF0aCBoZSByZWFjaGVkIHRoZSAKZ29hbC7igJ0gU28sIHBlcmNoYW5jZSwgd2UgbWF5IG1lYXN1cmUgb3VyIHByb2dyZXNzIAoKCjY0IFRIRSBDSFJJU1RJQU4gQ1JFRUQuIAp0IAoKCmNlcm5lZCwgd2FzIG5vdCBhdCBhbGwgaW5hcHRseSBzeW1ib2xpemVkIGFzIGRlYXRoIGFuZCAKYnVyaWFsLiAKCuKAmMKiSGUgZGVzY2VuZGVkIGludG8gaGVsbC7igJ0gQnV0IG1lYW50aW1lLCB3aGlsZSAKdGhlIG1lcmUgb3V0ZXIgaHVzayBvZiB0aGUgbWFuIHdhcyB0aHVzIOKAnCBkZWFkIGFuZCAKYnVyaWVkLOKAmeKAmSBoZSBoaW1zZWxmIHdhcyBmdWxseSBhbGl2ZSBhbmQgY29uc2Npb3VzIGVsc2UtIAp3aGVyZS4gTWFueSBhbmQgc3RyYW5nZSB3ZXJlIHRoZSBsZXNzb25zIHdoaWNoIGhlIApoYWQgdG8gbGVhcm4sIHRoZSBleHBlcmllbmNlcyB3aGljaCBoZSBoYWQgdG8gdW5kZXJnbywgCnRoZSB0ZXN0cyB0aHJvdWdoIHdoaWNoIGhlIGhhZCB0byBwYXNzIGR1cmluZyBoaXMgCnNvam91cm4gaW4gdGhhdCBhc3RyYWwgd29ybGQ7IGJ1dCB0aGV5IHdlcmUgYWxsIGNhcmUtIApmdWxseSBjYWxjdWxhdGVkIHRvIGZhbWlsaWFyaXplIGhpbSB3aXRoIHRoaXMgbmV3IHNwaGVyZSAKb2YgYWN0aW9uIGluIHdoaWNoIGhlIGZvdW5kIGhpbXNlbGYsIHRvIGVuYWJsZSBoaW0gdG8gCnVuZGVyc3RhbmQgaXQsIHRvIGdpdmUgaGltIGNvbmZpZGVuY2UgYW5kIHNlbGYtcmVsaWFuY2UgCuKAlGluIGZhY3QsIHNvIHRvIHRyYWluIGhpbSB0aGF0IGhlIGNvdWxkIHNhZmVseSBmYWNlIGFsbCAKaXRzIHBlcmlscywgY291bGQgdXNlIGl0cyBwb3dlcnMgd2l0aCBjYWxtbmVzcyBhbmQgZGlzLSAKY3JldGlvbiwgYW5kIGNvdWxkIHRodXMgYmVjb21lIGEgZml0dGluZyBpbnN0cnVtZW50IAp1cG9uIHRoYXQgcGxhbmUgaW4gdGhlIGhhbmRzIG9mIHRob3NlIHdobyBoZWxwIHRoZSAKd29ybGQuIAoKVGhpcyB3YXMgdGhlIGRlc2NlbnQgaW50byB0aGUgdW5kZXJ3b3JsZOKAlG5vdCBvZiAKY291cnNlIGludG8gdGhlIGhlbGwgb2YgdGhlIGdyb3NzIENocmlzdGlhbiBjb25jZXB0aW9uLCAKYnV0IGludG8gSGFkZXMsIHRoZSB3b3JsZCBvZiB0aGUgZGVwYXJ0ZWQsIHdoZXJlIGl0IHdhcyAKdW5kb3VidGVkbHkgdGhlIHdvcmsgb2YgdGhlIGluaXRpYXRlIChhbW9uZyBtYW55IG90aGVyIApkdXRpZXMpIHRvIOKAmOKAmCBwcmVhY2ggdG8gdGhlIHNwaXJpdHMgaW4gcHJpc29uLOKAnSBhcyB0aGUgCkNocmlzdGlhbiB0cmFkaXRpb24gcHV0cyBpdOKAlG5vdCwgaG93ZXZlciwgYXMgdGhhdCB0cmEtIApkaXRpb24gaWdub3JhbnRseSBzdXBwb3NlcywgdG8gdGhlIHNwaXJpdHMgb2YgdGhvc2Ugd2hvLCAKaGF2aW5nIGhhZCB0aGUgbWlzZm9ydHVuZSB0byBsaXZlIGluIHRpbWVzIGxvbmcgcGFzdCwgCmNvdWxkIGF0dGFpbiBzYWx2YXRpb24gb25seSBieSB0aHVzIGFmdGVyIGRlYXRoIGhlYXJpbmcgCmFuZCBhY2NlcHRpbmcgdGhpcyBwYXJ0aWN1bGFyIGZvcm0gb2YgZmFpdGgg4oCUIG5vdCB0byAKdGhlbSwgYnV0IHRvIHRoZSBzcGlyaXRzIG9mIHRob3NlIHJlY2VudGx5IGRlcGFydGVkIGZyb20gCnRoaXMgbGlmZSwgYW5kIHN0aWxsIGltcHJpc29uZWQgYW5kIGhlbGQgZG93biB1cG9uIHRoZSAKCgpUWUUgREVTQ0VOVCBJTlRPIEhFTEwuIDY1IAoKCmFzdHJhbCBwbGFuZSBieSBkZXNpcmVzIHVuZXhoYXVzdGVkIGFuZCBwYXNzaW9ucyAKdW5zdWJkdWVkLiAKClRvIGVuZGVhdm91ciB0byBoZWxwIHRoaXMgdmFzdCBhcm15IG9mIHVuZm9ydHVuYXRlcywgCmJ5IHBvaW50aW5nIG91dCB0byB0aGVtIHRoZSB0cnVlIGNvdXJzZSBvZiB0aGVpciBldm9sdS0gCnRpb24gYW5kIHRoZSBiZXN0IG1ldGhvZCBvZiBoYXN0ZW5pbmcgaXQsIHdhcyBvbmUgb2YgCnRoZSBkdXRpZXMgb2YgdGhlIGluaXRpYXRlIHRoZW4sIGFzIGl0IGlzIG9uZSBvZiB0aGUgZHV0aWVzIApvZiB0aGUgTWFzdGVyc+KAmSBwdXBpbHMgbm93OyBhbmQgdGhlcmVmb3JlIGF0IHRoaXMgc29sZW1uIApjZXJlbW9ueSwgYnkgd2hpY2ggaGUgd2FzIGZvcm1hbGx5IHB1dCBpbnRvIHJlbGF0aW9uIAp3aXRoIHRoZSBHcmVhdCBCcm90aGVyaG9vZCwgaGUgcmVjZWl2ZWQgaGlzIGZpcnN0IGxlc3NvbiAKaW4gd2hhdCB3b3VsZCB0aGVyZWFmdGVyIGZvcm0gbm8gaW5jb25zaWRlcmFibGUgcG9ydGlvbiAKb2YgaGlzIHdvcmsuIAoKRHVyaW5nIHRoaXMgc2FtZSDigJjigJhkZXNjZW50IGludG8gaGVsbOKAmeKAmSBpdCB3YXMgdGhhdCwgCmFjY29yZGluZyB0byB0aGUgRWd5cHRpYW4gcml0ZSwgdGhlIGNhbmRpZGF0ZSBoYWQgdG8gCnBhc3MgdGhyb3VnaCB3aGF0IHVzZWQgdG8gYmUgY2FsbGVkIOKAmOKAnOKAmHRoZSB0ZXN0cyBvZiBlYXJ0aCwgCndhdGVyLCBhaXIgYW5kIGZpcmXigJnigJ3igJR1bmxlc3MgaW5kZWVkIGhlIGhhZCBhbHJlYWR5IGV4LSAKcGVyaWVuY2VkIHRoZW0gYXQgYW4gZWFybGllciBzdGFnZSBvZiBoaXMgZGV2ZWxvcG1lbnQuIApJbiBvdGhlciB3b3JkcywgaGUgaGFkIHRvIGxlYXJuIHdpdGggdGhhdCBhYnNvbHV0ZSAKY2VydGFpbnR5IHRoYXQgY29tZXMgbm90IGJ5IHRoZW9yeSBidXQgYnkgcHJhY3RpY2FsIGV4LSAKcGVyaWVuY2UsIHRoYXQgaW4gaGlzIGFzdHJhbCBib2R5IG5vbmUgb2YgdGhlc2UgZWxlbWVudHMgCmNvdWxkIGJ5IGFueSBwb3NzaWJpbGl0eSBiZSBodXJ0ZnVsIHRvIGhpbeKAlG5vbmUgY291bGQgCm9wcG9zZSBhbnkgb2JzdGFjbGUgaW4gdGhlIHdheSBvZiB0aGUgd29yayB3aGljaCBoZSAKaGFkIHRvIGRvLiAKCldoZW4gZnVuY3Rpb25pbmcgaW4gdGhlIHBoeXNpY2FsIGJvZHkgd2UgYXJlIAp0aG9yb3VnaGx5IGNvbnZpbmNlZCB0aGF0IGZpcmUgd2lsbCBidXJuIHVzLCB0aGF0IAp3YXRlciB3aWxsIGRyb3duIHVzLCB0aGF0IHRoZSBzb2xpZCByb2NrIGZvcm1zIGFuIGltLSAKcGFzc2FibGUgYmFycmllciB0byBvdXIgcHJvZ3Jlc3MsIHRoYXQgd2UgY2Fubm90IHdpdGggCnNhZmV0eSBsYXVuY2ggb3Vyc2VsdmVzIHVuc3VwcG9ydGVkIGludG8gdGhlIGFtYmllbnQgCmFpci4gU28gZGVlcGx5IGlzIHRoaXMgY29udmljdGlvbiBlbmdyYWluZWQgaW4gdXMgdGhhdCAKaXQgY29zdHMgbW9zdCBtZW4gYSBnb29kIGRlYWwgb2YgZWZmb3J0IHRvIG92ZXJjb21lIHRoZSAKCgo2NiBUSEUgQ0hSSVNUSUFOIENSRUVELuKAmSAKCgppbnN0aW5jdGl2ZSBhY3Rpb24gd2hpY2ggZm9sbG93cyBmcm9tIGl0LCBhbmQgdG8gcmVhbGl6ZSAKdGhhdCBpbiB0aGUgYXN0cmFsIGJvZHkgdGhlIGRlbnNlc3Qgcm9jayBvZmZlcnMgbm8gaW0tIApwZWRpbWVudCB0byB0aGVpciBmcmVlZG9tIG9mIG1vdGlvbiwgdGhhdCB0aGV5IG1heSAKbGVhcCB3aXRoIGltcHVuaXR5IGZyb20gdGhlIGhpZ2hlc3QgY2xpZmYsIGFuZCBwbHVuZ2UgCndpdGggdGhlIG1vc3QgYWJzb2x1dGUgY29uZmlkZW5jZSBpbnRvIHRoZSBoZWFydCBvZiB0aGUgCnJhZ2luZyB2b2xjYW5vIG9yIHRoZSBkZWVwZXN0IGFieXNzZXMgb2YgdGhlIGZhdGhvbWxlc3MgCm9jZWFuLiAKCllldCB1bnRpbCBhIG1hbiBrbm93cyB0aGlz4oCUa25vd3MgaXQgc3VmZmljaWVudGx5IHRvIAphY3QgdXBvbiBoaXMga25vd2xlZGdlIGluc3RpbmN0aXZlbHkgYW5kIGNvbmZpZGVudGx54oCUIApoZSBpcyBjb21wYXJhdGl2ZWx5IHVzZWxlc3MgZm9yIGFzdHJhbCB3b3JrLCBzaW5jZSBpbiAKZW1lcmdlbmNpZXMgdGhhdCBhcmUgY29uc3RhbnRseSBhcmlzaW5nIGhlIHdvdWxkIGJlIApwZXJwZXR1YWxseSBwYXJhbHl6ZWQgYnkgaW1hZ2luYXJ5IGRpc2FiaWxpdGllcy4gRm9yIAp0aGlzIHJlYXNvbiB0aGUgY2FuZGlkYXRlIGhhZCB0byBwYXNzIHRoZSB0ZXN0cyBvZiBlYXJ0aCwgCndhdGVyLCBhaXIgYW5kIGZpcmUgdGhvdXNhbmRzIG9mIHllYXJzIGFnb+KAlGZvciB0aGlzIApyZWFzb24gaGUgaGFzIHRvIHBhc3MgdGhlbSB0by1kYXkuIEZvciB0aGUgc2FtZSAKcmVhc29uIGhlIGhhcyB0byBnbyB0aHJvdWdoIG1hbnkgYSBzdHJhbmdlIGV4cGVyaWVuY2UgCuKAlHRvIG1lZXQgZmFjZSB0byBmYWNlIHdpdGggY2FsbSBjb3VyYWdlIHRoZSBtb3N0IHRlci0gCnJpZnlpbmcgYXBwYXJpdGlvbnMgYW1pZCB0aGUgbW9zdCBsb2F0aHNvbWUgc3Vycm91bmQtIAppbmdz4oCUdG8gc2hvdyBpbiBmYWN0IHRoYXQgaGUgY2FuIGJlIHRydXN0ZWQgdW5kZXIgYW55IAphbmQgYWxsIG9mIHRoZSB2YXJpZWQgZ3JvdXBzIG9mIGNpcmN1bXN0YW5jZXMgaW4gd2hpY2ggCmhlIG1heSBhdCBhbnkgbW9tZW50IGZpbmQgaGltc2VsZi4gVGhpcyB0aGVuIGlzIG9uZSAKYW1vbmcgdGhlIG1hbnkgdXNlcyBvZiB0aGUgb2xkIHJpdGUgb2YgdGhlIOKAmOKAmCBkZXNjZW50IAppbnRvIGhlbGwu4oCdIAoK4oCY4oCYVGhlIHRoaXJkIGRheSBoZSByb3NlIGFnYWluIGZyb20gdGhlIGRlYWQu4oCdIEl0IAptdXN0IHN1cmVseSBoYXZlIHN0cnVjayBhbnkgdGhvdWdodGZ1bCBzdHVkZW50IG9mIHRoZSAKcmVjZWl2ZWQgZ29zcGVsIG5hcnJhdGl2ZSB0aGF0IHRvIGRlc2NyaWJlIHRoZSBpbnRlcnZhbCAKYmV0d2VlbiBGcmlkYXkgZXZlbmluZyBhbmQgdmVyeSBlYXJseSBvbiB0aGUgU3VuZGF5IAptb3JuaW5nIGFzIHRocmVlIGNvbXBsZXRlIGRheXMgaW52b2x2ZXMgYSBjZXJ0YWluIAphbW91bnQgb2YgcG9ldGljYWwgbGljZW5jZS4gSXQgbWlnaHQgYmUgY29udGVuZGVkIAoKClRIRSBSRVNVUlJFQ1RJT04uIDY3IAoKCnRoYXQgc3VjaCBhbiBpbnRlcnZhbCB3YXMgbm90IGluY29uc2lzdGVudCB3aXRoIHRoZSAKc3RhdGVtZW50IG9mIHRoZSBDcmVlZCB0aGF0IGhlIHJvc2UgYWdhaW4g4oCYb24gdGhlIAp0aGlyZCBkYXk74oCdIGJ1dCB0aGUgcGVyc29uIG9mZmVyaW5nIHRoaXMgc29tZXdoYXQgCmRpc2luZ2VudW91cyBhcmd1bWVudCB3b3VsZCBoYXZlIGVudGlyZWx5IHRvIGlnbm9yZSAKdGhlIHF1aXRlIGRlZmluaXRlIGFzc2VydGlvbiBhdHRyaWJ1dGVkIHRvIEplc3VzIHRoYXQgCuKAmHRoZSBTb24gb2YgTWFuIHNoYWxsIHJlbWFpbiB0aHJlZSBkYXlzIGFuZCB0aHJlZSAKbmlnaHRzIGluIHRoZSBoZWFydCBvZiB0aGUgZWFydGgu4oCdIAoKVGhlIHJlYWwgZXhwbGFuYXRpb24gb2YgdGhlc2UgYXBwYXJlbnRseSBiZXdpbGRlcmluZyAKZGlzY3JlcGFuY2llcyBpcyBjbGVhciBlbm91Z2ggd2hlbiB0aGUgdHJ1ZSBfaW50ZXItIApwcmV0YXRpb24gaXMgYWRvcHRlZC4gSW4gdGhlIGxhdGVyIGFuZCBkZWdlbmVyYXRlIApkYXlzIG9mIHRoZSBNeXN0ZXJpZXMsIHdoZW4gYXR0ZW1wdHMgd2VyZSBtYWRlIHRvIAptaW5pbWl6ZSBhbGwgcmVxdWlyZW1lbnRzIGFuZCB0byBtYWtlIGVudHJhbmNlIGVhc3kgCmZvciBsZXNzIHdvcnRoeSBjYW5kaWRhdGVzIHdobyB3ZXJlIHVuYWJsZSB0byBwYXNzIAppbnRvIHRoZSB0cmFuY2UsIGl0IHdhcyBzb29uIGZvdW5kIHRoYXQgdG8gc3BlbmQgaW4gCnJpZ2lkIHNlY2x1c2lvbiB1cG9uIHRoZSBwaHlzaWNhbCBwbGFuZSB0aGUgc2V2ZW50eS0gCnNldmVuIGhvdXJzIG9yaWdpbmFsbHkgc28gd2VsbCBvY2N1cGllZCB1cG9uIHRoZSBhc3RyYWwgCndhcyB0byBjZXJ0YWluIHR5cGVzIG9mIG1pbmQgaW5zdWZmY3JhYmx5IHRlZGlvdXM7IHNvIAp0aGUgc3ljb3BoYW50aWMgaGllcm9waGFudHMgb2YgdGhhdCBsYXRlciB0aW1lIGNvbi0gCnZlbmllbnRseSBkaXNjb3ZlcmVkIHRoYXQgc2V2ZW50eS1zZXZlbiB3YXMgbWVyZWx5IGEgCmNsZXJpY2FsIGVycm9yIGZvciB0d2VudHktc2V2ZW4sIGFuZCB0aGF0IHRoZSBvcmlnaW5hbCAKZm9ybSBvZiB0aGUgcnVicmljIOKAnGFmdGVyIHRoZSB0aGlyZCBkYXnigJ0gcmVhbGx5IG1lYW50IApub3RoaW5nIG1vcmUgdGhhbiDigJxvbiB0aGUgdGhpcmQgZGF5IOKAneKAlHRodXMgc2F2aW5nIAp0aGVpciBub2JsZSBwYXRyb25zIGZ1bGx5IHR3byBkYXlzIG9mIHdoYXQgd2FzIHByYWMtIAp0aWNhbGx5IHNvbGl0YXJ5IGNvbmZpbmVtZW50LiAKClRoaXMgbGF0ZXIgYW5kIGRlZ3JhZGVkIGZvcm0gaXMgYWNjdXJhdGVseSBlbm91Z2ggCnJlcHJlc2VudGVkIGJ5IHRoZSBzeW1ib2xpc20gdXNlZCBpbiB0aGUgZ29zcGVsczsgCmJ1dCBpdCBjb3VsZCBuZXZlciBoYXZlIGJlZW4gYWRvcHRlZCB1bnRpbCB0aGUgcmVhbCAKbWVhbmluZyBvZiB0aGUgb3JpZ2luYWwgcml0dWFsIGhhZCBiZWVuIGZvcmdvdHRlbi4gCk9ubHkgYWZ0ZXIgdGhyZWUgY2xlYXIgZGF5cyBhbmQgbmlnaHRzIGFuZCBwYXJ0IG9mIAoKCjY4IFRIRSBDSFJJU1RJQU4gQ1JFRUQuIAoKCmEgZm91cnRoIGhhZCBwYXNzZWQgd2FzIHRoZSBzdGlsbCBlbnRyYW5jZWQgY2FuZGlkYXRlIApvZiBtb3JlIGFuY2llbnQgZGF5cyByYWlzZWQgZnJvbSB0aGUgc2FyY29waGFndXMgaW4gCndoaWNoIGhlIGhhZCBsYWluLCBhbmQgYm9ybmUgaW50byB0aGUgb3V0ZXIgYWlyIGF0IHRoZSAKZWFzdGVybiBzaWRlIG9mIHRoZSBweXJhbWlkIG9yIHRlbXBsZSwgc28gdGhhdCB0aGUgZmlyc3QgCnJheXMgb2YgdGhlIHJpc2luZyBzdW4gbWlnaHQgZmFsbCB1cG9uIGhpcyBmYWNlIGFuZCAKYXdha2VuIGhpbSBmcm9tIGhpcyBsb25nIHNsZWVwLiBBbmQgd2hlbiB3ZSAKcmVtZW1iZXIgdGhhdCB0aGUgd2hvbGUgb2YgdGhpcyByaXR1YWwgdHlwaWZpZXMgdGhlIApkZXNjZW50IG9mIHRoZSBTZWNvbmQgTG9nb3MgaW50byBtYXR0ZXIsIGl0IHdpbGwgbm90IGJlIApkaWZmaWN1bHQgZm9yIHVzIHRvIHNlZSB3aHkgdGhpcyBwYXJ0aWN1bGFyIHBlcmlvZCBvZiB0aW1lIAp3YXMgY2hvc2VuLiAKCkZvciB0aHJlZSBsb25nIHJvdW5kcyBhbmQgcGFydCBvZiBhIGZvdXJ0aCB0aGUgCm1vbmFkaWMgZXNzZW5jZSBzaW5rcyBkZWVwZXIgYW5kIGV2ZXIgZGVlcGVyIGludG8gCnRoZSBzbG91Z2ggb2YgZGVuc2UgbWF0dGVyLCBhbmQgb25seSB3aGVuIGluIHRoZSAKZm91cnRoIHJvdW5kIHRoZSBzdW4gYXJpc2Vz4oCUd2hlbiB0aGUgTG9yZHMgb2YgaXRzIApGbGFtZSBhcHBlYXIgdXBvbiBlYXJ0aOKAlGRvZXMgdGhhdCBlc3NlbmNlIHJpc2UgZnJvbSAKdGhlIGRlYWQsIGFuZCBiZWdpbiBhdCBsYXN0IHRvIGVudGVyIHVwb24gdGhhdCBtaWdodHkgCnN3ZWVwIG9mIGl0cyB1cHdhcmQgYXJjIHdoaWNoIGluIHRoZSBlbmQgc2hhbGwgc2V0IGl0IAphdCB0aGUgcmlnaHQgaGFuZCBvZiB0aGUgRmF0aGVyLiAKCuKAmOKAmCBGbGUgYXNjZW5kZWQgaW50byBoZWF2ZW4u4oCdIEl0IG5lZWRzIG5vIGV4cGxhbmEtIAp0aW9uIHRvIHNob3cgdGhlIG1lYW5pbmcgb2YgdGhpcyBwaHJhc2Ugd2l0aCByZWZlcmVuY2UgCnRvIHRoZSB1cHdhcmQgcHJvZ3Jlc3Mgb2YgdGhlIGh1bWFuIHNvdWw7IGJ1dCB0aGUgCnBsYWNlIHdoaWNoIGl0IGZpbGxzIGluIHRoZSBvbGQgRWd5cHRpYW4gcml0dWFsIGlzIHdvcnRoeSAKb2Ygb3VyIG5vdGljZS4gRm9yIHRoZSBsZXNzb25zIHdoaWNoIHRoZSBjYW5kaWRhdGUgCmhhZCB0byBsZWFybiBhdCBoaXMgaW5pdGlhdGlvbiB3ZXJlIG5vdCBjb25jbHVkZWQgd2l0aCAKaGlzIGV4cGVyaWVuY2VzIG9uIHRoZSBhc3RyYWwgcGxhbmU7IGl0IHdhcyBuZWNlc3NhcnkgCmZvciBoaW0gYXQgdGhpcyBzdGFnZSBvZiBoaXMgZXZvbHV0aW9uIHRvIGJlIGJyb3VnaHQgCmludG8gY29udGFjdCB3aXRoIHNvbWV0aGluZyBmYXIgaGlnaGVyIGFuZCB3aWRlciBldmVuIAp0aGFuIHRoaXMuIFRob3NlIHdobyBoYXZlIHN0dWRpZWQgdGhhdCBzZWN0aW9uIG9mIApUaGVvc29waGljYWwgbGl0ZXJhdHVyZSB3aGljaCB0cmVhdHMgb2YgdGhlIFBhdGggb2YgCgoKakhFIEFTQ0VOVCBJTlRPIEhFQVZFTiwgNjkgCgoKSG9saW5lc3Mgd2lsbCByZW1lbWJlciB0aGF0IHRoZSBTb3RhcGFubmEsIOKAmHRoZSAKbWFuIHdobyBoYXMgZW50ZXJlZCB1cG9uIHRoZSBzdHJlYW0s4oCdIHJlY2VpdmVzIGFzIApwYXJ0IG9mIGhpcyBpbml0aWF0aW9uIHRoZSBmaXJzdCB0b3VjaCBvZiBhd2FrZW5pbmcgCmNvbnNjaW91c25lc3MgdXBvbiB0aGUgYnVkZGhpYyBwbGFuZS4gCgpUaGlzIHdhcyBvZiBjb3Vyc2UgdGhlIGNhc2UgaW4gdGhlIEVneXB0aWFuIHJpdGUgCmFsc28sIGFuZCBpdCB3YXMgdGhpcyB0cmFuc2NlbmRlbnQgZXhwZXJpZW5jZSwgY2hhbmdpbmcgCmFzIGl0IGRpZCB0aGUgbWFu4oCZcyBlbnRpcmUgY29uY2VwdGlvbiBvZiBsaWZlIGFuZCBvZiAKZXZvbHV0aW9uLCB3aGljaCB3YXMgc3Bva2VuIG9mIGFzIHRoZSBhc2NlbnQgaW50byAKaGVhdmVuLiBCeSBpdCB0aGUgbWFuIGZvciB0aGUgZmlyc3QgdGltZSByZWFsaXplZCBpbiAKZXhwZXJpZW5jZSB0aGF0IGdyZWF0IGRvY3RyaW5lIHdoaWNoIGlzIHNvIGZhbWlsaWFyIHRvIAp1cyBhbGwgYXMgYSB0aGVvcnnigJR0aGUgc3Bpcml0dWFsIGJyb3RoZXJob29kIG9mIG1hbiAKYW5kIHRoZSB1bml0eSBvZiBhbGwgdGhhdCBsaXZlcy4gWWV0IHNvIGRpZmZlcmVudCBpcyB0aGUgCmhvbGRpbmcgb2YgdGhpcyBtZXJlbHkgYXMgYSB0aGVvcnkgZnJvbSB0aGUga25vd2luZyAKaXQgYWJzb2x1dGVseSBhcyBhIGZhY3QgaW4gbmF0dXJlIHRoYXQsIGFzIGhhcyBiZWVuIHNhaWQsIAp0aGlzIGV4cGVyaWVuY2UgY2hhbmdlcyB0aGUgbWFu4oCZcyB3aG9sZSBsaWZlIGFuZCAKYXR0aXR1ZGUsIHNvIHRoYXQgbmV2ZXIgdGhlcmVhZnRlciBjYW4gaGUgbG9vayB1cG9uIAphbnl0aGluZyBpbiB0aGUgd29ybGQgYXMgaGUgZGlkIGJlZm9yZS4gS2VlbiB0aG91Z2ggCmhpcyBzeW1wYXRoeSB3aXRoIHN1ZmZlcmluZyBtdXN0IGJlLCB5ZXQgaGlzIHNvcnJvdyAKY2FuIG5ldmVyIGFnYWluIGJlIGhvcGVsZXNzLCBmb3IgaGUga25vd3MgdGhhdCB0aGUgCnN1ZmZlcmVyIGFsc28gaXMgYSBwYXJ0IG9mIHRoZSBvbmUgZ3JlYXQgbGlmZSwgYW5kIHRoYXQgCnRoZXJlZm9yZSBhbGwgbXVzdCBhdCBsYXN0IGJlIHdlbGwuIAoK4oCYQW5kIHNpdHRldGggb24gdGhlIHJpZ2h0IGhhbmQgb2YgR29kIHRoZSBGYXRoZXIgCmFsbWlnaHR5LCBmcm9tIHdoZW5jZSBoZSBzaGFsbCBjb21lIHRvIGp1ZGdlIHRoZSAKcXVpY2sgYW5kIHRoZSBkZWFkLuKAnSBIZXJlIGl0IHdpbGwgYmUgc2VlbiB0aGF0IGZvciAKdGhlIGZpcnN0IHRpbWUgd2UgY29tZSB0byBhIGRlZmluaXRlIGRpdmVyZ2VuY2Ugb2YgCm1lYW5pbmcgYmV0d2VlbiB0aGUgd29yZGluZyBvZiB0aGUgQ3JlZWQgYXMgd2UgaGF2ZSAKaXQgbm93IGFuZCB0aGF0IG9mIHRoZSBFZ3lwdGlhbiBydWJyaWMuIEluIHRoZSBsYXR0ZXIgCnRoaXMgY2xhdXNlIGlzIHNpbXBseSBhbiBleHRlbnNpb24gb2YgdGhlIGZvcm1lciwgYW5kIApwdXRzIGJlZm9yZSB1cyB2ZXJ5IGNsZWFybHkgYW5kIGJlYXV0aWZ1bGx5IHRoZSBvYmplY3QgCgoKNzAgVEhFIENIUklTVElBTiBDUkVFRCwgCgoKb2YgdGhlIHdob2xlIHZhc3QgY291cnNlIG9mIGV2b2x1dGlvbjog4oCY4oCYaGUgc2hhbGwgYmUgCmNhcnJpZWQgdXAgaW50byBoZWF2ZW4gdG8gYmUgdGhlIHJpZ2h0IGhhbmQgb2YgSGltIApmcm9tIFdob20gaGUgY2FtZSwgaGF2aW5nIGxlYXJudCB0byBndWlkZSB0aGUgbGl2aW5nIAphbmQgdGhlIGRlYWQu4oCd4oCZIAoKT25lIHRyYWNlIGF0IGxlYXN0IHdoaWNoIGlzIGFjY2Vzc2libGUgdG8gb3JkaW5hcnkgCnNjaG9sYXJzaGlwIGlzIGxlZnQgdG8gdXMgdG8gY29uZmlybSB0aGUgaWRlYSB0aGF0IAp0aGlzIG1heSBoYXZlIGJlZW4gdGhlIG9yaWdpbmFsIHJlYWRpbmcsIGZvciBpbiB0aGUgClJlZ3VsYSBvZiBBcGVsbGVzLCB0aGUgZGlzY2lwbGUgb2YgTWFyY2lvbiwgdGhpcyBjbGF1c2UgCnJ1bnMsIOKAmHRoZSByaWdodCBoYW5kIG9mIHRoZSBGYXRoZXIsIHdoZW5jZSBoZSBoYXRoIApjb21lIHRvIHJ1bGUgdGhlIGxpdmluZyBhbmQgdGhlIGRlYWQu4oCdIFRodXMgYWxsIApyZWZlcmVuY2UgdG8gdGhlIGV4cGVjdGVkIHNlY29uZCBhZHZlbnQgb2YgQ2hyaXN0IGlzIApyZW1vdmVkLCBhbmQgd2UgaGF2ZSBhbiBpbXBvcnRhbnQgc3RhdGVtZW50IHdoaWNoIApub3Qgb25seSBlbXBoYXNpemVzIHRoZSBncmVhdCBmYWN0IHRoYXQgdGhlIGxpZmUgd2hpY2ggCmlzIHBvdXJlZCBmb3J0aCByZXR1cm5zIGluIGZ1bGxlc3QgbWVhc3VyZSB0byBIaW0gZnJvbSAKd2hvbSBpdCBjYW1lLCBidXQgYWxzbyBkZWNsYXJlcyB0aGF0IHRoZSB3aG9sZSB2YXN0IApwcm9jZXNzIHdhcyB1bmRlcnRha2VuIGluIG9yZGVyIHRoYXQgbWFua2luZCBzbyAKcmV0dXJuaW5nIHNob3VsZCBiZSB0aGUgcmlnaHQgaGFuZCBvZiB0aGF0IEZhdGhlciAKYWxtaWdodHkgaW4gSGlzIHdvcmsgb2YgZ3VpZGluZyB0aGUgbGl2aW5nIGFuZCB0aGUgCmRlYWQuIOKAmFRoZSBncmVhdCB0cnV0aCB0aGF0IGFsbCBwb3dlciB3aGljaCBpcyBnYWluZWQgCmlzIGJ1dCBoZWxkIGluIHRydXN0LCB0byBiZSB1c2VkIGFzIGEgbWVhbnMgb2YgaGVscGluZyAKb3RoZXJzLCBoYXMgcmFyZWx5IGJlZW4gbW9yZSBjbGVhcmx5IGFuZCBtb3JlIGdyYW5kbHkgCnNldCBmb3J0aC4gCgpOb3Qgb25seSBoYXMgbXVjaCBtaXN1bmRlcnN0YW5kaW5nIGJlZW4gY2F1c2VkIApieSB0aGUgY29uZnVzaW9uIHdoaWNoIGhhcyBiZWVuIGhlcmUgaW50cm9kdWNlZCBpbnRvIAp0aGUgQ3JlZWQsIGJ1dCB0aGlzIG1pc3VuZGVyc3RhbmRpbmcgaGFzIGJlZW4gZnVydGhlciAKYWNjZW50dWF0ZWQgYnkgdGhlIHVzZSBvZiB0aGUgZXhwcmVzc2lvbiDigJwgdG8ganVkZ2Uu4oCdIApFdmlkZW5jZSBpcyBub3Qgd2FudGluZyB0byBzaG93IHRoYXQgaW4gdGhlIEVuZ2xpc2ggCm9mIHRoZSBwZXJpb2Qgd2hlbiB0aGVzZSBkb2N1bWVudHMgd2VyZSB0cmFuc2xhdGVkIAp0aGUgc2lnbmlmaWNhbmNlIG9mIHRoaXMgd29yZCB3YXMgYSB3aWRlciBvbmUgdGhhbiAKCgpUSEUgSE9MWSBHSE9TVC4gNzEgCgoKdGhhdCB1c3VhbGx5IGFzc2lnbmVkIHRvIGl0IG5vdywgYXMgd2UgbWF5IHNlZSBmcm9tIApzdWNoIHJlbWFya3MgYXMg4oCY4oCYIERlYm9yYWgganVkZ2VkIElzcmFlbCBhdCB0aGF0IHRpbWXigJ3igJkgCihKdWRnZXMgaXYuIDQpLCBhbmQg4oCY4oCYIEFmdGVyIGhpbSBhcm9zZSBKYWlyLCBhIEdpbGVhZGl0ZSwgCmFuZCBqdWRnZWQgSXNyYWVsIHR3ZW50eSBhbmQgdHdvIHllYXJz4oCdIChKdWRnZXMgeC4gMyksIApldGMuLCB3aGVyZSBpdCBpcyBvYnZpb3VzIHRoYXQgdG8ganVkZ2UgaXMgc2ltcGx5IApzeW5vbnltb3VzIHdpdGggdG8gcnVsZeKAlGEgbWVhbmluZyB3aGljaCBicmluZ3MgCnVzIG11Y2ggbmVhcmVyIHRvIHRoZSBjb25jZXB0aW9uIG9mIGd1aWRpbmcgYW5kIApoZWxwaW5nIGNvbnZleWVkIGluIHRoZSBFZ3lwdGlhbiBmb3JtdWxhLiBXZWxsIAptYXkgaXQgYmUgc2FpZCwgaW4gdGhlIHdvcmRzIGFkZGVkIGluIHRoZSBOaWN6YW4gCnN5bWJvbCwgb2YgdGhpcyBtYWduaWZpY2VudCBjb25jZXB0aW9uIG9mIGEgcnVsZXIgCndob3NlIG9ubHkgb2JqZWN0IGlzIHRvIGd1aWRlIGFuZCB0byBoZWxwOiDigJhIaXMgCmtpbmdkb20gc2hhbGwgaGF2ZSBubyBlbmQu4oCdIAoK4oCY4oCYVCBiZWxpZXZlIGluIHRoZSBIb2x5IEdob3N0LuKAnSBJbiB0aGlzIGNsYXVzZeKAlCAKdGhlIGZpbmFsIG9uZSBvZiB0aGUgb3JpZ2luYWwgQ3JlZWQgZHJhd24gdXAgYnkgdGhlIApDb3VuY2lsIG9mIE5pY3p6YWHigJR3ZSByZXR1cm4gb25jZSBtb3JlIHRvIHRoZSBmb3JtdWxhIAphcyBnaXZlbiBieSB0aGUgQ2hyaXN0LiBJdCBoYXMgYWxyZWFkeSBiZWVuIGV4cGxhaW5lZCAKaW4gdGhlIGVhcmxpZXIgcGFydCBvZiB0aGlzIHZvbHVtZSB0aGF0IHRoZSBIb2x5IEdob3N0IApjb3JyZXNwb25kcyB0byB0aGUgVGhpcmQgTG9nb3Mgb3IgTWFoYXTigJR0aGUg4oCc4oCYIFNwaXJpdCAKb2YgR29kIHdoaWNoIGJyb29kcyBvdmVyIHRoZSBmYWNlIG9mIHRoZSB3YXRlcnPigJ0gb2YgCnNwYWNlLCBhbmQgc28gYnJpbmdzIGludG8gZXhpc3RlbmNlIG1hdHRlciBhcyB3ZSBrbm93IAppdCB0by1kYXkuIFRvIEhpcyBlbmVyZ3kgYXJlIGR1ZSBhbGwgdGhlIHByaW1hcnkgCmNvbWJpbmF0aW9ucyBvZiB0aGUgdWx0aW1hdGUgYXRvbXMgb2Ygb3VyIHBsYW5lcywgc28gCnRoYXQgdGhlIOKAmOKAmGF0b21z4oCdIHdpdGggd2hpY2ggbW9kZXJuIGNoZW1pc3RyeSBkZWFscyAKYXJlIG1vbnVtZW50cyBvZiBIaXMgd29yay4gSGlzIGFjdGlvbiBicm91Z2h0IAp0aGVtIGludG8gZXhpc3RlbmNlIGluIGEgY2VydGFpbiBkZWZpbml0ZSBvcmRlciDigJRhbiAKb3JkZXIgd2hpY2gsIHNvIGZhciBhcyBpbnZlc3RpZ2F0aW9uIGludG8gdGhpcyBzdWJqZWN0IApoYXMgeWV0IGJlZW4gY2FycmllZCwgYXBwZWFycyB0byBjb3JyZXNwb25kIHdpdGggdGhhdCAKb2YgdGhlaXIgYXRvbWljIHdlaWdodHMsIHNvIHRoYXQgc3Vic3RhbmNlcyBoYXZpbmcgCmhpZ2ggYXRvbWljIHdlaWdodHMsIHN1Y2ggYXMgbGVhZCwgZ29sZCBvciBwbGF0aW51bSwgCgoKNzIgVEhFIENIUklTVElBTiBDUkVFRC0gCgoKYXJlIG9mIG11Y2ggbGF0ZXIgZm9ybWF0aW9uIHRoYW4gZWxlbWVudHMgb2YgbG93IAphdG9taWMgd2VpZ2h0LCBzdWNoIGFzIGh5ZHJvZ2VuLCBoZWxpdW0gb3IgbGl0aGl1bS4gCgpBdCB0aGUgQ291bmNpbCBvZiBDb25zdGFudGlub3BsZSBpbiAzODEgYS5wLiwgdGhlIApiYXJlIHN0YXRlbWVudCBvZiB0aGUgZXhpc3RlbmNlIG9mIHRoZSBIb2x5IEdob3N0LCAKd2hpY2ggd2FzIGFsbCB0aGF0IHdhcyBjb250YWluZWQgZWl0aGVyIGluIHRoZSBBcG9zdGxlc+KAmSAKQ3JlZWQgb3IgaW4gdGhlIG9yaWdpbmFsIGZvcm0gb2YgdGhhdCBvZiBOaWN6YSwgd2FzIApjb25zaWRlcmFibHkgYW1wbGlmaWVkLCBhbmQgdGhlIGJlYXV0aWZ1bCB0aXRsZSBvZiDigJjigJggdGhlIApMaWZlLWdpdmVy4oCd4oCZIHdhcyB0aGVuIGZvciB0aGUgZmlyc3QgdGltZSBpbnNlcnRlZC4gVGhlIApFbmdsaXNoIHZlcnNpb24gdW5mb3J0dW5hdGVseSBsZW5kcyBpdHNlbGYgaGVyZSB0byBhIAp2ZXJ5IGNvbW1vbiBtaXN1bmRlcnN0YW5kaW5nLCBhbmQgbW9zdCBwZW9wbGUgYXMgCnRoZXkgcmVjaXRlIOKAmOKAmHRoZSBMb3JkIGFuZCBHaXZlciBvZiBMaWZl4oCdIHByb2JhYmx5IApzdXBwb3NlIGl0IHRvIG1lYW7igJRpZiB0aGV5IGV2ZXIgdGhpbmsgb2YgaXRzIG1lYW5pbmcgCmF0IGFsbOKAlHRoZSBMb3JkIG9mIExpZmUgYW5kIHRoZSBHaXZlciBvZiBMaWZlLiBBIApyZWZlcmVuY2UgdG8gdGhlIG9yaWdpbmFsIEdyZWVrIGF0IG9uY2Ugc2hvd3MgdGhhdCAKc3VjaCBhIGNvbnN0cnVjdGlvbiBpcyBlbnRpcmVseSB1bndhcnJhbnRlZCwgYW5kIHRoYXQgCnRoZSBwcm9wZXIgdHJhbnNsYXRpb24gaXMgc2ltcGx5IOKAnHRoZSBMb3JkLCB0aGUgTGlmZS0gCmdpdmVyLuKAnSAKCldlbGwgbWlnaHQgc3VjaCBhIHRpdGxlIGJlIGFzc2lnbmVkIHRvIEhpbSwgbm90IApvbmx5IGJlY2F1c2Ugb2YgdGhlIG1pZ2h0eSB3b3JrIHdoaWNoIEhlIGRpZCB3aGVuIAp0aGUgc29sYXIgc3lzdGVtIGNhbWUgaW50byBleGlzdGVuY2UsIG5vdCBvbmx5IGJlY2F1c2UgCmZyb20gSGltIGNvbWVzIGFsbCBsaWZlIG9mIHdoaWNoIHdlIGtub3cgYW55dGhpbmcgCihmb3IgdGhlIG9tbmlwcmVzZW50IGppdmEgaXMgYnV0IHRoZSBtYW5pZmVzdGF0aW9uIG9mIApIaW0gdXBvbiB0aGVzZSBsb3dlciBwbGFuZXMpLCBidXQgYmVjYXVzZSBvZiB0aGUgCmVxdWFsbHkgc3R1cGVuZG91cyB3b3JrIHdoaWNoIEhlIGlzIGRvaW5nIGV2ZW4gbm93LiAKV2hldGhlciB0aGUgZWZmZWN0IG9mIHRoYXQgZmlyc3QgZ3JlYXQgb3V0cG91cmluZyBvZiAKZW5lcmd5IGlzIG5vdyBjb21wbGV0ZSwgb3Igd2hldGhlciBjaGVtaWNhbCBlbGVtZW50cyAKb2YgYSBzdGlsbCBtb3JlIGVsYWJvcmF0ZSBraW5kIGFyZSBzdGlsbCBpbiBwcm9jZXNzIG9mIApwcm9kdWN0aW9uLCB3ZSBrbm93IG5vdDsgYnV0IGl0IGlzIGF0IGxlYXN0IGNlcnRhaW4gCnRoYXQgYWxsIGFyb3VuZCB1cyBhbiBldm9sdXRpb24gaXMgZ29pbmcgb24gdXBvbiBhIAoKCiolIAoKCkFUT01JQyBFVk9MVVRJT04uIDczIAoKCnNjYWxlIHNvIHZhc3QgaW4gaXRzIHRvdGFsaXR5LCB5ZXQgc28gaW5maW5pdGVseSBtaW51dGUgCmluIGl0cyBtZXRob2QsIHRoYXQgd2UgbGl2ZSBpbiB0aGUgbWlkc3Qgb2YgaXQsIHlldCBpbiAKdGhlIG1vc3QgYWJzb2x1dGUgdW5jb25zY2lvdXNuZXNzIG9mIGl0LiAKCk5vdCB0aGUgc3Bpcml0dWFsIGV2b2x1dGlvbiBvZiB0aGUgaW1tb3J0YWwgc291bCBpbiAKbWFuLCBmb3IgdGhhdCBpcyB0aGUgd29yayBvZiB0aGUgRmlyc3QgTG9nb3Mgb2Ygb3VyIApzeXN0ZW0gOyBub3QgdGhlIGV2b2x1dGlvbiB3aGljaCBzY2llbmNlIHJlY29nbml6ZXMgCmFzIGV2ZXIgaW4gcHJvZ3Jlc3MgaW4gdGhlIGFuaW1hbCBhbmQgdmVnZXRhYmxlIGtpbmctIApkb21z4oCUdGhlIGRldmVsb3BtZW50IG9mIGludGVsbGlnZW5jZSBhbmQgZmFjdWx0eSBieSAKbWVhbnMgb2YgcmVwZWF0ZWQgZXhwZXJpZW5jZXMsIGFuZCB0aGUgY29ycmVzcG9uZGVuLSAKdGlhbCBtb2RpZmljYXRpb24gaW4gb3V0ZXIgZm9ybXMgd2hpY2ggaXMgdGhlIHJlc3VsdCBvZiAKdGhpcyA7IG5vdCBldmVuIHRoZSBldm9sdXRpb24gb2YgdGhlIHBvd2VyIG9mIGNvbWJpbmEtIAp0aW9uIGluIHRoZSBtaW5lcmFsIGtpbmdkb20sIHNvIHRoYXQgZXZlciBtb3JlIGFuZCAKbW9yZSBjb21wbGV4IGNoZW1pY2FsIGNvbXBvdW5kcyBhcmUgZ3JhZHVhbGx5IGNvbS0gCmluZyBpbnRvIGJlaW5n4oCUZm9yIGFsbCB0aGVzZSBhcmUgcGFydCBvZiB0aGUgd29uZGVyZnVsIAphY3Rpdml0eSBvZiB0aGUgU2Vjb25kIExvZ29zOyBidXQgd2l0aGluIGFuZCBiZWhpbmQgCmFsbCB0aGVzZSBpcyB0aGUgZXZvbHV0aW9uIG9mIHRoZSBhdG9tIGl0c2VsZi4gCgpUbyBleHBsYWluIHRoZSBtZXRob2Qgb2YgdGhpcyBldm9sdXRpb24gd291bGQgdGFrZSAKZmFyIG1vcmUgc3BhY2UgdGhhbiBjYW4gYmUgZGV2b3RlZCB0byBpdCBoZXJlLCBhbmQgCndvdWxkIGFsc28gYmUgc29tZXdoYXQgb3V0c2lkZSB0aGUgaW1tZWRpYXRlIHNjb3BlIApvZiBhIHRyZWF0aXNlIG9uIHRoZSBDcmVlZDsgYnV0IGFuIGluZGljYXRpb24gb2YgdGhlIApkaXJlY3Rpb24gaW4gd2hpY2ggaXQgd29ya3MgbWF5IHJlYWRpbHkgYmUgZ2l2ZW4gdG8gCnRob3NlIHdobyBoYXZlIHJlYWQgTXJzLiBCZXNhbnTigJlzIGFydGljbGUgb24g4oCY4oCcIE9jY3VsdCAKQ2hlbWlzdHJ5IOKAmSBpbiBMdWN6ZmVyIGZvciBOb3ZlbWJlciwgMTg5NS4gSXQgd2lsbCAKYmUgcmVtZW1iZXJlZCB0aGF0LCBpbiB0aGUgaWxsdXN0cmF0aW9uIGFjY29tcGFueWluZyAKdGhhdCBwYXBlciwgdGhlIGF0b20gd2FzIHNob3duIGFzIGNvbXBvc2VkIG9mIGEgCnNlcmllcyBvZiBzcGlyYWwgdHViZXMgYXJyYW5nZWQgaW4gYSBjZXJ0YWluIG9yZGVyLCBhbmQgCml0IHdhcyBleHBsYWluZWQgdGhhdCB0aGVzZSB0dWJlcyB0aGVtc2VsdmVzIHdlcmUgaW4gCnR1cm4gY29tcG9zZWQgb2YgZmluZXIgdHViZXMgc3BpcmFsbHkgY29pbGVkLCBhbmQgdGhlc2UgCmZpbmVyIHR1YmVzIGluIHR1cm4gb2Ygb3RoZXJzIHN0aWxsIGZpbmVyLCBhbmQgc28gb24uIAoKCjc0IFRIRSBDSFJJU1RJQU4gQ1JFRUQuIAoKClRoZXNlIGZpbmVyIHR1YmVzIGhhdmUgYmVlbiBjYWxsZWQgc3BpcmlsbHogb2YgdGhlIGZpcnN0LCAKc2Vjb25kIGFuZCB0aGlyZCBvcmRlcnMgcmVzcGVjdGl2ZWx5OyBhbmQgaXQgaXMgZm91bmQgCnRoYXQgYmVmb3JlIHdlIGdldCBiYWNrIHRvIHRoZSBzdHJhaWdodCBmaWxhbWVudCBvciAKbGluZSBvZiBhc3RyYWwgYXRvbXMsIGJ5IHRoZSBjb252b2x1dGlvbnMgb2YgdGVuIG9mIAp3aGljaCBsaW5lcyB0aGUgcGh5c2ljYWwgYXRvbSBpcyB1bHRpbWF0ZWx5IGZvcm1lZCwgCndlIGhhdmUgdG8gdW53aW5kIHNldmVuIHNlcmllcyBvZiB0aGUgc3BpcmlsbCMsIGVhY2ggCm9mIHdoaWNoIGlzIHdvdW5kIGF0IHJpZ2h0IGFuZ2xlcyB0byB0aGUgb25lIHByZWNlZC0gCmluZyBpdC4gCgpOb3cgaW4gdGhlIHBlcmZlY3RlZCBwaHlzaWNhbCBhdG9tLCBhcyBpdCB3aWxsIGJlIGF0IAp0aGUgZW5kIG9mIHRoZSBzZXZlbnRoIHJvdW5kLCBhbGwgb2YgdGhlc2Ugb3JkZXJzIG9mIApzcGlyaWxseiB3aWxsIGJlIGZ1bGx5IHZpdGFsaXplZCBhbmQgYWN0aXZlLCBlYWNoIHdpdGggYSAKZGlmZmVyZW50IG9yZGVyIG9mIGZvcmNlIGZsb3dpbmcgdGhyb3VnaCBpdDogYW5kIHRodXMgCnRoaXMgcGFydGljdWxhciBwYXJ0IG9mIHRoZSB3b3JrIG9mIHRoZSBIb2x5IEdob3N0IHdpbGwgCmJlIGFjY29tcGxpc2hlZC4gQXQgcHJlc2VudCB3ZSBhcmUgaW4gdGhlIGZvdXJ0aCAKcm91bmQsIGFuZCBvbmx5IGZvdXIgb2YgdGhlc2Ugb3JkZXJzIG9mIHNwaXJpbGx6IGFyZSBhcyAKeWV0IGluIGFjdGl2aXR5LCBzbyB0aGF0IGV2ZW4gdGhlIHZlcnkgcGh5c2ljYWwgbWF0dGVyIAppbiB3aGljaCB3ZSBoYXZlIHRvIHdvcmsgaXMgdmVyeSBmYXIgZnJvbSBoYXZpbmcgCnVuZm9sZGVkIGl0cyBmdWxsIGNhcGFjaXRpZXMuIFRoaXMgbWlnaHR5IHByb2Nlc3Mgb2YgCmF0b21pYyBldm9sdXRpb24sIHdoaWNoIGludGVycGVuZXRyYXRlcyBhbGwgZWxzZSBhbmQgCnlldCBtb3ZlcyBvbiBpdHMgd2F5IGFic29sdXRlbHkgaW5kZXBlbmRlbnQgb2YgYWxsIApjb25kaXRpb25zLCBpcyBldmVyIGJlaW5nIGNhcnJpZWQgc3RlYWRpbHkgb24gYnkgdGhlIAp3b25kZXJmdWwgaW1wdWxzZSBvZiB0aGF0IGZpcnN0IG91dHBvdXJpbmcgb2YgdGhlIFRoaXJkIApMb2dvcy4gCgpJdCBzZWVtcyBjbGVhciB0aGF0IGFsbCB0aGlzIG1hcnZlbGxvdXMgYWN0aXZpdHkgaXMgCmFuZCBoYXMgZXZlciBiZWVuIHN0ZWFkaWx5IHRlbmRpbmcgdG93YXJkcyBkaWZmZXJlbnRpYS0gCnRpb27igJRpbmRpdmlkdWFsaXphdGlvbiwgYXMgaXQgd2VyZTsgd2hpbGUgaXQgaXMgZXF1YWxseSAKZXZpZGVudCB0aGF0IHRoZSBhY3Rpb24gb2YgdGhlIHNlY29uZCBncmVhdCBvdXRwb3VyaW5nIApnaXZlcyBhbGwgc29ydHMgb2YgbmV3IHBvd2VycyBvZiBjb21iaW5hdGlvbiB3aGljaCAKYXBwZWFyIHRvIGJlIHRlbmRpbmcgYmFjayBhZ2FpbiB0b3dhcmRzIGEga2luZCBvZiAKCgpBIFBSSU5DSVBMRSBPRiBFVk9MVVRJT04uIDQ1IApAIAoKCmhpZ2hlciB1bml0eSwgc28gdGhhdCB3ZSBoYXZlIGhlcmUgd2hhdCBsb29rcyBhdCBmaXJzdCAKc2lnaHQgbGlrZSBhbiBvcHBvc2l0aW9uIGJldHdlZW4gdGhlIHdvcmtpbmcgb2YgdGhlc2UgCnR3byBtaWdodHkgZm9yY2VzLiAKCk5vdywgYXMgSSBoYXZlIHNhaWQgYmVmb3JlLCBpdCBpcyBvYnZpb3VzIHRoYXQgd2l0aCAKc3VjaCBleGNlZWRpbmdseSBmcmFnbWVudGFyeSBrbm93bGVkZ2Ugb2YgYWxsIHRoZXNlIAp3b25kZXJmdWwgb3BlcmF0aW9ucyBhcyB3ZSBhdCBwcmVzZW50IHBvc3Nlc3MsIGFuZCAKd2l0aCB0aGUgZnVydGhlciBkaXNhZHZhbnRhZ2Ugb2YgbG9va2luZyBhdCB0aGVtIGFsbCAKZnJvbSBzbyBsb3cgYSBwbGFuZSwgZXhhbWluaW5nIGFsbCB0aGVpciBhY3Rpb24gYXMgaXQgCndlcmUgZnJvbSBiZWxvdyBpbnN0ZWFkIG9mIGZyb20gYWJvdmUsIGFueSBpZGVhcyAKd2hpY2ggZXZlbiB0aGUgd2lzZXN0IG9mIHVzIG1heSBmb3JtIGFzIHRvIHRoZSByZWFsIAp3b3JraW5nIG9mIHRoZSBncmVhdCBzY2hlbWUgbXVzdCBuZWNlc3NhcmlseSBiZSBzbyAKaW5jb21wbGV0ZSB0aGF0IHRoZXkgbWF5IHdlbGwgYmUgaG9wZWxlc3NseSBtaXNsZWFkLSAKaW5nLCBhbmQgdW5sZXNzIHB1dCBmb3J3YXJkIHdpdGggZHVlIHJlc2VydmF0aW9uIGFuZCAKbW9kZXN0eSB0aGV5IHdvdWxkIGJlIG9ubHkgdG9vIGxpa2VseSB0byBiZSBibGFzLSAKcGhlbW91cyBhcyB3ZWxsLiBZZXQgaXQgc2VlbXMgdG8gbWUgdGhhdCwgaW4gc3VjaCAKZXhhbWluYXRpb24gYXMgaXMgcG9zc2libGUgZm9yIHVzIG9mIHRoaXMgbWFydmVsbG91cyAKY29tcGxleGl0eSBvZiBldm9sdXRpb24sIHdlIGRvIGdldCBoZXJlIGFuZCB0aGVyZSAKZ2xpbXBzZXMgb2YgYSBwYXJ0IG9mIGl0cyBwbGFu4oCUaGludHMgd2hpY2ggd2UgY2FuIAp0ZXN0IGJ5IGFwcGx5aW5nIHRoZW0gdG8gZGlmZmVyZW50IGxldmVscyBvZiB0aGlzIHByb2Nlc3MgCm9mIGRldmVsb3BtZW50LiAKCkhlcmUsIGZvciBleGFtcGxlLCB3ZSBzZWVtIHRvIHNlZSBjbGVhcmx5IGluIGFjdGlvbiAKdGhlIGJyb2FkIHByaW5jaXBsZSBvZiBmaXJzdCBvZiBhbGwgZ2VuZXJhdGluZyBhIGNlcnRhaW4gCnNldCBvZiBlbGVtZW50cywgYW5kIGVuZG93aW5nIHRoZW0gd2l0aCBzbyBtdWNoIG9mIApzdGFiaWxpdHksIGFuZCBhcyBpdCB3ZXJlIGluZGl2aWR1YWxpdHksIHRoYXQgdW5kZXIgYWxsIApvcmRpbmFyeSBjb25kaXRpb25zIG9mIHRlbXBlcmF0dXJlIGFuZCBwcmVzc3VyZSB0aGV5IAptYWludGFpbiB0aGVpciBwb3NpdGlvbiBhcyBzZXBhcmF0ZSBlbnRpdGllcyA7IHdoaWxlIGFzIAphIGxhdGVyIGFuZCBkaXN0aW5jdGx5IGhpZ2hlciBzdGFnZSBvZiB0aGVpciBldm9sdXRpb24gCnRoZXJlIGlzIGRldmVsb3BlZCB3aXRoaW4gdGhlbSB0aGUgY2FwYWJpbGl0eSBvZiBhbmQgCnRoZSBkZXNpcmUgZm9yIHVuaW9uLiBJdCBpcyBpbXBvc3NpYmxlIG5vdCB0byBiZSByZS0gCgoKNzYgVEhFIENIUklTVElBTiBDUkVFRC4gCgoKbWluZGVkLCBieSB0aGlzIHJvdWdoIG91dGxpbmUgb2YgZXZvbHV0aW9uIGluIHRoZSAKbWluZXJhbCBraW5nZG9tLCBvZiB0aGUgc3RhdGVtZW50IHRoYXQgdGhlIExvZ29zIApIaW1zZWxmIGhhcyBiZWNvbWUgbWFuaWZlc3Qgb25seSBpbiBvcmRlciB0aGF0IGZyb20gCkhpbSBtaWdodCBlbWFuYXRlIGFuIGltbWVuc2UgbXVsdGl0dWRlIG9mIGluZGl2aS0gCmR1YWxzIHdobywgd2hlbiB0aGV5IGhhdmUgYmVjb21lIHN1ZmZpY2llbnRseSBzZXBhLSAKcmF0ZWQgdG8gYmUgZWFjaCBhIGxpdmluZyBhbmQgcG93ZXJmdWwgY2VudHJlLCBzaGFsbCByaXNlIAphZ2FpbiB0b3dhcmRzIHBlcmZlY3QgdW5pb24gYW5kIHJlYWxpemUgdGhlaXIgb25lbmVzcyAKaW4gSGltLiAKCkV2ZW4gd2hlbiB3ZSB0dXJuIHRvIGV4YW1pbmUgdGhlIGluZGl2aWR1YWwgZGUtIAp2ZWxvcG1lbnQgb2YgbWFuLCB3ZSBtYXkgc3RpbGwgc2VlIHRoZSBzYW1lIHByaW5jaXBsZSAKd29ya2luZy4gQWZ0ZXIgbWFuIGFzIGFuIGluZGl2aWR1YWwgd2l0aCBhIGNhdXNhbCAKYm9keSBoYXMgZGVmaW5pdGVseSBjb21lIGludG8gZXhpc3RlbmNlLCB0aGUgd2hvbGUgCmZvcmNlIG9mIGhpcyBlbnZpcm9ubWVudCBzZWVtcyB0byBiZSBkaXJlY3RlZCB0byB0aGUgCmV2b2x1dGlvbiBpbiBoaW0gb2YgbWFuYXMsIHRoZSBkaXNjcmltaW5hdGl2ZSBhbmQgCnNlcGFyYXRpdmUgZmFjdWx0eSwgd2hpY2ggaW4gaGltIGFzIHRoZSBtaWNyb2Nvc20gCmRpc3RpbmN0bHkgY29ycmVzcG9uZHMgd2l0aCBNYWhhdCwgdGhlIHVuaXZlcnNhbCBNaW5kIApvciB0aGUgSG9seSBTcGlyaXQgaW4gdGhlIG1hY3JvY29zbS4gTXVjaCBsYXRlciAKY29tZXMgdGhlIGRldmVsb3BtZW50IG9mIHRoZSBidWRkaGksIHRoZSBmYWN1bHR5IG9mIApjb21iaW5pbmcgYW5kIHVuaWZ5aW5nLCB3aGljaCBtYXkgYmUgdGFrZW4gYXMgaW4gCm1hbnkgd2F5cyBjb3JyZXNwb25kaW5nIHdpdGggdGhlIFNlY29uZCBMb2dvcyBpbiAKdGhlIHdpZGVyIHdvcmxkLiBJbmRlZWQsIGluY29tcHJlaGVuc2libGUgdGhvdWdoIAp0aGUgc3RhdGVtZW50IG1heSBiZSwgaG9wZWxlc3MgYXMgd291bGQgYmUgYW55IGVmZm9ydCAKdG8gZXhwbGFpbiBpdCwgaXQgaXMgaW4gcmVhbGl0eSB0cnVlIHRoYXQgdGhlIHByaW5jaXBsZXMgCmluIG1hbiB3aGljaCB3ZSBjYWxsIDR0bWEsIGJ1ZGRoaSwgbWFuYXMsIGFyZSBub3QgCm1lcmVseSBjb3JyZXNwb25kZW5jZXMsIG5vdCBtZXJlbHkgZXZlbiByZWZsZWN0aW9ucyAKb3IgcmF5cyBvZiB0aGUgVGhyZWUgR3JlYXQgTG9nb2ksIGJ1dCBhcmUgc29tZWhvdyAKaW4gdmVyeSB0cnV0aCB0aGVtc2VsdmVzIHRob3NlIGdsb3Jpb3VzIGVudGl0aWVzLCB1bi0gCmNyZWF0ZSwgaW5jb21wcmVoZW5zaWJsZSwgdGhlIEZhdGhlciwgdGhlIFNvbiBhbmQgdGhlIApIb2x5IEdob3N0LiAKCgpUSEUgREFXTiBPRiBCVURESEkuIDc3IAoKCkluIHRoZSBzdGFnZXMgb2Ygd29ybGQtZXZvbHV0aW9uIGFsc28gd2UgZmluZCB0aGUgCnNhbWUgZ2VuZXJhbCBsYXcgaG9sZGluZyBnb29kLiBJbiBpdCBhbHNvIHNvIGZhciB0aGUgCmFjdGlvbiBoYXMgYmVlbiBjaGllZmx5IGNyZWF0aXZlIGFuZCBzZXBhcmF0aXZlLCBjaGllZmx5IApjb25jZXJuZWQgd2l0aCB0aGUgZGV2ZWxvcG1lbnQgb2YgbWFuYXMsIGFuZCB3ZSAKaGF2ZSBzY2FyY2VseSBhcyB5ZXQgZXZlbiB0aGUgZGF3biBvZiB0aGUgdW5mb2xkaW5nIApvZiB0aGUgYnVkZGhpLCB0aGUgZ3JlYXQgdW5pZnlpbmcgcG93ZXIgd2hpY2ggaXMgdHJ1bHkgCnRoZSBDaHJpc3QgaW4gbWFuLiAKCkhlcmUgYW5kIHRoZXJlIHdlIHNlZSBvbmUgbWFuIHdobyBzaG93cyBhIGxpdHRsZSAKb2YgaXRzIGluZmx1ZW5jZeKAlGhlcmUgYW5kIHRoZXJlIGZhaW50IGluZGljYXRpb25zIG9mIAp3aGF0IGlzIHRvIGNvbWUgbWF5IGJlIGRpc2Nlcm5lZCBieSB0aG9zZSB3aG8ga25vdyAKaG93IHRvIHJlYWQgdGhlIHNpZ25zIG9mIHRoZSB0aW1lcy4gTmF5LCBpdCBtYXkgZXZlbiAKYmUgdGhhdCBzb21lIG9mIHRoZSBtb3N0IHRlcnJpYmxlIGZlYXR1cmVzIG9mIG91ciBzb2NpYWwgCmNvbmRpdGlvbiwgZXZpbCB0aG91Z2ggdGhleSBhcmUgaW4gdGhlaXIgcmVzdWx0cywgZXZpbCBpbiAKdGhlaXIgb3JnYW5pemF0aW9uIGJlY2F1c2Ugc28gaG9wZWxlc3NseSBtYXJyZWQgYnkgdGhlIApzZWxmaXNobmVzcyBhbmQgaWdub3JhbmNlIChhbmQgYmxpbmQgaGF0cmVkIG9mIGV2ZXJ5IApvbmUgd2lzZXIgYW5kIGJldHRlciB0aGFuIHRoZW1zZWx2ZXMpIHdoaWNoIGFyZSAKYWx3YXlzIHNob3duIGJ5IHRoZWlyIHByb21vdGVycywgbWF5IHlldCBpbiBhbGwgCnRoZWlyIGluaXF1aXR5IGhhdmUgdGhpcyBtdWNoIGRpbSByZWZsZWN0aW9uIG9mIGEgCmhvcGUgYmVoaW5kIHRoZW0sIHRoYXQgdGhleSBtYXkgcGVyY2hhbmNlIGJlIHRoZSAKZmlyc3QgbWFuaWZlc3RhdGlvbiB0aGF0IHRoZXJlIHRzIGEgZm9yY2UgcHJlc3NpbmcgYmUtIApoaW5k4oCUdGhlIGZpcnN0IGJsaW5kIGFuZCBtaXNkaXJlY3RlZCBncm9waW5ncyBvZiB0aGUgCnVuaW5zdHJ1Y3RlZCBhZnRlciB0aGUgdHJ1ZSB1bml0eSB0aGF0IGlzIG9uZSBkYXkgdG8gCmNvbWUsIHRob3VnaCBieSBtZWFucyB0aGUgdmVyeSBvcHBvc2l0ZSB0byB0aG9zZSAKd2hpY2ggYXJlIG5vdyBlbXBsb3llZC4gCgpXZSBtdXN0IHJlbWVtYmVyIHRoYXQgYWZ0ZXIgYWxsIHdlIGhhdmUgYnV0IGp1c3QgCnBhc3NlZCB0aGUgdHVybmluZy1wb2ludCBvZiB0aGUgd2hvbGUgc3lzdGVtIG9mIGV2b2x1LSAKdGlvbuKAlGJ1dCBqdXN0IGVudGVyZWQgdXBvbiB0aGUgbWlnaHR5IHVwd2FyZCBzd2VlcCAKd2hpY2ggMXMgdG8gZW5kIGluIGRpdmluaXR5LiBXZSBhcmUgc3RpbGwgaW4gdGhlIGZvdXJ0aCAKcm91bmTigJR0aGUgcm91bmQgcHJvcGVybHkgc3BlYWtpbmcgZGV2b3RlZCB0byB0aGUgCgoKNzggVEhFIENIUklTVElBTiBDUkVFRC4gCgoKZGV2ZWxvcG1lbnQgb2Yga2FtYSBhbmQgdGhlIGFzdHJhbCBib2R54oCUYW5kIHRoZSAKZmFjdCB0aGF0IHdlIGZpbmQgb3Vyc2VsdmVzIHBvc3Nlc3NlZCBvZiBtYW5hcyBhdCBhbGwgCmF0IHRoaXMgc3RhZ2Ugb2YgdGhlIHByb2NlZWRpbmdzIGlzIGR1ZSBhbG1vc3QgZW50aXJlbHkgCnRvIHRoZSBoZWxwIGFuZCBzdGltdWxhdGlvbiBnaXZlbiB0byBvdXIgaHVtYW5pdHkgCmJ5IHRoZSBhZHZlbnQgb2YgdGhlIGdyZWF0IExvcmRzIG9mIHRoZSBGbGFtZSBhdCBhIApwZXJpb2Qgd2hpY2ggaXMgYWZ0ZXIgYWxsIGNvbXBhcmF0aXZlbHkgcmVjZW50LiBUaGUgCmZ1bGwgZGV2ZWxvcG1lbnQgb2YgbWFuYXMgZXZlbiBpcyBub3QgZHVlIHVudGlsIAp0aGUgbmV4dCByb3VuZCwgc28gdGhhdCBzdXJlbHkgdGhlIG1lcmVzdCBmb3JldGFzdGUgb2YgCnRoZSBzdHVwZW5kb3VzIHBvd2VyIG9mIGJ1ZGRoaSAxcyBhbGwgdGhhdCB3ZSBjYW4gCmV4cGVjdCBmb3IgYSB2ZXJ5IGxvbmcgdGltZSB5ZXQuIAoKU3RpbGwsIG5hdHVyZSBpcyBzbG93bHkgbW92aW5nIGZvcndhcmQgdG93YXJkcyB0aGF0IApzdGFnZSwgYW5kIHRoZSBmdXR1cmUgaXMgd2l0aCB0aG9zZSB3aG8gZXZlbiBub3cgd2lsbCAKcmVjb2duaXplIHRoYXQgZmFjdCBhbmQgd29yayBmb3IgaXTigJR3aG8gd2lsbCBzdHJpdmUgaW4gCmV2ZXJ5IHBvc3NpYmxlIHdheSB0byBoZWxwIGZvcndhcmQgdGhlIHVuaWZ5aW5nIHByaW4tIApjaXBsZSwgdG8gYnJlYWsgZG93biB0aGUgYmFycmllcnMgb2YgZGlzdHJ1c3QgYW5kIGhhdHJlZCAKd2hpY2ggdW5mb3J0dW5hdGVseSBzbyBvZnRlbiBleGlzdCBiZXR3ZWVuIGNsYXNzIGFuZCAKY2xhc3MsIGJldHdlZW4gbmF0aW9uIGFuZCBuYXRpb24uIFRoYXQgaW5kZWVkIGlzIHRydWx5IApUaGVvc29waGljYWwgd29ya+KAlHRoZSB3b3JrIG9mIG91ciBNYXN0ZXJz4oCUd29yayAKaW4gd2hpY2ggaXQgaXMgdGhlIGdyZWF0ZXN0IG9mIHByaXZpbGVnZXMgdG8gYmUgYWxsb3dlZCAKdG8gam9pbiwgdG8gaG93ZXZlciBzbWFsbCBhbiBleHRlbnQsIGluIGhvd2V2ZXIgaHVtYmxlIAphIGNhcGFjaXR5LiAKCuKAmFdobyBwcm9jZWVkZXRoIGZyb20gdGhlIEZhdGhlciBhbmQgdGhlIFNvbi7igJ0gCkl0IHdhcyB3aXRoIHJlZmVyZW5jZSB0byB0aGlzIGRvY3RyaW5lIG9mIHRoZSBwcm9jZXNzaW9uIApvZiB0aGUgSG9seSBHaG9zdCB0aGF0IHRoZSBncmVhdCBzY2hpc20gYXJvc2Ugd2hpY2ggCnJlbnQgdGhlIENocmlzdGlhbiBDaHVyY2ggaW4gdHdhaW4sIG9uIHRoZSBxdWVzdGlvbiAKd2hldGhlciB0aGUgVGhpcmQgUGVyc29uIG9mIHRoZSBUcmluaXR5IGNhbWUgZm9ydGggCmZyb20gdGhlIEZpcnN0IGFsb25lLCBvciBmcm9tIHRoZSBGaXJzdCBhbmQgdGhlIFNlY29uZC4gCkxvb2tpbmcgYXMgd2UgYXJlIGRvaW5nIGF0IHRoZSBlc290ZXJpYyBtZWFuaW5nIG9mIAp0aGUgc3ltYm9sLCB3ZSBzZWUgdGhhdCB0aGUgV2VzdGVybiBDaHVyY2ggaW4gbm8gCgoKVEhFIFBST0MgRU9ST04gT0YgVEhFIEhPTFkgR0hPU1QuIDc5IAoKCndheSBhZGRlZCB0byBvciBjb3JydXB0ZWQgdGhlIG9yaWdpbmFsIGRvY3RyaW5lIGJ5IAppbnNlcnRpbmcgaXRzIGNlbGVicmF0ZWQg4oCcIGZpbGlvcXVl4oCdIGNsYXVzZSwgYnV0IG9ubHkgCmV4cHJlc3NlZCBpbiB3b3JkcyB3aGF0IG11c3QgaGF2ZSBiZWVuIG9idmlvdXMgZnJvbSAKdGhlIGZpcnN0IHRvIGFueSBvbmUgd2hvIHJlYWQgYmVoaW5kIHRoZSBtZXJlIGxldHRlciBvZiAKdGhlIGZvcm11bGEuIAoKTmVhcmVzdCBvZiBhbGwgdG8gdGhlIHRydXRoIHBlcmhhcHMgY2FtZSB0aGUgcmVuZGVyLSAKaW5nIG9mIFN0LiBKb2huIERhbWFzY2VuZTog4oCYIHdobyBwcm9jZWVkZXRoIGZyb20gCnRoZSBGYXRoZXIgdGhyb3VnaCB0aGUgU29u4oCdIChEZSBIeW1ubyBUcmlzYWcuLCBuLiAKMjgpIDsgeWV0IGl0IHNlZW1zIGFzIHRob3VnaCBpdCB3b3VsZCBoYXZlIGJlZW4gYmV0dGVyIApzdGlsbCBpZiBpbiB0aGUgb3JpZ2luYWwgZG9jdW1lbnQgdGhlIHdvcmRzIHVzZWQgdG8gZXgtIApwcmVzcyB0aGUgY29taW5nIGZvcnRoIG9mIHRoZSBTZWNvbmQgYW5kIFRoaXJkIExvZ29pIApoYWQgYmVlbiBpbnRlcmNoYW5nZWTigJRpZiBpdCBoYWQgYmVlbiB3cml0dGVuIHRoYXQgdGhlIApTb24gcHJvY2VlZGVkIGZyb20gdGhlIEZhdGhlciwgYW5kIHRoYXQgdGhlIEhvbHkgCkdob3N0IHdhcyBiZWdvdHRlbiBvZiB0aGUgU29uLiBJdCBoYXMgYmVlbiBhbHJlYWR5IApleHBsYWluZWQgdGhhdCB0aGUgcmVhbCBtZWFuaW5nIG9mIHBvdm95ZXZqcyBpcyBjb21pbmcgCmZvcnRoIGZyb20gb25lIGFsb25lLCBhbmQgbm90IGZyb20gdGhlIGludGVyYWN0aW9uIG9mIGEgCnBhaXIuIEV2ZXJ5dGhpbmcgZWxzZSBpbiBuYXR1cmUgb2Ygd2hpY2ggd2Uga25vdyBpcyAKcHJvZHVjZWQgYnkgdGhlIGludGVyYWN0aW9uIG9mIHR3byBmYWN0b3JzLCB3aGV0aGVyIAp0aGVzZSBmYWN0b3JzIGFyZSBzZXBhcmF0ZSBlbnRpdGllcywgYXMgdGhleSB1c3VhbGx5IGFyZSwgCm9yIG1lcmVseSB0d28gcG9sZXMgaW5jbHVkZWQgd2l0aGluIHRoZSBzYW1lIG9yZ2FuLSAKaXNtLCBhcyBpbiB0aGUgY2FzZSBvZiB0aGUgcGFydGhlbm9nZW5ldGljIHJlcHJvZHVjdGlvbiAKb2YgdGhlIGFsdGVybmF0ZSBnZW5lcmF0aW9ucyBvZiBhcGhpZGVzLiAKCldoYXQgaXMgY29tbW9ubHkgY2FsbGVkIHRoZSBwcm9jZXNzaW9uIG9mIHRoZSBIb2x5IApHaG9zdCBpcyBpbiBubyBzZW5zZSBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlLCBmb3IgdGhlIApkdWFsaXR5IG9mIHRoZSBTZWNvbmQgTG9nb3MgaGFzIGFsd2F5cyBiZWVuIGNsZWFybHkgCnJlY29nbml6ZWQsIGFuZCBhbHRob3VnaCBpbiB0aGUgbW9kZXJuIENocmlzdGlhbiAKc3lzdGVtIHRoZSB0d28gcG9sZXMgb3IgYXNwZWN0cyBhcmUgZXhwcmVzc2VkIG9ubHkgCmFzIGRpdmluaXR5IGFuZCBodW1hbml0eSwgaW4gb2xkZXIgZmFpdGhzIGFuZCBldmVuIGluIAp0aGUgR25vc3RpYyB0cmFkaXRpb25zIHRoZXkgd2VyZSBvZnRlbiBjb25zaWRlcmVkIGFzIAoKCjgwIFRIRSBDSFJJU1RJQU4gQ1JFRUQuIAoKCm1hbGUgYW5kIGZlbWFsZSByZXNwZWN0aXZlbHksIGFuZCB0aGUgU2Vjb25kIExvZ29zIAp3YXMgZnJlcXVlbnRseSBzcG9rZW4gb2YgYXMgY29udGFpbmluZyB3aXRoaW4gSGltLSAKc2VsZiB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIGJvdGggdGhlIHNleGVzLCBhbmQgd2FzIGV2ZW4gCmNhbGxlZCDigJxUaGUgRmF0aGVyLU1vdGhlci7igJ0gCgrigJhXaG8gd2l0aCB0aGUgRmF0aGVyIGFuZCB0aGUgU29uIHRvZ2V0aGVyIGlzIAp3b3JzaGlwcGVkIGFuZCBnbG9yaWZpZWQu4oCdIFRoaXMgc2ltcGx5IG1lYW5zIHRoYXQgCnRoZSBUaHJlZSBMb2dvaSBhcmUgdG8gYmUgcmVnYXJkZWQgYXMgZXF1YWxseSB3b3J0aHkgCm9mIHRoZSBkZWVwZXN0IHJldmVyZW5jZSwgYXMgZXF1YWxseSBzdGFuZGluZyBhcGFydCAKZnJvbSBhbGwgZWxzZSB3aXRoaW4gdGhlIHN5c3RlbSB0byB3aGljaCB0aGV5IGhhdmUgCmdpdmVuIGJpcnRo4oCUdGhhdCDigJxpbiB0aGlzIFRyaW5pdHkgbm9uZSBpcyBhZm9yZSBvciAKYWZ0ZXIgb3RoZXIsIG5vbmUgaXMgZ3JlYXRlciBvciBsZXNzIHRoYW4gYW5vdGhlciwgYnV0IAp0aGUgd2hvbGUgdGhyZWUgcGVyc29ucyBhcmUgY29ldGVybmFsIHRvZ2V0aGVyIGFuZCAKY29lcXVhbCzigJ0gYXMgZmFyIGF0IGFueSByYXRlIGFzIHRoaXMgem9uIGlzIGNvbmNlcm5lZCAK4oCUYWxsIGVxdWFsbHkgdG8gYmUgZ2xvcmlmaWVkIGJ5IG1hbiwgc2luY2UgaGlzIGRlYnQgCm9mIGdyYXRpdHVkZSwgZm9yIHRoZSBsYWJvdXIgYW5kIHN0dXBlbmRvdXMgc2FjcmlmaWNlIAppbnZvbHZlZCBpbiBoaXMgZXZvbHV0aW9uLCBpcyBkdWUgdG8gYWxsIHRocmVlIGFsaWtlLiAKCuKAmFdobyBzcGFrZSBieSB0aGUgcHJvcGhldHMu4oCdIFRoaXMgY2xhdXNlLCB3aGljaCAKaXMgb25lIG9mIHRob3NlIGZpcnN0IGluY29ycG9yYXRlZCBpbiB0aGUgQ3JlZWQgYXQgdGhlIApDb3VuY2lsIG9mIENvbnN0YW50aW5vcGxlLCBlbWJvZGllcyBhIHZlcnkgZWFybHkgbWlzLSAKY29uY2VwdGlvbiBmb3Igd2hpY2ggaXQgaXMgbm90IGRpZmZpY3VsdCB0byBhY2NvdW50LCBhbmQgCnRob3VnaCBpdCBkb2VzIG5vdCBkaXJlY3RseSByZWZlciB0byB0aGUgc3Rvcnkgb2YgSmVzdXMsIAppdCBtdXN0IG5vbmUgdGhlIGxlc3MgYmUgYXR0cmlidXRlZCB0byB0aGUgdGVuZGVuY3kgCndoaWNoIHdlIGhhdmUgY2FsbGVkICg2LiBUaGUgbWVhbmluZyBvZiB0aGUgb3JpZ2luYWwgCmV4cHJlc3Npb24gd2hpY2ggaXQgcmVwcmVzZW50cyBjYW4gcGVyaGFwcyBiZSBiZXN0IApyZW5kZXJlZCBpbnRvIEVuZ2xpc2ggYXMg4oCY4oCYV2hvIG1hbmlmZXN0ZWQgdGhyb3VnaCAKdGhlIGFuZ2VscyA74oCdIGFuZCB3aGVuIHdlIHJlbWVtYmVyIHRoYXQgaW4gR3JlZWsgCnRoZSB3b3JkcyDigJxhbmdlbOKAnSBhbmQg4oCY4oCYIG1lc3NlbmdlcuKAmeKAneKAmSBhcmUgaWRlbnRpY2FsLCAKd2Ugc2hhbGwgZWFzaWx5IHNlZSBob3cgaW4gdGhlIG1pbmQgb2YgYSBKZXdpc2ggdHJhbnMtIApsYXRvciBlYWdlcmx5IGFueGlvdXMgdG8gZW1waGFzaXplIHRoZSBjb250aW51aXR5IG9mIAoKClRIRSBNRVNTRU5HRVJTLCA4MSAKCgp0aGUgbmV3ZXIgdGVhY2hpbmcgd2l0aCB0aGF0IG9mIGhpcyBvd24gcmVsaWdpb24sIHdoYXQgCnRvIGhpbSB3b3VsZCBzZWVtIGFuIG9ic2N1cmUgcGFzc2FnZSByZWZlcnJpbmcgdG8gCuKAmOKAmG1hbmlmZXN0YXRpb24gdGhyb3VnaCBIaXMgbWVzc2VuZ2VycyzigJnigJkgY2FtZSB0byBiZSAKaW50ZXJwcmV0ZWQgYXMgaW5kaWNhdGluZyB0aGUgaW5zcGlyYXRpb24gb2YgdGhlIEhlYnJldyAKcHJvcGhldHMuIAoKVGhlIEpld2lzaCBmYWl0aCwgY29ycnVwdCBhbmQgZ3Jvc3NseSBtYXRlcmlhbCBhcyBpdCAKd2FzLCBoYWQgc3RpbGwgc29tZSB0cmFkaXRpb24gb2YgdGhlIG1lc3NlbmdlcnMgdGhyb3VnaCAKd2hvbSB0aGUgTG9nb3MgbWFuaWZlc3RlZCBIaW1zZWxmIGluIG1hdHRlcuKAlHRoZSAKc2V2ZW4gZ3JlYXQgYXJjaGFuZ2VscywgbGF0ZXIgY2FsbGVkIOKAmOKAmHRoZSBzZXZlbiBzcGlyaXRzIApiZWZvcmUgdGhlIHRocm9uZSBvZiBHb2TigJ3igJR0aGUgc2V2ZW4gbGVzc2VyIExvZ29pIAoobGVzc2VyIG9ubHkgaW4gY29tcGFyaXNvbiB3aXRoIHRoZSBpbmVmZmFibGUgc3BsZW5kb3VyIApvZiB0aGUgVHJpbml0eSkgd2hvIGFyZSB0aGUgZmlyc3QgZW1hbmF0aW9uIG9mIHRoZSAKR29kaGVhZC4gQnV0IGl0IHdhcyBtYW5pZmVzdGx5IGltcG9zc2libGUgdGhhdCB0aGUgCnJlZmVyZW5jZSB0byB0aGVtIGluIHRoZSBwYXNzYWdlIHVuZGVyIGNvbnNpZGVyYXRpb24gCnNob3VsZCBiZSB1bmRlcnN0b29kIGJ5IGEgbWluZCBhbHJlYWR5IG9ic2Vzc2VkIHdpdGggCnRoZSBpZGVhIHRoYXQgYWxsIHRoYXQgd2FzIHNhaWQgb2YgdGhlIFNlY29uZCBMb2dvcyAKd2FzIHRvIGJlIHRha2VuIGFzIGRlc2NyaXB0aXZlIG9ubHkgb2YgYSBodW1hbiB0ZWFjaGVyLiAKSWYgdGhlIFNlY29uZCBMb2dvcyB3ZXJlIGJ1dCBhIG1hbiwgYW5kIHRoZSAKVGhpcmQgYSB2YWd1ZSBpbmZsdWVuY2UgcHJvY2VlZGluZyBmcm9tIGhpbSwgdGhlbiB0aGUgCm1lc3NlbmdlcnMgdGhyb3VnaCB3aG9tIHRoYXQgaW5mbHVlbmNlIGhhZCBwcmV2aW91c2x5IAptYW5pZmVzdGVkIG11c3Qgb2J2aW91c2x5IGJlIG1lbiBhbHNvLCBhbmQgaXQgd2FzIApxdWl0ZSBuYXR1cmFsIHRoYXQgdGhlIHN1cHBvc2VkIGluc3BpcmF0aW9uIG9mIGhpcyAKb3duIHByb3BoZXRzIHNob3VsZCBhdCBvbmNlIG9jY3VyIHRvIHRoZSBtaW5kIG9mIAphbiBJc3JhZWxpdGUuIFRoZSBncmFuZGV1ciBvZiB0aGUgdHJ1ZSBjb25jZXB0aW9uIHdhcyAKZmFyIGFib3ZlIG91dCBvZiBoaXMgc2lnaHQ7IGhlIGhhZCBhbHJlYWR5IGNvYXJzZW5lZCAKYW5kIGRlZ3JhZGVkIGl0IGJleW9uZCB0aGUgcG93ZXIgb2Ygd29yZHMgdG8gZXhwcmVzcywgCmFuZCBzbyBoZSBzYXcgbm90aGluZyBpbmNvbmdydW91cyBpbiByZWdhcmRpbmcgdGhlIAppdGluZXJhbnQgcHJlYWNoZXJzIG9mIGhpcyBvd24gcGV0dHkgdHJpYmUgYXMgZGlyZWN0bHkgCmNvbnRyb2xsZWQgYnkgdGhlIGluZmx1ZW5jZSBvZiB0aGUgU3VwcmVtZS4gCgoKODIgVEhFIENIUklTVElBTiBDUkVFRCwgCgoK4oCYVGhlIGhvbHkgY2F0aG9saWMgQ2h1cmNoLuKAnSBUaGlzIGNsYXVzZSBhcHBlYXJzIAppbiB0aGUgTmljZW5lIENyZWVkIGFzIHRoZSDigJwgb25lIGNhdGhvbGljIGFuZCBhcG9zdG9saWMgCkNodXJjaCzigJ0gYW5kIGhhcyBhbHdheXMgYmVlbiB1bmRlcnN0b29kIHRvIHNpZ25pZnkgCnRoZSBib2R5IG9mIGZhaXRoZnVsIGJlbGlldmVycyBhbGwgb3ZlciB0aGUgd29ybGTigJR0aGUgCndvcmQgY2F0aG9saWMgc2ltcGx5IG1lYW5pbmcgdW5pdmVyc2FsLiBUaGlzIGlzIGluIAplZmZlY3QgYSBzdGF0ZW1lbnQgb2YgdGhlIGJyb3RoZXJob29kIG9mIG1hbiwgZm9yIAppdCBwcm9jbGFpbXMgaG93IGNvbW11bml0eSBvZiBpbnRlcmVzdCBpbiBzcGlyaXR1YWwgCnRoaW5ncyBkcmF3cyB0b2dldGhlciBtZW4gb3V0IG9mIGV2ZXJ5IG5hdGlvbiwg4oCY4oCYIHdpdGhvdXQgCmRpc3RpbmN0aW9uIG9mIHJhY2UsIGNyZWVkLCBjYXN0ZSwgc2V4IG9yIGNvbG91cizigJ0gYXMgdGhlIApmaXJzdCBvYmplY3Qgb2YgdGhlIFRoZW9zb3BoaWNhbCBTb2NpZXR5IHB1dHMgaXQuIElmIHdlIAp3aWxsIGJ1dCBwdXQgYXNpZGUgdGhlIG1pc2ludGVycHJldGF0aW9ucyB3aGljaCBsYXRlciAKc2VjdGFyaWFuaXNtIGhhcyBhY2N1bXVsYXRlZCByb3VuZCB0aGVzZSB3b3JkcywgYW5kIAp0aGluayB3aGF0IHRoZXkgcmVhbGx5IG1lYW4sIHdlIHNoYWxsIHNlZSBhdCBvbmNlIApob3cgYmVhdXRpZnVsbHkgZXhwcmVzc2l2ZSB0aGV5IGFyZS4gCgpUaGUgQ2h1cmNoIGlzIHRoZSDDqXh4QW5vaWHigJR0aGUgYm9keSBvZiB0aG9zZSB3aG8gCmFyZSDigJhjYWxsZWQgb3V04oCdIG9mIHRoZSBvcmRpbmFyeSB3b3JsZGx5IGxpZmUgb2YgbWlzLSAKZGlyZWN0ZWQgZW5lcmd5IGJ5IHRoZSBjb21tb24ga25vd2xlZGdlIHdoaWNoIHRoZXkgCnBvc3Nlc3Mgb2YgdGhlIGdyZWF0IGZhY3RzIHVuZGVybHlpbmcgbmF0dXJl4oCUdGhlIG1lbiAKd2hvLCBiZWNhdXNlIHRoZXkga25vdyB0aGUgcmVsYXRpdmUgaW1wb3J0YW5jZSBvZiAKZWFjaCwgaGF2ZSDigJxzZXQgdGhlaXIgYWZmZWN0aW9uIG9uIHRoaW5ncyBhYm92ZSwgYW5kIApub3Qgb24gdGhpbmdzIG9mIHRoZSBlYXJ0aCzigJ0gbm8gbWF0dGVyIHRvIHdoYXQgbmF0aW9uIAp0aGV5IG1heSBiZWxvbmcsIG5vciBieSB3aGF0IG5hbWUgdGhleSBtYXkgY2hvb3NlIAp0byBjYWxsIHRoZWlyIGZhaXRoIGluIHNwaXJpdHVhbCB0aGluZ3MuIAoKVGhhdCBieSBubyBtZWFucyBhbGwgb2YgdGhlbSB5ZXQgcmVjb2duaXplIHRoZWlyIApicm90aGVyaG9vZCwgdGhhdCBtYW55IG9mIHRoZW0gZGlzdHJ1c3QgYW5kIG1pc3VuZGVyLSAKc3RhbmQgb25lIGFub3RoZXIsIHNhZCB0aG91Z2ggaXQgaXMsIGluIG5vIHdheSBhbHRlcnMgCnRoZSBncmVhdCBmYWN0IHRoYXQgYmVjYXVzZSB0aGV5IHJlZ2FyZCB0aGluZ3Mgc3Bpcml0dWFsIApyYXRoZXIgdGhhbiB0aGluZ3MgdGVtcG9yYWwsIGJlY2F1c2UgdGhleSBoYXZlIGRlLSAKZmluaXRlbHkgcmFuZ2VkIHRoZW1zZWx2ZXMgb24gdGhlIHNpZGUgb2YgZ29vZCBpbnN0ZWFkIAoKCkAgVEhFIENBVEhPTElDIENIVVJDSC4gODMgCgoKb2YgZXZpbCwgb2YgZXZvbHV0aW9uIGluc3RlYWQgb2YgcmV0YXJkYXRpb24sIHRoZXkgaGF2ZSBhIApib25kIGJldHdlZW4gdGhlbSBvZiBjb21tdW5pdHkgb2YgYWltIHdoaWNoIGlzIApzdHJvbmdlciBmYXIgdGhhbiBhbnkgb2YgdGhlIGV4dGVybmFsIGRpdmlzaW9ucyB0aGF0IApzZXBhcmF0ZSB0aGVt4oCUc3Ryb25nZXIgYmVjYXVzZSBpdCA3cyBzcGlyaXR1YWwsIGFuZCAKYmVsb25ncyB0byBhIGhpZ2hlciBwbGFuZSB0aGFuIHRoaXMuIAoKVGhpcyBpcyB0aGUgdHJ1ZSBDaHVyY2ggb2YgdGhlIENocmlzdCwgYW5kIGl0IGlzIApjYXRob2xpYyBiZWNhdXNlIGFtb25nIGl0cyBudW1iZXJzIHRoZXJlIGFyZSBtZW4gCm9mIGV2ZXJ5IHJhY2UgYW5kIGNyZWVkIHVuZGVyIGhlYXZlbuKAlOKAnCBvZiBhbGwgbmF0aW9ucyAKYW5kIGtpbmRyZWQgYW5kIHBlb3BsZXMgYW5kIHRvbmd1ZXM74oCZ4oCZIGl0IGlzIGhvbHksIApiZWNhdXNlIGl0cyBtZW1iZXJzIGFyZSBzdHJpdmluZyB0byBtYWtlIHRoZWlyIGxpdmVzIApob2xpZXIgYW5kIGJldHRlcjsgaXQgaXMgYXBvc3RvbGljLCBmb3IgaW4gdmVyeSB0cnV0aCBhbGwgCml0cyBtZW1iZXJzIGFyZSBhcG9zdGxlc+KAlOKAnCBtZW4gc2VudCBmb3J0aOKAnSAodGhvdWdoIAptYW55IG9mIHRoZW0ga25vdyBpdCBub3QpIGJ5IHRoZSBncmVhdCBQb3dlciB3aG8gaXMgCmd1aWRpbmcgYWxsLCB0aGF0IHRoZXkgbWF5IGJlIEhpcyBleHByZXNzaW9uIGluIHRoZSAKZWFydGgg4oCUIEhpcyBlbWlzc2FyaWVzIHRvIGhlbHAgdGhlaXIgbW9yZSBpZ25vcmFudCAKYnJldGhyZW4sIGJ5IHByZWNlcHQgYW5kIGV4YW1wbGUsIHRvIGxlYXJuIHRoZSBhbGwtIAppbXBvcnRhbnQgbGVzc29uIHdoaWNoIHRoZXkgaGF2ZSBhbHJlYWR5IG1hZGUgcGFydCAKb2YgdGhlaXIgb3duIGxpdmVzLiBBbmQgd2hhdGV2ZXIgaXRzIG91dHdhcmQgZGl2aS0gCnNpb25zIG1heSBiZSwgdGhpcyBDaHVyY2ggaXMgZnVuZGFtZW50YWxseSBvbmXigJQgCuKAmGVsZWN0IGZyb20gZXZlcnkgbmF0aW9uLCB5ZXQgb25lIG/igJllciBhbGwgdGhlIGVhcnRoIOKAmeKAmSLigJQgCm9uZSBpbiBlc3NlbmNlLCB0aG91Z2ggaXQgbWF5IGJlIG1hbnkgYSBjZW50dXJ5IHlldCAKYmVmb3JlIGFsbCBpdHMgbWVtYmVycyByZWFsaXplIHRoZWlyIHNwaXJpdHVhbCB1bml0eS4gCgrigJjColRoZSBjb21tdW5pb24gb2Ygc2FpbnRzLuKAnSBUaGlzIGlzIGludGVycHJldGVkIGluIAp0d28gd2F5cyBieSBtb2Rlcm4gb3J0aG9kb3h5LiBUaGUgZmlyc3QgdGFrZXMgaXQgCm1lcmVseSBhcyBhbiBleHRlbnNpb24gb2YgdGhlIHByZXZpb3VzIGNsYXVzZSwg4oCY4oCYIHRoZSAKaG9seSBjYXRob2xpYyBDaHVyY2ggKHdoaWNoIGlzKSB0aGUgY29tbXVuaW9uIG9mIHRoZSAKc2FpbnRzLuKAmSBUaGF0IGlzIHRvIHNheSB0aGF0IHRoZSBDaHVyY2ggY29uc2lzdHMgb2YgCnRoZSBmZWxsb3dzaGlwIG9mIHRoZSBob2x5IG9uZXMgaW4gZXZlcnkgbGFuZCwgdmVyeSAKbXVjaCBhcyBoYXMganVzdCBiZWVuIGV4cGxhaW5lZCDigJQgZXhjZXB0IHRoYXQgb2YgCgoKODQgVEhCIENIUklTVElBTiBDUkVFRC4gCgoKY291cnNlIGluIHRoZSBvcnRob2RveCBzeXN0ZW0gbm9uZSBidXQgdGhlIENocmlzdHRhc3MgCm9mIGV2ZXJ5IG5hdGlvbiBhcmUgcmVjb2duaXplZCBhcyBicm90aGVycyEgVGhlIApvdGhlciBtZXRob2Qgb2YgaW50ZXJwcmV0YXRpb24gZ2l2ZXMgYSBzb21ld2hhdCAKbW9yZSBteXN0aWNhbCBzZW5zZSB0byB0aGUgd29yZCBjb21tdW5pb24sIGFuZCAKZXhwbGFpbnMgdGhlIGNsYXVzZSBhcyBwb2ludGluZyBvdXQgdGhlIGludGltYXRlIGFzc28tIApDaWF0aW9uIGJldHdlZW4gQ2hyaXN0aWFucyBvbiBlYXJ0aCBhbmQgdGhvc2Ugd2hvIApoYXZlIHBhc3NlZCBhd2F54oCUdGhlIGJsZXNzZWQgZGVhZCwgbW9yZSBlc3BlY2lhbGx5IAp0aG9zZSBvZiB0cmFuc2NlbmRlbnQgdmlydHVlLCB3aG8gYXJlIHVzdWFsbHkgY2FsbGVkIAp0aGUgc2FpbnRzLiAKCkFzIGlzIHNvIG9mdGVuIHRoZSBjYXNlLCB0aGUgdHJ1dGggaW5jbHVkZXMgYm90aCAKaHlwb3RoZXNlcywgYW5kIHlldCBpcyBncmFuZGVyIGZhciB0aGFuIGVpdGhlciBvZiB0aGVtLCAKZm9yIHRoZSB0cnVlIG1lYW5pbmcgb2YgdGhlIGV4cHJlc3Npb24gb2YgYmVsaWVmIGluIHRoZSAKY29tbXVuaW9uIG9mIHRoZSBzYWludHMgaXMgdGhlIHJlY29nbml0aW9uIG9mIHRoZSAKZXhpc3RlbmNlIGFuZCB0aGUgZnVuY3Rpb25zIG9mIHRoZSBHcmVhdCBCcm90aGVyaG9vZCAKb2YgQWRlcHRzIHdoaWNoIGlzIGluIGNoYXJnZSBvZiBzbyBtdWNoIG9mIHRoZSBldm9sdS0gCnRpb24gb2YgbWFua2luZC4gVGh1cyBpdCBpcyB0cnVseSBhbiBleHRlbnNpb24gb2YgdGhlIAppZGVhIG9mIHRoZSBicm90aGVyaG9vZCBvZiBtYW4gaW1wbGllZCBpbiB0aGUgYmVsaWVmIAppbiB0aGUgaG9seSBjYXRob2xpYyBDaHVyY2gsIHlldCBpdCBhbHNvIGludm9sdmVzIHRoZSAKY2xvc2VzdCBwb3NzaWJsZSBhc3NvY2lhdGlvbiBhbmQgZXZlbiBjb21tdW5pY2F0aW9uIAp3aXRoIHRoZSBub2JsZXN0IG9mIHRob3NlIHdobyBoYXZlIGdvbmUgYmVmb3JlIHVzLiAKQnV0IGl0IGlzIG11Y2ggbW9yZSB0aGFuIGFsbCB0aGlzLCBmb3IgdG8gdGhvc2Ugd2hvIApyZWFsbHkgZ3Jhc3AgaXQgYW5kIGJlZ2luIGV2ZW4gZGltbHkgdG8gdW5kZXJzdGFuZCAKd2hhdCBpdCBtZWFucywgaXQgZ2l2ZXMgYSBzZW5zZSBvZiBhYnNvbHV0ZSBwZWFjZSBhbmQgCnNlY3VyaXR5IHdoaWNoIHBhc3NlcyBhbGwgdW5kZXJzdGFuZGluZ+KAlHdoaWNoIGNhbiAKbmV2ZXIgYmUgc2hha2VuIG9yIGxvc3QgdGhyb3VnaCBhbnkgb2YgdGhlIGNoYW5nZXMgCmFuZCBjaGFuY2VzIG9mIHRoaXMgbW9ydGFsIGxpZmUuIAoKV2hlbiBvbmNlIHRoaXMgaXMgcmVhbGl6ZWQgYnkgYW55IG1hbiwgaG93ZXZlciAKa2VlbiBtYXkgYmUgaGlzIHN5bXBhdGh5IHdpdGggdGhlIG1hbmlmb2xkIHN1ZmZlci0gCmluZ3Mgb2YgaHVtYW5pdHnigJRob3dldmVyIGhlIG1heSBmYWlsIHRvIHVuZGVyc3RhbmQgCgoKVEhFIENPTU1VTklPTiBPRiBTQUlOVFMuIDg1IAoKCm11Y2ggb2YgbGluZSBoZSBzZWVzIGluIHRoZSB3b3JsZCBhcm91bmQgaGlt4oCUdGhlIAplbGVtZW50IG9mIGhvcGVsZXNzbmVzcywgd2hpY2ggYmVmb3JlIG1hZGUgaXQgYWxsIApzbyB0ZXJyaWJsZSwgaXMgZ29uZSwgYW5kIGdvbmUgZm9yIGV2ZXIuIEZvciB0aG91Z2ggCmhlIGZlZWxzIHRoYXQgZHJlYWQgbXlzdGVyaWVzLCBhcyB5ZXQgYnV0IHBhcnRpYWxseSAKZXhwbGFpbmVkLCB1bmRlcmxpZSBtYW55IGFuIGFjdCBpbiB0aGUgZ3JlYXQgZHJhbWEgb2YgCnRoZSB3b3JsZOKAmXMgaGlzdG9yeeKAlHRob3VnaCBxdWVzdGlvbnMgbWF5IHNvbWV0aW1lcyAKYXJpc2Ugd2l0aGluIGhpbSB0byB3aGljaCBtYW4gY2FuIGdpdmUgbm8gYW5zd2VyLCAKYW5kIHRvIHdoaWNoIHRoZSBoaWdoZXIgcG93ZXJzIGhhdmUgZ2l2ZW4gbm9uZSB0aHVzIApmYXIsIHlldCBoZSBrbm93cywgd2l0aCB0aGUgYWJzb2x1dGUgY2VydGFpbnR5IGJvcm4gb2YgCmV4cGVyaWVuY2UsIHRoYXQgdGhlIHBvd2VyLCB0aGUgd2lzZG9tIGFuZCB0aGUgbG92ZSAKd2hpY2ggZ3VpZGUgdGhlIGV2b2x1dGlvbiBvZiB3aGljaCBoZSBpcyBwYXJ0LCBhcmUgZmFyIAptb3JlIHRoYW4gc3Ryb25nIGVub3VnaCB0byBjYXJyeSBpdCB0aHJvdWdoIHRvIGEgCmdsb3Jpb3VzIGVuZC4gSGUga25vd3MgdGhhdCBubyBodW1hbiBzeW1wYXRoeSAKY2FuIGJlIGFzIGdyZWF0IGFzIHRoZWlycyB3aG8gc3RhbmQgYmVoaW5kOyBub25lIGNhbiAKbG92ZSBtYW4gYXMgdGhleSBkb+KAlHRoZXkgd2hvIGFyZSBzYWNyaWZpY2luZyB0aGVtLSAKc2VsdmVzIGZvciBtYW4uIFlldCB0aGV5IGtub3cgYWxsLCBmcm9tIHRoZSBiZWdpbm5pbmcgCnRvIHRoZSBlbmQ7IGFuZCB0aGV5IGFyZSBzYXRpc2ZpZWQuIAoKCj8gCgoK4oCcVGhlIGZvcmdpdmVuZXNzIG9mIHNpbnM74oCd4oCZIG9yLCBhcyB0aGUgR3JlZWsgbWF5IApiZSBtb3JlIGxpdGVyYWxseSByZW5kZXJlZDog4oCY4oCYdGhlIGVtYW5jaXBhdGlvbiBmcm9tIApzaW5zLuKAnSBGb3IgdGhlIG1vcmUgbXlzdGljYWwgc2lkZSBvZiB0aGUgaWRlYSBzeW0tIApib2xpemVkIGluIHRoZSBlY2NsZXNpYXN0aWNhbCBkb2N0cmluZSBvZiB0aGUgc28tY2FsbGVkIApmb3JnaXZlbmVzcyBvZiBzaW5zLCB0aGUgcmVhZGVyIG1heSBiZSByZWZlcnJlZCB0byAKTXJzLiBCZXNhbnTigJlzIGFydGljbGUgaW4gdGhlIFRoZW9zb3BoaWNhbCBSZXZpZXcgZm9yIApOb3ZlbWJlciwgMTg5Ny4gSGVyZSwgaG93ZXZlciwgd2UgaGF2ZSB0byBkZWFsIApub3Qgd2l0aCB0aGUgbGF0ZXIgZGV2ZWxvcG1lbnRzIG9mIGRvZ21hLCBidXQgcmF0aGVyIAp3aXRoIHRoZSBtZWFuaW5nIGF0dGFjaGVkIHRvIHRoaXMgY2xhdXNlIGluIHRoZSBvcmlnaW5hbCAKZm9ybXVsYSwgd2hpY2ggd2FzIGEgY29tcGFyYXRpdmVseSBzaW1wbGUgb25lLiAKCk5vIGlkZWEgZXZlbiByZW1vdGVseSByZXNlbWJsaW5nIHRoYXQgc3VnZ2VzdGVkIGJ5IAp0aGUgbW9kZXJuIHdvcmQg4oCYIGZvcmdpdmVuZXNz4oCd4oCZIHdhcyBpbiBhbnkgd2F5IGNvbi0gCgoKODYgVEhFIENIUklTVElBTiBDUkVFRC4gCgoKbmVjdGVkIHdpdGggaXQ7IGl0IHdhcyBhIHN0cmFpZ2h0Zm9yd2FyZCBkZWNsYXJhdGlvbiAKdGhhdCB0aGUgY2FuZGlkYXRlIGFja25vd2xlZGdlZCB0aGUgbmVjZXNzaXR5IG9mIApzZXR0aW5nIGhpbXNlbGYgZnJlZSBmcm9tIHRoZSBkb21pbmlvbiBvZiBhbGwgaGlzIHNpbnMgCmJlZm9yZSBhdHRlbXB0aW5nIHRvIGVudGVyIHVwb24gdGhlIHBhdGggb2Ygb2NjdWx0IApwcm9ncmVzcywgYW5kIGl0cyBzcGlyaXQgd291bGQgYmUgZmFyIG1vcmUgYWNjdXJhdGVseSAKcmVuZGVyZWQgYnkgYW4gZXhwcmVzc2lvbiBvZiBiZWxpZWYgaW4gdGhlIGRlbWlzc2lvbiBvZiAKc2lucyByYXRoZXIgdGhhbiB0aGVpciB2ZW1pc3Npb24uIEl0IHdhcyBwcmltYXJpbHkgCmludGVuZGVkIHRvIGJlIGEgZGVmaW5pdGUgcmVtaW5kZXIgb2YgdGhlIHByaW5jaXBsZSAKd2hpY2ggcmVxdWlyZXMgbW9yYWxdIGRldmVsb3BtZW50IGFzIGFuIGFic29sdXRlIHByZS0gCnJlcXVpc2l0ZSB0byBhZHZhbmNlbWVudCwgYW5kIGEgd2FybmluZyBhZ2FpbnN0IHRoZSAKZGFuZ2VyIG9mIHRoZSBtZXRob2Qgb2YgdGhlIGRhcmtlciBtYWdpY2FsIHNjaG9vbHMgCndoaWNoIGRpZCBub3QgZXhhY3QgbW9yYWxpdHkgYXMgYSBuZWNlc3NhcnkgcXVhbGlmaWNhLSAKdGlvbiBmb3IgbWVtYmVyc2hpcC4gCgpCdXQgaXQgaGFkIGFsc28gYW5vdGhlciBhbmQgYW4gaW5uZXIgbWVhbmluZywgCnJlZmVycmluZyB0byBhIGhpZ2hlciBzdGFnZSBpbiBtYW7igJlzIGRldmVsb3BtZW50LCBhbmQgCnRoaXMgaXMgbW9yZSBjbGVhcmx5IGJyb3VnaHQgb3V0IGluIHRoZSBmb3JtIGFzc3VtZWQgCmJ5IHRoaXMgY2xhdXNlIGluIHRoZSBOaWN6YW4gc3ltYm9sLCDigJwgSSBhY2tub3dsZWRnZSAKb25lIGJhcHRpc20gZm9yIHRoZSByZW1pc3Npb24gb2Ygc2lucy7igJ0gQWdhaW4gb2YgCmNvdXJzZSB3ZSBtdXN0IHN1YnN0aXR1dGUgdGhlIGlkZWEgb2YgZW1hbmNpcGF0aW9uIApmb3IgdGhhdCBvZiBmb3JnaXZlbmVzcywgYW5kIHJlbWVtYmVyaW5nIHRoYXQgYmFwdGlzbSAKaGFzIGFsd2F5cyBiZWVuIHRoZSBzeW1ib2wgb2YgaW5pdGlhdGlvbiwgd2UgaGF2ZSAKYmVmb3JlIHVzIGEgY29uY2VwdGlvbiB3aGljaCBtaWdodCBiZSBleHByZXNzZWQgaW4gCnRoZSBCdWRkaGlzdCBwaHJhc2VvbG9neSB3aXRoIHdoaWNoIHN0dWRlbnRzIG9mIApUaGVvc29waGljYWwgbGl0ZXJhdHVyZSBhcmUgbW9yZSBmYW1pbGlhcjog4oCcSSBhYy0gCmtub3dsZWRnZSBvbmUgaW5pdGlhdGlvbiBmb3IgdGhlIGNhc3Rpbmctb2ZmIG9mIHRoZSAKZmV0dGVycy7igJ0gVGhlIGNhbmRpZGF0ZSBwcm9jbGFpbXMgYnkgdGhpcyBzdGF0ZW1lbnQgCnRoYXQgaGUgaGFzIGRlZmluaXRlbHkgc2V0IGJlZm9yZSBoaW0gYXMgaGlzIGdvYWwgdGhlIApTb3TDqXBhdHRpIGluaXRpYXRpb27igJRvbmUgaW5pdGlhdGlvbiwgZ2l2ZW4gb25seSBieSB0aGUgCm9uZSBCcm90aGVyaG9vZCBpbiB0aGUgbmFtZSBvZiB0aGUgR3JlYXQgSW5pdGlhdG9y4oCUIAoKClRIRSBERU1JU1NJT04gT0YgU0lOUy4gODcgCgoKaW4gYW5kIHRocm91Z2ggd2hpY2ggaGUgZ2FpbnMgcG93ZXIgZW50aXJlbHkgdG8gY2FzdCAKb2ZmIHRoZSB0aHJlZSBmZXR0ZXJzIG9mIGRvdWJ0LCBzdXBlcnN0aXRpb24gYW5kIHRoZSAKZGVsdXNpb24gb2Ygc2VsZi4gCgpIZSBnYWlucyBwb3dlciwgSSBzYXkgYWR2aXNlZGx5LCBmb3IgaG93ZXZlciBjbGVhciAKaGlzIGludGVsbGVjdHVhbCBjb252aWN0aW9ucyBvbiB0aGVzZSBwb2ludHMgbWF5IGhhdmUgCmJlZW4gcHJldmlvdXNseSwgaGUgZG9lcyBub3QgYXR0YWluIHRoZSBjZXJ0YWludHkgd2hpY2ggCmNvbWVzIGZyb20gZGVmaW5pdGUga25vd2xlZGdlIHVudGlsIGhlIGhhcyBleHBlcmllbmNlZCAKdGhhdCB0b3VjaCBvZiBidWRkaGljIGNvbnNjaW91c25lc3Mgd2hpY2ggaXMgcGFydCBvZiAKdGhlIHJpdHVhbCBvZiB0aGF0IGZpcnN0IGluaXRpYXRpb27igJR0aGUgcG9ydGFsIG9mIHRoZSBQYXRoIApvZiBIb2xpbmVzcy4gQW5kIGluIHRoYXQgdG91Y2gsIG1vbWVudGFyeSB0aG91Z2ggCml0IG1heSBiZSwgbm90IG9ubHkgZG9lcyBoZSBvYnRhaW4gdGhpcyB2YXN0IGluY3JlYXNlIG9mIAprbm93bGVkZ2Ugd2hpY2ggcHV0cyBhIG5ldyBmYWNlIGZvciBoaW0gdXBvbiB0aGUgCndob2xlIG9mIG5hdHVyZSwgYnV0IGhlIGFsc28gZW50ZXJzIGZvciB0aGUgbW9tZW50IAppbnRvIGEgcmVsYXRpb24gd2l0aCBoaXMgTWFzdGVyIGZhciBtb3JlIGludGltYXRlIHRoYW4gCmFueXRoaW5nIGhlIGhhcyBldmVyIGJlZm9yZSBjb21wcmVoZW5kZWQuIEFuZCBpbiAKdGhhdCBmbGFzaCBvZiBjb250YWN0IGhlIHJlY2VpdmVzIGEgdmVyeSByZWFsIGJhcHRpc20sIApmb3IgdGhlcmUgcG91cnMgaW50byBoaXMgc291bCBzdWNoIGEgcnVzaCBvZiBwb3dlciwgb2YgCndpc2RvbSBhbmQgb2YgbG92ZSwgdGhhdCBoZSBpcyBhdCBvbmNlIHN0cmVuZ3RoZW5lZCAKZm9yIGVmZm9ydCB0aGF0IGJlZm9yZSB3b3VsZCBoYXZlIHNlZW1lZCBpbmNvbmNlaXZhYmxlIAp0byBoaW0uIE5vdCB0aGF0IHRoZSBNYXN0ZXLigJlzIGZlZWxpbmcgb3IgYXR0aXR1ZGUgaGFzIAppbiBhbnkgd2F5IGNoYW5nZWQsIGJ1dCB0aGF0IGJ5IHRoZSBkZXZlbG9wbWVudCBvZiAKdGhpcyBuZXcgZmFjdWx0eSB0aGUgcHVwaWwgaGFzIGJlY29tZSBjYXBhYmxlIG9mIApzZWVpbmcgbW9yZSBvZiB3aGF0IGhlIGlzLCBhbmQgc28gb2YgcmVjZWl2aW5nIG1vcmUgCmZyb20gaGltLiAKCkluIGEgdmVyeSB0cnVlIHNlbnNlIHRoZW4gaXMgdGhpcyBTb2hhbiBpbml0aWF0aW9uIArigJhTYSBiYXB0aXNtIGZvciB0aGUgZW1hbmNpcGF0aW9uIGZyb20gc2lucyzigJ0gYW5kIHRoZSAKYmFwdGlzbSBhZG1pbmlzdGVyZWQgdG8gaW5mYW50cyBzb29uIGFmdGVyIHRoZWlyIGJpcnRoIAp3YXMgYnV0IGEgc3ltYm9sIGFuZCBhIHByb3BoZWN5IG9mIHRoaXPigJRhIGNlcmVtb255IAppbnRlbmRlZCBhcyBhIGtpbmQgb2YgZGVkaWNhdGlvbiBvZiB0aGUgeW91bmcgbGlmZSB0byAKCgo4OCBUSEUgQ0hSSVNUSUFOIENSRUVELiAKCgp0aGUgZWZmb3J0IHRvIGVudGVyIHVwb24gdGhlIFBhdGguIFZlcnkgc29vbiBhZnRlciB0aGUgCm1hdGVyaWFsaXppbmcgdGVuZGVuY3kgc2V0IGluIHRoZSB0cnVlIG1lYW5pbmcgb2YgYWxsIAp0aGlzIHdhcyBvYnNjdXJlZCwgYW5kIHRoZW4gaXQgYmVjYW1lIG5lY2Vzc2FyeSB0byAKaW52ZW50IHNvbWUgcmVhc29uIGZvciB0aGUgYmFwdGlzbWFsIGNlcmVtb255LiBTb21lIAp0cmFkaXRpb24gb2YgaXRzIGNvbm5lY3Rpb24gd2l0aCB0aGUgcHV0dGluZyBhd2F5IG9mIApnaW5zIHN0aWxsIHN1cnZpdmVkLCBhbmQgYXMgaXQgd2FzIG9idmlvdXMsIGV2ZW4gdG8gYSAKQ2h1cmNoIGZhdGhlciwgdGhhdCBhIGJhYnkgY291bGQgaGFyZGx5IGhhdmUgY29tLSAKbWl0dGVkIGFueSBzZXJpb3VzIG9mZmVuY2VzLCB0aGUgZXh0cmFvcmRpbmFyeSBkb2N0cmluZSAKb2Yg4oCYb3JpZ2luYWwgc2lu4oCdIHdhcyBpbnZlbnRlZCwgYW5kIGRpZCBtdWNoIGhhcm0gCmluIHRoZSB3b3JsZC4gCgrigJxUaGUgcmVzdXJyZWN0aW9uIG9mIHRoZSBib2R5LuKAnSBIZXJlIGFnYWluIGlzIGEgCmNhc2Ugc2ltaWxhciB0byB0aGUgbGFzdOKAlH5hIGNhc2Ugd2hlcmUgYSBkb2N0cmluZSwgcGVyLSAKZmVjdGx5IHNpbXBsZSBhbmQgcmVhc29uYWJsZSBpbiBpdHNlbGYsIGZhbGxzIGdyYWR1YWxseSAKaW50byBvYmxpdmlvbiBhbmQgbWlzY29uc3RydWN0aW9uIGFtb25nIHRoZSBpZ25vcmFudCwgCnVudGlsIGEgbW9uc3Ryb3VzIGFuZCBhYnN1cmQgZG9nbWEgaXMgZXJlY3RlZCB0byB0YWtlIAp0aGUgcGxhY2Ugb2YgdGhlIGZvcmdvdHRlbiB0cnV0aC4gV2hhdCBudW1iZXJzIG9mIApib29rcyBoYXZlIGJlZW4gd3JpdHRlbiBhbmQgc2VybW9ucyBwcmVhY2hlZCBpbiAKZGVmZW5jZSBvZiB0aGlzIHNjaWVudGlmaWNhbGx5IGltcG9zc2libGUgdGVhY2hpbmcgb2YgdGhlIApyZXN1cnJlY3Rpb24gb2YgdGhlIHBoeXNpY2FsIGJvZHnigJR0aGUg4oCcIGFnZW5yaXN5bmcgb2YgCmZsZWlzaCzigJ0gYXMgaXQgaXMgY2FsbGVkIGluIGFuIEVuZ2xpc2ggQ3JlZWQgb2YgYWJvdXQgdGhlIApkYXRlIDE0MDDigJR3aGVuIGFsbCB0aGUgdGltZSB0aGUgY2xhdXNlIG1lYW50IG5vdGhpbmcgCm1vcmUgb3IgbGVzcyB0aGFuIGFuIGFmZmlybWF0aW9uIG9mIHRoZSBkb2N0cmluZSBvZiAKcmVpbmNhcm5hdGlvbiAhIAoKVGhpcywgd2hpY2ggaW4gbW9yZSBlbmxpZ2h0ZW5lZCB0aW1lcyB3YXMgYSB1bmktIAp2ZXJzYWwgYmVsaWVmLCBoYWQgZ3JhZHVhbGx5IGRyb3BwZWQgb3V0IG9mIHBvcHVsYXIgCmtub3dsZWRnZSBpbiBsYXRlciBFZ3lwdCBhbmQgaW4gY2xhc3NpY2FsIEdyZWVjZSBhbmQgClJvbWUsIHRob3VnaCBvZiBjb3Vyc2UgaXQgd2FzIG5ldmVyIGxvc3Qgc2lnaHQgb2YgaW4gCnRoZSB0ZWFjaGluZyBvZiB0aGUgTXlzdGVyaWVzLiBJdCB3YXMgcXVpdGUgcGxhaW5seSAKc3RhdGVkIGluIHRoZSBvcmlnaW5hbCBmb3JtdWxhIGdpdmVuIGJ5IHRoZSBDaHJpc3QgdG8gCgoKUkVJTkNBUk5BVElPTi4gODkgCgoKaGlzIGRpc2NpcGxlcywgYW5kIGl0IHdhcyBvbmx5IHRoZSBncm9zcyBpZ25vcmFuY2Ugb2YgCmxhdGVyIGRheXMgd2hpY2ggcGVydmVydGVkIHRoZSBzaW1wbGUgZXhwbGFuYXRpb24sIHRoYXQgCmFmdGVyIGRlYXRoIG1hbiB3b3VsZCBhZ2FpbiBhcHBlYXIgdXBvbiB0aGUgZWFydGggaW4gCmJvZGlseSBmb3JtLCBpbnRvIGEgdGhlb3J5IHRoYXQgaGUgd291bGQgYXQgc29tZSBmdXR1cmUgCnRpbWUgY29sbGVjdCB0aGUgdmVyeSBwYXJ0aWNsZXMgb2Ygd2hpY2ggaGlzIHBoeXNpY2FsIAp2ZWhpY2xlIGhhZCBiZWVuIGNvbnN0cnVjdGVkIGF0IHRoZSBtb21lbnQgb2YgZGVhdGgsIAphbmQgb25jZSBtb3JlIGJ1aWxkIHVwIHRoYXQgY29ycHNlIGludG8gdGhlIHNlbWJsYW5jZSAKd2hpY2ggaXQgdGhlbiB3b3JlLiAKCkluIHRoZSBOaWNlbmUgQ3JlZWQgdGhlIGNsYXVzZSBub3cgYXBwZWFycyBpbiB0aGUgCm1vcmUgY29tcHJlaGVuc2libGUgZm9ybSwg4oCY4oCYSSBsb29rIGZvciB0aGUgcmVzdXJyZWN0aW9uIApvZiB0aGUgZGVhZCzigJ0gdGhvdWdoIGluIHNvbWUgb2YgaXRzIGVhcmxpZXIgdmFyaWFudHMgaXQgCmFsc28gc3BlYWtzIG9mIHRoZSByZXN1cnJlY3Rpb24gb2YgdGhlIGZsZXNoLiBZZXQgdGhlIApzaW1wbGUgaWRlYSB0aGF0IHdoYXQgd2FzIG1lYW50IHdhcyByZXN1cnJlY3Rpb24gaW4gYSAKYm9keSwgbm90IHJlc3VycmVjdGlvbiBvZiB0aGF0IHNhbWUgYm9keSwgd2FzIG5vdCBzdWctIApnZXN0ZWQgYnkgYW55IG9mIHRoZXNlIHJlbmRlcmluZ3MuIExvb2tpbmcgYXQgdGhlIApzdWJqZWN0IGltcGFydGlhbGx5LCBpdCBjZXJ0YWlubHkgc2VlbXMgdGhhdCBub3RoaW5nIAplbHNlIGNvdWxkIHNhdGlzZnkgdGhlIHJlcXVpcmVtZW50cyBvZiB0aGUgdGVhY2hpbmcgCmdpdmVuLiBSZWFzb24gbGVhZHMgdXMgdG8gc3VwcG9zZSB0aGF0IHRoZSBjb3ItIApydXB0aWJsZSBib2R5IGNhbm5vdCByaXNlIGFnYWluOyB0aGVyZWZvcmUgdGhhdCB3aGljaCAKcmlzZXMgbXVzdCBiZSB0aGUgaW5jb3JydXB0aWJsZSBzb3VsLiBTaW5jZSB0aGlzIHNvdWwgCmlzIHRvIHJpc2UgaW4gYSBib2R5LCBpdCBtdXN0IHJpc2UgaW4gYSBmcmVzaCBib2R54oCUdGhhdCAKaXMsIGluIHRoZSBib2R5IG9mIGFuIGluZmFudC4gCgpFdmlkZW5jZSBhbHNvIGlzIG5vdCB3YW50aW5nIGV2ZW4gb24gdGhpcyBwaHlzaWNhbCAKcGxhbmUgaW4gc3VwcG9ydCBvZiB0aGUgdGhlb3J5ICh3aGljaCB3ZSBmcm9tIG90aGVyIApzb3VyY2VzIGtub3cgdG8gYmUgdHJ1ZSkgdGhhdCB0aGlzIGJlbGllZiBpbiByZWluY2FybmEtIAp0aW9uIHdhcyBoZWxkIGJ5IG1hbnkgYXQgdGhlIGFsbGVnZWQgdGltZSBvZiBDaHJpc3QsIAphbmQgd2FzIGFsc28gaGVsZCBhbmQgdGF1Z2h0IGJ5IGhpbS4gQSBtZXRlbXBzeS0gCmNob3NpcyBvZiBzb3VscyB3YXMgYSBkaXN0aW5jdGl2ZSBmZWF0dXJlIG9mIHRoZSBKZXdpc2ggCkthYmFsYTsgd2UgaGF2ZSB0aGUgdGVzdGltb255IG9mIEpvc2VwaHVzIHRoYXQgdGhlIAoKCmdvIFRIRSBDSFJJU1RJQU4gQ1JFRUQuIAoKClBoYXJpc2VlcyBiZWxpZXZlZCBpbiB0aGUgcmV0dXJuIHRvIGVhcnRoIG9mIHRoZSBzb3VscyAKb2YgdGhlIGp1c3QgaW4gb3RoZXIgYm9kaWVzLCBhbmQgdGhlIHF1ZXN0aW9uIHB1dCB0byAKSmVzdXMgcmVnYXJkaW5nIHRoZSBtYW4gYm9ybiBibGluZCBkaXN0aW5jdGx5IGluZGljYXRlcyAKYSBrbm93bGVkZ2Ugb2YgdGhlIGZhY3Qgb2YgcmVpbmNhcm5hdGlvbiwgYXMgZG9lcyBhbHNvIApoaXMgb3duIHJlbWFyayBvbiB0aGUgcmViaXJ0aCBvZiBFbGlqYWggaW4gdGhlIGZvcm0gb2YgCkpvaG4gdGhlIEJhcHRpc3QuIAoKSmVyb21lIGFuZCBMYWN0YW50aXVzIGJvdGggYmVhciB3aXRuZXNzIHRvIHRoZSBmYWN0IAp0aGF0IGEgYmVsaWVmIGluIG1ldGVtcHN5Y2hvc2lzIGV4aXN0ZWQgaW4gdGhlIGVhcmx5IApDaHVyY2guIE9yaWdlbiBub3Qgb25seSBleHByZXNzZWQgaGlzIGJlbGllZiBpbiBpdCwgCmJ1dCB3YXMgY2FyZWZ1bCB0byBzdGF0ZSB0aGF0IGhpcyBpZGVhcyBvbiB0aGUgc3ViamVjdCAKd2VyZSBub3QgZHJhd24gZnJvbSBQbGF0bywgYnV0IHRoYXQgaGUgd2FzIGluc3RydWN0ZWQgCmJ5IENsZW1lbnMgb2YgQWxleGFuZHJpYSwgd2hvIGhhZCBzdHVkaWVkIHVuZGVyIApQYW50ZW51cywgYSBkaXNjaXBsZSBvZiBhcG9zdG9saWMgbWVuLiBJbmRlZWQsIGl0IApzZWVtcyBieSBubyBtZWFucyBpbXByb2JhYmxlIHRoYXQgdGhpcyBkb2N0cmluZSBvZiAKcmVpbmNhcm5hdGlvbiBmb3JtZWQgb25lIG9mIHRoZSDigJjigJzigJggbXlzdGVyaWVz4oCdIG9mIHRoZSAKZWFybHkgQ2h1cmNoLCB0YXVnaHQgb25seSB0byB0aG9zZSB3aG8gd2VyZSBmb3VuZCAKd29ydGh5IHRvIGhlYXIuIAoK4oCYIEFuZCB0aGUgbGlmZSBldmVybGFzdGluZy7igJ0gVGhlIHNlbWktcG9ldGljYWwgZm9ybSAKaW50byB3aGljaCBvdXIgdHJhbnNsYXRvcnMgaGF2ZSB0aHJvd24gdGhpcyBjbGF1c2UgaGFzIApsZWQgdGhlIG9ydGhvZG94IHRvIHNlZSBpbiBpdCBhIHJlZmVyZW5jZSB0byBldGVybmFsIGxpZmUgCmluIGhlYXZlbiwgYnV0IGluIHJlYWxpdHkgaXQgYmVhcnMgbm8gc3VjaCBzaWduaWZpY2F0aW9uIDsgCml0IGlzIG1lcmVseSBhIHN0cmFpZ2h0Zm9yd2FyZCBzdGF0ZW1lbnQgb2YgdGhlIGltbW9yLSAKdGFsaXR5IG9mIHRoZSBodW1hbiBzb3VsLiBJbiB0aGUgQ2VsdGljIENyZWVkIHRoZSBmb3JtIAppcyBzaW1wbGVyIHN0aWxsLCDigJxJIGJlbGlldmUgaW4gbGlmZSBhZnRlciBkZWF0aCzigJnigJkgd2hpbGUgCnRoZSBOaWN3I2FuIHN5bWJvbCBleHByZXNzZXMgaXQgYXMg4oCYdGhlIGxpZmUgb2YgdGhlIAp3b3JsZCB0byBjb21lLOKAnSBvciwgdG8gdHJhbnNsYXRlIG1vcmUgYWNjdXJhdGVseSwg4oCcdGhlIApsaWZlIG9mIHRoZSBjb21pbmcgYWdlLuKAnSAKCkhhdmluZyBub3cgZ2xhbmNlZCB0aHJvdWdoIHRoZSB2YXJpb3VzIGNsYXVzZXMgb2YgCnRoZSBOaWNlbmUgYW5kIHRoZSBBcG9zdGxlc+KAmSBDcmVlZHMsIGl0IHJlbWFpbnMgZm9yIHVzIAoKClRIRSBBVEhBTkFTSUFOIENSRUVELiBnaSAKCgpvbmx5IHRvIHRha2UgdXAgJHVjaCBwb2ludHMgaW4gdGhlIEF0aGFuYXNpYW4gQ3JlZWQgYXMgCmhhdmUgbm90IGFscmVhZHkgYmVlbiBkZWFsdCB3aXRoIGluIHRoZSBjb25zaWRlcmF0aW9uIApvZiB0aGUgZWFybGllciBzeW1ib2xzLiBUaGUgQXRoYW5hc2lhbiBDcmVlZCBpcyAKdXN1YWxseSByZWdhcmRlZCBhcyBsaXR0bGUgbW9yZSB0aGFuIGFuIGV4cGFuc2lvbiBvZiAKdGhlIGVhcmxpZXIgZm9ybXVseiwgYW5kLCBhcyBoYXMgYWxyZWFkeSBiZWVuIHN0YXRlZCwgCmNyaXRpY2lzbSBmaXhlcyB0aGUgZGF0ZSBvZiBpdHMgY29tcG9zaXRpb24gY29tcGFyYS0gCnRpdmVseSBsYXRlLiBNdWNoIG9ibG9xdXkgaGFzIGJlZW4gY2FzdCB1cG9uIGl0IGluIApyZWNlbnQgeWVhcnMgaW4gY29uc2VxdWVuY2Ugb2Ygd2hhdCBoYXZlIGJlZW4gY2FsbGVkIAppdHMgZGFtbmF0b3J5IGNsYXVzZXMsIGFuZCBtYW55IHBlb3BsZSB3aG8gbmF0dXJhbGx5IAplbm91Z2ggZW50aXJlbHkgbWlzdW5kZXJzdG9vZCB0aGVpciByZWFsIG1lYW5pbmcgaGF2ZSAKb24gdGhpcyBhY2NvdW50IHJlZ2FyZGVkIHRoZSB3aG9sZSBDcmVlZCB3aXRoIGhvcnJvciAK4oCUaW5kZWVkIHNvbWUgb2Ygb3VyIG1vc3QgZW5saWdodGVuZWQgY2xlcmd5LCBpbiBvcGVuIApkZWZpYW5jZSBvZiB0aGUgZGlyZWN0aW9ucyBvZiB0aGUgcnVicmljLCBoYXZlIGRlY2xpbmVkIAp0byBhbGxvdyBpdHMgcmVjaXRhdGlvbiBpbiB0aGVpciBjaHVyY2hlcy4gSGFkIHRoZSAKbWVhbmluZyBvcmRpbmFyaWx5IGF0dGFjaGVkIHRvIHRob3NlIGNsYXVzZXMgYmVlbiB0aGUgCnRydWUgb25lLCBzdWNoIGEgcmVmdXNhbCB3b3VsZCBoYXZlIGJlZW4gZmFyIG1vcmUgdGhhbiAKanVzdGlmaWVkLCB5ZXQgdG8gdGhlIG1pbmQgb2YgdGhlIFRoZW9zb3BoaWNhbCBzdHVkZW50IAp0aGV5IGFyZSBlbnRpcmVseSB1bm9iamVjdGlvbmFibGUsIGZvciBoZSBzZWVzIGluIHRoZW0gCm5vdCBhIGJsYXNwaGVtb3VzIHByb2NsYW1hdGlvbiBvZiB0aGUgaW5hYmlsaXR5IG9mIHRoZSAKTG9nb3MgdG8gY2FycnkgdGhyb3VnaCB0aGUgZXZvbHV0aW9uIHdoaWNoIEhlIGhhcyAKY29tbWVuY2VkLCBidXQgbWVyZWx5IHRoZSBzdGF0ZW1lbnQgb2YgYSB3ZWxsLWtub3duIApmYWN0IGluIG5hdHVyZS4gCgpMZXQgdXMgdGFrZSB1cCB0aGUgZXhhbWluYXRpb24gb2YgdGhlIFF1aWN1bnF1ZSAKdnVsdCwgb21pdHRpbmcsIG9mIGNvdXJzZSwgc3VjaCBwYXJ0cyBvZiBpdHMgZXhwbGFuYXRpb24gCmFzIHdvdWxkIGJlIG1lcmUgcmVwZXRpdGlvbnMgb2Ygd2hhdCBoYXMgYWxyZWFkeSBiZWVuIApzYWlkLCBhbmQgY29uZmluaW5nIG91cnNlbHZlcyB0byB0aGUgcG9pbnRzIGluIHdoaWNoIAp0aGlzIENyZWVkIGlzIGZ1bGxlciB0aGFuIHRoZSBvdGhlciB0d28uIAoKSW4gdGhlIG9yZGluYXJ5IGludGVycHJldGF0aW9uIG9mIHRoZSBvcGVuaW5nIHdvcmRzLCAK4oCYV2hvc29ldmVyIHdpbGwgYmUgc2F2ZWQs4oCdIHdlIGF0IG9uY2UgZW5jb3VudGVyIGEgCgoKOTIgVEhFIENIUklTVElBTiBDUkVFRC4gCgoKbWlzY29uY2VwdGlvbiBvZiB0aGUgbW9zdCBnbGFyaW5nIHNhcmljbGVyIGZvciB0aGV5IAphcmUgY29tbW9ubHkgc3VwcG9zZWQgdG8gZW1ib2R5IHNvbWUgc3VjaCBibGFzLSAKcGhlbW91cyBpZGVhIGFzIOKAmOKAnOKAmCBzYXZlZCBmcm9tIGV0ZXJuYWwgZGFtbmF0aW9uLOKAnSBvciAK4oCYc2F2ZWQgZnJvbSB0aGUgd3JhdGggb2YgZ29k4oCdIChJIHJlYWxseSBjYW5ub3QgaG9ub3VyIAp3aXRoIGEgY2FwaXRhbCBsZXR0ZXIgYW55IGJlaW5nIHdobyBpcyBzdXBwb3NlZCB0byBiZSAKY2FwYWJsZSBpbiBoaXMgYW5nZXIgb2YgY29tbWl0dGluZyBzbyB1bnNwZWFrYWJsZSBhbiAKYXRyb2NpdHkgYXMgdGhlIGluZmxpY3Rpb24gb2YgZW5kbGVzcyB0b3J0dXJlISkuIEEgZmFyIAptb3JlIGFjY3VyYXRlIHRyYW5zbGF0aW9uLCBhbmQgb25lIG11Y2ggbGVzcyBsaWtlbHkgdG8gCmJlIG1pc3VuZGVyc3Rvb2QsIHdvdWxkIGhhdmUgYmVlbiDigJjigJggV2hvZXZlciB3aXNoZXMgCnRvIGJlIHNhZmUs4oCdIGFuZCB3aGVuIGl0IGlzIHB1dCBpbiB0aGlzIGZvcm0gYW55IHN0dWRlbnQgCm9mIG9jY3VsdGlzbSB3aWxsIGF0IG9uY2Ugc2VlIGV4YWN0bHkgd2hhdCBpcyBtZWFudC4gCgpXZSBoYXZlIGFsbCByZWFkIGluIGVhcmx5IFRoZW9zb3BoaWNhbCBsaXRlcmF0dXJlIAphYm91dCB0aGUgY3JpdGljYWwgcGVyaW9kIG9mIHRoZSBmaWZ0aCByb3VuZCwgYW5kIHdlIHRodXMgCnVuZGVyc3RhbmQgdGhhdCBhIHBlcmlvZCB3aWxsIHRoZW4gYmUgcmVhY2hlZCB3aGVuIGEgCmNvbnNpZGVyYWJsZSBwb3J0aW9uIG9mIGh1bWFuaXR5IHdpbGwgaGF2ZSB0byBkcm9wIG91dCAKZm9yIHRoZSB0aW1lIGZyb20gb3VyIHNjaGVtZSBvZiBldm9sdXRpb24sIHNpbXBseSAKYmVjYXVzZSB0aGV5IGhhdmUgbm90IHlldCBkZXZlbG9wZWQgdGhlbXNlbHZlcyBlbm91Z2ggCnRvIGJlIGFibGUgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIG9wcG9ydHVuaXRpZXMgd2hpY2ggCndpbGwgdGhlbiBiZSBvcGVuaW5nIGJlZm9yZSBtYW5raW5k4oCUYmVjYXVzZSB1bmRlciAKdGhlIGNvbmRpdGlvbnMgdGhlbiBwcmV2YWlsaW5nIG5vIGluY2FybmF0aW9ucyBvZiBhbCAKc3VmZmljaWVudGx5IHVuYWR2YW5jZWQgdHlwZSB0byBzdWl0IHRoZW0gd2lsbCBiZSBhdmFpbCAKYWJsZS4gCgpUaHVzIHdlIHNoYWxsIGNvbWUgdG8gYSBkZWZpbml0ZSBkaXZpc2lvbuKAlGEga2luZCAKb2YgZGF5IG9mIGp1ZGdtZW50IHVwb24gd2hpY2ggd2lsbCB0YWtlIHBsYWNlIHRoZSAKc2VwYXJhdGlvbiBvZiB0aGUgc2hlZXAgZnJvbSB0aGUgZ29hdHMsIGFmdGVyIHdoaWNoIAp0aGVzZSBzaGFsbCBwYXNzIG9uIGludG8geG9uaWFuIGxpZmUsIGFuZCB0aG9zZSBpbnRvIAp6ZW9uaWFuIGRlYXRo4oCUb3IgYXQgbGVhc3QgaW50byBhIGNvbmRpdGlvbiBvZiBjb21wYXJhLSAKdGl2ZWx5IHN1c3BlbmRlZCBldm9sdXRpb24uIC9Fb25pYW4sIHdlIG9ic2VydmU7IHRoYXQgCmlzLCBhZ2UtbG9uZywgbGFzdGluZyB0aHJvdWdob3V0IHRoaXMgYWdlLCBvciBkaXNwZW5zYS0gCgoKI09OSUFOIFNBTFZBVElPTi4gOTMgCsKuIAoKCnRpb24sIG9yIG1hbnZhbnRhcmE7IGJ1dCBub3QgZm9yIGEgbW9tZW50IHRvIGJlIApsb29rZWQgdXBvbiBhcyBldGVybmFsLiBUaG9zZSB3aG8gdGh1cyBmYWxsIG91dCBvZiAKdGhlIGN1cnJlbnQgb2YgcHJvZ3Jlc3MgZm9yIHRoZSB0aW1lIHdpbGwgdGFrZSB1cCB0aGUgCndvcmsgYWdhaW4gaW4gdGhlIG5leHQgY2hhaW4gb2YgZ2xvYmVzIGV4YWN0bHkgd2hlcmUgCnRoZXkgaGFkIHRvIGxlYXZlIGl0IGluIHRoaXM7IGFuZCB0aG91Z2ggdGhleSBsb3NlIHN1Y2ggCnBsYWNlIGFzIHRoZXkgaGF2ZSBoZWxkIGluIHRoaXMgZXZvbHV0aW9uLCB5ZXQgaXQgaXMgb25seSAKYmVjYXVzZSB0aGUgZXZvbHV0aW9uIGhhcyBwYXNzZWQgYmV5b25kIHRoZW0sIGFuZCBpdCAKd291bGQgaGF2ZSBiZWVuIGEgbWVyZSB3YXN0ZSBvZiB0aW1lIGZvciB0aGVtIHRvIAphdHRlbXB0IHRvIHN0YXkgaW4gaXQgYW55IGxvbmdlci4gCgpJdCB3aWxsIGJlIHJlbWVtYmVyZWQgdGhhdCB3aGVuIGEgcHVwaWwgaGFzIGJlZW4gCnNvIGhhcHB5IGFzIHRvIHBhc3Mgc3VjY2Vzc2Z1bGx5IHRocm91Z2ggYWxsIHRoZSBkaWZmaS0gCmN1bHRpZXMgb2YgdGhlIHByb2JhdGlvbmFyeSBwZXJpb2QsIGFuZCBoYXMgdGFrZW4gdGhhdCAKZmlyc3QgaW5pdGlhdGlvbiB3aGljaCBpcyB0aGUgZ2F0ZXdheSB0byB0aGUgUGF0aCBQcm9wZXIsIApoZSBpcyBzcG9rZW4gb2YgYXMgdGhlIFNvdGFwYW5uYSDigJQg4oCY4oCYaGUgd2hvIGhhcyAKZW50ZXJlZCB1cG9uIHRoZSBzdHJlYW0u4oCZIFRoZSBtZWFuaW5nIG9mIHRoaXMgaXMgCnRoYXQgaGUgYXMgYW4gaW5kaXZpZHVhbCBoYXMgYWxyZWFkeSBwYXNzZWQgdGhlIGNyaXRpY2FsIApwZXJpb2QgdG8gd2hpY2ggd2UgaGF2ZSByZWZlcnJlZDsgaGUgaGFzIGFscmVhZHkgCnJlYWNoZWQgdGhlIHBvaW50IG9mIHNwaXJpdHVhbCBkZXZlbG9wbWVudCB3aGljaCBuYXR1cmUgCnJlcXVpcmVzIGFzIGEgcGFzc3BvcnQgdG8gdGhlIGxhdGVyIHN0YWdlcyBvZiB0aGUgc2NoZW1lIApvZiBldm9sdXRpb24gb2Ygd2hpY2ggd2UgZm9ybSBhIHBhcnQuIEhlIGhhcyBlbnRlcmVkIAp1cG9uIHRoZSBzdHJlYW0gb2YgdGhhdCBldm9sdXRpb24sIG5vdyBzd2VlcGluZyBhbG9uZyAKaXRzIHVwd2FyZCBhcmMsIGFuZCB0aG91Z2ggaGUgbWF5IHN0aWxsIHJldGFyZCBvciBhY2NlbC0gCmVyYXRlIGhpcyBwcm9ncmVzc+KAlG1heSBldmVuLCBpZiBoZSBhY3QgZm9vbGlzaGx5LCB3YXN0ZSAKYSB2ZXJ5IGdyZWF0IGRlYWwgb2YgdmFsdWFibGUgdGltZeKAlGhlIGNhbm5vdCBhZ2FpbiAKdHVybiBhc2lkZSBwZXJtYW5lbnRseSBmcm9tIHRoYXQgc3RyZWFtLCBidXQgaXMgY2FycmllZCAKc3RlYWRpbHkgYWxvbmcgYnkgaXQgdG93YXJkcyB0aGUgZ29hbCBhcHBvaW50ZWQgZm9yIApodW1hbml0eS4gCgpIZSBpcyB0aHVzIHNhZmUgZnJvbSB0aGUgZ3JlYXRlc3Qgb2YgdGhlIGRhbmdlcnMgCndoaWNoIG1lbmFjZSBtYW5raW5kIGR1cmluZyB0aGlzIG1hbnZhbnRhcmHigJR0aGUgCgoKOTQgVEhFIENIUklTVElBTiBDUkVFRCwgCgoKZGFuZ2VyIG9mIGRyb3BwaW5nIG91dCBvZiB0aGUgY3VycmVudCBvZiBpdHMgZXZvbHV0aW9uIDsgCmFuZCBzbyBoZSBpcyBvZnRlbiBzcG9rZW4gb2YgYXMg4oCY4oCYIHRoZSBzYXZlZOKAnSBvciDigJgnIHRoZSAKZWxlY3Qu4oCdIEl0IGlzIGluIHRoaXMgc2Vuc2UsIGFuZCBpbiB0aGlzIHNlbnNlIG9ubHksIAp0aGF0IHdlIGNhbiB0YWtlIHRoZSB3b3JkcyBvZiB0aGlzIGZpcnN0IGNsYXVzZSBvZiB0aGUgCkF0aGFuYXNpYW4gQ3JlZWQsIOKAmOKAmCBXaG9zb2V2ZXIgd2lsbCBiZSBzYXZlZCwgYmVmb3JlIAphbGwgdGhpbmdzIGl0IGlzIG5lY2Vzc2FyeSB0aGF0IGhlIGhvbGQgdGhlIENhdGhvbGljIApGYWl0aC7igJ0gCgpOb3IgbmVlZCB3ZSBsZXQgb3Vyc2VsdmVzIGZhbGwgaW50byB0aGUgdnVsZ2FyIGVycm9yIAphcyB0byB0aGUgcmVhbCBtZWFuaW5nIG9mIHRoaXMgbGFzdCBzdGF0ZW1lbnQuIFRoZSAKd29yZCBjYXRob2xpYyBtZWFucyBzaW1wbHkgdW5pdmVyc2FsLCBhbmQgdGhhdCBmYWl0aCAKd2hpY2ggaXMgdHJ1bHkgdW5pdmVyc2FsIGlzIG5vdCB0aGUgZm9ybSBpbnRvIHdoaWNoIAp0cnV0aCBpcyBjYXN0IGJ5IGFueSBvbmUgb2YgdGhlIGdyZWF0IFRlYWNoZXJzLCBidXQgdGhlIAp0cnV0aCBpdHNlbGYgd2hpY2ggdW5kZXJsaWVzIGFsbCBmb3JtIOKAlHRoZSBXaXNkb20gClJlbGlnaW9uLCBvZiB3aGljaCBhbGwgdGhlIGV4b3RlcmljIHJlbGlnaW9ucyBhcmUgb25seSAKcGFydGlhbCBleHByZXNzaW9ucy4gU28gdGhhdCB0aGlzIGNsYXVzZSwgd2hlbiBwcm8tIApwZXJseSB1bmRlcnN0b29kLCBzaW1wbHkgY29udmV5cyB0byB1cyB0aGUgdW5kZW5pYWJsZSAKc3RhdGVtZW50IHRoYXQgZm9yIGFueSBtYW4gd2hvIHdpc2hlcyB0byBjYXJyeSBvdXQgCmhpcyBldm9sdXRpb24gdG8gaXRzIGFwcG9pbnRlZCBlbmQsIHRoZSBtb3N0IGltcG9ydGFudCAKdGhpbmcgaXMgcmlnaHRseSB0byB1bmRlcnN0YW5kIHRoZSBncmVhdCBvY2N1bHQgdGVhY2hpbmcgCmFzIHRvIHRoZSBvcmlnaW4gb2YgYWxsIHRoaW5ncyBhbmQgdGhlIGRlc2NlbnQgb2Ygc3Bpcml0IAppbnRvIG1hdHRlci4gCgpJdCBoYXMgYmVlbiBvYmplY3RlZCB0aGF0IHRoaXMgc3RhdGVtZW50IGlzIGluYWNjdS0gCnJhdGUsIGFuZCB0aGUgb2JqZWN0b3JzIHJlbWFyayB0aGF0IHN1cmVseSB0aGUgbW9zdCAKaW1wb3J0YW50IHRlYWNoaW5nIHRvIGFueSBtYW4gaXMgdGhhdCB3aGljaCBlZHVjYXRlcyAKaGltIG1vcmFsbHnigJR3aGljaCB0ZWxscyBoaW0gbm90IHdoYXQgaGUgbXVzdCBiZS0gCmxpZXZlIGJ1dCB3aGF0IGhlIG11c3QgZG8uIE5vdyBvZiBjb3Vyc2UgdGhhdCBpcyBxdWl0ZSAKdHJ1ZTsgYnV0IHN1Y2ggb2JqZWN0b3JzIGlnbm9yZSBvciBmb3JnZXQgdGhlIGZhY3QgdGhhdCAKdGhlIGZ1bGxlc3QgbW9yYWwgZGV2ZWxvcG1lbnQgaXMgYWx3YXlzIHRha2VuIGZvciAKZ3JhbnRlZCBpbiBhbGwgcmVsaWdpb25zIGJlZm9yZSBldmVuIHRoZSBwb3NzaWJpbGl0eSBvZiAKCgpUSEUgREFNTkFUT1JZIENMQVVTRVMuIDk1IAphIAoKCmF0dGFpbmluZyBhIHRydWUgZ3Jhc3Agb2YgYW55IHNvcnQgb2YgaGlnaCBvY2N1bHQga25vdy0gCmxlZGdlIGlzIGFkbWl0dGVkLiBUaGV5IGFsc28gZm9yZ2V0IHRoYXQgaXQgaXMgb25seSBieSAKdGhpcyBvY2N1bHQga25vd2xlZGdlIHRoYXQgZWl0aGVyIHRoZSBjb21tYW5kcyBvciB0aGUgCnNhbmN0aW9ucyBvZiB0aGVpciBtb3JhbCBjb2RlIGNhbiBiZSBleHBsYWluZWQsIG9yIAppbmRlZWQgdGhhdCBhbnkgcmVhc29uIGNhbiBiZSBzaG93biBmb3IgdGhlIHZlcnkgCmV4aXN0ZW5jZSBvZiBhIG1vcmFsIGNvZGUgYXQgYWxsLiAKCkluIGFkZGl0aW9uIHRvIGFsbCB0aGlzIGl0IGhhcyB0byBiZSBjbGVhcmx5IHJlY29nbml6ZWQgCnRoYXQgdGhvdWdoIG1vcmFsaXR5IGlzIGFic29sdXRlbHkgbmVjZXNzYXJ5IGFzIGEgCnByZXJlcXVpc2l0ZSB0byByZWFsIHByb2dyZXNzLCBpdCBpcyBieSBubyBtZWFucyBhbGwgdGhhdCAKaXMgcmVxdWlyZWQuIFVuaW50ZWxsaWdlbnQgZ29vZG5lc3Mgd2lsbCBzYXZlIGEgbWFuIAptdWNoIHBhaW4gYW5kIHRyb3VibGUgaW4gdGhlIGNvdXJzZSBvZiBoaXMgdXB3YXJkIApwYXRoLCBidXQgaXQgY2FuIG5ldmVyIGNhcnJ5IGhpbSBiZXlvbmQgYSBjZXJ0YWluIHBvaW50IAppbiBpdDsgdGhlcmUgY29tZXMgYSBwZXJpb2Qgd2hlbiBpbiBvcmRlciB0byBwcm9ncmVzcyAKaXQgaXMgYWJzb2x1dGVseSBpbXBlcmF0aXZlIHRoYXQgYSBtYW4gc2hvdWxkIGtub3cuIApBbmQgdGhpcyBpcyBhdCBvbmNlIHRoZSBleHBsYW5hdGlvbiBhbmQgdGhlIGp1c3RpZmljYS0gCnRpb24gb2YgdGhlIHNlY29uZCB2ZXJzZSBvZiB0aGUgQ3JlZWQsIGFyb3VuZCB3aGljaCAKc3VjaCBoZWF0ZWQgY29udHJvdmVyc3kgaGFzIHJhZ2VkIOKAlCDigJwgV2hpY2ggZmFpdGggCmV4Y2VwdCBldmVyeSBvbmUgZG8ga2VlcCB3aG9sZSBhbmQgdW5kZWZpbGVkLCB3aXRob3V0IApkb3VidCBoZSBzaGFsbCBwZXJpc2ggZXZlcmxhc3RpbmdseSDigJ3igJR0aGUgbGFzdCB3b3JkIApiZWluZyBvZiBjb3Vyc2Ugbm90IHRha2VuIGluIHRoZSB1bnBoaWxvc29waGljYWwgYW5kIAptZXRhcGh5c2ljYWxseSBpbXBvc3NpYmxlIG9ydGhvZG94IHNlbnNlLCBidXQgdW5kZXItIApzdG9vZCBhcyBiZWZvcmUgdG8gc2lnbmlmeSB6b25pYWxseSwgYXMgZmFyIGFzIHRoaXMgYWdlIApvciBtYW52YW50YXJhIGlzIGNvbmNlcm5lZC4gCgpUaGVyZSBpcyBubyBoYWxvIG9mIHNwZWNpYWwgYW50aXF1aXR5IHN1cnJvdW5kaW5nIAp0aGlzIHBhcnRpY3VsYXIgZm9ybSBvZiB3b3JkcywgZm9yIGluIHRoZSBwcm9mZXNzaW9uIG9mIApEZW5lYmVydCwgd2hpY2ggaXMgdGhlIG9sZGVzdCBmb3JtIHdlIGhhdmUgb2YgdGhpcyAKZWFybGllciBwYXJ0IG9mIHRoZSBDcmVlZCwgdGhleSBkbyBub3QgYXBwZWFyLiBJdCBpcyAKcHJvYmFibGUgdGhhdCB0aGUgb3JpZ2luYWwgd3JpdGVyIHVzZWQgdGhlbSBhbmQgdGhhdCAKRGVuZWJlcnQsIG1pc3VuZGVyc3RhbmRpbmcgdGhlbSwgb21pdHRlZCB0aGVtOyBidXQgCgoKOTYgVEhFIENIUklTVElBTiBDUkVFRC4gCgoKwqIgCgp3aGV0aGVyIHRoYXQgaXMgc28gb3Igbm90LCB0aGVyZSBpcyBubyBuZWVkIHRvIGJlIGFmcmFpZCAKb2YgdGhlbSBvciB0byBhdHRlbXB0IHRvIGV4cGxhaW4gYXdheSB0aGVpciBvYnZpb3VzIAptZWFuaW5nOyB0aGlzIGNsYXVzZSBpcyBhZnRlciBhbGwgbWVyZWx5IHRoZSBjb252ZXJzZSAKb2YgdGhlIGxhc3Qgb25lLCBhbmQgc2ltcGx5IHN0YXRlcyBzb21ld2hhdCBtb3JlIAplbXBoYXRpY2FsbHkgdGhhdCwgc2luY2UgYSBncmFzcCBvZiBjZXJ0YWluIGdyZWF0IGZhY3RzIAppcyBtb3N0IGltcG9ydGFudCBhbmQgaW5kZWVkIG5lY2Vzc2FyeSBpbiBvcmRlciB0byAKcGFzcyB0aGUgY3JpdGljYWwgcGVyaW9kLCB0aG9zZSB3aG8gZG8gbm90IGFjcXVpcmUgdGhhdCAKZ3Jhc3Agd2lsbCBjZXJ0YWlubHkgZmFpbCB0byBwYXNzIGl0LiA8QSBzZXJpb3VzIHN0YXRlLSAKbWVudCwgdHJ1bHksIGFuZCB3ZWxsIHdvcnRoeSBvZiBvdXIgY2xvc2VzdCBhdHRlbnRpb24sIApidXQgc3VyZWx5IGluIG5vIHNlbnNlIGEgZHJlYWRmdWwgb25lOyBmb3Igd2hlbiBhIG1hbiAKaGFzIG9uY2UgZ290IGJleW9uZCB0aGUgc3RhZ2UgaW4gd2hpY2ggaGUg4oCcIGZhaW50bHkgCnRydXN0cyB0aGUgbGFyZ2VyIGhvcGXigJ3igJkgdG8gdGhhdCBmdXJ0aGVyIHN0YWdlIHdoZXJlIGhlIAprbm93cyB0aGF0IGl0IGlzIG5vdCBhIGhvcGUgYnV0IGEgY2VydGFpbnR54oCUaW4gb3RoZXIgCndvcmRzLCB3aGVuIGhlIGhhcyBmb3IgdGhlIGZpcnN0IHRpbWUgZGlzY292ZXJlZCBzb21lLSAKdGhpbmcgb2Ygd2hhdCBldm9sdXRpb24gcmVhbGx5IG1lYW5z4oCUaGUgY2FuIG5ldmVyIAphZ2FpbiBmZWVsIHRoYXQgYXdmdWwgc2Vuc2Ugb2YgaGVscGxlc3MgaG9ycm9yIHdoaWNoIAp3YXMgYm9ybiBvZiBob3BlbGVzc25lc3MuIAoKT3VyIGF1dGhvciB0aGVuIHZlcnkgY2FyZWZ1bGx5IHByb2NlZWRzIHRvIGluZm9ybSB1cyAKd2hhdCB0aGVzZSBncmVhdCBmYWN0cyBhcmUgd2hvc2UgY29tcHJlaGVuc2lvbiAoaW4gc28gCmZhciBhcyBvdXIgdmVyeSBmaW5pdGUgbWluZHMgbWF5IGF0IHByZXNlbnQgY29tcHJlLSAKaGVuZCB0aGVtKSBpcyBzbyBlc3NlbnRpYWwgdG8gb3VyIGhvcGUgb2YgcHJvZ3Jlc3MuIAoK4oCYwqIgQW5kIHRoZSBDYXRob2xpYyBmYWl0aCBpcyB0aGlzLCB0aGF0IHdlIHdvcnNoaXAgb25lIApHb2QgaW4gVHJpbml0eSwgYW5kIFRyaW5pdHkgaW4gVW5pdHksIG5laXRoZXIgY29uLSAKZm91bmRpbmcgdGhlIHBlcnNvbnMsIG5vciBkaXZpZGluZyB0aGUgc3Vic3RhbmNlLuKAneKAmSAKUGVyaGFwcyB0aGUgZ3JlYXQgbXlzdGVyeSBvZiB0aGUgTG9nb3MgY291bGQgaGFyZGx5IApiZSBiZXR0ZXIgcHV0IGludG8gd29yZHMgZm9yIG91ciBwaHlzaWNhbCB1bmRlcnN0YW5kLSAKaW5nOyB3ZSBjYW4gc2NhcmNlbHkgYmV0dGVyIGV4cHJlc3MgdGhlIGV0ZXJuYWwgT25lLSAKbmVzcyB3aGljaCBpcyB5ZXQgZXZlciB0aHJlZWZvbGQgaW4gSXRzIGFzcGVjdC4gQW5kIAphc3N1cmVkbHkgdGhlIGZpbmFsIGNhdXRpb24gMXMgbW9zdCBlbXBoYXRpY2FsbHkgbmVjZXMtIAoKClRIRSBFVEVSTkFMIFVOSVRZLiA5NyAKCgpzYXJ5LCBmb3IgbmV2ZXIgd2lsbCB0aGUgc3R1ZGVudCBiZSBhYmxlIGV2ZW4gdG8gYXBwcm9hY2ggCnRoZSBjb21wcmVoZW5zaW9uIG9mIHRoZSBvcmlnaW4gb2YgdGhlIHNvbGFyIHN5c3RlbSB0byAKd2hpY2ggaGUgYmVsb25nc+KAlG5ldmVyIGJ5IGNvbnNlcXVlbmNlIHdpbGwgaGUgaW4gCnRoZSBsZWFzdCB1bmRlcnN0YW5kIHRoZSB3b25kZXJmdWwgdHJpbml0eSBvZiA0dG3DqSwgCmJ1ZGRoaSwgbWFuYXMsIHdoaWNoIGlzIGhpbXNlbGYsIHVubGVzcyBoZSB0YWtlcyB0aGUgCm1vc3Qgc2NydXB1bG91cyBjYXJlIHRvIGtlZXAgY2xlYXIgaW4gaGlzIG1pbmQgdGhlIApkaWZmZXJlbnQgZnVuY3Rpb25zIG9mIHRoZSBUaHJlZSBHcmVhdCBBc3BlY3RzIG9mIHRoZSAKT25lLCB3aGlsZSBuZXZlciBmb3Igb25lIG1vbWVudCBydW5uaW5nIHRoZSByaXNrIG9mIArigJjigJggZGl2aWRpbmcgdGhlIHN1YnN0YW5jZeKAnSBieSBsb3Npbmcgc2lnaHQgb2YgdGhlIGV0ZXJuYWwgCnVuZGVybHlpbmcgVW5pdHkuIAoKTW9zdCBjZXJ0YWlubHkg4oCY4oCYIHRoZXJlIGlzIG9uZSBwZXJzb24gb2YgdGhlIEZhdGhlciwgCmFub3RoZXIgb2YgdGhlIFNvbiwgYW5kIGFub3RoZXIgb2YgdGhlIEhvbHkgR2hvc3Qs4oCdIApmb3IgcGVyc29uYSBpcyBub3RoaW5nIGluIHRoZSB3b3JsZCBidXQgYSBtYXNrLCBhbiAKYXNwZWN0IDsgeWV0IGFnYWluIGJleW9uZCBhbGwgc2hhZG93IG9mIGRvdWJ0IG9yIHF1ZXMtIAp0aW9uIOKAmHRoZSBHb2RoZWFkIG9mIHRoZSBGYXRoZXIsIG9mIHRoZSBTb24sIGFuZCBvZiAKdGhlIEhvbHkgR2hvc3QgaXMgYWxsIG9uZeKAlHRoZSBnbG9yeSBlcXVhbCwgdGhlIG1hamVzdHkgCmNvLWV0ZXJuYWws4oCZ4oCZIHNpbmNlIGFsbCBhcmUgZXF1YWxseSBtYW5pZmVzdGF0aW9ucyBvZiB0aGUgCmluZWZmYWJsZSBzcGxlbmRvdXIgb2YgSGltIGluIHdob20gb3VyIHdob2xlIHN5c3RlbSAKbGl2ZXMgYW5kIG1vdmVzIGFuZCBoYXMgaXRzIGJlaW5nLiAKCuKAnFVuY3JlYXRl4oCdIGluZGVlZCBhcmUgZWFjaCBvZiB0aGVzZSBhc3BlY3RzIGFzIApyZWdhcmRzIHRoZWlyIG93biBzeXN0ZW0sIGFuZCBkaWZmZXJpbmcgdGhlcmVieSBmcm9tIApldmVyeSBvdGhlciBmb3JjZSBvciBwb3dlciB3aXRoaW4gaXRzIGxpbWl0cywgc2luY2UgYWxsIAp0aGVzZSBvdGhlcnMgYXJlIGNhbGxlZCBpbnRvIGV4aXN0ZW5jZSBieSB0aGVtIGFuZCBpbiAKdGhlbTsg4oCcaW5jb21wcmVoZW5zaWJsZeKAnSBpbmRlZWQsIG5vdCBvbmx5IGluIHRoZSAKbW9kZXJuIHNlbnNlIG9mICogdW51bmRlcnN0YW5kYWJsZSzigJ0gYnV0IGluIHRoZSBtdWNoIApvbGRlciBvbmUgb2Yg4oCY4oCYIHVuY29udGFpbmFibGUs4oCdIHNpbmNlIG5vdGhpbmcgb24gdGhlc2UgCmZhciBsb3dlciBwbGFuZXMgKHdoaWNoIGFsb25lIHdlIGtub3cpIGNhbiBldmVyIGJlIAptb3JlIHRoYW4gdGhlIG1vc3QgcGFydGlhbCBhbmQgaW5jb21wbGV0ZSBtYW5pZmVzdGEtIAp0aW9uIG9mIHRoZWlyIHVuc2hhZG93ZWQgZ2xvcnk7IOKAmOKAmCBldGVybmFs4oCdIGNlcnRhaW5seSwgCgoKOTggVEhFIENIUklTVElBTiBDUkVFRC4gCgoKaW4gdGhhdCB0aGV5IGFsbCBlbmR1cmUgYXMgbG9uZyBhcyB0aGVpciBzeXN0ZW0gZW5kdXJlcywgCmFuZCBwcm9iYWJseSB0aHJvdWdoIG1hbnkgdGhvdXNhbmRzIG9mIHN5c3RlbXM7IArigJhDYW5kIHlldCB0aGV5IGFyZSBub3QgdGhyZWUgZXRlcm5hbHMsIGJ1dCBvbmUgZXRlcm5hbCA7IApub3QgdGhyZWUgdW5jcmVhdGVkLCBub3IgdGhyZWUgaW5jb21wcmVoZW5zaWJsZXMsIGJ1dCAKb25lIHVuY3JlYXRlZCwgYW5kIG9uZSBpbmNvbXByZWhlbnNpYmxlLOKAnSBmb3IgdGhhdCBpbiAKdGhlbSB3aGljaCBpcyB1bmNyZWF0ZWQsIGluY29tcHJlaGVuc2libGUgYW5kIGV0ZXJuYWwgXyAKaXMgbm90IHRoZSBhc3BlY3QsIGJ1dCBldmVyIHRoZSB1bmRlcmx5aW5nIFVuaXR5IHdoaWNoIDogCmlzIG9uZSB3aXRoIHRoZSBBbGwuICkgCgrigJxGb3IgbGlrZSBhcyB3ZSBhcmUgY29tcGVsbGVkIGJ5IHRoZSBDaHJpc3RpYW4gCnZlcml0eSB0byBhY2tub3dsZWRnZSBldmVyeSBwZXJzb24gYnkgaGltc2VsZiB0byBiZSAKR29kIGFuZCBMb3Jk4oCdICh0aGF0IGlzLCB0byByZWNvZ25pemUgdGhlIGFsbWlnaHR5IApwb3dlciBvZiB0aGUgTG9nb3MgYXMgd29ya2luZyBlcXVhbGx5IGluIGVhY2ggb2YgCnRoZXNlIEhpcyBhc3BlY3RzKSwg4oCYc28gYXJlIHdlIGZvcmJpZGRlbiBieSB0aGUgCkNhdGhvbGljIHJlbGlnaW9uIHRvIHNheSB0aGVyZSBiZSB0aHJlZSBHb2RzIG9yIHRocmVlIApMb3JkcyAi4oCUdGhhdCBpcywgdG8gc2V0IHVwIHRoZSB0aHJlZSBhc3BlY3RzIGluIGFueSAKc2Vuc2UgYWdhaW5zdCBvciBhcGFydCBmcm9tIGVhY2ggb3RoZXLigJR0byByZWdhcmQgCnRoZW0gaW4gYW55IHdheSBkaXNwcm9wb3J0aW9uYXRlbHksIG9yIGFzIHNlcGFyYXRlIAplbnRpdGllcy4gSG93IG9mdGVuIHRoZXNlIGFzcGVjdHMgb2YgdGhlIERpdmluZSBoYXZlIApiZWVuIGRpdmlkZWQsIGFuZCB3b3JzaGlwcGVkIHNlcGFyYXRlbHkgYXMgZ29kcyBvciAKZ29kZGVzc2VzIG9mIHdpc2RvbSwgb2YgbG92ZSwgb3Igb2YgcG93ZXIsIGFuZCB3aXRoIAp3aGF0IGRpc2FzdHJvdXMgcmVzdWx0cyBvZiBwYXJ0aWFsIG9yIG9uZS1zaWRlZCBkZXZlbG9wLSAKbWVudCBpbiB0aGVpciBmb2xsb3dlcnMsIHRoZSBwYWdlcyBvZiBoaXN0b3J5IHdpbGwgcmV2ZWFsIAp0b3VzLiBIZXJlLCBhdCBhbnkgcmF0ZSwgdGhlIHdhcm5pbmcgYWdhaW5zdCBzdWNoIGEgCmZhdGFsIG1pc3Rha2UgaXMgc3VmZmljaWVudGx5IGVtcGhhdGljLiAKCkFnYWluIGluIHRoZSBBdGhhbmFzaWFuIENyZWVkIHdlIHNlZSBldmlkZW5jZSBvZiAKdGhlIHNhbWUgY2FyZWZ1bCBlbmRlYXZvdXIgdG8gbWFrZSBjbGVhciBhcyBmYXIgYXMgCm1heSBiZSB0aGUgZGlmZmVyZW5jZSBvZiBnZW5lc2lzIG9mIHRoZSB0aHJlZSBhc3BlY3RzIApvZiB0aGUgTG9nb3Mgd2hpY2ggd2UgZm91bmQgc28gcHJvbWluZW50IGluIHRoZSAKJyB3b3JkaW5nIG9mIHRoZSBOaWNlbmUgQ3JlZWQuIOKAmOKAnCBUaGUgRmF0aGVyIGlzIG1hZGUgCgoK4oCYU05PTkUgQUZPUkUgT1IgQUZURVIgT1RIRVIs4oCdIDk5IAoKCm9mIG5vbmUsIG5laXRoZXIgY3JlYXRlZCBub3IgYmVnb3R0ZW47IHRoZSBTb24gaXMgb2YgdGhlIApGYXRoZXIgYWxvbmUsIG5vdCBtYWRlLCBub3IgY3JlYXRlZCwgYnV0IGJlZ290dGVuOyB0aGUgCkhvbHkgR2hvc3QgaXMgb2YgdGhlIEZhdGhlciBhbmQgb2YgdGhlIFNvbiwgbmVpdGhlciAKbWFkZSwgbm9yIGNyZWF0ZWQsIG5vciBiZWdvdHRlbiwgYnV0IHByb2NlZWRpbmcu4oCdIAoKV2UgbmVlZCBub3QgaGVyZSBnbyBvdmVyIGFnYWluIHRoZSBncm91bmQgYWxyZWFkeSAKdHJhdmVyc2VkIGluIGNvbm5lY3Rpb24gd2l0aCB0aGUgY29ycmVzcG9uZGluZyBjbGF1c2VzIAppbiB0aGUgTmljZW5lIENyZWVkLCBmdXJ0aGVyIHRoYW4gdG8gcG9pbnQgb3V0IHRoYXQgaW4gCnRoZSB3b3JkcyDigJjigJh0aGUgU29uIGlzIG9mIHRoZSBGYXRoZXIgYWxvbmUs4oCdIHdlIGhhdmUgCm9uY2UgbW9yZSBhbiBlbXBoYXRpYyBzdGF0ZW1lbnQgb2YgdGhlIHRydWUgbWVhbmluZyAKb2YgdGhlIHRlcm0gdXN1YWxseSBzbyBncm9zc2x5IG1pc3RyYW5zbGF0ZWQgYXMg4oCcIG9ubHktIApiZWdvdHRlbi7igJ0gCgpZZXQgYWdhaW4gZG9lcyBvdXIgd3JpdGVyIHJlY3VyIHRvIHRoZSB2YXN0IHF1ZXN0aW9uIApvZiB0aGUgZXF1YWxpdHkgb2YgdGhlIHRocmVlIGdyZWF0IGFzcGVjdHMsIGZvciBoZSBjb24tIAp0aW51ZXMsIOKAmOKAmEFuZCBpbiB0aGlzIFRyaW5pdHkgbm9uZSBpcyBhZm9yZSBvciBhZnRlciAKb3RoZXIsIG5vbmUgaXMgZ3JlYXRlciBvciBsZXNzIHRoYW4gYW5vdGhlciwgYnV0IHRoZSAKd2hvbGUgdGhyZWUgcGVyc29ucyBhcmUgY28tZXRlcm5hbCB0b2dldGhlciBhbmQgY28tIAplcXVhbC7igJ0gSXQgaGFzIGJlZW4gb2JqZWN0ZWQgdGhhdCBwaGlsb3NvcGhpY2FsbHkgdGhpcyAKbXVzdCBiZSB1bnRydWUsIHNpbmNlIHRoYXQgd2hpY2ggaGFkIGEgYmVnaW5uaW5nIGluIAp0aW1lIG11c3QgaGF2ZSBhbiBlbmQgaW4gdGltZTsgdGhhdCBzaW5jZSB0aGUgU29uIApjb21lcyBmb3J0aCBmcm9tIHRoZSBGYXRoZXIsIGFuZCB0aGUgSG9seSBHaG9zdCBmcm9tIAp0aGUgRmF0aGVyIGFuZCB0aGUgU29uLCBhIHRpbWUgbXVzdCBjb21lIHdoZW4gdGhlc2UgCmxhdGVyIG1hbmlmZXN0YXRpb25zLCBob3dldmVyIGdsb3Jpb3VzLCBtdXN0IGNlYXNlIHRvIApiZTsgdGhhdCwgaW4gcG9pbnQgb2YgZmFjdCAodG8gcHV0IHRoZSBvYmplY3Rpb24gaW4gdGhlIApmb3JtIHNvIGZhbWlsaWFyIGZpZnRlZW4gaHVuZHJlZCB5ZWFycyBhZ28pLCDigJjigJggVGhvdWdoIApncmVhdCBpcyB0aGUgb25seS1iZWdvdHRlbiwgeWV0IGdyZWF0ZXIgaXMgaGUgdGhhdCAKYmVnYXQu4oCdIAoKVGhpcyBzdWdnZXN0aW9uIHNlZW1zIGF0IGZpcnN0IHNpZ2h0IHRvIGJlIGNvdW50ZS0gCm5hbmNlZCBieSBtdWNoIHRoYXQgd2UgcmVhZCBpbiBUaGVvc29waGljYWwgdGVhY2hpbmdzIAphcyB0byB3aGF0IGlzIHRvIG9jY3VyIGF0IHRoYXQgZmFyLWRpc3RhbnQgcGVyaW9kIGluIHRoZSAKCgoxMDAgVEhFIENIUklTVElBTiBDUkVFRC4gCgoKZnV0dXJlIHdoaWNoIGluIG91ciBlYXJsaWVyIGxpdGVyYXR1cmUgd2FzIHNwb2tlbiBvZiBhcyAKdGhlIG1haDRwcmFsYXlhLCB3aGVuIGFsbCB0aGF0IGV4aXN0cyBzaGFsbCBvbmNlIG1vcmUgCmJlIG1lcmdlZCBpbiB0aGUgaW5maW5pdGXigJR3aGVuIGV2ZW4g4oCcdGhlIFNvbiBoaW0tIApzZWxmIHNoYWxsIGJlY29tZSBzdWJqZWN0IHRvIEhpbSB0aGF0IHB1dCBhbGwgdGhpbmdzIAp1bmRlciBoaW0sIHRoYXQgR29kIG1heSBiZSBhbGwgaW5hbGwu4oCdIE9mIHRoYXQgZ3JlYXQgCmNvbnN1bW1hdGlvbiBvZiB0aGUgYWdlcyBpdCBpcyBvYnZpb3VzIHRoYXQgaW4gcmVhbGl0eSAKd2Uga25vdywgYW5kIGNhbiBrbm93LCBub3RoaW5nOyB5ZXQgaWYsIHJlbWVtYmVyaW5nIAp0aGUgd2VsbC1rbm93biBvY2N1bHQgYXBob3Jpc20sIOKAmOKAmCBBcyBhYm92ZSwgc28gYmVsb3cs4oCd4oCZIAp3ZSBlbmRlYXZvdXIgdG8gbGlmdCBvdXIgbWluZHMgaW4gaXRzIGRpcmVjdGlvbiBieSB0aGUgCmhlbHAgb2YgYW5hbG9naWVzIGluIG1pY3JvY29zbWljIGhpc3Rvcnkgd2hpY2ggYXJlIGxlc3MgCmhvcGVsZXNzbHkgYmV5b25kIG91ciBncmFzcCwgd2UgYXJlIG5vdCB3aXRob3V0IHNvbWUgCmV2aWRlbmNlIHRoYXQgZXZlbiB0YWtlbiBpbiB0aGlzIGhpZ2hlc3QgYW5kIHN1YmxpbWVzdCAKc2Vuc2UgdGhlIGNvbmZpZGVudCB3b3JkcyBvZiBvdXIgQ3JlZWQgbWF5IHN0aWxsIGJlIApqdXN0aWZpZWQsIGFzIHdlIHNoYWxsIHByZXNlbnRseSBzZWUuIAoKQnV0IGl0IGlzIGV2aWRlbnQgdGhhdCB0aGlzIHV0dGVyYW5jZSwgbGlrZSBhbGwgdGhlIHJlc3QgCm9mIHRoZSBkb2N1bWVudCwgaXMgcHJpbWFyaWx5IHRvIGJlIGludGVycHJldGVkIGFzIHJlLSAKZmVycmluZyB0byBvdXIgb3duIHNvbGFyIHN5c3RlbSBhbmQgdGhvc2UgdGhyZWUgYXNwZWN0cyAKb2YgaXRzIExvZ29zIHdoaWNoIHRvIHVzIHJlcHJlc2VudCB0aGUgVGhyZWUgR3JlYXQgCkxvZ29pOyBhbmQgYXNzdXJlZGx5IHRoZXkgbWF5IGJlIHJlZ2FyZGVkIGFzIHpvbmktIAphbGx5IGV0ZXJuYWwsIGZvciwgc28gZmFyIGFzIHdlIGtub3csIHRoZXkgZXhpc3RlZCBhcyAKc2VwYXJhdGUgYXNwZWN0cyBmb3IgY291bnRsZXNzIGFnZXMgYmVmb3JlIG91ciBzeXN0ZW0gCmNhbWUgaW50byBiZWluZywgYW5kIHdpbGwgc28gZXhpc3QgZm9yIGNvdW50bGVzcyBhZ2VzIAphZnRlciBpdCBoYXMgcGFzc2VkIGF3YXkuIAoKQW5kIGFmdGVyIGFsbCBoZSB3b3VsZCBiZSBidXQgYSBzdXBlcmZpY2lhbCB0aGlua2VyIHRvIAp3aG9tIGl0IHdvdWxkIGJlIG5lY2Vzc2FyeSB0byBwcm92ZSB0aGF0IGFzIHJlZ2FyZHMgCnRoZSB3b3JrIG9mIHRoZSBldm9sdXRpb24gb2YgbWFuLCBhdCBhbnkgcmF0ZSwg4oCY4oCYaW4gdGhpcyAKVHJpbml0eSBub25lIGlzIGdyZWF0ZXIgb3IgbGVzcyB0aGFuIGFub3RoZXI74oCdIGZvciAKdGhvdWdoIGl0IGlzIHRydWUgdGhhdCB0aGUgc3Bpcml0IG9mIG1hbiBpcyBkaXJlY3RseSB0aGUgCmdpZnQgb2YgdGhlIEZhdGhlciwgc2luY2UgaXQgY29tZXMgdG8gaGltIGluIHRoYXQgdGhpcmQgCgoKQ08tRVRFUk5BTCBBTkQgQ08tRVFVQUwuIElPISAKQCAKCgpvdXRwb3VyaW5nIHdoaWNoIGlzIG9mIHRoZSBlc3NlbmNlIG9mIHRoZSBGaXJzdCBMb2dvcywgCnlldCBpdCBpcyBhbHNvIHRydWUgdGhhdCBubyBpbmRpdmlkdWFsIHZlaGljbGUgY291bGQgZXZlciAKaGF2ZSBiZWVuIGV2b2x2ZWQgdG8gcmVjZWl2ZSB0aGF0IHNwaXJpdCB3aXRob3V0IHRoZSAKbG9uZyBwcm9jZXNzIG9mIHRoZSBkZXNjZW50IGludG8gbWF0dGVyIG9mIHRoZSBtb25hZGljIAplc3NlbmNlLCB3aGljaCBpcyB0aGUgb3V0cG91cmluZyBvZiB0aGUgU2Vjb25kIExvZ29zLCAKdGhlIFNvbjsgYW5kIGFzc3VyZWRseSB0aGF0IGRlc2NlbnQgY291bGQgbmV2ZXIgaGF2ZSAKdGFrZW4gcGxhY2UgdW5sZXNzIHRoZSB3YXkgaGFkIGJlZW4gcHJlcGFyZWQgZm9yIGl0IGJ5IAp0aGUgd29uZGVyZnVsIHZpdmlmeWluZyBhY3Rpb24gb2YgdGhlIFRoaXJkIExvZ29zLCB0aGUgCkhvbHkgR2hvc3QsIHVwb24gdGhlIHZpcmdpbiBtYXR0ZXIgb2YgdGhlIGNvc21vcywgCndoaWNoIGFsb25lIG1hZGUgaXQgcG9zc2libGUgdGhhdCwgZm9yIHVzIG1lbiBhbmQgZm9yIApvdXIgc2FsdmF0aW9uLCBIZSBzaG91bGQgYmVjb21lIOKAnGluY2FybmF0ZSBvZiB0aGUgCkhvbHkgR2hvc3QgYW5kIHRoZSBWaXJnaW4gTWFyeS7igJ0gCgpTbyB0aGF0IGFsbCB0aHJlZSBvZiB0aGUgZm9ybXMgb2YgYWN0aW9uIHdlcmUgZXF1YWxseSAKbmVjZXNzYXJ5IHRvIHRoZSBldm9sdXRpb24gb2YgaHVtYW5pdHksIGFuZCB0aHVzIGl0IGlzIAp0aGF0IHdlIGFyZSBzbyBjbGVhcmx5IHRhdWdodCB0byByZWNvZ25pemUgdGhhdCBhbW9uZyAKdGhlbSDigJhub25lIGlzIGFmb3JlIG9yIGFmdGVyIG90aGVyLOKAnSBlaXRoZXIgaW4gcG9pbnQgb2YgCnRpbWUgb3Igb2YgaW1wb3J0YW5jZSwgc2luY2UgYWxsIG11c3QgZXF1YWxseSBiZSBhY3RpbmcgCmFsbCB0aGUgd2hpbGUgaW4gb3JkZXIgdGhhdCB0aGUgaW50ZW5kZWQgcmVzdWx0IG1heSBiZSAKYnJvdWdodCBhYm91dCA7IHRodXMgaXQgaXMgdGhhdCB3ZSBhcmUgZXF1YWxseSBib3VuZCB0byAKYWxsIGJ5IHRpZXMgb2YgZGVlcGVzdCBncmF0aXR1ZGUsIGFuZCB0aGF0IHRvIHVzIHRoZXJlZm9yZSAKaXQgcmVtYWlucyB0cnVlIHRoYXQg4oCY4oCYIHRoZSB3aG9sZSB0aHJlZSBwZXJzb25zIGFyZSBjby0gCmV0ZXJuYWwgdG9nZXRoZXIgYW5kIGNvLWVxdWFsLOKAmeKAmeKAlHRoZSB1cHBlciB0cmlhZCB3aGljaCAKZm9ybXMgdGhlIEluZGl2aWR1YWxpdHkgb2YgdGhlIFNvbGFyIExvZ29zIEhpbXNlbGYuIAoKSSBzYWlkIHRoYXQgdGhlcmUgc2VlbWVkIHNvbWUgZXZpZGVuY2UgdG8gc2hvdyAKdGhhdCwgZXZlbiBpbiB0aGUgaGlnaGVzdCBhbmQgcmVtb3Rlc3Qgc2Vuc2UsIHRoaXMgCmdsb3Jpb3VzIFRyaW5pdHkgd291bGQgcmVtYWluIGNvLWV0ZXJuYWwgdG9nZXRoZXIuIApGb3IgdW5kb3VidGVkbHkgdGhlIHByaW5jaXBsZXMgaW4gbWFuIHdoaWNoIGNvcnJlLSAKc3BvbmQgdG8gaXRzIHRocmVlIHBlcnNvbnMgYXJlIHRob3NlIHdoaWNoIHdlIGhhdmUgCmJlZW4gaW4gdGhlIGhhYml0IG9mIGNhbGxpbmcgNHRtYSwgYnVkZGhpLCBtYW5hcy4gCgoKMTAyIFRIRSBDSFJJU1RJQU4gQ1JFRUQuIAoKCjQgCgpXaGV0aGVyIHRob3NlIG5hbWVzIHdlcmUgd2lzZWx5IGNob3Nlbiwgd2hldGhlciAKdGhlaXIgcmVhbCBtZWFuaW5nIGluIHRoZSBFYXN0IGlzIGF0IGFsbCBpZGVudGljYWwgd2l0aCAKdGhhdCB3aGljaCB3ZSBoYXZlIGxlYXJudCB0byBhdHRhY2ggdG8gdGhlbSwgSSBhbSBub3QgCmNvbmNlcm5lZCB0byBkaXNjdXNzIG5vdy4gSSBhbSB1c2luZyB0aGVtIHNpbXBseSAKYXMgdGhleSBoYXZlIGFsd2F5cyBiZWVuIHVzZWQgaW4gb3VyIGxpdGVyYXR1cmUsIHRvIAppbmRpY2F0ZSBjZXJ0YWluIHdlbGwta25vd24gYW5kIGRpc3Rpbmd1aXNoYWJsZSBwcmluLSAKY2lwbGVzLiBBbmQgSSBzYXkgdGhhdCwgYWx0aG91Z2ggd2Uga25vdyBub3RoaW5nIAp3aGF0ZXZlciAob2Ygb3VyIG93biBrbm93bGVkZ2UpIGFib3V0IHRoZSB1bml2ZXJzYWwgCnByYWxheWEgd2hlbiBhbGwgdGhhdCBpcyBoYXMgYmVlbiBvbmNlIG1vcmUgd2l0aGRyYXduIAppbnRvIGl0cyBjZW50cmFsIHBvaW50LCB3ZSBoYXZlIHNvbWUgc21hbGwgYW1vdW50IG9mIApkaXJlY3QgZXZpZGVuY2UgYXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgcHJvY2VzcyBvZiB3aXRoLSAKZHJhd2FsIHRvd2FyZHMgdGhlIGNlbnRyZSBpbiB0aGUgY2FzZSBvZiB0aGUgbWljcm9jb3NtLCAKbWFuLiAKCldlIGtub3cgaG93IGFmdGVyIGVhY2ggaW5jYXJuYXRpb24gYSBwYXJ0aWFsIHdpdGgtIApkcmF3YWwgdGFrZXMgcGxhY2UsIGFuZCBob3csIHRob3VnaCBlYWNoIHBlcnNvbmFsaXR5IAppbiB0dXJuIHNlZW1zIGVudGlyZWx5IHRvIGRpc2FwcGVhciwgdGhlIGVzc2VuY2UgYW5kIApvdXRjb21lIG9mIGFsbCB0aGF0IGlzIGdhaW5lZCBpbiBlYWNoIG9mIHRoZW0gaXMgbm90IApsb3N0LCBidXQgcGVyc2lzdHMgdGhyb3VnaCB0aGUgYWdlcyBpbiBhIGhpZ2hlciBmb3JtLiAKVGhhdCBoaWdoZXIgZm9ybSwgdGhlIGluZGl2aWR1YWxpdHksIHRoZSByZWluY2FybmF0aW5nIAplZ28sIHNlZW1zIHRvIHVzIHRoZSBvbmUgdGhpbmcgcmVhbGx5IHBlcm1hbmVudCBhbWlkc3QgCmFsbCB0aGUgZmxlZXRpbmcgcGhhbnRhc21hZ29yaWEgb2Ygb3VyIGxpdmVzOyB5ZXQgYXQgYSAKY2VydGFpbiByYXRoZXIgbW9yZSBhZHZhbmNlZCBzdGFnZSBvZiBvdXIgZXZvbHV0aW9uIApvdXIgZmFpdGggaW4gaXRzIHBlcm1hbmVuY2UgYXMgd2UgaGF2ZSBrbm93biBpdCB3aWxsIApyZWNlaXZlIGEgc2V2ZXJlIGFuZCBzdWRkZW4gc2hvY2suIAoKQWZ0ZXIgYSBtYW4gaGFzIHBhc3NlZCBmYXIgZW5vdWdoIHVwb24gaGlzIHdheSB0byAKaGF2ZSByYWlzZWQgaGlzIGNvbnNjaW91c25lc3MgZnVsbHkgYW5kIGRlZmluaXRlbHkgaW50byAKdGhhdCBlZ28sIHNvIGFzIHRvIGlkZW50aWZ5LGhpbXNlbGYgZW50aXJlbHkgd2l0aCBpdCwgYW5kIApub3Qgd2l0aCBhbnkgb2YgdGhlIHRyYW5zaWVudCBwZXJzb25hbGl0aWVzIHVwb24gd2hvc2UgCmxvbmcgbGluZSBoZSBjYW4gdGhlbiBsb29rIGJhY2sgYXMgbWVyZSBkYXlzIG9mIGhpcyAKCgpHT05FLCBZRVQgTk9UIExPU1QuIC4gMTAzIAoKCmhpZ2hlciBsaWZlLCBoZSBiZWdpbnMgZ3JhZHVhbGx5IGJ1dCBpbmNyZWFzaW5nbHkgdG8gCm9idGFpbiBnbGltcHNlcyBvZiB0aGUgcG9zc2liaWxpdGllcyBvZiBhIHN0aWxsIHN1YnRsZXIgCmFuZCBtb3JlIGdsb3Jpb3VzIHZlaGljbGXigJR0aGUgYnVkZGhpYyBib2R5LiAKCkF0IGxhc3QgdGhlcmUgY29tZXMgYSB0aW1lIHdoZW4gdGhhdCBib2R5IGluIHR1cm4gaXMgCmZ1bGx5IGRldmVsb3BlZOKAlHdoZW4gaW4gZnVsbCBjb25zY2lvdXNuZXNzIGhlIGlzIGFibGUgCnRvIHJpc2UgaW50byBpdCBhbmQgdXNlIGl0IGFzIGJlZm9yZSBoZSB1c2VkIGhpcyBjYXVzYWwgCmJvZHkuIEJ1dCB3aGVuLCBpbiBoaXMgZW5qb3ltZW50IG9mIHN1Y2ggZXh0ZW5kZWQgCmNvbnNjaW91c25lc3MsIGhlIHR1cm5zIHRvIGxvb2sgZG93biBmcm9tIG91dHNpZGUgCnVwb24gd2hhdCBoYXMgZm9yIHNvIGxvbmcgYmVlbiB0aGUgaGlnaGVzdCBleHByZXNzaW9uIApvZiBoaW0sIGhlIGlzIHN0YXJ0bGVkIGJleW9uZCBtZWFzdXJlIHRvIGZpbmQgdGhhdCBpdCAKaGFzIGRpc2FwcGVhcmVkLiBUaGlzIHRoYXQgaGUgaGFkIHRob3VnaHQgb2YgYXMgdGhlIAptb3N0IHBlcm1hbmVudCB0aGluZyBhYm91dCBoaW0gaGFzIHZhbmlzaGVkIGxpa2UgYSAKbWlzdC13cmVhdGggOyBoZSBoYXMgbm90IGxlZnQgaXQgYmVoaW5kIGhpbSB0byByZXN1bWUgCmF0IHdpbGwsIGFzIGl0IGhhcyBsb25nIGJlZW4gaGlzIGN1c3RvbSB0byBsZWF2ZSBoaXMgCm1pbmQtYm9keSwgaGlzIGFzdHJhbCBib2R5LCBhbmQgaGlzIHBoeXNpY2FsIGVuY2FzZS0gCm1lbnQ7IGl0IGhhcyBzaW1wbHkgdG8gYWxsIGFwcGVhcmFuY2UgY2Vhc2VkIHRvIGV4aXN0LiAKCllldCBoZSBoYXMgbG9zdCBub3RoaW5nIDsgaGUgaXMgc3RpbGwgaGltc2VsZiwgc3RpbGwgdGhlIApzYW1lIGluZGl2aWR1YWxpdHksIHdpdGggYWxsIHRoZSBwb3dlcnMgYW5kIGZhY3VsdGllcyAKYW5kIG1lbW9yaWVzIG9mIHRoYXQgdmFuaXNoZWQgYm9keeKAlGFuZCBob3cgbXVjaCAKbW9yZSEgSGUgc29vbiByZWFsaXplcyB0aGF0IHRob3VnaCBoZSBtYXkgaGF2ZSAKdHJhbnNjZW5kZWQgdGhhdCBwYXJ0aWN1bGFyIGFzcGVjdCBvZiBoaW1zZWxmLCBoZSBoYXMgCnlldCBub3QgbG9zdCBpdDsgZm9yIG5vdCBvbmx5IGlzIGl0cyB3aG9sZSBlc3NlbmNlIGFuZCAKcmVhbGl0eSBzdGlsbCBhIHBhcnQgb2YgaGltc2VsZiwgYnV0IHRoZSBtb21lbnQgaGUgCmRlc2NlbmRzIGluIHRob3VnaHQgdG8gaXRzIHBsYW5lIG9uY2UgbW9yZSwgaXQgZmxhc2hlcyAKaW50byBleGlzdGVuY2UgYWdhaW4gYXMgdGhlIGV4cHJlc3Npb24gb2YgaGltIHVwb24gCnRoYXQgcGxhbmXigJRub3QgdGhlIHNhbWUgYm9keSB0ZWNobmljYWxseSwgZm9yIHRoZSAKcGFydGljbGVzIHdoaWNoIGNvbXBvc2VkIHRoZSBmb3JtZXIgb25lIGFyZSBkaXNzaS0gCnBhdGVkIGJleW9uZCByZWNhbGwsIHlldCBvbmUgYWJzb2x1dGVseSBpZGVudGljYWwgd2l0aCAKaXQgaW4gZXZlcnkgcmVzcGVjdCwgYnV0IG5ld2x5IGNhbGxlZCBpbnRvIG9iamVjdGl2ZSAKCgoxMDQgVEhFIENIUklTVElBTiBDUkVFRC4gCgoKZXhpc3RlbmNlIHNpbXBseSBieSB0aGUgdHVybmluZyBvZiBoaXMgYXR0ZW50aW9uIGluIGl0cyAKZGlyZWN0aW9uLiAKCk5vdyB0byBzYXkgdGhhdCBpbiBzdWNoIGEgbWFuIHRoZSBtYW5hcyB3YXMgbG9zdCAKd291bGQgaW5kZWVkIGJlIGEgbWFydmVsIG9mIG1pc3JlcHJlc2VudGF0aW9uOyBpdCAxcyAKaW4gZXhpc3RlbmNlIGFzIGRlZmluaXRlbHkgYXMgZXZlciwgZXZlbiB0aG91Z2ggaXQgaGFzIApiZWVuIHNwaXJpdHVhbGl6ZWQgYW5kIHJhaXNlZCB0byB0aGUgYnVkZGhpYyBwbGFuZS4gCuKAmEFuZCB3aGVuIGF0IGEgc3RpbGwgbGF0ZXIgc3RhZ2UgaGlzIGNvbnNjaW91c25lc3MgCnRyYW5zY2VuZHMgZXZlbiB0aGUgYnVkZGhpYyBwbGFuZSwgY2FuIHdlIGRvdWJ0IHRoYXQgCmFsbCB0aGUgcG93ZXJzIGJvdGggb2YgYnVkZGhpIGFuZCBtYW5hcyB3aWxsIHN0aWxsIGJlIAphdCBoaXMgY29tbWFuZCwgZXZlbiB0aG91Z2ggYW4gaW5maW5pdHkgYmUgYWRkZWQgdG8gCnRoZW0gPyAKClBlcmhhcHMgaXQgbWF5IGJlIHNvbWV3aGVyZSBhbG9uZyB0aGUgbGluZSBvZiAKdGhvdWdodCB3aGljaCBpcyB0aHVzIHN1Z2dlc3RlZCB0aGF0IGl0IHdpbGwgYmUgZm91bmQgCnBvc3NpYmxlIHRvIGhhcm1vbml6ZSB0aGVzZSBhcHBhcmVudGx5IGNvbnRyYWRpY3RvcnkgCmlkZWFz4oCUdGhhdCBhbGwgd2hpY2ggZXhpc3RzIG11c3Qgb25lIGRheSBjZWFzZSB0byBiZSwgCmFuZCB5ZXQgdGhhdCDigJh0aGUgd2hvbGUgdGhyZWUgcGVyc29ucyBhcmUgY28tZXRlcm5hbCAKdG9nZXRoZXIgYW5kIGNvLWVxdWFsLCBzbyB0aGF0IGluIGFsbCB0aGluZ3MsIGFzIGlzIGFmb3JlLSAKc2FpZCwgdGhlIFVuaXR5IGluIFRyaW5pdHkgYW5kIHRoZSBUcmluaXR5IGluIFVuaXR5IGlzIAp0byBiZSB3b3JzaGlwcGVkLuKAneKAmSAKCkFuZCBzbyB0aGlzIGZpcnN0IGhhbGYgb2YgdGhlIEF0aGFuYXNpYW4gQ3JlZWQgZW5kcyAKYXMgaXQgYmVnYW4sIHdpdGggYSBjbGVhciBzdHJhaWdodGZvcndhcmQgc3RhdGVtZW50IAp3aGljaCBsZWF2ZXMgbm90aGluZyB0byBiZSBkZXNpcmVkOiDigJjigJggSGUgdGhlcmVmb3JlIAp0aGF0IHdpbGwgYmUgc2F2ZWQgbXVzdCB0aHVzIHRoaW5rIG9mIHRoZSBUcmluaXR5LuKAnSAKCldlIHRoZW4gcGFzcyBvbiwganVzdCBhcyBpbiB0aGUgb3RoZXIgQ3JlZWRzLCB0byBhIApmdXJ0aGVyIGVsYWJvcmF0aW9uIG9mIHRoZSBkb2N0cmluZSBvZiB0aGUgZGVzY2VudCBvZiB0aGUgClNlY29uZCBMb2dvcyBpbnRvIG1hdHRlciwgd2hpY2ggaXMgYWxzbyBkZWNsYXJlZCB0byBiZSAKYSBwcmVyZXF1aXNpdGUgZm9yIHpvbmlhbiBwcm9ncmVzczog4oCY4oCYIEZ1cnRoZXJtb3JlLCBpdCAKaXMgbmVjZXNzYXJ5IHRvIGV2ZXJsYXN0bW1nIHNhbHZhdGlvbiB0aGF0IGhlIGFsc28gYmUtIApsaWV2ZSByaWdodGx5IHRoZSBpbmNhcm5hdGlvbiBvZiBvdXIgTG9yZCBKZXN1cyBDaHJpc3Qu4oCdIAoKClRIRSBEVUFMIEFTUEVDVC4gMTA1IAoKClRoZW4gb3VyIHdyaXRlciBwcm9jZWVkcyBjYXJlZnVsbHkgYW5kIG1ldGhvZGljYWxseSAKdG8gZGVmaW5lIGhpcyBwb3NpdGlvbiBpbiB0aGlzIGltcG9ydGFudCBtYXR0ZXI6IOKAmCBGb3IgCnRoZSByaWdodCBmYWl0aCBpcyB0aGF0IHdlIGJlbGlldmUgYW5kIGNvbmZlc3MgdGhhdCBvdXIgCkxvcmQgSmVzdXMgQ2hyaXN0LCB0aGUgU29uIG9mIEdvZCwgaXMgR29kIGFuZCBtYW47IApHb2QsIG9mIHRoZSBzdWJzdGFuY2Ugb2YgdGhlIEZhdGhlciwgYmVnb3R0ZW4gYmVmb3JlIAp0aGUgd29ybGRzLCBhbmQgbWFuLCBvZiB0aGUgc3Vic3RhbmNlIG9mIGhpcyBtb3RoZXIsIApib3JuIGluIHRoZSB3b3JsZC7igJ0gCgpUaGlzIHBhcnQgb2YgdGhlIHN1YmplY3Qgd2FzIHNvIGZ1bGx5IGNvbnNpZGVyZWQgCmluIHRoZSBlYXJsaWVyIHBhcnQgb2YgdGhpcyB2b2x1bWUgd2hlbiBkZWFsaW5nIHdpdGggCnRoZSBOaWN6ZWFuIHN5bWJvbCB0aGF0IGl0IGlzIGhhcmRseSBuZWNlc3NhcnkgdG8gCmR3ZWxsIG11Y2ggdXBvbiBpdCBoZXJlLCBzaW5jZSB0aGlzIGlzIHNpbXBseSBhIApmdWxsZXIgYW5kIG1vcmUgZXhwbGljaXQgZm9ybSBvZiB0aGUgc3RhdGVtZW50IG9mIHRoZSAKZHVhbCBhc3BlY3Qgb2YgdGhlIENocmlzdCwgc2hvd2luZyBob3cgSGUsIHRoZSBhbG9uZS0gCmJlZ290dGVuLCB0aGUgZmlyc3Qgb2YgYWxsIHRoZSAyb25zIG9yIGVtYW5hdGlvbnMgZnJvbSAKdGhlIEZhdGhlciwgd2FzIGFic29sdXRlbHkgb2Ygb25lIHN1YnN0YW5jZSB3aXRoIHRoZSAKRXRlcm5hbCBhbmQgaWRlbnRpY2FsIHdpdGggSGltIGluIGV2ZXJ5IHJlc3BlY3QsIHdoaWxlIAp5ZXQgaW4gSGlzIGxhdGVyIGZvcm0gSGUgaGFkIGp1c3QgYXMgdHJ1bHkgYW5kIHJlYWxseSAKdGFrZW4gdXBvbiBIaW1zZWxmIHRoZSB2ZXN0dXJlIG9mIHRoaXMgbG93ZXIgbWF0dGVyLCBhbmQgCnNvIHdhcyDigJhpbmNhcm5hdGUgb2YgdGhlIEhvbHkgR2hvc3QgYW5kIHRoZeKAmSBWaXJnaW4gCk1hcnks4oCdIGFzIGhhcyBiZWVuIHByZXZpb3VzbHkgZXhwbGFpbmVkLiBBbmQgaW4gdGhpcyAKbGF0dGVyIGZvcm0gaXQgaXMgcGFydGljdWxhcml6ZWQgdGhhdCBIZSBoYWQgbm90IGV4aXN0ZWQgCuKAmGJlZm9yZSB0aGUgd29ybGRz4oCdIG9yIGFnZXMgYmVnYW4sIGJ1dCB3YXMg4oCcYm9ybiBpbiAKdGhlIHdvcmxkIOKAneKAlHRoYXQgaXMsIHRoYXQgSGlzIGRlc2NlbnQgaW50byBpbmNhcm5hdGlvbiAKaGFkIHRha2VuIHBsYWNlIGF0IGEgZGVmaW5pdGUgYW5kIGNvbXBhcmF0aXZlbHkgcmVjZW50IApwZXJpb2Qgd2l0aGluIHRoaXMgYWdlIG9yIHNvbGFyIG1hbnZhbnRhcmEuIFRoZSAKTGF0aW4gd29yZCBzZWN1bHVtIGRvZXMgbm90LCBvZiBjb3Vyc2UsIG1lYW4g4oCcd29ybGTigJ0gCmF0IGFsbCwgYnV0IOKAmOKAmCB3b3JsZC1wZXJpb2TigJ0gb3Ig4oCY4oCYIGFnZS7igJ0gCgpBcyB3ZSBrbm93IGZyb20gdGhlIGFjY291bnRzIHdoaWNoIGFyZSBjYWxsZWQgYnkgCmNvdXJ0ZXN5IHRoZSDigJxoaXN0b3J54oCdIG9mIHRoZSBDaHJpc3RpYW4gQ2h1cmNoLCB0aGVyZSAKCgoxMDYgVEhFIENIUklTVElBTiBDUkVFRC4gCgoKaGFkIGJlZW4gdGhvc2UgdG8gd2hvbSB0aGlzIGlkZWEgb2YgZHVhbGl0eSBoYWQgYmVlbiAKYSBzdHVtYmxpbmctYmxvY2vigJR3aG8gaGFkIGRlZW1lZCBpdCBpbXBvc3NpYmxlIHRoYXQgCmNvbmRpdGlvbnMgZGlmZmVyaW5nIHNvIHdpZGVseSBhbmQgZW50aXJlbHkgY291bGQgYm90aCAKYmUgbWFuaWZlc3RhdGlvbnMgb2YgdGhlIHNhbWUgZ3JlYXQgcG93ZXI7IGFuZCBzbyBvdXIgCkNyZWVkIGluc2lzdHMgd2l0aCBlbXBoYXNpcyB1cG9uIHRoZSBhY3R1YWwgaWRlbnRpdHkgCmFuZCBpbmRpdmlzaWJpbGl0eSBvZiB0aGUgQ2hyaXN0b3MuIFdlIGFyZSB0b2xkIHRoYXQgCkhlIGlzIOKAmHBlcmZlY3QgR29kIGFuZCBwZXJmZWN0IG1hbiwgb2YgYSByZWFzb25hYmxlIApzb3VsIGFuZCBodW1hbiBmbGVzaCBzdWJzaXN0aW5nIOKAneKAlHRoYXQgaXMsIGNvbnNpc3RpbmcgCm9mIHRoZSBtYW5hcyBhcyB3ZWxsIGFzIG9mIHRoZSBsb3dlciBwcmluY2lwbGVzOyB0aGF0IApIZSBpcyDigJhlcXVhbCB0byB0aGUgRmF0aGVyIGFzIHRvdWNoaW5nIEhpcyBHb2RoZWFkLCAKeWV0IGluZmVyaW9yIHRvIHRoZSBGYXRoZXIgYXMgdG91Y2hpbmcgSGlzIG1hbmhvb2Qg4oCd4oCUIAplcXVhbCB0byBIaW0gaW4gZXZlcnkgd2F5LCBzYXZlIG9ubHkgdGhhdCBIZSBoYXMgCmRlc2NlbmRlZCB0aGlzIG9uZSBzdGVwIGZ1cnRoZXIsIGFuZCBpbiB0aHVzIGJlY29taW5nIAptYW5pZmVzdCBoYXMgZm9yIHRoZSB0aW1lIGxpbWl0ZWQgdGhlIGZ1bGwgZXhwcmVzc2lvbiBvZiAKdGhhdCB3aGljaCB5ZXQgSGUgaXMgaW4gZXNzZW5jZSBhbGwgdGhlIHdoaWxlLiAKCllldCBpbiBhbGwgb3VyIGNvbnNpZGVyYXRpb24gb2YgdGhpcyBuZXZlciBtdXN0IHdlIApmb3IgYSBtb21lbnQgbG9zZSBzaWdodCBvZiB0aGUgdW5kZXJseWluZyB1bml0eSA7IOKAnCBmb3IgCmFsdGhvdWdoIEhlIGJlIEdvZCBhbmQgbWFuLCB5ZXQgSGUgaXMgbm90IHR3bywgYnV0IApvbmUgQ2hyaXN0OyBvbmUsIG5vdCBieSB0aGUgY29udmVyc2lvbiBvZiB0aGUgR29kaGVhZCAKaW50byBmbGVzaCwgYnV0IGJ5IHRoZSB0YWtpbmcgb2YgdGhlIG1hbmhvb2QgaW50byAKR29kLuKAnSBIb3dldmVyIGRlZXBseSBpbnZvbHZlZCBpbiBtYXR0ZXIgdGhlIENocmlzdC0gCnByaW5jaXBsZSBtYXkgYmVjb21lLCBpdCByZW1haW5zIHRoZSBDaHJpc3QtcHJpbmNpcGxlIApzdGlsbCwganVzdCBhcyB0aGUgbG93ZXIgbWFuYXMgaXMgZXZlciBmdW5kYW1lbnRhbGx5IApvbmUgd2l0aCBhbmQgYW4gYXNwZWN0IG9mIHRoZSBoaWdoZXIsIGhvd2V2ZXIgd2lkZSAKYXBhcnQgZnJvbSBpdCBpdCBtYXkgc29tZXRpbWVzIHNlZW0gd2hlbiBsb29rZWQgYXQgCmZyb20gYmVsb3c7IGFuZCB0aGUgd3JpdGVyIGZ1cnRoZXIgbWFrZXMgY2xlYXIgdG8gdXMgCnRoYXQgdGhpcyBpcyB0byBiZSByZWdhcmRlZCBhcyBmaW5hbGx5IGFuZCBhYnNvbHV0ZWx5IApwcm92ZWQgbm90IGNoaWVmbHkgYmVjYXVzZSBpdHMgb3JpZ2luIGlzIG9uZSwgYXMgdGhvdWdoIAp0aGUgR29kaGVhZCBoYXMgYmVlbiBicm91Z2h0IGRvd24gdG8gdGhlIGh1bWFuIAoKClRIRSBUUlVFIEFULU9ORS1NRU5ULiAxMDcgCkAgCgoKbGV2ZWwsIGJ1dCByYXRoZXIgYnkgdGhlIGV2ZW4gbW9yZSBnbG9yaW91cyBmYWN0IHRoYXQgaW4gCnRoZSBmdXR1cmUgdGhleSB3aWxsIG9uY2UgYWdhaW4gYmVjb21lIGNvbnNjaW91c2x5IApvbmUsIHdoZW4gYWxsIHRoZSB0cnVlIGVzc2VuY2Ugb2YgdGhlIGxvd2VyIGFuZCBhbGwgdGhlIApxdWFsaXR5IHRoYXQgaXQgaGFzIGRldmVsb3BlZCBmcm9tIGxhdGVuY3kgaW50byBhY3Rpb24gCnNoYWxsIGJlIGJvcm5lIGJhY2sgdHJpdW1waGFudGx5IGludG8gdGhlIGhpZ2hlciwgYW5kIAp0aHVzIHNoYWxsIGJlIGFjaGlldmVkIHRoZSBncmFuZGVzdCBjb25jZXB0aW9uIHRoYXQgCmFueSBkb2N0cmluZSBoYXMgZXZlciBnaXZlbiB1c+KAlHRoZSB0cnVlIGFuZCBmdWxsIAphdC1vbmUtbWVudCwg4oCYdGhlIHRha2luZyBvZiB0aGUgbWFuaG9vZCBpbnRvIEdvZC7igJ0gCgpGdW5kYW1lbnRhbGx5LCBlc3NlbnRpYWxseSBvbmUgYXJlIHRoZXksIOKAmG9uZSBhbHRvLSAKZ2V0aGVyLCBub3QgYnkgY29uZnVzaW9u4oCZ4oCZICh0aGF0IGlzLCBjb21taW5nbGluZyBvciAKbWVsdGluZyB0b2dldGhlcikg4oCYb2Ygc3Vic3RhbmNlLCBidXQgYnkgdW5pdHkgb2YgCnBlcnNvbiDigJ3igJnigJRhIHVuaXR5IHdoaWNoIGhhcyBiZWVuIGEgZmFjdCBpbiBuYXR1cmUgCmFsbCB0aGUgdGltZSwgaWYgd2UgY291bGQgYnV0IGhhdmUgc2VlbiBpdOKAlGp1c3QgYXMsIApvbmNlIG1vcmUsIHRoZSBsb3dlciBhbmQgdGhlIGhpZ2hlciBtYW5hcyBhcmUgb25lLCAKanVzdCBhcyB0aGUgcGh5c2ljYWwgYm9keSBpcyBvbmUgd2l0aCB0aGUgc291bCB3aXRoaW4gCml0LCBiZWNhdXNlIGl0IGlzIGFmdGVyIGFsbCBhbiBleHByZXNzaW9uIGFuZCBhbiBhc3BlY3Qgb2YgCml0LCBob3dldmVyIGRlZmVjdGl2ZeKAlOKAnCBmb3IgYXMgdGhlIHJlYXNvbmFibGUgc291bCBhbmQgCmZsZXNoIGlzIG9uZSBtYW4sIHNvIEdvZCBhbmQgbWFuIGlzIG9uZSBDaHJpc3Qu4oCdIAoK4oCY4oCYIFdobyBzdWZmZXJlZCBmb3Igb3VyIHNhbHZhdGlvbiwgZGVzY2VuZGVkIGludG8gCmhlbGwsIHJvc2UgYWdhaW4gdGhlIHRoaXJkIGRheSBmcm9tIHRoZSBkZWFkOyBoZSAKYXNjZW5kZWQgaW50byBoZWF2ZW4sIGhlIHNpdHRldGggb24gdGhlIG5pZ2h0IGhhbmQgCm9mIHRoZSBGYXRoZXIsIEdvZCBhbG1pZ2h0eSwgZnJvbSB3aGVuY2UgaGUgc2hhbGwgCmNvbWUgdG8ganVkZ2UgdGhlIHF1aWNrIGFuZCB0aGUgZGVhZC7igJ0gVGhlc2UgY2xhdXNlcyAKY2FsbCBmb3Igbm8gc3BlY2lhbCBub3RpY2UgaGVyZSwgc2luY2UgdGhleSBhcmUgc2ltcGx5IGEgCnJlcHJvZHVjdGlvbiBvZiB0aG9zZSB1cG9uIHdoaWNoIHdlIGhhdmUgYWxyZWFkeSBzbyAKZnVsbHkgY29tbWVudGVkIGluIHdyaXRpbmcgb2YgdGhlIGVhcmxpZXIgQ3JlZWRzLCB0aG91Z2ggCndlIG1heSBqdXN0IG9ic2VydmUgaW4gcGFzc2luZyB0aGF0IGhlcmUgd2UgaGF2ZSAKbm8gbWVudGlvbiBvZiB0aGUgbXl0aHMgb2YgUG9udGl1cyBQaWxhdGUgYW5kIHRoZSAKY3J1Y2lmaXhpb24uIAoKCjEwOCBUSEUgQ0hSSVNUSUFOIENSRUVELiAKCgp0IAoKSW5kZWVkIG9uIHRoZSB3aG9sZSB0aGlzLCB0aGUgbG9uZ2VzdCBhbmQgcGVyaGFwcyAKbGF0ZXN0IG9mIHRoZSBDcmVlZHMsIGlzIHJlbWFya2FibHkgZnJlZSBmcm9tIHRoZSBjb3ItIApydXB0aW5nIGluZmx1ZW5jZSBvZiB0aGUgdGVuZGVuY3kgd2hpY2ggd2UgaGF2ZSBjYWxsZWQgCihjKTsgdGhlIG9ubHkgcmVhbGx5IGJhZCBpbnN0YW5jZSBvZiBpdCBvY2N1cnMgaW4gdGhlIApuZXh0IGNsYXVzZXMsIHdoaWNoIGFyZSBvYnZpb3VzbHkgYSBibHVuZGVyaW5nIHJlZmVyLSAKZW5jZSB0byB0aGUgY3JpdGljYWwgcGVyaW9kIG9mIHRoZSBmaWZ0aCByb3VuZC4g4oCYIEF0IAp3aG9zZSBjb21pbmcgYWxsIG1lbiBzaGFsbCByaXNlIGFnYWluIHdpdGggdGhlaXIgCmJvZGllcywgYW5kIHNoYWxsIGdpdmUgYWNjb3VudCBmb3IgdGhlaXIgb3duIHdvcmtzIDsgCmFuZCB0aGV5IHRoYXQgaGF2ZSBkb25lIGdvb2Qgc2hhbGwgZ28gaW50byBsaWZlIGV2ZXItIApsYXN0aW5n4oCdICh0aGF0IGlzLCBhcyB1c3VhbCwgem9uaWFuKSwg4oCY4oCYYW5kIHRoZXkgdGhhdCAKaGF2ZSBkb25lIGV2aWwgaW50byBldmVybGFzdGluZyBmaXJlLuKAnSAKClRoZSB3cml0ZXIgaXMgcXVpdGUgYWNjdXJhdGUgaW4gc3VwcG9zaW5nIHRoYXQgdGhlIApqdWRnbWVudCBpbiB0aGUgZmlmdGggcm91bmQgd2lsbCBiZSBwYXNzZWQgdXBvbiBtZW4gCndoZW4gdGhleSByaXNlIGFnYWluIHdpdGggdGhlaXIgYm9kaWVz4oCUdGhhdCBpcywgd2hlbiAKdGhleSByZWluY2FybmF0ZTsgYnV0IGhlIGlzIGluIGVycm9yIGluIGFzc29jaWF0aW5nIHRoaXMgCndpdGggdGhlIG1lc3NpYW5pYyBteXRoIG9mIHRoZSByZXR1cm4gb2YgYSBwZXJzb25hbCAKQ2hyaXN0LiBBZ2FpbiBoZSBpcyByaWdodCBpbiBhc3NlcnRpbmcgdGhhdCBsaWZlIGZvciB0aGUgCnJlc3Qgb2YgdGhlIHpvbiBhd2FpdHMgdGhvc2Ugd2hvIHN1Y2Nlc3NmdWxseSBwYXNzIAp0aGUgdGVzdHMsIGJ1dCB3cm9uZyBpbiBkb29taW5nIHRob3NlIHdobyBmYWlsIHRvIHRoZSAKY3J1Y2libGUgb2YgdGhlIHpvbmlhbiBmaXJl4oCUYSBmYXRlIHJlc2VydmVkIHNvbGVseSBmb3IgCnRob3NlIHBlcnNvbmFsaXRpZXMgd2hpY2ggaGF2ZSBiZWVuIGRlZmluaXRlbHkgc2V2ZXJlZCAKZnJvbSB0aGVpciBlZ29zLiAKClRoZXNlIHVuaGFwcHkgZW50aXRpZXMgKGlmIGVudGl0aWVzIHRoZXkgbWF5IHN0aWxsIApiZSBjYWxsZWQpIHBhc3MgaW50byB0aGUgZWlnaHRoIHNwaGVyZSwgYW5kIGFyZSB0aGVyZSAKcmVzb2x2ZWQgaW50byB0aGVpciBjb25zdGl0dWVudCBlbGVtZW50cywgd2hpY2ggYXJlIAp0aGVuIHJlYWR5IGZvciB0aGUgdXNlIG9mIHdvcnRoaWVyIGVnb3MgaW4gYSBmdXR1cmUgCm1hbnZhbnRhcmEuIFRoaXPCq21heSBub3QgaW5hcHRseSBiZSBkZXNjcmliZWQgYXMgCmZhbGxpbmcgaW50byB6b25pYW4gZmlyZTsgYnV0IG1vcmUgYWNjdXJhdGUga25vd2xlZGdlIArigJh3b3VsZCBoYXZlIHNob3duIHRoZSB3cml0ZXIgdGhhdCB0aGlzIGNvdWxkIGhhcHBlbiAKCgpUSEUgQ0FUSE9MSUMgRkFJVEguIDEwZyAKCgpvbmx5IHRvIGxvc3QgcGVyc29uYWxpdGllcyDigJRuZXZlciB0byBpbmRpdmlkdWFsaXRpZXMgOyAKYW5kIHRoYXQgdGhlIGZhdGUgb2YgdGhvc2Ugd2hvIGFyZSByZWplY3RlZCBpbiB0aGUgZmlmdGggCnJvdW5kIHdpbGwgYmUgem9uaWFuIGRlbGF5IG9ubHksIGFuZCBub3Qgem9uaWFuIGZpcmUsIApzaW5jZSB0aGV5IHdpbGwgcmVtYWluIGluIGEgc3ViamVjdGl2ZSBidXQgYnkgbm8gbWVhbnMgCnVuaGFwcHkgY29uZGl0aW9uIOKAmHVudGlsIG5hdHVyZSBvZmZlcnMgYW5vdGhlciBvcHBvci0gCnR1bml0eSBvZiBhIOKAmGtpbmQgYnkgd2hpY2ggdGhleSBhcmUgY2FwYWJsZSBvZiBwcm9maXRpbmcuIAoKT3VyIENyZWVkIGVuZHMgd2l0aCBhIHJlcGV0aXRpb24gb2YgdGhlIHN0YXRlbWVudCAKd2l0aCB3aGljaCBpdCBjb21tZW5jZWQ6IOKAnOKAmCBUaGlzIGlzIHRoZSBDYXRob2xpYyBmYWl0aCwgCndoaWNoIGV4Y2VwdCBhIG1hbiBiZWxpZXZlIGZhaXRoZnVsbHkgaGUgY2Fubm90IGJlIApzYXZlZC7igJnigJkgVGhlIFRyw6l2ZXMgZWRpdGlvbiBvZiB0aGUgUXVpY3VucXVlIGdpdmVzLiAKdXMgYSBtdWNoIG1vZGlmaWVkIGZvcm0gb2YgdGhpcyB2ZXJzZTsgYnV0LCBhcyB3ZSAKaGF2ZSBzYWlkIGJlZm9yZSwgd2hlbiB3ZSByZWNvZ25pemUgZGVmaW5pdGVseSB3aGF0IAppdCByZWFsbHkgbWVhbnMsIHdlIGhhdmUgbm8gcmVhc29uIHRvIHNoaXJrIHRoZSBtb3N0IApwb3NpdGl2ZSBzdGF0ZW1lbnQgb2Ygd2hhdCB3ZSBzZWUgdG8gYmUgYW4gaW1wb3J0YW50IAp0cnV0aCBpbiBuYXR1cmUuIAoKQW5kIHNvIHdlIHRha2Ugb3VyIGxlYXZlIG9mIHRoZXNlIHRpbWUtaG9ub3VyZWQgCmZvcm11bGUgb2YgdGhlIENocmlzdGlhbiBDaHVyY2gsIGhvcGluZyB0aGF0IHN1Y2ggCmZyYWdtZW50YXJ5IGV4cG9zaXRpb24gYXMgaXQgaGFzIGhlcmUgYmVlbiBwb3NzaWJsZSAKdG8gbWFrZSBvZiB0aGVtIG1heSBoYXZlIGF0IGxlYXN0IHRoaXMgbXVjaCByZXN1bHQsIAp0aGF0IGlmIGl0IGhhcHBlbnMgaW4gdGhlIGZ1dHVyZSB0byBhbnkgb2Ygb3VyIHJlYWRlcnMgCnRvIGhlYXIgb3IgdG8gdGFrZSBwYXJ0IGluIHRoZWlyIHJlY2l0YXRpb24gdGhleSBtYXkgCmJyaW5nIHRvIHRoZW0gYSBkZWVwZXIgaW50ZXJlc3QgYW5kIGEgZnVsbGVyIGNvbXByZWhlbi0gCnNpb24sIGFuZCBzbyBkZXJpdmUgZnJvbSB0aGVtIGEgZ3JlYXRlciBwcm9maXQgdGhhbiAKZXZlciBiZWZvcmUu

Nessun commento:

Posta un commento

[AL CORPUS] Occult Chemistry [2/2]

VGhlc2UgdW5pdHMgYXJlIGFsbCBhbGlrZSwgc3BoZXJpY2FsIGFuZCBhYnNvbHV0ZWx5IHNpbXBsZSBpbiAKY29uc3RydWN0aW9uLiBUaG91Z2ggdGhleSBhcmUgdGhlIGJhc2lzIG9m...