cGVyY2VpdmUgdGhlc2UgZXRoZXJpYyB2aWJyYXRpb25zLCBodXQgY2FuIGFsc2/igJQgaWYgaGUgaGFzIGxlYXJudCBob3cgaXQgaXMgZG9uZSBhZGFwdCB0aGVtIHRvIGhpcyBvd24gZW5kcywgb3IgaGltIHNlbGYgc2V0IHRoZW0gaW4gbW90aW9uLiBJdCB3aWxsIGJlIHJlYWRpbHkgdW5kZXJzdG9vZCB0aGF0IHN1cGVycGh5c2ljYWwgZm9yY2VzIGFuZCB0aGUgbWV0aG9kcyBvZiBtYW5hZ2luZyB0aGVtIGFyZSBub3Qgc3ViamVjdHMgYWJvdXQgd2hpY2ggbXVjaCBjYW4gYmUgd3JpdHRlbiBmb3IgcHVibGljYXRpb24gYXQgRm9yY2VzIHByZXNlbnQsIHRob3VnaCB0aGVyZSBpcyByZWFzb24gdG8gc3VwcG9zZSB0aGF0IGl0IG1heSBub3QgYmUgdmVyeSBsb25nIGJlZm9yZSBhdCBhbnkgcmF0ZSBzb21lIGFwcGxpY2F0aW9ucyBvZiBvbmUgb3IgdHdvIG9mIHRoZW0gY29tZSB0byBoZSBrbm93biB0byB0aGUgd29ybGQgYXQgbGFyZ2UgOiBidXQgaXQgbWF5IHBlcmhhcHMgYmUgcG9zcydibGUsIHdpdGhvdXQgdHJhbnNncmVzc2luZyB0aGUgbGltaXRzIG9mIHRoZSBwZXJtaXNzaWJsZSwgdG8gZ2l2ZSBzbyBtdWNoIG9mIGFuIGlkZWEgb2YgdGhlbSBhcyBzaGFsbCBiZSBzdWZmaWNpZW50IHRvIHNob3cgaW4gb3V0bGluZSBob3cgY2VydGFpbiBwaGVub21lbmEgYXJlIHBlcmZvcm1lZC4gQWxsIHdobyBoYXZlIG11Y2ggZXhwZXJpZW5jZSBvZiBzcGlyaXR1YWxpc3RpYyBzYXVpY2NzIGF0IHdoaWNoIHBoeXNpY2FsIHJlc3VsdHMgYXJlIHByb2R1Y2VkIG11c3QgYXQgb25lIHRpbWUgb3IgYW5vdGhlciBoYXZlIHNlZW4gZXZpZGVuY2Ugb2YgdGhlIGVtcGxveW1lbnQgb2YgcHJhY3RpY2FsbHkgcmVzaXN0bGVzcyBmb3JjZSBpbiwgZm9yIGV4YW1wbGUsIHRoZSBpbnN0YW50YW5lb3VzIG1vdmVtZW50IG9mIGVub3Jtb3VzIHdlaWdodHMsIGFuZCBzbyBvbiA7IGFuZCBpZiBvZiBhIHNjaWVudGlmaWMgdHVybiBvZiBtaW5kLCB0aGV5IG1heSBwZXJoYXBzIGhhdmUgd29uZGVyZWQgd2hlbmNlIHRoaXMgZm9yY2Ugd2FzIG9idGFpbmVkLCBhbmQgd2hhdCB3YXMgdGhlIGxldmVyYWdlIGVtcGxveWVkLiBBcyB1c3VhbCBpbiBjb25uZWN0aW9uIHdpdGggYXN0cmFsIHBoZW5vbWVuYSwgdGhlcmUgYXJlc2V2ZXJhbCB3YXlzIGluIHdoaWNoIHN1Y2ggd29yayBtYXkgaGF2ZSBiZWVuIGRvbmUsIGJ1dCBpdCB3aWxsIGJlIGVub3VnaCBmb3IgdGhlIG1vbWVudCB0byBoaW50IGF0IGZvdXIuIEZpcnN0LCB0aGVyZSBhcmUgZ3JlYXQgZXRoZXJpYyBjdXJyZW50cyBjb25zdGFudGx5IHN3ZWVwaW5nIG92ZXIgdGhlIHN1cmZhY2Ugb2YgdGhlIGVhcnRoIGZyb20gcG9sZSB0byBwb2xlIEN1cnJlbnRzIG0gdm9sdWltJyB4dm1ybiAiSGlrZXMgdGhlaXIgcG93ZXIgYXMgaXJyZXNpc3QgaWJsZSBhcyA8aGF0IG9mIHRoZSByaXNpbmcgdGlkZSwgYW5kIHRoZXJlIGFyZSBtZXRob2RzIGJ5IHdoaWNoIHRoaXMgc3R1cGVuZG91cyBmb3JjZSBtYXkgYmUgc2FmZWx5IHV0aWxpemVkLCB0aG91Z2ggdW5za2lsZnVsIGF0dGVtcHRzIHRvIGNvbnRyb2wgaXQgd291bGQgYmUgZnJhdWdodCB3aXRoIGZyaWdodGZ1bCBkYW5nZXIuIFNlY29uZGx5LCB0aGVyZSBpcyB3aGF0IGNhbiBiZXN0IGJlIGRlc2NyaWJlZCBhcyBhbiBldGhlcmljIHByZXNzdXJlLCBzb21ld2hhdCBjb3JyZXNwb25kaW5nIHRvLCB0aG91Z2gKCgppICczIGltbWVuc2VseSBncmVhdGVyIHRoYW4sIHRoZSBhdG1vc3BoZXJpYyBwcmVzc3VyZS4gSW4gb3JkaW5hcnkgbGlmZSB3ZSBhcmUgYXMgbGl0dGxlIGNvbnNjaW91cyBvZiBvbmUgUHJlc3N1cmUgwrBmIHRuZXNlIHByZXNzdXJlcyBhcyB3YyBhcmMgwrBmIHRuZSBvdGhlciwgYnV0IG5ldmVydGhlbGVzcyB0aGV5IGJvdGggZXhpc3QsIGFuZCBpZiBzY2llbmNlIHdlcmUgYWJsZSB0byBleGhhdXN0IHRoZSBldGhlciBmcm9tIGEgZ2l2ZW4gc3BhY2UsIGFzIGl0IGNhbiBleGhhdXN0IHRoZSBhaXIsIHRoZSBvbmUgY291bGQgYmUgcHJvdmVkIGFzIHJlYWRpbHkgYXMgdGhlIG90aGVyLiBUaGUgZGlmZmljdWx0eSBvZiBkb2luZyB0aGF0IGxpZXMgaW4gdGhlIGZhY3QgdGhhdCBtYXR0ZXIgaW4gdGhlIGV0aGVyaWMgY29uZGl0aW9uIGZyZWVseSBpbnRlcnBlbmV0cmF0ZXMgbWF0dGVyIGluIGFsbCBzbGF0ZXMgYmVsb3cgaXQsIHNvIHRoYXQgdGhlcmUgaXMgYXMgeWV0IG5vIG1lYW5zIHdpdGhpbiB0aGUga25vd2xlZGdlIG9mIG91ciBwaHlzaWNpc3RzIGJ5IHdoaWNoIGFueSBnaXZlbiBib2R5IG9mIGV0aGVyIGNhbiBiZSBpc29sYXRlZCBmcm9tIHRoZSByZXN0LiBQcmFjdGljYWwgT2NjdWx0aXNtLCBob3dldmVyLCB0ZWFjaGVzIGhvdyB0aGlzIGNhbiBiZSBkb25lLCBhbmQgdGh1cyB0aGUgdHJlbWVuZG91cyBmb3JjZSBvZiBldGhlcmljIHByZXNzdXJlIGNhbiBiZSBicm91Z2h0IGludG8gcGxheS4gVGhpcmRseSwgdGhlcmUgaXMgYSB2YXN0IHN0b3JlIG9mIHBvdGVudGlhbCBlbmVyZ3kgd2hpY2ggaGFzIGJlY29tZSBkb3JtYW50IGluIG1hdHRlciBkdXJpbmcgdGhlIGludm9sdXRpb24gb2YgdGhlIHN1YnRsZSBpbnRvIHRoZSBncm9zcywgYW5kIGJ5IEVuZXJneSwgY2hhbmdpbmcgdGhlIGNvbmRpdGlvbiBvZiB0aGUgbWF0dGVyIHNvbWUgb2wgdGhpcyBtYXkgYmUgbGliZXJhdGVkIGFuZCB1dGlsaXplZCwgc29tZXdoYXQgYXMgbGF0ZW50IGVuZXJneSBpbiB0aGUgZm9ybSBvZiBoZWF0IG1heSBiZSBsaWJlcmF0ZWQgYnkgYSBjaGFuZ2UgaW4gdGhlIGNvbmRpdGlvbiBvZiB2aXNpYmxlIG1hdHRlci4gRm91cnRobHksIG1hbnkgc3RyaWtpbmcgcmVzdWx0cywgYm90aCBncmVhdCBhbmQgc21hbGwsIG1heSBiZSBwcm9kdWNlZCBieSBhbiBleHRlbnNpb24gb2YgYSBwcmluIGNpcGxlIHdoaWNoIG1heSBiZSBkZXNjcmliZWQgYXMgdGhhdCBvZiBzeW1wYXRoZXRpYyB2aWJyYXRpb24uIElsbHVzdHJhdGlvbnMgdGFrZW4gZnJvbSB0aGUgcGh5c2ljYWwgcGxhbmUgc2VlbSBnZW5lcmFsbHkgdG8gbWlzcmVwcmVzZW50IHJhdGhlciB0aGFuIGVsdWNpZGF0ZSBhc3RyYWwgcGhlbm9tZW5hLCBiZWNhdXNlIHRoZXkgY2FuIG5ldmVyIGJlIG1vcmUgdGhhbiBwYXJ0aWFsbHkgYXBwbGljYWJsZTsgYnV0IHRoZSByZWNvbGxlYyB0aW9uIG9mIHR3byBzaW1wbGUgZmFjdHMgb2Ygb3JkaW5hcnkgbGlmZSBtYXkgaGVscCB0byBtYWtlIHRoaXMgaW1wb3J0YW50IGJyYW5jaCBvZiBvdXIgc3ViamVjdCBjbGVhcmVyLCBpZiB3ZSBhcmUgY2FyZWZ1bCBub3QgdG8gcHVzaCB0aGUgYW5hbG9neSBmdXJ0aGVyIHRoYW4gaXQgd2lsbCBob2xkIGdvb2QuCgoKaSAxNCBJdCBpcyB3ZWxsIGtub3duIHRoYXQgaWYgb25lJyBvZiB0aGUgd2lyZXMgb2YgYSBoYXJwIGJlIG1hZGUgdG8gdmlicmF0ZSB2aWdvcm91c2x5LCBpdHMgbW92ZW1lbnQgd2lsbCBjYWxsIGZvcnRoIHN5bXBhdGhldGljLSB2aWJyYXRpb25zIGluIHRoZSBjb3JyZXNwb25kaW5nIHN0cmluZ3Mgb2YgYW55IG51bWJlciBvZiBoYXJwcyBwbGFjZWQgcm91bmQgaXQsIGlmIHRoZXkgYXJlIHR1bmVkIHRvIGV4YWN0bHkgdGhlIHNhbWUgcGl0Y2guIEl0IGlzIGFsc28gd2VsbCBrbm93biB0aGF0IHdoZW4gYSBsYXJnZSBib2R5IG9mIHNvbGRpZXJzIGNyb3NzZXMgYSBzdXNwZW5zaW9uIGJyaWRnZSBpdCBpcyBuZWNlc3NhcnkgZm9yIHRoZW0gdG8gYnJlYWsgc3RlcCwgc2luY2UgdGhlIHBlcmZlY3QgcmVndWxhcml0eSBvZiB0aGVpciBvcmRpbmFyeSBtYXJjaCB3b3VsZCBzZXQgdXAgYSB2aWJyYXRpb24gaW4gdGhlIGJyaWRnZSB3aGljaCB3b3VsZCBiZSBpbnRlbnNpZmllZCBieSBldmVyeSBzdGVwIHRoZXkgdG9vaywgdW50aWwgdGhlIHBvaW50IG9mIHJlc2lzdGFuY2Ugb2YgdGhlIGlyb24gd2FzIHBhc3NlZCwgd2hlbiB0aGUgd2hvbGUgc3RydWN0dXJlIHdvdWxkIGZseSB0byBwaWVjZXMuIFxcJ2l0aCB0aGVzZSB0d28gYW5hbG9naWVzIGluIG91ciBtaW5kcyAobmV2ZXIgZm9yZ2V0dGluZyB0aGF0IHRoZXkgYXJlIG9ubHkgcGFydGlhbCBvbmVzKSBpdCBtYXkgc2VlbSBtb3JlIGNvbSBwcmVoZW5zaWJsZSB0aGF0IG9uZSB3aG8ga25vd3MgZXhhY3RseSBhdCB3aGF0IHJhdGUgdG8gc3RhcnQgbGlpcyB2aWJyYXRpb25zIGtub3dzLCBzbyB0byBzcGVhaywgdGhlIGtleW5vdGUgb2YgdGhlIGNsYXNzIG9mIG1hdHRlciBoZSB3aXNoZXMgdG8gYWZmZWN0IHNob3VsZCBiZSBhYmxlIGJ5IHNvdW5kaW5nIHRoYXQga2V5bm90ZSB0byBjYWxsIGZvcnRoIGFuIGltbWVuc2UgbnVtYmVyIG9mIHN5bSBwYXRoZXRpYyB2aWJyYXRpb25zLiBXaGVuIHRoaXMgaXMgZG9uZSBvbiB0aGUgcGh5c2ljYWwgcGxhbmUgbm8gYWRkaXRpb25hbCBlbmVyZ3kgaXMgZGV2ZWxvcGVkIDsgYnV0IG9uIHRoZSBhc3RyYWwgcGxhbmUgdGhlcmUgaXMgdGhpcyBkaWZmZXJlbmNlLCB0aGF0IHRoZSBtYXR0ZXIgd2l0aCB3aGljaCB3ZSBhcmUgZGVhbGluZyBpcyBmYXIgbGVzcyBpbmVydCwgYW5kIHNvIHdoZW4gY2FsbGVkIGludG8gYWN0aW9uIGJ5IHRoZXNlIHN5bXBhdGhldGljIHZpYnJhdGlvbnMgaXQgYWRkcyBpdHMgb3duIGxpdmluZyBmb3JjZSB0byB0aGUgb3JpZ2luYWwgaW1wdWxzZSwgd2hpY2ggbWF5IHRodXMgYmUgbXVsdGlwbGllZCBtYW55Zm9sZCA7IGFuZCB0aGVuIGJ5IGZ1cnRoZXIgcmh5dGhtaWMgcmVwZXRpdGlvbiBvZiB0aGUgb3JpZ2luYWwgaW1wdWxzZSwgYXMgaW4gdGhlIGNhc2Ugb2YgdGhlIHNvbGRpZXJzIG1hcmNoaW5nIG92ZXIgdGhlIGJyaWRnZSwgdGhlIHZpYnJhdGlvbnMgbWF5IGJlIHNvIGludGVuc2lmaWVkIHRoYXQgdGhlIHJlc3VsdCBpcyBvdXQgb2YgYWxsIGFwcGFyZW50IHByb3BvcnRpb24gdG8gdGhlIGNhdXNlLiBJbmRlZWQsIGl0IG1heSBiZSBzYWlkIHRoYXQgdGhlcmUgaXMgc2NhcmNlbHkgYW55IGxpbWl0IHRvIHRoZSBjb25jZWl2IGFibGUgYWNoaWV2ZW1lbnRzIG9mIHRoaXMgZm9yY2UgaW4gdGhlIGhhbmRzIG9mIGEgZ3JlYXQgQWRlcHQgd2hvIGZ1bGx5IGNvbXByZWhlbmRzIGl0cyBwb3NzaWJpbGl0aWVzIDsgZm9yIHRoZSB2ZXJ5IGJ1aWxkaW5nIG9mIHRoZSBVbml2ZXJzZSBpdHNlbGYgd2FzIGJ1dCB0aGUgcmVzdWx0IG9mIHRoZSB2aWJyYXRpb25zIHNldCB1cCBieSB0aGUgU3Bva2VuIFdvcmQuCgoKMSAxNSBUaGUgY2xhc3Mgb2YgbWFudHJhcyBvciBzcGVsbHMgd2hpY2ggcHJvZHVjZSB0aGVpciByZXN1bHQgbm90IGJ5IGNvbnRyb2xsaW5nIHNvbWUgZWxlbWVudGFsLCBidXQgbWVyZWx5IC4gLiYgLiBNYW50cmFzLCBieSB0aGUgcmVwZXRpdGlvbiBvZiBjZXJ0YWluIHNvdW5kcywgYWxzbyBkZXBlbmQgZm9yIHRoZWlyIGVmZmljYWN5IHVwb24gdGhpcyBhY3Rpb24gb2Ygc3ltcGF0aGV0aWMgdmlicmF0aW9uLiBUaGUgcGhlbm9tZW5vbiBvZiBkaXNpbnRlZ3JhdGlvbiBhbHNvIG1hfScgYmUgYnJvdWdodCBhYm91dCBieSB0aGUgYWN0aW9uIG9mIGV4dHJlbWVseSByYXBpZCB2aWJyYSB0aW9ucywgd2hpY2ggb3ZlcmNvbWUgdGhlIGNvaGVzaW9uIG9mIHRoZSB0ZWVyYXQib24gbW9sZWN1bGVzIG9mIHRoZSBvYmplY3Qgb3BlcmF0ZWQgdXBvbi4gQSBzdGlsbCBoaWdoZXIgcmF0ZSBvZiB2aWJyYXRpb25zIG9mIGEgc29tZXdoYXQgZGlmZmVyZW50IHR5cGUxIHdpbGwgc2VwYXJhdGUgdGhlc2UgbW9sZWN1bGVzIGludG8gdGhlaXIgY29uc3RpdHVlbnQgYXRvbXMuIEEuIGJvZHkgcmVkdWNlZCBieSB0aGVzZSBtZWFucyB0byB0aGUgZXRoZXJpYyBjb25kaXRpb24gY2FuIGJlIG1vdmVkIGJ5IGFuIGFzdHJhbCBjdXJyZW50IGZyb20gb25lIHBsYWNlIHRvIGFub3RoZXIgd2l0aCB2ZXJ5IGdyZWF0IHJhcGlkaXR5IDsgYW5kIHRoZSBtb21lbnQgdGhhdCB0aGUgZm9yY2Ugd2hpY2ggaGFzIGJlZW4gZXhlcnRlZCB0byBwdXQgaXQgaW50byB0aGF0IGNvbmRpdGlvbiBpcyB3aXRoZHJhd24gaXQgd2lsbCBiZSBmb3JjZWQgYnkgdGhlIGV0aGVyaWMgcHJlc3N1cmUgdG8gcmVzdW1lIGl0cyBvcmlnaW5hbCBjb25kaXRpb24uIFN0dWRlbnRzIG9mdGVuIGF0IGZpcnN0IGZpbmQgaXQgZGlmZmljdWx0IHRvIHVuZGVyc3RhbmQgaG93IGluIHN1Y2ggYW4gZXhwZXJpbWVudCB0aGUgc2hhcGUgb2YgdGhlIGFydGljbGUgZGVhbHQgd2l0aCBjYW4gYmUgcHJlc2VydmVkLiBJdCBoYXMgYmVlbiByZW1hcmtlZCB0aGF0IGlmIGFueSBtZXRhbGxpYyBvYmplY3TigJQgc2F5LCBmb3IgZXhhbXBsZSwgYSBrZXktIGJlIG1lbHRlZCBhbmQgcmFpc2VkIHRvIGEgdmFwb3JvdXMgc3RhdGUgYnkgaGVhdCwgd2hlbiB0aGUgaGVhdCBpcyB3aXRoIGRyYXduIGl0IHdpbGwgY2VydGFpbmx5IHJldHVybiB0byB0aGUgc29saWQgc3RhdGUsIGJ1dCBpdCB3aWxsIG5vIGxvbmdlciBiZSBhIGtleSwgYnV0IG1lcmVseSBhIGx1bXAgb2YgbWV0YWwuIFRoZSBwb2ludCBpcyB3ZWxsIHRha2VuLCB0aG91Z2ggYXMgYSBtYXR0ZXIgb2YgZmFjdCB0aGUgYXBwYXJlbnQgYW5hbG9neSBkb2VzIG5vdCBob2xkIGdvb2QuIFRoZSBlbGVtZW50YWwgZXNzZW5jZSB3aGljaCBpbmZvcm1zIHRoZSBrZXkgd291bGQgYmUgZGlzc2lwYXRlZCBieSB0aGUgYWx0ZXJhdGlvbiBpbiBpdHMgY29uZGl0aW9uIOKAlCBub3QgdGhhdCB0aGUgZXNzZW5jZSBpdHNlbGYgY2FuIGJlIGFmZmVjdGVkIGJ5IHRoZSBhY3Rpb24gb2YgaGVhdCwgYnV0IHRoYXQgd2hlbiBpdHMgdGVtcG9yYXJ5IGJvZHkgaXMgZGVzdHJveWVkIChhcyBhIHNvbGlkKSBpdCBwb3VycyBiYWNrIGludG8gdGhlIGdyZWF0IHJlc2Vydm9pciBvZiBzdWNoIGVzc2VuY2UsIG11Y2ggYXMgdGhlIGhpZ2hlciBwcmluY2lwbGVzIG9mIGEgbWFuLCB0aG91Z2ggZW50aXJlbHkgdW5hZmZlY3RlZCBieSBoZWF0IG9yIGNvbGQsCgoKbjYgYXJlIHlldCBmb3JjZWQgb3V0IG9mIGEgcGh5c2ljYWwgbD5vZHkgd2hlbiBpdCBpcyBkZXN0cm95ZWQgYnkgZmlyZS4gQ29uc2VxdWVudGx5LCB3aGVuIHdoYXQgaGFkIGJlZW4gdGhlIGtleSBjb29sZWQgZG93biBpbnRvIHRoZSBzb2xpZCBjb25kaXRpb24gYWdhaW4sIHRoZSBlbGVtZW50YWwgZXNzZW5jZSAob2YgdGhlICIgZWFydGggIiBvciBzb2xpZCBjbGFzcykgd2hpY2ggcG91cmVkIGJhY2sgaW50byBpdCB3b3VsZCBub3QgYmUgaW4gYW55IHdheSB0aGUgc2FtZSBhcyB0aGF0IHdoaWNoIGl0IGNvbnRhaW5lZCBiZWZvcmUsIGFuZCcgdGhlcmUgd291bGQgYmUgbm8gcmVhc29uIHdoeSB0aGUgc2FtZSBzaGFwZSBzaG91bGQgYmUgcmV0YWluZWQuIEh1dCBhIG1hbiB3aG8gZGlzaW4gdGVncmF0ZWQgYSBrZXkgZm9yIHRoZSBwdXJwb3NlIG9mIHJlbW92aW5nIGl0IGJ5IGFzdHJhbCBjdXJyZW50cyBmcm9tIG9uZSBwbGFjZSB0byBhbm90aGVyLCB3b3VsZCBiZSB2ZXJ5IGNhcmVmdWwgdG8gaG9sZCB0aGUgc2FtZSBlbGVtZW50YWwgZXNzZW5jZSBpbiBleGFjdGx5IHRoZSBzYW1lIHNoYXBlIHVudGlsIHRoZSB0cmFuc2ZlciB3YXMgY29tcGxldGVkLCBhbmQgdGhlbiB3aGVuIGhpcyB3aWxsZm9yY2UtIHdhcyByZW1vdmVkIGl0IHdvdWxkIGFjdCBhcyBhIG1vdWxkIGludG8gd2hpY2ggdGhlIHNvbGlkaWZ5aW5nIHBhcnRpY2xlcyB3b3VsZCBIb3csIG9yIHJhdGhlciByb3VuZCB3aGljaCB0aGV5IHdvdWxkIGJlIHJlLWFnZ3JlZ2F0ZWQuIFRodXMgdW5sZXNzIHRoZSBvcGVyYXRvcidzIHBvd2VyIG9mIGNvbmNlbnRyYXRpb24gZmFpbGVkLCB0aGUgc2hhcGUgd291bGQgYmUgYWNjdXJhdGVseSBwcmVzZXJ2ZWQuIEl0IGlzIGluIHRoaXMgd2F5IHRoYXQgb2JqZWN0cyBhcmUgc29tZXRpbWVzIGJyb3VnaHQgYWxtb3N0IGluc3RhbnRhbmVvdXNseSBmcm9tIGdyZWF0IGRpc3RhbmNlcyBhdCBzcGlyaXR1YWxpc3RpYyBzZWFuY2VzLCBhbmQgaXQgaXMgb2J2aW91cyB0aGF0IHdoZW4gZGlzaW50ZWdyYXRlZCB0aGV5IGNvdWxkIGJlIHBhc3NlZCB3aXRoIHBlcmZlY3QgZWFzZSB0aHJvdWdoIGFueSBzb2xpZCBzdWJzdGFuY2UsIHN1Y2gsIGZvciBleGFtcGxlLCBhcyB0aGUgd2FsbCBvZiBhIGhvdXNlIG9yIHRoZSBzaWRlIG9mIGEgbG9ja2VkIGJveCwgc28gdGhhdCB3aGF0IGlzIGNvbW1vbmx5IGNhbGxlZCAidGhlIHBhc3NhZ2Ugb2YgbWF0dGVyIHRocm91Z2ggbWF0dGVyICIgaXMgc2Vlbiwgd2hlbiBwcm9wZXJseSB1bmRlciBzdG9vZCwgdG8gYmUgYXMgc2ltcGxlIGFzIHRoZSBwYXNzYWdlIG9mIHdhdGVyIHRocm91Z2ggYSBzaWV2ZSwgb3Igb2YgYSBnYXMgdGhyb3VnaCBhIGxpcXVpZCBpbiBzb21lIGNoZW1pY2FsIGV4cGVyaW1lbnQuIFNpbmNlIGl0IGlzIHBvc3NpYmxlIGJ5IGFuIGFsdGVyYXRpb24gb2YgLnZpYnJhdGlvbnMgdG8gY2hhbmdlIG1hdHRlciBmcm9tIHRoZSBzb2xpZCB0byB0aGUgZXRoZXJpYyBjb25kaXRpb24sIGl0IHdpbGwgYmUgY29tcHJlaGVuZGVkIHRoYXQgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byByZXZlcnNlIHRoZSBwcm9jZXNzIGFuZCB0byBicmluZyBldGhlcmljIG1hdHRlciBpbnRvIHRoZSBzb2xpZCBzdGF0ZS4gQXMgdGhlIG9uZSBwcm9jZXNzIGV4cGxhaW5zIHRoZSBwaGVub21lbm9uIG9mIGRpc2ludGVncmF0aW9uLAoKCnNvIGRvZXMgdGhlIG90aGVyIHRoYXQgb2YgbWF0ZXJpYWxpemF0aW9uIDogYW5kIGp1c3QgYXMgaW4gdGhlIGZvcm1lciBjYXNlIGEgY29udGludWVkIGVmZm9ydCBvZiB3aWxsIGlzIG5lY2Vzc2FyeSB0byBwcmV2ZW50IHRoZSBvYmplY3QgZnJvbSByZXN1bWluZyBpemF0aW9uICIgaXRzIG9yaWdpbmFsIHN0YXRlLCBzbyBpbiBleGFjdGx5IHRoZSBzYW1lIHdheSBpbiB0aGUgbGF0dGVyIHBoZW5vbWVub24gYSBjb250aW51ZWQgZWZmb3J0IGlzIG5lY2Vzc2FyeSB0byBwcmV2ZW50IHRoZSBtYXRlcmlhbGl6ZWQgbWF0dGVyIGZyb20gcmVsYXBzaW5nIGludG8gdGhlIGV0aGVyaWMgY29uZGl0aW9uLiBJbiB0aGUgbWF0ZXJpYWxpemF0aW9ucyBzZWVuIGF0IGFuIG9yZGluYXJ5IHNlYW5jZV4gc3VjaCBtYXR0ZXIgYXMgbWF5IGJlIHJlcXVpcmVkIGlzIGJvcnJvd2VkIGFzIGlhciBhcyBwb3NzaWJsZSBmcm9tIHRoZSBtZWRpdW0ncyBldGhlcmljIGRvdWJsZSBhbiBvcGVyYXRpb24gd2hpY2ggaXMgcHJlanVkaWNpYWwgdG8gaGlzIGhlYWx0aCwgYW5kIGFsc28gdW5kZXNpcmFibGUgaW4gdmFyaW91cyBvdGhlciB3YXlzLiBUaHVzIGlzIGV4cGxhaW5lZCB0aGUgZmFjdCB0aGF0IHRoZSBtYXRlcmlhbGl6ZWQgZm9ybSBpcyB1c3VhbGx5IHN0cmljdGx5IGNvbmZpbmVkIHRvIHRoZSBpbW1lZGlhdGUgbmVpZ2hib3VyIGhvb2Qgb2YgdGhlIG1lZGl1bSwgYW5kIGlzIHN1YmplY3QgdG8gYW4gYXR0cmFjdGlvbiB3aGljaCBpcyBjb25zdGFudGx5IGRyYXdpbmcgaXQgYmFjayB0byB0aGUgYm9keSBmcm9tIHdoaWNoIGl0IGNhbWUsIHNvIHRoYXQgaWYga2VwdCBhd2F5IGZyb20gdGhlIG1lZGl1bSB0b28gbG9uZyB0aGUgZmlndXJlIGNvbGxhcHNlcywgYW5kIHRoZSBtYXR0ZXIgd2hpY2ggY29tcG9zZWQgaXQsIHJldHVybiBpbmcgdG8gdGhlIGV0aGVyaWMgY29uZGl0aW9uLCBydXNoZXMgYmFjayBpbnN0YW50bHkgdG8gaXRzIHNvdXJjZS4gSW4gc29tZSBjYXNlcyB0aGVyZSBpcyBubyBkb3VidCB0aGF0IGRlbnNlIGFuZCB2aXNpYmxlcGh5c2ljYWwgbWF0dGVyIGFsc28gaXMgdGVtcG9yYXJpbHkgcmVtb3ZlZCBmcm9tIHRoZSBib2R5IG9mIHRoZSBtZWRpdW0sIGhvd2V2ZXIgZGlmZmljdWx0IGl0IG1heSBiZSBmb3IgdXMgdG8gcmVhbGl6ZSB0aGUgcG9zc2liaWxpdHkgb2Ygc3VjaCBhIHRyYW5zZmVyLiBJIGhhdmUgbXlzZWxmIHNlZW4gaW5zdGFuY2VzIGluIHdoaWNoIHRoaXMgcGhlbm9tZW5vbiB1bmRvdWJ0ZWRseSB0b29rIHBsYWNlLCBhbmQgd3JhcyBldmlkZW5jZWQgYnkgYSB2ZXJ5IGNvbnNpZGVyYWJsZSBsb3NzIG9mIHdlaWdodCBpbiB0aGUgbWVkaXVtJ3MgcGh5c2ljYWwgYm9keS4gU2ltaWxhciBjYXNlcyBhcmVkZXNjcmliZWQgaW4gQ29sb25lbCBPbGNvdHQncyBQZW9wbGUgZnJvbSB0aGUgT3RoZXIgV29ybGQsIGFuZCBpbiBVbiBDYXMgZGUgRGUgbWF0ZXJpYWxpc2F0aW9uLCBieSBNLiBBLiBBa3Nha293LiBUaGUgcmVhc29uIHdoeSB0aGUgYmVpbmdzIGRpcmVjdGluZyBhIHNlYW5jZSBmaW5kIGl0IGVhc2llciB0byBvcGVyYXRlIGluIGRhcmtuZXNzIG9yIGluIHZlcnkgc3ViZHVlZCBsaWdodCB3aWxsIG5vdyBiZSBtYW5pZmVzdCwgc2luY2UgdGhlaXIgcG93ZXIgd291bGQgdXN1YWxseSBiZSBpbnN1ZmZpY2llbnQgdG8gcmVxdWlyZWQuCgoKaG9sZCB0b2dldGhlciBhIG1hdGVyaWFsaXplZCBmb3JtIG9yIGV2ZW4gYSAic3Bpcml0IGhhbmQiIGZvciBtb3JlIHRoYW4gYSB2ZXJ5IGZldyBzZWNvbmRzIGFtaWRzdCB0aGUgaW50ZW5zZSB2aWJyYSB0aW9ucyBzZXQgaWlqKSBieSBicmlsbGlhbnQgbGlnaHQuIFRoZSBoYWJpdHVlcyBvZiBzZWFuY2VzIHdpbGwgbm8gZG91YnQgaGF2ZSBub3RpY2VkIHRoYXQgbWF0ZXJpYWxpLy5hdGlvbnMgYXJlIG9mIHRocmVlIGtpbmRzIDogRmlyc3QsIHRob3NlIHdoaWNoIGFyZSB0YW5naWJsZSBidXQgbm90IHZpc2libGU6IHNlY29uZCwgdGhvc2Ugd2hpY2ggYXJlIHZpc2libGUgYnV0IG5vdCB0YW5naWJsZSA6IGFuZCB0aGlyZCwgdGhvc2Ugd2hpY2ggYXJlIGJvdGggdmlzaWJsZSBhbmQgdGFuZ2libGUuIFRvIHRoZSBmaXJzdCBraW5kLCB3aGljaCBpcyBtdWNoIHRoZSBtb3N0IGNvbW1vbiwgYmVsb25nIHRoZSBpbnZpc2libGUgc3Bpcml0IGhhbmRzIHdoaWNoIHNvIGZyZSBxdWVudGx5IHN0cm9rZSB0aGUgZmFjZXMgb2YgdGhlIHNpdHRlcnMgb3IgY2Fycnkgc21hbGwgb2JqZWN0cyBhYm91dCB0aGUgcm9vbSwgYW5kIHRoZSB2b2NhbCBvcmdhbnMgZnJvbSB3aGljaCB0aGUgIiBkaXJlY3Qgdm9pY2UiIHByb2NlZWRzLiBJbiB0aGlzIGNhc2UsIGFuIG9yZGVyIG9mIG1hdHRlciBpcyBiZWluZyB1c2VkIHdoaWNoIGNhbiBuZWl0aGVyIHJlZmxlY3Qgbm9yIG9ic3RydWN0IGxpZ2h0LCBidXQgd2hpY2ggaXMgY2FwYWJsZSB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMgb2Ygc2V0dGluZyB1cCB2aWJyYXRpb25zIGluIHRoZSBhdG1vc3BoZXJlIHdoaWNoIGFmZmVjdCB1cyBhcyBzb3VuZC4gQSB2YXJpYXRpb24gb2YgdGhpcyBjbGFzcyBpcyB0aGF0IGtpbmQgb2YgcGFydGlhbCBTcGlyaXQgdSBtYXRlcmlhbGkvYXRpb24gd2hpY2gsIHRob3VnaCBpbmNhcGFibGUgb2YgUGhvdG9ncmFwaHMuIHJjZmsuKDt0aW5nIGFueSBIIGh0IHRoYXQgd2MgY2FuIHNjYz4gaXMgeWV0IGFibGUgdG8gYWZmZWN0IHNvbWUgb2YgdGhlIHVsdHJhLXZpb2xldCByYXlzLCBhbmQgY2FuIHRoZXJlZm9yZSBtYWtlIGEgbW9yZSBvciBsZXNzIGRlZmluaXRlIGltcHJlc3Npb24gdXBvbiB0aGUgY2FtZXJhLCBhbmQgc28gcHJvdmlkZSB1cyB3aXRoIHdoYXQgYXJlIGtub3duIGFzICcnc3Bpcml0IHBob3RvZ3JhcGhzLiIgV2hlbiB0aGVyZSBpcyBub3Qgc3VmZmljaWVudCBwb3dlciBhdmFpbGFibGUgdG8gcHJvZHVjZSBhIHBlcmZlY3QgbWF0ZXJpYWxpemF0aW9uIHdlIHNvbWV0aW1lcyBnZXQgdGhlIHZhcG9yb3VzLWxvb2sgaW5nIGZvcm0gd2hpY2ggY29uc3RpdHV0ZXMgb3VyIHNlY29uZCBjbGFzcywgYW5kIGluIHN1Y2ggYSBjYXNlIHRoZSAiIHNwaXJpdHMgIiB1c3VhbGx5IHdhcm4gdGhlaXIgc2l0dGVycyB0aGF0IHRoZSBmb3JtcyB3aGljaCBhcHBlYXIgbXVzdCBub3QgYmUgdG91Y2hlZC4gSW4gdGhlIHJhcmVyIGNhc2Ugb2YgYSBmdWxsIG1hdGVyaWFsaXphdGlvbiB0aGVyZSBpcyBzdWZmaWNpZW50IHBvd2VyIHRvIGhvbGQgdG9nZXRoZXIsIGF0IGxlYXN0IGZvciBhIGZldyBtb21lbnRzLCBhIGZvcm0gd2hpY2ggY2FuIGJlIGJvdGggc2VlbiBhbmQgdG91Y2hlZC4gV2hlbiBhbiBBZGVwdCBvciBwdXBpbCBmaW5kcyBpdCBuZWNlc3NhcnkgZm9yIGFueSBwdXJwb3NlIHRvIG1hdGVyaWFsaXplIGhpcyBtZW50YWwgb3IgYXN0cmFsIHZlaGljbGUsIGhlIGRvZXMgbm90IGRyYXcgdXBvbiBlaXRoZXIgaGlzIG93biBldGhlcmljIGRvdWJsZSBvciBhbnkgb25lCgoKZWxzZSdzLCBzaW5jZSBoZSBoYXMgYmVlbiB0YXVnaHQgaG93IHRvIGV4dHJhY3QgdGhlIG1hdHRlciB3aGljaCBoZSByZXF1aXJlcyBkaXJlY3RseSBmcm9tIHRoZSBzdXJyb3VuZGluZyBldGhlci4gQW5vdGhlciBwaGVub21lbm9uIGNsb3NlbHkgY29ubmVjdGVkIHdpdGggdGhpcyBwYXJ0IG9mIHRoZSBzdWJqZWN0IGlzIHRoYXQgb2YgcmVkdXBsaWNhdGlvbiwgd2hpY2ggaXMgcHJvZHVjZWQgYnkgc2ltcGx5IGZvcm1pbmcgYSBwZXJmZWN0IG1lbnRhbCBpbWFnZSBvZiB0aGUgb2JqZWN0IHRvIGJlIGNvcGllZCwgYW5kIHRoZW4gZ2F0aGVyaW5nIGFib3V0IHRoYXQgbW91bGQgdGhlIG5lY2Vzc2FyeSBhc3RyYWwgYW5kIHBoeXNpY2FsIG1hdHRlci4gT2YgY291cnNlIGZvciB0aGlzIHB1cnBvc2UgaXQgaXMgbmVjZXNzYXJ5IHRoYXQgZXZlcnkgcGFydGljbGUsIGludGVyaW9yIGFzIHdlbGwgYXMgZXh0ZXJpb3IsIG9mIHRoZSBvYmplY3QgdG8gYmUgZHVwbGljYXRlZCBzaG91bGQgYmUgaGVsZCBhY2N1cmF0ZWx5IGluIHZpZXcgc2ltdWx0YW5lb3VzbHksIGFuZCBjb25zZXF1ZW50bHkgdGhlIHBoZW5vbWVub24gaXMgb25lIHdoaWNoIHJlcXVpcmVzIGNvbnNpZGVyYWJsZSBwb3dlciBvZiBjb25jZW50cmF0aW9uIHRvIHBlcmZvcm0uIFBlcnNvbnMgdW5hYmxlIHRvIGV4dHJhY3QgdGhlIG1hdHRlciByZXF1aXJlZCBkaXJlY3RseSBmcm9tIHRoZSBzdXJyb3VuZGluZyBldGhlciBoYXZlIHNvbWV0aW1lcyBib3Jyb3dlZCBpdCBmcm9tIHRoZSBtYXRlcmlhbCBvZiB0aGUgb3JpZ2luYWwgYXJ0aWNsZSwgd2hpY2ggaW4gdGhpcyBjYXNlIHdvdWxkIGJlIGNvcnJlc3BvbmRpbmdseSByZWR1Y2VkIGluIHdlaWdodC4gV2UgcmVhZCBhIGdvb2QgZGVhbCBpbiBUaGVvc29waGljYWwgbGl0ZXJhdHVyZSBhYm91dCB0aGUgcHJlY2lwaXRhdGlvbiBvZiBsZXR0ZXJzIG9yIHBpY3R1cmVzLiBUaGlzIHJlc3VsdCwgbGlrZSBldmVyeXRoaW5nIGVsc2UsIG1heSBiZSBvYnRhaW5lZCBpbiBzZXZlcmFsIHdheXMuIEFuIEFkZXB0IHdpc2hpbmcgdG8gY29tbXVuaWNhdGUgd2l0aCBzb21lIG9uZSBtaWdodCBwbGFjZSBhIHNoZWV0IG9mIHBhcGVyIGJlZm9yZSBoaW0sIGZvcm0gYSBtZW50YWwgaW1hZ2Ugb2YgdGhlIHdyaXRpbmcgd2hpY2ggaGUgd2lzaGVkIHRvIGFwcGVhciB1cG9uIGl0LCBhbmQgZHJhdyBmcm9tIHRoZSBldGhlciB0aGUgbWF0dGVyIHdoZXJld2l0aCB0byBvYmplY3RpZnkgdGhhdCBpbWFnZSA7IG9yIGlmIGhlIHByZWZlcnJlZCB0byBkbyBzbyBpdCB3b3VsZCBiZSBlcXVhbGx5IGVhc3kgZm9yIGhpbSB0byBwcm9kdWNlIHRoZSBzYW1lIHJlc3VsdCB1cG9uIGEgc2hlZXQgb2YgcGFwZXIgbHlpbmcgYmVmb3JlIGhpcyBjb3JyZXNwb25kZW50LCB3aGF0ZXZlciBtaWdodCBiZSB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGVtLiBBIHRoaXJkIG1ldGhvZCB3aGljaCwgc2luY2UgaXQgc2F2ZXMgdGltZSwgaXMgbXVjaCBtb3JlIGZyZXF1ZW50bHkgYWRvcHRlZCwgaXMgdG8gaW1wcmVzcyB0aGUgd2hvbGUgc3Vic3RhbmNlIG9mIHRoZSBsZXR0ZXIgb24gdGhlIG1pbmQgb2Ygc29tZSBwdXBpbCwgYW5kIGxlYXZlIGhpbSB0byBkbyB0aGUgbWVjaGFuaWNhbCB3cm9yayBvZiBwcmVjaXBpdGF0aW9uLiBUaGF0IHB1cGlsIHdvdWxkCgoKdGhlbiB0YWtlIGhpcyBzaGVldCBvZiIgcGFwZXIsIGFuZCwgaW1hZ2luaW5nIGhlIHNhdyB0aGUgbGV0dGVyIHdyaXR0ZW4gdGhlcmVvbiBpbiBoaXMgTWFzdGVyJ3MgaGFuZCwgd291bGQgcHJvY2VlZCB0byBvYmplY3RpZnkgdGhlIHdyaXRpbmcgYXMgYmVmb3JlIGRlc2NyaWJlZC4gSWYgaGUgZm91bmQgaXQgZGlmZmljdWx0IHRvIHBlcmZvcm0gc2ltdWx0YW5lb3VzbHkgdGhlIHR3byBvcGVyYXRpb25zIG9mIGRyYXdpbmcgaGlzIG1hdGVyaWFsIGZyb20gdGhlIHN1cnJvdW5kaW5nIGV0aGVyIGFuZCBwcmVjaXBpdGF0aW5nIHRoZSB3cml0aW5nIG9uIHRoZSBwYXBlciwgaGUgbWlnaHQgaGF2ZSBlaXRoZXIgb3JkaW5hcnkgaW5rIG9yIGEgc21hbGwgcXVhbnRpdHkgb2YgY29sb3VyZWQgcG93ZGVyIG9uIHRoZSB0YWJsZSBiZXNpZGUgaGltLCB3aGljaCwgYmVpbmcgYWxyZWFkeSBkZW5zZSBtYXR0ZXIsIGNvdWxkIGJlIGRyYXduIHVwb24gbW9yZSByZWFkaWx5LiBJdCBpcyBvZiBjb3Vyc2Ugb2J2aW91cyB0aGF0IHRoZSBwb3NzZXNzaW9uIG9mIHRoaXMgcG93ZXIgd291bGQgYmUgYSB2ZXJ5IGRhbmdlcm91cyB3ZWFwb24gaW4gdGhlIGhhbmRzIG9mIGFuIHVuc2NydXB1bG91cyBwZXJzb24sIHNpbmNlIGl0IGlzIGp1c3QgYXMgZWFzeSB0byBpbWl0YXRlIG9uZSBtYW4ncyBoYW5kd3JpdGluZyBhcyBhbm90aGVyJ3MsIGFuZCBpdCB3b3VsZCBiZSBpbXBvc3NpYmxlIHRvIGRldGVjdCBieSBhbnkgb3JkaW5hcnkgbWVhbnMgYSBmb3JnZXJ5IGNvbW1pdHRlZCBpbiB0aGlzIG1hbm5lci4gQSBwdXBpbCBkZWZpbml0ZWx5IGNvbm5lY3RlZCB3aXRoIGFueSBNYXN0ZXIgaGFzIGFsd2F5cyBhbiBpbmZhbGxpYmxlIHRlc3QgYnkgd2hpY2ggaGUga25vd3Mgd2hldGhlciBhbnkgbWVzc2FnZSByZWFsbHkgZW1hbmF0ZXMgZnJvbSB0aGF0IE1hc3RlciBvciBub3QsIGJ1dCBmb3Igb3RoZXJzIHRoZSBwcm9vZiBvZiBpdHMgb3JpZ2luIG11c3QgYWx3YXlzIGxpZSBzb2xlbHkgaW4gdGhlIGNvbnRlbnRzIG9mIHRoZSBsZXR0ZXIgYW5kIHRoZSBzcGlyaXQgYnJlYXRoaW5nIHRocm91Z2ggaXQsIGFzIHRoZSBoYW5kd3JpdGluZywgaG93ZXZlciBjbGV2ZXJseSBpbWl0YXRlZCwgaXMgb2YgYWJzb2x1dGVseSBubyB2YWx1ZSBhcyBldmlkZW5jZS4gQXMgdG8gc3BlZWQsIGEgcHVwaWwgbmV3IHRvIHRoZSB3b3JrIG9mIHByZWNpcGl0YXRpb24gd291bGQgcHJvYmFibHkgYmUgYWJsZSB0byBpbWFnZSBvbmx5IGEgZmV3IHdvcmRzIGF0IGEgdGltZSwgYW5kIHdvdWxkLCB0aGVyZWZvcmUsIGdldCBvbiBoYXJkbHkgbW9yZSByYXBpZGx5IHRoYW4gaWYgaGUgd3JvdGUgaGlzIGxldHRlciBpbiB0aGUgb3JkaW5hcnkgd2F5LCBidXQgYSBtb3JlIGV4cGVyaWVuY2VkIGluZGl2aWR1YWwgd2hvIGNvdWxkIHZpc3VhbGl6ZSBhIHdob2xlIHBhZ2Ugb3IgcGVyaGFwcyB0aGUgZW50aXJlIGxldHRlciBhdCBvbmNlIHdvdWxkIGdldCB0aHJvdWdoIGhpcyB3b3JrIHdpdGggZ3JlYXRlciBmYWNpbGl0eS4gSXQgaXMgaW4gdGhpcyBtYW5uZXIgdGhhdCBxdWl0ZSBsb25nIGxldHRlcnMgYXJlIHNvbWV0aW1lcyBwcm9kdWNlZCBpbiBhIGZldyBzZWNvbmRzIGF0IGEgc3RhbmNlLiBXaGVuIGEgcGljdHVyZSBoYXMgdG8gYmUgcHJlY2lwaXRhdGVkIHRoZSBtZXRob2QgaXMgcHJlY2lzZWx5IHRoZSBzYW1lLCBleGNlcHQgdGhhdCBoZXJlIGl0IGlzIGFic29sdXRlbHkKCgpuZWNlc3NhcnkgdGhhdCB0aGUgZW50aXJlIHNjZW5lIHNob3VsZCBoZSB2aXN1YWxpemVkIGF0IG9uY2UsIGFuZCBpZiBtYW55IGNvbG91cnMgYXJlIHJlcXVpcmVkIHRoZXJlIGlzIHRoZSBhZGRpdGlvbmFsIGNvbXBsaWNhdGlvbiBvZiBtYW51ZmFjdHVyaW5nIHRoZW0sIGtlZXBpbmcgdGhlbSBzZXBhcmF0ZSwgYW5kIHJlcHJvZHVjaW5nIGFjY3VyYXRlbHkgdGhlIGV4YWN0IHRpbnRzIG9mIHRoZSBzY2VuZSB0byBiZSByZXByZXNlbnRlZC4gRXZpZGVudGx5IHRoZXJlIGlzIHNjb3BlIGhlcmUgZm9yIHRoZSBleGVyY2lzZSBvZiB0aGUgYXJ0aXN0aWMgZmFjdWx0eSwgYW5kIGl0IG11c3Qgbm90IGJlIHN1cHBvc2VkIHRoYXQgZXZlcnkgaW5oYWJpdGFudCBvZiB0aGUgYXN0cmFsIHBsYW5lIGNvdWxkIGJ5IHRoaXMgbWV0aG9kIHByb2R1Y2UgYW4gZXF1YWxseSBnb29kIHBpY3R1cmUgOyBhIG1hbiB3aG8gaGFkIGJlZW4gYSBncmVhdCBhcnRpc3QgaW4gbGlmZSwgYW5kIGhhZCB0aGVyZWZvcmUgbGVhcm50IGhvdyB0byBzZWUgYW5kIHdoYXQgdG8gbG9vayBmb3IsIHdvdWxkIGNlcnRhaW5seSBiZSB2ZXJ5IG11Y2ggbW9yZSBzdWNjZXNzZnVsIHRoYW4gdGhlIG9yZGluYXJ5IHBlcnNvbiBpZiBoZSBhdHRlbXB0ZWQgcHJlY2lwaXRhdGlvbiB3aGVuIG9uIHRoZSBhc3RyYWwgcGxhbmUgYWZ0ZXIgZGVhdGguIFRoZSBzbGF0ZS13cml0aW5nLCBmb3IgdGhlIHByb2R1Y3Rpb24gb2Ygd2hpY2ggdW5kZXIgdGVzdCBjb25kaXRpb25zIHNvbWUgb2YgdGhlIGdyZWF0ZXN0IG1lZGl1bXMgaGF2ZSBiZWVuIHNvIGZhbW91cywgaXMgc29tZXRpbWVzIHByb2R1Y2VkIGIgcHJlY2lwaXRhdGlvbiwgdGhvdWdoIG1vcmUgZnJlcXVlbnRseSB0aGUgZnJhZ21lbnQgb2YgcGVuY2lsIGVuY2xvc2VkIGJldHdlZW4gdGhlIHNsYXRlcyBpcyBndWlkZWQgYnkgYSBzcGlyaXQgaGFuZCwgb2Ygd2hpY2ggb25seSBqdXN0IHRoZSB0aW55IHBvaW50cyBzdWZmaWNpZW50IHRvIGdyYXNwIGl0IGFyZSBtYXRlcmlhbGl6ZWQuIEFuIG9jY3VycmVuY2Ugd2hpY2ggb2NjYXNpb25hbGx5IHRha2VzIHBsYWNlIGF0IHNlYW5jZXMsIGFuZCBtb3JlIGZyZXF1ZW50bHkgYW1vbmcgRWFzdGVybiBZb2dpcywgaXMgd2hhdCBpcyBjYWxsZWQgbGV2aXRhdGlvbiB0aGF0IGlzLCB0aGUgZmxvYXRpbmcgb2YgYSBodW1hbiBib2R5IGluIHRoZSBhaXIuIE5vIGRvdWJ0IHdoZW4gdGhpcyB0YWtlcyBwbGFjZSBpbiB0aGUgY2FzZSBvZiBhIG1lZGl1bSwgaGUgaXMgb2Z0ZW4gc2ltcGx5IHVwYm9ybmUgYnkgIiBzcGlyaXQgaGFuZHMsIiBidXQgdGhlcmUgaXMgYW5vdGhlciBhbmQgbW9yZSBzY2llbnRpZmljIG1ldGhvZCBvZiBhY2NvbXBsaXNoaW5nIHRoaXMgZmVhdCB3aGljaCBpcyBhbHdheXMgdXNlZCBpbiB0aGUgRWFzdCwgYW5kIG9jY2FzaW9uYWxseSBoZXJlIGFsc28uIE9jY3VsdCBzY2llbmNlIGlzIGFjcXVhaW50ZWQgd2l0aCBhIG1lYW5zIG9mIG5ldXRyYWxpemluZyBvciBldmVuIGVudGlyZWx5IHJldmVyc2luZyB0aGUgYXR0cmFjdGlvbiBvZiBncmF2aXR5LCBhbmQgaXQgaXMgb2J2aW91cyB0aGF0IGJ5IHRoZSBqdWRpY2lvdXMgdXNlIG9mIHRoaXMgcG93ZXIgYWxsIHRoZSBwaGVub21lbmEgb2YgbGV2aSB0YXRpb24gbWF5IGJlIGVhc2lseSBwcm9kdWNlZC4gSXQgd2FzIG5vIGRvdWJ0IGJ5IGEKCgprbm93bGVkZ2Ugb2YgdGhpcyBzZW52dCB0aGF0IHNvbWUgb2YgdGhlIGFpci1zaGlwcyBvZiBhbmNpZW50IEluZGlhIGFuZCBBdGxhbnRpcyB3ZXJlIHJhaXNlZCBmcm9tIHRoZSBlYXJ0aCBhbmQgbWFkZSBsaWdodCBlbm91Z2ggdG8gaGUgcmVhZGlseSBtb3ZlZCBhbmQgZGlyZWN0ZWQgOyBhbmQgbm90IGltcHJvYmFibHkgdGhlIHNhbWUgYWNxdWFpbnRhbmNlIHdpdGggbmF0dXJlJ3MgZmluZXIgZm9yY2VzIGdyZWF0bHkgZmFjaWxpdGF0ZWQgdGhlIGxhYm91cnMgb2YgdGhvc2Ugd2hvIHJhaXNlZCB0aGUgZW5vcm1vdXMgYmxvY2tzIG9mIHN0b25lIHNvbWV0aW1lcyB1c2VkIGluIGN5Y2xvcGVhbiBhcmNoaXRlY3R1cmUsIG9yIGluIHRoZSBidWlsZGluZyBvZiB0aGUgUHlyYW1pZHMgYW5kIFN0b25lLSBoZW5nZS4gV2l0aCB0aGUga25vd2xlZGdlIG9mIHRoZSBmb3JjZXMgb2YgbmF0dXJlIHdoaWNoIHRoZSBTIGlyaXQgcjxeUyg+dXJjZXMgb2YgdGhlIGFzdHJhbCBwbGFuZSBwbGFjZSBhdCB0aGUgTGlnaHRzLiDigKLigKJvbW1hbmQgb2YgaXRzIGluaGFiaXRhbnRzIHRoZSBwcm9kdWN0aW9uIG9mIHdoYXQgYXJlIGNhbGxlZCAic3Bpcml0IGxpZ2h0cyIgaXMgYSB2ZXJ5IGVhc3kgbWF0dGVyLCB3aGV0aGVyIHRoZXkgYmUgb2YgdGhlIG1pbGRseSBwaG9zcGhvcmVzY2VudCBvciB0aGUgZGF6emxpbmcgZWxlY3RyaWNhbCB2YXJpZXR5LCBvciB0aG9zZSBjdXJpb3VzIGRhbmNpbmcgZ2xvYnVsZXMgb2YgbGlnaHQgaW50byB3aGljaCBhIGNlcnRhaW4gY2xhc3Mgb2YgZmlyZSBlbGVtZW50YWxzIHNvIHJlYWRpbHkgdHJhbnNmb3JtIHRoZW1zZWx2ZXMuIFNpbmNlIGFsbCBsaWdodCBjb25zaXN0cyBzaW1wbHkgb2YgdmlicmF0aW9ucyBvZiB0aGUgZXRoZXIsIGl0IGlzIG9idmlvdXMgdGhhdCBhbnkgb25lIHdobyBrbm93cyBob3cgdG8gc2V0IHVwIHRoZXNlIHZpYnJhdGlvbnMgY2FuIHJlYWRpbHkgcHJvZHVjZSBhbnkga2luZCBvZiBsaWdodCB0aGF0IGhlIHdpc2hlcy4gSXQgaXMgYnkgdGhlIGFpZCBvZiB0aGUgZXRoZXJpYyBlbGVtZW50YWwgZXNzZW5jZSBhbHNvIHRoYXQgSGFuZGxpbiAtXiByY21hcmtpaWJsZSBeYXQgb2YgaGFuZGxpbmcgZmlyZSB1bmhhcm1lZCBhRmlyZS5uUiAncyBLQ0lIJ3JhSTE+JyBwZXJmb3JtZWQsIHRob3VnaCB0aGVyZSBhcmUgYXMgdXN1YWwgb3RoZXIgd2F5cyBpbiB3aGljaCBpdCBjYW4gYmUgZG9uZS4gJzEgaGUgdGhpbm5lc3QgbGF5ZXIgb2YgZXRoZXJpYyBzdWJzdGFuY2UgY2FuIGJlIHNvIG1hbmlwdSBsYXRlZCBhcyB0byBiZSBhYnNvbHV0ZWx5IGltcGVydmlvdXMgdG8gaGVhdCwgYW5kIHdoZW4gdGhlIGhhbmQgb2YgYSBtZWRpdW0gb3Igc2l0dGVyIGlzIGNvdmVyZWQgd2l0aCB0aGlzIGhlIG1heSBwaWNrIHVwIGJ1cm5pbmcgY29hbCBvciByZWQtaG90IGlyb24gd2l0aCBwZXJmZWN0IHNhZmV0eS4gTW9zdCBvZiB0aGUgb2NjdXJyZW5jZXMgb2YgdGhlIHN0YW5jZS1yb29tIGhhdmUgbm93IGJlZW4gcmVmZXJyZWQgdG8sIGJ1dCB0aGVyZSBhcmUgb25lIG9yIHR3byBvZiB0bnQqIHJhcmVyIHBoZW5vbWVuYSBvZiB0aGUgb3V0ZXIgd29ybGQgd2hpY2ggbXVzdCBub3QgYmUgbGVmdCBxdWl0ZSB3aXRob3V0IG1lbnRpb24gaW4gb3VyIGxpc3QuIFRoZSB0cmFuc211dGF0aW9uIG9mIG1ldGFscyBpcyBjb21tb25seSBzdXBwb3NlZCB0bwoKCmJlIGEgbWVyZSBkcmVhbSBvZiB0aGUgbWVkaWFldmFsIGFsY2hlbWlzdHMsIGFuZCBubyBkb3VidCBpbiBtb3N0IGNhc2VzIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgcGhlbm9tZW5vbiB3YXMgbWVyZWx5IGEgc3ltYm9sIG9mIHRoZSBwdXJpZmljYXRpb24gb2YgdGhlIHNvdWwgOyB5ZXQgdGhlcmUgc2VlbXMgdG8gYmUgc29tZSBldmlkZW5jZSB0aGF0IGl0IHdhcyByZWFsbHkgYWNjb21wbGlzaGVkIGJ5IHRoZW0gb24gc2V2ZXJhbCBvY2Nhc2lvbnMsIGFuZCB0aGVyZSBhcmUgcGV0dHkgbWFnaWNpYW5zIGluIHRoZSBFYXN0IHdobyBwcm9mZXNzIHRvIGRvIGl0IHVuZGVyIHRlc3QgY29uZGl0aW9ucyBldmVuIG5vdy4gQmUgdGhhdCBhcyBpdCBtYXksIGl0IGlzIGV2aWRlbnQgdGhhdCBzaW5jZSB0aGUgdWx0aW1hdGUgYXRvbSBpcyBvbmUgYW5kIHRoZSBzYW1lIGluIGFsbCBzdWJzdGFuY2VzLCBhbmQgaXQgaXMgb25seSB0aGUgbWV0aG9kcyBvZiBpdHMgY29tYmluYXRpb24gdGhhdCBkaWZmZXIsIGFueSBvbmUgd2hvIHBvcyBzZXNzZWQgdGhlIHBvd2VyIG9mIHJlZHVjaW5nIGEgcGllY2Ugb2YgbWV0YWwgdG8gdGhlIGF0b21pYzogY29uZGl0aW9uIGFuZCBvZiByZS1hcnJhbmdpbmcgaXRzIGF0b21zIGluIHNvbWUgb3RoZXIgZm9ybSB3b3VsZCBoYXZlIG5vIGRpZmZpY3VsdHkgaW4gZWZmZWN0aW5nIHRyYW5zbXV0YXRpb24gdG8gYW55IGV4dGVudCB0aGF0IGhlIHdpc2hlZC4gVGhlIHByaW5jaXBsZSBvZiBzeW1wYXRoZXRpYyB2aWJyYXRpb24gbWVudGlvbmVkIGFib3ZlIGFsc28gcHJvdmlkZXMgdGhlIGV4cGxhbmF0aW9uIG9mIHRoYXQgc3RyYW5nZSBhbmQgbGl0dGxlLWtub3duIHBoZW5vbWVub24gY2FsbGVkIHJlcGVyLSBDVXNzaXhtIGN1c3Npb24sIGJ5IG1lYW5zIG9mIHdoaWNoIGFueSBpbmp1cnkgZG9uZSB0bywgb3IgYW55IG1hcmsgbWFkZSB1cG9uLCB0aGUgbWF0ZXJpYWxpLy5lZCBib2R5IGluIHRoZSBjb3Vyc2Ugb2YgaXRzIHdhbmRlcmluZ3Mgd2lsbCBiZSByZXByb2R1Y2VkIGluIHRoZSBwaHlzaWNhbCBib2R5LiBcVmUgZmluZCB0cmFjZXMgb2YgdGhpcyBpbiBzb21lIG9mIHRoZSBldmlkZW5jZSBnaXZlbiBhdCB0cmlhbHMgZm9yIHdpdGNoY3JhZnQgaW4gdGhlIC5taWRkbGUgYWdlcywgaW4gd2hpY2ggaXQgaXMgbm90IGluZnJlcXVlbnRseSBzdGF0ZWQgdGhhdCBzb21lIHdvdW5kIGdpdmVuIHRvIHRoZSB3aXRjaCB3aGVuIGluIHRoZSBmb3JtIG9mIGEgZG9nIG9yIGEgd29sZiB3YXMgZm91bmQgdG8gaGF2ZSBhcHBlYXJlZCBpbiB0aGUgY29ycmVzcG9uZGluZyBwYXJ0IG9mIGhlciBodW1hbiBib2R5LiBUaGUgc2FtZSBzdHJhbmdlIGxhdyBoYXMgc29tZXRpbWVzIGxlZCB0byBhbiBlbnRpcmVseSB1bmp1c3QgYWNjdXNhdGlvbiBvZiBmcmF1ZCBhZ2FpbnN0IGEgbWVkaXVtLCBiZWNhdXNlLCBmb3IgZXhhbXBsZSwgc29tZSBjb2xvdXJpbmcgbWF0dGVyIHJ1YmJlZCB1cG9uIHRoZSBoYW5kIG9mIGEgbWF0ZXJpYWxpemVkICIgc3Bpcml0ICIgd2FzIGFmdGVyd2FyZHMgZm91bmQgdXBvbiBoaXMgaGFuZOKAlCB0aGUgZXhwbGFuYXRpb24gYmVpbmcgdGhhdCBpbiB0aGF0IGNhc2UsIGFzIHNvIG9mdGVuIGhhcHBlbnMsIHRoZSAiIHNwaXJpdCAiIHdhcyBzaW1wbHkgdGhlIG1lZGl1bSdzIGV0aGVyaWMgZG91YmxlLCBmb3JjZWQgYnkgdGhlIGd1aWRpbmcgaW5mbHVlbmNlcyB0byB0YWtlIHNvbWUgZm9ybSBvdGhlciB0aGFuIGhpcyBvd24uIEluIGZhY3QgdGhlc2UgdHdvIHBhcnRzCgoKb2YgdGhlIHBoeXNpY2FsIGJvZHkgYXJjIHNvIGludGltYXRlbHkgY29ubmVjdGVkIHRoYXQgaXQgaW1wb3NzaWJsZSB0byB0b3VjaCB0aGUga2V5bm90ZSBvZiBvbmUgd2l0aG91dCBpbW1lIGRpYXRlbHkgc2V0dGluZyB1cCBleGFjdGx5IGNvcnJlc3BvbmRpbmcgdmlicmF0aW9ucyBpbiB0aGUgb3RoZXIuCgoKQ09OQ0xVU0lPTgoKCklUIGlzIGhvcGVkIHRoYXQgYW55IHJlYWRlciB3aG8gbGlhcyBiZWVuIHN1ZmZpY2llbnRseSBpbnRlcmVzdGVkIHRvIGZvbGxvdyB0aGlzIHRyZWF0aXNlIHRodXMgZmFyLCBtYXkgYnkgdGhpcyB0aW1lIGhhdmUgYSBnZW5lcmFsIGlkZWEgb2YgdGhlIGFzdHJhbCBwbGFuZSBhbmQgaXRzIHBvc3NpYmlsaXRpZXMsIHN1Y2ggYXMgd2lsbCBlbmFibGUgaGltIHRvIHVuZGVyc3RhbmQgYW5kIGZpdCBpbnRvIHRoZWlyIHByb3BlciBwbGFjZXMgaW4gaXRzIHNjaGVtZSBhbnkgZmFjdHMgaW4gY29ubmVjdGlvbiB3aXRoIGl0IHdoaWNoIGhlIG1heSBwaWNrIHVwIGluIGhpcyByZWFkaW5nLiBUaG91Z2ggb25seSB0aW5yb3VnaGVzdCBza2V0Y2ggaGFzIGJlZW4gZ2l2ZW4gb2YgYSB2ZXJ5IGdyZWF0IHN1YmplY3QsIGVub3VnaCBoYXMgcGVyaGFwcyBiZWVuIHNhaWQgdG8gc2hvdyB0aGUgZXh0cmVtZSBpbXBvcnRhbmNlIG9mIGFzdHJhbCBwZXJjZXB0aW9uIGluIHRoZSBzdHVkeSBvZiBiaW9sb2d5LCBwaHlzaWNzLCBjaGVtaXN0cnksIGFzdHJvbm9teSwgbWVkaWNpbmUsIGFuZCBoaXN0b3J5LCBhbmQgdGhlIGdyZWF0IGltcHVsc2Ugd2hpY2ggbWlnaHQgYmUgZ2l2ZW4gdG8gYWxsIHRoZXNlIHNjaWVuY2VzIGJ5IGl0cyBkZXZlbG9wbWVudC4gVmV0IGl0cyBhdHRhaW5tZW50IHNob3VsZCBuZXZlciBiZSByZWdhcmRlZCBhcyBhbiBlbmQgaW4gaXRzZWxmLCBzaW5jZSBhbnkgbWVhbnMgYWRvcHRlZCB3aXRoIHRoYXQgb2JqZWN0IGluIHZpZXcgd291bGQgaW5ldml0YWJseSBsZWFkIHRvIHdoYXQgaXMgY2FsbGVkIGluIHRoZSBFYXN0IHRoZSBsYXVraWthIG1ldGhvZCBvZiBkZXZlbG9wbWVudOKAlCBhIHN5c3RlbSBieSB3aGljaCBjZXJ0YWluIHBzeWNoaWMgcG93ZXJzIGFyZSBpbmRlZWQgYWNxdWlyZWQsIGJ1dCBvbmx5IGZvciB0aGUgcHJlc2VudCBwZXJzb25hbGl0eSA7IGFuZCBzaW5jZSB0aGVpciBhY3F1aXNpdGlvbiBpcyBzdXIgcm91bmRlZCBieSBubyBzYWZlZ3VhcmRzLCB0aGUgc3R1ZGVudCBpcyBleHRyZW1lbHkgbGlrZWx5IHRvIG1pc3VzZSB0aGVtLiBUbyB0aGlzIGNsYXNzIGJlbG9uZyBhbGwgc3lzdGVtcyB3aGljaCBpbnZvbHZlIHRoZSB1c2Ugb2YgZHJ1Z3MsIGludm9jYXRpb24gb2YgZWxlbWVudGFscywgb3IgdGhlIHByYWN0aWNlcyBvZiBIYXRoYSBZb2dhLiBUaGUgb3RoZXIgbWV0aG9kLCB3aGljaCBpcyBjYWxsZWQgdGhlIGxva290dGFyYV4gY29uc2lzdHMgb2YgUmFqIFlvZ2Egb3Igc3Bpcml0dWFsIHByb2dyZXNzLCBhbmQgdGhvdWdoIGl0IG1heSBiZSBzb21ld2hhdCBzbG93ZXIgdGhhbiB0aGUgb3RoZXIsIHdoYXRldmVyIGlzCgoKYWNxdWlyZWQgYWxvbmcgdGhpcyBsaW5lIGlzIGdhaW5lZCBmb3IgdGhlIHBlcm1hbmVudCBpbmRpdmlkdWFsaXR5LCBhbmQgbmV2ZXIgbG9zdCBhZ2Fpbiwgd2hpbGUgdGhlIGd1aWRpbmcgY2FyZSBvZiBhIE1hc3RlciBlbnN1cmVzIHBlcmZlY3Qgc2FmZXR5IGZyb20gbWlzdXNlIG9mIHBvd2VyIGFzIGxvbmcgYXMgaGlzIG9yZGVycyBhcmUgc2NydXB1bG91c2x5IG9iZXllZC4gVGhlIG9wZW5pbmcgb2YgYXN0cmFsIHZpc2lvbiBtdXN0IGJlIHJlZ2FyZGVkIHRoZW4gb25seSBhcyBhIHN0YWdlIGluIHRoZSBkZXZlbG9wbWVudCBvZiBzb21ldGhpbmcgaW5maW5pdGVseSBub2JsZXIgbWVyZWx5IGFzIGEgc3RlcCwgYW5kIGEgdmVyeSBzbWFsbCBzdGVwLCBvbiB0aGF0IGdyZWF0IFVwd2FyZCBQYXRoIHdoaWNoIGxlYWRzIG1lbiB0byB0aGUgc3VibGltZSBoZWlnaHRzIG9mIEFkZXB0c2hpcCwgYW5kIGJleW9uZCBldmVuIHRoYXQgdGhyb3VnaCBnbG9yaW91cyB2aXN0YXMgb2Ygd2lzZG9tIGFuZCBwb3dlciBzdWNoIGFzIG91ciBmaW5pdGUgbWluZHMgY2Fubm90IG5vdyBjb25jZWl2ZS4gWWV0IGxldCBubyBvbmUgdGhpbmsgaXQgYW4gdW5taXhlZCBibGVzc2luZyB0byBoYXZlIHRoZSB3aWRlciBzaWdodCBvZiB0aGUgYXN0cmFsIHBsYW5lLCBmb3IgdXBvbiBvbmUgaW4gd2hvbSB0aGF0IHZpc2lvbiBpcyBvcGVuZWQgdGhlIHNvcnJvdyBhbmQgbWlzZXJ9JywgdGhlIGV2aWwgYW5kIHRoZSBncmVlZCBvZiB0aGUgd29ybGQgcHJlc3MgYXMgYW4gZXZlci1wcmVzZW50IGJ1cmRlbiwgdW50aWwgaGUgb2Z0ZW4gZmVlbHMgaW5jbGluZWQgdG8gZWNobyB0aGUgcGFzc2lvbmF0ZSBhZGp1cmF0aW9uIG9mIFNjaGlsbGVyIDogIiBXaHkgaGFzdCB0aG91IGNhc3QgbWUgdGh1cyBpbnRvIHRoZSB0b3duIG9mIHRoZSBldmVyLWJsaW5kLCB0byBwcm9jbGFpbSB0aGluZSBvcmFjbGUgd2l0aCB0aGUgb3BlbmVkIHNlbnNlID8gVGFrZSBiYWNrIHRoaXMgc2FkIGNsZWFyLXNpZ2h0ZWRuZXNzIDsgdGFrZSBmcm9tIG1pbmUgZXllcyB0aGlzIGNydWVsIGxpZ2h0IEkgKGxpdmUgbWUgYmFjayBteSBibGluZG5lc3MgdGhlIGhhcHB5IGRhcmtuZXNzIG9mIG15IHNlbnNlcyA6IHRha2UgYmFjayB0aHkgZHJlYWRmdWwgZ2lmdCAhJyBUaGlzIGZlZWxpbmcgaXMgcGVyaGFwcyBub3QgYW4gdW5uYXR1cmFsIG9uZSBpbiB0aGUgZWFybGllciBzdGFnZXMgb2YgdGhlIFBhdGgsIHlldCBoaWdoZXIgc2lnaHQgYW5kIGRlZXBlciBrbm93bGVkZ2Ugc29vbiBicmluZyB0byB0aGUgc3R1ZGVudCB0aGUgcGVyZmVjdCBjZXJ0YWludHkgdGhhdCBhbGwgdGhpbmdzIGFyY3dvcmtpbmcgdG9nZXRoZXIgZm9yIHRoZSBldmVudHVhbCBnb29kIG9mIGFsbCB0aGF0IEhvdXIgYWZ0ZXIgaG91ciwgbGlrZSBhbiBvcGVuaW5nIGZsb3dlciwgU2hhbGwgdHJ1dGggYWZ0ZXIgdHJ1dGggZXhwYW5kIDsgRm9yIHRoZSBzdW4gbWF5IHBhbGUsIGFuZCB0aGUgc3RhcnMgbWF5IGZhaWwsIEJ1dCB0aGUgTEFXIG9mIEdPT0Qgc2hhbGwgc3RhbmQuIEl0cyBzcGxlbmRvdXIgZ2xvd3MgYW5kIGl0cyBpbmZsdWVuY2UgZ3Jvdy5zIEFzIE5hdHVyZSdzIHNsb3cgd29yayBhcHBlYXJzLCBGcm9tIHRoZSB6b29waHl0ZSBzbWFsbCB0byB0aGUgTE9SRFMgb2YgYWxsLiBUaHJvdWdoIGthbHBhcyBhbmQgY3JvcmVzIG9mIHllYXJzLiBXaWxsaWFtIFJ5bGVzICYgU29ucywgUHJpbnRlcnMsIDEyOSBGbGVldCBTdHJlZXQsIExvbmRvbiwgYW5kIEJyYWRmb3JkLg==
sabato 1 gennaio 2000
[AL CORPUS] The Astral Plane [2/2]
Iscriviti a:
Commenti sul post (Atom)
[AL CORPUS] Occult Chemistry [2/2]
VGhlc2UgdW5pdHMgYXJlIGFsbCBhbGlrZSwgc3BoZXJpY2FsIGFuZCBhYnNvbHV0ZWx5IHNpbXBsZSBpbiAKY29uc3RydWN0aW9uLiBUaG91Z2ggdGhleSBhcmUgdGhlIGJhc2lzIG9m...
-
VGhlc2UgdW5pdHMgYXJlIGFsbCBhbGlrZSwgc3BoZXJpY2FsIGFuZCBhYnNvbHV0ZWx5IHNpbXBsZSBpbiAKY29uc3RydWN0aW9uLiBUaG91Z2ggdGhleSBhcmUgdGhlIGJhc2lzIG9m...
-
XFwiXiAKCgpzICwgCgoKLl4gCgoKT0NDVUxUIENIRU1JU1RSWSAKCgpDbGFpcnZveWFudCBPYnNlcnZhdGlvbnMgb24gdGhlIApDaGVtaWNhbCBFbGVtZW50cyAKCgpCWSAKCgpBTk5J...
-
VEhPVUdIVC1GT1JNUyAKCgpCWSAKCkFOTklFIEJFU0FOVCAKCkFORCAKCkMuIFcuIExFQUQgQkVBVEVSIAoKCldJVEggRklGVFktRUlHSFQgSUxMVVNUUkFUSU9OUyAKCgpMT05ET04g...
Nessun commento:
Posta un commento