sabato 1 gennaio 2000

[AL CORPUS] Clairvoyance [2/2]

VGhlcmUgaXMgbm8gZG91YnQgd2hhdGV2ZXIgdGhhdCwganVzdCBhcyB3aGF0IGlzIApoYXBwZW5pbmcgbm93IGlzIHRoZSByZXN1bHQgb2YgY2F1c2VzIHNldCBpbiBtb3Rpb24gaW4gCnRoZSBwYXN0LCBzbyB3XnQgd2lsbCBoYXBwZW4gaW4gdGhlIGZ1dHVyZSB3aWxsIGJlIHRoZSAKcmVzdWx0IG9mIGNhdXNlcyBhbHJlYWR5IGluIF4gb3BlcmF0aW9uLiBFdmVuIGRvd24gCkpqdGVyZSB3ZSBjYW4gY2FsY3VsYXRlIHRoYXQgaWYgY2VydGFpbiBhY3Rpb25zIGFyZSBwZXItIApmb3JtZWQgY2VydGFpbiByZXN1bHRzIHdpbGwgZm9sbG93LCBidXQgb3VyIHJlY2tvbmluZyBpcyAKY29uc3RhbnRseSBsaWFibGUgdG8gYmUgZGlzdHVyYmVkIGJ5IHRoZSBpbnRlcmZlcmVuY2UgCm9mIGZhY3RvcnMgd2hpY2ggd2UgaGF2ZSBub3QgYmVlbiBhYmxlIHRvIHRha2UgaW50byAKYWNjb3VudC4gQnV0IGlmIHdlXyByYWlzZSBvdXIgY29uc2Npb3VzbmVzcyB0byB0aGUgCgoKMTM0IAoKCkNMQUlSVk9ZQU5DRSAKCgptZW50YWwgcGxhbmUgd2UgY2FuIHNlZSB2ZXJ5IG11Y2ggZmFydGhlciBpbnRvIHRoZSAKCnJlc3VsdHMgb2Ygb3VyIGFjdGlvbnMuIAoKXFwgV2UgY2FuIHRyYWNlLCBmb3IgZXhhbXBsZSwgdGhlIGVmZmVjdCBvZiBhIGNhc3VhbCAKd29yZCwgbm90IG9ubHkgdXBvbiB0aGUgcGVyc29uIHRvIHdob20gaXQgd2FzIGFkLSAKZHJlc3NlZCwgYnV0IHRocm91Z2ggaGltIG9uIG1hbnkgb3RoZXJzIGFzIGl0IGlzIApwYXNzZWQgb24gaW4gd2lkZW5pbmcgY2lyY2xlcywgdW50aWwgaXQgc2VlbXMgdG8gaGF2ZSAKYWZmZWN0ZWQgdGhlIHdob2xlIGNvdW50cnkgOyBhbmQgb25lIGdsaW1wc2Ugb2Ygc3VjaCAKXmEgdmlzaW9uIGlzIGZhciBtb3JlIGVmZmljaWVudCB0aGFuIGFueSBudW1iZXIgb2YgCmkgbW9yYWwgcHJlY2VwdHMgaW4gaW1wcmVzc2luZyB1cG9uIHVzIHRoZSBuZWNlc3NpdHkgb2YgCnwgZXh0cmVtZSBjaXJjdW1zcGVjdGlvbiBpbiB0aG91Z2h0LCB3b3JkLCBhbmQgZGVlZC4gCnwgTm90IG9ubHkgY2FuIHdlIGZyb20gdGhhdCBwbGFuZSBzZWUgdGh1cyBmdWxseSB0aGUgCnwgcmVzdWx0IG9mIGV2ZXJ5IGFjdGlvbiwgYnV0IHdlIGNhbiBhbHNvIHNlZSB3aGVyZSBhbmQgCnwgaW4gd2hhdCB3YXkgdGhlIHJlc3VsdHMgb2Ygb3RoZXIgYWN0aW9ucyBhcHBhcmVudGx5IApqIHF1aXRlIHVuY29ubmVjdGVkIHdpdGggaXQgd2lsbCBpbnRlcmZlcmUgd2l0aCBhbmQgbW9kaWZ5IAo6ICogaXQuIEluIGZhY3QsIGl0IG1heSBiZSBzYWlkIHRoYXQgdGhlIHJlc3VsdHMgb2YgYWxsIApqIDsgY2F1c2VzIGF0IHByZXNlbnQgaW4gYWN0aW9uIGFyZSBjbGVhcmx5IHZpc2libGUg4oCUIHRoYXQgCmogMSB0aGUgZnV0dXJlLCBhcyBpdCB3b3VsZCBiZSBpZiBubyBlbnRpcmVseSBuZXcg4oCiIGNhdXNlcyAKKiBzaG91bGQgYXJpc2UsIGxpZXMgb3BlbiBiZWZvcmUgb3VyIGdhemUuIAoKTmV3IGNhdXNlcyBvZiBjb3Vyc2UgZG8gYXJpc2UsIGJlY2F1c2UgbWFu4oCZcyB3aWxsIGlzIArigJ4gZnJncDsgYnV0IGluIHRoZSBjYXNlIG9mIGFsbCBvcmRpbmFyeSBwZW9wbGUgdGhlIHVzZSAKd2hpY2ggdGggZXkgd2lsbCBtYWtlIG9mIHRoZWlyIGZyZWVkb20gY2FuIGJlIGNhbGN1LSAKbGF0ZWQgYmVmb3JlaGFuZCB3aXRoIGNvbnNpZGVyYWJsZSBhY2N1cmFjeS4gVGhlIArCuyBeTSdeZXJhZ2UgbWFuIGhhcyBzbyBsaXR0bGUgcmVhbCB3aWxsIHRoYXQgaGUgaXMgdmVyeSAKbXVjaCB0aF5jcmVhdHVyZSBvZiBjaXJjdW1zdGFuY2VzIDsgaGlzIGFjdGlvbiBpcnYgCntwcmV2aW91cyBsaXZlcyBwbGFjZXMgaGltIGFtaWQgY2VydGFpbiBzdXJyb3VuZGluZ3MsIApsYW5kIHRoZWlyIGluZmx1ZW5jZSB1cG9uIGhpbSBpcyBzbyB2ZXJ5IG11Y2ggdGhlIApJIG1vc3QgaW1wb3J0YW50IGZhY3RvciBpbiBoaXMgbGlmZS1zdG9yeSB0aGF0IGhpcyBmdXR1cmUgCmYgY291cnNlIG1heSBiZSBwcmVkaWN0ZWQgd2l0aCBhbG1vc3QgbWF0aGVtYXRpY2FsIAoKCldIRU4gQ0hPSUNFIElTIFBPU1NJQkxFIAoKCnIzNSAKCmNlcnRhaW50eS4gV2l0aCB0aGUgZGV2ZWxvcGVkIG1hbiB0aGUgY2FzZSBpcyAKZGlmZmVyZW50OyBmb3IgaGltIGFsc28gdGhlIG1haW4gZXZlbnRzIG9mIGxpZmUgYXJlIAphcnJhbmdlZCBieSBoaXMgcGFzdCBhY3Rpb25zLCBidXQgdGhlIHdheSBpbiB3aGljaCBoZSAKd2lsbCBhbGxvdyB0aGVtIHRvIGFmZmVjdCBoaW0sIHRoZSBtZXRob2RzIGJ5IHdoaWNoPiAKaGUgd2lsbCBkZWFsIHdpdGggdGhlbSBhbmQgcGVyaGFwcyB0cml1bXBoIG92ZXIgCnRoZW0g4oCUIHRoZXNlIGFyZSBhbGwgaGlzIG93biwgYW5kIHRoZXkgY2Fubm90IGJlLiAKZm9yZXNlZW4gZXbCp24zbiBmZmllIG1lbnRhbCBwbGFuZSBleGNlcHQgYXMgcHJvYi0hIAphYmlsaXRpZXMuIAoKTG9va2luZyBkb3duIG9uIG1hbnMgbGlmZSBpbiB0aGlzIHdheSBmcm9tIAphYm92ZSwgaXQgc2VlbXMgYXMgdGhvdWdoIGhpcyBmcmVlIHdpbGwgY291bGQgYmUgaiAKZXhlcmNpc2VkIG9ubHkgYXQgY2VydGFpbiBjcmlzZXMgaW4gaGlzIGNhcmVlci4gSGUgbCAKYXJyaXZlcy4gYXQgYSBwb2ludCBpbiBoaXMgbGlmZSB3aGVyZSB0aGVyZSBhcmUgb2J2aW91c2x5IAp0d28gb3IgdGhyZWUgYWx0ZXJuYXRpdmUgY291cnNlcyBvcGVuIGJlZm9yZSBoaW0gOyBoZSAKaXMgYWJzb2x1dGVseSBmcmVlIHRvIGNob29zZSB3aGljaCBvZiB0aGVtIGhlIHBsZWFzZXMsIAphbmQgIyBhbHRob3VnaCBzb21lIG9uZSB3aG8ga25ldyBoaXMgbmF0dXJlIAp0aG9yb3VnaGx5IHdlbGwgbWlnaHQgZmVlbCBhbG1vc3QgY2VydGFpbiB3aGF0IGhpcyAKY2hvaWNlIHdvdWxkIGJlLCBzdWNoIGtub3dsZWRnZSBvbiBoaXMgZnJpZW5kJ3MgcGFydCAKaXMgZm4gaG8gc2Vuc2UgYSBjb21wZWxsaW5nIGZvcmNlLiAKCkJ1dCB3aGVuIGhlIGhhcyBjaG9zZW4sIGhlIGhhcyB0byBnbyB0aHJvdWdoIHdpdGggCml0IGFuZCB0YWtlIHRoZSBjb25zZXF1ZW5jZXM7IGhhdmluZyBlbnRlcmVkIHVwb24gCmEgcGFydGljdWxhciBwYXRoIGhlIG1heSwgaW4gbWFueSBjYXNlcywgYmUgZm9yY2VkIHRvICogCmdvIG9uIGZvciBhIHZlcnkgbG9uZyB3YXkgYmVmb3JlIGhlIGhhcyBhbnkgb3Bwb3ItIAp0dW5pdHkgdG8gdHVybiBhc2lkZS4gSGlzIHBvc2l0aW9uIGlzIHNvbWV3aGF0IGxpa2UgCnRoYXQgb2YgdGhlIGRyaXZlciBvZiBqYSB0cmFqbiA7IHdoZW4gaGUgY29tZXMgdG8gYSAKanVuY3Rpb24gaGUgbWF5IGhhdmUgdGhlIHBvaW50cyBzZXQgZWl0aGVyIHRoaXMgd2F5IApvciB0aGF0LCBhbmQgc28gY2FuIHBhc3Mgb24gdG8gd2hpY2hldmVyIGxpbmUgaGUgCnBsZWFzZXMsIGJ1dCB3aGVuIGhlIGhhcyBwYXNzZWQgb24gdG8gb25lIG9mIHRoZW0gaGUgCmlzIGNvbXBlbGxlZCB0byBydW4gb24gYWxvbmcgdGhlIGxpbmUgd2hpY2ggaGUgaGFzIAoKCnIgMzYgCgoKQ0xBSVJWT1lBTkNFIAoKCmZpIAoKCnNlbGVjdGVkIHVudGlsIGhlIHJlYWNoZXMgYW5vdGhlciBzZXQgb2YgcG9pbnRzLCB3aGVyZSAKYWdhaW4gYW4gb3Bwb3J0dW5pdHkgb2YgY2hvaWNlIGlzIG9mZmVyZWQgdG8gaGltLiAKCk5vdywgaW4gbG9va2luZyBkb3duIGZyb20gdGhlIG1lbnRhbCBwbGFuZSwgdGhlc2UgCkkgcG9pbnRzIG9mIG5ldyBkZXBhcnR1cmUgd291bGQgYmUgY2xlYXJseSB2aXNpYmxlLCBhbmQgCnwgYWxsIHRoZSByZXN1bHRzIG9mIGVhY2ggY2hvaWNlIHdvdWxkIGxpZSBvcGVuIGJlZm9yZSAKOiB1cywgY2VydGFpbiB0byBiZSB3b3JrZWQgb3V0IGV2ZW4gdG8gdGhlIHNtYWxsZXN0IApqLiogZGV0YWlsLiBUaGUgb25seSBwb2ludCB3aGljaCB3b3VsZCByZW1haW4gdW4tIApjZXJ0YWluIHdvdWxkIGJlIHRoZSBhbGwtaW1wb3J0YW50IG9uZSBhcyB0byB3aGljaCAKY2hvaWNlIHRoZSBtYW4gd291bGQgbWFrZS4gV2Ugc2hvdWxkLCBpbiBmYWN0LCAKaGF2ZSBub3Qgb25lIGJ1dCBzZXZlcmFsIGZ1dHVyZXMgbWFwcGVkIG91dCBiZWZvcmUgCm91ciBleWVzLCB3aXRob3V0IG5lY2Vzc2FyaWx5IGJlaW5nIGFibGUgdG8gZGV0ZXJtaW5lIAp3aGljaCBvZiB0aGVtIHdvdWxkIG1hdGVyaWFsaXplIGl0c2VsZiBpbnRvIGFjY29tLSAqIApwbGlzaGVkIGZhY3QuIEluIG1vc3QgaW5zdGFuY2VzIHdlIHNob3VsZCBzZWUgc28gCnN0cm9uZyBhIHByb2JhYmlsaXR5IHRoYXQgd2Ugc2hvdWxkIG5vdCBoZXNpdGF0ZSB0byAKY29tZSB0byBhIGRlY2lzaW9uLCBidXQgdGhlIGNhc2Ugd2hpY2ggSSBoYXZlIApkZXNjcmliZWQgaXMgY2VydGFpbmx5IHRoZW9yZXRpY2FsbHkgcG9zc2libGUuIFN0aWxsLCAKZXZlbiB0aGlzIG11Y2gga25vd2xlZGdlIHdvdWxkIGVuYWJsZSB1cyB0byBkbyAKd2l0aCBzYWZldHkgYSBnb29kIGRlYWwgb2YgcHJlZGljdGlvbiA7IGFuZCBpdCBpcyB1ZmNvdCAKZGlmZmljdWx0IGZvciB1cyB0byBpbWFnaW5lIHRoYXQgYV4gZmFyIGhpZ2hlciBwb3dlciAKdGhhbiBvdXJzIG1pZ2h0IGFsd2F5cyBoZS4uIGFibGUgLiB0byBmUWlec2VlLCAuIHdoaWNoXndheSAK4oCiIGV2ZXJ5IGpkaVFpY2UgLCB0byBwcm9waGVzeSAKCndpdGggYWJzb2x1dGUueGVydF5pbnR5LiAKClFuIHRoZSBidWRkaGljIHBsYW5lLCBob3dldmVyLCBubyBzdWNoIGVsYWJvcmF0ZSAKcHJvY2VzcyBvciBjb24mR2lQSkpeIGlzIG5lY2Vzc2FyeSwgZm9yLCBhcyBJIAoKc2FpZCBiZWZvcmUsIGluIHNvbWUgbWFubmVyIHdoaWNoIGRvd24gaGVyZSBpcyB0b3RhbGx5ICogCmluZXhwbGljYWJsZSwgdGhlIHBhc3QsIHRoZSBwcmVzZW50IGFuZCB0aGUgZnV0dXJlLyAKYXJlIHRoZXJlIGFsbCBleGlzdGluZyBzaW11bHRhbmVvdXNseS4gT25lIGNhbiBvbmx5IAphY2NlcHQgdGhpcyBmYWN0LCBmb3IgaXRzIGNhdXNlIGxpZXMgaW4gdGhlIGZhY3VsdHkgb2YgdGhlIAoKCkRSLiBMT0RHReKAmVMgQUREUkVTUyAKCgoxMzcgCgoKcGxhbmUsIGFuZCB0aGUgd2F5IGluIHdoaWNoIHRoaXMgaGlnaGVyIGZhY3VsdHkgd29ya3MgCmlzIG5hdHVyYWxseSBxdWl0ZSBpbmNvbXByZWhlbnNpYmxlIHRvIHRoZSBwaHlzaWNhbCAKYnJhaW4uIFlldCBub3cgYW5kIHRoZW4gb25lIG1heSBtZWV0IHdpdGggYSBoaW50IAp0aGF0IHNlZW1zIHRvIGJyaW5nIHVzIGEgdHJpZmxlIG5lYXJlciB0byBhIGRpbSBwb3NzaS0gCmJpbGl0eSBvZiBjb21wcmVoZW5zaW9uLiBPbmUgc3VjaCBoaW50IHdhcyBnaXZlbiAKYnkgRHIuIE9saXZlciBMb2RnZSBpbiBoaXMgYWRkcmVzcyB0byB0aGUgQnJpdGlzaCAKQXNzb2NpYXRpb24gYXQgQ2FyZGlmZi4gSGUgc2FpZCA6IAoK4oCcIEEgbHVtaW5vdXMgYW5kIGhlbHBmdWwgaWRlYSBpcyB0aGF0IAphIHJlbGF0aXZlIG1vZGUgb2YgcmVnYXJkaW5nLCB0aGluZ3M6IHdlIHByb2dyZXNzIAp0aHJvdWdoIHBoZW5vbWVuYSBhdCBhIGNlcnRhaW4gZGVmaW5pdGUgcGFjZSwgYW5kIAp0aGlzIHN1YmplY3RpdmUgYWR2YW5jZSB3ZSBpbnRlcnByZXQgaW4gYW4gb2JqZWN0aXZlICogCm1hbm5lciwgYXMgaWYgZXZlbnRzIG1vdmVkIG5lY2Vzc2FyaWx5IGluIHRoaXMgb3JkZXIgfCAKYW5kIGF0IHRoaXMgcHJlY2lzZSByYXRlLiBCdXQgdGhhdCBtYXkgYmUgb25seSBvbmUgCm1vZGUgb2YgcmVnYXJkaW5nIHRoZW0uIFRoZSBldmVudHMgbWF5IGJlIGluIApzb21lIHNlbnNlIGluIGV4aXN0ZW5jZSBhbHdheXMsIGJvdGggcGFzdCBhbmQgZnV0dXJlLCAKYW5kIGl0IG1heSBiZSB3ZSB3aG8gYXJlIGFycml2aW5nIGF0IHRoZW0sIG5vdCB0aGV5IAp3aGljaCBhcmUgaGFwcGVuaW5nLiBUaGVfYW5hbG9neV9vZiBhIHRyYXZlbGxlciBpbiAKYSByYWlsd2F5IHRyYWluIGlzIHVzZWZ1bCA7IGlmIGhlIGNvdWxkIG5ldmVyIGxlYXZlIHRoZSAKdHJhaW4gbm9yIGFsdGVyIGl0cyBwYWNlIGhlIHdvdWxkIHByb2JhYmx5IGNvbnNpZGVyIAp0aGUgbGFuZHNjYXBlcyBhcyBuZWNlc3NhcmlseSBzdWNjZXNzaXZlIGFuZCBiZSB1bmFibGUgCnRvIGNvbmNlaXZlIHRoZWlyIGNvLWV4aXN0ZW5jZS4gLiAuIC4gV2UgcGVyY2VpdmUsIAp0aGVyZWZvcmUsIGEgXnBvc3NpYmxlIGZvdXJ0aCBkaG5lbiBhYm91dCAKCnRpbWUsIHRoZSBpbmV4b3JhQlRlaGVzcyBvZiB3aG9zZSBmbG93IG1heSBiZSBhIApuYXR1cmFsIHBhcnQgcV5vdXIgcHJlc2VudCBsaW1pdGF0aW9ucy4gQW5kIGlmIHdlIArigKJvbmNlIGdyYXNwIHRoZSBpZGVhIHRoYXQgcGFzdCBhbmQgZnV0dXJlIG1heSBiZSAKYWN0dWFsbHkgZXhpc3RpbmcsIHdlIGNhbiByZWNvZ25pemUgdGhhdCB0aGV5IG1heSAKaGF2ZSBhIGNvbnRyb2xsaW5nIGluZmx1ZW5jZSBvbiBhbGwgcHJlc2VudCBhY3Rpb24sIGFuZCAKdGhlIHR3byB0b2dldGhlciBtYXkgY29uc3RpdHV0ZSB0aGUg4oCYaGlnaGVyIHBsYW5l4oCZIAoKCkNMQUlSVk9ZQU5DRSAKCgoxMzggCgpvciB0b3RhbGl0eSBvZiB0aGluZ3MgYWZ0ZXIgd2hpY2gsIGFzIGl0IHNlZW1zIHRvIG1lLCAKd2UgYXJlIGltcGVsbGVkIHRvIHNlZWssIGluIGNvbm5lY3Rpb24gd2l0aCB0aGUgCmRpcmVjdGluZyBvZiBmb3JtIG9yIGRldGVybWluaXNtLCBhbmQgdGhlIGFjdGlvbiBvZiAKbGl2aW5nIGJlaW5ncyBjb25zY2lvdXNseSBkaXJlY3RlZCB0byBhIGRlZmluaXRlIGFuZCAKcHJlY29uY2VpdmVkIGVuZC7igJ0gCgpUaW1lIGlzIC4gbm90IGluIHJlYWxpdHkgdGhlIGZvdXJ0aCBkaW1lbnNpb24gYXQgYWxsIDsgCnlldCB0byBsb29rIGF0IGl0IGZvciB0aGUgbW9tZW50IGZyb20gdGhhdCBwb2ludCBvZiAKdmlldyBpcyBzb2Z0aWUgc2xpZ2h0IGhlbHAgdG93YXJkcyBncmFzcGluZyB0aGUgdW4tIApncmFzcGFibGUuIFN1cHBvc2UgdGhhdCB3ZSBob2xkIGEgd29vZGVuIGNvbmUgYXQgCnJpZ2h0IGFuZ2xlcyB0byBhIHNoZWV0IG9mIHBhcGVyLCBhbmQgc2xvd2x5IHB1c2ggaWYgCnRocm91Z2ggaXQgcG9pbnQgZmlyc3QuIEEgbWljcm9iZSBsaXZpbmcgb24gdGhlIHN1ci0gCmZhY2Ugb2YgdGhhdCBzaGVldCBvZiBwYXBlciwgYW5kIGhhdmluZyBubyBwb3dlciBvZiAKY29uY2VpdmluZyBhbnl0aGluZyBvdXRzaWRlIG9mIHRoYXQgc3VyZmFjZSwgY291bGQgbm90IApvbmx5IG5ldmVyIHNlZSB0aGUgY29uZSBhcyBhIHdob2xlLCBidXQgaGUgY291bGQgZm9ybSAKbm8gc29ydCBvZiBjb25jZXB0aW9uIG9mIHN1Y2ggYSBib2R5IGF0IGFsbC4gQWxswqt0aGF0IApoZSB3b3VsZCBzZWUgd291bGQgYmUgdGhlIHN1ZGRlbiBhcHBlYXJhbmNlIG9mIGEgCnRpbnkgY2lyY2xlLCB3aGljaCB3b3VsZCBncmFkdWFsbHkgYW5kIG15c3RlcmlvdXNseSAKZ3JvdyBsYXJnZXIgYW5kIGxhcmdlciB1bnRpbCBpdCB2YW5pc2hlZCBmcm9tIFRpaXMgCndvcmxkIGFzIHN1ZGRlbmx5IGFuZCBpbmNvbXByZWhlbnNpYmx5IGFzIGl0IGhhZCAKY29tZSBpbnRvIGl0LiAKClRodXMsIHdoYXQgd2VyZSBpbiByZWFsaXR5IGEgc2VyaWVzIG9mIHNlY3Rpb25zIG9mIAp0aGUgY29uZSB3b3VsZCBhcHBlYXIgdG8gaGltIHRvIGJlIHN1Y2Nlc3NpdmUgc3RhZ2VzIAovIGluIHRoZSBsaWZlIG9mIGEgY2lyY2xlLCBhbmQgaXQgd291bGQgYmUgaW1wb3NzaWJsZSBmb3IgCmYgaGltIHRvIGdyYXNwIHRoZSBpZGVhIHRoYXQgdGhlc2Ugc3VjY2Vzc2l2ZSBzdGFnZXNeIApqIGkgY291bGQgYmUgc2VlbiBzaW11bHRhbmVvdXNseS4gWWV0IGl0IGlzLCBvZiBjb3Vyc2UsIAoKSSBcIGVhc3kgZW5vdWdoIGZvciB1cywgbG9va2luZyBkb3duIHVwb24gdGhlIHRyYW5zYWN0aW9uIAoKSSBJIGZyb20gYW5vdGhlciBkaW1lbnNpb24sIHRvIHNlZSB0aGF0IHRoZSBtaWNyb2JlIGlzIApJIHNpbXBseSB1bmRlciBhIGRlbHVzaW9uIGFyaXNpbmcgZnJvbSBpdHMgb3duIGxpbWl0YS0gCgoKQlVEREhJQyBDT05TQ0lPVVNORVNTIAoKCjEzOSAKCgp0aW9ucywgYW5kIHRoYXQgdGhlIGNvbmUgZXhpc3RzIGFzIGEgd2hvbGUgYWxsIHRoZSAKd2hpbGUuIE91ciBvd24gZGVsdXNpb24gYXMgdG8gcGFzdCwgcHJlc2VudCwgYW5kIApmdXR1cmUgaXMgcG9zc2libHkgbm90IGRpc3NpbWlsYXIsIGFuZCB0aGUgdmlldyB0aGF0IGlzIApnYWluZWQgb2YgYW55IHNlcXVlbmNlIG9mIGV2ZW50cyBmcm9tIHRoZSBidWRkaGljIApwbGFuZSBjb3JyZXNwb25kcyB0byB0aGUgdmlldyBvZiB0aGUgY29uZSBhcyBhIHdob2xlLiBbIApOYXR1cmFsbHksIGFueSBhdHRlbXB0IHRvIHdvcmsgb3V0IHRoaXMgc3VnZ2VzdGlvbiAxIApsYW5kcyB1cyBpbiBhIHNlcmllcyBvZiBzdGFydGxpbmcgcGFyYWRveGVzIDsgYnV0IHRoZSAuIApmYWN0IHJlbWFpbnMgYSBmYWN0LCBuZXZlcnRoZWxlc3MsIGFuZCB0aGUgdGltZSB3aWxsIGggCmNvbWUgd2hlbiBpdCB3aWxsIGJlIGNsZWFyIGFzIG5vb25kYXkgdG8gb3VyIGNvbS0gaiAKcHJlaGVuc2lvbi4gCgpXaGVuIHRoZSBwdXBpbOKAmXMgY29uc2Npb3VzbmVzcyBpcyBmdWxseSBkZXZlbG9wZWQgCnVwb24gdGhlIGJ1ZGRoaWMgcGxhbmUsIHRoZXJlZm9yZSwgcGVyZmVjdCBwcmV2aXNpb24gCmlzIHBvc3NpYmxlIHRvIGhpbSwgdGhvdWdoIGhlIG1heSBub3Qg4oCUIG5heSwgaGUgCmNlcnRhaW5seSB3aWxsIG5vdCDigJQgYmUgYWJsZSB0byBicmluZyB0aGUgd2hvbGUgcmVzdWx0IApvZiBodHMgc2lnaHQgdGhyb3VnaCBmdWxseSBhbmQgaW4gb3JkZXIgaW50byB0aGlzIGxpZ2h0LiAKU3RpbGwsIGEgZ3JlYXQgZGVhbCBvZiBjbGVhciBmb3Jlc2lnaHQgaXMgb2J2aW91c2x5IAp3aXRoaW4gaGlzIHBvd2VyIHdoZW5ldmVyIGhlIGxpa2VzIHRvIGV4ZXJjaXNlIGl0IDsgCmFuZCBldmVuIHdoZW4gaGUgaXMgbm90IGV4ZXJjaXNpbmcgaXQsIGZyZXF1ZW50IGZsYXNoZXMgCm9mIGZvcmVrbm93bGVkZ2UgY29tZSB0aHJvdWdoIGludG8gaGlzIG9yZGluYXJ5IGxpZmUsIApzbyB0aGF0IGhlIG9mdGVuIGhhcyBhbiBpbnN0YW50YW5lb3VzIGludHVpdGlvbiBhcyB0byAKaG93IHRoaW5ncyB3aWxsIHR1cm4gb3V0IGV2ZW4gYmVmb3JlIHRoZWlyIGluY2VwdGlvbi4gCgpTaG9ydCBvZiB0aGlzIHBlcmZlY3QgcHJldmlzaW9uIHdlIGZpbmQsIGFzIGluIHRoZSAKcHJldmlvdXMgY2FzZXMsIHRoYXQgYWxsIGRlZ3JlZXMgb2YgdGhpcyB0eXBlIG9mIGNsYWlyLSAKKiB2b3lhbmNlIGV4aXN0LCBmcm9tIHRoZSBvY2Nhc2lvbmFsIHZhZ3VlIHByZW1vbmktIAp0aW9ucyB3aGljaCBjYW5ub3QgaW4gYW55IHRydWUgc2Vuc2UgYmUgY2FsbGVkIHNpZ2h0IAphdCBhbGwsIHVwIHRvIGZyZXF1ZW50IGFuZCBmYWlybHkgY29tcGxldGUgc2Vjb25kLSAKc2lnaHQsIOKAniBUaGUgZmFjdWx0eSB0byB3aGljaCB0aGlzIGxhdHRlciBzb21ld2hhdCAKbWlzbGVhZGluZyBuYW1lIGhhcyBiZWVuIGdpdmVuIGlzIGFuIGV4dHJlbWVseSAKCgoxNDAgCgoKQ0xBSVJWT1lBTkNFIAoKCmludGVyZXN0aW5nIG9uZSwgYW5kIHdvdWxkIHdlbGwgcmVwYXkgbW9yZSBjYXJlZnVsIAphbmQgc3lzdGVtYXRpYyBzdHVkeSB0aGFuIGhhcyBldmVyIGhpdGhlcnRvIGJlZW4gCmdpdmVuIHRvIGl0LiAKCkl0IGlzIGJlc3Qga25vd24gdG8gdXMgYXMgYSBub3QgaW5mcmVxdWVudCBwb3MtIApzZXNzaW9uIG9mIHRoZSBTY290dGlzaCBIaWdobGFuZGVycywgdGhvdWdoIGl0IGlzIGJ5IApubyBtZWFucyBjb25maW5lZCB0byB0aGVtLiBPY2Nhc2lvbmFsIGluc3RhbmNlcyBvZiAKaXQgaGF2ZSBhcHBlYXJlZCBpbiBhbG1vc3QgZXZlcnkgbmF0aW9uLCBidXQgaXQgaGFzIAphbHdheXMgYmVlbiBjb21tb25lc3QgYW1vbmcgbW91bnRhaW5lZXJzIGFuZCAKbWVuIG9mIGxvbmVseSBsaWZlLiBXaXRoIHVzIGluIEVuZ2xhbmQgaXQgaXMgb2Z0ZW4gCnNwb2tlbiBvZiBhcyB0aG91Z2ggaXQgd2VyZSB0aGUgZXhjbHVzaXZlIGFwcGFuYWdlIApvZiB0aGUgQ2VsdGljIHJhY2UsIGJ1dCBpbiByZWFsaXR5IGl0IGhhcyBhcHBlYXJlZCAKYW1vbmcgc2ltaWxhcmx5IHNpdHVhdGVkIHBlb3BsZXMgdGhlIHdvcmxkIG92ZXIuIEl0IAppcyBzdGF0ZWQsIGZvciBleGFtcGxlLCB0byBiZSB2ZXJ5IGNvbW1vbiBhbW9uZyB0aGUgClcgZXN0cGhhSGEsdHQsLHBlYXNhbnRyeS4gCgpTb21ldGltZXMgdGhlIHNlY29uZC1zaWdodCBjb25zaXN0cyBvZiBhIHBpY3R1cmUgCmNsZWFybHkgZm9yZXNob3dpbmcgc29tZSBjb21pbmcgZXZlbnQ7IG1vcmUgZnJlLSAKcXVlbnRseSwgcGVyaGFwcywgdGhlIGdsaW1wc2Ugb2YgdGhlIGZ1dHVyZSBpcyBnaXZlbiAKYnkgc29tZSBzeW1ib2xpY2FsIGFwcGVhcmFuY2UuIEl0IGlzIG5vdGV3b3J0aHkgCgp0aGF0IEpoZSBldmVudHMgZm9yZXNlZW4gYXJlIGludmFyaWFibHkgdW5wbGVhc2FudCAKCm9uZXPigJQgZGVhdGggYmVpbmcgdGhlIGNvbW1vbmVzdCBvZiBhbGwgOyBJIGRvIG5vdCAKcmVjb2xsZWN0IGEgc2luZ2xlIGluc3RhbmNlIGluIHdoaWNoIHRoZSBzZWNvbmQtc2lnaHQgCmhhcyBzaG93biBhbnl0aGluZyB3aGljaCB3YXMgbm90IG9mIHRoZSBtb3N0IApnbG9vbXkgbmF0dXJlLiBJdCBoYXMgYSBnaGFzdGx5IHN5bWJvbGlzbSB3aGljaCAKaXMgYWxsIGl0cyBvd24g4oCUIGEgc3ltYm9saXNtIG9mIHNocm91ZHMgYW5kIGNvcnBzZS0gCmNhbmRsZXMsIGFuZCBvdGhlciBmdW5lcmVhbCBob3Jyb3JzLiBJbiBzb21lIGNhc2VzIAppdCBhcHBlYXJzIHRvIGJlIHRvIGEgY2VydGFpbiBleHRlbnQgZGVwZW5kZW50IG9uIAoubG9jYWxpdHksIGZvciBpdCBpcyBzdGF0ZWQgdGhhdCBpbmhhYml0YW50cyBvZiAudGhlLiAtSXNsJm50ZiAKU2lldmUgd2hvIHBvc3Nlc3MgdGhlIGZhY3VsdHkgb2Z0ZW4gbG9zZSBpdCB3aGVuIHRoZXkgCgoKQSBIT1JSSUJMRSBWSVNJT04gCgoKMTQxIAoKSmVhdmUgdGhlIGlzbGFuZCwgZXZlbiB0aG91Z2ggaXQgYmUgb25seSB0byBjcm9zcyB0byAKdGhlIG1haW5sYW5kIFRoZSBnaWZ0IG9mIHN1Y2ggc2lnaHQgaXMgc29tZXRpbWVzIApoZXJlZGl0YXJ5IGluIGEgZmFtaWx5IGZvciBnZW5lcmF0aW9ucywgYnV0IHRoaXMgaXMgbm90IAphbiBpbnZhcmlhYmxlIHJ1bGUsIGZvciBpdCBvZnRlbiBhcHBlYXJzIHNwb3JhZGljYWxseSAKaW4gb25lIG1lbWJlciBvZiBhIGZhbWlseSBvdGhlcndpc2UgZnJlZSBmcm9tIGl0cyAKbHVndWJyaW91cyBpbmZsdWVuY2UuIAoKQW4gZXhhbXBsZSBpbiB3aGljaCBhbiBhY2N1cmF0ZSB2aXNpb24gb2YgYSAKY29taW5nIGV2ZW50IHdhcyBzZWVuIHNvbWUgbW9udGhzIGJlZm9yZWhhbmQgYnkgCnNlY29uZC1zaWdodCBoYXMgYWxyZWFkeSBiZWVuIGdpdmVuLiBIZXJlIGlzIGFub3RoZXIgCmFuZCBwZXJoYXBzIGEgbW9yZSBzdHJpa2luZyBvbmUsIHdoaWNoIEkgZ2l2ZSBleGFjdGx5IGFzIAppdCB3YXMgcmVsYXRlZCB0byBtZSBieSBvbmUgb2YgdGhlIGFjdG9ycyBpbiB0aGUgc2NlbmUuIAoK4oCcIFdlIHBsdW5nZWQgaW50byB0aGUganVuZ2xlLCBhbmQgaGFkIHdhbGtlZCBvbiAKZm9yIGFib3V0IGFuIGhvdXIgd2l0aG91dCBtdWNoIHN1Y2Nlc3MsIHdoZW4gCkNhbWVyb24sIHdobyBoYXBwZW5lZCB0byBiZSBuZXh0IHRvIG1lLCBzdG9wcGVkIApzdWRkZW5seSwgdHVybmVkIHBhbGUgYXMgZGVhdGgsIGFuZCwgcG9pbnRpbmcgc3RyYWlnaHQgCmJlZm9yZSBoaW0sIGNyaWVkIGluIGFjY2VudHMgb2YgaG9ycm9yIDogCgrigJwgZiBTZWUgISBzZWUgISBtZXJjaWZ1bCBoZWF2ZW4sIGxvb2sgdGhlcmUgISAqIAoKV2hlcmU/IHdoYXQ/IHdoYXQgaXMgaXQ/KiB3ZSBhbGwgc2hvdXRlZCAKY29uZnVzZWRseSwgYXMgd2UgcnVzaGVkIHVwIHRvIGhpbSBhbmQgbG9va2VkIHJvdW5kIAppbiBleHBlY3RhdGlvbiBvZiBlbmNvdW50ZXJpbmcgYSB0aWdlciDigJQgYSBjb2JyYSDigJQgLXdlIApoYXJkbHkga25ldyB3aGF0LCBidXQgYXNzdXJlZGx5IHNvbWV0aGluZyB0ZXJyaWJsZSwgCnNpbmNlIGl0IGhhZCBiZWVuIHN1ZmZpY2llbnQgdG8gY2F1c2Ugc3VjaCBldmlkZW50IAplbW90aW9uIGluIG91ciB1c3VhbGx5IHNlbGYtY29udGFpbmVkIGNvbXJhZGUuIEJ1dCAKIyBuZWl0aGVyIHRpZ2VyIG5vciBjb2JyYSB3YXMgdmlzaWJsZSDigJQgbm90aGluZyBidXQgCkNhbWVyb24gcG9pbnRpbmcgd2l0aCBnaGFzdGx5LCBoYWdnYXJkIGZhY2UgYW5kIApzdGFydGluZyBleWViYWxscyBhdCBzb21ldGhpbmcgd2UgY291bGQgbm90IHNlZS4gCgrigJwgwqMgQ2FtZXJvbiAhIENhbWVyb24gISDigJkgY3JpZWQgSSwgc2VpemluZyBoaXMgYXJtLCAK4oCcIOKAmCBmb3IgaGVhdmVu4oCZcyBzYWtlLCBzcGVhayAhIFdoYXQgaXMgdGhlIG1hdHRlciA/ICogCgoKMTQyIAoKCkNMQUlSVk9ZQU5DRSAKCgrigJwgU2NhcmNlbHkgd2VyZSB0aGUgd29yZHMgb3V0IG9mIG15IG1vdXRoIHdoZW4gCmEgbG93LCBidXQgdmVyeSBwZWN1bGlhciBzb3VuZCBzdHJ1Y2sgb24gbXkgZWFyLCBhbmQgCkNhbWVyb24sIGRyb3BwaW5nIGhpcyBwb2ludGluZyBoYW5kLCBzYWlkIGluIGEgaG9hcnNlLCAKc3RyYWluZWQgdm9pY2UsIOKAmFRoZXJlISB5b3UgaGVhcmQgaXQ/IFRoYW5rIEdvZCAKaXTigJlzIG92ZXIhIiBhbmQgZmVsbCB0byB0aGUgZ3JvdW5kIGluc2Vuc2libGUuIAoKPMKjIFRoZXJlIHdhcyBhIG1vbWVudGFyeSBjb25mdXNpb24gd2hpbGUgd2UgdW4tIApmYXN0ZW5lZCBoaXMgY29sbGFyLCBhbmQgSSBkYXNoZWQgaW4gaGlzIGZhY2Ugc29tZSAKd2F0ZXIgd2hpY2ggSSBmb3J0dW5hdGVseSBoYWQgaW4gbXkgZmxhc2ssIHdoaWxlIAphbm90aGVyIHRyaWVkIHRvIHBvdXIgYnJhbmR5IGJldHdlZW4gaGlzIGNsZW5jaGVkIAp0ZWV0aCA7IGFuZCB1bmRlciBjb3ZlciBvZiBpdCBJIHdoaXNwZXJlZCB0byB0aGUgbWFuIApuZXh0IHRvIG1lIChvbmUgb2Ygb3VyIGdyZWF0ZXN0IHNjZXB0aWNzLCBieSB0aGUgd2F5KSwgCuKAmCBCZWF1Y2hhbXAsIGRpZCB5b3UgaGVhciBhbnl0aGluZyA/LyAKCldoeSwgeWVzLyBoZSByZXBsaWVkLCDigJhhIGN1cmlvdXMgc291bmQsIHZlcnkgOyBhIApzb3J0IG9mIGNyYXNoIG9yIHJhdHRsZSBmYXIgYXdheSBpbiB0aGUgZGlzdGFuY2UsIHlldCAKdmVyeSBkaXN0aW5jdCA7IGlmIHRoZSB0aGluZyB3ZXJlIG5vdCB1dHRlcmx5IGltcG9zc2libGUsIApJIGNvdWxkIGhhdmUgc3dvcm4gaXQgd2FzIHRoZSByYXR0bGUgb2YgbXVza2V0cnku4oCZIAoKSnVzdCBteSBpbXByZXNzaW9uLDUgbXVybXVyZWQgSTsg4oCYYnV0IGh1c2ghIGhlIAppcyByZWNvdmVyaW5nLyAuICogCgrigJwgSW4gYSBtaW51dGUgb3IgdHdvIGhlIHdhcyBhYmxlIHRvIHNwZWFrIGZlZWJseSwgCmFuZCBiZWdhbiB0byB0aGFuayB1cyBhbmQgYXBvbG9naXplIGZvciBnaXZpbmcgCnRyb3VibGU7IGFuZCBzb29uIGhlIHNhdCB1cC9sZWFuaW5nIGFnYWluc3QgYSB0cmVlLCAKYW5kIGluIGEgZmlybSwgdGhvdWdoIHN0aWxsIGxvdyB2b2ljZSBzYWlkIDogCgpNeSBkZWFyIGZyaWVuZHMsIEkgZmVlbCBJIG93ZSB5b3UgYW4gZXhwbGFuYXRpb24gCm9mIG15IGV4dHJhb3JkaW5hcnkgYmVoYXZpb3VyLiBJdCBpcyBhbiBleHBsYW5hdGlvbiAKdGhhdCBJIHdvdWxkLCBmYWluIGF2b2lkIGdpdmluZzsgYnV0IGl0IG11c3QgY29tZSAKc29tZSB0aW1lLCBhbmQgc28gbWF5IGFzIHdlbGwgYmUgZ2l2ZW4gbm93LiBZb3UgCm1heSBwZXJoYXBzIGhhdmUgbm90aWNlZCB0aGF0IHdoZW4gZHVyaW5nIG91ciAKdm95YWdlIHlvdSBhbGwgam9pbmVkIGluIHNjb2ZmaW5nIGF0IGRyZWFtcywgcG9ydGVudHMgCgoKVEhFIFZJU0lPTiBERVNDUklCRUQgCgoKMTQzIAoKCmFuZCB2aXNpb25zLCBJIGludmFyaWFibHkgYXZvaWRlZCBnaXZpbmcgYW55IG9waW5pb24gCm9uIHRoZSBzdWJqZWN0IEkgZGlkIHNvIGJlY2F1c2UsIHdoaWxlIEkgaGFkIG5vIApkZXNpcmUgdG8gY291cnQgcmlkaWN1bGUgb3IgcHJvdm9rZSBkaXNjdXNzaW9uLCBJIHdhcyAKdW5hYmxlIHRvIGFncmVlIHdpdGggeW91LCBrbm93aW5nIG9ubHkgdG9vIHdlbGwgZnJvbSAKbXkgb3duIGRyZWFkIGV4cGVyaWVuY2UgdGhhdCB0aGUgd29ybGQgd2hpY2ggbWVuIAphZ3JlZSB0byBjYWxsIHRoYXQgb2YgdGhlIHN1cGVybmF0dXJhbCBpcyBqdXN0IGFzIHJlYWwgYXMgCuKAlCBuYXksIHBlcmhhcHMsIGV2ZW4gZmFyIG1vcmUgcmVhbCB0aGFuIOKAlCB0aGlzIHdvcmxkIAp3ZSBzZWUgYWJvdXQgdXMuIEluIG90aGVyIHdvcmRzLCBJLCBsaWtlIG1hbnkgb2YgbXkgCmNvdW50cnltZW4sIGFtIGN1cnNlZCB3aXRoIHRoZSBnaWZ0IG9mIHNlY29uZC1zaWdodCAK4oCUIHRoYXQgYXdmdWwgZmFjdWx0eSB3aGljaCBmb3JldGVsbHMgaW4gdmlzaW9uIGNhbGFtaXRpZXMgCnRoYXQgYXJlIHNob3J0bHkgdG8gb2NjdXIuIAoK4oCc4oCYU3VjaCBhIHZpc2lvbiBJIGhhZCBqdXN0IG5vdywgYW5kIGl0cyBleGNlcHRpb25hbCAKaG9ycm9yIG1vdmVkIG1lIGFzIHlvdSBoYXZlIHNlZW4uIEkgc2F3IGJlZm9yZSBtZSAKYSBjb3Jwc2Ug4oCUIG5vdCB0aGF0IG9mIG9uZSB3aG8gaGFzIGRpZWQgYSBwZWFjZWZ1bCAKbmF0dXJhbCBkZWF0aCwgYnV0IHRoYXQgb2YgdGhlIHZpY3RpbSBvZiBzb21lIHRlcnJpYmxlIAphY2NpZGVudDsnIGEgZ2hhc3RseSwgc2hhcGVsZXNzIG1hc3MsIHdpdGggYSBmYWNlIApzd29sbGVuLCBjcnVzaGVkLCB1bnJlY29nbml6YWJsZS4gSSBzYXcgdGhpcyBkcmVhZGZ1bCAKb2JqZWN0IHBsYWNlZCBpbiBhIGNvZmZpbiwgYW5kIHRoZSBmdW5lcmFsIHNlcnZpY2UgcGVyLSAKZm9ybWVkIG92ZXIgaXQuIEkgc2F3IHRoZSBidXJpYWwtZ3JvdW5kLCBJIHNhdyB0aGUgCmNsZXJneW1hbiA6IGFuZCB0aG91Z2ggSSBoYWQgbmV2ZXIgc2VlbiBlaXRoZXIgCmJlZm9yZSwgSSBjYW4gcGljdHVyZSBib3RoIHBlcmZlY3RseSBpbiBteSBtaW5k4oCZcyBleWUgCm5vdzsgSSBzYXcgeW91LCBteXNlbGYsIEJlYXVjaGFtcCwgYWxsIG9mIHVzIGFuZCAKbWFueSBtb3JlLCBzdGFuZGluZyByb3VuZCBhcyBtb3VybmVycyA7IEkgc2F3IHRoZSAKc29sZGllcnMgcmFpc2UgdGhlaXIgbXVza2V0cyBhZnRlciB0aGUgc2VydmljZSB3YXMgb3ZlcjsgCkkgaGVhcmQgdGhlIHZvbGxleSB0aGV5IGZpcmVkIOKAlCBhbmQgdGhlbiBJIGtuZXcgbm8gCm1vcmUvIAoK4oCcQXMgaGUgc3Bva2Ugb2YgdGhhdCB2b2xsZXkgb2YgbXVza2V0cnkgSSBnbGFuY2VkIAphY3Jvc3Mgd2l0aCBhIHNodWRkZXIgYXQgQmVhdWNoYW1wLCBhbmQgdGhlIGxvb2sgb2YgCgoKMTQ0IAoKCkNMQUlSVk9ZQU5DRSAKCgpzdG9ueSBob3Jyb3Igb24gdGhhdCBoYW5kc29tZSBzY2VwdGlj4oCZcyBmYWNlIHdhcyBub3QgCnRvIGJlIGZvcmdvdHRlbi7igJ0gCgpUaGlzIGlzIG9ubHkgb25lIGluY2lkZW50IChhbmQgYnkgbm8gbWVhbnMgdGhlIApwcmluY2lwYWwgb25lKSBpbiBhIHZlcnkgcmVtYXJrYWJsZSBzdG9yeSBvZiBwc3ljaGljIApleHBlcmllbmNlLCBidXQgYXMgZm9yIHRoZSBtb21lbnQgd2UgYXJlIGNvbmNlcm5lZCAKbWVyZWx5IHdpdGggdGhlIGV4YW1wbGUgb2Ygc2Vjb25kLXNpZ2h0IHdoaWNoIGl0IApnaXZlcyB1cywgSSBuZWVkIG9ubHkgc2F5IHRoYXQgbGF0ZXIgaW4gdGhlIGRheSB0aGUgCnBhcnR5IG9mIHlvdW5nIHNvbGRpZXJzIGRpc2NvdmVyZWQgdGhlIGJvZHkgb2YgCnRoZWlyIGNvbW1hbmRpbmcgb2ZmaWNlciBpbiB0aGUgdGVycmlibGUgY29uZGl0aW9uIApzbyBncmFwaGljYWxseSBkZXNjcmliZWQgYnkgTXIuIENhbWVyb24uIFRoZSAKbmFycmF0aXZlIGNvbnRpbnVlcyA6IAoKwqNjIFdoZW4sIG9uIHRoZSBmb2xsb3dpbmcgZXZlbmluZywgd2UgYXJyaXZlZCBhdCBvdXIgCmRlc3RpbmF0aW9uLCBhbmQgb3VyIG1lbGFuY2hvbHkgZGVwb3NpdGlvbiBoYWQgYmVlbiAKdGFrZW4gZG93biBieSB0aGUgcHJvcGVyIGF1dGhvcml0aWVzLCBDYW1lcm9uIGFuZCAKSSB3ZW50IG91dCBmb3IgYSBxdWlldCB3YWxrLCB0byBlbmRlYXZvdXIgd2l0aCMgdGhlIAphc3Npc3RhbmNlIG9mIHRoZSBzb290aGluZyBpbmZsdWVuY2Ugb2YgbmF0dXJlIHRvIHNoYWtlIApvZmYgc29tZXRoaW5nIG9mIHRoZSBnbG9vbSB3aGljaCBwYXJhbHl6ZWQgb3VyIApzcGlyaXRzLiBTdWRkZW5seSBoZSBjbHV0Y2hlZCBteSBhcm0sIGFuZCwgcG9pbnRpbmcgCnRocm91Z2ggc29tZSBydWRlIHJhaWxpbmdzLCBzYWlkIGluIGEgdHJlbWJsaW5nIHZvaWNlLCAKY1llcywgdGhlcmUgaXQgaXMhIHRoYXQgaXMgdGhlIGJ1cmlhbC1ncm91bmQgSSBzYXcgCnllc3RlcmRheS7igJkgQW5kIHdoZW4gbGF0ZXIgb24gd2Ugd2VyZSBpbnRyb2R1Y2VkIAp0byB0aGUgY2hhcGxhaW4gb2YgdGhlIHBvc3QsIEkgbm90aWNlZCwgdGhvdWdoIG15IApmcmllbmRzIGRpZCBub3QsIHRoZSBpcnJlcHJlc3NpYmxlIHNodWRkZXIgd2l0aCB3aGljaCAKQ2FtZXJvbiB0b29rIGhpcyBoYW5kLCBhbmQgSSBrbmV3IHRoYXQgaGUgaGFkIHJlLSAKY29nbml6ZWQgdGhlIGNsZXJneW1hbiBvZiBoaXMgdmlzaW9uLuKAnSAKCkFzIGZvciB0aGUgb2NjdWx0IHJhdGlvbmFsZSBvZiBhbGwgdGhpcywgSSBwcmVzdW1lIApNci4gQ2FtZXJvbiBzIHZpc2lvbiB3YXMgYSBwdXJlIGNhc2Ugb2Ygc2Vjb25kLXNpZ2h0LCAKYW5kIGlmIHNvIHRoZSBmYWN0IHRoYXQgdGhlIHR3byBtZW4gd2hvIHdlcmUgZXZpZGVudGx5IAoKClNZTUJPTElDQUwgVklTSU9OIAoKCjE0NSAKCgpuZWFyZXN0IHRvIGhpbSAoY2VydGFpbmx5IG9uZSDigJQgcHJvYmFibHkgYm90aCDigJQgYWN0dWFsbHkgCnRvdWNoaW5nIGhpbSkgcGFydGljaXBhdGVkIGluIGl0IHRvIHRoZSBsaW1pdGVkIGV4dGVudCAKb2YgaGVhcmluZyB0aGUgY29uY2x1ZGluZyB2b2xsZXksIHdoaWxlIHRoZSBvdGhlcnMgd2hvIAp3ZXJlIG5vdCBzbyBjbG9zZSBkaWQgbm90LCB3b3VsZCBzaG93IHRoYXQgdGhlIGludGVuLSAKc2l0eSB3aXRoIHdoaWNoIHRoZSB2aXNpb24gaW1wcmVzc2VkIGl0c2VsZiB1cG9uIHRoZSAKc2VlciBvY2Nhc2lvbmVkIHZpYnJhdGlvbnMgaW4gaGlzIG1pbmQtYm9keSB3aGljaCAKd2VyZSBjb21tdW5pY2F0ZWQgdG8gdGhvc2Ugb2YgdGhlIHBlcnNvbnMgaW4gY29udGFjdCAKd2l0aCBoaW0sIGFzIGluIG9yZGluYXJ5IHRob3VnaHQtdHJhbnNmZXJlbmNlLiBBbnktIApvbmUgd2hvIHdpc2hlcyB0byByZWFkIHRoZSByZXN0IG9mIHRoZSBzdG9yeSB3aWxsIGZpbmQgCml0IGluIHRoZSBwYWdlcyBvZiBMdWNpZmVyICwgdm9sLiB4eC4sIHAuIDQ1Ny4gCgpTY29yZXMgb2YgZXhhbXBsZXMgb2Ygc2ltaWxhciBuYXR1cmUgdG8gdGhlc2UgbWlnaHQgCiNlYXNpbHkgYmUgY29sbGVjdGVkLiBXaXRoIHJlZ2FyZCB0byB0aGUgc3ltYm9saWNhbCAKdmFyaWV0eSBvZiB0aGlzIHNpZ2h0LCBpdCBpcyBjb21tb25seSBzdGF0ZWQgYW1vbmcgCnRob3NlIHdobyBwb3NzZXNzIGl0IHRoYXQgaWYgb24gbWVldGluZyBhIGxpdmluZyBwZXJzb24gCuKAonRoZXkgc2VlIGEgcGhhbnRvbSBzaHJvdWQgd3JhcHBlZCBhcm91bmQgaGltLCBpdCBpcyAKYSBzdXJlIHByb2dub3N0aWNhdGlvbiBvZiBoaXMgZGVhdGguIFRoZSBkYXRlIG9mIHRoZSAKYXBwcm9hY2hpbmcgZGVjZWFzZSBpcyBpbmRpY2F0ZWQgZWl0aGVyIGJ5IHRoZSBleHRlbnQgCnRvIHdoaWNoIHRoZSBzaHJvdWQgY292ZXJzIHRoZSBib2R5LCBvciBieSB0aGUgdGltZSAKb2YgZGF5IGF0IHdoaWNoIHRoZSB2aXNpb24gaXMgc2VlbiA7IGZvciBpZiBpdCBiZSBpbiB0aGUgCmVhcmx5IG1vcm5pbmcgdGhleSBzYXkgdGhhdCB0aGUgbWFuIHdpbGwgZGllIGR1cmluZywgCnRoZSBzYW1lIGRheSwgYnV0IGlmIGl0IGJlIGluIHRoZSBldmVuaW5nLCB0aGVuIGl0IHdpbGwgOyAKYmUgb25seSBzb21lIHRpbWUgd2l0aGluIGEgeWVhci4gCgpBbm90aGVyIHZhcmlhbnQgKGFuZCBhIHJlbWFya2FibGUgb25lKSBvZiB0aGUgCnN5bWJvbGljIGZvcm0gb2Ygc2Vjb25kLXNpZ2h0IGlzIHRoYXQgaW4gd2hpY2ggdGhlIApoZWFkbGVzcyBhcHBhcml0aW9uIG9mIHRoZSBwZXJzb24gd2hvc2UgZGVhdGggaXMgZm9yZS0gCnRvbGQgbWFuaWZlc3RzIGl0c2VsZiB0byB0aGUgc2Vlci4gQW4gZXhhbXBsZSBvZiB0aGF0IApjbGFzcyBpcyBnaXZlbiBpbiBTaWducyBiZWZvcmUgRGVhdGggYXMgaGF2aW5nIGhhcHBlbmVkIAoKaW4gdGhlIGZhbWlseSBvZiBEci4gRmVycmllciwgdGhvdWdoIGluIHRoYXQgY2FzZSwgaWYgSSAKCuKAoiAqIAoKCjE0NiAKCgpDTEFJUlZPWUFOQ0UgCgoKcmVjb2xsZWN0IHJpZ2h0bHksIHRoZSB2aXNpb24gZGlkIG5vdCBvY2N1ciB1bnRpbCB0aGUgCnRpbWUgb2YgdGhlIGRlYXRoLCBvciB2ZXJ5IG5lYXIgaXQuIAoKVHVybmluZyBmcm9tIHNlZXJzIHdobyBhcmUgcmVndWxhcmx5IGluIHBvc3Nlc3Npb24gCm9mIGEgY2VydGFpbiBmYWN1bHR5LCBhbHRob3VnaCBpdHMgbWFuaWZlc3RhdGlvbnMgYXJlIApvbmx5IG9jY2FzaW9uYWxseSBmdWxseSB1bmRlciB0aGVpciBjb250cm9sLCB3ZSBhcmUgCmNvbmZyb250ZWQgYnkgYSBsYXJnZSBudW1iZXIgb2YgaXNvbGF0ZWQgaW5zdGFuY2VzIG9mIApwcmV2aXNpb24gaW4gdGhlIGNhc2Ugb2YgcGVvcGxlIHdpdGggd2hvbSBpdCBpcyBub3QgaW4gCmFueSB3YXkgYSByZWd1bGFyIGZhY3VsdHkuIFBlcmhhcHMgdGhlIG1ham9yaXR5IG9mIAp0aGVzZSBvY2N1ciBpbiBkcmVhbXMsIGFsdGhvdWdoIGV4YW1wbGVzIG9mIHRoZSAKd2FraW5nIHZpc2lvbiBhcmUgYnkgbm8gbWVhbnMgd2FudGluZy4gU29tZXRpbWVzIAp0aGUgcHJldmlzaW9uIHJlZmVycyB0byBhbiBldmVudCBvZiBkaXN0aW5jdCBpbXBvcnRhbmNlIAp0byB0aGUgc2VlciwgYW5kIHNvIGp1c3RpZmllcyB0aGUgYWN0aW9uIG9mIHRoZSBFZ28gaW4qIAp0YWtpbmcgdGhlIHRyb3VibGUgdG8gaW1wcmVzcyBpdC4gSW4gb3RoZXIgY2FzZXMsIHRoZSAKZXZlbnQgaXMgb25lIHdoaWNoIGlzIG9mIG5vIGFwcGFyZW50IGltcG9ydGFuY2UsIG9yIAppcyBub3QgaW4gYW55IHdheSBjb25uZWN0ZWQgd2l0aCB0aGUgbWFuIHRvI3dob20jLCAKdGhlIHZpc2lvbiBjb21lcy4gU29tZXRpbWVzIGl0IGlzIGNsZWFyIHRoYXQgdGhlIAp8IGludGVudGlvbiBvZiB0aGUgRWdvIChvciB0aGUgY29tbXVuaWNhdGluZyBlbnRpdHksIAppIHdoYXRldmVyIGl0IG1heSBiZSkgaXMgdG8gd2FybiB0aGUgbG93ZXIgc2VsZiBvZmYgdGhlIApJIGFwcHJvYWNoIG9mIHNvbWUgY2FsYW1pdHksIGVpdGhlciBpbiBvcmRlciB0aGF0IGl0IG1heSAKaSBqIGJlIHByZXZlbnRlZCBvciwgaWYgdGhhdCBiZSBub3QgcG9zc2libGUsIHRoYXQgdGhlIHNob2NrIApJIG1heSBiZSBtaW5pbWl6ZWQgYnkgcHJlcGFyYXRpb24uIAoKVGhlIGV2ZW50IG1vc3QgZnJlcXVlbnRseSB0aHVzIGZvcmVzaGFkb3dlZCBpcywgCnBlcmhhcHMgbm90IHVubmF0dXJhbGx5LCBkZWF0aCDigJQgc29tZXRpbWVzIHRoZSBkZWF0aCAKCm9mIHRoZSBzZWVyIGhpbXNlbGYsIHNvbWV0aW1lcyB0aGF0IG9mIG9uZSBkZWFyIHRvIGhpbS4gCgpyeSAKClRoaXMgdHlwZSBvZiBwcmV2aXNpb24gaXMgc28gY29tbW9uIGluIHRoZSBsaXRlcmF0dXJlIApvZiB0aGUgc3ViamVjdCwgYW5kIGl0cyBvYmplY3QgaXMgc28gb2J2aW91cywgdGhhdCB3ZSAKbmVlZCBoYXJkbHkgY2l0ZSBleGFtcGxlcyBvZiBpdCA7IGJ1dCBvbmUgb3IgdHdvIAppbnN0YW5jZXMgaW4gd2hpY2ggdGhlIHByb3BoZXRpYyBzaWdodCwgdGhvdWdoIGNsZWFybHkgCgoKRFJFQU0gT0YgRFIuIFdBVFNPTiAKCgoxNDcgCgoKdXNlZnVsLCB3YXMgeWV0IG9mIGEgbGVzcyBzb21icmUgY2hhcmFjdGVyLCB3aWxsIHByb3ZlIApub3QgdW5pbnRlcmVzdGluZyB0byB0aGUgcmVhZGVyLiBUaGUgZm9sbG93aW5nIGlzIApjdWxsZWQgZnJvbSB0aGF0IHN0b3JlaG91c2Ugb2YgdGhlIHN0dWRlbnQgb2YgdGhlIAp1bmNhbm55LCBNcnMuIENyb3dl4oCZcyBOaWdodCBTaWRlIG9mIE5hdHVyZSwgcC4gNzIuIAoK4oCcIEEgZmV3IHllYXJzIGFnbyBEci4gV2F0c29uLCBub3cgcmVzaWRpbmcgYXQgCkdsYXNnb3csIGRyZWFtdCB0aGF0IGhlIHJlY2VpdmVkIGEgc3VtbW9ucyB0byBhdHRlbmQgCmEgcGF0aWVudCBhdCBhIHBsYWNlIHNvbWUgbWlsZXMgZnJvbSB3aGVyZSBoZSB3YXMgCmxpdmluZyA7IHRoYXQgaGUgc3RhcnRlZCBvbiBob3JzZWJhY2ssIGFuZCB0aGF0IGFzIGhlIAp3YXMgY3Jvc3NpbmcgYSBtb29yIGhlIHNhdyBhIGJ1bGwgbWFraW5nIGZ1cmlvdXNseSBhdCAKaGltLCB3aG9zZSBob3JucyBoZSBvbmx5IGVzY2FwZWQgYnkgdGFraW5nIHJlZnVnZSBvbiAKYSBzcG90IGluYWNjZXNzaWJsZSB0byB0aGUgYW5pbWFsLCB3aGVyZSBoZSB3YWl0ZWQgYSAKbG9uZyB0aW1lIHRpbGwgc29tZSBwZW9wbGUsIG9ic2VydmluZyBoaXMgc2l0dWF0aW9uLCAKY2FtZSB0byBoaXMgYXNzaXN0YW5jZSBhbmQgcmVsZWFzZWQgaGltLiAKCuKAnCBXaGlsc3QgYXQgYnJlYWtmYXN0IG9uIHRoZSBmb2xsb3dpbmcgbW9ybmluZyB0aGUgCnN1bW1vbnMgY2FtZSwgYW5kIHNtaWxpbmcgYXQgdGhlIG9kZCBjb2luY2lkZW5jZSAoYXMgCmhlIHRob3VnaHQgaXQpLCBoZSBzdGFydGVkIG9uIGhvcnNlYmFjay4gSGUgd2FzIHF1aXRlIAppZ25vcmFudCBvZiB0aGUgcm9hZCBoZSBoYWQgdG8gZ28sIGJ1dCBieSBhbmQgYnkgaGUgCmFycml2ZWQgYXQgdGhlIG1vb3IsIHdoaWNoIGhlIHJlY29nbmlzZWQsIGFuZCBwcmVzZW50bHkgCnRoZSBidWxsIGFwcGVhcmVkLCBjb21pbmcgZnVsbCB0aWx0IHRvd2FyZHMgaGltLiBCdXQgCmhpcyBkcmVhbSBoYWQgc2hvd24gaGltIHRoZSBwbGFjZSBvZiByZWZ1Z2UsIGZvciAKd2hpY2ggaGUgaW5zdGFudGx5IG1hZGUsIGFuZCB0aGVyZSBoZSBzcGVudCB0aHJlZSBvciAKZm91ciBob3VycywgYmVzaWVnZWQgYnkgdGhlIGFuaW1hbCwgdGlsbCB0aGUgY291bnRyeSAKcGVvcGxlIHNldCBoaW0gZnJlZS4gRHIuIFdhdHNvbiBkZWNsYXJlcyB0aGF0IGJ1dCAKZm9yIHRoZSBkcmVhbSBoZSBzaG91bGQgbm90IGhhdmUga25vd24gaW4gd2hhdCBkaXJlYy0gCnRpb24gdG8gcnVuIGZvciBzYWZldHku4oCdIAoKQW5vdGhlciBjYXNlLCBpbiB3aGljaCBhIG11Y2ggbG9uZ2VyIGludGVydmFsIApzZXBhcmF0ZWQgdGhlIHdhcm5pbmcgYW5kIGl0cyBmdWxmaWxtZW50LCBpcyBnaXZlbiBieSBEci4gCkYuIEcuIExlZSwgaW4gR2xpbXBzZXMgb2YgdGhlIFN1cGVybmF0dXJhbCAsIHZvbC4gaS4sIHAuIDI0MC4gCgoKMTQ4IAoKCkNMQUlSVk9ZQU5DRSAKCgrigJwgTXJzLiBIYW5uYWggR3JlZW4sIHRoZSBob3VzZWtlZXBlciBvZiBhIGNvdW50cnktIApmYW1pbHkgaW4gT3hmb3Jkc2hpcmUsIGRyZWFtdCBvbmUgbmlnaHQgdGhhdCBzaGUgaGFkIApiZWVuIGxlZnQgYWxvbmUgaW4gdGhlIGhvdXNlIHVwb24gYSBTdW5kYXkgZXZlbmluZywgCmFuZCB0aGF0IGhlYXJpbmcgYSBrbm9jayBhdCB0aGUgZG9vciBvZiB0aGUgY2hpZWYgCmVudHJhbmNlIHNoZSB3ZW50IHRvIGl0IGFuZCB0aGVyZSBmb3VuZCBhbiBpbGwtbG9va2luZyAKdHJhbXAgYXJtZWQgd2l0aCBhIGJsdWRnZW9uLCB3aG8gaW5zaXN0ZWQgb24gZm9yYy0gCmluZyBoaW1zZWxmIGludG8gdGhlIGhvdXNlLiBTaGUgdGhvdWdodCB0aGF0IHNoZSAKc3RydWdnbGVkIGZvciBzb21lIHRpbWUgdG8gcHJldmVudCBoaW0gc28gZG9pbmcsIGJ1dCAKcXVpdGUgaW5lZmZlY3R1YWxseSwgYW5kIHRoYXQsIGJlaW5nIHN0cnVjayBkb3duIGJ5IApoaW0gYW5kIHJlbmRlcmVkIGluc2Vuc2libGUsIGhlIHRoZXJldXBvbiBnYWluZWQgCmluZ3Jlc3MgdG8gdGhlIG1hbnNpb24uIE9uIHRoaXMgc2hlIGF3b2tlLiAKCuKAnCBBcyBub3RoaW5nIGhhcHBlbmVkIGZvciBhIGNvbnNpZGVyYWJsZSBwZXJpb2QgdGhlICogCmNpcmN1bXN0YW5jZSBvZiB0aGUgZHJlYW0gd2FzIHNvb24gZm9yZ290dGVuLCBhbmQsIGFzIApzaGUgaGVyc2VsZiBhc3NlcnRzLCBoYWQgYWx0b2dldGhlciBwYXNzZWQgYXdheSBmcm9tIApoZXIgbWluZC4gSG93ZXZlciwgc2V2ZW4geWVhcnMgYWZ0ZXJ3YXJkcyB0aGlzIHNhbWUgbyAKaG91c2VrZWVwZXIgd2FzIGxlZnQgd2l0aCB0d28gb3RoZXIgc2VydmFudHMgdG8gdGFrZSAKY2hhcmdlIG9mIGFuIGlzb2xhdGVkIG1hbnNpb24gYXQgS2Vuc2luZ3RvbiAoc3Vic2UtIApxdWVudGx5IHRoZSB0b3duIHJlc2lkZW5jZSBvZiB0aGUgZmFtaWx5KSwgd2hlbiAlbiAKYSBjZXJ0YWluIFN1bmRheSBldmVuaW5nLCBoZXIgZmVsbG93LXNlcnZhbnRzIGhhdmluZyAKZ29uZSBvdXQgYW5kIGxlZnQgaGVyIGFsb25lLCBzaGUgd2FzIHN1ZGRlbmx5IHN0YXJ0bGVjciAKYnkgYSBsb3VkIGtub2NrIGF0IHRoZSBmcm9udCBkb29yLiAKCuKAnEFsbCBvZiBhIHN1ZGRlbiB0aGUgcmVtZW1icmFuY2Ugb2YgaGVyIGZvcm1lciAKZHJlYW0gcmV0dXJuZWQgdG8gaGVyIHdpdGggc2luZ3VsYXIgdml2aWRuZXNzIGFuZCAKcmVtYXJrYWJsZSBmb3JjZSwgYW5kIHNoZSBmZWx0IGhlciBsb25lbHkgaXNvbGF0aW9uIApncmVhdGx5LiBBY2NvcmRpbmdseSwgaGF2aW5nIGF0IG9uY2UgbGlnaHRlZCBhIGxhbXAgb24gCnRoZSBoYWxsIHRhYmxlIOKAlCBkdXJpbmcgd2hpY2ggYWN0IHRoZSBsb3VkIGtub2NrIHdhcyAKcmVwZWF0ZWQgd2l0aCB2aWdvdXIg4oCUIHNoZSB0b29rIHRoZSBwcmVjYXV0aW9uIHRvIGdvIAp1cCB0byBhIGxhbmRpbmcgb24gdGhlIHN0YWlyIGFuZCB0aHJvdyB1cCB0aGUgd2luZG93IDsgCgoKVEhFIEhPVVNFS0VFUEVS4oCZUyBEUkVBTSAKCgoxNDkgCgoKYW5kIHRoZXJlIHRvIGhlciBpbnRlbnNlIHRlcnJvciBzaGUgc2F3IGluIHRoZSBmbGVzaCB0aGUgCnZlcnkgbWFuIHdob20geWVhcnMgcHJldmlvdXNseSBzaGUgaGFkIHNlZW4gaW4gaGVyIApkcmVhbSwgYXJtZWQgd2l0aCB0aGUgYmx1ZGdlb24gYW5kIGRlbWFuZGluZyBhbiAKZW50cmFuY2UuIAoK4oCcIFdpdGggZ3JlYXQgcHJlc2VuY2Ugb2YgbWluZCBzaGUgd2VudCBkb3duIHRvIHRoZSAKY2hpZWYgZW50cmFuY2UsIG1hZGUgdGhhdCBhbmQgb3RoZXIgZG9vcnMgYW5kIHdpbmRvd3MgCm1vcmUgc2VjdXJlLCBhbmQgdGhlbiByYW5nIHRoZSB2YXJpb3VzIGJlbGxzIG9mIHRoZSAKaG91c2UgdmlvbGVudGx5LCBhbmQgcGxhY2VkIGxpZ2h0cyBpbiB0aGUgdXBwZXIgcm9vbXMuIAoKSXQgd2FzIGNvbmNsdWRlZCB0aGF0IGJ5IHRoZXNlIGFjdHMgdGhlIGludHJ1ZGVyIHdhcyAKc2NhcmVkIGF3YXku4oCdIAoKRXZpZGVudGx5IGluIHRoaXMgY2FzZSBhbHNvIHRoZSBkcmVhbSB3YXMgb2YgcHJhYy0gCnRpY2FsIHVzZSwgYXMgd2l0aG91dCBpdCB0aGUgd29ydGh5IGhvdXNla2VlcGVyIHdvdWxkIAp3aXRob3V0IGRvdWJ0IGZyb20gc2hlZXIgZm9yY2Ugb2YgaGFiaXQgaGF2ZSBvcGVuZWQgCnRoZSBkb29yIGluIHRoZSBvcmRpbmFyeSB3YXkgaW4gYW5zd2VyIHRvIHRoZSBrbm9jay4gCgpJdCBpcyBub3QsIGhvd2V2ZXIsIG9ubHkgaWl5aXhmaWFtanRoYXQgdGhlLi4sRWdwTSwuaW0tIHx8IApwcmVzc2VzIGhpcyBsb3dlciBzZWxmIHdpdGggd2hhdCBoZSB0aGlua3MgaXQgd2VsbCBmb3IgaXQgCnRvIGtuZXcvOy4uIE1hbnkgaW5zdGFuY2VzIHNob3dpbmcgdGhpcyBtaWdodCBiZSAKdGFrZW4gZnJvbSB0aGUgYm9va3MsIGJ1dCBpbnN0ZWFkIG9mIHF1b3RpbmcgZnJvbSAKdGhlbSBJIHdpbGwgZ2l2ZSBhIGNhc2UgcmVsYXRlZCBvbmx5IGEgZmV3IHdlZWtzIGFnbyAKYnkgYSBsYWR5IG9mIG15IGFjcXVhaW50YW5jZSDigJQgYSBjYXNlIHdoaWNoLCBhbHRob3VnaCAKbm90IHN1cnJvdW5kZWQgd2l0aCBhbnkgcm9tYW50aWMgaW5jaWRlbnQsIGhhcyBhdCBsZWFzdCAKdGhlIG1lcml0IG9mIGJlaW5nIG5ldy4gCgpNeSBmcmllbmQsIHRoZW4sIGhhcyB0d28gcXVpdGUgeW91bmcgY2hpbGRyZW4sIGFuZCAKIyBhIGxpdHRsZSB3aGlsZSBhZ28gdGhlIGVsZGVyIG9mIHRoZW0gY2F1Z2h0IChhcyB3YXMgCnN1cHBvc2VkKSBhIGJhZCBjb2xkLCBhbmQgc3VmZmVyZWQgZm9yIHNvbWUgZGF5cyBmcm9tIAphIGNvbXBsZXRlIHN0b3BwYWdlIGluIHRoZSB1cHBlciBwYXJ0IG9mIHRoZSBub3NlLiAKVGhlIG1vdGhlciB0aG91Z2h0IGxpdHRsZSBvZiB0aGlzLCBleHBlY3RpbmcgaXQgdG8gcGFzcyAKb2ZmLCB1bnRpbCBvbmUgZGF5IHNoZSBzdWRkZW5seSBzYXcgYmVmb3JlIGhlciBpbiB0aGUgCgoKQ0xBSVJWT1lBTkNFIAoKCklTTyAKCmFpciB3aGF0IHNoZSBkZXNjcmliZXMgYXMgYSBwaWN0dXJlIG9mIGEgcm9vbSwgaW4gdGhlIApjZW50cmUgb2Ygd2hpY2ggd2FzIGEgdGFibGUgb24gd2hpY2ggaGVyIGNoaWxkIHdhcyAKbHlpbmcgaW5zZW5zaWJsZSBvciBkZWFkLCB3aXRoIHNvbWUgcGVvcGxlIGJlbmRpbmcgCm92ZXIgaGVyLiBUaGUgbWludXRlc3QgZGV0YWlscyBvZiB0aGUgc2NlbmUgd2VyZSBjbGVhciAKdG8gaGVyLCBhbmQgc2hlIHBhcnRpY3VsYXJseSBub3RpY2VkIHRoYXQgdGhlIGNoaWxkIHdvcmUgCmEgd2hpdGUgbmlnaHQtZHJlc3MsIHdoZXJlYXMgc2hlIGtuZXcgdGhhdCBhbGwgZ2FybWVudHMgCm9mIHRoYXQgZGVzY3JpcHRpb24gcG9zc2Vzc2VkIGJ5IGhlciBsaXR0bGUgZGF1Z2h0ZXIgCmhhcHBlbmVkIHRvIGJlIHBpbmsuIAoKVGhpcyB2aXNpb24gaW1wcmVzc2VkIGhlciBjb25zaWRlcmFibHksIGFuZCBzdWctIApnZXN0ZWQgdG8gaGVyIGZvciB0aGUgZmlyc3QgdGltZSB0aGF0IHRoZSBjaGlsZCBtaWdodCBiZSAKc3VmZmVyaW5nIGZyb20gc29tZXRoaW5nIG1vcmUgc2VyaW91cyB0aGFuIGEgY29sZCwgc28gCnNoZSBjYXJyaWVkIGhlciBvZmYgdG8gYSBob3NwaXRhbCBmb3IgZXhhbWluYXRpb24uIFRoZSAKc3VyZ2VvbiB3aG8gYXR0ZW5kZWQgdG8gaGVyIGRpc2NvdmVyZWQgdGhlIHByZXNlbmNlIApvZiBhIGRhbmdlcm91cyBncm93dGggaW4gdGhlIG5vc2UsIHdoaWNoIGhlIHByby0gCm5vdW5jZWQgbXVzdCBiZSByZW1vdmVkLiBBIGZldyBkYXlzIGxhdGVyKiB0aGUgCmNoaWxkIHdhcyB0YWtlbiB0byB0aGUgaG9zcGl0YWwgZm9yIHRoZSBvcGVyYXRpb24sIGFuZCAKd2FzIHB1dCB0byBiZWQuIFdoZW4gdGhlIG1vdGhlciBhcnJpdmVkIGF0IHRoZSAKaG9zcGl0YWwgc2hlIGZvdW5kIHNoZSBoYWQgZm9yZ290dGVuIHRvIGJyaW5nIG9uZSBvZiAKdGhlIGNoaWxk4oCZcyBuaWdodC1kcmVzc2VzLCBhbmQgc28gdGhlIG51cnNlcyBoYWQgdG8gCnN1cHBseSBvbmUsIHdoaWNoIHdhcyB3aGl0ZSAuIEluIHRoaXMgd2hpdGUgZHJlc3MgdGhlIApvcGVyYXRpb24gd2FzIHBlcmZvcm1lZCBvbiB0aGUgZ2lybCB0aGUgbmV4dCBkYXksIGluIAp0aGUgcm9vbSB0aGF0IGhlciBtb3RoZXIgc2F3IGluIGhlciB2aXNpb24sIGV2ZXJ5IApjaXJjdW1zdGFuY2UgYmVpbmcgZXhhY3RseSByZXByb2R1Y2VkLiAKCkluIGFsbCB0aGVzZSBjYXNlcyB0aGUuIC5wcmV2aXNpb24gYWNoaWV2ZWQgaXRzIHJlc3VsdCwgKiogCmJ1dCB0aGUgYm9va3MgYXJlIGZ1bGwgb2Ygc3RvcmllcyBvZiB3YXJuaW5ncyBuZWdsZWVmcGQgCnNjb3V0ZWReIGFuZCBvVXRlLWRpc2FzdGVyIHRoYXQgY29uc2VxdWVudGx5LixeIApsb3dlZC4gSW4gc29tZSBjYXNlcyB0aGUgaW5mb3JtYXRpb24gaXMgZ2l2ZW4gdG8gCnNvbWVvbmUgd2hvIGhhcyBwcmFjdGljYWxseSBubyBwb3dlciB0byBpbnRlcmZlcmUgaW4gCgoKTVVSREVSIEZPUkVTRUVOIAoKCk1VSU0qIAoKaGxQTWl0QVYgCgoKdGhlIG1hdHRlciwgYXMgaW4gdGhlIGhpc3RvcmljIGluc3RhbmNlIHd0ZUJecG9oYTsgCldpbGxpYW1zLCBhIENvcm5pc2ggbWluZS1tYW5hZ2VyLCBmb3Jlc2F3IGluIHRoZSAKbWludXRlc3QgZGV0YWlsLCBlaWdodCBvciBuaW5lIGRheXMgYmVmb3JlIGl0IHRvb2sgcGxhY2UsIAoKLiB0aGUgYXNzYXNzaW5hdGlvbiBvZiBNci4gU3BlbmNlciBQZXJjZXZhbCwgdGhlIHRoZW4gCkNoYW5jZWxsb3Igb2YgdGhlIEV4Y2hlcXVlciwgaW4gdGhlIGxvYmJ5IG9mIHRoZSAKSG91c2Ugb2YgQ29tbW9ucy4gRXZlbiBpbiB0aGlzIGNhc2UsIGhvd2V2ZXIsIGl0IAoKCmlzIGp1c3QgcG9zc2libGUgdGhhdCBzb21ldGhpbmcgbWlnaHQgaGF2ZSBiZWVuIGRvbmUsIApmb3Igd2UgcmVhZCB0aGF0IE1yLiBXaWxsaWFtcyB3YXMgc28gbXVjaCBpbXByZXNzZWQgCnRoYXQgaGUgY29uc3VsdGVkIGhpcyBmcmllbmRzIGFzIHRvIHdoZXRoZXIgaGUgb3VnaHQgCm5vdCB0byBnbyB1cCB0byBMb25kb24gdG8gd2FybiBNci4gUGVyY2V2YWwuIFVuLSAKZm9ydHVuYXRlbHkgdGhleSBkaXNzdWFkZWQgaGltLCBhbmQgdGhlIGFzc2Fzc2luYXRpb24gCgoqIHRvb2sgcGxhY2UuIEl0IGRvZXMgbm90IHNlZW0gdmVyeSBwcm9iYWJsZSB0aGF0LCAKZXZlbiBpZiBoZSBoYWQgZ29uZSB1cCB0byB0b3duIGFuZCByZWxhdGVkIGhpcyBzdG9yeSwgCm11Y2ggYXR0ZW50aW9uIHdvdWxkIGhhdmUgYmVlbiBwYWlkIHRvIGhpbSwgc3RpbGwgCgrigKIgdGhlc2UgaXMganVzdCB0aGUgcG9zc2liaWxpdHkgdGhhdCBzb21lIHByZWNhdXRpb25zIAptaWdodCBoYXZlIGJlZW4gdGFrZW4gd2hpY2ggd291bGQgaGF2ZSBwcmV2ZW50ZWQgCnRoZSBtdXJkZXIuIAoKCipUaGVyZSBpcyBsaXR0bGUgdG8gc2hvdyB1cyB3aGF0IHBhcnRpY3VsYXIgYWN0aW9uIG9uIApoaWdoZXIgcGxhbmVzIGxlZCB0byB0aGlzIGN1cmlvdXMgcHJvcGhldGljIHZpc2lvbi4gVGhlIApwYXJ0aWVzIHdlcmUgZW50aXJlbHkgdW5rbm93biB0byBvbmUgYW5vdGhlciwgc28gdGhhdCAKaXQgd2FzIG5vdCBjYXVzZWQgYnkgYW55IGNsb3NlIHN5bXBhdGh5IGJldHdlZW4gCnRoZW0uIElmIGl0IHdhcyBhbiBhdHRlbXB0IG1hZGUgYnkgc29tZSBoZWxwZXIgdG8gCmF2ZXJ0IHRoZSB0aHJlYXRlbmVkIGRvb20sIGl0IHNlZW1zIHN0cmFuZ2UgdGhhdCBubyAKbSBvbmUgd2hvIHdhcyBzdWZmaWNpZW50bHkgaW1wcmVzc2libGUgY291bGQgYmUgZm91bmQgCm5lYXJlciB0aGFuIENvcm53YWxsLiBQZXJoYXBzIE1yLiBXaWxsaWFtcywgd2hlbiAKb24gdGhlIGFzdHJhbCBwbGFuZSBkdXJpbmcgc2xlZXAsIHNvbWVob3cgY2FtZSBhY3Jvc3MgCnRoaXMgcmVmbGVjdGlvbiBvZiB0aGUgZnV0dXJlLCBhbmQgYmVpbmcgbmF0dXJhbGx5IApob3JyaWZpZWQgdGhlcmVieSwgcGFzc2VkIGl0IG9uIHRvIGhpcyBsb3dlciBtaW5kIGluIAoKCjE1MiAKCgpDTEFJUlZPWUFOQ0UgCgoKdGhlIGhvcGUgdGhhdCBzb21laG93IHNvbWV0aGluZyBtaWdodCBiZSBkb25lIHRvIApwcmV2ZW50IGl0OyBidXQgaXQgaXMgaW1wb3NzaWJsZSB0byBkaWFnbm9zZSB0aGUgY2FzZSAKd2l0aCBjZXJ0YWludHkgd2l0aG91dCBleGFtaW5pbmcgdGhlICZrYXNoaWMgcmVjb3JkcyAKdG8gc2VlIHdoYXQgYWN0dWFsbHkgdG9vayBwbGFjZS4gCgpBIHR5cGljYWwgaW5zdGFuY2Ugb2YgdGhlIGFic29sdXRlbHkgcHVycG9zZWxlc3MgCmZvcmVzaWdodCBpcyB0aGF0IHJlbGF0ZWQgYnkgTXIuIFN0ZWFkLCBpbiBoaXMgUmVhbCAKR2hvc3QgU3RvcmllcyAocC4gODMpLCBvZiBoaXMgZnJpZW5kIE1pc3MgRnJlZXIsIApjb21tb25seSBrbm93biBhcyBNaXNzIFguIFdoZW4gc3RheWluZyBhdCBhIApjb3VudHJ5IGhvdXNlIHRoaXMgbGFkeSwgYmVpbmcgd2lkZSBhd2FrZSBhbmQgZnVsbHkgCmNvbnNjaW91cywgb25jZSBzYXcgYSBkb2djYXJ0IGRyYXduIGJ5IGEgd2hpdGUgaG9yc2UgCnN0YW5kaW5nIGF0IHRoZSBoYWxsIGRvb3IsIHdpdGggdHdvIHN0cmFuZ2VycyBpbiBpdCwgb25lIApvZiB3aG9tIGdvdCBvdXQgb2YgdGhlIGNhcnQgYW5kIHN0b29kIHBsYXlpbmcgd2l0aCAKYSB0ZXJyaWVyLiBTaGUgbm90aWNlZCB0aGF0IGhlIHdhcyB3ZWFyaW5nIGFuIHVsc3RlciwgCmFuZCBhbHNvIHBhcnRpY3VsYXJseSBvYnNlcnZlZCB0aGUgZnJlc2ggd2hlZWwtbWFya3MgCm1hZGUgYnkgdGhlIGNhcnQgb24gdGhlIGdyYXZlbC4gTmV2ZXJ0aGVsZXNzIHRoZXJlIAp3YXMgbm8gY2FydCB0aGVyZSBhdCB0aGUgdGltZSA7IGJ1dCBoYWxmIGFuIGhvdXIgbGF0ZXIgCnR3byBzdHJhbmdlcnMgZGlkIGRyaXZlIHVwIGluIHN1Y2ggYW4gZXF1aXBhZ2UsIGFuZCAKZXZlcnkgZGV0YWlsIG9mIHRoZSBsYWR54oCZcyB2aXNpb24gd2FzIGFjY3VyYXRlbHkgZnVsLSAKZmlsbGVkLiBNci4gU3RlYWQgZ29lcyBvbiB0byBjaXRlIGFub3RoZXIgaW5zdGFuY2UgCm9mIGVxdWFsbHkgcHVycG9zZWxlc3MgcHJldmlzaW9uIHdoZXJlIHNldmVuIHllYXJzIApzZXBhcmF0ZWQgdGhlIGRyZWFtIChmb3IgaW4gdGhpcyBjYXNlIGl0IHdhcyBhIGRyZWFtKSAKYW5kIGl0cyBmdWxmaWxtZW50LiAKCkFsbCB0aGVzZSBpbnN0YW5jZXMgKGFuZCB0aGV5IGFyZSBtZXJlbHkgcmFuZG9tIApzZWxlY3Rpb25zIGZyb20gbWFueSBodW5kcmVkcykgc2hvdyB0aGF0IGEgY2VydGFpbiAKYW1vdW50IG9mIHByZXZpc2lvbiBpcyB1bmRvdWJ0ZWRseSBwb3NzaWJsZSB0byB0aGUgCkVnbywgYW5kIHN1Y2ggY2FzZXMgd291bGQgZXZpZGVudGx5IGJlIG11Y2ggbW9yZSAKZnJlcXVlbnQgaWYgaXQgd2VyZSBub3QgZm9yIHRoZSBleGNlZWRpbmcgZGVuc2l0eSBhbmQgCkggbGFjayBvZiByZXNwb25zZSBpbiB0aGUgbG93ZXIgdmVoaWNsZXMgb2YgdGhlIG1ham9yaXR5IAoKCkEgUFJFTU9OSVRJT04gRlVMRklMTEVEIDEgNTMgCgpxZiwgd2hhdCB3ZSBjYWxsIGNpdmlsaXplZCBtYW5raW5kIOKAlCBxdWFsaXRpZXMgY2hpZWZseSAKYXR0cmlidXRhYmxlIHRvIHRoZSBncm9zcyBwcmFjdGljYWwgbWF0ZXJhbGlzbSBvZiB0aGUgCnByZXNlbnQgYWdlLiBJIGFtIG5vdCB0aGlua2luZyBvZiBhbnkgcHJvZmVzc2lvbiBvZiAKbWF0ZXJpYWxpc3RpYyBiZWxpZWYgYXMgY29tbW9uLCBidXQgb2YgdGhlIGZhY3QgdGhhdCBpbiAKYWxsIHByYWN0aWNhbCBhZmZhaXJzIG9mIGRhaWx5IGxpZmUgbmVhcmx5IGV2ZXJ5b25lIElzIApndWlkZWQgc29sZWx5IGJ5IGNvbnNpZGVyYXRpb25zIG9mIHdvcmxkbHkgaW50ZXJlc3QgaW4gCnNvbWUgc2hhcGUgb3Igb3RoZXIuIAoKSW4gbWFueSBjYXNlcyB0aGUgRWdvIGhpbXNlbGYgbWF5IGJlIGFuIHVuLSBcXCAKZGV2ZWxvcGVkIG9uZSwgYW5kIGhpcyBwcmV2aXNpb24gY29uc2VxdWVudGx5IHZlcnkgCnZhZ3VlIDsgaW4gb3RoZXJzIGhlIGhpbXNlbGYgbWF5IHNlZSBjbGVhcmx5LCBidXQgbWF5IApmaW5kIGhpcyBsb3dlciB2ZWhpY2xlcyBzbyB1bmltcHJlc3NpYmxlIHRoYXQgYWxsIGhlaiAKY2FuIHN1Y2NlZWQgaW4gZ2V0dGluZyB0aHJvdWdoIGludG8gaGlzIHBoeXNpY2FsIGJyYWluIAptYXkgYmUgYW4gaW5kZWZpbml0ZSBwcmVzYWdlIG9mIGNvbWluZyBkaXNhc3RlciAsaiAKQWdhaW4sIHRoZXJlIGFyZSBjYXNlcyBpbiB3aGljaCBhIHByZW1vbml0aW9uIGlzIG5vdCAKdGhlIHdvcmsgb2YgdGhlIEVnbyBhdCBhbGwsIGJ1dCBvZiBzb21lIG91dHNpZGUgZW50aXR5LCAKd2hvIGZvciBzb21lIHJlYXNvbiB0YWtlcyBhIGZyaWVuZGx5IGludGVyZXN0IGluIHRoZSAKcGVyc29uIHRvIHdob20gdGhlIGZlZWxpbmcgY29tZXMuIEluIHRoZSB3b3JrIAp3aGljaCBJIHF1b3RlZCBhYm92ZSwgTXIuIFN0ZWFkIHRlbGxzIHVzIG9mIHRoZSAKY2VydGFpbnR5IHdoaWNoIGhlIGZlbHQgbWFueSBtb250aHMgYmVmb3JlaGFuZCB0aGF0IApiZSB3b3VsZCBiZSBsZWZ0IGluIGNoYXJnZSBvZiB0aGUgUGFsbCBNYWxsIEdhemV0dGUgCnRob3VnaCBmcm9tIGFuIG9yZGluYXJ5IHBvaW50IG9mIHZpZXcgbm90aGluZyBzZWVtZWQgCmxlc3MgcHJvYmFibGUuIFdoZXRoZXIgdGhhdCBmb3JlLWtub3dsZWRnZSB3YXMgdGhlIApyZXN1bHQgb2YgYW4gaW1wcmVzc2lvbiBtYWRlIGJ5IGhpcyBvd24gRWdvIG9yIG9mIGEgCmZyaWVuZGx5IGhpbnQgZnJvbSBzb21lb25lIGVsc2UgaXQgaXMgaW1wb3NzaWJsZSB0byBzYXkgCndpdGhvdXQgZGVmaW5pdGUgaW52ZXN0aWdhdGlvbiwgYnV0IGhpcyBjb25maWRlbmNlIGluIAppdCB3YXMgZnVsbHkganVzdGlmaWVkLiAKClRoZXJlIGlzIG9uZSBtb3JlIHZhcmlldHkgb2YgY2xhaXJ2b3lhbmNlIGluIHRpbWUgCndoaWNoIG91Z2h0IG5vdCB0byBiZSBsZWZ0IHdpdGhvdXQgbWVudGlvbi4gSXQgaXMgCgoKcjU0IAoKCkNMQUlSVk9ZQU5DRSAKCgphIGNvbXBhcmF0aXZlbHkgcmFyZSBvbmUsIGJ1dCB0aGVyZSBhcmUgZW5vdWdoIApleGFtcGxlcyBvbiByZWNvcmQgdG8gY2xhaW0gb3VyIGF0dGVudGlvbiwgdGhvdWdoIAp1bmZvcnR1bmF0ZWx5IHRoZSBwYXJ0aWN1bGFycyBnaXZlbiBkbyBub3QgdXN1YWxseSAKaW5jbHVkZSB0aG9zZSB3aGljaCB3ZSBzaG91bGQgcmVxdWlyZSBpbiBvcmRlciB0byBiZSAKYWJsZSB0byBkaWFnbm9zZSBpdCB3aXRoIGNlcnRhaW50eS4gSSByZWZlciB0byB0aGUgCmNhc2VzIGluIHdoaWNoIHNwZWN0cmFsIGFybWllcyBvciBwaGFudG9tIGZsb2NrcyBvZiAKYW5pbWFscyBoYXZlIGJlZW4gc2Vlbi4gSW4gVGhlIE5pZ2h0IFNpZGUgb2YgTmF0dXJlIAoocC4gNDYyIGV0IHNlcS4pIHdlIGhhdmUgYWNjb3VudHMgb2Ygc2V2ZXJhbCBzdWNoIAp2aXNpb25zLiBXZSBhcmUgdGhlcmUgdG9sZCBob3cgYXQgSGF2YXJhaCBQYXJrLCAKbmVhciBSaXBsZXksIGEgYm9keSBvZiBzb2xkaWVycyBpbiB3aGl0ZSB1bmlmb3JtLCAKYW1vdW50aW5nIHRvIHNldmVyYWwgaHVuZHJlZHMsIHdhcyBzZWVuIGJ5IHJlcHV0YWJsZSAKcGVvcGxlIHRvIGdvIHRocm91Z2ggdmFyaW91cyBldm9sdXRpb25zIGFuZCB0aGVuICogCnZhbmlzaCA7IGFuZCBob3cgc29tZSB5ZWFycyBlYXJsaWVyIGEgc2ltaWxhciB2aXNpb25hcnkgCmFybXkgd2FzIHNlZW4gaW4gdGhlIG5laWdoYm91cmhvb2Qgb2YgSW52ZXJuZXNzIGJ5IAphIHJlc3BlY3RhYmxlIGZhcm1lciBhbmQgaGlzIHNvbi47ICogwqsgCgpJbiB0aGlzIGNhc2UgYWxzbyB0aGUgbnVtYmVyIG9mIHRyb29wcyB3YXMgdmVyeSAKZ3JlYXQsIGFuZCB0aGUgc3BlY3RhdG9ycyBoYWQgbm90IHRoZSBzbGlnaHRlc3QgZG91YnQgCmF0IGZpcnN0IHRoYXQgdGhleSB3ZXJlIHN1YnN0YW50aWFsIGZvcm1zIG9mIGZsZXNoICphbmQgCmJsb29kLiBUaGV5IGNvdW50ZWQgYXQgbGVhc3Qgc2l4dGVlbiBwYWlycyBvZiAKY29sdW1ucywgYW5kIGhhZCBhYnVuZGFuY2Ugb2YgdGltZSB0byBvYnNlcnZlIGV2ZXJ5IApwYXJ0aWN1bGFyLiBUaGUgZnJvbnQgcmFua3MgbWFyY2hlZCBzZXZlbiBhYnJlYXN0LCAKYW5kIHdlcmUgYWNjb21wYW5pZWQgYnkgYSBnb29kIG1hbnkgd29tZW4gYW5kICIgCmNoaWxkcmVuLCB3aG8gd2VyZSBjYXJyeWluZyB0aW4gY2FucyBhbmQgb3RoZXIgaW1wbGUtIAptZW50cyBvZiBjb29rZXJ5LiBUaGUgbWVuIHdlcmUgY2xvdGhlZCBpbiByZWQsIGFuPF4gCnRoZWlyIGFybXMgc2hvbmUgYnJpZ2h0bHkgaW4gdGhlIHN1bi4gSW4gdGhlIG1pZHN0IG9mIAp0aGVtIHdhcyBhbiBhbmltYWwsIGEgZGVlciBvciBhIGhvcnNlLCB0aGV5IGNvdWxkIG5vdCAKZGlzdGluZ3Vpc2ggd2hpY2gsIHRoYXQgdGhleSB3ZXJlIGRyaXZpbmcgZnVyaW91c2x5IApmb3J3YXJkIHdpdGggdGhlaXIgYmF5b25ldHMuIAoKClNQRUNUUkFMIEFSTUlFUyAKCgoxNTUgCgpUaGUgeW91bmdlciBvZiB0aGUgdHdvIG1lbiBvYnNlcnZlZCB0byB0aGUgb3RoZXIgCnRoYXQgZXZlcnkgbm93IGFuZCB0aGVuIHRoZSByZWFyIHJhbmtzIHdlcmUgb2JsaWdlZCAKdG8gcnVuIHRvIG92ZXJ0YWtlIHRoZSB2YW4gOyBhbmQgdGhlIGVsZGVyIG9uZSwgd2hvIApoYWQgYmVlbiBhIHNvbGRpZXIsIHJlbWFya2VkIHRoYXQgdGhhdCB3YXMgYWx3YXlzIHRoZSAKY2FzZSwgYW5kIHJlY29tbWVuZGVkIGhpbSBpZiBoZSBldmVyIHNlcnZlZCB0byB0cnkgCnRvIG1hcmNoIGluIHRoZSBmcm9udC4gVGhlcmUgd2FzIG9ubHkgb25lIG1vdW50ZWQgCm9mZmljZXIgOyBoZSByb2RlIGEgZ3JleSBkcmFnb29uIGhvcnNlLCBhbmQgd29yZSBhIApnb2xkLWxhY2VkIGhhdCBhbmQgYmx1ZSBIdXNzYXIgY2xvYWssIHdpdGggd2lkZSBvcGVuIApzbGVldmVzIGxpbmVkIHdpdGggcmVkLiBUaGUgdHdvIHNwZWN0YXRvcnMgb2JzZXJ2ZWQgCmhpbSBzbyBwYXJ0aWN1bGFybHkgdGhhdCB0aGV5IHNhaWQgYWZ0ZXJ3YXJkcyB0aGV5IApzaG91bGQgcmVjb2duaXplIGhpbSBhbnl3aGVyZS4gVGhleSB3ZXJlLCBob3ctIApldmVyLCBhZnJhaWQgb2YgYmVpbmcgaWxsLXRyZWF0ZWQgb3IgZm9yY2VkIHRvIGdvIGFsb25nIAp3aXRoIHRoZSB0cm9vcHMsIHdob20gdGhleSBjb25jbHVkZWQgdG8gaGF2ZSBjb21lIApmcm9tIElyZWxhbmQsIGFuZCBsYW5kZWQgYXQgS3ludHlyZSA7IGFuZCB3aGlsc3QgdGhleSAKKiB3ZXJlICJjbGltYmluZyBvdmVyIGEgZHlrZSB0byBnZXQgb3V0IG9mIHRoZWlyIHdheSwgCnRoZSB3aG9sZSB0aGluZyB2YW5pc2hlZC4gCgpBIHBoZW5vbWVub24gb2YgdGhlIHNhbWUgc29ydCB3YXMgb2JzZXJ2ZWQgaW4gCnRoZSBlYXJsaWVyIHBhcnQgb2YgdGhpcyBjZW50dXJ5IGF0IFBhZGVyYm9ybiBpbiBXZXN0LSAKcGhhbGlhLCBhbmQgc2VlbiBieSBhdCBsZWFzdCB0aGlydHkgcGVvcGxlOyBidXQgYXMsIApzb21lIHllYXJzIGxhdGVyLCBhIHJldmlldyBvZiB0d2VudHkgdGhvdXNhbmQgbWVuIAp3YXMgaGVsZCBvbiB0aGUgdmVyeSBzYW1lIHMncG90LCBpdCB3YXMgY29uY2x1ZGVkIAp0aGF0IHRoZSB2aXNpb24gbXVzdCBoYXZlIGJlZW4gc29tZSBzb3J0IG9mIHNlY29uZC0gCnNpZ2h0IOKAlCBhIGZhY3VsdHkgbm90IHVuY29tbW9uIGluIHRoZSBkaXN0cmljdCAKKiBTdWNoIHNwZWN0cmFsIGhvc3RzLCBob3dldmVyLCBhcmUgc29tZXRpbWVzIHNlZW4gCndoZXJlIGFuIGFybXkgb2Ygb3JkaW5hcnkgbWVuIGNvdWxkIGJ5IG5vIHBvc3NpLSAKYmlsaXR5IGhhdmUgbWFyY2hlZCwgZWl0aGVyIGJlZm9yZSBvciBhZnRlci4gT25lIApvZiB0aGUgbW9zdCByZW1hcmthYmxlIGFjY291bnRzIG9mIHN1Y2ggYXBwYXJpLSAKdGlvbnMgaXMgZ2l2ZW4gYnleTWlzcyBIYXJyaWV0IE1hcnRpbmVhdSwgaW4gaGVyIAoKCjE1NiAKCgpDTEFJUlZPWUFOQ0UgCgoKZGVzY3JpcHRpb24gb2YgVGhlIEVuZ2xpc2ggTGFrZXMgLiBTaGUgd3JpdGVzIGFzIAoKZm9sbG93cyA6IOKAlCAKCuKAnCBUaGlzIFNvdXRlciBvciBTb3V0cmEgRmVsbCBpcyB0aGUgbW91bnRhaW4gb24gCndoaWNoIGdob3N0cyBhcHBlYXJlZCBpbiBteXJpYWRzLCBhdCBpbnRlcnZhbHMgZHVyaW5nIAp0ZW4geWVhcnMgb2YgdGhlIGxhc3QgY2VudHVyeSwgcHJlc2VudGluZyB0aGUgc2FtZSAKYXBwZWFyYW5jZXMgdG8gdHdlbnR5LXNpeCBjaG9zZW4gd2l0bmVzc2VzLCBhbmQgdG8gCmFsbCB0aGUgaW5oYWJpdGFudHMgb2YgYWxsIHRoZSBjb3R0YWdlcyB3aXRoaW4gdmlldyBvZiAKdGhlIG1vdW50YWluLCBhbmQgZm9yIGEgc3BhY2Ugb2YgdHdvIGhvdXJzIGFuZCBhIApoYWxmIGF0IG9uZSB0aW1lIOKAlCB0aGUgc3BlY3RyYWwgc2hvdyBiZWluZyBjbG9zZWQgYnkgCmRhcmtuZXNzISBUaGUgbW91bnRhaW4sIGJlIGl0IHJlbWVtYmVyZWQsIGlzIGZ1bGwgCm9mIHByZWNpcGljZXMsIHdoaWNoIGRlZnkgYWxsIG1hcmNoaW5nIG9mIGJvZGllcyBvZiAKbWVuIDsgYW5kIHRoZSBub3J0aCBhbmQgd2VzdCBzaWRlcyBwcmVzZW50IGEgc2hlZXIgciAKcGVycGVuZGljdWxhciBvZiA5MDAgZmVldC4gCgo8diBPbiBNaWRzdW1tZXIgRXZlLCAxNzM1LCBhIGZhcm0gc2VydmFudCBvZiBNci4gCkxhbmNhc3RlciwgaGFsZiBhIG1pbGUgZnJvbSB0aGUgbW91bnRhaW4sIHNhdyB0aGUgciAKZWFzdGVybiBzaWRlIG9mIGl0cyBzdW1taXQgY292ZXJlZCB3aXRoIHRyb29wcywgd2hpY2ggCnB1cnN1ZWQgdGhlaXIgb253YXJkIG1hcmNoIGZvciBhbiBob3VyLiBUaGV5IApjYW1lLCBpbiBkaXN0aW5jdCBib2RpZXMsIGZyb20gYW4gZW1pbmVuY2Ugb24xJyB0aGUgCm5vcnRoIGVuZCwgYW5kIGRpc2FwcGVhcmVkIGluIGEgbmljaGUgaW4gdGhlIHN1bW1pdC4gCldoZW4gdGhlIHBvb3IgZmVsbG93IHRvbGQgaGlzIHRhbGUsIGhlIHdhcyBpbnN1bHRlZCAKb24gYWxsIGhhbmRzLCBhcyBvcmlnaW5hbCBvYnNlcnZlcnMgdXN1YWxseSBhcmUgd2hlbiAKdGhleSBzZWUgYW55dGhpbmcgd29uZGVyZnVsLiBUd28geWVhcnMgYWZ0ZXIsIGFsc28gCm9uIGEgTWlkc3VtbWVyIEV2ZSwgTXIuIExhbmNhc3RlciBzYXcgc29tZSBtZW4gCnRoZXJlLCBhcHBhcmVudGx5IGZvbGxvd2luZyB0aGVpciBob3JzZXMsIGFzIGlmIHRoZXleIApoYWQgcmV0dXJuZWQgZnJvbSBodW50aW5nLiBIZSB0aG91Z2h0IG5vdGhpbmcgb2YgCnRoaXMgOyBidXQgaGUgaGFwcGVuZWQgdG8gbG9vayB1cCBhZ2FpbiB0ZW4gbWludXRlcyAKYWZ0ZXIsIGFuZCBzYXcgdGhlIGZpZ3VyZXMsIG5vdyBtb3VudGVkLCBhbmQgZm9sbG93ZWQgCmJ5IGFuIGludGVybWluYWJsZSBhcnJheSBvZiB0cm9vcHMsIGZpdmUgYWJyZWFzdCwgCgoKU09VVEVSIEZFTEwgCgoKSVMgNyAKCm1hcmNoaW5nIGZyb20gdGhlIGVtaW5lbmNlIGFuZCBvdmVyIHRoZSBjbGVmdCBhcyAKYmVmb3JlLiBBbGwgdGhlIGZhbWlseSBzYXcgdGhpcywgYW5kIHRoZSBtYW5vZXV2cmVzIApvZiB0aGUgZm9yY2UsIGFzIGVhY2ggY29tcGFueSB3YXMga2VwdCBpbiBvcmRlciBieSAKYSBtb3VudGVkIG9mZmljZXIsIHdobyBnYWxsb3BlZCB0aGlzIHdheSBhbmQgdGhhdCAKQXMgdGhlIHNoYWRlcyBvZiB0d2lsaWdodCBjYW1lIG9uLCB0aGUgZGlzY2lwbGluZSAKYXBwZWFyZWQgdG8gcmVsYXgsIGFuZCB0aGUgdHJvb3BzIGludGVybWluZ2xlZCwgYW5kIApyb2RlIGF0IHVuZXF1YWwgcGFjZXMsIHRpbGwgYWxsIHdhcyBsb3N0IGluIGRhcmtuZXNzLiAKTm93IG9mIGNvdXJzZSBhbGwgdGhlIExhbmNhc3RlcnMgd2VyZSBpbnN1bHRlZCwgYXMgCnRoZWlyIHNlcnZhbnQgaGFkIGJlZW4gOyBidXQnIHRoZWlyIGp1c3RpZmljYXRpb24gd2FzIApub3QgbG9uZyBkZWxheWVkLiAKCuKAnE9uIHRoZSBNaWRzdW1tZXIgRXZlIG9mIHRoZSBmZWFyZnVsIDE3NDUsIArigKJ0d2VudHktc2l4IHBlcnNvbnMsIGV4cHJlc3NseSBzdW1tb25lZCBieSB0aGUgCmZhbWlseSwgc2F3IGFsbCB0aGF0IGhhZCBiZWVuIHNlZW4gYmVmb3JlLCBhbmQgbW9yZS4gCkNhcnJpYWdlcyB3ZXJlIG5vdyBpbnRlcnNwZXJzZWQgd2l0aCB0aGUgdHJvb3BzIDsgYW5kIAoqIGV2ZXJ5Ym9keSBrbmV3IHRoYXQgbm8gY2FycmlhZ2VzIGhhZCBiZWVuLCBvciBjb3VsZCAKYmUsIG9uIHRoZSBzdW1taXQgb2YgU291IHRlciBGZWxsLiBUaGUgbXVsdGl0dWRlIAp3YXMgYmV5b25kIGltYWdpbmF0aW9uIDsgZm9yIHRoZSB0cm9vcHMgZmlsbGVkIGEgc3BhY2UgCm9mIEhobGYgYSBtaWxlLCBhbmQgbWFyY2hlZCBxdWlja2x5IHRpbGwgbmlnaHQgaGlkIAp0aGVtIOKAlCBzdGlsbCBtYXJjaGluZy4gVGhlcmUgd2FzIG5vdGhpbmcgdmFwb3JvdXMgCm9yIGluZGlzdGluY3QgYWJvdXQgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlc2Ugc3BlY3RyZXMuIApTbyByZWFsIGRpZCB0aGV5IHNlZW0sIHRoYXQgc29tZSBvZiB0aGUgcGVvcGxlIHdlbnQgCnVwLCB0aGUgbmV4dCBtb3JuaW5nLCB0byBsb29rIGZvciB0aGUgaG9vZi1tYXJrcyBvZiAKdGhlIGhvcnNlcyA7IGFuZCBhd2Z1bCBpdCB3YXMgdG8gdGhlbSB0byBmaW5kIG5vdCBvbmUgCmZvb3QtcHJpbnQgb24gaGVhdGhlciBvciBncmFzcy4gVGhlIHdpdG5lc3NlcyBhdHRlc3RlZCAKdGhlIHdob2xlIHN0b3J5IG9uIG9hdGggYmVmb3JlIGEgbWFnaXN0cmF0ZSA7IGFuZCBmZWFyZnVsIAp3ZXJlIHRoZSBleHBlY3RhdGlvbnMgaGVsZCBieSB0aGUgd2hvbGUgY291bnRyeS1zaWRlIAphYm91dCB0aGUgY29taW5nIGV2ZW50cyBvZiB0aGUgU2NvdGNoIHJlYmVsbGlvbi4gCgrigJxJdCBub3cgY29tZXMgb3V0IHRoYXQgdHdvIG90aGVyIHBlcnNvbnMgaGFkIAoKCjE1OCAKCgpDTEFJUlZPWUFOQ0UgCgoKc2VlbiBzb21ldGhpbmcgb2YgdGhlIHNvcnQgaW4gdGhlIGludGVydmFsIOKAlCB2aXouLCBpbiAKMTc0MyDigJQgYnV0IGhhZCBjb25jZWFsZWQgaXQsIHRvIGVzY2FwZSB0aGUgaW5zdWx0cyB0byAKd2hpY2ggdGhlaXIgbmVpZ2hib3VycyB3ZXJlIHN1YmplY3RlZC4gTXIuIFdyZW4sIApvZiBXaWx0b24gSGFsbCwgYW5kIGhpcyBmYXJtIHNlcnZhbnQsIHNhdywgb25lIHN1bW1lciAKZXZlbmluZywgYSBtYW4gYW5kIGEgZG9nIG9uIHRoZSBtb3VudGFpbiwgcHVyc3VpbmcgCnNvbWUgaG9yc2VzIGFsb25nIGEgcGxhY2Ugc28gc3RlZXAgdGhhdCBhIGhvcnNlIGNvdWxkIApoYXJkbHkgYnkgYW55IHBvc3NpYmlsaXR5IGtlZXAgYSBmb290aW5nIG9uIGl0LiBUaGVpciAKc3BlZWQgd2FzIHByb2RpZ2lvdXMsIGFuZCB0aGVpciBkaXNhcHBlYXJhbmNlIGF0IHRoZSAKc291dGggZW5kIG9mIHRoZSBmZWxsIHNvIHJhcGlkLCB0aGF0IE1yLiBXcmVuIGFuZCB0aGUgCnNlcnZhbnQgd2VudCB1cCwgdGhlIG5leHQgbW9ybmluZywgdG8gZmluZCB0aGUgYm9keSAKb2YgdGhlIG1hbiB3aG8gbXVzdCBoYXZlIGJlZW4ga2lsbGVkLiBPZiBtYW4sIApob3JzZSwgb3IgZG9nLCB0aGV5IGZvdW5kIG5vdCBhIHRyYWNlIDsgYW5kIHRoZXkgY2FtZSBeIApkb3duIGFuZCBoZWxkIHRoZWlyIHRvbmd1ZXMuIFdoZW4gdGhleSBkaWQgc3BlYWssIAp0aGV5IGZhcmVkIG5vdCBtdWNoIGJldHRlciBmb3IgaGF2aW5nIHR3ZW50eS1zaXggCnN3b3JuIGNvbXJhZGVzIGluIHRoZWlyIGRpc2dyYWNlLiAKCjEgciAxIAoK4oCcIEFzIGZvciB0aGUgZXhwbGFuYXRpb24sIHRoZSBlZGl0b3Igb2YgdGhlIExvbnNkYWxlIApNYWdhemluZSBkZWNsYXJlZCAodm9sLiBpaS4sIHAuIDMxMykgdGhhdCBpdCB3YXMgZGlzLSAKY292ZXJlZCB0aGF0IG9uIHRoZSBNaWRzdW1tZXIgRXZlIG9mIDE3NDUqIHRoZSAKcmViZWxzIHdlcmUg4oCYZXhlcmNpc2luZyBvbiB0aGUgd2VzdGVybiBjb2FzdCBvZiAKU2NvdGxhbmQsIHdob3NlIG1vdmVtZW50cyBoYWQgYmVlbiByZWZsZWN0ZWQgYnkgCnNvbWUgdHJhbnNwYXJlbnQgdmFwb3VyLCBzaW1pbGFyIHRvIHRoZSBGYXRhIE1vcmdhbmEvIApUaGlzIGlzIG5vdCBtdWNoIGluIHRoZSB3YXkgb2YgZXhwbGFuYXRpb24gOyBidXQgaXQgCmlzLCBhcyBmYXIgYXMgd2Uga25vdywgYWxsIHRoYXQgY2FuIGJlIGhhZCBhdCBwcmVzZW50LiAKVGhlc2UgZmFjdHMsIGhvd2V2ZXIsIGJyb3VnaHQgb3V0IGEgZ29vZCBtYW55IG1vcmUgOyAKYXMgdGhlIHNwZWN0cmFsIG1hcmNoIG9mIHRoZSBzYW1lIGtpbmQgc2VlbiBpbiAKTGVpY2VzdGVyc2hpcmUgaW4gMTcwNywgYW5kIHRoZSB0cmFkaXRpb24gb2YgdGhlIHRyYW1wIApvZiBhcm1pZXMgb3ZlciBIZWx2ZWxseW4sIG9uIHRoZSBldmUgb2YgdGhlIGJhdHRsZSBvZiAKTWFyc3RvbiBNb29yLzUgCgoKU09NRSBUSEVPUklFUyAKCgoxNTkgCgoKT3RoZXIgY2FzZXMgYXJlIGNpdGVkIGluIHdoaWNoIGZsb2NrcyBvZiBzcGVjdHJhbCAKc2hlZXAgaGF2ZSBiZWVuIHNlZW4gb24gY2VydGFpbiByb2FkcywgYW5kIHRoZXJlIGFyZSAKb2YgY291cnNlIHZhcmlvdXMgR2VybWFuIHN0b3JpZXMgb2YgcGhhbnRvbSBjYXZhbC0gCmNhZGVzIG9mIGh1bnRlcnMgYW5kIHJvYmJlcnMuIAoKTm93IGluIHRoZXNlIGNhc2VzLCBhcyBzbyBvZnRlbiBoYXBwZW5zIGluIHRoZSAKaW52ZXN0aWdhdGlvbiBvZiBvY2N1bHQgcGhlbm9tZW5hLCB0aGVyZSBhcmUgc2V2ZXJhbCAKcG9zc2libGUgY2F1c2VzLCBhbnkgb25lIG9mIHdoaWNoIHdvdWxkIGJlIHF1aXRlIAphZGVxdWF0ZSB0byB0aGUgcHJvZHVjdGlvbiBvZiB0aGUgb2JzZXJ2ZWQgb2NjdXItIApyZW5jZXMsIGJ1dCBpbiB0aGUgYWJzZW5jZSBvZiBmdWxsZXIgaW5mb3JtYXRpb24gaXQgaXMgCmhhcmRseSBmZWFzaWJsZSB0byBkbyBtb3JlIHRoYW4gZ3Vlc3MgYXMgdG8gd2hpY2ggCm9mIHRoZXNlIHBvc3NpYmxlIGNhdXNlcyB3ZXJlIGluIG9wZXJhdGlvbiBpbiBhbnkgCnBhcnRpY3VsYXIgaW5zdGFuY2UuIAoKVGhlIGV4cGxhbmF0aW9uIHVzdWFsbHkgc3VnZ2VzdGVkICh3aGVuZXZlciB0aGUgCndob2xlIHN0b3J5IGlzIG5vdCByaWRpY3VsZWQgYXMgYSBmYWxzZWhvb2QpIGlzIHRoYXQgCndoYXQgaXMgc2VlbiBpcyBhIHJlZmxlY3Rpb24gYnkgbWlyYWdlIG9mIHRoZSBtb3ZlLSAKbWVudHMgb2YgYSByZWFsIGJvZHkgb2YgdHJvb3BzLCB0YWtpbmcgcGxhY2UgYXQgYSAKY29uc2lkZXJhYmxlIGRpc3RhbmNlLiBJIGhhdmUgbXlzZWxmIHNlZW4gdGhlIApvcmRpbmFyeSBtaXJhZ2Ugb24gc2V2ZXJhbCBvY2Nhc2lvbnMsIGFuZCBrbm93IApzb21ldGhpbmcgdGhlcmVmb3JlIG9mIGl0cyB3b25kZXJmdWwgcG93ZXJzIG9mIApkZWNlcHRpb24gOyBidXQgaXQgc2VlbXMgdG8gbWUgdGhhdCB3ZSBzaG91bGQgbmVlZCAKc29tZSBlbnRpcmVseSBuZXcgdmFyaWV0eSBvZiBtaXJhZ2UsIHF1aXRlIGRpZmZlcmVudCAKZnJvbSB0aGF0IGF0IHByZXNlbnQga25vd24gdG8gc2NpZW5jZSwgdG8gYWNjb3VudCBmb3IgCnRoZXNlIHRhbGVzIG9mIHBoYW50b20gYXJtaWVzLCBzb21lIG9mIHdoaWNoIHBhc3MgCnRoZSBzcGVjdGF0b3Igd2l0aGluIGEgZmV3IHlhcmRzLiAKbSBGaXJzdCBvZiBhbGwsIHRoZXkgbWF5IGJlLCBhcyBhcHBhcmVudGx5IGluIHRoZSBXZXN0LSAKcGhhbGlhbiBjYXNlIGFib3ZlIG1lbnRpb25lZCwgc2ltcGx5IGluc3RhbmNlcyBvZiBwcmUtIAp2aXNpb24gb24gYSBnaWdhbnRpYyBzY2FsZSDigJQgYnkgd2hvbSBhcnJhbmdlZCwgYW5kIApmb3Igd2hhdCBwdXJwb3NlLCBpdCBpcyBub3QgZWFzeSB0byBkaXZpbmUuIEFnYWluLCB0aGV5IAoKCm9uIAoKCmw2byBDTEFJUlZPWUFOQ0UgCgptYXkgb2Z0ZW4gYmVsb25nIHRvIHRoZSBwYXN0IGluc3RlYWQgb2YgdGhlIGZ1dHVyZSwgCmFuZCBiZSBpbiBmYWN0IHRoZSByZWZsZWN0aW9uIG9mIHNjZW5lcyBmcm9tIHRoZSBpa2lzaGljIApyZWNvcmRzIOKAlCB0aG91Z2ggaGVyZSBhZ2FpbiB0aGUgcmVhc29uIGFuZCBtZXRob2Qgb2YgCnN1Y2ggcmVmbGVjdGlvbiBpcyBub3Qgb2J2aW91cy4gCgpUaGVyZSBhcmUgcGxlbnR5IG9mIHRyaWJlcyBvZiBuYXR1cmUtc3Bpcml0cyBwZXJmZWN0bHkgCmNhcGFibGUsIGlmIGZvciBhbnkgcmVhc29uIHRoZXkgd2lzaGVkIHRvIGRvIHNvLCBvZiAKcHJvZHVjaW5nIHN1Y2ggYXBwZWFyYW5jZXMgYnkgdGhlaXIgd29uZGVyZnVsIHBvd2VyIApvZiBnbGFtb3VyIChzZWUgVGhlb3NvcGhpY2FsIE1hbnVhbCAsIE5vLiBWLiwgcC4gNjApLCAKYW5kIHN1Y2ggYWN0aW9uIHdvdWxkIGJlIHF1aXRlIGluIGtlZXBpbmcgd2l0aCB0aGVpciAKZGVsaWdodCBpbiBteXN0aWZ5aW5nIGFuZCByaW1wcmVeaWFnIGh1bWFuIGJlaW5ncy4gCgpPciBpdCBtYXkgZXZlbiBzb21ldGltZXMgYmUga2luZGx5IGludGVuZGVkIGJ5IAp0aGVtIGFzIGEgd2FybmluZyB0byB0aGVpciBmcmllbmRzIG9mIGV2ZW50cyB0aGF0IHRoZXkgCmtub3cgdG8gYmUgYWJvdXQgdG8gdGFrZSBwbGFjZS4gSXQgc2VlbXMgYXMgdGhvdWdoIApzb21lIGV4cGxhbmF0aW9uIGFsb25nIHRoZXNlIGxpbmVzIHdvdWxkIGJlIHRoZSBtb3N0IApyZWFzb25hYmxlIG1ldGhvZCBvZiBhY2NvdW50aW5nIGZvciB0aGUgZXh0cmFvcmRpbmFyeSAqIApzZXJpZXMgb2YgcGhlbm9tZW5hIGRlc2NyaWJlZCBieSBNaXNzIE1hcnRpbmVhdSDigJQgCnRoYXQgaXMsIGlmIHRoZSBzdG9yaWVzIHRvbGQgdG8gaGVyIGNhbiBiZSByZWxpZWQgdXBvbi4gCgpBbm90aGVyIHBvc3NpYmlsaXR5IGlzIHRoYXQgaW4gc29tZSBjYXNlcyB3aGF0IGhhdmUgCmJlZW4gdGFrZW4gZm9yIHNvbGRpZXJzIHdlcmUgc2ltcGx5IHRoZSBuYXR1cmUtc3Bpcml0cyAKdGhlbXNlbHZlcyBnb2luZyB0aHJvdWdoIHNvbWUgb2YgdGhlIG9yZGVyZWQgZXZvbHUtIAp0aW9ucyBpbiB3aGljaCB0aGV5IHRha2Ugc28gbXVjaCBkZWxpZ2h0LCB0aG91Z2ggaXQgCm11c3QgYmUgYWRtaXR0ZWQgdGhhdCB0aGVzZSBhcmUgcmFyZWx5IG9mIGEgY2hhcmFjdGVyIAp3aGljaCBjb3VsZCBiZSBtaXN0YWtlbiBmb3IgbWlsaXRhcnkgbWFub2V1dnJlcyAKZXhjZXB0IGJ5IHRoZSBtb3N0IGlnbm9yYW50LiBeIAoKVGhlIGZsb2NrcyBvZiBhbmltYWxzIGFyZSBwcm9iYWJseSBpbiBtb3N0IGluc3RhbmNlcyAKbWVyZSByZWNvcmRzLCBidXQgdGhlcmUgYXJlIGNhc2VzIHdoZXJlIHRoZXksIGxpa2UgdGhlIArigJwgd2lsZCBodW50c21lbiDigJ0gb2YgR2VybWFuIHN0b3J5LCBiZWxvbmcgdG8gYW4gZW4tIAp0aXJlbHkgZGlmZmVyZW50IGNsYXNzIG9mIHBoZW5vbWVuYSwgd2hpY2ggaXMgYWx0b2dldGhlciAKCgpCQVRUTEUgR0hPU1RTIAoKCjE2MSAKCm91dHNpZGUgb2Ygb3VyIHByZXNlbnQgc3ViamVjdC4gU3R1ZGVudHMgb2YgdGhlIG9jY3VsdCAKd2lsbCBiZSBmYW1pbGlhciB3aXRoIHRoZSBmYWN0IHRoYXQgdGhlIGNpcmN1bXN0YW5jZXMgCnN1cnJvdW5kaW5nIGFueSBzY2VuZSBvZiBpbnRlbnNlIHRlcnJvciBvciBwYXNzaW9uLCAKc3VjaCBhcyBhbiBleGNlcHRpb25hbGx5IGhvcnJpYmxlIG11cmRlciwgYXJlIGxpYWJsZSB0byAKYmUgb2NjYXNpb25hbGx5IHJlcHJvZHVjZWQgaW4gYSBmb3JtIHdoaWNoIGl0IG5lZWRzIGEgCnZlcnkgc2xpZ2h0IGRldmVsb3BtZW50IG9mIHBzeWNoaWMgZmFjdWx0eSB0byBiZSBhYmxlIAp0byBzZWU7IGFuZCBpdCBoYXMgc29tZXRpbWVzIGhhcHBlbmVkIHRoYXQgdmFyaW91cyAKYW5pbWFscyBmb3JtZWQgcGFydCBvZiBzdWNoIHN1cnJvdW5kaW5ncywgYW5kIGNvbnNlLSAKcXVlbnRseSB0aGV5IGFsc28gYXJlIHBlcmlvZGljYWxseSByZXByb2R1Y2VkIGJ5IHRoZSAKYWN0aW9uIG9mIHRoZSBndWlsdHkgY29uc2NpZW5jZSBvZiB0aGUgbXVyZGVyZXIgKHNlZSAKTWFudWFsIFYuLCBwLiA4MykuIAoK4oCiIFByb2JhYmx5IHdoYXRldmVyIGZvdW5kYXRpb24gb2YgZmFjdCB1bmRlcmxpZXMgdGhlIAp2YXJpb3VzIHN0b3JpZXMgb2Ygc3BlY3RyYWwgaG9yc2VtZW4gYW5kIGh1bnRpbmctdHJvb3BzIApwaWF5IGdlbmVyYWxseSBiZSByZWZlcnJlZCB0byB0aGlzIGNhdGVnb3J5LiBUaGlzIGlzIAphbHNvIHRoZSBleHBsYW5hdGlvbiwgZXZpZGVudGx5LCBvZiBzb21lIG9mIHRoZSB2aXNpb25zIApvZiBnaG9zdGx5IGFybWllcywgc3VjaCBhcyB0aGF0IHJlbWFya2FibGUgcmUtZW5hY3QtIAptZW50IG9mIHRoZSBiYXR0bGUgb2YgRWRnZWhpbGwgd2hpY2ggc2VlbXMgdG8gaGF2ZSAKdGFrZW4gcGxhY2UgYXQgaW50ZXJ2YWxzIGZvciBzb21lIG1vbnRocyBhZnRlciB0aGUgCmRhdGUgb2YgdGhlIHJlYWwgc3RydWdnbGUsIGFzIHRlc3RpZmllZCBieSBhIGp1c3RpY2Ugb2YgCnRoZSBwZWFjZSwgYSBjbGVyZ3ltYW4sIGFuZCBvdGhlciBleWUtd2l0bmVzc2VzLCBpbiBhIApjdXJpb3VzIGNvbnRlbXBvcmFyeSBwYW1waGxldCBlbnRpdGxlZCBQcm9kaWdpb3VzIApOb2lzZXMgb2YgV2FyIGFuZCBCYXR0bGUgLCBhdCBFZGdlaGlsbCAsIG5lYXIgS2VpbnRvbiAsIGluIApOb3J0aGFtcHRvbnNoaXJlLiBBY2NvcmRpbmcgdG8gdGhlIHBhbXBobGV0IHRoaXMgCmNhc2Ugd2FzIGludmVzdGlnYXRlZCBhdCB0aGUgdGltZSBieSBzb21lIG9mZmljZXJzIG9mIAp0U2UgYXJteSwgd2hvIGNsZWFybHkgcmVjb2duaXplZCBtYW55IG9mIHRoZSBwaGFudG9tIApmaWd1cmVzIHRoYXQgdGhleSBzYXcuIFRoaXMgbG9va3MgZGVjaWRlZGx5IGxpa2UgYW4gCmluc3RhbmNlIG9mIHRoZSB0ZXJyaWJsZSBwb3dlciBvZiBtYW4ncyB1bnJlc3RyYWluZWQgCnBhc3Npb25zIHRvIHJlcHJvZHVjZSB0aGVtc2VsdmVzLCBhbmQgdG8gY2F1c2UgaW4gCgoKQ0xBSVJWT1lBTkNFIAoKCjE2MiAKCnNvbWUgc3RyYW5nZSB3YXkgYSBraW5kIG9mIG1hdGVyaWFsaXphdGlvbiBvZiB0aGVpciAKcmVjb3JkLiAKCkluIHNvbWUgY2FzZXMgaXQgaXMgY2xlYXIgdGhhdCB0aGUgZmxvY2tzIG9mIGpMamFqakImSnMgCnNlZW4gaGF2ZSBiZWVuIHNpbXBseSBob3JkZXMgb2YgdW5jbGVhbiBhcnRpZmljaWFsIGVsZS0gCm1lbnRhbHMgdGFraW5nIHRoYXQgZm9ybSBpbiBvcmRlciB0byBmZWVkIHVwb24gdGhlIApsb2F0aHNvbWUgZW1hbmF0aW9ucyBvZiBwZWN1bGlhcmx5IGhvcnJpYmxlIHBsYWNlcywgCnN1Y2ggYXMgd291bGQgYmUgdGhlIHNpdGUgb2YgYSBnYWxsb3dzLiBBbiBpbnN0YW5jZSBvZiAKdGhpcyBraW5kIGlzIGZ1cm5pc2hlZCBieSB0aGUgY2VsZWJyYXRlZCDigJwgR3liIEdob3N0cyzigJ0gCm9yIGdob3N0cyBvZiB0aGUgZ2liYmV0LCBkZXNjcmliZWQgaW4gTW9yZSBHbGltcHNlcyBvZiAKdGhlIFdvcmxkIFVuc2VlbiAsIHAuIDEwOSwgYXMgYmVpbmcgcmVwZWF0ZWRseSBzZWVuIGluIAp0aGUgZm9ybSBvZiBoZXJkcyBvZiBtaXMtc2hhcGVuIHN3aW5lLWxpa2UgY3JlYXR1cmVzLCAKcnVzaGluZywgcm9vdGluZyBhbmQgZmlnaHRpbmcgbmlnaHQgYWZ0ZXIgbmlnaHQgb24gdGhlbiAKc2l0ZSBvZiB0aGF0IGZvdWwgbW9udW1lbnQgb2YgY3JpbWUuIEJ1dCB0aGVzZSBiZWxvbmcgCnRvIHRoZSBzdWJqZWN0IG9mIGFwcGFyaXRpb25zIHJhdGhlciB0aGFuIHRvIHRoYXQgb2YgCmNsYWlydm95YW5jZS4gciAKCgpDSEFQVEVSIElYLiAKCgpNZXRob2RzIG9mIERldmVsb3BtZW50LiAKCgpXaGVuIGEgbWFuIGJlY29tZXMgY29udmluY2VkIG9mIHRoZSByZWFsaXR5IG9mIAp0aGUgdmFsdWFibGUgcG93ZXIgb2YgY2xhaXJ2b3lhbmNlLCBoaXMgZmlyc3QgcXVlc3Rpb24gCnVzdWFsbHkgaXMsIOKAnCBIb3cgY2FeIAoKZmFwbGZvci4gd2hpY2ggXnNzXmpzbXNzXiDigJ0gCgpOb3cgdGhlIGZhY3QgaXMgdGhhdCB0aGVyZSBhcmUgbWFueSBtZXRob2RzIGJ5IAp3aGljaCBpdCBtYXkgYmUgZGV2ZWxvcGVkLCBidXQgb25seSBvbmUgd2hpY2ggY2FuIGJlIAphdCBhbGwgc2FmZWx5IHJlY29tbWVuZGVkIGZvciBnZW5lcmFsIHVzZSDigJQgdGhhdCBvZiAKd2hpY2ggd2Ugc2hhbGwgc3BlYWsgbGFzdCBvZiBhbGwuIEFtb25nSmZvc0peZ2Z0IAphZHZhbmNlZCBuYXRpb25zIG9mIHRoZSB3b3JsZF50aGUgXmxhbnJ5cGphdHR0Ll50YXRlIAp0ZV5ebl5wcnBhdWNlZCBfIGpuXyx5YXJpb2peIG9edGlvbmFKYWxeXndheXMgOyAKYW1vbmcgc29tZSBvZiB0aGUgbm9uLSBBcnlhbiB0cmliZXMgb2YgSW5kaWEsIGJ5IHRoZSAKCm9yIHRoZSBpbmhhbGluwqMgb2YgCgpmdW1lcyA7IGFtb25nIHRoZSBkZXJ2aXNoZXMsIGJ5IHdoaXJsaW5nLCBpbiBhIG1hZCAKImReY2Vfb2YgcmVsaWdpb3VzLCBmZXReZiB1bnRpaSJ2ZXJ0amdwX2FtZGpuc2VeaS0gClNpbHR5IHN1cGVydmVuZSA6IGFtb25nIHRoZSBmb2xsb3dlcnMgb2YgdGhlIGFib21Ubi0gCgpKanwgcmpMLS0u4oCYLX51VHIgJyBXIAoKYUJsZSBwcmFjdGljZXMgb2YgdGhlIFZvb2RvbyBjdWx0LCBieSBmcmlnaHRmdWwgc2FjcmlmaWNlcyAKYW5kIGxvYXRoc29tZSByaXRlcyBvZiBibGFjayBtYWdpYy4gTWV0aG9kcyBzdWNoIGFzIAoKCmxhcHB1eW5vdCBtIHZvZ3VlIGluIG91ciBvd24gcmFjZSwgeWV0IAoKZXZlbiBhbW9uZyB1cyBsYXJnZSBudW1iZXJzIG9mIGRhYmJsZXJzIGluIHRoaXMgCiogMTYzIAoKCmkgCgoKMTY0IAoKCkNMQUlSVk9ZQU5DRSAKCgphbmNpZW50IGFydCBhZG9wdCBzb21lIHBsYW4gb2Ygc2VsZi1oeXBub3RpemF0aW9uLCBzdWNoIAp8aXMgdGhlIGdhemluZyBhdCBhIGJyaWdodCBzcG90IG9yIHRoZSByZXBldGl0aW9uIG9mIApmc29tZSBmb3JtdWxhIHVudGlsIGEgY29uZGl0aW9uIG9mIHNlbWktc3R1cGVmYWN0aW9uIAoscHMgcHJvZHVjZWQgOyB3aGlsZSB5ZXQgYW5vdGhlciBzY2hvb2wgYW1vbmcgdGhlbSAKIidmd291bGQgZW5kZWF2b3VyIHRvIGFycml2ZSBhdCBzaW1pbGFyIHJlc3VsdHMgYnkgdGhlIApKdXNlIG9mIHNvbWUgb2YgdGhlIEluZGlhbiBzeXN0ZW1zIApmYnJlYXRoLiAKCuKWoCAnIEFsbCB0aGVzZSBtZXRob2RzIGFyZSB1bmVxdWl2b2NhbGx5IHRvIGJlIGNvbi0gCiwufGllbXJpZWQtJ2E/NV5eU2FmZSdTKXIgdGhlIHByYWN0aWNlIG1tZV5mU2luYXJ5IApmdG5hbiB3aG8gaGFzIG5vIGlkZWggJ2dmJ1doYWwgbmUgaXMuIGRvaW5nIOKAlCB3aG8gaXMgCklqc2ltcGx5IG1ha2luZyB2YWd1ZSBleHBlcmltZW50cyBpbiBhbiB1bmtub3duIAp3b3JsZC4gLTpFJCRw4oCYIHRoZSBtZXRob2Qgb2Ygb2J0YWluaW5nIGNsYWlydm95YW5jZSAjIApieSBhbGxvd2luZyBvbmVzZWxmIHRvIGJlIG1lc21lcml6ZWQgYnkgYW5vdGhlciAKcGVyc29uIGlzIG9uZSBmcm9tIHdoaWNoIEkgc2hvdWxkIG15c2VsZiBzaHJpbmsgd2l0aCAKdGhlIG1vc3QgZGVjaWRlZCBkaXN0YXN0ZSA7IGFuZCBhc3N1cmVkbHkgaXQgc2hvdWxkIApuZXZlciBiZSBhdHRlbXB0ZWQgZXhjZXB0IHVuZGVyIGNvbmRpdGlvbnMgb2YgYWJzby0gCgp8IGx1dGUgdHJ1c3QgYW5kIGFmZmVjdGlvbiBiZXR3ZWVuIHRoZSBtYWptZXRpemVyIGFuZCAKCmYg4pagIOKAmCDilqAg4pagIOKAmCDigJgg4oCiIOKAoiAKCkkgbWUgbWFnbmV0aXplZCAKCnNvdWxeaW4gbWluZCAKCnIgYmUgc2VlbiBhbW9uZyBhbnkgYnV0IHRoZSBncmVhdGVzdCBvZiBzYWludHMsIAoKKEV4cGVyaW1lbnRzIGluIGNvbm5lY3Rpb24gd2l0aCB0aGUgbWVzbWVyaWMgCnRyYW5jZSBhcmUgb2YgdGhlIGRlZXBlc3QgaW50ZXJlc3QsIGFzIG9mZmVyaW5nXmFtT1RnIApvdGhlciB0aGluZ3MpIGEgcG9zc2liaWxpdHkgb2YgcHJvb2Ygb2YgdGhlIGZhY3Qgb2YgCl5jbGFpcnZveWFuY2UgdG8gdGhlIHNjZXB0aWMsIHlldCBleGNlcHQgdW5kZXIgc3VjaCAKY29uZGl0aW9ucyBhwqcgSSBoYXZlIGp1c3QgbWVudGlvbmVkIOKAlCBjb25kaXRpb25zLCBUIApxdWl0ZSBhZG1pdCwgYWxtb3N0IGltcG9zc2libGUgdG8gcmVhbGl6ZSDigJQgSSBzaG91bGQgCm5ldmVyIGNvdW5zZWwgYW55b25lIHRvIHN1Ym1pdCBoaW1zZWxmIGFzIGEgc3ViamVjdCAKZm9yIHRoZW0uIAoKCuKAoiBcIAoKCkNVUkFUSVZFIE1FU01FUklTTSAKCgoxNjUgCgoKQ3VyYXRpdmUgbWVzbWVyaXNtIChpbiB3aGljaCwgd2l0aG91dCBjdXR0aW5nLSB0aGUgCgpyIFMgCgpwYXRpZW50IGludG8gdGhlIHRyYW5jZSBzdGF0ZSBhdCBhbGwsIGFuIGVmZm9ydCBpcyBtYWRlIAp0byByZWxpZXZlIGhpcyBwYWluLCB0byByZW1vdmUgaGlzIGRpc2Vhc2UsIG9yIHRvIHBvdXIgCgp2aXRhbGl0eSBpbnRvXmhpbSBieSwsIG1hZ25ldGljXmFzc2deKSBzdGFuZHMgb24gYW4gCgplbnRpcmVseSBkaWZmZXJlbnQgZm9vdGluZyA7IGFuZCBpZiB0aGUgbWVzbWVyaXplciwgZXZlbiAKdGhvdWdoIHF1aXRlIHVudHJhaW5lZCwgaXMgaGltc2VsZiBpbiBnb29kIGhlYWx0aCBhbiogCmFuaW1hdGVkIGJ5IHB1cmUgaW50ZW50aW9ucywgbm8gaGFybSBpcyBsaWtlbHkgdG8gYiAKZG9uZSB0byB0aGUgc3ViamVjdC4gSW4gc28gZXh0cmVtZSBhIGNhc2UgYXMgdGhhdCBvZiAKYSBzdXJnaWNhbCBvcGVyYXRpb24sIGEgbWFuIG1pZ2h0IHJlYXNvbmFibHkgc3VibWl0IApoaW1zZWxmIGV2ZW4gdG8gdGhlIG1lc21lcmljIHRyYW5jZSwgYnV0IGl0IGlzIGNlcnRhaW5seSAKbm90IGEgY29uZGl0aW9uIHdpdGggd2hpY2ggb25lIG91Z2h0IGxpZ2h0bHkgdG8gZXgtIApwZXJpbWVudC4gSW5kZWVkLCBJIHNob3VsZCBtb3N0IHN0cm9uZ2x5IGFkdmlzZSBhbnkgCm9uZSB3aG8gZGlkIG1lIHRoZSBob25vdXIgdG8gYXNrIGZvciBteSBvcGluaW9uIG9uIAp0aGUgc3ViamVjdCwgbm90IHRvIGF0dGVtcHQgYW55IGtpbmQgb2YgZXhwZXJpbWVudGFsIAppbnZlc3RpZ2F0aW9uIGludG8gd2hhdCBhcmUgc3RpbGwgdG8gaGltIHRoZSBhYm5vcm1hbCAKZm9yY2VzIG9mIG5hdHVyZSwgdW50aWwgaGUgaGFzIGZpcnN0IG9mIGFsbCByZWFkIGNhcmVmdWxseSAKZXZlcnl0aGluZyB0aGF0IGhhcyBiZWVuIHdyaXR0ZW4gb24gdGhlIHN1YmplY3QsIG9yfip+IAp3bGZsY2ggaXMgYnkgZmFyIHRoZSBiZXN0IG9mIGFsbCDigJQgdW50aWwgaGUgaXMgdW5kZXIgdGhlIAoKQnV0IHdoZXJlLCBpdCB3aWxsIGJlIHNhaWQsIGlzIHRoZSBxdWFsaWZpZWQgdGVhY2hlciAKdG8gYmUgZm91bmQgPyBOb3QsIG1vc3QgYXNzdXJlZGx5LCBhbW9uZyBhbnkgd2hvIAphZHZlcnRpc2UgdGhlbXNlbHZlcyBhcyB0ZWFjaGVycywgd2hvIG9mZmVyIHRvIGltcGFydCAKZm9yIHNvIG1hbnkgZ3VpbmVhcyBvciBkb2xsYXJzIHRoZSBzYWNyZWQgbXlzdGVyaWVzIG9mIApedGhlIGFnZXMsIG9yIGhvbGQg4oCcIGRldmVsb3BpbmcgY2lyY2xlcyDigJ0gdG8gd2hpY2ggY2FzdWFsIAphcHBsaWNhbnRzIGFyZSBhZG1pdHRlZCBhdCBzbyBtdWNoIHBldCBoZWFkLiAKCk11Y2ggaGFzIGJlZW4gc2FpZCBpbiB0aGlzIHRyZWF0aXNlIG9mIHRoZSAKCnRoZSBpbW1lbnNlIGFkdmFudGFnZXMgb2YgCnRoZWx0cmFpbmVjbCBvdmVyIHRoZSB1bnRyYWluZWQgY2xhaXJ2b3lhbnQ7IGJ1dCB0aGF0ISAKCgrilqByTS0nOyAKCgoxIDY2IAoKCkNMQUlSVk9ZQU5DRSAKCgphZ2FpbiBicmluZ3MgdXMgYmFjayB0byB0aGUgc2FtZSBxdWVzdGlvbiDigJQgd2hlcmUgaXMgCnRoaXMgZGVmaW5pdGUgdHJhaW5pbmcgdG8gYmUgaGFkID8gCgpeVGhlIGFuc3dlciBpcywgdGhhdCB0aGUgdHJhaW5pbmcgbWF5IGJlIGhhZCAKcHJlY2lzZWxqcndoZXJlIGl0IGhhcyBhbHdheXMgYmVlbiB0byBiZSBmb3VuZCBzaW5jZSAKfGhlIHdvcmxkJ3MgaGlzdG9yeSBiZWdhbiDigJQgYXQgdGhlIGhhbmRzIG9mIFRoZSBHcmVhdCAKV2hpdGUgQnJvdGhlcmhvb2Qgb2YgQWRlcHRzLCB3aGljaCBzdGFuZHMgbm93LiBhcyAKCiwgaW4gbXUgLWkgfF0tfC0nLWkgcm5qdWZpaWkgSSA8aSA+IExsbCA+IHVmamNuaXIiXi0gInd1dnZ0aXLigJlpIHcuLXIgCgpsbGZuYXMgYWx3YXlzIC5zdG9vZCwgYXRqZHRhamJeXiBldm9sdXRpb24sIAoKU2FuZCBoZWxwaW5nIGl0IHVuZGVyIHRoZSBzd2F5IG9mIHRoZSBncmVhdCAKbGF3PyBeXWNi4oCecmUsRXJlc2VudF50b151IAoKLiAKCkJ1dCBob3csIGl0IG1heSBiZSBhc2tlZCwgaXMgYWNjZXNzIHRvIGJlIGdhaW5lZCB0byAKdGhlbT8gSG93LiBpcyB0aGUgYXNwaXJhbnQgdGhpcnN0aW5nIGZvciBrbm93bGVkZ2UgCnRvIHNpZ25pZnkgdG8gdGhlbSBoaXMgd2lzaCBmb3IgaW5zdHJ1Y3Rpb24gPyAKCk9uY2UgbW9yZSwgYnkgdGhlIHRpbWUtaG9ub3VyZWQgbWV0aG9kcyBvbmx5LiAKVGhlcmUgaXMgbm8gbmV3IHBhdGVudCB3aGVyZWJ5IGEgbWFuIGNhbiBxdWFsaWZ5IApoaW1zZWxmIHdpdGhvdXQgdHJvdUJsZiBUcCcgYmVjb21lIGEgcHVwaWwgaW4gdGhhdCAKCgotbm8gcm95YWwgcm9hXmxyXi5vW3wgCgoKd2hpY2ggaGFzIHRvIAoKClNjaG9vbC0gCgpiZSBhY3F1aXJlZCBpbiBpdCBBdCB0aGUgcHJlc2VudCBkYXksIGp1c3QgYXMgaW4gdGhlIAptaXN0cyBvZiBhbnRpcXVpdHksIHRoZSBtYW4gd2hvIHdpc2hlcyB0byBhdHRyYWN0IHRoZWlyIAp8bm90aWNlIG11c3QgZW4sdGZ0ciAuwrthUUozSmhlIHNsb3cgYW5kIHRvaWxzb21lIHBhdGggb2YgCnNlbGYtZGV2ZWxvcG1lbnQg4oCUIG11c3QgbGVhcm4gZmlyc3Qgb2YgYWxsIHRvIFNjZSpTbS0gCgptIGlpaml0LSBtaWlyciBpUScgcmkqwrsqKioqKl4qXl4gCgpzZWxmIGluIGhhbmQgYW5kIG1ha2UgaGltc2VsZiBhbGwgdGhhdCBoZSBvdWdodCB0byBiZS4gClRoZSBzdGVwcyBvZiB0aGF0IHBhdGggYXJlIG5vIHNlY3JldCA7IEkgaGF2ZSBnaXZlYSAKCgpJdGhlbSBpbiBmdWxsIGRldGFpbEpqTCogCgoKVCBTLVNvWGFzZWReb3ReIAoK4oCYZXBlYXQgdGhlbSBoZXJlLiBCdXQgaXQgaXMgbm8gZWFzeSByb2FkIHRvIGZvbGxvdywgCmFuZCB5ZXQgc29vbmVyIG9yIGxhdGVyIGFsbCBtdXN0IGZvbGxvdyBpdCwgZm9yIHRoZSBecnJlYXQgCmF3IG9mIGV2b2x1dGlvbiBzd2VlcHMgbWFua2luZCBzbG93bHZidXQgcmVzaXN0bGVzcyFeIAoKCkhPVyBURUFDSElORyBJUyBHQUlORUQgCgoKMTY3IAoKCkZyb20gdGhvc2Ugd2hvIGFyZSBwcmVzc2luZyBpbnRvIHRoaXMgcGF0aCB0aGUgCmdyZWF0IE1hc3RlcnMgc2VsZWN0IHRoZWlyIHB1cGlscywgYW5kIGl0IGlzIG9ubHkgYnkgCnF1YWxpZnlpbmcgaGltc2VsZiB0byBiZSB0YXVnaHQgdGhhdCBhIG1hbiBjYW4gcHV0IApoaW1zZWxmIGluIHRoZSB3YXkgb2YgZ2V0dGluZyB0aGUgdGVhY2hpbmcuIFdpdGhvdXQgCnRoYXQgcXVhbGlmaWNhdGlvbiwgbWVtYmVyc2hpcCBpbiBhbnkgTG9kZ2Ugb3IgClNvY2lldHksIHdoZXRoZXIgc2VjcmV0IG9yIG90aGVyd2lzZSwgd2lsbCBub3QgYWR2YW5jZSAKaGlzIG9iamVjdCBpbiB0aGUgc2xpZ2h0ZXN0IGRlZ3JlZS4gSXQgaXMgdHJ1ZSwgYXMgd2UgYWxsIAprbm93LCB0aGF0IGl0IHdhcyBhdCB0aGUgaW5zdGFuY2Ugb2Ygc29tZSBvZiB0aGVzZSAKTWFzdGVycyB0aGF0IG91ciBUaGVvc29waGljYWwgU29jaWV0eSB3YXMgZm91bmRlZCwgCmFuZCB0aGF0IGZyb20gaXRzIHJhbmtzIHNvbWUgaGF2ZSBiZWVuIGNob3NlbiB0byAKcGFzcyBpbnRvIGNsb3NlciByZWxhdGlvbnMgd2l0aCB0aGVtLiBCdXQgdGhhdCBjaG9pY2UgCmRlcGVuZHMgdXBvbiB0aGUgZWFybmVzdG5lc3Mgb2YgdGhlIGNhbmRpZGF0ZSwgbm90IAp1cG9uIGhpcyBtZXJlIG1lbWJlcnNoaXAgb2YgdGhlIFNvY2lldHkgb3Igb2YgYW55IApib2R5IHdpdGhpbiBpdC4gciAKClRoYXQsIHRoZW4sIGlzIHRoZSBvbmx5IGFic29sdXRlbHkgc2FmZSB3YXkgb2YgCmRldmVsb3BpbmcgY2xhaXJ2b3lhbmNl4oCUIHQqTCBlbnRlciB3aXRoIGFsbCBvbmUncyAKCmF0wqtvbmUgc3RhZ2Ugb2Ygd2hpY2ggdGhpcyBhbmQgb3RoZXIgb2YgdGhlIGhpZ2hlciAKZmFjdWx0aWVzIHdpbGwgc3BvbnRhbmVvdXNseSBiZWdpbiB0byBzaG93IHRoZW1zZWx2ZXMuIApZZXQgdGhlcmUgaXMgb25lIHByYWN0aWNlIHdoaWNoIGlzIGFkdmlzZWQgYnkgYWxsIHRoZSwgCnJlbGlnaW9ucyBhbGlrZSDigJQgd2hpY2ggaWYgYWRvcHRlZCBjYXJlZnVsbHkgYW5kIHJlIAp2ZXJlbnRseSBjYW4gZG8gbm8gaGFybSB0byBhbnkgaHVtYW4gYmVpbmcsIApmcm9tIHdoaWNoIGEgdmVyeSBwdXJlIHR5cGUgb2YgY2xhaXJ2b3lhbmNlIApzb21ldGltZXMgYmVlbiBkZXZlbG9wZWQ7IGFuZCAKCgp2IAoKCkxldCBhIG1hbiBjaG9vc2UgYSBjZXJ0YWluIHRpbWUgZXZlcnkgZGF5IOKAlCBhIHRpbWUgCndoZW4gaGUgY2FuIHJlbHkgdXBvbiBiZWluZyBxdWlldCBhbmQgdW5kaXN0dXJiZWQsIAoKCnRob3VnaCAKCgrCpyAKCgoxIDY4IAoKCkNMQUlSVk9ZQU5DRSAKCgotYW5kIHNldCBoaW1zZWxmIGF0IHRoYXQgdGltZSB0byBrZWVwIGhpcyBtaW5kIGZvciBhIApmcmVlIGZyb20gYWxsIGVhcnRsXSAKCldXIAoKCnRldyBtaW51dGVzIGVudGlyZWx5IHRyZWUgdHJvbSBhbGwgZWFydG14LnJ0TVVeSHRzIG9mIApsYW55IGtpbmQgd2hhdGV2ZXIgYW5kLCB3aGVuIHRoYXQgaXMgYWNoaWV2ZWQsIHRvIGRpcmVjdCAKCmxpZ2hlc3QgCndpbGwgCgoKfCplasKjwqMywqNKU0VeXiAKCklzcGlyaXR1YWwgaWRlYWwgdGhhdCBoZSBoYXBwZW5zIHRvIGtub3cuIEhlIAoKCiEgZmluZHRoYXQgdG8gZ2FtIHN1Y2ggcGVyZmVjdCBjb250cm9sIG9mIHRob3VnaHQgaXMgCkkgZW5vcm1vdXNseSBtb3JlIGRpZmZpY3VsdCB0aGFuIGhlIHN1cHBvc2VzLCBidXQgCkkgd2hlbiBoZSBhdHRhaW5zIGl0IGl0IGNhbm5vdCBidXQgYmUgaW4gZXZlcnkgd2F5IG1vc3QgCltiZW5lZmljaWFsIHRvIGhpbSwgYW5kIGFzIGhlIGdyb3dzIG1vcmUgYW5kIG1vcmUgCgpiYmllIGheeSAKCnJncmFkdWFsbHkgZmleZCB0aGF0IG5ldyB3b3JsZHMgYXJlIG9wZW5pbmcgYmVmb3JlIGhpcyAKSXNpZ2h0LiAKCkFzIGEgcHJlXmlual5ecnkgdHJhaW5pbmcgdG93YXJkcyB0aGUgc2F0aXNmYWN0b3J5IAphY2hpZXZlbWVudCBvZiBzdWNmaSBtZWRpdGF0aW9uLCBoZSB3aWxsIGZpbmQgaXQgZGVzaXItIAphYmxlIHRvIG1ha2UgYSBwcmFjdGljZSBvZl5ebWNtdHJeXmleZ150aGUgYWZmYWlycy4gCm9mIF5kZ2xqeSBsaWZlIOKAlCBldmVuIGluIHRoZSBzbWFsbGVzdCBvZiB0aGVtLiBJZiBoZSAKd3JpdGVzIGEgbGV0dGVyLCBsZXQgaGltIHRoaW5rIG9mIG5vdGhpbmcgZWxzZSBidXQgdGhhdCAKbGV0dGVyIHVudGlsIGl0IGlzIGZpbmlzaGVkIDsgaWYgaGUgcmVhZHMgYSBib29rLCBsZXQgTW0gCnNlZSB0byBpdCB0aGF0IGhpcyB0aG91Z2h0IGlzIG5ldmVyIGFsbG93ZWQgdG8gd2FwZGVyIAoK4pagIF4uciwgeSwsLi4gPiBWICojICfigJknV1cqKiAqIC7igKIqJyonKiDigJkqIOKWoFfigJhKZiAqIAoKZnJvbSBoaXMgYXV0aG9yJ3MgbWVhbmluZy4gSGUgbXVzdCBsZV5ybiB0byBob2xkIApoaXNeXl5kXl5eXkpjLCBhbmQgdG8gYmUgbWFzdGVyIG9mIHRoYXQgYWxzbywgYXMgCnJhZmFzIG9mIGhpcyBsb3dlciBwYXNzaW9ucyA7IGhlIG11c3QgcGF0aWVudGx5IGxhYm91ciAKdG8gYWNxdWlyZSB0aG91Z2h0cywgc28gdGhhdCBoZSAKCndpbGwgYWx3YXlzIGtub3cgZXhhY3RseSB3aGF0IGhlIGlzIHRoaW5raW5nIGFib3V0LCAKO2FuZCB3aHkg4oCUIHNvIHRoYXQgaGUgY2FuIHVzZSBoaXMgbWluZCwgYW5kIHR1cm4gaXQgCnwgb3IgaG9sZCBpdCBzdGlsbCwgYXMgYSBwcmFjdGlzZWQgc3dvcmRzbWFuIHR1cm5zIGhpcyAKaSB3ZWFwb24gd2hlcmUgaGUgd2lsbC4gCgp3IFlldCBhZnRlciBhbGwsIGlmIHRob3NlIHdobyBzbyBlYXJuZXN0bHkgZGVzaXJlIGNsYWlyLSAKCgpUSEUgU0FETkVTUyBPRiBJVCAKCgoxNjkgCgoKdm95YW5jZSBjb3VsZCBwb3NzZXNzIGl0IHRlbXBvcmFyaWx5IGZvciBhIGRheSBvciBldmVuIAphbiBob3VyLCBpdCBpcyBmYXIgZnJvbSBjZXJ0YWluIHRoYXQgdGhleSB3b3VsZCBjaG9vc2UgCnRvIHJldGFpbiB0aGUgZ2lmdC4gVHJ1ZSwgaXQgb3BlbnMgYmVmb3JlIHRoZW0gbmV3aiAKd29ybGRzIG9mIHN0dWR5LCBuZXcgcG93ZXJzIG9mIHVzZWZ1bG5lc3MsIGFuZCBmb3IgdGhpICMgCmxhdHRlciByZWFzb24gbW9zdCBvZiB1cyBmZWVsIGl0IHdvcnRoIHdoaWxlIDsgSmJ1dCBpZiAKCnVubWleZXEgYmxlc3NtZS4gVXBvbiBvbmUgbSB3aG9tIHRoYXQgdmlzaW9uIGlzKiAKb3BlbmVkIHRoZSBzb3Jyb3cgYW5kIHRoZSBtaXNlcnksIHRoZSBldmlsIGFuZCB0aGUgCmdyZWVkIG9mIHRoZSB3b3JsZCBwcmVzcyBhcyBhbiBldmVyLXByZXNlbnQgYnVyZGVuLCAKdW50aWwgaW4gdGhlIGVhcmxpZXIgZGF5cyBvZiBoaXMga25vd2xlZGdlIGhlIG9mdGVuIApmZWVscyBpbmNsaW5lZCB0byBlY2hvIHRoZSBwYXNzaW9uYXRlIGFkanVyYXRpb24gY29uLSAKdGFpbmVkIGluIHRob3Nlcm9sbGleaXJec15eXnMgOiAKCkRpZW4gT3Jha2VsIHp1IHZlcmt0aW5kZW4sIHdhcnVtIHdhcmZlc3QgZHUgbWljaCBoaW4gWCAKCkluIGRpZSBTdGFkdCBkZXIgZXdpZyBCbGluZGVuLCBtaXQgZGVtIGF1Zmdlc2NobG9zc+KAmW5lbiBeIApTaW5uID8gCgpGcm9tbXTigJlzLCBkZW4gU2NobGVpZXIgYXVmenVoZWJlbiwgd28gZGFzIG5haGUgU2NocmVja25pc3MgCmRyb2h0ID8gCgpOZnIgZGVyIElycnRodXJuIGlzdCBkYXMgTGViZW4gOyBkaWVzZXMgV2lzc2VuIGlzdCBkZXIgVG9kLiAKCk5pbW0sIE8gbmltbSBkaWUgdHJhdXLigJlnZSBLbGFyaGVpdCBtaXIgdm9tIEF1Z+KAmSBkZW4gYmx1dOKAmWdlbiAKU2NoZWluIEkgCgpTY2hyZWNrbGljaCBpc3QgZXMgZGVpbmVyIFdhaHJoZWl0IHN0ZXJibGljaGVzIEdlZmFzcyB6dSAKc2V5biAhIAoKd2hpY2ggbWF5IHBlcmhhcHMgYmUgdHJhbnNsYXRlZCDigJwgV2h5IGhhc3QgdGhvIApjYXN0IG1lIHRodXMgaW50byB0aGUgdG93biBvZiB0aGUgZXZlci1ibGluZCwgdG8gcHJvLSAKY2xhaW0gdGhpbmUgb3JhY2xlIGJ5IHRoZSBvcGVuZWQgc2Vuc2UgPyBXaGF0IHByb2ZpdHMgSSAKaXQgdG8gbGlmdCB0aGUgdmVpbCB3aGVyZSB0aGUgbmVhciBkYXJrbmVzcyB0aHJlYXRlbnMgPyAKT25seSBpZ25vcmFuY2UgaXMgbGlmZSA6IHRoaXMga25vd2xlZGdlIGlzIGRlYXRoLiBUYWtlIDQgCmJhY0Z0aGlzIHNhZCBjbGVhci1zaWdodGVkbmVzcyA7IHRha2UgZnJvbSBtaW5lIGV5ZXMgCnRoaXMgY3J1ZWwgbGlnaHQhIEl0IGlzIGhvcnJpYmxlIHRvIGJlIHRoZSBtb3J0YWwjIAoKCjE3MCAKCgpDTEFJUlZPWUFOQ0UgCgoKY2hhbm5lbCBvZiB0aHkgdHJ1dGgu4oCdIEFuZCBhZ2FpbiBsYXRlciBoZSBjcmllcywgCuKAnCBHaXZlIG1lIGJhY2sgbXkgYmxpbmRuZXNzLCB0aGUgaGFwcHkgZGFya25lc3Mgb2YgCm15IHNlbnNlcyA7IHRha2UgYmFjayB0aHkgZHJlYWRmdWwgZ2lmdCAhIOKAnSAKCkJ1dCB0aGlzIG9mIGNvdXJzZSBpcyBhIGZlZWxpbmcgd2hpY2ggcGFzc2VzLCBmb3IgdGhlIApoaWdoZXIgc2lnaHQgc29vbiBzaG93cyB0aGUgcHVwaWwgc29tZXRoaW5nIGJleW9uZCAKdGhlIHNvcnJvdyDigJQgc29vbiBiZWFycyBpbiAqIHVwb24gaGlzIHNvdWwgdGhlIG92ZXItIAp3aGVsbWluZyBjZXJ0YWludHkgdGhhdCwgd2hhdGV2ZXIgYXBwZWFyYW5jZXMgZG93biAKaGVyZSBtYXkgc2VlbSB0byBpbmRpY2F0ZSwgYWxsIHRoaW5ncyBhcmUgd2l0aG91dCAKc2hhZG93IG9mIGRvdWJ0IHdvcmtpbmcgdG9nZXRoZXIgCgoKSm9vZG9mYW5yIAoKCkhlIHJlZmxlY3RzIHRoYXQgdGhlIHNpbiBhbmQgdGhlIHN1ZmZlcmluZyAKcmUnVElsZXJlLCB3aGV0aGVyIGhlIGlzIGFibGUgdG8gcGVyY2VpdmUgdGhlbSBvciBub3QsIAphbmQgdGhhdCB3aGVuIGhlIGNhbiBzZWUgdGhlbSBoZSBpcyBhZnRlciBhbGwgYmV0dGVyIAphYmxlIHRvIGdpdmUgZWZmaWNpZW50IGhlbHAgdGhhbiBoZSB3b3VsZCBiZSBpZiBoZSB3ZXJlIApXb3JraW5nIGluIHRoZSBkYXJrIDsgYW5kIHNvIGJ5IGRlZ3JlZXMgaGUgbGVhcm5zIHRvIApJZmJlYXIgaGlzIHNoYXJlIG9mIHRoZSBoZWF2eSBrYXJtYSBvZiB0aGUgd29ybGQuIAoKCiogCgoKU29tZSBtaXNndWlkZWQgbW9ydGFscyB0aGVyZSBhcmUgd2hvLCBoYXZpbmcgdGhlIApnb29kIGZvcnR1bmUgdG8gcG9zc2VzcyBzb21lIHNsaWdodCB0b3VjaCBvZiB0aGlzIApoaWdoZXIgcG93ZXIsIGFyZSBuZXZlcnRoZWxlc3Mgc28gYWJzb2x1dGVseSBkZXN0aXR1dGUgCm9mIGFsbCByaWdodCBmZWVsaW5nIGluIGNvbm5lY3Rpb24gd2l0aCBpdCBhcyB0byB1c2UgaXQgCgpeIGZvciB0aGUgbW9zdCBzb3JkaWQgZW5kcyDigJQgYWN0dWFsbHkgZXZlbiB0byBhZHZlcnRpc2UgCgpeXmZpaWVtc2VsdmVzIGFzIOKAnHRlc3QgYW5kIGJ1c2luZXNzIGNsYWlydm95YW50cyHigJ0gTmVlZC0gCl5wZXNzIHRvIHNheSwgc3VjaCB1c2Ugb2YgcnRpaWUgZmFjdWx0eSBpcyBhIG1lcmUgcHJvc3RpZnJpLSAKdGlvbiBhbmQgZGVncmFkYXRpb24gb2YgaXQsIHNob3dpbmcgdGhhdCBpdHMgdW5mb3J0dW5hdGUgCmFzc2Vzc29yIGhhcyBzb21laG93IGdvdCBob2xkIG9mIGl0IGJlZm9yZSB0aGUgbW9yYWwgCmlkZSBvZiBoaXMgbmF0dXJlIGhhcyBiZWVuIHN1ZmZpY2llbnRseSBkZXZlbG9wZWQgdG8qIAp0YW5kIHRoZSBzdHJhaW4gd2hpY2ggaXQgaW1wb3Nlcy4gQSBwZXJjZXB0aW9uIG9mIAp8XmhlIGFtb3VudCBvZiBldmlsIGthcm1hIHRoYXQgbWF5IGJlIGdlbmVyYXRlZCBieSAKL30gc3VjaCBhY3Rpb24gaW4gYSB2ZXJ5IHNob3J0IHRpbWUgY2hhbmdlcyBvbmXigJlzIGRpcy0gCgoKTC4gCgoKwqsqIAoKMGMgCgoKVEhFIFJFU1RSSUNUSU9OUyAKCgoxNzEgCgoKZ3VzdCBpbnRvIHBpdHkgZm9yIHRoZSB1bmhhcHB5IHBlcnBldHJhdG9yIG9mIHRoYXQgCnNhY3JpbGVnaW91cyBmb2xseS4gCgpJdCBpcyBzb21ldGltZXMgb2JqZWN0ZWQgdGhhdCB0aGUgcG9zc2Vzc2lvbiBvZmoxIApjbGFpcnZveWFuY2UgZGVzdHJveXMgYWxsIHByaXZhY3ksIGFuZCBjb25mZXJzIGEgbGltaXQtLCAKbGVzcyBhYmlsaXR5IHRvIGV4cGxvcmUgdGhlIHNlY3JldHMgb2Ygb3RoZXJzLiBObyBkb3VidGkgCml0IGRvZXMgY29uZmVyIHN1Y2ggYW4gYWJpbGl0eSAsIGJ1dCBuZXZlcnRoZWxlc3MgdGhlIAoKCi8+IMKrIAoKCnN1Z2dlc3Rpb24gaXMgYW4gYW11c2luZyBvbmUgdG8gYW55b25lIHdobyBrbm93cyAKYW55dGhpbmcgcHJhY3RpY2FsbHkgYWJvdXQgdGhlIG1hdHRlci4gU3VjaCBhbiBvYmplYy0gCnRpb24gbWF5IHBvc3NpYmx5IGJlIHdlbGwtZm91bmRlZCBhcyByZWdhcmRzIHRoZSB2ZXJ5IApsaW1pdGVkIHBvd2VycyBvZiB0aGUg4oCcIHRlc3QgYW5kIGJ1c2luZXNzIGNsYWlydm95YW50LOKAnSAKYnV0IHRoZSBtYW4gd2hvIGJyaW5ncyBpdCBmb3J3YXJkIGFnYWluc3QgdGhvc2Ugd2hvIArigJkgaGF2ZSBoYWQgdGhlIGZhY3VsdHkgb3BlbmVkIGZvciB0aGVtIGluIHRoZSBjb3Vyc2Ugb2YgCnRoZWlyIGluc3RydWN0aW9uLCBhbmQgY29uc2VxdWVudGx5IHBvc3Nlc3MgaXQgZnVsbHksIGlzIOKAmSAKCjogZmlyc3QsIHRoYXQgaXQgaXMgCgpxdWl0ZSBpbmNvbmNlaXZhYmxlIHRoYXQgYW55b25lLCBoYXZpbmcgYmVmb3JlIGhpbSAKdGhlIHNwbGVuZGlkIGZpZWxkcyBmb3IgaW52ZXN0aWdhdGlvbiB3aGljaCB0cnVlIGNsYWlyLSAKdm95YW5jZSBvcGVucyB1cCwgY291bGQgZXZlciB0aSBoYXlldGhlIHNsaWdodGVzdCB3aXNoIFwgCgo7IHNlY29uZGx5LCB0aGF0IGV2ZW4gaWYgYnkgc29tZSBpbXBvc3NpYmxlIGNoYW5jZSAKb3VyIGNsYWlydm95YW50IGhhZCBzdWNoIGluZGVjZW50IGN1cmlvc2l0eSBhYm91dCAKbWF0dGVycyBvZiBwZXR0eSBnb3NzaXAsIHRoZXJlIGlzLCBhZnRlciBhbGwsIHN1Y2ggYSB0aGluZyAKYXMgdGhlIGhvbm91ciBvZiBhIGdlbmRlZ21uLCB3aGljaCwgb24gdGhhdCBwbGFuZSBhcyAKb24gdGhpcywgd291bGQgb2YgY291cnNlIHByZXZlbnQgaGltIGZyb20gY29udGVtcGxhdGUgKiAKbWcgZm9yIGFuIGluc3RhbnQgdGhlIGlkZWEgb2YgZ3JhdGlmeWluZyBJdDsgYW5kIHRoaXJkbHksIGp8fHwgfCAKaW4gY2FzZSwgYnkgYW55IHVuaGVhcmQtb2YgcG9zc2liaWxpdHksIG9uZSBtaWdodCBlcC0gLSAKY291bnRlciBzb21lIHZhcmlldHkgb2YgbG93LWNsYXNzIHBpdHJpIHdpdGggd2hvbSB0aGUgCmFib3ZlIGNvbnNpZGVyYXRpb25zIHdvdWxkIGhhdmUgbm8gd2VpZ2h0LCBKZnRqSmwg4oCiIAppbnN0cnVjdGlvbnMgYXJlIGFsd2F5cyBnaXZlbiB0byBldmVyeSBwdXBpbCwgYXMgc29vbiAK4oCiIOKWoCAvViItIAoKCjEgCgoKMSBtIAoKCmlnaWxmaTstIDEuIOKWoCAmIAoKCjE3MiAKCgpDTEFJUlZPWUFOQ0UgCgoKYXMgaGUgZGV2ZWxvcHMgYW55IHNpZ24gb2YgZmFjdWx0eSwgYXMgdG8gdGhlIGxpbWl0YS0gCnRpb25zIHdoaWNoIGFyZSBwbGFjZWQgdXBvbiBqdMKnLiB1c2UuIAoKUHV0IGJyaWVmbHksIHRoZXNlIHJlc3RyaWN0aW9ucyBhcmUgdGhhdCB0aGVyZSBzaGFsbCBiZSAKClRoYXQgaXMgdG8gc2F5LCB0aGF0IHRoZSBzYW1lIGNvbi0gCnNpZGVyYXRpb25zIHdoaWNoIHdvdWxkIGdvdmVybiB0aGUgYWN0aW9ucyBvZiBhIG1hbiAKb2YgcmlnaHQgZmVlbGluZyB1cG9uIHRoZSBwaHlzaWNhbCBwbGFuZSBhcmUgZXhwZWN0ZWQgCnRvIGFwcGx5IHVwb24gdGhlIGFzdHJhbCBhbmQgbWVudGFsIHBsYW5lcyBhbHNvIDsgdGhhdCAKdGhlIHB1cGlsIGlzIG5ldmVyIHVuZGVyIGp8bnkgY2lyY3Vtc3RhbmNlcyB0byB1c2UgdGhlIApwb3dlciAid2hpY2giICdNcyBhZGRpdGlvbmFsIGtub3dsZWRnZSBnaXZlcyB0byBoaW0gaW4gCgpJXnJkZXIgdG8gcHJvbW90ZSBoaXMgb3duIHdvcmxkbHkgYWR2YW50YWdlLCBvciBqcV5nZSZkIAoxIGNvbm5lY3Rpb24gd2l0aCBnYWluIHdheSA7IGFuZCB0aGF0IGhlIGlzIAoKZXZlciB0byBnaXZlIHdoYXQgaXMgY2FsbGVkIGluIHNwaXJpdHVhbGlzdGljIGNpcmNsZXMg4oCcIGEgCnNzdCDigJ0g4oCUIHRoYXQgaXMsIHRvIGRvIGFueXRoaW5nIHdoaWNoIHdpbGwgaW5jb250ZXN0YWJseSAKcm92ZSB0byBzY2VwdGljcyBvbiB0aGUgcGh5c2ljYWwgcGxhbmUgdGhhdCBoZSBwb3NzZXNzZXMgCnx2aGF0IHRvIHRoZW0gd291bGQgYXBwZWFyIHRvIGJlIGFuIGFibm9ybWFsIHBvd2VyLiAKCldpdGggcmVnYXJkIHRvIHRoaXMgbGF0dGVyIHByb3Zpc28gcGVvcGxlIG9mdGVuIHNheSwgCnUgQnV0IHdoeSBzaG91bGQgaGUgbm90ID8gaXQgd291bGQgYmUgc28gZWFzeSB0byBjUm4tIApmdXRlIGFuZCBjb252aW5jZSB5b3VyIHNjZXB0aWMsIGFuZCBpdCB3b3VsZCBkbyBoaW0gCmdvb2QgISDigJ0gU3VjaCBjcml0aWNzIGxvc2Ugc2lnaHQgb2YgdGhlIGZhY3QgdGhhdCwgaW4gdGhlIAosIGZpcnN0IHBsYWNlLCBub25lIG9mIHRob3NlIHdobyBrbm93IGFueXRoaW5nIHdhbnQgdG8gCnxjb25mdXRlIG9yIGNvbnZpbmNlIHNjZXB0aWNzLCBvciB0cm91YmxlIHRoZW1zZWx2ZXMgaW4gCkl0aGUgc2xpZ2h0ZXN0IGRlZ3JlZSBhYm91dCB0aGUgc2NlcHRpYydzIGF0dGl0dWRlIG9uZSAKSWx3YXkgb3IgdGhlIG90aGVyOyBhbmQgaW4gdGhlIHNlY29uZCwgdGhleSBmYWlsIHRvIyAKXnVuZGVyc3RhbmQgaG93bXVjaCAuLi5iZXR0ZXIgaXQgamdqb3Jqamd0XnFlcHRpY2peOiAKCkl0aW9tb2YgdGhlIGZhY3RzIG9mIG5hdHVyZSwgaW5zdGVhZCBvZiBiZWluZyBzdWRkZW5seSAKYnkgYSBrbm9jay1kb3duIGJsb3csIGFzIGl0IAoKCk9USEVSIFBFT1BMRSBTIEFGRkFJUlMgMTczIAoKd2VyZS4gQnV0IHRoZSBzdWJqZWN0IHdhcyBmdWxseSBjb25zaWRlcmVkIG1hbnkgCnllYXJzIGFnbyBpbiBNci4gU2lubmV04oCZcyBPY2N1bHQgV29ybGQgXCBhbmQgaXQgaXMgCm5lZWRsZXNzIHRvIHJlcGVhdCBhZ2FpbiB0aGUgYXJndW1lbnRzIHRoZXJlIAphZGR1Y2VkLiAKCkl0IGlzIHZlcnkgaGFyZCBmb3Igc29tZSBvZiBvdXIgZnJpZW5kcyB0byByZWFsaXplOyAKdGhhdCB0aGUgc2lsbHkgZ29zc2lwIGFuZCBpZGxlIGN1cmlvc2l0eSB3aGljaCBzbyAKZW50aXJlbHkgZmlsbCB0aGUgbGl2ZXMgb2YgdGhlIGJyYWlubGVzcyBtYWpvcml0eSBvbiBlYXJ0aCAKY8KnamloYXZlbm8gcGxhY2UgaW4gdGhlIG1vcmUgCgphbmQgc28gdGhleSBzb21ldGltZXMgZW5xdWlyZSB3aGV0aGVyLCBldmVuIHdpdGhvdXQgCmFueSBzcGVjaWFsIHdpc2ggdG8gc2VlLCBhIGNsYWlydm95YW50IG1pZ2h0IG5vdCAKY2FzdWFsbHkgb2JzZXJ2ZSBzb21lIHNlY3JldCB3aGljaCBhbm90aGVyIHBlcnNvbiAKd2FzIHRyeWluZyB0byBrZWVwLCBpbiB0aGUgc2FtZSB3YXkgYXMgb25l4oCZcyBnbGFuY2UgCm1pZ2h0IGNhc3VhbGx5IGZhbGwgdXBvbiBhIHNlbnRlbmNlIGluIHNvbWVvbmUgZWxzZeKAmXMgCmxldHRlciB3aGljaCBoYXBwZW5lZCB0byBiZSBseWluZyBvcGVuIHVwb24gdGhlIAp0YWJsZS4gUWYgY291cnNlIOKAniBoZSAuIG1pXmh0LCBidXQgd2hhdCBpZiBoZSBkaWQ/IFRoZSAKbWFuIG9mIGhvbm91ciB3b3VUMyBhdCBvbmNlIGF2ZXJ0IGhpcyBleWVzLCBpbiBvbmUgCmNhc2UgYXMgaW4gdGhlIG90aGVyLCBhbmQgaXQgd291bGQgYmUgYXMgdGhvdWdoIGhlIGhhZCBqIApub3Qgc2Vlbi4gSWYgb2JqZWN0b3JzIGNvdWxkIGJ1dCBncmFzcCB0aGUgaWRlYSB0aGF0IApubyBudW9pbCBjYXJlcyBhYm91dCBvdGhlciBvZW9vbGXigJlzIGJ1c2luZXNzLCBleGNlb3QgCgoKd2hlbiBpdCBjb21lcyB3aXRoaW4gaGlzIHByb3ZpbmNlIHRvIHRyeSB0byBoZWxwIHRoZW0sIAphbmQgdGhhdCBoZSBoYXMgYWx3YXlzIGEgd29ybGQgb2Ygd29yayBvZiBoaXMgb3duIHRvIAphdHRlbmQgdG8sIHRoZXkgd291bGQgbm90IGJlIHNvIGhvcGVsZXNzbHkgZmFyIGZyb20gCnVuZGVyc3RhbmRpbmcgdGhlIGZhY3RzIG9mIHRoZSB3aWRlciBsaWZlIG9mIHRoZSB0cmFpbmVkIApjbGFpcnZveWFudCAqICogNyMgKiAKCkV2ZW4gZnJvbSB0aGUgbGl0dGxlIHRoYXQgSSBoYXZlIHNhaWQsIHdpdGggcmVnYXJkICd0by4gCnRoZSByZXN0cmljdGlvbnMgbGFpZCB1cG9uIHRoZSBwdXBpbCogaXQgd2lsbCBiZV4gb2J2aW91cycgCnRoYXQgaW4gdmVyeSBtYW55IGNhc2VzIGhlIHdpbGwga25vdyBtdWNoIG1vcmUgCgoKaGUgaXMgYXRpaWJlcnR2IHRvIHNhdi4gVGhhdCBtIG9mIGNvdXJzZSB0cnVlIG0gYSBmYXIgCgoKMTc0IAoKCkNMQUlSVk9ZQU5DRSAKCgp3aWRlciBzZW5zZSBvZiB0aGUgZ3JlYXQgTWFzdGVycyBvZiBXaXNkb20gdGhlbXNlbHZlcywgCmFuZCB0aGF0IGlzIHdoeSB0aG9zZSB3aG8gaGF2ZSB0aGUgcHJpdmlsZWdlIG9mIG9jY2EtIApzaW9uYWxseSBlbnRlcmluZyB0aGVpciBwcmVzZW5jZSBwYXkgc28gbXVjaCByZXNwZWN0IHRvLiAKdGhlaXIgbGlnaHRlc3Qgd29yZCBldmVuIG9uIHN1YmplY3RzIHF1aXRlIGFwYXJ0IGZyb20gCnRoZSBkaXJlY3QgdGVhY2hpbmcuIEZvciB0aGUgb3BpbmlvbiBvZiBhIE1hc3Rlciwgb3IgCmV2ZW4gb2Ygb25lIG9mIGhpcyBoaWdoZXIgcHVwaWxzLCB1cG9uIGFueSBzdWJqZWN0IGlzIAp0aGF0IG9mIGEgbWFuIHdob3NlIG9wcG9ydHVuaXR5IG9mIGp1ZGdpbmcgYWNjdXJhdGVseSAKaXMgb3V0IG9mIGFsbCBwcm9wb3J0aW9uIHRvIG91cnMuIAoKSUhpcyBwb3NpdGlvbiBhbmQgaGlzIGV4dGVuZGVkIGZhY3VsdGllcyBhcmUgaW4gcmVhbGl0eSAKdGhlIGhlcml0YWdlIG9mIGFsbCBtYW5raW5kLCBhbmQsIGZhciB0aG91Z2ggd2UgbWF5IApub3cgYmUgZnJvbSB0aG9zZSBncmFuZCBwb3dlcnMsIHRoZXkgd2lsbCBub25lIHRoZSAKbiBsZXNzIGNlcnRhaW5seSBiZSBvdXJzIG9uZSBkYXkuIFlldCBob3cgZGlmZmVyZW50IGEgCnBsYWNlIHdpbGwgdGhpcyBvbGQgd29ybGQgYmUgd2hlbiBodW1hbml0eSBhcyBhIHdob2xlIApwb3NzZXNzZXMgdGhlIGhpZ2hlciBjbGFpcnZveWFuY2UgISBUaGluayB3aGF0ICwgdGhlIApkaWZmZXJlbmNlIHdpbGwgYmUgdG8gaGlzdG9yeSB3aGVuIGFsbCBjYW4gcmVhZD53dGhl4oCeIApyZWNvcmRzIDsgdG8gc2NpZW5jZSwgd2hlbiBhbGwgdGhlIHByb2Nlc3NlcyBhYm91dCB3aGljaCAKbm93IG1lbiB0aGVvcml6ZSBjYW4gYmUgd2F0Y2hlZCB0aHJvdWdoIGFsbCB0aGVpciAKY291cnNlOyB0byBtZWRpY2luZSwgd2hlbiBkb2N0b3IgYW5kIHBhdGllbnQgYU1rZSAKY2FuIHNlZSBjbGVhcmx5IGFuZCBleGFjdGx5IGFsbCB0aGF0IGlzIGJlaW5nIGRvbmUgOyB0byAKcGhpbG9zb3BoeSwgd2hlbiB0aGVyZSBpcyBubyBsb25nZXIgYW55IHBvc3NpYmlsaXR5IG9mIApkaXNjdXNzaW9uIGFzIHRvIGl0cyBiYXNpcywgYmVjYXVzZSBhbGwgYWxpa2UgY2FuIHNlZSBhIAp3aWRlciBhc3BlY3Qgb2YgdGhlIHRydXRoIDsgdG9eIGxhYm91ciwgd2hlbiBhbGwgd29yayAKd2lsbCBiZSBqb3ksIGJlY2F1c2UgZXZlcnkgbWFuIHdpbGwgYmUgcHV0IG9ubHkgdG8gCnRoYXQgd2hpY2ggaGUgY2FuIGRvIGJlc3QgOyB0byBedWNhdGlvbiwgd2hlbiB0aGUgCm1pbmRzIGFuZCBoZWFydHMgb2YgdGhlIGNoaWxkcmVuIGFyZSBvcGVuIHRvIHRoZSAKdGVhY2hlciB3aG8gaXMgdHJ5aW5nIHRvIGZvcm0gdGhlaXIgY2hhcmFjdGVyIDsgdG8gCnJlbGlnaW9uLCB3aGVuIHRoZXJlIGlzIG5vIGxvbmdlciBhbnkgcG9zc2liaWxpdHkgb2YgCmRpc3B1dGUgYXMgdG8gaXRzIGJyb2FkIGRvZ21hcywgc2luY2UgdGhlIHRydXRoIGFib3V0IAoKClRIRSBGVVRVUkUgVEhBVCBBV0FJVFMgVVMgMTc1IAoKCnRoZSBzdGF0ZXMgYWZ0ZXIgZGVhdGgsIGFuZCB0aGUgR3JlYXQgTGF3IHRoYXQgZ292ZXJucyAKdGhlIHdvcmxkLCB3aWxsIGJlIHBhdGVudCB0byBhbGwgZXllcy4gCgpBYm92ZSBhbGwsIGhvdyBmYXIgZWFzaWVyIGl0IHdpbGwgYmUgdGhlbiBmb3IgdGhlIApldm9sdmVkIG1lbiB0byBoZWxwIG9uZSBhbm90aGVyIHVuZGVyIHRob3NlIHNvIG11Y2ggCmZyZWVyIGNvbmRpdGlvbnMgISBUaGUgcG9zc2liaWxpdGllcyB0aGF0IG9wZW4gYmVmb3JlIAp0aGUgbWluZCBhcmUgYXMgZ2xvcmlvdXMgdmlzdGFzIHN0cmV0Y2hpbmcgaW4gYWxsIGRpcmVjLSAKdGlvbnMsIHNvIHRoYXQgb3VyIHNldmVudGggcm91bmQgc2hvdWxkIGluZGVlZCBiZSBhIAp2ZXJpdGFibGUgZ29sZGVuIGFnZS4gV2VsbCBmb3IgdXMgdGhhdCB0aGVzZSBncmFuZCAKZmFjdWx0aWVzIHdpbGwgbm90IGJlIHBvc3Nlc3NlZCBieSBhbGwgaHVtYW5pdHkgdW50aWwgCml0ICdoYXMgZXZvbHZlZCB0byBhIGZhciBhcyAKCndlbGwgYXMgaW4gd2lzZG9tLCBlbHNlIHNob3VsZCB3ZeKAmCBidXQgcmVwZWF0IG9uY2UgbW9yZSAKd29yc2UgKiBjb25kaXRpb25zIHRoZSB0ZXJyaWJsZSBkb3duZmFsbCBvZiAKdGhlIGNycmUtYWotIGZsZmxmZmx0ZWFuIGNpdmlsaXphdGlvbiwgd2hvc2UgbWVtYmVycyBmYWlsZWQgCnRvIHJlYWxpemUgdGhhdCBpbmNyZWFqZSdkIApzcG9uc2piamxqdHkuIFlldGpeb15zZHZeXiAKdHRvc2V2ZW5UIG1lbjsgXiB1cyBob3BlIHRoYXQgd2UgaGF2ZSBsZWFybnQgCndpc2RvbSBieSB0aGF0IGZhaWx1cmUsIGFuZCB0aGF0IHdoZW4gdGhlIHBvc3NpLSAKYmlsaXRpZXMgb2YgdGhlIHdpZGVyIGxpZmUgb3BlbiBiZWZvcmUgdXMgb25jZSBtb3JlLCB0aGlzIAp0aW1lIHdlIHNoYWxsIGJlYXIgdGhlIHRyaWFsIGJldHRlci4gCgoKcj4gCgoKSU5ERVggCgoKQWR2YW50YWdlcyBvZiBhc3RyYWwgdmlzaW9uIAptZW50YWwgdmlzaW9uIAp0cmFpbmluZyAuIApBa2FzaGljIHJlY29yZHMgLiAKQXBwYXJpdGlvbnMgCkFybWllcywgcGhhbnRvbSAKQXNzYXNzaW5hdGlvbiBvZiBNci4gUGVyY2V2YWwgCkFzcGVjdCBvZiB0aGUgcmVjb3JkcyAKQXN0cmFsIGJvZHkgLiA1IC4gCgpjb3VudGVycGFydCAKY3VycmVudCAKCm1hdHRlciwgcG9sYXJpemF0aW9uIG9mIAoKc2Vuc2VzIAoKc2lnaHQgZmggLCAKCnRlbGVzY29wZSAuIAoKd29ybGQgCgpBdXJhLCB0aGUgLiAuIC4gLiAKCgpCYWxhbmNlIC4gCgpCYXTigJlzIGNyeSwgZXhwZXJpbWVudCB3aXRoIApCYXR0bGUgb2YgRWRnZWhpbGwgCkJvZHksIHRoZSBhc3RyYWwgLiAKCnRoZSBjYXVzYWwgLiAKCkJyb3duaWVzIC4gCgpCdWRkaGljIGZhY3VsdHkgLiAKCkJ1bGwgYW5kIHRoZSBkb2N0b3IsIHRoZSBzdG9yeSBvZiAKCgpDYXVzYWwgYm9keSAKQ2VudHJlcyBvZiB2aXRhbGl0eSAKQ2VyZWJyby1zcGluYWwgc3lzdGVtIApDZXJlbW9uaWVzIHVzZWQgdG8gZ2FpbiBjbGFpcnZveWFuY2UgCkNlcnRhaW50eSBvZiBldmVudHVhbCBnb29kIApDaGFyYWN0ZXIsIGp1ZGdtZW50IG9mIC4gCgpDaGFrcmFtcyAKCkNob3JkIG9mIGEgbWFuLCB0aGUgCkNpYWlyYXVkaWVuY2UgCkNsYWlydm95YW5jZSBieSBkcnVncyBvciBjZXJlbW9uaWVzIAoiIGNhc3VhbCAKCn5+IGRvZXMgaXQgZGVzdHJveSBwcml2YWN5ID8gCgoxNzYgCgoKUEFHRSAKCjQxLiA2Uy4gN2kgCi4gLiA3OSAKCjU2LCA3MCwgSU8zLCBJbDYsIDEyMSAKODUsIDk3IHNlcS4sIDE2MCAKNTQgCjE1NCAKCjE1MSAK4oCcNSAKCjY5IAoKMTYgCjg4LCA5NSAKCjYzIAoKMTcgCgozNyBldCBzZXEuLCA1OSBlbCBzZXEgLiwgNjYgCjZTLiA4NS4gacKwMyAKODEsIDEwMyAKNDIgZXQgc2VxLiAsIDEwMSAKCgo2MiBldCBzZXEuIAoKCjE4LiAKCgoxMjYgCklJIAoKMTYxIArigKI2OSAKCklPSSAKCjMzIAoKPiAxMDgsIDEzNiwgMTM5IAoKMTQ3IAoKCklPSSAKCjE0LiAxNyAsIAoyMiAKCjUyLCAxNjMgCgoxNzQgCgo0MiBtIAoxNC0xNyAKODAgCgo2LCA2OSBldCBzZWcuIAo1MiBldCBzZXEuLCAxNjMgCjkzIAoKLiAxNzEgCgoKKiAKCgpJTkRFWCAKCgoxNzcgCgoKQ2xhaXJ2b3lhbmNlIGR1cmluZyBzbGVlcCAKCmhvdyBmaXJzdCBtYW5pZmVzdGVkIApoeXN0ZXJpY2FsIC4gCmxpbWl0YXRpb25zIG9mIAptZWFuaW5nIG9mIHdvcmQgLiAKb2NjYXNpb25hbCBmbGFzaGVzIG9mIApvZiB0aGUgdW5jdWx0dXJlZCAKb24gbWVudGFsIHBsYW5lIApvbiB0cml2aWFsIHN1YmplY3RzIApwYXJ0aWFsIGFuZCB0ZW1wb3JhcnkgCnJlc3RyaWN0aW9ucyB1cG9uIApzYWRuZXNzIG9mICwgCgpfIC4gdW5kZXIgbWVzbWVyaXNtIC4gCgpDbGFpcnZveWFudHMsIOKAnHRlc3QgYW5kIGJ1c2luZXNz4oCdIApDbGFzc2lmaWNhdGlvbiBvZiBwaGVub21lbmEgCkNvbG91cnMsIG5ldyAuIAoKQ29tbW9uLXNlbnNlIGluIG9jY3VsdGlzbSwgbmVjZXNzaXR5IG9mIApDb25zY2lvdXNuZXNzLCBjb250aW51b3VzIAoxICggYiB0aGUgZm9jdXMgb2YgCgpDb25zaWRlcmF0aW9ucywgcHJlbGltaW5hcnkgCkNvbnRlbXBsYXRpb24gLiAKCkNvbnRpbnVvdXMgY29uc2Npb3VzbmVzcyAKQ29udHJvbCBvZiB0aG91Z2h0IApDb3VudGVycGFydCwgYXN0cmFsIApDcnlzdGFsLWdhemluZyAKQ3VyYXRpdmUgbWVzbWVyaXNtIApDdXJpb3NpdHkgbm90IHBlcm1pdHRlZCAKQ3VycmVudCwgYXN0cmFsIAoKRGFuZ2VycyAuIAoKRGF0ZSwgaG93IHRvIGZpbmQgYSAKRGVhZCwgdGhlIApEZWF0aCwgdmlzaXRzIGF0IC4gCgpEZWxpcml1bSB0cmVtZW5zIApEZXJ2aXNoZXMsIHRoZSAKRGV2YXMsIHRoZSAKCkRldmVsb3BtZW50LCBtZXRob2RzIG9mIAp0aGUgcGF0aCBvZiAKcmVndWxhciAKCkRpZmZlcmVuY2UgYmV0d2VlbiBldGhlcmljIGFuZCBhc3RyYWwgc2lldGZ0IApkaWZmaWN1bHRpZXMgCgpEaW1lbnNpb24sIHRoZSBmb3VydGggCkRpc3RhbmNlLCBzaWdodCBhdCBhIApEb3VibGUsIHRoZSBldGhlcmljIApEcnVncyB1c2VkIHRvIGdhaW4gY2xhaXJ2b3lhbmNlIApEdWtlIG9mIE9ybGVhbnMsIHRoZSBzdG9yeSBvZiB0aGUgCgpFYXJ0aCAsIHRoZSBTdGFycyBhbmQgdGhlIC4gCgpFZGdlaGlsbCwgYmF0dGxlIG9mIAoKCjc5LCBTaSwgCgoKUEFHRSAKCjI2IAoyNiAKCjUzIAoxNzEgCgo1IAoqMyAKMjEgCgo1NiAKCjU1LCA5NSwgMTUyIAoKNTQgCgo4MV4sMTcxIAouIDE2OSAKCjI0LCA1MiwgMTY0IApTaCAxNzAgCjI3IAozNSAKCi4gMTI1IAoKNDYgCjNpIAo3IAoKMSA2NyAKNDYgCgptIAoKMTYgCgo2NiwgODQgZXQgc2VxLiAsIDEyNyAKCkk8PjUgCgoxNzMgCgo2MiBldCBzZXEuLCA4OCwgOTUgCgoK4oCiIDc4IAoKMSAxOSBldCBzZXEgLiAKLiA0NSwgNjIgCjc0IGV0IHNlcS4gCgo1MyAKCiogMTYzIAoKNDQgCjE2MyAKMTY3IApYOSAKCjM2IAoKMTAzIGV0IHNlcSAuIAozOCBldCBzZXEuLCA2NSwgMTA3LCAxMzcgCi12LDU5LiBTaSAKCuKZpiAzNCAKJyBTMiwgSTYzIAoKJ+KAoiA5MCAKCi4gSSBJTyAKLiBJNmwgCgoKMSAKCgpvIAoKCjEgMsK7IAoKCi4uIGnCuyAKCgpwICo+ICcgCgoKMTc4IAoKCklOREVYIAoKCjsgJyAKCgpFbGVtZW50YWxzIAoKRXF1YXRpb24sIHRoZSBwZXJzb25hbCAKRXRlcm5hbCBub3csIHRoZSAuIAoKRXRoZXJpYyBkb3VibGUsIHRoZSAKdmlzaW9uIAoKRXhwZXJpbWVudHMgaW4gY3J5c3RhbC1nYXppbmcgCndpdGggYmF04oCZcyBjcnkgCndpdGggc3BlY3RydW0gCkV4dGVuc2lvbiBvZiBzZW5zZXMgCgpGYWN1bHRpZXMsIGxhdGVudCAuIAoKYnVkZGhpYyAKRmFpcnkgb2ludG1lbnQgLiAKCkZpbmRpbmcgYSBzdHJhbmdlciAKRmlyc3QgbWFuaWZlc3RhdGlvbnMgb2YgY2xhaXJ2b3lhbmNlIApGbG9ja3MsIHBoYW50b20gLiAKCkZvY3VzIG9mIGNvbnNjaW91c25lc3MsIHRoZSAKRm91cnRoIGRpbWVuc2lvbiwgdGhlIApGcmVld2lsbCBsaW1pdGVkIC4gCgpGdXR1cmUgcHJvc3BlY3RzIC4gCgpHaG9zdHMgb2YgdGhlIGdpYmJldCAKR2xhbW91ciAuIAoKR29mZmUsIHRoZSBzdG9yeSBvZiBNYXJ5IC4gCgpIZWxwZXJzLCBpbnZpc2libGUgCkhpc3RvcmljYWwgc3R1ZHksIHBvc3NpYmlsaXRpZXMgb2YgCkhpbnRvbuKAmXMgd29ya3MgLiAKCkhvdXNla2VlcGVy4oCZcyBkcmVhbSwgdGhlIHN0b3J5IG9mIHRoZSAKSG93IGEgcGljdHVyZSBpcyBmb3VuZCAuIAp0byBmaW5kIGEgZGF0ZSAKdG8gaW52ZXN0aWdhdGUgCkh1bnRzbWFuLCB0aGUgd2lsZCAKSHlwbm90aXphdGlvbiwgc2VsZiAKSHlzdGVyaWNhbCBjbGFpcnZveWFuY2UgLiAKCkluY2FybmF0aW9ucywgcGFzdCAKSW52ZXN0aWdhdGUsIGhvdyB0byAKSW52aXNpYmxlIGhlbHBlcnMgLiAKCkp1ZGdtZW50IG9mIGNoYXJhY3RlciAKSnVuZyBTdGlsbGluZ+KAmXMgc3RvcnkgCgpLbm93bGVkZ2UsIHRoZSB2YWx1ZSBvZiAuIAoKTGF0ZW50IGZhY3VsdGllcyAuIAoKTGltaXRhdGlvbnMgb2YgY2xhaXJ2b3lhbmNlLCB0aGUgCkxpbWl0ZWQgZnJlZXdpbGwgKiAKCkxpbmtzOyBuZWVkZWQgCgoKMTguIAoKCjMyLCA0NCwgMTYyIAoxMDQgZXQgc2VxIC4gCjEwOSwgMTM3IAozNCAKCjMwIGV0IHNlcSwgCjY2LCA4NCBldCBzZXEgLiAKCjExIAoKMTAgCgoxMiAKCgoxMzYsIDEzOSAKMzQgCjgwIAoKMjUgZXQgc2VxIC4gCicwLCAxNjIgCgoKMTU0LCAxNjAsIDE2MiAKCjM4IGV0c2VxLnkgNjUsIDEwNywgMTM3IAoxMzIgZXQgc2VxLiAKCuKWoCAxNzUgCgoxNjIgCjE2MCAKNzUgCgoKNDYsIDc0LCA4OCwgMTY2IAoxIDE0IGV0IHNlcS4gCgrigKIgMzggCjE0NyBldCBzZXEuIAoxIDE2IGZ0IHNlcS4gCjEgMTkgZXQgc2VxLiAKCjU1IAoxNjAgCjg2IAo1MyAKCjEgMSA4LCAxMjMgZXQgc2VxLiAKCjU1IAoKNDYsIDc0LCA4OCwgMTY2IAojMiAKCjcxIGV0IHNlcSAuIAoK4oCiIAoKNyAKCuKAoiA3OSwgODEsIDE3IDEgCgoqIDEzMiBldCBzZXEuIAoKLiAxMTQgCgoKSU5ES1ggCgoKKjc5IAoKCkxvZGdlLCBhZGRyZXNzIGJ5IERyLiBPbGl2ZXIgCkxvZ29zIG9mIHRoZSBzeXN0ZW0sIHRoZSAuIAoKTWFnaWMgLi4uLiAKTWFnbmlmeWluZywgdGhlIHBvd2VyIG9mIApNYW5pZmVzdGF0aW9ucyBvZiBjbGFpcnZveWFuY2UsIHRoZSBmaXJzdCAKTWFzdGVycyBvZiBXaXNkb20sIHRoZSAuIApNYXRlcmlhbGl6YXRpb24gLiAKCk0meSZ2aXJmdHBhLCB0aGUgLiAKCk1lYW5pbmcgb2Ygd29yZCBjbGFpcnZveWFuY2UgCgpNZWRpdGF0aW9uIAoKTWVkaXVtcywgdHJhbmNlIC4gCgpNZW50YWwgcGxhbmUgY2xhaXJ2b3lhbmNlIApwbGFuZSBzZW5zZSAKd29ybGQgCgpNZXNtZXJpc20sIGNsYWlydm95YW5jZSB1bmRlciAsIApjdXJhdGl2ZSAKCk1ldGhvZHMgb2YgZGV2ZWxvcG1lbnQgLiAKCk1pY2F3YmVycywgcHN5Y2hpYyAKTW9vbHRhbiwgc3Rvcnkgb2YgdGhlIHNpZWdlIG9mIApNdXJkZXIsIHJlcHJvZHVjdGlvbiBvZiAuIAoKCuKAoiAqMzcgCgo5OSB0SiAk4oKswrsvPCAKCgrigKIgNDctNjcgCgoyNiAKCjIwLCAxNjcsIDE3NCAKNzAgCgouID9zIAoKNSAKCjE2NyAKCjogJSAKCjEgUyAKCmJvLCAxMDQsIDEgMTUgCjI0LCA2MiwgMTY0IAoxNjUgCjE2MyAKCiozIAoKOTIgCgouIDE2MSAKCgpOYXR1cmUgc3Bpcml0cyAKCk5lY2Vzc2l0eSBvZiBjb21tb24tc2Vuc2UgaW4gb2NjdWx0aXNtIArigKIgTmV3IGNvbG91cnMgCk5vdywgdGhlIGV0ZXJuYWwgLiAKCgozMyogNDQgPiAqJsKuIAoKMTIkIAoKMzUgCgoxMDksICozNyAKCgpPY2Nhc2lvbmFsIGNsYWlydm95YW5jZSAuIApPaW50bWVudCwgZmFpcnkgYW5kIHdpdGNoIApPcmxlZm5zLCB0aGUgc3Rvcnkgb2YgdGhlIER1a2Ugb2YgCk90aGVyIHBsYW5ldHMgCgoKMzQgCgoKUGFydGlhbCBhbmQgdGVtcG9yYXJ5IGNsYWlydm95YW5jZSAKUGFzdCBpbmNhcm5hdGlvbnMgLiAKClBhdGggb2YgZGV2ZWxvcG1lbnQsIHRoZSAKUGVyY2V2YWwsIGFzc2Fzc2luYXRpb24gb2YgTXIuIApQZXJzb25hbCBlcXVhdGlvbiwgdGhlIApQaGFudG9tIGZsb2NrcyAuIAoKUGhlbm9tZW5hLCBjbGFzc2lmaWNhdGlvbiBvZiAKc3RhbmNlIHJvb20gCgpKamZ1bGFkZWxwaGlhbiBzZWVyLCB0aGUgc3Rvcnkgb2YgYSAKUGh5c2ljYWwgb2JqZWN0cywgdGhlIHRyYW5zcGFyZW5jeSBvZiAKUGljdHVyZXMgYmVmb3JlIGdvaW5nIHRvIHNsZWVwIApQbGFuZXRzLCBvdGhlciAKClBvbGFyaXphdGlvbiBvZiBhc3RyYWwgbWF0dGVyIApQb3NlaWRvbmlzLCB0aGUgc2lua2luZyBvZiAKUG9zc2liaWxpdGllcyBvZiBoaXN0b3JpY2FsIHN0dWR5IApQb3dlciBvZiBtYWduaWZ5aW5nLCB0aGUgClBvd2VyIG9mIHJlc3BvbnNlIHRvIHZpYnJhdGlvbnMgLiAKCgp0dEgsIAoKCjU0IAoKVTMgKjcgU2Z0aCAKCi4gSXQgJjcgCgoqICo1KiAKClhPNCBpdCBzZnIvLCAKCjEgNTQqIComPsKrIEpvYSAKMjcgCgozNS4gNiogCgo3MiB0dCBTWWkvLiAKCnwyIAoKdGkgCgoKLiAxMjAgCnQgISA0IHQoIAoKNDcqIDY3IAoKLSA5LCAqMSAKCgpJTkRFWCAKCgoxODAgCgoKUHJlbGltaW5hcnkgY29uc2lkZXJhdGlvbnMgClByZW1vbml0aW9uLCBNci4gU3RlYWTigJlzIApQcmV2aXNpb24gLiAKClByb3NwZWN0cyBmb3IgdGhlIGZ1dHVyZSAuIAoKUHN5Y2hpYyBNaWNhd2JlcnMgClBzeWNob21ldHJ5IAoKUXVhbGlmaWNhdGlvbnMgb2YgdGhlIHN0dWRlbnQgClF1YWxpZmllZCB0ZWFjaGVycyAKClJhZGlhdGlvbnMgClJlY29yZHMsIGRrYXNoaWMgLiAKCmFzcGVjdCBvZiB0aGUgClJlZ3VsYXIgZGV2ZWxvcG1lbnQgClJlcHJvZHVjdGlvbiBvZiBhIG11cmRlciAKUmVzdHJpY3Rpb25zIHVwb24gY2xhaXJ2b3lhbmNlIApSb250Z2VuIHJheXMsIHRoZSAKClNhZG5lc3Mgb2YgY2xhaXJ2b3lhbmNlLCB0aGUgClNjaGlsbGVy4oCZcyBsaW5lcyAKU3RhbmNlLXJvb20gcGhlbm9tZW5hIC4gClNlY29uZC1zaWdodCAKCnRoZSBzeW1ib2xpc20gb2YgClNlZXIsIGEgUGhpbGFkZWxwaGlhbiAKU2VsZi1oeXBub3RpemF0aW9uIApTZW5zZSwgZXh0ZW5zaW9uIG9mIApTZW5zZXMsIGFzdHJhbCAKU2lnaHQsIGFzdHJhbCAKCmF0IGEgZGlzdGFuY2UgCnNwaXJpdHVhbCAKClNsZWVwLCBjbGFpcnZveWFuY2UgZHVyaW5nIApTb2NpZXR5LCB0aGUgVGhlb3NvcGhpY2FsIApTb2xhciBzeXN0ZW0sIHRoZSAKU3BlY3RyYWwgYXJtaWVzIC4gCgrigJ4gU3BlY3RydW0sIGV4cGVyaW1lbnQgd2l0aCB0aGUgClNwaXJpdHVhbGlzdGljIHBoZW5vbWVuYSAuIAoKU3RhcnMgYW5kIHRoZSBFYXJ0aHkgVGhlIAp5IFN0b3JpZXMgb2YgY3J5c3RhbC1nYXppbmcgLiAKCiwgc2Vjb25kIHNpZ2h0IC4gCgonIFN0b3J5IGJ5IEp1bmcgU3RpbGxpbmcgCiogRSBNci4gU3RlYWTigJlzIAoKb2YgQ2FwdGFpbiBZb25udCAuIAoKTWFyeSBHb2ZmZSAKTWlzcyBYLuKAmXMgZG9nY2FydCAKTXIuIFN0ZWFk4oCZcyBwcmVtb25pdGlvbiAKU3Rvcnkgb2YgU291dGVyIEZlbGwgCuKWoC4qIF4gZiB0aGUgYnVsbCBhbmQgdGhlIGRvY3RvciAKQSB0aGUgRHVrZSBvZiBPcmxlYW5zIArCoyAsIGkgdGhlIGhvdXNla2VlcGVy4oCZcyBkcmVhbSAKCgo4NSAKCgozNyBldCBzZXEsIAoKCjcgCgoxNTMgCjEzMiwgMTM5IAoK4oCiIDE3NSAKCuKAoiA4MyAKCjEgMTQsIDEyNyAKCi4gMTY2IAoKMTY1IAoKSTkgCgo5NyBldCBzZXEgLiAsIDE2MCAKCuKAoiAxMTUgCgoxOSAKCi4gMTYxIAoKODEsIDE3MSAKCgoxNjkgCjE2OSAoIAoK4oCiIDM1LCA2MiAKMTQwIGV0IHNlcS4gCgrigKIgMTQ1IAo3MiBldCBzZXEgLiAKCjg2IAoxMiAKMTcgCgo1OSBldCBzZXEuLCA2NiAKCuKAoiA1OS4gODEgCgouIDI2IAoKMTY3IAo5OSAKCuKAoiAxNTQgCjEwIAoK4oCiIDM1LiA2MiAKCm5vIAoKODQgZXQgc2VxIC4gCjEzMiwgMTQwIGV0IHNlcSAuIAoKNzIgCgoKNzUgCgoxNTIgCgoqNTMgCgoxNTYtNyAKCkg3IAo5MCAKMTQ3IGV0IHNlcS4gCgoKSU5ERVggCgoKMTgxIAoKClN0b3J5IG9mIHRoZSBzaWVnZSBvZiBNb29sdGFuIAp0aGUgd2hpdGUgbmlnaHRkcmVzcyAKWnNjaG9ra2UgClN0cmFuZ2VyLCBmaW5kaW5nIGEgClN5bXBhdGhldGljIHN5c3RlbSwgdGhlIC4gClN5c3RlbSwgdGhlIExvZ29zIG9mIHRoZSAuIAoKClBBR0UgCgo5MiAKCi4gKjQ5IAoKMTI3IAoKMjIgaXQgc2VxLiAKOTkgwq50IHNlcS4gCgoKVGVhY2hlcnMsIHF1YWxpZmllZCAKVGVsZXNjb3BlLCB0aGUgYXN0cmFsIApUZW1wb3JhcnkgYW5kIHBhcnRpYWwgY2xhaXJ2b3lhbmNlIApUZXN0cyBub3QgZ2l2ZW4gLiAKClRoZW9zb3BoaWNhaSBTb2NpZXR5LCBUaGUgCnRlcm1zIAoKVGhvdWdodC1jb250cm9sIC4gCgpUaG91Z2h0LWZvcm1zIC4gCgpUaHJvdWdodGggClRpbWUgb25seSByZWxhdGl2ZSAKVHJhaW5pbmcsIHRoZSBhZHZhbnRhZ2VzIG9mIAp3aGVyZSB0byBiZSBoYWQgClRyYW5jZSBtZWRpdW1zIC4gCgpUcmFuc3BhcmVuY3kgb2YgcGh5c2ljYWwgb2JqZWN0cyAuIApUcml2aWFsIHN1YmplY3RzLCBjbGFpcnZveWFuY2Ugb24gLiAKCgo2NSwgCgoKNTU7IAoKCjhzLCAxMDMgCjU0IAoxNzIgCjE2NyAKNyAKCjE2JCAKCjQzLCA2NyAKCnIgfDEgCgo6ISAKCjgzIAoKOTUsIHIkMiAKCgpVbmN1bHR1cmVkLCBjbGFpcnZveWFuY2UgaW4gdGhlIAoKCjIxIAoKClZhbHVlIG9mIGtub3dsZWRnZSwgdGhlIC4gClZhcmlhYmxlIGNhcGFjaXR5IG9mIHJlc3BvbnNlIApWaWJyYXRpb25zIAoKCnRvIGl0IHNlcS4gCgo5IAoKCnBvd2VyIG9mIHJlc3BvbnNlIHRvIApWacKram9uLCBhc3RyYWwgCmV0aGVyaWMgClZpc2lvbnMsIGNhc3VhbCAKVmlzaXRzIGF0IGRlYXRoIApWb29kb28gb3IgT2JlYWggCgpXaGl0ZSBuaWdodGRyZXNzLCB0aGUgc3Rvcnkgb2YgdGhlIApXaWxkIGh1bnRzbWFuLCB0aGUgCldpc2RvbSwgdGhlIE1hc3RlcnMgb2YgLiAKCldvcmxkLCB0aGUgYXN0cmFsIC4gCgptZW50YWwgCgrCq1guKnMgc3RvcnksIE1pc3MgLiAKClggUmF5cyAuIAoKWW9ubnTigJlzIHN0b3J5LCBDYXB0YWluIC4gClpzY2hva2tl4oCZcyBzdG9yeSAuIAoKClBSSU5URUQgYXQgTkVJTEwgQU5EIAoKCkl0IAoKMzcgZXQgc2VxLiAsIDU5IGNsIHNzcXUgNjYgCjMwIGl0IHNlcS4gCgoxNCogCjc0

Nessun commento:

Posta un commento

[AL CORPUS] Occult Chemistry [2/2]

VGhlc2UgdW5pdHMgYXJlIGFsbCBhbGlrZSwgc3BoZXJpY2FsIGFuZCBhYnNvbHV0ZWx5IHNpbXBsZSBpbiAKY29uc3RydWN0aW9uLiBUaG91Z2ggdGhleSBhcmUgdGhlIGJhc2lzIG9m...