VGhlb3NvcGh5IDogVGhlIENoYWtyYXMgYnkgQy4gVy4gTGVhZGJlYXRlciA6IDoKCgpUaGVvc29waHnCoMKgCgoKwqDCoEhvbWXCoMKgwqAKCgpPdXIgRmFjZWJvb2sgR3JvdXAgCgoKVGhlIApDaGFrcmFzwqAKCgpBIE1PTk9HUkFQSMKgCgoKQlnCoAoKCkMuIFcuIApMZWFkYmVhdGVywqAKCgp3aXRoIHRlbiAKY29sb3VyIGlsbHVzdHJhdGlvbnPCoAoKCkFuYW5kIEdob2xhcCBUaGVvc29waGljYWwgSW5zdGl0dXRlCgoKMjAwOQoKClBSRUZBQ0UgVE8gVEhFIEZJUlNUIEVESVRJT07CoAoKCldIRU4gYSBtYW4gYmVnaW5zIHRvIGRldmVsb3AgaGlzIHNlbnNlcywgc28gdGhhdCBoZSBtYXkgc2VlIGEgCmxpdHRsZSBtb3JlIHRoYW4gZXZlcnlib2R5IHNlZXMsIGEgbmV3IGFuZCBtb3N0IGZhc2NpbmF0aW5nIHdvcmxkIG9wZW5zIGJlZm9yZSAKaGltLCBhbmQgdGhlIGNoYWtyYXMgYXJlIGFtb25nIHRoZSBmaXJzdCBvYmplY3RzIGluIHRoYXQgd29ybGQgdG8gYXR0cmFjdCBoaXMgCmF0dGVudGlvbi4gSGlzIGZlbGxvdy1tZW4gcHJlc2VudCB0aGVtc2VsdmVzIHVuZGVyIGEgZnJlc2ggYXNwZWN0OyBoZSBwZXJjZWl2ZXMgCm11Y2ggd2l0aCByZWdhcmQgdG8gdGhlbSB3aGljaCB3YXMgcHJldmlvdXNseSBoaWRkZW4gZnJvbSBoaXMgZXllcywgYW5kIGhlIGlzIAp0aGVyZWZvcmUgYWJsZSB0byB1bmRlcnN0YW5kLCB0byBhcO+/vXByZWNpYXRlIGFuZCAod2hlbiBuZWNlc3NhcnkpIHRvIGhlbHAgdGhlbSAKbXVjaCBiZXR0ZXIgdGhhbiBoZSBjb3VsZCBiZWZvcmUuIFRoZWlyIHRob3VnaHRzIGFuZCBmZWVsaW5ncyBhcmUgZXhwcmVzc2VkIApjbGVhcmx5IGJlZm9yZSBoaXMgZXllcyBpbiBjb2xvdXIgYW5kIGZvcm07IHRoZSBzdGFnZSBvZiB0aGVpciBkZXZlbG9wbWVudCwgdGhlIApjb25kaXRpb24gb2YgdGhlaXIgaGVhbHRoIGJlY29tZSBvYnZpb3VzIGZhY3RzIGluc3RlYWQgb2YgbWVyZSBtYXR0ZXJzIG9mIAppbmZlcmVuY2UuIFRoZSBicmlsbGlhbnQgY29sb3VyaW5nIGFuZCB0aGUgcmFwaWQgYW5kIGluY2Vzc2FudCBtb3ZlbWVudCBvZiB0aGUgCmNoYWtyYXMgYnJpbmcgdGhlbSBpbW1lZGlhdGVseSB1bmRlciBoaXMgb2JzZXJ2YXRpb24sIGFuZCBoZSBuYXR1cmFsbHkgd2FudHMgdG8gCmtub3cgd2hhdCB0aGV5IGFyZSBhbmQgd2hhdCB0aGV5IG1lYW4uIEl0IGlzIHRoZSBvYmplY3Qgb2YgdGhpcyBib29rIHRvIHByb3ZpZGUgCmFuIGFuc3dlciB0byB0aG9zZSBxdWVzdGlvbnMgYW5kIHRvIGdpdmUgdG8gdGhvc2Ugd2hvIGhhdmUgbm90IHlldCBtYWRlIGFueSAKYXR0ZW1wdCB0byB1bmZvbGQgdGhlaXIgZG9ybWFudCBmYWN1bHRpZXMgc29tZSBpZGVhIG9mIGF0IGxlYXN0IHRoaXMgb25lIHNtYWxsIApzZWN0aW9uIG9mIHdoYXQgaXMgc2VlbiBieSB0aGVpciBtb3JlIGZvcnR1bmF0ZSBicmV0aHJlbi4KCgpJbiBvcmRlciB0byBjbGVhciBhd2F5IGluZXZpdGFibGUgcHJlbGltaW5hcnkgbWlzY29uY2VwdGlvbnMsIApsZXQgaXQgYmUgZGVmaW5pdGVseSB1bmRlcnN0b29kIHRoYXQgdGhlcmUgaXMgbm90aGluZyBmYW5jaWZ1bCBvciB1bm5hdHVyYWwgCmFib3V0IHRoZSBzaWdodCB3aGljaCBlbmFibGVzIHNvbWUgbWVuIHRvIHBlcmNlaXZlIG1vcmUgdGhhbiBvdGhlcnMuIEl0IGlzIApzaW1wbHkgYW4gZXh0ZW5zaW9uIG9mIGZhY3VsdGllcyB3aXRoIHdoaWNoIHdlIGFyZSBhbGwgZmFtaWxpYXIsIGFuZCB0byBhY3F1aXJlIAppdCBpcyB0byBtYWtlIG9uZXNlbGYgc2Vuc2l0aXZlIHRvIHZpYnJhdGlvbnMgbW9yZSByYXBpZCB0aGFuIHRob3NlIHRvIHdoaWNoIG91ciAKcGh5c2ljYWwgc2Vuc2VzIGFyZSBub3JtYWxseSB0cmFpbmVkIHRvIHJlc3BvbmQuIFRoZXNlIGZhY3VsdGllcyB3aWxsIGNvbWUgdG8gCmV2ZXJ5b25lIGluIGR1ZSBjb3Vyc2Ugb2YgZXZvbHV0aW9uLCBidXQgc29tZSBvZiB1cyBoYXZlIHRha2VuIHNwZWNpYWwgdHJvdWJsZSAKdG8gZGV2ZWxvcCB0aGVtIG5vdyBpbiBhZHZhbmNlIG9mIHRoZSByZXN0LCBhdCB0aGUgY29zdCBvZiBtYW55IHllYXJzIG9mIGhhcmRlciAKd29yayB0aGFuIG1vc3QgcGVvcGxlIHdvdWxkIGNhcmUgdG8gdW5kZXJ0YWtlLgoKCkkga25vdyB0aGF0IHRoZXJlIGFyZSBzdGlsbCBtYW55IG1lbiBpbiB0aGUgd29ybGQgd2hvIGFyZSBzbyAKZmFyIGJlaGluZCB0aGUgdGltZXMgYXMgdG8gZGVueSB0aGUgZXhpc3RlbmNlIG9mIHN1Y2ggcG93ZXJzLCBqdXN0IGFzIHRoZXJlIGFyZSAKc3RpbGwgdmlsbGFnZXJzIHdobyBoYXZlIG5ldmVyIHNlZW4gYSByYWlsd2F5IHRyYWluLiBJIGhhdmUgbmVpdGhlciB0aW1lIG5vciAKc3BhY2UgdG8gYXJndWUgd2l0aCBzdWNoIGludmluY2libGUgaWdub3JhbmNlOyBJIGNhbiBvbmx5IHJlZmVyIGVucXVpcmVycyB0byBteSAKYm9vayBvbiBDbGFpcnZveWFuY2UsKiAKb3IgdG8gc2NvcmVzIG9mIGJvb2tzIGJ5IG90aGVyIGF1dGhvcnMgb24gdGhlIHNhbWUgc3ViamVjdC4gVGhlIHdob2xlIGNhc2UgaGFzIApiZWVuIHByb3ZlZCBodW5kcmVkcyBvZiB0aW1lcywgYW5kIG5vIG9uZSB3aG8gaXMgY2FwYWJsZSBvZiB3ZWlnaGluZyB0aGUgdmFsdWUgCm9mIGV2aWRlbmNlIGNhbiBhbnkgbG9uZ2VyIGJlIGluIGRvdWJ0LgoKCk11Y2ggaGFzIGJlZW4gd3JpdHRlbiBhYm91dCB0aGUgY2hha3JhcywgYnV0IGl0IGlzIGNoaWVmbHkgaW4gClNhbnNrcml0IG9yIGluIHNvbWUgb2YgdGhlIEluZGlhbiB2ZXJuYe+/vWN1bGFycy4gSXQgaXMgb25seSBxdWl0ZSByZWNlbnRseSB0aGF0IAphbnkgYWNjb3VudCBvZiB0aGVtIGhhcyBhcHBlYXJlZCBpbiBFbmdsaXNoLiBJIG1lbnRpb25lZCB0aGVtIG15c2VsZiBpbiBUaGUgCklubmVyIExpZmUqIAphYm91dCAxOTEwLCBhbmQgc2luY2UgdGhlbiBTaXIgSm9obiBXb29kcm9mZmXvv71zIG1hZ25pZmljZW50IHdvcmsgVGhlIFNlcnBlbnQgClBvd2VyKiAKaGFzIGJlZW4gaXNzdWVkLCBhbmQgc29tZSBvZiB0aGUgb3RoZXIgSW5kaWFuIGJvb2tzIGhhdmUgYmVlbiB0cmFuc2xhdGVkLiBUaGUgCnN5bWJvbGljYWwgZHJhd2luZ3Mgb2YgdGhlbSB3aGljaCBhcmUgdXNlZCBieSB0aGUgSW5kaWFuIHlvZ2lzIHdlcmUgcmVwcm9kdWNlZCAKaW4gVGhlIFNlcnBlbnQgUG93ZXIsIGJ1dCBzbyBmYXIgYXMgSSBhbSBhd2FyZSB0aGUgaWxsdXN0cmF0aW9ucyAKd2hpY2ggSSBnaXZlIGluIHRoaXMgYm9vayBhcmUgdGhlIGZpcnN0IGF0dGVtcHQgdG8gcmVwcmVzZW50IHRoZW0gYXMgdGhleSAKYWN0dWFsbHkgYXBwZWFyIHRvIHRob3NlIHdobyBjYW4gc2VlIHRoZW0uIEluZGVlZCwgaXQgaXMgY2hpZWZseSBpbiBvcmRlciB0byBwdXQgCmJlZm9yZSB0aGUgcHVibGljIHRoaXMgZmluZSBzZXJpZXMgb2YgZHJhd2luZ3MgYnkgbXkgZnJpZW5kIHRoZSBSZXYuIEVkd2FyZCAKV2FybmVyIHRoYXQgSSB3cml0ZSB0aGlzIGJvb2ssIGFuZCBJIHdpc2ggdG8gZXhwcmVzcyBteSBkZWVwIGluZGVidGVkbmVzcyB0byBoaW0gCmZvciBhbGwgdGhlIHRpbWUgYW5kIHRyb3VibGUgdGhhdCBoZSBoYXMgZGV2b3RlZCB0byB0aGVtLiBJIGhhdmUgYWxzbyB0byB0aGFuayAKbXkgaW5kZWZhdGlnYWJsZSBjb2xsYWJvcmF0b3IsIFByb2Zlc3NvciBFcm5lc3QgV29vZCwgZm9yIHRoZSBjb2xsZWN0aW9uIGFuZCAKY29sbGF0aW9uIG9mIGFsbCB0aGUgdmFsdWFibGUgaW5mb3JtYXRpb24gYXMgdG8gdGhlIEluZGlhbiB2aWV3cyBvbiBvdXIgc3ViamVjdCAKd2hpY2ggaXMgY29udGFpbmVkIGluIENoYXB0ZXIgVi4KCgpCZWluZyBtdWNoIG9jY3VwaWVkIHdpdGggb3RoZXIgd29yaywgaXQgd2FzIG15IGludGVudGlvbiAKbWVyZWx5IHRvIGNvbGxlY3QgYW5kIHJlcHJpbnQgYXMgYWNjb23vv71wYW55aW5nIGxldHRlcnByZXNzIHRvIHRoZSBpbGx1c3RyYXRpb25zIAp0aGUgdmFyaW91cyBhcnRpY2xlcyB3aGljaCBJIGhhZCBsb25nIGFnbyB3cml0dGVuIG9uIHRoZSBzdWJqZWN0OyBidXQgYXMgSSAKbG9va2VkIG92ZXIgdGhlbSBjZXJ0YWluIHF1ZXN0aW9ucyBzdWdnZXN0ZWQgdGhlbXNlbHZlcyBhbmQgYSBsaXR0bGUgCmludmVzdGlnYXRpb24gcHV0IG1lIGluIHBvc3Nlc3Npb24gb2YgYWRkaXRpb25hbCBmYWN0cywgd2hpY2ggSSBoYXZlIGR1bHkgCmluY29ycG9yYXRlZC4gQW4gaW50ZXJlc3RpbmcgcG9pbnQgaXMgdGhhdCBib3RoIHRoZSB2aXRhbGl0eS1nbG9idWxlwqAgYW5kIHRoZSAKa3VuZGFsaW5pLXJpbmcgd2VyZSBvYnNlcnZlZCBieSBEci4gQW5uaWUgQmVzYW50IGFuZCBjYXRhbG9ndWVkIGFzIApoeXBlci1tZXRhLXByb3RvIGVsZW1lbnRzIGFzIGxvbmcgYWdvIGFzIDE4OTUsIHRob3VnaCB3ZSBkaWQgbm90IHRoZW4gZm9sbG93IAp0aGVtIGZhciBlbm91Z2ggdG8gZGlzY292ZXIgdGhlaXIgcmVsYXRpb24gdG8gb25lwqAgYW5vdGhlciBhbmQgdGhlIGltcG9ydGFudCAKcGFydCB0aGF0IHRoZXkgcGxheSBpbiB0aGUgZWNvbm9teSBvZiBodW1hbiBsaWZlLsKgCgoKQy4gVy4gTC7CoAoKCsKgCgoKwqBUSEUgQ1JPV04gQ0hBS1JBwqAKCgpDT05URU5UU8KgCgoKUFJFRkFDRQoKCnZpaQoKCsKgQ0hBUFRFUiBJCgoKVEhFIEZPUkNFLUNFTlRSRVPCoAoKClRoZSBNZWFuaW5nIG9mIHRoZSBXb3JkLiAKUHJlbGltaW5hcnkgRXhwbGFuYXRpb25zLiBUaGUgRXRoZXJpYyBEb3VibGUuIFRoZSBDZW50cmVzLiBUaGUgRm9ybXMgb2YgdGhlIApWb3J0aWNlcy4gVGhlIElsbHVzdHJhdGlvbnMuIFRoZSBSb290IENoYWtyYS4gVGhlIFNwbGVlbiBDaGFrcmEuIFRoZSBOYXZlbCAKQ2hha3JhLiBUaGUgSGVhcnQgQ2hha3JhLiBUaGUgVGhyb2F0IENoYWtyYS4gVGhlIEJyb3cgQ2hha3JhLsKgIFRoZSBDcm93biBDaGFrcmEuIApPdGhlciBBY2NvdW50cyBvZiB0aGUgQ2VudHJlcy4uLi4uLi4uLi4xwqAKCgpDSEFQVEVSIElJCgoKVEhFIEZPUkNFU8KgCgoKVGhlIFByaW1hcnkgb3IgTGlmZSAKRm9yY2UuIFRoZSBTZXJwZW50LUZpcmUuIFRoZSBUaHJlZSBTcGluYWwgQ2hhbm5lbHMuIFRoZSBNYXJyaWFnZSBvZiB0aGUgRm9yY2VzLiAKVGhlIFN5bXBhdGhldGljIFN5c3RlbS4gVGhlIENlbnRyZXMgaW4gdGhlIFNwaW5lLiBWaXRhbGl0eS7CoCBUaGUgVml0YWxpdHkgCkdsb2J1bGUuIFRoZSBTdXBwbHkgb2YgR2xvYnVsZXMuIFBzeWNoaWMgRm9yY2VzLi4uLi4uLjIzwqAKCgpDSEFQVEVSIElJSQoKClRIRSBBQlNPUlBUSU9OIE9GIApWSVRBTElUWcKgCgoKVGhlIEdsb2J1bGUuIFRoZSAKVmlvbGV0LUJsdWUgUmF5LiBUaGUgWWVsbG93IFJheTogVGhlIEdyZWVuIFJheS4gVGhlIFJvc2UgUmF5LiBUaGUgT3JhbmdlLVJlZCAKUmF5LiBUaGUgRml2ZSBQcmFuYSBWYXl1cy4gVml0YWxpdHkgYW5kIEhlYWx0aC4gVGhlIEZhdGUgb2YgdGhlIEVtcHR5IEF0b21zLiAKVml0YWxpdHkgYW5kIE1hZ25ldGlzbS4uLi4uLi4uLjUzCgoKQ0hBUFRFUiBJVgoKClRIRSBERVZFTE9QTUVOVCBPRiBUSEUgCkNIQUtSQVPCoAoKClRoZSBGdW5jdGlvbnMgb2YgdGhlIApBd2FrZW5lZCBDZW50cmVzLiBUaGUgQXN0cmFsIENlbnRyZXMuIEFzdHJhbCBTZW5zZXMuIFRoZSBBcm91c2luZyBvZiBLdW5kYWxpbmkuIApUaGUgQXdha2VuaW5nIG9mIHRoZSBFdGhlcmljIENoYWtyYXMuIENhc3VhbCBDbGFpcnZveWFuY2UuwqAgVGhlIERhbmdlciBvZiAKUHJlbWF0dXJlIEF3YWtlbmluZy4gVGhlIFNwb250YW5lb3VzIEF3YWtlbmluZyBvZiBLdW5kYWxpbmkuIFBlcnNvbmFsIApFeHBlcmllbmNlLiBUaGUgRXRoZXJpYyBXZWIuIFRoZSBFZmZlY3RzIG9mIEFsY29ob2wgYW5kIERydWdzLiBUaGUgRWZmZWN0IG9mIApUb2JhY2NvLiBUaGUgT3BlbmluZyBvZiB0aGUgRG9vcnMuLi4uLi4uLjcxwqAKCgpDSEFQVEVSIFYKCgpUSEUgTEFZQSBZT0dBwqAKCgpUaGUgSGluZHUgQm9va3MuIFRoZSAKSW5kaWFuIExpc3Qgb2YgQ2hha3Jhcy4gVGhlIEZpZ3VyZXMgb2YgdGhlIENoYWtyYXMuIFRoZSBIZWFydCBDaGFrcmEuIFRoZSBQZXRhbHMgCmFuZCBMZXR0ZXJzLiBUaGUgTWFuZGFsYXMuIFRoZSBZYW50cmFzLiBUaGUgQW5pbWFscy4gVGhlIERpdmluaXRpZXMuIFRoZSBCb2R5IApNZWRpdGF0aW9uLiBUaGUgS25vdHMuIFRoZSBTZWNvbmRhcnkgSGVhcnQgTG90dXMuIEVmZmVjdHMgb2YgTWVkae+/vXRhdGlvbiBpbiB0aGUgCkhlYXJ0LiBLdW5kYWxpbmkuIFRoZSBBd2FrZW5pbmcgb2YgS3VuZGFsaW5pLiBUaGUgQXNjZW50IG9mIEt1bmRhbGluaS4gVGhlIEdvYWwgCm9mIEt1bmRhbGluaS4gQ29uY2x1c2lvbi4uLi4uLi4uOTXCoMKgCgoKTElTVCBPRiAKSUxMVVNUUkFUSU9OUwoKClBMQVRFUwoKCsKgCgoKSS4KCgpJSS4KCgpJSUkuCgoKSVYuCgoKVi4KCgpWSS4KCgpWSUkuCgoKVklJSS4KCgpJWC4KCgpUaGUgQ3Jvd24gCkNoYWtyYS4KCgpUaGUgUm9vdCAKQ2hha3JhLgoKClRoZSBTcGxlZW4gCkNoYWtyYS4KCgpUaGUgTmF2ZWwgCkNoYWtyYS4KCgpUaGUgSGVhcnQgCkNoYWtyYS4KCgpUaGUgVGhyb2F0IApDaGFrcmEuCgoKVGhlIEJyb3cgCkNoYWtyYS4KCgpUaGUgQ2hha3JhcyAKYWNjb3JkaW5nIHRvIEdpY2h0ZWwKCgpUaGUgU3RyZWFtcyAKb2YgVml0YWxpdHkKCgpUaGUgQ2hha3JhcyAKYW5kIHRoZSBOZXJ2b3VzIFN5c3RlbQoKCkZyb250aXNwaWVjZQoKCsKgCgoKwqAKCgrCoAoKCkJldHdlZW4gClBhZ2VzIDE2IGFuZCAxNwoKCsKgCgoKwqAKCgrCoAoKCsKgCgoKRmFjaW5nIApQYWdlIDQwCgoKwqDCoAoKCkZJR1VSRVMKCgoxLgoKCjIuCgoKMy4KCgo0LgoKCjUuCgoKNi4KCgo3LgoKCjguCgoKOS4KCgpUaGUgQ2hha3JhcwoKClJlcHJlc2VudGF0aW9ucyBvZiB0aGUgQ3Jvd24gQ2hha3JhCgoKVGhlIFRocmVlIApPdXRwb3VyaW5ncwoKClRoZSBTcGluYWwgCkNoYW5uZWxzCgoKVGhlIEZvcm1zIG9mIAp0aGUgRm9yY2VzCgoKVGhlIENvbWJpbmVkIApGb3JtIG9mIHRoZSBGb3JjZXMKCgpUaGUgVWx0aW1hdGUgClBoeXNpY2FsIEF0b20KCgpUaGUgClBpdHVpdGFyeSBCb2R5IGFuZCB0aGUgUGluZWFsIEdsYW5kCgoKSGluZHUgCkRpYWdyYW0gb2YgdGhlIEhlYXJ0IENoYWtyYQoKCjEKCgoxNwoKCjI5CgoKMzMKCgozNgoKCjM4CgoKNDMKCgo3NAoKCjk5CgoKwqDCoMKgwqDCoMKgwqDCoMKgwqAgCgoKVEFCTEVTCgoKSS4KCgpJSS4KCgpJSUkuCgoKSVYuCgoKVi4KCgpWSS4KCgpWSUkuCgoKVGhlIENoYWtyYXMKCgpUaGUgQ2hha3JhcyAKYW5kIHRoZSBQbGV4dXNlcwoKClByYW5hIGFuZCAKdGhlIFByaW5jaXBsZXMKCgpUaGUgRml2ZSAKUHJhbmEgVmF5dXMKCgpDb2xvdXJzIG9mIApMb3R1cyBQZXRhbHMKCgpUaGUgU2Fuc2tyaXQgCkFscGhhYmV0CgoKVGhlIFN5bWJvbGljIApGb3JtcyBvZiB0aGUgRWxlbWVudHMKCgo3CgoKNDEKCgo2MAoKCjYxCgoKOTcKCgoxMDMKCgoxMDYKCgrCoENIQVBURVIgScKgCgoKVEhFIEZPUkNFIC0gQ0VOVFJFU8KgCgoKVEhFIE1FQU5JTkcgT0YgVEhFIFdPUkTCoAoKClRIRSB3b3JkIENoYWtyYSBpcyBTYW5za3JpdCwgYW5kIHNpZ25pZmllcyBhIHdoZWVsLiBJdCBpcyAKYWxzbyB1c2VkIGluIHZhcmlvdXMgc3Vic2lkaWFyeSwgZGVyaXZhdGl2ZSBhbmQgc3ltYm9saWNhbCBzZW5zZXMsIGp1c3QgYXMgaXMgCml0cyBFbmdsaXNoIGVxdWl2YWxlbnQ7IGFzIHdlIG1pZ2h0IHNwZWFrIG9mIHRoZSB3aGVlbCBvZiBmYXRlLCBzbyBkb2VzIHRoZSAKQnVkZGhpc3Qgc3BlYWsgb2YgdGhlIHdoZWVsIG9mIGxpZmUgYW5kIGRlYXRoOyBhbmQgaGUgZGVzY3JpYmVzIHRoYXQgZmlyc3QgZ3JlYXQgCnNlcm1vbiBpbiB3aGljaCB0aGUgTG9yZCBCdWRkaGEgcHJvcG91bmRlZCBoaXMgZG9jdHJpbmUgYXMgdGhlIApEaGFt77+9bWFjaGFra2FwcGF2YXR0YW5hIFN1dHRhIChjaGFra2EgYmVpbmcgdGhlIFBhbGkgZXF1aXZhbGVudCBmb3IgCnRoZSBTYW5za3JpdCBjaGFrcmEpIHdoaWNoIFByb2Zlc3NvciBSaHlzIERhdmlkcyBwb2V0aWNhbGx5IHJlbmRlcnMgYXMgCu+/vXRvIHNldCByb2xsaW5nIHRoZSByb3lhbCBjaGFyaW90LXdoZWVsIG9mIGEgdW5pdmVyc2FsIGVtcGlyZSBvZiB0cnV0aCBhbmQgCnJpZ2h0ZW91c25lc3Pvv70uIFRoYXQgaXMgZXhhY3RseSB0aGUgc3Bpcml0IG9mIHRoZSBtZWFuaW5nIHdoaWNoIHRoZSBleHByZXNzaW9uIApjb252ZXlzIHRvIHRoZSBCdWRkaGlzdCBkZXZvdGVlLCB0aG91Z2ggdGhlIGxpdGVyYWwgdHJhbnNsYXRpb24gb2YgdGhlIGJhcmUgCndvcmRzIGlzIO+/vXRoZSB0dXJuaW5nIG9mIHRoZSB3aGVlbCBvZiB0aGUgTGF377+9LiBUaGUgc3BlY2lhbCB1c2Ugb2YgdGhlIHdvcmQgCmNoYWtyYSB3aXRoIHdoaWNoIHdlIGFyZSBhdCB0aGUgbW9tZW50IGNvbmNlcm5lZCBpcyBpdHMgYXBwbGljYXRpb24gdG8gYSBzZXJpZXMgCm9mIHdoZWVsLWxpa2Ugdm9ydGljZXMgd2hpY2ggZXhpc3QgaW4gdGhlIHN1cmZhY2Ugb2YgdGhlIGV0aGVyaWMgZG91YmxlIG9mIG1hbi7CoAoKClBSRUxJTUlOQVJZIApFWFBMQU5BVElPTlPCoAoKCkFzIHRoaXMgaG9vayBtYXkgcHJvYmFibHkgZmFsbCBpbnRvIHRoZSBoYW5kcyBvZiBzb21lIHdobyBhcmUgCm5vdCBmYW1pbGlhciB3aXRoIFRoZW9zb3BoaWNhbCB0ZXJtaW5vbG9neSBpdCBtYXkgYmUgd2VsbCB0byBpbnNlcnQgaGVyZSBhIGZldyAKd29yZHMgb2YgcHJlbGltaW5hcnkgZXhwbGFuYXRpb24uCgoKSW4gb3JkaW5hcnkgc3VwZXJmaWNpYWwgY29udmVyc2F0aW9uIGEgbWFuIHNvbWXvv710aW1lcyAKbWVudGlvbnMgaGlzIHNvdWwgLSBpbXBseWluZyB0aGF0IHRoZSBib2R5IHRocm91Z2ggd2hpY2ggaGUgc3BlYWtzIGlzIHRoZSByZWFsIAptYW4sIGFuZCB0aGF0IHRoaXMgdGhpbmcgY2FsbGVkIHRoZSBzb3VsIGlzIGEgcG9zc2Vzc2lvbiBvciBhcHBhbmFnZSBvZiB0aGF0IApib2R5IC0gYSBzb3J0IG9mIGNhcHRpdmUgYmFsbG9vbiBmbG9hdGluZyBvdmVyIGhpbSwgYW5kIGluIHNvbWUgdmFndWUgc29ydCBvZiAKd2F5IGF0dGFjaGVkIHRvIGhpbS4gVGhpcyBpcyBhIGxvb3NlLCBpbmFjY3VyYXRlIGFuZCBtaXNsZWFkaW5nIHN0YXRlbWVudDsgdGhlIApleGFjdCBvcHBvc2l0ZSBpcyB0aGUgdHJ1dGguIE1hbiBpcyBhIHNvdWwgYW5kIG93bnMgYSBib2R5IC0gc2V2ZXJhbCAKYm9kaWVzIGluIGZhY3Q7IGZvciBiZXNpZGVzIHRoZSB2aXNpYmxlIHZlaGljbGUgYnkgbWVhbnMgb2Ygd2hpY2ggaGUgdHJhbnNhY3RzIApoaXMgYnVzaW5lc3Mgd2l0aCBoaXMgbG93ZXIgd29ybGQsIGhlIGhhcyBvdGhlcnMgd2hpY2ggYXJlIG5vdCB2aXNpYmxlIHRvIApvcmRpbmFyeSBzaWdodCwgYnkgbWVhbnMgb2Ygd2hpY2ggaGUgZGVhbHMgd2l0aCB0aGUgZW1vdGlvbmFsIGFuZCBtZW50YWwgd29ybGRzLiAKV2l0aCB0aG9zZSwgaG93ZXZlciwgd2UgYXJlIG5vdCBmb3IgdGhlIG1vbWVudCBjb25jZXJuZWQuCgoKSW4gdGhlIGNvdXJzZSBvZiB0aGUgbGFzdCBjZW50dXJ5IGVub3Jtb3VzIGFkdmFuY2VzIGhhdmUgYmVlbiAKbWFkZSBpbiBvdXIga25vd2xlZGdlIG9mIHRoZSBtaW51dGUgZGV0YWlscyBvZiB0aGUgcGh5c2ljYWwgYm9keTsgc3R1ZGVudHMgb2YgCm1lZGljaW5lIGFyZSBub3cgZmFtaWxpYXIgd2l0aCBpdHMgYmV3aWxkZXJpbmcgY29tcGxleGl0aWVzLCBhbmQgaGF2ZSBhdCBsZWFzdCBhIApnZW5lcmFsIGlkZWEgb2YgdGhlIHdheSBpbiB3aGljaCBpdHMgYW1hemluZ2x5IGludHJpY2F0ZSBtYWNoaW5lcnkgd29ya3MuwqAKCgpUSEUgRVRIRVJJQyBET1VCTEXCoAoKCk5hdHVyYWxseSwgaG93ZXZlciwgdGhleSBoYXZlIGhhZCB0byBjb25maW5lIHRoZWlyIGF0dGVudGlvbiAKdG8gdGhhdCBwYXJ0IG9mIHRoZSBib2R5IHdoaWNoIGlzIGRlbnNlIGVub3VnaCB0byBiZSB2aXNpYmxlIHRvIHRoZSBleWUsIGFuZCAKbW9zdCBvZiB0aGVtIGFyZSBwcm9iYWJseSB1bmF3YXJlIG9mIHRoZSBleGlzdGVuY2Ugb2YgdGhhdCB0eXBlIG9mIG1hdHRlciwgc3RpbGwgCnBoeXNpY2FsIHRob3VnaCBpbnZpc2libGUsIHRvIHdoaWNoIGluIFRoZW9zb3BoeSB3ZSBnaXZlIHRoZSBuYW1lIG9mIGV0aGVyaWMuWypdIApUaGlzIGludmlzaWJsZSBwYXJ0IG9mIHRoZSBwaHlzaWNhbCBib2R5IGlzIG9mIGdyZWF0IGltcG9ydGFuY2UgdG8gdXMsIGZvciBpdCBpcyAKdGhlIHZlaGljbGUgdGhyb3VnaCB3aGljaCBmbG93IHRoZSBzdHJlYW1zIG9mIHZpdGFsaXR5IHdoaWNoIGtlZXAgdGhlIGJvZHkgCmFsaXZlLCBhbmQgd2l0aG91dCBpdCBhcyBhIGJyaWRnZSB0byBjb252ZXkgdW5kdWxhdGlvbnMgb2YgdGhvdWdodCBhbmQgZmVlbGluZyAKZnJvbSB0aGUgYXN0cmFsIHRvIHRoZSB2aXNpYmxlIGRlbnNlciBwaHlzaWNhbCBtYXR0ZXIsIHRoZSBlZ29b77+9XS0gCmNvdWxkIG1ha2Ugbm8gdXNlIG9mIHRoZSBjZWxscyBvZiBoaXMgYnJhaW4uIEl0IGlzIGNsZWFybHkgdmlzaWJsZSB0byB0aGUgCmNsYWlydm95YW50IGFzIGEgbWFzcyBvZiBmYWludGx5LWx1bWlub3VzIHZpb2xldC1ncmV5IG1pc3QsIGludGVycGVuZXRyYXRpbmcgdGhlIApkZW5zZXIgcGFydCBvZiB0aGUgYm9keSwgYW5kIGV4dGVuZGluZyB2ZXJ5IHNsaWdodGx5IGJleW9uZCBpdC4KCgpUaGUgbGlmZSBvZiB0aGUgcGh5c2ljYWwgYm9keSBpcyBvbmUgb2YgcGVycGV0dWFsIGNoYW5nZSwgYW5kIAppbiBvcmRlciB0aGF0IGl0IHNoYWxsIGxpdmUgaXQgbmVlZHMgY29uc3RhbnRseSB0byBiZSBzdXBwbGllZCBmcm9tIHRocmVlIApkaXN0aW5jdCBzb3VyY2VzLiBJdCBtdXN0IGhhdmUgZm9vZCBmb3IgaXRzIGRpZ2VzdGlvbiwgYWlyIGZvciBpdHMgYnJlYXRoaW5nLCAKYW5kIHZpdGFsaXR5IGluIHRocmVlIGZvcm1zIGZvciBpdHMgYWJzb3JwdGlvbi4gVGhpcyB2aXRhbGl0eSBpcyBlc3NlbnRpYWxseSBhIApmb3JjZSwgYnV0IHdoZW4gY2xvdGhlZCB3aXRoIG1hdHRlciBpdCBhcHBlYXJzIHRvIHVzIGFzIHRob3VnaCBpdCB3ZXJlIGEgaGlnaGx5IApyZWZpbmVkIGNoZW1pY2FsIGVsZW1lbnQuIEl0IGV4aXN0cyB1cG9uIGFsbCBwbGFuZXMsIGJ1dCBvdXIgYnVzaW5lc3MgZm9yIHRoZSAKbW9tZW50IGlzIHRvIGNvbnNpZGVyIGl0cyBtYW5pZmVzdGHvv710aW9uIGluIHRoZSBwaHlzaWNhbCB3b3JsZC4KCgpJbiBvcmRlciB0byB1bmRlcnN0YW5kIHRoYXQsIHdlIG11c3Qga25vdyBzb21l77+9dGhpbmcgb2YgdGhlIApjb25zdGl0dXRpb24gYW5kIGFycmFuZ2VtZW50IG9mIHRoaXMgZXRoZXJpYyBwYXJ0IG9mIG91ciBib2RpZXMuIEkgaGF2ZSB3cml0dGVuIApvbiB0aGlzIHN1YmplY3QgbWFueSB5ZWFycyBhZ28gaW4gdmFyaW91cyB2b2x1bWVzLCBhbmQgQ29sb25lbCBBLiBFLiBQb3dlbGwgaGFzIApyZWNlbnRseSBnYXRoZXJlZCB0b2dldGhlciBhbGwgdGhlIGluZm9ybWF0aW9uIGhlcmV0b2ZvcmUgcHVibGlzaGVkKiAKYW5kIGlzc3VlZCBpdCBpbiBhIGNvbnZlbmllbnQgZm9ybSBpbiBhIGJvb2sgY2FsbGVkIFRoZSBFdGhlcmljIERvdWJsZS5b77+9XcKgCgoKVEhFIENFTlRSRVPCoAoKClRoZSBjaGFrcmFzIG9yIGZvcmNlLWNlbnRyZXMgYXJlIHBvaW50cyBvZiBjb27vv71uZWN0aW9uIGF0IAp3aGljaCBlbmVyZ3kgZmxvd3MgZnJvbSBvbmUgdmVoaWNsZSBvciBib2R5IG9mIGEgbWFuIHRvIGFub3RoZXIuIEFueW9uZSB3aG8gCnBvc3Nlc3NlcyBhIHNsaWdodCBkZWdyZWUgb2YgY2xhaXJ2b3lhbmNlIG1heSBlYXNpbHkgc2VlIHRoZW0gaW4gdGhlIGV0aGVyaWMgCmRvdWJsZSwgd2hlcmUgdGhleSBzaG93IHRoZW1zZWx2ZXMgYXMgc2F1Y2VyLWxpa2UgZGVwcmVzc2lvbnMgb3Igdm9ydGljZXMgaW4gaXRzIApzdXJmYWNlLiBXaGVuIHF1aXRlIHVuZGV2ZWxvcGVkIHRoZXkgYXBwZWFyIGFzIHNtYWxsIGNpcmNsZXPCoCBhYm91dCB0d28gaW5jaGVzIAppbiBkaWFtZXRlciwgZ2xvd2luZyBkdWxseSBpbiB0aGUgb3JkaW5hcnkgbWFuOyBidXQgd2hlbiBhd2FrZW5lZCBhbmQgdml2aWZpZWQgCnRoZXkgYXJlIHNlZW4gYXMgYmxhemluZywgY29ydXNjYXRpbmcgd2hpcmxwb29scywgbXVjaCBpbmNyZWFzZWQgaW4gc2l6ZSwgYW5kIApyZXNlbWJsaW5nIG1pbmlhdHVyZSBzdW5zLiBXZSBzb21ldGltZXMgc3BlYWsgb2YgdGhlbSBhcyByb3VnaGx5IGNvcnJlc3BvbmRpbmcgCnRvIGNlcnRhaW4gcGh5c2ljYWwgb3JnYW5zOyBpbiByZWFsaXR5IHRoZXkgc2hvdyB0aGVt77+9c2VsdmVzIGF0IHRoZSBzdXJmYWNlIG9mIAp0aGUgZXRoZXJpYyBkb3VibGUsIHdoaWNoIHByb2plY3RzIHNsaWdodGx5IGJleW9uZCB0aGUgb3V0bGluZSBvZiB0aGUgZGVuc2UgCmJvZHkuIElmIHdlIGltYWdpbmUgb3Vyc2VsdmVzIHRvIGJlIGxvb2tpbmcgc3RyYWlnaHQgZG93biBpbnRvIHRoZSBiZWxsIG9mIGEgCmZsb3dlciBvZiB0aGUgY29udm9sdnVsdXMgdHlwZSwgd2Ugc2hhbGwgZ2V0IHNvbWUgaWRlYSBvZiB0aGUgZ2VuZXJhbCBhcHBlYXJhbmNlIApvZiBhIGNoYWtyYS4gVGhlIHN0YWxrIG9mIHRoZSBmbG93ZXIgaW4gZWFjaCBzcHJpbmdzIGZyb20gYSBwb2ludCBpbiB0aGUgc3BpbmUsIApzbyBhbm90aGVyIHZpZXcgbWlnaHQgc2hvdyB0aGUgc3BpbmUgYXMgYSBjZW50cmFsIHN0ZW0gKHNlZSBQbGF0ZSBWSUlJKSwgZnJvbSAKd2hpY2ggZmxvd2VycyBzaG9vdCBmb3J0aCBhdCBpbnRlcnZhbHMsIHNob3dpbmcgdGhlIG9wZW5pbmcgb2YgdGhlaXIgYmVsbHMgYXQgCnRoZSBzdXJmYWNlIG9mIHRoZSBldGhlcmljIGJvZHkuCgoKVGhlIHNldmVuIGNlbnRyZXMgd2l0aCB3aGljaCB3ZSBhcmUgYXQgcHJlc2VudCBjb25jZXJuZWQgYXJlIAppbmRpY2F0ZWQgaW4gdGhlIGFjY29tcGFueWluZyBpbGx1c3RyYe+/vXRpb24gKEZpZy4gMSkuIFRhYmxlIEkgZ2l2ZXMgdGhlaXIgCkVuZ2xpc2ggYW5kIFNhbnNrcml0IG5hbWVzLgoKCkFsbCB0aGVzZSB3aGVlbHMgYXJlIHBlcnBldHVhbGx5IHJvdGF0aW5nLCBhbmQgaW50byB0aGUgaHViIApvciBvcGVuIG1vdXRoIG9mIGVhY2ggYSBmb3JjZSBmcm9tIHRoZSBoaWdoZXIgd29ybGQgaXMgYWx3YXlzIGZsb3dpbmctIGEgCm1hbmlmZXN0YXRpb24gb2YgdGhlIGxpZmXvv70tc3RyZWFtIGlzc3VpbmcgZnJvbSB0aGUgU2Vjb25kIEFzcGVjdCBvZiB0aGUgU29sYXIgCkxvZ29zIC0gd2hpY2ggd2UgY2FsbCB0aGUgcHJpbWFyeSBmb3JjZS4gVGhhdCBmb3JjZSBpcyBzZXZlbmZvbGQgaW4gaXRzIG5hdHVyZSwgCmFuZCBhbGwgaXRzIGZvcm1zIG9wZXJhdGUgaW4gZWFjaCBvZiB0aGVzZSBjZW50cmVzLCBhbHRob3VnaCBvbmUgb2YgdGhlbSBpbiBlYWNoIApjYXNlIHVzdWFsbHkgcHJlZG9taW5hdGVzIG92ZXIgdGhlIG90aGVycy4gV2l0aO+/vW91dCB0aGlzIGlucnVzaCBvZiBlbmVyZ3kgdGhlIApwaHlzaWNhbCBib2R5IGNvdWxkIG5vdCBleGlzdC4gVGhlcmVmb3JlIHRoZSBjZW50cmVzIGFyZSBpbiBvcGVyYXRpb24gaW4gZXZlcnkgCm9uZSwgYWx0aG91Z2ggaW4gdGhlIHVuZGV2ZWxvcGVkIHBlcnNvbiB0aGV5IGFyZSB1c3VhbGx5IGluIGNvbXBhcmF0aXZlbHkgCnNsdWdnaXNoIG1vdGlvbiwganVzdCBmb3JtaW5nIHRoZSBuZWNlc3Nhcnkgdm9ydGV4IGZvciB0aGUgZm9yY2UsIGFuZCBubyBtb3JlLiAKSW4gYSBtb3JlIGV2b2x2ZWQgbWFuIHRoZXkgbWF5IGJlIGdsb3dpbmcgYW5kIHB1bHNhdGluZyB3aXRoIGxpdmluZyBsaWdodCwgc28gCnRoYXQgYW4gZW5vcm1vdXNseSBncmVhdGVyIGFtb3VudCBvZiBlbmVyZ3kgcGFzc2VzIHRocm91Z2ggdGhlbSwgd2l0aCB0aGUgcmVzdWx0IAp0aGF0IHRoZXJlIGFyZSBhZGRpdGlvbmFsIGZhY3VsdGllcyBhbmQgcG9zc2liaWxpdGllcyBvcGVuIHRvIHRoZSBtYW4uwqAKCgrCoAoKCsKgCgoKwqAKCgpUSEUgRk9STSBPRiBUSEUgClZPUlRJQ0VTwqAKCgpUaGlzIGRpdmluZSBlbmVyZ3kgd2hpY2ggcG91cnMgaW50byBlYWNoIGNlbnRyZSBmcm9tIHdpdGhvdXQgCnNldHMgdXAgYXQgcmlnaHQgYW5nbGVzIHRvIGl0c2VsZiAodGhhdCBpcyB0byBzYXksIGluIHRoZSBzdXJmYWNlIG9mIHRoZSBldGhlcmljIApkb3VibGUpIHNlY29uZGFyeSBmb3JjZXMgaW4gdW5kdWxhdG9yeSBjaXJjdWxhciBtb3Rpb24sIGp1c3QgYXMgYmFyLW1hZ25ldCAKdGhydXN0IGludG8gYW4gaW5kdWN0aW9uIGNvaWwgcHJvZHVjZXMgYSBjdXJyZW50IG9mIGVsZWN0cmljaXR5IHdoaWNoIGZsb3dzIApyb3VuZCB0aGUgY29pbCBhdCByaWdodCBhbmdsZXMgdG8gdGhlIGF4aXMgb3IgZGlyZWN0aW9uIG9mIHRoZSBtYWduZXQuwqAgVGhlIApwcmltYXJ5IGZvcmNlIGl0c2VsZiwgaGF2aW5nIGVudGVyZWQgdGhlIHZvcnRleCwgcmFkaWF0ZXMgZnJvbSBpdCBhZ2FpbiBhdCByaWdodCAKYW5nbGVzLCBidXQgaW4gc3RyYWlnaHQgbGluZXMsIGFzIHRob3VnaCB0aGUgY2VudHJlIG9mIHRoZSB2b3J0ZXggd2VyZSB0aGUgaHViIApvZiBhIHdoZWVsLCBhbmQgdGhlIHJhZGlhdGlvbnMgb2YgdGhlIHByaW1hcnkgZm9yY2UgaXRzIHNwb2tlcy4gQnkgbWVhbnMgb2YgCnRoZXNlIHNwb2tlcyB0aGUgZm9yY2Ugc2VlbXMgdG8gYmluZCB0aGUgYXN0cmFsIGFuZCBldGhlcmljIGJvZGllcyB0b2dldGhlciBhcyAKdGhvdWdoIHdpdGggZ3JhcHBsaW5nLWhvb2tzLiBUaGUgbnVtYmVyIG9mIHRoZXNlIHNwb2tlcyBkaWZmZXJzIGluIHRoZSBkaWZmZXJlbnQgCmZvcmNlLWNlbnRyZXMsIGFuZCBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2Ygd2F2ZXMgb3IgcGV0YWxzIHdoaWNoIGVhY2ggb2YgdGhlbSAKZXhoaWJpdHMuIEJlY2F1c2Ugb2YgdGhpcyB0aGVzZSBjZW50cmVzIGhhdmUgb2Z0ZW4gYmVlbiBwb2V0aWNhbGx5IGRlc2NyaWJlZCBpbiAKT3JpZW50YWwgYm9va3MgYXMgcmVzZW3vv71ibGluZyBmbG93ZXJzLsKgCgoKRW5nbGlzaCBOYW1lCgoKU2Fuc2tyaXQgTmFtZQoKClNpdHVhdGlvbgoKClJvb3Qgb3IgQmFzaWMgQ2hha3JhCgoKTXVsYWRoYXJhCgoKQXQgdGhlIGJhc2Ugb2YgdGhlIHNwaW5lCgoKU3BsZWVuIG9yIFNwbGVuaWMgQ2hha3JhCgoKKgoKCk92ZXIgdGhlIHNwbGVlbgoKCk5hdmVsIG9yIFVtYmlsaWNhbCBDaGFrcmEKCgpNYW5pcHVyYQoKCkF0IHRoZSBuYXZlbCwgb3ZlciB0aGUgc29sYXIgcGxleHVzCgoKSGVhcnQgb3IgQ2FyZGlhYyBDaGFrcmEKCgpBbmFoYXRhCgoKT3ZlciB0aGUgaGVhcnQKCgpUaHJvYXQgb3IgTGFyeW5nZWFsIENoYWtyYQoKClZpc2h1ZGRoYQoKCkF0IHRoZSBmcm9udCBvZiB0aGUgdGhyb2F0CgoKQnJvdyBvciBmcm9udGFsIENoYWtyYQoKCkFqbmEKCgpJbiB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgZXllIGJyb3dzCgoKQ3Jvd24gb3IgQ29yb25hbCBDaGFrcmEKCgpTYWhhc3JhcmEKCgpPbiB0aGUgdG9wIG9mIHRoZSBoZWFkCgoKVEFCTEUgMcKgCgoKRWFjaCBvZiB0aGUgc2Vjb25kYXJ5IGZvcmNlcyB3aGljaCBzd2VlcCByb3VuZCB0aGUgCnNhdWNlci1saWtlIGRlcHJlc3Npb24gaGFzIGl0cyBvd24gY2hhcmFjdGVyaXN0aWMgd2F2ZS1sZW5ndGgsIGp1c3QgYXMgaGFzIGxpZ2h0IApvZiBhIGNlcnRhaW4gY29sb3VyOyBidXQgaW5zdGVhZCBvZiBtb3ZpbmcgaW4gYSBzdHJhaWdodCBsaW5lIGFzIGxpZ2h0IGRvZXMsIGl0IAptb3ZlcyBhbG9uZyByZWxhdGl2ZWx5IGxhcmdlIHVuZHVsYXRpb25zIG9mIHZhcmlvdXMgc2l6ZXMsIGVhY2ggb2Ygd2hpY2ggaXMgc29tZSAKbXVsdGlwbGUgb2YgdGhlIHNtYWxsZXIgd2F2ZS1sZW5ndGhzIHdpdGhpbiBpdC4gVGhlIG51bWJlciBvZiB1bmR1bGF0aW9ucyBpcyAKZGV0ZXJtaW5lZCBieSB0aGUgbnVtYmVyIG9mIHNwb2tlcyBpbiB0aGUgd2hlZWwsIGFuZCB0aGUgc2Vjb25kYXJ5IGZvcmNlIHdlYXZlcyAKaXRzZWxmIHVuZGVyIGFuZCBvdmVyIHRoZSByYWRpYXRpbmcgY3VycmVudHMgb2YgdGhlIHByaW1hcnkgZm9yY2UsIGp1c3QgYXMgCmJhc2tldC13b3JrIG1pZ2h0IGJlIHdvdmVuIHJvdW5kIHRoZSBzcG9rZXMgb2YgYSBjYXJyaWFnZS13aGVlbC4gVGhlIAp3YXZlLWxlbmd0aHMgYXJlIGluZmluaXRlc2ltYWwsIGFuZCBwcm9iYWJseSB0aG91c2FuZHMgb2YgdGhlbSBhcmUgaW5jbHVkZWQgCndpdGhpbiBvbmUgb2YgdGhlIHVuZHVsYXRpb25zLiBBcyB0aGUgZm9yY2VzIHJ1c2ggcm91bmQgaW4gdGhlIHZvcnRleCwgdGhlc2UgCm9zY2lsbGF0aW9ucyBvZiBkaWZmZXJlbnQgc2l6ZXMsIGNyb3NzaW5nIG9uZSBhbm90aGVyIGluIHRoaXMgYmFza2V0LXdvcmsgCmZhc2hpb24sIHByb2R1Y2UgdGhlIGZsb3dlci1saWtlIGZvcm0gdG8gd2hpY2ggSSBoYXZlIHJlZmVycmVkLiBJdCBpcywgcGVyaGFwcywgCnN0aWxsIG1vcmUgbGlrZSB0aGUgYXBwZWFyYW5jZSBvZiBjZXJ0YWluIHNhdWNlcnMgb3Igc2hhbGxvdyB2YXNlcyBvZiB3YXZ5IAppcmlkZXNjZW50IGdsYXNzLCBzdWNoIGFzIGFyZSBtYWRlIGluIFZlbmljZS4gQWxsIG9mIHRoZXNlIHVuZHVsYXRpb25zIG9yIHBldGFscyAKaGF2ZSB0aGF0IHNoaW1tZXJpbmcgcGF2b25pbmUgZWZmZWN0LCBsaWtlIG1vdGhlci1vZi1wZWFybCwgeWV0IGVhY2ggb2YgdGhlbSBoYXMgCnVzdWFsbHkgaXRzIG93biBwcmVkb21pbmFudCBjb2xvdXIsIGFzIHdpbGwgYmUgc2VlbiBmcm9tIG91ciBpbGx1c3RyYXRpb25zLiBUaGlzIApuYWNyZW91cyBzaWx2ZXJ5IGFzcGVjdCBpcyBsaWtlbmVkIGluIFNhbnNrcml0IHdvcmtzIHRvIHRoZSBnbGVhbSBvZiBtb29ubGlnaHQgCm9uIHdhdGVyLsKgCgoKVEhFIElMTFVTVFJBVElPTlPCoAoKClRoZXNlIGlsbHVzdHJhdGlvbnMgb2Ygb3VycyBzaG93IHRoZSBjaGFrcmFzIGFzIHNlZW4gYnkgCmNsYWlydm95YW50IHNpZ2h0IGluIGEgZmFpcmx5IGV2b2x2ZWQgYW5kIGludGVs77+9bGlnZW50IHBlcnNvbiwgd2hvIGhhcyBhbHJlYWR5IApicm91Z2h0IHRoZW0gdG8gc29tZSBleHRlbnQgaW50byB3b3JraW5nIG9yZGVyLiBPZiBjb3Vyc2Ugb3VyIGNvbG91cnMgYXJlIG5vdCAKc3VmZmljaWVudGx5IGx1bWlub3VzIC0gbm8gZWFydGhseSBjb2xvdXJzIGNvdWxkIGJlOyBidXQgYXQgbGVhc3QgdGhlIGRyYXdpbmdzIAp3aWxsIGdpdmUgc29tZSBpZGVhIG9mIHRoZSBhY3R1YWwgYXBwZWFyYW5jZSBvZiB0aGVzZSB3aGVlbHMgb2YgbGlnaHQuIEl0IHdpbGwgCmJlIHVuZGVyc3Rvb2QgZnJvbSB3aGF0IGhhcyBhbHJlYWR5IGJlZW4gc2FpZCB0aGF0IHRoZSBjZW50cmVzIHZhcnkgaW4gc2l6ZSBhbmQgCmluIGJyaWdodG5lc3MgaW4gZGlmZmVyZW50IHBlb3BsZSwgYW5kIHRoYXQgZXZlbiBpbiB0aGUgc2FtZSBwZXJzb24gc29tZSBvZiB0aGVtIAptYXkgYmUgbXVjaCBtb3JlIGRldmVsb3BlZCB0aGFuIHRoZSByZXN0LiBUaGV5IGFyZSBkcmF3biBhYm91dCBsaWZlLXNpemUsIGV4Y2VwdCAKZm9yIHRoZSBTYWhhc3JhcmEgb3IgY3Jvd24gY2hha3JhLCB3aGljaCB3ZSBoYXZlIGZvdW5kIGl0IG5lY2Vzc2FyeSB0byBtYWduaWZ5IAppbiBvcmRlciB0byBzaG93IGl0cyBhbWF6aW5nIHdlYWx0aCBvZiBkZXRhaWwuIEluIHRoZSBjYXNlIG9mIGEgbWFuIHdobyBleGNlbHMgCmdyZWF0bHkgaW4gdGhlIHF1YWxpdGllcyB3aGljaCBleHByZXNzIHRoZW1zZWx2ZXMgdGhyb3VnaCBhIGNlcnRhaW4gY2VudHJlLCB0aGF0IApjZW50cmUgd2lsbCBiZSBub3Qgb25seSBtdWNoIGVubGFyZ2VkIGJ1dCBhbHNvIGVzcGVjaWFsbHkgcmFkaWFudCwgdGhyb3dpbmcgb3V0IApicmlsbGlhbnQgZ29sZGVuIHJheXMuIEFuIGV4YW1wbGUgb2YgdGhhdCBtYXkgYmUgc2VlbiBpbiBNYWRhbWUgQmxhdmF0c2t577+9cyAKcHJlY2lwaXRhdGlvbiBvZiB0aGUgYXVyYSBvZiBNci4gU3RhaW50b24gTW9zZXMsIHdoaWNoIGlzIG5vdyBrZXB0IGluIGEgY2FiaW5ldCAKaW4gdGhlIGFyY2hpdmVzIG9mIHRoZSBTb2NpZXR5IGF0IEFkeWFyLiBJdCBpcyByZXByb2R1Y2VkLCB0aG91Z2ggdmVyeSAKaW1wZXJmZWN0bHksIG9uIHBhZ2UgMzY0IG9mIFZvbHVtZSBJIG9mIENvbG9uZWwgT2xjb3R077+9cyBPbGQgRGlhcnkgTGVhdmVzLgoKClRoZXNlIGNoYWtyYXMgbmF0dXJhbGx5IGRpdmlkZSBpbnRvIHRocmVlIGdyb3VwcywgdGhlIGxvd2VyLCAKdGhlIG1pZGRsZSBhbmQgdGhlIGhpZ2hlcjsgdGhleSBtaWdodCBiZSBjYWxsZWQgcmVzcGVjdGl2ZWx5IHRoZSBwaHlzaW9sb2dpY2FsLCAKdGhlIHBlcnNvbmFsIGFuZCB0aGUgc3Bpcml0dWFsLgoKClRoZSBmaXJzdCBhbmQgc2Vjb25kIGNoYWtyYXMsIGhhdmluZyBidXQgZmV3IHNwb2tlcyBvciAKcGV0YWxzLCBhcmUgcHJpbmNpcGFsbHkgY29uY2VybmVkIHdpdGggcmVjZWl277+9aW5nIGludG8gdGhlIGJvZHkgdHdvIGZvcmNlcyB3aGljaCAKY29tZSBpbnRvIGl0IGF0IHRoYXQgcGh5c2ljYWwgbGV2ZWwgLSBvbmUgYmVpbmcgdGhlIHNlcnBlbnQtZmlyZSBmcm9tIHRoZSBlYXJ0aCAKYW5kIHRoZSBvdGhlciB0aGUgdml0YWxpdHkgZnJvbSB0aGUgc3VuLiBUaGUgY2VudHJlcyBvZiB0aGUgbWlkZGxlIGdyb3VwLCAKbnVtYmVyZWQgMywgNCBhbmQgNSwgYXJlIGVuZ2FnZWQgd2l0aCB0aGUgZm9yY2VzIHdoaWNoIHJlYWNoIG1hbiB0aHJvdWdoIGhpcyAKcGVyc29uYWxpdHkgLSB0aHJvdWdoIHRoZSBsb3dlciBhc3RyYWwgaW4gdGhlIGNhc2Ugb2YgY2VudHJlIDMsIHRoZSBoaWdoZXIgCmFzdHJhbCBpbiBjZW50cmUgNCwgYW5kIGZyb20gdGhlIGxvd2VyIG1pbmQgaW4gY2VudHJlIDUuIEFsbCB0aGVzZSBjZW50cmVzIHNlZW0gCnRvIGZlZWQgY2VydGFpbiBnYW5nbGlhIGluIHRoZSBib2R5LiBDZW50cmVzIDYgYW5kIDcgc3RhbmQgYXBhcnQgZnJvbSB0aGUgcmVzdCwgCmJlaW5nIGNvbm5lY3RlZCB3aXRoIHRoZSBwaXR1aXRhcnkgYm9keSBhbmQgdGhlIHBpbmVhbCBnbGFuZCByZXNwZWN0aXZlbHksIGFuZCAKY29taW5nIGludG8gYWN0aW9uIG9ubHkgd2hlbiBhIGNlcnRhaW4gYW1vdW50IG9mIHNwaXJpdHVhbCBkZXZlbG9wbWVudCBoYXMgdGFrZW4gCnBsYWNlLgoKCkkgaGF2ZSBoZWFyZCBpdCBzdWdnZXN0ZWQgdGhhdCBlYWNoIG9mIHRoZSBkaWZmZXJlbnQgcGV0YWxzIApvZiB0aGVzZSBmb3JjZS1jZW50cmVzIHJlcHJlc2VudHMgYSBtb3JhbCBxdWFsaXR5LCBhbmQgdGhhdCB0aGUgZGV2ZWxvcG1lbnQgb2YgCnRoYXQgcXVhbGl0eSBicmluZ3MgdGhlIGNlbnRyZSBpbnRvIGFjdGl2aXR5LiBGb3IgZXhhbXBsZSwgaW4gVGhlIApEaHlhbmEtYmluZHUgVXBhbmlzaGFkIHRoZSBwZXRhbHMgb2YgdGhlIGhlYXJ0IGNoYWtyYSBhcmUgYXNzb2NpYXRlZCB3aXRoIApkZXZvdGlvbiwgbGF6aW5lc3MsIGFuZ2VyLCBjaGFyaXR5IGFuZCBzaW1pbGFyIHF1YWxpdGllcy4gSSBoYXZlIG5vdCB5ZXQgbWV0IAp3aXRoIGFueSBmYWN0cyB3aGljaCBkZWZpbml0ZWx5IGNvbmZpcm0gdGhpcywgYW5kIGl0IGlzIG5vdCBlYXN5IHRvIHNlZSBleGFjdGx5IApob3cgaXQgY2FuIGJlLCBiZWNhdXNlIHRoZSBhcHBlYXJhbmNlIGlzIHByb2R1Y2VkIGJ5IGNlcnRhaW4gcmVhZGlseSAKcmVjb2duaXphYmxlIGZvcmNlcywgYW5kIHRoZSBwZXRhbHMgaW4gYW55IHBhcnRpY3VsYXIgY2VudHJlIGFyZSBlaXRoZXIgYWN0aXZlIApvciBub3QgYWN0aXZlIGFjY29yZGluZyBhcyB0aGVzZSBmb3JjZXMgaGF2ZSBvciBoYXZlIG5vdCBiZWVuIGFyb3VzZWQsIGFuZCB0aGVpciAKdW5mb2xkbWVudCBzZWVtcyB0byBoYXZlIG5vIG1vcmUgZGlyZWN0IGNvbm5lY3Rpb24gd2l0aCBtb3JhbGl0eSB0aGFuIGhhcyB0aGUgCmVubGFyZ2VtZW50IG9mIHRoZSBiaWNlcHMuIEkgaGF2ZSBjZXJ0YWlubHkgbWV0IHdpdGggcGVyc29ucyBpbiB3aG9tIHNvbWUgb2YgdGhlIApjZW50cmVzIHdlcmUgaW4gZnVsbCBhY3Rpdml0eSwgdGhvdWdoIHRoZSBtb3JhbCBhZHZhbmNlbWVudCB3YXMgYnkgbm8gbWVhbnMgCmV4Y2VwdGlvbmFsbHkgaGlnaCwgd2hlcmVhcyBpbiBvdGhlciBwZXJzb25zIG9mIGhpZ2ggc3Bpcml0dWFsaXR5IGFuZCB0aGUgCm5vYmxlc3QgcG9zc2libGUgbW9yYWxpdHkgdGhlIGNlbnRyZXMgd2VyZSBzY2FyY2VseSB5ZXQgdml0YWxpemVkIGF0IGFsbDsgc28gCnRoYXQgdGhlcmUgZG9lcyBub3Qgc2VlbSB0byBiZSBhbnkgbmVjZXNzYXJ5IGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgdHdvIApkZXZlbG9wbWVudHMuCgoKVGhlcmUgYXJlLCBob3dldmVyLCBjZXJ0YWluIGZhY3RzIG9ic2VydmFibGUgd2hpY2ggbWF5IGJlIHRoZSAKYmFzaXMgb2YgdGhpcyByYXRoZXIgY3VyaW91cyBpZGVhLiBBbHRob3VnaCB0aGUgbGlrZW5lc3MgdG8gcGV0YWxzIGlzIGNhdXNlZCBieSAKdGhlIHNhbWUgZm9yY2VzIGZsb3dpbmcgcm91bmQgYW5kIHJvdW5kIHRoZSBjZW50cmUsIGFsdGVybmF0ZWx5IG92ZXIgYW5kIHVuZGVyIAp0aGUgdmFyaW91cyBzcG9rZXMsIHRob3NlIHNwb2tlcyBkaWZmZXIgaW4gY2hhcmFjdGVyLCBiZWNhdXNlIHRoZSBpbnJ1c2hpbmcgCmZvcmNlIGlzIHN1YmRpdmlkZWQgaW50byBpdHMgY29tcG9uZW50IHBhcnRzIG9yIHF1YWxpdGllcywgYW5kIHRoZXJlZm9yZSBlYWNoIApzcG9rZSByYWRpYXRlcyBhIHNwZWNpYWxpemVkIGluZmx1ZW5jZSBvZiBpdHMgb3duLCBldmVuIHRob3VnaCB0aGUgdmFyaWF0aW9ucyBiZSAKc2xpZ2h0LiBUaGUgc2Vjb25kYXJ5IGZvcmNlLCBpbiBwYXNzaW5nIGVhY2ggc3Bva2UsIGlzIHRvIHNvbWUgZXh0ZW50IG1vZGlmaWVkIApieSBpdHMgaW5mbHVlbmNlLCBhbmQgdGhlcmVmb3JlIGNoYW5nZXMgYSBsaXR0bGUgaW4gaXRzIGh1ZS4gU29tZSBvZiB0aGVzZSAKc2hhZGVzIG9mIGNvbG91ciBtYXkgaW5kaWNhdGUgYSBmb3JtIG9mIHRoZSBmb3JjZSB3aGljaCBpcyBoZWxwZnVsIHRvIHRoZSBncm93dGggCm9mIHNvbWUgbW9yYWwgcXVhbGl0eSwgYW5kIHdoZW4gdGhhdCBxdWFsaXR5IGlzIHN0cmVuZ++/vXRoZW5lZCBpdHMgY29ycmVzcG9uZGluZyAKdmlicmF0aW9uIHdpbGwgYmUgbW9yZSBwcm/vv71ub3VuY2VkLiBUaHVzIHRoZSBkZWVwZW5pbmcgb3Igd2Vha2VuaW5nIG9mIHRoZSB0aW50IAptaWdodCBiZSB0YWtlbiB0byBiZXRva2VuIHRoZSBwb3NzZXNzaW9uIG9mIG1vcmUgb3IgbGVzcyBvZiB0aGF0IGF0dHJpYnV0ZS7CoAoKClRIRSBST09UIENIQUtSQcKgCgoKVGhlIGZpcnN0IGNlbnRyZSwgdGhlIGJhc2ljIChQbGF0ZSBJKSwgYXQgdGhlIGJhc2Ugb2YgdGhlIApzcGluZSwgaGFzIGEgcHJpbWFyeSBmb3JjZSB3aGljaCByYWRpYXRlcyBvdXQgaW4gZm91ciBzcG9rZXMsIGFuZCB0aGVyZWZvcmUgCmFycmFuZ2VzIGl0cyB1bmR1bGF0aW9ucyBzbyBhcyB0byBnaXZlIHRoZSBlZmZlY3Qgb2YgaXRzIGJlaW5nIGRpdmlkZWQgaW50byAKcXVhZHJhbnRzLCBhbHRlcm5hdGVseSByZWQgYW5kIG9yYW5nZSBpbiBodWUsIHdpdGggaG9sbG93cyBiZXR3ZWVuIHRoZW0uIFRoaXMgCm1ha2VzIGl0IHNlZW0gYXMgdGhvdWdoIG1hcmtlZCB3aXRoIHRoZSBzaWduIG9mIHRoZSBjcm9zcywgYW5kIGZvciB0aGF0IHJlYXNvbiAKdGhlIGNyb3NzIGlzIG9mdGVuIHVzZWQgdG8gc3ltYm9saXplIHRoaXMgY2VudHJlLCBhbmQgc29tZXRpbWVzIGEgZmxhbWluZyBjcm9zcyAKaXMgdGFrZW4gdG8gaW5kaWNhdGUgdGhlIHNlcnBlbnQtZmlyZSB3aGljaCByZXNpZGVzIGluIGl0LiBXaGVuIGFjdGluZyB3aXRoIGFueSAKdmlnb3VyIHRoaXMgY2hha3JhIGlzIGZpZXJ5IG9yYW5nZS1yZWQgaW4gY29sb3VyLCBjb3JyZXNwb25kaW5nIGNsb3NlbHkgd2l0aCB0aGUgCnR5cGUgb2Ygdml0YWxpdHkgd2hpY2ggaXMgc2VudCBkb3duIHRvIGl0IGZyb20gdGhlIHNwbGVuaWMgY2VudHJlLiBJbmRlZWQsIGl0IAp3aWxsIGJlIG5vdGljZWQgdGhhdCBpbiB0aGUgY2FzZSBvZiBldmVyeSBvbmUgb2YgdGhlIGNoYWtyYXMgYSBzaW1pbGFyIApjb3Lvv71yZXNwb25kZW5jZSB3aXRoIHRoZSBjb2xvdXIgb2YgaXRzIHZpdGFsaXR5IG1heSBiZSBzZWVuLsKgCgoKVEhFIFNQTEVFTiBDSEFLUkHCoAoKClRoZSBzZWNvbmQgY2VudHJlLCB0aGUgc3BsZW5pYyAoUGxhdGUgSUkpLCBhdCB0aGUgc3BsZWVuLCBpcyAKZGV2b3RlZCB0byB0aGUgc3BlY2lhbGl6YXRpb24sIHN1YmRpdmlzaW9uIGFuZCBkaXNwZXJzaW9uIG9mIHRoZSB2aXRhbGl0eSB3aGljaCAKY29tZXMgdG8gdXMgZnJvbSB0aGUgc3VuLiBUaGF0IHZpdGFsaXR5IGlzIHBvdXJlZCBvdXQgYWdhaW4gZnJvbSBpdCBpbiBzaXggCmhvcml6b250YWwgc3RyZWFtcywgdGhlIHNldmVudGggdmFyaWV0eSBiZWluZyBkcmF3biBpbnRvIHRoZSBodWIgb2YgdGhlIHdoZWVsLiAKVGhpcyBjZW50cmUgdGhlcmVmb3JlIGhhcyBzaXggcGV0YWxzIG9yIHVuZHVsYXRpb25zLCBhbGwgb2YgZGlmZmVyZW50IGNvbG91cnMsIAphbmQgaXMgc3BlY2lhbGx5IHJhZGlhbnQsIGdsb3dpbmcgYW5kIHN1bmxpa2UuIEVhY2ggb2YgdGhlIHNpeCBkaXZpc2lvbnMgb2YgdGhlIAp3aGVlbCBzaG93cyBwcmVkb21pbmFudGx5IHRoZSBjb2xvdXIgb2Ygb25lIG9mIHRoZSBmb3JtcyBvZiB0aGUgdml0YWwgZm9yY2UgCi1yZWQsIG9yYW5nZSwgeWVsbG93LCBncmVlbiwgYmx1ZSBhbmQgdmlvbGV0LsKgCgoKVEhFIE5BVkVMIENIQUtSQcKgCgoKVGhlIHRoaXJkIGNlbnRyZSwgdGhlIHVtYmlsaWNhbCAoUGxhdGUgSVYpLCBhdCB0aGUgbmF2ZWwgb3IgCnNvbGFyIHBsZXh1cywgcmVjZWl2ZXMgYSBwcmltYXJ5IGZvcmNlIHdpdGggdGVuIHJhZGlhdGlvbnMsIHNvIGl0IHZpYnJhdGVzIGluIApzdWNoIGEgbWFubmVyIGFzIHRvIGRpdmlkZSBpdHNlbGYgaW50byB0ZW4gdW5kdWxhdGlvbnMgb3IgcGV0YWxzLiBJdCBpcyB2ZXJ5IApjbG9zZWx5IGFzc29jaWF0ZWQgd2l0aCBmZWVsaW5ncyBhbmQgZW1vdGlvbnMgb2YgdmFyaW91cyBraW5kcy4gSXRzIHByZWRvbWluYW50IApjb2xvdXIgaXMgYSBjdXJpb3VzIGJsZW5kaW5nIG9mIHNldmVyYWwgc2hhZGVzIG9mIHJlZCwgdGhvdWdoIHRoZXJlIGlzIGFsc28gYSAKZ3JlYXQgZGVhbCBvZiBncmVlbiBpbiBpdC4gVGhlIGRpdmlzaW9ucyBhcmUgYWx0ZXJuYXRlbHkgY2hpZWZseSByZWQgYW5kIGNoaWVmbHkgCmdyZWVuLsKgCgoKVEhFIEhFQVJUIENIQUtSQcKgCgoKVGhlIGZvdXJ0aCBjZW50cmUsIHRoZSBjYXJkaWFjIChQbGF0ZSBWKSwgYXQgdGhlIGhlYXJ0LCBpcyBvZiAKYSBnbG93aW5nIGdvbGRlbiBjb2xvdXIsIGFuZCBlYWNoIG9mIGl0cyBxdWFkcmFudHMgaXMgZGl2aWRlZCBpbnRvIHRocmVlIHBhcnRzLCAKd2hpY2ggZ2l2ZXMgaXQgdHdlbHZlIHVuZHVsYXRpb25zLCBiZWNhdXNlIGl0cyBwcmltYXJ5IGZvcmNlIG1ha2VzIGZvciBpdCB0d2VsdmUgCnNwb2tlcy7CoAoKClRIRSBUSFJPQVQgQ0hBS1JBwqAKCgpUaGUgZmlmdGggY2VudHJlLCB0aGUgbGFyeW5nZWFsIChQbGF0ZSBWSUkpLCBhdCB0aGUgdGhyb2F0LCAKaGFzIHNpeHRlZW4gc3Bva2VzLCBhbmQgdGhlcmVmb3JlIHNpeHRlZW4gYXBwYXJlbnQgZGl2aXNpb25zLiBUaGVyZSBpcyBhIGdvb2QgCmRlYWwgb2YgYmx1ZSBpbiBpdCwgYnV0IGl0cyBnZW5lcmFsIGVmZmVjdCBpcyBzaWx2ZXJ5IGFuZCBnbGVhbWluZywgd2l0aCBhIGtpbmQgCm9mIHN1Z2dlc3Rpb24gYXMgb2YgbW9vbmxpZ2h0IHVwb24gcmlwcGxpbmcgd2F0ZXIuIEJsdWUgYW5kIGdyZWVuIHByZWRvbWluYXRlIAphbHRlcm5hdGVseSBpbiBpdHMgc2VjdGlvbnMuwqAKCgpUSEUgQlJPVyBDSEFLUkHCoAoKClRoZSBzaXh0aCBjZW50cmUsIHRoZSBmcm9udGFsIChQbGF0ZSBJWCksIGJldHdlZW4gdGhlIApleWVicm93cywgaGFzIHRoZSBhcHBlYXJhbmNlIG9mIGJlaW5nIGRpdmlkZWQgaW50byBoYWx2ZXMsIG9uZSBjaGllZmx5IApyb3NlLWNvbG91cmVkLCB0aG91Z2ggd2l0aCBhIGdyZWF0IGRlYWwgb2YgeWVsbG93IGFib3V0IGl0LCBhbmQgdGhlIG90aGVyIApwcmVkb21p77+9bmFudGx5IGEga2luZCBvZiBwdXJwbGlzaC1ibHVlLCBhZ2FpbiBjbG9zZWx5IGFncmVlaW5nIHdpdGggdGhlIGNvbG91cnMgCm9mIHRoZSBzcGVjaWFsIHR5cGVzIG9mIHZpdGFsaXR5IHRoYXQgdml2aWZ5IGl0LiBQZXJoYXBzIGl0IGlzIGZvciB0aGlzIHJlYXNvbiAKdGhhdCB0aGlzIGNlbnRyZSBpcyBtZW50aW9uZWQgaW4gSW5kaWFuIGJvb2tzIGFzIGhhdmluZyBvbmx5IHR3byBwZXRhbHMsIHRob3VnaCAKaWYgd2UgYXJlIHRvIGNvdW50IHVuZHVsYXRpb25zIG9mIHRoZSBzYW1lIGNoYXJhY3RlciBhcyB0aG9zZSBvZiB0aGUgcHJldmlvdXMgCmNlbnRyZXMgd2Ugc2hhbGwgZmluZCB0aGF0IGVhY2ggaGFsZiBpcyBzdWJkaXZpZGVkIGludG8gZm9ydHktZWlnaHQgb2YgdGhlc2UsIAptYWtpbmcgbmluZXR5LXNpeCBpbiBhbGwsIGJlY2F1c2UgaXRzIHByaW1hcnkgZm9yY2UgaGFzIHRoYXQgbnVtYmVyIG9mIApyYWRpYXRpb25zLgoKClRoaXMgc3VkZGVuIGxlYXAgZm9ybSAxNiB0byA5NiBzcG9rZXMsIGFuZCBhZ2FpbiB0aGUgZXZlbiAKbW9yZSBzdGFydGxpbmcgdmFyaWF0aW9uIGZyb20gOTYgdG8gOTcywqAgYmV0d2VlbiB0aGlzIGFuZCB0aGUgbmV4dCBjaGFrcmEsIHNob3cgCnVzIHRoYXQgd2UgYXJlIG5vdyBkZWFsaW5nIHdpdGggY2VudHJlcyBvZiBhbiBhbHRvZ2V0aGVyIGRpZmZlcmVudCBvcmRlciBmcm9tIAp0aG9zZSB3aGljaCB3ZSBoYXZlIGhpdGhlcnRvIGJlZW4gY29uc2lkZXLvv71pbmcuIFdlIGRvIG5vdCB5ZXQga25vdyBhbGwgdGhlIApmYWN0b3JzIHdoaWNoIGRldGVy77+9bWluZSB0aGUgbnVtYmVyIG9mIHNwb2tlcyBpbiBhIGNoYWtyYSwgYnV0IGl0IGlzIGFscmVhZHkgCmV2aWRlbnQgdGhhdCB0aGV5IHJlcHJlc2VudCBzaGFkZXMgb2YgdmFyaWF0aW9uIGluIHRoZSBwcmltYXJ5IGZvcmNlLiBCZWZvcmUgd2UgCmNhbiBzYXkgbXVjaCBtb3JlIHRoYW4gdGhpcywgaHVuZHJlZHMgb2Ygb2JzZXJ2YXRpb25zIGFuZCBjb21wYXJpc29ucyBtdXN0IGJlIAptYWRlIC0gbWFkZSwgcmVwZWF0ZWQgYW5kIHZlcmlmaWVkIG92ZXIgYW5kIG92ZXIgYWdhaW4uIEJ1dCBtZWFudGltZSB0aGlzIG11Y2ggCmlzIGNsZWFyIC0gdGhhdCB3aGlsZSB0aGUgbmVlZCBvZiB0aGUgcGVyc29uYWxpdHkgY2FuIGJlIHNhdGlzZmllZCBieSBhIGxpbWl0ZWQgCm51bWJlciBvZiB0eXBlcyBvZiBmb3JjZSwgd2hlbiB3ZSBjb21lIHRvIHRoZSBoaWdoZXIgYW5kIG1vcmUgcGVybWFuZW50IApwcmluY2lwbGVzIG9mIG1hbiB3ZSBlbmNvdW50ZXIgYSBjb21wbGV4aXR5LCBhIG11bHRpcGxpY2l0eSwgd2hpY2ggZGVtYW5kcyBmb3IgCml0cyBleHByZXNzaW9uIGEgdmFzdGx5IGdyZWF0ZXIgc2VsZWN0aW9uIG9mIG1vZGlmaWNhdGlvbnMgb2YgdGhlIGVuZXJneS7CoAoKClRIRSBDUk9XTiBDSEFLUkHCoAoKClRoZSBzZXZlbnRoIGNlbnRyZSwgdGhlIGNvcm9uYWwgKHNlZSBmcm9udGlzcGllY2UpLCBhdCAKdGhlIHRvcCBvZiB0aGUgaGVhZCwgaXMgd2hlbiBzdGlycmVkIGludG8gZnVsbCBhY3Rpdml0eSB0aGUgbW9zdCByZXNwbGVuZGVudCBvZiAKYWxsLCBmdWxsIG9mIGluZGVzY3JpYmFibGUgY2hyb21hdGljLCBlZmZlY3RzIGFuZCB2aWJyYXRpbmcgd2l0aCBhbG1vc3QgCmluY29u77+9Y2VpdmFibGUgcmFwaWRpdHkuIEl0IHNlZW1zIHRvIGNvbnRhaW4gYWxsIHNvcnRzIG9mIHByaXNtYXRpYyBodWVzLCBidXQgaXMgCm9uIHRoZSB3aG9sZSBwcmVkb21pbmFudGx5IHZpb2xldC4gSXQgaXMgZGVzY3JpYmVkIGluIEluZGlhbiBib29rcyBhcyB0aG91c2FuZC1wZXRhbGxlZCwgCmFuZCByZWFsbHkgdGhpcyBpcyBub3QgdmVyeSBmYXIgZnJvbSB0aGUgdHJ1dGgsIHRoZSBudW1iZXIgb2YgdGhlIHJhZGlhdGlvbnMgb2YgCml0cyBwcmltYXJ5IGZvcmNlIGluIHRoZSBvdXRlciBjaXJjbGUgYmVpbmcgbmluZSBodW5kcmVkIGFuZCBzaXh0eS4gRXZlcnkgbGluZSAKb2YgdGhpcyB3aWxsIGJlIHNlZW4gZmFpdGhmdWxseSByZXByb2R1Y2VkIGluIG91ciBmcm9udGlzcGllY2UsIHRob3VnaCBpdCBpcyAKaGFyZGx5IHBvc3NpYmxlIHRvIGdpdmUgdGhlIGVmZmVjdCBvZiB0aGUgc2VwYXJhdGUgcGV0YWxzLiBJbiBhZGRpdGlvbiB0byB0aGlzIAppdCBoYXMgYSBmZWF0dXJlIHdoaWNoIGlzIHBvc3Nlc3NlZCBieSBub25lIG9mIHRoZSBvdGhlciBjaGFrcmFzIC0gYSBzb3J0IG9mIApzdWJzaWRpYXJ5IGNlbnRyYWwgd2hpcmxwb29sIG9mIGdsZWFtaW5nIHdoaXRlIGZsdXNoZWQgd2l0aCBnb2xkIGluIGl0cyBoZWFydCAtIAphIG1pbm9yIGFjdGl2aXR5IHdoaWNoIGhhcyB0d2VsdmUgdW5kdWxhdGlvbnMgb2YgaXRzIG93bi4KCgpUaGlzIGNoYWtyYSBpcyB1c3VhbGx5IHRoZSBsYXN0IHRvIGJlIGF3YWtlbmVkLiBJbiB0aGUgCmJlZ2lubmluZyBpdCBpcyB0aGUgc2FtZSBzaXplIGFzIHRoZSBvdGhlcnMsIGJ1dCBhcyB0aGUgbWFuIHByb2dyZXNzZXMgb24gdGhlIApQYXRoIG9mIHNwaXJpdHVhbCBhZHZhbmNl77+9bWVudCBpdCBpbmNyZWFzZXMgc3RlYWRpbHkgdW50aWwgaXQgY292ZXJzIGFsbW9zdCB0aGUgCndob2xlIHRvcCBvZiB0aGUgaGVhZC4gQW5vdGhlciBwZWN1bGlhcml0eSBhdHRlbmRzIGl0cyBkZXZlbG9wbWVudC4gSXQgaXMgYXQgCmZpcnN0IGEgZGVwcmVzc2lvbiBpbiB0aGUgZXRoZXJpYyBib2R5LCBhcyBhcmUgYWxsIHRoZSBvdGhlciwgYmVjYXVzZSB0aHJvdWdoIAppdCwgYXMgdGhyb3VnaCB0aGVtLCB0aGUgZGl2aW5lIGZvcmNlIGZsb3dzIGluIGZyb20gd2l0aG91dDsgYnV0IHdoZW4gdGhlIG1hbiAKcmVhbGl6ZXMgaGlzIHBvc2l0aW9uIGFzIGEga2luZyBvZiB0aGUgZGl2aW5lIGxpZ2h0LCBkaXNwZW5zaW5nIGxhcmdlc3NlIHRvIGFsbCAKYXJvdW5kIGhpbSwgdGhpcyBjaGFrcmEgcmV2ZXJzZXMgaXRzZWxmLCB0dXJuaW5nIGFzIGl0IHdlcmUgaW5zaWRlIG91dDsgaXQgaXMgbm8gCmxvbmdlciBhIGNoYW5uZWwgb2YgcmVjZXB0aW9uIGJ1dCBvZiByYWRpYXRpb24sIG5vIGxvbmdlciBhIGRlcHJlc3Npb24gYnV0IGEgCnByb21p77+9bmVuY2UsIHN0YW5kaW5nIG91dCBmcm9tIHRoZSBoZWFkIGFzIGEgZG9tZSwgYSB2ZXJpdGFibGUgY3Jvd24gb2YgZ2xvcnkuCgoKSW4gT3JpZW50YWwgcGljdHVyZXMgYW5kIHN0YXR1ZXMgb2YgdGhlIGRlaXRpZXMgb3IgZ3JlYXQgbWVuIAp0aGlzIHByb21pbmVuY2UgaXMgb2Z0ZW4gc2hvd24uIEluIEZpZy4gMiBpdCBhcHBlYXJzIG9uIHRoZSBoZWFkIG9mIGEgc3RhdHVlIG9mIAp0aGUgTG9yZCBCdWRkaGEgYXQgQm9yb2J1ZHVyIGluIEphdmEuIFRoaXMgaXMgdGhlIGNvbnZlbnRpb25hbCBtZXRob2Qgb2YgCnJlcHJlc2VudGluZyBpdCwgYW5kIGluIHRoaXMgZm9ybSBpdCBpcyB0byBiZSBmb3VuZCB1cG9uIHRoZSBoZWFkcyBvZiB0aG91c2FuZHMgCm9mIGltYWdlcyBvZiB0aGUgTG9yZCBCdWRkaGEgYWxsIG92ZXIgdGhlIEVhc3Rlcm4gd29ybGQuIEluIG1hbnkgY2FzZXMgaXQgd2lsbCAKYmUgc2VlbiB0aGF0IHRoZSB0d28gdGllcnMgb2YgdGhlIFNhaGFzcmFyYSBjaGFrcmEgYXJlIGNvcGllZCAtIHRoZSBsYXJnZXIgZG9tZSAKb2YgOTYwIHBldGFscyBmaXJzdCwgYW5kIHRoZW4gdGhlIHNtYWxsZXIgZG9tZSBvZiAxMiByaXNpbmcgb3V0IG9mIHRoYXQgaW4gdHVybi4gClRoZSBoZWFkIG9uIHRoZSByaWdodCBpcyB0aGF0IG9mIEJyYWhtYSBmcm9tIHRoZSBIb2trZS1kbyBvZiBUb2RhaS1qaSwgYXQgTmFyYSAKaW4gSmFwYW4gKGRhdGluZyBmcm9tIEEuRC4gNzQ5KTsgYW5kIGl0IHdpbGwgYmUgc2VlbiB0aGF0IHRoZSBzdGF0dWUgaXMgd2VhcmluZyAKYSBoZWFkLWRyZXNzIGZhc2hpb25lZCB0byByZXByZXNlbnQgdGhpcyBjaGFrcmEsIHRob3VnaCBpbiBhIGZvcm0gc29tZXdoYXQgCmRpZmZlcmVudCBmcm9tIHRoZSBsYXN0LCBzaG93aW5nIHRoZSBjb3JvbmV0IG9mIGZsYW1lcyBzaG9vdGluZ8KgIHVwIGZyb20gaXQuwqAKCgrCoAoKCkl0IGFwcGVhcnMgYWxzbyBpbiB0aGUgQ2hyaXN0aWFuIHN5bWJvbG9neSwgaW4gdGhlIGNyb3ducyAKd29ybiBieSB0aGUgZm91ci1hbmQtdHdlbnR5IGVsZGVycyB3aG8gYXJlIGZvciBldmVyIGNhc3RpbmcgdGhlbSBkb3duIGJlZm9yZSB0aGUgCnRocm9uZSBvZiBHb2QuIEluIHRoZSBoaWdobHkgZGV2ZWxvcGVkIG1hbiB0aGlzIGNvcm9uYWwgY2hha3JhIHBvdXJzIG91dCAKc3BsZW5kb3VyIGFuZCBnbG9yeSB3aGljaCBtYWtlcyBmb3IgaGltIGEgdmVyaXRhYmxlIGNyb3duOyBhbmQgdGhlIG1lYW5pbmcgb2YgCnRoYXQgcGFzc2FnZSBvZiBTY3JpcHR1cmUgaXMgdGhhdCBhbGwgdGhhdCBoZSBoYXMgZ2FpbmVkLCBhbGwgdGhlIG1hZ25pZmljZW50IAprYXJtYSB0aGF0IGhlIG1ha2VzLCBhbGwgdGhlIHdvbmRyb3VzIHNwaXJpdHVhbCBmb3JjZSB0aGF0IGhlIGdlbmVyYXRlcyAtIGFsbCAKdGhhdCBoZSBjYXN0cyBwZXJwZXR1YWxseSBhdCB0aGUgZmVldCBvZiB0aGUgTG9jb3MgdG8gYmUgdXNlZCBpbiBoaXMgd29yay4gClNvLCBvdmVyIGFuZCBvdmVyIGFnYWluLCBjYW4gaGUgY29udGludWUgdG8gY2FzdCBkb3duIGhpcyBnb2xkZW4gY3Jvd24sIGJlY2F1c2UgCml0IGNvbnRpbnVhbGx5IHJlLWZvcm1zIGFzIHRoZSBmb3JjZSB3ZWxscyB1cCBmcm9tIHdpdGhpbiBoaW0uwqAKCgpPVEhFUiBBQ0NPVU5UUyBPRiBUSEUgCkNFTlRSRVPCoAoKClRoZXNlIHNldmVuIGZvcmNlLWNlbnRyZXMgYXJlIGZyZXF1ZW50bHkgZGVzY3JpYmVkIGluIApTYW5za3JpdCBsaXRlcmF0dXJlLCBpbiBzb21lIG9mIHRoZSBtaW5vciBVcGFuaXNoYWRzLCBpbiB0aGUgUHVyYW5hcyBhbmQgaW4gClRhbnRyaWMgd29ya3MuIFRoZXkgYXJlIHVzZWQgdG9kYXkgYnkgbWFueSBJbmRpYW4geW9naXMuIEEgZnJpZW5kIGFjcXVhaW50ZWQgCndpdGggdGhlIGlubmVyIGxpZmUgb2YgSW5kaWEgYXNzdXJlcyBtZSB0aGF0IGhlIGtub3dzIG9mIG9uZSBzY2hvb2wgaW4gdGhhdCAKY291bnRyeSB3aGljaCBtYWtlcyBmcmVlIHVzZSBvZiB0aGUgY2hha3JhcyAtIGEgc2Nob29sIHdoaWNoIG51bWJlcnMgYXMgaXRzIApwdXBpbHMgYWJvdXQgc2l4dGVlbiB0aG91c2FuZCBwZW9wbGUgc2NhdHRlcmVkIG92ZXIgYSBsYXJnZSBhcmVhLiBUaGVyZSBpcyBtdWNoIAppbnRlcmVzdGluZyBpbmZvcm1hdGlvbiBhdmFpbGFibGUgb24gdGhlIHN1YmplY3QgZnJvbSBIaW5kdSBzb3VyY2VzLCB3aGljaCB3ZSAKd2lsbCB0cnkgdG8gc3VtbWFyaXplIHdpdGggY29tbWVudHMgaW4gYSBsYXRlciBjaGFwdGVyLgoKCkl0IGFwcGVhcnMgYWxzbyB0aGF0IGNlcnRhaW4gRXVyb3BlYW4gbXlzdGljcyB3ZXJlIGFjcXVhaW50ZWQgCndpdGggdGhlIGNoYWtyYXMuIEV2aWRlbmNlIG9mIHRoaXMgb2NjdXJzIGluIGEgYm9vayBlbnRpdGxlZCBUaGVvc29waGlhIApQcmFjdGljYSBieSB0aGUgd2VsbC1rbm93biBHZXJtYW4gbXlzdGljIEpvaGFubiBHZW9yZyBHaWNodGVsLCBhIHB1cGlsIG9mIApKYWNvYiBCb2VobWUsIHdobyBwcm9iYWJseSBiZWxvbmdlZCB0byB0aGUgc2VjcmV0IHNvY2lldHkgb2YgdGhlIFJvc2ljcnVjaWFucy4gCkl0IGlzIGZyb20gdGhpcyB3b3JrIG9mIEdpY2h0ZWzvv71zIHRoYXQgb3VyIFBsYXRlIElJSSBpcyByZXByb2R1Y2VkIGJ5IHRoZSBraW5kIApwZXJtaXNzaW9uIG9mIHRoZSBwdWJsaXNoZXJzLiBUaGlzIGJvb2sgd2FzIG9yaWdpbmFsbHkgaXNzdWVkIGluIHRoZSB5ZWFyIDE2OTYsIAp0aG91Z2ggaW4gdGhlIGVkaXRpb24gb2YgMTczNiBpdCBpcyBzYWlkIHRoYXQgdGhlIHBpY3R1cmVzLCBvZiB3aGljaCB0aGUgdm9sdW1lIAppcyBtYWlubHkgYSBkZXNjcmlwdGlvbiwgd2VyZSBwcmludGVkIG9ubHkgc29tZSB0ZW4geWVhcnMgYWZ0ZXIgdGhlIGRlYXRoIG9mIHRoZSAKYXV0aG9yLCB3aGljaCB0b29rIHBsYWNlIGluIDE3MTAuIFRoZSBib29rIG11c3QgYmUgZGlzdGluZ3Vpc2hlZCBmcm9tIGEgCmNvbGxlY3Rpb24gb2YgR2ljaHRlbO+/vXMgY29ycmVzcG9uZGVuY2UgcHV0IGZvcnRoIHVuZGVyIHRoZSBzYW1lIHRpdGxlIApUaGVvc29waGlhIFByYWN0aWNhOyB0aGUgcHJlc2VudCB2b2x1bWUgaXMgbm90IGluIHRoZSBmb3JtIG9mIGxldHRlcnMsIGJ1dCAKY29uc2lzdHMgb2Ygc2l4IGNoYXB0ZXJzIGRlYWxpbmcgd2l0aCB0aGUgc3ViamVjdCBvZiB0aGF0IG15c3RpYyByZWdlbmVyYXRpb24gCndoaWNoIHdhcyBzdWNoIGFuIGltcG9ydGFudCB0ZW5ldCBvZiB0aGUgUm9zaWNydWNpYW5zLgoKClRoZSBpbGx1c3RyYXRpb24gd2hpY2ggd2UgZ2l2ZSBoZXJlIGhhcyBiZWVuIHBob3RvZ3JhcGhlZCAKZnJvbSB0aGUgRnJlbmNoIHRyYW5zbGF0aW9uIG9mIHRoZSBUaGVvc29waGlhIFByYWN0aWNhLCBwdWJsaXNoZWQgaW4gMTg5NyAKaW4gdGhlIEJpYmxpb3RoZXF1ZSBSb3NpY3J1Y2llbm5lIChOby4gNCkgYnkgdGhlIEJpYmxpb3RoZXF1ZSBDaGFjb3JuYWMsIFBhcmlzLgoKCkdpY2h0ZWwsIHdobyB3YXMgYm9ybiBpbiAxNjM4LCBhdCBSYXRpc2JvbiBpbiBCYXZhcmlhLCAKc3R1ZGllZCB0aGVvbG9neSBhbmQgbGF3IGFuZCBwcmFjdGlzZWQgYXMgYW4gYWR2b2NhdGU7IGJ1dCBhZnRlcndhcmRzLCBiZWNvbWluZyAKY29uc2Npb3VzIG9mIGEgc3Bpcml0dWFsIHdvcmxkIHdpdGhpbiwgZ2F2ZSB1cCBhbGwgd29ybGRseSBpbnRlcmVzdHMgYW5kIGJlY2FtZSAKdGhlIGZvdW5kZXIgb2YgYSBteXN0aWNhbCBDaHJpc3RpYW4gbW92Ze+/vW1lbnQuIEJlaW5nIG9wcG9zZWQgdG8gdGhlIGlnbm9yYW50IApvcnRob2RveHkgb2YgaGlzIHRpbWUsIGhlIGRyZXcgZG93biB1cG9uIGhpbXNlbGYgdGhlIGhhdHJlZCBvZiB0aG9zZSB3aG9tIGhlIGhhZCAKYXR0YWNrZWQsIGFuZCBhYm91dCAxNjcwIGhlIHdhcyBjb25zZXF1ZW50bHkgYmFuaXNoZWQsIGFuZCBoaXMgcHJvcGVydHkgCmNvbmZpc2NhdGVkLiBIZSBmaW5hbGx5IGZvdW5kIHJlZnVnZSBpbiBIb2xsYW5kLCB3aGVyZSBoZSBsaXZlZCBmb3IgdGhlIApyZW1haW5pbmcgZm9ydHkgeWVhcnMgb2YgaGlzIGxpZmUuCgoKSGUgZXZpZGVudGx5IGNvbnNpZGVyZWQgdGhlIGZpZ3VyZXMgcHJpbnRlZCBpbiBoaXMgClRoZW9zb3BoaWEgUHJhY3RpY2EgYXMgYmVpbmcgb2YgYSBzZWNyZXQgbmF0dXJlOyBhcHBhcmVudGx5IHRoZXkgd2VyZSBrZXB0IAp3aXRoaW4gdGhlIHNtYWxsIGNpcmNsZSBvZiBoaXMgZGlzY2lwbGVzIGZvciBxdWl0ZSBhIG51bWJlciBvZiB5ZWFycy4gVGhleSB3ZXJlLCAKaGUgc2F5cywgdGhlIHJlc3VsdCBvZiBhbiBpbm5lciBpbGx1bWluYXRpb24gLSBwcmVzdW1hYmx5IG9mIHdoYXQgaW4gb3VyIG1vZGVybiAKdGltZXMgd2Ugc2hvdWxkIGNhbGwgY2xhaXJ2b3lhbnQgZmFjdWx0aWVzLiBPbiB0aGUgdGl0bGUtcGFnZSBvZiBoaXMgYm9vayBoZSAKc2F5cyB0aGF0IGl0IGlzLCDvv71BIHNob3J0IGV4cG9zaXRpb24gb2YgdGhlIHRocmVlIHByaW5jaXBsZXMgb2YgdGhlIHRocmVlIHdvcmxkcyAKaW4gbWFuLCByZXByZXNlbnRlZCBpbiBjbGVhciBwaWN0dXJlcywgc2hvd2luZyBob3cgYW5kIHdoZXJlIHRoZXkgaGF2ZSB0aGVpciAKcmVzcGVjdGl2ZSBDZW50cmVzIGluIHRoZSBpbm5lciBtYW47IGFjY29yZGluZyB0byB3aGF0IHRoZSBhdXRob3IgaGFzIGZvdW5kIGluIApoaW1zZWxmIGluIGRpdmluZSBjb250ZW1wbGF0aW9uLCBhbmQgd2hhdCBoZSBoYXMgZmVsdCwgdGFzdGVkIGFuZCBwZXJjZWl2ZWTvv70uCgoKTGlrZSBtb3N0IG15c3RpY3Mgb2YgaGlzIGRheSwgaG93ZXZlciwgR2ljaHRlbCBsYWNrcyB0aGUgCmV4YWN0aXR1ZGUgd2hpY2ggc2hvdWxkIGNoYXJhY3Rlcml6ZSB0cnVlIG9jY3VsdGlzbSBhbmQgbXlzdGljaXNtOyBpbiBoaXMgCmRlc2NyaXB0aW9uIG9mIHRoZSBmaWd1cmVzIGhlIGFsbG93cyBoaW1zZWxmIGxlbmd0aHksIHRob3VnaCBvZnRlbnRpbWVzIHF1aXRlIAppbnRlcmVzdGluZyBkaWdyZXNzaW9ucyBvbiB0aGUgZGlmZmljdWx0aWVzIGFuZCBwcm9ibGVtcyBvZiB0aGUgc3Bpcml0dWFsIGxpZmUuIApBcyBhbiBleHBvc2l0aW9uIG9mIGhpcyBpbGx1c3RyYXRpb25zLCBob3dldmVyLCBoaXMgYm9vayBpcyBub3QgYSBzdWNjZXNzLsKgIApQZXJoYXBzIGhlIGRpZCBub3QgZGFyZSB0byBzYXkgdG9vIG11Y2g7IG9yIGhlIG1heSBoYXZlIHdpc2hlZCB0byBpbmR1Y2UgaGlzIApyZWFkZXJzIHRvIGxlYXJuIHRvIHNlZSBmb3IgdGhlbXNlbHZlcyB0aGF0IG9mIHdoaWNoIGhlIHdhcyB3cml0aW5nLiBJdCBzZWVtcyAKbGlrZWx5IHRoYXQgYnkgdGhlIHRydWx5IHNwaXJpdHVhbCBsaWZlIHdoaWNoIGhlIGxlZCBoZSBoYWQgZGV2ZWxvcGVkIHN1ZmZpY2llbnQgCmNsYWlydm95YW5jZSB0byBzZWUgdGhlc2UgY2hha3JhcywgYnV0IHRoYXQgaGUgd2FzIHVuYXdhcmUgb2YgdGhlaXIgdHJ1ZSAKY2hhcmFjdGVyIGFuZCB1c2UsIHNvIHRoYXQgaW4gaGlzIGF0dGVtcHRzIHRvIGV4cGxhaW4gdGhlaXIgbWVhbmluZywgaGUgYXR0YWNoZWQgCnRvIHRoZW0gdGhlIGN1cnJlbnQgc3ltYm9saXNtIG9mIHRoZSBteXN0aWMgc2Nob29sIHRvIHdoaWNoIGxpZSBiZWxvbmdlZC4KCgpIZSBpcyBoZXJlIGRlYWxpbmcsIGFzIHdpbGwgYmUgc2Vlbiwgd2l0aCB0aGUgbmF0dXJhbCBlYXJ0aGx5IAptYW4gaW4gYSBzdGF0ZSBvZiBkYXJrbmVzcywgc28gaGUgaGFzIHBlcmhhcHMgc29tZSBleGN1c2UgZm9yIGJlaW5nIGEgbGl0dGxlIApwZXNzaW1pc3RpYyBhYm91dCBoaXMgY2hha3Jhcy4gSGUgbGV0cyB0aGUgZmlyc3QgYW5kIHNlY29uZCBwYXNzIHdpdGhvdXQgY29tbWVudCAKKHBvc3NpYmx5IGtub3dpbmcgdGhhdCB0aGV5IGFyZSBjaGllZmx5IGNvbmNlcm5lZCB3aXRoIHBoeXNpb2xvZ2ljYWwgcHJvY2Vzc2VzKSwgCmJ1dCBsYWJlbHMgdGhlIHNvbGFyIHBsZXh1cyBhcyB0aGUgaG9tZSBvZiBhbmdlciAtIGFzIGluZGVlZCBpdCBpcy4gSGUgc2VlcyB0aGUgCmhlYXJ0LWNlbnRyZSBhcyBmaWxsZWQgd2l0aCBzZWxmLWxvdmUsIHRoZSB0aHJvYXQgd2l0aCBlbnZ5IGFuZCBhdmFyaWNlOyBhbmQgdGhlIApoaWdoZXIgY2VudHJlcyBvZiB0aGUgaGVhZCByYWRpYXRlIG5vdGhpbmcgYmV0dGVyIHRoYW4gcHJpZGUuCgoKSGUgYWxzbyBhc3NpZ25zIHBsYW5ldHMgdG8gdGhlIGNoYWtyYXMsIGdpdmluZyB0aGUgTW9vbiB0byAKdGhlIGJhc2ljLCBNZXJjdXJ5IHRvIHRoZSBzcGxlbmljLCBWZW51cyB0byB0aGUgdW1iaWxpY2FsLCB0aGUgU3VuIHRvIHRoZSBoZWFydCAKKHRob3VnaCBpdCB3aWxsIGJlIG5vdGVkIHRoYXQgYSBzbmFrZSBpcyBjb2lsZWQgcm91bmQgaXQpLCBNYXJzIHRvIHRoZSAKbGFyeW5nZWFsLCBKdXBpdGVyIHRvIHRoZSBmcm9udGFsLCBhbmQgU2F0dXJuIHRvIHRoZSBjb3JvbmFsLiBIZSBpbmZvcm1zIHVzIApmdXJ0aGVyIHRoYXQgZmlyZSByZXNpZGVzIGluIHRoZSBoZWFydCwgd2F0ZXIgaW4gdGhlIGxpdmVyLCBlYXJ0aCBpbiB0aGUgbHVuZ3MsIAphbmQgYWlyIGluIHRoZSBibGFkZGVyLgoKCkl0IGlzIG5vdGV3b3J0aHkgdGhhdCBoZSBkcmF3cyBhIHNwaXJhbCwgc3RhcnRpbmcgZnJvbSB0aGUgCnNuYWtlIHJvdW5kIHRoZSBoZWFydCBhbmQgcGFzc2luZyB0aHJvdWdoIGFsbCB0aGUgY2VudHJlcyBpbiB0dXJuOyBidXQgdGhlcmUgCnNlZW1zIG5vIHZlcnkgZGVmaW5pdGUgcmVhc29uIGZvciB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBsaW5lIHRvdWNoZXMgdGhlbS4gVGhlIApzeW1ib2xpc20gb2YgdGhlIHJ1bm5pbmcgZG9nIGlzIG5vdCBleHBsYWluZWQsIHNvIHdlIGFyZSBsZWZ0IGF0IGxpYmVydHkgdG8gCmludGVycHJldCBpdCBhcyB3ZSB3aWxsLsKgCgoKwqAKCgrCoFRIRSBST09UIENIQUtSQcKgCgoKwqDCoAoKClRIRSBTUExFRU4gQ0hBS1JBwqAKCgrCoAoKClRIRSBOQVZFTCBDSEFLUkEKCgrCoMKgCgoKVEhFIEhFQVJUIENIQUtSQcKgwqAKCgrCoAoKClRIRSBUSFJPQVQgQ0hBS1JBwqAKCgrCoAoKClRIRSBCUk9XIENIQUtSQcKgCgoKwqBUSEUgQ0hBS1JBUyBBQ0NPUkRJTkcgVE8gR0lDSFRFTMKgCgoKwqAKCgrCoFRIRSBTVFJFQU1TIE9GIFZJVEFMSVRZwqAKCgpUaGUgYXV0aG9yIGdpdmVzIHVzIGxhdGVyIGFuIGlsbHVzdHJhdGlvbiBvZiB0aGUgbWFuIApyZWdlbmVyYXRlZCBieSB0aGUgQ2hyaXN0LCB3aG8gaGFzIGVudGlyZWx5IGNydXNoZWQgdGhlIHNlcnBlbnQsIGJ1dCBoYXMgCnJlcGxhY2VkIHRoZSBTdW4gYnkgdGhlIFNhY3JlZCBIZWFydCwgZHJpcHBpbmcgZ29yZSBtb3N0IGdydWVzb21lbHkuCgoKVGhlIGludGVyZXN0IG9mIHRoZSBwaWN0dXJlIHRvIHVzLCBob3dldmVyLCBpcyBub3QgaW4gdGhlIAphdXRob3Lvv71zIGludGVycHJldGF0aW9ucywgYnV0IGluIHRoZSBmYWN0IHRoYXQgaXQgc2hvd3MgYmV5b25kIHRoZSBwb3NzaWJpbGl0eSAKb2YgbWlzdGFrZSB0aGF0IGF0IGxlYXN0IHNvbWUgb2YgdGhlIG15c3RpY3Mgb2YgdGhlIHNldmVudGVlbnRoIGNlbnR1cnkga25ldyBvZiAKdGhlIGV4aXN0ZW5jZSBhbmQgcG9zaXRpb24gb2YgdGhlIHNldmVuIGNlbnRyZXMgaW4gdGhlIGh1bWFuIGJvZHkuCgoKRnVydGhlciBldmlkZW5jZSBvZiBlYXJseSBrbm93bGVkZ2UgYWJvdXQgdGhlc2UgZm9yY2UtY2VudHJlcyAKZXhpc3RzIGluIHRoZSByaXR1YWxzIG9mIEZyZWVtYXNvbnJ5LCB0aGUgc2FsaWVudCBwb2ludHMgb2Ygd2hpY2ggY29tZSBkb3duIHRvIAp1cyBmcm9tIHRpbWUgaW1tZW1vcmlhbDsgdGhlIG1vbnVtZW50cyBzaG93IHRoYXQgdGhlc2UgcG9pbnRzIHdlcmUga25vd24gYW5kIApwcmFjdGlzZWQgaW4gYW5jaWVudCBFZ3lwdCwgYW5kIHRoZXkgaGF2ZSBiZWVuIGhhbmRlZCBkb3duIGZhaXRoZnVsbHkgdG8gdGhlIApwcmVzZW50IGRheS4gTWFzb25zIGZpbmQgdGhlbSBhbW9uZyB0aGVpciBzZWNyZXRzLCBhbmQgYnkgdXRpbGl6aW5nIHRoZW0gCmFjdHVhbGx5IHN0aW11bGF0ZSBjZXJ0YWluIG9mIHRoZXNlIGNlbnRyZXMgZm9yIHRoZSBvY2Nhc2lvbiBhbmQgdGhlIHB1cnBvc2Ugb2YgCnRoZWlyIHdvcmssIHRob3VnaCB0aGV5IGdlbmVyYWxseSBrbm93IGxpdHRsZSBvciBub3RoaW5nIG9mIHdoYXQgaXMgaGFw77+9cGVuaW5nIApiZXlvbmQgdGhlIHJhbmdlIG9mIG5vcm1hbCBzaWdodC4gT2J2aW91c2x5IGV4cGxhbmF0aW9ucyBhcmUgaW1wb3NzaWJsZSBoZXJlLCAKYnV0IEkgaGF2ZSBtZW50aW9uZWQgYXMgbXVjaCBvZiB0aGUgbWF0dGVyIGFzIGlzIHBlcm1pc3NpYmxlIGluIFRoZSBIaWRkZW4gCkxpZmUgaW4gRnJlZW1hc29ucnkuCgrCoAoKCkNIQVBURVIgSUnCoAoKClRIRSBGT1JDRVPCoAoKClRIRSBQUklNQVJZIE9SIExJRkUgCkZPUkNFCgoKwqBUSEUgRGVpdHkgc2VuZHMgZm9ydGggCmZyb20gSGltc2VsZiB2YXJpb3VzIGZvcm1zIG9mIGVuZXJneTsgdGhlcmUgbWF5IHdlbGwgYmUgaHVuZHJlZHMgb2Ygd2hpY2ggd2UgCmtub3cgbm90aGluZzsgYnV0IHNvbWUgZmV3IG9mIHRoZW0gaGF2ZSBiZWVuIG9ic2VydmVkLiBFYWNoIG9mIHRob3NlIHNlZW4gaGFzIAppdHMgYXBwcm9wcmlhdGUgbWFuaWZlc3RhdGlvbiBhdCBldmVyeSBsZXZlbCB3aGljaCBvdXIgc3R1ZGVudHMgaGF2ZSB5ZXQgCnJlYWNoZWQ7IGJ1dCBmb3IgdGhlIG1vbWVudCBsZXQgdXMgdGhpbmsgb2YgdGhlbSBhcyB0aGV5IHNob3cgdGhlbXNlbHZlcyBpbiB0aGUgCnBoeXNpY2FsIHdvcmxkLiBPbmUgb2YgdGhlbSBleGhpYml0cyBpdHNlbGYgYXMgZWxlY3RyaWNpdHksIGFub3RoZXIgYXMgdGhlIApzZXJwZW50LWZpcmUsIGFub3RoZXIgYXMgdml0YWxpdHksIGFuZCB5ZXQgYW5vdGhlciBhcyB0aGUgbGlmZS1mb3JjZSwgd2hpY2ggaXMgCnF1aXRlIGEgZGlmZmVyZW50IHRoaW5nIGZyb20gdml0YWxpdHksIGFzIHdpbGwgcHJlc2VudGx5IGJlIHNlZW4uCgoKUGF0aWVudCBhbmQgbG9uZy1jb250aW51ZWQgZWZmb3J0IGlzIG5lZWRlZCBieSB0aGUgc3R1ZGVudCAKd2hvIHdvdWxkIHRyYWNlIHRoZXNlIGZvcmNlcyB0byB0aGVpciBvcmlnaW4gYW5kIHJlbGF0ZSB0aGVtIHRvIG9uZSBhbm90aGVyLiBBdCAKdGhlIHRpbWUgd2hlbiBJIGNvbGxlY3RlZCBpbnRvIHRoZSBib29rIFRoZSBIaWRkZW4gU2lkZSBvZiBUaGluZ3MgdGhlIAphbnN3ZXJzIHRvIHF1ZXN0aW9ucyB3aGljaCBoYWQgYmVlbiBhc2tlZCBkdXJpbmcgcHJldmlvdXMgeWVhcnMgYXQgdGhlIHJvb2YgCm1lZXRpbmdzIGF0IEFkeWFyLCBJIGtuZXcgb2YgdGhlIG1hbmlmZXN0YXRpb24gb24gdGhlIHBoeXNpY2FsIHBsYW5lIG9mIHRoZSAKbGlmZS1mb3JjZSwgb2Yga3VuZGFsaW5pIGFuZCBvZiB2aXRhbGl0eSwgYnV0IG5vdCB5ZXQgb2YgdGhlaXIgcmVsYXRpb24gdG8gdGhlIApUaHJlZSBPdXRwb3VyaW5ncywgc28gdGhhdCBJIGRlc2NyaWJlZCB0aGVtIGFzIGVudGlyZWx5IGRpZmZlcmVudCBhbmQgc2VwYXJhdGUgCmZyb20gdGhlbS4gRnVydGhlciByZXNlYXJjaCBoYXMgZW5hYmxlZCBtZSB0byBmaWxsIHRoZSBnYXAsIGFuZCBJIGFtIGdsYWQgbm93IHRvIApoYXZlIHRoZSBvcHBvcnR1bml0eSBvZiBjb3JyZWN0aW5nIHRoZSBtaXMtc3RhdGVtZW50IHdoaWNoIEkgdGhlbiBtYWRlLgoKClRoZXJlIGFyZSB0aHJlZSBwcmluY2lwYWwgZm9yY2VzIGZsb3dpbmcgdGhyb3VnaCB0aGUgY2hha3JhcywgCmFuZCB3ZSBtYXkgY29uc2lkZXIgdGhlbSBhcyByZXByZXNlbnRhdGl2ZSBvZiB0aGUgdGhyZWUgYXNwZWN0cyBvZiB0aGUgTG9nb3MuIApUaGUgZW5lcmd5IHdoaWNoIHdlIGZpbmQgcnVzaGluZyBpbnRvIHRoZSBiZWxsLWxpa2UgbW91dGggb2YgdGhlIGNoYWtyYSwgYW5kIApzZXR0aW5nIHVwIGluIHJlbGF0aW9uIHRvIGl0c2VsZiBhIHNlY29uZGFyeSBjaXJjdWxhciBmb3JjZSwgaXMgb25lIG9mIHRoZSAKZXhwcmVzc2lvbnMgb2YgdGhlIFNlY29uZCBPdXTvv71wb3VyaW5nLCBmcm9tIHRoZSBTZWNvbmQgQXNwZWN0IG9mIHRoZSBMb2dvcyAtIAp0aGF0IHN0cmVhbSBvZiBsaWZlIHdoaWNoIGlzIHNlbnQgb3V0IGJ5IGhpbSBpbnRvIHRoZSBtYXR0ZXIgYWxyZWFkeSB2aXRhbGl6ZWQgCmJ5IHRoZSBhY3Rpb24gb2YgdGhlIFRoaXJkIEFzcGVjdCBvZiB0aGUgTG9nb3MgaW4gdGhlIEZpcnN0IE91dHBvdXJpbmcuIEl0IGlzIAp0aGlzIHdoaWNoIGlzIHN5bWJvbGl6ZWQgd2hlbiBpdCBpcyBzYWlkIGluIENocmlzdGlhbiB0ZWFjaGluZyB0aGF0IHRoZSBDaHJpc3QgCmlzIGluY2FybmF0ZSBvZiAodGhhdCBpcywgdGFrZXMgZm9ybSBmcm9tKSB0aGUgSG9seSBHaG9zdCBhbmQgdGhlIFZpcmdpbiBNYXJ5LgoKClRoYXQgU2Vjb25kIE91dHBvdXJpbmcgaGFzIGxvbmcgYWdvIHN1YmRpdmlkZWQgaXRzZWxmIHRvIGFuIAphbG1vc3QgaW5maW5pdGUgZGVncmVlOyBub3Qgb25seSBoYXMgaXQgc3ViZGl2aWRlZCBpdHNlbGYsIGJ1dCBpdCBoYXMgYWxzbyAKZGlmZmVyZW50aWF0ZWQgaXRzZWxmIC0g77+9dGhhdCBpcyB0byBzYXksIGl0IHNlZW1zIHRvIGhhdmUgZG9uZSBzby4gSW4gcmVhbGl0eSAKdGhpcyBpcyBhbG1vc3QgY2VydGFpbmx5IG9ubHkgdGhlIG1heWEgb3IgaWxsdXNpb24gdGhyb3VnaCB3aGljaCB3ZSBzZWUgCml0IGluIGFjdGlvbi4gSXQgY29tZXMgdGhyb3VnaCBjb3VudGxlc3MgbWlsbGlvbnMgb2YgY2hhbm5lbHMsIHNob3dpbmcgaXRzZWxmIG9uIApldmVyeSBwbGFuZSBhbmQgc3ViLXBsYW5lIG9mIG91ciBzeXN0ZW0sIGFuZCB5ZXQgZnVuZGFtZW50YWxseSBpdCBpcyBvbmUgYW5kIHRoZSAKc2FtZSBmb3JjZSwgaW4gbm8gd2F5IGZvciBhIG1vbWVudCB0byBiZSBjb25mdXNlZCB3aXRoIHRoYXQgRmlyc3QgT3V0cG91cmluZyAKd2hpY2ggbG9uZyBhZ28gbWFudWZhY3R1cmVkIHRoZSBjaGVtaWNhbCBlbGVtZW50cyBmcm9tIHdoaWNoIHRoaXMgU2Vjb25kIApPdXRwb3VyaW5nIHRha2VzIHRoZSBtYXRlcmlhbCBvZiB3aGljaCBpdHMgdmVoaWNsZXMgYXQgYWxsIGxldmVscyBhcmUgYnVpbHQuIEl0IAphcHBlYXJzIGFzIHRob3VnaCBzb21lIG9mIGl0cyBtYW5pZmVzdGF0aW9ucyB3ZXJlIGxvd2VyIG9yIGRlbnNlciwgYmVjYXVzZSBpdCBpcyAKZW1wbG95aW5nIGxvd2VyIGFuZCBkZW5zZXIgbWF0dGVyOyBvbiB0aGUgYnVkZGhpYyBsZXZlbCB3ZSBzZWUgaXQgZGlzcGxheWluZyAKaXRzZWxmIGFzIHRoZSBDaHJpc3QtcHJpbmNpcGxlLCBncmFkdWFsbHkgZXhwYW5kaW5nIGFuZCB1bmZvbGRpbmcgaXRzZWxmIAppbXBlcmNlcHRpYmx5IHdpdGhpbiB0aGUgc291bCBvZiB0aGUgbWFuOyBpbiB0aGUgYXN0cmFsIGFuZCBtZW50YWwgYm9kaWVzIHdlIApwZXJjZWl2ZSB0aGF0IHZhcmlvdXMgbGF5ZXJzIG9mIG1hdHRlciBhcmUgdml2aWZpZWQgYnkgaXQsIHNvIHRoYXQgd2Ugbm90ZSAKZGlmZmVyZW50IGV4aGliaXRpb25zIG9mIGl0IGFwcGVhcmluZyBpbiB0aGUgaGlnaGVyIHBhcnQgb2YgdGhlIGFzdHJhbCBpbiB0aGUgCmd1aXNlIG9mIGEgbm9ibGUgZW1vdGlvbiwgYW5kIGluIHRoZSBsb3dlciBwYXJ0IG9mIHRoZSB2ZXJ5IHNhbWUgdmVoaWNsZSBhcyBhIAptZXJlIHJ1c2ggb2YgbGlmZS1mb3JjZSBlbmVyZ2l6aW5nIHRoZSBtYXR0ZXIgb2YgdGhhdCBib2R5LgoKCldlIGZpbmQgaXQgaW4gaXRzIGxvd2VzdCBlbWJvZGltZW50IGRyYXdpbmcgcm91bmQgaXRzZWxmIGEgCnZlaWwgb2YgZXRoZXJpYyBtYXR0ZXIsIGFuZCBydXNoaW5nIGZyb20gdGhlIGFzdHJhbCBib2R5IGludG8gdGhlIGZsb3dlci1saWtlIApiZWxscyBvZiB0aGVzZSBjaGFrcmFzIG9uIHRoZSBzdXJmYWNlIG9mIHRoZSBldGhlcmljIHBhcnQgb2YgdGhlIHBoeXNpY2FsIGJvZHkuIApIZXJlIGl0IG1lZXRzIGFub3RoZXIgZm9yY2Ugd2VsbGluZyB1cCBmcm9tIHRoZSBpbnRlcmlvciBvZiB0aGUgaHVtYW4gYm9keS10aGUgCm15c3RlcmlvdXMgcG93ZXIgY2FsbGVkIGt1bmRhbGluaSBvciB0aGUgc2VycGVudC1maXJlLsKgCgoKVEhFIFNFUlBFTlQtRklSRcKgCgoKVGhpcyBmb3JjZSBpcyB0aGUgcGh5c2ljYWwtcGxhbmUgbWFuaWZlc3RhdGlvbiBvZiBhbm90aGVyIG9mIAp0aGUgbWFuaWZvbGQgYXNwZWN0cyBvZiB0aGUgcG93ZXIgb2YgdGhlIExvZ29zLCBiZWxvbmdpbmcgdG8gdGhlIEZpcnN0IApPdXRwb3VyaW5nLCB3aGljaCBjb21lcyBmcm9tIHRoZSBUaGlyZCBBc3BlY3QuIEl0IGV4aXN0cyBvbiBhbGwgcGxhbmVzIG9mIHdoaWNoIAp3ZSBrbm93IGFueXRoaW5nOyBidXQgaXQgaXMgdGhlIGV4cHJlc3Npb24gb2YgaXQgaW4gZXRoZXJpYyBtYXR0ZXIgd2l0aCB3aGljaCB3ZSAKaGF2ZSB0byBkbyBhdCBwcmVzZW50LiBJdCBpcyBub3QgY29udmVydGlibGUgaW50byBlaXRoZXIgdGhlIHByaW1hcnkgZm9yY2UgCmFscmVhZHkgbWVudGlvbmVkIG9yIHRoZSBmb3JjZSBvZiB2aXRhbGl0eSB3aGljaCBjb21lcyBmcm9tIHRoZSBzdW4sIGFuZCBpdCBkb2VzIApub3Qgc2VlbSB0byBiZSBhZmZlY3RlZCBpbiBhbnkgd2F5IGJ5IGFueSBvdGhlciBmb3JtcyBvZiBwaHlzaWNhbCBlbmVyZ3kuIEkgaGF2ZSAKc2VlbiBhcyBtdWNoIGFzIGEgbWlsbGlvbiBhbmQgYSBxdWFydGVyIHZvbHRzIG9mIGVsZWN0cmljaXR5IHB1dCBpbnRvIGEgaHVtYW4gCmJvZHksIHNvIHRoYXQgd2hlbiB0aGUgbWFuIGhlbGQgb3V0IGhpcyBhcm0gdG93YXJkcyB0aGUgd2FsbCwgaHVnZSBmbGFtZXMgcnVzaGVkIApvdXQgZnJvbSBoaXMgZmluZ2VycywgeWV0IGhlIGZlbHQgbm90aGluZyB1bu+/vXVzdWFsLCBub3Igd291bGQgaGUgYmUgaW4gdGhlIGxlYXN0IApidXJudCB1bmRlciB0aGVzZSBjaXJjdW1zdGFuY2VzIHVubGVzcyBoZSBhY3R1YWxseSB0b3VjaGVkIHNvbWUgZXh0ZXJuYWwgb2JqZWN0OyAKYnV0IGV2ZW4gdGhpcyBlbm9ybW91cyBkaXNwbGF5IG9mIHBvd2VyIGhhZCBubyBlZmZlY3Qgd2hhdGV2ZXIgdXBvbiB0aGUgCnNlcnBlbnQtZmlyZS4KCgpXZSBoYXZlIGtub3duIGZvciBtYW55IHllYXJzIHRoYXQgdGhlcmUgaXMgZGVlcCBkb3duIGluIHRoZSAKZWFydGggd2hhdCBtYXkgYmUgZGVzY3JpYmVkIGFzIGEgbGFib3JhdG9yeSBvZiB0aGUgVGhpcmQgTG9nb3MuIE9uIGF0dGVtcHRpbmcgdG8gCmludmVzdGlnYXRlIHRoZSBjb25kaXRpb25zIGF0IHRoZSBjZW50cmUgb2YgdGhlIGVhcnRoIHdlIGZpbmQgdGhlcmUgYSB2YXN0IGdsb2JlIApvZiBzdWNoIHRyZW1lbmRvdXMgZm9yY2UgdGhhdCB3ZSBjYW5ub3QgYXBwcm9hY2ggaXQuIFdlIGNhbiB0b3VjaCBvbmx5IGl0cyBvdXRlciAKbGF5ZXJzOyBidXQgaW4gZG9pbmcgZXZlbiB0aGF0IGl0IGJlY29tZXMgZXZpZGVudCB0aGF0IHRoZXkgYXJlLCBpbiBzeW1wYXRoZXRpYyAKcmVsYXRpb24gd2l0aCB0aGUgbGF5ZXJzIG9mIGt1bmRhbGluaSBpbiB0aGUgaHVtYW4gYm9keS4gSW50byB0aGF0IGNlbnRyZSB0aGUgCmZvcmNlIG9mIHRoZSBUaGlyZCBMb2dvcyBtdXN0IGhhdmUgcG91cmVkIGFnZXMgYWdvLCBidXQgaXQgaXMgd29ya2luZyB0aGVyZSAKc3RpbGwuIFRoZXJlIEhlIGlzIGVuZ2FnZWQgaW4gdGhlIGdyYWR1YWwgZGV2ZWxvcG1lbnQgb2YgbmV3IGNoZW1pY2FsIGVsZW1lbnRzLCAKd2hpY2ggc2hvdyBpbmNyZWFzaW5nIGNvbXBsZXhpdHkgb2YgZm9ybSwgYW5kIG1vcmUgYW5kIG1vcmUgZW5lcmdldGljIGludGVybmFsIApsaWZlIG9yIGFjdGl2aXR5LgoKClN0dWRlbnRzIG9mIGNoZW1pc3RyeSBhcmUgZmFtaWxpYXIgd2l0aCB0aGUgUGVyaW9kaWMgVGFibGUgCm9yaWdpbmF0ZWQgYnkgdGhlIFJ1c3NpYW4gY2hlbWlzdCBNZW5kZWxlZmYgaW4gdGhlIGxhdHRlciBwYXJ0IG9mIHRoZSBsYXN0IApjZW50dXJ5LCBpbiB3aGljaCB0aGUga25vd24gY2hlbWljYWwgZWxlbWVudHMgYXJlIGFycmFuZ2VkIGluIHRoZSBvcmRlciBvZiB0aGVpciAKYXRvbWljIHdlaWdodHMsIGJlZ2lubmluZyB3aXRoIHRoZSBsaWdodGVzdCwgaHlkcm9nZW4sIHdoaWNoIGhhcyBhbiBhdG9taWMgCndlaWdodCAxLCBhbmQgZW5kaW5nIHdpdGggdGhlIGhlYXZpZXN0IGF0IHByZXNlbnQga25vd24sIHVyYW5pdW0sIHdoaWNoIGhhcyBhIApyZWxhdGl2ZSB3ZWlnaHQgb2YgMjM4LjUuIEluIG91ciBvd24gaW52ZXN0aWdhdGlvbnMgaW50byB0aGVzZSBtYXR0ZXJzIHdlIGZvdW5kIAp0aGF0IHRoZXNlIGF0b21pYyB3ZWlnaHRzIHdlcmUgYWxtb3N0IGV4YWN0bHkgcHJvcG9ydGlvbmFsIHRvIHRoZSBudW1iZXIgb2YgCnVsdGltYXRlIGF0b21zIGluIGVhY2ggZWxlbWVudDsgd2UgaGF2ZSByZWNvcmRlZCB0aGVzZSBudW1iZXJzIGluIE9jY3VsdCAKQ2hlbWlzdHJ5LCBhbmQgYWxzbyB0aGUgZm9ybSBhbmQgY29tcG9zaXRpb24gb2YgZWFjaCBlbGVtZW50LgoKCkluIG1vc3QgY2FzZXMgdGhlIGZvcm1zIHdoaWNoIHdlIGZvdW5kIHdoZW4gdGhlIGVsZW1lbnRzIHdlcmUgCmV4YW1pbmVkIHdpdGggZXRoZXJpYyBzaWdodCBpbmRpY2F0ZSDvv70tIGFzIGRvZXMgdGhlIFBlcmlvZGljIFRhYmxlIGFsc28gLSB0aGF0IAp0aGUgZWxlbWVudHMgaGF2ZSBiZWVuIGRldmVsb3BlZCBpbiBjeWNsaWMgb3JkZXIsIHRoYXQgdGhleSBkbyBub3QgbGllIG9uIGEgCnN0cmFpZ2h0IGxpbmUsIGJ1dCBvbiBhbiBhc2NlbmRpbmcgc3BpcmFsLiBXZSBoYXZlIGJlZW4gdG9sZCB0aGF0IHRoZSBlbGVtZW50cyAKaHlkcm9nZW4sIG94eWdlbiBhbmQgbml0cm9nZW4gKHdoaWNoIGNvbnN0aXR1dGUgYXBwcm94aW1hdGVseSBoYWxmIHRoZSBjcnVzdCBvZiAKb3VyIGdsb2JlIGFuZCBuZWFybHkgYWxsIGl0cyBhdG1vc3BoZXJlKSBiZWxvbmcgYXQgdGhlIHNhbWUgdGltZSB0byBhbm90aGVyIGFuZCAKZ3JlYXRlciBzb2xhciBzeXN0ZW0sIGJ1dCB3ZSB1bmRlcnN0YW5kIHRoYXQgdGhlIHJlc3Qgb2YgdGhlIGVsZW1lbnRzIGhhdmUgYmVlbiAKZGV2ZWxvcGVkIGJ5IHRoZSBMb2dvcyBvZiBvdXIgc3lzdGVtLiBIZSBpcyBjYXJyeWluZyBvbiBoaXMgc3BpcmFsIGJleW9uZCAKdXJhbml1bSwgdW5kZXIgY29uZGl0aW9ucyBvZiB0ZW1wZXJhdHVyZSBhbmQgcHJlc3N1cmUgd2hpY2ggYXJlIHF1aXRlIAppbmNvbmNlaXZhYmxlIHRvIHVzLiBBbmQgZ3JhZHVhbGx5LCBhcyBuZXcgZWxlbWVudHMgYXJlIGZvcm1lZCwgdGhleSBhcmUgcHVzaGVkIApvdXR3YXJkcyBhbmQgdXB3YXJkcyB0b3dhcmRzIHRoZSBzdXJmYWNlIG9mIHRoZSBlYXJ0aC4KCgpUaGUgZm9yY2Ugb2Yga3VuZGFsaW5pIGluIG91ciBib2RpZXMgY29tZXMgZnJvbSB0aGF0IApsYWJvcmF0b3J5IG9mIHRoZSBIb2x5IEdob3N0IGRlZXAgZG93biBpbiB0aGUgZWFydGguIEl0IGJlbG9uZ3MgdG8gdGhhdCB0ZXJyaWZpYyAKZ2xvd2luZyBmaXJlIG9mIHRoZSB1bmRlcndvcmxkLiBUaGF0IGZpcmUgaXMgaW4gc3RyaWtpbmcgY29udHJhc3QgdG8gdGhlIGZpcmUgb2YgCnZpdGFsaXR5IHdoaWNoIGNvbWVzIGZyb20gdGhlIHN1biwgd2hpY2ggd2lsbCBwcmVzZW50bHkgYmUgZXhwbGFpbmVkLiBUaGUgbGF0dGVyIApiZWxvbmdzIHRvIGFpciBhbmQgbGlnaHQgYW5kIHRoZSBncmVhdCBvcGVuIHNwYWNlczsgYnV0IHRoZSBmaXJlIHdoaWNoIGNvbWVzIApmcm9tIGJlbG93IGlzIG11Y2ggbW9yZSBtYXRlcmlhbCwgbGlrZSB0aGUgZmlyZSBvZiByZWQtaG90IGlyb24sIG9mIGdsb3dpbmcgCm1ldGFsLiBUaGVyZSBpcyBhIHJhdGhlciB0ZXJyaWJsZSBzaWRlIHRvIHRoaXMgdHJlbWVuZG91cyBmb3JjZTsgaXQgZ2l2ZXMgdGhlIAppbXByZXNzaW9uIG9mIGRlc2NlbmRpbmcgZGVlcGVyIGFuZCBkZWVwZXIgaW50byBtYXR0ZXIsIG9mIG1vdmluZyBzbG93bHkgYnV0IAppcnJlc2lzdGlibHkgb253YXJkcywgd2l0aCByZWxlbnRsZXNzIGNlcnRhaW50eS4KCgpUaGUgc2VycGVudC1maXJlIGlzIG5vdCB0aGF0IHBvcnRpb24gb2YgdGhlIGVuZXJneSBvZiB0aGUgClRoaXJkIExvZ29zIHdpdGggd2hpY2ggSGUgaXMgZW5nYWdlZCBpbiBidWlsZO+/vWluZyBkZW5zZXIgYW5kIGRlbnNlciBjaGVtaWNhbCAKZWxlbWVudHMuIEl0IGlzIG1vcmUgb2YgdGhlIG5hdHVyZSBvZiBhIGZ1cnRoZXIgZGV2ZWxvcG1lbnQgb2YgdGhhdCBmb3JjZSB3aGljaCAKaXMgaW4gdGhlIGxpdmluZyBjZW50cmUgb2Ygc3VjaCBlbGVtZW50cyBhcyByYWRpdW0uIEl0IGlzIHBhcnQgb2YgdGhlIGFjdGlvbiBvZiAKdGhlIGxpZmUgb2YgdGhlIFRoaXJkIExvZ29zIGFmdGVyIGl0IGhhcyByZWFjaGVkIGl0cyBsb3dlc3QgaW1tZXJzaW9uIGFuZCBpcyAKb25jZSBtb3JlIGFzY2VuZGluZyB0b3dhcmRzIHRoZSBoZWlnaHRzIGZyb20gd2hpY2ggaXQgY2FtZS4gV2UgaGF2ZSBsb25nIAp1bmRlcnN0b29kIHRoYXQgdGhlIHNlY29uZCBsaWZlLXdhdmUsIGZyb20gdGhlIFNlY29uZCBMb2dvcywgZGVzY2VuZHMgaW50byAKbWF0dGVyIHRocm91Z2ggdGhlIGZpcnN0LCBzZWNvbmQgYW5kIHRoaXJkIGVsZW1lbnRhbCBraW5nZG9tcywgZG93biB0byB0aGUgCm1pbmVyYWwsIGFuZCB0aGVuIGFzY2VuZHMgYWdhaW4gdGhyb3VnaCB0aGUgdmVnZXRhYmxlIGFuZCBhbmltYWwgdG8gdGhlIGh1bWFuIApraW5nZG9tLCB3aGVyZSBpdCBtZWV0cyB0aGUgZG93bndhcmQtcmVhY2hpbmcgcG93ZXIgb2YgdGhlIEZpcnN0IExvZ29zLiBUaGlzIGlzIApzdWdnZXN0ZWQgaW4gRmlnLiAzLCBpbiB3aGljaCB0aGUgb3ZhbCBpbmRpY2F0aW5nIHRoYXQgU2Vjb25kIE91dHBvdXJpbmcgY29tZXMgCmRvd24gb24gdGhlIGxlZnQgc2lkZSwgcmVhY2hlcyBpdHMgZGVuc2VzdCBwb2ludCBhdCB0aGUgYm90dG9tIG9mIHRoZSBkaWFncmFtLCAKYW5kIHRoZW4gcmlzZXMgYWdhaW4gaW4gdGhlIGN1cnZlIG9uIHRoZSByaWdodC1oYW5kIHNpZGUgb2YgdGhlIGZpZ3VyZS4KCgrCoMKgCgoKV2Ugbm93IGZpbmQgdGhhdCB0aGUgZm9yY2Ugb2YgdGhlIFRoaXJkIExvZ29zIGFsc28gcmlzZXMgCmFnYWluIGFmdGVyIHRvdWNoaW5nIGl0cyBsb3dlc3QgcG9pbnQsIHNvIHdlIG11c3QgaW1hZ2luZSB0aGF0IHRoZSB2ZXJ0aWNhbCBsaW5lIAppbiB0aGUgY2VudHJlIG9mIHRoZSBmaWd1cmUgcmV0dXJucyB1cG9uIGl0cyBwYXRoLiBLdW5kYWxpbmkgaXMgdGhlIHBvd2VyIG9mIAp0aGF0IE91dHBvdXJpbmcgb24gaXRzIHBhdGggb2YgcmV0dXJuLCBhbmQgaXQgd29ya3MgaW4gdGhlIGJvZGllcyBvZiBldm9sdmluZyAKY3JlYXR1cmVzIGluIGludGltYXRlIGNvbnRhY3Qgd2l0aCB0aGUgcHJpbWFyeSBmb3JjZSBhbHJlYWR5IG1lbnRpb25lZCwgdGhlIHR3byAKYWN0aW5nIHRvZ2V0aGVyIHRvIGJyaW5nIHRoZSBjcmVhdHVyZSB0byB0aGUgcG9pbnQgd2hlcmUgaXQgY2FuIHJlY2VpdmUgdGhlIApPdXRwb3VyaW5nIG9mIHRoZSBGaXJzdCBMb2dvcywgYW5kIGJlY29tZSBhbiBlZ28sIGEgaHVtYW4gYmVpbmcsIGFuZCBzdGlsbCBjYXJyeSAKb24gdGhlIHZlaGljbGVzIGV2ZW4gYWZ0ZXIgdGhhdC4gV2UgdGh1cyBkcmF3IEdvZO+/vXMgbWlnaHR5IHBvd2VyIGZyb20gdGhlIGVhcnRoIApiZW5lYXRoIGFzIHdlbGwgYXMgZnJvbSBoZWF2ZW4gYWJvdmU7IHdlIGFyZSBjaGlsZHJlbiBvZiB0aGUgZWFydGggYXMgd2VsbCBhcyBvZiAKdGhlIHN1bi4gVGhlc2UgdHdvIG1lZXQgaW4gdXMsIGFuZCB3b3JrIHRvZ2V0aGVyIGZvciBvdXIgZXZvbHV0aW9uLiBXZSBjYW5ub3QgCmhhdmUgb25lIHdpdGhvdXQgdGhlIG90aGVyLCBidXQgaWYgb25lIGlzIGdyZWF0bHkgaW4gZXhjZXNzIHRoZXJlIGFyZSBzZXJpb3VzIApkYW5nZXJzLiBIZW5jZSB0aGUgcmlzayBvZiBhbnkgZGV2ZWxvcO+/vW1lbnQgb2YgdGhlIGRlZXBlciBsYXllcnMgb2YgdGhlIApzZXJwZW50LWZpcmUgYmVmb3JlIHRoZSBsaWZlIGluIHRoZSBtYW4gaXMgcHVyZSBhbmQgcmVmaW5lZC4KCgpXZSBoZWFyIG11Y2ggb2YgdGhpcyBzdHJhbmdlIGZpcmUgYW5kIG9mIHRoZSBkYW5nZXIgb2YgCnByZW1hdHVyZWx5IGFyb3VzaW5nIGl0OyBhbmQgbXVjaCBvZiB3aGF0IHdlIGhlYXIgaXMgdW5kb3VidGVkbHkgdHJ1ZS4gVGhlcmUgaXMgCmluZGVlZCBtb3N0IHNlcmlvdXMgcGVyaWwgaW4gYXdha2VuaW5nIHRoZSBoaWdoZXIgYXNwZWN0cyBvZiB0aGlzIGZ1cmlvdXMgZW5lcmd5IAppbiBhIG1hbiBiZWZvcmUgaGUgaGFzIGdhaW5lZCB0aGUgc3RyZW5ndGggdG8gY29udHJvbCBpdCwgYmVmb3JlIGhlIGhhcyBhY3F1aXJlZCAKdGhlIHB1cml0eSBvZiBsaWZlIGFuZCB0aG91Z2h0IHdoaWNoIGFsb25lIGNhbiBtYWtlIGl0IHNhZmUgZm9yIGhpbSB0byB1bmxlYXNoIApwb3RlbmN5IHNvIHRyZW1lbmRvdXMuIEJ1dCBrdW5kYWxpbmkgcGxheXMgYSBtdWNoIGxhcmdlciBwYXJ0IGluIGRhaWx5IGxpZmUgdGhhbiAKbW9zdCBvZiB1cyBoYXZlIGhpdGhlcnRvIHN1cHBvc2VkOyB0aGVyZSBpcyBhIGZhciBsb3dlciBhbmQgZ2VudGxlciAKbWFuaWZlc3RhdGlvbnMgb2YgaXQgd2hpY2ggaXMgYWxyZWFkeSBhd2FrZSB3aXRoaW4gdXMgYWxsLCB3aGljaCBpcyBub3Qgb25seSAKaW5ub2N1b3VzIGJ1dCBiZW5lZmljZW50LCB3aGljaCBpcyBkb2luZyBpdHMgYXBwb2ludGVkIHdvcmsgZGF5IGFuZCBuaWdodCB3aGlsZSAKd2UgYXJlIGVudGlyZWx5IHVuY29uc2Npb3VzIG9mIGl0cyBwcmVzZW5jZSBhbmQgYWN0aXZpdHkuIFdlIGhhdmUgb2YgY291cnNlIApwcmV2aW91c2x5IG5vdGljZWQgdGhpcyBmb3JjZSBhcyBpdCBmbG93cyBhbG9uZyB0aGUgbmVydmVzLCBjYWxsaW5nIGl0IHNpbXBseSAKbmVydmUtZmx1aWQsIGFuZCBub3QgcmVjb2duaXppbmcgaXQgZm9yIHdoYXQgaXQgcmVhbGx5IGlzLiBUaGUgZW5kZWF2b3VyIHRvIAphbmFseXNlIGl0IGFuZCB0byB0cmFjZSBpdCBiYWNrIHRvIGhpcyBzb3VyY2Ugc2hvd3MgdXMgdGhhdCBpdCBlbnRlcnMgdGhlIGh1bWFuIApib2R5IGF0IHRoZSByb290IGNoYWtyYS4KCgpMaWtlIGFsbCBvdGhlciBmb3JjZXMsIGt1bmRhbGluaSBpcyBpdHNlbGYgaW52aXNpYmxlOyBidXQgaW4gCnRoZSBodW1hbiBib2R5IGl0IGNsb3RoZXMgaXRzZWxmIGluIGEgY3VyaW91cyBuZXN0IG9mIGhvbGxvdyBjb25jZW50cmljIHNwaGVyZXMgCm9mIGFzdHJhbCBhbmQgZXRoZXJpYyBtYXR0ZXIsIG9uZSB3aXRoaW4gYW5vdGhlciwgbGlrZSB0aGUgYmFsbHMgaW4gYSBDaGluZXNlIApwdXp6bGUuIFRoZXJlIGFwcGVhciB0byBiZSBzZXZlbiBzdWNoIGNvbmNlbnRyaWMgc3BoZXJlcyByZXN0aW5nIHdpdGhpbiB0aGUgcm9vdCAKY2hha3JhLCBpbiBhbmQgYXJvdW5kIHRoZSBsYXN0IHJlYWwgY2VsbCBvciBob2xsb3cgb2YgdGhlIHNwaW5lIGNsb3NlIHRvIHRoZSAKY29jY3l4OyBidXQgb25seSBpbiB0aGUgb3V0ZXJtb3N0IG9mIHRoZXNlIHNwaGVyZXMgaXMgdGhlIGZvcmNlIGFjdGl2ZSBpbiB0aGUgCm9yZGluYXJ5IG1hbi4gSW4gdGhlIG90aGVycyBpdCBpcyDvv71zbGVlcGluZ++/vSwgYXMgaXMgc2FpZCBpbiBzb21lIG9mIHRoZSBPcmllbnRhbCAKYm9va3M7IGFuZCBpdCBpcyBvbmx5IHdoZW4gdGhlIG1hbiBhdHRlbXB0cyB0byBhcm91c2UgdGhlIGVuZXJneSBsYXRlbnQgaW4gdGhvc2UgCmlubmVyIGxheWVycyB0aGF0IHRoZSBkYW5nZXJvdXMgcGhlbm9tZW5hIG9mIHRoZSBmaXJlIGJlZ2luIHRvIHNob3cgdGhlbXNlbHZlcy4gClRoZSBoYXJtbGVzcyBmaXJlIG9mIHRoZSBvdXRlciBza2luIG9mIHRoZSBiYWxsIGZsb3dzIHVwIHRoZSBzcGluYWwgY29sdW1uLCAKdXNpbmcgKHNvIGZhciBhcyBpbnZlc3RpZ2F0aW9ucyBoYXZlIGdvbmUgdXAgdG8gdGhlIHByZXNlbnQpIHRoZSB0aHJlZSBsaW5lcyBvZiAKU3VzaHVtbmEsIElkYSBhbmQgUGluZ2FsYSBzaW11bHRhbmVvdXNseS7CoAoKClRIRSBUSFJFRSBTUElOQUwgCkNIQU5ORUxTwqAKCgpPZiB0aGVzZSB0aHJlZSBjdXJyZW50cyB3aGljaCBmbG93IGluIGFuZCBhcm91bmQgdGhlIHNwaW5hbCAKY29yZCBvZiBldmVyeSBodW1hbiBiZWluZyBNYWRhbWUgQmxhdmF0c2t5IHdyaXRlcyBhcyBmb2xsb3dzIGluIFRoZSBTZWNyZXQgCkRvY3RyaW5lOsKgCgoKVGhlIFRyYW5zLUhpbWFsYXlhbiBzY2hvb2wg77+9IGxvY2F0ZXMgU3VzaHVtbmEsIHRoZSAKY2hpZWYgc2VhdCBvZiB0aGVzZSB0aHJlZSBOYWRpcywgaW4gdGhlIGNlbnRyYWwgdHViZSBvZiB0aGUgc3BpbmFsIGNvcmQuIArvv70gSWRhIGFuZCBQaW5nYWxhIGFyZSBzaW1wbHkgdGhlIHNoYXJwcyBhbmQgZmxhdHMgb2YgdGhhdCBGYQpvZiBodW1hbiBuYXR1cmUsIO+/vSB3aGljaCwgd2hlbiBzdHJ1Y2sgaW4gYSBwcm9wZXIgd2F5LCBhd2FrZW5zIHRoZSBzZW50cmllcyAKb24gZWl0aGVyIHNpZGUsIHRoZSBzcGlyaXR1YWwgTWFuYXMgYW5kIHRoZSBwaHlzaWNhbCBLYW1hLCBhbmQgc3ViZHVlcyB0aGUgbG93ZXIgCnRocm91Z2ggdGhlIGhpZ2hlci5b77+9XQoKCkl0IGlzIHRoZSBwdXJlIEFrYXNoYSB0aGF0IHBhc3NlcyB1cCBTdXNodW1uYTsgCml0cyB0d28gYXNwZWN0cyBmbG93IGluIElkYSBhbmQgUGluZ2FsYS4gVGhlc2UgYXJlIHRocmVlIHZpdGFsIAphaXJzLCBhbmQgYXJlIHN5bWJvbGl6ZWQgYnkgdGhlIEJyYWhtYW5pY2FsIHRocmVhZC4gVGhleSBhcmUgcnVsZWQgYnkgdGhlIFdpbGwuIApXaWxsIGFuZCBEZXNpcmUgYXJlIHRoZSBoaWdoZXIgYW5kIGxvd2VyIGFzcGVjdHMgb2Ygb25lIGFuZCB0aGUgc2FtZSB0aGluZy4gCkhlbmNlIHRoZSBpbXBvcnRhbmNlIG9mIHRoZSBwdXJpdHkgb2YgdGhlIGNhbmFscyDvv70gRnJvbSB0aGVzZSB0aHJlZSBhIApjaXJjdWxhdGlvbiBpcyBzZXQgdXAsIGFuZCBmcm9tIHRoZSBjZW50cmFsIGNhbmFsIHBhc3NlcyBpbnRvIHRoZSB3aG9sZSBib2R5LlsqKl0KCgpJZGEgYW5kIFBpbmdhbGEgcGxheSAKYWxvbmcgdGhlIGN1cnZlZCB3YWxsIG9mIHRoZSBjb3JkIGluIHdoaWNoIGlzIFN1c2h1bW5hLiBUaGV5IGFyZSAKc2VtaS1tYXRlcmlhbCwgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlLCBzdW4gYW5kIG1vb24sIGFuZCBzdGFydCBpbnRvIGFjdGlvbiB0aGUgCmZyZWUgYW5kIHNwaXJpdHVhbCBjdXJyZW50IG9mIFN1c2h1bW5hLiBUaGV5IGhhdmUgZGlzdGluY3QgcGF0aHMgb2YgdGhlaXIgCm93biwgb3RoZXJ3aXNlIHRoZXkgd291bGQgcmFkaWF0ZSBhbGwgb3ZlciB0aGUgYm9keS5b77+977+9XcKgCgoKSW4gVGhlIEhpZGRlbiBMaWZlIGluIEZyZWVtYXNvbnJ5IEkgcmVmZXJyZWQgdG8gYSAKY2VydGFpbiBNYXNvbmljIHVzZSBvZiB0aGVzZSBmb3JjZXMgYXMgZm9sbG93czrCoAoKCkl0IGlzIHBhcnQgb2YgdGhlIHBsYW4gb2YgRnJlZW1hc29ucnkgdG8gc3RpbXVsYXRlIHRoZSAKYWN0aXZpdHkgb2YgdGhlc2UgZm9yY2VzIGluIHRoZSBodW1hbiBib2R5LCBpbiBvcmRlciB0aGF0IGV2b2x1dGlvbiBtYXkgYmUgCnF1aWNrZW5lZC4gVGhlIHN0aW11bGF0aW9uIGlzIGFwcGxpZWQgYXQgdGhlIG1vbWVudCB3aGVuIFIuIFcuIE0uIGNyZWF0ZXMsIApyZWNlaXZlcyBhbmQgY29uc3RpdHV0ZXM7IGluIHRoZSBGaXJzdCBEZWdyZWUgaXQgYWZmZWN0cyB0aGUgSWRhIG9yIApmZW1pbmluZSBhc3BlY3Qgb2YgdGhlIGZvcmNlLCB0aHVzIG1ha2luZyBpdCBlYXNpZXIgZm9yIHRoZSBjYW5kaWRhdGUgdG8gY29udHJvbCAKcGFzc2lvbiBhbmQgZW1vdGlvbjsgaW4gdGhlIFNlY29uZCBEZWdyZWUgaXQgaXMgdGhlIFBpbmdhbGEgb3IgbWFzY3VsaW5lIAphc3BlY3Qgd2hpY2ggaXMgc3RyZW5ndGhlbmVkLCBpbiBvcmRlciB0byBmYWNpbGl0YXRlIHRoZSBjb250cm9sIG9mIG1pbmQ7IGJ1dCBpbiAKdGhlIFRoaXJkIERlZ3JlZSwgaXQgaXMgdGhlIGNlbnRyYWwgZW5lcmd5IGl0c2VsZiwgdGhlIFN1c2h1bW5hLCB3aGljaCBpcyAKYXJvdXNlZCwgdGhlcmVieSBvcGVuaW5nIHRoZSB3YXkgZm9yIHRoZSBpbmZsdWVuY2Ugb2YgdGhlIHB1cmUgc3Bpcml0IGZyb20gb24gCmhpZ2guIEl0IGlzIGJ5IHBhc3NpbmcgdXAgdGhyb3VnaCB0aGlzIGNoYW5uZWwgb2YgdGhlIFN1c2h1bW5hIHRoYXQgYSAKeW9naSBsZWF2ZXMgaGlzIHBoeXNpY2FsIGJvZHkgYXQgd2lsbCBpbiBzdWNoIGEgbWFubmVyIHRoYXQgaGUgY2FuIHJldGFpbiBmdWxsIApjb25zY2lvdXNuZXNzIG9uIGhpZ2hlciBwbGFuZXMsIGFuZCBicmluZyBiYWNrIGludG8gaGlzIHBoeXNpY2FsIGJyYWluIGEgY2xlYXIgCm1lbW9yeSBvZiBoaXMgZXhwZXJpZW5jZXMuIFRoZSBsaXR0bGUgZmlndXJlcyBiZWxvdyBnaXZlIGEgcm91Z2ggaW5kaWNhdGlvbiBvZiAKdGhlIHdheSBpbiB3aGljaCB0aGVzZSBmb3JjZXMgZmxvdyB0aHJvdWdoIHRoZSBodW1hbiBib2R5OyBpbiBhIG1hbiB0aGUgSWRhCnN0YXJ0cyBmcm9tIHRoZSBiYXNlIG9mIHRoZSBzcGluZSBqdXN0IG9uIHRoZSBsZWZ0IG9mIHRoZSBTdXNodW1uYSAKYW5kIHRoZSBQaW5nYWxhIG9uIHRoZSByaWdodCAoYmUgaXQgdW5kZXJzdG9vZCB0aGF0IEkgbWVhbiB0aGUgcmlnaHQgYW5kIApsZWZ0IG9mIHRoZSBtYW4sIG5vdCB0aGUgc3BlY3RhdG9yKTsgYnV0IGluIGEgd29tYW4gdGhlc2UgcG9zaXRpb25zIGFyZSAKcmV2ZXJzZWQuIFRoZSBsaW5lcyBlbmQgaW4gdGhlIG1lZHVsbGEgb2Jsb25nYXRhLlvvv73vv71dwqAKCgpUaGUgc3BpbmUgaXMgY2FsbGVkIGluIEluZGlhIHRoZSBCcmFobWFkYW5kYSwgdGhlIApzdGljayBvZiBCcmFobWE7IGFuZCB0aGUgZHJhd2luZyBnaXZlbiBpbiBGaWcuIDQoZCkgc2hvd3MgdGhhdCBpdCBpcyBhbHNvIHRoZSAKb3JpZ2luYWwgb2YgdGhlIGNhZHVjZXVzIG9mIE1lcmN1cnksIHRoZSB0d28gc25ha2VzIG9mIHdoaWNoIHN5bWJvbGl6ZSB0aGUgCmt1bmRhbGluaSBvciBzZXJwZW50LWZpcmUgd2hpY2ggaXMgcHJlc2VudGx5IHRvIGJlIHNldCBpbiBtb3Rpb24gYWxvbmcgdGhvc2UgCmNoYW5uZWxzLCB3aGlsZSB0aGUgd2luZ3MgdHlwaWZ5IHRoZSBwb3dlciBvZiBjb25zY2lvdXMgZmxpZ2h0IHRocm91Z2ggaGlnaGVyIApwbGFuZXMgd2hpY2ggdGhlIGRldmVsb3Dvv71tZW50IG9mIHRoYXQgZmlyZSBjb25mZXJzLiBGaWcuIDQoYSkgc2hvd3MgdGhlIApzdGltdWxhdGVkIElkYSBhZnRlciB0aGUgaW5pdGlhdGlvbiBpbnRvIHRoZSBGaXJzdCBEZWdyZWU7IHRoaXMgbGluZSBpcyAKY3JpbXNvbiBpbiBjb2xvdXIuIFRvIGl0IGlzIGFkZGVkIGF0IHRoZSBQYXNzaW5nIHRoZSB5ZWxsb3cgbGluZSBvZiB0aGUgClBpbmdhbGEsIGRlcGljdGVkIGluIEZpZy4gNChiKTsgd2hpbGUgYXQgdGhlIFJhaXNpbmcgdGhlIHNlcmllcyBpcyBjb21wbGV0ZWQgCmJ5IHRoZSBkZWVwIGJsdWUgc3RyZWFtIG9mIHRoZSBTdXNodW1uYSwgaWxsdXN0cmF0ZWQgYnkgRmlnLiA0KGMpLsKgCgoKwqAKCgpUaGUga3VuZGFsaW5pIHdoaWNoIG5vcm1hbGx5IGZsb3dzIHVwIHRoZXNlIGlzIHNwZWNpYWxpemVkIApkdXJpbmcgdGhpcyB1cHdhcmQgcGFzc2FnZSwgYW5kIHRoYXQgaW4gdHdvIHdheXMuIFRoZXJlIGlzIGluIGl0IGEgY3VyaW91cyAKbWluZ2xpbmcgb2YgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHF1YWxpdGllcyB3aGljaCBtaWdodCBhbG1vc3QgYmUgZGVzY3JpYmVkIGFzIAptYWxlIGFuZCBmZW1hbGUuIE9uIHRoZSB3aG9sZSB0aGVyZSBpcyBhIGdyZWF0IHByZXBvbmRlcmFuY2Ugb2YgdGhlIGZlbWluaW5lIAphc3BlY3QsIHdoaWNoIGlzIHBlcmhhcHMgdGhlIHJlYXNvbiB3aHkgaW4gdGhlIEluZGlhbiBib29rcyB0aGlzIGZvcmNlIGlzIGFsd2F5cyAKc3Bva2VuIG9mIGFzIO+/vXNoZe+/vSwgYWxzbyBwZXJoYXBzIHdoeSBhIGNlcnRhaW4g77+9Y2hhbWJlciBpbiB0aGUgaGVhcnTvv70gd2hlcmUgCmt1bmRhbGluaSBpcyBjZW50cmVkIGluIHNvbWUgZm9ybXMgb2YgeW9nYSBpcyBkZXNjcmliZWQgaW4gVGhlIFZvaWNlIG9mIHRoZSAKU2lsZW5jZSBhcyB0aGUgaG9tZSBvZiB0aGUgV29ybGTvv71zIE1vdGhlci4gQnV0IHdoZW4gdGhpcyBzZXJwZW50LWZpcmUgaXNzdWVzIApmcm9tIGl0cyBob21lIGluIHRoZSByb290IGNoYWtyYSBhbmQgcmlzZXMgdXAgdGhlIHRocmVlIGNoYW5uZWxzIHdoaWNoIHdlIGhhdmUgCm1lbnRpb25lZCBpdCBpcyBub3Rld29ydGh5IHRoYXQgdGhlIHNlY3Rpb24gcmlzaW5nIHRocm91Z2ggdGhlIGNoYW5uZWwgUGluZ2FsYSAKaXMgYWxtb3N0IHdob2xseSBtYXNjdWxpbmUsIHdoZXJlYXMgdGhhdCByaXNpbmcgdGhyb3VnaCB0aGUgY2hhbm5lbCBJZGEgaXMgCmFsbW9zdCB3aG9sbHkgZmVtaW5pbmUuIFRoZSBsYXJnZSBzdHJlYW0gcGFzc2luZyB1cCB0aGUgU3VzaHVtbmEgc2VlbXMgdG8gcmV0YWluIAppdHMgb3JpZ2luYWwgcHJvcG9ydGlvbnMuCgoKVGhlIHNlY29uZCBkaWZmZXJlbnRpYXRpb24gd2hpY2ggdGFrZXMgcGxhY2UgZHVyaW5nIHRoZSAKcGFzc2FnZSBvZiB0aGlzIGZvcmNlIHVwIHRoZSBzcGluZSBpcyB0aGF0IGl0IGJlY29tZXMgaW50ZW5zZWx5IGltcHJlZ25hdGVkIHdpdGggCnRoZSBwZXJzb25hbGl0eSBvZiB0aGUgbWFuLiBJdCBzZWVtcyB0byBlbnRlciBhdCB0aGUgYm90dG9tIGFzIGEgdmVyeSBnZW5lcmFsIApmb3JjZSBhbmQgdG8gaXNzdWUgZm9ydGggYXQgdGhlIHRvcCBhcyBkZWZpbml0ZWx5IHRoaXMgcGFydGljdWxhciBtYW7vv71zIApuZXJ2ZS1mbHVpZCBjYXJyeWluZyB3aXRoIGl0IHRoZSBpbXByZXNzIG9mIGhpcyBzcGVjaWFsIHF1YWxpdGllcyBhbmQgCmlkaW9zeW5jcmFzaWVzLCB3aGljaCBtYW5pZmVzdCB0aGVtc2VsdmVzIGluIHRoZSB2aWJyYXRpb25zIG9mIHRob3NlIApzcGluZS1jZW50cmVzIHdoaWNoIG1heSBiZSBjb25zaWRlcmVkIGFzIHRoZSByb290cyBmcm9tIHdoaWNoIHNwcmluZyB0aGUgc3RlbXMgCm9mIHRoZSBzdXJmYWNlIGNoYWtyYXMuwqAKCgpUSEUgTUFSUklBR0UgT0YgVEhFIApGT1JDRVPCoAoKClRob3VnaCB0aGUgbW91dGggb2YgdGhlIGZsb3dlci1saWtlIGJlbGwgb2YgdGhlIGNoYWtyYSBpcyBvbiAKdGhlIHN1cmZhY2Ugb2YgdGhlIGV0aGVyaWMgYm9keSwgdGhlIHN0ZW0gb2YgdGhlIHRydW1wZXQtbGlrZSBibG9zc29tIGFsd2F5cyAKc3ByaW5ncyBmcm9tIGEgY2VudHJlIGluIHRoZSBzcGluYWwgY29yZC4gSXQgaXMgYWxtb3N0IGFsd2F5cyB0byB0aGVzZSBjZW50cmVzIAppbiB0aGUgc3BpbmUsIGFuZCBub3QgdG8gdGhlIHN1cGVyZmljaWFsIG1hbmlmZXPvv710YXRpb25zIG9mIHRoZW0sIHRoYXQgdGhlIEhpbmR1IApob29rcyByZWZlciB3aGVuIHRoZXkgc3BlYWsgb2YgdGhlIGNoYWtyYXMuIEluIGVhY2ggY2FzZSBhbiBldGhlcmljIHN0ZW0sIAp1c3VhbGx5IGN1cnZpbmcgZG93bndhcmRzLCBjb25uZWN0cyB0aGlzIHJvb3QgaW4gdGhlIHNwaW5lIHdpdGggdGhlIGV4dGVybmFsIApjaGFrcmEuIChTZWUgUGxhdGUgVkkuKSBBcyB0aGUgc3RlbXMgb2YgYWxsIHRoZSBjaGFrcmFzIHRodXMgc3RhcnQgZnJvbSB0aGUgCnNwaW5hbCBjb3JkLCB0aGlzIGZvcmNlIG5hdHVyYWxseSBmbG93cyBkb3duIHRob3NlIHN0ZW1zIGludG8gdGhlIGZsb3dlci1iZWxsczsgCndoZXJlIGl0IG1lZXRzIHRoZSBpbmNvbWluZyBzdHJlYW0gb2YgdGhlIGRpdmluZSBsaWZlLCBhbmQgdGhlIHByZXNzdXJlIHNldCB1cCAKYnkgdGhhdCBlbmNvdW50ZXIgY2F1c2VzIHRoZSByYWRpYXRpb24gb2YgdGhlIG1pbmdsZWQgZm9yY2VzIGhvcml6b250YWxseSBhbG9uZyAKdGhlIHNwb2tlcyBvZiB0aGUgY2hha3JhLgoKClRoZSBzdXJmYWNlcyBvZiB0aGUgc3RyZWFtcyBvZiB0aGUgcHJpbWFyeSBmb3JjZSBhbmQgdGhlIAprdW5kYWxpbmkgZ3JpbmQgdG9nZXRoZXIgYXQgdGhpcyBwb2ludCwgYXMgdGhleSByZXZvbHZlIGluIG9wcG9zaXRlIGRpcmVjdGlvbnMgCmFuZCBjb25zaWRlcmFibGUgcHJlc++/vXN1cmUgaXMgY2F1c2VkLiBUaGlzIGhhcyBiZWVuIHN5bWJvbGl6ZWQgYXMgdGhlIO+/vW1hcnJpYWdl77+9IApvZiB0aGUgZGl2aW5lIGxpZmUsIHdoaWNoIGlzIHZpdmlkbHkgbWFsZSwgdG8gdGhlIGt1bmRhbGluaSwgd2hpY2ggaXMgYWx3YXlzIApjb25zaWRlcmVkIGFzIGRpc3RpbmPvv710aXZlbHkgZmVtaW5pbmUsIGFuZCB0aGUgY29tcG91bmQgZW5lcmd5IHdoaWNoIHJlc3VsdHMgaXMgCndoYXQgaXMgY29tbW9ubHkgY2FsbGVkIHRoZSBwZXJzb25hbCBtYWduZXRpc20gb2YgdGhlIG1hbjsgaXQgdGhlbiB2aXZpZmllcyB0aGUgCnBsZXh1c2VzIHdoaWNoIGFyZSBzZWVuIGluIHRoZSBuZWlnaGJvdXJob29kIG9mIHNldmVyYWwgb2YgdGhlIGNoYWtyYXM7IGl0IGZsb3dzIAphbG9uZyBhbGwgdGhlIG5lcnZlcyBvZiB0aGUgYm9keSwgYW5kIGlzIHByaW5jaXBhbGx5IHJlc3BvbnNpYmxlIGZvciBrZWVwaW5nIHVwIAppdHMgdGVtcGXvv71yYXR1cmUuIEl0IHN3ZWVwcyBhbG9uZyB3aXRoIGl0IHRoZSB2aXRhbGl0eSB3aGljaCBoYXMgYmVlbiBhYnNvcmJlZCAKYW5kIHNwZWNpYWxpemVkIGJ5IHRoZSBzcGxlZW4gY2hha3JhLgoKCldoZW4gdGhlIHR3byBmb3JjZXMgY29tYmluZSBhcyBtZW50aW9uZWQgYWJvdmUgdGhlcmUgaXMgYSAKY2VydGFpbiBpbnRlcmxvY2tpbmcgb2Ygc29tZSBvZiB0aGUgcmVzcGVjdGl2ZSBtb2xlY3VsZXMuIFRoZSBwcmltYXJ5IGZvcmNlIApzZWVtcyBjYXBhYmxlIG9mIG9jY3VweWluZyBzZXZlcmFsIGRpZmZlcmVudCBraW5kcyBvZiBldGhlcmljIGZvcm07IHRoYXQgd2hpY2ggCml0IG1vc3QgY29tbW9ubHkgYWRvcHRzIGlzIGFuIG9jdGFoZWRyb24sIG1hZGUgb2YgZm91ciBhdG9tc1vvv73vv71dIAphcnJhbmdlZCBpbiBhIHNxdWFyZSwgd2l0aCBvbmUgY2VudHJhbCBhdG9tIGNvbnN0YW50bHkgdmlicmF0aW5nIHVwIGFuZCBkb3duIAp0aHJvdWdoIHRoZSBtaWRkbGUgb2YgdGhlIHF1YWRyaWxhdGVyYWwgYW5kIGF0IHJpZ2h0IGFuZ2xlcyB0byBpdC4gSXQgYWxzbyAKc29tZXRpbWVzIHVzZXMgYW4gZXhjZWVkaW5nbHkgYWN0aXZlIGxpdHRsZSBtb2xlY3VsZSBjb25zaXN0aW5nIG9mIHRocmVlIGF0b21zLiAKVGhlIGt1bmRh77+9bGluaSB1c3VhbGx5IGNsb3RoZXMgaXRzZWxmIGluIGEgZmxhdCByaW5nIG9mIHNldmVuIGF0b21zLCB3aGlsZSB0aGUgCnZpdGFsaXR5IGdsb2J1bGUsIHdoaWNoIGFsc28gY29uc2lzdHMgb2Ygc2V2ZW4gYXRvbXMsIGFycmFuZ2VzIHRoZW0gb24gYSBwbGFuIApub3QgdW5saWtlIHRoYXQgb2YgdGhlIHByaW1hcnkgZm9yY2UsIGV4Y2VwdCB0aGF0IGl0IGZvcm1zIGEgaGV4YWdvbiBpbnN0ZWFkIG9mIAphIHNxdWFyZS4gRmlnLiA1IG1heSBoZWxwIHRoZSByZWFkZXIgdG8gaW1hZ2UgdGhlc2UgYXJyYW5nZW1lbnRzLgoKCsKgCgoKwqAKCgpBIGFuZCBCIGFyZSBmb3JtcyBhZG9wdGVkIGJ5IHRoZSBwcmltYXJ5IGZvcmNlLCBDIGlzIHRoYXQgCnRha2VuIGJ5IHRoZSB2aXRhbGl0eSBnbG9idWxlLCBhbmQgRCB0aGF0IG9mIHRoZSBrdW5kYWxpbmkuIEUgc2hvd3MgdGhlIGVmZmVjdCAKb2YgdGhlIGNvbWJpbmF0aW9uIG9mIEEgYW5kIEQ7IEYgdGhhdCBvZiBCIGFuZCBELiBJbiBBLCBCIGFuZCBDIHRoZSBjZW50cmFsIGF0b20gCmlzIGFsbCB0aGUgdGltZSBpbiByYXBpZCB2aWJyYXRpb24gYXQgcmlnaHQgYW5nbGVzIHRvIHRoZSBzdXJmYWNlIG9mIHRoZSBwYXBlciwgCnNwcmluZ2luZyB1cCBmcm9tIGl0IHRvIGEgaGVpZ2h0IGdyZWF0ZXIgdGhhbiB0aGUgZGlhbWV0ZXIgb2YgdGhlIGRpc2MsIGFuZCB0aGVuIApzaW5raW5nIGJlbG93IHRoZSBwYXBlciB0byBhbiBlcXVhbCBkaXN0YW5jZSwgYnV0IHJlcGVhdGluZyB0aGlzIHNodXR0bGUtbGlrZSAKbW90aW9uIHNldmVyYWwgdGltZXMgaW4gYSBzZWNvbmQuIChPZiBjb3Vyc2UgaXQgd2lsbCBiZSB1bmRlcnN0b29kIHRoYXQgSSBzcGVhayAKcmVsYXRpdmVseSBhbmQgbm90IGxpdGVyYWxseTsgaW4gcmVhbGl0eSB0aGUgc3BoZXJlIHdoaWNoIGN1ciBkaXNjIHJlcHJlc2VudHMgaXMgCnNvIHRpbnkgYXMgdG8gYmUgaW52aXNpYmxlIHRvIHRoZSBtb3N0IHBvd2VyZnVsIG1pY3Jvc2NvcGU7IGJ1dCBpbiBwcm9wb3J0aW9uCnRvIHRoYXQgc2l6ZSBpdHMgdmlicmF0aW9uIGlzIGFzIEkgZGVzY3JpYmUuKSBJbiBEIHRoZSBvbmx5IG1vdGlvbiBpcyBhIApzdGVhZHkgcHJvY2Vzc2lvbiByb3VuZCBhbmQgcm91bmQgdGhlIGNpcmNsZSwgYnV0IHRoZXJlIGlzIGFuIGltbWVuc2UgYW1vdW50IG9mIApsYXRlbnQgZW5lcmd5IHRoZXJlIHdoaWNoIG1hbmlmZXN0cyBpdHNlbGYgYXMgc29vbiBhcyB0aGUgY29tYmluYe+/vXRpb25zIHRha2UgCnBsYWNlIHdoaWNoIHdlIGhhdmUgZW5kZWF2b3VyZWQgdG8gaWxsdXN0cmF0ZSBpbiBFIGFuZCBGLiBUaGUgdHdvIHBvc2l0aXZlIGF0b21zIAppbiBBIGFuZCBCwqAgY29udGludWUgd2hlbiB0aHVzIGNvbWJpbmVkIHRoZWlyIHByZXZpb3VzIHZpb2xlbnQgYWN0aXZpdGllcyAtIGluIApmYWN0LCB0aGVpciB2aWdvdXIgaXMgZ3JlYXRseSBpbnRlbnNpZmllZDsgd2hpbGUgdGhlIGF0b21zIGluIEQsIHRob3VnaCB0aGV5IApzdGlsbCBtb3ZlIGFsb25nIHRoZSBzYW1lIGNpcmN1bGFyIHBhdGh3YXksIGFjY2VsZXJhdGUgdGhlaXIgc3BlZWQgc28gZW5vcm1vdXNseSAKdGhhdCB0aGV5IGNlYXNlIHRvIGJlIHZpc2libGUgYXMgc2VwYXJhdGUgYXRvbXMgYW5kIGFwcGVhciBhcyBhIGdsb3dpbmcgcmluZy4KCgpUaGUgZmlyc3QgZm91ciBtb2xlY3VsZXMgZGVwaWN0ZWQgYWJvdmUgYmVsb25nIHRvIHRoZSB0eXBlIHRvIAp3aGljaCBpbiBPY2N1bHQgQ2hlbWlzdHJ5IERyLiBCZXNhbnQgZ2l2ZXMgdGhlIG5hbWUgb2YgCkh5cGVyLW1ldGEtcHJvdG8tZWxlbWVudGFsIG1hdHRlci5bKioqXSAKSW5kZWVkLCB0aGV5IG1heSBiZSBpZGVudGljYWwgd2l0aCBzb21lIG9mIHRob3NlIHdoaWNoIHNoZSBkcmV3IGZvciB0aGF0IGJvb2suIApCdXQgRSBhbmQgRiwgYmVpbmcgY29tcG91bmRzLCBtdXN0IGJlIHRha2VuIGFzIHdvcmtpbmcgdXBvbiB0aGUgbmV4dCBzdWItcGxhbmUsIAp3aGljaCBzaGUgY2FsbHMgdGhlIHN1cGVyLWV0aGVyaWMsIGFuZCBzbyB3b3VsZCBiZSBjbGFzc2lmaWVkIGFzIG1ldGEtcHJvdG8gCm1hdHRlci4gVHlwZSBCIGlzIGZhciBjb23vv71tb25lciB0aGFuIHR5cGUgQSwgYW5kIGl0IG5hdHVyYWxseSBmb2xsb3dzIHRoYXQgaW4gCnRoZSBuZXJ2ZS1mbHVpZCB3aGljaCBpcyB0aGUgZmluYWwgcmVzdWx0IG9mIHRoZSBjb25mbHVlbmNlIHdlIGZpbmQgbWFueSBtb3JlIApleGFtcGxlcyBvZiBGIGFuZCBFLiBUaGlzIG5lcnZlLe+/vWZsdWlkIGlzIHRoZXJlZm9yZSBhIHN0cmVhbSBvZiB2YXJpb3VzIAplbGVtZW50cywgY29udGFpbu+/vWluZyBzcGVjaW1lbnMgb2YgZWFjaCBvbmUgb2YgdGhlIHR5cGVzIHNob3duIGluIEZpZy4gNCAtIApzaW1wbGUgYW5kIGNvbXBvdW5kLCBtYXJyaWVkIGFuZCBzaW5nbGUsIGJhY2hlbG9ycywgb2xkIG1haWRzIGFuZCBjb25qdWdhbCAKY291cGxlcywgYWxsIHJ1c2hpbmcgb253YXJkwqAgdG9nZXRoZXIuCgoKVGhlIG1hcnZlbGxvdXNseSBlbmVyZ2V0aWMgdXB3YXJkIGFuZCBkb3du77+9d2FyZCBtb3ZlbWVudCBvZiAKdGhlIGNlbnRyYWwgYXRvbSBpbiB0aGUgY29tYmluYe+/vXRpb25zIEUgYW5kIEYgZ2l2ZXMgdGhlbSBhIHF1aXRlIHVudXN1YWwgc2hhcGUgCndpdGhpbiB0aGVpciBtYWduZXRpYyBmaWVsZHMgYXMgc2hvd24gaW4gRmlnLiA2LgoKClRoZSB1cHBlciBoYWxmIG9mIHRoaXMgc2VlbXMgdG8gbWUgdG8gYmVhciBhIHJlbWFya2FibGUgCnJlc2VtYmxhbmNlIHRvIHRoZSBsaW5nYSB3aGljaCBpcyBmcmVxdWVudGx5IHRvIGJlIHNlZW4gaW4gZnJvbnQgb2YgdGhlIHRlbXBsZXMgCm9mIFNoaXZhIGluIEluZGlhLiBJIGFtIHRvbGQgdGhhdCB0aGUgbGluZ2EgaXMgYW4gZW1ibGVtIG9mIGNyZWF0aXZlIHBvd2VyLCBhbmQgCnRoYXQgSW5kaWFuIGRldm90ZWVzIHJlZ2FyZCBpdCBhcyBleHRlbmRpbmcgZG93bu+/vXdhcmRzIGludG8gdGhlIGVhcnRoIHRvIGp1c3QgCnRoZSBzYW1lIGV4dGVudCBhcyBpdCByaXNlcyBhYm92ZSBpdC4gSSBoYXZlIHdvbmRlcmVkIHdoZXRoZXIgdGhlIGFuY2llbnQgSGluZHVzIAprbmV3IG9mIHRoaXMgZXNwZWNpYWxseSBhY3RpdmUgbW9sZWN1bGUsIGFuZCBvZiB0aGUgaW1tZW5zZSBpbXBvcnRhbmNlIG9mIHRoZSAKcGFydCBpdCBwbGF5cyBpbiB0aGUgc3VwcG9ydCBvZiBodW1hbiBhbmQgYW5pbWFsIGxpZmU7IGFuZCB3aGV0aGVyIHRoZXkgY2FydmVkIAp0aGVpciBzeW1ib2wgaW4gc3RvbmUgYXMgYSByZWNvcmQgb2YgdGhlaXIgb2NjdWx0IGtub3dsZWRnZS7CoAoKCsKgVEhFIFNZTVBBVEhFVElDIFNZU1RFTcKgCgoKQW5hdG9taXN0cyBkZXNjcmliZSB0d28gbmVydm91cyBzeXN0ZW1zIGluIHRoZSBodW1hbiBib2R5IC0gCnRoZSBjZXJlYnJvLXNwaW5hbCBhbmQgdGhlIHN5bXBhdGhldGljLiBUaGUgY2VyZWJyby1zcGluYWwgYmVnaW5zIHdpdGggdGhlIApicmFpbiwgY29udGludWVzIGRvd24gdGhlIHNwaW5hbCBjb3JkLCBhbmQgcmFtaWZpZXMgdG8gYWxsIHBhcnRzIG9mIHRoZSBib2R5IAp0aHJvdWdoIHRoZSBnYW5nbGlhIGZyb20gd2hpY2ggbmVydmVzIGlzc3VlIGJldHdlZW4gZXZlcnkgdHdvIHN1Y2Nlc3NpdmUgCnZlcnRlYnJhZS4gVGhlIHN5bXBh77+9dGhldGljIHN5c3RlbSBjb25zaXN0cyBvZiB0d28gY29yZHMgd2hpY2ggcnVuIGFsbW9zdCB0aGUgCndob2xlIGxlbmd0aCBvZiB0aGUgc3BpbmUsIHNpdHVhdGVkIGEgbGl0dGxlIGZvcndhcmQgb2YgaXRzIGF4aXMsIGFuZCB0byB0aGUgCnJpZ2h0IGFuZCBsZWZ0IHJlc3BlY3RpdmVseS4gRnJvbSB0aGUgZ2FuZ2xpYSBvZiB0aGVzZSB0d28gY29yZHMsIHdoaWNoIGFyZSBub3QgCnF1aXRlIGFzIG51bWVyb3VzIGFzIHRob3NlIG9mIHRoZSBzcGluYWwgY29yZCwgc3ltcGF0aGV0aWMgbmVydmVzIHByb2NlZWQgdG8gCmZvcm0gdGhlIG5ldHdvcmsgc3lzdGVtcyBjYWxsZWQgdGhlIHBsZXh1c2VzLCBmcm9tIHdoaWNoIGluIHR1cm4sIGFzIGZyb20gcmVsYXkgCnN0YXRpb25zLCBlbWVyZ2Ugc21hbGxlciB0ZXJtaW5hbCBnYW5nbGlhIGFuZCBuZXJ2ZXMuIFRoZXNlIHR3byBzeXN0ZW1zIGFyZSwgCmhvd2V2ZXIsIGludGVycmVsYXRlZCBpbiBhIGdyZWF0IHZhcmlldHkgb2Ygd2F5cyBieSBzbyBtYW55IGNvbm5lY3RpbmcgbmVydmVzIAp0aGF0IG9uZSBtdXN0IG5vdCB0aGluayBvZiB0aGVtIGFzIHR3byBkaXN0aW5jdCBuZXVyYWwgb3JnYW5pemF0aW9ucy4gSW4gCmFkZGl0aW9uIHdlIGhhdmUgYSB0aGlyZCBncm91cCBjYWxsZWQgdGhlIHZhZ3VzIG5lcnZlcywgd2hpY2ggYXJpc2UgaW4gdGhlIAptZWR1bGxhIG9ibG9uZ2F0YSwgYW5kIGRlc2NlbmQgaW5kZXBlbmRlbnRseSBmYXIgaW50byB0aGUgYm9keSwgbWluZ2xpbmcgCmNvbnN0YW50bHkgd2l0aCB0aGUgbmVydmVzIGFuZCBwbGV4dXNlcyBvZiB0aGUgb3RoZXIgc3lzdGVtcy4KCgpUaGUgc3BpbmFsIGNvcmQsIHRoZSBsZWZ0IHN5bXBhdGhldGljIGNvcmQsIGFuZCB0aGUgbGVmdCAKdmFndXMgbmVydmUgYXJlIGFsbCBzaG93biBpbiBQbGF0ZSBWSS4gSXQgZXhoaWJpdHMgdGhlIG5lcnZvdXMgY29ubmVjdGlvbnMgCmJldHdlZW4gdGhlIHNwaW5hbCBhbmQgc3ltcGF0aGV0aWMgZ2FuZ2xpYSwgYW5kIHRoZSBjaGFubmVscyBieSB3aGljaCB0aGUgbGF0dGVyIApnaXZlIGZvcnRoIG5lcnZlcyB0byBmb3JtIHRoZSBwcmluY2lwYWwgcGxleHVzZXMgb2YgdGhlIHN5bXBhdGhldGljIHN5c3RlbS4gSXQgCndpbGwgYmUgbm90ZWQgdGhhdCB0aGVyZSBpcyBhIHRlbmRlbmN5IGZvciB0aGUgcGxleHVzZXMgdG8gZHJvb3AgZnJvbSB0aGUgCmdhbmdsaWEgaW4gd2hpY2ggdGhleSBoYXZlIHRoZWlyIG9yaWdpbiwgc28gdGhhdCwgZm9yIGV4YW1wbGUsIHRoZSBjb2VsaWFjIG9yIApzb2xhciBwbGV4dXMgZGVwZW5kcyBsYXJnZWx5IHVwb24gdGhlIGdyZWF0IHNwbGFuY2huaWMgbmVydmUsIHNob3duIGluIG91ciBwbGF0ZSAKYXMgcmlzaW5nIGZyb20gdGhlIGZpZnRoIHRob3JhY2ljIHN5bXBhdGhldGljIGdhbmdsaW9uLCB3aGljaCBpbiB0dXJuIGlzIApjb25uZWN0ZWQgd2l0aCB0aGUgZm91cnRoIHRob3JhY2ljIHNwaW5hbCBnYW5nbGlvbi4gVGhpcyBpcyBhbG1vc3Qgb24gYSBsZXZlbCAKd2l0aCB0aGUgaGVhcnQgaG9yaXpvbnRhbGx5LCBidXQgdGhlIG5lcnZlIGRlc2NlbmRzIGFuZCBqb2lucyB0aGUgc21hbGxlciBhbmQgCnRoZSBzbWFsbGVzdCBzcGxhbmNobmljIG5lcnZlcywgd2hpY2ggbWVyZ2UgZnJvbSBsb3dlciB0aG9yYWNpYyBnYW5nbGlhLCBhbmQgCnRoZXNlIHBhc3MgdGhyb3VnaCB0aGUgZGlhcGhyYWdtIGFuZCBnbyB0byB0aGUgc29sYXIgcGxleHVzLiBUaGVyZSBhcmUgYWxzbyAKb3RoZXIgY29ubmVjdGlvbnMgYmV0d2VlbiB0aGF0IHBsZXh1cyBhbmQgdGhlIGNvcmRzLCBzaG93biBpbiB0aGUgUGxhdGUgdG8gc29tZSAKZXh0ZW50LCBidXQgdG9vIGNvbXBsaWNhdGVkIHRvIGRlc2NyaWJlLiBUaGUgcHJpbmNpcGFsIG5lcnZlcyBsZWFkaW5nIHRvIHRoZSAKY2FyZGlhYyBwbGV4dXMgYmVuZCBkb3dud2FyZHMgaW4gYSBzaW1pbGFyIG1hbm5lci4gSW4gdGhlIGNhc2Ugb2YgdGhlIHBoYXJ5bmdlYWwgCnBsZXh1cyB0aGVyZSBpcyBidXQgYSBzbGlnaHQgZHJvb3AsIGFuZCB0aGUgY2Fyb3RpZCBwbGV4dXMgZXZlbiByaXNlcyB1cHdhcmQgCmZyb20gdGhlIGludGVybmFsIGNhcm90aWQgbmVydmUsIGNvbWluZyBmcm9tIHRoZSBzdXBlcmlvciBjZXJ2aWNhbCBzeW1wYXRoZXRpYyAKZ2FuZ2xpb24uwqAKCgpUSEUgQ0VOVFJFUyBJTiBUSEUgClNQSU5FwqAKCgpUaGVyZSBpcyBhIHNvbWV3aGF0IHNpbWlsYXIgZHJvb3AgaW4gdGhlIGV0aGVyaWMgc3RlbSB3aGljaCAKY29ubmVjdHMgdGhlIGZsb3dlcnMgb3IgY2hha3JhcyBvbiB0aGUgc3VyZmFjZSBvZiB0aGUgZXRoZXJpYyBkb3VibGUgd2l0aCB0aGVpciAKY29ycmVzcG9uZGluZyBjZW50cmVzIGluIHRoZSBzcGluZSwgd2hpY2ggYXJlIHNpdHVhdGVkIGFwcHJveGltYXRlbHkgaW4gdGhlIApwb3NpdGlvbnMgc2hvd24gaW4gcmVkIG9uIFBsYXRlIFZJLCBhbmQgZGV0YWlsZWQgaW4gVGFibGUgSUkuIFRoZSByYWRpYXRpbmcgCnNwb2tlcyBvZiB0aGUgY2hha3JhcyBzdXBwbHkgZm9yY2UgdG8gdGhlc2Ugc3ltcGF0aGV0aWMgcGxleHVzZXMgdG8gYXNzaXN0IHRoZW0gCmluIHRoZWlyIHJlbGF5IHdvcms7IGluIHRoZSBwcmVzZW50IHN0YXRlIG9mIG91ciBrbm93bGVkZ2UgaXQgc2VlbXMgdG8gbWUgcmFzaCAKdG8gaWRlbnRpZnksIHRoZSBjaGFrcmFzIHdpdGggdGhlIHBsZXh1c2VzLCBhcyBzb21lIHdyaXRlcnMgYXBwZWFyIHRvIGhhdmUgCmRvbmUuwqAKCgrCoAoKCsKgCgoKVGhlIGh5cG9nYXN0cmljIG9yIHBlbHZpYyBwbGV4dXNlcyBhcmUgbm8gZG91YnQgY29ubmVjdGVkIGluIApzb21lIHdheSB3aXRoIHRoZSBTdmFkaGlzdGhhbmEgY2hha3JhIHNpdHVhdGVkIG5lYXIgdGhlIGdlbmVyYXRpdmUgb3JnYW5zLCB3aGljaCAKaXMgbWVudGlvbmVkIGluIEluZGlhbiBib29rcyBidXQgbm90IHVzZWQgaW4gb3VyIHNjaGVtZSBvZiBkZXZlbG9w77+9bWVudC4gVGhlIApwbGV4dXNlcyBncm91cGVkIHRvZ2V0aGVyIGluIHRoaXMgcmVnaW9uIGFyZSBwcm9iYWJseSBsYXJnZWx5IHN1Ym9yZGluYXRlIHRvIHRoZSAKc29sYXIgcGxleHVzIGluIGFsbCBtYXR0ZXJzIG9mIGNvbnNjaW91cyBhY3Rpdml0eSwgYXMgYm90aCB0aGV5IGFuZCB0aGUgc3BsZW5pYyAKcGxleHVzIGFyZSBjb25uZWN0ZWQgdmVyeSBjbG9zZWx5IHdpdGggaXQgYnkgbnVtZXJvdXMgbmVydmVzLgoKCsKgCgoKwqAKCgpOQU1FIE9GIENIQUtSQQoKClBPU0lUSU9OIE9OIFNVUkZBQ0UKCgpBUFBST1hJTUFURSBQT1NJVElPTiBPRiBTUElOQUwgQ0hBS1JBCgoKU1lQSEFURVRJQyBQTEVYVVMKCgpDSElFRiBTVUJTSURJQVJZIFBMRVhVU0VTCgoKUm9vdAoKCkJhc2Ugb2Ygc3BpbmUKCgo0dGggU2FjcmFsCgoKQ29jY3lnZWFsCgoK77+9CgoKU3BsZWVuCgoKT3ZlciB0aGUgc3BsZWVuCgoKMXN0IEx1bWJhcgoKClNwbGVuaWMKCgrvv70KCgpOYXZlbAoKCk92ZXIgdGhlIG5hdmVsCgoKOHRoIFRob3JhY2ljCgoKQ29lbGlhYyBvciBTb2xhcgoKCkhlcGF0aWMsIHB5bG9yaWMsIGdhc3RyaWMsIG1lc2VudGVyaWMsIGV0Yy4KCgpIZWFydAoKCk92ZXIgdGhlIGhlYXJ0CgoKOHRoIENlcnZpY2FsCgoKQ2FyZGlhYwoKClB1bG1vbmFyeSwgY29yb25hcnksIGV0Yy4KCgpUaHJvYXQKCgpBdCB0aGUgdGhyb2F0CgoKM3JkIENlcnZpY2FsCgoKUGhhcnluZ2VhbAoKCu+/vQoKCkJyb3cKCgpPbiB0aGUgYnJvdwoKCjFzdCBDZXJ2aWNhbAoKCkNhcm90aWQKCgpDYXZlcm5vdXMsIGFuZCBjZXBoYWxpYyBnYW5nbGlhIGdlbmVyYWxseQoKCsKgCgoKVEFCTEUgSUnCoAoKClRoZSBjcm93biBjaGFrcmEgaXMgbm90IGNvbm5lY3RlZCB3aXRoIGFueSBvZiB0aGUgc3ltcGF0aGV0aWMgCnBsZXh1c2VzIG9mIHRoZSBwaHlzaWNhbCBib2R5LCBidXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwaW5lYWwgZ2xhbmQgYW5kIHRoZSAKcGl0dWl0YXJ5IGJvZHksIGFzIHdlIHNoYWxsIHNlZSBpbiBDaGFwdGVyIElWLiBJdCBpcyByZWxhdGVkIGFsc28gdG8gdGhlIApkZXZlbG9wbWVudCBvZiB0aGUgYnJhZSBhbmQgc3BpbmFsIHN5c3RlbSBvZiBuZXJ2ZXMuCgoKT24gdGhlIG9yaWdpbiBhbmQgCnJlbGF0aW9ucyBvZiB0aGUgc3ltcGF0aGV0aWMgYW5kIGNlcmVicm8tc3BpbmFsIHN5c3RlbXMgRHIuIEFubmllIEJlc2FudCB3cml0ZXMgCmFzIGZvbGxvd3MgaW4gQSBTdHVkeSBpbiBDb25zY2lvdXNuZXNzOsKgCgoKTGV0IHVzIHNlZSBob3cgdGhlIGJ1aWxkaW5nIG9mIHRoZSBuZXJ2b3VzIHN5c3RlbSwgYnkgCnZpYnJhdG9yeSBpbXB1bHNlcyBmcm9tIHRoZSBhc3RyYWwsIGJlZ2lucyBhbmQgaXMgY2FycmllZCBvbi4gV2UgZmluZCBhIG1pbnV0ZSAKZ3JvdXAgb2YgbmVydmUgY2VsbHMgYW5kIHRpbnkgcHJvY2Vzc2VzIGNvbm5lY3RpbmcgdGhlbS4gVGhpcyBpcyBmb3JtZWQgYnkgdGhlIAphY3Rpb24gb2YgYSBjZW50cmUgd2hpY2ggaGFzIHByZe+/vXZpb3VzbHkgYXBwZWFyZWQgaW4gdGhlIGFzdHJhbCBib2R5IC0gYW4gCmFnZ3JlZ2F0aW9uIG9mIGFzdHJhbCBtYXR0ZXIgYXJyYW5nZWQgdG8gZm9ybSBhIGNlbnRyZSBmb3IgcmVjZWl2aW5nIGFuZCAKcmVzcG9uZGluZyB0byBpbXB1bHNlcyBmcm9tIG91dHNpZGUuIEZyb20gdGhhdCBhc3RyYWwgY2VudHJlIHZpYnJhdGlvbnMgcGFzcyAKaW50byB0aGUgZXRoZXJpYyBib2R5LCBjYXVzaW5nIGxpdHRsZSBldGhlcmljIHdoaXJscG9vbHMgd2hpY2ggZHJhdyBpbnRvIAp0aGVtc2VsdmVzIHBhcnRpY2xlcyBvZiBkZW5zZXIgcGh5c2ljYWwgbWF0dGVyLCBmb3JtaW5nIGF0IGxhc3QgYSBuZXJ2ZSBjZWxsLCAKYW5kIGdyb3VwcyBvZiBuZXJ2ZSBjZWxscy4gVGhlc2UgcGh5c2ljYWwgY2VudHJlcywgcmVjZWl2aW5nIHZpYnJhdGlvbnMgZnJvbSB0aGUgCm91dGVyIHdvcmxkLCBzZW5kIGltcHVsc2VzIGJhY2sgdG8gdGhlIGFzdHJhbCBjZW50cmVzLCBpbmNyZWFzaW5nIHRoZWlyIAp2aWJyYXRpb25zOyB0aHVzIHRoZSBwaHlzaWNhbCBhbmQgdGhlIGFzdHJhbCBjZW50cmVzIGFjdCBhbmQgcmUtYWN0IG9uIGVhY2ggCm90aGVyLCBhbmQgZWFjaCBiZWNvbWVzIG1vcmUgY29tcGxpY2F0ZWQgYW5kIG1vcmUgZWZmZWN0aXZlLiBBcyB3ZSBwYXNzIHVwIHRoZSAKYW5pbWFsIGtpbmdkb20sIHdlIGZpbmQgdGhlIHBoeXNpY2FsIG5lcnZvdXMgc3lzdGVtIGNvbnN0YW50bHkgaW1wcm92aW5nLCBhbmQgCmJlY29taW5nIGEgbW9yZSBhbmQgbW9yZSBkb21pbmFudCBhY3RvciBpbiB0aGUgYm9keSwgYW5kIHRoaXMgZmlyc3QtZm9ybWVkIApzeXN0ZW0gYmVjb21lcywgaW4gdGhlIHZlcnRlYnJhdGVzLCB0aGUgc3ltcGF0aGV0aWPCoCBzeXN0ZW0sIGNvbnRyb2xsaW5nIGFuZCAKZW5lcmdpc2luZyB0aGUgdml0YWwgb3JnYW5zIC0gdGhlIGhlYXJ0LCB0aGUgbHVuZ3MsIHRoZSBkaWdlc3RpdmUgdHJhY3Q7IGJlc2lkZSAKaXQgc2xvd2x5IGRldmVsb3BzIHRoZSBjZXJlYnJv77+9c3BpbmFsIHN5c3RlbSwgY2xvc2VseSBjb25uZWN0ZWQgaW4gaXRzIGxvd2VyIAp3b3JraW5ncyB3aXRoIHRoZSBzeW1wYXRoZXRpYywgYW5kIGJlY29taW5nIGdyYWR1YWxseSBtb3JlIGFuZCBtb3JlIGRvbWluYW50LCAKd2hpbGUgaXQgYWxzbyBiZWNvbWVzIGluIGl0cyBtb3N0IGltcG9ydGFudCBkZXZlbG9wbWVudCB0aGUgbm9ybWFsIG9yZ2FuIGZvciB0aGUgCmV4cHJlc3Npb24gb2YgdGhlIO+/vXdha2luZy1jb25zY2lvdXNuZXNz77+9LiBUaGlzIGNlcmVicm8tc3BpbmFsIHN5c3RlbSBpcyBidWlsdCB1cCAKYnkgaW1wdWxzZXMgb3JpZ2luYXRpbmcgaW4gdGhlIG1lbnRhbCwgbm90IGluIHRoZSBhc3RyYWwgcGxhbmUsIGFuZCBpcyBvbmx5IAppbmRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIGFzdHJhbCB0aHJvdWdoIHRoZSBzeW1wYXRoZXRpYyBzeXN0ZW0sIGJ1aWx0IHVwIGZyb20gCnRoZSBhc3RyYWwuW++/ve+/ve+/vV3CoAoKClZJVEFMSVRZwqAKCgpXZSBhbGwga25vdyB0aGUgZmVlbGluZyBvZiBjaGVlcmZ1bG5lc3MgYW5kIHdlbGwt77+9YmVpbmcgd2hpY2ggCnN1bmxpZ2h0IGJyaW5ncyB0byB1cywgYnV0IG9ubHkgc3R1ZGVudHMgb2Ygb2NjdWx0aXNtIGFyZSBmdWxseSBhd2FyZSBvZiB0aGUgCnJlYXNvbnMgZm9yIHRoYXQgc2Vuc2F0aW9uLiBKdXN0IGFzIHRoZSBzdW4gZmxvb2RzIGhpcyBzeXN0ZW0gd2l0aCBsaWdodCBhbmQgCmhlYXQsIHNvIGRvZXMgaGUgcGVycGV0dWFsbHkgcG91ciBvdXQgaW50byBpdCBhbm90aGVyIGZvcmNlIGFzIHlldCB1bnN1c3BlY3RlZCAKYnkgbW9kZXJuIHNjaWVuY2UgLSBhIGZvcmNlIHRvIHdoaWNoIGhhcyBiZWVuIGdpdmVuIHRoZSBuYW1lIO+/vXZpdGFsaXR577+9LiBUaGlzIGlzIApyYWRpYXRlZCBvbiBhbGwgbGV2ZWxzLCBhbmQgbWFuaWZlc3RzIGl0c2VsZiBpbiBlYWNoIHJlYWxtIC0gcGh5c2ljYWwsIAplbW90aW9uYWwsIG1lbnRhbCBhbmQgdGhlIHJlc3QgLSBidXQgd2UgYXJlIHNwZWNpYWxseSBjb25jZXJuZWQgZm9yIHRoZSBtb21lbnQgCndpdGggaXRzIGFwcGVhcmFuY2UgaW4gdGhlIGxvd2VzdCwgd2hlcmUgaXQgZW50ZXJzIHNvbWUgb2YgdGhlIHBoeXNpY2FsIGF0b21zLCAKaW1tZW5zZWx5IGluY3JlYXNlcyB0aGVpciBhY3Rpdml0eSwgYW5kIG1ha2VzIHRoZW0gYW5pbWF0ZWQgYW5kIGdsb3dpbmcuCgoKV2UgbXVzdCBub3QgY29uZnVzZSB0aGlzIGZvcmNlIHdpdGggZWxlY3RyaWNpdHksIHRob3VnaCBpdCBpbiAKc29tZSB3YXlzIHJlc2VtYmxlcyBpdCwgZm9yIGl0cyBhY3Rpb24gZGlmZmVycyBpbiBtYW55IHdheXMgZnJvbSB0aGF0IG9mIGVpdGhlciAKZWxlY3RyaWNpdHksIGxpZ2h0IG9yIGhlYXQuIEFueSBvZiB0aGUgdmFyaWFudHMgb2YgdGhpcyBsYXR0ZXIgZm9yY2UgY2F1c2UgCm9zY2lsbGF0aW9uIG9mIHRoZSBhdG9tIGFzIGEgd2hvbGUgLSBhbiBvc2NpbO+/vWxhdGlvbiB0aGUgc2l6ZSBvZiB3aGljaCBpcyAKZW5vcm1vdXMgYXMgY29tcGFyZWQgd2l0aCB0aGF0IG9mIHRoZSBhdG9tOyBidXQgdGhpcyBvdGhlciBmb3JjZSB3aGljaCB3ZSBjYWxsIAp2aXRhbGl0eSBjb21lcyB0byB0aGUgYXRvbSBub3QgZnJvbSB3aXRob3V0LCBidXQgZnJvbSB3aXRoaW4uwqAKCgpUSEUgVklUQUxJVFkgR0xPQlVMRcKgCgoKVGhlIGF0b20gaXMgaXRzZWxmIG5vdGhpbmcgYnV0IHRoZSBtYW5pZmVzdGF0aW9uIG9mIGEgZm9yY2U7IAp0aGUgU29sYXIgRGVpdHkgd2lsbHMgYSBjZXJ0YWluIHNoYXBlIHdoaWNoIHdlIGNhbGwgYW4gdWx0aW1hdGUgcGh5c2ljYWwgYXRvbSAKKEZpZy4gNyksIGFuZCBieSB0aGF0IGVmZm9ydCBvZiBIaXMgd2lsbCBzb21lIGZvdXJ0ZWVuIHRob3VzYW5kIG1pbGxpb24g77+9YnViYmxlcyAKaW4gS29pbG9u77+9IGFyZSBoZWxkIGluIHRoYXQgcGFydGljdWxhciBmb3JtLiBJdCBpcyBuZWNlc3NhcnkgdG8gZW1waGFzaXplIHRoZSAKZmFjdCB0aGF0IHRoZSBjb2hlc2lvbiBvZiB0aGUgYnViYmxlcyBpbiB0aGF0IGZvcm0gaXMgZW50aXJlbHkgZGVwZW5kZW50IHVwb24gCnRoYXQgZWZmb3J0IG9mIHdpbGwsIHNvIHRoYXQgaWYgdGhhdCB3ZXJlIGZvciBhIHNpbmdsZSBpbnN0YW50IHdpdGhkcmF3biwgdGhlIApidWJibGVzIG11c3QgZmFsbCBhcGFydCBhZ2FpbiwgYW5kIHRoZSB3aG9sZSBwaHlzaWNhbCByZWFsbSB3b3VsZCBzaW1wbHkgY2Vhc2UgCnRvIGV4aXN0IGluIGZhciBsZXNzIHRoYW4gdGhlIHBlcmlvZCBvZiBhIGZsYXNoIG9mIGxpZ2h0bmluZy4gU28gdHJ1ZSBpcyBpdCB0aGF0IAp0aGUgd29ybGQgaXMgbm90aGluZyBidXQgaWxsdXNpb24sIGV2ZW4gZnJvbSB0aGlzIHBvaW50IG9mIHZpZXcsIHRvIHNheSBub3RoaW5nIApvZiB0aGUgZmFjdCB0aGF0IHRoZSBidWJibGVzIG9mIHdoaWNoIHRoZSBhdG9tIGlzIGJ1aWx0IGFyZSB0aGVtc2VsdmVzIG9ubHkgCmhvbGVzIGluIEtvaWxvbiwgdGhlIHRydWUgYWV0aGVyIG9mIHNwYWNlLsKgCgoKwqAKCgpTbyBpdCBpcyB0aGUgd2lsbC1mb3JjZSBvZiB0aGUgU29sYXIgRGVpdHkgY29udGludWFsbHkgCmV4ZXJjaXNlZCB3aGljaCBob2xkcyB0aGUgYXRvbSB0b2dldGhlciBhcyBzdWNoOyBhbmQgd2hlbiB3ZSB0cnkgdG8gZXhhbWluZSB0aGUgCmFjdGlvbiBvZiB0aGF0IGZvcmNlIHdlIHNlZSB0aGF0IGl0IGRvZXMgbm90IGNvbWUgaW50byB0aGUgYXRvbSBmcm9tIG91dO+/vXNpZGUsIApidXQgd2VsbHMgdXAgd2l0aGluIGl0IC0gd2hpY2ggbWVhbnMgdGhhdCBpdCBlbnRlcnMgaXQgZnJvbSBoaWdoZXIgZGltZW5zaW9ucy4gClRoZSBzYW1lIGlzIHRydWUgd2l0aCByZWdhcmQgdG8gdGhpcyBvdGhlciBmb3JjZSB3aGljaCB3ZSBjYWxsIHZpdGFsaXR5OyBpdCAKZW50ZXJzIHRoZSBhdG9tIGZyb20gd2l0aGluIGFsb25nIHdpdGggdGhlIGZvcmNlIHRoYXQgaG9sZHMgdGhhdCBhdG9tIHRvZ2V0aGVyLCAKaW5zdGVhZCBvZiBhY3RpbmcgdXBvbiBpdCBlbnRpcmVseSBmcm9tIHdpdGhvdXQsIGFzIGRvIHRob3NlIG90aGVyIHZhcmlldGllcyBvZiAKZm9yY2Ugd2hpY2ggd2UgY2FsbCBsaWdodCwgaGVhdCBvciBlbGVjdHJpY2l0eS4KCgpXaGVuIHZpdGFsaXR5IHdlbGxzIHVwIHRodXMgd2l0aGluIGFuIGF0b20gaXQgZW5kb3dzIGl0IHdpdGggCmFuIGFkZGl0aW9uYWwgbGlmZSwgYW5kIGdpdmVzIGl0IGEgcG93ZXIgb2YgYXR0cmFjdGlvbiBzbyB0aGF0IGl0IGltbWVkaWF0ZWx5IApkcmF3cyByb3VuZCBpdCBzaXggb3RoZXIgYXRvbXMgd2hpY2ggaXQgYXJyYW5nZXMgaW4gYSBkZWZpbml0ZSBmb3JtLCB0aHVzIG1ha2luZyAKYSBzdWItYXRvbWljIG9yIGh5cGVyLW1ldGEtcHJvdG8tZWxlbWVudCwgYXMgSSBoYXZlIGFscmVhZHkgZXhwbGFpbmVkLiBCdXQgdGhpcyAKZWxlbWVudCBkaWZmZXJzIGZyb20gYWxsIG90aGVycyB3aGljaCBoYXZlIHNvIGZhciBiZWVuIG9ic2VydmVkLCBpbiB0aGF0IHRoZSAKZm9yY2Ugd2hpY2ggY3JlYXRlcyBpdCBhbmQgaG9sZHMgaXQgdG9nZXRoZXIgY29tZXMgZnJvbSB0aGUgRmlyc3QgQXNwZWN0IG9mIHRoZSAKU29sYXIgRGVpdHkgaW5zdGVhZCBvZiBmcm9tIHRoZSBUaGlyZC4KCgpUaGVzZSBnbG9idWxlcyBhcmUgY29uc3BpY3VvdXMgYWJvdmUgYWxsIG90aGVycyB3aGljaCBtYXkgYmUgCnNlZW4gZmxvYXRpbmcgaW4gdGhlIGF0bW9zcGhlcmUsIG9uIGFjY291bnQgb2YgdGhlaXIgYnJpbGxpYW5jZSBhbmQgZXh0cmVtZSAKYWN0aXZpdHkgLSB0aGUgaW50ZW5zZWx5IHZpdmlkIGxpZmUgd2hpY2ggdGhleSBzaG93LiBUaGVzZSBhcmUgcHJvYu+/vWFibHkgdGhlIApmaWVyeSBsaXZlcyBzbyBvZnRlbiBtZW50aW9uZWQgYnkgTWFkYW1lIEJsYXZhdHNreSwgYXMsIGZvciBleGFtcGxlLCBpbiBUaGUgClNlY3JldCBEb2N0cmluZSwgVm9sLiBJLCBwLiAzMDYsIHdoZXJlIHNoZSB3cml0ZXM6wqAKCgouLi4gV2UgYXJlIHRhdWdodCB0aGF0IGV2ZXJ5IHBoeXNpb2xvZ2ljYWwgY2hhbmdlLCDvv70gbmF5LCAKbGlmZSBpdHNlbGYsIG9yIHJhdGhlciB0aGUgb2JqZWN0aXZlIHBoZW5vbWVuYSBvZiBsaWZlLCBwcm9kdWNlZCBieSBjZXJ0YWluIApjb25kaXRpb25zIGFuZCBjaGFuZ2VzIGluIHRoZSB0aXNzdWVzIG9mIHRoZSBib2R5LCB3aGljaCBhbGxvdyBhbmQgZm9yY2UgbGlmZSB0byAKYWN0IGluIHRoYXQgYm9keSAtIHRoYXQgYWxsIHRoaXMgaXMgZHVlIHRvIHRob3NlIHVuc2VlbiDvv71DcmVhdG9yc++/vSBhbmQgCu+/vURlc3Ryb3llcnPvv70sIHdoaWNoIGFyZSBjYWxsZWQsIGluIHN1Y2ggYSBsb29zZSBhbmQgZ2VuZXJhbCB3YXksIG1pY3JvYmVzLiBJdCAKbWlnaHQgYmUgc3VwcG9zZWQgdGhhdCB0aGVzZSBGaWVyeSBMaXZlcyBhbmQgdGhlIG1pY3JvYmVzIG9mIFNjaWVuY2UgYXJlIAppZGVudGljYWwuIFRoaXMgaXMgbm90IHRydWUuIFRoZSBGaWVyeSBMaXZlcyBhcmUgdGhlIHNldmVudGggYW5kIGhpZ2hlc3QgCnN1Yi1kaXZpc2lvbiBvZiB0aGUgcGxhbmUgb2YgbWF0dGVyLCBhbmQgY29ycmVzcG9uZCBpbiB0aGUgaW5kaXZpZHVhbCB3aXRoIHRoZSAKT25lIExpZmUgb2YgdGhlIFVuaXZlcnNlLCB0aG91Z2ggb25seSBvbiB0aGF0IHBsYW5lIG9mIG1hdHRlci7CoAoKCldoaWxlIHRoZSBmb3JjZSB0aGF0IHZpdmlmaWVzIHRoZXNlIGdsb2J1bGVzIGlzIHF1aXRlIApkaWZmZXJlbnQgZnJvbSBsaWdodCwgaXQgbmV2ZXJ0aGVsZXNzIHNlZW1zIHRvIGRlcGVuZCB1cG9uIGxpZ2h0IGZvciBpdHMgcG93ZXIgCm9mIG1hbmlmZXN0YXRpb24uIEluIGJyaWxsaWFudCBzdW5zaGluZSB0aGlzIHZpdGFsaXR5IGlzIGNvbnN0YW50bHkgd2VsbGluZyB1cCAKYWZyZXNoLCBhbmQgdGhlIGdsb2J1bGVzIGFyZSBnZW5lcmF0ZWQgd2l0aCBncmVhdCByYXBpZGl0eSBhbmQgaW4gaW5jcmVkaWJsZSAKbnVtYmVycywgYnV0IGluIGNsb3VkeSB3ZWF0aGVyIHRoZXJlIGlzIGEgZ3JlYXQgZGltaW51dGlvbiBpbiB0aGUgbnVtYmVyIG9mIApnbG9idWxlcyBmb3JtZWQsIGFuZCBkdXJpbmcgdGhlIG5pZ2h0LCBzbyBmYXIgYXMgd2UgaGF2ZSBiZWVuIGFibGUgdG8gc2VlLCB0aGUgCm9wZXJhdGlvbiBpcyBlbnRpcmVseSBzdXNwZW5kZWQuIEluIHRoZSBuaWdodCwgdGhlcmVmb3JlLCB3ZSBtYXkgYmUgc2FpZCB0byBiZSAKbGl2aW5nIHVwb24gdGhlIHN0b2NrIG1hbnVmYWN0dXJlZCBpbiB0aGUgY291cnNlIG9mIHByZXZpb3VzIGRheXMsIGFuZCB0aG91Z2ggaXQgCmFwcGVhcnMgcHJhY3RpY2FsbHkgaW1wb3NzaWJsZSB0aGF0IGl0IHNob3VsZCBldmVyIGJlIGVudGlyZWx5IGV4aGF1c3RlZCwgdGhhdCAKc3RvY2sgZXZpZGVudGx5IGRvZXMgcnVuIGxvdyB3aGVuIHRoZXJlIGlzIGEgbG9uZyBzdWNjZXNzaW9uIG9mIGNsb3VkeSBkYXlzLiBUaGUgCmdsb2J1bGUsIG9uY2UgY2hhcmdlZCwgcmVtYWlucyBhcyBhIHN1Yi1hdG9taWMgZWxlbWVudCwgYW5kIGlzIG5vdCBzdWJqZWN0IHRvIAphbnkgY2hhbmdlIG9yIGxvc3Mgb2YgZm9yY2UgdW5sZXNzIGFuZCB1bnRpbCBpdCBpcyBhYnNvcmJlZCBieSBzb21lIGxpdmluZyAKY3JlYXR1cmUuwqAKCgpUSEUgU1VQUExZIE9GIEdMT0JVTEVTwqAKCgpWaXRhbGl0eSwgbGlrZSBsaWdodCBhbmQgaGVhdCwgaXMgcG91cmluZyBmb3J0aCBmcm9tIHRoZSBzdW4gCmNvbnRpbnVhbGx5LCBidXQgb2JzdGFjbGVzIGZyZXF1ZW50bHkgYXJpc2UgdG8gcHJldmVudCB0aGUgZnVsbCBzdXBwbHkgZnJvbSAKcmVhY2hpbmcgdGhlIGVhcnRoLiBJbiB0aGUgd2ludHJ5IGFuZCBtZWxhbmNob2x5IGNsaW1lcyBtaXNjYWxsZWQgdGhlIHRlbXBlcmF0ZSwgCml0IHRvbyBvZnRlbiBoYXBwZW5zIHRoYXQgZm9yIGRheXMgdG9nZXRoZXIgdGhlIHNreSBpcyBjb3ZlcmVkIGJ5IGEgZnVuZXJhbCBwYWxsIApvZiBoZWF2eSBjbG91ZCwgYW5kIHRoaXMgYWZmZWN0cyB2aXRhbGl0eSBqdXN0IGFzIGl0IGRvZXMgbGlnaHQ7IGl0IGRvZXMgbm90IAphbHRvZ2V0aGVyIGhpbmRlciBpdHMgcGFzc2FnZSwgYnV0IHNlbnNpYmx5IGRpbWluaXNoZXMgaXRzIGFtb3VudC4gVGhlcmVmb3JlIGluIApkdWxsIGFuZCBkYXJrIHdlYXRoZXIgdml0YWxpdHkgcnVucyBsb3csIGFuZCBvdmVyIGFsbCBsaXZpbmcgY3JlYXR1cmVzIHRoZXJlIApjb21lcyBhbiBpbnN0aW5jdGl2ZSB5ZWFybmluZyBmb3Igc3VubGlnaHQuCgoKV2hlbiB2aXRhbGl6ZWQgYXRvbXMgYXJlIHRodXMgbW9yZSBzcGFyc2VseSBzY2F0dGVyZWQsIHRoZSAKbWFuIGluIHJ1ZGUgaGVhbHRoIGluY3JlYXNlcyBoaXMgcG93ZXIgb2YgYWJzb3JwdGlvbiwgZGVwbGV0ZXMgYSBsYXJnZXIgYXJlYSwgCmFuZCBzbyBrZWVwcyBoaXMgc3RyZW5ndGggYXQgdGhlIG5vcm1hbCBsZXZlbDsgYnV0IGludmFsaWRzIGFuZCBtZW4gb2Ygc21hbGwgCm5lcnZlLWZvcmNlLCB3aG8gY2Fubm90IGRvIHRoaXMsIG9mdGVuIHN1ZmZlciBzZXZlcmVseSwgYW5kIGZpbmQgdGhlbXNlbHZlcyAKZ3Jvd2luZyB3ZWFrZXIgYW5kIG1vcmUgaXJyaXRhYmxlIHdpdGhvdXQga25vd2luZyB3aHkuIEZvciBzaW1pbGFyIHJlYXNvbnMgCnZpdGFsaXR5IGlzIGF0IGEgbG93ZXIgZWJiIGluIHRoZSB3aW50ZXIgdGhhbiBpbiB0aGUgc3VtbWVyLCBmb3IgZXZlbiBpZiB0aGUgCnNob3J0IHdpbnRlciBkYXkgYmUgc3VubnksIHdoaWNoIGlzIHJhcmUsIHdlIGhhdmUgc3RpbGwgdG8gZmFjZSB0aGUgbG9uZyBhbmQgCmRyZWFyeSB3aW50ZXIgbmlnaHQsIGR1cmluZyB3aGljaCB3ZSBtdXN0IGV4aXN0IHVwb24gc3VjaCB2aXRhbGl0eSBhcyB0aGUgZGF5IApoYXMgc3RvcmVkIGluIG91ciBhdG1vc3BoZXJlLiBPbiB0aGUgb3RoZXIgaGFuZCB0aGUgbG9uZyBzdW1tZXIgZGF5LCB3aGVuIGJyaWdodCAKYW5kIGNsb3VkbGVzcywgY2hhcmdlcyB0aGUgYXRtb3NwaGVyZSBzbyB0aG9yb3VnaGx5IHdpdGggdml0YWxpdHkgdGhhdCBpdHMgc2hvcnQgCm5pZ2h0IG1ha2VzIGJ1dCBsaXR0bGUgZGlmZmVyZW5jZS4KCgpGcm9tIHRoZSBzdHVkeSBvZiB0aGlzIHF1ZXN0aW9uIG9mIHZpdGFsaXR5LCB0aGUgb2NjdWx0aXN0IApjYW5ub3QgZmFpbCB0byByZWNvZ25pemUgdGhhdCwgcXVpdGUgYXBhcnQgZnJvbSB0ZW1wZXJhdHVyZSwgc3VubGlnaHQgaXMgb25lIG9mIAp0aGUgbW9zdCBpbXBvcnRhbnQgZmFjdG9ycyBpbiB0aGUgYXR0YWlubWVudCBhbmQgcHJlc2VydmF0aW9uIG9mIHBlcmZlY3QgaGVhbHRoIAotIGEgZmFjdG9yIGZvciB0aGUgYWJzZW5jZSBvZiB3aGljaCBub3RoaW5nIGVsc2UgY2FuIGVudGlyZWx5IGNvbXBlbnNhdGUuIFNpbmNlIAp0aGlzIHZpdGFsaXR5IGlzIHBvdXJlZCBmb3J0aCBub3Qgb25seSB1cG9uIHRoZSBwaHlzaWNhbCB3b3JsZCBidXQgdXBvbiBhbGwgCm90aGVycyBhcyB3ZWxsLCBpdCBpcyBldmlkZW50IHRoYXQsIHdoZW4gaW4gb3RoZXIgcmVzcGVjdHMgc2F0aXNmYWN0b3J5IApjb25kaXRpb25zIGFyZSBwcmVzZW50LCBlbW90aW9uLCBpbnRlbGxlY3QgYW5kIHNwaXJpdHVhbGl0eSB3aWxsIGJlIGF0IHRoZWlyIApiZXN0IHVuZGVyIGNsZWFyIHNraWVzIGFuZCB3aXRoIHRoZSBpbmVzdGltYWJsZSBhaWQgb2YgdGhlIHN1bmxpZ2h0LsKgCgoKUFNZQ0hJQyBGT1JDRVPCoAoKClRoZSB0aHJlZSBmb3JjZXMgYWxyZWFkeSBtZW50aW9uZWQgLSB0aGUgcHJpbWFyeSwgdGhlIAp2aXRhbGl0eSBhbmQgdGhlIEt1bmRhbGluaSAtIGFyZSBub3QgZGlyZWN0bHkgY29u77+9bmVjdGVkIHdpdGggbWFu77+9cyBtZW50YWwgYW5kIAplbW90aW9uYWwgbGlmZSwgYnV0IG9ubHkgd2l0aCBoaXMgYm9kaWx5IHdlbGwtYmVpbmcuIEJ1dCB0aGVyZSBhcmUgYWxzbyBmb3JjZXMgCmVudGVyaW5nIHRoZSBjaGFrcmFzIHdoaWNoIG1heSBiZSBkZXNjcmliZWQgYXMgcHN5Y2hpYyBhbmQgc3Bpcml0dWFsLiBUaGUgZmlyc3QgCnR3byBjZW50cmVzIGV4aGliaXQgbm9uZSBvZiB0aGVzZSwgYnV0IHRoZSBuYXZlbCBjaGFrcmEgYW5kIHRoZSBvdGhlcnMgaGlnaGVyIGluIAp0aGUgYm9keSBhcmUgcG9ydHMgb2YgZW50cnkgZm9yIGZvcmNlcyB3aGljaCBhZmZlY3QgaHVtYW4gY29uc2Npb3VzbmVzcy4KCgpJbiBhbiBhcnRpY2xlIG9uIFRob3VnaHQtQ2VudHJlcyBpbiB0aGUgYm9vayBUaGUgSW5uZXIgCkxpZmUsIEkgZXhwbGFpbmVkIHRoYXQgbWFzc2VzIG9mIHRob3VnaHQgYXJlIHZlcnkgZGVmaW5pdGUgdGhpbmdzLCBvY2N1cHlpbmcgCmEgcGxhY2UgaW4gc3BhY2UuIFRob3VnaHRzIG9uIHRoZSBzYW1lIHN1YmplY3QgYW5kIG9mIHRoZSBzYW1lIGNoYXJhY3RlciB0ZW5kIHRvIAphZ2dyZWdhdGU7IHRoZXJlZm9yZSBmb3IgbWFueSBzdWJqZWN0cyB0aGVyZSBpcyBhIHRob3VnaHQtY2VudHJlLCBhIGRlZmluaXRlIApzcGFjZSBpbiB0aGUgYXRtb3NwaGVyZSwgYW5kIG90aGVyIHRob3VnaHRzIGFib3V0IHRoZSBzYW1lIG1hdHRlciBhcmUgYXR0cmFjdGVkIAp0byBzdWNoIGEgY2VudHJlLCBhbmQgZ28gdG8gaW5jcmVhc2UgaXRzIHNpemUgYW5kIGluZmx1ZW5jZS4gQSB0aGlua2VyIG1heSBpbiAKdGhpcyB3YXkgY29udHJpYnV0ZSB0byBhIGNlbnRyZSwgYnV0IGhlIGluIHR1cm4gbWF5IGJlIGluZmx1ZW5jZWQgYnkgaXQ7IGFuZCAKdGhpcyBpcyBvbmUgb2YgdGhlIHJlYXNvbnMgd2h5IHBlb3BsZSB0aGluayBpbiBkcm92ZXMsIGxpa2Ugc2hlZXAuIEl0IGlzIG11Y2ggCmVhc2llciBmb3IgYSBtYW4gb2YgbGF6eSBtZW50YWxpdHkgdG8gYWNjZXB0IGEgcmVhZHktbWFkZSB0aG91Z2h0IGZyb20gc29tZW9uZSAKZWxzZSB0aGFuIHRvIGdvIHRocm91Z2ggdGhlIG1lbnRhbCBsYWJvdXIgb2YgY29uc2lkZXJpbmcgdGhlIHZhcmlvdXMgYXNwZWN0cyBvZiAKYSBzdWJqZWN0IGFuZCBhcnJpdmluZyBhdCBhIGRlY2lzaW9uIGZvciBoaW1zZWxmLgoKClRoaXMgaXMgdHJ1ZSBvbiB0aGUgbWVudGFsIHBsYW5lIHdpdGggcmVnYXJkIHRvIHRob3VnaHQ7IGFuZCwgCndpdGggYXBwcm9wcmlhdGUgbW9kaWZpY2F0aW9ucywgaXQgaXMgdHJ1ZSBvbiB0aGUgYXN0cmFsIHBsYW5lIHdpdGggcmVnYXJkIHRvIApmZWVsaW5nLiBUaG91Z2h0IGZsaWVzIGxpa2UgbGlnaHRuaW5nIHRocm91Z2ggdGhlIHN1YnRsZSBtYXR0ZXIgb2YgdGhlIG1lbnRhbCAKcGxhbmUsIHNvIHRoZSB0aG91Z2h0IG9mIHRoZSB3aG9sZSB3b3JsZCBvbiBhIGNlcnRhaW4gc3ViamVjdCBtYXkgZWFzaWx5IGdhdGhlciAKdG9nZXRoZXIgaW4gb25lIHNwb3QsIGFuZCB5ZXQgYmUgYWNjZXNzaWJsZSBhbmQgYXR0cmFjdGl2ZSB0byBldmVyeSB0aGlua2VyIG9uIAp0aGF0IHN1YmplY3QuIEFzdHJhbCBtYXR0ZXIsIHRob3VnaCBzbyBmYXIgZmluZXIgdGhhbiBwaHlzaWNhbCwgaXMgeWV0IGRlbnNlciAKdGhhbiB0aGF0IG9mIHRoZSBtZW50YWwgcGxhbmU7IHRoZSBncmVhdCBjbG91ZHMgb2Yg77+9ZW1vdGlvbi1mb3Jtc++/vSB3aGljaCBhcmUgCmdlbmVyYXRlZCBpbiB0aGUgYXN0cmFsIHdvcmxkIGJ5IHN0cm9uZyBmZWVsaW5ncyBkbyBub3QgYWxsIGZseSB0byBvbmUgCndvcmxkLWNlbnRyZSwgYnV0IHRoZXkgZG8gY29hbGVzY2Ugd2l0aCBvdGhlciBmb3JtcyBvZiB0aGUgc2FtZSBuYXR1cmUgaW4gdGhlaXIgCm93biBuZWlnaGJvdXJob29kLCBzbyB0aGF0IGVub3Jtb3VzIGFuZCB2ZXJ5IHBvd2VyZnVsIO+/vWJsb2Nrc++/vSBvZiBmZWVsaW5nIGFyZSAKZmxvYXRpbmcgYWJvdXQgYWxtb3N0IGV2ZXJ5d2hlcmUsIGFuZCBhIG1hbiBtYXkgcmVhZGlseSBjb21lIGludG8gY29udGFjdCB3aXRoIAp0aGVtIGFuZCBiZSBpbmZsdWVuY2VkIGJ5IHRoZW0uCgoKVGhlIGNvbm5lY3Rpb24gb2YgdGhpcyBtYXR0ZXIgd2l0aCBvdXIgcHJlc2VudCBzdWJqZWN0IGxpZXMgCmluIHRoZSBmYWN0IHRoYXQgd2hlbiBzdWNoIGluZmx1ZW5jZSBpcyBleGVyY2lzZWQgaXQgaXMgdGhyb3VnaCB0aGUgbWVkaXVtIG9mIApvbmUgb3Igb3RoZXIgb2YgdGhlIGNoYWtyYXMuIFRvIGlsbHVzdHJhdGUgd2hhdCBJIG1lYW4sIGxldCBtZSB0YWtlIHRoZSBleGFtcGxlIApvZiBhIG1hbiB3aG8gaXMgZmlsbGVkIHdpdGggZmVhci4gVGhvc2Ugd2hvIGhhdmUgcmVhZCB0aGUgYm9vayBNYW4gVmlzaWJsZSAKYW5kIElu77+9dmlzaWJsZSB3aWxsIHJlbWVtYmVyIHRoYXQgdGhlIGNvbmRpdGlvbiBvZiB0aGUgYXN0cmFsIGJvZHkgb2Ygc3VjaCBhIAptYW4gaXMgc2hvd24gaW4gUGxhdGUgWElWLiBUaGUgdmlicmF0aW9ucyByYWRpYXRlZCBieSBhbiBhc3RyYWwgYm9keSBpbiB0aGF0IApzdGF0ZSB3aWxsIGF0IG9uY2UgYXR0cmFjdCBhbnkgZmVhci1jbG91ZHMgdGhhdCBoYXBwZW4gdG8gYmUgaW4gdGhlIHZpY2luaXR5OyBpZiAKdGhlIG1hbiBjYW4gcXVpY2tseSByZWNvdmVyIGhpbXNlbGYgYW5kIG1hc3RlciBoaXMgZmVhciwgdGhlIGNsb3VkcyB3aWxsIHJvbGwgCmJhY2sgc3VsbGVubHksIGJ1dCBpZiB0aGUgZmVhciByZW1haW5zIG9yIGluY3JlYXNlcyB0aGV5IHdpbGwgZGlzY2hhcmdlIHRoZWlyIAphY2N1bXVsYXRlZCBlbmVyZ3kgdGhyb3VnaCBoaXMgdW1iaWxpY2FsIGNoYWtyYSwgYW5kIGhpcyBmZWFyIG1heSBiZWNvbWUgbWFkIApwYW5pYyBpbiB3aGljaCBoZSBhbHRvZ2V0aGVyIGxvc2VzIGNvbnRyb2wgb2YgaGltc2VsZiwgYW5kIG1heSBydXNoIGJsaW5kbHkgaW50byAKYW55IGtpbmQgb2YgZGFuZ2VyLiBJbiB0aGUgc2FtZSB3YXkgb25lIHdobyBsb3NlcyBoaXMgdGVtcGVyIGF0dHJhY3RzIGNsb3VkcyBvZiAKYW5nZXIsIGFuZCByZW5kZXJzIGhpbXNlbGYgbGlhYmxlIHRvIGFuIGlucnVzaCBvZiBmZWVsaW5nIHdoaWNoIHdpbGwgY2hhbmdlIGhpcyAKaW5kaWduYXRpb24gaW50byBtYW5pYWNhbCBmdXJ5IC0gYSBjb25kaXRpb24gaW4gd2hpY2ggaGUgbWlnaHQgY29tbWl0IG11cmRlciBieSAKYW4gaXJyZXNpc3RpYmxlIGltcHVsc2UsIGFsbW9zdCB3aXRob3V0IGtub3dpbmcgaXQuIFNpbWlsYXJseSBhIG1hbiB3aG8geWllbGRzIAp0byBkZXByZXNzaW9uIG1heSBiZSBzd2VwdCBpbnRvIGEgdGVycmlibGUgc3RhdGUgb2YgcGVybWFuZW50IG1lbGFuY2hvbGlhOyBvciAKb25lIHdobyBhbGxvd3MgaGltc2VsZiB0byBiZSBvYnNlc3NlZCBieSBhbmltYWwgZGVzaXJlcyBtYXkgYmVjb21lIGZvciB0aGUgdGltZSAKYSBtb25zdGVyIG9mIGx1c3QgYW5kIHNlbnN1YWxpdHksIGFuZCBtYXkgdW5kZXIgdGhhdCBpbmZsdWVuY2UgY29tbWl0IGNyaW1lcyB0aGUgCnRob3VnaHQgb2Ygd2hpY2ggd2lsbCBob3JyaWZ5IGhpbSB3aGVuIGhlIHJlY292ZXJzIGhpcyByZWFzb24uCgoKQWxsIHN1Y2ggdW5kZXNpcmFibGUgY3VycmVudHMgcmVhY2ggdGhlIG1hbiB0aHJvdWdoIHRoZSBuYXZlbCAKY2hha3JhLiBGb3J0dW5hdGVseSB0aGVyZSBhcmUgb3RoZXIgYW5kIGhpZ2hlciBwb3NzaWJpbGl0aWVzOyBmb3IgZXhhbXBsZSB0aGVyZSAKYXJlIGNsb3VkcyBvZiBhZmZlY3Rpb24gYW5kIG9mIGRldm90aW9uLCBhbmQgaGUgd2hvIGZlZWxzIHRoZXNlIG5vYmxlIGVtb3Rpb25zIAptYXkgcmVjZWl2ZSB0aHJvdWdoIGhpcyBoZWFydCBjaGFrcmEgYSB3b25kZXJmdWwgZW5oYW5jZW1lbnQgb2YgdGhlbSwgc3VjaCBhcyBpcyAKZGVwaWN0ZWQgaW4gTWFuIFZpc2libGUgYW5kIEludmlzaWJsZSBpbiBQbGF0ZXMgWEkgYW5kIFhJSS4KCgpUaGUga2luZCBvZiBlbW90aW9uIHdoaWNoIGFmZmVjdHMgdGhlIG5hdmVsIGNoYWtyYSBpbiB0aGUgCm1hbm5lciBiZWZvcmUtbWVudGlvbmVkIGlzIGluZGljYXRlZCBpbiBEci4gQmVzYW5077+9cyBBIFN0dWR5IGluIENvbnNjaW91c25lc3MsIAp3aGVyZSBzaGUgZGl2aWRlcyB0aGUgZW1vdGlvbnMgaW50byB0d28gY2xhc3NlcywgdGhvc2Ugb2YgbG92ZSBhbmQgdGhvc2Ugb2YgCmhhdGUuIEFsbCB0aG9zZSBvbiB0aGUgc2lkZSBvZiBoYXRlIHdvcmsgaW4gdGhlIG5hdmVsIGNoYWtyYSBidXQgdGhvc2Ugb24gdGhlIApzaWRlIG9mIGxvdmUgb3BlcmF0ZSBpbiB0aGUgaGVhcnQuIFNoZSB3cml0ZXM6wqAKCgpXZSBoYXZlIHNlZW4gdGhhdCBkZXNpcmUgaGFzIHR3byBtYWluIGV4cHJlc3Npb25zOiBkZXNpcmUgdG8gCmF0dHJhY3QsIGluIG9yZGVyIHRvIHBvc3Nlc3MsIG9yIGFnYWluIHRvIGNvbWUgaW50byBjb250YWN0IHdpdGgsIGFueSBvYmplY3QgCndoaWNoIGhhcyBwcmV2aW91c2x5IGFmZm9yZGVkIHBsZWFzdXJlOyBkZXNpcmUgdG8gcmVwZWwsIGluIG9yZGVyIHRvIGRyaXZlIGZhciAKYXdheSwgb3IgdG8gYXZvaWQgY29udGFjdCB3aXRoLCBhbnkgb2JqZWN0IHdoaWNoIGhhcyBwcmV2aW91c2x5IGluZmxpY3RlZCBwYWluLiAKV2UgaGF2ZSBzZWVuIHRoYXQgYXR0cmFjdGlvbiBhbmQgcmVwdWxzaW9uIGFyZSB0aGUgdHdvIGZvcm1zIG9mIGRlc2lyZSwgc3dheWluZyAKdGhlIFNlbGYuCgoKRW1vdGlvbiwgYmVpbmcgZGVzaXJlIGluZnVzZWQgd2l0aCBpbnRlbGxlY3QsIGluZXZpdGFibHkgCnNob3dzIHRoZSBzYW1lIGRpdmlzaW9uIGludG8gdHdvLiBUaGUgZW1vdGlvbiB3aGljaCBpcyBvZiB0aGUgbmF0dXJlIG9mIAphdHRyYWN0aW9uLCBhdHRyYWN0aW5nIG9iamVjdHMgdG8gZWFjaCBvdGhlciBieSBwbGVhc3VyZSwgdGhlIGludGVncmF0aW5nIGVuZXJneSAKaW4gdGhlIHVuaXZlcnNlLCBpcyBjYWxsZWQgbG92ZS4gVGhlIGVtb3Rpb24gd2hpY2ggaXMgb2YgdGhlIG5hdHVyZSBvZiAKcmVwdWxzaW9uLCBkcml2aW5nIG9iamVjdHMgYXBhcnQgZnJvbSBlYWNoIG90aGVyIGJ5IHBhaW4sIHRoZSBkaXNpbnRlZ3JhdGluZyAKZW5lcmd5IGluIHRoZSB1bml2ZXJzZSwgaXMgY2FsbGVkIGhhdGUuIFRoZXNlIGFyZSB0aGUgdHdvIHN0ZW1zIGZyb20gdGhlIHJvb3Qgb2YgCmRlc2lyZSwgYW5kIGFsbCB0aGUgYnJhbmNoZXMgb2YgdGhlIGVtb3Rpb25zIG1heSBiZSB0cmFjZWQgYmFjayB0byBvbmUgb2YgdGhlc2UgCnR3YWluLgoKCkhlbmNlIHRoZSBpZGVudGl0eSBvZiB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIGRlc2lyZSBhbmQgCmVtb3Rpb25zOyBsb3ZlIHNlZWtzIHRvIGRyYXcgdG8gaXRzZWxmIHRoZSBhdHRyYWN0aXZlIG9iamVjdCwgb3IgdG8gZ28gYWZ0ZXIgaXQsIAppbiBvcmRlciB0byB1bml0ZSB3aXRoIGl0LCB0byBwb3NzZXNzLCBvciB0byBiZSBwb3NzZXNzZWQgYnkgaXQuIEl0IGJpbmRzIGJ5IApwbGVhc3VyZSwgYnkgaGFwcGluZXNzLCBhcyBkZXNpcmUgYmluZHMuIEl0cyB0aWVzIGFyZSBpbmRlZWQgbW9yZSBsYXN0aW5nLCBtb3JlIApjb21wbGljYXRlZCwgYXJlIGNvbXBvc2VkIG9mIG1vcmUgbnVtZXJvdXMgYW5kIG1vcmUgZGVsaWNhdGUgdGhyZWFkcyBpbnRlcndvdmVuIAppbnRvIGdyZWF0ZXIgY29tcGxleGl0eSwgYnV0IHRoZSBlc3NlbmNlIG9mIGRlc2lyZS1hdHRyYWN0aW9uLCB0aGUgYmluZGluZyBvZiAKdHdvIG9iamVjdHMgdG9nZXRoZXIsIGlzIHRoZSBlc3NlbmNlIG9mIGVtb3Rpb24tYXR0cmFjdGlvbiwgb2YgbG92ZS4gQW5kIHNvIGFsc28gCmRvZXMgaGF0ZSBzZWVrIHRvIGRyaXZlIGZyb20gaXRzZWxmIHRoZSByZXBlbGxlbnQgb2JqZWN0IG9yIHRvIGZsZWUgZnJvbSBpdCwgaW4gCm9yZGVyIHRvIGJlIGFwYXJ0IGZyb20gaXQsIHRvIHJlcHVsc2UsIG9yIGJlIHJlcHVsc2VkIGJ5IGl0LiBJdCBzZXBhcmF0ZXMgYnkgCnBhaW4sIGJ5IHVuaGFwcGluZXNzLiBBbmQgdGh1cyB0aGUgZXNzZW5jZSBvZiBkZXNpcmUtcmVwdWxzaW9uLCB0aGUgZHJpdmluZyAKYXBhcnQgb2YgdHdvIG9iamVjdHMsIGlzIHRoZSBlc3NlbmNlIG9mIGVtb3Rpb24tcmVwdWxzaW9uLCBvZiBoYXRlLiBMb3ZlIGFuZCAKaGF0ZSBhcmUgdGhlIGVsYWJvcmF0ZWQgYW5kIHRob3VnaHQtaW5mdXNlZCBmb3JtcyBvZiB0aGUgc2ltcGxlIGRlc2lyZXMgdG8gCnBvc3Nlc3MgYW5kIHRvIHNodW4uwqAKCgpMYXRlciBvbiwgRHIuIEJlc2FudCBleHBsYWlucyB0aGF0IGVhY2ggb2YgdGhlZSB0d28gZ3JlYXQgCmVtb3Rpb25zIHN1YmRpdmlkZXMgaW50byB0aHJlZSBwYXJ0cywgYWPvv71jb3JkaW5nIGFzIHRoZSBtYW4gd2hvIGhhcyBpdCBmZWVscyAKc3Ryb25nIG9yIHdlYWsuwqAKCgpMb3ZlIGxvb2tpbmcgZG93bndhcmRzIGlzIGJlbmV2b2xlbmNlOyBsb3ZlIGxvb2tpbmcgdXB3YXJkcyAKaXMgcmV2ZXJlbmNlOyBhbmQgdGhlc2UgYXJlIHRoZSBzZXZlcmFsIGNvbW1vbiBjaGFyYWN0ZXJpc++/vXRpY3Mgb2YgbG92ZSBmcm9tIApzdXBlcmlvcnMgdG8gaW5mZXJpb3JzLCBhbmQgZnJvbSBpbmZlcmlvcnMgdG8gc3VwZXJpb3JzIHVuaXZlcnNhbGx5LiBUaGUgbm9ybWFsIApyZWxhdGlvbnMgYmV0d2VlbiBodXNiYW5kIGFuZCB3aWZlLCBhbmQgdGhvc2UgYmV0d2VlbiBicm90aGVycyBhbmQgc2lzdGVycywgCmFmZm9yZCB1cyB0aGUgZmllbGQgZm9yIHN0dWR5aW5nIHRoZSBtYW5pZmVzdGF0aW9uIG9mIGxvdmUgYmV0d2VlbiBlcXVhbHMuIFdlIApzZWUgbG92ZSBzaG93aW5nIGl0c2VsZiBhcyBtdXR1YWwgdGVuZGVybmVzcyBhbmQgbXV0dWFsIHRydXN0ZnVsbmVzcywgYXMgCmNvbnNpZGVyYXRpb24sIHJlc3BlY3QsIGFuZCBkZXNpcmUgdG8gcGxlYXNlLCBhcyBxdWljayBpbnNpZ2h0IGludG8gYW5kIAplbmRlYXZvdXIgdG8gZnVsZmlsIHRoZSB3aXNoZXMgb2YgdGhlIG90aGVyLCBhcyBtYWduYW5pbWl0eSwgZm9yYmVhcmFuY2UuIFRoZSAKZWxlbWVudHMgcHJlc2VudCBpbiB0aGUgbG92ZS1lbW90aW9ucyBvZiBzdXBlcmlvciB0byBpbmZlcmlvciBhcmUgZm91bmQgaGVyZSwgCmJ1dCBtdXR1YWxpdHkgaXMgaW1wcmVzc2VkIG9uIGFsbCBvZiB0aGVtLiBTbyB3ZSBtYXkgc2F5IHRoYXQgdGhlIGNvbW1vbiAKY2hhcmFjdGVyaXN0aWNzIG9mIGxvdmUgYmV0d2VlbiBlcXVhbHMgaXMgZGVzaXJlIGZvciBtdXR1YWwgaGVscC4KCgpUaHVzIHdlIGhhdmUgYmVuZXZvbGVuY2UsIGRlc2lyZSBmb3IgbXV0dWFsIGhlbHAsIGFuZCAKcmV2ZXJlbmNlIGFzIHRoZSB0aHJlZSBtYWluIGRpdmlzaW9ucyBvZiB0aGUgbG92ZS1lbW90aW9uLCBhbmQgdW5kZXIgdGhlc2UgYWxsIApsb3ZlIGVtb3Rpb25zIG1heSBiZSBjbGFzc2lmaWVkLiBGb3IgYWxsIGh1bWFuIHJlbGF0aW9ucyBhcmUgc3VtbWVkIHVwIHVuZGVyIHRoZSAKdGhyZWUgY2xhc3NlczogdGhlIHJlbGF0aW9ucyBvZiBzdXBlcmlvcnMgdG8gaW5mZXJpb3JzLCBvZiBlcXVhbHMgdG8gZXF1YWxzLCBvZiAKaW5mZXJpb3JzIHRvIHN1cGVyaW9ycy7CoAoKClNoZSB0aGVuIGV4cGxhaW5zIHRoZSBoYXRlLWVtb3Rpb25zIGluIHRoZSBzYW1lIHdheTrCoAoKCkhhdGUgbG9va2luZyBkb3dud2FyZHMgaXMgc2Nvcm4sIGFuZCBsb29raW5nIHVwd2FyZHMgaXMgZmVhci4gClNpbWlsYXJseSwgaGF0ZSBiZXR3ZWVuIGVxdWFscyB3aWxsIHNob3cgaXRzZWxmIGluIGFuZ2VyLCBjb21iYXRpdmVuZXNzLCAKZGlzcmVzcGVjdCwgdmlvbGVuY2UsIGFnZ3Jlc3NpdmVuZXNzLCBqZWFsb3VzeSwgaW7vv71zb2xlbmNlLCBldGMuIC0gYWxsIHRoZSAKZW1vdGlvbnMgd2hpY2ggcmVwZWwgbWFuIGZyb20gbWFuIHdoZW4gdGhleSBzdGFuZCBhcyByaXZhbHMsIGZhY2UgdG8gZmFjZSwgbm90IApoYW5kIGluIGhhbmQuIFRoZSBjb21tb24gY2hhcmFjdGVyaXN0aWMgb2YgaGF0ZSBiZXR3ZWVuIGVxdWFscyB3aWxsIHRodXMgYmUgCm11dHVhbCBpbmp1cnkuIEFuZCB0aHJlZSBtYWluIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgaGF0ZS1lbW90aW9uIGFyZSBzY29ybiwgCmRlc2lyZSBmb3IgbXV0dWFsIGluanVyeSwgYW5kIGZlYXIuCgoKTG92ZSBpcyBjaGFyYWN0ZXJpc2VkIGluIGFsbCBpdHMgbWFuaWZlc3RhdGlvbnMgYnkgc3ltcGF0aHksIApzZWxmLXNhY3JpZmljZSwgdGhlIGRlc2lyZSB0byBnaXZlOyB0aGVzZSBhcmUgaXRzIGVzc2VudGlhbCBmYWN0b3JzLCB3aGV0aGVyIGFzIApiZW5ldm9sZW5jZSwgYXMgZGVzaXJlIGZvciBtdXR1YWwgaGVscCwgYXMgcmV2ZXJlbmNlLiBGb3IgYWxsIHRoZXNlIGRpcmVjdGx5IApzZXJ2ZSBhdHRyYWN0aW9uLCBicmluZyBhYm91dCB1bmlvbiwgYXJlIG9mIHRoZSB2ZXJ5IG5hdHVyZSBvZiBsb3ZlLiBIZW5jZSBsb3ZlIAppcyBvZiB0aGUgc3Bpcml0OyBmb3Igc3ltcGF0aHkgaXMgdGhlIGZlZWxpbmcgZm9yIGFub3RoZXIgYXMgb25lIHdvdWxkIGZlZWwgZm9yIApvbmVzZWxmOyBzZWxmLXNhY3JpZmljZSBpcyB0aGUgcmVjb2duaXRpb24gb2YgdGhlIGNsYWltIG9mIHRoZSBvdGhlciwgYXMgCm9uZXNlbGY7IGdpdmluZyBpcyB0aGUgY29uZGl0aW9uIG9mIHNwaXJpdHVhbCBsaWZlLiBUaHVzIGxvdmUgaXMgc2VlbiB0byBiZWxvbmcgCnRvIHNwaXJpdCwgdG8gdGhlIGxpZmUtc2lkZSBvZiB0aGUgdW5pdmVyc2UuCgoKSGF0ZSwgb24gdGhlIG90aGVyIGhhbmQsIGlzIGNoYXJhY3RlcmlzZWQgaW4gYWxsIGl0cyAKbWFuae+/vWZlc3RhdGlvbnMgYnkgYW50aXBhdGh5LCBzZWxmLWFnZ3JhbmRpc2VtZW50LCB0aGUgZGVzaXJlIHRvIHRha2U7IHRoZXNlIGFyZSAKaXRzIGVzc2VudGlhbCBmYWN0b3JzLCB3aGV0aGVyIGFzIHNjb3JuLCBkZXNpcmUgZm9yIG11dHVhbCBpbmp1cnksIG9yIGZlYXIuIEFsbCAKdGhlc2UgZGlyZWN0bHkgc2VydmUgcmVwdWxzaW9uLCBkcml2aW5nIG9uZSBhcGFydCBmcm9tIGFub3RoZXIuIEhlbmNlLCBoYXRlIGlzIApvZiBtYXR0ZXIsIGVtcGhhc2lzZXMgbWFuae+/vWZvbGRuZXNzIGFuZCBkaWZmZXJlbmNlcywgaXMgZXNzZW50aWFsbHkgCnNlcGFyYXRlbmVzcywgYmVsb25ncyB0byB0aGUgZm9ybS1zaWRlIG9mIHRoZSB1bml2ZXJzZS4KCgpDSEFQVEVSIElJScKgCgoKVEhFIEFCU09SUFRJT04gT0YgClZJVEFMSVRZwqAKCgpUSEUgR0xPQlVMRcKgCgoKVEhFIHZpdGFsaXR5IGdsb2J1bGUgdGhvdWdoIGluY29uY2VpdmFibHkgbWludXRlLCBpcyBzbyAKYnJpbGxpYW50IHRoYXQgaXQgaXMgb2Z0ZW4gc2VlbiBldmVuIGJ5IHRob3NlIHdobyBhcmUgbm90IGluIHRoZSBvcmRpbmFyeSBzZW5zZSAKY2xhaXJ2b3lhbnQuIE1hbnkgYSBtYW4sIGxvb2tpbmcgb3V0IHRvd2FyZHMgdGhlIGRpc3RhbnQgaG9yaXpvbiwgZXNwZWNpYWxseSAKb3ZlciB0aGUgc2VhLCB3aWxsIG5vdGljZSBhZ2FpbnN0IHRoZSBza3kgYSBudW1iZXIgb2YgdGhlIHRpbmllc3QgcG9zc2libGUgCnBvaW50cyBvZiBsaWdodCBkYXNoaW5nIGFib3V0IGluIGFsbCBkaXJlY3Rpb25zIHdpdGggYW1hemluZyByYXBpZGl0eS4gVGhlc2UgYXJlIAp0aGUgdml0YWxpdHkgZ2xvYnVsZXMsIGVhY2ggY29uc2lzdGluZyBvZiBzZXZlbiBwaHlzaWNhbCBhdG9tcywgYXMgc2hvd24gaW4gRmlnLiAKNUMgLSB0aGUgRmllcnkgTGl2ZXMsIHNwZWNrcyBjaGFyZ2VkIHdpdGggdGhhdCBmb3JjZSB3aGljaCB0aGUgSGluZHVzIGNhbGwgCnByYW5hLiBJdCBpcyBvZnRlbiBleGNlZWRpbmdseSBkaWZmaWN1bHQgdG8gYmUgY2VydGFpbiBvZiB0aGUgZXhhY3Qgc2hhZGUgb2YgCm1lYW5pbmcgYXR0YWNoZWQgdG8gdGhlc2UgU2Fuc2tyaXQgdGVybXMsIGJlY2F1c2UgdGhlIEluZGlhbiBtZXRob2Qgb2YgCmFwcHJvYWNoaW5nIHRoZXNlIHN0dWRpZXMgaXMgc28gZGlmZmVyZW50IGZyb20gb3VyIG93bjsgYnV0IEkgdGhpbmsgd2UgbWF5IApzYWZlbHkgdGFrZSBwcmFuYSBhcyB0aGUgZXF1aXZhbGVudCB0byBvdXIgdml0YWxpdHkuCgoKV2hlbiB0aGlzIGdsb2J1bGUgaXMgZmxhc2hpbmcgYWJvdXQgaW4gdGhlIGF0bW9z77+9cGhlcmUsIApicmlsbGlhbnQgYXMgaXQgaXMsIGl0IGlzIGFsbW9zdCBjb2xvdXJsZXNzLCBhbmQgc2hpbmVzIHdpdGggYSB3aGl0ZSBvciBzbGlnaHRseSAKZ29sZGVuIGxpZ2h0LiBCdXQgYXMgc29vbiBhcyBpdCBpcyBkcmF3biBpbnRvIHRoZSB2b3J0ZXggb2YgdGhlIGZvcmNlLWNlbnRyZSBhdCAKdGhlIHNwbGVlbiBpdCBpcyBkZWNvbXBvc2VkIGFuZCBicmVha3MgdXAgaW50byBzdHJlYW1zIG9mIGRpZmZlcmVudCBjb2xvdXJzLCAKdGhvdWdoIGl0IGRvZXMgbm90IGZvbGxvdyBleGFjdGx5IG91ciBkaXZpc2lvbiBvZiB0aGUgc3BlY3RydW0uIEFzIGl0cyBjb21wb25lbnQgCmF0b21zIGFyZSB3aGlybGVkIHJvdW5kIHRoZSB2b3J0ZXgsIGVhY2ggb2YgdGhlIHNpeCBzcG9rZXMgc2VpemVzIHVwb24gb25lIG9mIAp0aGVtLCBzbyB0aGF0IGFsbCB0aGUgYXRvbXMgY2hhcmdlZCB3aXRoIHllbGxvdyBmbG93IGFsb25nIG9uZSwgYW5kIGFsbCB0aG9zZSAKY2hhcmdlZCB3aXRoIGdyZWVuIGFsb25nIGFub3RoZXIsIGFuZCBzbyBvbiwgd2hpbGUgdGhlIHNldmVudGggZGlzYXBwZWFycyAKdGhyb3VnaCB0aGUgY2VudHJlIG9mIHRoZSB2b3J0ZXjCoCDCoC0gdGhyb3VnaCB0aGUgaHViIG9mIHRoZSB3aGVlbCwgYXMgaXQgd2VyZS4gClRoZXNlIHJheXMgdGhlbiBwYXNzIG9mZiBpbiBkaWZmZXJlbnQgZGlyZWN0aW9ucywgZWFjaCB0byBkbyBpdHMgc3BlY2lhbCB3b3JrIGluIAp0aGUgdml0YWxpemF0aW9uIG9mIHRoZSBib2R5LiBQbGF0ZSBWSUlJIGdpdmVzIGEgZGlhZ3JhbW1hdGljIHJlcHJlc2VudGF0aW9uIG9mIAp0aGVzZSBwYXRocyBvZiB0aGUgZGlzcGVyc2VkIHByYW5hLgoKCkFzIEkgaGF2ZSBzYWlkLCB0aGUgY29sb3VycyBvZiB0aGUgZGl2aXNpb25zIG9mIHByYW5hIGFyZSBub3QgCmV4YWN0bHkgdGhvc2Ugd2hpY2ggd2Ugb3JkaW5hcmlseSB1c2UgaW4gdGhlIHNvbGFyIHNwZWN0cnVtLCBidXQgcmF0aGVyIHJlc2VtYmxlIAp0aGUgYXJyYW5nZe+/vW1lbnQgb2YgY29sb3VycyB3aGljaCB3ZSBzZWUgb24gaGlnaGVyIGxldmVscyBpbiB0aGUgY2F1c2FsLCBtZW50YWwgCmFuZCBhc3RyYWwgYm9kaWVzLiBXaGF0IHdlIGNhbGwgaW5kaWdvIGlzIGRpdmlkZWQgYmV0d2VlbiB0aGUgdmlvbGV0IHJheSBhbmQgdGhlIApibHVlIHJheSwgc28gdGhhdCB3ZSBmaW5kIG9ubHkgdHdvIGRpdmlzaW9ucyB0aGVyZSBpbnN0ZWFkIG9mIHRocmVlOyBidXQgb24gdGhlIApvdGhlciBoYW5kIHdoYXQgd2UgdXN1YWxseSBjYWxsIHJlZCBpcyBkaXZpZGVkIGludG8gdHdvIC0gcm9zZS1yZWQgYW5kIGRhcmsgcmVkLiAKVGhlIHNpeCByYWRpYW50cyBhcmUgdGhlcmVmb3JlIHZpb2xldCwgYmx1ZSwgZ3JlZW4sIHllbGxvdywgb3JhbmdlLCBhbmQgZGFyayAKcmVkOyB3aGlsZSB0aGUgc2V2ZW50aCBvciByb3NlLXJlZCBhdG9tIChtb3JlIHByb3Blcmx5IHRoZSBmaXJzdCwgc2luY2UgdGhpcyBpcyAKdGhlIG9yaWdpbmFsIGF0b20gaW4gd2hpY2ggdGhlIGZvcmNlIGZpcnN0IGFwcGVhcmVkKSBwYXNzZXMgZG93biB0aHJvdWdoIHRoZSAKY2VudHJlIG9mIHRoZSB2b3J0ZXguIFZpdGFsaXR5IGlzIHRodXMgY2xlYXJseSBzZXZlbmZvbGQgaW4gaXRzIGNvbnN0aXR1dGlvbiwgCmJ1dCBpdCBmbG93cyB0aHJvdWdoIHRoZSBib2R5IGluIGZpdmUgbWFpbiBzdHJlYW1zLCBhcyBoYXMgYmVlbsKgIHN0YXRlZCBpbiBzb21lIApvZiB0aGUgSW5kaWFuIGJvb2ssIGZvciBhZnRlciBpc3N1aW5nIGZyb20gdGhlIHNwbGVuaWMgY2VudHJlIHRoZSBibHVlIGFuZCB0aGUgCnZpb2xldCBqb2luIGludG8gb25lIHJheSwgYW5kIHNvIGRvIHRoZSBvcmFuZ2UgYW5kIHRoZSBkYXJrIHJlZCAoUGxhdGUgVklJSSkuwqAKCgpUSEUgVklPTEVULUJMVUUgUkFZwqAKCgooMSkgVGhlIHZpb2xldC1ibHVlIHJheSBmbGFzaGVzIHVwd2FyZHMgdG8gdGhlIHRocm9hdCwgd2hlcmUgCml0IHNlZW1zIHRvIGRpdmlkZSBpdHNlbGYsIHRoZSBsaWdodCBibHVlIHJlbWFpbmluZyB0byBjb3Vyc2UgdGhyb3VnaCBhbmQgCnF1aWNrZW4gdGhlIHRocm9hdC3vv71jZW50cmUsIHdoaWxlIHRoZSBkYXJrIGJsdWUgYW5kIHZpb2xldCBwYXNzIG9uIGludG8gdGhlIApicmFpbi4gVGhlIGRhcmsgYmx1ZSBleHBlbmRzIGl0c2VsZiBpbiB0aGUgbG93ZXIgYW5kIGNlbnRyYWwgcGFydHMgb2YgdGhlIGJyYWluLCAKd2hpbGUgdGhlIHZpb2xldCBmbG9vZHMgdGhlIHVwcGVyIHBhcnQsIGFuZCBhcHBlYXJzIHRvIGdpdmUgc3BlY2lhbCB2aWdvdXIgdG8gCnRoZSBmb3JjZS1jZW50cmUgYXQgdGhlIHRvcCBvZiB0aGUgaGVhZCwgZGlmZnVzaW5nIGl0c2VsZiBjaGllZmx5IHRocm91Z2ggdGhlIApuaW5lIGh1bmRyZWQgYW5kIHNpeHR5IHBldGFscyBvZiB0aGUgb3V0ZXIgcGFydCBvZiB0aGF0IGNlbnRyZS7CoAoKClRIRSBZRUxMT1cgUkFZwqAKCgooMikgVGhlIHllbGxvdyByYXkgaXMgZGlyZWN0ZWQgdG8gdGhlIGhlYXJ0LCBidXQgYWZ0ZXIgZG9pbmcgCml0cyB3b3JrIHRoZXJlIHBhcnQgb2YgaXQgYWxzbyBwYXNzZXMgb24gdG8gdGhlIGJyYWluIGFuZCBwZXJtZWF0ZXMgaXQsIApkaXJlY3RpbmcgaXRzZWxmIHByaW5jaXBhbHkgdG8gdGhlIHR3ZWx2ZS1wZXRhbGxlZCBmbG93ZXIgaW4gdGhlIG1pZHN0IG9mIHRoZSAKaGlnaGVzdCBmb3JjZS1jZW50cmUuwqAKCgpUSEUgR1JFRU4gUkFZwqAKCgooMykgVGhlIGdyZWVuIHJheSBmbG9vZHMgdGhlIGFiZG9tZW4sIGFuZCB3aGFsZSBjZW50cmluZyAKZXNwZWNpYWxseSBpbiB0aGUgc29sYXIgcGxleHVzLCBldmlkZW50bHkgdml2aWZpZXMgdGhlIGxpdmVyLCBraWRuZXlzIGFuZCAKaW50ZXN0aW5lcywgYW5kIHRoZSBkaWdlc3RpdmUgYXBwYXJhdHVzIGdlbmVyYWxseS7CoAoKClRIRSBST1NFIFJBWcKgCgoKKDQpIFRoZSByb3NlLWNvbG91cmVkIHJheSBydW5zIGFsbCBvdmVyIHRoZSBib2R5IGFsb25nIHRoZSAKbmVydmVzLCBhbmQgaXMgY2xlYXJseSB0aGUgbGlmZSBvZiB0aGUgbmVydm91cyBzeXN0ZW0uIFRoaXMgaXMgdGhlIHNwZWNpYWxpemVkIAp2aXRhbGl0eSB3aGljaCBvbmUgbWFuIG1heSByZWFkaWx5IHBvdXIgaW50byBhbm90aGVyIGluIHdob20gaXQgaXMgZGVmaWNpZW50LiBJZiAKdGhlIG5lcnZlcyBhcmUgbm90IGZ1bGx5IHN1cHBsaWVkIHdpdGggdGhpcyByb3N5IGxpZ2h0IHRoZXkgYmVjb21lIHNlbnNpdGl2ZSBhbmQgCmludGVuc2VseSBpcnJpdGFibGUsIHNvIHRoYXQgdGhlIHBhdGllbnQgZmluZHMgaXQgYWxtb3N0IGltcG9zc2libGUgdG8gcmVtYWluIGluIApvbmUgcG9zaXRpb24sIGFuZCB5ZXQgZ2FpbnMgYnV0IGxpdHRsZSBlYXNlIHdoZW4gaGUgbW92ZXMgdG8gYW5vdGhlci4gVGhlIGxlYXN0IApub2lzZSBvciB0b3VjaCBpcyBhZ29ueSB0byBoaW0sIGFuZCBoZSBpcyBpbiBhIGNvbmRpdGlvbiBvZiBhY3V0ZSBtaXNlcnkuIFRoZSAKZmxvb2Rpbmcgb2YgaGlzIG5lcnZlcyB3aXRoIHNwZWNpYWxpemVkIHByYW5hIGJ5IHNvbWUgaGVhbHRoeSBwZXJzb24gYnJpbmdzIAppbnN0YW50IHJlbGllZiwgYW5kIGEgZmVlbGluZyBvZiBoZWFsaW5nIGFuZCBwZWFjZSBkZXNjZW5kcyB1cG9uIGhpbS4gQSBtYW4gaW4gCnJvYnVzdCBoZWFsdGggdXN1YWxseSBhYnNvcmJzIGFuZCBzcGVjaWFsaXplcyBzbyBtdWNoIG1vcmUgb2YgdGhpcyB2aXRhbGl0eSB0aGFuIAppcyBhY3R1YWxseSBuZWVkZWQgYnkgaGlzIG93biBib2R5IHRoYXQgaGUgaXMgY29uc3RhbnRseSByYWRpYXRpbmcgYSB0b3JyZW50IG9mIApyb3NlLWNvbG91cmVkIGF0b21zLCBhbmQgc28gdW5jb25zY2lvdXNseSBwb3VycyBzdHJlbmd0aCB1cG9uIGhpcyB3ZWFrZXIgZmVsbG93cyAKd2l0aG91dCBsb3NpbmcgYW5577+9dGhpbmcgaGltc2VsZjsgb3IgYnkgYW4gZWZmb3J0IG9mIGhpcyB3aWxsIGhlIGNhbiBnYXRoZXIgCnRvZ2V0aGVyIHRoaXMgc3VwZXJmbHVvdXMgZW5lcmd5IGFuZCBhaW0gaXQgaW50ZW7vv710aW9uYWxseSBhdCBvbmUgd2hvbSBoZSB3aXNoZXMgCnRvIGhlbHAuCgoKVGhlIHBoeXNpY2FsIGJvZHkgaGFzIGEgY2VydGFpbiBibGluZCBpbnN0aW5jdGl2ZSAKY29uc2Npb3VzbmVzcyBvZiBpdHMgb3duLCB3aGljaCB3ZSBzb21ldGltZXMgY2FsbCB0aGUgcGh5c2ljYWwgZWxlbWVudGFsLiBJdCAKY29ycmVzcG9uZHMgaW4gdGhlIHBoeXNpY2FsIHdvcmxkIHRvIHRoZSBkZXNpcmUtZWxlbWVudGFsIG9mIHRoZSBhc3RyYWwgYm9keTsgCmFuZCB0aGlzIGNvbnNjaW91c25lc3Mgc2Vla3MgYWx3YXlzIHRvIHByb3RlY3QgaXRzIGJvZHkgZnJvbSBkYW5nZXIsIG9yIHRvIApwcm9jdXJlIGZvciBpdCB3aGF0ZXZlciBtYXkgYmUgbmVjZXNzYXJ5LiBUaGlzIGlzIGVudGlyZWx5IGFwYXJ0IGZyb20gdGhlIApjb25zY2lvdXNuZXNzIG9mIHRoZSBtYW4gaGltc2VsZiwgYW5kIGl0IHdvcmtzIGVxdWFsbHkgd2VsbCBkdXJpbmcgdGhlIGFic2VuY2UgCm9mIHRoZSBlZ28gZnJvbSB0aGUgcGh5c2ljYWwgYm9keSBkdXJpbmcgc2xlZXAuIEFsbCBvdXIgaW5zdGluY3RpdmUgbW92ZW1lbnRzIAphcmUgZHVlIHRvIGl0LCBhbmQgaXQgaXMgdGhyb3VnaCBpdHMgYWN0aXZpdHkgdGhhdCB0aGUgd29ya2luZyBvZiB0aGUgCnN5bXBhdGhldGljIHN5c3RlbSBpcyBjYXJyaWVkIG9uIGNlYXNlbGVzc2x5IHdpdGhvdXQgYW55IHRob3VnaHQgb3Iga25vd2xlZGdlIG9uIApvdXIgcGFydC4KCgpXaGlsZSB3ZSBhcmUgd2hhdCB3ZSBjYWxsIGF3YWtlLCB0aGlzIHBoeXNpY2FsIGVsZW1lbnRhbCBpcyAKcGVycGV0dWFsbHkgb2NjdXBpZWQgaW4gc2VsZi1kZWZlbmNlOyBoZSBpcyBpbiBhIGNvbmRpdGlvbiBvZiBjb25zdGFudCAKdmlnaWxhbmNlLCBhbmQgaGUga2VlcHMgdGhlIG5lcnZlcyBhbmQgbXVzY2xlcyBhbHdheXMgdGVuc2UuIER1cmluZyB0aGUgbmlnaHQgb3IgCmF0IGFueSB0aW1lIHdoZW4gd2Ugc2xlZXAgaGUgbGV0cyB0aGUgbmVydmVzIGFuZCBtdXNjbGVzIHJlbGF4LCBhbmQgZGV2b3RlcyAKaGltc2VsZiBzcGVjaWFsbHkgdG8gdGhlIGFzc2ltaWxhdGlvbiBvZiB2aXRhbGl0eSBhbmQgdGhlIHJlY3VwZXJhdGlvbiBvZiB0aGUgCnBoeXNpY2FsIGJvZHkuIEhlIHdvcmtzIGF0IHRoaXMgbW9zdCBzdWNjZXNz77+9ZnVsbHkgZHVyaW5nIHRoZSBlYXJseSBwYXJ0IG9mIHRoZSAKbmlnaHQsIGJlY2F1c2UgdGhlbiB0aGVyZSBpcyBwbGVudHkgb2Ygdml0YWxpdHksIHdoZXJlYXMgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSAKZGF3biB0aGUgdml0YWxpdHkgd2hpY2ggaGFzIGJlZW4gbGVmdCBiZWhpbmQgYnkgdGhlIHN1bmxpZ2h0IGlzIGFsbW9zdCAKY29tcGxldGVseSBleGhhdXN0ZWQuIFRoaXMgaXMgdGhlIHJlYXNvbiBmb3IgdGhlIGZlZWxpbmcgb2YgbGltcG5lc3MgYW5kIApkZWFkbmVzcyBhc3NvY2lhdGVkIHdpdGggdGhlIHNtYWxsIGhvdXJzIG9mIHRoZSBtb3JuaW5nOyB0aGlzIGlzIGFsc28gdGhlIHJlYXNvbiAKd2h5IHNpY2sgbWVuIHNvIGZyZXF1ZW50bHkgZGllIGF0IHRoYXQgcGFydGljdWxhciB0aW1lLiBUaGUgc2FtZSBpZGVhIGlzIAplbWJvZGllZCBpbiB0aGUgb2xkIHByb3ZlcmIgd2hpY2ggc2F5cyB0aGF0IGFuIGhvdXLvv71zIHNsZWVwIGJlZm9yZSBtaWRuaWdodCBpcyAKd29ydGggdHdvIGFmdGVyIGl0LiBUaGUgd29yayBvZiB0aGlzIHBoeXNpY2FsIGVsZW1lbnRhbCBhY2NvdW50cyBmb3IgdGhlIHN0cm9uZyAKcmVjdXBlcmF0aXZlIGluZmx1ZW5jZSBvZiBzbGVlcCwgd2hpY2ggaXMgb2Z0ZW4gb2JzZXJ2YWJsZSBldmVuIHdoZW4gaXQgaXMgYSAKbWVyZSBtb21lbnRhcnkgbmFwLgoKClRoaXMgdml0YWxpdHkgaXMgaW5kZWVkIHRoZSBmb29kIG9mIHRoZSBldGhlcmljIGRvdWJsZSwgYW5kIAppcyBqdXN0IGFzIG5lY2Vzc2FyeSB0byBpdCBhcyBpcyBtYXRlcmlhbCBzdXN0ZW5hbmNlIHRvIHRoZSBncm9zc2VyIHBhcnQgb2YgdGhlIApwaHlzaWNhbCBib2R5LiBIZW5jZSB3aGVuIHRoZSBzcGxlbmljIGNlbnRyZSBpcyB1bmFibGUgZm9yIGFueSByZWFzb24gKGFzIAp0aHJvdWdoIHNpY2tuZXNzLCBmYXRpZ3VlIG9yIGV4dHJlbWUgb2xkIGFnZSkgdG8gcHJlcGFyZSB2aXRhbGl0eSBmb3IgdGhlIApub3VyaXNobWVudCBvZiB0aGUgY2VsbHMgb2YgdGhlIGJvZHksIHRoaXMgcGh5c2ljYWwgZWxlbWVudGFsIGVuZGVhdm91cnMgdG8gZHJhdyAKaW4gZm9yIGhpcyBvd24gdXNlIHZpdGFsaXR5IHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gcHJlcGFyZWQgaW4gdGhlIGJvZGllcyBvZiAKb3RoZXJzOyBhbmQgdGh1cyBpdCBoYXBwZW5zwqAgdGhhdCB3ZSBvZnRlbiBmaW5kIG91cnNlbHZlcyB3ZWFrIGFuZCBleGhhdXN0ZWQgCmFmdGVyIHNpdHRpbmcgZm9yIGEgd2hpbGUgd2l0aCBhIHBlcnNvbiB3aG8gaXMgZGVwbGV0ZWQgb2Ygdml0YWxpdHksIGJlY2F1c2UgaGUgCmhhcyBkcmF3biB0aGUgcm9zZS1jb2xvdXJlZCBhdG9tcyBhd2F5IGZyb20gdXMgYnkgc3VjdGlvbiBiZWZvcmUgd2Ugd2VyZSBhYmxlIHRvIApleHRyYWN0IHRoZWlyIGVuZXJneS4KCgpUaGUgdmVnZXRhYmxlIGtpbmdkb20gYWxzbyBhYnNvcmJzIHRoaXMgdml0YWxpdHksIGJ1dCBzZWVtcyAKaW4gbW9zdCBjYXNlcyB0byB1c2Ugb25seSBhIHNtYWxsIHBhcnQgb2YgaXQuIE1hbnkgdHJlZXMgZHJhdyBmcm9tIGl0IGFsbW9zdCAKZXhhY3RseSB0aGUgc2FtZSBjb25zdGl0dWVudHMgYXMgZG9lcyB0aGUgaGlnaGVyIHBhcnQgb2YgbWFu77+9cyBldGhlcmljIGJvZHksIHRoZSAKcmVzdWx0IGJlaW5nIHRoYXQgd2hlbiB0aGV5IGhhdmUgdXNlZCB3aGF0IHRoZXkgcmVxdWlyZSwgdGhlIGF0b21zIHdoaWNoIHRoZXkgCnJlamVjdCBhcmUgcHJlY2lzZWx5IHRob3NlIGNoYXJnZWQgd2l0aCB0aGUgcm9zZS1jb2xvdXJlZCBsaWdodCB3aGljaCBpcyBuZWVkZWQgCmZvciB0aGUgY2VsbHMgb2YgbWFuJ3MgcGh5c2ljYWwgYm9keS4gVGhpcyBpcyBzcGVjaWFsbHkgdGhlIGNhc2Ugd2l0aCBzdWNoIHRyZWVzIAphcyB0aGUgcGluZSBhbmQgdGhlIGV1Y2FseXB0dXM7IGFuZCBjb25zZXF1ZW50bHkgdGhlIHZlcnkgbmVpZ2hib3Vy77+9aG9vZCBvZiAKdGhlc2UgdHJlZXMgZ2l2ZXMgaGVhbHRoIGFuZCBzdHJlbmd0aCB0byB0aG9zZSB3aG8gYXJlIHN1ZmZlcmluZyBmcm9tIGxhY2sgb2YgCnRoaXMgcGFydCBvZiB0aGUgdml0YWwgcHJpbmNpcGxlIC0gdGhvc2Ugd2hvbSB3ZSBjYWxsIG5lcnZvdXMgcGVvcGxlLiBUaGV5IGFyZSAKbmVydm91cyBiZWNhdXNlIHRoZSBjZWxscyBvZiB0aGVpciBib2RpZXMgYXJlIGh1bmdyeSwgYW5kIHRoZSBuZXJ2b3VzbmVzcyBjYW4gCm9ubHkgYmUgYWxsYXllZCBieSBmZWVkaW5nIHRoZW07IGFuZCBvZnRlbiB0aGUgcmVhZGllc3Qgd2F5IHRvIGRvIHRoYXQgaXMgdGh1cyAKdG8gc3VwcGx5IHRoZW0gZnJvbSB3aXRob3V0IHdpdGggdGhlIHNwZWNpYWwga2luZCBvZiB2aXRhbGl0eSB3aGljaCB0aGV5IG5lZWQuCgoKVEhFIE9SQU5HRS1SRUQgUkFZwqAKCgooNSkgVGhlIG9yYW5nZS1yZWQgcmF5IGZsb3dzIHRvIHRoZSBiYXNlIG9mIHRoZSBzcGluZSBhbmQgCnRoZW5jZSB0byB0aGUgZ2VuZXJhdGl2ZSBvcmdhbnMsIHdpdGggd2hpY2ggb25lIHBhcnQgb2YgaXRzIGZ1bmN0aW9ucyBpcyBjbG9zZWx5IApjb25uZWN0ZWQuIFRoaXMgcmF5IGFwcGVhcnMgdG8gaW5jbHVkZSBub3Qgb25seSB0aGUgb3JhbmdlIGFuZCB0aGUgZGFya2VyIHJlZHMsIApidXQgYWxzbyBhIGNlcnRhaW4gYW1vdW50IG9mIGRhcmsgcHVycGxlLCBhcyB0aG91Z2ggdGhlIHNwZWN0cnVtIGJlbnQgcm91bmQgaW4gYSAKY2lyY2xlIGFuZCB0aGUgY29sb3VycyBiZWdhbiBvdmVyIGFnYWluIGF0IGEgbG93ZXIgb2N0YXZlLgoKCsKgCgoKQ09MT1VSUyBPRiBQUkFOQVMKCgpDSEFLUkFTIEVOVEVSRUQKCgpDT0xPVVJTIEdJVkVOIElOIFMuRC4KCgpQUklOQ0lQTEVTIApSRVBSRVNFTlRFRAoKCkxpZ2h0IGJsdWUKCgpUaHJvYXQKCgpCbHVlCgoKQXRtYSAoYXVyaWMgCmVudmVsb3BlKQoKClllbGxvdwoKCkhlYXJ0CgoKWWVsbG93CgoKQnVkZGhpCgoKRGFyayBibHVlCgoKQnJvdwoKCkluZGlnbyBvciBkYXJrIGJsdWUKCgpIaWdoZXIgbWFuYXMKCgpHcmVlbgoKCk5hdmVsCgoKR3JlZW4KCgpLYW1hIG1hbmFzIO+/vSBsb3dlciAKbWluZAoKClJvc2UKCgpTcGxlZW4KCgpSZWQKCgpLYW1hIHJ1cGEKCgpWaW9sZXQKCgpDcm93bgoKClZpb2xldAoKCkV0aGVyaWMgZG91YmxlCgoKT3JhbmdlLXJlZCAod2l0aCAKYW5vdGhlciB2aW9sZXQpCgoKUm9vdCAoYWZ0ZXJ3YXJkcyBjcm93bikKCgrvv70KCgrvv70KCgrCoFRBQkxFIElJScKgCgoKSW4gdGhlIG5vcm1hbCBtYW4gdGhpcyByYXkgZW5lcmdpemVzIHRoZSBkZXNpcmVzIG9mIHRoZSAKZmxlc2gsIGFuZCBhbHNvIHNlZW1zIHRvIGVudGVyIHRoZSBibG9vZCBhbmQgaGVscCB0byBrZWVwIHVwIHRoZSBoZWF0IG9mIHRoZSAKYm9keTsgYnV0IGlmIGEgbWFuIHBlcnNpc3RlbnRseSByZWZ1c2VzIHRvIHlpZWxkIHRvIGhpcyBsb3dlciBuYXR1cmUsIHRoaXMgcmF5IApjYW4gYnkgbG9uZyBhbmQgZGV0ZXJtaW5lZCBlZmZvcnQgYmUgZGVmbGVjdGVkIHVwd2FyZHMgdG8gdGhlIGJyYWluLCB3aGVyZSBhbGwgCnRocmVlIG9mIGl0cyBjb25zdGl0dWVudHMgdW5kZXJnbyBhIHJlbWFya2FibGUgbW9kaWZpY2F0aW9uLiBUaGUgb3JhbmdlIGlzIApyYWlzZWQgaW50byBwdXJlIHllbGxvdywgYW5kIHByb2R1Y2VzIGEgZGVjaWRlZCBpbnRlbnNpZmljYXRpb24gb2YgdGhlIHBvd2VycyBvZiAKdGhlIGludGVsbGVjdDsgdGhlIGRhcmsgcmVkIGJlY29tZXMgY3JpbXNvbiwgYW5kIGdyZWF0bHkgaW5jcmVhc2VzIHRoZSBxdWFsaXR5IApvZiB1bnNlbGZpc2ggYWZmZWN0aW9uOyB3aGlsZSB0aGUgZGFyayBwdXJwbGUgaXMgdHJhbnNtdXRlZCBpbnRvIGEgbG92ZWx5IHBhbGUgCnZpb2xldCwgYW5kIHF1aWNrZW5zIHRoZSBzcGlyaXR1YWwgcGFydCBvZiBtYW7vv71zIG5hdHVyZS4gVGhlIG1hbiB3aG8gYWNoaWV2ZXMgCnRoaXMgdHJhbnNtde+/vXRhdGlvbiB3aWxsIGZpbmQgdGhhdCBzZW5zdWFsIGRlc2lyZXMgbm8gbG9uZ2VyIHRyb3VibGUgaGltLCBhbmQgCndoZW4gaXQgYmVjb21lcyBuZWNlc3NhcnkgZm9yIGhpbSB0byBhcm91c2UgdGhlIGhpZ2hlciBsYXllcnMgb2YgdGhlIApzZXJwZW50LWZpcmUgaGUgd2lsbCBiZSBmcmVlIGZyb20gdGhlIG1vc3Qgc2VyaW91cyBvZiB0aGUgZGFuZ2VycyBvZiB0aGF0IApwcm9jZXNzLiBXaGVuIGEgbWFuIGhhcyBmaW5hbGx5IGNvbXBsZXRlZCB0aGlzIGNoYW5nZSwgdGhpcyBvcmFuZ2UtcmVkIHJheSAKcGFzc2VzIHN0cmFpZ2h0IGludG8gdGhlIGNlbnRyZSBhdCB0aGXCoCBiYXNlIG9mIHRoZSBzcGluZSwgYW5kIGZyb20gdGhhdCBydW5zIAp1cHdhcmRzIGFsb25nIHRoZSBob2xsb3cgb2YgdGhlIHZlcnRlYnJhbCBjb2x1bW4sIGFuZCBzbyB0byB0aGUgYnJhaW4uCgoKVGhlcmUgc2VlbXMgdG8gYmUgYSBjZXJ0YWluIGNvcnJlc3BvbmRlbmNlIChUYWJsZSBJSUkpIApiZXR3ZWVuIHRoZSBjb2xvdXJzIG9mIHRoZSBzdHJlYW1zIG9mIHByYW5hIGZsb3cgdG8gdGhlIHNldmVyYWwgY2hha3JhcyBhbmQgdGhlIApjb2xvdXJzIGFzc2lnbmVkIGJ5IE1hZGFtZSBCbGF2YXRza3kgdG8gdGhlIHByaW5jaXBsZXMgb2YgbWFuIGluIGhlciBkaWFncmFtIGluClRoZSBTZWNyZXQgRG9jdHJpbmUsIFZvbC4gVizCoCBwLiA0NTQsIEZpZnRoIChBZHlhcikgRWRpdGlvbi7CoAoKClRIRSBGSVZFIFBSQU5BIFZBWVVTwqAKCgpJbiB0aGUgSGluZHUgYm9va3MgdGhlcmUgaXMgZnJlcXVlbnQgcmVmZXJlbmNlIHRvIHRoZSBmaXZlIApwcmluY2lwYWwgVmF5dXMgb3IgcHJhbmFzLiBUaGUgR2hlcmFuZGEgU2FtaGl0YSBnaXZlcyB0aGVpciAKcG9zaXRpb25zIGJyaWVmbHkgYXMgZm9sbG93czrCoAoKClRoZSBwcmFuYSBtb3ZlcyBhbHdheXMgaW4gdGhlIGhlYXJ0OyB0aGUgYXBhbmEgaW4gdGhlIHNwaGVyZSAKb2YgdGhlIGFudXM7IHRoZSBzYW1hbmEgaW4gdGhlIHJlZ2lvbiBvZiB0aGUgbmF2ZWw7IHRoZSB1ZGFuYSBpbiB0aGUgdGhyb2F0OyBhbmQgCnRoZSB2eWFuYSBwZXJ2YWRlcyB0aGUgd2hvbGUgYm9keS5b77+977+977+9XcKgCgoKTnVtZXJvdXMgb3RoZXIgYm9va3MgZ2l2ZSB0aGUgc2FtZSBkZXNjcmlwdGlvbiwgYW5kIHNheSBubyAKbW9yZSBhYm91dCB0aGVpciBmdW5jdGlvbnMsIGJ1dCBzb21lIGFkZCBhIGxpdHRsZSBtb3JlIGluZm9ybWF0aW9uLCBhcyBmb2xsb3dzOsKgCgoKVGhlIGFpciBjYWxsZWQgdnlhbmEgY2FycmllcyB0aGUgZXNzZW50aWFsIHBhcnQgaW4gYWxsIHRoZSAKbmVydmVzLiBGb29kLCBhcyBzb29uIGFzIGl0IGlzIGVhdGVuLCBpcyBzcGxpdCBpbnRvIHR3byBieSB0aGF0IGFpci4gSGF2aW5nIAplbnRlcmVkIG5lYXIgdGhlIGFudXMgaXQgc2VwYXJhdGVzIHRoZSBzb2xpZCBhbmQgbGlxdWlkIHBvcnRpb25zOyBoYXZpbmcgcGxhY2VkIAp0aGUgd2F0ZXIgb3ZlciB0aGUgZmlyZSwgYW5kIHRoZSBzb2xpZCBvdmVyIHRoZSB3YXRlciwgdGhlIHByYW5hIGl0c2VsZiwgCnN0YW5kaW5nIHVuZGVyIHRoZSBmaXJlLCBpbmZsYW1lcyBpdCBzbG93bHkuIFRoZSBmaXJlLCBpbmZsYW1lZCBieSB0aGUgYWlyLCAKc2VwYXJhdGVzIHN1YnN0YW5jZSBmcm9tIHRoZSB3YXN0ZS4gVGhlIHZ5YW5hIGFpciBtYWtlcyB0aGUgZXNzZW5jZSBnbyBhbGwgb3ZlciwgCmFuZCB0aGUgd2FzdGUsIGZvcmNlZCB0aHJvdWdoIHRoZSB0d2VsdmUgZ2F0ZXdheXMsIGlzIGVqZWN0ZWQgZnJvbSB0aGUgYm9keS5b77+977+977+9XcKgCgoKVGhlIGZpdmUgYWlycyBhcyB0aHVzIGRlc2NyaWJlZCBzZWVtIHRvIGFncmVlIGZhaXJseSB3ZWxsIAp3aXRoIHRoZSBmaXZlIGRpdmlzaW9ucyBvZiB2aXRhbGl0eSB3aGljaCB3ZSBoYXZlIG9ic2VydmVkLCBhcyBzaG93biBpbiBUYWJsZSAKSVYuwqAKCgpQUkFOQSBWQVlVIEFORCBSRUdJT04gQUZGRUNURUQKCgpSQVkgT0YgVklUQUxJVFkKCgpDSEFLUkEgQ0hJRUZMWSBBRkZFQ1RFRAoKClByYW5hOyBoZWFydAoKClllbGxvdwoKCkNhcmRpYWMKCgpBcGFuYTsgYW51cwoKCk9yYW5nZS1yZWQKCgpCYXNpYwoKClNhbWFuYTsgbmF2ZWwKCgpHcmVlbgoKClVtYmlsaWNhbAoKClVkYW5hOyB0aHJvYXQKCgpWaW9sZXQtYmx1ZQoKCkxhcnluZ2VhbAoKClZ5YW5hOyB0aGUgZW50aXJlIGJvZHkKCgpSb3NlCgoKU3BsZW5pYwoKCsKgVEFCTEUgSVbCoAoKClZJVEFMSVRZIEFORCBIRUFMVEjCoAoKClRoZSBmbG93IG9mIHZpdGFsaXR5IGluIHRoZXNlIHZhcmlvdXMgY3VycmVudHMgcmVndWxhdGVzIHRoZSAKaGVhbHRoIG9mIHRoZSBwYXJ0cyBvZiB0aGUgYm9keSB3aXRoIHdoaWNoIHRoZXkgYXJlIGNvbmNlcm5lZC4gSWYgYSBwZXJzb24gaXMgCnN1ZmZlcmluZyBmcm9tIGEgd2VhayBkaWdlc3Rpb24sIGl0IG1hbmlmZXN0cyBpdHNlbGYgYXQgb25jZSB0byBhbnkgcGVyc29uIApwb3NzZXNzaW5nIGV0aGVyaWMgc2lnaHQsIGJlY2F1c2UgZWl0aGVyIHRoZSBmbG93IGFuZCBhY3Rpb24gb2YgdGhlIGdyZWVuIHN0cmVhbSAKaXMgc2x1Z2dpc2ggb3IgaXRzIGFtb3VudCBpcyBzbWFsbGVyIGluIHByb3BvcnRpb24gdGhhbiBpdCBzaG91bGQgYmUuwqAgV2hlcmUgdGhlIAp5ZWxsb3cgY3VycmVudCBpcyBmdWxsIGFuZCBzdHJvbmcsIGl0IGluZGljYXRlcywgb3IgbW9yZSBwcm9wZXJseSBwcm9kdWNlcywgCnN0cmVuZ3RoIGFuZCByZWd1bGFyaXR5IGluIHRoZSBhY3Rpb24gb2YgdGhlIGhlYXJ0LiBGbG93aW5nIHJvdW5kIHRoYXQgY2VudHJlLCAKaXQgYWxzbyBpbnRlcnBlbmV0cmF0ZXMgdGhlIGJsb29kIHdoaWNoIGlzIGRyaXZlbiB0aHJvdWdoIGl0LCBhbmQgaXMgc2VudCBhbG9uZyAKd2l0aCBpdCBhbGwgb3ZlciB0aGUgYm9keS4gWWV0IHRoZXJlIGlzIGVub3VnaCBvZiBpdCBsZWZ0IHRvIGV4dGVuZCBpbnRvIHRoZSAKYnJhaW4gYWxzbywgYW5kIHRoZSBwb3dlciBvZiBoaWdoIHBoaWxvc29waGljYWwgYW5kIG1ldGFwaHlzaWNhbCB0aG91Z2h0IGFwcGVhcnMgCnRvIGRlcGVuZCB0byBhIGdyZWF0IGV4dGVudCB1cG9uIHRoZSB2b2x1bWUgYW5kIGFjdGl2aXR5IG9mIHRoaXMgeWVsbG93IHN0cmVhbSwgCmFuZCB0aGUgY29ycmVzcG9uZGluZyBhd2FrZW5pbmcgb2YgdGhlIHR3ZWx2Ze+/vS1wZXRhbGxlZCBmbG93ZXIgaW4gdGhlIG1pZGRsZSBvZiAKdGhlIGZvcmNlLWNlbnRyZSBhdCB0aGUgdG9wIG9mIHRoZSBoZWFkLgoKClRob3VnaHQgYW5kIGVtb3Rpb24gb2YgYSBoaWdoIHNwaXJpdHVhbCB0eXBlIHNlZW0gdG8gZGVwZW5kIApsYXJnZWx5IHVwb24gdGhlIHZpb2xldCByYXksIHdoZXJlYXMgdGhlIHBvd2VyIG9mIG9yZGluYXJ5IHRob3VnaHQgaXMgc3RpbXVsYXRlZCAKYnkgdGhlIGFjdGlvbiBvZiB0aGUgYmx1ZSBtaW5nbGVkIHdpdGggcGFydCBvZiB0aGUgeWVsbG93LiBJbiBzb21lIGZvcm1zIG9mIAppZGlvY3kgdGhlIGZsb3cgb2Ygdml0YWxpdHkgdG8gdGhlIGJyYWluLCBib3RoIHllbGxvdyBhbmQgYmx1ZS12aW9sZXQsIGlzIGFsbW9zdCAKZW50aXJlbHkgaW5oaWJpdGVkLiBVbnVzdWFsIGFjdGl2aXR5IG9yIHZvbHVtZSBpbiB0aGUgbGlnaHQgYmx1ZSB3aGljaCBpcyAKYXBwb3J0aW9uZWQgdG8gdGhlIHRocm9hdC1jZW50cmUgaXMgYWNjb21wYW5pZWQgYnkgdGhlIGhlYWx0aCBhbmQgc3RyZW5ndGggb2YgCnRoZSBwaHlzaWNhbCBvcmdhbnMgaW4gdGhhdCBwYXJ0IG9mIHRoZSBib2R5LiBJdCBnaXZlcyBzdHJlbmd0aCBhbmQgZWxhc3RpY2l0eSAKdG8gdGhlIHZvY2FsIGNvcmRzLCBzbyB0aGF0IHNwZWNpYWwgYnJpbO+/vWxpYW5jZSBhbmQgYWN0aXZpdHkgYXJlIG5vdGljZWFibGUgaW4gCnRoZSBjYXNlIG9mIGEgcHVibGljIHNwZWFrZXIgb3IgYSBncmVhdCBzaW5nZXIuIFdlYWtuZXNzIG9yIGRpc2Vhc2UgaW4gYW55IHBhcnQgCm9mIHRoZSBib2R5IGlzIGFjY29tcGFuaWVkIGJ5IGEgZGVmaWNpZW5jeSBpbiB0aGUgZmxvdyBvZiB2aXRhbGl0eSB0byB0aGF0IApwYXJ0LsKgCgoKVEhFIEZBVEUgT0YgVEhFIEVNUFRZIApBVE9NU8KgCgoKQXMgdGhlIGRpZmZlcmVudCBzdHJlYW1zIG9mIGF0b21zIGRvIHRoZWlyIHdvcmssIHRoZSBjaGFyZ2UgCm9mIHZpdGFsaXR5IGlzIHdpdGhkcmF3biBmcm9tIHRoZW0sIHByZWNpc2VseSBhcyBhbiBlbGVjdHJpY2FsIGNoYXJnZSBtaWdodCBiZS4gClRoZSBhdG9tcyBiZWFyaW5nIHRoZSByb3NlLWNvbG91cmVkIHJheSBncm93IGdyYWR1YWxseSBwYWxlciBhcyB0aGV5IGFyZSBzd2VwdCAKYWxvbmcgdGhlIG5lcnZlcywgYW5kIGFyZSBldmVudHVhbGx5IHRocm93biBvdXQgZnJvbSB0aGUgYm9keSB0aHJvdWdoIHRoZSBwb3JlcyAKLSBtYWtpbmcgdGh1cyB3aGF0IHdhcyBjYWxsZWQgaW4gTWFuIFZpc2libGUgYW5kIEludmlzaWJsZSB0aGUgCmhlYWx0aC3vv71hdXJhLiBCeSB0aGUgdGltZSB0aGF0IHRoZXkgbGVhdmUgdGhlIGJvZHkgbW9zdCBvZiB0aGVtIGhhdmUgbG9zdCB0aGUgCnJvc2UtY29sb3VyZWQgbGlnaHQsIHNvIHRoYXQgdGhlIGdlbmVyYWwgYXBwZWFyYW5jZSBvZiB0aGUgZW1hbmF0aW9uIGlzIApibHVpc2gtd2hpdGUuIFRoYXQgcGFydCBvZiB0aGUgeWVsbG93IHJheSB3aGljaCBpcyBhYnNvcmJlZCBpbnRvIHRoZSBibG9vZCBhbmQgCmNhcnJpZWQgcm91bmQgd2l0aCBpdCBsb3NlcyBpdHMgZGlzdGluY3RpdmUgY29sb3VyIGluIGp1c3QgdGhlIHNhbWUgd2F5LgoKClRoZSBhdG9tcywgd2hlbiB0aHVzIGVtcHRpZWQgb2YgdGhlaXIgY2hhcmdlIG9mIHZpdGFsaXR5LCAKZWl0aGVyIGVudGVyIGludG8gc29tZSBvZiB0aGUgY29tYmluYXRpb25zIHdoaWNoIGFyZSBjb25zdGFudGx5IGJlaW5nIG1hZGUgaW4gCnRoZSBib2R5LCBvciBwYXNzIG91dCBvZiBpdCB0aHJvdWdoIHRoZSBwb3Jlcywgb3IgdGhyb3VnaCB0aGUgb3JkaW5hcnkgY2hhbm5lbHMuIApUaGUgZW1wdGllZCBhdG9tcyBvZiB0aGUgZ3JlZW4gcmF5LCB3aGljaCBpcyBjb25uZWN0ZWQgY2hpZWZseSB3aXRoIGRpZ2VzdGl2ZSAKcHJvY2Vzc2VzLCBzZWVtIHRvIGZvcm0gcGFydCBvZiB0aGUgb3JkaW5hcnkgd2FzdGUgbWF0ZXJpYWwgb2YgdGhlIGJvZHksIGFuZCB0byAKcGFzcyBvdXQgYWxvbmcgd2l0aCBpdCwgYW5kIHRoYXQgaXMgYWxzbyB0aGUgZmF0ZSBvZiB0aGUgYXRvbXMgb2YgdGhlIHJlZC1vcmFuZ2UgCnJheSBpbiB0aGUgY2FzZSBvZiB0aGUgb3JkaW5hcnkgbWFuLiBUaGUgYXRvbXMgYmVsb25naW5nIHRvIHRoZSBibHVlIHJheXMsIHdoaWNoIAphcmUgdXNlZCBpbiBjb25uZWN0aW9uIHdpdGggdGhlIHRocm9hdC1jZW50cmUsIGdlbmVyYWxseSBsZWF2ZSB0aGUgYm9keSBpbiB0aGUgCmV4aGFsYXRpb25zIG9mIHRoZSBicmVhdGg7IGFuZCB0aG9zZSB3aGljaCBjb21wb3NlIHRoZSBkYXJrIGJsdWUgYW5kIHZpb2xldCByYXlzIAp1c3VhbGx5IHBhc3Mgb3V0IGZyb20gdGhlIGNlbnRyZSBhdCB0aGUgdG9wIG9mIHRoZSBoZWFkLgoKCldoZW4gdGhlIHN0dWRlbnQgaGFzIGxlYXJudCB0byBkZWZsZWN0IHRoZSBvcmFuZ2Ut77+9cmVkIHJheXMgCnNvIHRoYXQgdGhleSBhbHNvIG1vdmUgdXAgdGhyb3VnaCB0aGUgc3BpbmUsIHRoZSBlbXB0eSBhdG9tcyBvZiBib3RoIHRoZXNlIGFuZCAKdGhlIHZpb2xldC1ibHVlIHJheXMgcG91ciBvdXQgZnJvbSB0aGUgdG9wIG9mIHRoZSBoZWFkIGluIGEgZmllcnkgY2FzY2FkZSB3aGljaCwgCmFzIHdlIGhhdmUgYWxyZWFkeSBzZWVuIGluIEZpZy4gMiwgaXMgZnJlcXVlbnRseSBpbWFnZWQgYXMgYSBmbGFtZSBpbiBhbmNpZW50IApzdGF0dWVzIG9mIHRoZSBMb3JkIEJ1ZGRoYSBhbmQgb3RoZXIgZ3JlYXQgc2FpbnRzLiBUaGVzZSBhdG9tcyBhcmUgdGh1cyB1c2VkIAphZ2FpbiBhcyBwaHlzaWNhbCB2ZWhpY2xlcyBmb3Igc29tZSBvZiB0aGUgZ2xvcmlvdXMgYW5kIGJlbmVmaWNlbnQgZm9yY2VzIHdoaWNoIApoaWdobHnvv70gZXZvbHZlZCBtZW4gcmFkaWF0ZSBmcm9tIHRoYXQgY3Jvd24gY2hha3JhLgoKCldoZW4gZW1wdHkgb2YgdGhlIHZpdGFsIGZvcmNlIHRoZSBhdG9tcyBhcmUgb25jZSBtb3JlIApwcmVjaXNlbHkgbGlrZSBhbnkgb3RoZXIgYXRvbXMsIGV4Y2VwdCB0aGF0IHRoZXkgaGF2ZSBldm9sdmVkIHNvbWV3aGF0IHRocm91Z2ggCnRoZSB1c2UgdGhhdCBoYXMgYmVlbiBtYWRlIG9mIHRoZW0uIFRoZSBib2R5IGFic29yYnMgc3VjaCBvZiB0aGVtIGFzIGl0IG5lZWRzLCAKc28gdGhhdCB0aGV5IGZvcm0gcGFydCBvZiB0aGUgdmFyaW91cyBjb21iae+/vW5hdGlvbnMgd2hpY2ggYXJlIGNvbnN0YW50bHkgYmVpbmcgCm1hZGUsIHdoaWxlIG90aGVycyB3aGljaCBhcmUgbm90IHJlcXVpcmVkIGZvciBzdWNoIHB1cnBvc2VzIGFyZSBjYXN0IG91dCB0aHJvdWdoIAphbnkgY2hhbm5lbCB0aGF0IGhhcHBlbnMgdG8gYmUgY29udmVuaWVudC4KCgpUaGUgZmxvdyBvZiB2aXRhbGl0eSBpbnRvIG9yIHRocm91Z2ggYW55IGNlbnRyZSwgb3IgZXZlbiBpdHMgCmludGVuc2lmaWNhdGlvbiwgbXVzdCBub3QgYmUgY29uZnVzZWQgd2l0aCB0aGUgZW50aXJlbHkgZGlmZmVyZW50IGRldmVsb3BtZW50IG9mIAp0aGUgY2VudHJlIHdoaWNoIGlzIGJyb3VnaHQgYWJvdXQgYnkgdGhlIGF3YWtlbmluZyBvZiB0aGUgaGlnaGVyIGxldmVscyBvZiB0aGUgCnNlcnBlbnQtZmlyZSBhdCBhIGxhdGVyIHN0YWdlIGluIG1hbu+/vXMgZXZvbHV0aW9uLCB3aXRoIHdoaWNoIHdlIHNoYWxsIGRlYWwgaW4gCnRoZSBuZXh0IGNoYXB0ZXIuIFdlIGFsbCBkcmF3IGluIHZpdGFsaXR5IGFuZCBzcGVjaWFsaXplIGl0LCBidXQgbWFueSBvZiB1cyBkbyAKbm90IHV0aWxpemUgaXQgdG8gdGhlIGZ1bGwsIGJlY2F1c2UgaW4gdmFyaW91cyB3YXlzIG91ciBsaXZlcyBhcmUgbm90IGFzIHB1cmUgCmFuZCBoZWFsdGh5IGFuZCByZWFzb27vv71hYmxlIGFzIHRoZXkgc2hvdWxkIGJlLiBPbmUgd2hvIGNvYXJzZW5zIGhpcyBib2R5IGJ5IHRoZSAKdXNlIG9mIG1lYXQsIGFsY29ob2wgb3IgdG9iYWNjbyBjYW4gbmV2ZXIgZW1wbG95IGhpcyB2aXRhbGl0eSB0byB0aGUgZnVsbCBpbiB0aGUgCnNhbWUgd2F5IGFzIGNhbiBhIG1hbiBvZiBwdXJlciBsaXZpbmcuIEEgcGFydGljdWxhciBpbmRpdmlkdWFsIG9mIGltcHVyZSBsaWZlIAptYXkgYmUsIGFuZCBvZnRlbiBpcywgc3Ryb25nZXIgaW4gdGhlIHBoeXNpY2FsIGJvZHkgdGhhbiBjZXJ0YWluIG90aGVyIG1lbiB3aG8gCmFyZSBwdXJlcjsgdGhhdCBpcyBhIG1hdHRlciBvZiB0aGVpciByZXNwZWN0aXZlIGthcm1hOyBidXQgb3RoZXIgdGhpbmdzIGJlaW5nIAplcXVhbCwgdGhlIG1hbiBvZiBwdXJlIGxpZmUgaGFzIGFuIGltbWVuc2UgYWR2YW50YWdlLgoKCkFsbCB0aGUgY29sb3VycyBvZiB0aGlzIG9yZGVyIG9mIHZpdGFsaXR5IGFyZSBldGhlcmljLCB5ZXQgaXQgCndpbGwgYmUgc2VlbiB0aGF0IHRoZWlyIGFjdGlvbiBwcmVzZW50cyBjZXJ0YWluIGNvcnJlc3BvbmRlbmNlcyB3aXRoIHRoZSAKc2lnbmlmaWNhdGlvbiBhdHRhY2hlZCB0byBzaW1pbGFyIGh1ZXMgaW4gdGhlIGFzdHJhbCBib2R5LiBDbGVhcmx5LCByaWdodCAKdGhvdWdodCBhbmQgcmlnaHQgZmVlbGluZyByZWFjdCB1cG9uIHRoZSBwaHlzaWNhbCBib2R5IGFuZCBpbmNyZWFzZSBpdHMgcG93ZXIgdG8gCmFzc2ltaWxhdGUgdGhlIHZpdGFsaXR5IHdoaWNoIGlzIG5lY2Vzc2FyeSBmb3IgaXRzIHdlbGwtYmVpbmcuIEl0IGlzIHJlcG9ydGVkIAp0aGF0IHRoZSBMb3JkIEJ1ZGRoYSBvbmNlIHNhaWQgdGhhdCB0aGUgZmlyc3Qgc3RlcCBvbiB0aGUgcm9hZCB0byBOaXJ2YW5hIGlzIApwZXJmZWN0IHBoeXNpY2FsIGhlYWx0aDsgYW5kIGFzc3VyZWRseSB0aGUgd2F5IHRvIGF0dGFpbiB0aGF0IGlzIHRvIGZvbGxvdyB0aGUgCk5vYmxlIEVpZ2h0Zm9sZCBQYXRoIHdoaWNoIGhlIGhhcyBpbmRpY2F0ZWQuIO+/vVNlZWsgeWUgZmlyc3QgdGhlIEtpbmdkb20gb2YgR29kIAphbmQgaGlzIHJpZ2h0ZW91c25lc3MsIGFuZCBhbGwgdGhlc2UgdGhpbmdzIHNoYWxsIGJlIGFkZGVkIHVudG8geW9177+9IC0geWVzLCBldmVuIApwaHlzaWNhbCBoZWFsdGggYXMgd2VsbC7CoAoKClZJVEFMSVRZIEFORCBNQUdORVRJU03CoAoKClRoZSB2aXRhbGl0eSBjb3Vyc2luZyBhbG9uZyB0aGUgbmVydmVzIG11c3Qgbm90IGJlIGNvbmZ1c2VkIAp3aXRoIHdoYXQgd2UgdXN1YWxseSBjYWxsIHRoZSBtYWduZXRpc20gb2YgdGhlIG1hbiAtIGhpcyBvd24gbmVydmUtZmx1aWQsIApzcGVjaWFsaXplZCB3aXRoaW4gdGhlIHNwaW5lLCBhbmQgY29tcG9zZWQgb2YgdGhlIHByaW1hcnkgbGlmZS1mb3JjZSAKaW50ZXLvv71taW5nbGVkIHdpdGggdGhlIGt1bmRhbGluaS4gSXQgaXMgdGhpcyBmbHVpZCB3aGljaCBrZWVwcyB1cCB0aGUgY29uc3RhbnQgCmNpcmN1bGF0aW9uIG9mIGV0aGVyaWMgbWF0dGVyIGFsb25nIHRoZSBuZXJ2ZXMsIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNpcmN1bGF0aW9uIApvZiBibG9vZCB0aHJvdWdoIHRoZSBhcnRlcmllcyBhbmQgdmVpbnM7IGFuZCBhcyBveHlnZW4gaXMgY29u77+9dmV5ZWQgYnkgdGhlIGJsb29kIAp0byBhbGwgcGFydHMgb2YgdGhlIGJvZHksIHNvIHZpdGFsaXR5IGlzIGNvbnZleWVkIGFsb25nIHRoZSBuZXJ2ZXMgYnkgdGhpcyAKZXRoZXJpYyBjdXJyZW50LiBUaGUgcGFydGljbGVzIG9mIHRoZSBldGhlcmljIHBhcnQgb2YgbWFu77+9cyBib2R5IGFyZSBjb25zdGFudGx5IApjaGFuZ2luZywganVzdCBhcyBhcmUgdGhvc2Ugb2YgdGhlIGRlbnNlciBwYXJ0OyBhbG9uZyB3aXRoIHRoZSBmb29kIHdoaWNoIHdlIGVhdCAKYW5kIHRoZSBhaXIgd2hpY2ggd2UgYnJlYXRoZSB3ZSB0YWtlIGluIGV0aGVyaWMgbWF0dGVyLCBhbmQgdGhpcyBpcyBhc3NpbWlsYXRlZCAKYnkgdGhlIGV0aGVyaWMgcGFydCBvZiB0aGUgYm9keS4gRXRoZXJpYyBtYXR0ZXIgaXMgY29uc3RhbnRseSBiZWluZyB0aHJvd24gb2ZmIApmcm9tIHRoZSBwb3JlcywganVzdCBhcyBpcyBnYXNlb3VzIG1hdHRlciwgc28gdGhhdCB3aGVuIHR3byBwZXJzb25zIGFyZSBjbG9zZSAKdG9nZXRoZXIgZWFjaCBuZWNlc3NhcmlseSBhYnNvcmJzIG11Y2ggb2YgdGhlIHBoeXNpY2FsIGVtYW5hdGlvbnMgb2YgdGhlIG90aGVyLgoKCldoZW4gb25lIHBlcnNvbiBtZXNtZXJpemVzIGFub3RoZXIsIHRoZSBvcGVyYXRvciBieSBhbiBlZmZvcnQgCm9mIHdpbGwgZ2F0aGVycyB0b2dldGhlciBhIGdyZWF0IGRlYWwgb2YgdGhpcyBtYWduZXRpc20gYW5kIHRocm93cyBpdCBpbnRvIHRoZSAKc3ViamVjdCwgcHVzaGluZyBiYWNrIGhpcyB2aWN0aW3vv71zIG5lcnZlLWZsdWlkLCBhbmQgZmlsbGluZyBpdHMgcGxhY2Ugd2l0aCBoaXMgCm93bi4gQXMgdGhlIGJyYWluIGlzIHRoZSBjZW50cmUgb2YgdGhpcyBuZXJ2b3VzIGNpcmN1bGF0aW9uLCB0aGlzIGJyaW5ncyB0aGF0IApwYXJ0IG9mIHRoZSBzdWJqZWN077+9cyBib2R5IHdoaWNoIGlzIGFmZmVjdGVkIHVuZGVyIHRoZSBjb250cm9sIG9mIHRoZSAKbWFuaXB1bGF0b3Lvv71zIGJyYWluIGluc3RlYWQgb2YgdGhlIHZpY3Rpbe+/vXMgYW5kIHNvIHRoZSBsYXR0ZXIgZmVlbHMgd2hhdCB0aGUgCm1lc21lcmlzdCB3aXNoZXMgaGltIHRvIGZlZWwuIElmIHRoZSByZWNp77+9cGllbnTvv71zIGJyYWluIGJlIGVtcHRpZWQgb2YgaGlzIG93biAKbWFnbmV0aXNtIGFuZCBmaWxsZWQgd2l0aCB0aGF0IG9mIHRoZSBwZXJmb3JtZXIsIHRoZSBmb3JtZXIgY2FuIHRoaW5rIGFuZCBhY3QgCm9ubHkgYXMgdGhlIGxhdHRlciB3aWxscyB0aGF0IGhlIHNob3VsZCB0aGluayBhbmQgYWN0OyBoZSBpcyBmb3IgdGhlIHRpbWUgCmVudGlyZWx5IGRvbWluYXRlZC4KCgpFdmVuIHdoZW4gdGhlIG1hZ25ldGl6ZXIgaXMgdHJ5aW5nIHRvIGN1cmUsIGFuZCBpcyBwb3VyaW5nIApzdHJlbmd0aCBpbnRvIHRoZSBtYW4sIGhlIGluZXZpdGFibHkgZ2l2ZXMgYWxvbmcgd2l0aCB0aGUgdml0YWxpdHkgbXVjaCBvZiBoaXMgCm93biBlbWFuYXRpb25zLiBJdCBpcyBvYnZpb3VzIHRoYXQgYW55IGRpc2Vhc2Ugd2hpY2ggdGhlIG1lc21lcml6ZXIgaGFwcGVucyB0byAKaGF2ZSBtYXkgcmVhZGlseSBiZSBjb252ZXllZCB0byB0aGUgc3ViamVjdCBpbiB0aGlzIHdheTsgYW5kIGFub3RoZXIgZXZlbiBtb3JlIAppbXBvcnRhbnQgY29uc2lkZXJh77+9dGlvbiBpcyB0aGF0LCB0aG91Z2ggaGlzIGhlYWx0aCBtYXkgYmUgcGVyZmVjdCBmcm9tIHRoZSAKbWVkaWNhbCBwb2ludCBvZiB2aWV3LCB0aGVyZSBhcmUgbWVudGFsIGFuZCBtb3JhbCBkaXNlYXNlcyBhcyB3ZWxsIGFzIHBoeXNpY2FsLCAKYW5kIHRoYXQsIGFzIGFzdHJhbCBhbmQgbWVudGFsIG1hdHRlciBhcmUgdGhyb3duIGludG8gdGhlIHN1YmplY3QgYnkgdGhlIAptZXNtZXJpc3QgYWxvbmcgd2l0aCB0aGUgcGh5c2ljYWwgY3VycmVudCwgdGhlc2UgYWxzbyBhcmUgZnJlcXVlbnRseSAKdHJhbnNmZXJyZWQuCgoKTmV2ZXJ0aGVsZXNzLCBhIG1hbiB3aG8gaXMgcHVyZSBpbiB0aG91Z2h0IGFuZCBmaWxsZWQgd2l0aCAKdGhlIGVhcm5lc3QgZGVzaXJlIHRvIGhlbHAgaGlzIGZlbGxvd3MgbWF5IG9mdGVuIGRvIG11Y2ggYnkgbWVzbWVyaXNtIHRvIHJlbGlldmUgCnN1ZmZlcmluZywgaWYgaGUgd2lsbCB0YWtlIHRoZSB0cm91YmxlIHRvIHN0dWR5IHRoaXMgc3ViamVjdCBvZiB0aGUgY3VycmVudHMgCndoaWNoIGVudGVyIHRoZSBib2R5IHRocm91Z2ggdGhlIGNoYWtyYXMgYW5kIGZsb3cgYWxvbmcgdGhlIG5lcnZlcy4gV2hhdCBpcyBpdCAKdGhhdCB0aGUgbWVz77+9bWVyaXN0IHBvdXJzIGludG8gaGlzIHN1YmplY3Q/IEl0IG1heSBiZSBlaXRoZXIgdGhlIG5lcnZlLWV0aGVyIG9yIAp0aGUgdml0YWxpdHksIG9yIGJvdGguIFN1cHBvc2luZyBhIHBhdGllbnQgdG8gYmUgc2VyaW91c2x5IHdlYWtlbmVkIG9yIApleGhhdXN0ZWQsIHNvIHRoYXQgaGUgaGFzIGxvc3QgdGhlIHBvd2VyIHRvIHNwZWNpYWxpemUgdGhlIGxpZmUtZmx1aWQgZm9yIApoaW1zZWxmLCB0aGUgbWVzbWVyaXN0IG1heSByZW5ldyBoaXMgc3RvY2sgYnkgcG91cmluZyBzb21lIG9mIGhpcyBvd24gdXBvbiB0aGUgCnF1aXZlcmluZyBuZXJ2ZXMsIGFuZCBzbyBwcm9kdWNlIGEgcmFwaWQgcmVjb3ZlcnkuIFRoZSBwcm9jZXNzIGlzIGFuYWxvZ291cyB0byAKd2hhdCBpcyBvZnRlbiBkb25lIGluIHRoZSBjYXNlIG9mIGZvb2QuIFdoZW4gYSBwZXJzb24gcmVhY2hlcyBhIGNlcnRhaW4gc3RhZ2Ugb2YgCndlYWtuZXNzIHRoZSBzdG9tYWNoIGxvc2VzIHRoZSBwb3dlciB0byBkaWdlc3QsIGFuZCBzbyB0aGUgYm9keSBpcyBub3QgcHJvcGVybHkgCm5vdXJpc2hlZCwgYW5kIHRoZSBmZWVibGVuZXNzIGlzIHRoZXJlYnkgaW5jcmVhc2VkLiBUaGUgcmVtZWR5IGFkb3B0ZWQgaW4gdGhhdCAKY2FzZSBpcyB0byBwcmVzZW50IHRvIHRoZSBzdG9tYWNoIGZvb2QgYWxyZWFkeSBwYXJ0aWFsbHkgZGlnZXN0ZWQgYnkgbWVhbnMgb2YgCnBlcHNpbiBvciBvdGhlciBzaW1pbGFyIHByZXBhcmF0aW9uczsgdGhpcyBjYW4gcHJvYmFibHkgYmUgYXNzaW1pbGF0ZWQsIGFuZCB0aHVzIApzdHJlbmd0aCBpcyBnYWluZWQuIEp1c3Qgc28sIGEgbWFuIHdobyBpcyB1bmFibGUgdG8gc3BlY2lhbGl6ZSBmb3IgaGltc2VsZiBtYXkgCnN0aWxsIGFic29yYiB3aGF0IGhhcyBiZWVuIGFscmVhZHkgcHJlcGFyZWQgYnkgYW5vdGhlciwgYW5kIHNvIGdhaW4gc3RyZW5ndGggdG8gCm1ha2UgYW4gZWZmb3J0IHRvIHJlc3VtZSB0aGUgbm9ybWFsIGFjdGlvbiBvZiB0aGUgZXRoZXJpYyBvcmdhbnMuIEluIG1hbnkgY2FzZXMgCm9mIGRlYmlsaXR5IHRoYXQgaXMgYWxsIHRoYXQgaXMgbmVlZGVkLgoKClRoZXJlIGFyZSBvdGhlciBpbnN0YW5jZXMgaW4gd2hpY2ggY29uZ2VzdGlvbiBvZiBzb21lIGtpbmQgCmhhcyB0YWtlbiBwbGFjZSwgdGhlIHZpdGFsIGZsdWlkIGhhcyBub3QgY2lyY3VsYXRlZCBwcm9wZXJseSwgYW5kIHRoZSBuZXJ2ZS1hdXJhIAppcyBzbHVnZ2lzaCBhbmQgdW5oZWFsdGh5LiBUaGVuIHRoZSBvYnZpb3VzIGNvdXJzZSBvZiBwcm9jZWVk77+9aW5nIGlzIHRvIHJlcGxhY2UgCml0IGJ5IGhlYWx0aHkgbmVydmUtZXRoZXIgZnJvbSB3aXRo77+9b3V0OyBidXQgdGhlcmUgYXJlIHNldmVyYWwgd2F5cyBpbiB3aGljaCAKdGhpcyBtYXkgYmUgZG9uZS4gU29tZSBtYWduZXRpemVycyBzaW1wbHkgZW1wbG95IGJydXRlIGZvcmNlLCBhbmQgc3RlYWRpbHkgcG91ciAKaW4gcmVzaXN0bGVzcyBmbG9vZHMgb2YgdGhlaXIgb3duIGV0aGVyIGluIHRoZSBob3BlIG9mIHdhc2hpbmcgYXdheSB0aGF0IHdoaWNoIApuZWVkcyByZW1vdmFsLiBTdWNjZXNzIG1heSBiZSBhdHRhaW5lZCBhbG9uZyB0aGVzZSBsaW5lcywgdGhvdWdoIHdpdGggdGhlIApleHBlbmRpdHVyZSBvZiBhIGdvb2QgZGVhbCBtb3JlIGVuZXJneSB0aGFuIGlzIG5lY2Vzc2FyeS4gQSBtb3JlIHNjaWVudGlmaWMgCm1ldGhvZCBpcyB0aGF0IHdoaWNoIGdvZXMgdG8gd29yayBzb21ld2hhdCBtb3JlIHF1aWV0bHksIGFuZCBmaXJzdCB3aXRo77+9ZHJhd3MgCnRoZSBjb25nZXN0ZWQgb3IgZGlzZWFzZWQgbWF0dGVyLCBhbmQgdGhlbiByZXBsYWNlcyBpdCBieSBoZWFsdGhpZXIgbmVydmUtZXRoZXIsIAp0aHVzIGdyYWR1YWxseSBzdGltdWxhdGluZyB0aGUgc2x1Z2dpc2ggY3VycmVudCBpbnRvIGFjdGl2aXR5LiBJZiB0aGUgcGF0aWVudCAKaGFzIGEgaGVhZGFjaGUsIGZvciBleGFtcGxlLCB0aGVyZSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgYSBjb25nZXN0aW9uIG9mIApub3hpb3VzIGV0aGVyIGFib3V0IHNvbWUgcGFydCBvZiBoaXMgYnJhaW4sIGFuZCB0aGUgZmlyc3Qgc3RlcCBpcyB0byBkcmF3IHRoYXQgCmF3YXkuCgoKSG93IGlzIHRoaXMgdG8gYmUgbWFuYWdlZD8gSnVzdCBpbiB0aGUgc2FtZSB3YXkgYXMgdGhlIApvdXQtcG91cmluZyBvZiBzdHJlbmd0aCBpcyBtYW5hZ2VkIO+/vSBieSBhbiBleGVyY2lzZSBvZiB0aGUgd2lsbC4gV2UgbXVzdCBub3QgCmZvcmdldCB0aGF0IHRoZXNlIGZpbmVyIHN1YmRpdmlzaW9ucyBvZiBtYXR0ZXIgYXJlIHJlYWRpbHkgbW91bGRlZCBvciBhZmZlY3RlZCAKYnkgdGhlIGFjdGlvbiBvZiB0aGUgaHVtYW4gd2lsbC4gVGhlIG1lc++/vW1lcmlzdCBtYXkgbWFrZSBwYXNzZXMsIGJ1dCB0aGV5IGFyZSBhdCAKdGhlIG1vc3Qgbm90aGluZyBidXQgdGhlIHBvaW50aW5nIG9mIGhpcyBndW4gaW4gYSBjZXJ0YWluIGRpcmVjdGlvbiwgd2hpbGUgaGlzIAp3aWxsIGlzIHRoZSBwb3dkZXIgdGhhdCBtb3ZlcyB0aGUgYmFsbCBhbmQgcHJv77+9ZHVjZXMgdGhlIHJlc3VsdCwgdGhlIGZsdWlkIGJlaW5nIAp0aGUgc2hvdCBzZW50IG91dC4gQSBtZXNtZXJpemVyIHdobyB1bmRlcnN0YW5kcyBoaXMgYnVzaW5lc3MgY2FuIG1hbmFnZSBhcyB3ZWxsIAp3aXRob3V0IHBhc3NlcyBpZiBoZSB3aXNoZXM7IEkgaGF2ZSBrbm93biBvbmUgd2hvIG5ldmVyIGVtcGxveWVkIHRoZW0sIGJ1dCAKc2ltcGx5IGxvb2tlZCBhdCBoaXMgc3ViamVjdC4gVGhlIG9ubHkgdXNlIG9mIHRoZSBoYW5kIGlzIHRvIGNvbmNlbnRyYXRlIHRoZSAKZmx1aWQsIGFuZCBwZXJoYXBzIHRvIGhlbHAgdGhlIGltYWdpbmF0aW9uIG9mIHRoZSBvcGVyYXRvcjsgZm9yIHRvIHdpbGwgc3Ryb25nbHkgCmhlIG11c3QgYmVsaWV2ZSBmaXJtbHksIGFuZCB0aGUgYWN0aW9uIG5vIGRvdWJ0IG1ha2VzIGl0IGVhc2llciBmb3IgaGltIHRvIApyZWFsaXplIHdoYXQgaGUgaXMgZG9pbmcuCgoKSnVzdCBhcyBhIG1hbiBtYXkgcG91ciBvdXQgbWFnbmV0aXNtIGJ5IGFuIGVmZm9ydCBvZiB3aWxsLCBzbyAKbWF5IGhlIGRyYXcgaXQgYXdheSBieSBhbiBlZmZvcnQgb2Ygd2lsbDsgYW5kIGluIHRoaXMgY2FzZSBhbHNvIGhlIG1heSBvZnRlbiB1c2UgCmEgZ2VzdHVyZSBvZiB0aGUgaGFuZHMgdG8gaGVscCBoaW0uIEluIGRlYWxpbmcgd2l0aCB0aGUgaGVhZO+/vWFjaGUsIGhlIHdvdWxkIApwcm9iYWJseSBsYXkgaGlzIGhhbmRzIHVwb24gdGhlIGZvcmXvv71oZWFkIG9mIHRoZSBwYXRpZW50LCBhbmQgdGhpbmsgb2YgdGhlbSBhcyAKc3BvbmdlcyBzdGVhZGlseSBkcmF3aW5nIG91dCB0aGUgZGVsZXRlcmlvdXMgbWFnbmV0aXNtIGZyb20gdGhlIGJyYWluLiBUaGF0IGhlIAppcyBhY3R1YWxseSBwcm9kdWNpbmcgdGhlIHJlc3VsdCBvZiB3aGljaCBoZSB0aGlua3MsIGhlIHdpbGwgYmUgdmVyeSBsaWtlbHkgc29vbiAKdG/CoCBkaXNjb3ZlciwgZm9yIHVubGVzcyBoZSB0YWtlcyBwcmVjYXV0aW9ucyB0byBjYXN0IG9mZiB0aGUgYmFkIG1hZ25ldGlzbSAKd2hpY2ggaGUgaXMgYWJzb3JiaW5nLCBoZSB3aWxsIGVpdGhlciBoaW1zZWxmIGZlZWwgdGhlIGhlYWRhY2hlIG9yIGJlZ2luIHRvIApzdWZmZXIgZnJvbSBhIHBhaW4gaW4gdGhlIGFybSBhbmQgaGFuZCB3aXRoIHdoaWNoIHRoZSBvcGVyYXRpb24gaXMgYmVpbmcgCnBlcmZvcm1lZC4gSGUgaXMgYWN0dWFsbHkgZHJhd2luZyBpbnRvIGhpbXNlbGYgZGlzZWFzZWQgbWF0dGVyLCBhbmQgaXQgaXMgCm5lY2Vzc2FyeSBmb3IgaGlzIGNvbWZvcnQgYW5kIHdlbGwtYmVpbmcgdGhhdCBoZSBzaG91bGQgZGlzcG9zZSBvZiBpdCBiZWZvcmUgaXQgCm9idGFpbnMgYSBwZXJtYW5lbnQgbG9kZ21lbnQgaW4gaGlzIGJvZHkuCgoKSGUgc2hvdWxkIHRoZXJlZm9yZSBhZG9wdCBzb21lIGRlZmluaXRlIHBsYW4gdG8gZ2V0IHJpZCBvZiAKaXQsIGFuZCB0aGUgc2ltcGxlc3QgaXMganVzdCB0byB0aHJvdyBpdCBhd2F5LCB0byBzaGFrZSBpdCBmcm9tIHRoZSBoYW5kcyBhcyBvbmUgCndvdWxkIHNoYWtlIHdhdGVyLiBBbHRob3VnaCBoZSBkb2VzIG5vdCBzZWUgaXQsIHRoZSBtYXR0ZXIgd2hpY2ggaGUgaGFzIAp3aXRoZHJhd24gaXMgcGh5c2ljYWwsIGFuZCB3ZSBjYW4gZGVhbCB3aXRoIGl0IGJ5IHBoeXNpY2FsIG1lYW5zLiBJdCBpcyAKdGhlcmVmb3JlIG5lY2Vzc2FyeSB0aGF0IGhlIHNob3VsZCBub3QgbmVnbGVjdCB0aGVzZSBwcmVjYXV0aW9ucywgYW5kIHRoYXQgaGUgCnNob3VsZCBub3QgZm9yZ2V0IHRvIHdhc2ggaGlzIGhhbmRzIGNhcmVmdWxseSBhZnRlciBjdXJpbmcgYSBoZWFkYWNoZSBvciBhbnkgCm1hbGFkeSBvZiB0aGF0IG5hdHVyZS4gVGhlbiwgYWZ0ZXIgaGUgaGFzIHJlbW92ZWQgdGhlIGNhdXNlIG9mIHRoZSBldmlsLCBoZSAKcHJvY2VlZHMgdG8gcG91ciBpbiBnb29kIHN0cm9uZyBoZWFsdGh5IG1hZ25ldGlzbSB0byB0YWtlIGl0cyBwbGFjZSwgYW5kIHRvIApwcm90ZWN0IHRoZSBwYXRpZW50IGFnYWluc3QgdGhlIHJldHVybiBvZiB0aGUgZGlzZWFzZS4gT25lIGNhbiBzZWUgdGhhdCBpbiB0aGUgCmNhc2Ugb2YgYW55IG5lcnZvdXMgYWZmZWN0aW9uIHRoaXMgbWV0aG9kIHdvdWxkIGhhdmUgbWFuaWZvbGQgYWR2YW50YWdlcy4gSW4gCm1vc3Qgb2Ygc3VjaCBjYXNlcyB3aGF0IGlzIHdyb25nIGlzIGFuIGlycmVndWxhcml0eSBvZiB0aGUgZmx1aWRzIHdoaWNoIGNvdXJzZSAKYWxvbmcgdGhlIG5lcnZlczsgZWl0aGVyIHRoZXkgYXJlIGNvbmdlc3RlZCwgb3IgdGhleSBhcmUgc2x1Z2dpc2ggaW4gdGhlaXIgZmxvdywgCm9yIG9uIHRoZSBvdGhlciBoYW5kIHRoZXkgbWF5IGJlIHRvbyByYXBpZDsgdGhleSBtYXkgYmUgZGVmaWNpZW50IGluIHF1YW50aXR5LCAKb3IgcG9vciBpbiBxdWFsaXR5LiBJZiB3ZSBhZG1pbmlzdGVyIGRydWdzIG9mIGFueSBzb3J0LCBhdCB0aGUgYmVzdCB3ZSBjYW4gYWN0IApvbmx5IHVwb24gdGhlIHBoeXNpY2FsIG5lcnZlLCBhbmQgdGhyb3VnaCBpdCB0byBzb21lIGxpbWl0ZWQgZXh0ZW50IHVwb24gdGhlIApmbHVpZHMgc3Vycm91bmRpbmcgaXQ7IHdoZXJlYXMgbWVzbWVyaXNtIGFjdHMgZGlyZWN0bHkgdXBvbiB0aGUgZmx1aWRzIAp0aGVtc2VsdmVzLCBhbmQgc28gZ29lcyBzdHJhaWdodCB0byB0aGUgcm9vdCBvZiB0aGUgZXZpbC4KCgpDSEFQVEVSIElWwqAKCgpUSEUgREVWRUxPUE1FTlQgT0YgVEhFIApDSEFLUkFTwqAKCgpUSEUgRlVOQ1RJT05TIE9GIFRIRSAKQVdBS0VORUQgQ0VOVFJFU8KgCgoKQkVTSURFUyBrZWVwaW5nIGFsaXZlIHRoZSBwaHlzaWNhbCB2ZWhpY2xlLCB0aGUgCmZvcmNl77+9LWNlbnRyZXMgaGF2ZSBhbm90aGVyIGZ1bmN0aW9uLCB3aGljaCBjb21lcyBpbnRvIHBsYXkgb25seSB3aGVuIHRoZXkgYXJlIAphd2FrZW5lZCBpbnRvIGZ1bGwgYWN0aXZpdHkuIEVhY2ggb2YgdGhlIGV0aGVyaWMgY2VudHJlcyBjb3JyZXNwb25kcyB0byBhbiAKYXN0cmFsIGNlbnRyZSwgdGhvdWdoIGFzIHRoZSBhc3RyYWwgY2VudHJlIGlzIGEgdm9ydGV4IGluIGZvdXIgZGltZW5zaW9ucyBpdCBoYXMgCmFuIGV4dGVuc2lvbiBpbiBhIGRpcmVjdGlvbiBxdWl0ZSBkaWZmZXJlbnQgZnJvbSB0aGUgZXRoZXJpYywgYW5kIGNvbnNlcXVlbnRseSAKaXMgYnkgbm8gbWVhbnMgYWx3YXlzIGNvLXRlcm1pbm91cyB3aXRoIGl0LCB0aG91Z2ggc29tZSBwYXJ0IGlzIGFsd2F5cyAKY29pbmNpZGVudC4gVGhlIGV0aGVyaWMgdm9ydGV4IGlzIGFsd2F5cyBvbiB0aGUgc3VyZmFjZSBvZiB0aGUgZXRoZXJpYyBib2R5LCBidXQgCnRoZSBhc3RyYWwgY2VudHJlIGlzIGZyZXF1ZW50bHkgcXVpdGUgaW4gdGhlIGludGVyaW9yIG9mIHRoYXQgdmVoaWNsZS4KCgpUaGUgZnVuY3Rpb24gb2YgZWFjaCBvZiB0aGUgZXRoZXJpYyBjZW50cmVzIHdoZW4gZnVsbHkgCmFyb3VzZWQgaXMgdG8gYnJpbmcgZG93biBpbnRvIHBoeXNpY2FsIGNvbnNjaW91c++/vW5lc3Mgd2hhdGV2ZXIgbWF5IGJlIHRoZSAKcXVhbGl0eSBpbmhlcmVudCBpbiB0aGUgYXN0cmFsIGNlbnRyZSB3aGljaCBjb3JyZXNwb25kcyB0byBpdDsgc28sIGJlZm9yZSAKY2F0YWxvZ3VpbmcgdGhlIHJlc3VsdHMgdG8gYmUgb2J0YWluZWQgYnkgYXJvdXNpbmcgdGhlIGV0aGVyaWMgY2VudHJlcyBpbnRvIAphY3Rpdml0eSwgaXQgbWF5IGJlIHdlbGwgdG8gY29uc2lkZXIgd2hhdCBpcyBkb25lIGJ5IGVhY2ggb2YgdGhlIGFzdHJhbCBjZW50cmVzLCAKYWx0aG91Z2ggdGhlc2UgbGF0dGVyIGFyZSBhbHJlYWR5IGluIGZ1bGwgYWN0aXZpdHkgaW4gYWxsIGN1bHR1cmVkIHBlb3BsZSBvZiAKbGF0ZXIgcmFjZXMuIFdoYXQgZWZmZWN0LCB0aGVuLCBoYXMgdGhlIHF1aWNrZW5pbmcgb2YgZWFjaCBvZiB0aGVzZSBhc3RyYWwgCmNlbnRyZXMgcHJvZHVjZWQgaW4gdGhlIGFzdHJhbCBib2R5P8KgCgoKVEhFIEFTVFJBTCBDRU5UUkVTwqAKCgpUaGUgZmlyc3Qgb2YgdGhlc2UgY2VudHJlcywgYXMgaGFzIGFscmVhZHkgYmVlbiBleHBsYWluZWQsIGlzIAp0aGUgaG9tZSBvZiB0aGUgc2VycGVudC1maXJlLiBUaGlzIGZvcmNlIGV4aXN0cyBvbiBhbGwgcGxhbmVzIGFuZCBieSBpdHMgCmFjdGl2aXR5IHRoZSByZXN0IG9mIHRoZSBjZW50cmVzIGFyZSBhcm91c2VkLiBXZSBtdXN0IHRoaW5rIG9mIHRoZSBhc3RyYWwgYm9keSAKYXMgaGF2aW5nIGJlZW4gb3JpZ2luYWxseSBhbiBhbG1vc3QgaW5lcnQgbWFzcywgd2l0aCBub3RoaW5nIGJ1dCB0aGUgdmFndWVzdCAKY29uc2Npb3VzbmVzcywgd2l0aCBubyBkZWZpbml0ZSBwb3dlciBvZiBkb2luZyBhbnl0aGluZywgYW5kIG5vIGNsZWFyIGtub3ds77+9ZWRnZSAKb2YgdGhlIHdvcmxkIHdoaWNoIHN1cnJvdW5kZWQgaXQuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGhhcHBlbmVkLCB0aGVuLCB3YXMgdGhlIAphd2FrZW5pbmcgb2YgdGhhdCBmb3JjZSBpbiB0aGUgbWFuIGF0IHRoZSBhc3RyYWwgbGV2ZWwuIFdoZW4gYXdha2VuZWQgaXQgbW92ZWQgCm9uIHRvIHRoZSBzZWNvbmQgY2VudHJlLCBjb3JyZXNwb25kaW5nIHRvIHRoZSBwaHlzaWNhbCBzcGxlZW4sIGFuZCB0aHJvdWdoIGl0IAp2aXRhbGl6ZWQgdGhlIHdob2xlIGFzdHJhbCBib2R5IGVuYWJsaW5nIHRoZSBwZXJzb24gdG8gdHJhdmVsIGNvbnNjaW91c2x5LCAKdGhvdWdoIHdpdGggb25seSBhIHZhZ3VlIGNvbmNlcHRpb24gYXMgeWV0IG9mIHdoYXQgbGllIGVuY291bnRlcmVkIG9uIGhpcyAKam91cm5leXMuCgoKVGhlbiBpdCBtb3ZlZCBvbiB0byB0aGUgdGhpcmQsIHRoYXQgY29ycmVzcG9uZGluZyB0byB0aGUgCm5hdmVsLCBhbmQgdml2aWZpZWQgaXQsIHRoZXJlYnkgYXdha2VuaW5nIGluIHRoZSBhc3RyYWwgYm9keSB0aGUgcG93ZXIgb2YgCmZlZWxpbmctYSBzZW5zaXRpdmVuZXNzIHRvIGFsbCBzb3J0cyBvZiBpbmZsdWVuY2VzLCB0aG91Z2ggd2l0aG91dCBhcyB5ZXQgCmFueXRoaW5nIGxpa2UgdGhlIGRlZmluaXRlIGNvbXByZWhlbnNpb24gdGhhdCBjb21lcyBmcm9tIHNlZWluZyBvciBoZWFyaW5nLgoKClRoZSBmb3VydGggY2VudHJlLCB3aGVuIGF3YWtlbmVkLCBlbmRvd2VkIHRoZSBtYW4gd2l0aCB0aGUgCnBvd2VyIHRvIGNvbXByZWhlbmQgYW5kIHN5bXBhdGhpemUgd2l0aCB0aGUgdmlicmF0aW9ucyBvZiBvdGhlciBhc3RyYWwgZW50aXRpZXMsIApzbyB0aGF0IGhlIGNvdWxkIGluc3RpbmN0aXZlbHkgdW5kZXJzdGFuZCBzb21ldGhpbmcgb2YgdGhlaXIgZmVlbGluZ3MuCgoKVGhlIGF3YWtlbmluZyBvZiB0aGUgZmlmdGgsIHRoYXQgY29ycmVzcG9uZGluZyB0byB0aGUgdGhyb2F0LCAKZ2F2ZSBoaW0gdGhlIHBvd2VyIG9mIGhlYXJpbmcgb24gdGhlIGFzdHJhbCBwbGFuZTsgdGhhdCBpcyB0byBzYXksIGl0IGNhdXNlZCB0aGUgCmRldmVsb3BtZW50IG9mIHRoYXQgc2Vuc2Ugd2hpY2ggaW4gdGhlIGFzdHJhbCB3b3JsZCBwcm9kdWNlcyBvbiBvdXIgCmNvbnNjaW91c25lc3MgdGhlIGVmZmVjdCB3aGljaCBvbiB0aGUgcGh5c2ljYWwgcGxhbmUgd2UgY2FsbCBoZWFyaW5nLgoKClRoZSBkZXZlbG9wbWVudCBvZiB0aGUgc2l4dGgsIHRoYXQgY29ycmVzcG9uZGluZyB0byB0aGUgCmNlbnRyZSBiZXR3ZWVuIHRoZSBleWVicm93cywgaW4gYSBzaW1pbGFyIG1hbm5lciBwcm9kdWNlZCBhc3RyYWwgc2lnaHQgLSB0aGUgCnBvd2VyIHRvIHBlcmNlaXZlIGRlZmluaXRlbHkgdGhlIHNoYXBlIGFuZCBuYXR1cmUgb2YgYXN0cmFsIG9iamVjdHMsIGluc3RlYWQgb2YgCnZhZ3VlbHkgc2Vuc2luZyB0aGVpciBwcmVzZW5jZS4KCgpUaGUgYXJvdXNpbmcgb2YgdGhlIHNldmVudGgsIHRoYXQgY29ycmVzcG9uZGluZyB0byB0aGUgdG9wIG9mIAp0aGUgaGVhZCwgcm91bmRlZCBvZmYgYW5kIGNvbXBsZXRlZCBmb3IgaGltIHRoZSBhc3RyYWwgbGlmZSwgYW5kIGVuZG93ZWQgaGltIAp3aXRoIHRoZSBwZXJmZWN0aW9uIG9mIGl0cyBmYWN1bHRpZXMuwqAKCgrCoAoKCldpdGggcmVnYXJkIHRvIHRoaXMgY2VudHJlIGEgY2VydGFpbiBkaWZmZXJlbmNlIHNlZW1zIHRvIApleGlzdCwgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIHRvIHdoaWNoIG1lbiBiZWxvbmcuIEZvciBtYW55IG9mIHVzIHRoZSBhc3RyYWwgCnZvcnRpY2VzIGNvcnJlc++/vXBvbmRpbmcgdG8gdGhlIHNpeHRoIGFuZCBzZXZlbnRoIG9mIHRoZXNlIGNlbnRyZXMgYm90aCBjb252ZXJnZSAKdXBvbiB0aGUgcGl0dWl0YXJ5IGJvZHksIGFuZCBmb3IgdGhvc2UgcGVvcGxlIHRoZSBwaXR1aXRhcnkgYm9keSAoRmlnLiA4KSBpcyAKcHJhY3RpY2FsbHkgdGhlIG9ubHkgZGlyZWN0IGxpbmsgYmV0d2VlbiB0aGUgcGh5c2ljYWwgYW5kIHRoZSBoaWdoZXIgcGxhbmVzLsKgIApBbm90aGVyIHR5cGUgb2YgcGVvcGxlLCBob3dldmVyLCB3aGlsZSBzdGlsbCBhdHRhY2hpbmcgdGhlIHNpeHRoIGNlbnRyZSB0byB0aGUgCnBpdHVpdGFyeSBib2R5LCBiZW5kIG9yIHNsYW50IHRoZSBzZXZlbnRoIHVudGlsIGl0cyB2b3J0ZXggY29pbmNpZGVzIHdpdGggdGhlIAphdHJvcGhpZWQgb3JnYW4gY2FsbGVkIHRoZSBwaW5lYWwgZ2xhbmQgKEZpZy4gOCksIHdoaWNoIGlzIGJ5IHBlb3BsZSBvZiB0aGF0IAp0eXBlIHZpdmlmaWVkIGFuZCBtYWRlIGludG8gYSBsaW5lIG9mIGNvbW11bmljYXRpb24gZGlyZWN0bHkgd2l0aCB0aGUgbG93ZXIgCm1lbnRhbCwgd2l0aG91dCBhcHBhcmVudGx5IHBhc3NpbmcgdGhyb3VnaCB0aGUgaW50ZXJtZWRpYXRlIGFzdHJhbCBwbGFuZSBpbiB0aGUgCm9yZGluYXJ5IHdheS4gSXQgd2FzIGZvciB0aGlzIHR5cGUgdGhhdCBNYWRhbWUgQmxhdmF0c2t5IHdhcyB3cml0aW5nIHdoZW4gc2hlIApsYWlkIHN1Y2ggZW1waGFzaXMgdXBvbiB0aGUgYXdha2VuaW5nIG9mIHRoYXQgb3JnYW4uIERyLiBCZXNhbnQgYWxzbyBtZW50aW9ucyAKdGhpcyBmYWN0IHRoYXQgdGhlIHN0YXJ0aW5nLXBvaW50IG9mIGRldmVsb3BtZW50IGJlZ2lucyBhdCBkaWZmZXJlbnQgbGV2ZWxzIHdpdGggCmRpZmZlcmVudCBwZXJzb25zLCBpbiB0aGUgZm9sbG93aW5nIHBhc3NhZ2UgZnJvbSBBIFN0dWR5IGluIENvbnNjaW91c25lc3M6CgoKwqAKCgpUaGUgYnVpbGRpbmcgb2YgdGhlIGNlbnRyZXMgYW5kIHRoZSBncmFkdWFsIG9yZ2FuaXphdGlvbiBvZiAKdGhlbSBpbnRvIHdoZWVscywgY2FuIGJlIGJlZ3VuIGZyb20gYW55IHZlaGljbGUsIGFuZCB3aWxsIGJlIGJlZ3VuIGluIGFueSAKaW5kaXZpZHVhbCBmcm9tIHRoYXQgdmVoaWNsZSB3aGljaCByZXByZXNlbnRzIHRoZSBzcGVjaWFsIHR5cGUgb2YgdGVtcGVyYW1lbnQgdG8gCndoaWNoIGhlIGJlbG9uZ3MuIEFjY29yZGluZyBhcyBhIG1hbiBiZWxvbmdzIHRvIG9uZSB0eXBpY2FsIHRlbXBlcmFtZW50IG9yIAphbm90aGVyLCBzbyB3aWxsIGJlIHRoZSBwbGFjZSBvZiB0aGUgZ3JlYXRlc3QgYWN0aXZpdHkgaW4gdGhlIGJ1aWxkaW5nIHVwIG9mIGFsbCAKdGhlIHZlaGljbGVzLCBpbiB0aGUgZ3JhZHVhbCBtYWtpbmcgb2YgdGhlbSBpbnRvIGVmZmVjdGl2ZSBpbnN0cnVtZW50cyBvZiAKY29u77+9c2Npb3VzbmVzcyB0byBiZSBleHByZXNzZWQgb24gdGhlIHBoeXNpY2FsIHBsYW5lLiBUaGlzIGNlbnRyZSBvZiBhY3Rpdml0eSAKbWF5IGJlIGluIHRoZSBwaHlzaWNhbCwgYXN0cmFsLCBsb3dlciwgb3IgaGlnaGVyIG1lbnRhbCBib2R5LiBJbiBhbnkgb2YgdGhlc2UsIApvciBldmVuIGhpZ2hlciBzdGlsbCwgYWNjb3JkaW5nIHRvIHRoZSB0ZW1wZXJh77+9bWVudGFsIHR5cGUsIHRoaXMgY2VudHJlIHdpbGwgYmUgCmZvdW5kIGluIHRoZSBwcmluY2lwbGUgd2hpY2ggbWFya3Mgb3V0IHRoZSB0ZW1wZXJhbWVudGFsIHR5cGUsIGFuZCBmcm9tIHRoYXQgaXQgCndvcmtzIO+/vXVwd2FyZHPvv70gb3Ig77+9ZG93bndhcmRz77+9LCBzaGFwaW5nIHRoZSB2ZWhpY2xlcyBzbyBhcyB0byBtYWtlIHRoZW0gc3VpdGFibGUgCmZvciB0aGUgZXhwcmVzc2lvbiBvZiB0aGF0IHRlbXBlcmFtZW50LlsqKioqXcKgCgoKQVNUUkFMIFNFTlNFU8KgCgoKVGh1cyB0aGVzZSBjZW50cmVzIHRvIHNvbWUgZXh0ZW50IHRha2UgdGhlIHBsYWNlIG9mIApzZW5zZS1vcmdhbnMgZm9yIHRoZSBhc3RyYWwgYm9keTsgeWV0IHdpdGhvdXQgcHJv77+9cGVyIHF1YWxpZmljYXRpb24gdGhhdCAKZXhwcmVzc2lvbiB3b3VsZCBiZSBkZWNpZGVkbHkgbWlzbGVhZGluZywgZm9yIGl0IG11c3QgbmV2ZXIgYmUgZm9yZ290dGVuIHRoYXQgCnRob3VnaCwgaW4gb3JkZXIgdG8gbWFrZSBvdXJzZWx2ZXMgaW50ZWxsaWdpYmxlLCB3ZSBjb25zdGFudGx5IGhhdmUgdG8gc3BlYWsgb2YgCmFzdHJhbCBzZWVpbmcgb3IgYXN0cmFsIGhlYXJpbmcsIGFsbCB0aGF0IHdlIHJlYWxseSBtZWFuIGJ5IHRob3NlIGV4cHJlc3Npb25zIGlzIAp0aGUgZmFjdWx0eSBvZiByZXNwb25kaW5nIHRvIHN1Y2ggdmlicmF0aW9ucyBhcyBjb252ZXkgdG8gdGhlIG1hbu+/vXMgCmNvbnNjaW91c25lc3MsIHdoZW4gaGUgaXMgZnVuY3Rpb25pbmcgaW4gaGlzIGFzdHJhbCBib2R5LCBpbmZvcm1hdGlvbiBvZiB0aGUgCnNhbWUgY2hhcmFjdGVyIGFzIHRoYXQgY29udmV5ZWQgdG8gaGltIGJ5IGhpcyBleWVzIGFuZCBlYXJzIHdoaWxlIGhlIGlzIGluIHRoZSAKcGh5c2ljYWwgYm9keS4KCgpCdXQgaW4gdGhlIGVudGlyZWx5IGRpZmZlcmVudCBhc3RyYWwgY29uZGl0aW9ucyBzcGVjaWFsaXplZCAKb3JnYW5zIGFyZSBub3QgbmVjZXNzYXJ5IGZvciB0aGUgYXR0YWlubWVudCBvZiB0aGlzIHJlc3VsdC4gVGhlcmUgaXMgbWF0dGVyIGluIApldmVyeSBwYXJ0IG9mIHRoZSBhc3RyYWwgYm9keSB3aGljaCBpcyBjYXBhYmxlIG9mIHN1Y2ggcmVzcG9uc2UsIGFuZCAKY29uc2VxdWVudGx5IHRoZSBtYW4gZnVuY3Rpb25pbmcgaW4gdGhhdCB2ZWhpY2xlIHNlZXMgZXF1YWxseSB3ZWxsIHRoZSBvYmplY3RzIApiZWhpbmQgaGltLCBhYm92ZSBoaW0sIGFuZCBiZW5lYXRoIGhpbSwgd2l0aG91dCBuZWVkaW5nIHRvIHR1cm4gaGlzIGhlYWQuIFRoZSAKY2VudHJlcywgdGhlcmVmb3JlLCBjYW5ub3QgYmUgZGVzY3JpYmVkIGFzIG9yZ2FucyBpbiB0aGUgb3JkaW5hcnkgc2Vuc2Ugb2YgdGhlIAp3b3JkLCBzaW5jZSBpdCBpcyBub3QgdGhyb3VnaCB0aGVtIHRoYXQgdGhlIG1hbiBzZWVzIG9yIGhlYXJzLCBhcyBoZSBkb2VzIGhlcmUgCnRocm91Z2ggdGhlIGV5ZXMgYW5kIGVhcnMuIFlldCBpdCBpcyB1cG9uIHRoZWlyIHZpdmlmaWNhdGlvbiB0aGF0IHRoZSBwb3dlciBvZiAKZXhlcmNpc2luZyB0aGVzZSBhc3RyYWwgc2Vuc2VzIGRlcGVuZHMsIGVhY2ggb2YgdGhlbSBhcyBpdCBpcyBkZXZlbG9wZWQgZ2l2aW5nIAp0byB0aGUgd2hvbGUgYXN0cmFsIGJvZHkgdGhlIHBvd2VyIG9mIHJlc3BvbnNlIHRvIGEgbmV3IHNldCBvZiB2aWJyYe+/vXRpb25zLgoKCkFzIGFsbCB0aGUgcGFydGljbGVzIG9mIHRoZSBhc3RyYWwgYm9keSBhcmUgY29uc3RhbnRseSAKZmxvd2luZyBhbmQgc3dpcmxpbmcgYWJvdXQgbGlrZSB0aG9zZSBvZiBib2lsaW5nIHdhdGVyLCBhbGwgb2YgdGhlbSBpbiB0dXJuIHBhc3MgCnRocm91Z2ggZWFjaCBvZiB0aGUgY2VudHJlcyBvciB2b3J0aWNlcywgc28gdGhhdCBlYWNoIGNlbnRyZSBpbiBpdHMgdHVybiBldm9rZXMgCmluIGFsbCB0aGUgcGFydGljbGVzIG9mIHRoZSBib2R5IHRoZSBwb3dlciBvZiByZWNlcHRpdml0eSB0byBhIGNlcnRhaW4gc2V0IG9mIAp2aWJyYXRpb25zLCBhbmQgc28gYWxsIHRoZSBhc3RyYWwgc2Vuc2VzIGFyZSBlcXVhbGx5IGFjdGl2ZSBpbiBhbGwgcGFydHMgb2YgdGhlIApib2R5LiBCdXQgZXZlbiB3aGVuIHRoZXNlIGFzdHJhbCBzZW5zZXMgYXJlIGZ1bGx5IGF3YWtlbmVkIGl0IGJ5IG5vIG1lYW5zIApmb2xsb3dzIHRoYXQgdGhlIG1hbiB3aWxsIGJlIGFibGUgdG8gYnJpbmcgdGhyb3VnaCBpbnRvIGhpcyBwaHlzaWNhbCBib2R5IGFueSAKY29uc2Npb3VzbmVzcyBvZiB0aGVpciBhY3Rpb24uwqAKCgpUSEUgQVJPVVNJTkcgT0YgCktVTkRBTElOScKgCgoKV2hpbGUgYWxsIHRoaXMgYXN0cmFsIGF3YWtlbmluZyB3YXMgdGFraW5nIHBsYWNlLCB0aGVuLCB0aGUgCm1hbiBpbiBoaXMgcGh5c2ljYWwgY29uc2Npb3VzbmVzcyBrbmV3IG5vdGhpbmcgd2hhdGV2ZXIgb2YgaXQuIFRoZSBvbmx5IHdheSBpbiAKd2hpY2ggdGhlIGRlbnNlIGJvZHkgY2FuIGJlIGJyb3VnaHQgdG8gc2hhcmUgYWxsIHRoZXNlIGFkdmFudGFnZXMgaXMgYnkgCnJlcGVhdGluZyB0aGF0IHByb2Nlc3Mgb2YgYXdha2VuaW5nIHdpdGggdGhlIGV0aGVyaWMgY2VudHJlcy4gVGhhdCBtYXkgYmUgCmFjaGlldmVkIGluIHZhcmlvdXMgd2F5cywgYWNjb3JkaW5nIHRvIHRoZSBzY2hvb2wgb2YgeW9nYSB3aGljaCB0aGUgc3R1ZGVudCBpcyAKcHJhY3Rpc2luZy4KCgpTZXZlbiBzY2hvb2xzIG9mIHlvZ2EgYXJlIHJlY29nbml6ZWQgaW4gSW5kaWE6IDEuIFJhamEgWW9nYTsgCjIuIEthcm1hIFlvZ2E7IDMuIEpuYW5hIFlvZ2E7IDQuIEhhdGhhIFlvZ2E7IDUuIExheWEgWW9nYTsgNi4gQmhha3RpIFlvZ2E7IDcuIApNYW50cmEgWW9nYS4gSSBoYXZlIGdpdmVuIHNvbWUgYWNjb3VudCBvZiB0aGVtIGluIHRoZSBzZWNvbmQgZWRpdGlvbiBvZiBUaGUgCk1hc3RlcnMgYW5kIHRoZSBQYXRoLCBhbmQgUHJvZmVzc29yIFdvb2QgaGFzIGRlc2NyaWJlZCB0aGVtIGZ1bGx5IGluIGhpcyAKYm9vayBSYWphIFlvZ2E7IHRoZSBPY2N1bHQgVHJhaW5pbmcgb2YgdGhlIEhpbmR1cy4gVGhleSBhbGwgcmVjb2duaXplIHRoZSAKZXhpc3RlbmNlIGFuZCB0aGUgaW1wb3J0YW5jZSBvZiB0aGUgY2hha3JhcywgYW5kIGVhY2ggaGFzIGl0cyBvd24gbWV0aG9kIG9mIApkZXZlbG9waW5nIHRoZW0uIFRoZSBwbGFuIG9mIHRoZSBSYWphIFlvZ2kgaXMgdG8gbWVkaXRhdGUgdXBvbiBlYWNoIGluIHR1cm4gYW5kIApicmluZyB0aGVtIGludG8gYWN0aXZpdHkgYnkgc2hlZXIgZm9yY2Ugb2Ygd2lsbCAtIGEgc2NoZW1lIHdoaWNoIGhhcyBtdWNoIHRvIApyZWNvbW1lbmQgaXQuIFRoZSBzY2hvb2wgd2hpY2ggcGF5cyBtb3N0IGF0dGVudGlvbiB0byB0aGVtIGlzIHRoYXQgb2YgTGF5YSBZb2dhLCAKYW5kIGl0cyBzeXN0ZW0gaXMgdG8gYXJvdXNlIHRoZSBoaWdoZXIgcG90ZW50aWFsaXRpZXMgb2YgdGhlIHNlcnBlbnQtZmlyZSwgYW5kIApmb3JjZSBpdCB0aHJvdWdoIHRoZSBjZW50cmVzIG9uZSBieSBvbmUuCgoKVGhhdCBhcm91c2luZyBuZWVkcyBhIGRldGVybWluZWQgYW5kIGEgbG9uZyBjb250aW51ZWQgZWZmb3J0IApvZiB0aGUgd2lsbCwgZm9yIHRvIGJyaW5nIHRoYXQgZmlyc3QgY2hha3JhIGludG8gZnVsbCBhY3Rpdml0eSBpcyBwcmVjaXNlbHkgdG8gCmF3YWtlbiB0aGUgaW5uZXIgbGF5ZXJzIG9mIHRoZSBzZXJwZW50LWZpcmUuIFdoZW4gb25jZSB0aGF0IGlzIGFyb3VzZWQsIGl0IGlzIGJ5IAppdHMgdHJlbWVuZG91cyBmb3JjZSB0aGF0IHRoZSBvdGhlciBjZW50cmVzIGFyZSB2aXZpZmllZC4gSXRzIGVmZmVjdCBvbiB0aGUgCm90aGVyIGV0aGVyaWMgd2hlZWxzIGlzIHRvIGJyaW5nIGludG8gdGhlIHBoeXNpY2FsIGNvbnNjaW91c25lc3MgdGhlIHBvd2VycyAKd2hpY2ggd2VyZSBhcm91c2VkIGJ5IHRoZSBkZXZlbG9wbWVudCBvZiB0aGVpciBjb3JyZXNwb25kaW5nIGFzdHJhbCBjaGFrcmFzLsKgCgoKVEhFIEFXQUtFTklORyBPRiBUSEUgCkVUSEVSSUMgQ0hBS1JBU8KgCgoKV2hlbiB0aGUgc2Vjb25kIG9mIHRoZSBldGhlcmljIGNlbnRyZXMsIHRoYXQgYXQgdGhlIHNwbGVlbiwgCmlzIGF3YWtlbmVkLCB0aGUgbWFuIGlzIGVuYWJsZWQgdG8gcmVtZW1iZXIgaGlzIHZhZ3VlIGFzdHJhbCBqb3VybmV5cywgdGhvdWdoIApzb21ldGltZXMgb25seSB2ZXJ5IHBhcnRpYWxseS4gVGhlIGVmZmVjdCBvZiBhIHNsaWdodCBhbmQgYWNjaWRlbnRhbCBzdGltdWxhdGlvbiAKb2YgdGhpcyBjZW50cmUgaXMgb2Z0ZW4gdG8gcHJvZHVjZSBoYWxmLXJlbWVtYnJhbmNlIG9mIGEgYmxpc3NmdWwgc2Vuc2F0aW9uIG9mIApmbHlpbmcgdGhyb3VnaCB0aGUgYWlyLgoKCldoZW4gdGhlIHRoaXJkIGNlbnRyZSwgdGhhdCBhdCB0aGUgbmF2ZWwsIGNvbWVzIGludG8gCmFjdGl2aXR5LCB0aGUgbWFuIGJlZ2lucyBpbiB0aGUgcGh5c2ljYWwgYm9keSB0byBiZSBjb25zY2lvdXMgb2YgYWxsIGtpbmRzIG9mIAphc3RyYWwgaW5mbHVlbmNlcywgdmFndWVseSBmZWVsaW5nIHRoYXQgc29tZSBvZiB0aGVtIGFyZSBmcmllbmRseSBhbmQgb3RoZXJzIApob3N0aWxlLCBvciB0aGF0IHNvbWUgcGxhY2VzIGFyZSBwbGVhc2FudCBhbmQgb3RoZXJzIHVucGxlYXNhbnQsIHdpdGhvdXQgaW4gdGhlIApsZWFzdCBrbm93aW5nIHdoeS4KCgpTdGltdWxhdGlvbiBvZiB0aGUgZm91cnRoLCB0aGF0IGF0IHRoZSBoZWFydCwgbWFrZXMgdGhlIG1hbiAKaW5zdGluY3RpdmVseSBhd2FyZSBvZiB0aGUgam95cyBhbmQgc29ycm93cyBvZiBvdGhlcnMsIGFuZCBzb21ldGltZXMgZXZlbiBjYXVzZXMgCmhpbSB0byByZXByb2R1Y2UgaW4gaGltc2VsZiBieSBzeW1wYXRoeSB0aGVpciBwaHlzaWNhbCBhY2hlcyBhbmQgcGFpbnMuCgoKVGhlIGFyb3VzaW5nIG9mIHRoZSBmaWZ0aCwgdGhhdCBhdCB0aGUgdGhyb2F0LCBlbmFibGVzIGhpbSB0byAKaGVhciB2b2ljZXMsIHdoaWNoIHNvbWV0aW1lcyBtYWtlIGFsbCBraW5kcyBvZiBzdWdnZXN0aW9ucyB0byBoaW0uIEFsc28gCnNvbWV0aW1lcyBoZSBoZWFycyBtdXNpYywgb3Igb3RoZXIgbGVzcyBwbGVhc2FudCBzb3VuZHMuIFdoZW4gaXQgaXMgZnVsbHkgCndvcmtpbmcgaXQgbWFrZXMgdGhlIG1hbiBjbGFpcmF1ZGllbnQgYXMgZmFyIGFzIHRoZSBldGhlcmljIGFuZCBhc3RyYWwgcGxhbmVzIAphcmUgY29uY2VybmVkLgoKCldoZW4gdGhlIHNpeHRoLCBiZXR3ZWVuIHRoZSBleWVicm93cywgYmVjb21lcyB2aXZpZmllZCwgdGhlIAptYW4gYmVnaW5zIHRvIHNlZSB0aGluZ3MsIHRvIGhhdmUgdmFyaW91cyBzb3J0cyBvZiB3YWtpbmcgdmlzaW9ucywgc29tZXRpbWVzIG9mIApwbGFjZXMsIHNvbWV0aW1lcyBvZiBwZW9wbGUuIEluIGl0cyBlYXJsaWVyIGRldmVsb3BtZW50LCB3aGVuIGl0IGlzIG9ubHkganVzdCAKYmVnaW5uaW5nIHRvIGJlIGF3YWtlbmVkLCBpdCBvZnRlbiBtZWFucyBub3RoaW5nIG1vcmUgdGhhbiBoYWxmLXNlZWluZyAKbGFuZHNjYXBlcyBhbmQgY2xvdWRzIG9mIGNvbG91ci4gVGhlIGZ1bGwgYXJvdXNpbmcgb2YgdGhpcyBicmluZ3MgYWJvdXQgCmNsYWlydm95YW5jZS4KCgpUaGUgY2VudHJlIGJldHdlZW4gdGhlIGV5ZWJyb3dzIGlzIGNvbm5lY3RlZCB3aXRoIHNpZ2h0IGluIAp5ZXQgYW5vdGhlciB3YXkuIEl0IGlzIHRocm91Z2ggaXQgdGhhdCB0aGUgcG93ZXIgb2YgbWFnbmlmaWNhdGlvbiBvZiBtaW51dGUgCnBoeXNpY2FsIG9iamVjdHMgaXMgZXhlcmNpc2VkLiBBIHRpbnkgZmxleGlibGUgdHViZSBvZiBldGhlcmljIG1hdHRlciBpcyAKcHJvamVjdGVkIGZyb20gdGhlIGNlbnRyZSBvZiBpdCwgcmVzZW1ibGluZyBhIG1pY3Jvc++/vWNvcGljIHNuYWtlIHdpdGggc29tZXRoaW5nIApsaWtlIGFuIGV5ZSBhdCB0aGUgZW5kIG9mIGl0LiBUaGlzIGlzIHRoZSBzcGVjaWFsIG9yZ2FuIHVzZWQgaW4gdGhhdCBmb3JtIG9mIApjbGFpcu+/vXZveWFuY2UsIGFuZCB0aGUgZXllIGF0IHRoZSBlbmQgb2YgaXQgY2FuIGJlIGV4cGFuZGVkIG9yIGNvbnRyYWN0ZWQsIHRoZSAKZWZmZWN0IGJlaW5nIHRvIGNoYW5nZSB0aGUgcG93ZXIgb2YgbWFnbmlmaWNhdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHNpemUgb2YgdGhlIApvYmplY3Qgd2hpY2ggaXMgYmVpbmcgZXhhbWluZWQuIFRoaXMgaXMgd2hhdCBpcyBtZWFudCBpbiBhbmNpZW50IGJvb2tzIHdoZW4gCm1lbnRpb24gaXMgbWFkZSBvZiB0aGUgY2FwYWNpdHkgdG8gbWFrZSBvbmVzZWxmIGxhcmdlIG9yIHNtYWxsIGF0IHdpbGwuIFRvIApleGFtaW5lIGFuIGF0b20gb25lIGRldmVsb3BzIGFuIG9yZ2FuIG9mIHZpc2lvbiBjb21tZW7vv71zdXJhdGUgaW4gc2l6ZSB3aXRoIHRoZSAKYXRvbS4gVGhpcyBsaXR0bGUgc25ha2UgcHJv77+9amVjdGluZyBmcm9tIHRoZSBjZW50cmUgb2YgdGhlIGZvcmVoZWFkIHdhcyAKc3ltYm9saXplZCB1cG9uIHRoZSBoZWFkLWRyZXNzIG9mIHRoZSBQaGFyYW9oIG9mIEVneXB0LCB3aG8gYXMgdGhlIGNoaWVmIHByaWVzdCAKb2YgaGlzIGNvdW50cnkgd2FzIHN1cHBvc2VkIHRvIHBvc3Nlc3MgdGhpcyBhbW9uZyBtYW55IG90aGVyIG9jY3VsdCBwb3dlcnMuCgoKV2hlbiB0aGUgc2V2ZW50aCBjZW50cmUgaXMgcXVpY2tlbmVkLCB0aGUgbWFuIGlzIGFibGUgYnkgCnBhc3NpbmcgdGhyb3VnaCBpdCB0byBsZWF2ZSBoaXMgYm9keSBpbiBmdWxsIGNvbnNjaW91c25lc3MsIGFuZCBhbHNvIHRvIHJldHVybiAKdG8gaXQgd2l0aG91dCB0aGUgdXN1YWwgYnJlYWssIHNvIHRoYXQgaGlzIGNvbnNjaW91c25lc3Mgd2lsbCBiZSBjb250aW51b3VzIAp0aHJvdWdoIG5pZ2h0IGFuZCBkYXkuIFdoZW4gdGhlIGZpcmUgaGFzIGJlZW4gcGFzc2VkIHRocm91Z2ggYWxsIHRoZXNlIGNlbnRyZXMgCmluIGEgY2VydGFpbiBvcmRlciAod2hpY2ggdmFyaWVzIGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgcGVvcGxlKSB0aGUgCmNvbu+/vXNjaW91c25lc3MgYmVjb21lcyBjb250aW51b3VzIHVwIHRvIHRoZSBlbnRyeSBpbnRvIHRoZSBoZWF2ZW4td29ybGQgYXQgdGhlIAplbmQgb2YgdGhlIGxpZmUgb24gdGhlIGFzdHJhbCBwbGFuZSwgbm8gZGlmZmVyZW5jZSBiZWluZyBtYWRlIGJ5IGVpdGhlciB0aGUgCnRlbXBvcmFyeSBzZXBhcmF0aW9uIGZyb20gdGhlIHBoeXNpY2FsIGJvZHkgZHVyaW5nIHNsZWVwIG9yIHRoZSBwZXJtYW5lbnQgCmRpdmlzaW9uIGF0IGRlYXRoLsKgCgoKQ0FTVUFMIENMQUlSVk9ZQU5DRcKgCgoKQmVmb3JlIHRoaXMgaXMgZG9uZSwgaG93ZXZlciwgdGhlIG1hbiBtYXkgaGF2ZSBtYW55IGdsaW1wc2VzIApvZiB0aGUgYXN0cmFsIHdvcmxkLCBmb3Igc3BlY2lhbGx5IHN0cm9uZyB2aWJyYXRpb25zIG1heSBhdCBhbnkgdGltZSBnYWx2YW5pemUgCm9uZSBvciBvdGhlciBvZiB0aGUgY2hha3JhcyBpbnRvIHRlbXBvcmFyeSBhY3Rpdml0eSwgd2l0aG91dCBhcm91c2luZyB0aGUgCnNlcnBlbnQtZmlyZSBhdCBhbGw7IG9yIGl0IG1heSBoYXBwZW4gdGhhdCB0aGUgZmlyZSBtYXkgYmUgcGFydGlhbGx5IHJvdXNlZCwgYW5kIAppbiB0aGlzIHdheSBhbHNvIHNwYXNtb2RpYyBjbGFpcnZveWFuY2UgbWF5IGJlIHByb2R1Y2VkIGZvciB0aGUgdGltZS4gRm9yIHRoaXMgCmZpcmUgZXhpc3RzLCBhcyB3ZSBoYXZlIHNhaWQsIGluIHNldmVuIGxheWVycyBvciBzZXZlbiBkZWdyZWVzIG9mIGZvcmNlLCBhbmQgaXQgCm9mdGVuIGhhcHBlbnMgdGhhdCBhIG1hbiB3aG8gZXhlcnRzIGhpcyB3aWxsIGluIHRoZSBlZmZvcnQgdG8gYXJvdXNlIGl0IG1heSAKc3VjY2VlZCBpbiBhZmZlY3Rpbmcgb25lIGxheWVyIG9ubHksIGFuZCBzbyB3aGVuIGhlIHRoaW5rcyB0aGF0IGhlIGhhcyBkb25lIHRoZSAKd29yayBoZSBtYXkgZmluZCBpdCBpbmVmZmVjdGl2ZSwgYW5kIG1heSBoYXZlIHRvIGRvIGl0IGFsbCBvdmVyIGFnYWluIG1hbnkgCnRpbWVzLCBkaWdnaW5nIGdyYWR1YWxseSBkZWVwZXIgYW5kIGRlZXBlciwgdW50aWwgbm90IG9ubHkgdGhlIHN1cmZhY2UgaXMgCnN0aXJyZWQgYnV0IHRoZSB2ZXJ5IGhlYXJ0IG9mIHRoZSBmaXJlIGlzIGluIGZ1bGwgYWN0aXZpdHkuwqAKCgpUSEUgREFOR0VSIE9GIFBSRU1BVFVSRSAKQVdBS0VOSU5HwqAKCgpUaGlzIGZpZXJ5IHBvd2VyLCBhcyBpdCBpcyBjYWxsZWQgaW4gVGhlIFZvaWNlIG9mIHRoZSAKU2lsZW5jZSwgaXMgaW4gdmVyeSB0cnV0aCBsaWtlIGxpcXVpZCBmaXJlIGFzIGl0IHJ1c2hlcyB0aHJvdWdoIHRoZSBib2R5IAp3aGVuIGl0IGhhcyBiZWVuIGFyb3VzZWQgYnkgdGhlIHdpbGw7IGFuZCB0aGUgY291cnNlIHRocm91Z2ggd2hpY2ggaXQgb3VnaHQgdG8gCm1vdmUgaXMgc3BpcmFsIGxpa2UgdGhlIGNvaWxzIG9mIGEgc2VycGVudC4gSW4gaXRzIGF3YWtlbmVkIHN0YXRlIGl0IG1heSBiZSAKY2FsbGVkIHRoZSBXb3JsZO+/vXMgTW90aGVyIGluIGFub3RoZXIgc2Vuc2UgdGhhbiB0aGF0IGFscmVhZHkgbWVudGlvbmVkLCBiZWNhdXNlIAp0aHJvdWdoIGl0IG91ciB2YXJpb3VzIHZlaGljbGVzIG1heSBiZSB2aXZpZmllZCwgc28gdGhhdCB0aGUgaGlnaGVyIHdvcmxkcyBtYXkgCm9wZW4gYmVmb3JlIHVzIGluIHN1Y2Nlc3Npb24uCgoKRm9yIHRoZSBvcmRpbmFyeSBwZXJzb24gaXQgbGllcyBhdCB0aGUgYmFzZSBvZiB0aGUgc3BpbmUgCnVuLWF3YWtlbmVkLCBhbmQgaXRzIHZlcnkgcHJlc2VuY2UgdW5zdXNwZWN0ZWQsIGR1cmluZyB0aGUgd2hvbGUgb2YgaGlzIGxpZmU7IAphbmQgaXQgaXMgaW5kZWVkIGZhciBiZXR0ZXIgdG8gYWxsb3cgaXQgdGh1cyB0byByZW1haW4gZG9ybWFudCB1bnRpbCB0aGUgbWFuIGhhcyAKbWFkZSBkZWZpbml0ZSBtb3JhbCBkZXZlbG9wbWVudCwgdW50aWwgaGlzIHdpbGwgaXMgc3Ryb25nIGVub3VnaCB0byBjb250cm9sIGl0IAphbmQgaGlzIHRob3VnaHRzIHB1cmUgZW5vdWdoIHRvIGVuYWJsZSBoaW0gdG8gZmFjZSBpdHMgYXdha2VuaW5nIHdpdGhvdXQgaW5qdXJ5LiAKTm8gb25lIHNob3VsZCBleHBlcmltZW50IHdpdGggaXQgd2l0aG91dCBkZWZpbml0ZSBpbnN0cnVjdGlvbiBmcm9tIGEgdGVhY2hlciB3aG8gCnRob3JvdWdobHkgdW5kZXJzdGFuZHMgdGhlIHN1YmplY3QsIGZvciB0aGUgZGFuZ2VycyBjb25uZWN0ZWQgd2l0aCBpdCBhcmUgdmVyeSAKcmVhbCBhbmQgdGVycmlibHkgc2VyaW91cy4gU29tZSBvZiB0aGVtIGFyZSBwdXJlbHkgcGh5c2ljYWwuIEl0cyB1bmNvbnRyb2xsZWQgCm1vdmVtZW50IG9mdGVuIHByb2R1Y2VzIGludGVuc2UgcGh5c2ljYWwgcGFpbiwgYW5kIGl0IG1heSByZWFkaWx5IHRlYXIgdGlzc3VlcyAKYW5kIGV2ZW4gZGVzdHJveSBwaHlzaWNhbCBsaWZlLiBUaGlzLCBob3dldmVyLCBpcyB0aGUgbGVhc3Qgb2YgdGhlIGV2aWxzIG9mIAp3aGljaCBpdCBpcyBjYXBhYmxlLCBmb3IgaXQgbWF5IGRvIHBlcm1hbmVudCBpbmp1cnkgdG8gdmVoaWNsZXMgaGlnaGVyIHRoYW4gdGhlIApwaHlzaWNhbC4KCgpPbmUgdmVyeSBjb21tb24gZWZmZWN0IG9mIHJvdXNpbmcgaXQgcHJlbWF0dXJlbHkgaXMgdGhhdCBpdCAKcnVzaGVzIGRvd253YXJkcyBpbiB0aGUgYm9keSBpbnN0ZWFkIG9mIHVwd2FyZHMsIGFuZCB0aHVzIGV4Y2l0ZXMgdGhlIG1vc3QgCnVuZGVzaXJhYmxlIHBhc++/vXNpb25zIC0gZXhjaXRlcyB0aGVtIGFuZCBpbnRlbnNpZmllcyB0aGVpciBlZmZlY3RzIHRvIHN1Y2ggYSAKZGVncmVlIHRoYXQgaXQgYmVjb21lcyBpbXBvc3NpYmxlIGZvciB0aGUgbWFuIHRvIHJlc2lzdCB0aGVtLCBiZWNhdXNlIGEgZm9yY2UgCmhhcyBiZWVuIGJyb3VnaHQgaW50byBwbGF5IGluIHdob3NlIHByZXNlbmNlIGhlIGlzIGFzIGhlbHBsZXNzIGFzIGEgc3dpbW1lciAKYmVmb3JlIHRoZSBqYXdzIG9mIGEgc2hhcmsuIFN1Y2ggbWVuIGJlY29tZSBzYXR5cnMsIG1vbnN0ZXJzIG9mIGRlcHJhdml0eSwgCmJlY2F1c2UgdGhleSBhcmUgaW4gdGhlIGdyYXNwIG9mIGEgZm9yY2Ugd2hpY2ggaXMgb3V0IG9mIGFsbCBwcm9wb3J0aW9uIHRvIHRoZSAKb3JkaW5hcnkgaHVtYW4gcG93ZXIgb2YgcmVzaXN0YW5jZS4gVGhleSBtYXkgcHJvYmFibHkgZ2FpbiBjZXJ0YWluIHN1cGVybm9ybWFsIApwb3dlcnMsIGJ1dCB0aGVzZSB3aWxsIGJlIHN1Y2ggYXMgd2lsbCBicmluZyB0aGVtIGludG8gdG91Y2ggd2l0aCBhIGxvd2VyIG9yZGVyIApvZiBldm9sdXRpb24gd2l0aCB3aGljaCBodW1hbml0eSBpcyBpbnRlbmRlZCB0byBob2xkIG5vIGNvbW1lcmNlLCBhbmQgdG8gZXNjYXBlIApmcm9tIGl0cyBhd2Z1bCB0aHJhbGRvbSBtYXkgdGFrZSB0aGVtIG1vcmUgdGhhbiBvbmUgaW5jYXJuYXRpb24uCgoKSSBhbSBub3QgaW4gYW55IHdheSBleGFnZ2VyYXRpbmcgdGhlIGhvcnJvciBvZiB0aGlzIHRoaW5nLCBhcyAKYSBwZXJzb24gdG8gd2hvbSBpdCB3YXMgYWxsIGEgbWF0dGVyIG9mIGhlYXJzYXkgbWlnaHQgdW53aXR0aW5nbHkgZG8uIEkgaGF2ZSAKbXlzZWxmIGJlZW4gY29uc3VsdGVkIGJ5IHBlb3BsZSB1cG9uIHdob20gdGhpcyBhd2Z1bCBmYXRlIGhhcyBhbHJlYWR5IGNvbWUsIGFuZCAKSSBoYXZlIHNlZW4gd2l0aCBteSBvd24gZXllcyB3aGF0IGhhcHBlbmVkIHRvIHRoZW0uIFRoZXJlIGlzIGEgc2Nob29sIG9mIGJsYWNrIAptYWdpYyB3aGljaCBwdXJwb3NlbHkgdXRpbGl6ZXMgdGhpcyBwb3dlciBmb3Igc3VjaCBwdXJwb3NlcyzCoCBpbiBvcmRlciB0aGF0IAp0aHJvdWdoIGl0IG1heSBiZSB2aXZpZmllZCBhIGNlcnRhaW4gbG93ZXIgZm9yY2UtY2VudHJlIHdoaWNoIGlzIG5ldmVyIHVzZWQgaW4gCnRoYXQgd2F5IGJ5IHRoZSBmb2xsb3dlcnMgb2YgdGhlIEdvb2QgTGF3LiBTb21lIHdyaXRlcnMgZGVueSB0aGUgZXhpc3RlbmNlIG9mIApzdWNoIGEgY2VudHJlOyBidXQgQnJhaG1hbmFzIG9mIFNvdXRoZXJuIEluZGlhIGFzc3VyZSBtZSB0aGF0IHRoZXJlIGFyZSBjZXJ0YWluIAp5b2dpcyB3aG8gdGVhY2ggdGhlaXIgcHVwaWxzIHRvIHVzZSBpdCAtIHRob3VnaCBvZiBjb3Vyc2Ugbm90IG5lY2Vzc2FyaWx5IHdpdGggCmV2aWwgaW50ZW50LiBTdGlsbCwgdGhlIHJpc2sgaXMgdG9vIGdyZWF0IHRvIGJlIHdvcnRoIHRha2luZyB3aGVuIG9uZSBjYW4gCmFjaGlldmUgdGhlIHNhbWUgcmVzdWx0cyBpbiBhIHNhZmVyIHdheS4KCgpFdmVuIGFwYXJ0IGZyb20gdGhpcyBncmVhdGVzdCBvZiBpdHMgZGFuZ2VycywgdGhlIHByZW1hdHVyZSAKdW5mb2xkbWVudCBvZiB0aGUgaGlnaGVyIGFzcGVjdHMgb2Yga3VuZGFsaW5pIGhhcyBtYW55IG90aGVyIHVucGxlYXNhbnQgCnBvc3NpYmlsaXRpZXMuIEl0IGludGVuc2lmaWVzIGV2ZXJ5dGhpbmcgaW4gdGhlIG1hbu+/vXMgbmF0dXJlLCBhbmQgaXQgcmVhY2hlcyB0aGUgCmxvd2VyIGFuZCBldmlsIHF1YWxpdGllcyBtb3JlIHJlYWRpbHkgdGhhbiB0aGUgZ29vZC4gSW4gdGhlIG1lbnRhbCBib2R5LCBmb3IgCmV4YW1wbGUsIGFtYml0aW9uIGlzIHZlcnkgcXVpY2tseSBhcm91c2VkLCBhbmQgc29vbiBzd2VsbHMgdG8gYW4gaW5jcmVkaWJseSAKaW5vcmRpbmF0ZSBkZWdyZWUuIEl0IHdvdWxkIGJlIGxpa2VseSB0byBicmluZyB3aXRoIGl0IGEgZ3JlYXQgaW50ZW5zaWZpY2F0aW9uIApvZiB0aGUgcG93ZXIgb2YgaW50ZWxsZWN0LCBidXQgYXQgdGhlIHNhbWUgdGltZSBpdCB3b3VsZCBwcm9kdWNlIGFibm9ybWFsIGFuZCAKc2F0YW5pYyBwcmlkZSwgc3VjaCBhcyBpcyBxdWl0ZSBpbmNvbmNlaXZhYmxlIHRvIHRoZSBvcmRpbmFyeSBtYW4uIEl0IGlzIG5vdCAKd2lzZSBmb3IgYSBtYW4gdG8gdGhpbmsgdGhhdCBoZSBpcyBwcmVwYXJlZCB0byBjb3BlIHdpdGggYW55IGZvcmNlIHRoYXQgbWF5IAphcmlzZSB3aXRoaW4gaGlzIGJvZHk7IHRoaXMgaXMgbm8gb3JkaW5hcnkgZW5lcmd5LCBidXQgc29tZe+/vXRoaW5nIHJlc2lzdGxlc3MuIApBc3N1cmVkbHkgbm8gdW5pbnN0cnVjdGVkIG1hbiBzaG91bGQgZXZlciB0cnkgdG8gYXdha2VuIGl0LCBhbmQgaWYgc3VjaCBhbiBvbmUgCmZpbmRzIHRoYXQgaXQgaGFzIGJlZW4gYXJvdXNlZCBieSBhY2NpZGVudCBoZSBzaG91bGQgYXQgb25jZSBjb25zdWx0IHNvbWUgb25lIAp3aG8gZnVsbHkgdW5kZXJzdGFuZHMgdGhlc2UgbWF0dGVycy4KCgpJIGFtIHNwZWNpYWxseSByZWZyYWluaW5nIGZyb20gYW55IGV4cGxhbmF0aW9uIGFzIHRvIGhvdyB0aGlzIAphcm91c2luZyBpcyB0byBiZSBkb25lLCBub3IgZG8gSSBtZW50aW9uIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgZm9yY2UgKHdoZW4gCmFyb3VzZWQpIHNob3VsZCBiZSBwYXNzZWQgdGhyb3VnaCB0aGVzZSB2YXJpb3VzIGNlbnRyZXMsIGZvciB0aGF0IHNob3VsZCBieSAKbm8gbWVhbnMgYmUgYXR0ZW1wdGVkIGV4Y2VwdCBhdCB0aGUgZXhwcmVzcyBzdWdnZXN0aW9uIG9mIGEgTWFzdGVyLCB3aG8gd2lsbCAKd2F0Y2ggb3ZlciBIaXMgcHVwaWxzIGR1cmluZyB0aGUgdmFyaW91cyBzdGFnZXMgb2YgdGhlIGV4cGVyaW1lbnQuCgoKSSBzaG91bGQgbGlrZSBtb3N0IHNvbGVtbmx5IHRvIHdhcm4gYWxsIHN0dWRlbnRzIGFnYWluc3QgCm1ha2luZyBhbnkgZWZmb3J0IHdoYXRldmVyIGluIHRoZSBkaXJlY3Rpb24gb2YgYXdha2VuaW5nIHRoZXNlIHRyZW1lbmRvdXMgCmZvcmNlcywgZXhjZXB0IHVuZGVyIHN1Y2ggcXVhbGlmaWVkIHR1aXRpb24sIGZvciBJIGhhdmUgbXlzZWxmIHNlZW4gbWFueSBjYXNlcyAKb2YgdGhlIHRlcnJpYmxlIGVmZmVjdHMgd2hpY2ggZm9sbG93IGZyb20gaWdub3JhbnQgYW5kIGlsbC1hZHZpc2VkIG1lZGRsaW5nIHdpdGggCnRoZXNlIHZlcnkgc2VyaW91cyBtYXR0ZXJzLiBUaGUgZm9yY2UgaXMgYSB0cmVtZW5kb3VzIHJlYWxpdHksIG9uZSBvZiB0aGUgZ3JlYXQgCmJhc2ljIGZhY3RzIG9mIG5hdHVyZSwgYW5kIG1vc3QgZW1waGF0aWNhbGx5IGl0IGlzIG5vdCBhIHRoaW5nIHdpdGggd2hpY2ggdG8gCnBsYXksIG5vdCBhIG1hdHRlciB0byBiZSBsaWdodGx5IHRha2VuIGluIGhhbmQsIGZvciB0byBleHBlcmltZW50IHdpdGggaXQgCndpdGhvdXQgdW5kZXJzdGFuZGluZyBpdCBpcyBmYXIgbW9yZSBkYW5nZXJvdXMgdGhhbiBpdCB3b3VsZCBiZSBmb3IgYSBjaGlsZCB0byAKcGxheSB3aXRoIG5pdHJvZ2x5Y2VyaW5lLiBBcyBpcyB2ZXJ5IHRydWx5IHNhaWQgaW4gVGhlIEhhdGhheW9nYSBQcmFkaXBpa2E6IArvv71JdCBnaXZlcyBsaWJlcmF0aW9uIHRvIHlvZ2lzIGFuZCBib25kYWdlIHRvIGZvb2xz77+9IChJSUksIDEwNy4pLgoKCkluIG1hdHRlcnMgc3VjaCBhcyB0aGVzZSwgc3R1ZGVudHMgc28gb2Z0ZW4gc2VlbSB0byB0aGluayAKdGhhdCBzb21lIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBsYXdzIG9mIG5hdHVyZSB3aWxsIGJlIG1hZGUgaW4gdGhlaXIgY2FzZSwgCnRoYXQgc29tZSBzcGVjaWFsIGludGVydmVudGlvbiBvZiBwcm92aWRlbmNlIHdpbGwgc2F2ZSB0aGVtIGZyb20gdGhlIApjb25zZXF1ZW5jZXMgb2YgdGhlaXIgZm9sbHkuIEFzc3VyZWRseSBub3RoaW5nIG9mIHRoYXQgc29ydCB3aWxsIGhhcHBlbiwgYW5kIHRoZSAKbWFuIHdobyB3YW50b25seSBwcm92b2tlcyBhbiBleHBsb3Npb24gaXMgcXVpdGUgbGlrZWx5IHRvIGJlY29tZSBpdHMgZmlyc3QgCnZpY3RpbS4gSXQgd291bGQgc2F2ZSBtdWNoIHRyb3VibGUgYW5kIGRpc++/vWFwcG9pbnRtZW50IGlmIHN0dWRlbnRzIGNvdWxkIGJlIAppbmR1Y2VkIHRvIHVuZGVyc3RhbmQgdGhhdCBpbiBhbGwgbWF0dGVycyBjb25uZWN0ZWQgd2l0aCBvY2N1bHRpc20gd2UgbWVhbiBqdXN0IApleGFjdGx5IGFuZCBsaXRlcmFsbHkgd2hhdCB3ZSBzYXksIGFuZCB0aGF0IGl0IGlzIGFwcGxpY2FibGUgaW4gZXZlcnkgY2FzZSAKd2l0aG91dCBleGNlcHRpb24uIEZvciB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzIGZhdm91cml0aXNtIGluIHRoZSB3b3JraW5nIG9mIAp0aGUgZ3JlYXQgbGF3cyBvZiB0aGUgdW5pdmVyc2UuCgoKRXZlcnlib2R5IHdhbnRzIHRvIHRyeSBhbGwgcG9zc2libGUgZXhwZXJpbWVudHM7IGV2ZXJ5Ym9keSBpcyAKY29udmluY2VkIHRoYXQgaGUgaXMgcXVpdGUgcmVhZHkgZm9yIHRoZSBoaWdoZXN0IHBvc3NpYmxlIHRlYWNoaW5nIGFuZCBmb3IgYW55IApzb3J0IG9mIGRldmVsb3Dvv71tZW50LCBhbmQgbm8gb25lIGlzIHdpbGxpbmcgdG8gd29yayBwYXRpZW50bHkgYWxvbmcgYXQgdGhlIAppbXByb3ZlbWVudCBvZiBjaGFyYWN0ZXIsIGFuZCB0byBkZXZvdGUgaGlzIHRpbWUgYW5kIGhpcyBlbmVyZ2llcyB0byBkb2luZyAKc29tZXRoaW5nIHVzZWZ1bCBmb3IgdGhlIHdvcmsgb2YgVGhlIFNvY2lldHksIHdhaXRpbmcgZm9yIGFsbCB0aGVzZSBvdGhlciB0aGluZ3MgCnVudGlsIGEgTWFzdGVyIHNoYWxsIGFubm91bmNlIHRoYXQgaGUgaXMgcmVhZHkgZm9yIHRoZW0uIEFzIEkgaGF2ZSBhbHJlYWR5IHNhaWQgCmluIHRoZSBwcmV2aW91cyBjaGFwdGVyIGluIGFub3RoZXIgY29ubmVjdGlvbiwgdGhlIG9sZCBhcGhvcmlzbSBzdGlsbCByZW1haW5zIAp0cnVlOiDvv71TZWVrIHllIGZpcnN0IHRoZSBLaW5nZG9tIG9mIEdvZCBhbmQgSGlzIHJpZ2h0ZW91c25lc3MsIGFuZCBhbGwgdGhlc2UgCnRoaW5ncyBzaGFsbCBiZSBhZGRlZCB1bnRvIHlvdS7vv73CoAoKClRIRSBTUE9OVEFORU9VUyAKQVdBS0VOSU5HIE9GIEtVTkRBTElOScKgCgoKVGhlcmUgYXJlIHNvbWUgY2FzZXMgaW4gd2hpY2ggdGhlIGlubmVyIGxheWVycyBvZiB0aGlzIGZpcmUgCmF3YWtlbiBzcG9udGFuZW91c2x5LCBzbyB0aGF0IGEgZHVsbCBnbG93IGlzIGZlbHQ7IGl0IG1heSBldmVuIGJlZ2luIHRvIG1vdmUgb2YgCml0c2VsZiwgdGhvdWdoIHRoaXMgaXMgcmFyZS4gV2hlbiB0aGlzIGhhcHBlbnMsIGl0IG1heSBjYXVzZSBncmVhdCBwYWluLCBhcywgCnNpbmNlIHRoZSBwYXNzYWdlcyBhcmUgbm90IHByZXBhcmVkIGZvciBpdCwgaXQgd291bGQgaGF2ZSB0byBjbGVhciBpdHMgd2F5IGJ5IAphY3R1YWxseSBidXJuaW5nIHVwIO+/vWEgZ3JlYXQgZGVhbCBvZiBldGhlcmljIGRyb3NzIC0gYSBwcm9jZXNzIHRoYXQgY2Fubm90IGJ1dCAKZW5nZW5kZXIgc3VmZmVyaW5nLiBXaGVuIGl0IHRodXMgYXdha2VzIG9mIGl0c2VsZiBvciBpcyBhY2NpZGVudGFsbHkgYXJvdXNlZCwgaXQgCnVzdWFsbHkgdHJpZXMgdG8gcGFzcyB1cCB0aGUgaW50ZXJpb3Igb2YgdGhlIHNwaW5lLCBmb2xsb3dpbmcgdGhlIGNvdXJzZSBhbHJlYWR5IAp0YWtlbiBieSBpdHMgbG93ZXN0IGFuZCBnZW50bGVzdCBtYW5pZmVzdGF0aW9uLiBJZiBpdCBiZSBwb3NzaWJsZSwgdGhlIHdpbGwgCnNob3VsZCBiZSBzZXQgaW4gbW90aW9uIHRvIGFycmVzdCBpdHMgdXB3YXJkIG1vdmVtZW50LCBidXQgaWYgdGhhdCBwcm92ZXMgdG8gYmUgCmltcG9z77+9c2libGUgKGFzIGlzIG1vc3QgbGlrZWx5KSBubyBhbGFybSBuZWVkIGJlIGZlbHQuIEl0IHdpbGwgcHJvYmFibHkgZmxhc2ggCm91dCB0aHJvdWdoIHRoZSBoZWFkIGFuZCBlc2NhcGUgaW50byB0aGUgc3Vycm91bmRpbmcgYXRtb3NwaGVyZSwgYW5kIGl0IGlzIApsaWtlbHkgdGhhdCBubyBoYXJtIHdpbGwgcmVzdWx0IGJleW9uZCBhIHNsaWdodCB3ZWFrZW5pbmcuIE5vdGhpbmcgd29yc2UgdGhhbiBhIAp0ZW1wb3JhcnkgbG9zcyBvZiBjb25zY2lvdXNuZXNzIG5lZWQgYmUgYXBwcmVoZW5kZWQuIFRoZSByZWFsbHkgYXBwYWxsaW5nIApkYW5nZXJzIGFyZSBjb25uZWN0ZWQgbm90IHdpdGggaXRzIHVwd2FyZCBydXNoLCBidXQgd2l0aCB0aGUgcG9zc2liaWxpdHkgb2YgaXRzIAp0dXJuaW5nIGRvd253YXJkcyBhbmQgaW53YXJkcy4KCgpJdHMgcHJpbmNpcGFsIGZ1bmN0aW9uIGluIGNvbm5lY3Rpb24gd2l0aCBvY2N1bHQgZGV2ZWxvcG1lbnQgCmlzIHRoYXQsIGJ5IGJlaW5nIHNlbnQgdGhyb3VnaCB0aGUgZm9yY2Ut77+9Y2VudHJlcyBpbiB0aGUgZXRoZXJpYyBib2R5LCBhcyBhYm92ZSAKZGVzY3JpYmVkLCBpdCBxdWlja2VucyB0aGVzZSBjaGFrcmFzIGFuZCBtYWtlcyB0aGVtIG1vcmUgZnVsbHkgYXZhaWxhYmxlIGFzIApnYXRlcyBvZiBjb25uZWN0aW9uIGJldHdlZW4gdGhlIHBoeXNpY2FsIGFuZCBhc3RyYWwgYm9kaWVzLiBJdCBpcyBzYWlkIGluIFRoZSAKVm9pY2Ugb2YgdGhlIFNpbGVuY2UgdGhhdCB3aGVuIHRoZSBzZXJwZW50LWZpcmUgcmVhY2hlcyB0aGUgY2VudHJlIGJldHdlZW4gCnRoZSBleWVicm93cyBhbmQgZnVsbHkgdml2aWZpZXMgaXQsIGl0IGNvbmZlcnMgdGhlIHBvd2VyIG9mIGhlYXJpbmcgdGhlIHZvaWNlIG9mIAp0aGUgTWFzdGVyIC0gd2hpY2ggbWVhbnMgaW4gdGhpcyBjYXNlIHRoZSB2b2ljZSBvZiB0aGUgZWdvIG9yIGhpZ2hlciBzZWxmLiBUaGUgCnJlYXNvbiBmb3IgdGhpcyBzdGF0ZW1lbnQgaXMgdGhhdCB3aGVuIHRoZSBwaXR1aXRhcnkgYm9keSBpcyBicm91Z2h0IGludG8gCndvcmtpbmcgb3JkZXIgaXQgZm9ybXMgYSBwZXJmZWN0IGxpbmsgd2l0aCB0aGUgYXN0cmFsIHZlaGljbGUsIHNvIHRoYXQgdGhyb3VnaCAKaXQgYWxsIGNvbe+/vW11bmljYXRpb25zIGZyb20gd2l0aGluIGNhbiBiZSByZWNlaXZlZC4KCgpJdCBpcyBub3Qgb25seSB0aGlzIGNoYWtyYTsgYWxsIHRoZSBoaWdoZXIgZm9yY2Ut77+9Y2VudHJlcyAKaGF2ZSBwcmVzZW50bHkgdG8gYmUgYXdha2VuZWQsIGFuZCBlYWNoIG11c3QgYmUgbWFkZSByZXNwb25zaXZlIHRvIGFsbCBraW5kcyBvZiAKaW5mbHVlbmNlcyBmcm9tIHRoZSB2YXJpb3VzIGFzdHJhbCBzdWItcGxhbmVzLiBUaGlzIGRldmVsb3BtZW50IHdpbGwgY29tZSB0byBhbGwgCmluIGR1ZSBjb3Vyc2UsIGJ1dCBtb3N0IHBlb3BsZSBjYW5ub3QgZ2FpbiBpdCBkdXJpbmcgdGhlIHByZXNlbnQgaW5jYXJuYXRpb24sIGlmIAppdCBpcyB0aGUgZmlyc3QgaW4gd2hpY2ggdGhleSBoYXZlIGJlZ3VuIHRvIHRha2UgdGhlc2UgbWF0dGVycyBzZXJpb3VzbHkgaW4gCmhhbmQuIFNvbWUgSW5kaWFucyBtaWdodCBzdWNjZWVkIGluIGRvaW5nIHNvLCBhcyB0aGVpciBib2RpZXMgYXJlIGJ5IGhlcmVkaXR5IAptb3JlIGFkYXB0YWJsZSB0aGFuIG1vc3Qgb3RoZXJzOyBidXQgaXQgaXMgcmVhbGx5IGZvciB0aGUgbWFqb3JpdHkgdGhlIHdvcmsgb2YgYSAKbGF0ZXIgUm91bmQgYWx0b2dldGhlci4gVGhlIGNvbnF1ZXN0IG9mIHRoZSBzZXJwZW50Le+/vWZpcmUgaGFzIHRvIGJlIHJlcGVhdGVkIGluIAplYWNoIGluY2FybmF0aW9uLCBzaW5jZSB0aGXCoCB2ZWhpY2xlcyBhcmUgbmV3IGVhY2ggdGltZSwgYnV0IGFmdGVyIGl0IGhhcyBiZWVuIApvbmNlIHRob3JvdWdobHkgYWNoaWV2ZWQgdGhlc2UgcmVwZXRpdGlvbnMgd2lsbCBiZSBhbiBlYXN5IG1hdHRlci4gSXQgbXVzdCBiZSAKcmVtZW1iZXJlZCB0aGF0IGl0cyBhY3Rpb24gdmFyaWVzIHdpdGggZGlmZmVyZW50IHR5cGVzIG9mIHBlb3BsZTsgc29tZSwgZm9yIApleGFtcGxlLCB3b3VsZCBzZWUgdGhlIGhpZ2hlciBzZWxmIHJhdGhlciB0aGFuIGhlYXIgaXRzIHZvaWNlLiBBZ2FpbiwgdGhpcyAKY29ubmVjdGlvbiB3aXRoIHRoZSBoaWdoZXIgaGFzIG1hbnkgc3RhZ2VzOyBmb3IgdGhlIHBlcnNvbmFsaXR5IGl0IG1lYW5zIHRoZSAKaW5mbHVlbmNlIG9mIHRoZSBlZ28sIGJ1dCBmb3IgdGhlIGVnbyBoaW1zZWxmIGl0IG1lYW5zIHRoZSBwb3dlciBvZiB0aGUgTW9uYWQsIAphbmQgZm9yIHRoZSBNb25hZCBpbiB0dXJuIGl0IG1lYW5zIHRvIGJlY29tZSBhIGNvbnNjaW91cyBleHByZXNzaW9uIG9mIHRoZSAKTG9nb3MuwqAKCgpQRVJTT05BTCBFWFBFUklFTkNFwqAKCgpJdCBtYXkgYmUgb2YgdXNlIGlmIEkgbWVudGlvbiBteSBvd24gZXhwZXJpZW5jZSBpbiB0aGlzIAptYXR0ZXIuIEluIHRoZSBlYXJsaWVyIHBhcnQgb2YgbXkgcmVzaWRlbmNlIGluIEluZGlhIGZvcnR5LXR3byB5ZWFycyBhZ28gSSBtYWRlIApubyBlZmZvcnQgdG8gcm91c2UgdGhlIGZpcmUgLSBub3QgaW5kZWVkIGtub3dpbmcgdmVyeSBtdWNoIGFib3V0IGl0LCBhbmQgaGF2aW5nIAp0aGUgb3BpbmlvbiB0aGF0LCBpbiBvcmRlciB0byBkbyBhbnl0aGluZyB3aXRoIGl0LCBpdCB3YXMgbmVjZXNzYXJ5IHRvIGJlIGJvcm4gCndpdGggYSBzcGVjaWFsbHkgcHN5Y2hpYyBib2R5LCB3aGljaCBJIGRpZCBub3QgcG9zc2Vzcy4gQnV0IG9uZSBkYXkgb25lIG9mIHRoZSAKTWFzdGVycyBtYWRlIGEgc3VnZ2VzdGlvbiB0byBtZSB3aXRoIHJlZ2FyZCB0byBhIGNlcnRhaW4ga2luZCBvZiBtZWRpdGF0aW9uIAp3aGljaCB3b3VsZCBldm9rZSB0aGlzIGZvcmNlLiBOYXR1cmFsbHkgSSBhdCBvbmNlIHB1dCB0aGUgc3Vn77+9Z2VzdGlvbiBpbnRvIApwcmFjdGljZSwgYW5kIGluIGNvdXJzZSBvZiB0aW1lIHdhcyBzdWPvv71jZXNzZnVsLiBJIGhhdmUgbm8gZG91YnQsIGhvd2V2ZXIsIHRoYXQgCkhlIHdhdGNoZWQgdGhlIGV4cGVyaW1lbnQsIGFuZCB3b3VsZCBoYXZlIGNoZWNrZWQgbWUgaWYgaXQgaGFkIGJlY29tZSBkYW5nZXJvdXMuIApJIGFtIHRvbGQgdGhhdCB0aGVyZSBhcmUgSW5kaWFuIGFzY2V0aWNzIHdobyB0ZWFjaCB0aGlzIHRvIHRoZWlyIHB1cGlscywgb2YgCmNvdXJzZSBrZWVwaW5nIHRoZW0gdW5kZXIgY2FyZWZ1bCBzdXBlcnZpc2lvbiBkdXJpbmcgdGhlIHByb2Nlc3MuIEJ1dCBJIGRvIG5vdCAKbXlzZWxmIGtub3cgb2YgYW55IHN1Y2gsIG5vciBzaG91bGQgSSBoYXZlIGNvbmZpZGVuY2UgaW4gdGhlbSB1bmxlc3MgdGhleSB3ZXJlIApzcGVjaWFsbHkgcmVjb21tZW5kZWQgYnkgc29tZSBvbmUgd2hvbSBJIGtuZXcgdG8gYmUgcG9zc2Vzc2VkIG9mIHJlYWwga25vd2xlZGdlLgoKClBlb3BsZSBvZnRlbiBhc2sgbWUgd2hhdCBJIGFkdmlzZSB0aGVtIHRvIGRvIHdpdGggcmVnYXJkIHRvIAp0aGUgYXJvdXNpbmcgb2YgdGhpcyBmb3JjZS4gSSBhZHZpc2UgdGhlbSB0byBkbyBleGFjdGx5IHdoYXQgSSBteXNlbGYgZGlkLiBJIApyZWNvbW1lbmTCoCB0aGVtIHRvIHRocm93IHRoZW1zZWx2ZXMgaW50byBUaGVvc29waGljYWwgd29yayBhbmQgd2FpdCB1bnRpbCB0aGV5IApyZWNlaXZlIGEgZGVmaW5pdGUgY29tbWFuZCBmcm9tIHNvbWUgTWFzdGVyIHdobyB3aWxsIHVuZGVydGFrZSB0byBzdXBlcmludGVuZCAKdGhlaXIgcHN5Y2hpYyBkZXZlbG9wbWVudCwgY29udGludWluZyBpbiB0aGUgbWVhbnRpbWUgYWxsIHRoZSBvcmRpbmFyeSBleGVyY2lzZXMgCm9mIG1lZGl0YXRpb24gdGhhdCBhcmUga25vd24gdG8gdGhlbS4gVGhleSBzaG91bGQgbm90IGNhcmUgaW4gdGhlIGxlYXN0IHdoZXRoZXIgCnN1Y2ggZGV2ZWxvcG1lbnQgY29tZXMgaW4gdGhpcyBpbmNhcm5hdGlvbiBvciBpbiB0aGUgbmV4dCwgYnV0IHNob3VsZCByZWdhcmQgdGhlIAptYXR0ZXIgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB0aGUgZWdvIGFuZCBub3Qgb2YgdGhlIHBlcnNvbmFsaXR5LCBmZWVsaW5nIAphYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCB0aGUgTWFzdGVycyBhcmUgYWx3YXlzIHdhdGNoaW5nIGZvciB0aG9zZSB3aG9tIFRoZXkgY2FuIApoZWxwLCB0aGF0IGl0IGlzIGVudGlyZWx5IGltcG9zc2libGUgZm9yIGFueW9uZSB0byBiZSBvdmVybG9va2VkLCBhbmQgdGhhdCBUaGV5IAp3aWxsIHVucXVlc3Rpb25hYmx5IGdpdmUgVGhlaXIgZGlyZWN0aW9ucyB3aGVuIFRoZXkgdGhpbmsgdGhhdCB0aGUgcmlnaHQgdGltZSAKaGFzIGNvbWUuCgoKSSBoYXZlIG5ldmVyIGhlYXJkIHRoYXQgdGhlcmUgaXMgYW55IHNvcnQgb2YgYWdlIGxpbWl0IHdpdGggCnJlZ2FyZCB0byB0aGUgZGV2ZWxvcG1lbnQsIGFuZCBJIGRvIG5vdCBzZWUgdGhhdCBhZ2Ugc2hvdWxkIG1ha2UgYW55IGRpZmZlcmVuY2UsIApzbyBsb25nIGFzIG9uZSBoYXMgcGVyZmVjdCBoZWFsdGg7IGJ1dCB0aGUgaGVhbHRoIGlzIGEgbmVjZXNzaXR5LCBmb3Igb25seSBhIApzdHJvbmcgYm9keSBjYW4gZW5kdXJlIHRoZSBzdHJhaW4sIHdoaWNoIGlzIG11Y2ggbW9yZSBzZXJpb3VzIHRoYW4gYW55b25lIHdobyAKaGFzIG5vdCBtYWRlIHRoZSBhdHRlbXB0IGNhbiBwb3NzaWJseSBpbWFnaW5lLgoKClRoZSBmb3JjZSB3aGVuIGFyb3VzZWQgbXVzdCBiZSB2ZXJ5IHN0cmljdGx5IGNvbnRyb2xsZWQsIGFuZCAKaXQgbXVzdCBiZSBtb3ZlZCB0aHJvdWdoIHRoZSBjZW50cmVzIGluIGFuIG9yZGVyIHdoaWNoIGRpZmZlcnMgZm9yIHBlb3BsZSBvZiAKZGlmZmVyZW50IHR5cGVzLiBUaGUgbW92ZW1lbnQgYWxzbywgdG8gYmUgZWZmZWN0aXZlLCBtdXN0IGJlIG1hZGUgaW4gYSAKcGFydGljdWxhciB3YXksIHdoaWNoIHRoZSBNYXN0ZXIgd2lsbCBleHBsYWluIHdoZW4gdGhlIHRpbWUgY29tZXMuwqAKCgpUSEUgRVRIRVJJQyBXRULCoAoKCkkgaGF2ZSBzYWlkIHRoYXQgdGhlIGFzdHJhbCBhbmQgZXRoZXJpYyBjZW50cmVzIGFyZSBpbiB2ZXJ5IApjbG9zZSBjb3JyZXNwb25kZW5jZTsgYnV0IGJldHdlZW4gdGhlbSwgYW5kIGludGVycGVuZXRyYXRpbmcgdGhlbSBpbiBhIG1hbm5lciAKbm90IHJlYWRpbHkgZGVzY3JpYmFibGUsIGlzIGEgc2hlYXRoIG9yIHdlYiBvZiBjbG9zZWx5IHdvdmVuIHRleHR1cmUsIGEgc2hlYXRoIApjb21wb3NlZCBvZiBhIHNpbmdsZSBsYXllciBvZiBwaHlzaWNhbCBhdG9tcyBtdWNoIGNvbXByZXNzZWQgYW5kIHBlcm1lYXRlZCBieSBhIApzcGVjaWFsIGZvcm0gb2Ygdml0YWwgZm9yY2UuIFRoZSBkaXZpbmUgbGlmZSB3aGljaCBub3JtYWxseSBkZXNjZW5kcyBmcm9tIHRoZSAKYXN0cmFsIGJvZHkgdG8gdGhlIHBoeXNpY2FsIGlzIHNvIGF0dHVuZWQgYXMgdG8gcGFzcyB0aHJvdWdoIHRoaXMgd2l0aCBwZXJmZWN0IAplYXNlLCBidXQgaXQgaXMgYW4gYWJzb2x1dGUgYmFycmllciB0byBhbGwgb3RoZXIgZm9yY2VzIC0gYWxsIHdoaWNoIGNhbm5vdCB1c2UgCnRoZSBhdG9taWMgbWF0dGVyIG9mIGJvdGggdGhlIHBsYW5lcy4gVGhpcyB3ZWIgaXMgdGhlIHByb3RlY3Rpb24gcHJvdmlkZWQgYnkgCm5hdHVyZSB0byBwcmV2ZW50IGEgcHJlbWF0dXJlIG9wZW5pbmcgdXAgb2YgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSBwbGFuZXMgLSBhIApkZXZlbG9wbWVudCB3aGljaCBjb3VsZCBsZWFkIHRvIG5vdGhpbmcgYnV0IGluanVyeS4KCgpJdCBpcyB0aGlzIHdoaWNoIHVuZGVyIG5vcm1hbCBjb25kaXRpb25zIHByZXZlbnRzIGNsZWFyIApyZWNvbGxlY3Rpb24gb2Ygd2hhdCBoYXMgaGFwcGVuZWQgZHVyaW5nIHNsZWVwLCBhbmQgaXQgaXMgdGhpcyBhbHNvIHdoaWNoIGNhdXNlcyAKdGhlIG1vbWVudGFyeSB1bmNvbu+/vXNjaW91c25lc3Mgd2hpY2ggYWx3YXlzIG9jY3VycyBhdCBkZWF0aC4gQnV0IGZvciB0aGlzIAptZXJjaWZ1bCBwcm92aXNpb24gdGhlIG9yZGluYXJ5IG1hbiwgd2hvIGtub3dzwqAgbm90aGluZyBhYm91dCBhbGwgdGhlc2UgdGhpbmdzIAphbmQgaXMgZW50aXJlbHkgdW5wcmXvv71wYXJlZCB0byBtZWV0IHRoZW0sIGNvdWxkIGF0IGFueSBtb21lbnQgYmUgYnJvdWdodCBieSBhbnkgCmFzdHJhbCBlbnRpdHkgdW5kZXIgdGhlIGluZmx1ZW5jZSBvZiBmb3JjZXMgdG8gY29wZSB3aXRoIHdoaWNoIHdvdWxkIGJlIGVudGlyZWx5IApiZXlvbmQgaGlzIHN0cmVuZ3RoLiBIZSB3b3VsZCBiZSBsaWFibGUgdG8gY29uc3RhbnQgb2JzZXNzaW9uIGJ5IGFueSBiZWluZyBvbiAKdGhlIGFzdHJhbCBwbGFuZSB3aG8gZGVzaXJlZCB0byBzZWl6ZSB1cG9uIGhpcyB2ZWhpY2xlcy4KCgpJdCB3aWxsIHRoZXJlZm9yZSBiZSByZWFkaWx5IHVuZGVyc3Rvb2QgdGhhdCBhbnkgaW5qdXJ5IHRvIAp0aGlzIHdlYiBpcyBhIHNlcmlvdXMgZGlzYXN0ZXIuIFRoZXJlIGFyZSBzZXZlcmFsIHdheXMgaW4gd2hpY2ggaW5qdXJ5IG1heSBjb21lLCAKYW5kIGl0IGJlaG92ZXMgdXMgdG8gdXNlIG91ciBiZXN0IGVuZGVhdm91cnMgdG8gZ3VhcmQgYWdhaW5zdCBpdC4gSXQgbWF5IGNvbWUgCmVpdGhlciBieSBhY2NpZGVudCBvciBieSBjb250aW51ZWQgbWFs77+9cHJhY3RpY2UuIEFueSBncmVhdCBzaG9jayB0byB0aGUgYXN0cmFsIApib2R5LCBzdWNoIGZvciBleGFtcGxlIGFzIGEgc3VkZGVuIHRlcnJpYmxlIGZyaWdodCwgbWF5IHJlbmQgYXBhcnQgdGhpcyBkZWxpY2F0ZSAKb3JnYW5pc20gYW5kLCBhcyBpdCBpcyBjb21tb25seSBleHByZXNzZWQsIGRyaXZlIHRoZSBtYW4gbWFkLiAoT2YgY291cnNlIHRoZXJlIAphcmUgb3RoZXIgd2F5cyBpbiB3aGljaCBmZWFyIG1heSBjYXVzZSBpbnNhbml0eSwgYnV0IHRoaXMgaXMgb25lLikgQSB0cmVtZW5kb3VzIApvdXRidXJzdCBvZiBhbmdlciBtYXkgYWxzbyBwcm9kdWNlIHRoZSBzYW1lIGVmZmVjdC4gSW5kZWVkIGl0IG1heSBmb2xsb3cgdXBvbiAKYW55IGV4Y2VlZGluZ2x5IHN0cm9uZyBlbW90aW9uIG9mIGFuIGV2aWwgY2hhcmFjdGVyIHdoaWNoIHByb2R1Y2VzIGEga2luZCBvZiAKZXhwbG9zaW9uIGluIHRoZSBhc3RyYWwgYm9keS7CoAoKClRIRSBFRkZFQ1RTIE9GIEFMQ09IT0wgCkFORCBEUlVHU8KgCgoKVGhlIG1hbHByYWN0aWNlcyB3aGljaCBtYXkgbW9yZSBncmFkdWFsbHkgaW5qdXJlIHRoaXMgCnByb3RlY3RpdmUgd2ViIGFyZSBvZiB0d28gY2xhc3NlcyAtIHVzZSBvZiBhbGNvaG9sIG9yIG5hcmNvdGljIGRydWdzLCBhbmQgdGhlIApkZWxpYmVyYXRlIGVuZGVhdm91ciB0byB0aHJvdyBvcGVuIHRoZSBkb29ycyB3aGljaCBuYXR1cmUgaGFzIGtlcHQgY2xvc2VkLCBieSAKbWVhbnMgb2Ygc3VjaCBhIHByb2Nlc3MgYXMgaXMgZGVzY3JpYmVkIGluIHNwaXJpdHVhbGlzdGljIHBhcmxhbmNlIGFzIHNpdHRpbmcgCmZvciBkZXZlbG9wbWVudC4gQ2VydGFpbiBkcnVncyBhbmQgZHJpbmtzIC0gbm90YWJseSBhbGNvaG9sIGFuZCBhbGwgdGhlIApuYXLvv71jb3RpY3MsIGluY2x1ZGluZyB0b2JhY2NvIC0gY29udGFpbiBtYXR0ZXIgd2hpY2ggb24gYnJlYWtpbmcgdXAgdm9sYXRpbGl6ZXMsIAphbmQgc29tZSBvZiBpdCBwYXNzZXMgZnJvbSB0aGUgcGh5c2ljYWwgcGxhbmUgdG8gdGhlIGFzdHJhbC4gKEV2ZW4gdGVhIGFuZCAKY29mZmVlIGNvbnRhaW4gdGhpcyBtYXR0ZXIsIGJ1dCBpbiBxdWFudGl0aWVzIHNvIGluZmluaXRlc2ltYWwgdGhhdCBpdCBpcyAKdXN1YWxseSBvbmx5IGFmdGVyIGxvbmctY29udGludWVkIGFidXNlIG9mIHRoZW0gdGhhdCB0aGUgZWZmZWN0IG1hbmlmZXN0cyAKaXRzZWxmLikKCgpXaGVuIHRoaXMgdGFrZXMgcGxhY2UgaW4gdGhlIGJvZHkgb2YgbWFuIHRoZXNlIGNvbnN0aXR1ZW50cyAKcnVzaCBvdXQgdGhyb3VnaCB0aGUgY2hha3JhcyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIHRvIHRoYXQgZm9yIHdoaWNoIHRoZXkgCmFyZSBpbnRlbmRlZCwgYW5kIGluIGRvaW5nIHRoaXMgcmVwZWF0ZWRseSB0aGV5IHNlcmlvdXNseSBpbmp1cmUgYW5kIGZpbmFsbHkgCmRlc3Ryb3kgdGhlIGRlbGljYXRlIHdlYi4gVGhpcyBkZXRlcmlvcmF0aW9uIG9yIGRlc3RydWN0aW9uIG1heSBiZSBicm91Z2h0IGFib3V0IAppbiB0d28gZGlmZmVyZW50IHdheXMsIGFjY29yZGluZyB0byB0aGUgdHlwZSBvZiB0aGUgcGVyc29uIGNvbmNlcm5lZCBhbmQgdG8gdGhlIApwcm9wb3J0aW9uIG9mIHRoZSBjb25zdGl0dWVudHMgaW4gaGlzIGV0aGVyaWMgYW5kIGFzdHJhbCBib2RpZXMuIEZpcnN0LCB0aGUgcnVzaCAKb2Ygdm9sYXRpbGl6aW5nIG1hdHRlciBhY3R1YWxseSBidXJucyBhd2F5IHRoZSB3ZWIsIGFuZCB0aGVyZWZvcmUgbGVhdmVzIHRoZSAKZG9vciBvcGVuIHRvIGFsbCBzb3J0cyBvZiBpcnJlZ3VsYXIgZm9yY2VzIGFuZCBldmlsIGluZmx1ZW5jZXMuCgoKVGhlIHNlY29uZCByZXN1bHQgaXMgdGhhdCB0aGVzZSB2b2xhdGlsZSBjb25zdGnvv710dWVudHMsIGluIApmbG93aW5nIHRocm91Z2gsIHNvbWVob3cgaGFyZGVuIHRoZSBhdG9tLCBzbyB0aGF0IGl0cyBwdWxzYXRpb24gaXMgdG8gYSBsYXJnZSAKZXh0ZW50IGNoZWNrZWQgYW5kIGNyaXBwbGVkLCBhbmQgaXQgaXMgbm8gbG9uZ2VyIGNhcGFibGUgb2YgYmVpbmcgdml0YWxpemVkIGJ5IAp0aGUgcGFydGljdWxhciB0eXBlIG9mIGZvcmNlIHdoaWNoIHdlbGRzIGl0IGludG8gYSB3ZWIuIFRoZSByZXN1bHQgb2YgdGhpcyBpcyBhIApraW5kIG9mIG9zc2lmaWNhdGlvbiBvZiB0aGUgd2ViLCBzbyB0aGF0IGluc3RlYWQgb2YgaGF2aW5nIHRvbyBtdWNoIGNvbWluZyAKdGhyb3VnaCBmcm9tIG9uZSBwbGFuZSB0byB0aGUgb3RoZXIsIHdlIGhhdmUgdmVyeSBsaXR0bGUgb2YgYW55IGtpbmQgY29taW5nIAp0aHJvdWdoLgoKCldlIG1heSBzZWUgdGhlIGVmZmVjdHMgCm9mIGJvdGggdGhlc2UgdHlwZXMgb2YgZGV0ZXJpb3JhdGlvbiBpbiB0aGUgY2FzZSBvZiBtZW4gd2hvIHlpZWxkIHRoZW1zZWx2ZXMgdG8gCmRydW5rZW5uZXNzLiBTb21lIG9mIHRob3NlIHdobyBhcmUgYWZmZWN0ZWQgaW4gdGhlIGZvcm1lciB3YXkgZmFsbCBpbnRvIGRlbGlyaXVtIAp0cmVtZW5zLCBvYnNlc3Npb24gb3IgaW5zYW5pdHk7IGJ1dCB0aG9zZSBhcmUgYWZ0ZXIgYWxsIGNvbXBhcmF0aXZlbHkgcmFyZS4gRmFyIAptb3JlIGNvbW1vbiBpcyB0aGUgc2Vjb25kIHR5cGUgb2YgZGV0ZXJpb3JhdGlvbiDvv710aGUgY2FzZSBpbiB3aGljaCB3ZSBoYXZlIGEgCmtpbmQgb2YgZ2VuZXJhbCBkZWFkZW5pbmcgZG93biBvZiB0aGUgbWFu77+9cyBxdWFsaXRpZXMsIHJlc3VsdGluZyBpbiBncm9zcyAKbWF0ZXJpYWzvv71pc20sIGJydXRhbGl0eSBhbmQgYW5pbWFsaXNtLCBpbiB0aGUgbG9zcyBvZiBhbGwgZmluZXIgZmVlbGluZ3MgYW5kIG9mIAp0aGUgcG93ZXIgdG8gY29udHJvbCBoaW1zZWxmLiBIZSBubyBsb25nZXIgZmVlbHMgYW55IHNlbnNlIG9mIHJlc3BvbnNpYmlsaXR5OyBoZSAKbWF5IGxvdmUgaGlzIHdpZmUgYW5kIGNoaWxkcmVuIHdoZW4gc29iZXIsIGJ1dCB3aGVuIHRoZSBmaXQgb2YgZHJ1bmtlbm5lc3MgY29tZXMgCnVwb24gaGltIGhlIHdpbGwgdXNlIHRoZSBtb25leSB3aGljaCBzaG91bGQgaGF2ZSBicm91Z2h0IGJyZWFkIGZvciB0aGVtIHRvIApzYXRpc2Z5IGhpcyBvd24gYmVzdGlhbCBjcmF2aW5ncywgdGhlIGFmZmVjdGlvbiBhbmQgdGhlIHJlc3BvbnNp77+9YmlsaXR5IGhhdmluZyAKYXBwYXJlbnRseSBlbnRpcmVseSBkaXNhcHBlYXJlZC7CoAoKClRIRSBFRkZFQ1QgT0YgVE9CQUNDT8KgCgoKVGhlIHNlY29uZCB0eXBlIG9mIGVmZmVjdCBpcyB2ZXJ5IGNvbW1vbmx5IHRvIGJlIHNlZW4gYW1vbmcgCnRob3NlIHdobyBhcmUgc2xhdmVzIG9mIHRoZSB0b2JhY2NvIGhhYml0LiBJdHMgZWZmZWN0cyBhcmUgb2J2aW91cyBpbiB0aGUgCnBoeXNpY2FsLCBhc3RyYWwgYW5kIG1lbnRhbCBib2RpZXMuCgoKSXQgcGVybWVhdGVzIHRoZSBtYW4gcGh5c2ljYWxseSB3aXRoIGV4Y2VlZGluZ2x5IGltcHVyZSAKcGFydGljbGVzLCBjYXVzaW5nIGVtYW5hdGlvbnMgc28gZ3Jvc3NseSBtYXRlcmlhbCB0aGF0IHRoZXkgYXJlIGZyZXF1ZW50bHkgCnBlcmNlcHRpYmxlIHRvIHRoZSBzZW5zZSBvZiBzbWVsbC4gQXN0cmFsbHkgaXQgbm90IG9ubHkgaW50cm9kdWNlcyBpbnB1cml0eSBidXQgCml0IGFsc28gdGVuZHMgdG8gZGVhZGVuIG1hbnkgb2YgdGhlIHZpYnJhdGlvbnMsIGFuZCBpdCBpcyBmb3IgdGhpcyByZWFzb24gdGhhdCAKaXQgaXMgZm91bmQgdG8g77+9c29vdGhlIHRoZSBuZXJ2ZXPvv70sIGFzIGl0IGlzIGNhbGxlZC4gQnV0IG9mIGNvdXJzZSBmb3Igb2NjdWx0IApwcm9ncmVzcyB3ZSBkbyBub3Qgd2FudCB0aGUgdmlicmF0aW9ucyBkZWFkZW5lZCwgbm9yIHRoZSBhc3RyYWwgYm9keSB3ZWlnaGVkIApkb3duIHdpdGggcG9pc29ub3VzIHBhcnRpY2xlcy4gV2UgbmVlZCB0aGUgY2FwYWNpdHkgb2YgYW5zd2VyaW5nIGluc3RhbnRseSB0byAKYWxsIHBvc3NpYmxlIHdhdmUtbGVuZ3RocywgYW5kIHlldCBhdCB0aGUgc2FtZSB0aW1lIHdlIG11c3QgaGF2ZSBwZXJmZWN0IApjb250cm9sLCBzbyB0aGF0IG91ciBkZXNpcmVzIHNoYWxsIGJlIGFzIGhvcnNlcyBndWlkZWQgYnkgdGhlIGludGVsbGlnZW50IG1pbmQgCnRvIGRyYXcgdXMgd2hlcmUgd2Ugd2lsbCwgbm90IHRvIHJ1biBhd2F5IHdpdGggdXMgd2lsZGx5LCBhcyBkb2VzIHRoZSB0b2JhY2NvIApoYWJpdCwgYW5kIGNhcnJ5IHVzIGludG8gc2l0dWF0aW9ucyB3aGVyZSBvdXIgaGlnaGVyIG5hdHVyZSBrbm93cyB0aGF0IGl0IG91Z2h0IApuZXZlciB0byBiZSBmb3VuZC4gSXRzIHJlc3VsdHMgYWZ0ZXIgZGVhdGggYXJlIGFsc28gb2YgdGhlIG1vc3QgZGlzdHJlc3NpbmcgCmNoYXJhY3RlcjsgaXQgY2F1c2VzIGEgc29ydCBvZiBvc3NpZmljYXRpb24gYW5kIHBhcmFseXNpcyBvZiB0aGUgYXN0cmFsIGJvZHksIHNvIAp0aGF0IGZvciBhIGxvbmcgdGltZSAoZXh0ZW5kaW5nIHRvIHdlZWtzIGFuZCBtb250aHMpIHRoZSBtYW4gcmVtYWlucyBoZWxwbGVzcywgCnN1cGluZSwgc2NhcmNlbHkgY29uc2Npb3VzLCBzaHV0IHVwIGFzIHRob3VnaCBpbiBhIHByaXNvbiwgdW5hYmxlIHRvIGNvbW11bmljYXRlIAp3aXRoIGhpcyBmcmllbmRzLCBkZWFkIGZvciB0aGUgdGltZSB0byBhbGwgaGlnaGVyIGluZmx1ZW5jZXMuIElzIGl0IHdvcnRoIHdoaWxlIAppbmN1cnJpbmcgYWxsIHRoZXNlIHBlbmFsdGllcyBmb3IgdGhlIHNha2Ugb2YgYSBwZXR0eSBpbmR1bGdlbmNlPyBGb3IgYW55IHBlcnNvbiAKd2hvIHJlYWxseSBtZWFucyB0byBkZXZlbG9wIGhpcyB2ZWhpY2xlcywgdG8gYXdha2VuIGhpcyBjaGFrcmFzLCB0byBtYWtlIApwcm9ncmVzcyBhbG9uZyB0aGUgcGF0aCBvZiBob2xpbmVzcywgdG9iYWNjbyBpcyB1bu+/vWRvdWJ0ZWRseSB0byBiZSBzZWR1bG91c2x5IAphdm9pZGVkLgoKCkFsbCBpbXByZXNzaW9ucyB3aGljaCBwYXNzIGZyb20gb25lIHBsYW5lIHRvIHRoZSBvdGhlciBhcmUgCmludGVuZGVkIHRvIGNvbWUgb25seSB0aHJvdWdoIHRoZSBhdG9taWMgc3ViLXBsYW5lcywgYXMgSSBoYXZlIHNhaWQ7IGJ1dCB3aGVuIAp0aGlzIGRlYWRlbu+/vWluZyBwcm9jZXNzIHNldHMgaW4sIGl0IHByZXNlbnRseSBpbmZlY3RzIG5vdCBvbmx5IG90aGVyIGF0b21pYyAKbWF0dGVyLCBidXQgbWF0dGVyIG9mIGV2ZW4gdGhlIHNlY29uZCBhbmQgdGhpcmQgc3ViLXBsYW5lcywgc28gdGhhdCB0aGUgb25seSAKY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSBhc3RyYWwgYW5kIHRoZSBldGhlcmljIGlzIHdoZW4gc29tZSBmb3JjZcKgIGFjdGluZyBvbiAKdGhlIGxvd2VyIHN1Yi1wbGFuZXMgKHVwb24gd2hpY2ggb25seSB1bnBsZWFzYW50IGFuZCBldmlsIGluZmx1ZW5jZXMgYXJlIHRvIGJlIApmb3VuZCkgaGFwcGVucyB0byBiZSBzdHJvbmcgZW5vdWdoIHRvIGNvbXBlbCBhIHJlc3BvbnNlIGJ5IHRoZSB2aW9sZW5jZSBvZiBpdHMgCnZpYnJhdGlvbi7CoAoKClRIRSBPUEVOSU5HIE9GIFRIRSAKRE9PUlPCoAoKCk5ldmVydGhlbGVzcywgdGhvdWdoIG5hdHVyZSB0YWtlcyBzdWNoIHByZWNhdXRpb25zIHRvIGd1YXJkIAp0aGVzZSBjZW50cmVzLCBzaGUgYnkgbm8gbWVhbnMgaW50ZW5kcyB0aGF0IHRoZXkgc2hhbGwgYWx3YXlzIGJlIGtlcHQgcmlnaWRseSAKY2xvc2VkLiBUaGVyZSBpcyBhIHByb3BlciB3YXkgaW4gd2hpY2ggdGhleSBtYXkgYmUgb3BlbmVkLiBQZXJoYXBzIGl0IHdvdWxkIGJlIAptb3JlIGNvcnJlY3QgdG8gc2F5IHRoYXQgdGhlIGludGVudGlvbiBpcyBub3QgdGhhdCB0aGUgZG9vcnMgc2hvdWxkIGJlIG9wZW5lZCAKYW55IHdpZGVyIHRoYW4gdGhlaXIgcHJlc2VudCBwb3NpdGlvbiwgYnV0IHRoYXQgdGhlIG1hbiBzaG91bGQgc28gZGV2ZWxvcCAKaGltc2VsZiB0aGF0IGhlIGNhbiBicmluZyBhIGdyZWF0IGRlYWwgbW9yZSB0aHJvdWdoIHRoZSByZWNvZ25pemVkIGNoYW5uZWwuCgoKVGhlIGNvbnNjaW91c25lc3Mgb2YgdGhlIG9yZGluYXJ5IG1hbiBjYW5ub3QgeWV0IHVzZSBwdXJlIAphdG9taWMgbWF0dGVyIGVpdGhlciBpbiB0aGUgcGh5c2ljYWwgYm9keSBvciBpbiB0aGUgYXN0cmFsLCBhbmQgdGhlcmVmb3JlIHRoZXJlIAppcyBub3JtYWxseSBubyBwb3NzaWJpbGl0eSBmb3IgaGltIG9mIGNvbnNjaW91cyBjb21tdW5pY2F0aW9uIGF0IHdpbGwgYmV0d2VlbiAKdGhlIHR3byBwbGFuZXMuIFRoZSBwcm9wZXIgd2F5IHRvIG9idGFpbiB0aGF0IGlzIHRvIHB1cmlmeSBib3RoIHRoZSB2ZWhpY2xlcyAKdW50aWwgdGhlIGF0b21pYyBtYXR0ZXIgaW4gYm90aCBpcyBmdWxseSB2aXRhbGl6ZWQsIHNvIHRoYXQgYWxsIGNvbW11bmljYe+/vXRpb25zIApiZXR3ZWVuIHRoZSB0d28gbWF5IGJlIGFibGUgdG8gcGFzcyBieSB0aGF0IHJvYWQuIEluIHRoYXQgY2FzZSB0aGUgd2ViIHJldGFpbnMgCnRvIHRoZSBmdWxsZXN0IGRlZ3JlZSBpdHPCoCBwb3NpdGlvbiBhbmQgYWN0aXZpdHksIGFuZCB5ZXQgaXMgbm8gbG9uZ2VyIGEgYmFycmllciAKdG8gdGhlIHBlcmZlY3QgY29tbXVuaWNhdGlvbiwgd2hpbGUgaXQgc3RpbGwgY29udGludWVzIHRvIGZ1bGZpbCBpdHMgcHVycG9zZSBvZiAKcHJldmVudGluZyB0aGUgY2xvc2UgY29udGFjdCBiZXR3ZWVuIGxvd2VyIHN1Yi1wbGFuZXMgd2hpY2ggd291bGQgcGVybWl0IGFsbCAKc29ydHMgb2YgdW5kZXNpcmFibGUgaW5mbHVlbmNlcyB0byBwYXNzIHRocm91Z2guCgoKVGhhdCBpcyB3aHkgd2UgYXJlIGFsd2F5cyBhZGp1cmVkIHRvIHdhaXQgZm9yIHRoZSB1bmZvbGRpbmcgCm9mIHBzeWNoaWMgcG93ZXJzIHVudGlsIHRoZXkgY29tZSBpbiB0aGUgbmF0dXJhbCBjb3Vyc2Ugb2YgZXZlbnRzIGFzIGEgCmNvbnNlcXVlbmNlIG9mIHRoZSBkZXZlbG9wbWVudCBvZiBjaGFyYWN0ZXIsIGFzIHdlIHNlZSBmcm9tIHRoZSBzdHVkeSBvZiB0aGVzZSAKZm9yY2UtY2VudHJlcyB0aGF0IHRoZXkgc3VyZWx5IHdpbGwuIFRoYXQgaXMgdGhlIG5hdHVyYWwgZXZvbHV0aW9uOyB0aGF0IGlzIHRoZSAKb25seSByZWFsbHkgc2FmZSB3YXksIGZvciBieSBpdCB0aGUgc3R1ZGVudCBvYnRhaW5zIGFsbCB0aGUgYmVuZWZpdHMgYW5kIGF2b2lkcyAKYWxsIHRoZSBkYW5nZXJzLiBUaGF0IGlzIHRoZSBQYXRoIHdoaWNoIG91ciBNYXN0ZXJzIGhhdmUgdHJvZGRlbiBpbiB0aGUgcGFzdDsgCnRoYXQgdGhlcmVmb3JlIGlzIHRoZSBQYXRoIGZvciB1cyB0b2RheS4KCgpDSEFQVEVSIFbCoAoKClRIRSBMQVlBIFlPR0HCoAoKClRIRSBISU5EVSBCT09LU8KgCgoKSVQgaXMgbmVhcmx5IHR3ZW50eSB5ZWFycyBzaW5jZSBJIHdyb3RlIHRoZSBtYWpvciBwYXJ0IG9mIHRoZSAKaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNoYWtyYXMgd2hpY2ggYXBwZWFycyBpbiB0aGUgcHJlY2VkaW5nIHBhZ2VzLCBhbmQgSSBoYWQgYXQgCnRoYXQgdGltZSBidXQgYSB2ZXJ5IHNsaWdodCBhY3F1YWludGFuY2Ugd2l0aCB0aGUgZXh0ZW5zaXZlIGxpdGVyYXR1cmUgd2hpY2ggCmV4aXN0cyBvbiB0aGUgc3ViamVjdCBpbiB0aGUgU2Fuc2tyaXQgbGFuZ3VhZ2UuIFNpbmNlIHRoZW4sIGhvd2V2ZXIsIHNldmVyYWwgCmltcG9ydGFudCB3b3JrcyBvbiB0aGUgY2hha3JhcyBoYXZlIGJlY29tZSBhdmFpbGFibGUgaW4gRW5nbGlzaCwgYW1vbmcgd2hpY2ggYXJlClRoZSBTZXJwZW50IFBvd2VyICh3aGljaCBpcyBhIHRyYW5zbGHvv710aW9uIGJ5IEFydGh1ciBBdmFsb24gb2YgVGhlIApTaGF0Y2hha2FyYSBOaXJ1cGFuYSksIFRoaXJ0eSBNaW5vciBVcGFuaXNoYWRzLCB0cmFuc2xhdGVkIGJ5IEsuIApOYXJheWFuYe+/vXN3YW1pIEFpeWFyLCBhbmQgVGhlIFNoaXZhIFNhbWhpdGEsIHRyYW5zbGF0ZWQgYnkgU3JpcyBDaGFuZHJhIApWaWR5YXJuYXZhLiBUaGVzZSB3b3JrcyBkZWFsIGV4dGVuc2l2ZWx5IHdpdGggdGhlIHNwZWNpYWwgc3ViamVjdCBvZiBjaGFrcmFzLCAKYnV0IHRoZXJlIGFyZSBtYW55IG90aGVycyB3aGljaCB0b3VjaCB1cG9uIHRoZSBjZW50cmVzIGluIGEgbW9yZSBjYXN1YWwgd2F5LiAKQXZhbG9u77+9cyBib29rIGdpdmVzIHVzIGFuIGV4Y2VsbGVudCBzZXJpZXMgb2YgY29sb3VyZWQgaWxsdXN0cmF0aW9ucyBvZiBhbGwgdGhlIApjaGFrcmFzLCBpbiB0aGUgc3ltYm9sae+/vWNhbCBmb3JtIGluIHdoaWNoIHRoZXkgYXJlIGFsd2F5cyBkcmF3biBieSB0aGUgSGluZHUgCnlvZ2lzLiBUaGlzIGRlcGFydG1lbnQgb2YgSGluZHUgc2NpZW5jZSBpcyBncmFkdWFsbHkgYmVjb21pbmcga25vd24gaW4gdGhlIFdlc3Q7IApmb3IgdGhlIGJlbmVmaXQgb2YgbXkgcmVhZGVycyBJIHdpbGwgYXR0ZW1wdCB0byBnaXZlIGEgdmVyeSBicmllZiBvdXRsaW5lIG9mIGl0IApoZXJlLsKgCgoKVEhFIElORElBTiBMSVNUIE9GIApDSEFLUkFTwqAKCgpUaGUgY2hha3JhcyBtZW50aW9uZWQgaW4gdGhlc2UgU2Fuc2tyaXQgYm9va3MgYXJlIHRoZSBzYW1lIGFzIAp0aG9zZSB3aGljaCB3ZSBzZWUgdG9kYXksIGV4Y2VwdCB0aGF0IGFzIEkgaGF2ZSBhbHJlYWR5IHNhaWQsIHRoZXkgYWx3YXlzIApzdWJzdGl0dXRlIHRoZWlyIFN2YWRoaXNodGhhbmEgY2VudHJlIGZvciB0aGF0IGF0IHRoZSBzcGxlZW4uIFRoZXkgZGlmZmVyIApzbGlnaHRseSBhbW9uZyB0aGVtc2VsdmVzIGFzIHRvIHRoZSBudW1iZXIgb2YgcGV0YWxzLCBidXQgb24gdGhlIHdob2xlIHRoZXkgCmFncmVlIHdpdGggdXMsIHRob3VnaCBmb3Igc29tZSByZWFzb24gdGhleSBkbyBub3QgaW5jbHVkZSB0aGUgY2VudHJlIGF0IHRoZSB0b3AgCm9mIGhlYWQsIGNvbmZpbmluZyB0aGVtc2VsdmVzIHRvIHNpeCBjaGFrcmFzIG9ubHksIGFuZCBjYWxsaW5nIHRoZSBjZW50cmUgdGhlIApTYWhhc3JhcmEgUGFkbWEgLSB0aGUgbG90dXMgb2YgYSB0aG91c2FuZCBwZXRhbHMuIFRoZSBzbWFsbGVyIGNoYWtyYSBvZiB0d2VsdmUgCnBldGFscyB3aXRoaW4gdGhpcyBjcm93biBjZW50cmUgd2FzIG9ic2VydmVkIGJ5IHRoZW0sIGFuZCBpcyBkdWx5IG5vdGVkLiBUaGV5IApzcGVhayBvZiB0d28gcGV0YWxzIGluc3RlYWQgb2YgbmluZXR5LXNpeCBpbiB0aGUgc2l4dGggY2hha3JhLCBidXQgdGhleSByZWZlciBubyAKZG91YnQgdG8gdGhlIHR3byBkaXZpc2lvbnMgb2YgdGhlIGRpc2Mgb2YgdGhhdCBjZW50cmUsIG1lbnRpb25lZCBpbiBDaGFwdGVyIEkuCgoKVGhlIGRpc2NyZXBhbmNpZXMgYXMgdG8gdGhlIG51bWJlciBvZiBwZXRhbHMgYXJlIG5vdCAKaW1wb3J0YW50OyBmb3IgZXhhbXBsZSwgVGhlIFlvZ2EgS3VuZGFsaW5pIFVwYW5pc2hhZCBzcGVha3Mgb2Ygc2l4dGVlbiAKcGV0YWxzIGluIHRoZSBoZWFydCBjaGFrcmEgaW5zdGVhZCBvZiB0d2VsdmUsIGFuZCBUaGUgRGh5YW5hYmluZHUgVXBhbmlzaGFkCmFuZCBUaGUgU2hhbmRpbHlhIFVwYW5pc2hhZCBib3RoIG1lbnRpb24gdHdlbHZlIHNwb2tlcyBpbnN0ZWFkIG9mIHRlbiAKaW4gdGhlIG5hdmVsIGNoYWtyYS4gQSBudW1iZXIgb2Ygd29ya3MgYWxzbyByZWZlciB0byBhbm90aGVyIGNoYWtyYSB0aGF0IGlzIApiZWxvdyB0aGUgaGVhcnQsIGFuZCB0byBzZXZlcmFsIGNlbnRyZXMgYmV0d2VlbiB0aGUgYnJvdyBjaGFrcmEgYW5kIHRoZSBjcm93biAKbG90dXMsIGFsbCBhcyBiZWluZyBvZiBncmVhdCBpbXBvcnRhbmNlLiBUaGUgRGh5YW5hYmluZHUgVXBhbmlzaGFkIHNheXMgCnRoYXQgdGhlIGxvdHVzIG9mIHRoZSBoZWFydCBoYXMgZWlnaHQgcGV0YWxzLCBidXQgaXRzIGRlc2NyaXDvv710aW9uIG9mIHRoZSB1c2Ugb2YgCnRoYXQgY2hha3JhIGluIG1lZGl0YXRpb24gaW5kaWNhdGVzIChhcyB3ZSBzaGFsbCBzZWUgbGF0ZXIpIHRoYXQgaXQgaXMgcHJvYmFibHkgCnJlZmVycmluZyB0byB0aGUgc2Vjb25kYXJ5IGhlYXJ0IGNoYWtyYSB0byB3aGljaCBJIGhhdmUganVzdCByZWZlcnJlZC4gSW4gdGhlIAptYXR0ZXIgb2YgdGhlIGNvbG91cnMgb2YgdGhlIHBldGFscyB0aGVyZSBhcmUgYWxzbyBzb21lIGRpc2FncmVlbWVudHMsIGFzIHdpbGwgCmJlIHNlZW4gZnJvbSB0YWJsZSBWLCBjb21wYXJpbmcgc29tZSBvZiB0aGUgcHJpbmNpcGFsIHdvcmtzIHdpdGggb3VyIG93biBsaXN0LgoKCsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgSXQgaXMgbm90IApzdXJwcmlzaW5nIHRoYXQgc3VjaCBkaWZmZXJlbmNlcyBhcyB0aGVzZSBzaG91bGQgYmUgb24gcmVjb3JkLCBmb3IgdGhlcmUgYXJlIAp1bnF1ZXN0aW9uYWJseSB2YXJpYW50cyBpbiB0aGUgY2hha3JhcyBvZiBkaWZmZXJlbnQgcGVvcGxlIGFuZCByYWNlcywgYXMgd2VsbCBhcyAKaW4gdGhlIGZhY3VsdGllcyBvZiBvYnNlcnZlcnMuIFdoYXQgd2UgaGF2ZSByZWNvcmRlZCBpbiBDaGFwdGVyIEkgaXMgdGhlIHJlc3VsdCAKb2YgY2FyZWZ1bCBvYnNlcnZhdGlvbiBvbiB0aGUgcGFydCBvZiBhIG51bWJlciBvZiBXZXN0ZXJuIHN0dWRlbnRzLCB3aG8gaGF2ZSAKdGFrZW4gZXZlcnkgcHJlY2F1dGlvbiB0byBjb21wYXJlIG5vdGVzIGFuZCB0byB2ZXJpZnkgd2hhdCB0aGV5IGhhdmUgc2Vlbi7CoAoKCsKgCgoKQ09MT1VSUyBPRiBMT1RVUyBQRVRBTFMKCgpDSEFLUkEKCgpPVVIgT0JTRVJWQVRJT05TCgoKU0hBVENIQUtSQSBOSVJVUEFOQQoKClNISVZBIFNBTUhJVEEKCgpHQVJVREEgUFVSQU5BCgoKMQoKCkZpZXJ5IG9yYW5nZS1yZWQKCgpSZWQKCgpSZWQKCgrvv70KCgoyCgoKR2xvd2luZywgc3VubGlrZQoKClZlcm1pbGlvbgoKClZlcm1pbGlvbgoKClN1bmxpa2UKCgozCgoKVmFyaW91cyByZWRzIGFuZCBncmVlbnMKCgpCbHVlCgoKR29sZGVuCgoKUmVkCgoKNAoKCkdvbGRlbgoKClZlcm1pbGlvbgoKCkRlZXAgcmVkCgoKR29sZGVuCgoKNQoKCkJsdWUsIHNpbHZlcnksIGdsZWFtaW5nCgoKU21va3kgcHVycGxlCgoKQnJpbGxpYW50IGdvbGQKCgpNb29ubGlrZQoKCjYKCgpZZWxsb3cgYW5kIHB1cnBsZQoKCldoaXRlCgoKV2hpdGUKCgpSZWQKCgrCoFRBQkxFIFbCoAoKClRoZSBkcmF3aW5ncyBvZiB0aGUgY2hha3JhcyBtYWRlIGJ5IHRoZSBIaW5kdSB5b2dpcyBmb3IgdGhlIAp1c2Ugb2YgdGhlaXIgcHVwaWxzIGFyZSBhbHdheXMgc3ltYm9saWNhbCwgYW5kIGJlYXIgbm8gcmVsYXRpb24gdG8gdGhlIGFjdHVhbCAKYXBwZWFyYW5jZSBvZiB0aGUgY2hha3JhLCBleGNlcHQgdGhhdCBhbiBhdHRlbXB0IGlzIHVzdWFsbHkgbWFkZSB0byBpbmRpY2F0ZSB0aGUgCmNvbG91ciBhbmQgdGhlIG51bWJlciBvZiBwZXRhbHMuIEluIHRoZSBjZW50cmUgb2YgZWFjaCBzdWNoIGRyYXdpbmcgd2Ugc2hhbGwgCmZpbmQgYSBnZW/vv71tZXRyaWNhbCBmb3JtLCBhIGxldHRlciBvZiB0aGUgU2Fuc2tyaXQgYWxwaGFiZXQsIGFuIGFuaW1hbCwgYW5kIHR3byAKZGVpdGllcywgb25lIG1hbGUgYW5kIHRoZSBvdGhlciBmZW1hbGUuIFdlIGdpdmUgaW4gRmlnLiA5IGEgcmVwcm9kdWN0aW9uIG9mIHRoZSAKZHJhd2luZyBvZiB0aGUgaGVhcnQgY2hha3JhLCBib3Jyb3dlZCBmcm9tIEFydGh1ciBBdmFsb27vv71zIFRoZSBTZXJwZW50IFBvd2VyLiAKV2Ugc2hhbGwgZW5kZWF2b3VyIHRvIGV4cGxhaW4gd2hhdCBpcyB1bmRlcnN0b29kIGJ5IHRoZSB2YXJpb3VzIHN5bWJvbHMuwqAKCgpUSEUgRklHVVJFUyBPRiBUSEUgCkNIQUtSQVPCoAoKClRoZSBvYmplY3Qgb2YgTGF5YSBvciBLdW5kYWxpbmkgWW9nYSBpcyB0aGUgc2FtZSBhcyB0aGF0IG9mIApldmVyeSBvdGhlciBmb3JtIG9mIEluZGlhbiB5b2dhLCB0byB1bml0ZSB0aGUgc291bCB3aXRoIEdvZDsgYW5kIGZvciB0aGlzIApwdXJwb3NlIGl0IGlzIGFsd2F5cyBuZWNlc3NhcnkgdG8gbWFrZSB0aHJlZSBraW5kcyBvZiBlZmZvcnRzIC0gdGhvc2Ugb2YgbG92ZSwgCm9mIHRob3VnaHQgYW5kIG9mIGFjdGlvbi4gVGhvdWdoIGluIGEgcGFydGlj77+9dWxhciBzY2hvb2wgb2YgeW9nYSB0aGUgd2lsbCBtdXN0IApiZSBlc3BlY2lhbGx5IHVzZWQgKGFzIGlzIHRoZSBjYXNlIGluIHRoZSB0ZWFjaGluZyBvZiBUaGUgWW9nYSBTdXRyYXMpLMKgIAphbmQgaW4gYW5vdGhlciBncmVhdCBsb3ZlIGlzIGNoaWVmbHkgcHJlc2NyaWJlZCAoYXMgaW7CoCB0aGUgaW5zdHJ1Y3Rpb24gZ2l2ZW4gYnkgClNocmkgS3Jpc2huYSB0byBBcmp1bmEgaW4gVGhlIEJoYWdhdmFkIEdpdGEpLCBzdGlsbCBpdCBpcyBhbHdheXMgCnByb2NsYWltZWQgdGhhdCBhdHRhaW5tZW50cyBtdXN0IGJlIG1hZGUgaW4gYWxsIHRocmVlIGRpcmVjdGlvbnMuIFRodXMgUGF0YW5qYWxpIApwcm9wb3VuZHMgZm9yIHRoZSBjYW5kaWRhdGUgYXQgdGhlIGJlZ2lubmluZyBhIGNvdXJzZSBvZiB0YXBhcyBvciAKcHVyaWZpY2F0b3J5IGVmZm9ydCwgc3ZhZGh5YXlhIG9yIHN0dWR5IG9mIHNwaXJpdHVhbCB0aGluZ3MsIGFuZCAKSXNodmFyYSBwcmFuaWRoYW5hLCBvciBkZXZvdGlvbiB0byBHb2QgYXQgYWxsIHRpbWVzLiBTaHJpIEtyaXNobmEsIApzaW1pbGFybHksIGFmdGVyIGV4cGxhaW5pbmcgdG8gSGlzIHB1cGlsIHRoYXQgd2lzZG9tIGlzIHRoZSBtb3N0IHZhbHVhYmxlIAppbnN0cnVtZW50IG9mIHNlcnZpY2UsIHRoZSBncmVhdGVzdCBvZmZlcmluZyB0aGF0IG9uZSBjYW4gbWFrZSwgYWRkcyB0aGF0IGl0IG1heSAKYmUgbGVhcm50IG9ubHkgYnkgZGV2b3Rpb24sIGVucXVpcnkgYW5kIHNlcnZpY2UsIGNvbmNsdWRpbmcgSGlzIHN0YXRlbWVudCB3aXRoIAp0aGUgc2lnbmlmaWNhbnQgd29yZHM6IO+/vVRoZSBXaXNlIE9uZXMsIFNlZXJzIG9mIHRoZSBUcnV0aCwgd2lsbCB0ZWFjaCB5b3UgdGhlIAp3aXNkb20u77+9IEluIEF0IHRoZSBGZWV0IG9mIHRoZSBNYXN0ZXIsIHdoaWNoIGlzIHRoZSBtb3N0IG1vZGVybiByZW5kZXJpbmcgCm9mIHRoZSBFYXN0ZXJuIHRlYWNoaW5nLCB0aGUgc2FtZSB0cmlwbGljaXR5IGFwcGVhcnMsIGZvciB0aGUgcXVhbGlmaWNhdGlvbnMgCmluY2x1ZGUgZGlzY3JpbWluYXRpb24sIHRoZSBwcmFjdGljZSBvZiBnb29kIGNvbmR1Y3QsIGFuZCB0aGUgZGV2ZWxvcG1lbnQgb2YgCmxvdmUgdG93YXJkcyBHb2QsIEd1cnUgb3IgVGVhY2hlciwgYW5kIG1hbi4KCgpUbyB1bmRlcnN0YW5kIHRoZXNlIGRpYWdyYW1zIG9mIHRoZSBjaGFrcmFzIHdoaWNoIGFyZSB1c2VkIGJ5IApJbmRpYW4geW9naXMsIGl0IG11c3QgYmUgYm9ybmUgaW4gbWluZCB0aGF0IHRoZXkgYXJlIGludGVuZGVkIHRvIGFzc2lzdCB0aGUgCmFzcGlyYW50IGluIGFsbCB0aGVzZSB0aHJlZSBsaW5lcyBvZiBwcm9ncmVzcy4gSXQgaXMgbmVjZXNzYXJ5IHRoYXQgaGUgc2hvdWxkIAphY3F1aXJlIGtub3dsZWRnZSBhYm91dCB0aGUgY29uc3RpdHV0aW9uIG9mIHRoZSB3b3JsZCBhbmQgb2YgbWFuICh0aGF0IHdoaWNoIHdlIApub3cgY2FsbCBUaGVv77+9c29waHkpLCBhbmQgdGhhdCBoZSBzaG91bGQgZGV2ZWxvcCBkZWVwIGFuZCBzdHJvbmcgZGV2b3Rpb24gCnRocm91Z2ggd29yc2hpcCBvZiB0aGUgRGl2aW5lLCB3aGlsZSBoZSBpcyBzdHJpdmluZyB0byBhd2FrZW4gdGhlIGlubmVyIGxheWVycyAKb2YgS3VuZGFsaW5pIGFuZCBjb25kdWN0IGhlciAoZm9yIHRoaXMgZm9yY2UgaXMgYWx3YXlzIHNwb2tlbiBvZiBhcyBhIGdvZGRlc3MpIAppbiBhIHRvdXIgdGhyb3VnaCB0aGUgY2hha3Jhcy7CoAoKCsKgCgoKQmVjYXVzZSBhbGwgdGhlc2UgdGhyZWUgb2JqZWN0cyBhcmUgaW4gdmlldywgd2UgZmluZCBpbiBlYWNoIApjaGFrcmEgc29tZSBzeW1ib2xzIHdoaWNoIGFyZSBjb25jZXJuZWQgd2l0aCB0ZWFjaGluZyBhbmQgZGV2b3Rpb24gYW5kIG5lZWQgbm90IApuZWNlc3NhcmlseSBiZSByZWdhcmRlZCBhcyBjb25zdGl0dXRpbmcgYW55IGVzc2VudGlhbCBvciB3b3JraW5nIHBhcnQgb2YgdGhlIApjaGFrcmEuIEluIHRoZSBzZXJ2aWNlcyAtIG9yIGNvbGxlY3RpdmUgeW9nYSBwcmFjdGljZXMgLSBvZiB0aGUgTGliZXJhbCBDYXRob2xpYyAKQ2h1cmNoIHdlIGhhdmUgYSBXZXN0ZXJuIGV4YW1wbGUgb2YgdGhlIHNhbWUgdGhpbmcuIFRoZXJlIGFsc28gd2Ugc3RyaXZlIGF0IHRoZSAKc2FtZSB0aW1lIHRvIHN0aW11bGF0ZSBkZXZvdGlvbiBhbmQgdG8gY29udmV5IHNwaXJpdHVhbCBrbm93bGVkZ2UsIHdoaWxlIApwcmFjdGlzaW5nIHRoZSBtYWdpYyBpbnZvbHZlZCBpbiB0aGUgcml0ZXMuIFdlIG11c3QgcmVtZW1iZXIgYWxzbyB0aGF0IGluIG9sZCAKZGF5cyB0aGUgeW9naXMgd2hvIHdhbmRlcmVkIGFib3V0IG9yIGR3ZWx0IGluIHRoZSBmb3Jlc3RzIGhhZCBsaXR0bGUgcmVjb3Vyc2UgCmV2ZW4gdG8gdGhlIHdyaXR0ZW4gcGFsbS1sZWFmIGJvb2tzIG9mIHRob3NlIHRpbWVzLCBhbmQgdGhlcmVmb3JlIHJlcXVpcmVkIAptbmVtb25pYyBhaWRzLCBzdWNoIGFzIG1hbnkgb2YgdGhlc2Ugc3ltYm9scyBnaXZlLiBUaGV5IHNhdCBhdCB0aW1lcyBhdCB0aGUgZmVldCAKb2YgdGhlaXIgZ3VydXM7IGFuZCB0aGV5IGNvdWxkIGFmdGVyd2FyZHMgcmVtZW1iZXIgYW5kIHJlY2FwaXR1bGF0ZSB0aGUgClRoZW9zb3BoeSB3aGljaCB0aGV5IGxlYXJudCBvbiB0aG9zZSBvY2Nhc2lvbnMsIHdpdGggdGhlIGFpZCBvZiBzdWNoIG5vdGVzIGFzIAphcmUgY29udmV5ZWQgYnkgdGhlc2UgZHJhd2luZ3MuwqAKCgpUSEUgSEVBUlQgQ0hBS1JBwqAKCgpJdCBpcyBoYXJkbHkgcG9zc2libGUgaGVyZSB0byBhdHRlbXB0IGEgY29tcGxldGUgZXhwbGFuYXRpb24gCm9mIHRoZSBzeW1ib2xvZ3kgb2YgYWxsIHRoZXNlIGNoYWtyYXM7IGl0IHdpbGwgYmUgc3VmZmljaWVudCB0byBnaXZlIGFuIAppbmRpY2F0aW9uIG9mIHdoYXQgaXMgcHJvYmFibHkgbWVhbnQgaW4gdGhlIGNhc2Ugb2YgdGhlIGhlYXJ0IG9yIEFuYWhhdGEgY2hha3JhLCAKb2Ygd2hpY2ggb3VyIGZpZ3VyZSBpcyBhbiBpbGx1c3RyYXRpb24uIE9uZSBvZiB0aGUgZ3JlYXRlc3QgZGlmZmljdWx0aWVzIGluIG91ciAKd2F5IGlzIHRoYXQgdGhlcmUgYXJlIHNldmVyYWwgaW50ZXJwcmV0YXRpb25zIG9mIG1vc3Qgb2YgdGhlc2Ugc3ltYm9scywgYW5kIHRoYXQgCnRoZSB5b2dpcyBvZiBJbmRpYSBwcmVzZW50IGEgZnJvbnQgb2YgaW1wZW5ldHJhYmxlIHJldGljZW5jZSB0byB0aGUgaW5xdWlyZXIsIGEgCnN0b25lLXdhbGwgdW53aWxsaW5nbmVzcyB0byBpbXBhcnQgdGhlaXIga25vd2xlZGdlIG9yIHRob3VnaHRzIHRvIGFueSBidXQgdGhlIApzdHVkZW50IHdobyBwdXRzIGhpbXNlbGYgaW4gc3RhdHUgcHVwaWxsYXJpIHdpdGggdGhlIHNldCBwdXJwb3NlIG9mIApnaXZpbmcgaGltc2VsZiB1dHRlcmx5IHRvIHRoZSB3b3JrIG9mIExheWEgWW9nYSwgZGV0ZXJtaW5lZCBpZiBuZWNlc3NhcnkgdG8gCnNwZW5kIGhpcyB3aG9sZSBsaWZlIGF0IHRoZSB0YXNrIGluIG9yZGVyIHRvIGFjaGlldmUgc3VjY2Vzcy4KCgpUaGlzIGNoYWtyYSBpcyBkZXNjcmliZWQgaW4gdnYuIDIyLTI3IG9mIFRoZSBTaGF0Y2hha3JhIApOaXJ1cGFuYSwgb2Ygd2hpY2ggdGhlIGZvbGxvd2luZyBpcyBBdmFsb27vv71zIHN1bW1hcml6ZWQgdHJhbnNsYXRpb246wqAKCgpUaGUgSGVhcnQgTG90dXMgaXMgb2YgdGhlIGNvbG91ciBvZiB0aGUgQmFuZGh1a2EgZmxvd2VyIApbcmVkXSwgYW5kIG9uIGl0cyB0d2VsdmUgcGV0YWxzIGFyZSB0aGUgbGV0dGVycyBLYSB0byBUaGEsIHdpdGggCnRoZSBCaW5kdSBhYm92ZSB0aGVtLCBvZiB0aGUgY29sb3VyIG9mIHZlcm1pbGlvbi4gSW4gaXRzIHBlcmljYXJwIGlzIHRoZSAKaGV4YWdvbmFsIFZheXUtTWFuZGFsYSwgb2YgYSBzbW9reSBjb2xvdXIsIGFuZCBhYm92ZSBpdCBTdXJ5YS1NYW5kYWxhLCB3aXRoIHRoZSAKVHJpa29uYSBsdXN0cm91cyBhcyB0ZW4gbWlsbGlvbiBmbGFzaGVzIG9mIGxpZ2h0bmluZyB3aXRoaW4gaXQuIEFib3ZlIGl0IHRoZSAKVmF5dSBCaWphLCBvZiBhIHNtb2t5IGh1ZSwgaXMgc2VhdGVkIG9uIGEgYmxhY2sgYW50ZWxvcGUsIGZvdXItYXJtZWQgYW5kIApjYXJyeWluZyB0aGUgZ29hZCAoYW5rdXNoYSkuIEluIGhpcyAoVmF5dS1CaWph77+9cykgbGFwIGlzIHRocmVlLWV5ZWQgSXNoYS4gTGlrZSAKSGFtc2EgKEhhbXNhYmhhKSwgSGlzIHR3byBhcm1zIGFyZSBleHRlbmRlZCBpbiB0aGUgZ2VzdHVyZXMgb2YgZ3JhbnRpbmcgYm9vbnMgCmFuZCBkaXNwZWxsaW5nIGZlYXIuIEluIHRoZSBwZXJpY2FycCBvZiB0aGlzIExvdHVzLCBzZWF0ZWQgb24gYSByZWQgbG90dXMsIGlzIAp0aGUgU2hha3RpIEtha2luaS4gU2hlIGlzIGZvdXLvv71hcm1lZCwgYW5kIGNhcnJpZXMgdGhlIG5vb3NlIChQYXNoYSksIHRoZSBza3VsbCAoS2FwYWxhKSAKYW5kIG1ha2VzIHRoZSBib29uIChWYXJhKSBhbmQgZmVhci1kaXNwZWxsaW5nIChBYmhheWEpIHNpZ25zLiBTaGUgaXMgb2YgYSBnb2xkZW4gCmh1ZSwgaXMgZHJlc3NlZCBpbiB5ZWxsb3cgcmFpbWVudCwgYW5kIHdlYXJzIGV2ZXJ5IHZhcmlldHkgb2YgamV3ZWwsIGFuZCBhIApnYXJsYW5kIG9mIGJvbmVzLiBIZXIgaGVhcnQgaXMgc29mdGVuZWQgYnkgbmVjdGFyLiBJbiB0aGUgbWlkZGxlIG9mIHRoZSBUcmlrb25hIAppcyBTaGl2YSBpbiB0aGUgZm9ybSBvZiBhIFZhbmEtTGluZ2EsIHdpdGggdGhlIGNyZXNjZW50IG1vb24gYW5kIEJpbmR1IG9uIGhpcyAKaGVhZC4gSGUgaXMgb2YgYSBnb2xkZW4gY29sb3VyLiBIZSBsb29rcyBqb3lvdXMgd2l0aCBhIHJ1c2ggb2YgZGVzaXJlLiBCZWxvdyBoaW0gCmlzIHRoZSBKaXZhdG1hIGxpa2UgSGFtc2EuIEl0IGlzIGxpa2UgdGhlIHN0ZWFkeSB0YXBlcmluZyBmbGFtZSBvZiBhIGxhbXAuCgoKQmVsb3cgdGhlIHBlcmljYXJwIG9mIHRoaXMgTG90dXMgaXMgdGhlIHJlZCBsb3R1cyBvZiBlaWdodCAKcGV0YWxzLCB3aXRoIGl0cyBoZWFkIHVwdHVybmVkLiBJdCBpcyBpbiB0aGlzIChyZWQpIGxvdHVzIHRoYXQgdGhlcmUgYXJlIHRoZSAKS2FscGEgVHJlZSwgdGhlIGpld2VsbGVkIGFsdGFyIHN1cm1vdW50ZWQgYnkgYW4gYXduaW5nIGFuZCBkZWNvcmF0ZWQgYnkgZmxhZ3MgCmFuZCB0aGUgbGlrZSwgd2hpY2ggaXMgdGhlIHBsYWNlIG9mIG1lbnRhbCB3b3JzaGlwLlvvv73vv73vv73vv71dwqAKCgpUSEUgUEVUQUxTIEFORCBMRVRURVJTwqAKCgpUaGUgcGV0YWxzIG9mIGFueSBvbmUgb2YgdGhlc2UgbG90dXNlcywgYXMgd2UgaGF2ZSBzZWVuLCBhcmUgCm1hZGUgYnkgdGhlIHByaW1hcnkgZm9yY2VzLCB3aGljaCByYWRpYXRlIG91dCBpbnRvIHRoZSBib2R5IGFsb25nIHRoZSBzcG9rZXMgb2YgCnRoZSB3aGVlbC4gVGhlIG51bWJlciBvZiBzcG9rZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgbnVtYmVyIG9mIHBvd2VycyBiZWxvbmdpbmcgCnRvIHRoZSBmb3JjZSB3aGljaCBjb21lcyB0aHJvdWdoIGEgcGFydGljdWxhciBjaGFrcmEuIEluIHRoaXMgY2FzZSB3ZSBoYXZlIAp0d2VsdmUgcGV0YWxzLCBhbmQgdGhlIGxldHRlcnMgZ2l2ZW4gdG8gdGhlc2UgZXZpZGVudGx5IHN5bWJvbGl6ZSBhIGNlcnRhaW4gCnNlY3Rpb24gb2YgdGhlIHRvdGFsIGNyZWF0aXZlIHBvd2VyIG9yIGxpZmUtZm9yY2UgY29taW5nIGludG8gdGhlIGJvZHkuIFRoZSAKbGV0dGVycyBtZW50aW9uZWQgaGVyZSBhcmUgZnJvbSBLYSB0byBUaGEsIHRha2VuIGluIHRoZSByZWd1bGFyIApvcmRlciBvZiB0aGUgU2Fuc2tyaXQgYWxwaGFiZXQuIFRoaXMgYWxwaGFiZXQgaXMgZXh0cmFvcmRpbmFyaWx5IHNjaWVudGlmaWMgLSAKYXBwYXJlbnRseSB3ZSBoYXZlIG5vdGhpbmcgbGlrZSBpdCBpbiBXZXN0ZXJuIGxhbmd1YWdlcyAtIGFuZCBpdHMgNDkgbGV0dGVycyBhcmUgCnVzdWFsbHkgYXJyYW5nZWQgaW4gdGhlIGZvbGxvd2luZyB0YWJ1bGFyIGZvcm0sIHRvIHdoaWNoIGtzaGEgaXMgYWRkZWQgaW4gCm9yZGVyIHRvIHN1cHBseSBlbm91Z2ggbGV0dGVycyBmb3IgdGhlIGZpZnR5IHBldGFscyBvZiB0aGUgc2l4IGNoYWtyYXMuCgoKwqAKCgpUaGlzIGFscGhhYmV0IGlzIGNvbnNpZGVyZWQgZm9yIHlvZ2EgcHVycG9zZXMgdG8gaW5jbHVkZSB0aGUgCnN1bS10b3RhbCBvZiBodW1hbiBzb3VuZHMsIHRvIGJlIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2Ygc3BlZWNoIGEgCm1hdGVyaWFsbHkgZXh0ZW5kZWQgZXhwcmVzc2lvbiBvZiB0aGUgb25lIGNyZWF0aXZlIHNvdW5kIG9yIHdvcmQuIExpa2UgdGhlIApzYWNyZWQgd29yZCBBdW0gKHRoZSBzb3VuZCBvZiB3aGljaCBiZWdpbnMgaW4gdGhlIGJhY2sgb2YgdGhlIG1vdXRoIHdpdGggYSwgCnRyYXZlcnNlcyB0aGUgY2VudHJlIHdpdGggdSwgYW5kIGVuZHMgdXBvbiB0aGUgbGlwcyBpbiBtKSAKaXQgcmVwcmVzZW50cyBhbGwgY3JlYXRpdmUgc3BlZWNoLCBhbmQgdGhlcmVmb3JlIGEgc2V0IG9mIHBvd2Vycy4gVGhlc2UgYXJlIAphc3NpZ25lZCBhcyBmb2xsb3dzOiB0aGUgc2l4dGVlbiB2b3dlbHMgdG8gdGhlIHRocm9hdCBjaGFrcmEsIEthIHRvIApUaGEgdG8gdGhlIGhlYXJ0LCBEYSB0byBQaGEgdG8gdGhlIG5hdmVsLCBCYSB0byBMYQp0byB0aGUgc2Vjb25kLCBhbmQgVmEgdG8gU2EgdG8gdGhlIGZpcnN0LiBIYSBhbmQgCktzaGEgYXJlIGdpdmVuIHRvIHRoZSBBam5hIGNoYWtyYSwgYW5kIHRoZSBTYWhhc3JhcmEgTG90dXMgb3IgY3Jvd24gY2hha3JhIAppcyBjb25zaWRlcmVkIHRvIGluY2x1ZGUgdGhlIGFscGhhYmV0IHRha2VuIHR3ZW50eSB0aW1lcyBvdmVyLgoKClRoZXJlIGlzIG5vIAphcHBhcmVudCByZWFzb24gd2h5IHRoZSBsZXR0ZXJzIHNob3VsZCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gdGhlIHBhcnRpY3VsYXIgCmNoYWtyYXMgbWVudGlvbmVkLCBidXQgdGhlcmUgaXMgYW4gaW5jcmVhc2luZyBudW1iZXIgb2YgcG93ZXJzIGFzIHdlIGFzY2VuZCB0aGUgCmNoYWtyYXMuIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIGZvdW5kZXJzIG9mIHRoZSBMYXlhIHN5c3RlbSBtYXkgaGF2ZSBoYWQgYSAKZGV0YWlsZWQga25vd2xlZGdlIG9mIHRoZXNlIHBvd2VycywgYW5kIG1heSBoYXZlIHVzZWQgdGhlIGxldHRlcnMgdG8gbmFtZSB0aGVtIAptdWNoIGFzIHdlIHVzZSBsZXR0ZXJzIGluIHJlZmVycmluZyB0byBhbmdsZXMgaW4gZ2VvbWV0cnksIG9yIHRvIHRoZSBlbWFuYXRpb25zIApmcm9tIHJhZGl1bS4KCgpUaGUgcHJhY3RpY2Ugb2YgCm1lZGl0YXRpb24gb24gdGhlc2UgbGV0dGVycyBoYXMgZXZpZGVudGx5IHNvbWV0aGluZyB0byBkbyB3aXRoIHJlYWNoaW5nIO+/vXRoZSAKaW5uZXIgc291bmQgd2hpY2gga2lsbHMgdGhlIG91dGVy77+9LCB0byB1c2UgYSBwaHJhc2UgZnJvbSBUaGUgVm9pY2Ugb2YgdGhlIApTaWxlbmNlLiBUaGUgc2NpZW50aWZpYyBtZWRpdGF0aW9uIG9mIHRoZSBIaW5kdXMgYmVnaW5zIHdpdGggY29uY2VudHJhdGlvbiAKdXBvbiBhIHBpY3R1cmVkIG9iamVjdCBvciBhIHNvdW5kLCBhbmQgb25seSB3aGVuIHRoZSBtaW5kIGhhcyBiZWVuIGZpeGVkIApzdGVhZGlseSB1cG9uIHRoYXQgZG9lcyB0aGUgeW9naSB0cnkgdG8gcGFzcyBvbiB0byByZWFsaXplIGl0cyBoaWdoZXIgCnNpZ25pZmljYW5jZS4gVGh1cyBpbiBtZWRpdGF0aW5nIHVwb24gYSBNYXN0ZXIgaGUgZmlyc3QgcGljdHVyZXMgdGhlIHBoeXNpY2FsIApmb3JtLCBhbmQgYWZ0ZXJ3YXJkcyB0cmllcyB0byBmZWVsIHRoZSBlbW90aW9ucyBvZiB0aGUgTWFzdGVyLCB0byB1bmRlcnN0YW5kIEhpcyAKdGhvdWdodHMsIGFuZCBzbyBvbi4KCgpJbiB0aGlzIG1hdHRlciBvZiAKc291bmRzIHRoZSB5b2dpIHRyaWVzIHRvIHBhc3MgaW53YXJkIGZyb20gdGhlIHNvdW5kIGFzIGtub3duIHRvIHVzIGFuZCB1dHRlcmVkIApieSB1cywgdG8gdGhlIGlubmVyIHF1YWxpdHkgYW5kIHBvd2VyIG9mIHRoYXQgc291bmQsIGFuZCB0aHVzIGl0IGlzIGFuIGFpZCB0byAKdGhlIHBhc3NhZ2Ugb2YgaGlzIGNvbnNjaW91c25lc3MgZnJvbSBwbGFuZSB0byBwbGFuZS4gSXQgbWF5IGJlIHRob3VnaHQgdGhhdCBHb2QgCmNyZWF0ZWQgdGhlIHBsYW5lcyBieSByZWNpdGluZyB0aGUgYWxwaGFiZXQgYW5kIHRoYXQgb3VyIHNwb2tlbiB3b3JkIGlzIGl0cyAKbG93ZXN0IHNwaXJhbC4gSW4gdGhpcyBmb3JtIG9mIHlvZ2EgdGhlIGFzcGlyYW50IHN0cml2ZXMgYnkgaW5uZXIgYWJzb3JwdGlvbiBvciAKbGF5YSB0byByZXR1cm4gdXBvbiB0aGF0IHBhdGggYW5kIHNvIGRyYXcgbmVhcmVyIHRvIHRoZSBEaXZpbmUuIEluIExpZ2h0IG9uIAp0aGUgUGF0aCB3ZSBhcmUgZXhob3J0ZWQgdG8gbGlzdGVuIHRvIHRoZSBzb25nIG9mIGxpZmUsIGFuZCB0byB0cnkgdG8gY2F0Y2ggCml0cyBoaWRkZW4gb3IgaGlnaGVyIHRvbmVzLsKgCgoKVEhFIE1BTkRBTEFTwqAKCgpUaGUgaGV4YWdvbmFsIAptYW5kYWxhIG9yIO+/vWNpcmNsZe+/vSB3aGljaCBvY2N1cGllcyB0aGUgcGVyaWNhcnAgb2YgdGhlIGhlYXJ0IGxvdHVzIGlzIHRha2VuIGFzIGEgCnN5bWJvbCBvZiB0aGUgZWxlbWVudCBhaXIuIEVhY2ggY2hha3JhIGlzIGNvbnNpZGVyZWQgdG8gYmUgZXNwZWNpYWxseSBjb25uZWN0ZWQgCndpdGggb25lIG9mIHRoZSBlbGVtZW50cyBlYXJ0aCwgd2F0ZXIsIGZpcmUsIGFpciwgZXRoZXIgYW5kIG1pbmQuIFRoZXNlIGVsZW1lbnRzIAphcmUgdG8gYmUgcmVnYXJkZWQgYXMgc3RhdGVzIG9mIG1hdHRlciwgbm90IGVsZW1lbnRzIGFzIHdlIHVuZGVyc3RhbmQgdGhlbSBpbiAKbW9kZXJuIGNoZW1pc3RyeS4gVGhleSBhcmUgdGh1cyBlcXVpdmFsZW50IHRvIHRoZSB0ZXJtcyBzb2xpZCwgbGlxdWlkLCBmaWVyeSBvciAKZ2FzZW91cywgYWlyeSBhbmQgZXRoZXJpYywgYW5kIGFyZSBzb21ld2hhdCBhbmFsb2dvdXMgdG8gb3VyIHN1Yi1wbGFuZXMgYW5kIApwbGFuZXMtcGh5c2ljYWwsIGFzdHJhbCwgbWVudGFsLCBldGMuIFRoZXNlIGVsZW1lbnRzIGFyZSByZXByZXNlbnRlZCBieSBjZXJ0YWluCnlhbnRyYXMgb3IgZGlhZ3JhbXMgb2YgYSBzeW1ib2xpYyBjaGFyYWN0ZXIsIHdoaWNoIGFyZSAKZ2l2ZW4gYXMgZm9sbG93cyBpbiBUaGUgU2hhdGNoYWtyYSBOaXJ1cGFuYSwgYW5kIGFyZSBzaG93biB3aXRoaW4gdGhlIApwZXJpY2FycHMgb2YgdGhlIHBpY3R1cmVkIGxvdHVzZXMuCgoKU29tZXRpbWVzIGluIHRoZSBmb2xsb3dpbmcgbGlzdCBvcmFuZ2UtcmVkIGlzIGdpdmVuIGluc3RlYWQgCm9mIHllbGxvdywgYmx1ZSBpbnN0ZWFkIG9mIHNtb2t5LCBhbmQgYmxhY2sgaW5zdGVhZCBvZiB3aGl0ZSBpbiB0aGUgZmlmdGggCmNoYWtyYSwgdGhvdWdoIGl0IGlzIGV4cGxhaW5lZCB0aGF0IGJsYWNrIHN0YW5kcyBmb3IgaW5kaWdvIG9yIGRhcmsgYmx1ZS7CoAoKCkNIQUtSQQoKCkVMRU1FTlQKCgpGT1JNCgoKQ09MT1VSCgoKMQoKCjIKCgozCgoKNAoKCjUKCgo2CgoKRWFydGgKCgpXYXRlcgoKCkZpcmUKCgpBaXIKCgpFdGhlcgoKCk1pbgoKCkEgc3F1YXJlCgoKQSBjcmVzY2VudCBtb29uCgoKQSB0cmlhbmdsZQoKClR3byBpbnRlcmxhY2VkIHRyaWFuZ2xlcyAoYSBoZXhhZ29uYWwgZmlndXJlKQoKCkEgY2lyY2xlCgoK77+9CgoKWWVsbG93CgoKV2hpdGUKCgpCcmlnaHQgcmVkCgoKU21va3kKCgpXaGl0ZQoKCndoaXRlCgoKwqBUQUJMRSBWSUkKCgrCoAoKCkl0IG1heSBzZWVtIGN1cmlvdXMgdG8gdGhlIFdlc3Rlcm4gcmVhZGVyIHRoYXQgdGhlIG1pbmQgCnNob3VsZCBiZSBwdXQgYW1vbmcgdGhlIGVsZW1lbnRzLCBidXQgdGhhdCBkb2VzIG5vdCBhcHBlYXIgc28gdG8gdGhlIEhpbmR1LCBmb3IgCnRoZSBtaW5kIGlzIHJlZ2FyZO+/vWVkIGJ5IGhpbSBhcyBidXQgYW4gaW5zdHJ1bWVudCBvZiBjb25zY2lvdXNuZXNzLiBUaGUgSGluZHUgCmhhcyBhIHdheSBvZiBsb29raW5nIGF0IHRoaW5ncyBmcm9tIGEgdmVyeSBoaWdoIHBvaW50IG9mIHZpZXcsIG9mdGVuIGFwcGFyZW50bHkgCmZyb20gdGhlIHN0YW5k77+9cG9pbnQgb2YgdGhlIE1vbmFkLiBGb3IgZXhhbXBsZSwgaW4gdGhlIHNldmVudGggY2hhcHRlciBvZiB0aGUgCkdpdGEsIFNocmkgS3Jpc2huYSBzYXlzOiDvv71FYXJ0aCwgd2F0ZXIsIGZpcmUsIGFpciwgZXRoZXIsIG1hbmFzLCBidWRkaGkgYW5kIAphaGFta2FyYSAtIHRoZXNlIGFyZSB0aGUgZWlnaHRmb2xkIGRpdmlzaW9ucyBvZiBteSBtYW5pZmVzdGF0aW9uIChwcmFrcml0aSku77+9IEEgCmxpdHRsZSBsYXRlciBvbiBIZSBzcGVha3Mgb2YgdGhlc2UgZWlnaHQgYXMsIO+/vW15IGxvd2VyIG1hbmlmZXN0YXRpb27vv70uCgoKVGhlc2UgZWxlbWVudHMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgaWRlYSBvZiB0aGUgcGxhbmVzLCBhcyAKYmVmb3JlIGV4cGxhaW5lZCwgYnV0IGl0IGRvZXMgbm90IHNlZW0gdGhhdCB0aGUgY2hha3JhcyBhcmUgZXNwZWNpYWxseSBjb25uZWN0ZWQgCndpdGggdGhlbS4gQnV0IGNlcnRhaW5seSBhcyB0aGUgeW9naSBtZWRpdGF0ZXMgdXBvbiB0aGVzZSBlbGVtZW50cyBhbmQgdGhlaXIgCmFzc29jaWF0ZWQgc3ltYm9scyBpbiBlYWNoIGNoYWtyYSBoZSByZW1pbmRzIGhpbXNlbGYgb2YgdGhlIHNjaGVtZSBvZiB0aGUgCnBsYW5lcy4gSGUgbWF5IGFsc28gZmluZCB0aGlzIGZvcm0gb2YgbWVkaXRhdGlvbiBhIG1lYW5zIGZvciByYWlzaW5nIGhpcyBjZW50cmUgCm9mIGNvbnNjaW91c25lc3MsIHRocm91Z2ggdGhlIGxldmVscyBvZiB0aGUgcGxhbmUgaW4gd2hpY2ggaXQgaXMgYXQgdGhlIHRpbWUgCmZ1bmN0aW9uaW5nLCB0byB0aGUgc2V2ZW50aCBvciBoaWdoZXN0LCBhbmQgdGhyb3VnaCB0aGF0IHRvIHNvbWV0aGluZyBoaWdoZXIgCnN0aWxsLgoKClF1aXRlIGFwYXJ0IGZyb20gdGhlIHBvc3NpYmlsaXR5IG9mIGdvaW5nIG91dCBpbnRvIGEgaGlnaGVyIApwbGFuZSBpbiBmdWxsIGNvbnNjaW91c25lc3MsIHdlIGhhdmUgaGVyZSBhIG1lYW5zIG9mIHJhaXNpbmcgdGhlIGNvbnNjaW91c25lc3MgCnNvIHRoYXQgaXQgbWF5IGZlZWwgdGhlIGluZmx1ZW5jZXMgb2YgYSBzdXBlcmlvciB3b3JsZCBhbmQgcmVjZWl2ZSBpbXByZXNzaW9ucyAKZnJvbSBhYm92ZS4gVGhlIGZvcmNlIG9yIGluZmx1ZW5jZSBzbyByZWNlaXZlZCBhbmQgZmVsdCBpcyBubyBkb3VidCB0aGUg77+9bmVjdGFy77+9IApvZiB3aGljaCB0aGUgYm9va3Mgc3BlYWssIG9mIHdoaWNoIHdlIHdpbGwgc2F5IG1vcmUgaW4gY29ubmVjdGlvbiB3aXRoIHRoZSAKcmFpc2luZyBvZiB0aGUgYXdha2VuZWQga3VuZGFsaW5pIHRvIHRoZSBoaWdoZXN0IGNlbnRyZS7CoAoKClRIRSBZQU5UUkFTwqAKCgpJbiBOYXR1cmXvv71zIEZpbmVyIEZvcmNlc1vvv73vv73vv73vv71dIApQYW5kaXQgUmFtYSBQcmFzYWQgcHJlc2VudHMgdXMgd2l0aCBhIHRob3VnaHRmdWwgc3R1ZHkgb2YgdGhlIHJlYXNvbnMgZm9yIHRoZSAKZ2VvbWV0cmljYWwgZm9ybXMgb2YgdGhlc2UgeWFudHJhcy4gSGlzIGV4cGxhbmHvv710aW9ucyBhcmUgdG9vIGxlbmd0aHkgZm9yIApyZXByb2R1Y3Rpb24gaGVyZSwgYnV0IHdlIG1heSB2ZXJ5IGJyaWVmbHkgc3VtbWFyaXplIHNvbWUgb2YgaGlzIG1haW4gaWRlYXMuIEhlIAphcmd1ZXMgdGhhdCBqdXN0IGFzIHRoZXJlIGV4aXN0cyBhIGx1bWluaWZlcm91cyBldGhlciwgd2hpY2ggaXMgdGhlIGJlYXJlciBvZiAKbGlnaHQgdG8gb3VyIGV5ZXMsIHNvIHRoZXJlIGlzIGEgc3BlY2lhbCBmb3JtIG9mIGV0aGVyIGZvciBlYWNoIG9mIHRoZSBvdGhlciAKZm9ybXMgb2Ygc2Vuc2F0aW9uIC0gc21lbGwsIHRhc3RlLCB0b3VjaCBhbmQgaGVhcmluZy4gVGhlc2Ugc2Vuc2VzIGFyZSAKY29ycmVsYXRlZCB3aXRoIHRoZSBlbGVtZW50cyByZXByZXNlbnRlZCBieSB0aGUgeWFudHJhcyAtIHNtZWxsIHdpdGggdGhlIHNvbGlkIAooc3F1YXJlKSwgdGFzdGUgd2l0aCBsaXF1aWQgKGNyZXNjZW50KSwgc2lnaHQgd2l0aCB0aGUgZ2FzZW91cyAodHJpYW5nbGUpLCB0b3VjaCAKd2l0aCB0aGUgYWlyeSAoaGV4YWdvbiksIGFuZCBoZWFyaW5nIHdpdGggdGhlIGV0aGVyaWMgKGNpcmNsZSkuIFRoZSBwcm9wYWdhdGlvbiAKb2Ygc291bmQsIHRoZSBQYW5kaXQgYXJndWVzLCBpcyBpbiB0aGUgZm9ybSBvZiBhIGNpcmNsZSwgdGhhdCBpcyBvZiBhIHJhZGlhdGlvbiAKYWxsIGFyb3VuZDsgaGVuY2UgdGhlIGNpcmNsZSBpbiB0aGUgZmlmdGggY2hha3JhLiBUaGUgcHJvcGFnYXRpb24gb2YgbGlnaHQsIGhlIApzYXlzLCBpcyBpbiB0aGUgZm9ybSBvZiBhIHRyaWFuZ2xlLCBmb3IgYSBnaXZlbiBwb2ludCBpbiB0aGUgbGlnaHQtd2F2ZSBtb3ZlcyBhIApsaXR0bGUgZm9y77+9d2FyZHMgYW5kIGFsc28gYXQgcmlnaHQgYW5nbGVzIHRvIHRoZSBsaW5lIG9mIHByb2dyZXNzLCBzbyB0aGF0IHdoZW4gCml0IGhhcyBjb21wbGV0ZWQgaXRzIG1vdmVtZW50IGl0IGhhcyBwZXJmb3JtZWQgYSB0cmlhbmdsZTsgaGVuY2UgdGhlIHRyaWFuZ2xlIGluIAp0aGUgdGhpcmQgY2hha3JhLiBIZSBhcmd1ZXMgdGhhdCB0aGVyZSBpcyBhIG1vdmVtZW50IGluIHRoZSBldGhlciBhbHNvIGluIHRoZSAKY2FzZXMgb2YgdG91Y2gsIHRhc3RlIGFuZCBzbWVsbCwgYW5kIGdpdmVzIHJlYXNvbnMgZm9yIHRoZSBmb3JtcyB3aGljaCB3ZSBmaW5kIAphc3NvY2lhdGVkIHdpdGggdGhlc2UgaW4gdGhlaXIgcmVzcGVjdGl2ZSBjaGFrcmFzLsKgCgoKVEhFIEFOSU1BTFPCoAoKClRoZSBhbnRlbG9wZSwgb24gYWNjb3VudCBvZiBpdHMgZmxlZXRuZXNzIG9mIGZvb3QsIGlzIGEgCnN1aXRhYmxlIHN5bWJvbCBmb3IgdGhlIGVsZW1lbnQgYWlyLCBhbmQgdGhlIGJpamEgb3Igc2VlZC1tYW50cmEgKHRoYXQgaXMsIHRoZSAKc291bmQgaW4gd2hpY2ggdGhlIHBvd2VyIGdvdmVybmluZyB0aGlzIGVsZW1lbnQgbWFuaWZlc3RzIGl0c2VsZikgaXMgZ2l2ZW4gYXMgCllhbS4gVGhpcyB3b3JkIGlzIHNvdW5kZWQgYXMgdGhlIGxldHRlciB5LCBmb2xsb3dlZCBieSB0aGUgbmV1dHJhbCAKdm93ZWwgbiwgKHdoaWNoIGlzIGxpa2UgdGhlIGEgaW4g77+9SW5kaWHvv70pLCBhbmQgYSBuYXNhbCBhZnRlci1zb3VuZCAKc2ltaWxhciB0byB0aGF0IHdoaWNoIGZyZXF1ZW50bHkgb2NjdXJzIGluIHRoZSBGcmVuY2ggbGFuZ3VhZ2UuIEl0IGlzIHRoZSBkb3QgCm92ZXIgdGhlIGxldHRlciB3aGljaCByZXByZXNlbnRzIHRoaXMgc291bmQsIGFuZCBpbiB0aGF0IGRvdCBpcyB0aGUgZGl2aW5pdHkgdG8gCmJlIHdvcnNoaXBwZWQgaW4gdGhpcyBjZW50cmUgLSB0aGUgdGhyZWUtZXllZCBJc2hhLiBPdGhlciBhbmltYWxzIGFyZSB0aGUgCmVsZXBoYW50LCBhc3NvY2lhdGVkIHdpdGggZWFydGggb24gYWNjb3VudCBvZiBpdHMgc29saWRpdHkgYW5kIHdpdGggZXRoZXIgCmJlY2F1c2Ugb2YgaXRzIHN1cHBvcnRpbmcgcG93ZXI7IHRoZSBtYWthcmEgb3IgY3JvY29kaWxlIGluIHRoZSB3YXRlciBvZiBDaGFrcmEgCjI7IGFuZCB0aGUgcmFtIChldmlkZW50bHkgcmVnYXJkZWQgYXMgYSBmaWVyeSBvciBhZ2dyZXNzaXZlIGFuaW1hbCkgaW4gQ2hha3JhIDMuIApGb3IgY2VydGFpbiBwdXJwb3NlcyB0aGUgeW9naSBtYXkgaW1hZ2luZSBoaW1zZWxmIGFzIHNlYXRlZCBvbiB0aGVzZSBhbmltYWxzIGFuZCAKZXhlcu+/vWNpc2luZyB0aGUgcG93ZXIgd2hpY2ggdGhlaXIgcXVhbGl0aWVzIHJlcHJlc2VudC7CoAoKClRIRSBESVZJTklUSUVTwqAKCgpUaGVyZSBpcyBhIGJlYXV0aWZ1bCBpZGVhIGluIHNvbWUgb2YgdGhlc2UgbWFudHJhcywgd2hpY2ggd2UgCm1heSBpbGx1c3RyYXRlIGJ5IHJlZmVyZW5jZSB0byB0aGUgd2VsbC1rbm93biBzYWNyZWQgd29yZCBPbS4gSXQgaXMgc2FpZCB0byAKY29uc2lzdCBvZiBmb3VyIHBhcnRzIC0gYSwgdSwgbSwgYW5kIGFyZGhhbWF0cmEuIFRoZXJlIGlzIGEgcmVmZXJlbmNlIHRvIHRoaXMgaW4KVGhlIFZvaWNlIG9mIHRoZSBTaWxlbmNlLCBhcyBmb2xsb3dzOsKgCgoKQW5kIHRoZW4gdGhvdSBjYW5zdCByZXBvc2UgYmV0d2VlbiB0aGUgd2luZ3Mgb2YgdGhlIEdyZWF0IApCaXJkLiBBeWUsIHN3ZWV0IGlzIHJlc3QgYmV0d2VlbiB0aGUgd2luZ3Mgb2YgdGhhdCB3aGljaCBpcyBub3QgYm9ybiwgbm9yIGRpZXMsIApidXQgaXMgQXVtIHRocm91Z2hvdXQgZXRlcm5hbCBhZ2VzLsKgCgoKQW5kIE1hZGFtZSBCbGF2YXRza3kgaW4gCmEgZm9vdG5vdGUgdG8gdGhpcyBzcGVha3Mgb2YgdGhlIEdyZWF0IEJpcmQgYXM6wqAKCgpLYWxhIEhhbXNhLCB0aGUgYmlyZCBvciBzd2FuLiBTYXlzIHRoZSBOYWRhdmluZHUtdXBhbmlzaGF0CihSaWctdmVkYSkgdHJhbnNsYXRlZCBieSB0aGUgS3VtYmFrb25hbSBUaGVvc29waGljYWwgU29jaWV0eSDvv70g77+9VGhlIHN5bGxhYmxlIApBIGlzIGNvbnNpZGVyZWQgdG8gYmUgdGhlIGJpcmQgSGFtc2Hvv71zwqAgcmlnaHQgd2luZywgVSBpdHMgbGVmdCwgTSBpdHMgdGFpbCwgYW5kIAp0aGUgQXJkaGFtYXRyYSAoaGFsZiBtZXRyZSkgaXMgc2FpZCB0byBiZSBpdHMgaGVhZC7vv73CoAoKClRoZSB5b2dpIGFmdGVyIHJlYWNoaW5nIHRoZSB0aGlyZCBzeWxsYWJsZSBpbiBoaXMgbWVkaXRhdGlvbiwgCnBhc3NlcyBvbiB0byB0aGUgZm91cnRoLCB3aGljaCBpcyB0aGUgc2lsZW5jZSB3aGljaCBmb2xsb3dzLiBIZSB0aGlua3Mgb2YgdGhlIApkaXZpbml0eSBpbiB0aGF0IHNpbGVuY2UuCgoKSW4gdGhlIGRpZmZlcmVudCBib29rcyB0aGUgZGVpdGllcyBhc3NpZ25lZCB0byB0aGUgY2hha3JhcyAKdmFyeS4gRm9yIGV4YW1wbGUgVGhlIFNoYXRjaGFrcmEgTmlyde+/vXBhbmEgcGxhY2VzIEJyYWhtYSwgVmlzaG51IGFuZCAKU2hpdmEgaW4gdGhlIGZpcnN0LCBzZWNvbmQgYW5kIHRoaXJkIGNoYWtyYXMgcmVzcGVjdGl2ZWx5LCBhbmQgZGlmZmVyZW50IGZvcm1zIApvZiBTaGl2YSBiZXlvbmQgdGhlbSwgYnV0IFRoZSBTaGl2YSBTYW1oaXRhIGFuZCBzb21lIG90aGVyIHdvcmtzIG1lbnRpb24gCkdhbmVzaGEgKHRoZSBlbGVwaGFudO+/vS1oZWFkZWQgc29uIG9mIFNoaXZhKSBpbiB0aGUgZmlyc3QsIEJyYWhtYSBpbiB0aGUgc2Vjb25kIAphbmQgVmlzaG51IGluIHRoZSB0aGlyZC4gQXBwYXJlbnRseSBkaWZmZXJlbmNlcyBhcmUgbWFkZSBhY2NvcmRpbmcgdG8gdGhlIHNlY3QgCm9mIHRoZSB3b3JzaGlwcGVyLgoKCkFsb25nIHdpdGggSXNoYSBpbiB0aGUgcHJlc2VudCBpbnN0YW5jZSB3ZSBoYXZlIGFzIGZlbWluaW5lIApkaXZpbml0eSB0aGUgU2hha3RpIEtha2luaS4gU2hha3RpIG1lYW5zIHBvd2VyIG9yIGZvcmNlLiBUaG91Z2h0LXBvd2VyIGlzIApkZXNjcmliZWQgYXMgYSBzaGFrdGkgb2YgdGhlIG1pbmQuIEluIGVhY2ggb2YgdGhlIHNpeCBjaGFrcmFzIHRoZXJlIGlzIG9uZSBvZiAKdGhlc2UgZmVtaW5pbmUgZGl2aW5pdGllcy1EYWtpbmksIFJha2luaSwgTGFraW5pLCBLYWtpbmksIFNoYWtpbmkgYW5kIEhha2luaSAtIAp3aGljaCBhcmUgYnkgc29tZSBpZGVudGlmaWVkIHdpdGggdGhlIHBvd2VycyBnb3Zlcm5pbmcgdGhlIHZhcmlvdXMgZGhhdHVzIApvciBib2RpbHkgc3Vic3RhbmNlcy4gSW4gdGhpcyBjaGFrcmEgS2FraW5pIGlzIHNlYXRlZCBvbiBhIHJlZCBsb3R1cy4gU2hlIGlzIApzcG9rZW4gb2YgYXMgaGF2aW5nIGZvdXIgYXJtcyAoZm91ciBwb3dlcnMgb3IgZnVuY3Rpb25zKS4gV2l0aCB0d28gb2YgaGVyIGhhbmRzIApzaGUgbWFrZXMgdGhlIHNhbWUgc2lnbnMgb2YgZ3JhbnRpbmcgYm9vbnMgYW5kIGRpc3BlbGxpbmcgZmVhcnMgYXMgYXJlIHNob3duIGJ5IApJc2hhOyB0aGUgb3RoZXIgdHdvIGhvbGQgYSBub29zZSAoYSBzeW1ib2wgd2hpY2ggaXMgYW5vdGhlciBmb3JtIG9mwqAgdGhlIGFua2ggCmNyb3NzKSBhbmQgYSBza3VsbCAoYXMgc3ltYm9sLCBubyBkb3VidCwgb2YgdGhlIHNsYWluIGxvd2VyIG5hdHVyZSkuwqAKCgpUSEUgQk9EWSBNRURJVEFUSU9OwqAKCgpTb21ldGltZXMgdGhlIG1lZGl0YXRpb25zIHVzdWFsbHkgcHJlc2NyaWJlZCBmb3IgdGhlc2UgCmNoYWtyYXMgYXJlIGFzc2lnbmVkIHRvIHRoZSBib2R5IGFzIGEgd2hvbGUsIGFzIGluIHRoZSBmb2xsb3dpbmcgZXh0cmFjdCBmcm9tIApUaGUgWW9nYXRhdHR2YSBVcGFuaXNoYWQ6wqAKCgpUaGVyZSBhcmUgZml2ZSBlbGVtZW50cywgZWFydGgsIHdhdGVyLCBmaXJlLCBhaXIsIGFuZCBldGhlci4gCkZvciB0aGUgYm9keSBvZiB0aGUgZml2ZSBlbGVtZW50cywgdGhlcmUgaXMgYSBmaXZlZm9sZCBjb25jZW50cmF0aW9uLiBGcm9tIHRoZSAKZmVldCB0byB0aGUga25lZXMgaXMgc2FpZCB0byBiZSB0aGUgcmVnaW9uIG9mIGVhcnRoOyBpdCBpcyBmb3VyLXNpZGVkIGluIHNoYXBlLCAKeWVsbG93IGluIGNvbG91ciBhbmQgaGFzIHRoZSBsZXR0ZXIgTGEuIENhcnJ577+9aW5nIHRoZSBicmVhdGggd2l0aCB0aGUKbGV0dGVyIExhIGFsb25nIHRoZSAKcmVnaW9uIG9mIGVhcnRoIChmcm9tIHRoZSBmZWV0IHRvIHRoZSBrbmVlcykgYW5kIGNvbnRlbXBsYXRpbmcgQnJhaG1hIHdpdGggZm91ciAKZmFjZXMgYW5kIG9mIGEgZ29sZGVuIGNvbG91ciwgb25lIHNob3VsZCBwZXJmb3JtIG1lZGl0YXRpb24gdGhlcmUuIO+/vQoKClRoZSByZWdpb24gb2Ygd2F0ZXIgaXMgZGVjbGFyZWQgdG8gZXh0ZW5kIGZyb20gdGhlIGtuZWVzIHRvIAp0aGUgYW51cy4gVGhlIHdhdGVyIGlzIHNlbWktbHVuYXIgaW4gc2hhcGUgYW5kIHdoaXRlIGluIGNvbG91ciwgYW5kIGhhcyBWYQpmb3IgaXRzIGJpamEgKHNlZWQpLiBDYXJyeWluZyB1cCB0aGUgYnJlYXRoIHdpdGggdGhlwqAgbGV0dGVyIFZhIGFsb25nIAp0aGUgcmVnaW9uIG9mIHdhdGVyLCBoZSBzaG91bGQgbWVkaXRhdGUgdXBvbiB0aGUgZ29kIE5hcmF5YW5hLCBoYXZpbmcgZm91ciBhcm1zIAphbmQgYSBjcm93bmVkIGhlYWQsIGFzIGJlaW5nIG9mIHRoZSBjb2xvdXIgb2YgcHVyZSBjcnlzdGFsLCBhcyBkcmVzc2VkIGluIG9yYW5nZSAKY2xvdGhzIGFuZCBhcyBkZWNheWxlc3MuIO+/vQoKCkZyb20gdGhlIGFudXMgdG8gdGhlIGhlYXJ0IGlzIHNhaWQgdG8gYmUgdGhlIHJlZ2lvbiBvZiBmaXJlLiAKRmlyZSBpcyB0cmlhbmd1bGFyIGluIHNoYXBlLCBvZiByZWQgY29sb3VyLCBhbmQgaGFzIHRoZSBsZXR0ZXIgUmEsIGZvciAKaXRzIGJpamEgb3Igc2VlZC4gUmFpc2luZyB0aGUgYnJlYXRoLCBtYWRlIHJlc3BsZW5kZW50IHRocm91Z2jCoCB0aGUgbGV0dGVyIApSYSwgYWxvbmcgdGhlIHJlZ2lvbiBvZiBmaXJlLCBoZSBzaG91bGQgbWVkaXRhdGUgdXBvbiBSdWRyYSwgd2hvIGhhcyB0aHJlZSAKZXllcywgd2hvIGdyYW50cyBhbGwgd2lzaGVzLCB3aG8gaXMgb2YgdGhlIGNvbG91ciBvZiB0aGUgbWlkZGF5IHN1biwgd2hvIGlzIApzbWVhcmVkIGFsbCBvdmVyIHdpdGggaG9seSBhc2hlcywgYW5kIHdobyBpcyBvZiBhIHBsZWFzZWQgY291bnRlbmFuY2UuIO+/vQoKCkZyb20gdGhlIGhlYXJ0IHRvIHRoZSBtaWRkbGUgb2YgdGhlIGV5ZWJyb3dzIGlzIHNhaWQgdG8gYmUgCnRoZSByZWdpb24gb2YgYWlyLiBBaXIgaXMgaGV4YW5ndWxhciBpbiBzaGFwZSwgYmxhY2sgaW4gY29sb3VyLCBhbmQgc2hpbmVzIHdpdGggCnRoZSBsZXR0ZXIgWWEuIENhcnJ5aW5nIHRoZSBicmVhdGggYWxvbmcgdGhlIHJlZ2lvbiBvZiBhaXIsIGhlIHNob3VsZCAKbWVkaXRhdGUgdXBvbiBJc2h2YXJhLCB0aGUgb21uaXNjaWVudCwgYXMgcG9z77+9c2Vzc2luZyBmYWNlcyBvbiBhbGwgc2lkZXMuIO+/vQoKCkZyb20gdGhlIGNlbnRyZSBvZiB0aGUgZXllYnJvd3MgdG8gdGhlIHRvcCBvZiB0aGUgaGVhZCBpcyAKZGVjbGFyZWQgdG8gYmUgdGhlIHJlZ2lvbiBvZiBldGhlcjsgaXQgaXMgY2lyY3VsYXIgaW4gc2hhcGUsIHNtb2t5IGluIGNvbG91ciwgCmFuZCBzaGluaW5nIHdpdGggdGhlIGxldHRlciBIYS4gUmFpc2luZyB0aGUgYnJlYXRoIGFsb25nIHRoZSByZWdpb24gb2YgCmV0aGVyLCBoZSBzaG91bGQgbWVkaXRhdGUgdXBvbiBTYWRhc2hpdmEgaW4gdGhlIGZvbGxvd2luZyBtYW5uZXIgLSBhcyBwcm9kdWNpbmcgCmhhcHBpbmVzcywgYXMgb2YgdGhlIHNoYXBlIG9mIGJpbmR1IChhIGRyb3ApLCBhcyB0aGUgR3JlYXQgRGV2YSwgYXMgaGF2aW5nIHRoZSAKc2hhcGUgb2YgZXRoZXIsIGFzIHNoaW5pbmcgbGlrZSBwdXJlIGNyeXN0YWwsIGFzIHdlYXJpbmcgdGhlIHJpc2luZyBjcmVzY2VudCAKbW9vbiBvbiBoaXMgaGVhZCwgYXMgaGF2aW5nIGZpdmUgZmFjZXMsIHRlbiBoYW5kcyBhbmQgdGhyZWUgZXllcywgYXMgYmVpbmcgb2YgYSAKcGxlYXNpbmcgY291bnRlbmFuY2UsIGFzIGFybWVkIHdpdGggYWxsIHdlYXBvbnMsIGFzIGFkb3JuZWQgd2l0aCBhbGwgb3JuYW1lbnRzLCAKYXMgaGF2aW5nIHRoZSBnb2RkZXNzIFVtYSBpbiBvbmUtaGFsZiBvZiBoaXMgYm9keSwgYXMgcmVhZHkgdG8gZ3JhbnQgZmF2b3VycywgCmFuZCBhcyB0aGUgY2F1c2Ugb2YgYWxsIHRoZSBjYXVzZXMuwqAKCgpUaGlzLCB0byBzb21lIGV4dGVudCwgY29uZmlybXMgb3VyIHN1Z2dlc3Rpb24gdGhhdCBpbiBzb21lIApjYXNlcyB0aGUgcHJpbmNpcGxlcyB1cG9uIHdoaWNoIHdlIGFyZSBhc2tlZCB0byBtZWRpdGF0ZSBhcmUgYXBwbGllZCB0byBwYXJ0cyBvZiAKdGhlIGJvZHkgZm9yIHB1cmVseSBtbmVtb25pYyBwdXJwb3Nlcywgbm90IHdpdGggdGhlIGRpcmVjdCBpbnRlbu+/vXRpb24gb2YgCmFmZmVjdGluZyB0aG9zZSBwYXJ0cy7CoAoKClRIRSBLTk9UU8KgCgoKSW4gdGhlIGNlbnRyZSBvZiB0aGUgaGVhcnQgbG90dXMgYSB0cmlrb25hIG9yIGludmVydGVkIAp0cmlhbmdsZSBpcyBmaWd1cmVkLiBUaGlzIGlzIG5vdCBhIGZlYXR1cmUgb2YgYWxsIHRoZSBjZW50cmVzLCBidXQgb25seSBvZiB0aGUgCnJvb3QsIGhlYXJ0IGFuZCBicm93IGNoYWtyYXMuIFRoZXJlIGFyZSBpbiB0aGVzZSB0aHJlZSBzcGVjaWFsIGdyYW50aGlzIApvciBrbm90cywgdGhyb3VnaCB3aGljaCBrdW5kYWxpbmkgaGFzIHRvIGJyZWFrIGluIHRoZSBjb3Vyc2Ugb2YgaGVyIGpvdXJuZXkuIFRoZSAKZmlyc3QgaXMgc29tZXRpbWVzIGNhbGxlZCB0aGUga25vdCBvZiBCcmFobWE7IHRoZSBzZWNvbmQgdGhhdCBvZiBWaXNobnU7IHRoZSAKdGhpcmQgdGhhdCBvZiBTaGl2YS4gVGhlIGlkZWEgd2hpY2ggdGhpcyBzeW1ib2xpc20gc2VlbXMgdG8gaW1wbHkgaXMgdGhhdCB0aGUgCnBpZXJjaW5nIG9mIHRoZXNlIGNoYWtyYXMgaW4gc29tZSB3YXkgaW52b2x2ZXMgYSBzcGVjaWFsIGNoYW5nZSBvZiBzdGF0ZSwgCnBvc3NpYmx5IGZyb20gdGhlIHBlcnNvbmFsaXR5IHRvIHRoZSBoaWdoZXIgc2VsZiBhbmQgdGhlbmNlIHRvIHRoZSBNb25hZO+/vSAtIHRoZSAKcmVnaW9ucyBvdmVyIHdoaWNoIHRoZXNlIEFzcGVjdHMgbWF5IGJlIHNhaWQgdG8gcnVsZS4gSXQgY2FuLCBob3dldmVyLCBiZSBvbmx5IAppbiBhIHN1Ym9yZGluYXRlIG9yIHNlY29uZGFyeSBtYW5uZXIgdGhhdCB0aGlzIGlzIHRydWUsIGZvciB3ZSBoYXZlIG9ic2VydmVkIAp0aGF0IHRoZSBoZWFydCBjaGFrcmEgcmVjZWl2ZXMgaW1wcmVzc2lvbnMgZnJvbSB0aGUgaGlnaGVyIGFzdHJhbCwgdGhlIHRocm9hdCAKY2VudHJlIGZyb20gdGhlIG1lbnRhbCwgYW5kIHNvIGZvcnRoLiBJbiBlYWNoIHRyaWFuZ2xlIHRoZSBkZWl0eSBpcyByZXByZXNlbnRlZCAKYXMgYSBsaW5nYSwgb3IgaW5zdHJ1bWVudCBvZiB1bmlvbi4gVGhlIEppdmF0bWEgKGxpdGVyYWxseSDvv71saXZpbmcgc2VsZu+/vSkgCnBvaW50aW5nIHVwd2FyZHMg77+9bGlrZSB0aGUgZmxhbWUgb2YgYSBsYW1w77+9IGlzIHRoZSBlZ28sIHJlcHJlc2VudGVkIGFzIGEgc3RlYWR5IApmbGFtZSBwcm9iYWJseSBiZWNhdXNlIGhlIGlzIG5vdCBkaXN0cmVzc2VkIGJ5IHRoZSBhY2NpZGVudHMgb2YgbWF0ZXJpYWwgbGlmZSwgCmFzIGlzIHRoZSBwZXJzb25hbGl0eS7CoAoKClRIRSBTRUNPTkRBUlkgSEVBUlQgCkxPVFVTwqAKCgpUaGUgc2Vjb25kIHNtYWxsIGxvdHVzIHJlcHJlc2VudGVkIGFzIGp1c3QgYmVuZWF0aCB0aGUgaGVhcnQgCmNoYWtyYSBpcyBhbHNvIGEgc3BlY2lhbCBmZWF0dXJlIG9mIHRoaXMgY2VudHJlLiBJdCBpcyB1c2VkIGFzIGEgcGxhY2UgZm9yIAptZWRpdGF0aW9uIHVwb24gdGhlIGZvcm0gb2YgdGhlIGd1cnUgb3IgdGhlIEFzcGVjdCBvZiB0aGUgRGVpdHkgd2hpY2ggZXNwZWNpYWxseSAKYXBwZWFscyBvciBpcyBhc3NpZ25lZCB0byB0aGUgd29yc2hpcHBlci4gSGVyZSB0aGUgZGV2b3RlZSBpbWFnaW5lcyBhbiBpc2xhbmQgb2YgCmdlbXMsIGNvbnRhaW5pbmcgYmVhdXRpZnVsIHRyZWVzLCBhbmQgYW4gYWx0YXIgZm9yIHdvcnNoaXAsIHdoaWNoIGlzIGRlc2NyaWJlZCAKYXMgZm9sbG93cyBpbiBUaGUgR2hlcmFuZGEgU2FtaGl0YTrCoAoKCkxldCBoaW0gY29udGVtcGxhdGUgdGhhdCB0aGVyZSBpcyBhIHNlYSBvZiBuZWN0YXIgaW4gaGlzIApoZWFydDsgdGhhdCBpbiB0aGUgbWlkc3Qgb2YgdGhhdCBzZWEgdGhlcmUgaXMgYW4gaXNsYW5kIG9mIHByZWNpb3VzIHN0b25lcywgdGhlIAp2ZXJ5IHNhbmQgb2Ygd2hpY2ggaXMgcHVsdmVyaXplZCBkaWFtb25kcyBhbmQgcnViaWVzLsKgIFRoYXQgb24gYWxsIHNpZGVzIG9mIGl0IAp0aGVyZSBhcmUgS2FkYW1iYSB0cmVlcywgbGFkZW4gd2l0aCBzd2VldCBmbG93ZXJzOyB0aGF0LCBuZXh0IHRvIHRoZXNlIHRyZWVzLCAKbGlrZSBhIHJhbXBhcnQsIHRoZXJlIGlzIGEgcm93IG9mIGZsb3dlcmluZyB0cmVlcywgc3VjaCBhcyBtYWxhdGksIG1hbGxpa2EsIGphdGksIAprZXNhcmEsIGNoYW1wYWthLCBwYXJpamF0YSwgYW5kIHBhZG1hLCBhbmQgdGhhdCB0aGUgZnJhZ3JhbmNlIG9mIHRoZXNlIGZsb3dlcnMgCmlzIHNwcmVhZCBhbGwgcm91bmQsIGluIGV2ZXJ5IHF1YXJ0ZXIuIEluIHRoZSBtaWRkbGUgb2YgdGhpcyBnYXJkZW4sIGxldCB0aGUgCnlvZ2kgaW1hZ2luZSB0aGF0IHRoZXJlIHN0YW5kcyBhIGJlYXV0aWZ1bCBLYWxwYSB0cmVlLCBoYXZpbmcgZm91ciBicmFuY2hlcywgCnJlcHJlc2VudGluZyB0aGUgZm91ciBWZWRhcywgYW5kIHRoYXQgaXQgaXMgZnVsbCBvZiBmbG93ZXJzIGFuZCBmcnVpdHMuIEluc2VjdHMgCmFyZSBodW1taW5nIHRoZXJlIGFuZCBjdWNrb29zIHNpbmdpbmcuIEJlbmVhdGggdGhhdCB0cmVlLCBsZXQgaGltIGltYWdpbmUgYSByaWNoIApwbGF0Zm9ybSBvZiBwcmVjaW91cyBnZW1zLCBhbmQgb24gdGhhdCBhIGNvc3RseSB0aHJvbmUgaW5sYWlkIHdpdGggamV3ZWxzLCBhbmQgCnRoYXQgb24gdGhhdCB0aHJvbmUgc2l0cyBoaXMgcGFydGljdWxhciBEZWl0eSwgYXMgdGF1Z2h0IHRvIGhpbSBieSBoaXMgR3VydS4gTGV0IApoaW0gY29udGVtcGxhdGUgb24gdGhlIGFwcHJvcHJpYXRlIGZvcm0sIG9ybmFtZW50cyBhbmQgdmVoaWNsZSBvZiB0aGF0IERlaXR5Llvvv73vv73vv73vv71dwqAKCgpUaGUgd29yc2hpcHBlciB1c2VzIGhpcyBpbWFnaW5hdGlvbiBpbiBjcmVhdGluZyB0aGlzIApiZWF1dGlmdWwgc2NlbmUgc28gdml2aWRseSBhcyB0byBiZWNvbWUgZW53cmFwcGVkIGluIGhpcyB0aG91Z2h0IGFuZCB0byBmb3JnZXQgCnRoZSBvdXRlciB3b3JsZCBlbnRpcmVseSBmb3IgdGhlIHRpbWUgYmVpbmcuIFRoZSBwcm9jZXNzIGlzIG5vdCwgaG93ZXZlciwgCmVudGlyZWx5IGltYWdpbmF0aXZlLCBmb3IgdGhpcyBpcyBhIG1lYW5zIHRvIG9idGFpbiBjb25zdGFudCBjb250YWN0IHdpdGggdGhlIApNYXN0ZXIuIEp1c3QgYXMgdGhlIGltYWdlcyBvZiBwZXJzb25zIG1hZGUgYnkgb25lIHdobyBpcyBpbiB0aGUgaGVhdmVuLXdvcmxkIAphZnRlciBkZWF0aCBhcmUgZmlsbGVkIHdpdGggbGlmZSBieSB0aGUgZWdvcyBvZiB0aG9zZSBwZXJzb25zLCBzbyB0aGUgTWFzdGVyIApmaWxscyB3aXRoIGhpcyByZWFsIHByZXNlbmNlIHRoZSB0aG91Z2h0LWZvcm0gcHJvZHVjZWQgYnkgaGlzIHB1cGlsLiBUaHJvdWdoIAp0aGF0IGZvcm0gcmVhbCBpbnNwaXJhdGlvbiBhbmQgc29tZXRpbWVzIGluc3RydWN0aW9uIG1heSBiZSBnaXZlbi4gQW4gCmludGVyZXN0aW5nIGV4YW1wbGUgb2YgdGhpcyB3YXMgcHJlc2VudGVkIGJ5IGFuIG9sZCBIaW5kdSBnZW50bGVtYW4gd2hvIHdhcyAKbGl2aW5nIGFzIGEgeW9naSBpbiBhIHZpbGxhZ2UgaW4gdGhlIE1hZHJhcyBQcmVzaWRlbmN5LCB3aG8gY2xhaW1lZCB0byBiZSBhIApwdXBpbCBvZiB0aGUgTWFzdGVyIE1vcnlhLiBXaGVuIHRoYXQgTWFzdGVyIHdhcyB0cmF2ZWxsaW5nIGluIFNvdXRoZXJuIEluZGlhIAp5ZWFycyBhZ28gaGUgdmlzaXRlZCB0aGUgdmlsbGFnZSB3aGVyZSB0aGlzIG1hbiBsaXZlZC4gVGhlIGxhdHRlciBiZWNhbWUgaGlzIApwdXBpbCwgYW5kIGRlY2xhcmVkIHRoYXQgaGUgZGlkIG5vdCBsb3NlIGhpcyBNYXN0ZXIgYWZ0ZXIgaGUgd2VudCBhd2F5LCBmb3IgaGUgCnVzZWQgZnJlcXVlbnRseSB0byBhcHBlYXIgdG8gaGltIGFuZCBpbnN0cnVjdCBoaW0gdGhyb3VnaCBhIGNlbnRyZSB3aXRoaW4gCmhpbXNlbGYuCgoKVGhlIEhpbmR1cyBsYXkgbXVjaCBzdHJlc3MgdXBvbiB0aGUgbmVjZXNzaXR5IGZvciBhIEd1cnUgb3IgCk1hc3RlciwgYW5kIHRoZXkgcmV2ZXJlbmNlIGhpbSBncmVhdGx5IHdoZW4gaGUgaXMgZm91bmQuIFRoZXkgY29uc3RhbnRseSAKcmVpdGVyYXRlIHRoZSBzdGF0ZW1lbnQgdGhhdCBoZSBtdXN0IGJlIHRyZWF0ZWQgYXMgZGl2aW5lOyBUaGUgVGVqb2JpbmR1IApVcGFuaXNoYWQgc2F5czog77+9VGhlIGZ1cnRoZXN0IGxpbWl0IG9mIGFsbCB0aG91Z2h0cyBpcyB0aGUgZ3VydS7vv70gVGhleSAKbWFpbnRhaW4gdGhhdCB3ZXJlIG9uZSB0byB0aGluayBvZiB0aGUgZ2xvcmlvdXMgcXVhbGl0aWVzIG9mIHRoZSBEaXZpbmUgQmVpbmcsIApvbmXvv71zIGltYWdpbmF0aW9uIHdvdWxkIHN0aWxsIGZhbGwgYmVsb3cgdGhlIHBlcmZlY3Rpb25zIG9mIHRoZSBNYXN0ZXIuIFdlIHdobyAKa25vdyB0aGUgTWFzdGVycyB3ZWxsIHJlYWxpemUgdGhlIHRydXRoIG9mIHRoYXQ7IHRoZWlyIHB1cGlscyBmaW5kIGluIHRoZW0gCmhlaWdodHMgb2YgY29uc2Npb3VzbmVzcyBzcGxlbmRpZCBhbmQgZ2xvcmlvdXMgYmV5b25kIGFsbCBleHBlY3RhdGlvbi4gSXQgaXMgbm90IAp0aGF0IHRoZXkgY29uc2lkZXIgdGhlIE1hc3RlciBlcXVhbCB0byBHb2Q7IGJ1dCB0aGF0IHRoYXQgcG9ydGlvbiBvZiB0aGUgRGl2aW5lIAp3aGljaCB0aGUgTWFzdGVyIGhhcyBhdHRhaW5lZCBvdXRzaGluZXMgdGhlaXIgcHJldmlvdXMgY29uY2VwdGlvbnMgb2YgaXQuwqAKCgpFRkZFQ1QgT0YgTUVESVRBVElPTiBJTiAKVEhFIEhFQVJUwqAKCgpUaGUgU2hpdmEgU2FtaGl0YSB0aHVzIApkZXNjcmliZXMgdGhlIGJlbmVmaXRzIHdoaWNoIGFyZSBzYWlkIHRvIGFjY3J1ZSB0byB0aGUgeW9naSBmcm9tIG1lZGl0YXRpb24gdXBvbiAKdGhlIGhlYXJ0IGNlbnRyZTrCoAoKCkhlIGdldHMgaW1tZWFzdXJhYmxlIGtub3dsZWRnZSwga25vd3MgdGhlIHBhc3QsIHByZXNlbnQgYW5kIApmdXR1cmU7IGhhcyBjbGFpcmF1ZGllbmNlLCBjbGFpcnZveWFuY2UgYW5kIGNhbiB3YWxrIGluIHRoZSBhaXIsIHdoZW5ldmVyIGhlIApsaWtlcy4KCgpIZSBzZWVzIHRoZSBhZGVwdHMsIGFuZCB0aGUgZ29kZGVzc2VzIGtub3duIGFzIFlvZ2luaXM7IApvYnRhaW5zIHRoZSBwb3dlciBrbm93biBhcyBLaGVjaGFyaSwgYW5kIGNvbnF1ZXJzIHRoZSBjcmVhdHVyZXMgd2hpY2ggbW92ZSBpbiAKdGhlIGFpci4KCgpIZSB3aG8gCmNvbnRlbXBsYXRlcyBkYWlseSBvbiB0aGUgaGlkZGVuIEJhbmFsaW5nYSB1bu+/vWRvdWJ0ZWRseSBvYnRhaW5zIHRoZSBwc3ljaGljIApwb3dlcnMgY2FsbGVkIEtoZWNoYXJpIChtb3ZpbmcgaW4gdGhlIGFpcikgYW5kIEJodWNoYXJpIAooZ29pbmcgYXQgd2lsbCBhbGwgb3ZlciB0aGUgd29ybGQpLlsqKioqKl3CoAoKCkl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY29tbWVudCB1cG9uIHRoZXNlIHBvZXRpYyBkZXNjcmlwdGlvbnMgCm9mIHRoZSB2YXJpb3VzIHBvd2VyczsgdGhlIHN0dWRlbnQgd2lsbCByZWFkIGJldHdlZW4gdGhlIGxpbmVzLiBTdGlsbCwgdGhlcmUgbWF5IAphbHNvIGJlIHNvbWXvv710aGluZyBpbiB0aGUgbGl0ZXJhbCBtZWFuaW5nIG9mIHN1Y2ggc3RhdGVtZW50cyBhcyB0aGVzZTsgZm9yIHRoZXJlIAphcmUgbWFueSB3b25kZXJzIGluIEluZGlhIC0gdGhlIG15c3RlcmlvdXMgcG93ZXJzIG9mIHRoZSBmaXJlLXdhbGtlcnMsIGFuZCB0aGUgCnBlcmZlY3RseSBtYXJ2ZWzvv71sb3VzIGh5cG5vdGljIGFiaWxpdHkgc2hvd24gYnkgc29tZSBjb25qdXJlcnMgd2hvIHBlcmZvcm0gdGhlIApmYW1vdXMgcm9wZSB0cmljayBhbmQgc2ltaWxhciBmZWF0cy7CoAoKCktVTkRBTElOScKgCgoKVGhlIEhpbmR1IFlvZ2lzLCBmb3Igd2hvbSB0aGUgYm9va3Mgd2hpY2ggaGF2ZSBjb21lIGRvd24gdG8gCnVzIHdlcmUgd3JpdHRlbiwgd2VyZSBub3QgcGFydGlj77+9dWxhcmx5IGludGVyZXN0ZWQgaW4gdGhlIHBoeXNpb2xvZ2ljYWwgYW5kIAphbmF0b21pY2FsIGZlYXR1cmVzIG9mIHRoZSBib2R5LCBidXQgd2VyZSBlbmdhZ2VkIGluIHByYWN0aXNpbmcgbWVkaXRhdGlvbiBhbmQgCmFyb3VzaW5nIGt1bmRhbGluaSBmb3IgdGhlIHB1cnBvc2Ugb2YgZWxldmF0aW5nIHRoZWlyIGNvbnNjaW91c25lc3Mgb3IgcmlzaW5nIHRvIApoaWdoZXIgcGxhbmVzLiBUaGlzIG1heSBiZSB0aGUgcmVhc29uIHdoeSBpbiB0aGUgU2Fuc2tyaXQgd29ya3MgbGl0dGxlIG9yIApub3RoaW5nIGlzIHNhaWQgYWJvdXQgdGhlIHN1cmZhY2UgY2hha3JhcywgYnV0IG11Y2ggYWJvdXQgdGhlIGNlbnRyZXMgaW4gdGhlIApzcGluZSBhbmQgdGhlIHRyYW5zaXQgb2Yga3VuZGFsaW5pIHRocm91Z2ggdGhlc2UuCgoKS3VuZGFsaW5pIGlzIGRlc2NyaWJlZCBhcyBhIGRldmkgb3IgZ29kZGVzcyBsdW1pbm91cyBhcyAKbGlnaHRuaW5nLCB3aG8gbGllcyBhc2xlZXAgaW4gdGhlIHJvb3QgY2hha3JhLCBjb2lsZWQgbGlrZSBhIHNlcnBlbnQgdGhyZWUgYW5kIGEgCmhhbGYgdGltZXMgcm91bmQgdGhlIHN2YXlhbWJodSBsaW5nYSB3aGljaCBpcyB0aGVyZSwgYW5kIGNsb3NpbmcgdGhlIAplbnRyYW5jZSB0byB0aGUgc3VzaHVtbmEgd2l0aCBoZXIgaGVhZC4gTm90aGluZyBpcyBzYWlkIGFzIHRvIHRoZSBvdXRlciBsYXllciBvZiAKdGhlIGZvcmNlIGJlaW5nIGFjdGl2ZSBpbiBhbGwgcGVyc29ucywgYnV0IHRoaXMgZmFjdCBpcyBpbmRpY2F0ZWQgaW4gdGhlIApzdGF0ZW1lbnQgdGhhdCBldmVuIGFzIHNoZSBzbGVlcHMgc2hlIO+/vW1haW50YWlucyBhbGwgYnJlYXRoaW5nIGNyZWF0dXJlc++/vS5b77+977+977+977+977+9XSAKQW5kIHNoZSBpcyBzcG9rZW4gb2YgYXMgdGhlIFNoYWJkYSBCcmFobWFuIGluIGh1bWFuIGJvZGllcy4gU2hhYmRhIAptZWFucyB3b3JkIG9yIHNvdW5kOyB3ZSBoYXZlIGhlcmUsIHRoZXJlZm9yZSwgYSByZWZlcmVuY2UgdG8gdGhlIFRoaXJkIEFzcGVjdCBvZiAKdGhlIExvZ29zLiBJbiB0aGUgcHJvY2VzcyBvZiBjcmVhdGlvbiBvZiB0aGUgd29ybGQgdGhpcyBzb3VuZCBpcyBzYWlkIHRvIGhhdmUgCmlzc3VlZCBpbiBmb3VyIHN0YWdlczsgcHJvYmFibHkgd2Ugc2hvdWxkIG5vdCBiZSBmYXIgd3JvbmcgaW4gYXNzb++/vWNpYXRpbmcgdGhlc2UgCndpdGggb3VyIFdlc3Rlcm4gY29uY2VwdGlvbnMgb2YgdGhlIHRocmVlIHN0YXRlcyBvZiBib2R5LCBzb3VsIGFuZCBzcGlyaXQsIGFuZCBhIApmb3VydGggd2hpY2ggaXMgdW5pb24gd2l0aCB0aGUgRGl2aW5lIG9yIEFsbC1zcGlyaXQuwqAKCgpUSEUgQVdBS0VOSU5HIE9GIApLVU5EQUxJTknCoAoKClRoZSBvYmplY3Qgb2YgdGhlIHlvZ2lzIGlzIHRvIGFyb3VzZSB0aGUgc2xlZXBpbmcgcGFydCBvZiB0aGUgCmt1bmRhbGluaSwgYW5kIHRoZW4gY2F1c2UgaGVyIHRvIHJpc2UgZ3JhZHVhbGx5IHVwIHRoZSBzdXNodW1uYSBjYW5hbC4gVmFyaW91cyAKbWV0aG9kcyBhcmUgcHJlc2NyaWJlZCBmb3IgdGhpcyBwdXJwb3NlLCBpbmNsdWRpbmcgdGhlIHVzZSBvZiB0aGUgd2lsbCwgcGVjdWxpYXIgCm1vZGVzIG9mIGJyZWF0aGluZywgbWFudHJhcywgYW5kIHZhcmlvdXMgcG9zdHVyZXMgYW5kIG1vdmVtZW50cy4gVGhlIFNoaXZhIApTYW1oaXRhIGRlc2NyaWJlcyB0ZW4gbXVkcmFzIHdoaWNoIGl0IGRlY2xhcmVzIHRvIGJlIHRoZSBiZXN0IGZvciAKdGhpcyBwdXJwb3NlLCBtb3N0IG9mIHdoaWNoIGludm9sdmUgYWxsIHRoZXNlIGVmZm9ydHMgYXQgdGhlIHNhbWUgdGltZS4gSW4gCndyaXRpbmcgb2YgdGhlIGVmZmVjdCBvZiBvbmUgb2YgdGhlc2UgbWV0aG9kcywgQXZhbG9uIGRlc2NyaWJlcyB0aGUgYXdha2VuaW5nIG9mIAp0aGUgaW5uZXIgbGF5ZXJzIG9mIGt1bmRhbGluaSBhcyBmb2xsb3dzOsKgCgoKVGhlIGhlYXQgaW4gdGhlIGJvZHkgdGhlbiBiZWNvbWVzIHZlcnkgcG93ZXJmdWwsIGFuZCAKa3VuZGFsaW5pLCBmZWVsaW5nIGl0LCBhd2FrZW5zIGZyb20gaGVyIHNsZWVwLCBqdXN0IGFzIGEgc2VycGVudCBzdHJ1Y2sgYnkgYSAKc3RpY2sgaGlzc2VzIGFuZCBzdHJhaWdodGVucyBpdHNlbGYuIFRoZW4gaXQgZW50ZXJzIHRoZSBTdXNodW1uYS5b77+977+977+977+977+9XcKgCgoKSXQgaXMgc2FpZCB0aGF0IGluIHNvbWUgY2FzZXMga3VuZGFsaW5pIGhhcyBiZWVuIGF3YWtlbmVkIG5vdCAKb25seSBieSB0aGUgd2lsbCwgYnV0IGFsc28gYnkgYW4gYWNjaWRlbnQgLSBieSBhIGJsb3cgb3IgYnkgcGh5c2ljYWwgcHJlc3N1cmUuIEkgCmhlYXJkIGFuIGV4YW1wbGUgb2YgdGhlIGtpbmQgaW4gQ2FuYWRhLiBBIGxhZHksIHdobyBrbmV3IG5vdGhpbmcgYXQgYWxsIG9mIHRoZXNlIAptYXR0ZXJzLCBmZWxsIGRvd24gdGhlIGNlbGxhciBzdGVwcyBpbiBoZXIgaG91c2UuIFNoZSBsYXkgZm9yIHNvbWUgdGltZSAKdW5jb25zY2lvdXMsIGFuZCB3aGVuIHNoZSBhd29rZSBzaGUgZm91bmQgaGVyc2VsZiBjbGFpcnZveWFudCwgYWJsZSB0byByZWFkIHRoZSAKdGhvdWdodHMgcGFzc2luZyBpbiBvdGhlciBwZW9wbGXvv71zIG1pbmRzLCBhbmQgdG8gc2VlIHdoYXQgd2FzIGdvaW5nIG9uIGluIGV2ZXJ5IApyb29tIGluIHRoZSBob3VzZTsgYW5kIHRoaXMgY2xhaXJ2b3lhbmNlIGhhcyByZW1haW5lZCBhIHBlcm1hbmVudCBwb3NzZXNzaW9uLiAKT25lIGFzc3VtZXMgdGhhdCBpbiB0aGlzIGNhc2UgaW4gZmFsbGluZyB0aGUgbGFkeSBtdXN0IGhhdmUgcmVjZWl2ZWQgYSBibG93IGF0IAp0aGUgYmFzZSBvZiB0aGUgc3BpbmUgZXhhY3RseSBpbiBzdWNoIGEgcG9zaXRpb24gYW5kIG9mIHN1Y2ggYSBuYXR1cmUgYXMgdG8gCnNob2NrIHRoZSBrdW5kYWxpbmkgaW50byBwYXJ0aWFsIGFjdGl2aXR5OyBvciBvZiBjb3Vyc2UgaXQgbWF5IGhhdmUgYmVlbiBzb21lIApvdGhlciBjZW50cmUgdGhhdCB3YXMgdGh1cyBhcnRpZmljaWFsbHkgc3RpbXVsYXRlZC4KCgpTb21ldGltZXMgdGhlIGJvb2tzIHJlY29tbWVuZCBtZWRpdGF0aW9uIHVwb24gdGhlIGNoYWtyYXMgCndpdGhvdXQgdGhlIHByaW9yIGF3YWtlbmluZyBvZiBrdW5kYWxpbmkuIFRoaXMgYXBwZWFycyB0byBiZSB0aGUgY2FzZSBpbiB0aGUgCmZvbGxvd2luZyB2ZXJzZXMgZnJvbSBUaGUgR2FydWRhIFB1cmFuYTrCoAoKCk11bGFkaGFyYSwgU3ZhZGhpc2h0aGFuYSwgTWFuaXB1cmFrYSwgQW5haGF0YW0sIFZpc2h1ZGRoaSBhbmQgCmFsc28gQWpuYSBhcmUgc3Bva2VuIG9mIGFzIHRoZSBzaXggY2hha3Jhcy4KCgpPbmUgc2hvdWxkIG1lZGl0YXRlLCBpbiBvcmRlciwgaW4gdGhlIGNoYWtyYXMsIG9uIEdhbmVzaGEsIG9uIApWaWRoaSAoQnJhaG1hKSwgb24gVmlzaG51LCBvbiBTaGl2YSwgb24gSml2YSwgb24gR3VydSwgYW5kIG9uIFBhcmFicmFobWFuLCAKYWxsLXBlcnZhZGluZy4KCgpIYXZpbmcgd29yc2hpcHBlZCBtZW50YWxseSBpbiBhbGwgdGhlIGNoYWtyYXMsIHdpdGggCnVu77+9d2F2ZXJpbmcgbWluZCwgaGUgc2hvdWxkIHJlcGVhdCB0aGUgQWphcGEtZ2F5YXRyaSBhY2NvcmRpbmcgdG8gdGhlIAppbnN0cnVjdGlvbnMgb2YgdGhlIFRlYWNoZXIuCgoKSGUgc2hvdWxkIG1lZGl0YXRlIGluIHRoZSBSYW5kaHJhLCB3aXRoIHRoZSB0aG91c2FuZC3vv71wZXRhbGxlZCAKbG90dXMgaW52ZXJ0ZWQsIHVwb24gdGhlIGJsZXNzZWQgVGVhY2hlciB3aXRoaW4gdGhlIEhhbXNhLCB3aG9zZSBsb3R1cy1oYW5kIApmcmVlcyBmcm9tIGZlYXIuCgoKSGUgc2hvdWxkIHJlZ2FyZCBoaXMgYm9keSBhcyBiZWluZyB3YXNoZWQgaW4gdGhlIGZsb3cgb2YgCm5lY3RhciBmcm9tIEhpcyBmZWV0LiBIYXZpbmcgd29yc2hpcHBlZCBpbiB0aGUgZml2ZWZvbGQgd2F5IGhlIHNob3VsZCBwcm9zdHJhdGUsIApzaWduaW5nIEhpcyBwcmFpc2UuCgoKVGhlbiBoZSBzaG91bGQgbWVkaXRhdGUgb24gdGhlIGt1bmRhbGluaSBhcyBtb3ZpbmcgdXDvv713YXJkcyAKYW5kIGRvd253YXJkcywgYXMgbWFraW5nIGEgdG91ciBvZiB0aGUgc2l4IGNoYWtyYXMsIHBsYWNlZCBpbiB0aHJlZSBhbmQgYSBoYWxmIApjb2lscy4KCgpUaGVuIGhlIHNob3VsZCBtZWRpdGF0ZSBvbiB0aGUgcGxhY2UgY2FsbGVkIHN1c2h1bW5hLCB3aGljaCAKZ29lcyBvdXQgb2YgdGhlIFJhbmRocmE7IHRoZXJlYnkgaGUgZ29lcyB0byB0aGUgaGlnaGVzdCBzdGF0ZSBvZiBWaXNobnUuW++/ve+/ve+/ve+/ve+/vV3CoAoKClRIRSBBU0NFTlQgT0YgS1VOREFMSU5JwqAKCgpUaGUgYm9va3MgaGludCBhdCwgcmF0aGVyIHRoYW4gZXhwbGFpbiwgd2hhdCBoYXBwZW5zIHdoZW4gCmt1bmRhbGluaSByaXNlcyB1cCB0aGUgY2hhbm5lbCB0aHJvdWdoIHRoZSBzdXNodW1uYS4gVGhleSByZWZlciB0byB0aGUgc3BpbmUgYXMgCk1lcnVkYW5kYSwgdGhlIHJvZCBvZiBNZXJ1LCDvv710aGUgY2VudHJhbCBheGlzIG9mIGNyZWF0aW9u77+9LCBwcmVzdW1hYmx5IG9mIHRoZSAKYm9keS4gSW4gdGhhdCwgdGhleSBzYXksIHRoZXJlIGlzIHRoZSBjaGFubmVsIGNhbGxlZCBzdXNodW1uYSwgd2l0aGluIHRoYXQgCmFub3RoZXIsIGNhbGxlZCBWYWpyaW5pLCBhbmQgd2l0aGluIHRoYXQgYWdhaW4gYSB0aGlyZCBjYWxsZWQgQ2hpdHJpbmksIHdoaWNoIGlzIArvv71hcyBmaW5lIGFzIGEgc3BpZGVy77+9cyB0aHJlYWTvv70uIFVwb24gdGhhdCBhcmUgdGhyZWFkZWQgdGhlIGNoYWtyYXMsIO+/vWxpa2Uga25vdHMgCm9uIGEgYmFtYm9vIHJvZO+/vS4KCgpLdW5kYWxpbmkgcmlzZXMgdXAgQ2hpdHJpbmkgbGl0dGxlIGJ5IGxpdHRsZSBhcyB0aGUgeW9naSB1c2VzIApoaXMgd2lsbCBpbiBtZWRpdGF0aW9uLiBJbiBvbmUgZWZmb3J0IHNoZSBtYXkgbm90IGdvIHZlcnkgZmFyLCBidXQgaW4gdGhlIG5leHQgCnNoZSB3aWxsIGdvIGEgbGl0dGxlIGZhcnRoZXIsIGFuZCBzbyBvbi4gV2hlbiBzaGUgY29tZXMgdG8gb25lIG9mIHRoZSBjaGFrcmFzIG9yIApsb3R1c2VzIHNoZSBwaWVyY2VzIGl0LCBhbmQgdGhlIGZsb3dlciwgd2hpY2ggd2FzIHR1cm5lZCBkb3dud2FyZHMsIG5vdyB0dXJucyAKdXB3YXJkcy4gV2hlbiB0aGUgbWVkaXRhdGlvbiBpcyBvdmVyLCB0aGUgY2FuZGlkYXRlIGxlYWRzIEt1bmRhbGluaSBiYWNrIGFnYWluIApieSB0aGUgc2FtZSBwYXRoIGludG8gdGhlIE11bGFkaGFyYTsgYnV0IGluIHNvbWUgY2FzZXMgc2hlIGlzIGJyb3VnaHQgYmFjayBvbmx5IAphcyBmYXIgYXMgdGhlIGhlYXJ0IGNoYWtyYSwgYW5kIHRoZXJlIHNoZSBlbnRlcnMgd2hhdCBpcyBjYWxsZWQgaGVyIGNoYW1iZXIuWyoqKioqKl0gClNldmVyYWwgb2YgdGhlIGJvb2tzIHNheSB0aGF0IGt1bmRhbGluaSByZXNpZGVzIGluIHRoZSBuYXZlbCBjaGFrcmE7IHdlIGhhdmUgCm5ldmVyIHNlZW4gaXQgdGhlcmUgaW4gb3JkaW5hcnkgcGVvcGxlLCBidXQgdGhpcyBzdGF0ZW1lbnQgbWF5IHJlZmVyIHRvIHRob3NlIAp3aG8gaGF2ZSByb3VzZWQgaXQgYmVmb3JlLCBhbmQgc28gaGF2ZSBhIHNvcnQgb2YgZGVwb3NpdCBvZiB0aGUgc2VycGVudC1maXJlIGluIAp0aGUgY2VudHJlLgoKCkl0IGlzIGV4cGxhaW5lZCB0aGF0IGFzIGt1bmRhbGluaSBlbnRlcnMgYW5kIGxlYXZlcyBlYWNoIApjaGFrcmEgaW4gdGhlIGNvdXJzZSBvZiBoZXIgYXNjZW50IGluIHRoZSBhYm92Ze+/vW1lbnRpb25lZCB2YXJpZXR5IG9mIG1lZGl0YXRpb25zIApzaGUgd2l0aGRyYXdzIGludG8gbGF0ZW5jeSAoaGVuY2UgdGhlIHRlcm0gbGF5YSkgdGhlIHBzeWNob2xvZ2ljYWwgCmZ1bmPvv710aW9ucyBvZiB0aGF0IGNlbnRyZS4gSW4gZWFjaCBjaGFrcmEgd2hpY2ggc2hlIGVudGVycyB0aGVyZSBpcyBhIGdyZWF0IAplbmhhbmNlbWVudCBvZiBsaWZlLCBidXQgYXMgaGVyIG9iamVjdCBpcyB0byByZWFjaCB0aGUgaGlnaGVzdCBzaGUgcHJvY2VlZHMgCnVwd2FyZHMsIHVudGlsIHNoZSByZWFjaGVzIHRoZSB0b3Btb3N0IGNlbnRyZSwgdGhlIFNhaGFzcmFyYSBsb3R1cy4gSGVyZSwgYXMgdGhlIApzeW1ib2xvZ3kgaGFzIGl0LCBzaGUgZW5qb3lzIHRoZSBibGlzcyBvZiB1bmlvbiB3aXRoIGhlciBsb3JkLCBQYXJhbWFzaGl2YTsgYW5kIAphcyBzaGUgcmV0dXJucyBvbiBoZXIgcGF0aCBzaGUgZ2l2ZXMgYmFjayB0byBlYWNoIGNoYWtyYSBpdHMgc3BlY2lmaWMgZmFjdWx0aWVzLCAKYnV0IG11Y2ggZW5oYW5jZWQuCgoKQWxsIHRoaXMgZGVzY3JpYmVzIGEgcHJvY2VzcyBvZiBwYXJ0aWFsIHRyYW5jZSBpbnRvIHdoaWNoIG9uZSAKd2hvIG1lZGl0YXRlcyBkZWVwbHkgbmVjZXNzYXJpbHkgcGFzc2VzLCBmb3IgaW4gY29uY2VudHJhdGluZyBhbGwgb3VyIGF0dGVudGlvbiAKdXBvbiBzb21lIGxvZnR5IHN1YmplY3Qgd2UgY2Vhc2UgZm9yIHRoZSB0aW1lIGJlaW5nIHRvIHBheSBoZWVkIHRvIHRoZSB2YXJpb3VzIApzb3VuZHMgYW5kIHNpZ2h0cyB3aGljaCBzdXJyb3VuZCBhbmQgcGxheSB1cG9uIHVzLiBBdmFsb24gbWVudGlvbnMgdGhhdCBpdCAKZ2VuZXJhbGx5IHRha2VzIHllYXJzIGZyb20gdGhlIGNvbW1lbmNlbWVudCBvZiB0aGUgcHJhY3RpY2UgdG8gbGVhZCB0aGUgCmt1bmRhbGluaSBpbnRvIHRoZSBTYWhhc3JhcmEsIHRob3VnaCBpbiBleGNlcO+/vXRpb25hbCBjYXNlcyBpdCBjYW4gYmUgZG9uZSBpbiBhIApzaG9ydCB0aW1lLiBXaXRoIHByYWN0aWNlIGNvbWVzIGZhY2lsaXR5LCBzbyB0aGF0IGFuIGV4cGVydCwgaXQgaXMgc2FpZCwgY2FuIApyYWlzZSBhbmQgbG93ZXIgdGhlIFNoYWt0aSB3aXRoaW4gYW4gaG91ciwgdGhvdWdoIGhlIGlzIG9mIGNvdXJzZSBwZXJmZWN0bHkgYXQgCmxpYmVydHkgdG8gc3RheSBhcyBsb25nIGFzIGhlIHdpbGwgaW4gdGhlIGNyb3duIGNlbnRyZS4KCgpTb21lIHdyaXRlcnMgc2F5IHRoYXQgYXMga3VuZGFsaW5pIHJpc2VzIGluIHRoZSBib2R5LCB0aGUgCnBvcnRpb24gYmV5b25kIHdoaWNoIHNoZSBnb2VzIGdyb3dzIGNvbGQuIE5vIGRvdWJ0IHRoaXMgaXMgdGhlIGNhc2UgaW4gdGhvc2UgCnNwZWNpYWwgcHJhY3RpY2VzIGluIHdoaWNoIGEgeW9naSBnb2VzIGludG8gdHJhbmNlIGZvciBhIGxvbmcgcGVyaW9kLCBidXQgbm90IGluIAp0aGUgdXN1YWwgZW1wbG95bWVudCBvZiB0aGlzIHBvd2VyLiBJbiBUaGUgU2VjcmV0IERvY3RyaW5lIE1hZGFtZSAKQmxhdmF0c2t5IGNpdGVzIHRoZSBjYXNlIG9mIGEgeW9naSwgd2hvIHdhcyBmb3VuZCBvbiBhbiBpc2xhbmQgbmVhciBDYWxjdXR0YSwgCnJvdW5kIHdob3NlIGxpbWJzIHRoZSByb290cyBvZiB0cmVlcyBoYWQgZ3Jvd24uIFNoZSBhZGRzIHRoYXQgaGUgd2FzIGN1dCBvdXQsIAphbmQgaW4gdGhlIGVuZGVhdm91ciB0byBhd2FrZW4gaGltIHNvIG1hbnkgb3V0cmFnZXMgd2VyZSBpbmZsaWN0ZWQgb24gaGlzIGJvZHkgCnRoYXQgaGUgZGllZC4gU2hlIG1lbnRpb25zIGFsc28gYSB5b2dpIG5lYXIgQWxsYWhhYmFkIHdobyAtIGZvciBwdXJwb3NlcyBubyAKZG91YnQgd2VsbCB1bmRlcu+/vXN0b29kIGJ5IGhpbXNlbGYgLSByZW1haW5lZCBzaXR0aW5nIHVwb24gYSBzdG9uZSBmb3IgCmZpZnR5LXRocmVlIHllYXJzLiBIaXMgY2hlbGFzIG9yIGRpc2NpcGxlcyB3YXNoZWQgaGltIGluIHRoZSByaXZlciBldmVyeSBuaWdodCAKYW5kIHRoZW4gbGlmdGVkIGhpbSBiYWNrLCBhbmQgZHVyaW5nIHRoZSBkYXkgaGlzIGNvbnNjaW91c25lc3Mgc29tZXRpbWVzIApyZXR1cm5lZCB0byB0aGUgcGh5c2ljYWwgd29ybGQsIGFuZCBoZSB3b3VsZCB0aGVuIHRhbGsgYW5kIHRlYWNoLlvvv73vv73vv73vv73vv73vv71dwqAKCgpUSEUgR09BTCBPRiBLVU5EQUxJTknCoAoKClRoZSBjb25jbHVkaW5nIHZlcnNlcyBvZiB0aGUgU2hhdGNoYWtyYSBOaXJ1cGFuYSAKYmVhdXRpZnVsbHkgZGVzY3JpYmUgdGhlIGNvbmNsdXNpb24gb2YgdGhlIHRvdXIgb2Yga3VuZGFsaW5pLCBhcyBmb2xsb3dzOsKgCgoKVGhlIERldmkgd2hvIGlzIFNodWRkaGEtc2F0dHZhIHBpZXJjZXMgdGhlIHRocmVlIExpbmdhcywgYW5kLCAKaGF2aW5nIHJlYWNoZWQgYWxsIHRoZSBsb3R1c2VzIHdoaWNoIGFyZSBrbm93biBhcyB0aGUgQnJhaG1h77+9bmFkaSBsb3R1c2VzLCAKc2hpbmVzIHRoZXJlIGluIHRoZSBmdWxsbmVzcyBvZiBoZXIgbHVzdHJlLiBUaGVyZWFmdGVyLCBpbiBoZXIgc3VidGxlIHN0YXRlLCAKbHVzdHJvdXMgbGlrZSBsaWdodG5pbmcgYW5kIGZpbmUgbGlrZSB0aGUgbG90dXMgZmlicmUuIFNoZSBnb2VzIHRvIHRoZSBnbGVhbWluZyAKZmxhbWUtbGlrZSBTaGl2YSwgdGhlIHN1cHJlbWUgQmxpc3MsIGFuZCBvZiBhIHN1ZGRlbiBwcm9kdWNlcyB0aGUgYmxpc3Mgb2YgCkxpYmVyYXRpb24uCgoKVGhlIGJlYXV0aWZ1bCBLdW5kYWxpIGRyaW5rcyB0aGUgZXhjZWxsZW50IHJlZCBuZWN0YXIgaXNzdWluZyAKZnJvbSBQYXJhIFNoaXZhLCBhbmQgcmV0dXJucyBmcm9tIHRoZXJlLCB3aGVyZSBzaGluZXMgRXRlcm5hbCBhbmQgVHJhbnNjZW5kZW50IApCbGlzcyBpbiBhbGwgaXRzIGdsb3J5LCBhbG9uZyB0aGUgcGF0aCBvZiBLdWxhLCBhbmQgZW50ZXJzIHRoZSBNdWxhZGhhcmEuIFRoZSAKeW9naSB3aG8gaGFzIGdhaW5lZCBzdGVhZGluZXNzIG9mIG1pbmQgbWFrZXMgb2ZmZXJpbmcgKFRhcnBhbmEpIHRvIHRoZSAKSXNodGEtZGV2YXRhIGFuZCB0aGUgRGV2YXRhcyBpbiB0aGUgc2l4IGNoYWtyYXMsIERha2luaSBhbmQgb3RoZXJzLCB3aXRoIHRoYXQgCnN0cmVhbSBvZiBjZWxlc3RpYWwgbmVjdGFyIHdoaWNoIGlzIGluIHRoZSB2ZXNzZWwgb2YgQnJhaG1hbmRhLCB0aGUga25vd2xlZGdlIAp3aGVyZW9mIGhlIGhhcyBnYWluZWQgdGhyb3VnaCB0aGUgdHJhZGl0aW9uIG9mIHRoZSBHdXJ1cy4KCgpJZiB0aGUgeW9naSB3aG8gaXMgZGV2b3RlZCB0byB0aGUgTG90dXMgRmVldCBvZiBoaXMgR3VydSwgCndpdGggaGVhcnQgdW5wZXJ0dXJiZWQgYW5kIGNvbmNlbnRyYXRlZCBtaW5kLCByZWFkcyB0aGlzIHdvcmssIHdoaWNoIGlzIHRoZSAKc3VwcmVtZSBzb3VyY2Ugb2YgdGhlIGtub3dsZWRnZSBvZiBMaWJlcmF0aW9uIGFuZCBpcyBmYXVsdGxlc3MsIHB1cmUgYW5kIG1vc3QgCnNlY3JldCwgdGhlbiBvZiBhIHN1cmV0eSBoaXMgbWluZCBkYW5jZXMgYXQgdGhlIEZlZXQgb2YgaGlzIElzaHRhLWRldmF0YS5b77+977+977+977+977+977+9XcKgCgoKQ09OQ0xVU0lPTsKgCgoKTGlrZSBvdXJzZWx2ZXMsIHRoZSBIaW5kdXMgaG9sZCB0aGF0IHRoZSByZXN1bHRzIG9mIExheWEgWW9nYSAKY2FuIGJlIGF0dGFpbmVkIGJ5IHRoZSBtZXRob2RzIG9mIGFsbCB0aGUgc3lzdGVtcyBvZiB5b2dhLiBJbiB0aGUgc2V2ZW4gc2Nob29scyAKb2YgSW5kaWEsIGFuZCBhbW9uZyB0aGUgc3R1ZGVudHMgaW4gdGhlIFdlc3QsIGFsbCB3aG8gdW5kZXLvv71zdGFuZCBhcmlnaHQgYXJlIAphaW1pbmcgYXQgdGhlIGhpZ2hlc3QgZ29hbCBvZiBodW1hbiBlbmRlYXZvdXIsIGF0IHRoYXQgbGliZXJ0eSB3aGljaCBpcyBoaWdoZXIgCnRoYW4gbGliZXJh77+9dGlvbiwgYmVjYXVzZSBpdCBpbmNsdWRlcyBub3Qgb25seSB1bmlvbiB3aXRoIEdvZCBpbsKgIGhpZ2ggcmVhbG1zLCAKYmV5b25kIGVhcnRobHkgbWFuaWZlc3RhdGlvbiwgYnV0IGFsc28gdGhvc2UgcG93ZXJzIG9uIGVhY2ggcGxhbmUgd2hpY2ggbWFrZSB0aGUgCm1hbiBhbiBBZGhpa2FyaSBQdXJ1c2hhLCBhbiBvZmZpY2UtYmVhcmVyIG9yIHdvcmtlciBpbiB0aGUgc2VydmljZSBvZiB0aGUgCkRpdmluZTsgaW4gdGhlIHdvcmsgb2YgbGlmdGluZyB0aGUgdG9pbGluZyBtaWxsaW9ucyBvZiBodW1hbml0eSB0b3dhcmRzIHRoZSAKZ2xvcnkgYW5kIGhhcHBpbmVzcyB3aGljaCBhd2FpdHMgdXMgYWxsLsKgCgoKT00sIEFJTSwgS0xJTSwgU1RSSU0KCgoqClRoZSBUaGVvc29waGljYWwgUHVibGlzaGluZyBIb3VzZS7CoAoKClsqXQpOb3QgdG8gYmUgY29uZnVzZWQgd2l0aCDvv71hZXRoZXLvv70gd2hpY2ggc29tZSBjb25zaWRlciAKdG8gYmUgdGhlIG1lZGl1bSBmb3IgZWxlY3RybyBtYWduZXRpYyB3YXZlcy4gKEVkLikKCgpb77+9XQpJbmRpdmlkdWFsaXR5LCBub3QgdG8gYmUgY29uZnVzZWQgd2l0aCB0aGUgdXNlIG9mIHRoZSAKdGVybSBpbiBwc3ljaG/vv71sb2d5LiAoRWQuKcKgCgoKW++/vV0gVGhlIApUaGVvc29waGljYWwgUHVibGlzaGluZyBIb3VzZS4KCgoqClRoZSBzcGxlZW4gY2hha3JhIGlzIG5vdCBpbmRpY2F0ZWQgaW4gdGhlIEluZGlhbiAKYm9va3M7IGl0cyBwbGFjZSBpcyB0YWtlbiBieSBhIGNlbnRyZSBjYWxsZWQgdGhlIFN2YWRoaXNodGhhbmEsIApzaXR1YXRlZCBpbiB0aGUgbmVpZ2hib3VyaG9vZCBvZiB0aGUgZ2VuZXJhdGl2ZSBvcmdhbnMsIHRvIHdoaWNoIHRoZSAKc2FtZSBzaXggcGV0YWxzIGFyZSBhc3NpZ25lZC4gRnJvbSBvdXIgcG9pbnQgb2YgdmlldyB0aGUgYXJvdXNpbmcgb2YgCnN1Y2ggYSBjZW50cmUgd291bGQgYmUgcmVnYXJkZWQgYXMgYSBtaXNmb3J0dW5lLCBhcyB0aGVyZSBhcmUgc2VyaW91cyAKZGFuZ2VycyBjb25uZWN0ZWQgd2l0aCBpdC4gSW4gdGhlIEVneXB0aWFuIHNjaGVtZSBvZiBkZXZlbG9w77+9bWVudCAKZWxhYm9yYXRlIHByZWNhdXRpb25zIHdlcmUgdGFrZW4gdG8gcHJldmVudCBhbnkgc3VjaCBhd2FrZW5pbmcuIChTZWUgClRoZSBIaWRkZW4gTGlmZSBpaWkgRnJlZW1hc29ucnkuKQoKClvvv71dIApUaGUgU2VjcmV0IERvY3RyaW5lLApGaWZ0aCBBZHlhciBFZGl0aW9uLCBWb2wuIFYsIHAuIDQ4MC4KCgpbKipdIApUaGUgU2VjcmV0IERvY3RyaW5lLCAKRmlmdGggQWR5YXIgRWRpdGlvbiwgVm9sLiBWLCBwLiA1MTAuCgoKW++/ve+/vV0gCkliaWQuLCBwLiA1MjAuCgoKW++/ve+/vV0gClRoZSBIaWRkZW4gTGlmZSBpbiBGcmVlbWFzb25yeS4KCgpb77+977+9XQpUaGUgdGVybSDvv71hdG9t77+9IHVzZWQgaGVyZSBhbmQgdGhyb3VnaG91dCB0aGUgCnJlbWFpbmRlciBvZiB0aGUgYm9vayByZWZlcnMgbm90IHRvIGEgY2hlbWljYWwgYXRvbSBidXQgdG8gdGhlIGJhc2ljIAp0eXBlIG9mIG1hdHRlciBpbiB0aGUgaGlnaGVzdCBzdWItcGxhbmUgb2YgZWFjaCBwbGFuZSBvZiBuYXR1cmUuIApTaW1pbGFybHksIO+/vW1vbGVjdWxl77+9IHJlZmVycyB0byBhIGdyb3VwaW5nIG9mIHN1Y2ggYXRvbXMgaW4gYSB3YXkgCnNpbWlsYXIgdG8gdGhhdCBieSB3aGljaCBjaGVtaWNhbCBhdG9tcyBmb3JtIGNoZW1pY2FsIG1vbGVjdWxlcy4gKEVkLikKCgpbKioqXSAKT3AuIGNpdC4sIChTZWNvbmQgCkVkaXRpb24pIHAuIDI1OyAoVGhpcmQgRWRpdGlvbiwgMTk1MSkgcC4gMjUuCgoKW++/ve+/ve+/vV0gCk9wLiBjaXQuLCBwcC4gMTA0LTUuCgoKW++/ve+/ve+/vV0gCk9wLiBjaXQuLCB2di4gNjEtMi4gClNhY3JlZCBCb29rcyBvZiB0aGUgSGluZHVzIFNlcmllcy4gVHJhbnMuIFNyaXMgQ2hhbmRyYSBWaWR5YXJuYXZhLgoKClvvv73vv73vv71dIApHYXJ1ZGEgUHVyYW5hLCBYViwgCjEwLTMuIFNhY3JlZCBCb29rcyBvZiB0aGUgSGluZHVzIFNlcmllcy4gVHJhbnMuIFdvb2QuCgoKWyoqKipdIApPcC4gY2l0LiwgcC4gMjUyLgoKClvvv73vv73vv73vv71dIApUaGUgU2VycGVudCBQb3dlciwgYnkgCkFydGh1ciBBdmFsb24sIDJuZCBlZGl0aW9uLCBUZXh0LCBwLiA2NC4KCgpb77+977+977+977+9XSAKT3AsIGNpdC4sIHAuIDIsIGV0IApzZXEsIG91dCBvZiBwcmludC4KCgpb77+977+977+977+9XSAKT3AuIGNpdC4sIFYxLCAyLTguIApUcmFucy4gU3JpcyBDaGFuZHJhIFZpZHlhcm5hdmEuCgoKWyoqKioqXSAKVGhlIFNoaXZhIFNhbWhpdGEsIFYsIAo4Ni04OC4KCgpb77+977+977+977+977+9XSAKVGhlIFNlcnBlbnQgUG93ZXIuCgoKW++/ve+/ve+/ve+/ve+/vV0gClRoZSBTZXJwZW50IFBvd2VyLgoKClvvv73vv73vv73vv73vv71dIApPcC4gY2l0LiwgWFYsIDcyLCA3NiwgCjgzLTg3LgoKClsqKioqKipdClNlZSBUaGUgVm9pY2Ugb2YgdGhlIFNpbGVuY2UsIEZyYWdtZW50IDEuCgoKW++/ve+/ve+/ve+/ve+/ve+/vV0gCk9wLiBjaXQuLCBWb2wuIFYsIHAuIAo1NDQuCgoKW++/ve+/ve+/ve+/ve+/ve+/vV0gCk9wLiBjaXQuLCB2di4gNTEsIDUzLCAKNTUuCgoKwqAKCgrCoENvcHlyaWdodCAK77+9IAoyMDE2IGJ5IEFuYW5kIEdob2xhcC4gQWxsIHJpZ2h0cyByZXNlcnZlZC7CoFRlcm1zIApvZsKgIFVzZSBvZiB0aGlzIHdlYi1zaXRl
sabato 1 gennaio 2000
[AL CORPUS] The Chakras [1/1]
Iscriviti a:
Commenti sul post (Atom)
[AL CORPUS] Occult Chemistry [2/2]
VGhlc2UgdW5pdHMgYXJlIGFsbCBhbGlrZSwgc3BoZXJpY2FsIGFuZCBhYnNvbHV0ZWx5IHNpbXBsZSBpbiAKY29uc3RydWN0aW9uLiBUaG91Z2ggdGhleSBhcmUgdGhlIGJhc2lzIG9m...
-
VGhlc2UgdW5pdHMgYXJlIGFsbCBhbGlrZSwgc3BoZXJpY2FsIGFuZCBhYnNvbHV0ZWx5IHNpbXBsZSBpbiAKY29uc3RydWN0aW9uLiBUaG91Z2ggdGhleSBhcmUgdGhlIGJhc2lzIG9m...
-
XFwiXiAKCgpzICwgCgoKLl4gCgoKT0NDVUxUIENIRU1JU1RSWSAKCgpDbGFpcnZveWFudCBPYnNlcnZhdGlvbnMgb24gdGhlIApDaGVtaWNhbCBFbGVtZW50cyAKCgpCWSAKCgpBTk5J...
-
VEhPVUdIVC1GT1JNUyAKCgpCWSAKCkFOTklFIEJFU0FOVCAKCkFORCAKCkMuIFcuIExFQUQgQkVBVEVSIAoKCldJVEggRklGVFktRUlHSFQgSUxMVVNUUkFUSU9OUyAKCgpMT05ET04g...
Nessun commento:
Posta un commento