PGh0bWw+CjxoZWFkPgo8dGl0bGU+V1RQIFBNQyBNaW51dGVzIGZvciBNYXJjaCAxNSwgMjAwNSBDb25mZXJlbmNlIENhbGw8L3RpdGxlPgo8L2hlYWQ+Cgo8Ym9keSBhbGluaz0iI2ZmMDAwMCIgYmdjb2xvcj0iI2ZmZmZmZiIgbGluaz0iIzAwMDBlZSIgdGV4dD0iIzAwMDAwMCIgdmxpbms9IiM1NTFhOGIiPgo8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiIHdpZHRoPSIxMDAlIj4KICA8dGJvZHk+PHRyPiAKICAgIDx0ZCBjb2xzcGFuPSIyIiBhbGlnbj0ibGVmdCIgYmdjb2xvcj0iIzAwODBjMCIgdmFsaWduPSJ0b3AiPjxiPgogICAgPGZvbnQgY29sb3I9IiNmZmZmZmYiIGZhY2U9IkFyaWFsLEhlbHZldGljYSI+UE1DIENvbmZlcmVuY2UgQ2FsbCAtIE1hcmNoIDE1LCAyMDA1PC9mb250PjwvYj48L3RkPgoKICA8L3RyPgogIDwvdGJvZHk+PC90YWJsZT4KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1IiB3aWR0aD0iMTAwJSI+CiAgPHRib2R5Pjx0cj4gCiAgICA8dGQ+IApBdHRlbmRpbmc6IFRpbSBXYWduZXIgW1RXXSwgQXJ0aHVyIFJ5bWFuIFtBUl0sIERhdmlkIFdpbGxpYW1zIFtEV10sIERvbWluaXF1ZSBEZSBWaXRvIFtEVl0sIEpvY2hlbiBLcmF1c2UgW0pLXQoKT3RoZXJzOiBMYXdyZW5jZSBNYW5kZWwgKHJlcHJlc2VudGluZyBXVFAgY29tbXVuaXR5KSBbTE1dCgogCgo8aDI+UHJvY2VkdXJhbCBtYXR0ZXJzIJYgbm9uZTwvaDI+Cgo8aDI+Q29tbXVuaXR5IGZyb20gTGF3cmVuY2UgTWFuZGVsPC9oMj4KCjx1bD4KCjxsaT5XLVMgdmFsaWRhdGlvbiBwcm9qZWN0IGFwcHJvdmVkIHRvIG1vdmUgaW50byBXVFA7IGNvZGUgd2lsbCBiZSBtZXJnZWQgdGhpcyB3ZWVrIChpbmNsdWRlcyB0aGUgU09BUCBtb25pdG9yKQoKPGxpPkhlbHAgc3lzdGVtIHdvcmsgaW4gZmxpZ2h0OyBob3BpbmcgdG8gaGF2ZSBpdCB1cCB0aGlzIHdlZWsKCjxsaT5FeHRlcm5hbCBjb21tdW5pY2F0aW9ucyCWIE9PUFNMQSBjb21pbmcgdXAuIExNIHdpbGwgYmUgc3VibWl0dGluZyBhIHR1dG9yaWFsLCBkZW1vLCBhbmQgcG9zc2libHkgYSBwYW5lbCBzZXNzaW9uOyB0aGVtZSB3aWxsIGJlIJNVc2luZyBXVFAgZm9yIHRlYWNoaW5nIEoyRUWULgoKPGxpPkZvciB0aGlzIGFuZCBhbnkgb3RoZXIgZXh0ZXJuYWwgY29tbXVuaWNhdGlvbiwgcGxlYXNlIGxldCBMTSBrbm93IHNvIHRoYXQgaGUgY2FuIHBvc3QgZXZlbnRzIHRvIHRoZSBjb21tdW5pdHkgcGFnZSwgYW5kIGFsc28gc2VydmUgYXMgYSBjbGVhcmluZyBob3VzZSBmb3Igc2xpZGUgZGVja3MgYW5kIG90aGVyIHNoYXJlYWJsZSBtYXRlcmlhbC4KCjxsaT5Eb3dubG9hZCBzdGF0aXN0aWNzLiBUaGVzZSBhcmUgdHJhY2tlZCB3aGVuIGRvd25sb2FkcyBhcmUgcGVyZm9ybWVkIHRocm91Z2ggdGhlIGNvcnJlY3QgUEhQIHNjcmlwdC4gSksgcG9pbnRlZCBvdXQgdGhhdCB3ZSB3YW50IHRvIHRyYWNrIG91ciBkb3dubG9hZCBmcmVxdWVuY3kgc28gdGhhdCB3ZSBjYW4gbW9uaXRvciBvdmVyYWxsIHVzZSBhcyB3ZWxsIGFzIGNoYW5nZXMgdy5yLnQuIFdUUCBldmVudHMuIERvd25sb2FkIHN0YXRpc3RpY3MgY2FuIGJlIHRyYWNrZWQgYXQKCjxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZG93bmxvYWRzL3N0YXRzLnBocD9maWxlbmFtZT13dHAtIj4gd3d3LmVjbGlwc2Uub3JnL2Rvd25sb2Fkcy9zdGF0cy5waHA/ZmlsZW5hbWU9d3RwLTwvYT4uIERXIHJlcG9ydGVkIHRoYXQgd2WScmUgYXJvdW5kIDIwSyBkb3dubG9hZHMgZm9yIE0zLiBMTSB3aWxsIHBlcmlvZGljYWxseSByZXBvcnQgb24gY2hhbmdlcyBpbiBkb3dubG9hZCBmcmVxdWVuY3kuCgo8L3VsPgoKIAoKW1BNQyBtZW1iZXJzIG9ubHkgZm9yIHRoZSByZW1haW5pbmcgcG9ydGlvbiBvZiB0aGUgbWVldGluZ10KCiAKCiAKCjxoMj5SZXF1aXJlbWVudHMgZ3JvdXAgW0pLXSA8L2gyPgoKPHVsPgoKPGxpPkJFQSBub21pbmF0ZWQgUGF1bCBNZWlqZXIgdG8gd29yayB3aXRoIEpvY2hlbgoKPGxpPkpvY2hlbiB3b3JraW5nIGluZGVwZW5kZW50bHkgZm9yIHBhc3Qgd2Vlazsgd2lsbCBzZXQgZGF0ZSBmb3IgaW5pdGlhbCBtZWV0aW5nIHdpdGggUGF1bCBhbmQgb3RoZXIgaW50ZXJlc3RlZCBwYXJ0aWVzIHRoaXMgd2VlawoKPC91bD4KCiAKCjxoMj5BcmNoaXRlY3R1cmUgR3JvdXAgW0RXXTwvaDI+Cgo8dWw+Cgo8bGk+S2V2aW4gSGFhbGFuZCBhbmQgVGVkIEJhc2hvciBqb2luZWQgdGhlIGdyb3VwCgo8bGk+U3BlbnQgYSBzaWduaWZpY2FudCBhbW91bnQgb2YgdGltZSBkaXNjdXNzaW5nIJNvcGVyYXRpb25zlCwgYW5kIHRoZSBkaWZmZXJpbmcgZnJhbWV3b3JrcyBmb3IgdGhlbS4gS2V2aW4gcmVwb3J0ZWQgdGhhdCBwbGF0Zm9ybSBpcyBhdHRlbXB0aW5nIHRvIGRyaXZlIGFkb3B0aW9uIG9mIGEgc2luZ2xlIHNvbHV0aW9uLgoKPGxpPk90aGVyIGlzc3VlcyBpbmNsdWRlZCBhbiBlZGl0IG1vZGVsIGluIEVNRiBhbmQgbW92aW5nIHRoZSBleHRlbnNpYmxlIG5hdmlnYXRvciB0byB0aGUgcGxhdGZvcm0gZnJvbSBXVFAuCgo8bGk+UHJvY2VzcyBpbnZvbHZlcyB3ZWVrbHkgY29uZmVyZW5jZSBjYWxscyBmb3IgdGhlIGdyb3VwLCBjb21tdW5pdHkgcmV2aWV3IG9mIHByb3Bvc2FscyAoc2VlIGJlbG93KSwgYW5kIGFyY2hpdGVjdHVyYWwgcmV2aWV3cyB3aXRoIGNvbXBvbmVudCBsZWFkcy4gSW5kaXZpZHVhbHMgd2lsbCBiZSBzZWxlY3RlZCB0byBkcml2ZSBjcm9zcy1wcm9qZWN0IG9yIGNyb3NzLWNvbXBvbmVudCAod2l0aGluIFdUUCkgYXJjaGl0ZWN0dXJhbCBjaGFsbGVuZ2VzLgoKPGxpPkJ1Z3ppbGxhIGVudHJpZXMgZmlsZWQgYnkgYXJjaGl0ZWN0dXJlIGdyb3VwIGZvciBjaGFuZ2VzIHRoYXQgbmVlZCB0byBiZSBtYWRlIG9yIGlzc3VlcyBiZWluZyB0cmFja2VkIGNhbiBiZSBmb3VuZCBhdAogIDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL2J1Z2xpc3QuY2dpP3F1ZXJ5X2Zvcm1hdD1hZHZhbmNlZCZhbXA7c2hvcnRfZGVzY190eXBlPWFsbHdvcmRzc3Vic3RyJmFtcDtzaG9ydF9kZXNjPSU1QmFyY2glNUQmYW1wO3Byb2R1Y3Q9V2ViK1Rvb2xzJmFtcDtsb25nX2Rlc2NfdHlwZT1hbGx3b3Jkc3N1YnN0ciZhbXA7bG9uZ19kZXNjPSZhbXA7YnVnX2ZpbGVfbG9jX3R5cGU9YWxsd29yZHNzdWJzdHImYW1wO2J1Z19maWxlX2xvYz0mYW1wO2tleXdvcmRzX3R5cGU9YWxsd29yZHMmYW1wO2tleXdvcmRzJmFtcDtidWdfc3RhdHVzPU5FVyZhbXA7YnVnX3N0YXR1cz1BU1NJR05FRCZhbXA7YnVnX3N0YXR1cz1SRU9QRU5FRCZhbXA7ZW1haWx0eXBlMT1zdWJzdHJpbmcmYW1wO2VtYWlsMT0mYW1wO2VtYWlsdHlwZTI9c3Vic3RyaW5nJmFtcDtlbWFpbDI9JmFtcDtidWdpZHR5cGU9aW5jbHVkZSZhbXA7YnVnX2lkPSZhbXA7dm90ZXM9JmFtcDtjaGZpZWxkZnJvbT0mYW1wO2NoZmllbGR0bz1Ob3cmYW1wO2NoZmllbGR2YWx1ZT0mYW1wO2NtZHR5cGU9ZG9pdCZhbXA7b3JkZXI9UmV1c2Urc2FtZStzb3J0K2FzK2xhc3QrdGltZSZhbXA7ZmllbGQwLTAtMD1ub29wJmFtcDt0eXBlMC0wLTA9bm9vcCZhbXA7dmFsdWUwLTAtMD0iPnRoaXMKICBVUkw8L2E+LgoKPC91bD4KCiAKCiAKCjxoMj5CdW5kbGVkIFdUUCBEb3dubG9hZHMgW0FSXTwvaDI+Cgo8dWw+Cgo8bGk+VHdvIGJ1bmRsZWQgcGFja2FnZXMgYXZhaWxhYmxlOiBvbmUgd2l0aCBlY2xpcHNlLCB3dHAsIGVtZiwgZ2VmLCBqZW0sIGFuZCB4ZXJjZXMsIGFub3RoZXIgd2l0aCBhbGwgb2YgdGhhdCA8ZW0+YnV0PC9lbT5lY2xpcHNlCgo8bGk+UGxhbiBpcyB0byBkbyB0aGlzIGZvciBlYWNoIG1pbGVzdG9uZTsgSmVmZnJleSBMaXUgb3ducyB1cGRhdGluZyBidWlsZCBzY3JpcHRzIHRvIGRvIHRoaXMgYXV0b21hdGljYWxseS4KCjwvdWw+CgogCgo8aDI+d3RwLXBtYyBtYWlsaW5nIGxpc3Q8L2gyPgoKPHVsPgoKPGxpPkZvciBtYXhpbXVtIHRyYW5zcGFyZW5jeSBvZiBvdXIgb3BlcmF0aW9ucywgdGhlIFdUUCBQTUMgYWdyZWVkIHRvIGRpc2JhbmQgdGhlIE9iamVjdFdlYi1ob3N0ZWQgbWFpbGluZyBsaXN0IGFuZCByZWNyZWF0ZSBvbmUgb2YgdGhlIHNhbWUgbmFtZSBob3N0ZWQgb24gRWNsaXBzZS4gSXQgd291bGQgY29udGludWUgdG8gYmUgdXNlZCBmb3IgYWRtaW5pc3RyYXRpdmUgcHVycG9zZXMsIGFuZCB3ZSB3b3VsZCBkaXNjb3VyYWdlIHRocmVhZHMgYmV0dGVyIGV4cHJlc3NlZCBvbiB3dHAtZGV2LgoKPC91bD4KCiAKCjxoMj5BUElzPC9oMj4KCjx1bD4KCjxsaT5KZWZmcmV5IExpdSBoYW5kbGluZyB0aGUgc2Nhbm5pbmcgcHJvY2Vzcy4KCjxsaT5jb21wb25lbnQueG1sIHVwZGF0ZXMgYXJlIGluIGZsaWdodDsgd291bGQgbGlrZSB0byBzZWUgdGhpcyBmaW5pc2hlZCBxdWlja2x5LCBidXQgRFcgcmVwb3J0cyB0aGF0IG5vdCBhbGwgY29tcG9uZW50IHRlYW1zIGNhbiBjb21wbGV0ZSB0aGUgd29yayB0aGlzIHdlZWs7IHRoaXMgd2lsbCBiZSB0aGUgZmlyc3Qgc3RlcCBpbiBkaXN0aW5ndWlzaGluZyBvdXIgdHJ1ZSBBUEkKCjxsaT5yZW5hbWluZyBub24tQVBJIHB1YmxpYyBtZXRob2RzIHRvIJOFaW50ZXJuYWyUIGlzIGluIGZsaWdodAoKPGxpPnVzZSBvZiB0aGUgk2ludGVybmFsLnByb3Zpc2lvbmFslCBuYW1pbmcgc2NoZW1lIHJhdGlmaWVkCgo8bGk+cmRiIHdpbGwgYmUgZW50aXJlbHkgaW50ZXJuYWw7IHdoZXRoZXIgd2Ugd2lsbCBwcmUtbmFtZSBjb21wb25lbnRzIGZvciB0aGVpciBwb3N0IG1pZ3JhdGlvbiBsb2NhdGlvbiBpcyBzdGlsbCBUQkQgW25leHQgbWVldGluZyBpcyAzLzE3XQoKPGxpPk00IHByb2Nlc3Mgd2lsbCBiZSAoaW4gb3JkZXIpOiBkZWZpbmUgY29tcG9uZW50LnhtbCBmaWxlcywgZHJpdmUgZm9yIGphdmFkb2MgYW5kIGp1bml0IGNvdmVyYWdlLCBjb3JyZWN0IG5hbWluZyBjb252ZW50aW9ucywgd29yayBvbiBpbXBsZW1lbnRhdGlvbgoKPGxpPlBNQyB3aWxsIHJldmlldyBjb21wb25lbnQueG1sIHByb2dyZXNzIG5leHQgd2VlayBhbmQgd2lsbCByZXZpZXcgc3RhdGlzdGljcyBvbiBhbiBvbmdvaW5nIGJhc2lzIGFzIHBhcnQgb2Ygb3VyIHdlZWtseSBjYWxsIGFnZW5kYTsgY29tcG9uZW50IGxlYWRzIHNob3VsZCBiZSBwcmVwYXJlZCBmb3IgUE1DIHJldmlldyBzdGFydGluZyBuZXh0IHdlZWsKCjxsaT5DdXJyZW50bHkgaGF2ZSB+MTRLIJNBUElzlCB3aXRob3V0IEpVbml0IHRlc3RzOyBudW1iZXIgbmVlZHMgdG8gZHJvcCB0aHJvdWdoIGFkZGl0aW9uYWwgdGVzdHMgYW5kIGJ5IGludGVybmluZyB1bmludGVudGlvbmFsIEFQSXMKCjwvdWw+CgogCgo8aDI+UGxhbnMgZm9yIGludGVncmF0aW5nIEJFQSBkZXZlbG9wZXJzPC9oMj4KCjx1bD4KCjxsaT5JQk0gc2l0ZXMgd2lsbCBob3N0IJNpbW1lcnNpb26UIGRheXMgZm9yIEJFQSBkZXZlbG9wZXJzIHRvIGhlbHAgdGhlbSByYW1wIHVwIG9uIHRlY2hub2xvZ3ksIHBlb3BsZSwgYW5kIHByb2Nlc3NlcwoKPC91bD4KCiAKCjxoMj5NYWludGVuYW5jZSBSZWxlYXNlczwvaDI+CgpCb3RoIEJFQSBhbmQgSUJNIHdpbGwgYmUgYmFzaW5nIHByb2R1Y3RzIG9uIFdUUCAxLjAsIHNvIHdlIG5lZWQgdG8gcGxhbiBmb3IgYSAxLjAueCBtYWludGVuYW5jZSBzdHJlYW0uIFRoaXMgd2lsbCBuZWVkIHRvIGJlIGNvb3JkaW5hdGVkIHdpdGggdGhlIHBsYXRmb3JtIG1haW50ZW5hbmNlIHN0cmVhbS4gUGxhbm5pbmcgc2hvdWxkIGJlZ2luIG5vdyB0byBlbnN1cmUgdGhhdCB0aGlzIGlzIGhhbmRsZWQgc21vb3RobHk7IGEgc2luZ2xlIJNyZWxlYXNlIG1hbmFnZXKUIHdvdWxkIGJlIGlkZWFsLiBTaW5jZSBOYWNpknMgdGVhbSBjdXJyZW50bHkgaGFuZGxlcyBidWlsZCwgd2WSbGwgcmV2aXNpdCB0aGlzIG5leHQgd2VlayB3aGVuIGhlknMgcHJlc2VudC4KCiAKCjxoMj5IYW5kbGluZyBUaGlyZCBQYXJ0eSBDb250ZW50PC9oMj4KCltxdW90ZWQgZnJvbSBBcnRodXKScyBub3Rlc10KCjxlbT4KCjxwPgoKSSBoYXZlIGJlZW4gd29ya2luZyB3aXRoIEphbmV0IENhbXBiZWxsLCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIElQIGxhd3llciwgdG8gZ2V0IHBlcm1pc3Npb24gdG8gcmVkaXN0cmlidXRlIHNvbWUgM1BDIChmcm9tIEFwYWNoZSwgVzNDLCBldGMpLiBUaGlzIGlzIGdvaW5nIHRvIGJlIGEgc2xvdyBwcm9jZXNzLiBBbHNvLCBvdXIgcG9saWN5IHRvIHRvIG5vdCByZXNoaXAgcnVudGltZXMuIFRoZXNlIHR3byBjb25zaWRlcmF0aW9ucyBjb21iaW5lIHRvIHByb2R1Y2UgYSBkaWZmaWN1bHQgc2l0dWF0aW9uIGZvciBvdXIgdXNlcnMgd2hvIGhhdmUgdG8gbmFtdWFsbHkgZG93bmxvYWQgYW5kIGluc3RhbGwgbWFueSBwaWVjZXMuCjxwPgpJJ2QgbGlrZSB0byBzdWdnZXN0IGFuIGFsdGVybmF0aXZlLiBJJ20gY2FsbGluZyB0aGVzZSAiV29ybWhvbGVzIi4gVGhlIGlkZWEgaXMgdG8gY3JlYXRlIFVwZGF0ZSBNYW5hZ2VyIHNpdGVzIGF0IEFwYWNoZSwgVzNDLCBPYmplY3RXZWIsIFNvdXJjZUZvcmdlLCBldGMuIFdlIHdvdWxkIGNyZWF0ZSBhIHByb2plY3QgYXQgZWFjaCBvZiB0aG9zZSBzaXRlcyBhbmQgcGFja2FnZSB0aGUgY29kZSB3ZSBuZWVkLiBXZSB3b3VsZCBjcmVhdGUgZXh0ZW5zaW9uIHBvaW50cyBmb3IgdGhpcyBjb250ZW50LCBlLmcuIGEgU2VydmVyIFJ1bnRpbmUgZXh0ZW5zaW9uIHBvaW50IGFuZCB0aGUgSm9uYXMsIFRvbWNhdCwgR2Vyb25pbW8sIEppZ3NhdywgZXRjLiBydW50aW1lcyBjb3VsZCBiZSBwYWNrYWdlZCB0byBleHRlbmQgdGhhdCBydW50aW1lLiBXZSB3b3VsZCBwcmVsb2FkIHRoZSBVUkxzIHRvIHRoZXNlIHNpdGVzIGluIFdUUC4gVGhlbiB0aGUgdXNlciBjb3VsZCBlYXNpbHkgZG93bmxvYWQgYW5kIGluc3RhbGwgdGhlIDNQQy4gVGhpcyBmaW5lc2VzIHRoZSBpbnN0YWxsYXRpb24sIGNvbmZpZ3VyYXRpb24sIGxlZ2FsLCAgYW5kIG1haW50ZW5hbmNlIHByb2JsZW1zLgo8cD4KVG8gc3RhcnQsIHdlIGNvdWxkIGNyZWF0ZSBhbiAiT2JqZWN0V2ViLUVjbGlwc2UgV29ybWhvbGUiIGZvciBKb25hcy4gTmV4dCB3b3VsZCBiZSBhbiAiQXBhY2hlLUVjbGlwc2UgV29ybWhvbGUiLmZvciBUb21jYXQsIEF4aXMsIGV0Yy4gV2UgbmVlZCB0byBwcm9wb3NlIGFuIEFwYWNoZSBwcm9qZWN0IGZvciB0aGF0LCBhbmQgdGhlIG1vcmUgY29tcGFuaWVzIHdobyBjb3VsZCBwYXJ0aWNpcGF0ZSwgdGhlIHN0cm9uZ2VyIG91ciBwcm9wb3NhbCBpcy4gSSd2ZSBhbHJlYWR5IHJ1biB0aGlzIGJ5IE1pa2UgTWlsaW5rb3ZpY2ggYW5kIGhlIGxpa2VzIHRoZSBpZGVhLgoKPC9lbT4KCjxwPgoKVGhpcyB3b3VsZCBiZSB0YXJnZXRlZCBmb3IgTTUuIEpLIG5vdGVkIHRoYXQgcGxhY2luZywgZS5nLiwgSkJvc3MgaW4gdGhlIHBsdWdpbnMgZGlyZWN0b3J5IGlzIG5vdCBpZGVhbCBmb3IgZXZlcnlvbmUsIHNvIHRoaXMgd291bGQgaGF2ZSB0byBiZSBvcHRpb25hbC4gSWYgT2JqZWN0V2ViIGNhbm5vdCBob3N0LCB0aGVuIEJFQSBhbmQgSUJNIGNvdWxkIHdvcmsgb24gYSBqb2ludCBBcGFjaGUgcHJvcG9zYWwuCgogCgo8aDI+QWN0aW9uIEl0ZW1zOjwvaDI+Cgo8dWw+Cgo8bGk+W0pLXSBDYWxsIHJlcXVpcmVtZW50cyBncm91cCBtZWV0aW5nLgoKPGxpPltUV10gRGlzYmFuZCBleGlzdGluZyB3dHAtcG1jIGRpc3RyaWJ1dGlvbiBsaXN0IGFuZCByZWNyZWF0ZSBpdCBvbiBFY2xpcHNlLgoKPGxpPltBUl0gUHJvcG9zYWwgZm9yIDNQQyBkb3dubG9hZHMuCgo8L3VsPgoKIAoKPHNtYWxsPk1pbnV0ZXMgdGFrZW4gYnkgVGltIFdhZ25lciwgTWFyY2ggMTUsIDIwMDU8L3NtYWxsPiAgICA8L3RkPgoKICA8L3RyPgoKICAgIDx0cj4gCiAgICA8dGQ+IAogICAgICAmbmJzcDs8L3RkPgoKICA8L3RyPgoKICA8L3Rib2R5PjwvdGFibGU+CjwvaHRtbD4KCg==