VGhlb3NvcGh5IDogSGlkZGVuIFNpZGUgb2YgVGhpbmdzIGJ5IEMuVy5MZWFkYmVhdGVyIDogOgoKClRoZW9zb3BoecKgwqAKCgrCoMKgSG9tZcKgwqDCoAoKCk91ciBGYWNlYm9vayBHcm91cCAKCgpUaGUgSGlkZGVuIFNpZGUgb2YgVGhpbmdzCgoKQlkgCgoKQy4gVy4gTGVhZGJlYXRlcgoKClRIRSBUSEVPU09QSElDQUwgUFVCTElTSElORyBIT1VTRQpBIERZQVIsIE1BRFJBUyAyMCwgSU5ESUEKCgpGT1JFV09SRCAKCgpUSElTCmJvb2sgaGFzIGJlZW4gaW4gY29udGVtcGxhdGlvbiwgYW5kIGV2ZW4gaW4gcHJvY2VzcyBvZiBjb25zdHJ1Y3Rpb24sIGZvciB0aGUKbGFzdCB0ZW4gb3IgdHdlbHZlIHllYXJzLCBidXQgb25seSBub3cgaGFzIGl0IGJlZW4gZm91bmQgcG9zc2libGUgdG8gcHVibGlzaAppdC4gSXQgaGFzIGxvc3Qgbm90aGluZyBieSB0aGUgZGVsYXksIGZvciBhIHN0dWRlbnQgb2YgdGhlIG9jY3VsdCBuZXZlciBjZWFzZXMKdG8gbGVhcm4sIGFuZCBJIGtub3cgYSBnb29kIGRlYWwgbW9yZSBpbiB2YXJpb3VzIHdheXMgbm93IHRoYW4gSSBkaWQgdHdlbHZlCnllYXJzIGFnbywgZXZlbiB0aG91Z2ggSSBzZWUgc3RpbGwgbW9yZSBjbGVhcmx5IHRoYW4gZXZlciB3aGF0IGFuIGluZmluaXR5IG9mCmZ1cnRoZXIga25vd2xlZGdlIHN0cmV0Y2hlcyBiZWZvcmUgdXMgZm9yIG91ciBhY3F1aXJpbmcuIAoKCk11Y2ggb2YKd2hhdCBpcyB3cml0dGVuIGhlcmUgaGFzIGFwcGVhcmVkIGluIHRoZSBmb3JtIG9mIGFydGljbGVzIGluIFRoZQpUaGVvc29waGlzdCBhbmQgZWxzZXdoZXJlIDsgYnV0IGFsbCBoYXMgYmVlbiByZXZpc2VkLCBhbmQgY29uc2lkZXJhYmxlCmFkZGl0aW9ucyBoYXZlIGJlZW4gbWFkZS4gSSB0cnVzdCB0aGF0IGl0IG1heSBoZWxwIHNvbWUgYnJvdGhlcnMgdG8gcmVhbGlzZSB0aGUKaW1wb3J0YW5jZSBvZiB0aGF0IGZhciBsYXJnZXIgcGFydCBvZiBsaWZlIHdoaWNoIGlzIGJleW9uZCBvdXIgcGh5c2ljYWwgc2lnaHQKLS0gdG8gdW5kZXJzdGFuZCB0aGF0LCBhcyB0aGUgTG9yZCBCdWRkaGEgSGltc2VsZiBoYXMgdGF1Z2h0IHVzOiAKCgpUaGUKdW5zZWVuIHRoaW5ncyBhcmUgbW9yZS4gCgoKQy4gVy4KTEVBREJFQVRFUiAKCgpDT05URU5UUyAKCgpGSVJTVCBTRUNUSU9OIAoKCklOVFJPRFVDVE9SWSAKCgpDSEFQVEVSIEkgCgoKT0NDVUxUSVNNIAoKCkNIQVBURVIgSUkgCgoKVEhFIFdPUkxEIEFTIEEgV0hPTEUgCgoKQSBXaWRlciBPdXRsb29rLiBUaGUgRm91cnRoIERpbWVuc2lvbi4gClRoZSBIaWdoZXIgV29ybGQuIAoKVGhlIFB1cnBvc2Ugb2YgTGlmZcKgIAoKCsKgCgoKU0VDT05EIFNFQ1RJT04gCgoKSE9XIFdFIEFSRSBJTkZMVUVOQ0VEIAoKCkNIQVBURVIgSUlJIAoKCkJZIFBMQU5FVFMgCgoKUmFkaWF0aW9ucy4gVGhlIERlaXR5IG9mIHRoZSBTb2xhciAKU3lzdGVtLiBEaWZmZXJlbnQgVHlwZXMgb2YgTWF0dGVyLiAKClRoZSBMaXZpbmcgQ2VudHJlcy4gVGhlaXIgSW5mbHVlbmNlLiAKTGliZXJ0eSBvZiBBY3Rpb24uIAoKCkNIQVBURVIgSVYgCgoKQlkgVEhFIFNVTiAKCgpUaGUgSGVhdCBvZiB0aGUgU3VuLiBUaGUgV2lsbG93LUxlYXZlcy4gClZpdGFsaXR5LiBUaGUgVml0YWxpdHkgR2xvYnVsZS4gCgpUaGUgQWJzb3JwdGlvbiBvZiBWaXRhbGl0eS4gVml0YWxpdHkgCmFuZCBIZWFsdGguIFZpdGFsaXR5IG5vdCBNYWduZXRpc20gCgoKQ0hBUFRFUiBWIAoKCkJZIE5BVFVSQUwgU1VSUk9VTkRJTkdTIAoKClRoZSBXZWF0aGVyLiBSb2Nrcy4gVHJlZXMuIFRoZSBTZXZlbiAKVHlwZXMuIEFuaW1hbHMuIEh1bWFuIEJlaW5ncy4gVHJhdmVsIAoKCkNIQVBURVIgVkkgCgoKQlkgTkFUVVJFLVNQSVJJVFMgCgoKQW4gRXZvbHV0aW9uIEFwYXJ0LiBMaW5lcyBvZiBFdm9sdXRpb24uIApPdmVybGFwcGluZy4gRmFpcmllcy4gTmF0aW9uYWwgVHlwZXMuIAoKT24gYSBTYWNyZWQgTW91bnRhaW4gaW4gSXJlbGFuZC4gRmFpcnkgCkxpZmUgYW5kIERlYXRoLiBUaGVpciBQbGVhc3VyZXMuIFRoZSAKClJvbWFuY2VzIG9mIEZhaXJ5bGFuZC4gVGhlaXIgQXR0aXR1ZGUgCnRvd2FyZHMgTWFuLiBHbGFtb3VyLiBJbnN0YW5jZXMgb2YgCgpGcmllbmRzaGlwLiBXYXRlci1TcGlyaXRzLiBGcmVzaHdhdGVyIApGYWlyaWVzLiBTeWxwaHMuIFRoZWlyIEFtdXNlbWVudHMuIAoKQW4gQWJub3JtYWwgRGV2ZWxvcG1lbnQuIFRoZSBBZHZhbnRhZ2VzIApvZiBTdHVkeWluZyBUaGVtIAoKCkNIQVBURVIgVklJIAoKCkJZIENFTlRSRVMgT0YgTUFHTkVUSVNNCgoKT3VyIEdyZWF0IENhdGhlZHJhbHMuIFRlbXBsZXMuIFNpdGVzIAphbmQgUmVsaWNzLiBSdWlucy4gTW9kZXJuIENpdGllcy4gUHVibGljIAoKQnVpbGRpbmdzLiBDZW1ldGVyaWVzLiBVbml2ZXJzaXRpZXMgYW5kIApTY2hvb2xzLiBMaWJyYXJpZXMsIE11c2V1bXMgYW5kIAoKR2FsbGVyaWVzLiBUaGUgU3RvY2steWFyZHMgb2YgQ2hpY2Fnby4gClNwZWNpYWwgUGxhY2VzLiBTYWNyZWQgTW91bnRhaW5zLiBTYWNyZWQgCgpSaXZlcnMgCgoKQ0hBUFRFUiBWSUlJIAoKCkJZIENFUkVNT05JRVMgCgoKVGhlIEhpZXJhcmNoeS4gVGhlIFRocmVlIFBhdGhzLiAKQ2hyaXN0aWFuIE1hZ2ljLiBUaGUgTWFzcy4gT3JkaW5hdGlvbi4gVGhlIAoKQW5nbGljYW4gQ2h1cmNoLiBUaGUgTXVzaWMuIFRoZSAKVGhvdWdodC1Gb3Jtcy4gVGhlIEVmZmVjdCBvZiBEZXZvdGlvbi4gSG9seSAKCldhdGVyLiBCYXB0aXNtLiBVbmlvbiBpcyBTdHJlbmd0aC4gCkNvbnNlY3JhdGlvbi4gVGhlIEJlbGxzLiBJbmNlbnNlLiBTZXJ2aWNlcyAKCmZvciB0aGUgRGVhZC4gT3RoZXIgUmVsaWdpb25zLiBUaGUgCk9yZGVycyBvZiB0aGUgQ2xlcmd5IAoKCkNIQVBURVIgSVggCgoKQlkgU09VTkRTIAoKClNvdW5kLCBDb2xvdXIgYW5kIEZvcm0uIFJlbGlnaW91cyAKTXVzaWMuIFNpbmdpbmcuIE1pbGl0YXJ5IE11c2ljLiBTb3VuZHMgCgppbiBOYXR1cmUuIEluIERvbWVzdGljIExpZmUuIE5vaXNlcwoKCkNIQVBURVIgWCAKCgpCWSBQVUJMSUMgT1BJTklPTiAKCgpSYWNlIFByZWp1ZGljZS4gUG9wdWxhciBQcmVqdWRpY2UuIApQb2xpdGljYWwgUHJlanVkaWNlLiBHb3Zlcm5tZW50LiBSZWxpZ2lvdXMgCgpQcmVqdWRpY2UuIENsYXNzIFByZWp1ZGljZS4gUHVibGljIApTdGFuZGFyZHMuIENhc3RlIFByZWp1ZGljZS4gVGhlIER1dHkgb2YgCgpGcmVlZG9tLiBCdXNpbmVzcyBNZXRob2RzLiBUaGUgUmVzdWx0cyAKb2YgRGVjZWl0LiBQcmVqdWRpY2UgYWdhaW5zdCBQZXJzb25zLiAKClRoZSBJbmZsdWVuY2Ugb2YgRnJpZW5kcy4gUG9wdWxhciAKU3VwZXJzdGl0aW9ucy4gVGhlIEZlYXIgb2YgR29zc2lwLiBBIEJldHRlciAKCkFzcGVjdCAKCgpDSEFQVEVSIFhJIAoKCkJZIE9DQ0FTSU9OQUwgRVZFTlRTIAoKCkEgRnVuZXJhbC4gVGhlIERpc3Bvc2FsIG9mIHRoZSBEZWFkIApCb2R5LiBBIFN1cmdpY2FsIE9wZXJhdGlvbi4gQSAKCkxlY3R1cmUuIEEgUG9saXRpY2FsIE1lZXRpbmcuIENyb3dkcy4gQSAKU++/vWFuY2UuIEEgUmVsaWdpb3VzIFJldml2YWwuIEEgCgpXYXZlIG9mIFBhdHJpb3Rpc20uIFdhciBDYXRhc3Ryb3BoZXMKCgpDSEFQVEVSIFhJSSAKCgpCWSBVTlNFRU4gQkVJTkdTIAoKClNlbnNpdGl2ZSBQZW9wbGUuIEEgUmVtYXJrYWJsZSBDYXNlLiAKVGhlIFZpc2lvbiBJbnZlc3RpZ2F0ZWQuIFdyaXRpbmcgYSBCb29rIAoKCkNIQVBURVIgWElJSSAKCgpPVVIgQVRUSVRVREUgVE9XQVJEUyBUSEVTRSAKCgpJTkZMVUVOQ0VTIAoKClByb3RlY3RpdmUgU2hlbGxzLiBUaGUgRXRoZXJpYyBTaGVsbC4gClNoaWVsZHMuIEEgV2FybmluZy4gVGhlIEFzdHJhbCBTaGVsbC4gCgpUaGUgTWVudGFsIFNoZWxsLiBUaGUgQmVzdCBVc2Ugb2YgYSAKU2hlbGwuIEEgQmVhdXRpZnVsIFN0b3J5LiBUaGUgQmV0dGVyIFdheSAKCgpUSElSRCBTRUNUSU9OIAoKCkhPVyBXRSBJTkZMVUVOQ0UgT1VSU0VMVkVTIAoKCkNIQVBURVIgWElWIAoKCkJZIE9VUiBIQUJJVFMgCgoKRm9vZC4gSW50b3hpY2F0aW5nIExpcXVvcnMuIApGbGVzaC1FYXRpbmcuIFNtb2tpbmcuIERydWdzLiBDbGVhbmxpbmVzcy4gCgpPY2N1bHQgSHlnaWVuZS4gUGh5c2ljYWwgRXhlcmNpc2UuIApSZWFkaW5nIGFuZCBTdHVkeS4gU3lzdGVtIGFuZCAKClRob3JvdWdobmVzcy4gTm92ZWwgYW5kIApOZXdzcGFwZXItUmVhZGluZy4gU3BlZWNoLiBNZWRpdGF0aW9uIAoKCkNIQVBURVIgWFYgCgoKQlkgUEhZU0lDQUwgRU5WSVJPTk1FTlQgCgoKSG91c2VzLiBTdHJlZXRzLiBQaWN0dXJlcy4gQ3VyaW9zaXRpZXMuIApCb29rcy4gRnVybmlzaGluZy4gSmV3ZWxsZXJ5LiBUYWxpc21hbnMuIAoKClRoaW5ncyBXZSBDYXJyeSBBYm91dC4gTW9uZXkuIENsb3RoaW5nCgoKQ0hBUFRFUiBYVkkgCgoKQlkgTUVOVEFMIENPTkRJVElPTlMgCgoKVGhvdWdodC1mb3Jtcy4gTW9vZHMuIFJlY3VycmVudCAKVGhvdWdodHMuIEZhbGxpbmcgaW4gTG92ZS4gVW5zZXQgQmxvc3NvbS4gCgoKT2NjdWx0aXNtIGFuZCBNYXJyaWFnZS4gQ2hhbmdlcyBpbiAKQ29uc2Npb3VzbmVzcyAKCgpDSEFQVEVSIFhWSUkgCgoKQlkgT1VSIEFNVVNFTUVOVFMgCgoKQ2hpbGRyZW4ncyBHYW1lcy4gU3BvcnQuIEZpc2hpbmcuIApIb3JzZS4gUmFjaW5nLiBHYW1ibGluZy4gVGhlIFRoZWF0cmUgCgoKwqAKCgpGT1VSVEggU0VDVElPTiAKCgpIT1cgV0UgSU5GTFVFTkNFIE9USEVSUyAKCgpDSEFQVEVSIFhWSUlJIAoKCkJZIFdIQVQgV0UgQVJFIAoKClRoZSBJbnRlcnJlbGF0aW9uIG9mIE1lbi4gVGhlIER1dHkgb2YgCkhhcHBpbmVzcyBQZWFjZSAKCgpDSEFQVEVSIFhJWCAKCgpCWSBXSEFUIFdFIFRISU5LIAoKClRoZSBSZWFsbSBvZiBUaG91Z2h0LiBUaGUgRWZmZWN0cyBvZiAKVGhvdWdodC4gVGhlIFRob3VnaHQtV2F2ZS4gVGhlIAoKVGhvdWdodC1Gb3JtLiBXaGF0IFdlIGNhbiBkbyBieSAKVGhvdWdodC4gVGhlIFJlc3BvbnNpYmlsaXR5IG9mIFRob3VnaHQgCgoKQ0hBUFRFUiBYWCAKCgpCWSBXSEFUIFdFIERPIAoKCldvcmsgZm9yIHRoZSBQb29yLiBUaGUgRm9yY2Ugb2YgdGhlIApNYXN0ZXIuIFRoZSBNYW51ZmFjdHVyZSBvZiBUYWxpc21hbnMuIAoKVmFyaWV0aWVzIG9mIFRhbGlzbWFucy4gRGVtYWduZXRpc2F0aW9uLiAKRG8gTGl0dGxlIFRoaW5ncyBXZWxsLiBXcml0aW5nIGEgCgpMZXR0ZXIuIFdvcmsgZHVyaW5nIFNsZWVwIAoKCkNIQVBURVIgWFhJIAoKCkJZIENPTExFQ1RJVkUgVEhPVUdIVCAKCgpDaHVyY2ggSHltbnMgYW5kIFJpdHVhbHMuIApDb25ncmVnYXRpb25zLiBNb25hc3Rlcmllcy4gRWZmZWN0IHVwb24gdGhlIAoKRGVhZC4gU2F2aW5nIFNvdWxzLiBQZW9wbGUgd2hvIERpc2xpa2UgCkNlcmVtb25pZXMuIFRoZW9zb3BoaWNhbCBNZWV0aW5ncyAKCgpDSEFQVEVSIFhYSUkgCgoKQlkgT1VSIFJFTEFUSU9OIFRPIENISUxEUkVOIAoKClRoZSBEdXR5IG9mIFBhcmVudHMuIFRoZSBQbGFzdGljaXR5IG9mIApDaGlsZGhvb2QuIFRoZSBJbmZsdWVuY2Ugb2YgUGFyZW50cy4gCgpUaGUgQXVyYSBvZiBhIENoaWxkLiBDYXJlbGVzc25lc3Mgb2YgClBhcmVudHMuIFRoZSBOZWNlc3NpdHkgZm9yIExvdmUuIAoKUmVsaWdpb3VzIFRyYWluaW5nLiBQaHlzaWNhbCBUcmFpbmluZwoKCkNIQVBURVIgWFhJSUkgCgoKQlkgT1VSIFJFTEFUSU9OIFRPIExPV0VSIEtJTkdET01TIAoKCkRvbWVzdGljIEFuaW1hbHMuIEJpcmRzLiBQbGFudHMuIApOYXR1cmUtU3Bpcml0cy4gSW5hbmltYXRlIFN1cnJvdW5kaW5ncy4gQSAKClNoaXAuIE1hY2hpbmVzLiBVbmx1Y2t5IFNoaXBzLiBTdG9uZSAKdXNlZCBpbiBCdWlsZGluZy4gU2VhLVNpY2tuZXNzIAoKRklGVEggU0VDVElPTiAKCgpDT05DTFVTSU9OIAoKCkNIQVBURVIgWFhJViAKCgpUSEUgUkVTVUxUUyBPRiBUSEUgS05PV0xFREdFIAoKCkEgU3VtbWFyeS4gVGhlIEZ1dHVyZSAKCgpDSEFQVEVSIFhYViAKCgpUSEUgV0FZIFRPIFNFRVJTSElQCgoKRklSU1QKU0VDVElPTiDCoCAKCgpJTlRST0RVQ1RPUlkKwqAgCgoKwqAgCgoKQ0hBUFRFUgpJwqAgCgoKT0NDVUxUSVNNCsKgIAoKCjEuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKVEhFIHRlcm0gYCBvY2N1bHRpc20nIGlzIG9uZSB3aGljaCBoYXMgYmVlbiBtdWNoIG1pc3VuZGVyc3Rvb2QuIEluIHRoZSAKbWluZCBvZiB0aGUgaWdub3JhbnQgaXQgd2FzLCBldmVuIHJlY2VudGx5LCBzeW5vbnltb3VzIHdpdGggbWFnaWMsIGFuZCBpdHMgCnN0dWRlbnRzIHdlcmUgc3VwcG9zZWQgdG8gYmUgcHJhY3RpdGlvbmVycyBvZiB0aGUgYmxhY2sgYXJ0LCB2ZWlsZWQgaW4gZmxvd2luZyAKcm9iZXMgb2Ygc2NhcmxldCBjb3ZlcmVkIHdpdGggY2FiYWxpc3RpYyBzaWducywgc2l0dGluZyBhbWlkc3QgdW5jYW5ueSAKc3Vycm91bmRpbmdzIHdpdGggYSBibGFjayBjYXQgYXMgYSBmYW1pbGlhciwgY29tcG91bmRpbmcgdW5ob2x5IGRlY29jdGlvbnMgYnkgCnRoZSBhaWQgb2Ygc2F0YW5pYyBldm9jYXRpb25zLiAKCgoyLsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCkV2ZW4gbm93LCBhbmQgYW1vbmcgdGhvc2Ugd2hvbSBlZHVjYXRpb24gaGFzIHJhaXNlZCBhYm92ZSBzdWNoIApzdXBlcnN0aXRpb24gYXMgdGhpcywgdGhlcmUgc3RpbGwgcmVtYWlucyBhIGdvb2QgZGVhbCBvZiBtaXNhcHByZWhlbnNpb24uIEZvciAKdGhlbSBpdHMgZGVyaXZhdGlvbiBmcm9tIHRoZSBMYXRpbiB3b3JkIG9jY3VsdHVzIG91Z2h0IHRvIGV4cGxhaW4gYXQgCm9uY2UgdGhhdCBpdCBpcyB0aGUgc2NpZW5jZSBvZiB0aGUgaGlkZGVuOyBidXQgdGhleSBvZnRlbiByZWdhcmQgaXQgCmNvbnRlbXB0dW91c2x5IGFzIG5vbnNlbnNpY2FsIGFuZCB1bnByYWN0aWNhbCwgYXMgY29ubmVjdGVkIHdpdGggZHJlYW1zIGFuZCAKZm9ydHVuZS10ZWxsaW5nLCB3aXRoIGh5c3RlcmlhIGFuZCBuZWNyb21hbmN5LCB3aXRoIHRoZSBzZWFyY2ggZm9yIHRoZSBlbGl4aXIgb2YgCmxpZmUgYW5kIHRoZSBwaGlsb3NvcGhlcicgcyBzdG9uZS4gU3R1ZGVudHMsIHdobyBzaG91bGQga25vdyBiZXR0ZXIsIHBlcnBldHVhbGx5IApzcGVhayBhcyB0aG91Z2ggdGhlIGhpZGRlbiBzaWRlIG9mIHRoaW5ncyB3ZXJlIGludGVudGlvbmFsbHkgY29uY2VhbGVkLCBhcyAKdGhvdWdoIGtub3dsZWRnZSB3aXRoIHJlZ2FyZCB0byBpdCBvdWdodCB0byBiZSBpbiB0aGUgaGFuZHMgb2YgYWxsIG1lbiwgYnV0IHdhcyAKYmVpbmcgZGVsaWJlcmF0ZWx5IHdpdGhoZWxkIGJ5IHRoZSBjYXByaWNlIG9yIHNlbGZpc2huZXNzIG9mIGEgZmV3OyB3aGVyZWFzIHRoZSAKZmFjdCBpcyB0aGF0IG5vdGhpbmcgaXMgb3IgY2FuIGJlIGhpZGRlbiBmcm9tIHVzIGV4Y2VwdCBieSBvdXIgb3duIGxpbWl0YXRpb25zLCAKYW5kIHRoYXQgZm9yIGV2ZXJ5IG1hbiBhcyBoZSBldm9sdmVzIHRoZSB3b3JsZCBncm93cyB3aWRlciBhbmQgd2lkZXIsIGJlY2F1c2UgaGUgCmlzIGFibGUgdG8gc2VlIG1vcmUgYW5kIG1vcmUgb2YgaXRzIGdyYW5kZXVyIGFuZCBpdHMgbG92ZWxpbmVzcy4gCgoKMy7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoApBcyBhbiBvYmplY3Rpb24gYWdhaW5zdCB0aGlzIHN0YXRlbWVudCBtYXkgYmUgY2l0ZWQgdGhlIHdlbGwta25vd24gZmFjdCAKdGhhdCwgYXQgZWFjaCBvZiB0aGUgZ3JlYXQgSW5pdGlhdGlvbnMgd2hpY2ggbWFyayB0aGUgYWR2YW5jZSBvZiB0aGUgbmVvcGh5dGUgCmFsb25nIHRoZSBwYXRoIG9mIHRoZSBoaWdoZXIgcHJvZ3Jlc3MsIGEgZGVmaW5pdGUgbmV3IGJsb2NrIG9mIGtub3dsZWRnZSBpcyAKZ2l2ZW4gdG8gaGltLiBUaGF0IGlzIHF1aXRlIHRydWUsIGJ1dCB0aGUga25vd2xlZGdlIGNhbiBiZSBnaXZlbiBvbmx5IGJlY2F1c2UgCnRoZSByZWNpcGllbnQgaGFzIGV2b2x2ZWQgdG8gdGhlIHBvaW50IGF0IHdoaWNoIGhlIGNhbiBncmFzcCBpdC4gSXQgaXMgbm8gbW9yZSAKYmVpbmcgd2l0aGhlbGQgZnJvbSBvcmRpbmFyeSBodW1hbml0eSB0aGFuIHRoZSBrbm93bGVkZ2Ugb2YgY29uaWMgc2VjdGlvbnMgaXMgCmJlaW5nIHdpdGhoZWxkIGZyb20gdGhlIGNoaWxkIHdobyBpcyBzdGlsbCBzdHJ1Z2dsaW5nIHdpdGggdGhlIAptdWx0aXBsaWNhdGlvbi10YWJsZS4gV2hlbiB0aGF0IGNoaWxkIHJlYWNoZXMgdGhlIGxldmVsIGF0IHdoaWNoIGhlIGNhbiAKY29tcHJlaGVuZCBxdWFkcmF0aWMgZXF1YXRpb25zLCB0aGUgdGVhY2hlciBpcyByZWFkeSB0byBleHBsYWluIHRvIGhpbSB0aGUgcnVsZXMgCndoaWNoIGdvdmVybiB0aGVtLiBJbiBleGFjdGx5IHRoZSBzYW1lIHdheSwgd2hlbiBhIG1hbiBoYXMgcXVhbGlmaWVkIGhpbXNlbGYgZm9yIAp0aGUgcmVjZXB0aW9uIG9mIHRoZSBpbmZvcm1hdGlvbiBnaXZlbiBhdCBhIGNlcnRhaW4gSW5pdGlhdGlvbiwgaGUgaXMgZm9ydGh3aXRoIAppbml0aWF0ZWQuIEJ1dCB0aGUgb25seSB3YXkgdG8gYXR0YWluIHRoZSBjYXBhY2l0eSB0byBpbWJpYmUgdGhhdCBoaWdoZXIgCmtub3dsZWRnZSBpcyB0byBiZWdpbiBieSB0cnlpbmcgdG8gdW5kZXJzdGFuZCBvdXIgcHJlc2VudCBjb25kaXRpb25zLCBhbmQgdG8gCm9yZGVyIG91ciBsaXZlcyBpbnRlbGxpZ2VudGx5IGluIHZpZXcgb2YgdGhlIGZhY3RzIHdoaWNoIHdlIGZpbmQuIAoKCjQuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKT2NjdWx0aXNtLCB0aGVuLCBpcyB0aGUgc3R1ZHkgb2YgdGhlIGhpZGRlbiBzaWRlIG9mIG5hdHVyZTsgb3IgcmF0aGVyLCBpdCAKaXMgdGhlIHN0dWR5IG9mIHRoZSB3aG9sZSBvZiBuYXR1cmUsIGluc3RlYWQgb2Ygb25seSB0aGF0IHNtYWxsIHBhcnQgb2YgCml0IHdoaWNoIGNvbWVzIHVuZGVyIHRoZSBpbnZlc3RpZ2F0aW9uIG9mIG1vZGVybiBzY2llbmNlLiBBdCB0aGUgcHJlc2VudCBzdGFnZSAKb2Ygb3VyIGRldmVsb3BtZW50LCBieSBmYXIgdGhlIGdyZWF0ZXIgcGFydCBvZiBuYXR1cmUgaXMgZW50aXJlbHkgdW5rbm93biB0byB0aGUgCm1ham9yaXR5IG9mIG1hbmtpbmQsIGJlY2F1c2UgdGhleSBoYXZlIGFzIHlldCB1bmZvbGRlZCBvbmx5IGEgbWludXRlIHByb3BvcnRpb24gCm9mIHRoZSBmYWN1bHRpZXMgd2hpY2ggdGhleSBwb3NzZXNzLiBUaGUgb3JkaW5hcnkgbWFuLCB0aGVyZWZvcmUsIGlzIGJhc2luZyBoaXMgCnBoaWxvc29waHkgKHNvIGZhciBhcyBoZSBoYXMgYW55KSB1cG9uIGVudGlyZWx5IGluYWRlcXVhdGUgZ3JvdW5kczsgaGlzIGFjdGlvbnMgCmFyZSBtb3VsZGVkIG1vcmUgb3IgbGVzcyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGZldyBsYXdzIG9mIG5hdHVyZSB3aGljaCBoZSAKa25vd3MsIGFuZCBjb25zZXF1ZW50bHkgYm90aCBoaXMgdGhlb3J5IG9mIGxpZmUgYW5kIGhpcyBkYWlseSBwcmFjdGljZSBhcmUgCm5lY2Vzc2FyaWx5IGluYWNjdXJhdGUuIFRoZSBvY2N1bHRpc3QgYWRvcHRzIGEgZmFyIG1vcmUgY29tcHJlaGVuc2l2ZSB2aWV3OyBoZSAKdGFrZXMgaW50byBhY2NvdW50IHRob3NlIGZvcmNlcyBvZiB0aGUgaGlnaGVyIHdvcmxkcyB3aG9zZSBhY3Rpb24gaXMgaGlkZGVuIGZyb20gCnRoZSBtYXRlcmlhbGlzdCwgYW5kIHNvIGhlIG1vdWxkcyBoaXMgbGlmZSBpbiBvYmVkaWVuY2UgdG8gdGhlIGVudGlyZSBjb2RlIG9mIApOYXR1cmUnIHMgbGF3cywgaW5zdGVhZCBvZiBvbmx5IGJ5IG9jY2FzaW9uYWwgcmVmZXJlbmNlIHRvIGEgbWludXRlIGZyYWdtZW50IG9mIAppdC4gCgoKNS7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoApJdCBpcyBkaWZmaWN1bHQgZm9yIHRoZSBtYW4gd2hvIGtub3dzIG5vdGhpbmcgb2YgdGhlIG9jY3VsdCB0byByZWFsaXNlIApob3cgZ3JlYXQsIGhvdyBzZXJpb3VzIGFuZCBob3cgYWxsLXBlcnZhZGluZyBhcmUgaGlzIG93biBsaW1pdGF0aW9ucy4gVGhlIG9ubHkgCndheSBpbiB3aGljaCB3ZSBjYW4gYWRlcXVhdGVseSBzeW1ib2xpc2UgdGhlbSBpcyB0byBzdXBwb3NlIHNvbWUgZm9ybSBvZiAKY29uc2Npb3VzbmVzcyBzdGlsbCBtb3JlIGxpbWl0ZWQgdGhhbiBvdXIgb3duLCBhbmQgdG8gdGhpbmsgaW4gd2hhdCBkaXJlY3Rpb25zIAppdCB3b3VsZCBkaWZmZXIgZnJvbSBvdXJzLiBTdXBwb3NlIGl0IHdlcmUgcG9zc2libGUgdGhhdCBhIGNvbnNjaW91c25lc3MgY291bGQgCmV4aXN0IGNhcGFibGUgb2YgYXBwcmVjaWF0aW5nIG9ubHkgc29saWQgbWF0dGVyLS0gdGhlIGxpcXVpZCBhbmQgZ2FzZW91cyBmb3JtcyAKb2YgbWF0dGVyIGJlaW5nIHRvIGl0IGFzIGVudGlyZWx5IG5vbi1leGlzdGVudCBhcyBhcmUgdGhlIGV0aGVyaWMgYW5kIGFzdHJhbCBhbmQgCm1lbnRhbCBmb3JtcyB0byB0aGUgb3JkaW5hcnkgbWFuLiBXZSBjYW4gcmVhZGlseSBzZWUgaG93IGZvciBzdWNoIGEgCmNvbnNjaW91c25lc3MgYW55IGFkZXF1YXRlIGNvbmNlcHRpb24gb2YgdGhlIHdvcmxkIGluIHdoaWNoIHdlIGxpdmUgd291bGQgYmUgCmltcG9zc2libGUuIFNvbGlkIG1hdHRlciwgd2hpY2ggYWxvbmUgY291bGQgYmUgcGVyY2VpdmVkIGJ5IGl0LCB3b3VsZCBjb25zdGFudGx5IApiZSBmb3VuZCB0byBiZSB1bmRlcmdvaW5nIHNlcmlvdXMgbW9kaWZpY2F0aW9ucywgYWJvdXQgd2hpY2ggbm8gcmF0aW9uYWwgdGhlb3J5IApjb3VsZCBiZSBmb3JtZWQuIAoKCjYuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKRm9yIGV4YW1wbGUsIHdoZW5ldmVyIGEgc2hvd2VyIG9mIHJhaW4gdG9vayBwbGFjZSwgdGhlIHNvbGlkIG1hdHRlciBvZiAKdGhlIGVhcnRoIHdvdWxkIHVuZGVyZ28gY2hhbmdlOyBpdCB3b3VsZCBpbiBtYW55IGNhc2VzIGJlY29tZSBib3RoIHNvZnRlciBhbmQgCmhlYXZpZXIgd2hlbiBjaGFyZ2VkIHdpdGggbW9pc3R1cmUsIGJ1dCB0aGUgcmVhc29uIG9mIHN1Y2ggYSBjaGFuZ2Ugd291bGQgCm5lY2Vzc2FyaWx5IGJlIHdob2xseSBpbmNvbXByZWhlbnNpYmxlIHRvIHRoZSBjb25zY2lvdXNuZXNzIHdoaWNoIHdlIGFyZSAKc3VwcG9zaW5nLiBUaGUgd2luZCBtaWdodCBsaWZ0IGNsb3VkcyBvZiBzYW5kIGFuZCB0cmFuc2ZlciB0aGVtIGZyb20gb25lIHBsYWNlIAp0byBhbm90aGVyOyBidXQgc3VjaCBtb3Rpb24gb2Ygc29saWQgbWF0dGVyIHdvdWxkIGJlIGVudGlyZWx5IGluZXhwbGljYWJsZSB0byAKb25lIHdobyBoYWQgbm8gY29uY2VwdGlvbiBvZiB0aGUgZXhpc3RlbmNlIG9mIHRoZSBhaXIuIFdpdGhvdXQgY29uc2lkZXJpbmcgbW9yZSAKZXhhbXBsZXMgb2Ygd2hhdCBpcyBhbHJlYWR5IHNvIG9idmlvdXMsIHdlIHNlZSBjbGVhcmx5IGhvdyBob3BlbGVzc2x5IGluYWRlcXVhdGUgCndvdWxkIGJlIHN1Y2ggYW4gaWRlYSBvZiB0aGUgd29ybGQgYXMgd291bGQgYmUgYXR0YWluYWJsZSBieSB0aGlzIGNvbnNjaW91c25lc3MgCmxpbWl0ZWQgdG8gc29saWQgbWF0dGVyLiBXaGF0IHdlIGRvIG5vdCByZWFsaXNlIHNvIHJlYWRpbHksIGhvd2V2ZXIsIGlzIHRoYXQgb3VyIApwcmVzZW50IGNvbnNjaW91c25lc3MgZmFsbHMganVzdCBhcyBmYXIgc2hvcnQgb2YgdGhhdCBvZiB0aGUgZGV2ZWxvcGVkIG1hbiBhcyAKdGhpcyBzdXBwb3NlZCBjb25zY2lvdXNuZXNzIHdvdWxkIGZhbGwgc2hvcnQgb2YgdGhhdCB3aGljaCB3ZSBub3cgcG9zc2Vzcy4gCgoKNy7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoApUaGVvc29waGljYWwgc3R1ZGVudHMgYXJlIGF0IGxlYXN0IHRoZW9yZXRpY2FsbHkgYWNxdWFpbnRlZCB3aXRoIHRoZSBpZGVhIAp0aGF0IHRvIGV2ZXJ5dGhpbmcgdGhlcmUgaXMgYSBoaWRkZW4gc2lkZTsgYW5kIHRoZXkgYWxzbyBrbm93IHRoYXQgaW4gdGhlIGdyZWF0IAptYWpvcml0eSBvZiBjYXNlcyB0aGlzIHVuc2VlbiBzaWRlIGlzIG9mIGZhciBncmVhdGVyIGltcG9ydGFuY2UgdGhhbiB0aGF0IHdoaWNoIAppcyB2aXNpYmxlIHRvIHRoZSBwaHlzaWNhbCBleWUuIAoKCjguwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKVG8gcHV0IHRoZSBzYW1lIGlkZWEgZnJvbSBhbm90aGVyIHBvaW50IG9mIHZpZXcsIHRoZSBzZW5zZXMsIGJ5IG1lYW5zIG9mIAp3aGljaCB3ZSBvYnRhaW4gYWxsIG91ciBpbmZvcm1hdGlvbiBhYm91dCBleHRlcm5hbCBvYmplY3RzLCBhcmUgYXMgeWV0IAppbXBlcmZlY3RseSBkZXZlbG9wZWQ7IHRoZXJlZm9yZSB0aGUgaW5mb3JtYXRpb24gb2J0YWluZWQgaXMgcGFydGlhbC4gV2hhdCB3ZSAKc2VlIGluIHRoZSB3b3JsZCBhYm91dCB1cyBpcyBieSBubyBtZWFucyBhbGwgdGhhdCB0aGVyZSBpcyB0byBzZWUsIGFuZCBhIG1hbiB3aG8gCndpbGwgdGFrZSB0aGUgdHJvdWJsZSB0byBjdWx0aXZhdGUgaGlzIHNlbnNlcyB3aWxsIGZpbmQgdGhhdCwgaW4gcHJvcG9ydGlvbiBhcyAKaGUgc3VjY2VlZHMsIGxpZmUgd2lsbCBiZWNvbWUgZnVsbGVyIGFuZCByaWNoZXIgZm9yIGhpbS4gRm9yIHRoZSBsb3ZlciBvZiAKbmF0dXJlLCBvZiBhcnQsIG9mIG11c2ljLCBhIHZhc3QgZmllbGQgb2YgaW5jcmVkaWJseSBpbnRlbnNpZmllZCBhbmQgZXhhbHRlZCAKcGxlYXN1cmUgbGllcyBjbG9zZSBhdCBoYW5kLCBpZiBoZSB3aWxsIGZpdCBoaW1zZWxmIHRvIGVudGVyIHVwb24gaXQuIEFib3ZlIGFsbCwgCmZvciB0aGUgbG92ZXIgb2YgaGlzIGZlbGxvdy1tYW4gdGhlcmUgaXMgdGhlIHBvc3NpYmlsaXR5IG9mIGZhciBtb3JlIGludGltYXRlIApjb21wcmVoZW5zaW9uIGFuZCB0aGVyZWZvcmUgZmFyIHdpZGVyIHVzZWZ1bG5lc3MuIAoKCjkuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKV2UgYXJlIG9ubHkgaGFsZndheSB1cCB0aGUgbGFkZGVyIG9mIGV2b2x1dGlvbiBhdCBwcmVzZW50LCBhbmQgc28gb3VyIApzZW5zZXMgYXJlIG9ubHkgaGFsZi1ldm9sdmVkLiBCdXQgaXQgaXMgcG9zc2libGUgZm9yIHVzIHRvIGh1cnJ5IHVwIHRoYXQgCmxhZGRlci0tIHBvc3NpYmxlLCBieSBoYXJkIHdvcmssIHRvIG1ha2Ugb3VyIHNlbnNlcyBub3cgd2hhdCAKYWxsIG1lbicgcyBzZW5zZXMgd2lsbCBiZSBpbiB0aGUgZGlzdGFudCBmdXR1cmUuIFRoZSBtYW4gd2hvIGhhcyBzdWNjZWVkZWQgaW4gCmRvaW5nIHRoaXMgaXMgb2Z0ZW4gY2FsbGVkIGEgc2VlciBvciBhIGNsYWlydm95YW50LiAKCgoxMC7CoMKgwqDCoMKgwqDCoMKgwqDCoApBIGZpbmUgd29yZCB0aGF0LS0gY2xhaXJ2b3lhbnQuIEl0IG1lYW5zIGAgb25lIHdobyBzZWVzIGNsZWFybHknIDsgYnV0IGl0IApoYXMgYmVlbiBob3JyaWJseSBtaXN1c2VkIGFuZCBkZWdyYWRlZCwgc28gdGhhdCBwZW9wbGUgYXNzb2NpYXRlIGl0IHdpdGggYWxsIApzb3J0cyBvZiB0cmlja2VyeSBhbmQgaW1wb3N0dXJlLS0gd2l0aCBneXBzaWVzIHdobyBmb3Igc2l4cGVuY2Ugd2lsbCB0ZWxsIGEgCm1haWQtc2VydmFudCB3aGF0IGlzIHRoZSBjb2xvdXIgb2YgdGhlIGhhaXIgb2YgdGhlIGR1a2Ugd2hvIGlzIGNvbWluZyB0byBtYXJyeSAKaGVyLCBvciB3aXRoIGVzdGFibGlzaG1lbnRzIGluIEJvbmQgU3RyZWV0IHdoZXJlIGZvciBhIGd1aW5lYSBmZWUgdGhlIHZlaWwgb2YgCnRoZSBmdXR1cmUgaXMgc3VwcG9zZWQgdG8gYmUgbGlmdGVkIGZvciBtb3JlIGFyaXN0b2NyYXRpYyBjbGllbnRzLiAKCgoxMS7CoMKgwqDCoMKgwqDCoMKgwqDCoApBbGwgdGhpcyBpcyBpcnJlZ3VsYXIgYW5kIHVuc2NpZW50aWZpYzsgaW4gbWFueSBjYXNlcyBpdCBpcyBtZXJlIApjaGFybGF0YW5yeSBhbmQgYmFyZS1mYWNlZCByb2JiZXJ5LiBCdXQgbm90IGFsd2F5czsgdG8gZm9yZXNlZSB0aGUgZnV0dXJlIHVwIHRvIAphIGNlcnRhaW4gcG9pbnQgaXMgYSBwb3NzaWJpbGl0eTsgaXQgY2FuIGJlIGRvbmUsIGFuZCBpdCBoYXMgYmVlbiBkb25lLCAKc2NvcmVzIG9mIHRpbWVzOyBhbmQgc29tZSBvZiB0aGVzZSBpcnJlZ3VsYXIgcHJhY3RpdGlvbmVycyB1bnF1ZXN0aW9uYWJseSBkbyBhdCAKdGltZXMgcG9zc2VzcyBmbGFzaGVzIG9mIGhpZ2hlciB2aXNpb24sIHRob3VnaCB1c3VhbGx5IHRoZXkgY2Fubm90IGRlcGVuZCB1cG9uIApoYXZpbmcgdGhlbSB3aGVuIHRoZXkgd2FudCB0aGVtLiAKCgoxMi7CoMKgwqDCoMKgwqDCoMKgwqDCoApCdXQgYmVoaW5kIGFsbCB0aGlzIHZhZ3VlbmVzcyB0aGVyZSBpcyBhIGJlZC1yb2NrIG9mIGZhY3QtLSBzb21ldGhpbmcgCndoaWNoIGNhbiBiZSBhcHByb2FjaGVkIHJhdGlvbmFsbHkgYW5kIHN0dWRpZWQgc2NpZW50aWZpY2FsbHkuIEl0IGlzIGFzIHRoZSAKcmVzdWx0IG9mIG1hbnkgeWVhcnMgb2Ygc3VjaCBzdHVkeSBhbmQgZXhwZXJpbWVudCB0aGF0IEkgc3RhdGUgZW1waGF0aWNhbGx5IHdoYXQgCkkgaGF2ZSB3cml0dGVuIGFib3ZlLS0gdGhhdCBpdCBpcyBwb3NzaWJsZSBmb3IgbWVuIHRvIGRldmVsb3AgdGhlaXIgc2Vuc2VzIHVudGlsIAp0aGV5IGNhbiBzZWUgbXVjaCBtb3JlIG9mIHRoaXMgd29uZGVyZnVsIGFuZCBiZWF1dGlmdWwgd29ybGQgaW4gd2hpY2ggd2UgbGl2ZSAKdGhhbiBpcyBldmVyIHN1c3BlY3RlZCBieSB0aGUgdW50cmFpbmVkIGF2ZXJhZ2UgbWFuLCB3aG8gbGl2ZXMgY29udGVudGVkbHkgaW4gCnRoZSBtaWRzdCBvZiBDaW1tZXJlYW4gZGFya25lc3MgYW5kIGNhbGxzIGl0IGxpZ2h0LiAKCgoxMy7CoMKgwqDCoMKgwqDCoMKgwqDCoApUd28gdGhvdXNhbmQgYW5kIGZpdmUgaHVuZHJlZCB5ZWFycyBhZ28gdGhlIGdyZWF0ZXN0IG9mIEluZGlhbiB0ZWFjaGVycywgCkdhdXRhbWEgdGhlIEJVRERIQSwgc2FpZCB0byBIaXMgZGlzY2lwbGVzOiBgIERvIG5vdCBjb21wbGFpbiBhbmQgY3J5IGFuZCBwcmF5LCAKYnV0IG9wZW4geW91ciBleWVzIGFuZCBzZWUuIFRoZSB0cnV0aCBpcyBhbGwgYWJvdXQgeW91LCBpZiB5b3Ugd2lsbCAKb25seSB0YWtlIHRoZSBiYW5kYWdlIGZyb20geW91ciBleWVzIGFuZCBsb29rOyBhbmQgaXQgaXMgc28gd29uZGVyZnVsLCBzbyAKYmVhdXRpZnVsLCBzbyBmYXIgYmV5b25kIGFueXRoaW5nIHRoYXQgbWVuIGhhdmUgZXZlciBkcmVhbXQgb2Ygb3IgcHJheWVkIGZvciwgCmFuZCBpdCBpcyBmb3IgZXZlciBhbmQgZm9yIGV2ZXIuJyAKCgoxNC7CoMKgwqDCoMKgwqDCoMKgwqDCoApIZSBhc3N1cmVkbHkgbWVhbnQgZmFyIG1vcmUgdGhhbiB0aGlzIG9mIHdoaWNoIEkgYW0gd3JpdGluZyBub3csIGJ1dCB0aGlzIAppcyBhIHN0ZXAgb24gdGhlIHdheSB0b3dhcmRzIHRoYXQgZ2xvcmlvdXMgZ29hbCBvZiBwZXJmZWN0IHJlYWxpc2F0aW9uLiBJZiBpdCAKZG9lcyBub3QgeWV0IHRlbGwgdXMgcXVpdGUgYWxsIHRoZSB0cnV0aCwgYXQgYW55IHJhdGUgaXQgZ2l2ZXMgdXMgYSAKZ29vZCBkZWFsIG9mIGl0LiBJdCByZW1vdmVzIGZvciB1cyBhIGhvc3Qgb2YgY29tbW9uIG1pc2NvbmNlcHRpb25zLCBhbmQgY2xlYXJzIAp1cCBmb3IgdXMgbWFueSBwb2ludHMgd2hpY2ggYXJlIGNvbnNpZGVyZWQgYXMgbXlzdGVyaWVzIG9yIHByb2JsZW1zIGJ5IHRob3NlIHdobyAKYXJlIGFzIHlldCB1bmluc3RydWN0ZWQgaW4gdGhpcyBsb3JlLiBJdCBzaG93cyB0aGF0IGFsbCB0aGVzZSB0aGluZ3Mgd2VyZSAKbXlzdGVyaWVzIGFuZCBwcm9ibGVtcyB0byB1cyBvbmx5IGJlY2F1c2UgaGVyZXRvZm9yZSB3ZSBzYXcgc28gc21hbGwgYSBwYXJ0IG9mIAp0aGUgZmFjdHMsIGJlY2F1c2Ugd2Ugd2VyZSBsb29raW5nIGF0IHRoZSB2YXJpb3VzIG1hdHRlcnMgZnJvbSBiZWxvdywgYW5kIGFzIAppc29sYXRlZCBhbmQgdW5jb25uZWN0ZWQgZnJhZ21lbnRzLCBpbnN0ZWFkIG9mIHJpc2luZyBhYm92ZSB0aGVtIHRvIGEgc3RhbmRwb2ludCAKd2hlbmNlIHRoZXkgYXJlIGNvbXByZWhlbnNpYmxlIGFzIHBhcnRzIG9mIGEgbWlnaHR5IHdob2xlLiBJdCBzZXR0bGVzIAppbiBhIG1vbWVudCBtYW55IHF1ZXN0aW9ucyB3aGljaCBoYXZlIGJlZW4gbXVjaCBkaXNwdXRlZC0tIHN1Y2gsIGZvciBleGFtcGxlLCBhcyAKdGhhdCBvZiB0aGUgY29udGludWVkIGV4aXN0ZW5jZSBvZiBtYW4gYWZ0ZXIgZGVhdGguIEl0IGV4cGxhaW5zIG1hbnkgb2YgdGhlIApzdHJhbmdlIHRoaW5ncyB3aGljaCB0aGUgQ2h1cmNoZXMgdGVsbCB1czsgaXQgZGlzcGVscyBvdXIgaWdub3JhbmNlIGFuZCByZW1vdmVzIApvdXIgZmVhciBvZiB0aGUgdW5rbm93biBieSBzdXBwbHlpbmcgdXMgd2l0aCBhIHJhdGlvbmFsIGFuZCBvcmRlcmx5IHNjaGVtZS4gCgoKMTUuwqDCoMKgwqDCoMKgwqDCoMKgwqAKQmVzaWRlcyBhbGwgdGhpcywgaXQgb3BlbnMgdXAgYSBuZXcgd29ybGQgdG8gdXMgaW4gcmVnYXJkIHRvIG91ciAKZXZlcnktZGF5IGxpZmUtLSBhIG5ldyB3b3JsZCB3aGljaCBpcyB5ZXQgYSBwYXJ0IG9mIHRoZSBvbGQuIEl0IHNob3dzIHVzIHRoYXQsIAphcyBJIGJlZ2FuIGJ5IHNheWluZywgdGhlcmUgaXMgYSBoaWRkZW4gc2lkZSB0byBldmVyeXRoaW5nLCBhbmQgdGhhdCBvdXIgbW9zdCAKb3JkaW5hcnkgYWN0aW9ucyBvZnRlbiBwcm9kdWNlIHJlc3VsdHMgb2Ygd2hpY2ggd2l0aG91dCB0aGlzIHN0dWR5IHdlIHNob3VsZCAKbmV2ZXIgaGF2ZSBrbm93bi4gQnkgaXQgd2UgdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIG9mIHdoYXQgaXMgY29tbW9ubHkgY2FsbGVkIAp0ZWxlcGF0aHksIGZvciB3ZSBzZWUgdGhhdCBqdXN0IGFzIHRoZXJlIGFyZSB3YXZlcyBvZiBoZWF0IG9yIGxpZ2h0IG9yIAplbGVjdHJpY2l0eSwgc28gdGhlcmUgYXJlIHdhdmVzIHByb2R1Y2VkIGJ5IHRob3VnaHQsIHRob3VnaCB0aGV5IGFyZSBpbiBhIGZpbmVyIAp0eXBlIG9mIG1hdHRlciB0aGFuIHRoZSBvdGhlcnMsIGFuZCB0aGVyZWZvcmUgbm90IHBlcmNlcHRpYmxlIHRvIG91ciBwaHlzaWNhbCAKc2Vuc2VzLiBCeSBzdHVkeWluZyB0aGVzZSB2aWJyYXRpb25zIHdlIHNlZSBob3cgdGhvdWdodCBhY3RzLCBhbmQgd2UgbGVhcm4gdGhhdCAKaXQgaXMgYSB0cmVtZW5kb3VzIHBvd2VyIGZvciBnb29kIG9yIGZvciBpbGwtLSBhIHBvd2VyIHdoaWNoIHdlIGFyZSBhbGwgb2YgdXMgCnVuY29uc2Npb3VzbHkgd2llbGRpbmcgdG8gc29tZSBleHRlbnQtLSB3aGljaCB3ZSBjYW4gdXNlIGEgaHVuZHJlZGZvbGQgbW9yZSAKZWZmZWN0aXZlbHkgd2hlbiB3ZSBjb21wcmVoZW5kIGl0cyB3b3JraW5ncy4gRnVydGhlciBpbnZlc3RpZ2F0aW9uIHJldmVhbHMgdG8gdXMgCnRoZSBtZXRob2Qgb2YgZm9ybWF0aW9uIG9mIHdoYXQgYXJlIGNhbGxlZCBgIHRob3VnaHQtZm9ybXMsJyBhbmQgaW5kaWNhdGVzIGhvdyAKdGhlc2UgY2FuIGJlIHVzZWZ1bGx5IGVtcGxveWVkIGJvdGggZm9yIG91cnNlbHZlcyBhbmQgZm9yIG90aGVycyBpbiBhIGRvemVuIApkaWZmZXJlbnQgd2F5cy4gCgoKMTYuwqDCoMKgwqDCoMKgwqDCoMKgwqAKVGhlIG9jY3VsdGlzdCBzdHVkaWVzIGNhcmVmdWxseSBhbGwgdGhlc2UgdW5zZWVuIGVmZmVjdHMsIGFuZCAKY29uc2VxdWVudGx5IGtub3dzIG11Y2ggbW9yZSBmdWxseSB0aGFuIG90aGVyIG1lbiB0aGUgcmVzdWx0IG9mIHdoYXQgaGUgaXMgCmRvaW5nLiBIZSBoYXMgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBsaWZlIHRoYW4gb3RoZXJzIGhhdmUsIGFuZCBoZSBleGVyY2lzZXMgaGlzIApjb21tb24tc2Vuc2UgYnkgbW9kaWZ5aW5nIGhpcyBsaWZlIGluIGFjY29yZGFuY2Ugd2l0aCB3aGF0IGhlIGtub3dzLiBJbiBtYW55IAp3YXlzIHdlIGxpdmUgZGlmZmVyZW50bHkgbm93IGZyb20gb3VyIGZvcmVmYXRoZXJzIGluIG1lZGlhZXZhbCB0aW1lcywgYmVjYXVzZSB3ZSAKa25vdyBtb3JlIHRoYW4gdGhleSBkaWQuIFdlIGhhdmUgZGlzY292ZXJlZCBjZXJ0YWluIGxhd3Mgb2YgaHlnaWVuZTsgd2lzZSBtZW4gCmxpdmUgYWNjb3JkaW5nIHRvIHRoYXQga25vd2xlZGdlLCBhbmQgdGhlcmVmb3JlIHRoZSBhdmVyYWdlIGxlbmd0aCBvZiBsaWZlIGlzIApkZWNpZGVkbHkgZ3JlYXRlciBub3cgdGhhbiBpdCB3YXMgaW4gdGhlIE1pZGRsZSBBZ2VzLiBUaGVyZSBhcmUgc3RpbGwgc29tZSB3aG8gCmFyZSBmb29saXNoIG9yIGlnbm9yYW50LCB3aG8gZWl0aGVyIGRvIG5vdCBrbm93IHRoZSBsYXdzIG9mIGhlYWx0aCBvciBhcmUgCmNhcmVsZXNzIGFib3V0IGtlZXBpbmcgdGhlbTsgdGhleSB0aGluayB0aGF0IGJlY2F1c2UgZGlzZWFzZS1nZXJtcyBhcmUgaW52aXNpYmxlIAp0byB0aGVtLCB0aGV5IGFyZSB0aGVyZWZvcmUgb2Ygbm8gaW1wb3J0YW5jZTsgdGhleSBkb24ndCBiZWxpZXZlIGluIG5ldyBpZGVhcy4gClRob3NlIGFyZSB0aGUgcGVvcGxlIHdobyBzdWZmZXIgZmlyc3Qgd2hlbiBhbiBlcGlkZW1pYyBkaXNlYXNlIGFycml2ZXMsIG9yIHNvbWUgCnVudXN1YWwgc3RyYWluIGlzIHB1dCB1cG9uIHRoZSBjb21tdW5pdHkuIFRoZXkgc3VmZmVyIHVubmVjZXNzYXJpbHksIGJlY2F1c2UgCnRoZXkgYXJlIGJlaGluZCB0aGUgdGltZXMuIEJ1dCB0aGV5IGluanVyZSBub3Qgb25seSB0aGVtc2VsdmVzIGJ5IHRoZWlyIG5lZ2xlY3Q7IAp0aGUgY29uZGl0aW9ucyBjYXVzZWQgYnkgdGhlaXIgaWdub3JhbmNlIG9yIGNhcmVsZXNzbmVzcyBvZnRlbiBicmluZyBpbmZlY3Rpb24gCmludG8gYSBkaXN0cmljdCB3aGljaCBtaWdodCBvdGhlcndpc2UgYmUgZnJlZSBmcm9tIGl0LiAKCgoxNy7CoMKgwqDCoMKgwqDCoMKgwqDCoApUaGUgbWF0dGVyIG9mIHdoaWNoIEkgYW0gd3JpdGluZyBpcyBwcmVjaXNlbHkgdGhlIHNhbWUgdGhpbmcgYXQgYSAKZGlmZmVyZW50IGxldmVsLiBUaGUgbWljcm9zY29wZSByZXZlYWxlZCBkaXNlYXNlLWdlcm1zOyB0aGUgaW50ZWxsaWdlbnQgbWFuIApwcm9maXRlZCBieSB0aGUgZGlzY292ZXJ5LCBhbmQgcmVhcnJhbmdlZCBoaXMgbGlmZSwgd2hpbGUgdGhlIHVuaW50ZWxsaWdlbnQgbWFuIApwYWlkIG5vIGF0dGVudGlvbiwgYnV0IHdlbnQgb24gYXMgYmVmb3JlLiBDbGFpcnZveWFuY2UgcmV2ZWFscyB0aG91Z2h0LWZvcmNlIGFuZCAKbWFueSBvdGhlciBwcmV2aW91c2x5IHVuc3VzcGVjdGVkIHBvd2Vyczsgb25jZSBtb3JlIHRoZSBpbnRlbGxpZ2VudCBtYW4gcHJvZml0cyAKYnkgdGhpcyBkaXNjb3ZlcnksIGFuZCByZWFycmFuZ2VzIGhpcyBsaWZlIGFjY29yZGluZ2x5LiBPbmNlIG1vcmUgYWxzbyB0aGUgCnVuaW50ZWxsaWdlbnQgbWFuIHRha2VzIG5vIGhlZWQgb2YgdGhlIG5ldyBkaXNjb3Zlcmllczsgb25jZSBtb3JlIGhlIHRoaW5rcyB0aGF0IAp3aGF0IGhlIGNhbm5vdCBzZWUgY2FuIGhhdmUgbm8gaW1wb3J0YW5jZSBmb3IgaGltOyBvbmNlIG1vcmUgaGUgY29udGludWVzIHRvIApzdWZmZXIgcXVpdGUgdW5uZWNlc3NhcmlseSwgYmVjYXVzZSBoZSBpcyBiZWhpbmQgdGhlIHRpbWVzLiAKCgoxOC7CoMKgwqDCoMKgwqDCoMKgwqDCoApOb3Qgb25seSBkb2VzIGhlIG9mdGVuIHN1ZmZlciBwb3NpdGl2ZSBwYWluLCBidXQgaGUgYWxzbyBtaXNzZXMgc28gbXVjaCAKb2YgdGhlIHBsZWFzdXJlIG9mIGxpZmUuIFRvIHBhaW50aW5nLCB0byBtdXNpYywgdG8gcG9ldHJ5LCB0byBsaXRlcmF0dXJlLCB0byAKcmVsaWdpb3VzIGNlcmVtb25pZXMsIHRvIHRoZSBiZWF1dGllcyBvZiBuYXR1cmUgdGhlcmUgaXMgYWx3YXlzIGEgaGlkZGVuIHNpZGUtLSAKYSBmdWxuZXNzLCBhIGNvbXBsZXRlbmVzcyBiZXlvbmQgdGhlIG1lcmUgcGh5c2ljYWw7IGFuZCB0aGUgbWFuIHdobyBjYW4gc2VlIG9yIApzZW5zZSB0aGlzIGhhcyBhdCBoaXMgY29tbWFuZCBhIHdlYWx0aCBvZiBlbmpveW1lbnQgZmFyIGJleW9uZCB0aGUgY29tcHJlaGVuc2lvbiAKb2YgdGhlIG1hbiB3aG8gcGFzc2VzIHRocm91Z2ggaXQgYWxsIHdpdGggdW5vcGVuZWQgcGVyY2VwdGlvbnMuIAoKCjE5LsKgwqDCoMKgwqDCoMKgwqDCoMKgClRoZSBwZXJjZXB0aW9ucyBleGlzdCBpbiBldmVyeSBodW1hbiBiZWluZywgdGhvdWdoIGFzIHlldCB1bmRldmVsb3BlZCBpbiAKbW9zdC4gVG8gdW5mb2xkIHRoZW0gbWVhbnMgZ2VuZXJhbGx5IGEgZ29vZCBkZWFsIG9mIHRpbWUgYW5kIGhhcmQgd29yaywgYnV0IGl0IAppcyBleGNlZWRpbmdseSB3ZWxsIHdvcnRoIHdoaWxlLiBPbmx5IGxldCBubyBtYW4gdW5kZXJ0YWtlIHRoZSBlZmZvcnQgdW5sZXNzIGhpcyAKbW90aXZlcyBhcmUgYWJzb2x1dGVseSBwdXJlIGFuZCB1bnNlbGZpc2gsIGZvciBoZSB3aG8gc2Vla3Mgd2lkZXIgZmFjdWx0eSBmb3IgCmFueSBidXQgdGhlIG1vc3QgZXhhbHRlZCBwdXJwb3NlcyB3aWxsIGJyaW5nIHVwb24gaGltc2VsZiBhIGN1cnNlIGFuZCBub3QgYSAKYmxlc3NpbmcuIAoKCjIwLsKgwqDCoMKgwqDCoMKgwqDCoMKgCkJ1dCB0aGUgbWFuIG9mIGFmZmFpcnMsIHdobyBoYXMgbm8gdGltZSB0byBzcGFyZSBmb3IgYSBzdXN0YWluZWQgZWZmb3J0IAp0byBldm9sdmUgbmFzY2VudCBwb3dlcnMgd2l0aGluIGhpbXNlbGYsIGlzIG5vdCB0aGVyZWJ5IGRlYmFycmVkIGZyb20gc2hhcmluZyBpbiAKc29tZSBhdCBsZWFzdCBvZiB0aGUgYmVuZWZpdHMgZGVyaXZlZCBmcm9tIG9jY3VsdCBzdHVkeSwgYW55IG1vcmUgdGhhbiB0aGUgbWFuIAp3aG8gcG9zc2Vzc2VzIG5vIG1pY3Jvc2NvcGUgaXMgdGhlcmVieSBwcmV2ZW50ZWQgZnJvbSBsaXZpbmcgaHlnaWVuaWNhbGx5LiBUaGUgCmxhdHRlciBoYXMgbm90IHNlZW4gdGhlIGRpc2Vhc2UtZ2VybXMsIGJ1dCBmcm9tIHRoZSB0ZXN0aW1vbnkgb2YgdGhlIHNwZWNpYWxpc3QgCmhlIGtub3dzIHRoYXQgdGhleSBleGlzdCwgYW5kIGhlIGtub3dzIGhvdyB0byBndWFyZCBoaW1zZWxmIGZyb20gdGhlbS4gSnVzdCBpbiAKdGhlIHNhbWUgd2F5IGEgbWFuIHdobyBoYXMgYXMgeWV0IG5vIGRhd25pbmcgb2YgY2xhaXJ2b3lhbnQgdmlzaW9uIG1heSBzdHVkeSB0aGUgCndyaXRpbmdzIG9mIHRob3NlIHdobyBoYXZlIGdhaW5lZCBpdCwgYW5kIGluIHRoaXMgd2F5IHByb2ZpdCBieSB0aGUgcmVzdWx0cyBvZiAKdGhlaXIgbGFib3VyLiBUcnVlLCBoZSBjYW5ub3QgeWV0IHNlZSBhbGwgdGhlIGdsb3J5IGFuZCB0aGUgYmVhdXR5IHdoaWNoIGFyZSAKaGlkZGVuIGZyb20gdXMgYnkgdGhlIGltcGVyZmVjdGlvbiBvZiBvdXIgc2Vuc2VzOyBidXQgaGUgY2FuIHJlYWRpbHkgbGVhcm4gaG93IAp0byBhdm9pZCB0aGUgdW5zZWVuIGV2aWwsIGFuZCBob3cgdG8gc2V0IGluIG1vdGlvbiB0aGUgdW5zZWVuIGZvcmNlcyBvZiBnb29kLiAKU28sIGxvbmcgYmVmb3JlIGhlIGFjdHVhbGx5IHNlZXMgdGhlbSwgaGUgY2FuIGNvbmNsdXNpdmVseSBwcm92ZSB0byAKaGltc2VsZiB0aGVpciBleGlzdGVuY2UsIGp1c3QgYXMgdGhlIG1hbiB3aG8gZHJpdmVzIGFuIGVsZWN0cmljIG1vdG9yIHByb3ZlcyB0byAKaGltc2VsZiB0aGUgZXhpc3RlbmNlIG9mIGVsZWN0cmljaXR5LCB0aG91Z2ggaGUgaGFzIG5ldmVyIHNlZW4gaXQgYW5kIGRvZXMgbm90IAppbiB0aGUgbGVhc3Qga25vdyB3aGF0IGl0IGlzLiAKCgoyMS7CoMKgwqDCoMKgwqDCoMKgwqDCoApXZSBtdXN0IHRyeSB0byB1bmRlcnN0YW5kIGFzIG11Y2ggYXMgd2UgY2FuIG9mIHRoZSB3b3JsZCBpbiB3aGljaCB3ZSAKbGl2ZS4gV2UgbXVzdCBub3QgZmFsbCBiZWhpbmQgaW4gdGhlIG1hcmNoIG9mIGV2b2x1dGlvbiwgd2UgbXVzdCBub3QgbGV0IApvdXJzZWx2ZXMgYmUgYW5hY2hyb25pc21zLCBmb3IgbGFjayBvZiBpbnRlcmVzdCBpbiB0aGVzZSBuZXcgZGlzY292ZXJpZXMsIHdoaWNoIAp5ZXQgYXJlIG9ubHkgdGhlIHByZXNlbnRhdGlvbiBmcm9tIGEgbmV3IHBvaW50IG9mIHZpZXcgb2YgdGhlIG1vc3QgYXJjaGFpYyAKd2lzZG9tLiDvv71Lbm93bGVkZ2UgaXMgcG93ZXLvv70gaW4gdGhpcyBjYXNlIGFzIGluIGV2ZXJ5IG90aGVyOyBpbiB0aGlzIGNhc2UsIGFzIGluIApldmVyeSBvdGhlciwgdG8gc2VjdXJlIHRoZSBiZXN0IHJlc3VsdHMsIHRoZSBnbG9yaW91cyB0cmluaXR5IG9mIHBvd2VyLCB3aXNkb20gCmFuZCBsb3ZlIG11c3QgZXZlciBnbyBoYW5kIGluIGhhbmQuIAoKCjIyLsKgwqDCoMKgwqDCoMKgwqDCoMKgClRoZXJlIGlzIGEgZGlmZmVyZW5jZSwgaG93ZXZlciwgYmV0d2VlbiB0aGVvcmV0aWNhbCBhY3F1YWludGFuY2UgYW5kIAphY3R1YWwgcmVhbGlzYXRpb247IGFuZCBJIGhhdmUgdGhvdWdodCB0aGF0IGl0IG1pZ2h0IGhlbHAgc3R1ZGVudHMgc29tZXdoYXQgCnRvd2FyZHMgdGhlIGdyYXNwIG9mIHRoZSByZWFsaXRpZXMgdG8gaGF2ZSBhIGRlc2NyaXB0aW9uIG9mIHRoZSB1bnNlZW4gc2lkZSBvZiAKc29tZSBvZiB0aGUgc2ltcGxlIHRyYW5zYWN0aW9ucyBvZiBldmVyeSBkYXkgbGlmZSBhcyB0aGV5IGFwcGVhciB0byBjbGFpcnZveWFudCAKdmlzaW9uLS0gdG8gb25lLCBsZXQgdXMgc2F5LCB3aG8gaGFzIGRldmVsb3BlZCB3aXRoaW4gaGltc2VsZiB0aGUgcG93ZXIgb2YgCnBlcmNlcHRpb24gdGhyb3VnaCB0aGUgYXN0cmFsLCBtZW50YWwgYW5kIGNhdXNhbCBib2RpZXMuIFRoZWlyIGFwcGVhcmFuY2UgYXMgCnNlZW4gYnkgbWVhbnMgb2YgdGhlIGludHVpdGlvbmFsIHZlaGljbGUgaXMgaW5maW5pdGVseSBncmFuZGVyIGFuZCBtb3JlIAplZmZlY3RpdmUgc3RpbGwsIGJ1dCBzbyBlbnRpcmVseSBpbmV4cHJlc3NpYmxlIHRoYXQgaXQgc2VlbXMgdXNlbGVzcyB0byBzYXkgCmFueXRoaW5nIGFib3V0IGl0OyBmb3Igb24gdGhhdCBsZXZlbCBhbGwgZXhwZXJpZW5jZSBpcyB3aXRoaW4gdGhlIG1hbiBpbnN0ZWFkIG9mIAp3aXRob3V0LCBhbmQgdGhlIGdsb3J5IGFuZCB0aGUgYmVhdXR5IG9mIGl0IGlzIG5vIGxvbmdlciBzb21ldGhpbmcgd2hpY2ggaGUgCndhdGNoZXMgd2l0aCBpbnRlcmVzdCwgYnV0IHNvbWV0aGluZyB3aGljaCBoZSBmZWVscyBpbiBoaXMgaW5tb3N0IGhlYXJ0LCBiZWNhdXNlIAppdCBpcyBwYXJ0IG9mIGhpbXNlbGYuIAoKCjIzLsKgwqDCoMKgwqDCoMKgwqDCoMKgClRoZSBvYmplY3Qgb2YgdGhpcyBib29rIGlzIHRvIGdpdmUgc29tZSBoaW50cyBhcyB0byB0aGUgaW5uZXIgc2lkZSBvZiB0aGUgCndvcmxkIGFzIGEgd2hvbGUgYW5kIG9mIG91ciBkYWlseSBsaWZlLiBXZSBzaGFsbCBjb25zaWRlciB0aGlzIGxhdHRlciBpbiB0aHJlZSAKZGl2aXNpb25zLCB3aGljaCB3aWxsIHJlc2VtYmxlIHRoZSBjb25qdWdhdGlvbnMgb2Ygb3VyIHlvdXRoZnVsIGRheXMgaW4gYmVpbmcgCnBhc3NpdmUsIG1pZGRsZSBhbmQgYWN0aXZlIHJlc3BlY3RpdmVseS0tIGhvdyB3ZSBhcmUgaW5mbHVlbmNlZCwgaG93IHdlIAppbmZsdWVuY2Ugb3Vyc2VsdmVzLCBhbmQgaG93IHdlIGluZmx1ZW5jZSBvdGhlcnM7IGFuZCB3ZSBzaGFsbCBjb25jbHVkZSBieSAKb2JzZXJ2aW5nIGEgZmV3IG9mIHRoZSByZXN1bHRzIHdoaWNoIG11c3QgaW5ldml0YWJseSBmbG93IGZyb20gYSB3aWRlciBkaWZmdXNpb24gCm9mIHRoaXMga25vd2xlZGdlIGFzIHRvIHRoZSByZWFsaXRpZXMgb2YgZXhpc3RlbmNlLiAKCgoyNC7CoMKgwqDCoMKgwqDCoMKgwqDCoApDSEFQVEVSIElJIAoKCjI1LsKgwqDCoMKgwqDCoMKgwqDCoMKgClRIRSBXT1JMRCBBUyBBIFdIT0xFIAoKCjI2LsKgwqDCoMKgwqDCoMKgwqDCoMKgCkEgV0lERVIgT1VUTE9PSyAKCgoyNy7CoMKgwqDCoMKgwqDCoMKgwqDCoApXSEVOIHdlIGxvb2sgdXBvbiB0aGUgd29ybGQgYXJvdW5kIHVzLCB3ZSBjYW5ub3QgaGlkZSBmcm9tIG91cnNlbHZlcyB0aGUgCmV4aXN0ZW5jZSBvZiBhIHZhc3QgYW1vdW50IG9mIHNvcnJvdyBhbmQgc3VmZmVyaW5nLiBUcnVlLCBtdWNoIG9mIGl0IGlzIApvYnZpb3VzbHkgdGhlIGZhdWx0IG9mIHRoZSBzdWZmZXJlcnMsIGFuZCBtaWdodCBlYXNpbHkgYmUgYXZvaWRlZCBieSB0aGUgCmV4ZXJjaXNlIG9mIGEgbGl0dGxlIHNlbGYtY29udHJvbCBhbmQgY29tbW9uLXNlbnNlOyBidXQgdGhlcmUgaXMgYWxzbyBtdWNoIHdoaWNoIAppcyBub3QgaW1tZWRpYXRlbHkgc2VsZi1pbmR1Y2VkLCBidXQgdW5kb3VidGVkbHkgY29tZXMgZnJvbSB3aXRob3V0LiBJdCBvZnRlbiAKc2VlbXMgYXMgdGhvdWdoIGV2aWwgdHJpdW1waHMsIGFzIHRob3VnaCBqdXN0aWNlIGZhaWxzIGluIHRoZSBtaWRzdCBvZiB0aGUgc3Rvcm0gCmFuZCBzdHJlc3Mgb2YgdGhlIHJvYXJpbmcgY29uZnVzaW9uIG9mIGxpZmUsIGFuZCBiZWNhdXNlIG9mIHRoaXMgbWFueSBkZXNwYWlyIG9mIAp0aGUgdWx0aW1hdGUgcmVzdWx0LCBhbmQgZG91YnQgd2hldGhlciB0aGVyZSBpcyBpbiB0cnV0aCBhbnkgcGxhbiBvZiBkZWZpbml0ZSAKcHJvZ3Jlc3MgYmVoaW5kIGFsbCB0aGlzIGJld2lsZGVyaW5nIGNoYW9zLiAKCgoyOC7CoMKgwqDCoMKgwqDCoMKgwqDCoApJdCBpcyBhbGwgYSBxdWVzdGlvbiBvZiB0aGUgcG9pbnQgb2YgdmlldzsgdGhlIG1hbiB3aG8gaXMgaGltc2VsZiBpbiB0aGUgCnRoaWNrIG9mIHRoZSBmaWdodCBjYW5ub3QganVkZ2Ugb2YgdGhlIHBsYW4gb2YgdGhlIGdlbmVyYWwgb3IgdGhlIHByb2dyZXNzIG9mIAp0aGUgY29uZmxpY3QuIFRvIHVuZGVyc3RhbmQgdGhlIGJhdHRsZSBhcyBhIHdob2xlLCBvbmUgbXVzdCB3aXRoZHJhdyBmcm9tIHRoZSAKdHVtdWx0IGFuZCBsb29rIGRvd24gdXBvbiB0aGUgZmllbGQgZnJvbSBhYm92ZS4gSW4gZXhhY3RseSB0aGUgc2FtZSB3YXksIHRvIApjb21wcmVoZW5kIHRoZSBwbGFuIG9mIHRoZSBiYXR0bGUgb2YgbGlmZSB3ZSBtdXN0IHdpdGhkcmF3IG91cnNlbHZlcyBmcm9tIGl0IGZvciAKdGhlIHRpbWUsIGFuZCBpbiB0aG91Z2h0IGxvb2sgZG93biB1cG9uIGl0IGZyb20gYWJvdmUtLSBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IApub3Qgb2YgdGhlIGJvZHkgd2hpY2ggcGVyaXNoZXMgYnV0IG9mIHRoZSBzb3VsIHdoaWNoIGxpdmVzIGZvciBldmVyLiBXZSBtdXN0IAp0YWtlIGludG8gYWNjb3VudCBub3Qgb25seSB0aGUgc21hbGwgcGFydCBvZiBsaWZlIHdoaWNoIG91ciBwaHlzaWNhbCBleWVzIGNhbiAKc2VlLCBidXQgdGhlIHZhc3QgdG90YWxpdHkgb2Ygd2hpY2ggYXQgcHJlc2VudCBzbyBtdWNoIGlzIGludmlzaWJsZSB0byB1cy4gCgoKMjkuwqDCoMKgwqDCoMKgwqDCoMKgwqAKVW50aWwgdGhhdCBoYXMgYmVlbiBkb25lIHdlIGFyZSBpbiB0aGUgcG9zaXRpb24gb2YgYSBtYW4gbG9va2luZyBmcm9tIApiZW5lYXRoIGF0IHRoZSB1bmRlciBzaWRlIG9mIHNvbWUgaHVnZSBwaWVjZSBvZiBlbGFib3JhdGUgdGFwZXN0cnkgd2hpY2ggaXMgaW4gCnByb2Nlc3Mgb2YgYmVpbmcgd292ZW4uIFRoZSB3aG9sZSB0aGluZyBpcyB0byB1cyBidXQgYSBjb25mdXNlZCBtZWRsZXkgb2YgdmFyaWVkIApjb2xvdXIsIG9mIHJhZ2dlZCBoYW5naW5nIGVuZHMsIHdpdGhvdXQgb3JkZXIgb3IgYmVhdXR5LCBhbmQgd2UgYXJlIHVuYWJsZSB0byAKY29uY2VpdmUgd2hhdCBhbGwgdGhpcyBtYWQgY2xhdHRlciBvZiBtYWNoaW5lcnkgY2FuIGJlIGRvaW5nOyBidXQgd2hlbiB0aHJvdWdoIApvdXIga25vd2xlZGdlIG9mIHRoZSBoaWRkZW4gc2lkZSBvZiBuYXR1cmUgd2UgYXJlIGFibGUgdG8gbG9vayBkb3duIGZyb20gYWJvdmUsIAp0aGUgcGF0dGVybiBiZWdpbnMgdG8gdW5mb2xkIGl0c2VsZiBiZWZvcmUgb3VyIGV5ZXMsIGFuZCB0aGUgYXBwYXJlbnQgY2hhb3MgCnNob3dzIGl0c2VsZiBhcyBvcmRlcmx5IHByb2dyZXNzLiAKCgozMC7CoMKgwqDCoMKgwqDCoMKgwqDCoApBIG1vcmUgZm9yY2libGUgYW5hbG9neSBtYXkgYmUgb2J0YWluZWQgYnkgY29udGVtcGxhdGluZyBpbiBpbWFnaW5hdGlvbiAKdGhlIHZpZXcgb2YgbGlmZSB3aGljaCB3b3VsZCBwcmVzZW50IGl0c2VsZiB0byBzb21lIHRpbnkgbWljcm9iZSB3aGlybGVkIGRvd24gYnkgCmEgcmVzaXN0bGVzcyBmbG9vZCwgc3VjaCBhcyB0aGF0IHdoaWNoIHJ1c2hlcyB0aHJvdWdoIHRoZSBnb3JnZSBvZiBOaWFnYXJhLiAKQm9pbGluZywgZm9hbWluZywgc3dpcmxpbmcsIHRoZSBmb3JjZSBvZiB0aGF0IHN0cmVhbSBpcyBzbyB0cmVtZW5kb3VzIHRoYXQgaXRzIApjZW50cmUgaXMgbWFueSBmZWV0IGhpZ2hlciB0aGFuIGl0cyBzaWRlcy4gVGhlIG1pY3JvYmUgb24gdGhlIHN1cmZhY2Ugb2Ygc3VjaCBhIAp0b3JyZW50IG11c3QgYmUgZGFzaGVkIGhpdGhlciBhbmQgdGhpdGhlciB3aWxkbHkgYW1pZHN0IHRoZSBmb2FtLCBzb21ldGltZXMgCnRocm93biBoaWdoIGluIGFpciwgc29tZXRpbWVzIHdoaXJsZWQgYmFja3dhcmRzIGluIGFuIGVkZHksIHVuYWJsZSB0byBzZWUgdGhlIApiYW5rcyBiZXR3ZWVuIHdoaWNoIGhlIGlzIHBhc3NpbmcsIGhhdmluZyBldmVyeSBzZW5zZSBvY2N1cGllZCBpbiB0aGUgbWFkIApzdHJ1Z2dsZSB0byBrZWVwIGhpbXNlbGYgc29tZWhvdyBhYm92ZSB3YXRlci4gVG8gaGltIHRoYXQgc3RyaWZlIGFuZCBzdHJlc3MgaXMgCmFsbCB0aGUgd29ybGQgb2Ygd2hpY2ggaGUga25vd3M7IGhvdyBjYW4gaGUgdGVsbCB3aGl0aGVyIHRoZSBzdHJlYW0gaXMgZ29pbmc/CgoKMzEuwqDCoMKgwqDCoMKgwqDCoMKgwqAKQnV0IHRoZSBtYW4gd2hvIHN0YW5kcyBvbiB0aGUgYmFuaywgbG9va2luZyBkb3duIG9uIGl0IGFsbCwgY2FuIHNlZSB0aGF0IAphbGwgdGhpcyBiZXdpbGRlcmluZyB0dW11bHQgaXMgbWVyZWx5IHN1cGVyZmljaWFsLCBhbmQgdGhhdCB0aGUgb25lIGZhY3Qgb2YgcmVhbCAKaW1wb3J0YW5jZSBpcyB0aGUgc3RlYWR5IG9ud2FyZCBzd2VlcCBvZiB0aG9zZSBtaWxsaW9ucyBvZiB0b25zIG9mIHdhdGVyIApkb3dud2FyZHMgdG93YXJkcyB0aGUgc2VhLiBJZiB3ZSBjYW4gZnVydGhlcm1vcmUgc3VwcG9zZSB0aGUgbWljcm9iZSB0byBoYXZlIApzb21lIGlkZWEgb2YgcHJvZ3Jlc3MsIGFuZCB0byBpZGVudGlmeSBpdCB3aXRoIGZvcndhcmQgbW90aW9uLCBoZSBtaWdodCB3ZWxsIGJlIApkaXNtYXllZCB3aGVuIGhlIGZvdW5kIGhpbXNlbGYgaHVybGVkIGFzaWRlIG9yIGJvcm5lIGJhY2t3YXJkcyBieSBhbiBlZGR5OyB3aGlsZSAKdGhlIHNwZWN0YXRvciBjb3VsZCBzZWUgdGhhdCB0aGUgYXBwYXJlbnQgYmFja3dhcmQgbW92ZW1lbnQgd2FzIGJ1dCBhIGRlbHVzaW9uLCAKc2luY2UgZXZlbiB0aGUgbGl0dGxlIGVkZGllcyB3ZXJlIGFsbCBiZWluZyBzd2VwdCBvbndhcmRzIHdpdGggdGhlIHJlc3QuIEl0IGlzIApubyBleGFnZ2VyYXRpb24gdG8gc2F5IHRoYXQgYXMgaXMgdGhlIGtub3dsZWRnZSBvZiB0aGUgbWljcm9iZSBzdHJ1Z2dsaW5nIGluIHRoZSAKc3RyZWFtIHRvIHRoYXQgb2YgdGhlIG1hbiBsb29raW5nIGRvd24gdXBvbiBpdCwgc28gaXMgdGhlIGNvbXByZWhlbnNpb24gb2YgbGlmZSAKcG9zc2Vzc2VkIGJ5IHRoZSBtYW4gaW4gdGhlIHdvcmxkIHRvIHRoYXQgb2Ygb25lIHdobyBrbm93cyBpdHMgaGlkZGVuIHNpZGUuIAoKCjMyLsKgwqDCoMKgwqDCoMKgwqDCoMKgCkJlc3Qgb2YgYWxsLCB0aG91Z2ggbm90IHNvIGVhc3kgdG8gZm9sbG93IGJlY2F1c2Ugb2YgdGhlIGVmZm9ydCBvZiAKaW1hZ2luYXRpb24gaW52b2x2ZWQsIGlzIHRoZSBwYXJhYmxlIG9mZmVyZWQgdG8gdXMgYnkgTXIuIEhpbnRvbiBpbiBoaXMgClNjaWVudGlmaWMgUm9tYW5jZXMuIEZvciBwdXJwb3NlcyBjb25uZWN0ZWQgd2l0aCBoaXMgYXJndW1lbnQgTXIuIEhpbnRvbiAKc3VwcG9zZXMgdGhlIGNvbnN0cnVjdGlvbiBvZiBhIGxhcmdlIHZlcnRpY2FsIHdvb2RlbiBmcmFtZSwgZnJvbSB0b3AgdG8gYm90dG9tIApvZiB3aGljaCBhcmUgdGlnaHRseSBzdHJldGNoZWQgYSBtdWx0aXR1ZGUgb2YgdGhyZWFkcyBhdCBhbGwgc29ydHMgb2YgYW5nbGVzLiBJZiAKdGhlbiBhIHNoZWV0IG9mIHBhcGVyIGJlIGluc2VydGVkIGhvcml6b250YWxseSBpbiB0aGUgZnJhbWUgc28gdGhhdCB0aGVzZSAKdGhyZWFkcyBwYXNzIHRocm91Z2ggaXQsIGl0IGlzIG9idmlvdXMgdGhhdCBlYWNoIHRocmVhZCB3aWxsIG1ha2UgYSBtaW51dGUgaG9sZSAKaW4gdGhlIHBhcGVyLiBJZiB0aGVuIHRoZSBmcmFtZSBhcyBhIHdob2xlIGJlIG1vdmVkIHNsb3dseSB1cHdhcmRzLCBidXQgdGhlIApwYXBlciBrZXB0IHN0aWxsLCB2YXJpb3VzIGVmZmVjdHMgd2lsbCBiZSBwcm9kdWNlZC4gV2hlbiBhIHRocmVhZCBpcyAKcGVycGVuZGljdWxhciBpdCB3aWxsIHNsaXAgdGhyb3VnaCBpdHMgaG9sZSB3aXRob3V0IGRpZmZpY3VsdHksIGJ1dCB3aGVuIGEgCnRocmVhZCBpcyBmaXhlZCBhdCBhbiBhbmdsZSBpdCB3aWxsIGN1dCBhIHNsaXQgaW4gdGhlIHBhcGVyIGFzIHRoZSBmcmFtZSBtb3Zlcy4KCgozMy7CoMKgwqDCoMKgwqDCoMKgwqDCoApTdXBwb3NlIGluc3RlYWQgb2YgYSBzaGVldCBvZiBwYXBlciB3ZSBoYXZlIGEgdGhpbiBzaGVldCBvZiB3YXgsIGFuZCBsZXQgCnRoZSB3YXggYmUgc3VmZmljaWVudGx5IHZpc2NvdXMgdG8gY2xvc2UgdXAgYmVoaW5kIHRoZSBtb3ZpbmcgdGhyZWFkLiBUaGVuIAppbnN0ZWFkIG9mIGEgbnVtYmVyIG9mIHNsaXRzIHdlIHNoYWxsIGhhdmUgYSBudW1iZXIgb2YgbW92aW5nIGhvbGVzLCAKYW5kIHRvIGEgc2lnaHQgd2hpY2ggY2Fubm90IHNlZSB0aGUgdGhyZWFkcyB0aGF0IGNhdXNlIHRoZW0sIHRoZSBtb3ZlbWVudCBvZiAKdGhlc2UgaG9sZXMgd2lsbCBuZWNlc3NhcmlseSBhcHBlYXIgaXJyZWd1bGFyIGFuZCBpbmV4cGxpY2FibGUuIFNvbWUgd2lsbCAKYXBwcm9hY2ggb25lIGFub3RoZXIsIHNvbWUgd2lsbCByZWNlZGU7IHZhcmlvdXMgcGF0dGVybnMgYW5kIGNvbWJpbmF0aW9ucyB3aWxsIApiZSBmb3JtZWQgYW5kIGRpc3NvbHZlOyBhbGwgZGVwZW5kaW5nIHVwb24gdGhlIGFycmFuZ2VtZW50IG9mIHRoZSBpbnZpc2libGUgCnRocmVhZHMuIE5vdywgYnkgYSBzdGlsbCBtb3JlIGRhcmluZyBmbGlnaHQgb2YgZmFuY3ksIHRoaW5rIG5vdCBvZiB0aGUgaG9sZXMgYnV0IApvZiB0aGUgbWludXRlIHNlY3Rpb25zIG9mIHRocmVhZCBmb3IgdGhlIG1vbWVudCBmaWxsaW5nIHRoZW0sIGFuZCBpbWFnaW5lIHRob3NlIApzZWN0aW9ucyBhcyBjb25zY2lvdXMgYXRvbXMuIFRoZXkgdGhpbmsgb2YgdGhlbXNlbHZlcyBhcyBzZXBhcmF0ZSBlbnRpdGllcywgdGhleSAKZmluZCB0aGVtc2VsdmVzIG1vdmluZyB3aXRob3V0IHRoZWlyIG93biB2b2xpdGlvbiBpbiB3aGF0IHNlZW1zIGEgbWF6ZSBvZiAKaW5leHRyaWNhYmxlIGNvbmZ1c2lvbiwgYW5kIHRoaXMgYmV3aWxkZXJpbmcgZGFuY2UgaXMgbGlmZSBhcyB0aGV5IGtub3cgaXQuIFlldCAKYWxsIHRoaXMgYXBwYXJlbnQgY29tcGxleGl0eSBhbmQgYWltbGVzcyBtb3Rpb24gaXMgaW4gZmFjdCBhIGRlbHVzaW9uIGNhdXNlZCBieSAKdGhlIGxpbWl0YXRpb24gb2YgdGhlIGNvbnNjaW91c25lc3Mgb2YgdGhvc2UgYXRvbXMsIGZvciBvbmx5IG9uZSAKZXh0cmVtZWx5IHNpbXBsZSBtb3ZlbWVudCBpcyByZWFsbHkgdGFraW5nIHBsYWNlLS0gdGhlIHN0ZWFkeSB1cHdhcmQgbW90aW9uIG9mIAp0aGUgZnJhbWUgYXMgYSB3aG9sZS4gQnV0IHRoZSBhdG9tIGNhbiBuZXZlciBjb21wcmVoZW5kIHRoYXQgdW50aWwgaXQgcmVhbGlzZXMgCnRoYXQgaXQgaXMgbm90IGEgc2VwYXJhdGVkIGZyYWdtZW50LCBidXQgcGFydCBvZiBhIHRocmVhZC4gCgoKMzQuwqDCoMKgwqDCoMKgwqDCoMKgwqAKYCBXaGljaCB0aGluZ3MgYXJlIGFuIGFsbGVnb3J5LCcgYW5kIGEgdmVyeSBiZWF1dGlmdWwgb25lOyBmb3IgdGhlIAp0aHJlYWRzIGFyZSBvdXJzZWx2ZXMtLSBvdXIgdHJ1ZSBzZWx2ZXMsIG91ciBzb3Vscy0tIGFuZCB0aGUgYXRvbXMgcmVwcmVzZW50IHVzIAppbiB0aGlzIGVhcnRobHkgbGlmZS4gU28gbG9uZyBhcyB3ZSBjb25maW5lIG91ciBjb25zY2lvdXNuZXNzIHRvIHRoZSBhdG9tLCBhbmQgCmxvb2sgb24gbGlmZSBvbmx5IGZyb20gdGhpcyBlYXJ0aGx5IHN0YW5kcG9pbnQsIHdlIGNhbiBuZXZlciB1bmRlcnN0YW5kIHdoYXQgaXMgCmhhcHBlbmluZyBpbiB0aGUgd29ybGQuIEJ1dCBpZiB3ZSB3aWxsIHJhaXNlIG91ciBjb25zY2lvdXNuZXNzIHRvIHRoZSBwb2ludCBvZiAKdmlldyBvZiB0aGUgc291bCwgdGhlIHRocmVhZCBvZiB3aGljaCB0aGUgYm9kaWx5IGxpZmUgaXMgb25seSBhIG1pbnV0ZSBwYXJ0IGFuZCAKYSB0ZW1wb3JhcnkgZXhwcmVzc2lvbiwgd2Ugc2hhbGwgdGhlbiBzZWUgdGhhdCB0aGVyZSBpcyBhIHNwbGVuZGlkIHNpbXBsaWNpdHkgYXQgCnRoZSBiYWNrIG9mIGFsbCB0aGUgY29tcGxleGl0eSwgYSB1bml0eSBiZWhpbmQgYWxsIHRoZSBkaXZlcnNpdHkuIFRoZSBjb21wbGV4aXR5IAphbmQgdGhlIGRpdmVyc2l0eSBhcmUgaWxsdXNpb25zIHByb2R1Y2VkIGJ5IG91ciBsaW1pdGF0aW9uczsgdGhlIHNpbXBsaWNpdHkgYW5kIAp0aGUgdW5pdHkgYXJlIHJlYWwuIAoKCjM1LsKgwqDCoMKgwqDCoMKgwqDCoMKgClRoZSB3b3JsZCBpbiB3aGljaCB3ZSBsaXZlIGhhcyBhIGhpZGRlbiBzaWRlIHRvIGl0LCBmb3IgdGhlIGNvbmNlcHRpb24gb2YgCml0IGluIHRoZSBtaW5kIG9mIHRoZSBvcmRpbmFyeSBtYW4gaW4gdGhlIHN0cmVldCBpcyB1dHRlcmx5IGltcGVyZmVjdCBhbG9uZyAKdGhyZWUgcXVpdGUgZGlzdGluY3QgbGluZXMuIEZpcnN0LCBpdCBoYXMgYW4gZXh0ZW5zaW9uIGF0IGl0cyBvd24gbGV2ZWwgd2hpY2ggaGUgCmlzIGF0IHByZXNlbnQgcXVpdGUgaW5jYXBhYmxlIG9mIGFwcHJlY2lhdGluZzsgc2Vjb25kbHksIGl0IGhhcyBhIGhpZ2hlciBzaWRlIAp3aGljaCBpcyB0b28gcmVmaW5lZCBmb3IgaGlzIHVuZGV2ZWxvcGVkIHBlcmNlcHRpb25zOyB0aGlyZGx5LCBpdCBoYXMgYSBtZWFuaW5nIAphbmQgYSBwdXJwb3NlIG9mIHdoaWNoIGhlIHVzdWFsbHkgaGFzIG5vdCB0aGUgZmFpbnRlc3QgZ2xpbXBzZS4gVG8gc2F5IHRoYXQgd2UgCmRvIG5vdCBzZWUgdGhlIHdob2xlIG9mIG91ciB3b3JsZCBpcyB0byBzdGF0ZSB0aGUgY2FzZSBmYXIgdG9vIGZlZWJseTsgd2hhdCB3ZSAKc2VlIGlzIGFuIGFic29sdXRlbHkgaW5zaWduaWZpY2FudCBwYXJ0IG9mIGl0LCBiZWF1dGlmdWwgdGhvdWdoIHRoYXQgcGFydCBtYXkgCmJlLiBBbmQganVzdCBhcyB0aGUgYWRkaXRpb25hbCBleHRlbnNpb24gaXMgaW5maW5pdGUgY29tcGFyZWQgdG8gb3VyIGlkZWEgb2YgCnNwYWNlLCBhbmQgY2Fubm90IGJlIGV4cHJlc3NlZCBpbiBpdHMgdGVybXMsIHNvIGFyZSB0aGUgc2NvcGUgYW5kIHRoZSBzcGxlbmRvdXIgCm9mIHRoZSB3aG9sZSBpbmZpbml0ZWx5IGdyZWF0ZXIgdGhhbiBhbnkgY29uY2VwdGlvbiB0aGF0IGNhbiBwb3NzaWJseSBiZSBmb3JtZWQgCm9mIGl0IGhlcmUsIGFuZCB0aGV5IGNhbm5vdCBiZSBleHByZXNzZWQgaW4gYW55IHRlcm1zIG9mIHRoYXQgcGFydCBvZiB0aGUgd29ybGQgCndoaWNoIHdlIGtub3cuIAoKCjM2LsKgwqDCoMKgwqDCoMKgwqDCoMKgClRIRSBGT1VSVEggRElNRU5TSU9OIAoKCjM3LsKgwqDCoMKgwqDCoMKgwqDCoMKgClRoZSBleHRlbnNpb24gc3Bva2VuIG9mIHVuZGVyIHRoZSBmaXJzdCBoZWFkIGhhcyBvZnRlbiBiZWVuIGNhbGxlZCB0aGUgCmZvdXJ0aCBkaW1lbnNpb24uIE1hbnkgd3JpdGVycyBoYXZlIHNjb2ZmZWQgYXQgdGhpcyBhbmQgZGVuaWVkIGl0cyBleGlzdGVuY2UsIAp5ZXQgZm9yIGFsbCB0aGF0IGl0IHJlbWFpbnMgYSBmYWN0IHRoYXQgb3VyIHBoeXNpY2FsIHdvcmxkIGlzIGluIHRydXRoIGEgd29ybGQgCm9mIG1hbnkgZGltZW5zaW9ucywgYW5kIHRoYXQgZXZlcnkgb2JqZWN0IGluIGl0IGhhcyBhbiBleHRlbnNpb24sIGhvd2V2ZXIgCm1pbnV0ZSwgaW4gYSBkaXJlY3Rpb24gd2hpY2ggaXMgdW50aGlua2FibGUgdG8gdXMgYXQgb3VyIHByZXNlbnQgc3RhZ2Ugb2YgbWVudGFsIApldm9sdXRpb24uIFdoZW4gd2UgZGV2ZWxvcCBhc3RyYWwgc2Vuc2VzIHdlIGFyZSBicm91Z2h0IHNvIG11Y2ggbW9yZSBkaXJlY3RseSAKaW50byBjb250YWN0IHdpdGggdGhpcyBleHRlbnNpb24gdGhhdCBvdXIgbWluZHMgYXJlIG1vcmUgb3IgbGVzcyBmb3JjZWQgaW50byAKcmVjb2duaXRpb24gb2YgaXQsIGFuZCB0aGUgbW9yZSBpbnRlbGxpZ2VudCBncmFkdWFsbHkgZ3JvdyB0byB1bmRlcnN0YW5kIGl0OyAKdGhvdWdoIHRoZXJlIGFyZSB0aG9zZSBvZiBsZXNzIGludGVsbGVjdHVhbCBncm93dGggd2hvLCBldmVuIGFmdGVyIGRlYXRoIGFuZCBpbiAKdGhlIGFzdHJhbCB3b3JsZCwgY2xpbmcgZGVzcGVyYXRlbHkgdG8gdGhlaXIgYWNjdXN0b21lZCBsaW1pdGF0aW9ucyBhbmQgYWRvcHQgCm1vc3QgZXh0cmFvcmRpbmFyeSBhbmQgaXJyYXRpb25hbCBoeXBvdGhlc2VzIHRvIGF2b2lkIGFkbWl0dGluZyB0aGUgZXhpc3RlbmNlIG9mIAp0aGUgaGlnaGVyIGxpZmUgd2hpY2ggdGhleSBzbyBncmVhdGx5IGZlYXIuIAoKCjM4LsKgwqDCoMKgwqDCoMKgwqDCoMKgCkJlY2F1c2UgdGhlIGVhc2llc3Qgd2F5IGZvciBtb3N0IHBlb3BsZSB0byBhcnJpdmUgYXQgYSByZWFsaXNhdGlvbiBvZiB0aGUgCmZvdXJ0aCBkaW1lbnNpb24gb2Ygc3BhY2UgaXMgdG8gZGV2ZWxvcCB3aXRoaW4gdGhlbXNlbHZlcyB0aGUgcG93ZXIgb2YgYXN0cmFsIApzaWdodCwgbWFueSBwZXJzb25zIGhhdmUgY29tZSB0byBzdXBwb3NlIHRoYXQgdGhlIGZvdXJ0aCBkaW1lbnNpb24gaXMgYW4gCmV4Y2x1c2l2ZSBhcHBhbmFnZSBvZiB0aGUgYXN0cmFsIHdvcmxkLiBBIGxpdHRsZSB0aG91Z2h0IHdpbGwgc2hvdyB0aGF0IHRoaXMgCmNhbm5vdCBiZSBzby4gRnVuZGFtZW50YWxseSB0aGVyZSBpcyBvbmx5IG9uZSBraW5kIG9mIG1hdHRlciBleGlzdGluZyBpbiB0aGUgCnVuaXZlcnNlLCBhbHRob3VnaCB3ZSBjYWxsIGl0IHBoeXNpY2FsLCBhc3RyYWwgb3IgbWVudGFsIGFjY29yZGluZyB0byB0aGUgZXh0ZW50IApvZiBpdHMgc3ViZGl2aXNpb24gYW5kIHRoZSByYXBpZGl0eSBvZiBpdHMgdmlicmF0aW9uLiBDb25zZXF1ZW50bHkgdGhlIApkaW1lbnNpb25zIG9mIHNwYWNlLS0gaWYgdGhleSBleGlzdCBhdCBhbGwtLSBleGlzdCBpbmRlcGVuZGVudGx5IG9mIHRoZSBtYXR0ZXIgCndoaWNoIGxpZXMgd2l0aGluIHRoZW07IGFuZCB3aGV0aGVyIHRoYXQgc3BhY2UgaGFzIHRocmVlIGRpbWVuc2lvbnMgb3IgZm91ciBvciAKbW9yZSwgYWxsIHRoZSBtYXR0ZXIgd2l0aGluIGl0IGV4aXN0cyBzdWJqZWN0IHRvIHRob3NlIGNvbmRpdGlvbnMsIHdoZXRoZXIgd2UgCmFyZSBhYmxlIHRvIGFwcHJlY2lhdGUgdGhlbSBvciBub3QuIAoKCjM5LsKgwqDCoMKgwqDCoMKgwqDCoMKgCkl0IG1heSBwZXJoYXBzIGhlbHAgdXMgYSBsaXR0bGUgaW4gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhpcyBtYXR0ZXIgaWYgd2UgCnJlYWxpc2UgdGhhdCB3aGF0IHdlIGNhbGwgc3BhY2UgaXMgYSBsaW1pdGF0aW9uIG9mIGNvbnNjaW91c25lc3MsIGFuZCB0aGF0IHRoZXJlIAppcyBhIGhpZ2hlciBsZXZlbCBhdCB3aGljaCBhIHN1ZmZpY2llbnRseSBkZXZlbG9wZWQgY29uc2Npb3VzbmVzcyBpcyBlbnRpcmVseSAKZnJlZSBmcm9tIHRoaXMuIFdlIG1heSBpbnZlc3QgdGhpcyBoaWdoZXIgY29uc2Npb3VzbmVzcyB3aXRoIHRoZSBwb3dlciBvZiAKZXhwcmVzc2lvbiBpbiBhbnkgbnVtYmVyIG9mIGRpcmVjdGlvbnMsIGFuZCBtYXkgdGhlbiBhc3N1bWUgdGhhdCBlYWNoIGRlc2NlbnQgCmludG8gYSBkZW5zZXIgd29ybGQgb2YgbWF0dGVyIGltcG9zZXMgdXBvbiBpdCBhbiBhZGRpdGlvbmFsIGxpbWl0YXRpb24sIGFuZCAKc2h1dHMgb2ZmIHRoZSBwZXJjZXB0aW9uIG9mIG9uZSBvZiB0aGVzZSBkaXJlY3Rpb25zLiBXZSBtYXkgc3VwcG9zZSB0aGF0IGJ5IHRoZSAKdGltZSB0aGUgY29uc2Npb3VzbmVzcyBoYXMgZGVzY2VuZGVkIGFzIGZhciBhcyB0aGUgbWVudGFsIHdvcmxkIG9ubHkgZml2ZSBvZiAKdGhlc2UgZGlyZWN0aW9ucyByZW1haW4gdG8gaXQ7IHRoYXQgd2hlbiBpdCBkZXNjZW5kcyBvciBtb3ZlcyBvdXR3YXJkIG9uY2UgbW9yZSAKdG8gdGhlIGFzdHJhbCBsZXZlbCBpdCBsb3NlcyB5ZXQgb25lIG1vcmUgb2YgaXRzIHBvd2VycywgYW5kIHNvIGlzIGxpbWl0ZWQgdG8gCnRoZSBjb25jZXB0aW9uIG9mIGZvdXIgZGltZW5zaW9uczsgdGhlbiB0aGUgZnVydGhlciBkZXNjZW50IG9yIG91dHdhcmQgbW92ZW1lbnQgCndoaWNoIGJyaW5ncyBpdCBpbnRvIHRoZSBwaHlzaWNhbCB3b3JsZCBjdXRzIG9mZiBmcm9tIGl0IHRoZSBwb3NzaWJpbGl0eSBvZiAKZ3Jhc3BpbmcgZXZlbiB0aGF0IGZvdXJ0aCBkaW1lbnNpb24sIGFuZCBzbyB3ZSBmaW5kIG91cnNlbHZlcyBjb25maW5lZCB0byB0aGUgCnRocmVlIHdpdGggd2hpY2ggd2UgYXJlIGZhbWlsaWFyLiAKCgo0MC7CoMKgwqDCoMKgwqDCoMKgwqDCoApMb29raW5nIGF0IGl0IGZyb20gdGhpcyBwb2ludCBvZiB2aWV3LCBpdCBpcyBjbGVhciB0aGF0IHRoZSBjb25kaXRpb25zIG9mIAp0aGUgdW5pdmVyc2UgaGF2ZSByZW1haW5lZCB1bmFmZmVjdGVkLCB0aG91Z2ggb3VyIHBvd2VyIG9mIGFwcHJlY2lhdGluZyB0aGVtIGhhcyAKY2hhbmdlZDsgc28gdGhhdCwgYWx0aG91Z2ggaXQgaXMgdHJ1ZSB0aGF0IHdoZW4gb3VyIGNvbnNjaW91c25lc3MgaXMgZnVuY3Rpb25pbmcgCnRocm91Z2ggYXN0cmFsIG1hdHRlciB3ZSBhcmUgYWJsZSB0byBhcHByZWNpYXRlIGEgZm91cnRoIGRpbWVuc2lvbiB3aGljaCAKbm9ybWFsbHkgaXMgaGlkZGVuIGZyb20gdXMgd2hpbGUgd2Ugd29yayB0aHJvdWdoIHRoZSBwaHlzaWNhbCBicmFpbiwgd2UgbXVzdCBub3QgCnRoZXJlZm9yZSBtYWtlIHRoZSBtaXN0YWtlIG9mIHRoaW5raW5nIHRoYXQgdGhlIGZvdXJ0aCBkaW1lbnNpb24gYmVsb25ncyB0byB0aGUgCmFzdHJhbCB3b3JsZCBvbmx5IGFuZCB0aGF0IHBoeXNpY2FsIG1hdHRlciBleGlzdHMgc29tZWhvdyBpbiBhIGRpZmZlcmVudCBraW5kIG9mIApzcGFjZSBmcm9tIHRoZSBhc3RyYWwgb3IgbWVudGFsLiBTdWNoIGEgc3VnZ2VzdGlvbiBpcyBzaG93biB0byBiZSB1bmp1c3RpZmllZCBieSAKdGhlIGZhY3QgdGhhdCBpdCBpcyBwb3NzaWJsZSBmb3IgYSBtYW4gdXNpbmcgaGlzIHBoeXNpY2FsIGJyYWluIHRvIGF0dGFpbiBieSAKbWVhbnMgb2YgcHJhY3RpY2UgdGhlIHBvd2VyIG9mIGNvbXByZWhlbmRpbmcgc29tZSBvZiB0aGUgZm91ci1kaW1lbnNpb25hbCBmb3Jtcy4KCgo0MS7CoMKgwqDCoMKgwqDCoMKgwqDCoApJIGRvIG5vdCB3aXNoIGhlcmUgdG8gdGFrZSB1cCBmdWxseSB0aGUgY29uc2lkZXJhdGlvbiBvZiB0aGlzIGZhc2NpbmF0aW5nIApzdWJqZWN0OyB0aG9zZSB3aG8gd291bGQgZm9sbG93IGl0IGZ1cnRoZXIgc2hvdWxkIGFwcGx5IHRoZW1zZWx2ZXMgdG8gdGhlIHdvcmtzIApvZiBNci4gQy4gSC4gSGludG9uLS0gU2NpZW50aWZpYyBSb21hbmNlcyBhbmQgVGhlIEZvdXJ0aCBEaW1lbnNpb24gCi0tIHRoZSBmb3JtZXIgYm9vayBmb3IgYWxsIHRoZSBpbnRlcmVzdGluZyBwb3NzaWJpbGl0aWVzIGNvbm5lY3RlZCB3aXRoIHRoaXMgCnN0dWR5LCBhbmQgdGhlIGxhdHRlciBmb3IgdGhlIG1lYW5zIHdoZXJlYnkgdGhlIG1pbmQgY2FuIHJlYWxpc2UgdGhlIGZvdXJ0aCAKZGltZW5zaW9uIGFzIGEgZmFjdC4gRm9yIG91ciBwcmVzZW50IHB1cnBvc2VzIGl0IGlzIG5lY2Vzc2FyeSBvbmx5IHRvIGluZGljYXRlIAp0aGF0IGhlcmUgaXMgYW4gYXNwZWN0IG9yIGV4dGVuc2lvbiBvZiBvdXIgd29ybGQgd2hpY2gsIHRob3VnaCB1dHRlcmx5IHVua25vd24gCnRvIHRoZSB2YXN0IG1ham9yaXR5IG9mIG1lbiwgcmVxdWlyZXMgdG8gYmUgc3R1ZGllZCBhbmQgdG8gYmUgdGFrZW4gaW50byAKY29uc2lkZXJhdGlvbiBieSB0aG9zZSB3aG8gd2lzaCB0byB1bmRlcnN0YW5kIHRoZSB3aG9sZSBvZiBsaWZlIGluc3RlYWQgb2Ygb25seSAKYSB0aW55IGZyYWdtZW50IG9mIGl0LiAKCgo0Mi7CoMKgwqDCoMKgwqDCoMKgwqDCoApUSEUgSElHSEVSIFdPUkxEIAoKCjQzLsKgwqDCoMKgwqDCoMKgwqDCoMKgClRoZXJlIGlzIGEgaGlkZGVuIHNpZGUgdG8gb3VyIHBoeXNpY2FsIHdvcmxkIGluIGEgc2Vjb25kIGFuZCBoaWdoZXIgc2Vuc2UgCndoaWNoIGlzIHdlbGwga25vd24gdG8gYWxsIHN0dWRlbnRzIG9mIFRoZW9zb3BoeSwgZm9yIG1hbnkgbGVjdHVyZXMgaGF2ZSBiZWVuIApkZWxpdmVyZWQgYW5kIG1hbnkgYm9va3MgaGF2ZSBiZWVuIHdyaXR0ZW4gaW4gdGhlIGVuZGVhdm91ciB0byBkZXNjcmliZSB0aGUgCmFzdHJhbCBhbmQgbWVudGFsIHdvcmxkcy0tIHRoZSB1bnNlZW4gcmVhbG0gd2hpY2ggaW50ZXJwZW5ldHJhdGVzIHRoYXQgd2l0aCAKd2hpY2ggd2UgYXJlIGFsbCBmYW1pbGlhciwgYW5kIGZvcm1zIGJ5IGZhciB0aGUgbW9zdCBpbXBvcnRhbnQgcGFydCBvZiBpdC4gQSAKZ29vZCBkZWFsIG9mIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgaGlnaGVyIGFzcGVjdCBvZiBvdXIgd29ybGQgaGFzIGJlZW4gZ2l2ZW4gaW4gCnRoZSBmaWZ0aCBhbmQgdGhlIHNpeHRoIG9mIHRoZSBUaGVvc29waGljYWwgbWFudWFscywgYW5kIGluIG15IG93biBib29rIHVwb24gClRoZSBPdGhlciBTaWRlIG9mIERlYXRoOyBzbyBoZXJlIEkgbmVlZCBkbyBubyBtb3JlIHRoYW4gbWFrZSBhIHNob3J0IApnZW5lcmFsIHN0YXRlbWVudCBmb3IgdGhlIGJlbmVmaXQgb2YgYW55IHJlYWRlciB3aG8gaGFzIG5vdCB5ZXQgbWV0IHdpdGggdGhvc2UgCndvcmtzLiAKCgo0NC7CoMKgwqDCoMKgwqDCoMKgwqDCoApNb2Rlcm4gcGh5c2ljaXN0cyB0ZWxsIHVzIHRoYXQgbWF0dGVyIGlzIGludGVycGVuZXRyYXRlZCBieSBhZXRoZXItLSBhIApoeXBvdGhldGljYWwgc3Vic3RhbmNlIHdoaWNoIHRoZXkgZW5kb3cgd2l0aCBtYW55IGFwcGFyZW50bHkgY29udHJhZGljdG9yeSAKcXVhbGl0aWVzLiBUaGUgb2NjdWx0aXN0IGtub3dzIHRoYXQgdGhlcmUgYXJlIG1hbnkgdmFyaWV0aWVzIG9mIHRoaXMgZmluZXIgCmludGVycGVuZXRyYXRpdmUgbWF0dGVyLCBhbmQgdGhhdCBzb21lIG9mIHRoZSBxdWFsaXRpZXMgYXR0cmlidXRlZCB0byBpdCBieSB0aGUgCnNjaWVudGlmaWMgbWVuIGJlbG9uZyBub3QgdG8gaXQgYXQgYWxsLCBidXQgdG8gdGhlIHByaW1vcmRpYWwgc3Vic3RhbmNlIG9mIHdoaWNoIAppdCBpcyB0aGUgbmVnYXRpb24uIEkgZG8gbm90IHdpc2ggaGVyZSB0byB0dXJuIGFzaWRlIGZyb20gdGhlIG9iamVjdCBvZiB0aGlzIApib29rIHRvIGdpdmUgYSBsZW5ndGh5IGRpc3F1aXNpdGlvbiB1cG9uIHRoZSBxdWFsaXRpZXMgb2YgYWV0aGVyOyB0aG9zZSB3aG8gd2lzaCAKdG8gc3R1ZHkgdGhpcyBzdWJqZWN0IG1heSBiZSByZWZlcnJlZCB0byB0aGUgYm9vayB1cG9uIE9jY3VsdCBDaGVtaXN0cnkgCiwgcC4gOTMgLiBIZXJlIGl0IG11c3Qgc3VmZmljZSB0byBzYXkgdGhhdCB0aGUgdHJ1ZSBhZXRoZXIgb2Ygc3BhY2UgCmV4aXN0cywganVzdCBhcyBzY2llbnRpZmljIG1lbiBoYXZlIHN1cHBvc2VkLCBhbmQgcG9zc2Vzc2VzIG1vc3Qgb2YgdGhlIGN1cmlvdXMgCmNvbnRyYWRpY3RvcnkgcXVhbGl0aWVzIGFzY3JpYmVkIHRvIGl0LiBJdCBpcyBub3QsIGhvd2V2ZXIsIG9mIHRoYXQgYWV0aGVyIAppdHNlbGYsIGJ1dCBvZiBtYXR0ZXIgYnVpbHQgdXAgb3V0IG9mIHRoZSBidWJibGVzIGluIGl0LCB0aGF0IHRoZSBpbm5lciB3b3JsZHMgCm9mIGZpbmVyIG1hdHRlciBhcmUgYnVpbHQsIG9mIHdoaWNoIHdlIGhhdmUgc3Bva2VuIGp1c3Qgbm93LiBUaGF0IHdpdGggd2hpY2ggd2UgCmFyZSBjb25jZXJuZWQgYXQgdGhlIG1vbWVudCBpcyB0aGUgZmFjdCB0aGF0IGFsbCB0aGUgbWF0dGVyIHZpc2libGUgdG8gdXMgaXMgCmludGVycGVuZXRyYXRlZCBub3Qgb25seSBieSBhZXRoZXIsIGJ1dCBhbHNvIGJ5IHZhcmlvdXMga2luZHMgb2YgZmluZXIgbWF0dGVyLCAKYW5kIHRoYXQgb2YgdGhpcyBmaW5lciBtYXR0ZXIgdGhlcmUgYXJlIG1hbnkgZGVncmVlcy4gCgoKNDUuwqDCoMKgwqDCoMKgwqDCoMKgwqAKVG8gdGhlIHR5cGUgd2hpY2ggaXMgbmVhcmVzdCB0byB0aGUgcGh5c2ljYWwgd29ybGQgb2NjdWx0IHN0dWRlbnRzIGhhdmUgCmdpdmVuIHRoZSBuYW1lIGFzdHJhbCBtYXR0ZXI7IHRoZSBraW5kIG5leHQgYWJvdmUgdGhhdCBoYXMgYmVlbiBjYWxsZWQgbWVudGFsLCAKYmVjYXVzZSBvdXQgb2YgaXRzIHRleHR1cmUgaXMgYnVpbHQgdGhhdCBtZWNoYW5pc20gb2YgY29uc2Npb3VzbmVzcyB3aGljaCBpcyAKY29tbW9ubHkgY2FsbGVkIHRoZSBtaW5kIGluIG1hbjsgYW5kIHRoZXJlIGFyZSBvdGhlciB0eXBlcyBmaW5lciBzdGlsbCwgd2l0aCAKd2hpY2ggZm9yIHRoZSBtb21lbnQgd2UgYXJlIG5vdCBjb25jZXJuZWQuIEV2ZXJ5IHBvcnRpb24gb2Ygc3BhY2Ugd2l0aCB3aGljaCB3ZSAKaGF2ZSB0byBkbyBtdXN0IGJlIHRob3VnaHQgb2YgYXMgY29udGFpbmluZyBhbGwgdGhlc2UgZGlmZmVyZW50IGtpbmRzIG9mIG1hdHRlci4gCkl0IGlzIHByYWN0aWNhbGx5IGEgc2NpZW50aWZpYyBwb3N0dWxhdGUgdGhhdCBldmVuIGluIHRoZSBkZW5zZXN0IGZvcm1zIG9mIAptYXR0ZXIgbm8gdHdvIHBhcnRpY2xlcyBldmVyIHRvdWNoIG9uZSBhbm90aGVyLCBidXQgZWFjaCBmbG9hdHMgYWxvbmUgaW4gaXRzIApmaWVsZCBvZiBhZXRoZXIsIGxpa2UgYSBzdW4gaW4gc3BhY2UuIEp1c3QgaW4gdGhlIHNhbWUgd2F5IGVhY2ggcGFydGljbGUgb2YgdGhlIApwaHlzaWNhbCBhZXRoZXIgZmxvYXRzIGluIGEgc2VhIG9mIGFzdHJhbCBtYXR0ZXIsIGFuZCBlYWNoIGFzdHJhbCBwYXJ0aWNsZSBpbiAKdHVybiBmbG9hdHMgaW4gYSBtZW50YWwgb2NlYW47IHNvIHRoYXQgYWxsIHRoZXNlIGFkZGl0aW9uYWwgd29ybGRzIG5lZWQgbm8gbW9yZSAKc3BhY2UgdGhhbiBkb2VzIHRoaXMgZnJhZ21lbnQgd2hpY2ggd2Uga25vdywgZm9yIGluIHRydXRoIHRoZXkgYXJlIGFsbCBwYXJ0cyBvZiAKb25lIGFuZCB0aGUgc2FtZSB3b3JsZC4gCgoKNDYuwqDCoMKgwqDCoMKgwqDCoMKgwqAKTWFuIGhhcyB3aXRoaW4gaGltc2VsZiBtYXR0ZXIgb2YgdGhlc2UgZmluZXIgZ3JhZGVzLCBhbmQgYnkgbGVhcm5pbmcgdG8gCmZvY3VzIGhpcyBjb25zY2lvdXNuZXNzIGluIGl0LCBpbnN0ZWFkIG9mIG9ubHkgaW4gaGlzIHBoeXNpY2FsIGJyYWluLCBoZSBtYXkgCmJlY29tZSBjb2duaXNhbnQgb2YgdGhlc2UgaW5uZXIgYW5kIGhpZ2hlciBwYXJ0cyBvZiB0aGUgd29ybGQsIGFuZCBhY3F1aXJlIG11Y2ggCmtub3dsZWRnZSBvZiB0aGUgZGVlcGVzdCBpbnRlcmVzdCBhbmQgdmFsdWUuIFRoZSBuYXR1cmUgb2YgdGhpcyB1bnNlZW4gd29ybGQsIAppdHMgc2NlbmVyeSwgaXRzIGluaGFiaXRhbnRzLCBpdHMgcG9zc2liaWxpdGllcywgYXJlIGRlc2NyaWJlZCBpbiB0aGUgd29ya3MgCmFib3ZlIG1lbnRpb25lZC4gSXQgaXMgdGhlIGV4aXN0ZW5jZSBvZiB0aGVzZSBoaWdoZXIgcmVhbG1zIG9mIG5hdHVyZSB0aGF0IG1ha2VzIApvY2N1bHRpc20gcG9zc2libGU7IGFuZCBmZXcgaW5kZWVkIGFyZSB0aGUgZGVwYXJ0bWVudHMgb2YgbGlmZSBpbiB3aGljaCB0aGVpciAKaW5mbHVlbmNlIGhhcyBub3QgdG8gYmUgY29uc2lkZXJlZC4gRnJvbSB0aGUgY3JhZGxlIHRvIHRoZSBncmF2ZSB3ZSBhcmUgaW4gY2xvc2UgCnJlbGF0aW9uIHdpdGggdGhlbSBkdXJpbmcgd2hhdCB3ZSBjYWxsIG91ciB3YWtpbmcgbGlmZTsgZHVyaW5nIHNsZWVwIGFuZCBhZnRlciAKd2UgYXJlIGV2ZW4gbW9yZSBpbnRpbWF0ZWx5IGNvbm5lY3RlZCB3aXRoIHRoZW0sIGZvciBvdXIgZXhpc3RlbmNlIGlzIHRoZW4gCmFsbW9zdCBjb25maW5lZCB0byB0aGVtLiAKCgo0Ny7CoMKgwqDCoMKgwqDCoMKgwqDCoApQZXJoYXBzIHRoZSBncmVhdGVzdCBvZiB0aGUgbWFueSBmdW5kYW1lbnRhbCBjaGFuZ2VzIHdoaWNoIGFyZSBpbmV2aXRhYmxlIApmb3IgdGhlIG1hbiB3aG8gc3R1ZGllcyB0aGUgZmFjdHMgb2YgbGlmZSBpcyB0aGF0IHdoaWNoIGlzIHByb2R1Y2VkIGluIGhpcyAKYXR0aXR1ZGUgdG93YXJkcyBkZWF0aC4gVGhpcyBtYXR0ZXIgaGFzIGJlZW4gZnVsbHkgdHJlYXRlZCBlbHNld2hlcmU7IGhlcmUgSSAKbmVlZCBzdGF0ZSBvbmx5IHRoYXQgdGhlIGtub3dsZWRnZSBvZiB0aGUgdHJ1dGggYWJvdXQgZGVhdGggcm9icyBpdCBvZiBhbGwgaXRzIAp0ZXJyb3IgYW5kIG11Y2ggb2YgaXRzIHNvcnJvdywgYW5kIGVuYWJsZXMgdXMgdG8gc2VlIGl0IGluIGl0cyB0cnVlIHByb3BvcnRpb24gCmFuZCB0byB1bmRlcnN0YW5kIGl0cyBwbGFjZSBpbiB0aGUgc2NoZW1lIG9mIG91ciBldm9sdXRpb24uIEl0IGlzIHBlcmZlY3RseSAKcG9zc2libGUgdG8gbGVhcm4gdG8ga25vdyBhYm91dCBhbGwgdGhlc2UgdGhpbmdzIGluc3RlYWQgb2YgYWNjZXB0aW5nIApiZWxpZWZzIGJsaW5kbHkgYXQgc2Vjb25kaGFuZCwgYXMgbW9zdCBwZW9wbGUgZG87IGFuZCBrbm93bGVkZ2UgbWVhbnMgcG93ZXIsIApzZWN1cml0eSBhbmQgaGFwcGluZXNzLiAKCgo0OC7CoMKgwqDCoMKgwqDCoMKgwqDCoApUSEUgUFVSUE9TRSBPRiBMSUZFIAoKCjQ5LsKgwqDCoMKgwqDCoMKgwqDCoMKgClRoZSB0aGlyZCBhc3BlY3Qgb2Ygb3VyIHdvcmxkIHdoaWNoIGlzIGhpZGRlbiBmcm9tIHRoZSBtYWpvcml0eSBpcyB0aGUgCnBsYW4gYW5kIHB1cnBvc2Ugb2YgZXhpc3RlbmNlLiBNb3N0IG1lbiBzZWVtIHRvIG11ZGRsZSB0aHJvdWdoIGxpZmUgd2l0aG91dCBhbnkgCmRpc2Nlcm5pYmxlIG9iamVjdCwgZXhjZXB0IHBvc3NpYmx5IHRoZSBwdXJlbHkgcGh5c2ljYWwgc3RydWdnbGUgdG8gbWFrZSBtb25leSAKb3IgYXR0YWluIHBvd2VyLCBiZWNhdXNlIHRoZXkgdmFndWVseSB0aGluayB0aGF0IHRoZXNlIHRoaW5ncyB3aWxsIGJyaW5nIHRoZW0gCmhhcHBpbmVzcy4gVGhleSBoYXZlIG5vIGRlZmluaXRlIHRoZW9yeSBhcyB0byB3aHkgdGhleSBhcmUgaGVyZSwgbm9yIGFueSAKY2VydGFpbnR5IGFzIHRvIHRoZSBmdXR1cmUgdGhhdCBhd2FpdHMgdGhlbS4gVGhleSBoYXZlIG5vdCBldmVuIHJlYWxpc2VkIHRoYXQgCnRoZXkgYXJlIHNvdWxzIGFuZCBub3QgYm9kaWVzLCBhbmQgdGhhdCBhcyBzdWNoIHRoZWlyIGRldmVsb3BtZW50IGlzIHBhcnQgb2YgYSAKbWlnaHR5IHNjaGVtZSBvZiBjb3NtaWMgZXZvbHV0aW9uLiAKCgo1MC7CoMKgwqDCoMKgwqDCoMKgwqDCoApXaGVuIG9uY2UgdGhpcyBncmFuZGVzdCBvZiB0cnV0aHMgaGFzIGRhd25lZCB1cG9uIGEgbWFuJyBzIGhvcml6b24gdGhlcmUgCmNvbWVzIG92ZXIgaGltIHRoYXQgY2hhbmdlIHdoaWNoIG9jY2lkZW50YWwgcmVsaWdpb24gY2FsbHMgY29udmVyc2lvbi0tIGEgZmluZSAKd29yZCB3aGljaCBoYXMgYmVlbiBzYWRseSBkZWdyYWRlZCBieSBpbXByb3BlciBhc3NvY2lhdGlvbnMsIGZvciBpdCBoYXMgb2Z0ZW4gCmJlZW4gdXNlZCB0byBzaWduaWZ5IG5vdGhpbmcgbW9yZSB0aGFuIGEgY3Jpc2lzIG9mIGVtb3Rpb24gaHlwbm90aWNhbGx5IGluZHVjZWQgCmJ5IHRoZSBzdXJnaW5nIHdhdmVzIG9mIGV4Y2l0ZWQgZmVlbGluZyByYWRpYXRlZCBieSBhIGhhbGYtbWFkZGVuZWQgY3Jvd2QuIEl0cyAKdHJ1ZSBtZWFuaW5nIGlzIGV4YWN0bHkgd2hhdCBpdHMgZGVyaXZhdGlvbiBpbXBsaWVzLCBgIGEgdHVybmluZyB0b2dldGhlciB3aXRoJyAKLiBCZWZvcmUgaXQsIHRoZSBtYW4sIHVuYXdhcmUgb2YgdGhlIHN0dXBlbmRvdXMgY3VycmVudCBvZiBldm9sdXRpb24sIGhhcywgdW5kZXIgCnRoZSBkZWx1c2lvbiBvZiBzZWxmaXNobmVzcywgYmVlbiBmaWdodGluZyBhZ2FpbnN0IGl0OyBidXQgdGhlIG1vbWVudCB0aGF0IHRoZSAKbWFnbmlmaWNlbmNlIG9mIHRoZSBEaXZpbmUgUGxhbiBidXJzdHMgdXBvbiBoaXMgYXN0b25pc2hlZCBzaWdodCB0aGVyZSBpcyBubyAKb3RoZXIgcG9zc2liaWxpdHkgZm9yIGhpbSBidXQgdG8gdGhyb3cgYWxsIGhpcyBlbmVyZ2llcyBpbnRvIHRoZSBlZmZvcnQgdG8gCnByb21vdGUgaXRzIGZ1bGZpbG1lbnQsIHRvIGAgdHVybiBhbmQgZ28gdG9nZXRoZXIgd2l0aCcgdGhhdCBzcGxlbmRpZCBzdHJlYW0gb2YgCnRoZSBsb3ZlIGFuZCB0aGUgd2lzZG9tIG9mIEdvZC4gCgoKNTEuwqDCoMKgwqDCoMKgwqDCoMKgwqAKSGlzIG9uZSBvYmplY3QgdGhlbiBpcyB0byBxdWFsaWZ5IGhpbXNlbGYgdG8gaGVscCB0aGUgd29ybGQsIGFuZCBhbGwgaGlzIAp0aG91Z2h0cyBhbmQgYWN0aW9ucyBhcmUgZGlyZWN0ZWQgdG93YXJkcyB0aGF0IGFpbS4gSGUgbWF5IGZvcmdldCBmb3IgdGhlIG1vbWVudCAKdW5kZXIgdGhlIHN0cmVzcyBvZiB0ZW1wdGF0aW9uLCBidXQgdGhlIG9ibGl2aW9uIGNhbiBiZSBvbmx5IHRlbXBvcmFyeTsgYW5kIHRoaXMgCmlzIHRoZSBtZWFuaW5nIG9mIHRoZSBlY2NsZXNpYXN0aWNhbCBkb2dtYSB0aGF0IHRoZSBlbGVjdCBjYW4gbmV2ZXIgZmluYWxseSBmYWlsIAouIERpc2NyaW1pbmF0aW9uIGhhcyBjb21lIHRvIGhpbSwgdGhlIG9wZW5pbmcgb2YgdGhlIGRvb3JzIG9mIHRoZSBtaW5kLCB0byAKYWRvcHQgdGhlIHRlcm1zIGVtcGxveWVkIGZvciB0aGlzIGNoYW5nZSBpbiBvbGRlciBmYWl0aHM7IGhlIGtub3dzIG5vdyB3aGF0IGlzIApyZWFsIGFuZCB3aGF0IGlzIHVucmVhbCwgd2hhdCBpcyB3b3J0aCBnYWluaW5nIGFuZCB3aGF0IGlzIHZhbHVlbGVzcy4gSGUgbGl2ZXMgCmFzIGFuIGltbW9ydGFsIHNvdWwgd2hvIGlzIGEgU3Bhcmsgb2YgdGhlIERpdmluZSBGaXJlLCBpbnN0ZWFkIG9mIGFzIG9uZSBvZiB0aGUgCmJlYXN0cyB0aGF0IHBlcmlzaC0tIHRvIHVzZSBhIGJpYmxpY2FsIHBocmFzZSB3aGljaCwgaG93ZXZlciwgaXMgZW50aXJlbHkgCmluY29ycmVjdCwgaW5hc211Y2ggYXMgdGhlIGJlYXN0cyBkbyBub3QgcGVyaXNoLCBleGNlcHQgaW4gdGhlIHNlbnNlIG9mIAp0aGVpciBiZWluZyByZWFic29yYmVkIGludG8gdGhlaXIgZ3JvdXAtc291bC4gCgoKNTIuwqDCoMKgwqDCoMKgwqDCoMKgwqAKTW9zdCB0cnVseSBmb3IgdGhpcyBtYW4gYW4gYXNwZWN0IG9mIGxpZmUgaGFzIGJlZW4gZGlzcGxheWVkIHdoaWNoIGVyc3QgCndhcyBoaWRkZW4gZnJvbSBoaXMgZXllcy4gSXQgd291bGQgZXZlbiBiZSB0cnVlciB0byBzYXkgdGhhdCBub3cgZm9yIHRoZSBmaXJzdCAKdGltZSBoZSBoYXMgcmVhbGx5IGJlZ3VuIHRvIGxpdmUsIHdoaWxlIGJlZm9yZSBoZSBtZXJlbHkgZHJhZ2dlZCBvdXQgYW4gCmluZWZmaWNpZW50IGV4aXN0ZW5jZS4gCgoKNTMuwqDCoMKgwqDCoMKgwqDCoMKgwqAKU0VDT05EIFNFQ1RJT04gCgoKNTQuwqDCoMKgwqDCoMKgwqDCoMKgwqAKSE9XIFdFIEFSRSBJTkZMVUVOQ0VEIAoKCjU1LsKgwqDCoMKgwqDCoMKgwqDCoMKgCkNIQVBURVIgSUlJIAoKCjU2LsKgwqDCoMKgwqDCoMKgwqDCoMKgCkJZIFBMQU5FVFMgCgoKNTcuwqDCoMKgwqDCoMKgwqDCoMKgwqAKUkFESUFUSU9OUyAKCgo1OC7CoMKgwqDCoMKgwqDCoMKgwqDCoApUSEUgZmlyc3QgZmFjdCB3aGljaCBpdCBpcyBuZWNlc3NhcnkgZm9yIHVzIHRvIHJlYWxpc2UgaXMgdGhhdCBldmVyeXRoaW5nIAppcyByYWRpYXRpbmcgaW5mbHVlbmNlIG9uIGl0cyBzdXJyb3VuZGluZ3MsIGFuZCB0aGVzZSBzdXJyb3VuZGluZ3MgYXJlIGFsbCB0aGUgCndoaWxlIHJldHVybmluZyB0aGUgY29tcGxpbWVudCBieSBwb3VyaW5nIGluZmx1ZW5jZSB1cG9uIGl0IGluIHJldHVybi4gTGl0ZXJhbGx5IApldmVyeXRoaW5nLS0gc3VuLCBtb29uLCBzdGFycywgYW5nZWxzLCBtZW4sIGFuaW1hbHMsIHRyZWVzLCByb2Nrcy0tIApldmVyeXRoaW5nIGlzIHBvdXJpbmcgb3V0IGEgY2Vhc2VsZXNzIHN0cmVhbSBvZiB2aWJyYXRpb25zLCBlYWNoIG9mIGl0cyBvd24gCmNoYXJhY3RlcmlzdGljIHR5cGU7IG5vdCBpbiB0aGUgcGh5c2ljYWwgd29ybGQgb25seSwgYnV0IGluIG90aGVyIGFuZCBzdWJ0bGVyIAp3b3JsZHMgYXMgd2VsbC4gT3VyIHBoeXNpY2FsIHNlbnNlcyBjYW4gYXBwcmVjaWF0ZSBvbmx5IGEgbGltaXRlZCBudW1iZXIgb2Ygc3VjaCAKcmFkaWF0aW9ucy4gV2UgcmVhZGlseSBmZWVsIHRoZSBoZWF0IHBvdXJlZCBmb3J0aCBieSB0aGUgc3VuIG9yIGJ5IGEgZmlyZSwgYnV0IAp3ZSBhcmUgdXN1YWxseSBub3QgY29uc2Npb3VzIG9mIHRoZSBmYWN0IHRoYXQgd2Ugb3Vyc2VsdmVzIGFyZSBjb25zdGFudGx5IApyYWRpYXRpbmcgaGVhdDsgeWV0IGlmIHdlIGhvbGQgb3V0IGEgaGFuZCB0b3dhcmRzIGEgcmFkaW9tZXRlciB0aGUgZGVsaWNhdGUgCmluc3RydW1lbnQgd2lsbCByZXNwb25kIHRvIHRoZSBoZWF0IGltcGFydGVkIGJ5IHRoYXQgaGFuZCBldmVuIGF0IGEgZGlzdGFuY2Ugb2YgCnNldmVyYWwgZmVldCwgYW5kIHdpbGwgYmVnaW4gdG8gcmV2b2x2ZS4gV2Ugc2F5IHRoYXQgYSByb3NlIGhhcyBhIHNjZW50IGFuZCB0aGF0IAphIGRhaXN5IGhhcyBub25lOyB5ZXQgdGhlIGRhaXN5IGlzIHRocm93aW5nIG9mZiBwYXJ0aWNsZXMganVzdCBhcyBtdWNoIGFzIHRoZSAKcm9zZSwgb25seSBpbiB0aGUgb25lIGNhc2UgdGhleSBoYXBwZW4gdG8gYmUgcGVyY2VwdGlibGUgdG8gb3VyIHNlbnNlcywgYW5kIGluIAp0aGUgb3RoZXIgdGhleSBhcmUgbm90LiAKCgo1OS7CoMKgwqDCoMKgwqDCoMKgwqDCoApGcm9tIGVhcmx5IGFnZXMgbWVuIGhhdmUgYmVsaWV2ZWQgdGhhdCB0aGUgc3VuLCB0aGUgbW9vbiwgdGhlIHBsYW5ldHMgYW5kIAp0aGUgc3RhcnMgZXhlcmNpc2VkIGEgY2VydGFpbiBpbmZsdWVuY2Ugb3ZlciBodW1hbiBsaWZlLiBJbiB0aGUgcHJlc2VudCBkYXkgbW9zdCAKcGVvcGxlIGFyZSBjb250ZW50IHRvIGxhdWdoIGF0IHN1Y2ggYSBiZWxpZWYsIHdpdGhvdXQga25vd2luZyBhbnl0aGluZyBhYm91dCBpdDsgCnlldCBhbnlvbmUgd2hvIHdpbGwgdGFrZSB0aGUgdHJvdWJsZSB0byBtYWtlIGEgY2FyZWZ1bCBhbmQgaW1wYXJ0aWFsIHN0dWR5IG9mIAphc3Ryb2xvZ3kgd2lsbCBkaXNjb3ZlciBtdWNoIHRoYXQgY2Fubm90IGJlIGxpZ2h0bHkgdGhyb3duIGFzaWRlLiBIZSB3aWxsIG1lZXQgCndpdGggcGxlbnR5IG9mIGVycm9ycywgbm8gZG91YnQsIHNvbWUgb2YgdGhlbSByaWRpY3Vsb3VzIGVub3VnaDsgYnV0IGhlIHdpbGwgCmFsc28gZmluZCBhIHByb3BvcnRpb24gb2YgYWNjdXJhdGUgcmVzdWx0cyB3aGljaCBpcyBmYXIgdG9vIGxhcmdlIHRvIGJlIApyZWFzb25hYmx5IGFzY3JpYmVkIHRvIGNvaW5jaWRlbmNlLiBIaXMgaW52ZXN0aWdhdGlvbnMgd2lsbCBjb252aW5jZSBoaW0gdGhhdCAKdGhlcmUgaXMgdW5xdWVzdGlvbmFibHkgc29tZSBmb3VuZGF0aW9uIGZvciB0aGUgY2xhaW1zIG9mIHRoZSBhc3Ryb2xvZ2Vycywgd2hpbGUgCmF0IHRoZSBzYW1lIHRpbWUgaGUgY2Fubm90IGJ1dCBvYnNlcnZlIHRoYXQgdGhlaXIgc3lzdGVtcyBhcmUgYXMgeWV0IGZhciBmcm9tIApwZXJmZWN0LiAKCgo2MC7CoMKgwqDCoMKgwqDCoMKgwqDCoApXaGVuIHdlIHJlbWVtYmVyIHRoZSBlbm9ybW91cyBzcGFjZSB0aGF0IHNlcGFyYXRlcyB1cyBmcm9tIGV2ZW4gdGhlIApuZWFyZXN0IG9mIHRoZSBwbGFuZXRzLCBpdCBpcyBhdCBvbmNlIG9idmlvdXMgdGhhdCB3ZSBtdXN0IHJlamVjdCB0aGUgaWRlYSB0aGF0IAp0aGV5IGNhbiBleGVyY2lzZSB1cG9uIHVzIGFueSBwaHlzaWNhbCBhY3Rpb24gd29ydGggY29uc2lkZXJpbmc7IGFuZCAKZnVydGhlcm1vcmUsIGlmIHRoZXJlIHdlcmUgYW55IHN1Y2ggYWN0aW9uLCBpdCB3b3VsZCBzZWVtIHRoYXQgaXRzIHN0cmVuZ3RoIApzaG91bGQgZGVwZW5kIGxlc3MgdXBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIHBsYW5ldCBpbiB0aGUgc2t5IHRoYW4gdXBvbiBpdHMgCnByb3hpbWl0eSB0byB0aGUgZWFydGgtLSBhIGZhY3RvciB3aGljaCBpcyBub3QgdXN1YWxseSB0YWtlbiBpbnRvIGFjY291bnQgYnkgCmFzdHJvbG9nZXJzLiBUaGUgbW9yZSB3ZSBjb250ZW1wbGF0ZSB0aGUgbWF0dGVyIHRoZSBsZXNzIGRvZXMgaXQgc2VlbSByYXRpb25hbCAKb3IgcG9zc2libGUgdG8gc3VwcG9zZSB0aGF0IHRoZSBwbGFuZXRzIGNhbiBhZmZlY3QgdGhlIGVhcnRoIG9yIGl0cyBpbmhhYml0YW50cyAKdG8gYW55IGFwcHJlY2lhYmxlIGV4dGVudDsgeWV0IHRoZSBmYWN0IHJlbWFpbnMgdGhhdCBhIHRoZW9yeSBiYXNlZCB1cG9uIHRoaXMgCmFwcGFyZW50IGltcG9zc2liaWxpdHkgb2Z0ZW4gd29ya3Mgb3V0IGFjY3VyYXRlbHkuIFBlcmhhcHMgdGhlIGV4cGxhbmF0aW9uIG1heSAKYmUgZm91bmQgYWxvbmcgdGhlIGxpbmUgdGhhdCBqdXN0IGFzIHRoZSBtb3ZlbWVudCBvZiB0aGUgaGFuZHMgb2YgYSBjbG9jayBzaG93cyAKdGhlIHBhc3NhZ2Ugb2YgdGltZSwgdGhvdWdoIGl0IGRvZXMgbm90IGNhdXNlIGl0LCBzbyB0aGUgbW90aW9ucyBvZiB0aGUgcGxhbmV0cyAKaW5kaWNhdGUgdGhlIHByZXZhbGVuY2Ugb2YgY2VydGFpbiBpbmZsdWVuY2VzLCBidXQgYXJlIGluIG5vIHdheSByZXNwb25zaWJsZSBmb3IgCnRoZW0uIExldCB1cyBzZWUgd2hhdCBsaWdodCBvY2N1bHQgc3R1ZHkgdGhyb3dzIHVwb24gdGhpcyBzb21ld2hhdCBwZXJwbGV4aW5nIApzdWJqZWN0LiAKCgo2MS7CoMKgwqDCoMKgwqDCoMKgwqDCoApUSEUgREVJVFkgT0YgVEhFIFNPTEFSIFNZU1RFTSAKCgo2Mi7CoMKgwqDCoMKgwqDCoMKgwqDCoApPY2N1bHQgc3R1ZGVudHMgcmVnYXJkIHRoZSBlbnRpcmUgc29sYXIgc3lzdGVtIGluIGFsbCBpdHMgdmFzdCBjb21wbGV4aXR5IAphcyBhIHBhcnRpYWwgbWFuaWZlc3RhdGlvbiBvZiBvbmUgZ3JlYXQgbGl2aW5nIEJlaW5nLCBhbmQgYWxsIGl0cyBwYXJ0cyBhcyAKZXhwcmVzc2luZyBhc3BlY3RzIG9mIEhpbS4gTWFueSBuYW1lcyBoYXZlIGJlZW4gZ2l2ZW4gdG8gSGltOyBpbiBvdXIgClRoZW9zb3BoaWNhbCBsaXRlcmF0dXJlIEhlIGhhcyBvZnRlbiBiZWVuIGRlc2NyaWJlZCB1bmRlciB0aGUgR25vc3RpYyB0aXRsZSBvZiAKdGhlIExvZ29zLS0gdGhlIFdvcmQgdGhhdCB3YXMgaW4gdGhlIGJlZ2lubmluZyB3aXRoIEdvZCwgYW5kIHdhcyBHb2Q7IGJ1dCBub3cgd2UgCnVzdWFsbHkgc3BlYWsgb2YgSGltIGFzIHRoZSBTb2xhciBEZWl0eS4gQWxsIHRoZSBwaHlzaWNhbCBjb25zdGl0dWVudHMgb2YgdGhlIApzb2xhciBzeXN0ZW0tLSB0aGUgc3VuIHdpdGggaXRzIHdvbmRlcmZ1bCBjb3JvbmEsIGFsbCB0aGUgcGxhbmV0cyB3aXRoIHRoZWlyIApzYXRlbGxpdGVzLCB0aGVpciBvY2VhbnMsIHRoZWlyIGF0bW9zcGhlcmVzIGFuZCB0aGUgdmFyaW91cyBhZXRoZXJzIHN1cnJvdW5kaW5nIAp0aGVtLS0gYWxsIHRoZXNlIGFyZSBjb2xsZWN0aXZlbHkgSGlzIHBoeXNpY2FsIGJvZHksIHRoZSBleHByZXNzaW9uIG9mIEhpbSBpbiAKdGhlIHBoeXNpY2FsIHJlYWxtLiAKCgo2My7CoMKgwqDCoMKgwqDCoMKgwqDCoApJbiB0aGUgc2FtZSB3YXkgdGhlIGNvbGxlY3RpdmUgYXN0cmFsIHdvcmxkcy0tIG5vdCBvbmx5IHRoZSBhc3RyYWwgd29ybGRzIApiZWxvbmdpbmcgdG8gZWFjaCBvZiB0aGUgcGh5c2ljYWwgcGxhbmV0cywgYnV0IGFsc28gdGhlIHB1cmVseSBhc3RyYWwgcGxhbmV0cyBvZiAKYWxsIHRoZSBjaGFpbnMgb2YgdGhlIHN5c3RlbSAoc3VjaCwgZm9yIGV4YW1wbGUsIGFzIHBsYW5ldHMgQiBhbmQgRiBvZiBvdXIgCmNoYWluKS0tIG1ha2UgdXAgSGlzIGFzdHJhbCBib2R5LCBhbmQgdGhlIGNvbGxlY3RpdmUgd29ybGRzIG9mIHRoZSBtZW50YWwgcmVhbG0gCmFyZSBIaXMgbWVudGFsIGJvZHktLSB0aGUgdmVoaWNsZSB0aHJvdWdoIHdoaWNoIEhlIG1hbmlmZXN0cyBIaW1zZWxmIHVwb24gdGhhdCAKcGFydGljdWxhciBsZXZlbC4gRXZlcnkgYXRvbSBvZiBldmVyeSB3b3JsZCBpcyBhIGNlbnRyZSB0aHJvdWdoIHdoaWNoIEhlIGlzIApjb25zY2lvdXMsIHNvIHRoYXQgbm90IG9ubHkgaXMgaXQgdHJ1ZSB0aGF0IEdvZCBpcyBvbW5pcHJlc2VudCwgYnV0IGFsc28gdGhhdCAKd2hhdGV2ZXIgaXMgaXMgR29kLiAKCgo2NC7CoMKgwqDCoMKgwqDCoMKgwqDCoApUaHVzIHdlIHNlZSB0aGF0IHRoZSBvbGQgcGFudGhlaXN0aWMgY29uY2VwdGlvbiB3YXMgcXVpdGUgdHJ1ZSwgeWV0IGl0IGlzIApvbmx5IGEgcGFydCBvZiB0aGUgdHJ1dGgsIGJlY2F1c2Ugd2hpbGUgYWxsIG5hdHVyZSBpbiBhbGwgaXRzIHdvcmxkcyBpcyBub3RoaW5nIApidXQgSGlzIGdhcm1lbnQsIHlldCBIZSBIaW1zZWxmIGV4aXN0cyBvdXRzaWRlIG9mIGFuZCBhYm92ZSBhbGwgdGhpcyBpbiBhIApzdHVwZW5kb3VzIGxpZmUgb2Ygd2hpY2ggd2UgY2FuIGtub3cgbm90aGluZy0tIGEgbGlmZSBhbW9uZyBvdGhlciBSdWxlcnMgb2YgCm90aGVyIHN5c3RlbXMuIEp1c3QgYXMgYWxsIG91ciBsaXZlcyBhcmUgbGl2ZWQgbGl0ZXJhbGx5IHdpdGhpbiBIaW0gYW5kIGFyZSBpbiAKdHJ1dGggYSBwYXJ0IG9mIEhpcywgc28gSGlzIGxpZmUgYW5kIHRoYXQgb2YgdGhlIFNvbGFyIERlaXRpZXMgb2YgY291bnRsZXNzIApvdGhlciBzeXN0ZW1zIGFyZSBhIHBhcnQgb2YgYSBzdGlsbCBncmVhdGVyIGxpZmUgb2YgdGhlIERlaXR5IG9mIHRoZSB2aXNpYmxlIAp1bml2ZXJzZTsgYW5kIGlmIHRoZXJlIGJlIGluIHRoZSBkZXB0aHMgb2Ygc3BhY2UgeWV0IG90aGVyIHVuaXZlcnNlcyBpbnZpc2libGUgCnRvIHVzLCBhbGwgb2YgdGhlaXIgRGVpdGllcyBpbiB0dXJuIG11c3QgaW4gdGhlIHNhbWUgd2F5IGZvcm0gcGFydCBvZiBPbmUgR3JlYXQgCkNvbnNjaW91c25lc3Mgd2hpY2ggaW5jbHVkZXMgdGhlIHdob2xlLiAKCgo2NS7CoMKgwqDCoMKgwqDCoMKgwqDCoApESUZGRVJFTlQgVFlQRVMgT0YgTUFUVEVSIAoKCjY2LsKgwqDCoMKgwqDCoMKgwqDCoMKgCkluIHRoZXNlIGAgYm9kaWVzJyBvZiB0aGUgU29sYXIgRGVpdHkgb24gdGhlaXIgdmFyaW91cyBsZXZlbHMgdGhlcmUgYXJlIApjZXJ0YWluIGRpZmZlcmVudCBjbGFzc2VzIG9yIHR5cGVzIG9mIG1hdHRlciwgd2hpY2ggYXJlIGZhaXJseSBlcXVhbGx5IApkaXN0cmlidXRlZCBvdmVyIHRoZSB3aG9sZSBzeXN0ZW0uIEkgYW0gbm90IHNwZWFraW5nIGhlcmUgb2Ygb3VyIHVzdWFsIGRpdmlzaW9uIApvZiB0aGUgd29ybGRzIGFuZCB0aGVpciBzdWJzZWN0aW9ucy0tIGEgZGl2aXNpb24gd2hpY2ggaXMgbWFkZSBhY2NvcmRpbmcgdG8gdGhlIApkZW5zaXR5IG9mIHRoZSBtYXR0ZXIsIHNvIHRoYXQgaW4gdGhlIHBoeXNpY2FsIHdvcmxkLCBmb3IgZXhhbXBsZSwgd2UgaGF2ZSB0aGUgCnNvbGlkLCBsaXF1aWQsIGdhc2VvdXMsIGV0aGVyaWMsIHN1cGVyLWV0aGVyaWMsIHN1Yi1hdG9taWMgYW5kIGF0b21pYyBjb25kaXRpb25zIApvZiBtYXR0ZXItLSBhbGwgb2YgdGhlbSBwaHlzaWNhbCwgYnV0IGRpZmZlcmluZyBpbiBkZW5zaXR5LiBUaGUgdHlwZXMgd2hpY2ggSSAKbWVhbiBjb25zdGl0dXRlIGEgdG90YWxseSBkaXN0aW5jdCBzZXJpZXMgb2YgY3Jvc3MtZGl2aXNpb25zLCBlYWNoIG9mIHdoaWNoIApjb250YWlucyBtYXR0ZXIgaW4gYWxsIGl0cyBkaWZmZXJlbnQgY29uZGl0aW9ucywgc28gdGhhdCBpZiB3ZSBkZW5vdGUgdGhlIAp2YXJpb3VzIHR5cGVzIGJ5IG51bWJlcnMsIHdlIHNoYWxsIGZpbmQgc29saWQsIGxpcXVpZCBhbmQgZ2FzZW91cyBtYXR0ZXIgb2YgdGhlIApmaXJzdCB0eXBlLCBzb2xpZCwgbGlxdWlkIGFuZCBnYXNlb3VzIG1hdHRlciBvZiB0aGUgc2Vjb25kIHR5cGUsIGFuZCBzbyBvbiBhbGwgCnRoZSB3YXkgdGhyb3VnaC4gCgoKNjcuwqDCoMKgwqDCoMKgwqDCoMKgwqAKVGhlc2UgdHlwZXMgb2YgbWF0dGVyIGFyZSBhcyB0aG9yb3VnaGx5IGludGVybWluZ2xlZCBhcyBhcmUgdGhlIApjb25zdGl0dWVudHMgb2Ygb3VyIGF0bW9zcGhlcmUuIENvbmNlaXZlIGEgcm9vbSBmaWxsZWQgd2l0aCBhaXI7IGFueSBkZWNpZGVkIAp2aWJyYXRpb24gY29tbXVuaWNhdGVkIHRvIHRoZSBhaXIsIHN1Y2ggYXMgYSBzb3VuZCwgZm9yIGV4YW1wbGUsIHdvdWxkIGJlIApwZXJjZXB0aWJsZSBpbiBldmVyeSBwYXJ0IG9mIHRoZSByb29tLiBTdXBwb3NlIHRoYXQgaXQgd2VyZSBwb3NzaWJsZSB0byBwcm9kdWNlIApzb21lIGtpbmQgb2YgdW5kdWxhdGlvbiB3aGljaCBzaG91bGQgYWZmZWN0IHRoZSBveHlnZW4gYWxvbmUgd2l0aG91dCBkaXN0dXJiaW5nIAp0aGUgbml0cm9nZW4sIHRoYXQgdW5kdWxhdGlvbiB3b3VsZCBzdGlsbCBiZSBmZWx0IGluIGV2ZXJ5IHBhcnQgb2YgdGhlIHJvb20uIElmIAp3ZSBhbGxvdyB0aGF0LCBmb3IgYSBtb21lbnQsIHRoZSBwcm9wb3J0aW9uIG9mIG94eWdlbiBtaWdodCBiZSBncmVhdGVyIGluIG9uZSAKcGFydCBvZiB0aGUgcm9vbSB0aGFuIGFub3RoZXIsIHRoZW4gdGhlIG9zY2lsbGF0aW9uLCB0aG91Z2ggcGVyY2VwdGlibGUgCmV2ZXJ5d2hlcmUsIHdvdWxkIGJlIHN0cm9uZ2VzdCBpbiB0aGF0IHBhcnQuIEp1c3QgYXMgdGhlIGFpciBpbiBhIHJvb20gaXMgCmNvbXBvc2VkIChwcmluY2lwYWxseSkgb2Ygb3h5Z2VuIGFuZCBuaXRyb2dlbiwgc28gaXMgdGhlIG1hdHRlciBvZiB0aGUgc29sYXIgCnN5c3RlbSBjb21wb3NlZCBvZiB0aGVzZSBkaWZmZXJlbnQgdHlwZXM7IGFuZCBqdXN0IGFzIGEgd2F2ZSAoaWYgdGhlcmUgY291bGQgYmUgCnN1Y2ggYSB0aGluZykgd2hpY2ggYWZmZWN0ZWQgb25seSB0aGUgb3h5Z2VuIG9yIG9ubHkgdGhlIG5pdHJvZ2VuIHdvdWxkIApuZXZlcnRoZWxlc3MgYmUgZmVsdCBpbiBhbGwgcGFydHMgb2YgdGhlIHJvb20sIHNvIGEgbW92ZW1lbnQgb3IgbW9kaWZpY2F0aW9uIAp3aGljaCBhZmZlY3RzIG9ubHkgb25lIG9mIHRoZXNlIHR5cGVzIHByb2R1Y2VzIGFuIGVmZmVjdCB0aHJvdWdob3V0IHRoZSBlbnRpcmUgCnNvbGFyIHN5c3RlbSwgdGhvdWdoIGl0IG1heSBiZSBzdHJvbmdlciBpbiBvbmUgcGFydCB0aGFuIGluIGFub3RoZXIuIAoKCjY4LsKgwqDCoMKgwqDCoMKgwqDCoMKgClRoaXMgc3RhdGVtZW50IGlzIHRydWUgb2YgYWxsIHdvcmxkcywgYnV0IGZvciB0aGUgc2FrZSBvZiBjbGVhcm5lc3MgbGV0IAp1cyBmb3IgdGhlIG1vbWVudCBjb25maW5lIG91ciB0aG91Z2h0IHRvIG9uZSB3b3JsZCBvbmx5LiBQZXJoYXBzIHRoZSBpZGVhIGlzIAplYXNpZXN0IHRvIGZvbGxvdyB3aXRoIHJlZ2FyZCB0byB0aGUgYXN0cmFsLiBJdCBoYXMgb2Z0ZW4gYmVlbiBleHBsYWluZWQgdGhhdCBpbiAKdGhlIGFzdHJhbCBib2R5IG9mIG1hbiwgbWF0dGVyIGJlbG9uZ2luZyB0byBlYWNoIG9mIHRoZSBhc3RyYWwgc3ViLXNlY3Rpb25zIGlzIAp0byBiZSBmb3VuZCwgYW5kIHRoYXQgdGhlIHByb3BvcnRpb24gYmV0d2VlbiB0aGUgZGVuc2VyIGFuZCB0aGUgZmluZXIga2luZHMgCnNob3dzIGhvdyBmYXIgdGhhdCBib2R5IGlzIGNhcGFibGUgb2YgcmVzcG9uZGluZyB0byBjb2Fyc2Ugb3IgcmVmaW5lZCBkZXNpcmVzLCAKYW5kIHNvIGlzIHRvIHNvbWUgZXh0ZW50IGFuIGluZGljYXRpb24gb2YgdGhlIGRlZ3JlZSB0byB3aGljaCB0aGUgbWFuIGhhcyAKZXZvbHZlZCBoaW1zZWxmLiBTaW1pbGFybHkgaW4gZWFjaCBhc3RyYWwgYm9keSB0aGVyZSBpcyBtYXR0ZXIgb2YgZWFjaCBvZiB0aGVzZSAKdHlwZXMsIGFuZCBpbiB0aGlzIGNhc2UgdGhlIHByb3BvcnRpb24gYmV0d2VlbiB0aGVtIHdpbGwgc2hvdyB0aGUgZGlzcG9zaXRpb24gb2YgCnRoZSBtYW4tLSB3aGV0aGVyIGhlIGlzIGRldm90aW9uYWwgb3IgcGhpbG9zb3BoaWMsIGFydGlzdGljIG9yIHNjaWVudGlmaWMsIApwcmFnbWF0aWMgb3IgbXlzdGljLiAKCgo2OS7CoMKgwqDCoMKgwqDCoMKgwqDCoApUSEUgTElWSU5HIENFTlRSRVMgCgoKNzAuwqDCoMKgwqDCoMKgwqDCoMKgwqAKTm93IGVhY2ggb2YgdGhlc2UgdHlwZXMgb2YgbWF0dGVyIGluIHRoZSBhc3RyYWwgYm9keSBvZiB0aGUgU29sYXIgRGVpdHkgCmlzIHRvIHNvbWUgZXh0ZW50IGEgc2VwYXJhdGUgdmVoaWNsZSwgYW5kIG1heSBiZSB0aG91Z2h0IG9mIGFzIGFsc28gdGhlIGFzdHJhbCAKYm9keSBvZiBhIHN1YnNpZGlhcnkgRGVpdHkgb3IgTWluaXN0ZXIsIHdobyBpcyBhdCB0aGUgc2FtZSB0aW1lIGFuIGFzcGVjdCBvZiB0aGUgCkRlaXR5IG9mIHRoZSBzeXN0ZW0sIGEga2luZCBvZiBnYW5nbGlvbiBvciBmb3JjZS1jZW50cmUgaW4gSGltLiBJbmRlZWQsIGlmIHRoZXNlIAp0eXBlcyBkaWZmZXIgYW1vbmcgdGhlbXNlbHZlcywgaXQgaXMgYmVjYXVzZSB0aGUgbWF0dGVyIGNvbXBvc2luZyB0aGVtIApvcmlnaW5hbGx5IGNhbWUgZm9ydGggdGhyb3VnaCB0aGVzZSBkaWZmZXJlbnQgbGl2aW5nIENlbnRyZXMsIGFuZCB0aGUgbWF0dGVyIG9mIAplYWNoIHR5cGUgaXMgc3RpbGwgdGhlIHNwZWNpYWwgdmVoaWNsZSBhbmQgZXhwcmVzc2lvbiBvZiB0aGUgc3Vic2lkaWFyeSBEZWl0eSAKdGhyb3VnaCB3aG9tIGl0IGNhbWUsIHNvIHRoYXQgdGhlIHNsaWdodGVzdCB0aG91Z2h0LCBtb3ZlbWVudCBvciBhbHRlcmF0aW9uIG9mIAphbnkga2luZCBpbiBIaW0gaXMgaW5zdGFudGx5IHJlZmxlY3RlZCBpbiBzb21lIHdheSBvciBvdGhlciBpbiBhbGwgdGhlIG1hdHRlciBvZiAKdGhlIGNvcnJlc3BvbmRpbmcgdHlwZS4gTmF0dXJhbGx5IGVhY2ggc3VjaCB0eXBlIG9mIG1hdHRlciBoYXMgaXRzIG93biBzcGVjaWFsIAphZmZpbml0aWVzLCBhbmQgaXMgY2FwYWJsZSBvZiB2aWJyYXRpbmcgdW5kZXIgaW5mbHVlbmNlcyB3aGljaCBtYXkgcHJvYmFibHkgCmV2b2tlIG5vIHJlc3BvbnNlIGZyb20gdGhlIG90aGVyIHR5cGVzLiAKCgo3MS7CoMKgwqDCoMKgwqDCoMKgwqDCoApTaW5jZSBldmVyeSBtYW4gaGFzIHdpdGhpbiBoaW1zZWxmIG1hdHRlciBvZiBhbGwgdGhlc2UgdHlwZXMsIGl0IAppcyBvYnZpb3VzIHRoYXQgYW55IG1vZGlmaWNhdGlvbiBpbiBvciBhY3Rpb24gb2YgYW55IG9uZSBvZiB0aGVzZSBncmVhdCBsaXZpbmcgCkNlbnRyZXMgbXVzdCB0byBzb21lIGRlZ3JlZSBhZmZlY3QgYWxsIGJlaW5ncyBpbiB0aGUgc3lzdGVtLiBUaGUgZXh0ZW50IHRvIHdoaWNoIAphbnkgcGFydGljdWxhciBwZXJzb24gaXMgc28gYWZmZWN0ZWQgZGVwZW5kcyB1cG9uIHRoZSBwcm9wb3J0aW9uIG9mIHRoZSB0eXBlIG9mIAptYXR0ZXIgYWN0ZWQgdXBvbiB3aGljaCBoZSBoYXBwZW5zIHRvIGhhdmUgaW4gaGlzIGFzdHJhbCBib2R5LiBDb25zZXF1ZW50bHkgd2UgCmZpbmQgZGlmZmVyZW50IHR5cGVzIG9mIG1lbiBhcyBvZiBtYXR0ZXIsIGFuZCBieSByZWFzb24gb2YgdGhlaXIgY29uc3RpdHV0aW9uLCAKYnkgdGhlIHZlcnkgY29tcG9zaXRpb24gb2YgdGhlaXIgYXN0cmFsIGJvZGllcywgc29tZSBvZiB0aGVtIGFyZSBtb3JlIApzdXNjZXB0aWJsZSB0byBvbmUgaW5mbHVlbmNlLCBzb21lIHRvIGFub3RoZXIuIAoKCjcyLsKgwqDCoMKgwqDCoMKgwqDCoMKgClRoZSB0eXBlcyBhcmUgc2V2ZW4sIGFuZCBhc3Ryb2xvZ2VycyBoYXZlIG9mdGVuIGdpdmVuIHRvIHRoZW0gdGhlIG5hbWVzIApvZiBjZXJ0YWluIG9mIHRoZSBwbGFuZXRzLiBFYWNoIHR5cGUgaXMgZGl2aWRlZCBpbnRvIHNldmVuIHN1Yi10eXBlcywgYmVjYXVzZSAKZWFjaCBgIHBsYW5ldCcgbWF5IGJlIGVpdGhlciBwcmFjdGljYWxseSB1bmluZmx1ZW5jZWQsIG9yIGl0IG1heSBiZSBhZmZlY3RlZCAKcHJlZG9taW5hbnRseSBieSBhbnkgb25lIG9mIHRoZSBvdGhlciBzaXguIEluIGFkZGl0aW9uIHRvIHRoZSBmb3J0eS1uaW5lIApkZWZpbml0ZSBzdWItdHlwZXMgdGh1cyBvYnRhaW5lZCwgdGhlcmUgYXJlIGFueSBudW1iZXIgb2YgcG9zc2libGUgcGVybXV0YXRpb25zIAphbmQgY29tYmluYXRpb25zIG9mIGluZmx1ZW5jZXMsIG9mdGVuIHNvIGNvbXBsaWNhdGVkIHRoYXQgaXQgaXMgbm8gZWFzeSBtYXR0ZXIgCnRvIGZvbGxvdyB0aGVtLiBOZXZlcnRoZWxlc3MsIHRoaXMgZ2l2ZXMgdXMgYSBjZXJ0YWluIHN5c3RlbSBvZiBjbGFzc2lmaWNhdGlvbiwgCmFjY29yZGluZyB0byB3aGljaCB3ZSBjYW4gYXJyYW5nZSBub3Qgb25seSBodW1hbiBiZWluZ3MsIGJ1dCBhbHNvIHRoZSBhbmltYWwsIAp2ZWdldGFibGUgYW5kIG1pbmVyYWwga2luZ2RvbXMsIGFuZCB0aGUgZWxlbWVudGFsIGVzc2VuY2Ugd2hpY2ggcHJlY2VkZXMgdGhlbSBpbiAKZXZvbHV0aW9uLiAKCgo3My7CoMKgwqDCoMKgwqDCoMKgwqDCoApFdmVyeXRoaW5nIGluIHRoZSBzb2xhciBzeXN0ZW0gYmVsb25ncyB0byBvbmUgb3Igb3RoZXIgb2YgdGhlc2Ugc2V2ZW4gCmdyZWF0IHN0cmVhbXMsIGJlY2F1c2UgaXQgaGFzIGNvbWUgb3V0IHRocm91Z2ggb25lIG9yIG90aGVyIG9mIHRoZXNlIGdyZWF0IApGb3JjZS1DZW50cmVzLCB0byB3aGljaCB0aGVyZWZvcmUgaXQgYmVsb25ncyBpbiBlc3NlbmNlLCBhbHRob3VnaCBpdCBtdXN0IAppbmV2aXRhYmx5IGJlIGFmZmVjdGVkIG1vcmUgb3IgbGVzcyBieSB0aGUgb3RoZXJzIGFsc28uIFRoaXMgZ2l2ZXMgZWFjaCBtYW4sIAplYWNoIGFuaW1hbCwgZWFjaCBwbGFudCwgZWFjaCBtaW5lcmFsIGEgY2VydGFpbiBmdW5kYW1lbnRhbCBjaGFyYWN0ZXJpc3RpYyB3aGljaCAKbmV2ZXIgY2hhbmdlcy0tIHNvbWV0aW1lcyBzeW1ib2xpc2VkIGFzIGhpcyBub3RlLCBoaXMgY29sb3VyIG9yIGhpcyByYXkuIAoKCjc0LsKgwqDCoMKgwqDCoMKgwqDCoMKgClRoaXMgY2hhcmFjdGVyaXN0aWMgaXMgcGVybWFuZW50IG5vdCBvbmx5IHRocm91Z2ggb25lIGNoYWluLXBlcmlvZCwgYnV0IAp0aHJvdWdoIHRoZSB3aG9sZSBwbGFuZXRhcnkgc2NoZW1lLCBzbyB0aGF0IHRoZSBsaWZlIHdoaWNoIG1hbmlmZXN0cyB0aHJvdWdoIAplbGVtZW50YWwgZXNzZW5jZSBvZiB0eXBlIEEgd2lsbCBpbiB0aGUgZHVlIGNvdXJzZSBvZiBpdHMgZXZvbHV0aW9uIGVuc291bCAKc3VjY2Vzc2l2ZWx5IG1pbmVyYWxzLCBwbGFudHMsIGFuZCBhbmltYWxzIG9mIHR5cGUgQTsgYW5kIHdoZW4gaXRzIGdyb3VwLXNvdWwgCmJyZWFrcyB1cCBpbnRvIHVuaXRzIGFuZCByZWNlaXZlcyB0aGUgVGhpcmQgT3V0cG91cmluZywgdGhlIGh1bWFuIGJlaW5ncyB3aGljaCAKYXJlIHRoZSByZXN1bHQgb2YgaXRzIGV2b2x1dGlvbiB3aWxsIGJlIG1lbiBvZiB0eXBlIEEgYW5kIG5vIG90aGVyLCBhbmQgdW5kZXIgCm5vcm1hbCBjb25kaXRpb25zIHdpbGwgY29udGludWUgc28gYWxsIHRocm91Z2ggdGhlaXIgZGV2ZWxvcG1lbnQgdW50aWwgdGhleSBncm93IAppbnRvIEFkZXB0cyBvZiB0eXBlIEEuIAoKCjc1LsKgwqDCoMKgwqDCoMKgwqDCoMKgCkluIHRoZSBlYXJsaWVyIGRheXMgb2YgVGhlb3NvcGhpY2FsIHN0dWR5IHdlIHdlcmUgdW5kZXIgdGhlIGltcHJlc3Npb24gCnRoYXQgdGhpcyBwbGFuIHdhcyBjYXJyaWVkIG91dCBjb25zaXN0ZW50bHkgdG8gdGhlIHZlcnkgZW5kLCBhbmQgdGhhdCB0aGVzZSAKQWRlcHRzIHJlam9pbmVkIHRoZSBTb2xhciBEZWl0eSB0aHJvdWdoIHRoZSBzYW1lIHN1YnNpZGlhcnkgRGVpdHkgb3IgTWluaXN0ZXIgCnRocm91Z2ggd2hvbSB0aGV5IG9yaWdpbmFsbHkgY2FtZSBmb3J0aC4gRnVydGhlciByZXNlYXJjaCBzaG93cyB0aGF0IHRoaXMgCnRob3VnaHQgcmVxdWlyZXMgbW9kaWZpY2F0aW9uLiBXZSBmaW5kIHRoYXQgYmFuZHMgb2YgZWdvcyBvZiBtYW55IGRpZmZlcmVudCAKdHlwZXMgam9pbiB0aGVtc2VsdmVzIHRvZ2V0aGVyIGZvciBhIGNvbW1vbiBvYmplY3QuIAoKCjc2LsKgwqDCoMKgwqDCoMKgwqDCoMKgCkZvciBleGFtcGxlLCBpbiB0aGUgaW52ZXN0aWdhdGlvbnMgY29ubmVjdGVkIHByaW1hcmlseSB3aXRoIHRoZSBsaXZlcyBvZiAKQWxjeW9uZSBpdCB3YXMgZm91bmQgdGhhdCBjZXJ0YWluIGJhbmRzIG9mIGVnb3MgY2lyY2xlZCByb3VuZCB0aGUgdmFyaW91cyAKTWFzdGVycywgYW5kIGNhbWUgY2xvc2VyIGFuZCBjbG9zZXIgdG8gVGhlbSBhcyB0aW1lIHdlbnQgb24uIE9uZSBieSBvbmUsIGFzIHRoZXkgCmJlY2FtZSBmaXQgZm9yIGl0LCB0aGVzZSBlZ29zIHJlYWNoZWQgdGhlIHN0YWdlIGF0IHdoaWNoIHRoZXkgd2VyZSBhY2NlcHRlZCBhcyAKcHVwaWxzIG9yIGFwcHJlbnRpY2VzIGJ5IG9uZSBvciBvdGhlciBvZiB0aGUgTWFzdGVycy4gVG8gYmVjb21lIHRydWx5IGEgcHVwaWwgb2YgCmEgTWFzdGVyIG1lYW5zIGVudGVyaW5nIGludG8gcmVsYXRpb25zIHdpdGggSGltIHdob3NlIGludGltYWN5IGlzIGZhciBiZXlvbmQgYW55IAp0aWUgb2Ygd2hpY2ggd2Uga25vdyBvbiBlYXJ0aC4gSXQgbWVhbnMgYSBkZWdyZWUgb2YgdW5pb24gd2l0aCBIaW0gd2hpY2ggbm8gCndvcmRzIGNhbiBmdWxseSBleHByZXNzLCBhbHRob3VnaCBhdCB0aGUgc2FtZSB0aW1lIGEgcHVwaWwgcmV0YWlucyBhYnNvbHV0ZWx5IApoaXMgb3duIGluZGl2aWR1YWxpdHkgYW5kIGhpcyBvd24gaW5pdGlhdGl2ZS4gCgoKNzcuwqDCoMKgwqDCoMKgwqDCoMKgwqAKSW4gdGhpcyB3YXkgZWFjaCBNYXN0ZXIgYmVjb21lcyBhIGNlbnRyZSBvZiB3aGF0IG1heSBiZSB0cnVseSBkZXNjcmliZWQgCmFzIGEgZ3JlYXQgb3JnYW5pc20sIHNpbmNlIGhpcyBwdXBpbHMgYXJlIHZlcml0YWJseSBtZW1iZXJzIG9mIEhpbS4gV2hlbiB3ZSAKcmVhbGlzZSB0aGF0IEhlIEhpbXNlbGYgaXMgaW4ganVzdCB0aGUgc2FtZSB3YXkgYSBNZW1iZXIgb2Ygc29tZSBzdGlsbCBncmVhdGVyIApNYXN0ZXIgd2UgYXJyaXZlIGF0IGEgY29uY2VwdGlvbiBvZiBhIG1pZ2h0eS4gb3JnYW5pc20gd2hpY2ggaXMgaW4gYSB2ZXJ5IHJlYWwgCnNlbnNlIG9uZSwgYWx0aG91Z2ggYnVpbHQgdXAgb2YgdGhvdXNhbmRzIG9mIHBlcmZlY3RseSBkaXN0aW5jdCBlZ29zLgoKCjc4LsKgwqDCoMKgwqDCoMKgwqDCoMKgClN1Y2ggYW4gb3JnYW5pc20gaXMgdGhlIEhlYXZlbmx5IE1hbiB3aG8gZW1lcmdlcyBhcyB0aGUgcmVzdWx0IG9mIHRoZSAKZXZvbHV0aW9uIG9mIGVhY2ggZ3JlYXQgcm9vdC1yYWNlLiBJbiBIaW0sIGFzIGluIGFuIGVhcnRobHkgbWFuLCBhcmUgc2V2ZW4gZ3JlYXQgCmNlbnRyZXMsIGVhY2ggb2Ygd2hpY2ggaXMgYSBtaWdodHkgQWRlcHQ7IGFuZCB0aGUgTWFudSBhbmQgdGhlIEJvZGhpc2F0dHZhIApvY2N1cHkgaW4gdGhpcyBncmVhdCBvcmdhbmlzbSB0aGUgcGxhY2Ugb2YgdGhlIGJyYWluIGFuZCB0aGUgaGVhcnQgY2VudHJlcyAKcmVzcGVjdGl2ZWx5LiBSb3VuZCBUaGVtLS0gYW5kIHlldCBub3Qgcm91bmQgVGhlbSwgYnV0IGluIFRoZW0gCmFuZCBwYXJ0IG9mIFRoZW0sIGFsdGhvdWdoIHNvIGZ1bGx5IGFuZCBnbG9yaW91c2x5IG91cnNlbHZlcy0tIHNoYWxsIHdlLCBUaGVpciAKc2VydmFudHMsIGJlOyBhbmQgdGhpcyBncmVhdCBmaWd1cmUgaW4gaXRzIHRvdGFsaXR5IHJlcHJlc2VudHMgdGhlIGZsb3dlciBvZiAKdGhhdCBwYXJ0aWN1bGFyIHJhY2UsIGFuZCBpbmNsdWRlcyBhbGwgd2hvIGhhdmUgYXR0YWluZWQgQWRlcHRzaGlwIHRocm91Z2ggaXQuIApFYWNoIHJvb3QtcmFjZSBpcyB0aHVzIHJlcHJlc2VudGVkIGF0IGl0cyBjbG9zZSBieSBvbmUgb2YgdGhlc2UgSGVhdmVubHkgTWVuOyAKYW5kIFRoZXksIHRoZXNlIHNwbGVuZGlkIHRvdGFsaXRpZXMsIHdpbGwsIGFzIFRoZWlyIG5leHQgc3RhZ2UgaW4gZXZvbHV0aW9uLCAKYmVjb21lIE1pbmlzdGVycyBUaGVtc2VsdmVzIG9mIHNvbWUgZnV0dXJlIFNvbGFyIERlaXR5LiBZZXQgZWFjaCBvbmUgb2YgdGhlc2UgCmNvbnRhaW5zIHdpdGhpbiBIaW1zZWxmIG1lbiBvZiBhbGwgcG9zc2libGUgdHlwZXMsIHNvIHRoYXQgZWFjaCBvZiB0aGVzZSBmdXR1cmUgCk1pbmlzdGVycyBpcyBpbiB0cnV0aCBhIHJlcHJlc2VudGF0aXZlIG5vdCBvZiBvbmUgbGluZSBidXQgb2YgYWxsIGxpbmVzLiAKCgo3OS7CoMKgwqDCoMKgwqDCoMKgwqDCoApXaGVuIGxvb2tlZCBhdCBmcm9tIGEgc3VmZmljaWVudGx5IGhpZ2ggbGV2ZWwgdGhlIHdob2xlIHNvbGFyIHN5c3RlbSBpcyAKc2VlbiB0byBjb25zaXN0IG9mIHRoZXNlIGdyZWF0IGxpdmluZyBDZW50cmVzIG9yIE1pbmlzdGVycywgYW5kIHRoZSB0eXBlcyBvZiAKbWF0dGVyIHRocm91Z2ggd2hpY2ggZWFjaCBpcyBleHByZXNzaW5nIEhpbXNlbGYuIExldCBtZSByZXBlYXQgaGVyZSBmb3IgdGhlIHNha2UgCm9mIGNsZWFybmVzcywgd2hhdCBJIHdyb3RlIHNvbWUgdGltZSBhZ28gb24gdGhpcyBzdWJqZWN0IGluIFRoZSBJbm5lciBMaWZlLCAKdm9sLiBpLCBwYWdlIDIxNzogCgoKODAuwqDCoMKgwqDCoMKgwqDCoMKgwqAKRWFjaCBvZiB0aGVzZSBncmVhdCBsaXZpbmcgQ2VudHJlcyBoYXMgYSBzb3J0IG9mIG9yZGVybHkgcGVyaW9kaWMgY2hhbmdlIApvciBtb3Rpb24gb2YgaGlzIG93biwgY29ycmVzcG9uZGluZyBwZXJoYXBzIG9uIHNvbWUgaW5maW5pdGVseSBoaWdoZXIgbGV2ZWwgdG8gCnRoZSByZWd1bGFyIGJlYXRpbmcgb2YgdGhlIGh1bWFuIGhlYXJ0LCBvciB0byB0aGUgaW5zcGlyYXRpb24gYW5kIGV4cGlyYXRpb24gb2YgCnRoZSBicmVhdGguIFNvbWUgb2YgdGhlc2UgcGVyaW9kaWMgY2hhbmdlcyBhcmUgbW9yZSByYXBpZCB0aGFuIG90aGVycywgc28gdGhhdCBhIApjb21wbGljYXRlZCBzZXJpZXMgb2YgZWZmZWN0cyBpcyBwcm9kdWNlZDsgYW5kIGl0IGhhcyBiZWVuIG9ic2VydmVkIHRoYXQgdGhlIAptb3ZlbWVudHMgb2YgdGhlIHBoeXNpY2FsIHBsYW5ldHMgaW4gdGhlaXIgcmVsYXRpb24gdG8gb25lIGFub3RoZXIgZnVybmlzaCBhIApjbHVlIHRvIHRoZSBvcGVyYXRpb24gb2YgdGhlc2UgaW5mbHVlbmNlcyBhdCBhbnkgZ2l2ZW4gbW9tZW50LiBFYWNoIG9mIHRoZXNlIApDZW50cmVzIGhhcyBIaXMgc3BlY2lhbCBsb2NhdGlvbiBvciBtYWpvciBmb2N1cyB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIHN1biwgYW5kIAphIG1pbm9yIGV4dGVyaW9yIGZvY3VzIHdoaWNoIGlzIGFsd2F5cyBtYXJrZWQgYnkgdGhlIHBvc2l0aW9uIG9mIGEgcGxhbmV0LiAKCgo4MS7CoMKgwqDCoMKgwqDCoMKgwqDCoApUaGUgZXhhY3QgcmVsYXRpb24gY2FuIGhhcmRseSBiZSBtYWRlIGNsZWFyIGluIG91ciB0aHJlZS1kaW1lbnNpb25hbCAKcGhyYXNlb2xvZ3k7IGJ1dCB3ZSBtYXkgcGVyaGFwcyBwdXQgaXQgdGhhdCBlYWNoIENlbnRyZSBoYXMgYSBmaWVsZCBvZiBpbmZsdWVuY2UgCnByYWN0aWNhbGx5IGNvLWV4dGVuc2l2ZSB3aXRoIGEgc29sYXIgc3lzdGVtOyB0aGF0IGlmIGEgc2VjdGlvbiBvZiB0aGlzIGZpZWxkIApjb3VsZCBiZSB0YWtlbiBpdCB3b3VsZCBiZSBmb3VuZCB0byBiZSBlbGxpcHRpY2FsOyBhbmQgdGhhdCBvbmUgb2YgdGhlIGZvY2kgb2YgCmVhY2ggZWxsaXBzZSB3b3VsZCBhbHdheXMgYmUgdGhlIHN1biwgYW5kIHRoZSBvdGhlciB3b3VsZCBiZSB0aGUgc3BlY2lhbCBwbGFuZXQgCnJ1bGVkIGJ5IHRoYXQgTWluaXN0ZXIuIEl0IGlzIHByb2JhYmxlIHRoYXQsIGluIHRoZSBncmFkdWFsIGNvbmRlbnNhdGlvbiBvZiB0aGUgCm9yaWdpbmFsIGdsb3dpbmcgbmVidWxhIGZyb20gd2hpY2ggdGhlIHN5c3RlbSB3YXMgZm9ybWVkLCB0aGUgbG9jYXRpb24gb2YgdGhlIApwbGFuZXRzIHdhcyBkZXRlcm1pbmVkIGJ5IHRoZSBmb3JtYXRpb24gb2Ygdm9ydGljZXMgYXQgdGhlc2UgbWlub3IgZm9jaSwgdGhleSAKYmVpbmcgYXV4aWxpYXJ5IHBvaW50cyBvZiBkaXN0cmlidXRpb24gb2YgdGhlc2UgaW5mbHVlbmNlcy0tIGdhbmdsaWEsIGFzIGl0IAp3ZXJlLCBpbiB0aGUgc29sYXIgc3lzdGVtLiAKCgo4Mi7CoMKgwqDCoMKgwqDCoMKgwqDCoApJdCBtdXN0IG9mIGNvdXJzZSBiZSB1bmRlcnN0b29kIHRoYXQgd2UgYXJlIHJlZmVycmluZyBoZXJlIG5vdCB0byB0aGUgCmN1cmlvdXMgYXN0cm9sb2dpY2FsIHRoZW9yeSB3aGljaCBjb25zaWRlcnMgdGhlIHN1biBoaW1zZWxmIGFzIGEgcGxhbmV0LCBidXQgdG8gCnRoZSByZWFsIHBsYW5ldHMgd2hpY2ggcmV2b2x2ZSByb3VuZCBoaW0uIAoKCjgzLsKgwqDCoMKgwqDCoMKgwqDCoMKgClRIRUlSIElORkxVRU5DRSAKCgo4NC7CoMKgwqDCoMKgwqDCoMKgwqDCoApUaGUgaW5mbHVlbmNlcyBiZWxvbmdpbmcgdG8gdGhlc2UgZ3JlYXQgdHlwZXMgZGlmZmVyIHdpZGVseSBpbiBxdWFsaXR5LCAKYW5kIG9uZSB3YXkgaW4gd2hpY2ggdGhpcyBkaWZmZXJlbmNlIHNob3dzIGl0c2VsZiBpcyBpbiB0aGVpciBhY3Rpb24gdXBvbiB0aGUgCmxpdmluZyBlbGVtZW50YWwgZXNzZW5jZSBib3RoIGluIG1hbiBhbmQgYXJvdW5kIGhpbS4gQmUgaXQgZXZlciByZW1lbWJlcmVkIHRoYXQgCnRoaXMgZG9taW5hbmNlIGlzIGV4ZXJ0ZWQgaW4gYWxsIHdvcmxkcywgbm90IG9ubHkgaW4gdGhlIGFzdHJhbCwgdGhvdWdoIAp3ZSBhcmUganVzdCBub3cgY29uZmluaW5nIG91cnNlbHZlcyB0byB0aGF0IGZvciBzaW1wbGljaXR5JyBzIHNha2UuIApUaGVzZSBteXN0ZXJpb3VzIGFnZW5jaWVzIG1heSBoYXZlLCBhbmQgaW5kZWVkIG11c3QgaGF2ZSwgb3RoZXIgYW5kIG1vcmUgCmltcG9ydGFudCBsaW5lcyBvZiBhY3Rpb24gbm90IGF0IHByZXNlbnQga25vd24gdG8gdXM7IGJ1dCB0aGlzIGF0IGxlYXN0IGZvcmNlcyAKaXRzZWxmIHVwb24gdGhlIG5vdGljZSBvZiB0aGUgb2JzZXJ2ZXIsIHRoYXQgZWFjaCBDZW50cmUgcHJvZHVjZXMgaXRzIG93biAKc3BlY2lhbCBlZmZlY3QgdXBvbiB0aGUgbWFuaWZvbGQgdmFyaWV0aWVzIG9mIGVsZW1lbnRhbCBlc3NlbmNlLiAKCgo4NS7CoMKgwqDCoMKgwqDCoMKgwqDCoApPbmUsIGZvciBleGFtcGxlLCB3aWxsIGJlIGZvdW5kIGdyZWF0bHkgdG8gc3RpbXVsYXRlIHRoZSBhY3Rpdml0eSBhbmQgdGhlIAp2aXRhbGl0eSBvZiB0aG9zZSBraW5kcyBvZiBlc3NlbmNlIHdoaWNoIHNwZWNpYWxseSBhcHBlcnRhaW4gdG8gdGhlIENlbnRyZSAKdGhyb3VnaCB3aGljaCBpdCBjb21lcywgd2hpbGUgYXBwYXJlbnRseSBjaGVja2luZyBhbmQgY29udHJvbGxpbmcgb3RoZXJzOyB0aGUgCnN3YXkgb2YgYW5vdGhlciB0eXBlIHdpbGwgYmUgc2VlbiB0byBiZSBzdHJvbmcgb3ZlciBhIHF1aXRlIGRpZmZlcmVudCBzZXQgb2YgCmVzc2VuY2VzIHdoaWNoIGJlbG9uZyB0byBpdHMgQ2VudHJlLCB3aGlsZSBhcHBhcmVudGx5IG5vdCBhZmZlY3RpbmcgdGhlIHByZXZpb3VzIApzZXQgaW4gdGhlIGxlYXN0LiBUaGVyZSBhcmUgYWxsIHNvcnRzIG9mIGNvbWJpbmF0aW9ucyBhbmQgcGVybXV0YXRpb25zIG9mIHRoZXNlIApteXN0aWMgcG93ZXJzLCB0aGUgYWN0aW9uIG9mIG9uZSBvZiB0aGVtIGJlaW5nIGluIHNvbWUgY2FzZXMgZ3JlYXRseSBpbnRlbnNpZmllZCAKYW5kIGluIG90aGVycyBhbG1vc3QgbmV1dHJhbGlzZWQgYnkgdGhlIHByZXNlbmNlIG9mIGFub3RoZXIuIAoKCjg2LsKgwqDCoMKgwqDCoMKgwqDCoMKgClNpbmNlIHRoaXMgZWxlbWVudGFsIGVzc2VuY2UgaXMgdml2aWRseSBhY3RpdmUgaW4gdGhlIGFzdHJhbCBhbmQgbWVudGFsIApib2RpZXMgb2YgbWFuLCBpdCBpcyBjbGVhciB0aGF0IGFueSB1bnVzdWFsIGV4Y2l0YXRpb24gb2YgYW55IG9mIHRoZXNlIGNsYXNzZXMgCm9mIHRoYXQgZXNzZW5jZS0tIGFueSBzdWRkZW4gaW5jcmVhc2UgaW4gaXRzIGFjdGl2aXR5LS0gbXVzdCB1bmRvdWJ0ZWRseSBhZmZlY3QgCnRvIHNvbWUgZXh0ZW50IGVpdGhlciBoaXMgZW1vdGlvbnMgb3IgaGlzIG1pbmQsIG9yIGJvdGg7IGFuZCBpdCBpcyBhbHNvIG9idmlvdXMgCnRoYXQgdGhlc2UgZm9yY2VzIHdvdWxkIHdvcmsgZGlmZmVyZW50bHkgb24gZGlmZmVyZW50IG1lbiwgYmVjYXVzZSBvZiB0aGUgCnZhcmlldGllcyBvZiBlc3NlbmNlIGVudGVyaW5nIGludG8gdGhlaXIgY29tcG9zaXRpb24uIAoKCjg3LsKgwqDCoMKgwqDCoMKgwqDCoMKgClRoZXNlIGluZmx1ZW5jZXMgbmVpdGhlciBleGlzdCBub3IgYXJlIGV4ZXJjaXNlZCBmb3IgdGhlIHNha2Ugb2YgdGhlIG1hbiAKb3Igd2l0aCBhbnkgcmVmZXJlbmNlIHRvIGhpbSwgYW55IG1vcmUgdGhhbiB0aGUgd2luZCBleGlzdHMgZm9yIHRoZSBzYWtlIG9mIHRoZSAKdmVzc2VsIHdoaWNoIGlzIGhlbHBlZCBvciBoaW5kZXJlZCBieSBpdDsgdGhleSBhcmUgcGFydCBvZiB0aGUgcGxheSBvZiBjb3NtaWMgCmZvcmNlcyBvZiB3aG9zZSBvYmplY3Qgd2Uga25vdyBub3RoaW5nLCB0aG91Z2ggd2UgbWF5IHRvIHNvbWUgZXh0ZW50IGxlYXJuIGhvdyAKdG8gY2FsY3VsYXRlIHVwb24gdGhlbSBhbmQgdG8gdXNlIHRoZW0uIFN1Y2ggZW5lcmdpZXMgaW4gdGhlbXNlbHZlcyBhcmUgbm8gbW9yZSAKZ29vZCBub3IgZXZpbCB0aGFuIGFueSBvdGhlciBvZiB0aGUgcG93ZXJzIG9mIG5hdHVyZTogbGlrZSBlbGVjdHJpY2l0eSBvciBhbnkgCm90aGVyIGdyZWF0IG5hdHVyYWwgZm9yY2UgdGhleSBtYXkgYmUgaGVscGZ1bCBvciBodXJ0ZnVsIHRvIHVzLCBhY2NvcmRpbmcgdG8gdGhlIAp1c2UgdGhhdCB3ZSBtYWtlIG9mIHRoZW0uIEp1c3QgYXMgY2VydGFpbiBleHBlcmltZW50cyBhcmUgbW9yZSBsaWtlbHkgdG8gYmUgCnN1Y2Nlc3NmdWwgaWYgdW5kZXJ0YWtlbiB3aGVuIHRoZSBhaXIgaXMgaGVhdmlseSBjaGFyZ2VkIHdpdGggZWxlY3RyaWNpdHksIHdoaWxlIApjZXJ0YWluIG90aGVycyB1bmRlciBzdWNoIGNvbmRpdGlvbnMgd2lsbCBtb3N0IHByb2JhYmx5IGZhaWwsIHNvIGFuIGVmZm9ydCAKaW52b2x2aW5nIHRoZSB1c2Ugb2YgdGhlIHBvd2VycyBvZiBvdXIgbWVudGFsIGFuZCBlbW90aW9uYWwgbmF0dXJlIHdpbGwgbW9yZSBvciAKbGVzcyByZWFkaWx5IGFjaGlldmUgaXRzIG9iamVjdCBhY2NvcmRpbmcgdG8gdGhlIGluZmx1ZW5jZXMgd2hpY2ggcHJlZG9taW5hdGUgCndoZW4gaXQgaXMgbWFkZS4gCgoKODguwqDCoMKgwqDCoMKgwqDCoMKgwqAKTElCRVJUWSBPRiBBQ1RJT04gCgoKODkuwqDCoMKgwqDCoMKgwqDCoMKgwqAKSXQgaXMgb2YgdGhlIHV0bW9zdCBpbXBvcnRhbmNlIGZvciB1cyB0byB1bmRlcnN0YW5kIHRoYXQgc3VjaCBwcmVzc3VyZSAKY2Fubm90IGRvbWluYXRlIG1hbicgcyB3aWxsIGluIHRoZSBzbGlnaHRlc3QgZGVncmVlOyBhbGwgaXQgY2FuIGRvIGlzIGluIHNvbWUgCmNhc2VzIHRvIG1ha2UgaXQgZWFzaWVyIG9yIG1vcmUgZGlmZmljdWx0IGZvciB0aGF0IHdpbGwgdG8gYWN0IGFsb25nIGNlcnRhaW4gCmxpbmVzLiBJbiBubyBjYXNlIGNhbiBhIG1hbiBiZSBzd2VwdCBhd2F5IGJ5IGl0IGludG8gYW55IGNvdXJzZSBvZiBhY3Rpb24gCndpdGhvdXQgaGlzIG93biBjb25zZW50LCB0aG91Z2ggaGUgbWF5IGV2aWRlbnRseSBiZSBoZWxwZWQgb3IgaGluZGVyZWQgYnkgaXQgaW4gCmFueSBlZmZvcnQgdGhhdCBoZSBjaGFuY2VzIHRvIGJlIG1ha2luZy4gVGhlIHJlYWxseSBzdHJvbmcgbWFuIGhhcyBsaXR0bGUgbmVlZCAKdG8gdHJvdWJsZSBoaW1zZWxmIGFzIHRvIHRoZSBhZ2VuY2llcyB3aGljaCBoYXBwZW4gdG8gYmUgaW4gdGhlIGFzY2VuZGFudCwgYnV0IApmb3IgbWVuIG9mIHdlYWtlciB3aWxsIGl0IG1heSBzb21ldGltZXMgYmUgd29ydGggd2hpbGUgdG8ga25vdyBhdCB3aGF0IG1vbWVudCAKdGhpcyBvciB0aGF0IGZvcmNlIGNhbiBtb3N0IGFkdmFudGFnZW91c2x5IGJlIGFwcGxpZWQuIFRoZXNlIGZhY3RvcnMgbWF5IGJlIHB1dCAKYXNpZGUgYXMgYSBuZWdsaWdpYmxlIHF1YW50aXR5IGJ5IHRoZSBtYW4gb2YgaXJvbiBkZXRlcm1pbmF0aW9uIG9yIGJ5IHRoZSAKc3R1ZGVudCBvZiB0cnVlIG9jY3VsdGlzbTsgYnV0IHNpbmNlIG1vc3QgbWVuIHN0aWxsIGFsbG93IHRoZW1zZWx2ZXMgdG8gYmUgdGhlIApoZWxwbGVzcyBzcG9ydCBvZiB0aGUgZm9yY2VzIG9mIGRlc2lyZSwgYW5kIGhhdmUgbm90IHlldCBkZXZlbG9wZWQgYW55dGhpbmcgCndvcnRoIGNhbGxpbmcgYSB3aWxsIG9mIHRoZWlyIG93biwgdGhlaXIgZmVlYmxlbmVzcyBwZXJtaXRzIHRoZXNlIGluZmx1ZW5jZXMgdG8gCmFzc3VtZSBhbiBpbXBvcnRhbmNlIGluIGh1bWFuIGxpZmUgdG8gd2hpY2ggdGhleSBoYXZlIGludHJpbnNpY2FsbHkgbm8gY2xhaW0uCgoKOTAuwqDCoMKgwqDCoMKgwqDCoMKgwqAKRm9yIGV4YW1wbGUsIGEgY2VydGFpbiB2YXJpZXR5IG9mIHByZXNzdXJlIG1heSBvY2Nhc2lvbmFsbHkgYnJpbmcgYWJvdXQgYSAKY29uZGl0aW9uIG9mIGFmZmFpcnMgaW4gd2hpY2ggYWxsIGZvcm1zIG9mIG5lcnZvdXMgZXhjaXRlbWVudCBhcmUgY29uc2lkZXJhYmx5IAppbnRlbnNpZmllZCwgYW5kIHRoZXJlIGlzIGNvbnNlcXVlbnRseSBhIGdlbmVyYWwgc2Vuc2Ugb2YgaXJyaXRhYmlsaXR5IGFicm9hZC4gClRoYXQgY29uZGl0aW9uIGNhbm5vdCBjYXVzZSBhIHF1YXJyZWwgYmV0d2VlbiBzZW5zaWJsZSBwZW9wbGU7IGJ1dCB1bmRlciBzdWNoIApjaXJjdW1zdGFuY2VzIGRpc3B1dGVzIGFyaXNlIGZhciBtb3JlIHJlYWRpbHkgdGhhbiB1c3VhbCwgZXZlbiBvbiB0aGUgbW9zdCAKdHJpZmxpbmcgcHJldGV4dHMsIGFuZCB0aGUgbGFyZ2UgbnVtYmVyIG9mIHBlb3BsZSB3aG8gc2VlbSB0byBiZSBhbHdheXMgb24gdGhlIAp2ZXJnZSBvZiBsb3NpbmcgdGhlaXIgdGVtcGVycyBhcmUgbGlrZWx5IHRvIHJlbGlucXVpc2ggYWxsIGNvbnRyb2wgb2YgdGhlbXNlbHZlcyAKb24gZXZlbiBsZXNzIHRoYW4gb3JkaW5hcnkgcHJvdm9jYXRpb24uIEl0IG1heSBzb21ldGltZXMgaGFwcGVuIHRoYXQgc3VjaCAKaW5mbHVlbmNlcywgcGxheWluZyBvbiB0aGUgc21vdWxkZXJpbmcgZGlzY29udGVudCBvZiBpZ25vcmFudCBqZWFsb3VzeSwgbWF5IGZhbiAKaXQgaW50byBhbiBvdXRidXJzdCBvZiBwb3B1bGFyIGZyZW56eSBmcm9tIHdoaWNoIHdpZGUtc3ByZWFkIGRpc2FzdGVyIG1heSBlbnN1ZS4KCgo5MS7CoMKgwqDCoMKgwqDCoMKgwqDCoApFdmVuIGluIHN1Y2ggYSBjYXNlIGFzIHRoaXMgd2UgbXVzdCBndWFyZCBvdXJzZWx2ZXMgYWdhaW5zdCB0aGUgZmF0YWwgCm1pc3Rha2Ugb2Ygc3VwcG9zaW5nIHRoZSBpbmZsdWVuY2UgdG8gYmUgZXZpbCBiZWNhdXNlIG1hbicgcyBwYXNzaW9ucyB0dXJuIGl0IHRvIApldmlsIGVmZmVjdC4gVGhlIGZvcmNlIGl0c2VsZiBpcyBzaW1wbHkgYSB3YXZlIG9mIGFjdGl2aXR5IHNlbnQgZm9ydGggZnJvbSBvbmUgCm9mIHRoZSBDZW50cmVzIG9mIHRoZSBEZWl0eSwgYW5kIGlzIGluIGl0c2VsZiBvZiB0aGUgbmF0dXJlIG9mIGFuIAppbnRlbnNpZmljYXRpb24gb2YgY2VydGFpbiB2aWJyYXRpb25zLS0gbmVjZXNzYXJ5IHBlcmhhcHMgdG8gcHJvZHVjZSBzb21lIApmYXItcmVhY2hpbmcgY29zbWljIGVmZmVjdC4gVGhlIGluY3JlYXNlZCBhY3Rpdml0eSBwcm9kdWNlZCBpbmNpZGVudGFsbHkgYnkgaXRzIAptZWFucyBpbiB0aGUgYXN0cmFsIGJvZHkgb2YgYSBtYW4gb2ZmZXJzIGhpbSBhbiBvcHBvcnR1bml0eSBvZiB0ZXN0aW5nIGhpcyBwb3dlciAKdG8gbWFuYWdlIGhpcyB2ZWhpY2xlczsgYW5kIHdoZXRoZXIgaGUgc3VjY2VlZHMgb3IgZmFpbHMgaW4gdGhpcywgaXQgaXMgc3RpbGwgCm9uZSBvZiB0aGUgbGVzc29ucyB3aGljaCBoZWxwIGluIGhpcyBldm9sdXRpb24uIEthcm1hIG1heSB0aHJvdyBhIG1hbiBpbnRvIApjZXJ0YWluIHN1cnJvdW5kaW5ncyBvciBicmluZyBoaW0gdW5kZXIgY2VydGFpbiBpbmZsdWVuY2VzLCBidXQgaXQgY2FuIG5ldmVyIApmb3JjZSBoaW0gdG8gY29tbWl0IGEgY3JpbWUsIHRob3VnaCBpdCBtYXkgc28gcGxhY2UgaGltIHRoYXQgaXQgcmVxdWlyZXMgZ3JlYXQgCmRldGVybWluYXRpb24gb24gaGlzIHBhcnQgdG8gYXZvaWQgdGhhdCBjcmltZS4gSXQgaXMgcG9zc2libGUsIHRoZXJlZm9yZSwgZm9yIGFuIAphc3Ryb2xvZ2VyIHRvIHdhcm4gYSBtYW4gb2YgdGhlIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2ggYXQgYSBnaXZlbiB0aW1lIGJlIAp3aWxsIGZpbmQgaGltc2VsZiwgYnV0IGFueSBkZWZpbml0ZSBwcm9waGVjeSBhcyB0byBoaXMgYWN0aW9uIHVuZGVyIHRob3NlIApjaXJjdW1zdGFuY2VzIGNhbiBvbmx5IGJlIGJhc2VkIHVwb24gcHJvYmFiaWxpdGllcy0tIHRob3VnaCB3ZSBtYXkgcmVhZGlseSAKcmVjb2duaXNlIGhvdyBuZWFybHkgc3VjaCBwcm9waGVjaWVzIGJlY29tZSBjZXJ0YWludGllcyBpbiB0aGUgY2FzZSBvZiB0aGUgCm9yZGluYXJ5IHdpbGwtbGVzcyBtYW4uIEZyb20gdGhlIGV4dHJhb3JkaW5hcnkgbWl4dHVyZSBvZiBzdWNjZXNzIGFuZCBmYWlsdXJlIAp3aGljaCBjaGFyYWN0ZXJpc2UgbW9kZXJuIGFzdHJvbG9naWNhbCBwcmVkaWN0aW9ucywgaXQgc2VlbXMgZmFpcmx5IGNlcnRhaW4gdGhhdCAKdGhlIHByYWN0aXRpb25lcnMsIG9mIHRoaXMgYXJ0IGFyZSBub3QgZnVsbHkgYWNxdWFpbnRlZCB3aXRoIGFsbCB0aGUgbmVjZXNzYXJ5IApmYWN0b3JzLiBJbiBhIGNhc2UgaW50byB3aGljaCBvbmx5IHRob3NlIGZhY3RvcnMgZW50ZXIgd2hpY2ggYXJlIGFscmVhZHkgZmFpcmx5IAp3ZWxsIHVuZGVyc3Rvb2QsIHN1Y2Nlc3MgaXMgYWNoaWV2ZWQ7IGJ1dCBpbiBjYXNlcyB3aGVyZSB1bnJlY29nbmlzZWQgZmFjdG9ycyAKY29tZSBpbnRvIHBsYXkgd2UgaGF2ZSBuYXR1cmFsbHkgbW9yZSBvciBsZXNzIGNvbXBsZXRlIGZhaWx1cmUgYXMgdGhlIHJlc3VsdC4KCgo5Mi7CoMKgwqDCoMKgwqDCoMKgwqDCoApDSEFQVEVSIElWIAoKCjkzLsKgwqDCoMKgwqDCoMKgwqDCoMKgCkJZIFRIRSBTVU4gCgoKOTQuwqDCoMKgwqDCoMKgwqDCoMKgwqAKVEhFIEhFQVQgT0YgVEhFIFNVTiAKCgo5NS7CoMKgwqDCoMKgwqDCoMKgwqDCoApUSE9TRSB3aG8gYXJlIGludGVyZXN0ZWQgaW4gYXN0cm9ub215IHdpbGwgZmluZCB0aGUgb2NjdWx0IHNpZGUgb2YgdGhhdCAKc2NpZW5jZSBvbmUgb2YgdGhlIG1vc3QgZmFzY2luYXRpbmcgc3R1ZGllcyB3aXRoaW4gb3VyIHJlYWNoLiBPYnZpb3VzbHkgaXQgd291bGQgCmJlIGF0IG9uY2UgdG9vIHJlY29uZGl0ZSBhbmQgdG9vIHRlY2huaWNhbCBmb3IgaW5jbHVzaW9uIGluIHN1Y2ggYSBib29rIGFzIHRoaXMsIAp3aGljaCBpcyBjb25jZXJuZWQgbW9yZSBpbW1lZGlhdGVseSB3aXRoIHN1Y2ggb2YgdGhlIHVuc2VlbiBwaGVub21lbmEgYXMgYWZmZWN0IAp1cyBwcmFjdGljYWxseSBpbiBvdXIgZGFpbHkgbGlmZTsgYnV0IHRoZSBjb25uZWN0aW9uIG9mIHRoZSBzdW4gd2l0aCB0aGF0IGxpZmUgCmlzIHNvIGludGltYXRlIHRoYXQgaXQgaXMgbmVjZXNzYXJ5IHRoYXQgYSBmZXcgd29yZHMgc2hvdWxkIGJlIHNhaWQgYWJvdXQgaGltLgoKCjk2LsKgwqDCoMKgwqDCoMKgwqDCoMKgClRoZSB3aG9sZSBzb2xhciBzeXN0ZW0gaXMgdHJ1bHkgdGhlIGdhcm1lbnQgb2YgaXRzIERlaXR5LCBidXQgdGhlIHN1biBpcyAKSGlzIHZlcml0YWJsZSBlcGlwaGFueS0tIHRoZSBuZWFyZXN0IHRoYXQgd2UgY2FuIGNvbWUgaW4gdGhlIHBoeXNpY2FsIHJlYWxtIHRvIGEgCm1hbmlmZXN0YXRpb24gb2YgSGltLCB0aGUgbGVucyB0aHJvdWdoIHdoaWNoIEhpcyBwb3dlciBzaGluZXMgZm9ydGggdXBvbiB1cy4gCgoKOTcuwqDCoMKgwqDCoMKgwqDCoMKgwqAKUmVnYXJkZWQgcHVyZWx5IGZyb20gdGhlIHBoeXNpY2FsIHBvaW50IG9mIHZpZXcsIHRoZSBzdW4gaXMgYSB2YXN0IG1hc3MgCm9mIGdsb3dpbmcgbWF0dGVyIGF0IGFsbW9zdCBpbmNvbmNlaXZhYmx5IGhpZ2ggdGVtcGVyYXR1cmVzLCBhbmQgaW4gYSBjb25kaXRpb24gCm9mIGVsZWN0cmlmaWNhdGlvbiBzbyBpbnRlbnNlIGFzIHRvIGJlIGFsdG9nZXRoZXIgYmV5b25kIG91ciBleHBlcmllbmNlLiAKQXN0cm9ub21lcnMsIHN1cHBvc2luZyBoaXMgaGVhdCB0byBiZSBkdWUgbWVyZWx5IHRvIGNvbnRyYWN0aW9uLCB1c2VkIHRvIApjYWxjdWxhdGUgaG93IGxvbmcgaGUgbXVzdCBoYXZlIGV4aXN0ZWQgaW4gdGhlIHBhc3QsIGFuZCBob3cgbG9uZyBpdCB3b3VsZCBiZSAKcG9zc2libGUgZm9yIGhpbSB0byBtYWludGFpbiBpdCBpbiB0aGUgZnV0dXJlOyBhbmQgdGhleSBmb3VuZCB0aGVtc2VsdmVzIHVuYWJsZSAKdG8gYWxsb3cgbW9yZSB0aGFuIGEgZmV3IGh1bmRyZWQgdGhvdXNhbmQgeWVhcnMgZWl0aGVyIHdheSwgd2hpbGUgdGhlIGdlb2xvZ2lzdHMgCm9uIHRoZSBvdGhlciBoYW5kIGNsYWltIHRoYXQgb24gdGhpcyBlYXJ0aCBhbG9uZSB3ZSBoYXZlIGV2aWRlbmNlIG9mIHByb2Nlc3NlcyAKZXh0ZW5kaW5nIG92ZXIgbWlsbGlvbnMgb2YgeWVhcnMuIFRoZSBkaXNjb3Zlcnkgb2YgcmFkaXVtIGhhcyB1cHNldCB0aGUgb2xkZXIgCnRoZW9yaWVzLCBidXQgZXZlbiB3aXRoIGl0cyBhaWQgdGhleSBoYXZlIG5vdCB5ZXQgcmlzZW4gdG8gdGhlIHNpbXBsaWNpdHkgb2YgdGhlIApyZWFsIGV4cGxhbmF0aW9uIG9mIHRoZSBkaWZmaWN1bHR5LiAKCgo5OC7CoMKgwqDCoMKgwqDCoMKgwqDCoApPbmUgY2FuIGltYWdpbmUgc29tZSBpbnRlbGxpZ2VudCBtaWNyb2JlIGxpdmluZyBpbiBvciB1cG9uIGEgaHVtYW4gYm9keSAKYW5kIGFyZ3VpbmcgYWJvdXQgaXRzIHRlbXBlcmF0dXJlIGluIHByZWNpc2VseSB0aGUgc2FtZSB3YXkuIEhlIG1pZ2h0IHNheSB0aGF0IAppdCBtdXN0IG9mIGNvdXJzZSBiZSBhIGdyYWR1YWxseSBjb29saW5nIGJvZHksIGFuZCBoZSBtaWdodCBjYWxjdWxhdGUgd2l0aCAKZXhhY3RpdHVkZSB0aGF0IGluIHNvIG1hbnkgaG91cnMgb3IgbWludXRlcyBpdCBtdXN0IHJlYWNoIGEgdGVtcGVyYXR1cmUgdGhhdCAKd291bGQgcmVuZGVyIGNvbnRpbnVlZCBleGlzdGVuY2UgaW1wb3NzaWJsZSBmb3IgaGltLiBJZiBoZSBsaXZlZCBsb25nIGVub3VnaCwgCmhvd2V2ZXIsIGhlIHdvdWxkIGZpbmQgdGhhdCB0aGUgaHVtYW4gYm9keSBkaWQgbm90IGNvb2wsIGFzIGFjY29yZGluZyAKdG8gaGlzIHRoZW9yaWVzIGl0IHNob3VsZCBkbywgYW5kIG5vIGRvdWJ0IHRoaXMgd291bGQgc2VlbSB0byBoaW0gdmVyeSAKbXlzdGVyaW91cywgdW5sZXNzIGFuZCB1bnRpbCBoZSBkaXNjb3ZlcmVkIHRoYXQgaGUgd2FzIGRlYWxpbmcgbm90IHdpdGggYSBkeWluZyAKZmlyZSBidXQgd2l0aCBhIGxpdmluZyBiZWluZywgYW5kIHRoYXQgYXMgbG9uZyBhcyB0aGUgbGlmZSByZW1haW5lZCB0aGUgCnRlbXBlcmF0dXJlIHdvdWxkIG5vdCBzaW5rLiBJbiBleGFjdGx5IHRoZSBzYW1lIHdheSBpZiB3ZSByZWFsaXNlIHRoYXQgdGhlIHN1biAKaXMgdGhlIHBoeXNpY2FsIG1hbmlmZXN0YXRpb24gb2YgdGhlIFNvbGFyIERlaXR5LCB3ZSBzaGFsbCBzZWUgdGhhdCB0aGUgbWlnaHR5IApsaWZlIGJlaGluZCBpdCB3aWxsIGFzc3VyZWRseSBrZWVwIHVwIGl0cyB0ZW1wZXJhdHVyZSwgYXMgbG9uZyBhcyBtYXkgYmUgCm5lY2Vzc2FyeSBmb3IgdGhlIGZ1bGwgZXZvbHV0aW9uIG9mIHRoZSBzeXN0ZW0uIAoKCjk5LsKgwqDCoMKgwqDCoMKgwqDCoMKgClRIRSBXSUxMT1ctTEVBVkVTIAoKCjEwMC7CoMKgwqDCoMKgwqDCoApBIHNpbWlsYXIgZXhwbGFuYXRpb24gb2ZmZXJzIHVzIGEgc29sdXRpb24gb2Ygc29tZSBvZiB0aGUgb3RoZXIgcHJvYmxlbXMgCm9mIHNvbGFyIHBoeXNpY3MuIEZvciBleGFtcGxlLCB0aGUgcGhlbm9tZW5hIGNhbGxlZCBmcm9tIHRoZWlyIHNoYXBlIHRoZSBgIAp3aWxsb3ctbGVhdmVzJyBvciBgIHJpY2UtZ3JhaW5zLCcgb2Ygd2hpY2ggdGhlIHBob3Rvc3BoZXJlIG9mIHRoZSBzdW4gaXMgCnByYWN0aWNhbGx5IGNvbXBvc2VkLCBoYXZlIG9mdGVuIHB1enpsZWQgZXhvdGVyaWMgc3R1ZGVudHMgYnkgdGhlIGFwcGFyZW50bHkgCmlycmVjb25jaWxhYmxlIGNoYXJhY3RlcmlzdGljcyB3aGljaCB0aGV5IHByZXNlbnQuIEZyb20gdGhlaXIgcG9zaXRpb24gdGhleSBjYW4gCmJlIG5vdGhpbmcgZWxzZSB0aGFuIG1hc3NlcyBvZiBnbG93aW5nIGdhcyBhdCBhbiBleGNlZWRpbmdseSBoaWdoIHRlbXBlcmF0dXJlLCAKYW5kIHRoZXJlZm9yZSBvZiBncmVhdCB0ZW51aXR5OyB5ZXQgdGhvdWdoIHRoZXkgbXVzdCBiZSBmYXIgbGlnaHRlciB0aGFuIGFueSAKdGVycmVzdHJpYWwgY2xvdWQsIHRoZXkgbmV2ZXIgZmFpbCB0byBtYWludGFpbiB0aGVpciBwZWN1bGlhciBzaGFwZSwgaG93ZXZlciAKd2lsZGx5IHRoZXkgbWF5IGJlIHRvc3NlZCBhYm91dCBpbiB0aGUgdmVyeSBtaWRzdCBvZiBzdG9ybXMgb2YgcG93ZXIgc28gCnRyZW1lbmRvdXMgdGhhdCB0aGV5IHdvdWxkIGluc3RhbnRseSBkZXN0cm95IHRoZSBlYXJ0aCBpdHNlbGYuIAoKCjEwMS7CoMKgwqDCoMKgwqDCoApXaGVuIHdlIHJlYWxpc2UgdGhhdCBiZWhpbmQgZWFjaCBvZiB0aGVzZSBzdHJhbmdlIG9iamVjdHMgdGhlcmUgaXMgYSAKc3BsZW5kaWQgTGlmZS0tIHRoYXQgZWFjaCBtYXkgYmUgY29uc2lkZXJlZCBhcyB0aGUgcGh5c2ljYWwgYm9keSBvZiBhIGdyZWF0IApBbmdlbC0tIHdlIGNvbXByZWhlbmQgdGhhdCBpdCBpcyB0aGF0IExpZmUgd2hpY2ggaG9sZHMgdGhlbSB0b2dldGhlciBhbmQgZ2l2ZXMgCnRoZW0gdGhlaXIgd29uZGVyZnVsIHN0YWJpbGl0eS4gVG8gYXBwbHkgdG8gdGhlbSB0aGUgdGVybSBwaHlzaWNhbCBib2R5IG1heSAKcGVyaGFwcyBtaXNsZWFkIHVzLCBiZWNhdXNlIGZvciB1cyB0aGUgbGlmZSBpbiB0aGUgcGh5c2ljYWwgc2VlbXMgb2Ygc28gbXVjaCAKaW1wb3J0YW5jZSBhbmQgb2NjdXBpZXMgc28gcHJvbWluZW50IGEgcG9zaXRpb24gaW4gdGhlIHByZXNlbnQgc3RhZ2Ugb2Ygb3VyIApldm9sdXRpb24uIE1hZGFtZSBCbGF2YXRza3kgaGFzIHRvbGQgdXMgdGhhdCB3ZSBjYW5ub3QgdHJ1bHkgZGVzY3JpYmUgdGhlbSBhcyAKc29sYXIgaW5oYWJpdGFudHMsIHNpbmNlIHRoZSBTb2xhciBCZWluZ3Mgd2lsbCBoYXJkbHkgcGxhY2UgdGhlbXNlbHZlcyBpbiAKdGVsZXNjb3BpYyBmb2N1cywgYnV0IHRoYXQgdGhleSBhcmUgdGhlIHJlc2Vydm9pcnMgb2Ygc29sYXIgdml0YWwgZW5lcmd5LCAKdGhlbXNlbHZlcyBwYXJ0YWtpbmcgb2YgdGhlIGxpZmUgd2hpY2ggdGhleSBwb3VyIGZvcnRoLiAKCgoxMDIuwqDCoMKgwqDCoMKgwqAKTGV0IHVzIHNheSByYXRoZXIgdGhhdCB0aGUgd2lsbG93LWxlYXZlcyBhcmUgbWFuaWZlc3RhdGlvbnMgdXBvbiB0aGUgCnBoeXNpY2FsIGxldmVsIG1haW50YWluZWQgYnkgdGhlIHNvbGFyIEFuZ2VscyBmb3IgYSBzcGVjaWFsIHB1cnBvc2UsIGF0IHRoZSBjb3N0IApvZiBhIGNlcnRhaW4gc2FjcmlmaWNlIG9yIGxpbWl0YXRpb24gb2YgdGhlaXIgYWN0aXZpdGllcyBvbiB0aGUgaGlnaGVyIGxldmVscyAKd2hpY2ggYXJlIHRoZWlyIG5vcm1hbCBoYWJpdGF0LiBSZW1lbWJlcmluZyB0aGF0IGl0IGlzIHRocm91Z2ggdGhlc2UgCndpbGxvdy1sZWF2ZXMgdGhhdCB0aGUgbGlnaHQsIGhlYXQgYW5kIHZpdGFsaXR5IG9mIHRoZSBzdW4gY29tZSB0byB1cywgd2UgbWF5IApyZWFkaWx5IHNlZSB0aGF0IHRoZSBvYmplY3Qgb2YgdGhpcyBzYWNyaWZpY2UgaXMgdG8gYnJpbmcgZG93biB0byB0aGUgcGh5c2ljYWwgCmxldmVsIGNlcnRhaW4gZm9yY2VzIHdoaWNoIHdvdWxkIG90aGVyd2lzZSByZW1haW4gdW5tYW5pZmVzdGVkLCBhbmQgdGhhdCB0aGVzZSAKZ3JlYXQgQW5nZWxzIGFyZSBhY3RpbmcgYXMgY2hhbm5lbHMsIGFzIHJlZmxlY3RvcnMsIGFzIHNwZWNpYWxpc2VycyBvZiBkaXZpbmUgCnBvd2VyLS0gdGhhdCB0aGV5IGFyZSBpbiBmYWN0IGRvaW5nIGF0IGNvc21pYyBsZXZlbHMgYW5kIGZvciBhIHNvbGFyIHN5c3RlbSAKd2hhdCwgaWYgd2UgYXJlIHdpc2UgZW5vdWdoIHRvIHVzZSBvdXIgcHJpdmlsZWdlcywgd2Ugb3Vyc2VsdmVzIG1heSBkbyBvbiBhIAptaWNyb3Njb3BpY2FsIHNjYWxlIGluIG91ciBvd24gbGl0dGxlIGNpcmNsZSwgYXMgd2lsbCBiZSBzZWVuIGluIGEgbGF0ZXIgCmNoYXB0ZXIuIAoKCjEwMy7CoMKgwqDCoMKgwqDCoApWSVRBTElUWSAKCgoxMDQuwqDCoMKgwqDCoMKgwqAKV2UgYWxsIGtub3cgdGhlIGZlZWxpbmcgb2YgY2hlZXJmdWxuZXNzIGFuZCB3ZWxsLWJlaW5nIHdoaWNoIHN1bmxpZ2h0IApicmluZ3MgdG8gdXMsIGJ1dCBvbmx5IHN0dWRlbnRzIG9mIG9jY3VsdGlzbSBhcmUgZnVsbHkgYXdhcmUgb2YgdGhlIHJlYXNvbnMgZm9yIAp0aGF0IHNlbnNhdGlvbi4gSnVzdCBhcyB0aGUgc3VuIGZsb29kcyBoaXMgc3lzdGVtIHdpdGggbGlnaHQgYW5kIGhlYXQsIHNvIGRvZXMgCmhlIHBlcnBldHVhbGx5IHBvdXIgb3V0IGludG8gaXQgYW5vdGhlciBmb3JjZSBhcyB5ZXQgdW5zdXNwZWN0ZWQgYnkgbW9kZXJuIApzY2llbmNlLS0gYSBmb3JjZSB0byB3aGljaCBoYXMgYmVlbiBnaXZlbiB0aGUgbmFtZSBgIHZpdGFsaXR5JyAuIFRoaXMgaXMgCnJhZGlhdGVkIG9uIGFsbCBsZXZlbHMsIGFuZCBtYW5pZmVzdHMgaXRzZWxmIGluIGVhY2ggcmVhbG0tLSBwaHlzaWNhbCwgCmVtb3Rpb25hbCwgbWVudGFsIGFuZCB0aGUgcmVzdC0tIGJ1dCB3ZSBhcmUgc3BlY2lhbGx5IGNvbmNlcm5lZCBmb3IgdGhlIG1vbWVudCAKd2l0aCBpdHMgYXBwZWFyYW5jZSBpbiB0aGUgbG93ZXN0LCB3aGVyZSBpdCBlbnRlcnMgc29tZSBvZiB0aGUgcGh5c2ljYWwgYXRvbXMsIAppbW1lbnNlbHkgaW5jcmVhc2VzIHRoZWlyIGFjdGl2aXR5LCBhbmQgbWFrZXMgdGhlbSBhbmltYXRlZCBhbmQgZ2xvd2luZy4gCgoKMTA1LsKgwqDCoMKgwqDCoMKgCldlIG11c3Qgbm90IGNvbmZ1c2UgdGhpcyBmb3JjZSB3aXRoIGVsZWN0cmljaXR5LCB0aG91Z2ggaXQgaW4gc29tZSB3YXlzIApyZXNlbWJsZXMgaXQuIFRoZSBEZWl0eSBzZW5kcyBmb3J0aCBmcm9tIEhpbXNlbGYgdGhyZWUgZ3JlYXQgZm9ybXMgb2YgZW5lcmd5OyAKdGhlcmUgbWF5IGJlIGh1bmRyZWRzIG1vcmUgb2Ygd2hpY2ggd2Uga25vdyBub3RoaW5nOyBidXQgYXQgbGVhc3QgdGhlcmUgYXJlIAp0aHJlZS4gRWFjaCBvZiB0aGVtIGhhcyBpdHMgYXBwcm9wcmlhdGUgbWFuaWZlc3RhdGlvbiBhdCBldmVyeSBsZXZlbCB3aGljaCBvdXIgCnN0dWRlbnRzIGhhdmUgeWV0IHJlYWNoZWQ7IGJ1dCBmb3IgdGhlIG1vbWVudCBsZXQgdXMgdGhpbmsgb2YgdGhlbSBhcyB0aGV5IHNob3cgCnRoZW1zZWx2ZXMgaW4gdGhlIHBoeXNpY2FsIHdvcmxkLiBPbmUgb2YgdGhlbSBleGhpYml0cyBpdHNlbGYgYXMgZWxlY3RyaWNpdHksIAphbm90aGVyIGFzIHZpdGFsaXR5LCBhbmQgdGhlIHRoaXJkIGFzIHRoZSBzZXJwZW50LWZpcmUsIG9mIHdoaWNoIEkgaGF2ZSBhbHJlYWR5IAp3cml0dGVuIGluIFRoZSBJbm5lciBMaWZlLiAKCgoxMDYuwqDCoMKgwqDCoMKgwqAKVGhlc2UgdGhyZWUgcmVtYWluIGRpc3RpbmN0LCBhbmQgbm9uZSBvZiB0aGVtIGNhbiBhdCB0aGlzIGxldmVsIGJlIApjb252ZXJ0ZWQgaW50byBlaXRoZXIgb2YgdGhlIG90aGVycy4gVGhleSBoYXZlIG5vIGNvbm5lY3Rpb24gd2l0aCBhbnkgb2YgdGhlIApUaHJlZSBHcmVhdCBPdXRwb3VyaW5nczsgYWxsIG9mIHRob3NlIGFyZSBkZWZpbml0ZSBlZmZvcnRzIG1hZGUgYnkgdGhlIFNvbGFyIApEZWl0eSwgd2hpbGUgdGhlc2Ugc2VlbSByYXRoZXIgdG8gYmUgcmVzdWx0cyBvZiBIaXMgbGlmZS0tIEhpcyBxdWFsaXRpZXMgaW4gCm1hbmlmZXN0YXRpb24gd2l0aG91dCBhbnkgdmlzaWJsZSBlZmZvcnQuIEVsZWN0cmljaXR5IHdoaWxlIGl0IGlzIHJ1c2hpbmcgCnRocm91Z2ggdGhlIGF0b21zLCBkZWZsZWN0cyB0aGVtIGFuZCBob2xkcyB0aGVtIGluIGEgY2VydGFpbiB3YXktLSB0aGlzIGVmZmVjdCAKYmVpbmcgaW4gYWRkaXRpb24gdG8gYW5kIHF1aXRlIGFwYXJ0IGZyb20gdGhlIHNwZWNpYWwgcmF0ZSBvZiB2aWJyYXRpb24gd2hpY2ggaXQgCmFsc28gaW1wYXJ0cyB0byB0aGVtLiAKCgoxMDcuwqDCoMKgwqDCoMKgwqAKQnV0IHRoZSBhY3Rpb24gb2Ygdml0YWxpdHkgZGlmZmVycyBpbiBtYW55IHdheXMgZnJvbSB0aGF0IG9mIGVsZWN0cmljaXR5LCAKbGlnaHQgb3IgaGVhdC4gQW55IG9mIHRoZSB2YXJpYW50cyBvZiB0aGlzIGxhdHRlciBmb3JjZSBjYXVzZSBvc2NpbGxhdGlvbiBvZiB0aGUgCmF0b20gYXMgYSB3aG9sZS0tIGFuIG9zY2lsbGF0aW9uIHRoZSBzaXplIG9mIHdoaWNoIGlzIGVub3Jtb3VzIGFzIGNvbXBhcmVkIHdpdGggCnRoYXQgb2YgdGhlIGF0b207IGJ1dCB0aGlzIG90aGVyIGZvcmNlIHdoaWNoIHdlIGNhbGwgdml0YWxpdHkgY29tZXMgdG8gdGhlIGF0b20gCm5vdCBmcm9tIHdpdGhvdXQsIGJ1dCBmcm9tIHdpdGhpbi4gCgoKMTA4LsKgwqDCoMKgwqDCoMKgClRIRSBWSVRBTElUWSBHTE9CVUxFIAoKCjEwOS7CoMKgwqDCoMKgwqDCoApUaGUgYXRvbSBpcyBpdHNlbGYgbm90aGluZyBidXQgdGhlIG1hbmlmZXN0YXRpb24gb2YgYSBmb3JjZTsgdGhlIFNvbGFyIApEZWl0eSB3aWxscyBhIGNlcnRhaW4gc2hhcGUgd2hpY2ggd2UgY2FsbCBhbiB1bHRpbWF0ZSBwaHlzaWNhbCBhdG9tLCBhbmQgYnkgdGhhdCAKZWZmb3J0IG9mIEhpcyB3aWxsIHNvbWUgZm91cnRlZW4gdGhvdXNhbmQgbWlsbGlvbiBidWJibGVzIGFyZSBoZWxkIGluIHRoYXQgCnBhcnRpY3VsYXIgZm9ybS4gSXQgaXMgbmVjZXNzYXJ5IHRvIGVtcGhhc2lzZSB0aGUgZmFjdCB0aGF0IHRoZSBjb2hlc2lvbiBvZiB0aGUgCmJ1YmJsZXMgaW4gdGhhdCBmb3JtIGlzIGVudGlyZWx5IGRlcGVuZGVudCB1cG9uIHRoYXQgZWZmb3J0IG9mIHdpbGwsIHNvIHRoYXQgaWYgCnRoYXQgd2VyZSBmb3IgYSBzaW5nbGUgaW5zdGFudCB3aXRoZHJhd24sIHRoZSBidWJibGVzIG11c3QgZmFsbCBhcGFydCBhZ2FpbiwgYW5kIAp0aGUgd2hvbGUgcGh5c2ljYWwgcmVhbG0gd291bGQgc2ltcGx5IGNlYXNlIHRvIGV4aXN0IGluIGZhciBsZXNzIHRoYW4gdGhlIHBlcmlvZCAKb2YgYSBmbGFzaCBvZiBsaWdodG5pbmcuIFNvIHRydWUgaXMgaXQgdGhhdCB0aGUgd2hvbGUgd29ybGQgaXMgbm90aGluZyBidXQgCmlsbHVzaW9uLCBldmVuIGZyb20gdGhpcyBwb2ludCBvZiB2aWV3LCB0byBzYXkgbm90aGluZyBvZiB0aGUgZmFjdCB0aGF0IHRoZSAKYnViYmxlcyBvZiB3aGljaCB0aGUgYXRvbSBpcyBidWlsdCBhcmUgdGhlbXNlbHZlcyBvbmx5IGhvbGVzIGluIGtvaWxvbiwgdGhlIHRydWUgCmFldGhlciBvZiBzcGFjZS4gCgoKMTEwLsKgwqDCoMKgwqDCoMKgClNvIGl0IGlzIHRoZSB3aWxsLWZvcmNlIG9mIHRoZSBTb2xhciBEZWl0eSBjb250aW51YWxseSBleGVyY2lzZWQgd2hpY2ggCmhvbGRzIHRoZSBhdG9tIHRvZ2V0aGVyIGFzIHN1Y2g7IGFuZCB3aGVuIHdlIHRyeSB0byBleGFtaW5lIHRoZSBhY3Rpb24gb2YgdGhhdCAKZm9yY2Ugd2Ugc2VlIHRoYXQgaXQgZG9lcyBub3QgY29tZSBpbnRvIHRoZSBhdG9tIGZyb20gb3V0c2lkZSwgYnV0IHdlbGxzIHVwIAp3aXRoaW4gaXQtLSB3aGljaCBtZWFucyB0aGF0IGl0IGVudGVycyBpdCBmcm9tIGhpZ2hlciBkaW1lbnNpb25zLiBUaGUgc2FtZSBpcyAKdHJ1ZSB3aXRoIHJlZ2FyZCB0byB0aGlzIG90aGVyIGZvcmNlIHdoaWNoIHdlIGNhbGwgdml0YWxpdHk7IGl0IGVudGVycyB0aGUgYXRvbSAKZnJvbSB3aXRoaW4sIGFsb25nIHdpdGggdGhlIGZvcmNlIHRoYXQgaG9sZHMgdGhhdCBhdG9tIHRvZ2V0aGVyLCBpbnN0ZWFkIG9mIAphY3RpbmcgdXBvbiBpdCBlbnRpcmVseSBmcm9tIHdpdGhvdXQsIGFzIGRvIHRob3NlIG90aGVyIHZhcmlldGllcyBvZiBmb3JjZSB3aGljaCAKd2UgY2FsbCBsaWdodCwgaGVhdCBvciBlbGVjdHJpY2l0eS4gCgoKMTExLsKgwqDCoMKgwqDCoMKgCldoZW4gdml0YWxpdHkgd2VsbHMgdXAgdGh1cyB3aXRoaW4gdGhlIGF0b20gaXQgZW5kb3dzIGl0IHdpdGggYW4gCmFkZGl0aW9uYWwgbGlmZSwgYW5kIGdpdmVzIGl0IGEgcG93ZXIgb2YgYXR0cmFjdGlvbiwgc28gdGhhdCBpdCBpbW1lZGlhdGVseSAKZHJhd3Mgcm91bmQgaXQgc2l4IG90aGVyIGF0b21zLCB3aGljaCBpdCBhcnJhbmdlcyBpbiBhIGRlZmluaXRlIGZvcm0sIHRoaXMgCm1ha2luZyB3aGF0IGhhcyBiZWVuIGNhbGxlZCBpbiBPY2N1bHQgQ2hlbWlzdHJ5IGEgCmh5cGVyLW1ldGEtcHJvdG8tZWxlbWVudC4gQnV0IHRoaXMgZWxlbWVudCBkaWZmZXJzIGZyb20gYWxsIG90aGVycyB3aGljaCBoYXZlIHNvIApmYXIgYmVlbiBvYnNlcnZlZCwgaW4gdGhhdCB0aGUgZm9yY2Ugd2hpY2ggY3JlYXRlcyBpdCBhbmQgaG9sZHMgaXQgdG9nZXRoZXIgCmNvbWVzIGZyb20gdGhlIHNlY29uZCBBc3BlY3Qgb2YgdGhlIFNvbGFyIERlaXR5IGluc3RlYWQgb2YgZnJvbSB0aGUgdGhpcmQgVGhpcyAKdml0YWxpdHktZ2xvYnVsZSBpcyBkcmF3biB1cG9uIHBhZ2UgNDUgb2YgT2NjdWx0IENoZW1pc3RyeSwgd2hlcmUgaXQgCnN0YW5kcyBmaXJzdCBhdCB0aGUgbGVmdCBoYW5kIG9mIHRoZSB0b3AgbGluZSBpbiB0aGUgZGlhZ3JhbS4gSXQgaXMgdGhlIGxpdHRsZSAKZ3JvdXAgd2hpY2ggbWFrZXMgdGhlIGV4Y2VlZGluZ2x5IGJyaWxsaWFudCBiZWFkIHVwb24gdGhlIG1hbGUgb3IgcG9zaXRpdmUgc25ha2UgCmluIHRoZSBjaGVtaWNhbCBlbGVtZW50IG94eWdlbiwgYW5kIGl0IGlzIGFsc28gdGhlIGhlYXJ0IG9mIHRoZSBjZW50cmFsIGdsb2JlIGluIApyYWRpdW0uIAoKCjExMi7CoMKgwqDCoMKgwqDCoApUaGVzZSBnbG9idWxlcyBhcmUgY29uc3BpY3VvdXMgYWJvdmUgYWxsIG90aGVycyB3aGljaCBtYXkgYmUgc2VlbiAKZmxvYXRpbmcgaW4gdGhlIGF0bW9zcGhlcmUsIG9uIGFjY291bnQgb2YgdGhlaXIgYnJpbGxpYW5jZSBhbmQgZXh0cmVtZSAKYWN0aXZpdHktLSB0aGUgaW50ZW5zZWx5IHZpdmlkIGxpZmUgd2hpY2ggdGhleSBzaG93LiBUaGVzZSBhcmUgcHJvYmFibHkgdGhlIApmaWVyeSBsaXZlcyBzbyBvZnRlbiBtZW50aW9uZWQgYnkgTWFkYW1lIEJsYXZhdHNreSwgdGhvdWdoIHNoZSBhcHBlYXJzIHRvIGVtcGxveSAKdGhhdCB0ZXJtIGluIHR3byBzZW5zZXMuIEluIFRoZSBTZWNyZXQgRG9jdHJpbmUsIHZvbC4gaWksIDcwOSwgaXQgc2VlbXMgCnRvIG1lYW4gdGhlIGdsb2J1bGUgYXMgYSB3aG9sZSwgaW4gdm9sLiBpLCAyODMsIGl0IHByb2JhYmx5IG1lYW5zIHRoZSBvcmlnaW5hbCAKYWRkaXRpb25hbGx5LXZpdGFsaXNlZCBhdG9tcywgZWFjaCBvZiB3aGljaCBkcmF3cyByb3VuZCBpdHNlbGYgc2l4IG90aGVycy4gCgoKMTEzLsKgwqDCoMKgwqDCoMKgCldoaWxlIHRoZSBmb3JjZSB0aGF0IHZpdmlmaWVzIHRoZSBnbG9idWxlcyBpcyBxdWl0ZSBkaWZmZXJlbnQgZnJvbSBsaWdodCwgCml0IG5ldmVydGhlbGVzcyBhcHBlYXJzIHRvIGRlcGVuZCB1cG9uIGxpZ2h0IGZvciBpdHMgcG93ZXIgb2YgbWFuaWZlc3RhdGlvbi4gSW4gCmJyaWxsaWFudCBzdW5zaGluZSB0aGlzIHZpdGFsaXR5IGlzIGNvbnN0YW50bHkgd2VsbGluZyB1cCBhZnJlc2gsIGFuZCB0aGUgCmdsb2J1bGVzIGFyZSBnZW5lcmF0ZWQgd2l0aCBncmVhdCByYXBpZGl0eSBhbmQgaW4gaW5jcmVkaWJsZSBudW1iZXJzOyBidXQgaW4gCmNsb3VkeSB3ZWF0aGVyIHRoZXJlIGlzIGEgZ3JlYXQgZGltaW51dGlvbiBpbiB0aGUgbnVtYmVyIG9mIGdsb2J1bGVzIGZvcm1lZCwgYW5kIApkdXJpbmcgdGhlIG5pZ2h0IHRoZSBvcGVyYXRpb24gYXBwZWFycyB0byBiZSBlbnRpcmVseSBzdXNwZW5kZWQuIER1cmluZyB0aGUgCm5pZ2h0LCB0aGVyZWZvcmUsIHdlIG1heSBiZSBzYWlkIHRvIGJlIGxpdmluZyB1cG9uIHRoZSBzdG9jayBtYW51ZmFjdHVyZWQgZHVyaW5nIAp0aGUgcHJldmlvdXMgZGF5LCBhbmQgdGhvdWdoIGl0IGFwcGVhcnMgcHJhY3RpY2FsbHkgaW1wb3NzaWJsZSB0aGF0IGl0IHNob3VsZCAKZXZlciBiZSBlbnRpcmVseSBleGhhdXN0ZWQsIHRoYXQgc3RvY2sgZXZpZGVudGx5IGRvZXMgcnVuIGxvdyB3aGVuIHRoZXJlIGlzIGEgCmxvbmcgc3VjY2Vzc2lvbiBvZiBjbG91ZHkgZGF5cy4gVGhlIGdsb2J1bGUsIG9uY2UgY2hhcmdlZCwgcmVtYWlucyBhcyBhIApzdWItYXRvbWljIGVsZW1lbnQsIGFuZCBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgc3ViamVjdCB0byBhbnkgY2hhbmdlIG9yIGxvc3Mgb2YgCmZvcmNlIHVubGVzcyBhbmQgdW50aWwgaXQgaXMgYWJzb3JiZWQgYnkgc29tZSBsaXZpbmcgY3JlYXR1cmUuIAoKCjExNC7CoMKgwqDCoMKgwqDCoApUSEUgQUJTT1JQVElPTiBPRiBWSVRBTElUWSAKCgoxMTUuwqDCoMKgwqDCoMKgwqAKVGhpcyB2aXRhbGl0eSBpcyBhYnNvcmJlZCBieSBhbGwgbGl2aW5nIG9yZ2FuaXNtcywgYW5kIGEgc3VmZmljaWVudCAKc3VwcGx5IG9mIGl0IHNlZW1zIHRvIGJlIGEgbmVjZXNzaXR5IG9mIHRoZWlyIGV4aXN0ZW5jZS4gSW4gdGhlIGNhc2Ugb2YgbWVuIGFuZCAKdGhlIGhpZ2hlciBhbmltYWxzIGl0IGlzIGFic29yYmVkIHRocm91Z2ggdGhlIGNlbnRyZSBvciB2b3J0ZXggaW4gdGhlIGV0aGVyaWMgCmRvdWJsZSB3aGljaCBjb3JyZXNwb25kcyB3aXRoIHRoZSBzcGxlZW4uIEl0IHdpbGwgYmUgcmVtZW1iZXJlZCB0aGF0IHRoYXQgY2VudHJlIApoYXMgc2l4IHBldGFscywgbWFkZSBieSB0aGUgdW5kdWxhdG9yeSBtb3ZlbWVudCBvZiB0aGUgZm9yY2VzIHdoaWNoIGNhdXNlIHRoZSAKdm9ydGV4LiBCdXQgdGhpcyB1bmR1bGF0b3J5IG1vdmVtZW50IGlzIGl0c2VsZiBjYXVzZWQgYnkgdGhlIHJhZGlhdGlvbiBvZiBvdGhlciAKZm9yY2VzIGZyb20gdGhlIGNlbnRyZSBvZiB0aGF0IHZvcnRleC4gSW1hZ2luZyB0aGUgY2VudHJhbCBwb2ludCBvZiB0aGUgdm9ydGV4IAphcyB0aGUgaHViIG9mIGEgd2hlZWwsIHdlIG1heSB0aGluayBvZiB0aGVzZSBsYXN0LW1lbnRpb25lZCBmb3JjZXMgYXMgCnJlcHJlc2VudGVkIGJ5IHNwb2tlcyByYWRpYXRpbmcgZnJvbSBpdCBpbiBzdHJhaWdodCBsaW5lcy4gVGhlbiB0aGUgdm9ydGljYWwgCmZvcmNlcywgc3dlZXBpbmcgcm91bmQgYW5kIHJvdW5kLCBwYXNzIGFsdGVybmF0ZWx5IHVuZGVyIGFuZCBvdmVyIHRoZXNlIHNwb2tlcyAKYXMgdGhvdWdoIHRoZXkgd2VyZSB3ZWF2aW5nIGEga2luZCBvZiBldGhlcmljIGJhc2tldC13b3JrLCBhbmQgaW4gdGhpcyB3YXkgaXMgCm9idGFpbmVkIHRoZSBhcHBlYXJhbmNlIG9mIHNpeCBwZXRhbHMgc2VwYXJhdGVkIGJ5IGRlcHJlc3Npb25zLiAKCgoxMTYuwqDCoMKgwqDCoMKgwqAKV2hlbiB0aGUgdW5pdCBvZiB2aXRhbGl0eSBpcyBmbGFzaGluZyBhYm91dCBpbiB0aGUgYXRtb3NwaGVyZSwgYnJpbGxpYW50IAphcyBpdCBpcywgaXQgaXMgYWxtb3N0IGNvbG91cmxlc3MsIGFuZCBtYXkgYmUgY29tcGFyZWQgdG8gd2hpdGUgbGlnaHQuIEJ1dCBhcyAKc29vbiBhcyBpdCBpcyBkcmF3biBpbnRvIHRoZSB2b3J0ZXggb2YgdGhlIGZvcmNlLWNlbnRyZSBhdCB0aGUgc3BsZWVuIGl0IGlzIApkZWNvbXBvc2VkIGFuZCBicmVha3MgdXAgaW50byBzdHJlYW1zIG9mIGRpZmZlcmVudCBjb2xvdXJzLCB0aG91Z2ggaXQgZG9lcyBub3QgCmZvbGxvdyBleGFjdGx5IG91ciBkaXZpc2lvbiBvZiB0aGUgc3BlY3RydW0uIEFzIGl0cyBjb21wb25lbnQgYXRvbXMgYXJlIHdoaXJsZWQgCnJvdW5kIHRoZSB2b3J0ZXgsIGVhY2ggb2YgdGhlIHNpeCBzcG9rZXMgc2VpemVzIHVwb24gb25lIG9mIHRoZW0sIHNvIHRoYXQgYWxsIAp0aGUgYXRvbXMgY2hhcmdlZCB3aXRoIHllbGxvdyBydXNoIGFsb25nIG9uZSwgYW5kIGFsbCB0aG9zZSBjaGFyZ2VkIHdpdGggZ3JlZW4gCmFsb25nIGFub3RoZXIsIGFuZCBzbyBvbiwgd2hpbGUgdGhlIHNldmVudGggZGlzYXBwZWFycyB0aHJvdWdoIHRoZSBjZW50cmUgb2YgdGhlIAp2b3J0ZXgtLSB0aHJvdWdoIHRoZSBodWIgb2YgdGhlIHdoZWVsLCBhcyBpdCB3ZXJlLiBUaG9zZSByYXlzIHRoZW4gcnVzaCBvZmYgaW4gCmRpZmZlcmVudCBkaXJlY3Rpb25zLCBlYWNoIHRvIGRvIGl0cyBzcGVjaWFsIHdvcmsgaW4gdGhlIHZpdGFsaXNhdGlvbiBvZiB0aGUgCmJvZHkuIEFzIEkgaGF2ZSBzYWlkLCBob3dldmVyLCB0aGUgZGl2aXNpb25zIGFyZSBub3QgZXhhY3RseSB0aG9zZSB3aGljaCB3ZSAKb3JkaW5hcmlseSB1c2UgaW4gdGhlIHNvbGFyIHNwZWN0cnVtLCBidXQgcmF0aGVyIHJlc2VtYmxlIHRoZSBhcnJhbmdlbWVudCBvZiAKY29sb3VycyB3aGljaCB3ZSBzZWUgb24gaGlnaGVyIGxldmVscyBpbiB0aGUgY2F1c2FsLCBtZW50YWwgYW5kIGFzdHJhbCBib2RpZXMuCgoKMTE3LsKgwqDCoMKgwqDCoMKgCkZvciBleGFtcGxlLCB3aGF0IHdlIGNhbGwgaW5kaWdvIGlzIGRpdmlkZWQgYmV0d2VlbiB0aGUgdmlvbGV0IHJheSBhbmQgCnRoZSBibHVlIHJheSwgc28gdGhhdCB3ZSBmaW5kIG9ubHkgdHdvIGRpdmlzaW9ucyB0aGVyZSBpbnN0ZWFkIG9mIHRocmVlOyBidXQgb24gCnRoZSBvdGhlciBoYW5kIHdoYXQgd2UgY2FsbCByZWQgaXMgZGl2aWRlZCBpbnRvIHR3by0tIHJvc2UgcmVkIGFuZCBkYXJrIHJlZC4gVGhlIApzaXggcmFkaWFudHMgYXJlIHRoZXJlZm9yZSB2aW9sZXQsIGJsdWUsIGdyZWVuLCB5ZWxsb3csIG9yYW5nZSwgYW5kIGRhcmsgcmVkOyAKd2hpbGUgdGhlIHNldmVudGggb3Igcm9zZSByZWQgYXRvbSAobW9yZSBwcm9wZXJseSB0aGUgZmlyc3QsIHNpbmNlIHRoaXMgaXMgdGhlIApvcmlnaW5hbCBhdG9tIGluIHdoaWNoIHRoZSBmb3JjZSBmaXJzdCBhcHBlYXJlZCkgcGFzc2VzIGRvd24gdGhyb3VnaCB0aGUgY2VudHJlIApvZiB0aGUgdm9ydGV4LiBWaXRhbGl0eSBpcyB0aHVzIGNsZWFybHkgc2V2ZW5mb2xkIGluIGl0cyBjb25zdGl0dXRpb24sIGJ1dCBpdCAKcnVzaGVzIHRocm91Z2ggdGhlIGJvZHkgaW4gZml2ZSBtYWluIHN0cmVhbXMsIGFzIGhhcyBiZWVuIGRlc2NyaWJlZCBpbiBzb21lIG9mIAp0aGUgSW5kaWFuIGJvb2tzLO+/vSAo77+9IO+/vVRvIHRoZW0gc3Bva2UgdGhlIHByaW5jaXBhbCBsaWZlOiBCZSBub3QgbG9zdCBpbiBkZWx1c2lvbiAKSSBldmVuLCBmaXZlZm9sZCBkaXZpZGluZyBteXNlbGYsIHVwaG9sZCB0aGlzIGJvZHkgYnkgbXkgc3VwcG9ydC7vv70gLS0gClByYXNobm9wYW5pc2hhZCAuIGlpLCAzLiDvv71Gcm9tIHRoaXMgcHJvY2VlZCB0aGVzZSBzZXZlbiBmbGFtZXMu77+9IC0tIApJYmlkIC4sIGlpaSwgNS4pIGZvciBhZnRlciBpc3N1aW5nIGZyb20gc3BsZW5pYyBjZW50cmUgdGhlIGJsdWUgYW5kIHRoZSAKdmlvbGV0IGpvaW4gaW50byBvbmUgcmF5LCBhbmQgc28gZG8gdGhlIG9yYW5nZSBhbmQgdGhlIGRhcmsgcmVkLiAKCgooMSnCoApUaGUgdmlvbGV0LWJsdWUgcmF5IGZsYXNoZXMgdXB3YXJkcyB0byB0aGUgdGhyb2F0LCB3aGVyZSBpdCBzZWVtcyB0byAKZGl2aWRlIGl0c2VsZiwgdGhlIGxpZ2h0IGJsdWUgcmVtYWluaW5nIHRvIGNvdXJzZSB0aHJvdWdoIGFuZCB2aXZpZnkgdGhlIAp0aHJvYXQtY2VudHJlLCB3aGlsZSB0aGUgZGFyayBibHVlIGFuZCB2aW9sZXQgcGFzcyBvbiBpbnRvIHRoZSBicmFpbi4gVGhlIGRhcmsgCmJsdWUgZXhwZW5kcyBpdHNlbGYgaW4gdGhlIGxvd2VyIGFuZCBjZW50cmFsIHBhcnRzIG9mIHRoZSBicmFpbiwgd2hpbGUgdGhlIAp2aW9sZXQgZmxvb2RzIHRoZSB1cHBlciBwYXJ0IGFuZCBhcHBlYXJzIHRvIGdpdmUgc3BlY2lhbCB2aWdvdXIgdG8gdGhlIApmb3JjZS1jZW50cmUgYXQgdGhlIHRvcCBvZiB0aGUgaGVhZCwgZGlmZnVzaW5nIGl0c2VsZiBjaGllZmx5IHRocm91Z2ggdGhlIG5pbmUgCmh1bmRyZWQgYW5kIHNpeHR5IHBldGFscyBvZiB0aGUgb3V0ZXIgcGFydCBvZiB0aGF0IGNlbnRyZS4gCgoKKDIpwqAKVGhlIHllbGxvdyByYXkgaXMgZGlyZWN0ZWQgdG8gdGhlIGhlYXJ0LCBidXQgYWZ0ZXIgZG9pbmcgaXRzIHdvcmsgdGhlcmUsIApwYXJ0IG9mIGl0IGFsc28gcGFzc2VzIG9uIHRvIHRoZSBicmFpbiBhbmQgcGVybWVhdGVzIGl0LCBkaXJlY3RpbmcgaXRzZWxmIApwcmluY2lwYWxseSB0byB0aGUgdHdlbHZlLXBldGFsbGVkIGZsb3dlciBpbiB0aGUgbWlkc3Qgb2YgdGhlIGhpZ2hlc3QgCmZvcmNlLWNlbnRyZS4gCgoKKDMpwqAKVGhlIGdyZWVuIHJheSBmbG9vZHMgdGhlIGFiZG9tZW4gYW5kLCB3aGlsZSBjZW50cmluZyBlc3BlY2lhbGx5IGluIHRoZSAKc29sYXIgcGxleHVzLCBldmlkZW50bHkgdml2aWZpZXMgdGhlIGxpdmVyLCBraWRuZXlzIGFuZCBpbnRlc3RpbmVzLCBhbmQgdGhlIApkaWdlc3RpdmUgYXBwYXJhdHVzIGdlbmVyYWxseS4gCgoKKDQpwqAKVGhlIHJvc2UtY29sb3VyZWQgcmF5IHJ1bnMgYWxsIG92ZXIgdGhlIGJvZHkgYWxvbmcgdGhlIG5lcnZlcywgYW5kIGlzIApjbGVhcmx5IHRoZSBsaWZlIG9mIHRoZSBuZXJ2b3VzIHN5c3RlbS4gVGhpcyBpcyB3aGF0IGlzIGNvbW1vbmx5IGRlc2NyaWJlZCBhcyAKdml0YWxpdHktLSB0aGUgc3BlY2lhbGlzZWQgdml0YWxpdHkgd2hpY2ggb25lIG1hbiBtYXkgcmVhZGlseSBwb3VyIGludG8gYW5vdGhlciAKaW4gd2hvbSBpdCBpcyBkZWZpY2llbnQuIElmIHRoZSBuZXJ2ZXMgYXJlIG5vdCBmdWxseSBzdXBwbGllZCB3aXRoIHRoaXMgcm9zeSAKbGlnaHQgdGhleSBiZWNvbWUgc2Vuc2l0aXZlIGFuZCBpbnRlbnNlbHkgaXJyaXRhYmxlLCBzbyB0aGF0IHRoZSBwYXRpZW50IGZpbmRzIAppdCBhbG1vc3QgaW1wb3NzaWJsZSB0byByZW1haW4gaW4gb25lIHBvc2l0aW9uLCBhbmQgeWV0IGdhaW5zIGJ1dCBsaXR0bGUgZWFzZSAKd2hlbiBoZSBtb3ZlcyB0byBhbm90aGVyLiBUaGUgbGVhc3Qgbm9pc2Ugb3IgdG91Y2ggaXMgYWdvbnkgdG8gaGltLCBhbmQgaGUgaXMgaW4gCmEgY29uZGl0aW9uIG9mIGFjdXRlIG1pc2VyeS4gVGhlIGZsb29kaW5nIG9mIGhpcyBuZXJ2ZXMgd2l0aCBzcGVjaWFsaXNlZCAKdml0YWxpdHkgYnkgc29tZSBoZWFsdGh5IHBlcnNvbiBicmluZ3MgaW5zdGFudCByZWxpZWYsIGFuZCBhIGZlZWxpbmcgb2YgaGVhbGluZyAKYW5kIHBlYWNlIGRlc2NlbmRzIHVwb24gaGltLiBBIG1hbiBpbiByb2J1c3QgaGVhbHRoIHVzdWFsbHkgYWJzb3JicyBhbmQgCnNwZWNpYWxpc2VzIHNvIG11Y2ggbW9yZSB2aXRhbGl0eSB0aGFuIGlzIGFjdHVhbGx5IG5lZWRlZCBieSBoaXMgb3duIGJvZHkgdGhhdCAKaGUgaXMgY29uc3RhbnRseSByYWRpYXRpbmcgYSB0b3JyZW50IG9mIHJvc2UtY29sb3VyZWQgYXRvbXMsIGFuZCBzbyAKdW5jb25zY2lvdXNseSBwb3VycyBzdHJlbmd0aCB1cG9uIGhpcyB3ZWFrZXIgZmVsbG93cyB3aXRob3V0IGxvc2luZyBhbnl0aGluZyAKaGltc2VsZjsgb3IgYnkgYW4gZWZmb3J0IG9mIGhpcyB3aWxsIGhlIGNhbiBnYXRoZXIgdG9nZXRoZXIgdGhpcyBzdXBlcmZsdW91cyAKZW5lcmd5IGFuZCBhaW0gaXQgaW50ZW50aW9uYWxseSBhdCBvbmUgd2hvbSBoZSB3aXNoZXMgdG8gaGVscC4gCgoKMTE4LsKgwqDCoMKgwqDCoMKgClRoZSBwaHlzaWNhbCBib2R5IGhhcyBhIGNlcnRhaW4gYmxpbmQsIGluc3RpbmN0aXZlIGNvbnNjaW91c25lc3Mgb2YgaXRzIApvd24sIGNvcnJlc3BvbmRpbmcgaW4gdGhlIHBoeXNpY2FsIHdvcmxkIHRvIHRoZSBkZXNpcmUtZWxlbWVudGFsIG9mIHRoZSBhc3RyYWwgCmJvZHk7IGFuZCB0aGlzIGNvbnNjaW91c25lc3Mgc2Vla3MgYWx3YXlzIHRvIHByb3RlY3QgaXQgZnJvbSBkYW5nZXIsIG9yIHRvIApwcm9jdXJlIGZvciBpdCB3aGF0ZXZlciBtYXkgYmUgbmVjZXNzYXJ5LiBUaGlzIGlzIGVudGlyZWx5IGFwYXJ0IGZyb20gdGhlIApjb25zY2lvdXNuZXNzIG9mIHRoZSBtYW4gaGltc2VsZiwgYW5kIGl0IHdvcmtzIGVxdWFsbHkgd2VsbCBkdXJpbmcgdGhlIGFic2VuY2UgCm9mIHRoZSBlZ28gZnJvbSB0aGUgcGh5c2ljYWwgYm9keSBkdXJpbmcgc2xlZXAuIEFsbCBvdXIgaW5zdGluY3RpdmUgbW92ZW1lbnRzIAphcmUgZHVlIHRvIGl0LCBhbmQgaXQgaXMgdGhyb3VnaCBpdHMgYWN0aXZpdHkgdGhhdCB0aGUgd29ya2luZyBvZiB0aGUgCnN5bXBhdGhldGljIHN5c3RlbSBpcyBjYXJyaWVkIG9uIGNlYXNlbGVzc2x5IHdpdGhvdXQgYW55IHRob3VnaHQgb3Iga25vd2xlZGdlIG9uIApvdXIgcGFydC4gCgoKMTE5LsKgwqDCoMKgwqDCoMKgCldoaWxlIHdlIGFyZSB3aGF0IHdlIGNhbGwgYXdha2UsIHRoaXMgcGh5c2ljYWwgZWxlbWVudGFsIGlzIHBlcnBldHVhbGx5IApvY2N1cGllZCBpbiBzZWxmLWRlZmVuY2U7IGhlIGlzIGluIGEgY29uZGl0aW9uIG9mIGNvbnN0YW50IHZpZ2lsYW5jZSwgYW5kIGhlIAprZWVwcyB0aGUgbmVydmVzIGFuZCBtdXNjbGVzIGFsd2F5cyB0ZW5zZS4gRHVyaW5nIHRoZSBuaWdodCBvciBhdCBhbnkgdGltZSB3aGVuIAp3ZSBzbGVlcCBoZSBsZXRzIHRoZSBuZXJ2ZXMgYW5kIG11c2NsZXMgcmVsYXgsIGFuZCBkZXZvdGVzIGhpbXNlbGYgc3BlY2lhbGx5IHRvIAp0aGUgYXNzaW1pbGF0aW9uIG9mIHZpdGFsaXR5LCBhbmQgdGhlIHJlY3VwZXJhdGlvbiBvZiB0aGUgcGh5c2ljYWwgYm9keS4gSGUgCndvcmtzIGF0IHRoaXMgbW9zdCBzdWNjZXNzZnVsbHkgZHVyaW5nIHRoZSBlYXJseSBwYXJ0IG9mIHRoZSBuaWdodCwgYmVjYXVzZSB0aGVuIAp0aGVyZSBpcyBwbGVudHkgb2Ygdml0YWxpdHksIHdoZXJlYXMgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBkYXduIHRoZSB2aXRhbGl0eSAKd2hpY2ggaGFzIGJlZW4gbGVmdCBiZWhpbmQgYnkgdGhlIHN1bmxpZ2h0IGlzIGFsbW9zdCBjb21wbGV0ZWx5IGV4aGF1c3RlZC4gVGhpcyAKaXMgdGhlIHJlYXNvbiBmb3IgdGhlIGZlZWxpbmcgb2YgbGltcG5lc3MgYW5kIGRlYWRuZXNzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc21hbGwgCmhvdXJzIG9mIHRoZSBtb3JuaW5nOyB0aGlzIGlzIGFsc28gdGhlIHJlYXNvbiB3aHkgc2ljayBtZW4gc28gZnJlcXVlbnRseSBkaWUgYXQgCnRoYXQgcGFydGljdWxhciB0aW1lLiBUaGUgc2FtZSBpZGVhIGlzIGVtYm9kaWVkIGluIHRoZSBvbGQgcHJvdmVyYiB0aGF0OiDvv71BbiAKaG91cicgcyBzbGVlcCBiZWZvcmUgbWlkbmlnaHQgaXMgd29ydGggdHdvIGFmdGVyIGl0Lu+/vSBUaGUgd29yayBvZiB0aGlzIHBoeXNpY2FsIAplbGVtZW50YWwgYWNjb3VudHMgZm9yIHRoZSBzdHJvbmcgcmVjdXBlcmF0aXZlIGluZmx1ZW5jZSBvZiBzbGVlcCwgd2hpY2ggaXMgCm9mdGVuIG9ic2VydmFibGUgZXZlbiB3aGVuIGl0IGlzIGEgbWVyZSBtb21lbnRhcnkgbmFwLiAKCgoxMjAuwqDCoMKgwqDCoMKgwqAKVGhpcyB2aXRhbGl0eSBpcyBpbmRlZWQgdGhlIGZvb2Qgb2YgdGhlIGV0aGVyaWMgZG91YmxlLCBhbmQgaXMganVzdCBhcyAKbmVjZXNzYXJ5IHRvIGl0IGFzIGlzIHN1c3RlbmFuY2UgdG8gdGhlIGdyb3NzZXIgcGFydCBvZiB0aGUgcGh5c2ljYWwgYm9keS4gSGVuY2UgCndoZW4gdGhlIGJvZHkgaXMgdW5hYmxlIGZvciBhbnkgcmVhc29uIChhcyB0aHJvdWdoIHNpY2tuZXNzLCBmYXRpZ3VlIG9yIGV4dHJlbWUgCm9sZCBhZ2UpIHRvIHByZXBhcmUgdml0YWxpdHkgZm9yIHRoZSBub3VyaXNobWVudCBvZiBpdHMgY2VsbHMsIHRoaXMgcGh5c2ljYWwgCmVsZW1lbnRhbCBlbmRlYXZvdXJzIHRvIGRyYXcgaW4gZm9yIGhpcyBvd24gdXNlIHZpdGFsaXR5IHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gCnByZXBhcmVkIGluIHRoZSBib2RpZXMgb2Ygb3RoZXJzOyBhbmQgdGh1cyBpdCBoYXBwZW5zIHRoYXQgd2Ugb2Z0ZW4gZmluZCAKb3Vyc2VsdmVzIHdlYWsgYW5kIGV4aGF1c3RlZCBhZnRlciBzaXR0aW5nIGZvciBhIHdoaWxlIHdpdGggYSBwZXJzb24gd2hvIGlzIApkZXBsZXRlZCBvZiB2aXRhbGl0eSwgYmVjYXVzZSBoZSBoYXMgZHJhd24gYXdheSBmcm9tIHVzIGJ5IHN1Y3Rpb24gdGhlIApyb3NlLWNvbG91cmVkIGF0b21zIGJlZm9yZSB3ZSB3ZXJlIGFibGUgdG8gZXh0cmFjdCB0aGVpciBlbmVyZ3kuIAoKCjEyMS7CoMKgwqDCoMKgwqDCoApUaGUgdmVnZXRhYmxlIGtpbmdkb20gYWxzbyBhYnNvcmJzIHRoaXMgdml0YWxpdHksIGJ1dCBzZWVtcyBpbiBtb3N0IGNhc2VzIAp0byB1c2Ugb25seSBhIHNtYWxsIHBhcnQgb2YgaXQuIE1hbnkgdHJlZXMgZHJhdyBmcm9tIGl0IGFsbW9zdCBleGFjdGx5IHRoZSBzYW1lIApjb25zdGl0dWVudHMgYXMgZG9lcyB0aGUgaGlnaGVyIHBhcnQgb2YgbWFuJyBzIGV0aGVyaWMgYm9keSwgdGhlIHJlc3VsdCBiZWluZyAKdGhhdCB3aGVuIHRoZXkgaGF2ZSB1c2VkIHdoYXQgdGhleSByZXF1aXJlLCB0aGUgYXRvbXMgd2hpY2ggdGhleSByZWplY3QgYXJlIApwcmVjaXNlbHkgdGhvc2UgY2hhcmdlZCB3aXRoIHRoZSByb3NlLWNvbG91cmVkIGxpZ2h0IHdoaWNoIGlzIG5lZWRlZCBmb3IgdGhlIApjZWxscyBvZiBtYW4nIHMgcGh5c2ljYWwgYm9keS4gVGhpcyBpcyBzcGVjaWFsbHkgdGhlIGNhc2Ugd2l0aCBzdWNoIHRyZWVzIGFzIHRoZSAKcGluZSBhbmQgdGhlIGV1Y2FseXB0dXM7IGFuZCBjb25zZXF1ZW50bHkgdGhlIHZlcnkgbmVpZ2hib3VyaG9vZCBvZiB0aGVzZSB0cmVlcyAKZ2l2ZXMgaGVhbHRoIGFuZCBzdHJlbmd0aCB0byB0aG9zZSB3aG8gYXJlIHN1ZmZlcmluZyBmcm9tIGxhY2sgb2YgdGhpcyBwYXJ0IG9mIAp0aGUgdml0YWwgcHJpbmNpcGxlLS0gdGhvc2Ugd2hvbSB3ZSBjYWxsIG5lcnZvdXMgcGVvcGxlLiBUaGV5IGFyZSBuZXJ2b3VzIApiZWNhdXNlIHRoZSBjZWxscyBvZiB0aGVpciBib2RpZXMgYXJlIGh1bmdyeSwgYW5kIHRoZSBuZXJ2b3VzbmVzcyBjYW4gb25seSBiZSAKYWxsYXllZCBieSBmZWVkaW5nIHRoZW07IGFuZCBvZnRlbiB0aGUgcmVhZGllc3Qgd2F5IHRvIGRvIHRoYXQgaXMgdGh1cyB0byBzdXBwbHkgCnRoZW0gZnJvbSB3aXRob3V0IHdpdGggdGhlIHNwZWNpYWwga2luZCBvZiB2aXRhbGl0eSB3aGljaCB0aGV5IG5lZWQuIAoKCjEyMi7CoMKgwqDCoMKgwqDCoAooNSkgVGhlIG9yYW5nZS1yZWQgcmF5IGZsb3dzIHRvIHRoZSBiYXNlIG9mIHRoZSBzcGluZSBhbmQgdGhlbmNlIHRvIHRoZSAKZ2VuZXJhdGl2ZSBvcmdhbnMsIHdpdGggd2hpY2ggb25lIHBhcnQgb2YgaXRzIGZ1bmN0aW9ucyBpcyBjbG9zZWx5IGNvbm5lY3RlZC4gClRoaXMgcmF5IGFwcGVhcnMgdG8gaW5jbHVkZSBub3Qgb25seSB0aGUgb3JhbmdlIGFuZCB0aGUgZGFya2VyIHJlZHMsIGJ1dCBhbHNvIGEgCmNlcnRhaW4gYW1vdW50IG9mIGRhcmsgcHVycGxlLCBhcyB0aG91Z2ggdGhlIHNwZWN0cnVtIGJlbnQgcm91bmQgaW4gYSBjaXJjbGUgYW5kIAp0aGUgY29sb3VycyBiZWdhbiBvdmVyIGFnYWluIGF0IGEgbG93ZXIgb2N0YXZlLiBJbiB0aGUgbm9ybWFsIG1hbiB0aGlzIHJheSAKZW5lcmdpc2VzIHRoZSBkZXNpcmVzIG9mIHRoZSBmbGVzaCwgYW5kIGFsc28gc2VlbXMgdG8gZW50ZXIgdGhlIGJsb29kIGFuZCBrZWVwIAp1cCB0aGUgaGVhdCBvZiB0aGUgYm9keTsgYnV0IGlmIGEgbWFuIHBlcnNpc3RlbnRseSByZWZ1c2VzIHRvIHlpZWxkIHRvIGhpcyBsb3dlciAKbmF0dXJlLCB0aGlzIHJheSBjYW4gYnkgbG9uZyBhbmQgZGV0ZXJtaW5lZCBlZmZvcnQgYmUgZGVmbGVjdGVkIHVwd2FyZHMgdG8gdGhlIApicmFpbiwgd2hlcmUgYWxsIHRocmVlIG9mIGl0cyBjb25zdGl0dWVudHMgdW5kZXJnbyBhIHJlbWFya2FibGUgbW9kaWZpY2F0aW9uLiAKVGhlIG9yYW5nZSBpcyByYWlzZWQgaW50byBwdXJlIHllbGxvdywgYW5kIHByb2R1Y2VzIGEgZGVjaWRlZCBpbnRlbnNpZmljYXRpb24gb2YgCnRoZSBwb3dlcnMgb2YgdGhlIGludGVsbGVjdDsgdGhlIGRhcmsgcmVkIGJlY29tZXMgY3JpbXNvbiwgYW5kIGdyZWF0bHkgaW5jcmVhc2VzIAp0aGUgcG93ZXIgb2YgdW5zZWxmaXNoIGFmZmVjdGlvbjsgd2hpbGUgdGhlIGRhcmsgcHVycGxlIGlzIHRyYW5zbXV0ZWQgaW50byBhIApsb3ZlbHkgcGFsZSB2aW9sZXQsIGFuZCBxdWlja2VucyB0aGUgc3Bpcml0dWFsIHBhcnQgb2YgbWFuJyBzIG5hdHVyZS4gVGhlIG1hbiAKd2hvIGFjaGlldmVzIHRoaXMgdHJhbnNtdXRhdGlvbiB3aWxsIGZpbmQgdGhhdCBzZW5zdWFsIGRlc2lyZXMgbm8gbG9uZ2VyIHRyb3VibGUgCmhpbSwgYW5kIHdoZW4gaXQgYmVjb21lcyBuZWNlc3NhcnkgZm9yIGhpbSB0byBhcm91c2UgdGhlIHNlcnBlbnQtZmlyZSwgaGUgd2lsbCAKYmUgZnJlZSBmcm9tIHRoZSBtb3N0IHNlcmlvdXMgb2YgdGhlIGRhbmdlcnMgb2YgdGhhdCBwcm9jZXNzLiBXaGVuIGEgbWFuIGhhcyAKZmluYWxseSBjb21wbGV0ZWQgdGhpcyBjaGFuZ2UsIHRoaXMgb3JhbmdlLXJlZCByYXkgcGFzc2VzIHN0cmFpZ2h0IGludG8gdGhlIApjZW50cmUgYXQgdGhlIGJhc2Ugb2YgdGhlIHNwaW5lLCBhbmQgZnJvbSB0aGF0IHJ1bnMgdXB3YXJkcyBhbG9uZyB0aGUgaG9sbG93IG9mIAp0aGUgdmVydGVicmFsIGNvbHVtbiwgYW5kIHNvIHRvIHRoZSBicmFpbi4gCgoKMTIzLsKgwqDCoMKgwqDCoMKgClZJVEFMSVRZIEFORCBIRUFMVEggCgoKMTI0LsKgwqDCoMKgwqDCoMKgClRoZSBmbG93IG9mIHZpdGFsaXR5IGluIHRoZXNlIHZhcmlvdXMgY3VycmVudHMgcmVndWxhdGVzIHRoZSBoZWFsdGggb2YgCnRoZSBwYXJ0cyBvZiB0aGUgYm9keSB3aXRoIHdoaWNoIHRoZXkgYXJlIGNvbmNlcm5lZC4gSWYsIGZvciBleGFtcGxlLCBhIHBlcnNvbiAKaXMgc3VmZmVyaW5nIGZyb20gYSB3ZWFrIGRpZ2VzdGlvbiwgaXQgbWFuaWZlc3RzIGl0c2VsZiBhdCBvbmNlIHRvIGFueSBwZXJzb24gCnBvc3Nlc3NpbmcgZXRoZXJpYyBzaWdodCwgYmVjYXVzZSBlaXRoZXIgdGhlIGZsb3cgYW5kIGFjdGlvbiBvZiB0aGUgZ3JlZW4gc3RyZWFtIAppcyBzbHVnZ2lzaCBvciBpdHMgYW1vdW50IGlzIHNtYWxsZXIgaW4gcHJvcG9ydGlvbiB0aGFuIGl0IHNob3VsZCBiZS4gV2hlcmUgdGhlIAp5ZWxsb3cgY3VycmVudCBpcyBmdWxsIGFuZCBzdHJvbmcsIGl0IGluZGljYXRlcywgb3IgbW9yZSBwcm9wZXJseSBwcm9kdWNlcywgCnN0cmVuZ3RoIGFuZCByZWd1bGFyaXR5IGluIHRoZSBhY3Rpb24gb2YgdGhlIGhlYXJ0LiBGbG93aW5nIHJvdW5kIHRoYXQgY2VudHJlLCAKaXQgYWxzbyBpbnRlcnBlbmV0cmF0ZXMgdGhlIGJsb29kIHdoaWNoIGlzIGRyaXZlbiB0aHJvdWdoIGl0LCBhbmQgaXMgc2VudCBhbG9uZyAKd2l0aCBpdCBhbGwgb3ZlciB0aGUgYm9keS4gWWV0IHRoZXJlIGlzIGVub3VnaCBvZiBpdCBsZWZ0IHRvIGV4dGVuZCBpbnRvIHRoZSAKYnJhaW4gYWxzbywgYW5kIHRoZSBwb3dlciBvZiBoaWdoIHBoaWxvc29waGljYWwgYW5kIG1ldGFwaHlzaWNhbCB0aG91Z2h0IGFwcGVhcnMgCnRvIGRlcGVuZCB0byBhIGdyZWF0IGV4dGVudCB1cG9uIHRoZSB2b2x1bWUgYW5kIGFjdGl2aXR5IG9mIHRoaXMgeWVsbG93IHN0cmVhbSwgCmFuZCB0aGUgY29ycmVzcG9uZGluZyBhd2FrZW5pbmcgb2YgdGhlIHR3ZWx2ZS1wZXRhbGxlZCBmbG93ZXIgaW4gdGhlIG1pZGRsZSBvZiAKdGhlIGZvcmNlLWNlbnRyZSBhdCB0aGUgdG9wIG9mIHRoZSBoZWFkLiAKCgoxMjUuwqDCoMKgwqDCoMKgwqAKVGhvdWdodCBhbmQgZW1vdGlvbiBvZiBhIGhpZ2ggc3Bpcml0dWFsIHR5cGUgc2VlbSB0byBkZXBlbmQgbGFyZ2VseSB1cG9uIAp0aGUgdmlvbGV0IHJheSwgd2hlcmVhcyB0aGUgcG93ZXIgb2Ygb3JkaW5hcnkgdGhvdWdodCBpcyBzdGltdWxhdGVkIGJ5IHRoZSAKYWN0aW9uIG9mIHRoZSBibHVlIG1pbmdsZWQgd2l0aCBwYXJ0IG9mIHRoZSB5ZWxsb3cuIEl0IGhhcyBiZWVuIG9ic2VydmVkIHRoYXQgaW4gCnNvbWUgZm9ybXMgb2YgaWRpb2N5IHRoZSBmbG93IG9mIHZpdGFsaXR5IHRvIHRoZSBicmFpbiwgYm90aCB5ZWxsb3cgYW5kIApibHVlLXZpb2xldCwgaXMgYWxtb3N0IGVudGlyZWx5IGluaGliaXRlZC4gVW51c3VhbCBhY3Rpdml0eSBvciB2b2x1bWUgaW4gdGhlIApsaWdodCBibHVlIHdoaWNoIGlzIGFwcG9ydGlvbmVkIHRvIHRoZSB0aHJvYXQtY2VudHJlIGlzIGFjY29tcGFuaWVkIGJ5IHRoZSAKaGVhbHRoIGFuZCBzdHJlbmd0aCBvZiB0aGUgcGh5c2ljYWwgb3JnYW5zIGluIHRoYXQgcGFydCBvZiB0aGUgYm9keS4gSXQgZ2l2ZXMsIApmb3IgZXhhbXBsZSwgc3RyZW5ndGggYW5kIGVsYXN0aWNpdHkgdG8gdGhlIHZvY2FsIGNob3Jkcywgc28gdGhhdCBzcGVjaWFsIApicmlsbGlhbmNlIGFuZCBhY3Rpdml0eSBhcmUgbm90aWNlYWJsZSBpbiB0aGUgY2FzZSBvZiBhIHB1YmxpYyBzcGVha2VyIG9yIGEgCmdyZWF0IHNpbmdlci4gV2Vha25lc3Mgb3IgZGlzZWFzZSBpbiBhbnkgcGFydCBvZiB0aGUgYm9keSBpcyBhY2NvbXBhbmllZCBieSBhIApkZWZpY2llbmN5IGluIHRoZSBmbG93IG9mIHZpdGFsaXR5IHRvIHRoYXQgcGFydC4gCgoKMTI2LsKgwqDCoMKgwqDCoMKgCkFzIHRoZSBkaWZmZXJlbnQgc3RyZWFtcyBvZiBhdG9tcyBkbyB0aGVpciB3b3JrLCB0aGUgY2hhcmdlIG9mIHZpdGFsaXR5IAppcyB3aXRoZHJhd24gZnJvbSB0aGVtLCBwcmVjaXNlbHkgYXMgYW4gZWxlY3RyaWNhbCBjaGFyZ2UgbWlnaHQgYmUuIFRoZSBhdG9tcyAKYmVhcmluZyB0aGUgcm9zZS1jb2xvdXJlZCByYXkgZ3JvdyBncmFkdWFsbHkgcGFsZXIgYXMgdGhleSBhcmUgc3dlcHQgYWxvbmcgdGhlIApuZXJ2ZXMsIGFuZCBhcmUgZXZlbnR1YWxseSB0aHJvd24gb3V0IGZyb20gdGhlIGJvZHkgdGhyb3VnaCB0aGUgcG9yZXMtLSBtYWtpbmcgCnRodXMgd2hhdCB3YXMgY2FsbGVkIGluIE1hbiBWaXNpYmxlIGFuZCBJbnZpc2libGUgdGhlIGhlYWx0aC1hdXJhLiBCeSAKdGhlIHRpbWUgdGhhdCB0aGV5IGxlYXZlIHRoZSBib2R5IG1vc3Qgb2YgdGhlbSBoYXZlIGxvc3QgdGhlIHJvc2UtY29sb3VyZWQgCmxpZ2h0LCBzbyB0aGF0IHRoZSBnZW5lcmFsIGFwcGVhcmFuY2Ugb2YgdGhlIGVtYW5hdGlvbiBpcyBibHVpc2gtd2hpdGUuIFRoYXQgCnBhcnQgb2YgdGhlIHllbGxvdyByYXkgd2hpY2ggaXMgYWJzb3JiZWQgaW50byB0aGUgYmxvb2QgYW5kIGNhcnJpZWQgcm91bmQgd2l0aCAKaXQgbG9zZXMgaXRzIGRpc3RpbmN0aXZlIGNvbG91ciBpbiBqdXN0IHRoZSBzYW1lIHdheS4gCgoKMTI3LsKgwqDCoMKgwqDCoMKgClRoZSBhdG9tcywgd2hlbiB0aHVzIGVtcHRpZWQgb2YgdGhlaXIgY2hhcmdlIG9mIHZpdGFsaXR5LCBlaXRoZXIgZW50ZXIgCmludG8gc29tZSBvZiB0aGUgY29tYmluYXRpb25zIHdoaWNoIGFyZSBjb25zdGFudGx5IGJlaW5nIG1hZGUgaW4gdGhlIGJvZHksIG9yIApwYXNzIG91dCBvZiBpdCB0aHJvdWdoIHRoZSBwb3Jlcywgb3IgdGhyb3VnaCB0aGUgb3JkaW5hcnkgY2hhbm5lbHMuIFRoZSBlbXB0aWVkIAphdG9tcyBvZiB0aGUgZ3JlZW4gcmF5LCB3aGljaCBpcyBjb25uZWN0ZWQgY2hpZWZseSB3aXRoIGRpZ2VzdGl2ZSBwcm9jZXNzZXMsIApzZWVtIHRvIGZvcm0gcGFydCBvZiB0aGUgb3JkaW5hcnkgd2FzdGUgbWF0ZXJpYWwgb2YgdGhlIGJvZHksIGFuZCB0byBwYXNzIG91dCAKYWxvbmcgd2l0aCBpdCwgYW5kIHRoYXQgaXMgYWxzbyB0aGUgZmF0ZSBvZiB0aGUgYXRvbXMgb2YgdGhlIHJlZC1vcmFuZ2UgcmF5IGluIAp0aGUgY2FzZSBvZiB0aGUgb3JkaW5hcnkgbWFuLiBUaGUgYXRvbXMgYmVsb25naW5nIHRvIHRoZSBibHVlIHJheXMsIHdoaWNoIGFyZSAKdXNlZCBpbiBjb25uZWN0aW9uIHdpdGggdGhlIHRocm9hdC1jZW50cmUsIGdlbmVyYWxseSBsZWF2ZSB0aGUgYm9keSBpbiB0aGUgCmV4aGFsYXRpb25zIG9mIHRoZSBicmVhdGg7IGFuZCB0aG9zZSB3aGljaCBjb21wb3NlIHRoZSBkYXJrIGJsdWUgYW5kIHZpb2xldCByYXlzIAp1c3VhbGx5IHBhc3Mgb3V0IGZyb20gdGhlIGNlbnRyZSBhdCB0aGUgdG9wIG9mIHRoZSBoZWFkLiAKCgoxMjguwqDCoMKgwqDCoMKgwqAKV2hlbiB0aGUgc3R1ZGVudCBoYXMgbGVhcm50IHRvIGRlZmxlY3QgdGhlIG9yYW5nZS1yZWQgcmF5cyBzbyB0aGF0IHRoZXkgCmFsc28gbW92ZSB1cCB0aHJvdWdoIHRoZSBzcGluZSwgdGhlIGVtcHR5IGF0b21zIG9mIGJvdGggdGhlc2UgYW5kIHRoZSAKdmlvbGV0LWJsdWUgcmF5cyBwb3VyIG91dCBmcm9tIHRoZSB0b3Agb2YgdGhlIGhlYWQgaW4gYSBmaWVyeSBjYXNjYWRlLCB3aGljaCBpcyAKZnJlcXVlbnRseSBpbWFnZWQgYXMgYSBmbGFtZSBpbiBhbmNpZW50IHN0YXR1ZXMgb2YgdGhlIEJVRERIQSBhbmQgb3RoZXIgZ3JlYXQgClNhaW50cy4gV2hlbiBlbXB0eSBvZiB0aGUgdml0YWwgZm9yY2UgdGhlIGF0b21zIGFyZSBvbmNlIG1vcmUgcHJlY2lzZWx5IGxpa2UgYW55IApvdGhlciBhdG9tczsgdGhlIGJvZHkgYWJzb3JicyBzdWNoIG9mIHRoZW0gYXMgaXQgbmVlZHMsIHNvIHRoYXQgdGhleSBmb3JtIHBhcnQgCm9mIHRoZSB2YXJpb3VzIGNvbWJpbmF0aW9ucyB3aGljaCBhcmUgY29uc3RhbnRseSBiZWluZyBtYWRlLCB3aGlsZSBvdGhlcnMgd2hpY2ggCmFyZSBub3QgcmVxdWlyZWQgZm9yIHN1Y2ggcHVycG9zZXMgYXJlIGNhc3Qgb3V0IHRocm91Z2ggYW55IGNoYW5uZWwgdGhhdCBoYXBwZW5zIAp0byBiZSBjb252ZW5pZW50LiAKCgoxMjkuwqDCoMKgwqDCoMKgwqAKVGhlIGZsb3cgb2Ygdml0YWxpdHkgaW50byBvciB0aHJvdWdoIGFueSBjZW50cmUsIG9yIGV2ZW4gaXRzIAppbnRlbnNpZmljYXRpb24sIG11c3Qgbm90IGJlIGNvbmZ1c2VkIHdpdGggdGhlIGVudGlyZWx5IGRpZmZlcmVudCBkZXZlbG9wbWVudCBvZiAKdGhlIGNlbnRyZSB3aGljaCBpcyBicm91Z2h0IGFib3V0IGJ5IHRoZSBhd2FrZW5pbmcgb2YgdGhlIHNlcnBlbnQtZmlyZSBhdCBhIApsYXRlciBzdGFnZSBpbiBtYW4nIHMgZXZvbHV0aW9uLiBXZSBhbGwgb2YgdXMgZHJhdyBpbiB2aXRhbGl0eSBhbmQgc3BlY2lhbGlzZSAKaXQsIGJ1dCBtYW55IG9mIHVzIGRvIG5vdCB1dGlsaXNlIGl0IHRvIHRoZSBmdWxsLCBiZWNhdXNlIGluIHZhcmlvdXMgd2F5cyBvdXIgCmxpdmVzIGFyZSBub3QgYXMgcHVyZSBhbmQgaGVhbHRoeSBhbmQgcmVhc29uYWJsZSBhcyB0aGV5IHNob3VsZCBiZS4gT25lIHdobyAKY29hcnNlbnMgaGlzIGJvZHkgYnkgdGhlIHVzZSBvZiBtZWF0LCBhbGNvaG9sIG9yIHRvYmFjY28gY2FuIG5ldmVyIGVtcGxveSBoaXMgCnZpdGFsaXR5IHRvIHRoZSBmdWxsIGluIHRoZSBzYW1lIHdheSBhcyBjYW4gYSBtYW4gb2YgcHVyZXIgbGl2aW5nLiBBIHBhcnRpY3VsYXIgCmluZGl2aWR1YWwgb2YgaW1wdXJlIGxpZmUgbWF5IGJlLCBhbmQgb2Z0ZW4gaXMgc3Ryb25nZXIgaW4gdGhlIHBoeXNpY2FsIGJvZHkgCnRoYW4gY2VydGFpbiBvdGhlciBtZW4gd2hvIGFyZSBwdXJlcjsgdGhhdCBpcyBhIG1hdHRlciBvZiB0aGVpciByZXNwZWN0aXZlIAprYXJtYTsgYnV0IG90aGVyIHRoaW5ncyBiZWluZyBlcXVhbCwgdGhlIG1hbiBvZiBwdXJlIGxpZmUgaGFzIGFuIGltbWVuc2UgCmFkdmFudGFnZS4gCgoKMTMwLsKgwqDCoMKgwqDCoMKgClZJVEFMSVRZIE5PVCBNQUdORVRJU00gCgoKMTMxLsKgwqDCoMKgwqDCoMKgClRoZSB2aXRhbGl0eSBjb3Vyc2luZyBhbG9uZyB0aGUgbmVydmVzIG11c3Qgbm90IGJlIGNvbmZ1c2VkIHdpdGggd2hhdCB3ZSAKdXN1YWxseSBjYWxsIHRoZSBtYWduZXRpc20gb2YgdGhlIG1hbi0tIGhpcyBvd24gbmVydmUtZmx1aWQsIGdlbmVyYXRlZCB3aXRoaW4gCmhpbXNlbGYuIEl0IGlzIHRoaXMgZmx1aWQgd2hpY2gga2VlcHMgdXAgdGhlIGNvbnN0YW50IGNpcmN1bGF0aW9uIG9mIGV0aGVyaWMgCm1hdHRlciBhbG9uZyB0aGUgbmVydmVzLCBjb3JyZXNwb25kaW5nIHRvIHRoZSBjaXJjdWxhdGlvbiBvZiBibG9vZCB0aHJvdWdoIHRoZSAKdmVpbnM7IGFuZCBhcyBveHlnZW4gaXMgY29udmV5ZWQgYnkgdGhlIGJsb29kIHRvIGFsbCBwYXJ0cyBvZiB0aGUgYm9keSwgc28gCnZpdGFsaXR5IGlzIGNvbnZleWVkIGFsb25nIHRoZSBuZXJ2ZXMgYnkgdGhpcyBldGhlcmljIGN1cnJlbnQuIFRoZSBwYXJ0aWNsZXMgb2YgCnRoZSBldGhlcmljIHBhcnQgb2YgbWFuJyBzIGJvZHkgYXJlIGNvbnN0YW50bHkgY2hhbmdpbmcsIGp1c3QgYXMgYXJlIHRob3NlIG9mIAp0aGUgZGVuc2VyIHBhcnQ7IGFsb25nIHdpdGggdGhlIGZvb2Qgd2hpY2ggd2UgZWF0IGFuZCB0aGUgYWlyIHdoaWNoIHdlIGJyZWF0aGUgCndlIHRha2UgaW4gZXRoZXJpYyBtYXR0ZXIsIGFuZCB0aGlzIGlzIGFzc2ltaWxhdGVkIGJ5IHRoZSBldGhlcmljIHBhcnQgb2YgdGhlIApib2R5LiBFdGhlcmljIG1hdHRlciBpcyBjb25zdGFudGx5IGJlaW5nIHRocm93biBvZmYgZnJvbSB0aGUgcG9yZXMsIGp1c3QgYXMgaXMgCmdhc2VvdXMgbWF0dGVyLCBzbyB0aGF0IHdoZW4gdHdvIHBlcnNvbnMgYXJlIGNsb3NlIHRvZ2V0aGVyIGVhY2ggbmVjZXNzYXJpbHkgCmFic29yYnMgbXVjaCBvZiB0aGUgcGh5c2ljYWwgZW1hbmF0aW9ucyBvZiB0aGUgb3RoZXIuIAoKCjEzMi7CoMKgwqDCoMKgwqDCoApXaGVuIG9uZSBwZXJzb24gbWVzbWVyaXNlcyBhbm90aGVyLCB0aGUgb3BlcmF0b3IgYnkgYW4gZWZmb3J0IG9mIHdpbGwgCmdhdGhlcnMgdG9nZXRoZXIgYSBncmVhdCBkZWFsIG9mIHRoaXMgbWFnbmV0aXNtIGFuZCB0aHJvd3MgaXQgaW50byB0aGUgc3ViamVjdCwgCnB1c2hpbmcgYmFjayBoaXMgdmljdGltJyBzIG5lcnZlLWZsdWlkLCBhbmQgZmlsbGluZyBpdHMgcGxhY2Ugd2l0aCBoaXMgb3duLiBBcyAKdGhlIGJyYWluIGlzIHRoZSBjZW50cmUgb2YgdGhpcyBuZXJ2b3VzIGNpcmN1bGF0aW9uLCB0aGlzIGJyaW5ncyB0aGF0IHBhcnQgb2YgCnRoZSBzdWJqZWN0JyBzIGJvZHkgd2hpY2ggaXMgYWZmZWN0ZWQgdW5kZXIgdGhlIGNvbnRyb2wgb2YgdGhlIG1hbmlwdWxhdG9yJyBzIApicmFpbiBpbnN0ZWFkIG9mIHRoZSB2aWN0aW0nIHMsIGFuZCBzbyB0aGUgbGF0dGVyIGZlZWxzIHdoYXQgdGhlIG1lc21lcmlzdCAKd2lzaGVzIGhpbSB0byBmZWVsLiBJZiB0aGUgcmVjaXBpZW50JyBzIGJyYWluIGJlIGVtcHRpZWQgb2YgaGlzIG93biBtYWduZXRpc20gCmFuZCBmaWxsZWQgd2l0aCB0aGF0IG9mIHRoZSBwZXJmb3JtZXIsIHRoZSBmb3JtZXIgY2FuIHRoaW5rIGFuZCBhY3Qgb25seSBhcyB0aGUgCmxhdHRlciB3aWxscyB0aGF0IGhlIHNob3VsZCB0aGluayBhbmQgYWN0OyBoZSBpcyBmb3IgdGhlIHRpbWUgZW50aXJlbHkgCmRvbWluYXRlZC4gCgoKMTMzLsKgwqDCoMKgwqDCoMKgCkV2ZW4gd2hlbiB0aGUgbWFnbmV0aXNlciBpcyB0cnlpbmcgdG8gY3VyZSwgYW5kIGlzIHBvdXJpbmcgc3RyZW5ndGggaW50byAKdGhlIG1hbiwgaGUgaW5ldml0YWJseSBnaXZlcyBhbG9uZyB3aXRoIHRoZSB2aXRhbGl0eSBtdWNoIG9mIGhpcyBvd24gZW1hbmF0aW9ucy4gCkl0IGlzIG9idmlvdXMgdGhhdCBhbnkgZGlzZWFzZSB3aGljaCB0aGUgbWVzbWVyaXNlciBoYXBwZW5zIHRvIGhhdmUgbWF5IHJlYWRpbHkgCmhlIGNvbnZleWVkIHRvIHRoZSBzdWJqZWN0IGluIHRoaXMgd2F5OyBhbmQgYW5vdGhlciBldmVuIG1vcmUgaW1wb3J0YW50IApjb25zaWRlcmF0aW9uIGlzIHRoYXQsIHRob3VnaCBoaXMgaGVhbHRoIG1heSBiZSBwZXJmZWN0IGZyb20gdGhlIG1lZGljYWwgcG9pbnQgCm9mIHZpZXcsIHRoZXJlIGFyZSBtZW50YWwgYW5kIG1vcmFsIGRpc2Vhc2VzIGFzIHdlbGwgYXMgcGh5c2ljYWwsIGFuZCB0aGF0LCBhcyAKYXN0cmFsIGFuZCBtZW50YWwgbWF0dGVyIGFyZSB0aHJvd24gaW50byB0aGUgc3ViamVjdCBieSB0aGUgbWVzbWVyaXN0IGFsb25nIHdpdGggCnRoZSBwaHlzaWNhbCBjdXJyZW50LCB0aGVzZSBhbHNvIGFyZSBmcmVxdWVudGx5IHRyYW5zZmVycmVkLiAKCgoxMzQuwqDCoMKgwqDCoMKgwqAKVml0YWxpdHksIGxpa2UgbGlnaHQgYW5kIGhlYXQsIGlzIHBvdXJpbmcgZm9ydGggZnJvbSB0aGUgc3VuIGNvbnRpbnVhbGx5LCAKYnV0IG9ic3RhY2xlcyBmcmVxdWVudGx5IGFyaXNlIHRvIHByZXZlbnQgdGhlIGZ1bGwgc3VwcGx5IGZyb20gcmVhY2hpbmcgdGhlIAplYXJ0aC4gSW4gdGhlIHdpbnRyeSBhbmQgbWVsYW5jaG9seSBjbGltZXMgbWlzY2FsbGVkIHRoZSB0ZW1wZXJhdGUsIGl0IHRvbyBvZnRlbiAKaGFwcGVucyB0aGF0IGZvciBkYXlzIHRvZ2V0aGVyIHRoZSBza3kgaXMgY292ZXJlZCBieSBhIGZ1bmVyYWwgcGFsbCBvZiBoZWF2eSAKY2xvdWQsIGFuZCB0aGlzIGFmZmVjdHMgdml0YWxpdHkganVzdCBhcyBpdCBkb2VzIGxpZ2h0OyBpdCBkb2VzIG5vdCBhbHRvZ2V0aGVyIApoaW5kZXIgaXRzIHBhc3NhZ2UsIGJ1dCBzZW5zaWJseSBkaW1pbmlzaGVzIGl0cyBhbW91bnQuIFRoZXJlZm9yZSBpbiBkdWxsIGFuZCAKZGFyayB3ZWF0aGVyIHZpdGFsaXR5IHJ1bnMgbG93LCBhbmQgb3ZlciBhbGwgbGl2aW5nIGNyZWF0dXJlcyB0aGVyZSBjb21lcyBhbiAKaW5zdGluY3RpdmUgeWVhcm5pbmcgZm9yIHN1bmxpZ2h0LiAKCgoxMzUuwqDCoMKgwqDCoMKgwqAKV2hlbiB2aXRhbGlzZWQgYXRvbXMgYXJlIHRodXMgbW9yZSBzcGFyc2VseSBzY2F0dGVyZWQsIHRoZSBtYW4gaW4gcnVkZSAKaGVhbHRoIGluY3JlYXNlcyBoaXMgcG93ZXIgb2YgYWJzb3JwdGlvbiwgZGVwbGV0ZXMgYSBsYXJnZXIgYXJlYSwgYW5kIHNvIGtlZXBzIApoaXMgc3RyZW5ndGggYXQgdGhlIG5vcm1hbCBsZXZlbDsgYnV0IGludmFsaWRzIGFuZCBtZW4gb2Ygc21hbGwgbmVydmUtZm9yY2UsIHdobyAKY2Fubm90IGRvIHRoaXMsIG9mdGVuIHN1ZmZlciBzZXZlcmVseSwgYW5kIGZpbmQgdGhlbXNlbHZlcyBncm93aW5nIHdlYWtlciBhbmQgCm1vcmUgaXJyaXRhYmxlIHdpdGhvdXQga25vd2luZyB3aHkuIEZvciBzaW1pbGFyIHJlYXNvbnMgdml0YWxpdHkgaXMgYXQgYSBsb3dlciAKZWJiIGluIHRoZSB3aW50ZXIgdGhhbiBpbiB0aGUgc3VtbWVyLCBmb3IgZXZlbiBpZiB0aGUgc2hvcnQgd2ludGVyIGRheSBiZSBzdW5ueSwgCndoaWNoIGlzIHJhcmUsIHdlIGhhdmUgc3RpbGwgdG8gZmFjZSB0aGUgbG9uZyBhbmQgZHJlYXJ5IHdpbnRlciBuaWdodCwgZHVyaW5nIAp3aGljaCB3ZSBtdXN0IGV4aXN0IHVwb24gc3VjaCB2aXRhbGl0eSBhcyB0aGUgZGF5IGhhcyBzdG9yZWQgaW4gb3VyIGF0bW9zcGhlcmUuIApPbiB0aGUgb3RoZXIgaGFuZCB0aGUgbG9uZyBzdW1tZXIgZGF5LCB3aGVuIGJyaWdodCBhbmQgY2xvdWRsZXNzLCBjaGFyZ2VzIHRoZSAKYXRtb3NwaGVyZSBzbyB0aG9yb3VnaGx5IHdpdGggdml0YWxpdHkgdGhhdCBpdHMgc2hvcnQgbmlnaHQgbWFrZXMgYnV0IGxpdHRsZSAKZGlmZmVyZW5jZS4gCgoKMTM2LsKgwqDCoMKgwqDCoMKgCkZyb20gdGhlIHN0dWR5IG9mIHRoaXMgcXVlc3Rpb24gb2Ygdml0YWxpdHksIHRoZSBvY2N1bHRpc3QgY2Fubm90IGZhaWwgdG8gCnJlY29nbmlzZSB0aGF0LCBxdWl0ZSBhcGFydCBmcm9tIHRlbXBlcmF0dXJlLCBzdW5saWdodCBpcyBvbmUgb2YgdGhlIG1vc3QgCmltcG9ydGFudCBmYWN0b3JzIGluIHRoZSBhdHRhaW5tZW50IGFuZCBwcmVzZXJ2YXRpb24gb2YgcGVyZmVjdCBoZWFsdGgtLSBhIApmYWN0b3IgZm9yIHRoZSBhYnNlbmNlIG9mIHdoaWNoIG5vdGhpbmcgZWxzZSBjYW4gZW50aXJlbHkgY29tcGVuc2F0ZS4gU2luY2UgdGhpcyAKdml0YWxpdHkgaXMgcG91cmVkIGZvcnRoIG5vdCBvbmx5IHVwb24gdGhlIHBoeXNpY2FsIHdvcmxkIGJ1dCB1cG9uIGFsbCBvdGhlcnMgYXMgCndlbGwsIGl0IGlzIGV2aWRlbnQgdGhhdCwgd2hlbiBpbiBvdGhlciByZXNwZWN0cyBzYXRpc2ZhY3RvcnkgY29uZGl0aW9ucyBhcmUgCnByZXNlbnQsIGVtb3Rpb24sIGludGVsbGVjdCBhbmQgc3Bpcml0dWFsaXR5IHdpbGwgYmUgYXQgdGhlaXIgYmVzdCB1bmRlciBjbGVhciAKc2tpZXMgYW5kIHdpdGggdGhlIGluZXN0aW1hYmxlIGFpZCBvZiB0aGUgc3VubGlnaHQuIAoKCjEzNy7CoMKgwqDCoMKgwqDCoApBbGwgdGhlIGNvbG91cnMgb2YgdGhpcyBvcmRlciBvZiB2aXRhbGl0eSBhcmUgZXRoZXJpYywgeWV0IGl0IHdpbGwgYmUgCnNlZW4gdGhhdCB0aGVpciBhY3Rpb24gcHJlc2VudHMgY2VydGFpbiBjb3JyZXNwb25kZW5jZXMgd2l0aCB0aGUgc2lnbmlmaWNhdGlvbiAKYXR0YWNoZWQgdG8gc2ltaWxhciBodWVzIGluIHRoZSBhc3RyYWwgYm9keS4gQ2xlYXJseSByaWdodCB0aG91Z2h0IGFuZCByaWdodCAKZmVlbGluZyByZWFjdCB1cG9uIHRoZSBwaHlzaWNhbCBib2R5LCBhbmQgaW5jcmVhc2UgaXRzIHBvd2VyIHRvIGFzc2ltaWxhdGUgdGhlIAp2aXRhbGl0eSB3aGljaCBpcyBuZWNlc3NhcnkgZm9yIGl0cyB3ZWxsLWJlaW5nLiBJdCBpcyByZXBvcnRlZCB0aGF0IHRoZSBMb3JkIApCVURESEEgb25jZSBzYWlkIHRoYXQgdGhlIGZpcnN0IHN0ZXAgb24gdGhlIHJvYWQgdG8gTmlydmFuYSBpcyBwZXJmZWN0IHBoeXNpY2FsIApoZWFsdGg7IGFuZCBhc3N1cmVkbHkgdGhlIHdheSB0byBhdHRhaW4gdGhhdCBpcyB0byBmb2xsb3cgdGhlIE5vYmxlIEVpZ2h0Zm9sZCAKUGF0aCB3aGljaCBIZSBoYXMgaW5kaWNhdGVkLiDvv71TZWVrIHllIGZpcnN0IHRoZSBLaW5nZG9tIG9mIEdvZCBhbmQgSGlzIApyaWdodGVvdXNuZXNzLCBhbmQgYWxsIHRoZXNlIHRoaW5ncyBzaGFsbCBiZSBhZGRlZCB1bnRvIHlvde+/vS0tIHllcywgZXZlbiAKcGh5c2ljYWwgaGVhbHRoIGFzIHdlbGwuIAoKCjEzOC7CoMKgwqDCoMKgwqDCoApDSEFQVEVSIFYgCgoKMTM5LsKgwqDCoMKgwqDCoMKgCkJZIE5BVFVSQUwgU1VSUk9VTkRJTkdTIAoKCjE0MC7CoMKgwqDCoMKgwqDCoApUSEUgV0VBVEhFUiAKCgoxNDEuwqDCoMKgwqDCoMKgwqAKVEhFIHZhZ2FyaWVzIG9mIHRoZSB3ZWF0aGVyIGFyZSBwcm92ZXJiaWFsLCBhbmQgdGhvdWdoIG9ic2VydmF0aW9uIGFuZCAKc3R1ZHkgb2YgaXRzIHBoZW5vbWVuYSBlbmFibGUgdXMgdG8gdmVudHVyZSB1cG9uIGNlcnRhaW4gbGltaXRlZCBwcmVkaWN0aW9ucywgCnRoZSB1bHRpbWF0ZSBjYXVzZSBvZiBtb3N0IG9mIHRoZSBjaGFuZ2VzIHN0aWxsIGVzY2FwZXMgdXMsIGFuZCB3aWxsIGNvbnRpbnVlIHRvIApkbyBzbyB1bnRpbCB3ZSByZWFsaXNlIHRoYXQgdGhlcmUgYXJlIGNvbnNpZGVyYXRpb25zIHRvIGJlIHRha2VuIGludG8gYWNjb3VudCAKYmVzaWRlcyB0aGUgYWN0aW9uIG9mIGhlYXQgYW5kIGNvbGQsIG9mIHJhZGlhdGlvbiBhbmQgY29uZGVuc2F0aW9uLiBUaGUgZWFydGggCml0c2VsZiBpcyBsaXZpbmc7IHRoaXMgYmFsbCBvZiBtYXR0ZXIgaXMgYmVpbmcgdXNlZCBhcyBhIHBoeXNpY2FsIGJvZHkgYnkgYSB2YXN0IAplbnRpdHktLSBub3QgYW4gQWRlcHQgb3IgYW4gYW5nZWwsIG5vdCBhIGhpZ2hseSBkZXZlbG9wZWQgYmVpbmcgYXQgYWxsLCBidXQgCnJhdGhlciBzb21ldGhpbmcgd2hpY2ggbWF5IGJlIGltYWdpbmVkIGFzIGEga2luZCBvZiBnaWdhbnRpYyBuYXR1cmUtc3Bpcml0LCBmb3IgCndob20gdGhlIGV4aXN0ZW5jZSBvZiBvdXIgZWFydGggaXMgb25lIGluY2FybmF0aW9uLiBIaXMgcHJldmlvdXMgaW5jYXJuYXRpb24gd2FzIApuYXR1cmFsbHkgaW4gdGhlIG1vb24gc2luY2UgdGhhdCB3YXMgdGhlIGZvdXJ0aCBwbGFuZXQgb2YgdGhlIGxhc3QgY2hhaW4sIGFuZCAKZXF1YWxseSBuYXR1cmFsbHkgaGlzIG5leHQgaW5jYXJuYXRpb24gd2lsbCBiZSBpbiB0aGUgZm91cnRoIHBsYW5ldCBvZiB0aGUgY2hhaW4gCnRoYXQgd2lsbCBzdWNjZWVkIG91cnMgd2hlbiB0aGUgZXZvbHV0aW9uIG9mIG91ciB0ZXJyZXN0cmlhbCBjaGFpbiBpcyBjb21wbGV0ZWQuIApPZiBoaXMgbmF0dXJlIG9yIHRoZSBjaGFyYWN0ZXIgb2YgaGlzIGV2b2x1dGlvbiB3ZSBjYW4ga25vdyBidXQgbGl0dGxlLCBub3IgZG9lcyAKaXQgaW4gYW55IHdheSBjb25jZXJuIHVzLCBmb3Igd2UgYXJlIHRvIGhpbSBidXQgYXMgdGlueSBtaWNyb2JlcyBvciBwYXJhc2l0ZXMgCnVwb24gaGlzIGJvZHksIGFuZCBpbiBhbGwgcHJvYmFiaWxpdHkgaGUgaXMgdW5hd2FyZSBldmVuIG9mIG91ciBleGlzdGVuY2UsIGZvciAKbm90aGluZyB0aGF0IHdlIGNhbiBkbyBjYW4gYmUgb24gYSBzY2FsZSBsYXJnZSBlbm91Z2ggdG8gYWZmZWN0IGhpbS4gCgoKMTQyLsKgwqDCoMKgwqDCoMKgCkZvciBoaW0gdGhlIGF0bW9zcGhlcmUgc3Vycm91bmRpbmcgdGhlIGVhcnRoIG11c3QgYmUgYXMgYSBraW5kIG9mIGF1cmEsIApvciBwZXJoYXBzIHJhdGhlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBmaWxtIG9mIGV0aGVyaWMgbWF0dGVyIHdoaWNoIHByb2plY3RzIApldmVyIHNvIHNsaWdodGx5IGJleW9uZCB0aGUgb3V0bGluZSBvZiBtYW4nIHMgZGVuc2UgcGh5c2ljYWwgYm9keTsgYW5kIGp1c3QgYXMgCmFueSBhbHRlcmF0aW9uIG9yIGRpc3R1cmJhbmNlIGluIHRoZSBtYW4gYWZmZWN0cyB0aGlzIGZpbG0gb2YgYWV0aGVyLCBzbyBtdXN0IAphbnkgY2hhbmdlIG9mIGNvbmRpdGlvbiBpbiB0aGlzIHNwaXJpdCBvZiB0aGUgZWFydGggYWZmZWN0IHRoZSBhdG1vc3BoZXJlLiBTb21lIApzdWNoIGNoYW5nZXMgbXVzdCBiZSBwZXJpb2RpYyBhbmQgcmVndWxhciwgbGlrZSB0aGUgbW90aW9ucyBwcm9kdWNlZCBpbiB1cyBieSAKYnJlYXRoaW5nLCBieSB0aGUgYWN0aW9uIG9mIHRoZSBoZWFydCBvciBieSBhbiBldmVuIG1vdmVtZW50LCBzdWNoIGFzIHdhbGtpbmc7IApvdGhlcnMgbXVzdCBiZSBpcnJlZ3VsYXIgYW5kIG9jY2FzaW9uYWwsIGFzIHdvdWxkIGJlIHRoZSBjaGFuZ2VzIHByb2R1Y2VkIGluIGEgCm1hbiBieSBhIHN1ZGRlbiBzdGFydCwgb3IgYnkgYW4gb3V0YnVyc3Qgb2YgZW1vdGlvbi4gCgoKMTQzLsKgwqDCoMKgwqDCoMKgCldlIGtub3cgdGhhdCB2aW9sZW50IGVtb3Rpb24sIGFzdHJhbCBpbiBpdHMgb3JpZ2luIHRob3VnaCBpdCBiZSwgcHJvZHVjZXMgCmNoZW1pY2FsIGNoYW5nZXMgYW5kIHZhcmlhdGlvbnMgb2YgdGVtcGVyYXR1cmUgaW4gdGhlIGh1bWFuIHBoeXNpY2FsIGJvZHk7IAp3aGF0ZXZlciBjb3JyZXNwb25kcyB0byBzdWNoIGVtb3Rpb24gaW4gdGhlIHNwaXJpdCBvZiB0aGUgZWFydGggbWF5IHdlbGwgY2F1c2UgCmNoZW1pY2FsIGNoYW5nZXMgaW4gaGlzIHBoeXNpY2FsIGJvZHkgYWxzbywgYW5kIHZhcmlhdGlvbnMgb2YgCnRlbXBlcmF0dXJlIGluIGl0cyBpbW1lZGlhdGUgc3Vycm91bmRpbmdzLiBOb3cgdmFyaWF0aW9ucyBvZiB0ZW1wZXJhdHVyZSBpbiB0aGUgCmF0bW9zcGhlcmUgbWVhbiB3aW5kOyBzdWRkZW4gYW5kIHZpb2xlbnQgdmFyaWF0aW9ucyBtZWFuIHN0b3JtOyBhbmQgY2hlbWljYWwgCmNoYW5nZXMgYmVuZWF0aCB0aGUgc3VyZmFjZSBvZiB0aGUgZWFydGggbm90IGluZnJlcXVlbnRseSBjYXVzZSBlYXJ0aHF1YWtlcyBhbmQgCnZvbGNhbmljIGVydXB0aW9ucy4gCgoKMTQ0LsKgwqDCoMKgwqDCoMKgCk5vIHN0dWRlbnQgb2Ygb2NjdWx0aXNtIHdpbGwgZmFsbCBpbnRvIHRoZSBjb21tb24gZXJyb3Igb2YgcmVnYXJkaW5nIGFzIApldmlsIHN1Y2ggb3V0YnVyc3RzIGFzIHN0b3JtcyBvciBlcnVwdGlvbnMsIGJlY2F1c2UgdGhleSBzb21ldGltZXMgZGVzdHJveSBodW1hbiAKbGlmZTsgZm9yIGhlIHdpbGwgcmVjb2duaXNlIHRoYXQsIHdoYXRldmVyIHRoZSBpbW1lZGlhdGUgY2F1c2UgbWF5IGJlLCBhbGwgdGhhdCAKaGFwcGVucyBpcyBwYXJ0IG9mIHRoZSB3b3JraW5nIG9mIHRoZSBncmVhdCBpbW11dGFibGUgbGF3IG9mIGp1c3RpY2UsIGFuZCB0aGF0IApIZSB3aG8gZG9ldGggYWxsIHRoaW5ncyBtb3N0IGNlcnRhaW5seSBkb2V0aCBhbGwgdGhpbmdzIHdlbGwuIFRoaXMgYXNwZWN0IG9mIApuYXR1cmFsIHBoZW5vbWVuYSwgaG93ZXZlciwgd2lsbCBiZSBjb25zaWRlcmVkIGluIGEgbGF0ZXIgY2hhcHRlci4gCgoKMTQ1LsKgwqDCoMKgwqDCoMKgCkl0IGNhbm5vdCBiZSBxdWVzdGlvbmVkIHRoYXQgbWVuIGFyZSBtdWNoIGFuZCB2YXJpb3VzbHkgYWZmZWN0ZWQgYnkgdGhlIAp3ZWF0aGVyLiBUaGVyZSBpcyBhIGdlbmVyYWwgY29uc2Vuc3VzIG9mIG9waW5pb24gdGhhdCBnbG9vbXkgd2VhdGhlciBpcyAKZGVwcmVzc2luZzsgYnV0IHRoaXMgaXMgbWFpbmx5IGR1ZSB0byB0aGUgZmFjdCB0aGF0IGluIHRoZSBhYnNlbmNlIG9mIHN1bmxpZ2h0IAp0aGVyZSBpcywgYXMgaGFzIGFscmVhZHkgYmVlbiBleHBsYWluZWQsIGEgbGFjayBvZiB2aXRhbGl0eS4gU29tZSBwZW9wbGUsIApob3dldmVyLCB0YWtlIGFuIGFjdHVhbCBkZWxpZ2h0IGluIHJhaW4gb3Igc25vdyBvciBoaWdoIHdpbmQuIFRoZXJlIGlzIGluIHRoZXNlIApkaXN0dXJiYW5jZXMgc29tZXRoaW5nIHdoaWNoIHByb2R1Y2VzIGEgZGlzdGluY3QgcGxlYXN1cmFibGUgc2Vuc2F0aW9uIHdoaWNoIApxdWlja2VucyB0aGVpciB2aWJyYXRpb25zIGFuZCBoYXJtb25pc2VzIHdpdGggdGhlIGtleS1ub3RlIG9mIHRoZWlyIG5hdHVyZS4gSXQgCmlzIHByb2JhYmxlIHRoYXQgdGhpcyBpcyBub3QgZW50aXJlbHkgb3IgZXZlbiBjaGllZmx5IGR1ZSB0byB0aGUgcGh5c2ljYWwgCmRpc3R1cmJhbmNlOyBpdCBpcyByYXRoZXIgdGhhdCB0aGUgc3VidGxlIGNoYW5nZSBpbiB0aGUgYXVyYSBvZiB0aGUgc3Bpcml0IG9mIAp0aGUgZWFydGggKHdoaWNoIHByb2R1Y2VzIG9yIGNvaW5jaWRlcyB3aXRoIHRoaXMgcGhlbm9tZW5vbikgaXMgb25lIHdpdGggd2hpY2ggCnRoZWlyIHNwaXJpdHMgYXJlIGluIHN5bXBhdGh5LiBBIHN0aWxsIG1vcmUgZGVjaWRlZCBpbnN0YW5jZSBvZiB0aGlzIGlzIHRoZSAKZWZmZWN0IG9mIGEgdGh1bmRlci1zdG9ybS4gVGhlcmUgYXJlIG1hbnkgcGVvcGxlIGluIHdob20gaXQgcHJvZHVjZXMgYSBjdXJpb3VzIApzZW5zZSBvZiBvdmVyd2hlbG1pbmcgZmVhciBlbnRpcmVseSBvdXQgb2YgcHJvcG9ydGlvbiB0byBhbnkgcGh5c2ljYWwgZGFuZ2VyIAp0aGF0IGl0IGNhbiBiZSBzdXBwb3NlZCB0byBicmluZy4gSW4gb3RoZXJzLCBvbiB0aGUgY29udHJhcnksIHRoZSBlbGVjdHJpY2FsIApzdG9ybSBwcm9kdWNlcyB3aWxkIGV4dWx0YXRpb24uIFRoZSBpbmZsdWVuY2Ugb2YgZWxlY3RyaWNpdHkgb24gdGhlIHBoeXNpY2FsIApuZXJ2ZXMgbm8gZG91YnQgcGxheXMgYSBwYXJ0IGluIHByb2R1Y2luZyB0aGVzZSB1bnVzdWFsIHNlbnNhdGlvbnMsIGJ1dCB0aGVpciAKdHJ1ZSBjYXVzZSBsaWVzIGRlZXBlciB0aGFuIHRoYXQuIAoKCjE0Ni7CoMKgwqDCoMKgwqDCoApUaGUgZWZmZWN0IHByb2R1Y2VkIHVwb24gcGVvcGxlIGJ5IHRoZXNlIHZhcmlvdXMgbWFuaWZlc3RhdGlvbnMgZGVwZW5kcyAKdXBvbiB0aGUgcHJlcG9uZGVyYW5jZSBpbiB0aGVpciB0ZW1wZXJhbWVudCBvZiBjZXJ0YWluIHR5cGVzIG9mIGVsZW1lbnRhbCAKZXNzZW5jZSB3aGljaCwgYmVjYXVzZSBvZiB0aGlzIHN5bXBhdGhldGljIHZpYnJhdGlvbiwgdXNlZCB0byBiZSBjYWxsZWQgYnkgCm1lZGlhZXZhbCBlbnF1aXJlcnMgZWFydGh5LCB3YXRlcnksIGFpcnkgb3IgZmllcnkuIEV4YWN0bHkgaW4gdGhlIHNhbWUgd2F5IHRoZSAKZWZmZWN0IG9mIHRoZSB2YXJpb3VzIHNlY3Rpb25zIG9mIG91ciBzdXJyb3VuZGluZ3Mgd2lsbCBiZSBncmVhdGVyIG9yIGxlc3MgdXBvbiAKbWVuIGFjY29yZGluZyBhcyB0aGV5IGhhdmUgbW9yZSBvciBsZXNzIG9mIG9uZSBvciBvdGhlciBvZiB0aGVzZSBjb25zdGl0dWVudHMgaW4gCnRoZWlyIGNvbXBvc2l0aW9uLiBUbyB0aGUgbWFuIHdobyByZXNwb25kcyBtb3N0IHJlYWRpbHkgdG8gZWFydGggaW5mbHVlbmNlcywgdGhlIApuYXR1cmUgb2YgdGhlIHNvaWwgdXBvbiB3aGljaCBoaXMgaG91c2UgaXMgYnVpbHQgaXMgb2YgcHJpbWFyeSBpbXBvcnRhbmNlLCBidXQgCml0IG1hdHRlcnMgY29tcGFyYXRpdmVseSBsaXR0bGUgdG8gaGltIHdoZXRoZXIgaXQgaXMgb3IgaXMgbm90IGluIHRoZSAKbmVpZ2hib3VyaG9vZCBvZiB3YXRlcjsgd2hlcmVhcyB0aGUgbWFuIHdobyByZXNwb25kcyBtb3N0IHJlYWRpbHkgdG8gdGhlIApyYWRpYXRpb25zIG9mIHdhdGVyIHdvdWxkIGNhcmUgbGl0dGxlIGFib3V0IHRoZSBzb2lsIHNvIGxvbmcgYXMgaGUgaGFkIHRoZSBvY2VhbiAKb3IgYSBsYWtlIHdpdGhpbiBzaWdodCBhbmQgd2l0aGluIGVhc3kgcmVhY2guIAoKCjE0Ny7CoMKgwqDCoMKgwqDCoApST0NLUyAKCgoxNDguwqDCoMKgwqDCoMKgwqAKSW5mbHVlbmNlIGlzIHBlcnBldHVhbGx5IHJhZGlhdGVkIHVwb24gdXMgYnkgYWxsIG9iamVjdHMgb2YgbmF0dXJlLCBldmVuIApieSB0aGUgdmVyeSBlYXJ0aCB1cG9uIHdoaWNoIHdlIHRyZWFkLiBFYWNoIHR5cGUgb2Ygcm9jayBvciBzb2lsIGhhcyBpdHMgb3duIApzcGVjaWFsIHZhcmlldHksIGFuZCB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGVtIGFyZSBncmVhdCwgc28gdGhhdCB0aGVpciAKZWZmZWN0IGlzIGJ5IG5vIG1lYW5zIHRvIGJlIG5lZ2xlY3RlZC4gSW4gdGhlIHByb2R1Y3Rpb24gb2YgdGhpcyBlZmZlY3QgdGhyZWUgCmZhY3RvcnMgYmVhciB0aGVpciBwYXJ0LS0gdGhlIGxpZmUgb2YgdGhlIHJvY2sgaXRzZWxmLCB0aGUga2luZCBvZiBlbGVtZW50YWwgCmVzc2VuY2UgYXBwcm9wcmlhdGUgdG8gaXRzIGFzdHJhbCBjb3VudGVycGFydCwgYW5kIHRoZSBraW5kIG9mIG5hdHVyZS1zcGlyaXRzIAp3aGljaCBpdCBhdHRyYWN0cy4gVGhlIGxpZmUgb2YgdGhlIHJvY2sgaXMgc2ltcGx5IHRoZSBsaWZlIG9mIHRoZSBTZWNvbmQgR3JlYXQgCk91dHBvdXJpbmcgd2hpY2ggaGFzIGFycml2ZWQgYXQgdGhlIHN0YWdlIG9mIGVuc291bGluZyB0aGUgbWluZXJhbCBraW5nZG9tLCBhbmQgCnRoZSBlbGVtZW50YWwgZXNzZW5jZSBpcyBhIGxhdGVyIHdhdmUgb2YgdGhhdCBzYW1lIGRpdmluZSBMaWZlIHdoaWNoIGlzIG9uZSAKY2hhaW4tcGVyaW9kIGJlaGluZCB0aGUgb3RoZXIsIGFuZCBoYXMgeWV0IGluIGl0cyBkZXNjZW50IGludG8gbWF0dGVyIHJlYWNoZWQgCm9ubHkgdGhlIGFzdHJhbCB3b3JsZC4gVGhlIG5hdHVyZS1zcGlyaXQgYmVsb25nIHRvIGEgZGlmZmVyZW50IGV2b2x1dGlvbiAKYWx0b2dldGhlciwgdG8gd2hpY2ggd2Ugc2hhbGwgcmVmZXIgaW4gZHVlIGNvdXJzZS4gCgoKMTQ5LsKgwqDCoMKgwqDCoMKgClRoZSBwb2ludCBmb3IgdXMgdG8gYmVhciBpbiBtaW5kIGZvciB0aGUgbW9tZW50IGlzIHRoYXQgZWFjaCBraW5kIG9mIApzb2lsLS0gZ3Jhbml0ZSBvciBzYW5kc3RvbmUsIGNoYWxrLCBjbGF5IG9yIGxhdmEsIGhhcyBpdHMgZGVmaW5pdGUgaW5mbHVlbmNlIAp1cG9uIHRob3NlIHdobyBsaXZlIG9uIGl0LS0gYW4gaW5mbHVlbmNlIHdoaWNoIG5ldmVyIGNlYXNlcy4gTmlnaHQgYW5kIGRheSwgCnN1bW1lciBhbmQgd2ludGVyLCB5ZWFyIGluIGFuZCB5ZWFyIG91dCwgdGhpcyBzdGVhZHkgcHJlc3N1cmUgaXMgYmVpbmcgCmV4ZXJjaXNlZCwgYW5kIGl0IGhhcyBpdHMgcGFydCBpbiB0aGUgbW91bGRpbmcgb2YgcmFjZXMgYW5kIGRpc3RyaWN0cywgdHlwZXMgYXMgCndlbGwgYXMgaW5kaXZpZHVhbHMuIEFsbCB0aGVzZSBtYXR0ZXJzIGFyZSBhcyB5ZXQgYnV0IGxpdHRsZSBjb21wcmVoZW5kZWQgYnkgCm9yZGluYXJ5IHNjaWVuY2UsIGJ1dCB0aGVyZSBjYW4gYmUgbm8gZG91YnQgdGhhdCBpbiB0aW1lIHRvIGNvbWUgdGhlc2UgZWZmZWN0cyAKd2lsbCBiZSB0aG9yb3VnaGx5IHN0dWRpZWQsIGFuZCB0aGUgZG9jdG9ycyBvZiB0aGUgZnV0dXJlIHdpbGwgdGFrZSB0aGVtIGludG8gCmFjY291bnQsIGFuZCBwcmVzY3JpYmUgYSBjaGFuZ2Ugb2Ygc29pbCBhcyB3ZWxsIGFzIG9mIGFpciBmb3IgdGhlaXIgcGF0aWVudHMuCgoKMTUwLsKgwqDCoMKgwqDCoMKgCkFuIGVudGlyZWx5IG5ldyBhbmQgZGlzdGluY3Qgc2V0IG9mIGFnZW5jaWVzIGlzIGJyb3VnaHQgaW50byBwbGF5IAp3aGVyZXZlciB3YXRlciBleGlzdHMsIHdoZXRoZXIgaXQgYmUgaW4gdGhlIGZvcm0gb2YgbGFrZSwgcml2ZXIgb3Igc2VhLS0gCnBvd2VyZnVsIGluIGRpZmZlcmVudCB3YXlzIGluIGFsbCBvZiB0aGVtIHRydWx5LCBidXQgbW9zdCBwb3dlcmZ1bCBhbmQgCm9ic2VydmFibGUgaW4gdGhlIGxhc3QuIEhlcmUgYWxzbyB0aGUgc2FtZSB0aHJlZSBmYWN0b3JzIGhhdmUgdG8gYmUgY29uc2lkZXJlZC0tIAp0aGUgbGlmZSBvZiB0aGUgd2F0ZXIgaXRzZWxmLCB0aGUgZWxlbWVudGFsIGVzc2VuY2UgcGVydmFkaW5nIGl0LCBhbmQgdGhlIHR5cGUgCm9mIG5hdHVyZS1zcGlyaXRzIGFzc29jaWF0ZWQgd2l0aCBpdC4gCgoKMTUxLsKgwqDCoMKgwqDCoMKgClRSRUVTIAoKCjE1Mi7CoMKgwqDCoMKgwqDCoApTdHJvbmcgaW5mbHVlbmNlcyBhcmUgcmFkaWF0ZWQgYnkgdGhlIHZlZ2V0YWJsZSBraW5nZG9tIGFsc28sIGFuZCB0aGUgCmRpZmZlcmVudCBraW5kcyBvZiBwbGFudHMgYW5kIHRyZWVzIHZhcnkgZ3JlYXRseSBpbiB0aGVpciBlZmZlY3QuIFRob3NlIHdobyBoYXZlIApub3Qgc3BlY2lhbGx5IHN0dWRpZWQgdGhlIHN1YmplY3QgaW52YXJpYWJseSB1bmRlci1yYXRlIHRoZSBzdHJlbmd0aCwgY2FwYWNpdHkgCmFuZCBpbnRlbGxpZ2VuY2Ugc2hvd24gaW4gdmVnZXRhYmxlIGxpZmUuIEkgaGF2ZSBhbHJlYWR5IHdyaXR0ZW4gdXBvbiB0aGlzIGluClRoZSBDaHJpc3RpYW4gQ3JlZWQsIHAuIDUxICgybmQgZWRpdGlvbiksIHNvIEkgd2lsbCBub3QgcmVwZWF0IG15c2VsZiAKaGVyZSwgYnV0IHdpbGwgcmF0aGVyIGRyYXcgYXR0ZW50aW9uIHRvIHRoZSBmYWN0IHRoYXQgdHJlZXMtLSBlc3BlY2lhbGx5IG9sZCAKdHJlZXMtLSBoYXZlIGEgc3Ryb25nIGFuZCBkZWZpbml0ZSBpbmRpdmlkdWFsaXR5LCB3ZWxsIHdvcnRoeSB0aGUgbmFtZSBvZiBhIApzb3VsLiBUaGlzIHNvdWwsIHRob3VnaCB0ZW1wb3JhcnksIGluIHRoZSBzZW5zZSB0aGF0IGl0IGlzIG5vdCB5ZXQgYSAKcmVpbmNhcm5hdGluZyBlbnRpdHksIGlzIG5ldmVydGhlbGVzcyBwb3NzZXNzZWQgb2YgY29uc2lkZXJhYmxlIHBvd2VyIGFuZCAKaW50ZWxsaWdlbmNlIGFsb25nIGl0cyBvd24gbGluZXMuIAoKCjE1My7CoMKgwqDCoMKgwqDCoApJdCBoYXMgZGVjaWRlZCBsaWtlcyBhbmQgZGlzbGlrZXMsIGFuZCB0byBjbGFpcnZveWFudCBzaWdodCBpdCBzaG93cyAKcXVpdGUgY2xlYXJseSBieSBhIHZpdmlkIHJvc3kgZmx1c2ggYW4gZW1waGF0aWMgZW5qb3ltZW50IG9mIHRoZSBzdW5saWdodCBhbmQgCnRoZSByYWluLCBhbmQgZGlzdGluY3QgcGxlYXN1cmUgYWxzbyBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhvc2Ugd2hvbSBpdCBoYXMgbGVhcm50IAp0byBsaWtlLCBvciB3aXRoIHdob20gaXQgaGFzIHN5bXBhdGhldGljIHZpYnJhdGlvbnMuIEVtZXJzb24gYXBwZWFycyB0byBoYXZlIApyZWFsaXNlZCB0aGlzLCBmb3IgaGUgaXMgcXVvdGVkIGluIEh1dHRvbicgcyBSZW1pbmlzY2VuY2VzIGFzIHNheWluZyBvZiAKaGlzIHRyZWVzOiDvv71JIGFtIHN1cmUgdGhleSBtaXNzIG1lOyB0aGV5IHNlZW0gdG8gZHJvb3Agd2hlbiBJIGdvIGF3YXksIGFuZCBJIAprbm93IHRoZXkgYnJpZ2h0ZW4gYW5kIGJsb29tIHdoZW4gSSBnbyBiYWNrIHRvIHRoZW0gYW5kIHNoYWtlIGhhbmRzIHdpdGggdGhlaXIgCmxvd2VyIGJyYW5jaGVzLu+/vSAKCgoxNTQuwqDCoMKgwqDCoMKgwqAKQW4gb2xkIGZvcmVzdCB0cmVlIGlzIGEgaGlnaCBkZXZlbG9wbWVudCBvZiB2ZWdldGFibGUgbGlmZSwgYW5kIHdoZW4gaXQgCmlzIHRyYW5zZmVycmVkIGZyb20gdGhhdCBraW5nZG9tIGl0IGRvZXMgbm90IHBhc3MgaW50byB0aGUgbG93ZXN0IGZvcm0gb2YgYW5pbWFsIApsaWZlLiBJbiBzb21lIGNhc2VzIGl0cyBpbmRpdmlkdWFsaXR5IGlzIGV2ZW4gc3VmZmljaWVudGx5IGRpc3RpbmN0IHRvIGFsbG93IGl0IAp0byBtYW5pZmVzdCBpdHNlbGYgdGVtcG9yYXJpbHkgb3V0c2lkZSBpdHMgcGh5c2ljYWwgZm9ybSwgYW5kIHdoZW4gdGhhdCBpcyBzbyBpdCAKb2Z0ZW4gdGFrZXMgdGhlIGh1bWFuIHNoYXBlLiBNYXR0ZXJzIG1heSBiZSBvdGhlcndpc2UgYXJyYW5nZWQgaW4gb3RoZXIgc29sYXIgCnN5c3RlbXMgZm9yIGF1Z2h0IHdlIGtub3csIGJ1dCBpbiBvdXJzIHRoZSBEZWl0eSBoYXMgY2hvc2VuIHRoZSBodW1hbiBmb3JtIHRvIAplbnNocmluZSB0aGUgaGlnaGVzdCBpbnRlbGxpZ2VuY2UsIHRvIGJlIGNhcnJpZWQgb24gdG8gdGhlIHV0bW9zdCBwZXJmZWN0aW9uIGFzIApIaXMgc2NoZW1lIGRldmVsb3BzOiBhbmQgYmVjYXVzZSB0aGF0IGlzIHNvLCB0aGVyZSBpcyBhbHdheXMgYSB0ZW5kZW5jeSBhbW9uZyAKbG93ZXIga2luZHMgb2YgbGlmZSB0byByZWFjaCB1cHdhcmRzIHRvd2FyZHMgdGhhdCBmb3JtLCBhbmQgaW4gdGhlaXIgcHJpbWl0aXZlIAp3YXkgdG8gaW1hZ2luZSB0aGVtc2VsdmVzIGFzIHBvc3Nlc3NpbmcgaXQuIAoKCjE1NS7CoMKgwqDCoMKgwqDCoApUaHVzIGl0IGhhcHBlbnMgdGhhdCBzdWNoIGNyZWF0dXJlcyBhcyBnbm9tZXMgb3IgZWx2ZXMsIHdob3NlIGJvZGllcyBhcmUgCm9mIGZsdWlkaWMgbmF0dXJlLCBvZiBhc3RyYWwgb3IgZXRoZXJpYyBtYXR0ZXIgd2hpY2ggaXMgcGxhc3RpYyB1bmRlciB0aGUgCmluZmx1ZW5jZSBvZiB0aGUgd2lsbCwgaGFiaXR1YWxseSBhZG9wdHMgc29tZSBhcHByb3hpbWF0aW9uIHRvIHRoZSBhcHBlYXJhbmNlIG9mIApodW1hbml0eS4gVGh1cyBhbHNvIHdoZW4gaXQgaXMgcG9zc2libGUgZm9yIHRoZSBzb3VsIG9mIGEgdHJlZSB0byBleHRlcm5hbGlzZSAKaXRzZWxmIGFuZCBiZWNvbWUgdmlzaWJsZSwgaXQgaXMgYWxtb3N0IGFsd2F5cyBpbiBodW1hbiBzaGFwZSB0aGF0IGl0IGlzIHNlZW4uIApEb3VidGxlc3MgdGhlc2Ugd2VyZSB0aGUgZHJ5YWRzIG9mIGNsYXNzaWNhbCB0aW1lczsgYW5kIHRoZSBvY2Nhc2lvbmFsIAphcHBlYXJhbmNlIG9mIHN1Y2ggZmlndXJlcyBtYXkgYWNjb3VudCBmb3IgdGhlIHdpZGVseS1zcHJlYWQgY3VzdG9tIG9mIAp0cmVlLXdvcnNoaXAuIE9tbmUgaWdub3R1bSBwcm8gbWFnbmlmaWNvOyBhbmQgaWYgcHJpbWl0aXZlIG1hbiBzYXcgYSAKaHVnZSwgZ3JhdmUgaHVtYW4gZm9ybSBjb21lIGZvcnRoIGZyb20gYSB0cmVlLCBoZSB3YXMgbGlrZWx5IGVub3VnaCBpbiBoaXMgCmlnbm9yYW5jZSB0byBzZXQgdXAgYW4gYWx0YXIgdGhlcmUgYW5kIHdvcnNoaXAgaXQsIG5vdCBpbiB0aGUgbGVhc3QgCnVuZGVyc3RhbmRpbmcgdGhhdCBoZSBoaW1zZWxmIHN0b29kIGZhciBoaWdoZXIgaW4gZXZvbHV0aW9uIHRoYW4gaXQgZGlkLCBhbmQgCnRoYXQgaXRzIHZlcnkgYXNzdW1wdGlvbiBvZiBoaXMgaW1hZ2Ugd2FzIGFuIGFja25vd2xlZGdtZW50IG9mIHRoYXQgZmFjdC4gCgoKMTU2LsKgwqDCoMKgwqDCoMKgClRoZSBvY2N1bHQgc2lkZSBvZiB0aGUgaW5zdGluY3Qgb2YgYSBwbGFudCBpcyBhbHNvIGV4Y2VlZGluZ2x5IAppbnRlcmVzdGluZzsgaXRzIG9uZSBncmVhdCBvYmplY3QsIGxpa2UgdGhhdCBvZiBzb21lIGh1bWFuIGJlaW5ncywgaXMgYWx3YXlzIHRvIApmb3VuZCBhIGZhbWlseSBhbmQgcmVwcm9kdWNlIGl0cyBzcGVjaWVzOyBhbmQgaXQgaGFzIGNlcnRhaW5seSBhIGZlZWxpbmcgb2YgCmFjdGl2ZSBlbmpveW1lbnQgaW4gaXRzIHN1Y2Nlc3MsIGluIHRoZSBjb2xvdXIgYW5kIGJlYXV0eSBvZiBpdHMgZmxvd2VycyBhbmQgaW4gCnRoZWlyIGVmZmljaWVuY3kgaW4gYXR0cmFjdGluZyBiZWVzIGFuZCBvdGhlciBpbnNlY3RzLiBVbnF1ZXN0aW9uYWJseSBwbGFudHMgCmZlZWwgYWRtaXJhdGlvbiBsYXZpc2hlZCB1cG9uIHRoZW0gYW5kIGRlbGlnaHQgaW4gaXQ7IHRoZXkgYXJlIHNlbnNpdGl2ZSB0byAKaHVtYW4gYWZmZWN0aW9uIGFuZCB0aGV5IHJldHVybiBpdCBpbiB0aGVpciBvd24gd2F5LiAKCgoxNTcuwqDCoMKgwqDCoMKgwqAKV2hlbiBhbGwgdGhpcyBpcyBib3JuZSBpbiBtaW5kLCBpdCB3aWxsIHJlYWRpbHkgYmUgdW5kZXJzdG9vZCB0aGF0IHRyZWVzIApleGVyY2lzZSBtdWNoIG1vcmUgaW5mbHVlbmNlIG92ZXIgaHVtYW4gYmVpbmdzIHRoYW4gaXMgY29tbW9ubHkgc3VwcG9zZWQsIGFuZCAKdGhhdCBoZSB3aG8gc2V0cyBoaW1zZWxmIHRvIGN1bHRpdmF0ZSBzeW1wYXRoZXRpYyBhbmQgZnJpZW5kbHkgcmVsYXRpb25zIHdpdGgKYWxsIGhpcyBuZWlnaGJvdXJzLCB2ZWdldGFibGUgYXMgd2VsbCBhcyBhbmltYWwgYW5kIGh1bWFuLCBtYXkgYm90aCAKcmVjZWl2ZSBhbmQgZ2l2ZSBhIGdyZWF0IGRlYWwgb2Ygd2hpY2ggdGhlIGF2ZXJhZ2UgbWFuIGtub3dzIG5vdGhpbmcsIGFuZCBtYXkgCnRodXMgbWFrZSBoaXMgbGlmZSBmdWxsZXIsIHdpZGVyLCBtb3JlIGNvbXBsZXRlLiAKCgoxNTguwqDCoMKgwqDCoMKgwqAKVEhFIFNFVkVOIFRZUEVTIAoKCjE1OS7CoMKgwqDCoMKgwqDCoApUaGUgY2xhc3NpZmljYXRpb24gb2YgdGhlIHZlZ2V0YWJsZSBraW5nZG9tIGFkb3B0ZWQgYnkgdGhlIG9jY3VsdGlzdCAKZm9sbG93cyB0aGUgbGluZSBvZiB0aGUgc2V2ZW4gZ3JlYXQgdHlwZXMgbWVudGlvbmVkIGluIG91ciBwcmV2aW91cyBjaGFwdGVyIG9uIApwbGFuZXRhcnkgaW5mbHVlbmNlcywgYW5kIGVhY2ggb2YgdGhlc2UgaXMgZGl2aWRlZCBpbnRvIHNldmVuIHN1Yi10eXBlcy4gSWYgd2UgCmltYWdpbmUgb3Vyc2VsdmVzIHRyeWluZyB0byB0YWJ1bGF0ZSB0aGUgdmVnZXRhYmxlIGtpbmdkb20sIHRoZXNlIGRpdmlzaW9ucyAKd291bGQgbmF0dXJhbGx5IGJlIHBlcnBlbmRpY3VsYXIsIG5vciBob3Jpem9udGFsLiBXZSBzaG91bGQgbm90IGhhdmUgdHJlZXMgYXMgCm9uZSB0eXBlLCBzaHJ1YnMgYXMgYW5vdGhlciwgZmVybnMgYXMgYSB0aGlyZCwgZ3Jhc3NlcyBvciBtb3NzZXMgYXMgYSBmb3VydGg7IApyYXRoZXIgd2Ugc2hvdWxkIGZpbmQgdHJlZXMsIHNocnVicywgZmVybnMsIGdyYXNzZXMsIG1vc3NlcyBvZiBlYWNoIG9mIHRoZSBzZXZlbiAKdHlwZXMsIHNvIHRoYXQgYWxvbmcgZWFjaCBsaW5lIGFsbCB0aGUgc3RlcHMgb2YgdGhlIGFzY2VuZGluZyBzY2FsZSBhcmUgCnJlcHJlc2VudGVkLiAKCgoxNjAuwqDCoMKgwqDCoMKgwqAKT25lIG1pZ2h0IHBocmFzZSBpdCB0aGF0IHdoZW4gdGhlIFNlY29uZCBPdXRwb3VyaW5nIGlzIHJlYWR5IHRvIGRlc2NlbmQsIApzZXZlbiBncmVhdCBjaGFubmVscywgZWFjaCB3aXRoIGl0cyBzZXZlbiBzdWJkaXZpc2lvbnMsIGxpZSBvcGVuIGZvciBpdHMgY2hvaWNlOyAKYnV0IHRoZSBjaGFubmVsIHRocm91Z2ggd2hpY2ggaXQgcGFzc2VzIGdpdmVzIGl0IGEgY2VydGFpbiBjb2xvdXJpbmctLSBhIHNldCBvZiAKdGVtcGVyYW1lbnRhbCBjaGFyYWN0ZXJpc3RpY3MtLSB3aGljaCBpdCBuZXZlciB3aG9sbHkgbG9zZXMsIHNvIHRoYXQgYWx0aG91Z2ggaW4gCm9yZGVyIHRvIGV4cHJlc3MgaXRzZWxmIGl0IG5lZWRzIG1hdHRlciBiZWxvbmdpbmcgdG8gYWxsIHRoZSBkaWZmZXJlbnQgdHlwZXMsIGl0IApoYXMgYWx3YXlzIGEgcHJlcG9uZGVyYW5jZSBvZiBpdHMgb3duIHR5cGUsIGFuZCBhbHdheXMgcmVjb2duaXNhYmx5IGJlbG9uZ3MgdG8gCnRoYXQgdHlwZSBhbmQgbm8gb3RoZXIsIHVudGlsIGFmdGVyIGl0cyBldm9sdXRpb24gaXMgb3ZlciBpdCByZXR1cm5zIGFzIGEgCmdsb3JpZmllZCBzcGlyaXR1YWwgcG93ZXIgdG8gdGhlIERlaXR5IGZyb20gd2hvbSBpdCBvcmlnaW5hbGx5IGVtZXJnZWQgYXMgYSBtZXJlIAp1bmRldmVsb3BlZCBwb3RlbnRpYWxpdHkuIAoKCjE2MS7CoMKgwqDCoMKgwqDCoApUaGUgdmVnZXRhYmxlIGtpbmdkb20gaXMgb25seSBvbmUgc3RhZ2UgaW4gdGhpcyBzdHVwZW5kb3VzIGNvdXJzZSwgeWV0IAp0aGVzZSBkaWZmZXJlbnQgdHlwZXMgYXJlIGRpc3Rpbmd1aXNoYWJsZSBpbiBpdCwganVzdCBhcyB0aGV5IGFyZSBhbW9uZyBhbmltYWxzIApvciBodW1hbiBiZWluZ3MsIGFuZCBlYWNoIGhhcyBpdHMgb3duIHNwZWNpYWwgaW5mbHVlbmNlLCB3aGljaCBtYXkgYmUgc29vdGhpbmcgCm9yIGhlbHBmdWwgdG8gb25lIG1hbiwgZGlzdHJlc3Npbmcgb3IgaXJyaXRhdGluZyB0byBhbm90aGVyLCBhbmQgaW5lcnQgaW4gdGhlIApjYXNlIG9mIGEgdGhpcmQsIGFjY29yZGluZyB0byBoaXMgdHlwZSBhbmQgdG8gaGlzIGNvbmRpdGlvbiBhdCB0aGUgCnRpbWUuIFRyYWluaW5nIGFuZCBwcmFjdGljZSBhcmUgbmVjZXNzYXJ5IHRvIGVuYWJsZSB0aGUgc3R1ZGVudCB0byBhc3NpZ24gdGhlIAp2YXJpb3VzIHBsYW50cyBhbmQgdHJlZXMgdG8gdGhlaXIgcHJvcGVyIGNsYXNzZXMsIGJ1dCB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiAKdGhlIG1hZ25ldGlzbSByYWRpYXRlZCBieSB0aGUgb2FrIGFuZCB0aGUgcGluZSwgdGhlIHBhbG0gdHJlZSBhbmQgdGhlIGJhbnlhbiwgCnRoZSBvbGl2ZSBhbmQgdGhlIGV1Y2FseXB0dXMsIHRoZSByb3NlIGFuZCB0aGUgbGlseSwgdGhlIHZpb2xldCBhbmQgdGhlIApzdW5mbG93ZXIsIGNhbm5vdCBmYWlsIHRvIGJlIG9idmlvdXMgdG8gYW55IHNlbnNpdGl2ZSBwZXJzb24uIFdpZGUgYXMgdGhlIHBvbGVzIAphc3VuZGVyIGlzIHRoZSBkaXNzaW1pbGFyaXR5IGJldHdlZW4gdGhlIGAgZmVlbGluZycgb2YgYW4gRW5nbGlzaCBmb3Jlc3QgYW5kIGEgCnRyb3BpY2FsIGp1bmdsZSwgb3IgdGhlIGJ1c2ggb2YgQXVzdHJhbGlhIG9yIE5ldyBaZWFsYW5kLiAKCgoxNjIuwqDCoMKgwqDCoMKgwqAKQU5JTUFMUyAKCgoxNjMuwqDCoMKgwqDCoMKgwqAKRm9yIHRob3VzYW5kIG9mIHllYXJzIG1hbiBoYXMgbGl2ZWQgc28gY3J1ZWxseSB0aGF0IGFsbCB3aWxkIGNyZWF0dXJlcyAKZmVhciBhbmQgYXZvaWQgaGltLCBzbyB0aGUgaW5mbHVlbmNlIHVwb24gaGltIG9mIHRoZSBhbmltYWwga2luZ2RvbSBpcyAKcHJhY3RpY2FsbHkgY29uZmluZWQgdG8gdGhhdCBvZiB0aGUgZG9tZXN0aWMgYW5pbWFscy4gSW4gb3VyIHJlbGF0aW9ucyB3aXRoIAp0aGVzZSBvdXIgaW5mbHVlbmNlIG92ZXIgdGhlbSBpcyBuYXR1cmFsbHkgZmFyIG1vcmUgcG90ZW50IHRoYW4gdGhlaXJzIG92ZXIgdXMsIAp5ZXQgdGhpcyBsYXR0ZXIgaXMgYnkgbm8gbWVhbnMgdG8gYmUgaWdub3JlZC4gQSBtYW4gd2hvIGhhcyByZWFsbHkgbWFkZSBmcmllbmRzIAp3aXRoIGFuIGFuaW1hbCBpcyBvZnRlbiBtdWNoIGhlbHBlZCBhbmQgc3RyZW5ndGhlbmVkIGJ5IHRoZSBhZmZlY3Rpb24gbGF2aXNoZWQgCnVwb24gaGltLiBCZWluZyBtb3JlIGFkdmFuY2VkLCBhIG1hbiBpcyBuYXR1cmFsbHkgY2FwYWJsZSBvZiBncmVhdGVyIGxvdmUgdGhhbiAKYW4gYW5pbWFsIGlzOyBidXQgdGhlIGFuaW1hbCcgcyBhZmZlY3Rpb24gaXMgdXN1YWxseSBtb3JlIGNvbmNlbnRyYXRlZCwgYW5kIGhlIAppcyBmYXIgbW9yZSBsaWtlbHkgdG8gdGhyb3cgdGhlIHdob2xlIG9mIGhpcyBlbmVyZ3kgaW50byBpdCB0aGFuIGEgbWFuIGlzLiAKCgoxNjQuwqDCoMKgwqDCoMKgwqAKVGhlIHZlcnkgZmFjdCBvZiB0aGUgbWFuJyBzIGhpZ2hlciBkZXZlbG9wbWVudCBnaXZlcyBoaW0gYSBtdWx0aXBsaWNpdHkgCm9mIGludGVyZXN0cywgYW1vbmcgd2hpY2ggaGlzIGF0dGVudGlvbiBpcyBkaXZpZGVkOyB0aGUgYW5pbWFsIG9mdGVuIHBvdXJzIHRoZSAKZW50aXJlIHN0cmVuZ3RoIG9mIGhpcyBuYXR1cmUgaW50byBvbmUgY2hhbm5lbCwgYW5kIHNvIHByb2R1Y2VzIGEgbW9zdCBwb3dlcmZ1bCAKZWZmZWN0LiBUaGUgbWFuIGhhcyBhIGh1bmRyZWQgb3RoZXIgbWF0dGVycyB0byB0aGluayBhYm91dCwgYW5kIHRoZSBjdXJyZW50IG9mIApoaXMgbG92ZSBjb25zZXF1ZW50bHkgY2Fubm90IGJ1dCBiZSB2YXJpYWJsZTsgd2hlbiB0aGUgZG9nIG9yIHRoZSBjYXQgZGV2ZWxvcHMgYSAKcmVhbGx5IGdyZWF0IGFmZmVjdGlvbiBpdCBmaWxscyB0aGUgd2hvbGUgb2YgaGlzIGxpZmUsIGFuZCBoZSB0aGVyZWZvcmUga2VlcHMgYSAKc3RlYWR5IHN0cmVhbSBvZiBmb3JjZSBhbHdheXMgcGxheWluZyB1cG9uIGl0cyBvYmplY3QtLSBhIGZhY3RvciB3aG9zZSB2YWx1ZSBpcyAKYnkgbm8gbWVhbnMgdG8gYmUgaWdub3JlZC4gCgoKMTY1LsKgwqDCoMKgwqDCoMKgClNpbWlsYXJseSB0aGUgbWFuIHdobyBpcyBzbyB3aWNrZWQgYXMgdG8gcHJvdm9rZSBieSBjcnVlbHR5IHRoZSBoYXRyZWQgCmFuZCBmZWFyIG9mIGRvbWVzdGljIGFuaW1hbHMgYmVjb21lcyBieSBhIHJpZ2h0ZW91cyByZXRyaWJ1dGlvbiB0aGUgY2VudHJlIG9mIApjb252ZXJnaW5nIGZvcmNlcyBvZiBhbnRpcGF0aHk7IGZvciBzdWNoIGNvbmR1Y3QgYXJvdXNlcyBkZWVwIGluZGlnbmF0aW9uIGFtb25nIApuYXR1cmUtc3Bpcml0cyBhbmQgb3RoZXIgYXN0cmFsIGFuZCBldGhlcmljIGVudGl0aWVzLCBhcyB3ZWxsIGFzIGFtb25nIGFsbCAKcmlnaHQtbWluZGVkIG1lbiwgd2hldGhlciBsaXZpbmcgb3IgZGVhZC4gCgoKMTY2LsKgwqDCoMKgwqDCoMKgCkhVTUFOIEJFSU5HUyAKCgoxNjcuwqDCoMKgwqDCoMKgwqAKU2luY2UgaXQgaXMgZW1waGF0aWNhbGx5IHRydWUgdGhhdCBubyBtYW4gY2FuIGFmZm9yZCB0byBiZSBkaXNsaWtlZCBvciAKZmVhcmVkIGJ5IGhpcyBjYXQgb3IgZG9nLCBpdCBpcyBjbGVhciB0aGF0IHRoZSBzYW1lIGNvbnNpZGVyYXRpb24gYXBwbGllcyB3aXRoIApzdGlsbCBncmVhdGVyIGZvcmNlIHRvIHRoZSBodW1hbiBiZWluZ3Mgd2hvIHN1cnJvdW5kIGhpbS4gSXQgaXMgbm90IGVhc3kgdG8gCm92ZXJlc3RpbWF0ZSB0aGUgaW1wb3J0YW5jZSB0byBhIG1hbiBvZiB3aW5uaW5nIHRoZSBraW5kbHkgcmVnYXJkIG9mIHRob3NlIHdpdGggCndob20gaGUgaXMgaW4gY29uc3RhbnQgYXNzb2NpYXRpb24tLSB0byBvdmVycmF0ZSB0aGUgdmFsdWUgdG8gYSBzY2hvb2xtYXN0ZXIgb2YgCnRoZSBhdHRpdHVkZSB0b3dhcmRzIGhpbSBvZiBoaXMgcHVwaWxzLCB0byBhIG1lcmNoYW50IG9mIHRoZSBmZWVsaW5nIG9mIGhpcyAKY2xlcmtzLCB0byBhbiBvZmZpY2VyIG9mIHRoZSBkZXZvdGlvbiBvZiBoaXMgbWVuOyBhbmQgdGhpcyBlbnRpcmVseSBhcGFydCBmcm9tIAp0aGUgb2J2aW91cyBlZmZlY3RzIHByb2R1Y2VkIGluIHRoZSBwaHlzaWNhbCB3b3JsZC4gSWYgYSBtYW4gaG9sZGluZyBhbnkgc3VjaCAKcG9zaXRpb24gYXMgb25lIG9mIHRoZXNlIGlzIGFibGUgdG8gYXJvdXNlIHRoZSBlbnRodXNpYXN0aWMgYWZmZWN0aW9uIG9mIGhpcyAKc3Vib3JkaW5hdGVzLCBoZSBiZWNvbWVzIHRoZSBmb2N1cyB1cG9uIHdoaWNoIG1hbnkgc3RyZWFtcyBvZiBzdWNoIGZvcmNlcyBhcmUgCmNvbnN0YW50bHkgY29udmVyZ2luZy4gTm90IG9ubHkgZG9lcyB0aGlzIGdyZWF0bHkgdXBsaWZ0IGFuZCBzdHJlbmd0aGVuIGhpbSwgYnV0IAppdCBhbHNvIGVuYWJsZXMgaGltLCBpZiBoZSB1bmRlcnN0YW5kcyBzb21ldGhpbmcgb2YgdGhlIHdvcmtpbmcgb2Ygb2NjdWx0IGxhd3MsIAp0byBiZSBvZiBmYXIgZ3JlYXRlciB1c2UgdG8gdGhvc2Ugd2hvIGZlZWwgdGhlIGFmZmVjdGlvbiwgYW5kIHRvIGRvIG11Y2ggbW9yZSAKd2l0aCB0aGVtIHRoYW4gd291bGQgb3RoZXJ3aXNlIGJlIHBvc3NpYmxlLiAKCgoxNjguwqDCoMKgwqDCoMKgwqAKVG8gb2J0YWluIHRoaXMgcmVzdWx0IGl0IGlzIG5vdCBpbiB0aGUgbGVhc3QgbmVjZXNzYXJ5IHRoYXQgdGhleSBzaG91bGQgCmFncmVlIHdpdGggaGltIGluIG9waW5pb247IHdpdGggdGhlIHBhcnRpY3VsYXIgZWZmZWN0IHdpdGggd2hpY2ggd2UgYXJlIGF0IApwcmVzZW50IGNvbmNlcm5lZCB0aGVpciBtZW50YWwgYXR0aXR1ZGUgaGFzIG5vIGNvbm5lY3Rpb24gd2hhdGV2ZXI7IGl0IGlzIGEgCm1hdHRlciBvZiBzdHJvbmcsIGtpbmRseSBmZWVsaW5nLiBJZiB0aGUgZmVlbGluZyBzaG91bGQgdW5mb3J0dW5hdGVseSBiZSBvZiBhbiAKb3Bwb3NpdGUga2luZC0tIGlmIHRoZSBtYW4gaXMgZmVhcmVkIG9yIGRlc3Bpc2VkLS0gY3VycmVudHMgb2YgYW50aXBhdGh5IGFyZSAKcGVycGV0dWFsbHkgZmxvd2luZyB0b3dhcmRzIGhpbSwgd2hpY2ggY2F1c2Ugd2Vha25lc3MgYW5kIGRpc2NvcmQgaW4gdGhlIAp2aWJyYXRpb25zIG9mIGhpcyBoaWdoZXIgdmVoaWNsZXMsIGFuZCBhbHNvIGN1dCBoaW0gb2ZmIGZyb20gdGhlIHBvc3NpYmlsaXR5IG9mIApkb2luZyBzYXRpc2ZhY3RvcnkgYW5kIGZydWl0ZnVsIHdvcmsgd2l0aCB0aG9zZSB1bmRlciBoaXMgY2hhcmdlLiAKCgoxNjkuwqDCoMKgwqDCoMKgwqAKSXQgaXMgbm90IG9ubHkgdGhlIGZvcmNlIG9mIHRoZSBmZWVsaW5nIHNlbnQgb3V0IGJ5IHRoZSBwZXJzb247IGxpa2UgCmF0dHJhY3RzIGxpa2UgaW4gdGhlIGFzdHJhbCB3b3JsZCBhcyB3ZWxsIGFzIHRoZSBwaHlzaWNhbC4gVGhlcmUgYXJlIGFsd2F5cyAKbWFzc2VzIG9mIHZhZ3VlIHRob3VnaHQgZmxvYXRpbmcgYWJvdXQgaW4gdGhlIGF0bW9zcGhlcmUsIHNvbWUgb2YgdGhlbSBnb29kIGFuZCAKc29tZSBldmlsLCBidXQgYWxsIGFsaWtlIHJlYWR5IHRvIHJlaW5mb3JjZSBhbnkgZGVjaWRlZCB0aG91Z2h0IG9mIHRoZWlyIG93biAKdHlwZS4gQWxzbyB0aGVyZSBhcmUgbmF0dXJlLXNwaXJpdHMgb2YgbG93IG9yZGVyLCB3aGljaCBlbmpveSB0aGUgY29hcnNlIAp2aWJyYXRpb25zIG9mIGFuZ2VyIGFuZCBoYXRyZWQsIGFuZCBhcmUgdGhlcmVmb3JlIHZlcnkgd2lsbGluZyB0byB0aHJvdyAKdGhlbXNlbHZlcyBpbnRvIGFueSBjdXJyZW50IG9mIHN1Y2ggbmF0dXJlLiBCeSBkb2luZyBzbyB0aGV5IGludGVuc2lmeSB0aGUgCnVuZHVsYXRpb25zLCBhbmQgYWRkIGZyZXNoIGxpZmUgdG8gdGhlbS4gQWxsIHRoaXMgdGVuZHMgdG8gc3RyZW5ndGhlbiB0aGUgZWZmZWN0IApwcm9kdWNlZCBieSB0aGUgY29udmVyZ2luZyBzdHJlYW1zIG9mIHVuZmF2b3VyYWJsZSB0aG91Z2h0IGFuZCBmZWVsaW5nLiAKCgoxNzAuwqDCoMKgwqDCoMKgwqAKSXQgaGFzIGJlZW4gc2FpZCB0aGF0IGEgbWFuIGlzIGtub3duIGJ5IHRoZSBjb21wYW55IGhlIGtlZXBzLiBJdCBpcyBhbHNvIAp0byBhIGxhcmdlIGV4dGVudCB0cnVlIHRoYXQgaGUgaXMgbWFkZSBieSBpdCwgZm9yIHRob3NlIHdpdGggd2hvbSBoZSAKY29uc3RhbnRseSBhc3NvY2lhdGVzIGFyZSBhbGwgdGhlIHdoaWxlIHVuY29uc2Npb3VzbHkgaW5mbHVlbmNpbmcgaGltIGFuZCAKYnJpbmdpbmcgaGltIGJ5IGRlZ3JlZXMgbW9yZSBhbmQgbW9yZSBpbnRvIGhhcm1vbnkgd2l0aCBzdWNoIHVuZHVsYXRpb25zIGFzIHRoZXkgCnJhZGlhdGUuIEhlIHdobyBpcyBtdWNoIGluIHRoZSBwcmVzZW5jZSBvZiBhIGxhcmdlLW1pbmRlZCBhbmQgdW53b3JsZGx5IG1hbiBoYXMgCmEgZmluZSBvcHBvcnR1bml0eSBvZiBoaW1zZWxmIGJlY29taW5nIGxhcmdlLW1pbmRlZCBhbmQgdW53b3JsZGx5LCBmb3IgYSBzdGVhZHkgCnRob3VnaCBpbXBlcmNlcHRpYmxlIHByZXNzdXJlIGluIHRoYXQgZGlyZWN0aW9uIGlzIHBlcnBldHVhbGx5IGJlaW5nIGV4ZXJ0ZWQgCnVwb24gaGltLCBzbyB0aGF0IGl0IGlzIGVhc2llciBmb3IgaGltIHRvIGdyb3cgaW4gdGhhdCB3YXkgdGhhbiBpbiBhbnkgb3RoZXIuIApGb3IgdGhlIHNhbWUgcmVhc29uIGEgbWFuIHdobyBzcGVuZHMgaGlzIHRpbWUgbG9hZmluZyBpbiBhIHB1YmxpYy1ob3VzZSB3aXRoIHRoZSAKaWRsZSBhbmQgdmFyaW91cyBpcyBleGNlZWRpbmdseSBsaWtlbHkgdG8gZW5kIGJ5IGJlY29taW5nIGlkbGUgYW5kIHZpY2lvdXMgCmhpbXNlbGYuIFRoZSBzdHVkeSBvZiB0aGUgaGlkZGVuIHNpZGUgb2YgdGhpbmdzIGVtcGhhdGljYWxseSBlbmRvcnNlcyB0aGUgb2xkIApwcm92ZXJiIHRoYXQgZXZpbCBjb21tdW5pY2F0aW9ucyBjb3JydXB0IGdvb2QgbWFubmVycy4gCgoKMTcxLsKgwqDCoMKgwqDCoMKgClRoaXMgZmFjdCBvZiB0aGUgZW5vcm1vdXMgaW5mbHVlbmNlIG9mIGNsb3NlIGFzc29jaWF0aW9uIHdpdGggYSBtb3JlIAphZHZhbmNlZCBwZXJzb25hbGl0eSBpcyB3ZWxsIHVuZGVyc3Rvb2QgaW4gdGhlIEVhc3QsIHdoZXJlIGl0IGlzIHJlY29nbmlzZWQgdGhhdCAKdGhlIG1vc3QgaW1wb3J0YW50IGFuZCBlZmZlY3RpdmUgcGFydCBvZiB0aGUgdHJhaW5pbmcgb2YgYSBkaXNjaXBsZSBpcyB0aGF0IGhlIApzaGFsbCBsaXZlIGNvbnN0YW50bHkgaW4gdGhlIHByZXNlbmNlIG9mIGhpcyB0ZWFjaGVyIGFuZCBiYXRoZSBpbiBoaXMgYXVyYS4gVGhlIAp2YXJpb3VzIHZlaGljbGVzIG9mIHRoZSB0ZWFjaGVyIGFyZSBhbGwgdmlicmF0aW5nIHdpdGggYSBzdGVhZHkgYW5kIHBvd2VyZnVsIApzd2luZyBhdCByYXRlcyBib3RoIGhpZ2hlciBhbmQgbW9yZSByZWd1bGFyIHRoYW4gYW55IHdoaWNoIHRoZSBwdXBpbCBjYW4geWV0IAptYWludGFpbiwgdGhvdWdoIGhlIG1heSBzb21ldGltZXMgcmVhY2ggdGhlbSBmb3IgYSBmZXcgbW9tZW50czsgYnV0IHRoZSBjb25zdGFudCAKcHJlc3N1cmUgb2YgdGhlIHN0cm9uZ2VyIHRob3VnaHQtd2F2ZXMgb2YgdGhlIHRlYWNoZXIgZ3JhZHVhbGx5IHJhaXNlcyB0aG9zZSBvZiAKdGhlIHB1cGlsIGludG8gdGhlIHNhbWUga2V5LiBBIHBlcnNvbiB3aG8gaGFzIGFzIHlldCBidXQgbGl0dGxlIG11c2ljYWwgZWFyIApmaW5kcyBpdCBkaWZmaWN1bHQgdG8gc2luZyBjb3JyZWN0IGludGVydmFscyBhbG9uZSwgYnV0IGlmIGhlIGpvaW5zIHdpdGggYW5vdGhlciAKc3Ryb25nZXIgdm9pY2Ugd2hpY2ggaXMgYWxyZWFkeSBwZXJmZWN0bHkgdHJhaW5lZCwgaGlzIHRhc2sgYmVjb21lcyBlYXNpZXItLSAKd2hpY2ggbWF5IHNlcnZlIGFzIGEga2luZCBvZiByb3VnaCBhbmFsb2d5LiAKCgoxNzIuwqDCoMKgwqDCoMKgwqAKVGhlIGdyZWF0IHBvaW50IGlzIHRoYXQgdGhlIGRvbWluYW50IG5vdGUgb2YgdGhlIHRlYWNoZXIgaXMgYWx3YXlzIApzb3VuZGluZywgc28gdGhhdCBpdHMgYWN0aW9uIGlzIGFmZmVjdGluZyB0aGUgcHVwaWwgbmlnaHQgYW5kIGRheSB3aXRob3V0IG5lZWQgCm9mIGFueSBzcGVjaWFsIHRob3VnaHQgb24gdGhlIHBhcnQgb2YgZWl0aGVyIG9mIHRoZW0uIEdyb3d0aCBhbmQgY2hhbmdlIG11c3Qgb2YgCmNvdXJzZSBiZSBjZWFzZWxlc3NseSB0YWtpbmcgcGxhY2UgaW4gdGhlIHZlaGljbGVzIG9mIHRoZSBwdXBpbCwgYXMgaW4gdGhvc2Ugb2YgCmFsbCBvdGhlciBtZW47IGJ1dCB0aGUgcG93ZXJmdWwgdW5kdWxhdGlvbnMgZW1hbmF0aW5nIGZyb20gdGhlIHRlYWNoZXIgcmVuZGVyIGl0IAplYXN5IGZvciB0aGlzIGdyb3d0aCB0byB0YWtlIHBsYWNlIGluIHRoZSByaWdodCBkaXJlY3Rpb24sIGFuZCBleGNlZWRpbmdseSAKZGlmZmljdWx0IGZvciBpdCB0byBnbyBhbnkgb3RoZXIgd2F5LCBzb21ld2hhdCBhcyB0aGUgc3BsaW50cyB3aGljaCBzdXJyb3VuZCBhIApicm9rZW4gbGltYiBlbnN1cmUgdGhhdCBpdHMgZ3Jvd3RoIHNoYWxsIGJlIG9ubHkgaW4gdGhlIHJpZ2h0IGxpbmUsIHNvIGFzIHRvIAphdm9pZCBkaXN0b3J0aW9uLiAKCgoxNzMuwqDCoMKgwqDCoMKgwqAKTm8gb3JkaW5hcnkgbWFuLCBhY3RpbmcgYXV0b21hdGljYWxseSBhbmQgd2l0aG91dCBpbnRlbnRpb24sIHdpbGwgYmUgYWJsZSAKdG8gZXhlcmNpc2UgZXZlbiBhIGh1bmRyZWR0aCBwYXJ0IG9mIHRoZSBjYXJlZnVsbHktZGlyZWN0ZWQgaW5mbHVlbmNlIG9mIGEgCnNwaXJpdHVhbCB0ZWFjaGVyOyBidXQgbnVtYmVycyBtYXkgdG8gc29tZSBleHRlbnQgY29tcGVuc2F0ZSBmb3IgbGFjayBvZiAKaW5kaXZpZHVhbCBwb3dlciwgc28gdGhhdCB0aGUgY2Vhc2VsZXNzIHRob3VnaCB1bm5vdGljZWQgcHJlc3N1cmUgZXhlcmNpc2VkIHVwb24gCnVzIGJ5IHRoZSBvcGluaW9ucyBhbmQgZmVlbGluZ3Mgb2Ygb3VyIGFzc29jaWF0ZXMgbGVhZHMgdXMgZnJlcXVlbnRseSB0byBhYnNvcmIgCndpdGhvdXQga25vd2luZyBpdCBtYW55IG9mIHRoZWlyIHByZWp1ZGljZXMuIEl0IGlzIGRpc3RpbmN0bHkgdW5kZXNpcmFibGUgdGhhdCBhIAptYW4gc2hvdWxkIHJlbWFpbiBhbHdheXMgYW1vbmcgb25lIHNldCBvZiBwZW9wbGUgYW5kIGhlYXIgb25seSBvbmUgc2V0IG9mIHZpZXdzLiAKSXQgaXMgZW1pbmVudGx5IG5lY2Vzc2FyeSB0aGF0IGhlIHNob3VsZCBrbm93IHNvbWV0aGluZyBvZiBvdGhlciBzZXRzLCBmb3Igb25seSAKaW4gdGhhdCB3YXkgY2FuIGhlIGxlYXJuIHRvIHNlZSBnb29kIGluIGFsbDsgb25seSB0aG9yb3VnaGx5IHVuZGVyc3RhbmRpbmcgYm90aCAKc2lkZXMgb2YgYW55IGNhc2UgY2FuIGhlIGZvcm0gYW4gb3BpbmlvbiB0aGF0IGhhcyBhbnkgcmlnaHQgdG8gYmUgY2FsbGVkIGEgcmVhbCAKanVkZ21lbnQuIFRoZSBwcmVqdWRpY2VkIHBlcnNvbiBpcyBhbHdheXMgYW5kIG5lY2Vzc2FyaWx5IGFuIGlnbm9yYW50IHBlcnNvbjsgCmFuZCB0aGUgb25seSB3YXkgaW4gd2hpY2ggaGlzIGlnbm9yYW5jZSBjYW4gYmUgZGlzcGVsbGVkIGlzIGJ5IGdldHRpbmcgb3V0c2lkZSAKaGlzIG93biBuYXJyb3cgbGl0dGxlIGNpcmNsZSwgYW5kIGxlYXJuaW5nIHRvIGxvb2sgYXQgdGhpbmdzIGZvciBoaW1zZWxmIGFuZCBzZWUgCndoYXQgdGhleSByZWFsbHkgYXJlLS0gbm90IHdoYXQgdGhvc2Ugd2hvIGtub3cgbm90aGluZyBhYm91dCB0aGVtIHN1cHBvc2UgdGhlbSAKdG8gYmUuIAoKCjE3NC7CoMKgwqDCoMKgwqDCoApUUkFWRUwgCgoKMTc1LsKgwqDCoMKgwqDCoMKgClRoZSBleHRlbnQgdG8gd2hpY2ggb3VyIGh1bWFuIHN1cnJvdW5kaW5ncyBpbmZsdWVuY2UgdXMgaXMgb25seSByZWFsaXNlZCAKd2hlbiB3ZSBjaGFuZ2UgdGhlbSBmb3IgYXdoaWxlLCBhbmQgdGhlIG1vc3QgZWZmZWN0aXZlIG1ldGhvZCBvZiBkb2luZyB0aGlzIGlzIAp0byB0cmF2ZWwgaW4gYSBmb3JlaWduIGNvdW50cnkuIEJ1dCB0cnVlIHRyYXZlbCBpcyBub3QgdG8gcnVzaCBmcm9tIG9uZSBnaWdhbnRpYyAKY2FyYXZhbnNlcmFpIHRvIGFub3RoZXIsIGNvbnNvcnRpbmcgYWxsIHRoZSB0aW1lIHdpdGggb25lJyBzIG93biBjb3VudHJ5bWVuLCBhbmQgCmdydW1ibGluZyBhdCBldmVyeSBjdXN0b20gd2hpY2ggZGlmZmVycyBmcm9tIHRob3NlIG9mIG91ciBwYXJ0aWN1bGFyIExpdHRsZSAKUGVkbGluZ3Rvbi4gSXQgaXMgcmF0aGVyIHRvIGxpdmUgZm9yIGEgdGltZSBxdWlldGx5IGluIHNvbWUgZm9yZWlnbiBsYW5kLCB0cnlpbmcgCnRvIGdldCByZWFsbHkgdG8ga25vdyBpdHMgcGVvcGxlIGFuZCB0byB1bmRlcnN0YW5kIHRoZW07IHRvIHN0dWR5IGEgY3VzdG9tIGFuZCAKc2VlIHdoeSBpdCBoYXMgYXJpc2VuLCBhbmQgd2hhdCBnb29kIHRoZXJlIGlzIGluIGl0LCBpbnN0ZWFkIG9mIGNvbmRlbW5pbmcgaXQgCm9mZi1oYW5kIGJlY2F1c2UgaXQgaXMgbm90IG91ciBvd24uIFRoZSBtYW4gd2hvIGRvZXMgdGhpcyB3aWxsIHNvb24gY29tZSB0byAKcmVjb2duaXNlIHRoZSBjaGFyYWN0ZXJpc3RpYyB0cmFpdHMgb2YgdGhlIHZhcmlvdXMgcmFjZXMgLS0gdG8gY29tcHJlaGVuZCBzdWNoIApmdW5kYW1lbnRhbCBkaXZlcnNpdGllcyBhcyB0aG9zZSBiZXR3ZWVuIHRoZSBFbmdsaXNoIGFuZCB0aGUgSXJpc2gsIHRoZSBIaW5kdSAKYW5kIHRoZSBBbWVyaWNhbiwgdGhlIEJyZXRvbiBhbmQgdGhlIFNpY2lsaWFuLCBhbmQgeWV0IHRvIHJlYWxpc2UgdGhhdCB0aGV5IGFyZSAKdG8gYmUgbG9va2VkIHVwb24gbm90IGFzIG9uZSBiZXR0ZXIgdGhhbiBhbm90aGVyLCBidXQgYXMgdGhlIGRpZmZlcmVudCAKY29sb3VycyB0aGF0IGdvIHRvIG1ha2UgdXAgdGhlIHJhaW5ib3csIHRoZSBkaWZmZXJlbnQgbW92ZW1lbnRzIHRoYXQgYXJlIGFsbCAKbmVjZXNzYXJ5LCBhcyBwYXJ0cyBvZiB0aGUgZ3JlYXQgb3JhdG9yaW8gb2YgbGlmZS4gCgoKMTc2LsKgwqDCoMKgwqDCoMKgCkVhY2ggaGFzIGl0cyBwYXJ0IHRvIHBsYXkgaW4gYWZmb3JkaW5nIG9wcG9ydHVuaXR5IGZvciB0aGUgZXZvbHV0aW9uIG9mIAplZ29zIHdobyBuZWVkIGp1c3QgaXRzIGluZmx1ZW5jZSwgd2hvIGFyZSBsYWNraW5nIGluIGp1c3QgaXRzIGNoYXJhY3RlcmlzdGljcy4gCkVhY2ggcmFjZSBoYXMgYmVoaW5kIGl0IGEgbWlnaHR5IGFuZ2VsLCB0aGUgU3Bpcml0IG9mIHRoZSBSYWNlLCB3aG8gdW5kZXIgdGhlIApkaXJlY3Rpb24gb2YgdGhlIE1hbnUgcHJlc2VydmVzIGl0cyBzcGVjaWFsIHF1YWxpdGllcyBhbmQgZ3VpZGVzIGl0IGFsb25nIHRoZSAKbGluZSBkZXN0aW5lZCBmb3IgaXQuIEEgbmV3IHJhY2UgaXMgYm9ybiB3aGVuIGluIHRoZSBzY2hlbWUgb2YgZXZvbHV0aW9uIGEgbmV3IAp0eXBlIGEgdGVtcGVyYW1lbnQgaXMgbmVlZGVkOyBhIHJhY2UgZGllcyBvdXQgd2hlbiBhbGwgdGhlIGVnb3Mgd2hvIGNhbiBiZSAKYmVuZWZpdGVkIGJ5IGl0IGhhdmUgcGFzc2VkIHRocm91Z2ggaXQuIFRoZSBpbmZsdWVuY2Ugb2YgdGhlIFNwaXJpdCBvZiBhIFJhY2UgCnRob3JvdWdobHkgcGVybWVhdGVzIHRoZSBjb3VudHJ5IG9yIGRpc3RyaWN0IG92ZXIgd2hpY2ggaGlzIHN1cGVydmlzaW9uIGV4dGVuZHMsIAphbmQgaXMgbmF0dXJhbGx5IGEgZmFjdG9yIG9mIHRoZSBncmVhdGVzdCBpbXBvcnRhbmNlIHRvIGFueSB2aXNpdG9yIHdobyBpcyBpbiAKdGhlIGxlYXN0IHNlbnNpdGl2ZS4gCgoKMTc3LsKgwqDCoMKgwqDCoMKgClRoZSBvcmRpbmFyeSB0b3VyaXN0IGlzIHRvbyBvZnRlbiBpbXByaXNvbmVkIGluIHRoZSB0cmlwbGUgYXJtb3VyIG9mIAphZ2dyZXNzaXZlIHJhY2UtcHJlanVkaWNlOyBoZSBpcyBzbyBmdWxsIG9mIGNvbmNlaXQgb3ZlciB0aGUgc3VwcG9zZWQgCmV4Y2VsbGVuY2llcyBvZiBoaXMgb3duIG5hdGlvbiB0aGF0IGhlIGlzIGluY2FwYWJsZSBvZiBzZWVpbmcgZ29vZCBpbiBhbnkgb3RoZXIuIApUaGUgd2lzZXIgdHJhdmVsbGVyLCB3aG8gaXMgd2lsbGluZyB0byBvcGVuIGhpcyBoZWFydCB0byB0aGUgYWN0aW9uIG9mIGhpZ2hlciAKZm9yY2VzLCBtYXkgcmVjZWl2ZSBmcm9tIHRoaXMgc291cmNlIG11Y2ggdGhhdCBpcyB2YWx1YWJsZSwgYm90aCBvZiBpbnN0cnVjdGlvbiAKYW5kIGV4cGVyaWVuY2UuIEJ1dCBpbiBvcmRlciB0byBkbyB0aGF0LCBoZSBtdXN0IGJlZ2luIGJ5IHB1dHRpbmcgaGltc2VsZiBpbiB0aGUgCnJpZ2h0IGF0dGl0dWRlOyBoZSBtdXN0IGJlIHJlYWR5IHRvIGxpc3RlbiByYXRoZXIgdGhlbiB0byB0YWxrLCB0byBsZWFybiByYXRoZXIgCnRoYW4gdG8gYm9hc3QsIHRvIGFwcHJlY2lhdGUgcmF0aGVyIHRoYW4gdG8gY3JpdGljaXNlLCB0byB0cnkgdG8gdW5kZXJzdGFuZCAKcmF0aGVyIHRoYW4gcmFzaGx5IHRvIGNvbmRlbW4uIAoKCjE3OC7CoMKgwqDCoMKgwqDCoApUbyBhY2hpZXZlIHN1Y2ggYSByZXN1bHQgaXMgdGhlIHRydWUgb2JqZWN0IG9mIHRyYXZlbCwgYW5kIHdlIGhhdmUgYSBmYXIgCmJldHRlciBvcHBvcnR1bml0eSBmb3IgdGhpcyB0aGFuIHdhcyBhZmZvcmRlZCB0byBvdXIgZm9yZWZhdGhlcnMuIE1ldGhvZHMgb2YgCmNvbW11bmljYXRpb24gYXJlIHNvIG11Y2ggaW1wcm92ZWQgdGhhdCBpdCBpcyBub3cgcG9zc2libGUgZm9yIGFsbW9zdCBhbnlvbmUgdG8gCmFjaGlldmUgcXVpY2tseSBhbmQgY2hlYXBseSBqb3VybmV5cyB0aGF0IHdvdWxkIGhhdmUgYmVlbiBlbnRpcmVseSBpbXBvc3NpYmxlIGEgCmNlbnR1cnkgYWdvLCBleGNlcHQgZm9yIHRoZSByaWNoIGFuZCBsZWlzdXJlZCBjbGFzcy4gQWxvbmcgd2l0aCB0aGVzZSAKcG9zc2liaWxpdGllcyBvZiBpbnRlcmNvbW11bmljYXRpb24gaGFzIGNvbWUgdGhlIHdpZGUgZGlzc2VtaW5hdGlvbiBvZiBmb3JlaWduIApuZXdzIGJ5IG1lYW5zIG9mIHRoZSB0ZWxlZ3JhcGggYW5kIHRoZSBuZXdzcGFwZXIgcHJlc3MsIHNvIHRoYXQgZXZlbiB0aG9zZSB3aG8gCmRvIG5vdCBhY3R1YWxseSBsZWF2ZSB0aGVpciBvd24gY291bnRyeSBzdGlsbCBrbm93IG11Y2ggbW9yZSBhYm91dCBvdGhlcnMgdGhhbiAKd2FzIGV2ZXIgcG9zc2libGUgYmVmb3JlLiBXaXRob3V0IGFsbCB0aGVzZSBmYWNpbGl0aWVzIHRoZXJlIG5ldmVyIGNvdWxkIGhhdmUgCmJlZW4gYSBUaGVvc29waGljYWwgU29jaWV0eSwgb3IgYXQgbGVhc3QgaXQgY291bGQgbm90IGhhdmUgaGFkIGl0cyBwcmVzZW50IApjaGFyYWN0ZXIsIG5vciBjb3VsZCBpdCBoYXZlIHJlYWNoZWQgaXRzIHByZXNlbnQgbGV2ZWwgb2YgZWZmZWN0aXZlbmVzcy4gCgoKMTc5LsKgwqDCoMKgwqDCoMKgClRoZSBmaXJzdCBvYmplY3Qgb2YgdGhlIFRoZW9zb3BoaWNhbCBTb2NpZXR5IGlzIHRoZSBwcm9tb3Rpb24gb2YgCnVuaXZlcnNhbCBicm90aGVyaG9vZCwgYW5kIG5vdGhpbmcgaGVscHMgc28gbXVjaCB0byBpbmR1Y2UgYnJvdGhlcmx5IGZlZWxpbmcgCmJldHdlZW4gbmF0aW9ucyBhcyBmdWxsIGFuZCBjb25zdGFudCBpbnRlcmNvdXJzZSB3aXRoIG9uZSBhbm90aGVyLiBXaGVuIHBlb3BsZSAKa25vdyBvbmUgYW5vdGhlciBvbmx5IGJ5IGhlYXJzYXksIGFsbCBzb3J0cyBvZiBhYnN1cmQgcHJlanVkaWNlcyBncm93IHVwLCBidXQgCndoZW4gdGhleSBjb21lIHRvIGtub3cgb25lIGFub3RoZXIgaW50aW1hdGVseSwgZWFjaCBmaW5kcyB0aGF0IHRoZSBvdGhlciBpcyAKYWZ0ZXIgYWxsIGEgaHVtYW4gYmVpbmcgbXVjaCBsaWtlIGhpbXNlbGYsIHdpdGggdGhlIHNhbWUgaW50ZXJlc3RzIGFuZCBvYmplY3RzLCAKdGhlIHNhbWUgam95cyBhbmQgc29ycm93cy4gCgoKMTgwLsKgwqDCoMKgwqDCoMKgCkluIHRoZSBvbGQgZGF5cyBlYWNoIG5hdGlvbiBsaXZlZCB0byBhIGxhcmdlIGV4dGVudCBpbiBhIGNvbmRpdGlvbiBvZiAKc2VsZmlzaCBpc29sYXRpb24sIGFuZCBpZiB0cm91YmxlIG9mIHNvbWUgc29ydCBmZWxsIHVwb24gb25lLCBpdCBoYWQgdXN1YWxseSBubyAKcmVzb3VyY2VzIGJ1dCBpdHMgb3duIHVwb24gd2hpY2ggaXQgY291bGQgZGVwZW5kLiBOb3cgdGhlIHdob2xlIHdvcmxkIGlzIHNvIApjbG9zZWx5IGRyYXduIHRvZ2V0aGVyIHRoYXQgaWYgdGhlcmUgaXMgYSBmYW1pbmUgaW4gSW5kaWEgaGVscCBpcyBzZW50IGZyb20gCkFtZXJpY2E7IGlmIGFuIGVhcnRocXVha2UgZGV2YXN0YXRlcyBvbmUgb2YgdGhlIGNvdW50cmllcyBvZiBFdXJvcGUsIApzdWJzY3JpcHRpb25zIGZvciB0aGUgc3VmZmVyZXJzIHBvdXIgaW4gYXQgb25jZSBmcm9tIGFsbCB0aGUgb3RoZXJzLiBIb3dldmVyIGZhciAKYXdheSBhcyB5ZXQgbWF5IGJlIHRoZSBwZXJmZWN0IHJlYWxpc2F0aW9uIG9mIHVuaXZlcnNhbCBicm90aGVyaG9vZCwgaXQgaXMgY2xlYXIgCnRoYXQgd2UgYXJlIGF0IGxlYXN0IGRyYXdpbmcgbmVhcmVyIHRvIGl0OyB3ZSBoYXZlIG5vdCB5ZXQgbGVhcm50IGVudGlyZWx5IHRvIAp0cnVzdCBvbmUgYW5vdGhlciwgYnV0IGF0IGxlYXN0IHdlIGFyZSByZWFkeSB0byBoZWxwIG9uZSBhbm90aGVyLCBhbmQgdGhhdCBpcyAKYWxyZWFkeSBhIGxvbmcgc3RlcCB1cG9uIHRoZSByb2FkcyB0b3dhcmRzIGJlY29taW5nIHJlYWxseSBvbmUgZmFtaWx5LiAKCgoxODEuwqDCoMKgwqDCoMKgwqAKV2Uga25vdyBob3cgb2Z0ZW4gdHJhdmVsIGlzIHJlY29tbWVuZGVkIGFzIGEgY3VyZSBmb3IgbWFueSBwaHlzaWNhbCBpbGxzLCAKZXNwZWNpYWxseSBmb3IgdGhvc2Ugd2hpY2ggbWFuaWZlc3QgdGhlbXNlbHZlcyB0aHJvdWdoIHRoZSB2YXJpb3VzIGZvcm1zIG9mIApuZXJ2b3VzIGRlcmFuZ2VtZW50LiBNb3N0IG9mIHVzIGZpbmQgaXQgdG8gYmUgZmF0aWd1aW5nLCB5ZXQgYWxzbyB1bmRlbmlhYmx5IApleGhpbGFyYXRpbmcsIHRob3VnaCB3ZSBkbyBub3QgYWx3YXlzIHJlYWxpc2UgdGhhdCB0aGlzIGlzIG5vdCBvbmx5IGJlY2F1c2Ugb2YgCnRoZSBjaGFuZ2Ugb2YgYWlyIGFuZCBvZiB0aGUgb3JkaW5hcnkgcGh5c2ljYWwgaW1wcmVzc2lvbnMsIGJ1dCBhbHNvIGJlY2F1c2Ugb2YgCnRoZSBjaGFuZ2Ugb2YgdGhlIGV0aGVyaWMgYW5kIGFzdHJhbCBpbmZsdWVuY2VzIHdoaWNoIGFyZSBjb25uZWN0ZWQgd2l0aCBlYWNoIApwbGFjZSBhbmQgZGlzdHJpY3QuIAoKCjE4Mi7CoMKgwqDCoMKgwqDCoApPY2VhbiwgbW91bnRhaW4sIGZvcmVzdCBvciB3YXRlcmZhbGwtLSBlYWNoIGhhcyBpdHMgb3duIHNwZWNpYWwgdHlwZSBvZiAKbGlmZSwgYXN0cmFsIGFuZCBldGhlcmljIGFzIHdlbGwgYXMgdmlzaWJsZTsgYW5kLCB0aGVyZWZvcmUsIGl0cyBvd24gc3BlY2lhbCBzZXQgCm9mIGltcHJlc3Npb25zIGFuZCBpbmZsdWVuY2VzLiBNYW55IG9mIHRoZXNlIHVuc2VlbiBlbnRpdGllcyBhcmUgcG91cmluZyBvdXQgCnZpdGFsaXR5LCBhbmQgaW4gYW55IGNhc2UsIHRoZSB2aWJyYXRpb25zIHdoaWNoIHRoZXkgcmFkaWF0ZSBhd2FrZW4gdW5hY2N1c3RvbWVkIApwb3J0aW9ucyBvZiBvdXIgZXRoZXJpYyBkb3VibGUsIGFuZCBvZiBvdXIgYXN0cmFsIGFuZCBtZW50YWwgYm9kaWVzLCBhbmQgdGhlIAplZmZlY3QgaXMgbGlrZSB0aGUgZXhlcmNpc2Ugb2YgbXVzY2xlcyB3aGljaCBhcmUgbm90IG9yZGluYXJpbHkgY2FsbGVkIGludG8gCmFjdGl2aXR5LS0gc29tZXdoYXQgdGlyaW5nIGF0IHRoZSB0aW1lLCB5ZXQgZGlzdGluY3RseSBoZWFsdGh5IGFuZCBkZXNpcmFibGUgaW4gCnRoZSBsb25nIHJ1bi4gCgoKMTgzLsKgwqDCoMKgwqDCoMKgClRoZSB0b3duLWR3ZWxsZXIgaXMgYWNjdXN0b21lZCB0byBoaXMgc3Vycm91bmRpbmdzLCBhbmQgdXN1YWxseSBkb2VzIG5vdCAKcmVhbGlzZSB0aGUgaG9ycm9yIG9mIHRoZW0gdW50aWwgaGUgbGVhdmVzIHRoZW0gZm9yIGEgdGltZS4gVG8gZHdlbGwgCmJlc2lkZSBhIGJ1c3kgbWFpbiBzdHJlZXQgaXMgZnJvbSB0aGUgYXN0cmFsIHBvaW50IG9mIHZpZXcgbGlrZSBsaXZpbmcgb24gdGhlIApicmluayBvZiBhbiBvcGVuIHNld2VyLS0gYSByaXZlciBvZiBmZXRpZCBtdWQgd2hpY2ggaXMgYWx3YXlzIHRocm93aW5nIHVwIApzcGxhc2hlcyBhbmQgbm9pc29tZSBvZG91cnMgYXMgaXQgcm9sbHMgYWxvbmcuIE5vIG1hbiwgaG93ZXZlciB1bmltcHJlc3Npb25hYmxlLCAKY2FuIGVuZHVyZSB0aGlzIGluZGVmaW5pdGVseSB3aXRob3V0IGRldGVyaW9yYXRpb24sIGFuZCBhbiBvY2Nhc2lvbmFsIGNoYW5nZSAKaW50byB0aGUgY291bnRyeSBpcyBhIG5lY2Vzc2l0eSBvbiB0aGUgZ3JvdW5kIG9mIG1vcmFsIGFzIHdlbGwgYXMgcGh5c2ljYWwgCmhlYWx0aC4gSW4gdHJhdmVsbGluZyBmcm9tIHRoZSB0b3duIGludG8gdGhlIGNvdW50cnksIHRvbywgd2UgbGVhdmUgYmVoaW5kIHVzIHRvIAphIGdyZWF0IGV4dGVudCB0aGUgc3Rvcm15IHNlYSBvZiB3YXJyaW5nIGh1bWFuIHBhc3Npb24gYW5kIGxhYm91ciwgYW5kIHN1Y2ggCmh1bWFuIHRob3VnaHRzIGFzIHN0aWxsIHJlbWFpbiB0byBhY3QgdXBvbiB1cyBhcmUgdXN1YWxseSBvZiB0aGUgbGVzcyBzZWxmaXNoIAphbmQgbW9yZSBlbGV2YXRlZCBraW5kLiAKCgoxODQuwqDCoMKgwqDCoMKgwqAKSW4gdGhlIHByZXNlbmNlIG9mIG9uZSBvZiBuYXR1cmUnIHMgZ3JlYXQgd29uZGVycywgc3VjaCBhcyB0aGUgRmFsbHMgb2YgCk5pYWdhcmEsIGFsbW9zdCBldmVyeW9uZSBpcyBmb3IgdGhlIHRpbWUgZHJhd24gb3V0IG9mIGhpbXNlbGYsIGFuZCBvdXQgb2YgdGhlIApwZXR0eSByb3VuZCBvZiBkYWlseSBjYXJlIGFuZCBzZWxmaXNoIGRlc2lyZSwgc28gdGhhdCBoaXMgdGhvdWdodCBpcyBub2JsZXIgYW5kIApicm9hZGVyLCBhbmQgdGhlIHRob3VnaHQtZm9ybXMgd2hpY2ggaGUgbGVhdmVzIGJlaGluZCBoaW0gYXJlIGNvcnJlc3BvbmRpbmdseSAKbGVzcyBkaXN0dXJiaW5nIGFuZCBtb3JlIGhlbHBmdWwuIFRoZXNlIGNvbnNpZGVyYXRpb25zIG9uY2UgbW9yZSBtYWtlIGl0IGV2aWRlbnQgCnRoYXQgaW4gb3JkZXIgdG8gb2J0YWluIHRoZSBmdWxsIGJlbmVmaXQgb2YgdHJhdmVsIGEgbWFuIG11c3QgcGF5IGF0dGVudGlvbiB0byAKbmF0dXJlIGFuZCBhbGxvdyBpdCB0byBhY3QgdXBvbiBoaW0uIElmIGhlIGlzIHdyYXBwZWQgdXAgYWxsIHRoZSB3aGlsZSBpbiAKc2VsZmlzaCBhbmQgZ2xvb215IHRob3VnaHRzLCBjcnVzaGVkIGJ5IGZpbmFuY2lhbCB0cm91YmxlLCBvciBicm9vZGluZyBvdmVyIGhpcyAKb3duIHNpY2tuZXNzIGFuZCB3ZWFrbmVzcywgbGl0dGxlIGJlbmVmaXQgY2FuIGJlIGRlcml2ZWQgZnJvbSB0aGUgaGVhbGluZyAKaW5mbHVlbmNlcy4gCgoKMTg1LsKgwqDCoMKgwqDCoMKgCkFub3RoZXIgcG9pbnQgaXMgdGhhdCBjZXJ0YWluIHBsYWNlcyBhcmUgcGVybWVhdGVkIGJ5IGNlcnRhaW4gc3BlY2lhbCAKdHlwZXMgb2YgdGhvdWdodC4gVGhlIGNvbnNpZGVyYXRpb24gb2YgdGhpcyBtYXR0ZXIgYmVsb25ncyByYXRoZXIgdG8gYW5vdGhlciAKY2hhcHRlciwgYnV0IHdlIG1heSBpbnRyb2R1Y2UgaXQgc28gZmFyIGFzIHRvIG1lbnRpb24gdGhhdCB0aGUgZnJhbWUgb2YgbWluZCBpbiAKd2hpY2ggcGVvcGxlIGhhYml0dWFsbHkgdmlzaXQgYSBjZXJ0YWluIHBsYWNlIHJlYWN0cyBzdHJvbmdseSB1cG9uIGFsbCB0aGUgb3RoZXIgCnZpc2l0b3JzIHRvIGl0LiBQb3B1bGFyIHNlYXNpZGUgcmVzb3J0cyBpbiBFbmdsYW5kIGhhdmUgYWJvdXQgdGhlbSBhbiBhaXIgb2YgCmJ1b3lhbmN5IGFuZCBpcnJlc3BvbnNpYmlsaXR5LCBhIGRldGVybWluZWQgZmVlbGluZyBvZiBob2xpZGF5IGxpZmUsIG9mIAp0ZW1wb3JhcnkgZnJlZWRvbSBmcm9tIGJ1c2luZXNzIGFuZCBvZiB0aGUgcmVzb2x1dGlvbiB0byBtYWtlIHRoZSBtb3N0IG9mIGl0LCAKZnJvbSB0aGUgaW5mbHVlbmNlIG9mIHdoaWNoIGl0IGlzIGRpZmZpY3VsdCB0byBlc2NhcGUuIFRodXMgdGhlIGphZGVkIGFuZCAKb3ZlcndvcmtlZCBtYW4gd2hvIHNwZW5kcyBoaXMgd2VsbC1lYXJuZWQgaG9saWRheSBpbiBzdWNoIGEgcGxhY2UsIG9idGFpbnMgcXVpdGUgCmEgZGlmZmVyZW50IHJlc3VsdCBmcm9tIHRoYXQgd2hpY2ggd291bGQgZm9sbG93IGlmIGhlIHNpbXBseSBzdGF5ZWQgcXVpZXRseSBhdCAKaG9tZS4gVG8gc2l0IGF0IGhvbWUgd291bGQgcHJvYmFibHkgYmUgbGVzcyBmYXRpZ3VpbmcsIGJ1dCBhbHNvIG11Y2ggbGVzcyAKc3RpbXVsYXRpbmcuIAoKCjE4Ni7CoMKgwqDCoMKgwqDCoApUbyB0YWtlIGEgY291bnRyeSB3YWxrIGlzIHRvIHRyYXZlbCBpbiBtaW5pYXR1cmUsIGFuZCBpbiBvcmRlciB0byAKYXBwcmVjaWF0ZSBpdHMgaGVhbHRoZnVsIGVmZmVjdCB3ZSBtdXN0IGJlYXIgaW4gbWluZCB3aGF0IGhhcyBiZWVuIHNhaWQgb2YgYWxsIAp0aGUgZGlmZmVyZW50IHZpYnJhdGlvbnMgaXNzdWluZyBmcm9tIHZhcmlvdXMga2luZHMgb2YgdHJlZXMgb3IgcGxhbnRzLCBhbmQgZXZlbiAKZnJvbSBkaWZmZXJlbnQga2luZHMgb2Ygc29pbCBvciByb2NrLiBBbGwgdGhlc2UgYWN0IGFzIGtpbmQgb2YgbWFzc2FnZSB1cG9uIHRoZSAKZXRoZXJpYywgYXN0cmFsIGFuZCBtZW50YWwgYm9kaWVzLCBhbmQgdGVuZCB0byByZWxpZXZlIHRoZSBzdHJhaW4gd2hpY2ggdGhlIAp3b3JyaWVzIG9mIG91ciBjb21tb24gbGlmZSBwZXJzaXN0ZW50bHkgZXhlcnQgdXBvbiBjZXJ0YWluIHBhcnRzIG9mIHRoZXNlIAp2ZWhpY2xlcy4gCgoKMTg3LsKgwqDCoMKgwqDCoMKgCkdsaW1wc2VzIG9mIHRoZSB0cnV0aCBvbiB0aGVzZSBwb2ludHMgbWF5IHNvbWV0aW1lcyBiZSBjYXVnaHQgZnJvbSB0aGUgCnRyYWRpdGlvbnMgb2YgdGhlIHBlYXNhbnRyeS4gRm9yIGV4YW1wbGUsIHRoZXJlIGlzIGEgd2lkZWx5LXNwcmVhZCBiZWxpZWYgdGhhdCAKc3RyZW5ndGggbWF5IGJlIGdhaW5lZCBmcm9tIHNsZWVwaW5nIHVuZGVyIGEgcGluZS10cmVlIHdpdGggdGhlIGhlYWQgdG8gdGhlIApub3J0aC4gRm9yIHNvbWUgY2FzZXMgdGhpcyBpcyBzdWl0YWJsZSwgYW5kIHRoZSByYXRpb25hbGUgb2YgaXQgaXMgdGhhdCB0aGVyZSAKYXJlIG1hZ25ldGljIGN1cnJlbnRzIGFsd2F5cyBmbG93aW5nIG92ZXIgdGhlIHN1cmZhY2Ugb2YgdGhlIGVhcnRoIHdoaWNoIGFyZSAKcXVpdGUgdW5rbm93biB0byBvcmRpbmFyeSBtZW4uIFRoZXNlIGJ5IHN0ZWFkeSwgZ2VudGxlIHByZXNzdXJlIGdyYWR1YWxseSBjb21iIApvdXQgdGhlIGVudGFuZ2xlbWVudHMgYW5kIHN0cmVuZ3RoZW4gdGhlIHBhcnRpY2xlcyBib3RoIG9mIHRoZSBhc3RyYWwgYm9keSBhbmQgCm9mIHRoZSBldGhlcmljIHBhcnQgb2YgdGhlIHBoeXNpY2FsLCBhbmQgdGh1cyBicmluZyB0aGVtIG1vcmUgaW50byBoYXJtb255IGFuZCAKaW50cm9kdWNlIHJlc3QgYW5kIGNhbG0uIFRoZSBwYXJ0IHBsYXllZCBieSB0aGUgcGluZS10cmVlIGlzLCBmaXJzdCwgdGhhdCBpdHMgCnJhZGlhdGlvbnMgbWFrZSB0aGUgbWFuIHNlbnNpdGl2ZSB0byB0aG9zZSBtYWduZXRpYyBjdXJyZW50cywgYW5kIGJyaW5nIGhpbSBpbnRvIAphIHN0YXRlIGluIHdoaWNoIGl0IGlzIHBvc3NpYmxlIGZvciB0aGVtIHRvIGFjdCB1cG9uIGhpbSwgYW5kIHNlY29uZGx5LCB0aGF0IChhcyAKaGFzIGFscmVhZHkgYmVlbiBleHBsYWluZWQpIGl0IGlzIGNvbnN0YW50bHkgdGhyb3dpbmcgb2ZmIHZpdGFsaXR5IGluIHRoYXQgCnNwZWNpYWwgY29uZGl0aW9uIGluIHdoaWNoIGl0IGlzIGVhc2llc3QgZm9yIG1hbiB0byBhYnNvcmIgaXQuIAoKCjE4OC7CoMKgwqDCoMKgwqDCoApDSEFQVEVSIFZJIAoKCjE4OS7CoMKgwqDCoMKgwqDCoApCWSBOQVRVUkUtU1BJUklUUyAKCgoxOTAuwqDCoMKgwqDCoMKgwqAKQU4gRVZPTFVUSU9OIEFQQVJUIAoKCjE5MS7CoMKgwqDCoMKgwqDCoApBTk9USEVSIGZhY3RvciB3aGljaCBleGVyY2lzZXMgZ3JlYXQgaW5mbHVlbmNlIHVuZGVyIGNlcnRhaW4gcmVzdHJpY3Rpb25zIAppcyB0aGUgbmF0dXJlLXNwaXJpdC4gV2UgbWF5IHJlZ2FyZCB0aGUgbmF0dXJlLXNwaXJpdHMgb2YgdGhlIGxhbmQgYXMgaW4gYSBzZW5zZSAKdGhlIG9yaWdpbmFsIGluaGFiaXRhbnRzIG9mIHRoZSBjb3VudHJ5LCBkcml2ZW4gYXdheSBmcm9tIHNvbWUgcGFydHMgb2YgaXQgYnkgCnRoZSBpbnZhc2lvbiBvZiBtYW4sIG11Y2ggYXMgdGhlIHdpbGQgYW5pbWFscyBoYXZlIGJlZW4uIEp1c3QgbGlrZSB3aWxkIGFuaW1hbHMsIAp0aGUgbmF0dXJlLXNwaXJpdHMgYXZvaWQgYWx0b2dldGhlciB0aGUgZ3JlYXQgY2l0aWVzIGFuZCBhbGwgcGxhY2VzIHdoZXJlIG1lbiAKbW9zdCBkbyBjb25ncmVnYXRlLCBzbyB0aGF0IGluIHRob3NlIHRoZWlyIGVmZmVjdCBpcyBhIG5lZ2xpZ2libGUgcXVhbnRpdHkuIEJ1dCAKaW4gYWxsIHF1aWV0IGNvdW50cnkgcGxhY2VzLCBhbW9uZyB0aGUgd29vZHMgYW5kIGZpZWxkcywgdXBvbiB0aGUgbW91bnRhaW5zIG9yIApvdXQgYXQgc2VhLCBuYXR1cmUtc3Bpcml0cyBhcmUgY29uc3RhbnRseSBwcmVzZW50LCBhbmQgdGhvdWdoIHRoZXkgcmFyZWx5IHNob3cgCnRoZW1zZWx2ZXMsIHRoZWlyIGluZmx1ZW5jZSBpcyBwb3dlcmZ1bCBhbmQgYWxsLXBlcnZhZGluZywganVzdCBhcyB0aGUgc2NlbnQgb2YgCnRoZSB2aW9sZXRzIGZpbGxzIHRoZSBhaXIgdGhvdWdoIHRoZXkgYXJlIGhpZGRlbiBtb2Rlc3RseSBhbW9uZyB0aGUgbGVhdmVzLiAKCgoxOTIuwqDCoMKgwqDCoMKgwqAKVGhlIG5hdHVyZS1zcGlyaXRzIGNvbnN0aXR1dGUgYW4gZXZvbHV0aW9uIGFwYXJ0LCBxdWl0ZSBkaXN0aW5jdCBhdCB0aGlzIApzdGFnZSBmcm9tIHRoYXQgb2YgaHVtYW5pdHkuIFdlIGFyZSBmYW1pbGlhciB3aXRoIHRoZSBjb3Vyc2UgdGFrZW4gYnkgdGhlIFNlY29uZCAKT3V0cG91cmluZyB0aHJvdWdoIHRoZSB0aHJlZSBlbGVtZW50YWwga2luZ2RvbXMsIGRvd24gdG8gdGhlIG1pbmVyYWwgYW5kIHVwd2FyZCAKdGhyb3VnaCB0aGUgdmVnZXRhYmxlIGFuZCBhbmltYWwsIHRvIHRoZSBhdHRhaW5tZW50IG9mIGluZGl2aWR1YWxpdHkgYXQgdGhlIApodW1hbiBsZXZlbC4gV2Uga25vdyB0aGF0LCBhZnRlciB0aGF0IGluZGl2aWR1YWxpdHkgaGFzIGJlZW4gYXR0YWluZWQsIHRoZSAKdW5mb2xkaW5nIG9mIGh1bWFuaXR5IGNhcnJpZXMgdXMgZ3JhZHVhbGx5IHRvIHRoZSBzdGVwcyBvZiB0aGUgUGF0aCwgYW5kIHRoZW4gCm9ud2FyZCBhbmQgdXB3YXJkIHRvIEFkZXB0c2hpcCBhbmQgdG8gdGhlIGdsb3Jpb3VzIHBvc3NpYmlsaXRpZXMgd2hpY2ggbGllIApiZXlvbmQuIAoKCjE5My7CoMKgwqDCoMKgwqDCoApUaGlzIGlzIG91ciBsaW5lIG9mIGRldmVsb3BtZW50LCBidXQgd2UgbXVzdCBub3QgbWFrZSB0aGUgbWlzdGFrZSBvZiAKdGhpbmtpbmcgb2YgaXQgYXMgdGhlIG9ubHkgbGluZS4gRXZlbiBpbiB0aGlzIHdvcmxkIG9mIG91cnMgdGhlIGRpdmluZSBsaWZlIGlzIApwcmVzc2luZyB1cHdhcmRzIHRocm91Z2ggc2V2ZXJhbCBzdHJlYW1zLCBvZiB3aGljaCBvdXJzIGlzIGJ1dCBvbmUsIGFuZCAKbnVtZXJpY2FsbHkgYnkgbm8gbWVhbnMgdGhlIG1vc3QgaW1wb3J0YW50LiBJdCBtYXkgaGVscCB1cyB0byByZWFsaXNlIHRoaXMgaWYgd2UgCnJlbWVtYmVyIHRoYXQgd2hpbGUgaHVtYW5pdHkgaW4gaXRzIHBoeXNpY2FsIG1hbmlmZXN0YXRpb24gb2NjdXBpZXMgb25seSBxdWl0ZSBhIApzbWFsbCBwYXJ0IG9mIHRoZSBzdXJmYWNlIG9mIHRoZSBlYXJ0aCwgZW50aXRpZXMgYXQgYSBjb3JyZXNwb25kaW5nIGxldmVsIG9uIApvdGhlciBsaW5lcyBvZiBldm9sdXRpb24gbm90IG9ubHkgY3Jvd2QgdGhlIGVhcnRoIGZhciBtb3JlIHRoaWNrbHkgdGhhbiBtYW4sIGJ1dCAKYXQgdGhlIHNhbWUgdGltZSBwb3B1bGF0ZSB0aGUgZW5vcm1vdXMgcGxhaW5zIG9mIHRoZSBzZWEgYW5kIHRoZSBmaWVsZHMgb2YgdGhlIAphaXIuIAoKCjE5NC7CoMKgwqDCoMKgwqDCoApMSU5FUyBPRiBFVk9MVVRJT04gCgoKMTk1LsKgwqDCoMKgwqDCoMKgCkF0IHRoaXMgcHJlc2VudCBzdGFnZSB3ZSBmaW5kIHRoZXNlIHN0cmVhbXMgcnVubmluZyBwYXJhbGxlbCB0byBvbmUgCmFub3RoZXIsIGJ1dCBmb3IgdGhlIHRpbWUgcXVpdGUgZGlzdGluY3QuIFRoZSBuYXR1cmUtc3Bpcml0cywgZm9yIGV4YW1wbGUsIApuZWl0aGVyIGhhdmUgYmVlbiBub3IgZXZlciB3aWxsIGJlIG1lbWJlcnMgb2YgYSBodW1hbml0eSBzdWNoIGFzIG91cnMsIHlldCB0aGUgCmluZHdlbGxpbmcgbGlmZSBvZiB0aGUgbmF0dXJlLXNwaXJpdCBjb21lcyBmcm9tIHRoZSBzYW1lIFNvbGFyIERlaXR5IGFzIG91ciBvd24sIAphbmQgd2lsbCByZXR1cm4gdG8gSGltIGp1c3QgYXMgb3VycyB3aWxsLiBUaGUgc3RyZWFtcyBtYXkgYmUgcm91Z2hseSBjb25zaWRlcmVkIAphcyBmbG93aW5nIHNpZGUgYnkgc2lkZSBhcyBmYXIgYXMgdGhlIG1pbmVyYWwgbGV2ZWwsIGJ1dCBhcyBzb29uIGFzIHRoZXkgdHVybiB0byAKY29tbWVuY2UgdGhlIHVwd2FyZCBhcmMgb2YgZXZvbHV0aW9uLCBkaXZlcmdlbmNlIGJlZ2lucyB0byBhcHBlYXIuIFRoaXMgc3RhZ2Ugb2YgCmltbWV0YWxpc2F0aW9uIGlzIG5hdHVyYWxseSB0aGF0IGF0IHdoaWNoIGxpZmUgaXMgbW9zdCBkZWVwbHkgaW1tZXJzZWQgaW4gCnBoeXNpY2FsIG1hdHRlciBidXQgd2hpbGUgc29tZSBvZiB0aGUgc3RyZWFtcyByZXRhaW4gcGh5c2ljYWwgZm9ybXMgdGhyb3VnaCAKc2V2ZXJhbCBvZiB0aGUgZnVydGhlciBzdGFnZXMgb2YgdGhlaXIgZGV2ZWxvcG1lbnQsIG1ha2luZyB0aGVtLCBhcyB0aGV5IApwcm9jZWVkLCBtb3JlIGFuZCBtb3JlIGFuIGV4cHJlc3Npb24gb2YgdGhlIGxpZmUgd2l0aGluICwgdGhlcmUgYXJlIApvdGhlciBzdHJlYW1zIHdoaWNoIGF0IG9uY2UgYmVnaW4gdG8gY2FzdCBvZmYgdGhlIGdyb3NzZXIsIGFuZCBmb3IgdGhlIHJlc3Qgb2YgCnRoZWlyIHVuZm9sZGluZyBpbiB0aGlzIHdvcmxkIHVzZSBvbmx5IGJvZGllcyBjb21wb3NlZCBvZiBldGhlcmljIG1hdHRlci4gCgoKMTk2LsKgwqDCoMKgwqDCoMKgCk9uZSBvZiB0aGVzZSBzdHJlYW1zLCBmb3IgZXhhbXBsZSwgYWZ0ZXIgZmluaXNoaW5nIHRoYXQgc3RhZ2Ugb2YgaXRzIApldm9sdmVtZW50IGluIHdoaWNoIGl0IGlzIHBhcnQgb2YgdGhlIG1pbmVyYWwgbW9uYWQsIGluc3RlYWQgb2YgcGFzc2luZyBpbnRvIHRoZSAKdmVnZXRhYmxlIGtpbmdkb20gdGFrZXMgZm9yIGl0c2VsZiB2ZWhpY2xlcyBvZiBldGhlcmljIG1hdHRlciB3aGljaCBpbmhhYml0IHRoZSAKaW50ZXJpb3Igb2YgdGhlIGVhcnRoLCBsaXZpbmcgYWN0dWFsbHkgd2l0aGluIHRoZSBzb2xpZCByb2NrLiBJdCBpcyBkaWZmaWN1bHQgCmZvciBtYW55IHN0dWRlbnRzIHRvIHVuZGVyc3RhbmQgaG93IGl0IGlzIHBvc3NpYmxlIGZvciBhbnkga2luZCBvZiBjcmVhdHVyZSB0aHVzIAp0byBpbmhhYml0IHRoZSBzb2xpZCBzdWJzdGFuY2Ugb2YgdGhlIHJvY2sgb3IgdGhlIGNydXN0IG9mIHRoZSBlYXJ0aC4gQ3JlYXR1cmVzIApwb3NzZXNzaW5nIGJvZGllcyBvZiBldGhlcmljIG1hdHRlciBmaW5kIHRoZSBzdWJzdGFuY2Ugb2YgdGhlIHJvY2sgbm8gaW1wZWRpbWVudCAKdG8gdGhlaXIgbW90aW9uIG9yIHRoZWlyIHZpc2lvbi4gSW5kZWVkLCBmb3IgdGhlbSBwaHlzaWNhbCBtYXR0ZXIgaW4gaXRzIHNvbGlkIApzdGF0ZSBpcyB0aGVpciBuYXR1cmFsIGVsZW1lbnQgYW5kIGhhYml0YXQtLSB0aGUgb25seSBvbmUgdG8gd2hpY2ggdGhleSBhcmUgCmFjY3VzdG9tZWQgYW5kIGluIHdoaWNoIHRoZXkgZmVlbCBhdCBob21lLiBUaGVzZSB2YWd1ZSBsb3dlciBsaXZlcyBpbiBhbW9ycGhvdXMgCmV0aGVyaWMgdmVoaWNsZXMgYXJlIG5vdCByZWFkaWx5IGNvbXByZWhlbnNpYmxlIHRvIHVzOyBidXQgc29tZWhvdyB0aGV5IApncmFkdWFsbHkgZXZvbHZlIHRvIGEgc3RhZ2Ugd2hlbiwgdGhvdWdoIHN0aWxsIGluaGFiaXRpbmcgdGhlIHNvbGlkIHJvY2ssIHRoZXkgCmxpdmUgY2xvc2UgdG8gdGhlIHN1cmZhY2Ugb2YgdGhlIGVhcnRoIGluc3RlYWQgb2YgaW4gaXRzIGRlcHRocywgYW5kIHRoZSBtb3JlIApkZXZlbG9wZWQgb2YgdGhlbSBhcmUgYWJsZSBvY2Nhc2lvbmFsbHkgdG8gZGV0YWNoIHRoZW1zZWx2ZXMgZnJvbSBpdCBmb3IgYSBzaG9ydCAKdGltZS4gCgoKMTk3LsKgwqDCoMKgwqDCoMKgClRoZXNlIGNyZWF0dXJlcyBoYXZlIHNvbWV0aW1lcyBiZWVuIHNlZW4sIGFuZCBwZXJoYXBzIG1vcmUgZnJlcXVlbnRseSAKaGVhcmQsIGluIGNhdmVzIG9yIG1pbmVzLCBhbmQgdGhleSBhcmUgb2Z0ZW4gZGVzY3JpYmVkIGluIG1lZGlhZXZhbCBsaXRlcmF0dXJlIAphcyBnbm9tZXMuIFRoZSBldGhlcmljIG1hdHRlciBvZiB0aGVpciBib2RpZXMgaXMgbm90LCB1bmRlciBvcmRpbmFyeSBjb25kaXRpb25zLCAKdmlzaWJsZSB0byBwaHlzaWNhbCBleWVzLCBzbyB0aGF0IHdoZW4gdGhleSBhcmUgc2VlbiBvbmUgb2YgdHdvIHRoaW5ncyBtdXN0IHRha2UgCnBsYWNlOyBlaXRoZXIgdGhleSBtdXN0IG1hdGVyaWFsaXNlIHRoZW1zZWx2ZXMgYnkgZHJhd2luZyByb3VuZCB0aGVtIGEgdmVpbCBvZiAKcGh5c2ljYWwgbWF0dGVyLCBvciBlbHNlIHRoZSBzcGVjdGF0b3IgbXVzdCBleHBlcmllbmNlIGFuIGluY3JlYXNlIG9mIApzZW5zaXRpdmVuZXNzIHdoaWNoIGVuYWJsZXMgaGltIHRvIHJlc3BvbmQgdG8gdGhlIHdhdmUtbGVuZ3RocyBvZiB0aGUgaGlnaGVyIAphZXRoZXJzLCBhbmQgdG8gc2VlIHdoYXQgaXMgbm90IG5vcm1hbGx5IHBlcmNlcHRpYmxlIHRvIGhpbS4gCgoKMTk4LsKgwqDCoMKgwqDCoMKgClRoZSBzbGlnaHQgdGVtcG9yYXJ5IGV4YWx0YXRpb24gb2YgZmFjdWx0eSBuZWNlc3NhcnkgZm9yIHRoaXMgaXMgbm90IHZlcnkgCnVuY29tbW9uIG5vciBkaWZmaWN1bHQgdG8gYWNoaWV2ZSwgYW5kIG9uIHRoZSBvdGhlciBoYW5kIG1hdGVyaWFsaXNhdGlvbiBpcyBlYXN5IApmb3IgY3JlYXR1cmVzIHdoaWNoIGFyZSBvbmx5IGp1c3QgYmV5b25kIHRoZSBib3VuZHMgb2YgdmlzaWJpbGl0eTsgc28gdGhhdCB0aGV5IAp3b3VsZCBiZSBzZWVuIGZhciBtb3JlIGZyZXF1ZW50bHkgdGhhbiB0aGV5IGFyZSwgYnV0IGZvciB0aGUgcm9vdGVkIG9iamVjdGlvbiB0byAKdGhlIHByb3hpbWl0eSBvZiBodW1hbiBiZWluZ3Mgd2hpY2ggdGhleSBzaGFyZSB3aXRoIGFsbCBidXQgdGhlIGxvd2VzdCB0eXBlcyBvZiAKbmF0dXJlLXNwaXJpdHMuIFRoZSBuZXh0IHN0YWdlIG9mIHRoZWlyIGFkdmFuY2VtZW50IGJyaW5ncyB0aGVtIGludG8gdGhlIApzdWJkaXZpc2lvbiBjb21tb25seSBjYWxsZWQgZmFpcmllcy0tIHRoZSB0eXBlIG9mIG5hdHVyZS1zcGlyaXRzIHdoaWNoIHVzdWFsbHkgCmxpdmUgdXBvbiB0aGUgc3VyZmFjZSBvZiB0aGUgZWFydGggYXMgd2UgZG8sIHRob3VnaCBzdGlsbCB1c2luZyBvbmx5IGFuIGV0aGVyaWMgCmJvZHk7IGFuZCBhZnRlciB0aGF0IHRoZXkgcGFzcyBvbiB0aHJvdWdoIHRoZSBhaXItc3Bpcml0cyBpbnRvIHRoZSBraW5nZG9tIG9mIAp0aGUgYW5nZWxzIGluIGEgd2F5IHdoaWNoIHdpbGwgYmUgZXhwbGFpbmVkIGxhdGVyLiAKCgoxOTkuwqDCoMKgwqDCoMKgwqAKVGhlIGxpZmUtd2F2ZSB3aGljaCBpcyBhdCB0aGUgbWluZXJhbCBsZXZlbCBpcyBtYW5pZmVzdGluZyBpdHNlbGYgbm90IApvbmx5IHRocm91Z2ggdGhlIHJvY2tzIHdoaWNoIGZvcm0gdGhlIHNvbGlkIGNydXN0IG9mIHRoZSBlYXJ0aCwgYnV0IGFsc28gdGhyb3VnaCAKdGhlIHdhdGVycyBvZiB0aGUgb2NlYW47IGFuZCBqdXN0IGFzIHRoZSBmb3JtZXIgbWF5IHBhc3MgdGhyb3VnaCBsb3cgZXRoZXJpYyAKZm9ybXMgb2YgbGlmZSAoYXQgcHJlc2VudCB1bmtub3duIHRvIG1hbikgaW4gdGhlIGludGVyaW9yIG9mIHRoZSBlYXJ0aCwgc28gdGhlIApsYXR0ZXIgbWF5IHBhc3MgdGhyb3VnaCBjb3JyZXNwb25kaW5nIGxvdyBldGhlcmljIGZvcm1zIHdoaWNoIGhhdmUgdGhlaXIgCmR3ZWxsaW5nIGluIHRoZSBkZXB0aHMgb2YgdGhlIHNlYS4gSW4gdGhpcyBjYXNlIGFsc28gdGhlIG5leHQgc3RhZ2Ugb3Iga2luZ2RvbSAKYnJpbmdzIHVzIGludG8gbW9yZSBkZWZpbml0ZSB0aG91Z2ggc3RpbGwgZXRoZXJpYyBmb3JtcyBpbmhhYml0aW5nIHRoZSBtaWRkbGUgCmRlcHRocywgYW5kIHZlcnkgcmFyZWx5IHNob3dpbmcgdGhlbXNlbHZlcyBhdCB0aGUgc3VyZmFjZS4gVGhlIHRoaXJkIHN0YWdlIGZvciAKdGhlbSAoY29ycmVzcG9uZGluZyB0byB0aGF0IG9mIHRoZSBmYWlyaWVzIGZvciB0aGUgcm9jay1zcGlyaXRzKSBpcyB0byBqb2luIHRoZSAKZW5vcm1vdXMgaG9zdCBvZiB3YXRlci1zcGlyaXRzIHdoaWNoIGNvdmVyIHRoZSB2YXN0IHBsYWlucyBvZiB0aGUgb2NlYW4gd2l0aCAKdGhlaXIgam95b3VzIGxpZmUuIAoKCjIwMC7CoMKgwqDCoMKgwqDCoApUYWtpbmcgYXMgdGhleSBkbyBib2RpZXMgb2YgZXRoZXJpYyBtYXR0ZXIgb25seSwgaXQgd2lsbCBiZSBzZWVuIHRoYXQgdGhlIAplbnRpdGllcyBmb2xsb3dpbmcgdGhlc2UgbGluZXMgb2YgZGV2ZWxvcG1lbnQgbWlzcyBhbHRvZ2V0aGVyIHRoZSB2ZWdldGFibGUgYW5kIAphbmltYWwga2luZ2RvbXMgYXMgd2VsbCB0aGUgaHVtYW4uIFRoZXJlIGFyZSwgaG93ZXZlciwgb3RoZXIgdHlwZXMgb2YgCm5hdHVyZS1zcGlyaXRzIHdoaWNoIGVudGVyIGludG8gYm90aCB0aGVzZSBraW5nZG9tcyBiZWZvcmUgdGhleSBiZWdpbiB0byAKZGl2ZXJnZS4gSW4gdGhlIG9jZWFuLCBmb3IgZXhhbXBsZSwgdGhlcmUgaXMgYSBzdHJlYW0gb2YgbGlmZSB3aGljaCwgYWZ0ZXIgCmxlYXZpbmcgdGhlIG1pbmVyYWwgbGV2ZWwsIHRvdWNoZXMgdGhlIHZlZ2V0YWJsZSBraW5nZG9tIGluIHRoZSBmb3JtIG9mIApzZWF3ZWVkcywgYW5kIHRoZW4gcGFzc2VzIG9uLCB0aHJvdWdoIHRoZSBjb3JhbHMgYW5kIHRoZSBzcG9uZ2VzIGFuZCB0aGUgaHVnZSAKY2VwaGFsb3BvZHMgb2YgdGhlIG1pZGRsZSBkZWVwcywgdXAgaW50byB0aGUgZ3JlYXQgZmFtaWx5IG9mIHRoZSBmaXNoZXMsIGFuZCAKb25seSBhZnRlciB0aGF0IGpvaW5zIHRoZSByYW5rcyBvZiB3YXRlci1zcGlyaXRzLiAKCgoyMDEuwqDCoMKgwqDCoMKgwqAKSXQgd2lsbCBiZSBzZWVuIHRoYXQgdGhlc2UgcmV0YWluIHRoZSBkZW5zZSBwaHlzaWNhbCBib2R5IGFzIGEgdmVoaWNsZSB1cCAKdG8gYSBtdWNoIGhpZ2hlciBsZXZlbDsgYW5kIGluIHRoZSBzYW1lIHdheSB3ZSBub3RpY2UgdGhhdCB0aGUgZmFpcmllcyBvZiB0aGUgCmxhbmQgYXJlIHJlY3J1aXRlZCBub3Qgb25seSBmcm9tIHRoZSByYW5rcyBvZiB0aGUgZ25vbWVzLCBidXQgYWxzbyBmcm9tIHRoZSBsZXNzIApldm9sdmVkIHN0cmF0YSBvZiB0aGUgYW5pbWFsIGtpbmdkb20sIGZvciB3ZSBmaW5kIGEgbGluZSBvZiBkZXZlbG9wbWVudCB3aGljaCAKanVzdCB0b3VjaGVzIHRoZSB2ZWdldGFibGUga2luZ2RvbSBpbiB0aGUgc2hhcGUgb2YgbWludXRlIGZ1bmdvaWQgZ3Jvd3RocywgYW5kIAp0aGVuIHBhc3NlcyBvbndhcmQgdGhyb3VnaCBiYWN0ZXJpYSBhbmQgYW5pbWFsY3VsYWUgb2YgdmFyaW91cyBraW5kcywgdGhyb3VnaCAKdGhlIGluc2VjdHMgYW5kIHJlcHRpbGVzIHVwIHRvIHRoZSBiZWF1dGlmdWwgZmFtaWx5IG9mIHRoZSBiaXJkcywgYW5kIG9ubHkgYWZ0ZXIgCm1hbnkgaW5jYXJuYXRpb25zIGFtb25nIHRoZXNlIGpvaW5zIHRoZSBzdGlsbCBtb3JlIGpveW91cyB0cmliZSBvZiB0aGUgZmFpcmllcy4KCgoyMDIuwqDCoMKgwqDCoMKgwqAKWWV0IGFub3RoZXIgc3RyZWFtIGRpdmVyZ2VzIGludG8gZXRoZXJpYyBsaWZlIGF0IGFuIGludGVybWVkaWF0ZSBwb2ludCwgCmZvciB3aGlsZSBpdCBjb21lcyB1cCB0aHJvdWdoIHRoZSB2ZWdldGFibGUga2luZ2RvbSBpbiB0aGUgc2hhcGUgb2YgZ3Jhc3NlcyBhbmQgCmNlcmVhbHMsIGl0IHR1cm5zIGFzaWRlIHRoZW5jZSBpbnRvIHRoZSBhbmltYWwga2luZ2RvbSBhbmQgaXMgY29uZHVjdGVkIHRocm91Z2ggCnRoZSBjdXJpb3VzIGNvbW11bml0aWVzIG9mIHRoZSBhbnRzIGFuZCBiZWVzLCBhbmQgdGhlbiB0aHJvdWdoIGEgc2V0IG9mIGV0aGVyaWMgCmNyZWF0dXJlcyBjbG9zZWx5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGxhdHRlci0tIHRob3NlIHRpbnkgaHVtbWluZy1iaXJkLWxpa2UgCm5hdHVyZS1zcGlyaXRzIHdoaWNoIGFyZSBzbyBjb250aW51YWxseSBzZWVuIGhvdmVyaW5nIGFib3V0IGZsb3dlcnMgYW5kIHBsYW50cywgCmFuZCBwbGF5IHNvIGxhcmdlIGEgcGFydCBpbiB0aGUgcHJvZHVjdGlvbiBvZiB0aGVpciBtYW5pZm9sZCB2YXJpYXRpb25zLS0gdGhlaXIgCnBsYXlmdWxuZXNzIGJlaW5nIG9mdGVuIHV0aWxpc2VkIGluIHNwZWNpYWxpc2F0aW9uIGFuZCBpbiB0aGUgaGVscGluZyBvZiBncm93dGguCgoKMjAzLsKgwqDCoMKgwqDCoMKgCkl0IGlzIG5lY2Vzc2FyeSwgaG93ZXZlciwgdG8gZHJhdyBhIGNhcmVmdWwgZGlzdGluY3Rpb24gaGVyZSwgdG8gYXZvaWQgCmNvbmZ1c2lvbi4gVGhlIGxpdHRsZSBjcmVhdHVyZXMgdGhhdCBsb29rIGFmdGVyIGZsb3dlcnMgbWF5IGJlIGRpdmlkZWQgaW50byB0d28gCmdyZWF0IGNsYXNzZXMsIHRob3VnaCBvZiBjb3Vyc2UgdGhlcmUgYXJlIG1hbnkgdmFyaWV0aWVzIG9mIGVhY2gga2luZC4gVGhlIGZpcnN0IApjbGFzcyBtYXkgcHJvcGVybHkgYmUgY2FsbGVkIGVsZW1lbnRhbHMsIGZvciBiZWF1dGlmdWwgdGhvdWdoIHRoZXkgYXJlLCB0aGV5IGFyZSAKaW4gcmVhbGl0eSBvbmx5IHRob3VnaHQtZm9ybXMsIGFuZCB0aGVyZWZvcmUgdGhleSBhcmUgbm90IHJlYWxseSBsaXZpbmcgCmNyZWF0dXJlcyBhdCBhbGwuIFBlcmhhcHMgSSBzaG91bGQgcmF0aGVyIHNheSB0aGF0IHRoZXkgYXJlIG9ubHkgdGVtcG9yYXJpbHkgCmxpdmluZyBjcmVhdHVyZXMsIGZvciB0aG91Z2ggdGhleSBhcmUgdmVyeSBhY3RpdmUgYW5kIGJ1c3kgZHVyaW5nIHRoZWlyIGxpdHRsZSAKbGl2ZXMsIHRoZXkgaGF2ZSBubyByZWFsIGV2b2x2aW5nLCByZWluY2FybmF0aW5nIGxpZmUgaW4gdGhlbSwgYW5kIHdoZW4gdGhleSAKaGF2ZSBkb25lIHRoZWlyIHdvcmssIHRoZXkganVzdCBnbyB0byBwaWVjZXMgYW5kIGRpc3NvbHZlIGludG8gdGhlIHN1cnJvdW5kaW5nIAphdG1vc3BoZXJlLCBwcmVjaXNlbHkgYXMgb3VyIG93biB0aG91Z2h0LWZvcm1zIGRvLiBUaGV5IGFyZSB0aGUgdGhvdWdodC1mb3JtcyBvZiAKdGhlIEdyZWF0IEJlaW5ncyBvciBhbmdlbHMgd2hvIGFyZSBpbiBjaGFyZ2Ugb2YgdGhlIGV2b2x1dGlvbiBvZiB0aGUgdmVnZXRhYmxlIApraW5nZG9tLiAKCgoyMDQuwqDCoMKgwqDCoMKgwqAKV2hlbiBvbmUgb2YgdGhlc2UgR3JlYXQgT25lcyBoYXMgYSBuZXcgaWRlYSBjb25uZWN0ZWQgd2l0aCBvbmUgb2YgdGhlIApraW5kcyBvZiBwbGFudHMgb3IgZmxvd2VycyB3aGljaCBhcmUgdW5kZXIgaGlzIGNoYXJnZSwgaGUgb2Z0ZW4gY3JlYXRlcyBhIAp0aG91Z2h0LWZvcm0gZm9yIHRoZSBzcGVjaWFsIHB1cnBvc2Ugb2YgY2Fycnlpbmcgb3V0IHRoYXQgaWRlYS4gSXQgdXN1YWxseSB0YWtlcyAKdGhlIGZvcm0gZWl0aGVyIG9mIGFuIGV0aGVyaWMgbW9kZWwgb2YgdGhlIGZsb3dlciBpdHNlbGYgb3Igb2YgYSBsaXR0bGUgY3JlYXR1cmUgCndoaWNoIGhhbmdzIHJvdW5kIHRoZSBwbGFudCBvciB0aGUgZmxvd2VyIGFsbCB0aHJvdWdoIHRoZSB0aW1lIHRoYXQgdGhlIGJ1ZHMgYXJlIApmb3JtaW5nLCBhbmQgZ3JhZHVhbGx5IGJ1aWxkcyB0aGVtIGludG8gdGhlIHNoYXBlIGFuZCBjb2xvdXIgb2Ygd2hpY2ggdGhlIGFuZ2VsIApoYXMgdGhvdWdodC4gQnV0IGFzIHNvb24gYXMgdGhlIHBsYW50IGhhcyBmdWxseSBncm93biwgb3IgdGhlIGZsb3dlciAKaGFzIG9wZW5lZCwgaXRzIHdvcmsgaXMgb3ZlciBhbmQgaXRzIHBvd2VyIGlzIGV4aGF1c3RlZCwgYW5kLCBhcyBJIGhhdmUgc2FpZCwgaXQgCmp1c3Qgc2ltcGx5IGRpc3NvbHZlcywgYmVjYXVzZSB0aGUgd2lsbCB0byBkbyB0aGF0IHBpZWNlIG9mIHdvcmsgd2FzIHRoZSBvbmx5IApzb3VsIHRoYXQgaXQgaGFkLiAKCgoyMDUuwqDCoMKgwqDCoMKgwqAKQnV0IHRoZXJlIGlzIHF1aXRlIGFub3RoZXIga2luZCBvZiBsaXR0bGUgY3JlYXR1cmUgd2hpY2ggaXMgdmVyeSAKZnJlcXVlbnRseSBzZWVuIHBsYXlpbmcgYWJvdXQgd2l0aCBmbG93ZXJzLCBhbmQgdGhpcyB0aW1lIGl0IGlzIGEgcmVhbCAKbmF0dXJlLXNwaXJpdC4gVGhlcmUgYXJlIG1hbnkgdmFyaWV0aWVzIG9mIHRoZXNlIGFsc28uIE9uZSBvZiB0aGUgY29tbW9uZXN0IApmb3JtcyBpcywgYXMgSSBoYXZlIHNhaWQsIHNvbWV0aGluZyB2ZXJ5IG11Y2ggbGlrZSBhIHRpbnkgaHVtbWluZy1iaXJkLCBhbmQgaXQgCm1heSBvZnRlbiBiZSBzZWVuIGJ1enppbmcgcm91bmQgdGhlIGZsb3dlcnMgbXVjaCBpbiB0aGUgc2FtZSB3YXkgYXMgYSAKaHVtbWluZy1iaXJkIG9yIGEgYmVlIGRvZXMuIFRoZXNlIGJlYXV0aWZ1bCBsaXR0bGUgY3JlYXR1cmVzIHdpbGwgbmV2ZXIgYmVjb21lIApodW1hbiwgYmVjYXVzZSB0aGV5IGFyZSBub3QgaW4gdGhlIHNhbWUgbGluZSBvZiBldm9sdXRpb24gYXMgd2UgYXJlLiBUaGUgbGlmZSAKd2hpY2ggaXMgbm93IGFuaW1hdGluZyB0aGVtIGhhcyBjb21lIHVwIHRocm91Z2ggZ3Jhc3NlcyBhbmQgY2VyZWFscywgc3VjaCBhcyAKd2hlYXQgYW5kIG9hdHMsIHdoZW4gaXQgd2FzIGluIHRoZSB2ZWdldGFibGUga2luZ2RvbSwgYW5kIGFmdGVyd2FyZHMgdGhyb3VnaCAKYW50cyBhbmQgYmVlcyB3aGVuIGl0IHdhcyBpbiB0aGUgYW5pbWFsIGtpbmdkb20uIE5vdyBpdCBoYXMgcmVhY2hlZCB0aGUgbGV2ZWwgb2YgCnRoZXNlIHRpbnkgbmF0dXJlLXNwaXJpdHMsIGFuZCBpdHMgbmV4dCBzdGFnZSB3aWxsIGJlIHRvIGVuc291bCBzb21lIG9mIHRoZSAKYmVhdXRpZnVsIGZhaXJpZXMgd2l0aCBldGhlcmljIGJvZGllcyB3aG8gbGl2ZSB1cG9uIHRoZSBzdXJmYWNlIG9mIHRoZSBlYXJ0aC4gCkxhdGVyIG9uIHRoZXkgd2lsbCBiZWNvbWUgc2FsYW1hbmRlcnMgb3IgZmlyZS1zcGlyaXRzLCBhbmQgbGF0ZXIgc3RpbGwgdGhleSB3aWxsIApiZWNvbWUgc3lscGhzLCBvciBhaXItc3Bpcml0cywgaGF2aW5nIG9ubHkgYXN0cmFsIGJvZGllcyBpbnN0ZWFkIG9mIGV0aGVyaWMuIApMYXRlciBzdGlsbCB0aGV5IHdpbGwgcGFzcyB0aHJvdWdoIHRoZSBkaWZmZXJlbnQgc3RhZ2VzIG9mIHRoZSBncmVhdCBraW5nZG9tIG9mIAp0aGUgYW5nZWxzLiAKCgoyMDYuwqDCoMKgwqDCoMKgwqAKT1ZFUkxBUFBJTkcgCgoKMjA3LsKgwqDCoMKgwqDCoMKgCkluIGFsbCBjYXNlcyBvZiB0aGUgdHJhbnNmZXJlbmNlIG9mIHRoZSBsaWZlLXdhdmUgZnJvbSBvbmUga2luZ2RvbSB0byAKYW5vdGhlciBncmVhdCBsYXRpdHVkZSBpcyBhbGxvd2VkIGZvciB2YXJpYXRpb247IHRoZXJlIGlzIGEgZ29vZCBkZWFsIG9mIApvdmVybGFwcGluZyBiZXR3ZWVuIHRoZSBraW5nZG9tcy4gVGhhdCBpcyBwZXJoYXBzIG1vc3QgY2xlYXJseSB0byBiZSBzZWVuIGFsb25nIApvdXIgb3duIGxpbmUgb2YgZXZvbHV0aW9uIGZvciB3ZSBmaW5kIHRoYXQgdGhlIGxpZmUgd2hpY2ggaGFzIGF0dGFpbmVkIHRvIHRoZSAKaGlnaGVzdCBsZXZlbHMgaW4gdGhlIHZlZ2V0YWJsZSBraW5nZG9tIG5ldmVyIHBhc3NlcyBpbnRvIHRoZSBsb3dlciBwYXJ0IG9mIHRoZSAKYW5pbWFsIGtpbmdkb20gYXQgYWxsLCBidXQgb24gdGhlIGNvbnRyYXJ5IGpvaW5zIGl0IGF0IGEgZmFpcmx5IGFkdmFuY2VkIHN0YWdlLiAKTGV0IG1lIHJlY2FsbCB0aGUgZXhhbXBsZSB3aGljaCBJIGhhdmUgYWxyZWFkeSBnaXZlbjsgdGhlIGxpZmUgd2hpY2ggaGFzIAplbnNvdWxlZCBvbmUgb2Ygb3VyIGdyZWF0IGZvcmVzdCB0cmVlcyBjb3VsZCBuZXZlciBkZXNjZW5kIHRvIGFuaW1hdGUgYSBzd2FybSBvZiAKbW9zcXVpdG9lcywgbm9yIGV2ZW4gYSBmYW1pbHkgb2YgcmF0cyBvciBtaWNlIG9yIHN1Y2ggc21hbGwgZGVlcjsgd2hpbGUgdGhlc2UgCmxhdHRlciB3b3VsZCBiZSBxdWl0ZSBhcHByb3ByaWF0ZSBmb3JtcyBmb3IgdGhhdCBwYXJ0IG9mIHRoZSBsaWZlLXdhdmUgd2hpY2ggaGFkIApsZWZ0IHRoZSB2ZWdldGFibGUga2luZ2RvbSBhdCB0aGUgbGV2ZWwgb2YgdGhlIGRhaXN5IG9yIHRoZSBkYW5kZWxpb24uIAoKCjIwOC7CoMKgwqDCoMKgwqDCoApUaGUgbGFkZGVyIG9mIGV2b2x1dGlvbiBoYXMgdG8gYmUgY2xpbWJlZCBpbiBhbGwgY2FzZXMsIGJ1dCBpdCBzZWVtcyBhcyAKdGhvdWdoIHRoZSBoaWdoZXIgcGFydCBvZiBvbmUga2luZ2RvbSBsaWVzIHRvIGEgbGFyZ2UgZXh0ZW50IHBhcmFsbGVsIHdpdGggdGhlIApsb3dlciBwYXJ0IG9mIHRoYXQgYWJvdmUgaXQsIHNvIHRoYXQgaXQgaXMgcG9zc2libGUgZm9yIGEgdHJhbnNmZXIgZnJvbSBvbmUgdG8gCnRoZSBvdGhlciB0byB0YWtlIHBsYWNlIGF0IGRpZmZlcmVudCBsZXZlbHMgaW4gZGlmZmVyZW50IGNhc2VzLiBUaGF0IHN0cmVhbSBvZiAKbGlmZSB3aGljaCBlbnRlcnMgdGhlIGh1bWFuIGtpbmdkb20gYXZvaWRzIGFsdG9nZXRoZXIgdGhlIGxvd2VzdCBzdGFnZXMgb2YgdGhlIAphbmltYWwga2luZ2RvbTsgdGhhdCBpcywgdGhlIGxpZmUgd2hpY2ggaXMgcHJlc2VudGx5IHRvIHJpc2UgaW50byBodW1hbml0eSBuZXZlciAKbWFuaWZlc3RzIGl0c2VsZiB0aHJvdWdoIHRoZSBpbnNlY3RzIG9yIHRoZSByZXB0aWxlczsgaW4gdGhlIHBhc3QgaXQgZGlkIApzb21ldGltZXMgZW50ZXIgdGhlIGFuaW1hbCBraW5nZG9tIGF0IHRoZSBsZXZlbCBvZiB0aGUgZ3JlYXQgYW50ZWRpbHV2aWFuIApyZXB0aWxlcywgYnV0IG5vdyBpdCBwYXNzZXMgZGlyZWN0bHkgZnJvbSB0aGUgaGlnaGVzdCBmb3JtcyBvZiB0aGUgdmVnZXRhYmxlIApsaWZlIGludG8gdGhlIG1hbW1hbGlhLiBTaW1pbGFybHksIHdoZW4gdGhlIG1vc3QgYWR2YW5jZWQgZG9tZXN0aWMgYW5pbWFsIApiZWNvbWVzIGluZGl2aWR1YWxpc2VkLCBoZSBkb2VzIG5vdCBuZWVkIHRvIGRlc2NlbmQgaW50byB0aGUgZm9ybSBvZiB0aGUgCmFic29sdXRlbHkgcHJpbWl0aXZlIHNhdmFnZSBmb3IgaGlzIGZpcnN0IGh1bWFuIGluY2FybmF0aW9uLiAKCgoyMDkuwqDCoMKgwqDCoMKgwqAKVGhlIGFjY29tcGFueWluZyBkaWFncmFtIHNob3dzIHNvbWUgb2YgdGhlc2UgbGluZXMgb2YgZGV2ZWxvcG1lbnQgaW4gYSAKY29udmVuaWVudCB0YWJ1bGFyIGZvcm0sIGJ1dCBpdCBtdXN0IG5vdCBiZSBjb25zaWRlcmVkIGFzIGluIGFueSB3YXkgZXhoYXVzdGl2ZSwgCmFzIHRoZXJlIGFyZSBubyBkb3VidCBvdGhlciBsaW5lcyB3aGljaCBoYXZlIG5vdCB5ZXQgYmVlbiBvYnNlcnZlZCwgYW5kIHRoZXJlIAphcmUgY2VydGFpbmx5IGFsbCBraW5kcyBvZiB2YXJpYXRpb25zIGFuZCBwb3NzaWJpbGl0aWVzIG9mIGNyb3NzaW5nIGF0IGRpZmZlcmVudCAKbGV2ZWxzIGZyb20gb25lIGxpbmUgdG8gYW5vdGhlcjsgc28gdGhhdCBhbGwgd2UgY2FuIGRvIGlzIHRvIGdpdmUgYSBicm9hZCAKb3V0bGluZSBvZiB0aGUgc2NoZW1lLiAKCgoyMTAuwqDCoMKgwqDCoMKgwqAKQXMgd2lsbCBiZSBzZWVuIGZyb20gdGhlIGRpYWdyYW0sIGF0IGEgbGF0ZXIgc3RhZ2UgYWxsIHRoZSBsaW5lcyBvZiAKZXZvbHV0aW9uIGNvbnZlcmdlIG9uY2UgbW9yZTsgYXQgbGVhc3QgdG8gb3VyIGRpbSBzaWdodCB0aGVyZSBzZWVtcyBubyAKZGlzdGluY3Rpb24gb2YgZ2xvcnkgYW1vbmcgdGhvc2UgTG9mdHkgT25lcywgdGhvdWdoIHByb2JhYmx5IGlmIHdlIGtuZXcgbW9yZSB3ZSAKY291bGQgbWFrZSBvdXIgdGFibGUgbW9yZSBjb21wbGV0ZS4gQXQgYW55IHJhdGUgd2Uga25vdyB0aGF0LCBtdWNoIGFzIGh1bWFuaXR5IApsaWVzIGFib3ZlIHRoZSBhbmltYWwga2luZ2RvbSwgc28gYmV5b25kIGFuZCBhYm92ZSBodW1hbml0eSBpbiBpdHMgdHVybiBsaWVzIHRoZSAKZ3JlYXQga2luZ2RvbSBvZiB0aGUgYW5nZWxzLCBhbmQgdGhhdCB0byBlbnRlciBhbW9uZyB0aGUgYW5nZWxzIGlzIG9uZSBvZiB0aGUgCnNldmVuIHBvc3NpYmlsaXRpZXMgd2hpY2ggdGhlIEFkZXB0IGZpbmRzIG9wZW5pbmcgYmVmb3JlIGhpbS4gVGhhdCBzYW1lIGtpbmdkb20gCmlzIGFsc28gdGhlIG5leHQgc3RhZ2UgZm9yIHRoZSBuYXR1cmUtc3Bpcml0LCBidXQgd2UgaGF2ZSBoZXJlIGFub3RoZXIgaW5zdGFuY2UgCm9mIHRoZSBvdmVybGFwcGluZyBwcmV2aW91c2x5IG1lbnRpb25lZCwgZm9yIHRoZSBBZGVwdCBqb2lucyB0aGF0IGtpbmdkb20gYXQgYSAKaGlnaCBsZXZlbCwgb21pdHRpbmcgYWx0b2dldGhlciB0aHJlZSBvZiBpdHMgc3RhZ2VzLCB3aGlsZSB0aGUgbmV4dCBzdGVwIG9mIApwcm9ncmVzcyBmb3IgdGhlIGhpZ2hlc3QgdHlwZSBvZiBuYXR1cmUtc3Bpcml0IGlzIHRvIGJlY29tZSB0aGUgbG93ZXN0IGNsYXNzIG9mIAphbmdlbCwgdGh1cyBiZWdpbm5pbmcgYXQgdGhlIGJvdHRvbSBvZiB0aGF0IHBhcnRpY3VsYXIgbGFkZGVyIGluc3RlYWQgb2YgCnN0ZXBwaW5nIG9uIHRvIGl0IGhhbGYtd2F5IHVwLiAKCgoyMTEuwqDCoMKgwqDCoMKgwqAKSXQgaXMgb24gam9pbmluZyB0aGUgYW5nZWwga2luZ2RvbSB0aGF0IHRoZSBuYXR1cmUtc3Bpcml0IHJlY2VpdmVzIHRoZSAKZGl2aW5lIFNwYXJrIG9mIHRoZSBUaGlyZCBPdXRwb3VyaW5nLCBhbmQgdGh1cyBhdHRhaW5zIGluZGl2aWR1YWxpdHksIGp1c3QgYXMgCnRoZSBhbmltYWwgZG9lcyB3aGVuIGhlIHBhc3NlcyBpbnRvIHRoZSBodW1hbiBraW5nZG9tOyBhbmQgYSBmdXJ0aGVyIHBvaW50IG9mIApzaW1pbGFyaXR5IGlzIHRoYXQganVzdCBhcyB0aGUgYW5pbWFsIGdhaW5zIGluZGl2aWR1YWxpc2F0aW9uIG9ubHkgdGhyb3VnaCAKY29udGFjdCB3aXRoIGh1bWFuaXR5LCBzbyB0aGUgbmF0dXJlLXNwaXJpdCBnYWlucyBpdCB0aHJvdWdoIGNvbnRhY3Qgd2l0aCB0aGUgCmFuZ2VsLS0gdGhyb3VnaCBiZWNvbWluZyBhdHRhY2hlZCB0byBoaW0gYW5kIHdvcmtpbmcgaW4gb3JkZXIgdG8gcGxlYXNlIGhpbSwgCnVudGlsIGF0IGxhc3QgaGUgbGVhcm5zIGhvdyB0byBkbyBhbmdlbCcgcyB3b3JrIGhpbXNlbGYuIAoKCjIxMi7CoMKgwqDCoMKgwqDCoApUaGUgbW9yZSBhZHZhbmNlZCBuYXR1cmUtc3Bpcml0IGlzIHRoZXJlZm9yZSBub3QgZXhhY3RseSBhbiBldGhlcmljIG9yIAphc3RyYWwgaHVtYW4gYmVpbmcsIGZvciBoZSBpcyBub3QgeWV0IGFuIGluZGl2aWR1YWw7IHlldCBoZSBpcyBtdWNoIG1vcmUgdGhhbiBhbiAKZXRoZXJpYyBvciBhc3RyYWwgYW5pbWFsLCBmb3IgaGlzIGludGVsbGVjdHVhbCBsZXZlbCBpcyBmYXIgaGlnaGVyIHRoYW4gYW55dGhpbmcgCndoaWNoIHdlIGZpbmQgaW4gdGhlIGFuaW1hbCBraW5nZG9tLCBhbmQgaXMgaW5kZWVkIHF1aXRlIGVxdWFsIGFsb25nIG1hbnkgbGluZXMgCnRvIHRoYXQgb2YgYXZlcmFnZSBodW1hbml0eS4gT24gdGhlIG90aGVyIGhhbmQsIHNvbWUgb2YgdGhlIGVhcmxpZXIgdmFyaWV0aWVzIApwb3NzZXNzIGJ1dCBhIGxpbWl0ZWQgYW1vdW50IG9mIGludGVsbGlnZW5jZSwgYW5kIHNlZW0gdG8gYmUgYWJvdXQgb24gYW4gCmVxdWFsaXR5IHdpdGggdGhlIGh1bW1pbmctYmlyZHMgb3IgYmVlcyBvciBidXR0ZXJmbGllcyB3aGljaCB0aGV5IHNvIGNsb3NlbHkgCnJlc2VtYmxlLiBBcyB3ZSBoYXZlIHNlZW4gZnJvbSBvdXIgZGlhZ3JhbSwgdGhpcyBvbmUgbmFtZSBvZiBuYXR1cmUtc3Bpcml0IApjb3ZlcnMgYSBsYXJnZSBzZWdtZW50IG9mIHRoZSBhcmMgb2YgZXZvbHV0aW9uLCBpbmNsdWRpbmcgc3RhZ2VzIGNvcnJlc3BvbmRpbmcgCnRvIHRoZSB3aG9sZSBvZiB0aGUgdmVnZXRhYmxlIGFuZCBhbmltYWwga2luZ2RvbXMsIGFuZCB0byBodW1hbml0eSB1cCB0byBhbG1vc3QgCnRoZSBwcmVzZW50IGxldmVsIG9mIG91ciBvd24gcmFjZS4gCgoKMjEzLsKgwqDCoMKgwqDCoMKgClNvbWUgb2YgdGhlIGxvd2VyIHR5cGVzIGFyZSBub3QgcGxlYXNpbmcgdG8gdGhlIGFlc3RoZXRpYyBzZW5zZTsgYnV0IHRoYXQgCmlzIHRydWUgYWxzbyBvZiB0aGUgbG93ZXIga2luZHMgb2YgcmVwdGlsZXMgYW5kIGluc2VjdHMuIFRoZXJlIGFyZSB1bmRldmVsb3BlZCAKdHJpYmVzIHdob3NlIHRhc3RlcyBhcmUgY29hcnNlLCBhbmQgbmF0dXJhbGx5IHRoZWlyIGFwcGVhcmFuY2UgY29ycmVzcG9uZHMgdG8gCnRoZSBzdGFnZSBvZiB0aGVpciBldm9sdXRpb24uIFRoZSBzaGFwZWxlc3MgbWFzc2VzIHdpdGggaHVnZSByZWQgZ2FwaW5nIG1vdXRocywgCndoaWNoIGxpdmUgdXBvbiB0aGUgbG9hdGhzb21lIGV0aGVyaWMgZW1hbmF0aW9ucyBvZiBibG9vZCBhbmQgZGVjYXlpbmcgZmxlc2gsIAphcmUgaG9ycmlibGUgYm90aCB0byB0aGUgc2lnaHQgYW5kIHRvIHRoZSBmZWVsaW5nIG9mIGFueSBwdXJlLW1pbmRlZCBwZXJzb247IHNvIAphbHNvIGFyZSB0aGUgcmFwYWNpb3VzIHJlZC1icm93biBjcnVzdGFjZWFuIGNyZWF0dXJlcyB3aGljaCBob3ZlciBvdmVyIGhvdXNlcyBvZiAKaWxsLWZhbWUsIGFuZCB0aGUgc2F2YWdlIG9jdG9wdXMtbGlrZSBtb25zdGVycyB3aGljaCBnbG9hdCBvdmVyIHRoZSBvcmdpZXMgb2YgCnRoZSBkcnVua2FyZCBhbmQgcmV2ZWwgaW4gdGhlIGZ1bWVzIG9mIGFsY29ob2wuIEJ1dCBldmVuIHRoZXNlIGhhcnBpZXMgYXJlIG5vdCAKZXZpbCBpbiB0aGVtc2VsdmVzLCB0aG91Z2ggcmVwdWxzaXZlIHRvIG1hbjsgYW5kIG1hbiB3b3VsZCBuZXZlciBjb21lIGludG8gCmNvbnRhY3Qgd2l0aCB0aGVtIHVubGVzcyBoZSBkZWdyYWRlZCBoaW1zZWxmIHRvIHRoZWlyIGxldmVsIGJ5IGJlY29taW5nIHRoZSAKc2xhdmUgb2YgaGlzIGxvd2VyIHBhc3Npb25zLiAKCgoyMTQuwqDCoMKgwqDCoMKgwqAKSXQgaXMgb25seSBuYXR1cmUtc3Bpcml0cyBvZiB0aGVzZSBhbmQgc2ltaWxhciBwcmltaXRpdmUgYW5kIHVucGxlYXNhbnQgCmtpbmRzIHdoaWNoIHZvbHVudGFyaWx5IGFwcHJvYWNoIHRoZSBhdmVyYWdlIG1hbi4gT3RoZXJzIG9mIHRoZSBzYW1lIHNvcnQsIGJ1dCBhIApzaGFkZSBsZXNzIG1hdGVyaWFsLCBlbmpveSB0aGUgc2Vuc2F0aW9uIG9mIGJhdGhpbmcgaW4gYW55IHNwZWNpYWxseSBjb2Fyc2UgCmFzdHJhbCByYWRpYXRpb25zLCBzdWNoIGFzIHRob3NlIHByb2R1Y2VkIGJ5IGFuZ2VyLCBhdmFyaWNlLCBjcnVlbHR5LCBqZWFsb3VzeSAKYW5kIGhhdHJlZC4gUGVvcGxlIHlpZWxkaW5nIHRoZW1zZWx2ZXMgdG8gc3VjaCBmZWVsaW5ncyBjYW4gZGVwZW5kIHVwb24gYmVpbmcgCmNvbnN0YW50bHkgc3Vycm91bmRlZCBieSB0aGVzZSBjYXJyaW9uIGNyb3dzIG9mIHRoZSBhc3RyYWwgd29ybGQsIHdobyBxdWl2ZXIgaW4gCnRoZWlyIGdoYXN0bHkgZ2xlZSBhcyB0aGV5IGpvc3RsZSBvbmUgYW5vdGhlciBpbiBlYWdlciBhbnRpY2lwYXRpb24gb2YgYW4gCm91dGJ1cnN0IG9mIHBhc3Npb24sIGFuZCBpbiB0aGVpciBibGluZCwgYmx1bmRlcmluZyB3YXkgZG8gd2hhdGV2ZXIgdGhleSBjYW4gdG8gCnByb3Zva2Ugb3IgaW50ZW5zaWZ5IGl0LiBJdCBpcyBkaWZmaWN1bHQgdG8gYmVsaWV2ZSB0aGF0IHN1Y2ggaG9ycm9ycyBhcyB0aGVzZSAKY2FuIGJlbG9uZyB0byB0aGUgc2FtZSBraW5nZG9tIGFzIHRoZSBqb2N1bmQgc3Bpcml0cyBuZXh0IHRvIGJlIGRlc2NyaWJlZC4gCgoKMjE1LsKgwqDCoMKgwqDCoMKgCkZBSVJJRVMgCgoKMjE2LsKgwqDCoMKgwqDCoMKgClRoZSB0eXBlIGJlc3Qga25vd24gdG8gbWFuIGlzIHRoYXQgb2YgdGhlIGZhaXJpZXMsIHRoZSBzcGlyaXRzIHdobyBsaXZlIApub3JtYWxseSB1cG9uIHRoZSBzdXJmYWNlIG9mIHRoZSBlYXJ0aCwgdGhvdWdoLCBzaW5jZSB0aGVpciBib2RpZXMgYXJlIG9mIApldGhlcmljIG1hdHRlciwgdGhleSBjYW4gcGFzcyBpbnRvIHRoZSBncm91bmQgYXQgd2lsbC4gVGhlaXIgZm9ybXMgYXJlIG1hbnkgYW5kIAp2YXJpb3VzLCBidXQgbW9zdCBmcmVxdWVudGx5IGh1bWFuIGluIHNoYXBlIGFuZCBzb21ld2hhdCBkaW1pbnV0aXZlIGluIHNpemUsIAp1c3VhbGx5IHdpdGggYSBncm90ZXNxdWUgZXhhZ2dlcmF0aW9uIG9mIHNvbWUgcGFydGljdWxhciBmZWF0dXJlIG9yIGxpbWIuIApFdGhlcmljIG1hdHRlciBiZWluZyBwbGFzdGljIGFuZCByZWFkaWx5IG1vdWxkZWQgYnkgdGhlIHBvd2VyIG9mIHRob3VnaHQsIHRoZXkgCmFyZSBhYmxlIHRvIGFzc3VtZSBhbG1vc3QgYW55IGFwcGVhcmFuY2UgYXQgd2lsbCwgYnV0IHRoZXkgbmV2ZXJ0aGVsZXNzIGhhdmUgCmRlZmluaXRlIGZvcm1zIG9mIHRoZWlyIG93biwgd2hpY2ggdGhleSB3ZWFyIHdoZW4gdGhleSBoYXZlIG5vIHNwZWNpYWwgb2JqZWN0IHRvIApzZXJ2ZSBieSB0YWtpbmcgYW55IG90aGVyLCBhbmQgYXJlIHRoZXJlZm9yZSBub3QgZXhlcnRpbmcgdGhlaXIgd2lsbCB0byBwcm9kdWNlIAphIGNoYW5nZSBvZiBzaGFwZS4gVGhleSBoYXZlIGFsc28gY29sb3VycyBvZiB0aGVpciBvd24sIG1hcmtpbmcgdGhlIGRpZmZlcmVuY2UgCmJldHdlZW4gdGhlaXIgdHJpYmVzIG9yIHNwZWNpZXMsIGp1c3QgYXMgdGhlIGJpcmRzIGhhdmUgZGlmZmVyZW5jZXMgb2YgcGx1bWFnZS4KCgoyMTcuwqDCoMKgwqDCoMKgwqAKVGhlcmUgYXJlIGFuIGltbWVuc2UgbnVtYmVyIG9mIHN1YmRpdmlzaW9ucyBvciByYWNlcyBhbW9uZyB0aGVtLCBhbmQgCmluZGl2aWR1YWxzIG9mIHRoZXNlIHN1Yi1kaXZpc2lvbnMgdmFyeSBpbiBpbnRlbGxpZ2VuY2UgYW5kIGRpc3Bvc2l0aW9uIApwcmVjaXNlbHkgYXMgaHVtYW4gYmVpbmdzIGRvLiBBZ2FpbiBsaWtlIGh1bWFuIGJlaW5ncywgdGhlc2UgZGl2ZXJzIHJhY2VzIAppbmhhYml0IGRpZmZlcmVudCBjb3VudHJpZXMsIG9yIHNvbWV0aW1lcyBkaWZmZXJlbnQgZGlzdHJpY3RzIG9mIHRoZSBzYW1lIApjb3VudHJ5LCBhbmQgdGhlIG1lbWJlcnMgb2Ygb25lIHJhY2UgaGF2ZSBhIGdlbmVyYWwgdGVuZGVuY3kgdG8ga2VlcCB0b2dldGhlciwgCmp1c3QgYXMgbWVuIG9mIG9uZSBuYXRpb24gZG8gYW1vbmcgb3Vyc2VsdmVzLiBUaGV5IGFyZSBvbiB0aGUgd2hvbGUgZGlzdHJpYnV0ZWQgCm11Y2ggYXMgYXJlIHRoZSBvdGhlciBraW5nZG9tcyBvZiBuYXR1cmU7IGxpa2UgdGhlIGJpcmRzLCBmcm9tIHdob20gc29tZSBvZiB0aGVtIApoYXZlIGJlZW4gZXZvbHZlZCwgc29tZSB2YXJpZXRpZXMgYXJlIHBlY3VsaWFyIHRvIG9uZSBjb3VudHJ5LCBvdGhlcnMgYXJlIGNvbW1vbiAKaW4gb25lIGNvdW50cnkgYW5kIHJhcmUgZWxzZXdoZXJlLCB3aGlsZSBvdGhlcnMgYWdhaW4gYXJlIHRvIGJlIGZvdW5kIGFsbW9zdCAKYW55d2hlcmUuIEFnYWluIGxpa2UgdGhlIGJpcmRzLCBpdCBpcyBicm9hZGx5IHRydWUgdGhhdCB0aGUgbW9zdCBicmlsbGlhbnRseSAKY29sb3VyZWQgb3JkZXJzIGFyZSB0byBiZSBmb3VuZCBpbiB0cm9waWNhbCBjb3VudHJpZXMuIAoKCjIxOC7CoMKgwqDCoMKgwqDCoApOQVRJT05BTCBUWVBFUyAKCgoyMTkuwqDCoMKgwqDCoMKgwqAKVGhlIHByZWRvbWluYW50IHR5cGVzIG9mIHRoZSBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIHdvcmxkIGFyZSB1c3VhbGx5IApjbGVhcmx5IGRpc3Rpbmd1aXNoYWJsZSBhbmQgaW4gYSBzZW5zZSBjaGFyYWN0ZXJpc3RpYzsgb3IgaXMgaXQgcGVyaGFwcyB0aGF0IAp0aGVpciBpbmZsdWVuY2UgaW4gdGhlIHNsb3cgY291cnNlIG9mIGFnZXMgaGFzIG1vdWxkZWQgdGhlIG1lbiBhbmQgYW5pbWFscyBhbmQgCnBsYW50cyB3aG8gbGl2ZWQgbmVhciB0aGVtLCBzbyB0aGF0IGl0IGlzIHRoZSBuYXR1cmUtc3Bpcml0IHdobyBoYXMgc2V0IHRoZSAKZmFzaGlvbiBhbmQgdGhlIG90aGVyIGtpbmdkb21zIHdoaWNoIGhhdmUgdW5jb25zY2lvdXNseSBmb2xsb3dlZCBpdD8gRm9yIApleGFtcGxlLCBubyBjb250cmFzdCBjb3VsZCB3ZWxsIGJlIG1vcmUgbWFya2VkIHRoYW4gdGhhdCBiZXR3ZWVuIHRoZSB2aXZhY2lvdXMsIApyb2xsaWNraW5nLCBvcmFuZ2UtYW5kLXB1cnBsZSBvciBzY2FybGV0LWFuZC1nb2xkIG1hbm5pa2lucyB3aG8gZGFuY2UgYW1vbmcgdGhlIAp2aW5leWFyZHMgb2YgU2ljaWx5IGFuZCB0aGUgYWxtb3N0IHdpc3RmdWwgZ3JleS1hbmQtZ3JlZW4gY3JlYXR1cmVzIHdobyBtb3ZlIHNvIAptdWNoIG1vcmUgc2VkYXRlbHkgYW1pZHN0IHRoZSBvYWtzIGFuZCB0aGUgZnVyemUtY292ZXJlZCBoZWF0aHMgaW4gQnJpdHRhbnksIG9yIAp0aGUgZ29sZGVuLWJyb3duIO+/vWdvb2QgcGVvcGxl77+9IHdobyBoYXVudCB0aGUgaGlsbC1zaWRlcyBvZiBTY290bGFuZC4gCgoKMjIwLsKgwqDCoMKgwqDCoMKgCkluIEVuZ2xhbmQgdGhlIGVtZXJhbGQtZ3JlZW4gdmFyaWV0eSBpcyBwcm9iYWJseSB0aGUgY29tbW9uZXN0LCBhbmQgSSAKaGF2ZSBzZWVuIGl0IGFsc28gaW4gdGhlIHdvb2RzIG9mIEZyYW5jZSBhbmQgQmVsZ2l1bSwgaW4gZmFyLWF3YXkgTWFzc2FjaHVzZXR0cyAKYW5kIG9uIHRoZSBiYW5rcyBvZiB0aGUgTmlhZ2FyYSBSaXZlci4gVGhlIHZhc3QgcGxhaW5zIG9mIHRoZSBEYWtvdGFzIGFyZSAKaW5oYWJpdGVkIGJ5IGEgYmxhY2stYW5kLXdoaXRlIGtpbmQgd2hpY2ggSSBoYXZlIG5vdCBzZWVuIGVsc2V3aGVyZSwgYW5kIApDYWxpZm9ybmlhIHJlam9pY2VzIGluIGEgbG92ZWx5IHdoaXRlLWFuZC1nb2xkIHNwZWNpZXMgd2hpY2ggYWxzbyBhcHBlYXJzIHRvIGJlIAp1bmlxdWUuIAoKCjIyMS7CoMKgwqDCoMKgwqDCoApJbiBBdXN0cmFsaWEgdGhlIG1vc3QgZnJlcXVlbnQgdHlwZSBpcyBhIHZlcnkgZGlzdGluY3RpdmUgY3JlYXR1cmUgb2YgYSAKd29uZGVyZnVsIGx1bWlub3VzIHNreWJsdWUgY29sb3VyOyBidXQgdGhlcmUgaXMgYSB3aWRlIGRpdmVyc2l0eSBiZXR3ZWVuIHRoZSAKZXRoZXJpYyBpbmhhYml0YW50cyBvZiBOZXcgU291dGggV2FsZXMgb3IgVmljdG9yaWEgYW5kIHRob3NlIG9mIHRyb3BpY2FsIApOb3J0aGVybiBRdWVlbnNsYW5kLiBUaGVzZSBsYXR0ZXIgYXBwcm94aW1hdGUgY2xvc2VseSB0byB0aG9zZSBvZiB0aGUgRHV0Y2ggCkluZGllcy4gSmF2YSBzZWVtcyBzcGVjaWFsbHkgcHJvbGlmaWMgaW4gdGhlc2UgZ3JhY2VmdWwgY3JlYXR1cmVzLCBhbmQgdGhlIGtpbmRzIAptb3N0IGNvbW1vbiB0aGVyZSBhcmUgdHdvIGRpc3RpbmN0IHR5cGVzLCBib3RoIG1vbm9jaHJvbWF0aWMtLSBvbmUgaW5kaWdvIGJsdWUgCndpdGggZmFpbnQgbWV0YWxsaWMgZ2xlYW1pbmdzLCBhbmQgdGhlIG90aGVyIGEgc3R1ZHkgaW4gYWxsIGtub3duIHNoYWRlcyBvZiAKeWVsbG93LS0gcXVhaW50LCBidXQgd29uZGVyZnVsbHkgZWZmZWN0aXZlIGFuZCBhdHRyYWN0aXZlLiAKCgoyMjIuwqDCoMKgwqDCoMKgwqAKQSBzdHJpa2luZyBsb2NhbCB2YXJpZXR5IGlzIGdhdWRpbHkgcmluZ2VkIHdpdGggYWx0ZXJuYXRlIGJhcnMgb2YgZ3JlZW4gCmFuZCB5ZWxsb3csIGxpa2UgYSBmb290YmFsbCBqZXJzZXkuIFRoaXMgcmluZ2VkIHR5cGUgaXMgcG9zc2libHkgYSByYWNlIHBlY3VsaWFyIAp0byB0aGF0IHBhcnQgb2YgdGhlIHdvcmxkLCBmb3IgSSBzYXcgcmVkIGFuZCB5ZWxsb3cgc2ltaWxhcmx5IGFycmFuZ2VkIGluIHRoZSAKTWFsYXkgUGVuaW5zdWxhLCBhbmQgZ3JlZW4gYW5kIHdoaXRlIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBTdHJhaXRzIGluIApTdW1hdHJhLiBUaGF0IGh1Z2UgaXNsYW5kIGFsc28gcmVqb2ljZXMgaW4gdGhlIHBvc3Nlc3Npb24gb2YgYSBsb3ZlbHkgcGFsZSAKaGVsaW90cm9wZSB0cmliZSB3aGljaCBJIGhhdmUgc2VlbiBiZWZvcmUgb25seSBpbiB0aGUgaGlsbHMgb2YgQ2V5bG9uLiBEb3duIGluIApOZXcgWmVhbGFuZCB0aGVpciBzcGVjaWFsdHkgaXMgYSBkZWVwIGJsdWUgc2hvdCB3aXRoIHNpbHZlciwgd2hpbGUgaW4gdGhlIFNvdXRoIApTZWEgSXNsYW5kcyBvbmUgbWVldHMgd2l0aCBhIHNpbHZlcnktd2hpdGUgdmFyaWV0eSB3aGljaCBjb3J1c2NhdGVzIHdpdGggYWxsIHRoZSAKY29sb3VycyBvZiB0aGUgcmFpbmJvdywgbGlrZSBhIGZpZ3VyZSBvZiBtb3RoZXItb2YtcGVhcmwuIAoKCjIyMy7CoMKgwqDCoMKgwqDCoApJbiBJbmRpYSB3ZSBmaW5kIGFsbCBzb3J0cywgZnJvbSB0aGUgZGVsaWNhdGUgcm9zZS1hbmQtcGFsZS1ncmVlbiwgb3IgCnBhbGVibHVlLWFuZC1wcmltcm9zZSBvZiB0aGUgaGlsbCBjb3VudHJ5IHRvIHRoZSByaWNoIG1lZGxleSBvZiBnb3JnZW91c2x5IApnbGVhbWluZyBjb2xvdXJzLCBhbG1vc3QgYmFyYmFyaWMgaW4gdGhlaXIgaW50ZW5zaXR5IGFuZCBwcm9mdXNpb24sIHdoaWNoIGlzIApjaGFyYWN0ZXJpc3RpYyBvZiB0aGUgcGxhaW5zLiBJbiBzb21lIHBhcnRzIG9mIHRoYXQgbWFydmVsbG91cyBjb3VudHJ5IEkgaGF2ZSAKc2VlbiB0aGUgYmxhY2stYW5kLWdvbGQgdHlwZSB3aGljaCBpcyBtb3JlIHVzdWFsbHkgYXNzb2NpYXRlZCB3aXRoIHRoZSBBZnJpY2FuIApkZXNlcnQsIGFuZCBhbHNvIGEgc3BlY2llcyB3aGljaCByZXNlbWJsZXMgYSBzdGF0dWV0dGUgbWFkZSBvdXQgb2YgYSBnbGVhbWluZyAKY3JpbXNvbiBtZXRhbCwgc3VjaCBhcyB3YXMgdGhlIG9yaWNoYWxjdW0gb2YgdGhlIEF0bGFudGVhbnMuIAoKCjIyNC7CoMKgwqDCoMKgwqDCoApTb21ld2hhdCBha2luIHRvIHRoaXMgbGFzdCBpcyBhIGN1cmlvdXMgdmFyaWV0eSB3aGljaCBsb29rcyBhcyB0aG91Z2ggCmNhc3Qgb3V0IG9mIGJyb256ZSBhbmQgYnVybmlzaGVkOyBpdCBhcHBlYXJzIHRvIG1ha2UgaXRzIGhvbWUgaW4gdGhlIGltbWVkaWF0ZSAKbmVpZ2hib3VyaG9vZCBvZiB2b2xjYW5pYyBkaXN0dXJiYW5jZXMsIHNpbmNlIHRoZSBvbmx5IHBsYWNlcyBpbiB3aGljaCBpdCBoYXMgCmJlZW4gc2VlbiBzbyBmYXIgYXJlIHRoZSBzbG9wZXMgb2YgVmVzdXZpdXMgYW5kIEV0bmEsIHRoZSBpbnRlcmlvciBvZiBKYXZhLCB0aGUgClNhbmR3aWNoIElzbGFuZHMsIHRoZSBZZWxsb3dzdG9uZSBQYXJrIGluIE5vcnRoIEFtZXJpY2EsIGFuZCBhIGNlcnRhaW4gcGFydCBvZiAKdGhlIE5vcnRoIElzbGFuZCBvZiBOZXcgWmVhbGFuZC4gU2V2ZXJhbCBpbmRpY2F0aW9ucyBzZWVtIHRvIHBvaW50IHRvIHRoZSAKY29uY2x1c2lvbiB0aGF0IHRoaXMgaXMgYSBzdXJ2aXZhbCBvZiBhIHByaW1pdGl2ZSB0eXBlLCBhbmQgcmVwcmVzZW50cyBhIHNvcnQgb2YgCmludGVybWVkaWF0ZSBzdGFnZSBiZXR3ZWVuIHRoZSBnbm9tZSBhbmQgdGhlIGZhaXJ5LiAKCgoyMjUuwqDCoMKgwqDCoMKgwqAKSW4gc29tZSBjYXNlcywgZGlzdHJpY3RzIGNsb3NlIHRvZ2V0aGVyIGFyZSBmb3VuZCB0byBiZSBpbmhhYml0ZWQgYnkgCnF1aXRlIGRpZmZlcmVudCBjbGFzc2VzIG9mIG5hdHVyZS1zcGlyaXRzOyBmb3IgZXhhbXBsZSwgYXMgaGFzIGFscmVhZHkgYmVlbiAKbWVudGlvbmVkLCB0aGUgZW1lcmFsZC1ncmVlbiBlbHZlcyBhcmUgY29tbW9uIGluIEJlbGdpdW0sIHlldCBhIGh1bmRyZWQgbWlsZXMgCmF3YXkgaW4gSG9sbGFuZCBoYXJkbHkgb25lIG9mIHRoZW0gaXMgdG8gYmUgc2VlbiwgYW5kIHRoZWlyIHBsYWNlIGlzIHRha2VuIGJ5IGEgCnNvYmVyLWxvb2tpbmcgZGFyay1wdXJwbGUgc3BlY2llcy4gCgoKMjI2LsKgwqDCoMKgwqDCoMKgCk9OIEEgU0FDUkVEIE1PVU5UQUlOIElOIElSRUxBTkQgCgoKMjI3LsKgwqDCoMKgwqDCoMKgCkEgY3VyaW91cyBmYWN0IGlzIHRoYXQgYWx0aXR1ZGUgYWJvdmUgdGhlIHNlYS1sZXZlbCBzZWVtcyB0byBhZmZlY3QgdGhlaXIgCmRpc3RyaWJ1dGlvbiwgdGhvc2Ugd2hvIGJlbG9uZyB0byB0aGUgbW91bnRhaW5zIHNjYXJjZWx5IGV2ZXIgaW50ZXJtaW5nbGluZyB3aXRoIAp0aG9zZSBvZiB0aGUgcGxhaW5zLiBJIHdlbGwgcmVtZW1iZXIsIHdoZW4gY2xpbWJpbmcgU2xpZXZlLW5hbW9uLCBvbmUgb2YgdGhlIAp0cmFkaXRpb25hbGx5IHNhY3JlZCBoaWxscyBvZiBJcmVsYW5kLCBub3RpY2luZyB0aGUgdmVyeSBkZWZpbml0ZSBsaW5lcyBvZiAKZGVtYXJjYXRpb24gYmV0d2VlbiB0aGUgZGlmZmVyZW50IHR5cGVzLiBUaGUgbG93ZXIgc2xvcGVzLCBsaWtlIHRoZSBzdXJyb3VuZGluZyAKcGxhaW5zLCB3ZXJlIGFsaXZlIHdpdGggdGhlIGludGVuc2VseSBhY3RpdmUgYW5kIG1pc2NoaWV2b3VzIGxpdHRsZSAKcmVkLWFuZC1ibGFjayByYWNlIHdoaWNoIHN3YXJtcyBhbGwgb3ZlciB0aGUgc291dGggYW5kIHdlc3Qgb2YgSXJlbGFuZCwgYmVpbmcgCmVzcGVjaWFsbHkgYXR0cmFjdGVkIHRvIHRoZSBtYWduZXRpYyBjZW50cmVzIGVzdGFibGlzaGVkIG5lYXJseSB0d28gdGhvdXNhbmQgCnllYXJzIGFnbyBieSB0aGUgbWFnaWMtd29ya2luZyBwcmllc3RzIG9mIHRoZSBvbGQgTWlsZXNpYW4gcmFjZSB0byBlbnN1cmUgYW5kIApwZXJwZXR1YXRlIHRoZWlyIGRvbWluYXRpb24gb3ZlciB0aGUgcGVvcGxlIGJ5IGtlZXBpbmcgdGhlbSB1bmRlciB0aGUgaW5mbHVlbmNlIApvZiB0aGUgZ3JlYXQgaWxsdXNpb24uIEFmdGVyIGhhbGYtYW4taG91cicgcyBjbGltYmluZywgaG93ZXZlciwgbm90IG9uZSBvZiB0aGVzZSAKcmVkLWFuZC1ibGFjayBnZW50cnkgd2FzIHRvIGJlIHNlZW4sIGJ1dCBpbnN0ZWFkIHRoZSBoaWxsc2lkZSB3YXMgcG9wdWxvdXMgd2l0aCAKdGhlIGdlbnRsZXIgYmx1ZS1hbmQtYnJvd24gdHlwZSB3aGljaCBsb25nIGFnbyBvd2VkIHNwZWNpYWwgYWxsZWdpYW5jZSB0byB0aGUgClR1YXRoYS1kZS1EYW5hYW4uIAoKCjIyOC7CoMKgwqDCoMKgwqDCoApUaGVzZSBhbHNvIGhhZCB0aGVpciB6b25lIGFuZCB0aGVpciB3ZWxsLWRlZmluZWQgbGltaXRzLCBhbmQgbm8gCm5hdHVyZS1zcGlyaXQgb2YgZWl0aGVyIHR5cGUgZXZlciB2ZW50dXJlZCB0byB0cmVzcGFzcyB1cG9uIHRoZSBzcGFjZSByb3VuZCB0aGUgCnN1bW1pdCwgc2FjcmVkIHRvIHRoZSBncmVhdCBncmVlbiBhbmdlbHMgd2hvIGhhdmUgd2F0Y2hlZCB0aGVyZSBmb3IgbW9yZSB0aGFuIAp0d28gdGhvdXNhbmQgeWVhcnMsIGd1YXJkaW5nIG9uZSBvZiB0aGUgY2VudHJlcyBvZiBsaXZpbmcgZm9yY2UgdGhhdCBsaW5rIHRoZSAKcGFzdCB0byB0aGUgZnV0dXJlIG9mIHRoYXQgbXlzdGljIGxhbmQgb2YgRXJpbi4gVGFsbGVyIGZhciB0aGFuIHRoZSBoZWlnaHQgb2YgCm1hbiwgdGhlc2UgZ2lhbnQgZm9ybXMsIGluIGNvbG91ciBsaWtlIHRoZSBmaXJzdCBuZXcgbGVhdmVzIG9mIHNwcmluZywgc29mdCwgCmx1bWlub3VzLCBzaGltbWVyaW5nLCBpbmRlc2NyaWJhYmxlLCBsb29rIGZvcnRoIG92ZXIgdGhlIHdvcmxkIHdpdGggd29uZHJvdXMgCmV5ZXMgdGhhdCBzaGluZSBsaWtlIHN0YXJzLCBmdWxsIG9mIHRoZSBwZWFjZSBvZiB0aG9zZSB3aG8gbGl2ZSBpbiB0aGUgZXRlcm5hbCwgCndhaXRpbmcgd2l0aCB0aGUgY2FsbSBjZXJ0YWludHkgb2Yga25vd2xlZGdlIHVudGlsIHRoZSBhcHBvaW50ZWQgdGltZSBzaGFsbCAKY29tZS4gT25lIHJlYWxpc2VzIHZlcnkgZnVsbHkgdGhlIHBvd2VyIGFuZCBpbXBvcnRhbmNlIG9mIHRoZSBoaWRkZW4gc2lkZSBvZiAKdGhpbmdzIHdoZW4gb25lIGJlaG9sZHMgc3VjaCBhIHNwZWN0YWNsZSBhcyB0aGF0LiAKCgoyMjkuwqDCoMKgwqDCoMKgwqAKQnV0IGluZGVlZCBpdCBpcyBzY2FyY2VseSBoaWRkZW4sIGZvciB0aGUgZGlmZmVyZW50IGluZmx1ZW5jZXMgYXJlIHNvIApzdHJvbmcgYW5kIHNvIGRpc3RpbmN0IHRoYXQgYW55b25lIGluIHRoZSBsZWFzdCBzZW5zaXRpdmUgY2Fubm90IGJ1dCBiZSBhd2FyZSBvZiAKdGhlbSwgYW5kIHRoZXJlIGlzIGdvb2QgcmVhc29uIGZvciB0aGUgbG9jYWwgdHJhZGl0aW9uIHRoYXQgaGUgd2hvIHNwZW5kcyBhIApuaWdodCB1cG9uIHRoZSBzdW1taXQgb2YgdGhlIG1vdW50YWluIHNoYWxsIGF3YWtlbiBpbiB0aGUgbW9ybmluZyBlaXRoZXIgYSBwb2V0IApvciBhIG1hZG1hbi4gQSBwb2V0LCBpZiBoZSBoYXMgcHJvdmVkIGNhcGFibGUgb2YgcmVzcG9uc2UgdG8gdGhlIGV4YWx0YXRpb24gb2YgCnRoZSB3aG9sZSBiZWluZyBwcm9kdWNlZCBieSB0aGUgdHJlbWVuZG91cyBtYWduZXRpc20gd2hpY2ggaGFzIHBsYXllZCB1cG9uIGhpbSAKd2hpbGUgaGUgc2xlcHQ7IGEgbWFkbWFuLCBpZiBoZSB3YXMgbm90IHN0cm9uZyBlbm91Z2ggdG8gYmVhciB0aGUgc3RyYWluLiAKCgoyMzAuwqDCoMKgwqDCoMKgwqAKRkFJUlkgTElGRSBBTkQgREVBVEggCgoKMjMxLsKgwqDCoMKgwqDCoMKgClRoZSBsaWZlLXBlcmlvZHMgb2YgdGhlIGRpZmZlcmVudCBzdWJkaXZpc2lvbnMgb2YgbmF0dXJlLXNwaXJpdHMgdmFyeSAKZ3JlYXRseSwgc29tZSBiZWluZyBxdWl0ZSBzaG9ydCwgb3RoZXJzIG11Y2ggbG9uZ2VyIHRoYW4gb3VyIGh1bWFuIGxpZmV0aW1lLiBUaGUgCnVuaXZlcnNhbCBwcmluY2lwbGUgb2YgcmVpbmNhcm5hdGlvbiBvYnRhaW5zIGluIHRoZWlyIGV4aXN0ZW5jZSBhbHNvLCB0aG91Z2ggdGhlIApjb25kaXRpb25zIG5hdHVyYWxseSBtYWtlIGl0cyB3b3JraW5nIHNsaWdodGx5IGRpZmZlcmVudC4gVGhleSBoYXZlIG5vIHBoZW5vbWVuYSAKY29ycmVzcG9uZGluZyB0byB3aGF0IHdlIG1lYW4gYnkgYmlydGggYW5kIGdyb3d0aDsgYSBmYWlyeSBhcHBlYXJzIGluIGhpcyB3b3JsZCAKZnVsbC1zaXplZCwgYXMgYW4gaW5zZWN0IGRvZXMuIEhlIGxpdmVzIGhpcyBsaWZlLCBzaG9ydCBvciBsb25nLCB3aXRob3V0IGFueSAKYXBwZWFyYW5jZSBvZiBmYXRpZ3VlIG9yIG5lZWQgb2YgcmVzdCwgYW5kIHdpdGhvdXQgYW55IHBlcmNlcHRpYmxlIHNpZ25zIG9mIGFnZSAKYXMgdGhlIHllYXJzIHBhc3MuIAoKCjIzMi7CoMKgwqDCoMKgwqDCoApCdXQgYXQgbGFzdCB0aGVyZSBjb21lcyBhIHRpbWUgd2hlbiBoaXMgZW5lcmd5IHNlZW1zIHRvIGhhdmUgZXhoYXVzdGVkIAppdHNlbGYsIHdoZW4gaGUgYmVjb21lcyBzb21ld2hhdCB0aXJlZCBvZiBsaWZlOyBhbmQgd2hlbiB0aGF0IGhhcHBlbnMgaGlzIGJvZHkgCmdyb3dzIG1vcmUgYW5kIG1vcmUgZGlhcGhhbm91cyB1bnRpbCBoZSBpcyBsZWZ0IGFzIGFuIGFzdHJhbCBlbnRpdHksIHRvIGxpdmUgZm9yIAphIHRpbWUgaW4gdGhhdCB3b3JsZCBhbW9uZyB0aGUgYWlyLXNwaXJpdHMgd2hvIHJlcHJlc2VudCB0aGUgbmV4dCBzdGFnZSBvZiAKZGV2ZWxvcG1lbnQgZm9yIGhpbS4gVGhyb3VnaCB0aGF0IGFzdHJhbCBsaWZlIGhlIGZhZGVzIGJhY2sgaW50byBoaXMgZ3JvdXAtc291bCwgCmluIHdoaWNoIGhlIG1heSBoYXZlIChpZiBzdWZmaWNpZW50bHkgYWR2YW5jZWQpIGEgY2VydGFpbiBhbW91bnQgb2YgY29uc2Npb3VzIApleGlzdGVuY2UgYmVmb3JlIHRoZSBjeWNsaWMgbGF3IGFjdHMgdXBvbiB0aGUgZ3JvdXAtc291bCBvbmNlIG1vcmUgYnkgYXJvdXNpbmcgCmluIGl0IHRoZSBkZXNpcmUgZm9yIHNlcGFyYXRpb24uIFdoZW4gdGhpcyBoYXBwZW5zLCBpdHMgcHJlc3N1cmUgdHVybnMgdGhlIApzdHJlYW0gb2YgaXRzIGVuZXJneSBvdXR3YXJkIG9uY2UgbW9yZSwgYW5kIHRoYXQgZGVzaXJlLCBhY3RpbmcgdXBvbiB0aGUgcGxhc3RpYyAKYXN0cmFsIGFuZCBldGhlcmljIG1hdHRlciwgbWF0ZXJpYWxpc2VzIGEgYm9keSBvZiBzaW1pbGFyIHR5cGUsIHN1Y2ggYXMgaXMgCnN1aXRhYmxlIHRvIGJlIGFuIGV4cHJlc3Npb24gb2YgdGhlIGRldmVsb3BtZW50IGF0dGFpbmVkIGluIHRoYXQgbGFzdCBsaWZlLiAKCgoyMzMuwqDCoMKgwqDCoMKgwqAKQmlydGggYW5kIGRlYXRoLCB0aGVyZWZvcmUsIGFyZSBtdWNoIHNpbXBsZXIgZm9yIHRoZSBuYXR1cmUtc3Bpcml0IHRoYW4gCmZvciB1cywgYW5kIGRlYXRoIGlzIGZvciBoaW0gcXVpdGUgZnJlZSBmcm9tIGFsbCB0aG91Z2h0IG9mIHNvcnJvdy4gSW5kZWVkLCBoaXMgCndob2xlIGxpZmUgc2VlbXMgc2ltcGxlci0tIGEgam95b3VzLCBpcnJlc3BvbnNpYmxlIGtpbmQgb2YgZXhpc3RlbmNlLCBtdWNoIHN1Y2ggCmFzIGEgcGFydHkgb2YgaGFwcHkgY2hpbGRyZW4gbWlnaHQgbGVhZCBhbW9uZyBleGNlcHRpb25hbGx5IGZhdm9yYWJsZSBwaHlzaWNhbCAKc3Vycm91bmRpbmdzLiBUaGVyZSBpcyBubyBzZXggYW1vbmcgbmF0dXJlLXNwaXJpdHMsIHRoZXJlIGlzIG5vIGRpc2Vhc2UsIGFuZCAKdGhlcmUgaXMgbm8gc3RydWdnbGUgZm9yIGV4aXN0ZW5jZSwgc28gdGhhdCB0aGV5IGFyZSBleGVtcHQgZnJvbSB0aGUgbW9zdCAKZmVydGlsZSBjYXVzZXMgb2YgaHVtYW4gc3VmZmVyaW5nLiBUaGV5IGhhdmUga2VlbiBhZmZlY3Rpb25zIGFuZCBhcmUgY2FwYWJsZSBvZiAKZm9ybWluZyBjbG9zZSBhbmQgbGFzdGluZyBmcmllbmRzaGlwcywgZnJvbSB3aGljaCB0aGV5IGRlcml2ZSBwcm9mb3VuZCBhbmQgCm5ldmVyLWZhaWxpbmcgam95LiBKZWFsb3VzeSBhbmQgYW5nZXIgYXJlIHBvc3NpYmxlIHRvIHRoZW0sIGJ1dCBzZWVtIHF1aWNrbHkgdG8gCmZhZGUgYmVmb3JlIHRoZSBvdmVyd2hlbG1pbmcgZGVsaWdodCBpbiBhbGwgdGhlIG9wZXJhdGlvbnMgb2YgbmF0dXJlIHdoaWNoIGlzIAp0aGVpciBtb3N0IHByb21pbmVudCBjaGFyYWN0ZXJpc3RpYy4gCgoKMjM0LsKgwqDCoMKgwqDCoMKgClRIRUlSIFBMRUFTVVJFUyAKCgoyMzUuwqDCoMKgwqDCoMKgwqAKVGhleSBnbG9yeSBpbiB0aGUgbGlnaHQgYW5kIGdsb3cgb2YgdGhlIHN1bnNoaW5lLCBidXQgdGhleSBkYW5jZSB3aXRoIAplcXVhbCBwbGVhc3VyZSBpbiB0aGUgbW9vbmxpZ2h0OyB0aGV5IHNoYXJlIGFuZCByZWpvaWNlIGluIHRoZSBzYXRpc2ZhY3Rpb24gb2YgCnRoZSB0aGlyc3R5IGVhcnRoIGFuZCB0aGUgZmxvd2VycyBhbmQgdGhlIHRyZWVzIHdoZW4gdGhleSBmZWVsIHRoZSBsZXZlbCBsYW5jZXMgCm9mIHRoZSByYWluLCBidXQgdGhleSBwbGF5IGp1c3QgYXMgaGFwcGlseSB3aXRoIHRoZSBmYWxsaW5nIGZsYWtlcyBvZiBzbm93OyB0aGV5IAphcmUgY29udGVudCB0byBmbG9hdCBpZGx5IGluIHRoZSBjYWxtIG9mIGEgc3VtbWVyIGFmdGVybm9vbiwgeWV0IHRoZXkgcmV2ZWwgaW4gCnRoZSBydXNoaW5nIG9mIHRoZSB3aW5kLiBOb3Qgb25seSBkbyB0aGV5IGFkbWlyZSwgd2l0aCBhbiBpbnRlbnNpdHkgdGhhdCBmZXcgb2YgCnVzIGNhbiB1bmRlcnN0YW5kLCB0aGUgYmVhdXR5IG9mIGEgZmxvd2VyIG9yIGEgdHJlZSwgdGhlIGRlbGljYWN5IG9mIGl0cyBjb2xvdXIgCm9yIHRoZSBncmFjZSBvZiBpdHMgZm9ybSwgYnV0IHRoZXkgdGFrZSBhcmRlbnQgaW50ZXJlc3QgYW5kIGRlZXAgZGVsaWdodCBpbiBhbGwgCnRoZSBwcm9jZXNzZXMgb2YgbmF0dXJlLCBpbiB0aGUgZmxvd2luZyBvZiBzYXAsIGluIHRoZSBvcGVuaW5nIG9mIGJ1ZHMsIGluIHRoZSAKZm9ybWF0aW9uIGFuZCBmYWxsaW5nIG9mIGxlYXZlcy4gTmF0dXJhbGx5IHRoaXMgY2hhcmFjdGVyaXN0aWMgaXMgdXRpbGlzZWQgYnkgCnRoZSBHcmVhdCBPbmVzIGluIGNoYXJnZSBvZiBldm9sdXRpb24sIGFuZCBuYXR1cmUtc3Bpcml0cyBhcmUgZW1wbG95ZWQgdG8gYXNzaXN0IAppbiB0aGUgYmxlbmRpbmcgb2YgY29sb3VycyBhbmQgdGhlIGFycmFuZ2VtZW50IG9mIHZhcmlhdGlvbnMuIFRoZXkgcGF5IG11Y2ggCmF0dGVudGlvbiwgdG9vLCB0byBiaXJkIGFuZCBpbnNlY3QgbGlmZSwgdG8gdGhlIGhhdGNoaW5nIG9mIHRoZSBlZ2cgYW5kIHRvIHRoZSAKb3BlbmluZyBvZiB0aGUgY2hyeXNhbGlzLCBhbmQgdGhleSB3YXRjaCB3aXRoIGpvY3VuZCBleWUgdGhlIHBsYXkgb2YgbGFtYnMgYW5kIApmYXducywgb2YgbGV2ZXJldHMgYW5kIHNxdWlycmVscy4gCgoKMjM2LsKgwqDCoMKgwqDCoMKgCkFub3RoZXIgaW5lc3RpbWFibGUgYWR2YW50YWdlIHRoYXQgYW4gZXRoZXJpYyBldm9sdXRpb24gcG9zc2Vzc2VzIG92ZXIgCm9uZSB3aGljaCB0b3VjaGVzIHRoZSBkZW5zZXIgcGh5c2ljYWwgaXMgdGhhdCB0aGUgbmVjZXNzaXR5IG9mIGVhdGluZyBpcyAKYXZvaWRlZC4gVGhlIGJvZHkgb2YgdGhlIGZhaXJ5IGFic29yYnMgc3VjaCBub3VyaXNobWVudCBhcyBpdCBuZWVkcywgd2l0aG91dCAKdHJvdWJsZSBhbmQgd2l0aG91dCBzdGludCwgZnJvbSB0aGUgYWV0aGVyIHdoaWNoIG9mIG5lY2Vzc2l0eSBhbHdheXMgc3Vycm91bmRzIAppdDsgb3IgcmF0aGVyLCBpdCBpcyBub3QsIHN0cmljdGx5IHNwZWFraW5nLCB0aGF0IG5vdXJpc2htZW50IGlzIGFic29yYmVkLCBidXQgCnJhdGhlciB0aGF0IGEgY2hhbmdlIG9mIHBhcnRpY2xlcyBpcyBjb25zdGFudGx5IHRha2luZyBwbGFjZSwgdGhvc2Ugd2hpY2ggaGF2ZSAKYmVlbiBkcmFpbmVkIG9mIHRoZWlyIHZpdGFsaXR5IGJlaW5nIGNhc3Qgb3V0IGFuZCBvdGhlcnMgd2hpY2ggYXJlIGZ1bGwgb2YgaXQgCmJlaW5nIGRyYXduIGluIHRvIHJlcGxhY2UgdGhlbS4gCgoKMjM3LsKgwqDCoMKgwqDCoMKgClRob3VnaCB0aGV5IGRvIG5vdCBlYXQsIG5hdHVyZS1zcGlyaXRzIG9idGFpbiBmcm9tIHRoZSBmcmFncmFuY2Ugb2YgCmZsb3dlcnMgYSBwbGVhc3VyZSBhbmFsb2dvdXMgdG8gdGhhdCB3aGljaCBtZW4gZGVyaXZlIGZyb20gdGhlIHRhc3RlIG9mIGZvb2QuIApUaGUgYXJvbWEgaXMgbW9yZSB0byB0aGVtIHRoYW4gYSBtZXJlIHF1ZXN0aW9uIG9mIHNtZWxsIG9yIHRhc3RlLCBmb3IgdGhleSBiYXRoZSAKdGhlbXNlbHZlcyBpbiBpdCBzbyB0aGF0IGl0IGludGVycGVuZXRyYXRlcyB0aGVpciBib2RpZXMgYW5kIHJlYWNoZXMgZXZlcnkgCnBhcnRpY2xlIHNpbXVsdGFuZW91c2x5LiAKCgoyMzguwqDCoMKgwqDCoMKgwqAKV2hhdCB0YWtlcyBmb3IgdGhlbSB0aGUgcGxhY2Ugb2YgYSBuZXJ2b3VzIHN5c3RlbSBpcyBmYXIgbW9yZSBkZWxpY2F0ZSAKdGhhbiBvdXJzLCBhbmQgc2Vuc2l0aXZlIHRvIG1hbnkgdmlicmF0aW9ucyB3aGljaCBwYXNzIGFsbCB1bnBlcmNlaXZlZCBieSBvdXIgCmdyb3NzZXIgc2Vuc2VzLCBhbmQgc28gdGhleSBmaW5kIHdoYXQgY29ycmVzcG9uZHMgdG8gYSBzY2VudCBpbiBtYW55IHBsYW50cyBhbmQgCm1pbmVyYWxzIHRoYXQgaGF2ZSBubyBzY2VudCBmb3IgdXMuIAoKCjIzOS7CoMKgwqDCoMKgwqDCoApUaGVpciBib2RpZXMgaGF2ZSBubyBtb3JlIGludGVybmFsIHN0cnVjdHVyZSB0aGFuIGEgd3JlYXRoIG9mIG1pc3QsIHNvIAp0aGF0IHRoZXkgY2Fubm90IGJlIHRvcm4gYXN1bmRlciBvciBpbmp1cmVkLCBhbmQgbmVpdGhlciBoZWF0IG5vciBjb2xkIGhhcyBhbnkgCnBhaW5mdWwgZWZmZWN0IHVwb24gdGhlbS4gSW5kZWVkLCB0aGVyZSBpcyBvbmUgdHlwZSB3aG9zZSBtZW1iZXJzIHNlZW0gdG8gZW5qb3kgCmFib3ZlIGFsbCB0aGluZ3MgdG8gYmF0aGUgdGhlbXNlbHZlcyBpbiBmaXJlOyB0aGV5IHJ1c2ggZnJvbSBhbGwgc2lkZXMgdG8gYW55IApncmVhdCBjb25mbGFncmF0aW9uIGFuZCBmbHkgdXB3YXJkIHdpdGggdGhlIGZsYW1lcyBhZ2FpbiBhbmQgYWdhaW4gaW4gd2lsZCAKZGVsaWdodCwganVzdCBhcyBhIGJveSBmbGllcyBhZ2FpbiBhbmQgYWdhaW4gZG93biBhIHRvYm9nZ2FuLXNsaWRlLiBUaGVzZSBhcmUgCnRoZSBzcGlyaXRzIG9mIHRoZSBmaXJlLCB0aGUgc2FsYW1hbmRlcnMgb2YgbWVkaWFldmFsIGxpdGVyYXR1cmUuIEJvZGlseSBwYWluIApjYW4gY29tZSB0byB0aGUgbmF0dXJlLXNwaXJpdCBvbmx5IGZyb20gYW4gdW5wbGVhc2FudCBvciBpbmhhcm1vbmlvdXMgZW1hbmF0aW9uIApvciB2aWJyYXRpb24sIGJ1dCBoaXMgcG93ZXIgb2YgcmFwaWQgbG9jb21vdGlvbiBlbmFibGVzIGhpbSBlYXNpbHkgdG8gYXZvaWQgCnRoZXNlLiBTbyBmYXIgYXMgY2FuIGJlIG9ic2VydmVkIGhlIGlzIGVudGlyZWx5IGZyZWUgZnJvbSB0aGUgY3Vyc2Ugb2YgZmVhciwgCndoaWNoIHBsYXlzIHNvIHNlcmlvdXMgYSBwYXJ0IGluIHRoZSBhbmltYWwgbGlmZSB3aGljaCwgYWxvbmcgb3VyIGxpbmUgb2YgCmV2b2x1dGlvbiwgY29ycmVzcG9uZHMgdG8gdGhlIGxldmVsIG9mIHRoZSBmYWlyaWVzLiAKCgoyNDAuwqDCoMKgwqDCoMKgwqAKVEhFIFJPTUFOQ0VTIE9GIEZBSVJZTEFORCAKCgoyNDEuwqDCoMKgwqDCoMKgwqAKVGhlIGZhaXJ5IGhhcyBhbiBlbnZpYWJseSBmZXJ0aWxlIGltYWdpbmF0aW9uLCBhbmQgaXQgaXMgYSBncmVhdCBwYXJ0IG9mIApoaXMgZGFpbHkgcGxheSB3aXRoIGhpcyBmZWxsb3dzIHRvIGNvbnN0cnVjdCBmb3IgdGhlbSBieSBpdHMgbWVhbnMgYWxsIGtpbmRzIG9mIAppbXBvc3NpYmxlIHN1cnJvdW5kaW5ncyBhbmQgcm9tYW50aWMgc2l0dWF0aW9ucy4gSGUgaXMgbGlrZSBhIGNoaWxkIHRlbGxpbmcgCnN0b3JpZXMgdG8gaGlzIHBsYXltYXRlcywgYnV0IHdpdGggdGhpcyBhZHZhbnRhZ2Ugb3ZlciB0aGUgY2hpbGQgdGhhdCwgc2luY2UgdGhlIApwbGF5bWF0ZXMgY2FuIHNlZSBib3RoIGV0aGVyaWMgYW5kIGxvd2VyIGFzdHJhbCBtYXR0ZXIsIHRoZSBmb3JtcyBidWlsdCBieSBoaXMgCnZpdmlkIHRob3VnaHQgYXJlIHBsYWlubHkgdmlzaWJsZSB0byB0aGVtIGFzIGhpcyB0YWxlIHByb2NlZWRzLiAKCgoyNDIuwqDCoMKgwqDCoMKgwqAKTm8gZG91YnQgbWFueSBvZiBoaXMgbmFycmF0aW9ucyB3b3VsZCB0byB1cyBzZWVtIGNoaWxkaXNoIGFuZCBvZGRseSAKbGltaXRlZCBpbiBzY29wZSwgYmVjYXVzZSBzdWNoIGludGVsbGlnZW5jZSBhcyB0aGUgZWxmIHBvc3Nlc3NlcyB3b3JrcyBpbiAKZGlyZWN0aW9ucyBzbyBkaWZmZXJlbnQgZnJvbSBvdXIgb3duLCBidXQgdG8gaGltIHRoZXkgYXJlIGludGVuc2VseSByZWFsIGFuZCBhIApzb3VyY2Ugb2YgbmV2ZXItZW5kaW5nIGRlbGlnaHQuIFRoZSBmYWlyeSB3aG8gZGV2ZWxvcHMgdW51c3VhbCB0YWxlbnQgaW4gZmljdGlvbiAKd2lucyBncmVhdCBhZmZlY3Rpb24gYW5kIGhvbm91ciBmcm9tIHRoZSByZXN0LCBhbmQgZ2F0aGVycyByb3VuZCBoaW0gYSBwZXJtYW5lbnQgCmF1ZGllbmNlIG9yIGZvbGxvd2luZy4gV2hlbiBzb21lIGh1bWFuIGJlaW5nIGNoYW5jZXMgdG8gY2F0Y2ggYSBnbGltcHNlIG9mIHN1Y2ggCmEgZ3JvdXAsIGhlIHVzdWFsbHkgaW1wb3J0cyBpbnRvIGhpcyBhY2NvdW50IG9mIGl0IHByZWNvbmNlcHRpb25zIGRlcml2ZWQgZnJvbSAKaGlzIG93biBjb25kaXRpb25zLCBhbmQgdGFrZXMgdGhlIGxlYWRlciBmb3IgYSBmYWlyeSBraW5nIG9yIHF1ZWVuLCBhY2NvcmRpbmcgdG8gCnRoZSBmb3JtIHdoaWNoIHRoYXQgbGVhZGVyIG1heSBmb3IgdGhlIG1vbWVudCBoYXBwZW4gdG8gcHJlZmVyLiBJbiByZWFsaXR5IHRoZSAKcmVhbG0gb2YgbmF0dXJlLXNwaXJpdHMgbmVlZHMgbm8ga2luZCBvZiBnb3Zlcm5tZW50IGV4Y2VwdCB0aGUgZ2VuZXJhbCAKc3VwZXJ2aXNpb24gd2hpY2ggaXMgZXhlcmNpc2VkIG92ZXIgaXQsIHByb2JhYmx5IHVuY29uc2Npb3VzbHkgdG8gYWxsIGJ1dCBpdHMgCmhpZ2hlciBtZW1iZXJzLCBieSB0aGUgRGV2YXJhamFzIGFuZCB0aGVpciBzdWJvcmRpbmF0ZXMuIAoKCjI0My7CoMKgwqDCoMKgwqDCoApUSEVJUiBBVFRJVFVERSBUT1dBUkRTIE1BTiAKCgoyNDQuwqDCoMKgwqDCoMKgwqAKTW9zdCBuYXR1cmUtc3Bpcml0cyBkaXNsaWtlIGFuZCBhdm9pZCBtYW5raW5kLCBhbmQgd2UgY2Fubm90IHdvbmRlciBhdCAKaXQuIFRvIHRoZW0gbWFuIGFwcGVhcnMgYSByYXZhZ2luZyBkZW1vbiwgZGVzdHJveWluZyBhbmQgc3BvaWxpbmcgd2hlcmV2ZXIgaGUgCmdvZXMuIEhlIHdhbnRvbmx5IGtpbGxzLCBvZnRlbiB3aXRoIGF3ZnVsIHRvcnR1cmVzLCBhbGwgdGhlIGJlYXV0aWZ1bCBjcmVhdHVyZXMgCnRoYXQgdGhleSBsb3ZlIHRvIHdhdGNoOyBoZSBjdXRzIGRvd24gdGhlIHRyZWVzLCBoZSB0cmFtcGxlcyB0aGUgZ3Jhc3MsIGhlIApwbHVja3MgdGhlIGZsb3dlcnMgYW5kIGNhc3RzIHRoZW0gY2FyZWxlc3NseSBhc2lkZSB0byBkaWU7IGhlIHJlcGxhY2VzIGFsbCB0aGUgCmxvdmVseSB3aWxkIGxpZmUgb2YgbmF0dXJlIHdpdGggaGlzIGhpZGVvdXMgYnJpY2tzIGFuZCBtb3J0YXIsIGFuZCB0aGUgZnJhZ3JhbmNlIApvZiB0aGUgZmxvd2VycyB3aXRoIHRoZSBtZXBoaXRpYyB2YXBvdXJzIG9mIGhpcyBjaGVtaWNhbHMgYW5kIHRoZSBhbGwtcG9sbHV0aW5nIApzbW9rZSBvZiBoaXMgZmFjdG9yaWVzLiBDYW4gd2UgdGhpbmsgaXQgc3RyYW5nZSB0aGF0IHRoZSBmYWlyaWVzIHNob3VsZCByZWdhcmQgCnVzIHdpdGggaG9ycm9yLCBhbmQgc2hyaW5rIGF3YXkgZnJvbSB1cyBhcyB3ZSBzaHJpbmsgZnJvbSBhIHBvaXNvbm91cyByZXB0aWxlPwoKCjI0NS7CoMKgwqDCoMKgwqDCoApOb3Qgb25seSBkbyB3ZSB0aHVzIGJyaW5nIGRldmFzdGF0aW9uIHRvIGFsbCB0aGF0IHRoZXkgaG9sZCBtb3N0IGRlYXIsIApidXQgbW9zdCBvZiBvdXIgaGFiaXRzIGFuZCBlbWFuYXRpb25zIGFyZSBkaXN0YXN0ZWZ1bCB0byB0aGVtOyB3ZSBwb2lzb24gdGhlIApzd2VldCBhaXIgZm9yIHRoZW0gKHNvbWUgb2YgdXMpIHdpdGggbG9hdGhzb21lIGZ1bWVzIG9mIGFsY29ob2wgYW5kIHRvYmFjY287IG91ciAKcmVzdGxlc3MsIGlsbC1yZWd1bGF0ZWQgZGVzaXJlcyBhbmQgcGFzc2lvbnMgc2V0IHVwIGEgY29uc3RhbnQgcnVzaCBvZiBhc3RyYWwgCmN1cnJlbnRzIHdoaWNoIGRpc3R1cmJzIGFuZCBhbm5veXMgdGhlbSwgYW5kIGdpdmVzIHRoZW0gdGhlIHNhbWUgZmVlbGluZyBvZiAKZGlzZ3VzdCB3aGljaCB3ZSBzaG91bGQgaGF2ZSBpZiBhIGJ1Y2tldCBvZiBmaWx0aHkgd2F0ZXIgd2VyZSBlbXB0aWVkIG92ZXIgdXMuIApGb3IgdGhlbSB0byBiZSBuZWFyIHRoZSBhdmVyYWdlIG1hbiBpcyB0byBsaXZlIGluIGEgcGVycGV0dWFsIGh1cnJpY2FuZS0tIGEgCmh1cnJpY2FuZSB0aGF0IGhhcyBibG93biBvdmVyIGEgY2Vzc3Bvb2wuIFRoZXkgYXJlIG5vdCBncmVhdCBhbmdlbHMsIHdpdGggdGhlIApwZXJmZWN0IGtub3dsZWRnZSB0aGF0IGJyaW5ncyBwZXJmZWN0IHBhdGllbmNlOyB0aGV5IGFyZSBqdXN0IGhhcHB5IGFuZCBvbiB0aGUgCndob2xlIHdlbGwtZGlzcG9zZWQgY2hpbGRyZW4tLSBoYXJkbHkgZXZlbiB0aGF0LCBtYW55IG9mIHRoZW0sIGJ1dCBtb3JlIGxpa2UgCmV4Y2VwdGlvbmFsbHkgaW50ZWxsaWdlbnQga2l0dGVuczsgYWdhaW4sIEkgc2F5LCBjYW4gd2Ugd29uZGVyLCB3aGVuIHdlIHRodXMgCmhhYml0dWFsbHkgb3V0cmFnZSB0aGVpciBiZXN0IGFuZCBoaWdoZXN0IGZlZWxpbmdzLCB0aGF0IHRoZXkgc2hvdWxkIGRpc2xpa2UgdXMsIApkaXN0cnVzdCB1cyBhbmQgYXZvaWQgdXM/IAoKCjI0Ni7CoMKgwqDCoMKgwqDCoApUaGVyZSBhcmUgaW5zdGFuY2VzIG9uIHJlY29yZCB3aGVyZSwgYnkgc29tZSBtb3JlIHRoYW4gb3JkaW5hcmlseSAKdW53YXJyYW50ZWQgaW50cnVzaW9uIG9yIGFubm95YW5jZSBvbiB0aGUgcGFydCBvZiBtYW4sIHRoZXkgaGF2ZSBiZWVuIHByb3Zva2VkIAppbnRvIGRpcmVjdCByZXRhbGlhdGlvbiBhbmQgaGF2ZSBzaG93biBkaXN0aW5jdCBtYWxpY2UuIEl0IHNwZWFrcyB3ZWxsIGZvciB0aGVpciAKa2luZ2RvbSBhcyBhIHdob2xlIHRoYXQgZXZlbiB1bmRlciBzdWNoIHVuZW5kdXJhYmxlIHByb3ZvY2F0aW9uIHN1Y2ggY2FzZXMgYXJlIApyYXJlLCBhbmQgdGhlaXIgbW9yZSB1c3VhbCBtZXRob2Qgb2YgdHJ5aW5nIHRvIHJlcGVsIGFuIGludHJ1ZGVyIGlzIGJ5IHBsYXlpbmcgCnRyaWNrcyB1cG9uIGhpbSwgY2hpbGRpc2ggYW5kIG1pc2NoaWV2b3VzIG9mdGVuLCBidXQgbm90IHNlcmlvdXNseSBoYXJtZnVsLiBUaGV5IAp0YWtlIGFuIGltcGlzaCBkZWxpZ2h0IGluIG1pc2xlYWRpbmcgb3IgZGVjZWl2aW5nIGhpbSwgaW4gY2F1c2luZyBoaW0gdG8gbG9zZSAKaGlzIHdheSBhY3Jvc3MgYSBtb29yLCBpbiBrZWVwaW5nIGhpbSB3YWxraW5nIHJvdW5kIGFuZCByb3VuZCBpbiBhIGNpcmNsZSBhbGwgCm5pZ2h0IHdoZW4gaGUgYmVsaWV2ZXMgaGUgaXMgZ29pbmcgc3RyYWlnaHQgb24sIG9yIGluIG1ha2luZyBoaW0gdGhpbmsgdGhhdCBoZSAKc2VlcyBwYWxhY2VzIGFuZCBjYXN0bGVzIHdoZXJlIG5vIHN1Y2ggc3RydWN0dXJlcyByZWFsbHkgZXhpc3QuIE1hbnkgYSBzdG9yeSAKaWxsdXN0cmF0aXZlIG9mIHRoaXMgY3VyaW91cyBjaGFyYWN0ZXJpc3RpYyBvZiB0aGUgZmFpcmllcyBtYXkgYmUgZm91bmQgYW1vbmcgCnRoZSB2aWxsYWdlIGdvc3NpcCBvZiB0aGUgcGVhc2FudHJ5IGluIGFsbW9zdCBhbnkgbG9uZWx5IG1vdW50YWlub3VzIGRpc3RyaWN0LgoKCjI0Ny7CoMKgwqDCoMKgwqDCoApHTEFNT1VSIAoKCjI0OC7CoMKgwqDCoMKgwqDCoApUaGV5IGFyZSBncmVhdGx5IGFzc2lzdGVkIGluIHRoZWlyIHRyaWNrcyBieSB0aGUgd29uZGVyZnVsIHBvd2VyIHdoaWNoIAp0aGV5IHBvc3Nlc3Mgb2YgY2FzdGluZyBhIGdsYW1vdXIgb3ZlciB0aG9zZSB3aG8geWllbGQgdGhlbXNlbHZlcyB0byB0aGVpciAKaW5mbHVlbmNlLCBzbyB0aGF0IHN1Y2ggdmljdGltcyBmb3IgdGhlIHRpbWUgc2VlIGFuZCBoZWFyIG9ubHkgd2hhdCB0aGVzZSAKZmFpcmllcyBpbXByZXNzIHVwb24gdGhlbSwgZXhhY3RseSBhcyB0aGUgbWVzbWVyaXNlZCBzdWJqZWN0IHNlZXMsIGhlYXJzLCBmZWVscyAKYW5kIGJlbGlldmVzIHdoYXRldmVyIHRoZSBtYWduZXRpc2VyIHdpc2hlcy4gVGhlIG5hdHVyZS1zcGlyaXRzLCBob3dldmVyLCBoYXZlIApub3QgdGhlIG1lc21lcmlzdCcgcyBwb3dlciBvZiBkb21pbmF0aW5nIHRoZSBodW1hbiB3aWxsLCBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgCnF1aXRlIHVudXN1YWxseSB3ZWFrLW1pbmRlZCBwZW9wbGUsIG9yIG9mIHRob3NlIHdobyBhbGxvdyB0aGVtc2VsdmVzIHRvIGZhbGwgCmludG8gc3VjaCBhIGNvbmRpdGlvbiBvZiBoZWxwbGVzcyB0ZXJyb3IgdGhhdCB0aGVpciB3aWxsIGlzIHRlbXBvcmFyaWx5IGluIAphYmV5YW5jZS4gCgoKMjQ5LsKgwqDCoMKgwqDCoMKgClRoZSBmYWlyaWVzIGNhbm5vdCBnbyBiZXlvbmQgZGVjZXB0aW9uIG9mIHRoZSBzZW5zZXMsIGJ1dCBvZiB0aGF0IHRoZXkgCmFyZSB1bmRvdWJ0ZWQgbWFzdGVycywgYW5kIGNhc2VzIGFyZSBub3Qgd2FudGluZyBpbiB3aGljaCB0aGV5IGNhc3QgdGhlaXIgCmdsYW1vdXIgb3ZlciBhIGNvbnNpZGVyYWJsZSBudW1iZXIgb2YgcGVvcGxlIGF0IG9uY2UuIEl0IGlzIGJ5IGludm9raW5nIHRoZWlyIAphaWQgaW4gdGhlIGV4ZXJjaXNlIG9mIHRoaXMgcGVjdWxpYXIgcG93ZXIgdGhhdCBzb21lIG9mIHRoZSBtb3N0IG1hcnZlbGxvdXMgCmZlYXRzIG9mIHRoZSBJbmRpYW4ganVnZ2xlcnMgYXJlIHBlcmZvcm1lZCwgc3VjaCBhcyB0aGUgY2VsZWJyYXRlZCBiYXNrZXQgdHJpY2ssIApvciB0aGF0IG90aGVyIGluIHdoaWNoIGEgcm9wZSBpcyB0aHJvd24gdXAgdG93YXJkcyB0aGUgc2t5IGFuZCByZW1haW5zIHJpZ2lkIAp3aXRob3V0IHN1cHBvcnQgd2hpbGUgdGhlIGp1Z2dsZXIgY2xpbWJzIHVwIGl0IGFuZCBkaXNhcHBlYXJzLiBUaGUgZW50aXJlIAphdWRpZW5jZSBpcyBpbiBmYWN0IGhhbGx1Y2luYXRlZCwgYW5kIHRoZSBwZW9wbGUgYXJlIG1hZGUgdG8gaW1hZ2luZSB0aGF0IHRoZXkgCnNlZSBhbmQgaGVhciBhIHdob2xlIHNlcmllcyBvZiBldmVudHMgd2hpY2ggaGF2ZSBub3QgcmVhbGx5IG9jY3VycmVkIGF0IGFsbC4gCgoKMjUwLsKgwqDCoMKgwqDCoMKgClRoZSBwb3dlciBvZiBnbGFtb3VyIGlzIHNpbXBseSB0aGF0IG9mIG1ha2luZyBhIGNsZWFyLCBzdHJvbmcgbWVudGFsIAppbWFnZSwgYW5kIHRoZW4gcHJvamVjdGluZyB0aGF0IGludG8gdGhlIG1pbmQgb2YgYW5vdGhlci4gVG8gbW9zdCBtZW4gdGhpcyB3b3VsZCAKc2VlbSB3ZWxsbmlnaCBpbXBvc3NpYmxlLCBiZWNhdXNlIHRoZXkgaGF2ZSBuZXZlciBtYWRlIGFueSBzdWNoIGF0dGVtcHQgaW4gdGhlaXIgCmxpdmVzLCBhbmQgaGF2ZSBubyBub3Rpb24gaG93IHRvIHNldCBhYm91dCBpdC4gVGhlIG1pbmQgb2YgdGhlIGZhaXJ5IGhhcyBub3QgdGhlIAp3aWR0aCBvciB0aGUgcmFuZ2Ugb2YgdGhlIG1hbicgcywgYnV0IGl0IGlzIHRob3JvdWdobHkgd2VsbCBhY2N1c3RvbWVkIHRvIHRoaXMgCndvcmsgb2YgbWFraW5nIGltYWdlcyBhbmQgaW1wcmVzc2luZyB0aGVtIG9uIG90aGVycywgc2luY2UgaXQgaXMgb25lIG9mIHRoZSAKcHJpbmNpcGFsIG9jY3VwYXRpb25zIG9mIHRoZSBjcmVhdHVyZScgcyBkYWlseSBsaWZlLiAKCgoyNTEuwqDCoMKgwqDCoMKgwqAKSXQgaXMgbm90IHJlbWFya2FibGUgdGhhdCB3aXRoIHN1Y2ggY29uc3RhbnQgcHJhY3RpY2UgaGUgc2hvdWxkIGJlY29tZSAKZXhwZXJ0IGF0IHRoZSBidXNpbmVzcywgYW5kIGl0IGlzIHN0aWxsIGZ1cnRoZXIgc2ltcGxpZmllZCBmb3IgaGltIHdoZW4sIGFzIGluIAp0aGUgY2FzZSBvZiB0aGUgSW5kaWFuIHRyaWNrcywgZXhhY3RseSB0aGUgc2FtZSBpbWFnZSBoYXMgdG8gYmUgcHJvZHVjZWQgb3ZlciAKYW5kIG92ZXIgYWdhaW4gaHVuZHJlZHMgb2YgdGltZXMsIHVudGlsIGV2ZXJ5IGRldGFpbCBzaGFwZXMgaXRzZWxmIHdpdGhvdXQgCmVmZm9ydCBhcyB0aGUgcmVzdWx0IG9mIHVuY29uc2Npb3VzIGhhYml0LiBJbiB0cnlpbmcgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyAKdGhpcyBpcyBkb25lLCB3ZSBtdXN0IGJlYXIgaW4gbWluZCB0aGF0IGEgbWVudGFsIGltYWdlIGlzIGEgdmVyeSByZWFsIHRoaW5nLS0gYSAKZGVmaW5pdGUgY29uc3RydWN0aW9uIGluIG1lbnRhbCBtYXR0ZXIsIGFzIGhhcyBiZWVuIGV4cGxhaW5lZCBpbiAKVGhvdWdodC1Gb3JtcyAocC4gMzcpOyBhbmQgd2UgbXVzdCBhbHNvIHJlbWVtYmVyIHRoYXQgdGhlIGxpbmUgb2YgCmNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgbWluZCBhbmQgdGhlIGRlbnNlIHBoeXNpY2FsIGJyYWluIHBhc3NlcyB0aHJvdWdoIHRoZSAKYXN0cmFsIGFuZCBldGhlcmljIGNvdW50ZXJwYXJ0cyBvZiB0aGF0IGJyYWluLCBhbmQgdGhhdCB0aGUgbGluZSBtYXkgYmUgdGFwcGVkIAphbmQgYW4gaW1wcmVzc2lvbiBpbnRyb2R1Y2VkIGF0IGFueSBvZiB0aGVzZSBwb2ludHMuIAoKCjI1Mi7CoMKgwqDCoMKgwqDCoApDZXJ0YWluIG9mIHRoZSBuYXR1cmUtc3Bpcml0cyBub3QgaW5mcmVxdWVudGx5IGV4ZXJjaXNlIHRoZWlyIHRhbGVudCBmb3IgCm1pbWljcnkgYW5kIG1pc2NoaWVmIGJ5IGFwcGVhcmluZyBhdCBzcGlyaXR1YWxpc3RpYyBz77+9YW5jZXMgaGVsZCBmb3IgcGh5c2ljYWwgCnBoZW5vbWVuYS4gQW55b25lIHdobyBoYXMgYmVlbiBpbiB0aGUgaGFiaXQgb2YgYXR0ZW5kaW5nIG9uIHN1Y2ggb2NjYXNpb25zIHdpbGwgCnJlY29sbGVjdCBpbnN0YW5jZXMgb2YgcHJhY3RpY2FsIGpva2luZyBhbmQgc2lsbHkgdGhvdWdoIHVzdWFsbHkgZ29vZC1uYXR1cmVkIApob3JzZS1wbGF5OyB0aGVzZSBhbG1vc3QgYWx3YXlzIGluZGljYXRlIHRoZSBwcmVzZW5jZSBvZiBzb21lIG9mIHRoZXNlIGltcGlzaCAKY3JlYXR1cmVzLCB0aG91Z2ggdGhleSBhcmUgc29tZXRpbWVzIGR1ZSB0byB0aGUgYXJyaXZhbCBvZiBkZWFkIG1lbiB3aG8gd2VyZSAKc2Vuc2VsZXNzIGVub3VnaCBkdXJpbmcgZWFydGgtbGlmZSB0byBjb25zaWRlciBzdWNoIGluYW5pdGllcyBhbXVzaW5nLCBhbmQgaGF2ZSAKbm90IGxlYXJudCB3aXNkb20gc2luY2UgdGhlaXIgZGVhdGguIAoKCjI1My7CoMKgwqDCoMKgwqDCoApJTlNUQU5DRVMgT0YgRlJJRU5EU0hJUCAKCgoyNTQuwqDCoMKgwqDCoMKgwqAKT24gdGhlIG90aGVyIGhhbmQgdGhlcmUgYXJlIGluc3RhbmNlcyBpbiB3aGljaCBzb21lIG5hdHVyZS1zcGlyaXRzIGhhdmUgCm1hZGUgZnJpZW5kcyB3aXRoIGluZGl2aWR1YWwgaHVtYW4gYmVpbmdzIGFuZCBvZmZlcmVkIHRoZW0gc3VjaCBhc3Npc3RhbmNlIGFzIApsYXkgaW4gdGhlaXIgcG93ZXIsIGFzIGluIHRoZSB3ZWxsIGtub3duIHN0b3JpZXMgdG9sZCBvZiBTY290Y2ggYnJvd25pZXMgb3Igb2YgCnRoZSBmaXJlLWxpZ2h0aW5nIGZhaXJpZXMgb2Ygc3Bpcml0dWFsaXN0aWMgbGl0ZXJhdHVyZTsgYW5kIGl0IGlzIG9uIHJlY29yZCB0aGF0IApvbiByYXJlIG9jY2FzaW9ucyBjZXJ0YWluIGZhdm91cmVkIG1lbiBoYXZlIGJlZW4gYWRtaXR0ZWQgdG8gd2l0bmVzcyBlbGZpbiAKcmV2ZWxzIGFuZCBzaGFyZSBmb3IgYSB0aW1lIHRoZSBlbGZpbiBsaWZlLiBJdCBpcyBzYWlkIHRoYXQgd2lsZCBhbmltYWxzIHdpbGwgCmFwcHJvYWNoIHdpdGggY29uZmlkZW5jZSBzb21lIEluZGlhbiB5b2dpcywgcmVjb2duaXNpbmcgdGhlbSBhcyBmcmllbmRzIHRvIGFsbCAKbGl2aW5nIGNyZWF0dXJlczsgc2ltaWxhcmx5IGVsdmVzIHdpbGwgZ2F0aGVyIHJvdW5kIG9uZSB3aG8gaGFzIGVudGVyZWQgdXBvbiB0aGUgClBhdGggb2YgSG9saW5lc3MsIGZpbmRpbmcgaGlzIGVtYW5hdGlvbnMgbGVzcyBzdG9ybXkgYW5kIG1vcmUgYWdyZWVhYmxlIHRoYW4gCnRob3NlIG9mIHRoZSBtYW4gd2hvc2UgbWluZCBpcyBzdGlsbCBmaXhlZCB1cG9uIHdvcmxkbHkgbWF0dGVycy4gCgoKMjU1LsKgwqDCoMKgwqDCoMKgCk9jY2FzaW9uYWxseSBmYWlyaWVzIGhhdmUgYmVlbiBrbm93biB0byBhdHRhY2ggdGhlbXNlbHZlcyB0byBsaXR0bGUgCmNoaWxkcmVuLCBhbmQgZGV2ZWxvcCBhIHN0cm9uZyBhdHRhY2htZW50IGZvciB0aGVtLCBlc3BlY2lhbGx5IGZvciBzdWNoIGFzIGFyZSAKZHJlYW15IGFuZCBpbWFnaW5hdGl2ZSwgc2luY2UgdGhleSBhcmUgYWJsZSB0byBzZWUgYW5kIGRlbGlnaHQgaW4gdGhlIAp0aG91Z2h0LWZvcm1zIHdpdGggd2hpY2ggc3VjaCBhIGNoaWxkIHN1cnJvdW5kcyBoaW1zZWxmLiBUaGVyZSBoYXZlIGV2ZW4gYmVlbiAKY2FzZXMgaW4gd2hpY2ggc3VjaCBjcmVhdHVyZXMgdG9vayBhIGZhbmN5IHRvIHNvbWUgdW51c3VhbGx5IGF0dHJhY3RpdmUgYmFieSwgCmFuZCBtYWRlIGFuIGF0dGVtcHQgdG8gY2FycnkgaXQgYXdheSBpbnRvIHRoZWlyIG93biBoYXVudHMtLSB0aGVpciBpbnRlbnRpb24gCmJlaW5nIHRvIHNhdmUgaXQgZnJvbSB3aGF0IHNlZW1zIHRvIHRoZW0gdGhlIGhvcnJpYmxlIGZhdGUgb2YgZ3Jvd2luZyB1cCBpbnRvIAp0aGUgYXZlcmFnZSBodW1hbiBiZWluZyEgVmFndWUgdHJhZGl0aW9ucyBvZiBzdWNoIGF0dGVtcHRzIGFjY291bnQgZm9yIHBhcnQgb2YgCnRoZSBmb2xrLWxvcmUgc3RvcmllcyBhYm91dCBjaGFuZ2VsaW5ncywgdGhvdWdoIHRoZXJlIGlzIGFsc28gYW5vdGhlciByZWFzb24gZm9yIAp0aGVtIHRvIHdoaWNoIHdlIHNoYWxsIHJlZmVyIGxhdGVyLiAKCgoyNTYuwqDCoMKgwqDCoMKgwqAKVGhlcmUgaGF2ZSBiZWVuIHRpbWVzLS0gbW9yZSBvZnRlbiBpbiB0aGUgcGFzdCB0aGFuIGluIHRoZSBwcmVzZW50LS0gd2hlbiAKYSBjZXJ0YWluIGNsYXNzIG9mIHRoZXNlIGVudGl0aWVzLCByb3VnaGx5IGNvcnJlc3BvbmRpbmcgdG8gaHVtYW5pdHkgaW4gc2l6ZSBhbmQgCmFwcGVhcmFuY2UsIG1hZGUgaXQgYSBwcmFjdGljZSBmcmVxdWVudGx5IHRvIG1hdGVyaWFsaXNlLCB0byBtYWtlIGZvciB0aGVtc2VsdmVzIAp0ZW1wb3JhcnkgYnV0IGRlZmluaXRlIHBoeXNpY2FsIGJvZGllcywgYW5kIGJ5IHRoYXQgbWVhbnMgdG8gZW50ZXIgaW50byAKdW5kZXNpcmFibGUgcmVsYXRpb25zIHdpdGggc3VjaCBtZW4gYW5kIHdvbWVuIGFzIGNob3NlIHRvIHB1dCB0aGVtc2VsdmVzIGluIAp0aGVpciB3YXkuIEZyb20gdGhpcyBmYWN0LCBwZXJoYXBzLCBjb21lIHNvbWUgb2YgdGhlIHN0b3JpZXMgb2YgZmF1bnMgYW5kIHNhdHlycyAKaW4gdGhlIGNsYXNzaWNhbCBwZXJpb2Q7IHRob3VnaCB0aG9zZSBzb21ldGltZXMgYWxzbyByZWZlciB0byBxdWl0ZSBhIGRpZmZlcmVudCAKc3ViLWh1bWFuIGV2b2x1dGlvbi4gCgoKMjU3LsKgwqDCoMKgwqDCoMKgCldBVEVSLVNQSVJJVFMgCgoKMjU4LsKgwqDCoMKgwqDCoMKgCkFidW5kYW50IGFzIGFyZSB0aGUgZmFpcmllcyBvZiB0aGUgZWFydGgnIHMgc3VyZmFjZSBhbG1vc3QgYW55d2hlcmUgYXdheSAKZnJvbSB0aGUgaGF1bnRzIG9mIG1hbiwgdGhleSBhcmUgZmFyIG91dG51bWJlcmVkIGJ5IHRoZSB3YXRlci1zcGlyaXRzLS0gdGhlIApmYWlyaWVzIG9mIHRoZSBzdXJmYWNlIG9mIHRoZSBzZWEuIFRoZXJlIGlzIGp1c3QgYXMgbXVjaCB2YXJpZXR5IGhlcmUgYXMgb24gCmxhbmQuIFRoZSBuYXR1cmUtc3Bpcml0cyBvZiB0aGUgUGFjaWZpYyBkaWZmZXIgZnJvbSB0aG9zZSBvZiB0aGUgQXRsYW50aWMsIGFuZCAKdGhvc2Ugb2YgdGhlIE1lZGl0ZXJyYW5lYW4gYXJlIHF1aXRlIGRpc3RpbmN0IGZyb20gZWl0aGVyOyB0aGUgdHlwZXMgdGhhdCByZXZlbCAKaW4gdGhlIGluZGVzY3JpYmFibHkgZ2xvcmlvdXMgYmx1ZSBvZiB0cm9waWNhbCBvY2VhbnMgYXJlIGZhciBhcGFydCBmcm9tIHRob3NlIAp0aGF0IGRhc2ggdGhyb3VnaCB0aGUgZm9hbSBvZiBvdXIgY29sZCBncmV5IG5vcnRoZXJuIHNlYXMuIERpc3NpbWlsYXIgYWdhaW4gYXJlIAp0aGUgc3Bpcml0cyBvZiB0aGUgbGFrZSwgdGhlIHJpdmVyIGFuZCB0aGUgd2F0ZXJmYWxsLCBmb3IgdGhleSBoYXZlIG1hbnkgbW9yZSAKcG9pbnRzIGluIGNvbW1vbiB3aXRoIHRoZSBsYW5kIGZhaXJpZXMgdGhhbiBoYXZlIHRoZSBuZXJlaWRzIG9mIHRoZSBvcGVuIHNlYS4KCgoyNTkuwqDCoMKgwqDCoMKgwqAKVGhlc2UsIGxpa2UgdGhlaXIgYnJvdGhlcnMgb2YgdGhlIGxhbmQsIGFyZSBvZiBhbGwgc2hhcGVzLCBidXQgcGVyaGFwcyAKbW9zdCBmcmVxdWVudGx5IGltaXRhdGUgdGhlIGh1bWFuLiBCcm9hZGx5IHNwZWFraW5nLCB0aGV5IHRlbmQgdG8gdGFrZSBsYXJnZXIgCmZvcm1zIHRoYW4gdGhlIGVsdmVzIG9mIHRoZSB3b29kcyBhbmQgdGhlIGhpbGxzOyB0aGUgbWFqb3JpdHkgb2YgdGhlIGxhdHRlciBhcmUgCmRpbWludXRpdmUsIHdoaWxlIHRoZSBzZWEtc3Bpcml0IHdobyBjb3BpZXMgbWFuIHVzdWFsbHkgYWRvcHRzIGhpcyBzaXplIGFzIHdlbGwgCmFzIGhpcyBzaGFwZS4gSW4gb3JkZXIgdG8gYXZvaWQgbWlzdW5kZXJzdGFuZGluZyBpdCBpcyBuZWNlc3NhcnkgY29uc3RhbnRseSB0byAKaW5zaXN0IHVwb24gdGhlIHByb3RlYW4gY2hhcmFjdGVyIG9mIGFsbCB0aGVzZSBmb3JtczsgYW55IG9mIHRoZXNlIGNyZWF0dXJlcywgCndoZXRoZXIgb2YgbGFuZCBvciBzZWEgb3IgYWlyLCBjYW4gbWFrZSBoaW1zZWxmIHRlbXBvcmFyaWx5IGxhcmdlciBvciBzbWFsbGVyIGF0IAp3aWxsLCBvciBjYW4gYXNzdW1lIHdoYXRldmVyIHNoYXBlIGhlIGNob29zZXMuIAoKCjI2MC7CoMKgwqDCoMKgwqDCoApUaGVyZSBpcyB0aGVvcmV0aWNhbGx5IG5vIHJlc3RyaWN0aW9uIHVwb24gdGhpcyBwb3dlciwgYnV0IGluIHByYWN0aWNlIGl0IApoYXMgaXRzIGxpbWl0cywgdGhvdWdoIHRoZXkgYXJlIHdpZGUuIEEgZmFpcnkgd2hvIGlzIG5hdHVyYWxseSB0d2VsdmUgaW5jaGVzIGluIApoZWlnaHQgY2FuIGV4cGFuZCBoaW1zZWxmIHRvIHRoZSBwcm9wb3J0aW9ucyBvZiBhIG1hbiBvZiBzaXggZmVldCwgYnV0IHRoZSAKZWZmb3J0IHdvdWxkIGJlIGEgY29uc2lkZXJhYmxlIHN0cmFpbiwgYW5kIGNvdWxkIG5vdCBiZSBtYWludGFpbmVkIGZvciBtb3JlIHRoYW4gCmEgZmV3IG1pbnV0ZXMuIEluIG9yZGVyIHRvIHRha2UgYSBmb3JtIG90aGVyIHRoYW4gaGlzIG93biBoZSBtdXN0IGJlIGFibGUgdG8gCmNvbmNlaXZlIGl0IGNsZWFybHksIGFuZCBoZSBjYW4gaG9sZCB0aGUgc2hhcGUgb25seSB3aGlsZSBoaXMgbWluZCBpcyBmaXhlZCB1cG9uIAppdDsgYXMgc29vbiBhcyBoaXMgdGhvdWdodCB3YW5kZXJzIGhlIHdpbGwgYXQgb25jZSBiZWdpbiB0byByZXN1bWUgaGlzIG5hdHVyYWwgCmFwcGVhcmFuY2UuIAoKCjI2MS7CoMKgwqDCoMKgwqDCoApUaG91Z2ggZXRoZXJpYyBtYXR0ZXIgY2FuIHJlYWRpbHkgYmUgbW91bGRlZCBieSB0aGUgcG93ZXIgb2YgdGhvdWdodCwgaXQgCm5hdHVyYWxseSBkb2VzIG5vdCBvYmV5IGl0IGFzIGluc3RhbnRhbmVvdXNseSBhcyBkb2VzIGFzdHJhbCBtYXR0ZXI7IHdlIG1pZ2h0IApzYXkgdGhhdCBtZW50YWwgbWF0dGVyIGNoYW5nZXMgYWN0dWFsbHkgd2l0aCB0aGUgdGhvdWdodCwgYW5kIGFzdHJhbCAKbWF0dGVyIHNvIHF1aWNrbHkgYWZ0ZXIgaXQgdGhhdCB0aGUgb3JkaW5hcnkgb2JzZXJ2ZXIgY2FuIHNjYXJjZWx5IG5vdGUgYW55IApkaWZmZXJlbmNlOyBidXQgd2l0aCBldGhlcmljIG1hdHRlciBvbmUnIHMgdmlzaW9uIGNhbiBmb2xsb3cgdGhlIGdyb3d0aCBvciAKZGltaW51dGlvbiB3aXRob3V0IGRpZmZpY3VsdHkuIEEgc3lscGgsIHdob3NlIGJvZHkgaXMgb2YgYXN0cmFsIG1hdHRlciwgCmZsYXNoZXMgZnJvbSBvbmUgc2hhcGUgaW50byBhbm90aGVyOyBhIGZhaXJ5LCB3aG8gaXMgZXRoZXJpYywgc3dlbGxzIG9yIApkZWNyZWFzZXMgcXVpY2tseSBidXQgbm90IGluc3RhbnRhbmVvdXNseS4gCgoKMjYyLsKgwqDCoMKgwqDCoMKgCkZldyBvZiB0aGUgbGFuZC1zcGlyaXRzIGFyZSBnaWdhbnRpYyBpbiBzaXplLCB3aGlsZSBzdWNoIHN0YXR1cmUgc2VlbXMgCnF1aXRlIGNvbW1vbiBvdXQgYXQgc2VhLiBUaGUgY3JlYXR1cmVzIG9mIHRoZSBsYW5kIGZyZXF1ZW50bHkgd2VhdmUgZnJvbSB0aGVpciAKZmFuY2llcyBzY3JhcHMgb2YgaHVtYW4gY2xvdGhpbmcsIGFuZCBzaG93IHRoZW1zZWx2ZXMgd2l0aCBxdWFpbnQgY2FwcyBvciAKYmFsZHJpY3Mgb3IgamVya2luczsgYnV0IEkgaGF2ZSBuZXZlciBzZWVuIGFueSBzdWNoIGFwcGVhcmFuY2UgYW1vbmcgdGhlIAppbmhhYml0YW50cyBvZiB0aGUgc2VhLiBOZWFybHkgYWxsIHRoZXNlIHN1cmZhY2Ugd2F0ZXItc3Bpcml0cyBzZWVtIHRvIHBvc3Nlc3MgCnRoZSBwb3dlciBvZiByYWlzaW5nIHRoZW1zZWx2ZXMgb3V0IG9mIHRoZWlyIHByb3BlciBlbGVtZW50IGFuZCBmbG9hdGluZyBpbiBvciAKZmx5aW5nIHRocm91Z2ggdGhlIGFpciBmb3IgYSBzaG9ydCBkaXN0YW5jZTsgdGhleSBkZWxpZ2h0IGluIHBsYXlpbmcgYW1pZHN0IHRoZSAKZGFzaGluZyBmb2FtIG9yIHJpZGluZyBpbiB1cG9uIHRoZSBicmVha2Vycy4gVGhleSBhcmUgbGVzcyBwcm9ub3VuY2VkIGluIHRoZWlyIAphdm9pZGFuY2Ugb2YgbWFuIHRoYW4gdGhlaXIgYnJldGhyZW4gb24gbGFuZC0tIHBlcmhhcHMgYmVjYXVzZSBtYW4gaGFzIHNvIG11Y2ggCmxlc3Mgb3Bwb3J0dW5pdHkgb2YgaW50ZXJmZXJpbmcgd2l0aCB0aGVtLiBUaGV5IGRvIG5vdCBkZXNjZW5kIHRvIGFueSBncmVhdCAKZGVwdGggYmVsb3cgdGhlIHN1cmZhY2UtLSBuZXZlciwgYXQgYW55IHJhdGUsIGJleW9uZCB0aGUgcmVhY2ggb2YgbGlnaHQ7IHNvIHRoYXQgCnRoZXJlIGlzIGFsd2F5cyBhIGNvbnNpZGVyYWJsZSBzcGFjZSBiZXR3ZWVuIHRoZWlyIHJlYWxtIGFuZCB0aGUgZG9tYWluIG9mIHRoZSAKZmFyIGxlc3MgZXZvbHZlZCBjcmVhdHVyZXMgb2YgdGhlIG1pZGRsZSBkZWVwcy4gCgoKMjYzLsKgwqDCoMKgwqDCoMKgCkZSRVNILVdBVEVSIEZBSVJJRVMgCgoKMjY0LsKgwqDCoMKgwqDCoMKgClNvbWUgdmVyeSBiZWF1dGlmdWwgc3BlY2llcyBpbmhhYml0IGlubGFuZCB3YXRlcnMgd2hlcmUgbWFuIGhhcyBub3QgeWV0IApyZW5kZXJlZCB0aGUgY29uZGl0aW9ucyBpbXBvc3NpYmxlIGZvciB0aGVtLiBOYXR1cmFsbHkgZW5vdWdoLCB0aGUgZmlsdGggYW5kIHRoZSAKY2hlbWljYWxzIHdpdGggd2hpY2ggd2F0ZXIgaXMgcG9sbHV0ZWQgbmVhciBhbnkgbGFyZ2UgdG93biBhcmUgZGlzZ3VzdGluZyB0byAKdGhlbTsgYnV0IHRoZXkgaGF2ZSBhcHBhcmVudGx5IG5vIG9iamVjdGlvbiB0byB0aGUgd2F0ZXItd2hlZWwgaW4gYSBxdWlldCAKY291bnRyeSBub29rLCBmb3IgdGhleSBtYXkgc29tZXRpbWVzIGJlIHNlZW4gZGlzcG9ydGluZyB0aGVtc2VsdmVzIGluIGEgCm1pbGwtcmFjZS4gVGhleSBzZWVtIHNwZWNpYWxseSB0byBkZWxpZ2h0IGluIGZhbGxpbmcgd2F0ZXIsIGp1c3QgYXMgdGhlaXIgCmJyb3RoZXJzIG9mIHRoZSBzZWEgcmV2ZWwgaW4gdGhlIGJyZWFraW5nIG9mIGZvYW07IGZvciB0aGUgcGxlYXN1cmUgd2hpY2ggaXQgCmdpdmVzIHRoZW0gdGhleSB3aWxsIHNvbWV0aW1lcyBldmVuIGRhcmUgYSBuZWFyZXIgYXBwcm9hY2ggdGhhbiB1c3VhbCB0byB0aGUgCmhhdGVkIHByZXNlbmNlIG9mIG1hbi4gQXQgTmlhZ2FyYSwgZm9yIGV4YW1wbGUsIHRoZXJlIGFyZSBhbG1vc3QgYWx3YXlzIHNvbWUgCnN0aWxsIHRvIGJlIHNlZW4gaW4gdGhlIHN1bW1lciwgdGhvdWdoIHRoZXkgZ2VuZXJhbGx5IGtlZXAgd2VsbCBvdXQgdG93YXJkcyB0aGUgCmNlbnRyZSBvZiB0aGUgRmFsbHMgYW5kIHRoZSBSYXBpZHMuIExpa2UgYmlyZHMgb2YgcGFzc2FnZSwgaW4gd2ludGVyIHRoZXkgCmFiYW5kb24gdGhvc2Ugbm9ydGhlcm4gd2F0ZXJzLCB3aGljaCBhcmUgZnJvemVuIG92ZXIgZm9yIG1hbnkgbW9udGhzLCBhbmQgc2VlayBhIAp0ZW1wb3JhcnkgaG9tZSBpbiBtb3JlIGdlbmlhbCBjbGltZXMuIEEgc2hvcnQgZnJvc3QgdGhleSBkbyBub3Qgc2VlbSB0byBtaW5kOyAKdGhlIG1lcmUgY29sZCBoYXMgYXBwYXJlbnRseSBsaXR0bGUgb3Igbm8gZWZmZWN0IHVwb24gdGhlbSwgYnV0IHRoZXkgZGlzbGlrZSB0aGUgCmRpc3R1cmJhbmNlIG9mIHRoZWlyIG9yZGluYXJ5IGNvbmRpdGlvbnMuIFNvbWUgb2YgdGhvc2Ugd2hvIGNvbW1vbmx5IGluaGFiaXQgCnJpdmVycyB0cmFuc2ZlciB0aGVtc2VsdmVzIHRvIHRoZSBzZWEgd2hlbiB0aGVpciBzdHJlYW1zIGZyZWV6ZTsgdG8gb3RoZXJzIHNhbHQgCndhdGVyIHNlZW1zIGRpc3Rhc3RlZnVsLCBhbmQgdGhleSBwcmVmZXIgdG8gbWlncmF0ZSBjb25zaWRlcmFibGUgZGlzdGFuY2VzIApyYXRoZXIgdGhhbiB0YWtlIHJlZnVnZSBpbiB0aGUgb2NlYW4uIAoKCjI2NS7CoMKgwqDCoMKgwqDCoApBbiBpbnRlcmVzdGluZyB2YXJpZXR5IG9mIHRoZSBmYWlyaWVzIG9mIHRoZSB3YXRlciBhcmUgdGhlIApjbG91ZC1zcGlyaXRzLS0gZW50aXRpZXMgd2hvc2UgbGlmZSBpcyBzcGVudCBhbG1vc3QgZW50aXJlbHkgYW1vbmcgdGhvc2Ug77+9d2F0ZXJzIAp3aGljaCBiZSBhYm92ZSB0aGUgZmlybWFtZW5077+9LiBUaGV5IHNob3VsZCBwZXJoYXBzIGJlIGNsYXNzaWZpZWQgYXMgaW50ZXJtZWRpYXRlIApiZXR3ZWVuIHRoZSBzcGlyaXRzIG9mIHRoZSB3YXRlciBhbmQgdGhvc2Ugb2YgdGhlIGFpcjsgdGhlaXIgYm9kaWVzIGFyZSBvZiAKZXRoZXJpYyBtYXR0ZXIsIGFzIGFyZSB0aGUgZm9ybWVyLCBidXQgdGhleSBhcmUgY2FwYWJsZSBvZiByZW1haW5pbmcgYXdheSBmcm9tIAp0aGUgd2F0ZXIgZm9yIGNvbXBhcmF0aXZlbHkgbG9uZyBwZXJpb2RzLiBUaGVpciBmb3JtcyBhcmUgb2Z0ZW4gaHVnZSBhbmQgbG9vc2VseSAKa25pdDsgdGhleSBzZWVtIG5lYXIgb2Yga2luIHRvIHNvbWUgb2YgdGhlIGZyZXNoLXdhdGVyIHR5cGVzLCB5ZXQgdGhleSBhcmUgcXVpdGUgCndpbGxpbmcgdG8gZGlwIGZvciBhIHRpbWUgaW50byB0aGUgc2VhIHdoZW4gdGhlIGNsb3VkcyB3aGljaCBhcmUgdGhlaXIgZmF2b3VyaXRlIApoYWJpdGF0IGRpc2FwcGVhci4gVGhleSBkd2VsbCBpbiB0aGUgbHVtaW5vdXMgc2lsZW5jZSBvZiBjbG91ZGxhbmQsIGFuZCB0aGVpciAKZmF2b3VyaXRlIHBhc3RpbWUgaXMgdG8gbW91bGQgdGhlaXIgY2xvdWRzIGludG8gc3RyYW5nZSwgZmFudGFzdGljIHNoYXBlcyBvciB0byAKYXJyYW5nZSB0aGVtIGluIHRoZSBzZXJyaWVkIHJhbmtzIHdoaWNoIHdlIGNhbGwgYSBtYWNrZXJlbCBza3kuIAoKCjI2Ni7CoMKgwqDCoMKgwqDCoApTWUxQSFMgCgoKMjY3LsKgwqDCoMKgwqDCoMKgCldlIGNvbWUgbm93IHRvIHRoZSBjb25zaWRlcmF0aW9uIG9mIHRoZSBoaWdoZXN0IHR5cGUgaW4gdGhlIGtpbmdkb20gb2YgCnRoZSBuYXR1cmUtc3Bpcml0cy0tIHRoZSBzdGFnZSBhdCB3aGljaCB0aGUgbGluZXMgb2YgZGV2ZWxvcG1lbnQgYm90aCBvZiB0aGUgCmxhbmQgYW5kIHNlYSBjcmVhdHVyZXMgY29udmVyZ2UtLSB0aGUgc3lscGhzLCBvciBzcGlyaXRzIG9mIHRoZSBhaXIuIFRoZXNlIAplbnRpdGllcyBhcmUgZGVmaW5pdGVseSByYWlzZWQgYWJvdmUgYWxsIHRoZSBvdGhlciB2YXJpZXRpZXMgb2Ygd2hpY2ggd2UgaGF2ZSAKYmVlbiBzcGVha2luZyBieSB0aGUgZmFjdCB0aGF0IHRoZXkgaGF2ZSBzaGFrZW4gdGhlbXNlbHZlcyBmcmVlIGZyb20gdGhlIAplbmN1bWJyYW5jZSBvZiBwaHlzaWNhbCBtYXR0ZXIsIHRoZSBhc3RyYWwgYm9keSBiZWluZyBub3cgdGhlaXIgbG93ZXN0IHZlaGljbGUuIApUaGVpciBpbnRlbGxpZ2VuY2UgaXMgbXVjaCBoaWdoZXIgdGhhbiB0aGF0IG9mIHRoZSBldGhlcmljIHNwZWNpZXMsIGFuZCBxdWl0ZSAKZXF1YWwgdG8gdGhhdCBvZiB0aGUgYXZlcmFnZSBtYW47IGJ1dCB0aGV5IGhhdmUgbm90IHlldCBhdHRhaW5lZCBhIHBlcm1hbmVudCAKcmVpbmNhcm5hdGluZyBpbmRpdmlkdWFsaXR5LiBKdXN0IGJlY2F1c2UgdGhleSBhcmUgc28gbXVjaCBtb3JlIGV2b2x2ZWQsIGJlZm9yZSAKYnJlYWtpbmcgYXdheSBmcm9tIHRoZSBncm91cC1zb3VsIHRoZXkgY2FuIHVuZGVyc3RhbmQgbXVjaCBtb3JlIGFib3V0IGxpZmUgdGhhbiAKYW4gYW5pbWFsIGNhbiwgYW5kIHNvIGl0IG9mdGVuIGhhcHBlbnMgdGhhdCB0aGV5IGtub3cgdGhhdCB0aGV5IGxhY2sgCmluZGl2aWR1YWxpdHkgYW5kIGFyZSBpbnRlbnNlbHkgZWFnZXIgdG8gZ2FpbiBpdC4gVGhhdCBpcyB0aGUgdHJ1dGggdGhhdCBsaWVzIGF0IAp0aGUgYmFjayBvZiBhbGwgdGhlIHdpZGVseS1zcHJlYWQgdHJhZGl0aW9ucyBvZiB0aGUgeWVhcm5pbmcgb2YgdGhlIApuYXR1cmUtc3Bpcml0IHRvIG9idGFpbiBhbiBpbW1vcnRhbCBzb3VsLiAKCgoyNjguwqDCoMKgwqDCoMKgwqAKVGhlIG5vcm1hbCBtZXRob2QgZm9yIHRoZW0gdG8gYXR0YWluIHRoaXMgaXMgYnkgYXNzb2NpYXRpb24gd2l0aCBhbmQgbG92ZSAKZm9yIG1lbWJlcnMgb2YgdGhlIG5leHQgc3RhZ2UgYWJvdmUgdGhlbS0tIHRoZSBhc3RyYWwgYW5nZWxzLiBBIGRvbWVzdGljIGFuaW1hbCwgCnN1Y2ggYXMgdGhlIGRvZyBvciB0aGUgY2F0LCBhZHZhbmNlcyB0aHJvdWdoIHRoZSBkZXZlbG9wbWVudCBvZiBoaXMgaW50ZWxsaWdlbmNlIAphbmQgaGlzIGFmZmVjdGlvbiB3aGljaCBpcyB0aGUgcmVzdWx0IG9mIGhpcyBjbG9zZSByZWxhdGlvbnNoaXAgd2l0aCBoaXMgbWFzdGVyLiAKTm90IG9ubHkgZG9lcyBoaXMgbG92ZSBmb3IgdGhhdCBtYXN0ZXIgY2F1c2UgaGltIHRvIG1ha2UgZGV0ZXJtaW5lZCBlZmZvcnRzIHRvIAp1bmRlcnN0YW5kIGhpbSwgYnV0IHRoZSB2aWJyYXRpb25zIG9mIHRoZSBtYXN0ZXInIHMgbWluZC1ib2R5LCBjb25zdGFudGx5IApwbGF5aW5nIHVwb24gaGlzIHJ1ZGltZW50YXJ5IG1pbmQsIGdyYWR1YWxseSBhd2FrZW4gaXQgaW50byBncmVhdGVyIGFuZCBncmVhdGVyIAphY3Rpdml0eTsgYW5kIGluIHRoZSBzYW1lIHdheSBoaXMgYWZmZWN0aW9uIGZvciBoaW0gYXJvdXNlcyBhbiBldmVyLWRlZXBlbmluZyAKZmVlbGluZyBpbiByZXR1cm4uIFRoZSBtYW4gbWF5IG9yIG1heSBub3QgZGVmaW5pdGVseSBzZXQgaGltc2VsZiB0byB0ZWFjaCB0aGUgCmFuaW1hbCBzb21ldGhpbmc7IGluIGFueSBjYXNlLCBldmVuIHdpdGhvdXQgYW55IGRpcmVjdCBlZmZvcnQsIHRoZSBpbnRpbWF0ZSAKY29ubmVjdGlvbiBiZXR3ZWVuIHRoZW0gaGVscHMgdGhlIGV2b2x2ZW1lbnQgb2YgdGhlIGxvd2VyLiBFdmVudHVhbGx5IHRoZSAKZGV2ZWxvcG1lbnQgb2Ygc3VjaCBhbiBhbmltYWwgcmlzZXMgdG8gdGhlIGxldmVsIHdoaWNoIHdpbGwgYWxsb3cgaGltIHRvIHJlY2VpdmUgCnRoZSBUaGlyZCBPdXRwb3VyaW5nLCBhbmQgdGh1cyBoZSBiZWNvbWVzIGFuIGluZGl2aWR1YWwsIGFuZCBicmVha3MgYXdheSBmcm9tIApoaXMgZ3JvdXAtc291bC4gCgoKMjY5LsKgwqDCoMKgwqDCoMKgCk5vdyBhbGwgdGhpcyBpcyBhbHNvIGV4YWN0bHkgd2hhdCBoYXBwZW5zIGJldHdlZW4gdGhlIGFzdHJhbCBhbmdlbCBhbmQgCnRoZSBhaXItc3Bpcml0LCBleGNlcHQgdGhhdCBieSB0aGVtIHRoZSBzY2hlbWUgaXMgdXN1YWxseSBjYXJyaWVkIG91dCBpbiBhIG11Y2ggCm1vcmUgaW50ZWxsaWdlbnQgYW5kIGVmZmVjdGl2ZSBtYW5uZXIuIE5vdCBvbmUgbWFuIGluIGEgdGhvdXNhbmQgdGhpbmtzIG9yIGtub3dzIAphbnl0aGluZyBhYm91dCB0aGUgcmVhbCBldm9sdXRpb24gb2YgaGlzIGRvZyBvciBjYXQ7IHN0aWxsIGxlc3MgZG9lcyB0aGUgYW5pbWFsIApjb21wcmVoZW5kIHRoZSBwb3NzaWJpbGl0eSB0aGF0IGxpZXMgYmVmb3JlIGhpbS4gQnV0IHRoZSBhbmdlbCBjbGVhcmx5IAp1bmRlcnN0YW5kcyB0aGUgcGxhbiBvZiBuYXR1cmUsIGFuZCBpbiBtYW55IGNhc2VzIHRoZSBuYXR1cmUtc3Bpcml0IGFsc28ga25vd3MgCndoYXQgaGUgbmVlZHMsIGFuZCB3b3JrcyBpbnRlbGxpZ2VudGx5IHRvd2FyZHMgaXRzIGF0dGFpbm1lbnQuIFNvIGVhY2ggb2YgdGhlc2UgCmFzdHJhbCBhbmdlbHMgdXN1YWxseSBoYXMgc2V2ZXJhbCBzeWxwaHMgYXR0YWNoZWQgdG8gaGltLCBmcmVxdWVudGx5IGRlZmluaXRlbHkgCmxlYXJuaW5nIGZyb20gaGltIGFuZCBiZWluZyB0cmFpbmVkIGJ5IGhpbSwgYnV0IGF0IGFueSByYXRlIGJhc2tpbmcgaW4gdGhlIHBsYXkgCm9mIGhpcyBpbnRlbGxlY3QgYW5kIHJldHVybmluZyBoaXMgYWZmZWN0aW9uLiBWZXJ5IG1hbnkgb2YgdGhlc2UgYW5nZWxzIGFyZSAKZW1wbG95ZWQgYXMgYWdlbnRzIGJ5IHRoZSBEZXZhcmFqYXMgaW4gdGhlaXIgZHV0eSBvZiB0aGUgZGlzdHJpYnV0aW5nIG9mIGthcm1hOyAKYW5kIHRodXMgaXQgY29tZXMgdGhhdCB0aGUgYWlyLXNwaXJpdHMgYXJlIG9mdGVuIHN1Yi1hZ2VudHMgaW4gdGhhdCB3b3JrLCBhbmQgbm8gCmRvdWJ0IGFjcXVpcmUgbXVjaCB2YWx1YWJsZSBrbm93bGVkZ2Ugd2hpbGUgZXhlY3V0aW5nIHRoZSB0YXNrcyBhc3NpZ25lZCB0byAKdGhlbS4gCgoKMjcwLsKgwqDCoMKgwqDCoMKgClRoZSBBZGVwdCBrbm93cyBob3cgdG8gbWFrZSB1c2Ugb2YgdGhlIHNlcnZpY2VzIG9mIHRoZSBuYXR1cmUtc3Bpcml0cyAKd2hlbiBoZSByZXF1aXJlcyB0aGVtLCBhbmQgdGhlcmUgYXJlIG1hbnkgcGllY2VzIG9mIGJ1c2luZXNzIHdoaWNoIGhlIGlzIGFibGUgdG8gCmVudHJ1c3QgdG8gdGhlbS4gSW4gdGhlIGlzc3VlIG9mIEJyb2FkIFZpZXdzIGZvciBGZWJydWFyeSwgMTkwNywgdGhlcmUgCmFwcGVhcmVkIGFuIGFkbWlyYWJsZSBhY2NvdW50IG9mIHRoZSBpbmdlbmlvdXMgbWFubmVyIGluIHdoaWNoIGEgbmF0dXJlLXNwaXJpdCAKZXhlY3V0ZWQgYSBjb21taXNzaW9uIGdpdmVuIHRvIGhpbSBpbiB0aGlzIHdheS4gCgoKMjcxLsKgwqDCoMKgwqDCoMKgCkhlIHdhcyBpbnN0cnVjdGVkIHRvIGFtdXNlIGFuIGludmFsaWQgd2hvIHdhcyBzdWZmZXJpbmcgZnJvbSBhbiBhdHRhY2sgb2YgCmluZmx1ZW56YSwgYW5kIGZvciBmaXZlIGRheXMgaGUga2VwdCB1cCBhbiBhbG1vc3QgY29udGludW91cyBlbnRlcnRhaW5tZW50IG9mIApzdHJhbmdlIGFuZCBpbnRlcmVzdGluZyB2aXNpb25zLCBoaXMgZWZmb3J0cyBiZWluZyBjcm93bmVkIHdpdGggdGhlIG1vc3QgCmdyYXRpZnlpbmcgc3VjY2VzcywgZm9yIHRoZSBzdWZmZXJlciB3cm90ZSB0aGF0IGhpcyBtaW5pc3RyYXRpb25zIO+/vWhhZCB0aGUgaGFwcHkgCmVmZmVjdCBvZiB0dXJuaW5nIHdoYXQgdW5kZXIgb3JkaW5hcnkgY2lyY3Vtc3RhbmNlcyB3b3VsZCBoYXZlIGJlZW4gZGF5cyBvZiAKdW51dHRlcmFibGUgd2VhcmluZXNzIGFuZCBkaXNjb21mb3J0IGludG8gYSBtb3N0IHdvbmRlcmZ1bGx5IGludGVyZXN0aW5nIApleHBlcmllbmNl77+9LiAKCgoyNzIuwqDCoMKgwqDCoMKgwqAKSGUgc2hvd2VkIGEgYmV3aWxkZXJpbmcgdmFyaWV0eSBvZiBwaWN0dXJlcywgbW92aW5nIG1hc3NlcyBvZiByb2NrLCBzZWVuIApub3QgZnJvbSB0aGUgb3V0c2lkZSBidXQgZnJvbSB0aGUgaW5zaWRlLCBzbyB0aGF0IGZhY2VzIG9mIGNyZWF0dXJlcyBvZiB2YXJpb3VzIApzb3J0cyBhcHBlYXJlZCBpbiB0aGVtLiBIZSBhbHNvIGV4aGliaXRlZCBtb3VudGFpbnMsIGZvcmVzdHMgYW5kIGF2ZW51ZXMsIGFuZCAKc29tZXRpbWVzIGdyZWF0IG1hc3NlcyBvZiBhcmNoaXRlY3R1cmUsIHBvcnRpb25zIG9mIENvcmludGhpYW4gY29sdW1ucywgYml0cyBvZiAKc3RhdHVhcnksIGFuZCBncmVhdCBhcmNoZWQgcm9vZnMsIG9mdGVuIGFsc28gdGhlIG1vc3Qgd29uZGVyZnVsIGZsb3dlcnMgYW5kIApwYWxtcywgd2F2aW5nIHRvIGFuZCBmcm8gYXMgaWYgaW4gYSBnZW50bGUgYnJlZXplLiBTb21ldGltZXMgaGUgc2VlbXMgdG8gaGF2ZSAKdGFrZW4gdGhlIHBoeXNpY2FsIG9iamVjdHMgaW4gdGhlIGJlZHJvb20gYW5kIHdvdmVuIHRoZW0gaW50byBhIGtpbmQgb2YgbWFnaWMgCnRyYW5zZm9ybWF0aW9uIHNjZW5lLiBPbmUgbWlnaHQgaW5kZWVkIHN1cm1pc2UsIGZyb20gdGhlIGN1cmlvdXMgbmF0dXJlIG9mIHRoZSAKZW50ZXJ0YWlubWVudCBvZmZlcmVkLCB0aGUgcGFydGljdWxhciB0eXBlIHRvIHdoaWNoIGJlbG9uZ2VkIHRoZSBuYXR1cmUtc3Bpcml0IAp3aG8gd2FzIGVtcGxveWVkIGluIHRoaXMgY2hhcml0YWJsZSB3b3JrLiAKCgoyNzMuwqDCoMKgwqDCoMKgwqAKVGhlIE9yaWVudGFsIG1hZ2ljaWFuIG9jY2FzaW9uYWxseSBlbmRlYXZvdXJzIHRvIG9idGFpbiB0aGUgYXNzaXN0YW5jZSBvZiAKdGhlIGhpZ2hlciBuYXR1cmUtc3Bpcml0cyBpbiBoaXMgcGVyZm9ybWFuY2VzLCBidXQgdGhlIGVudGVycHJpc2UgaXMgbm90IHdpdGhvdXQgCml0cyBkYW5nZXJzLiBIZSBtdXN0IGFkb3B0IGVpdGhlciBpbnZvY2F0aW9uIG9yIGV2b2NhdGlvbi0tIHRoYXQgaXMsIGhlIG11c3QgCmVpdGhlciBhdHRyYWN0IHRoZWlyIGF0dGVudGlvbiBhcyBhIHN1cHBsaWFudCBhbmQgbWFrZSBzb21lIGtpbmQgb2YgYmFyZ2FpbiB3aXRoIAp0aGVtLCBvciBoZSBtdXN0IHRyeSB0byBzZXQgaW4gbW90aW9uIGluZmx1ZW5jZXMgd2hpY2ggd2lsbCBjb21wZWwgdGhlaXIgCm9iZWRpZW5jZS0tIGFuIGF0dGVtcHQgd2hpY2gsIGlmIGl0IGZhaWxzLCB3aWxsIGFyb3VzZSBhIGRldGVybWluZWQgaG9zdGlsaXR5IAp0aGF0IGlzIGV4Y2VlZGluZ2x5IGxpa2VseSB0byByZXN1bHQgaW4gaGlzIHByZW1hdHVyZSBleHRpbmN0aW9uLCBvciBhdCB0aGUgCmxlYXN0IHdpbGwgcHV0IGhpbSBpbiBhbiBleHRyZW1lbHkgcmlkaWN1bG91cyBhbmQgdW5wbGVhc2FudCBwb3NpdGlvbi4=
sabato 1 gennaio 2000
[AL CORPUS] The Hidden Side of Things [1/6]
Iscriviti a:
Commenti sul post (Atom)
[AL CORPUS] Occult Chemistry [2/2]
VGhlc2UgdW5pdHMgYXJlIGFsbCBhbGlrZSwgc3BoZXJpY2FsIGFuZCBhYnNvbHV0ZWx5IHNpbXBsZSBpbiAKY29uc3RydWN0aW9uLiBUaG91Z2ggdGhleSBhcmUgdGhlIGJhc2lzIG9m...
-
VGhlc2UgdW5pdHMgYXJlIGFsbCBhbGlrZSwgc3BoZXJpY2FsIGFuZCBhYnNvbHV0ZWx5IHNpbXBsZSBpbiAKY29uc3RydWN0aW9uLiBUaG91Z2ggdGhleSBhcmUgdGhlIGJhc2lzIG9m...
-
XFwiXiAKCgpzICwgCgoKLl4gCgoKT0NDVUxUIENIRU1JU1RSWSAKCgpDbGFpcnZveWFudCBPYnNlcnZhdGlvbnMgb24gdGhlIApDaGVtaWNhbCBFbGVtZW50cyAKCgpCWSAKCgpBTk5J...
-
VEhPVUdIVC1GT1JNUyAKCgpCWSAKCkFOTklFIEJFU0FOVCAKCkFORCAKCkMuIFcuIExFQUQgQkVBVEVSIAoKCldJVEggRklGVFktRUlHSFQgSUxMVVNUUkFUSU9OUyAKCgpMT05ET04g...
Nessun commento:
Posta un commento