PGh0bWw+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1MYW5ndWFnZSIgY29udGVudD0iZW4tdXMiPgo8bWV0YSBuYW1lPSJHRU5FUkFUT1IiIGNvbnRlbnQ9Ik1pY3Jvc29mdCBGcm9udFBhZ2UgNS4wIj4KPG1ldGEgbmFtZT0iUHJvZ0lkIiBjb250ZW50PSJGcm9udFBhZ2UuRWRpdG9yLkRvY3VtZW50Ij4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KPHRpdGxlPkJvb3N0IEZpbGVzeXN0ZW0gTGlicmFyeSBEZXNpZ248L3RpdGxlPgo8L2hlYWQ+Cgo8Ym9keSBiZ2NvbG9yPSIjRkZGRkZGIj4KCjxoMT4KPGltZyBib3JkZXI9IjAiIHNyYz0iLi4vLi4vLi4vLi4vYm9vc3QucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMjc3IiBoZWlnaHQ9Ijg2Ij5GaWxlc3lzdGVtIApMaWJyYXJ5IERlc2lnbjwvaDE+Cgo8cD48YSBocmVmPSIjSW50cm9kdWN0aW9uIj5JbnRyb2R1Y3Rpb248L2E+PGJyPgo8YSBocmVmPSIjUmVxdWlyZW1lbnRzIj5SZXF1aXJlbWVudHM8L2E+PGJyPgo8YSBocmVmPSIjUmVhbGl0aWVzIj5SZWFsaXRpZXM8L2E+PGJyPgo8YSBocmVmPSIjUmF0aW9uYWxlIj5SYXRpb25hbGU8L2E+PGJyPgo8YSBocmVmPSIjQWJhbmRvbmVkX0Rlc2lnbnMiPkFiYW5kb25lZF9EZXNpZ25zPC9hPjxicj4KPGEgaHJlZj0iI1JlZmVyZW5jZXMiPlJlZmVyZW5jZXM8L2E+PC9wPgoKPGgyPjxhIG5hbWU9IkludHJvZHVjdGlvbiI+SW50cm9kdWN0aW9uPC9hPjwvaDI+Cgo8cD5UaGUgcHJpbWFyeSBtb3RpdmF0aW9uIGZvciBiZWdpbm5pbmcgd29yayBvbiB0aGUgRmlsZXN5c3RlbSBMaWJyYXJ5IHdhcyAKZnJ1c3RyYXRpb24gd2l0aCBCb29zdCBhZG1pbmlzdHJhdGl2ZSB0b29scy4mbmJzcDsgU2NyaXB0cyB3ZXJlIHdyaXR0ZW4gaW4gClB5dGhvbiwgUGVybCwgQmFzaCwgYW5kIFdpbmRvd3MgY29tbWFuZCBsYW5ndWFnZXMuJm5ic3A7IFRoZXJlIHdhcyBubyBzaW5nbGUgCnNjcmlwdGluZyBsYW5ndWFnZSBmYW1pbGlhciBhbmQgYWNjZXB0YWJsZSB0byBhbGwgQm9vc3QgYWRtaW5pc3RyYXRvcnMuIFlldCB0aGV5IAp3ZXJlIGFsbCBza2lsbGVkIEMrKyBwcm9ncmFtbWVycyAtIHdoeSBjb3VsZG4ndCBDKysgYmUgdXNlZCBhcyB0aGUgc2NyaXB0aW5nIApsYW5ndWFnZT88L3A+Cgo8cD5UaGUga2V5IGZlYXR1cmUgQysrIGxhY2tlZCBmb3Igc2NyaXB0LWxpa2UgYXBwbGljYXRpb25zIHdhcyB0aGUgYWJpbGl0eSB0byAKcGVyZm9ybSBwb3J0YWJsZSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgb24gZGlyZWN0b3JpZXMgYW5kIHRoZWlyIGNvbnRlbnRzLiBUaGUgCkZpbGVzeXN0ZW0gTGlicmFyeSB3YXMgZGV2ZWxvcGVkIHRvIGZpbGwgdGhhdCB2b2lkLjwvcD4KCjxwPlRoZSBpbnRlbnQgaXMgbm90IHRvIGNvbXBldGUgd2l0aCB0cmFkaXRpb25hbCBzY3JpcHRpbmcgbGFuZ3VhZ2VzLCBidXQgdG8gCnByb3ZpZGUgYSBzb2x1dGlvbiBmb3Igc2l0dWF0aW9ucyB3aGVyZSBDKysgaXMgYWxyZWFkeSB0aGUgbGFuZ3VhZ2UgCm9mIGNob2ljZS4uPC9wPgoKPGgyPjxhIG5hbWU9IlJlcXVpcmVtZW50cyI+UmVxdWlyZW1lbnRzPC9hPjwvaDI+Cjx1bD4KICA8bGk+QmUgYWJsZSB0byB3cml0ZSBwb3J0YWJsZSBzY3JpcHQtc3R5bGUgZmlsZXN5c3RlbSBvcGVyYXRpb25zIGluIG1vZGVybiAKICBDKysuPGJyPgogIDxicj4KICBSYXRpb25hbGU6IFRoaXMgaXMgYSBjb21tb24gcHJvZ3JhbW1pbmcgbmVlZC4gSXQgaXMgYm90aCBhbiAKICBlbWJhcnJhc3NtZW50IGFuZCBhIGhhcmRzaGlwIHRoYXQgdGhpcyBpcyBub3QgcG9zc2libGUgd2l0aCBlaXRoZXIgdGhlIGN1cnJlbnQgCiAgQysrIG9yIEJvb3N0IGxpYnJhcmllcy4mbmJzcDsgVGhlIG5lZWQgaXMgcGFydGljdWxhcmx5IGFjdXRlIAogIHdoZW4gQysrIGlzIHRoZSBvbmx5IHRvb2xzZXQgYWxsb3dlZCBpbiB0aGUgdG9vbCBjaGFpbi4mbmJzcDsgRmlsZSBzeXN0ZW0gCiAgb3BlcmF0aW9ucyBhcmUgcHJvdmlkZWQgYnkgbWFueSBsYW5ndWFnZXMmbmJzcDt1c2VkIG9uIG11bHRpcGxlIHBsYXRmb3JtcywgCiAgc3VjaCBhcyBQZXJsIGFuZCBQeXRob24sIGFzIHdlbGwgYXMgYnkgbWFueSBwbGF0Zm9ybSBzcGVjaWZpYyBzY3JpcHRpbmcgCiAgbGFuZ3VhZ2VzLiBBbGwgb3BlcmF0aW5nIHN5c3RlbXMgcHJvdmlkZSBzb21lIGZvcm0gb2YgQVBJIGZvciBmaWxlc3lzdGVtIAogIG9wZXJhdGlvbnMsIGFuZCB0aGUgUE9TSVggYmluZGluZ3MgYXJlIGluY3JlYXNpbmdseSBhdmFpbGFibGUgZXZlbiBvbiAKICBvcGVyYXRpbmcgc3lzdGVtcyBub3Qgbm9ybWFsbHkgYXNzb2NpYXRlZCB3aXRoIFBPU0lYLCBzdWNoIGFzIHRoZSBNYWMsIHovT1MsIAogIG9yIE9TLzM5MC48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPldvcmsgd2l0aGluIHRoZSA8YSBocmVmPSIjUmVhbGl0aWVzIj5yZWFsaXRpZXM8L2E+IGRlc2NyaWJlZCBiZWxvdy48YnI+CiAgPGJyPgogIFJhdGlvbmFsZTogVGhpcyBpc24ndCBhIHJlc2VhcmNoIHByb2plY3QuIFRoZSBuZWVkIGlzIGZvciBzb21ldGhpbmcgdGhhdCB3b3JrcyBvbiAKICB0b2RheSdzIHBsYXRmb3JtcywgaW5jbHVkaW5nIHNvbWUgb2YgdGhlIGVtYmVkZGVkIG9wZXJhdGluZyBzeXN0ZW1zIAogIHdpdGggbGltaXRlZCBmaWxlIHN5c3RlbXMuIEJlY2F1c2Ugb2YgdGhlIGVtcGhhc2lzIG9uIHBvcnRhYmlsaXR5LCBzdWNoIGEgCiAgbGlicmFyeSB3b3VsZCBiZSBtdWNoIG1vcmUgdXNlZnVsIGlmIHN0YW5kYXJkaXplZC4gVGhhdCBtZWFucyBiZWluZyBhYmxlIHRvIAogIHdvcmsgd2l0aCBhIG11Y2ggd2lkZXIgcmFuZ2Ugb2YgcGxhdGZvcm1zIHRoYXQganVzdCBVbml4IG9yIFdpbmRvd3MgYW5kIHRoZWlyIAogIGNsb25lcy48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPkF2b2lkIGRhbmdlcm91cyBwcm9ncmFtbWluZyBwcmFjdGljZXMuIFBhcnRpY3VsYXJseSwgYWxsLXRvby1lYXN5LXRvLWlnbm9yZSBlcnJvciBub3RpZmljYXRpb25zIAogIGFuZCB1c2Ugb2YgZ2xvYmFsIHZhcmlhYmxlcy4mbmJzcDtJZiBhIGRhbmdlcm91cyBmZWF0dXJlIGlzIHByb3ZpZGVkLCBpZGVudGlmeSBpdCBhcyBzdWNoLjxicj4KICA8YnI+CiAgUmF0aW9uYWxlOiBOb3JtYWxseSB0aGlzIHdvdWxkIGJlIGNvdmVyZWQgYnkgJnF1b3Q7dGhlIHVzdWFsIEJvb3N0IHJlcXVpcmVtZW50cy4uLiZxdW90OywgCiAgYnV0IGl0IGlzIG1lbnRpb25lZCBleHBsaWNpdGx5IGJlY2F1c2UgdGhlIGVxdWl2YWxlbnQgbmF0aXZlIHBsYXRmb3JtIGFuZCAKICBzY3JpcHRpbmcgbGFuZ3VhZ2UgaW50ZXJmYWNlcyBvZnRlbiBkZXBlbmQgb24gYWxsLXRvby1lYXN5LXRvLWlnbm9yZSBlcnJvciAKICBub3RpZmljYXRpb25zIGFuZCBnbG9iYWwgdmFyaWFibGVzIGxpa2UgJnF1b3Q7Y3VycmVudCAKICB3b3JraW5nIGRpcmVjdG9yeSZxdW90Oy48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPlN0cnVjdHVyZSB0aGUgbGlicmFyeSBzbyB0aGF0IGl0IGlzIHN0aWxsIHVzZWZ1bCBldmVuIGlmIHNvbWUgZnVuY3Rpb25hbGl0eSAKICBkb2VzIG5vdCBtYXAgd2VsbCBvbnRvIGEgZ2l2ZW4gcGxhdGZvcm0gb3IgZGlyZWN0b3J5IHRyZWUuIFBhcnRpY3VsYXJseSwgbXVjaCAKICB1c2VmdWwgZnVuY3Rpb25hbGl0eSBzaG91bGQgYmUgcG9ydGFibGUgZXZlbiB0byBmbGF0IAoobm9uLWhpZXJhcmNoaWNhbCkgZmlsZXN5c3RlbXMuPGJyPgogIDxicj4KICBSYXRpb25hbGU6IE11Y2ggZnVuY3Rpb25hbGl0eSB3aGljaCBkb2VzIG5vdCAKICByZXF1aXJlIGEgaGllcmFyY2hpY2FsIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgaXMgc3RpbGwgdXNlZnVsIG9uIGZsYXQtc3RydWN0dXJlIAogIGZpbGVzeXN0ZW1zLiZuYnNwOyBUaGVyZSBhcmUgbWFueSBzeXN0ZW1zLCBwYXJ0aWN1bGFybHkgZW1iZWRkZWQgc3lzdGVtcywgCiAgd2hlcmUgZXZlbiB2ZXJ5IGxpbWl0ZWQgZnVuY3Rpb25hbGl0eSBpcyBzdGlsbCB1c2VmdWwuPC9saT4KPC91bD4KPHVsPgogIDxsaT5JbnRlcmZhY2Ugc21vb3RobHkgd2l0aCBjdXJyZW50IEMrKyBTdGFuZGFyZCBMaWJyYXJ5IGlucHV0L291dHB1dCAKICBmYWNpbGl0aWVzLiZuYnNwOyBGb3IgZXhhbXBsZSwgcGF0aHMgc2hvdWxkIGJlIAogIGVhc3kgdG8gdXNlIGluIHN0ZDo6YmFzaWNfZnN0cmVhbSBjb25zdHJ1Y3RvcnMuPGJyPgogIDxicj4KICBSYXRpb25hbGU6IE9uZSBvZiB0aGUgbW9zdCBjb21tb24gdXNlcyBvZiBmaWxlIHN5c3RlbSBmdW5jdGlvbmFsaXR5IGlzIHRvIAogIG1hbmlwdWxhdGUgcGF0aHMgZm9yIGV2ZW50dWFsIHVzZSBpbiBpbnB1dC9vdXRwdXQgb3BlcmF0aW9ucy4mbmJzcDsgCiAgVGh1cyB0aGUgbmVlZCB0byBpbnRlcmZhY2Ugc21vb3RobHkgd2l0aCBzdGFuZGFyZCBsaWJyYXJ5IEkvTy48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPlN1aXRhYmxlIGZvciBldmVudHVhbCBzdGFuZGFyZGl6YXRpb24uIFRoZSBpbXBsaWNhdGlvbiBvZiB0aGlzIHJlcXVpcmVtZW50IAogIGlzIHRoYXQgdGhlIGludGVyZmFjZSBiZSBjbG9zZSB0byBtaW5pbWFsLCBhbmQgdGhhdCBncmVhdCBjYXJlIGJlIHRha2UgCiAgcmVnYXJkaW5nIHBvcnRhYmlsaXR5Ljxicj4KICA8YnI+CiAgUmF0aW9uYWxlOiBUaGUgbGFjayBvZiBmaWxlIHN5c3RlbSBvcGVyYXRpb25zIGlzIGEgc2VyaW91cyBob2xlIAogIGluIHRoZSBjdXJyZW50IHN0YW5kYXJkLCB3aXRoIG5vIG90aGVyIGtub3duIGNhbmRpZGF0ZXMgdG8gZmlsbCB0aGF0IGhvbGUuIAogIExpYnJhcmllcyB3aXRoIGVsYWJvcmF0ZSBpbnRlcmZhY2VzIGFuZCBkaWZmaWN1bHQgdG8gcG9ydCBzcGVjaWZpY2F0aW9ucyBhcmUgbXVjaCBsZXNzIGxpa2VseSB0byBiZSBhY2NlcHRlZCBmb3IgCiAgc3RhbmRhcmRpemF0aW9uLjxicj4KJm5ic3A7PC9saT4KICA8bGk+VGhlIHVzdWFsIEJvb3N0IDxhIGhyZWY9Imh0dHA6Ly93d3cuYm9vc3Qub3JnL21vcmUvbGliX2d1aWRlLmh0bSI+cmVxdWlyZW1lbnRzIGFuZCAKICBndWlkZWxpbmVzPC9hPiBhcHBseS48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPkVuY291cmFnZSwgYnV0IGRvIG5vdCByZXF1aXJlLCBwb3J0YWJpbGl0eSBpbiBwYXRoIG5hbWVzLjxicj4KICA8YnI+CiAgUmF0aW9uYWxlOiBGb3IgcGF0aHMgd2hpY2ggb3JpZ2luYXRlIGZyb20gdXNlciBpbnB1dCBpdCBpcyB1bnJlYXNvbmFibGUgdG8gCiAgcmVxdWlyZSBwb3J0YWJsZSBwYXRoIHN5bnRheC48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPkF2b2lkIGdpdmluZyB0aGUgaWxsdXNpb24gb2YgcG9ydGFiaWxpdHkgd2hlcmUgcG9ydGFiaWxpdHkgaW4gZmFjdCBkb2VzIG5vdCAKICBleGlzdC48YnI+CiAgPGJyPgogIFJhdGlvbmFsZTogTGVhdmluZyBpbXBvcnRhbnQgYmVoYXZpb3IgdW5zcGVjaWZpZWQgb3IgJnF1b3Q7aW1wbGVtZW50YXRpb24gZGVmaW5lZCZxdW90OyBkb2VzIGEgCiAgZ3JlYXQgZGlzc2VydmljZSB0byBwcm9ncmFtbWVycyB1c2luZyBhIGxpYnJhcnkgYmVjYXVzZSBpdCBtYWtlcyBpdCBhcHBlYXIgCiAgdGhhdCBjb2RlIHJlbHlpbmcgb24gdGhlIGJlaGF2aW9yIGlzIHBvcnRhYmxlLCB3aGVuIGluIGZhY3QgdGhlcmUgaXMgbm90aGluZyAKICBwb3J0YWJsZSBhYm91dCBpdC4gVGhlIG9ubHkgY2FzZSB3aGVyZSBzdWNoIHVuZGVyLXNwZWNpZmljYXRpb24gaXMgYWNjZXB0YWJsZSBpcyB3aGVuIGJvdGggdXNlcnMgYW5kIGltcGxlbWVudG9ycyBrbm93IGZyb20gCiAgb3RoZXIgc291cmNlcyBleGFjdGx5IHdoYXQgYmVoYXZpb3IgaXMgcmVxdWlyZWQsIHlldCBmb3Igc29tZSByZWFzb24gaXQgaXNuJ3QgCiAgcG9zc2libGUgdG8gc3BlY2lmeSBpdCBleGFjdGx5LjwvbGk+CjwvdWw+CjxoMj48YSBuYW1lPSJSZWFsaXRpZXMiPlJlYWxpdGllczwvYT48L2gyPgo8dWw+CiAgPGxpPlNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgaGF2ZSBhIHNpbmdsZSBkaXJlY3RvcnkgdHJlZSByb290LCBvdGhlcnMgaGF2ZSAKICBtdWx0aXBsZSByb290cy48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPlNvbWUgZmlsZSBzeXN0ZW1zIHByb3ZpZGUgYm90aCBhIGxvbmcgYW5kIHNob3J0IGZvcm0gb2YgZmlsZW5hbWVzLjxicj4KJm5ic3A7PC9saT4KICA8bGk+U29tZSBmaWxlIHN5c3RlbXMgaGF2ZSBkaWZmZXJlbnQgc3ludGF4IGZvciBmaWxlIHBhdGhzIGFuZCBkaXJlY3RvcnkgCiAgcGF0aHMuPGJyPgombmJzcDs8L2xpPgogIDxsaT5Tb21lIGZpbGUgc3lzdGVtcyBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgdmFsaWQgZmlsZSBuYW1lcyBhbmQgdmFsaWQgCiAgZGlyZWN0b3J5IG5hbWVzLjxicj4KJm5ic3A7PC9saT4KICA8bGk+U29tZSBmaWxlIHN5c3RlbXMgKElTTy05NjYwLCBsZXZlbCAxLCBmb3IgZXhhbXBsZSkgdXNlIHZlcnkgcmVzdHJpY3RlZCAKICAoc28tY2FsbGVkIDguMykgZmlsZSBuYW1lcy48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPlNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgYWxsb3cgZmlsZSBzeXN0ZW1zIHdpdGggZGlmZmVyZW50IAogIGNoYXJhY3RlcmlzdGljcyB0byBiZSAmcXVvdDttb3VudGVkJnF1b3Q7IHdpdGhpbiBhIGRpcmVjdG9yeSB0cmVlLiZuYnNwOyBUaHVzIGEgCiAgSVNPLTk2NjAgb3IgV2luZG93cyAKICBmaWxlIHN5c3RlbSBtYXkgZW5kIHVwIGFzIGEgc3ViLXRyZWUgb2YgYSBQT1NJWCBkaXJlY3RvcnkgdHJlZS48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPldpZGUtY2hhcmFjdGVyIHZlcnNpb25zIG9mIGRpcmVjdG9yeSBhbmQgZmlsZSBvcGVyYXRpb25zIGFyZSBhdmFpbGFibGUgb24gc29tZSBvcGVyYXRpbmcgCiAgc3lzdGVtcywgYW5kIG5vdCBhdmFpbGFibGUgb24gb3RoZXJzLjxicj4KJm5ic3A7PC9saT4KICA8bGk+VGhlcmUgaXMgbm8gbGF3IHRoYXQgc2F5cyBkaXJlY3RvcnkgaGllcmFyY2hpZXMgaGF2ZSB0byBiZSBzcGVjaWZpZWQgaW4gCiAgdGVybXMgb2YgbGVmdC10by1yaWdodCBkZWNlbnQgZnJvbSB0aGUgcm9vdC48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPlNvbWUgZmlsZSBzeXN0ZW1zIGhhdmUgYSBjb25jZXB0IG9mIGZpbGUgJnF1b3Q7dmVyc2lvbiBudW1iZXImcXVvdDsgb3IgJnF1b3Q7Z2VuZXJhdGlvbiAKICBudW1iZXImcXVvdDsuJm5ic3A7IFNvbWUgZG9uJ3QuPGJyPgombmJzcDs8L2xpPgogIDxsaT5Ob3QgYWxsIG9wZXJhdGluZyBzeXN0ZW1zIHVzZSBzaW5nbGUgY2hhcmFjdGVyIHNlcGFyYXRvcnMgaW4gcGF0aCBuYW1lcy4mbmJzcDsgU29tZSB1c2UgCiAgcGFpcmVkIG5vdGF0aW9ucy4gQSB0eXBpY2FsIGZ1bGx5LXNwZWNpZmllZCBPcGVuVk1TIGZpbGVuYW1lCiAgbWlnaHQgbG9vayBzb21ldGhpbmcgbGlrZSB0aGlzOjxicj4KICA8YnI+CiAgPGNvZGU+Jm5ic3A7Jm5ic3A7IERJU0skU0NSQVRDSDpbR0VPUkdFLlBST0pFQ1QxLkRBVF1CSUdfREFUQV9GSUxFLk5UUDs1PGJyPgogIDwvY29kZT48YnI+CiAgVGhlIGdlbmVyYWwgT3BlblZNUyBmb3JtYXQgaXM6PGJyPgogIDxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IAogIDxpPkRldmljZTpbZGlyZWN0b3JpZXMuZG90LnNlcGFyYXRlZF1maWxlbmFtZS5leHRlbnNpb247dmVyc2lvbl9udW1iZXI8L2k+PGJyPgombmJzcDs8L2xpPgogIDxsaT5Gb3IgY29tbW9uIGZpbGUgc3lzdGVtcywgZGV0ZXJtaW5pbmcgaWYgdHdvIGRlc2NyaXB0b3JzIGFyZSBmb3Igc2FtZSAKICBlbnRpdHkgaXMgZXh0cmVtZWx5IGRpZmZpY3VsdCBvciBpbXBvc3NpYmxlLiZuYnNwOyBGb3IgZXhhbXBsZSwgdGhlIGNvbmNlcHQgb2YgCiAgZXF1YWxpdHkgY2FuIGJlIGRpZmZlcmVudCBmb3IgZWFjaCBwb3J0aW9uIG9mIGEgcGF0aCAtIHNvbWUgcG9ydGlvbnMgbWF5IGJlIAogIGNhc2Ugb3IgbG9jYWxlIHNlbnNpdGl2ZSwgb3RoZXJzIG5vdC4gQ2FzZSBzZW5zaXRpdml0eSBpcyBhIHByb3BlcnR5IG9mIHRoZSAKICBwYXRobmFtZSBpdHNlbGYsIGFuZCBub3QgdGhlIHBsYXRmb3JtLiBEZXRlcm1pbmluZyBjb2xsYXRpbmcgc2VxdWVuY2UgaXMgZXZlbiAKICB3b3JzZS48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPlJhY2UtY29uZGl0aW9ucyBtYXkgb2NjdXIuIERpcmVjdG9yeSB0cmVlcywgZGlyZWN0b3JpZXMsIGZpbGVzLCBhbmQgZmlsZSBhdHRyaWJ1dGVzIGFyZSBpbiBlZmZlY3Qgc2hhcmVkIGJldHdlZW4gYWxsIHRocmVhZHMsIHByb2Nlc3NlcywgYW5kIGNvbXB1dGVycyB3aGljaCBoYXZlIGFjY2VzcyB0byB0aGUgCiAgZmlsZXN5c3RlbS4mbmJzcDsgVGhhdCBtYXkgd2VsbCBpbmNsdWRlIGNvbXB1dGVycyBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgCiAgd29ybGQgb3IgaW4gb3JiaXQgYXJvdW5kIHRoZSB3b3JsZC4gVGhpcyBpbXBsaWVzIHRoYXQgZmlsZSBzeXN0ZW0gb3BlcmF0aW9ucyAKICBtYXkgZmFpbCBpbiB1bmV4cGVjdGVkIHdheXMuJm5ic3A7Rm9yIGV4YW1wbGU6PGJyPgogIDxicj4KICA8Y29kZT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgYXNzZXJ0KCBleGlzdHMoJnF1b3Q7Zm9vJnF1b3Q7KSA9PSBleGlzdHMoJnF1b3Q7Zm9vJnF1b3Q7KSApOyAKICAvLyBtYXkgZmFpbCE8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBhc3NlcnQoIGlzX2RpcmVjdG9yeSgmcXVvdDtmb28mcXVvdDspID09IGlzX2RpcmVjdG9yeSgmcXVvdDtmb28mcXVvdDspOyAKICAvLyBtYXkgZmFpbCE8YnI+CiAgPC9jb2RlPjxicj4KICBJbiB0aGUgZmlyc3QgZXhhbXBsZSwgdGhlIGZpbGUgbWF5IGhhdmUgYmVlbiBkZWxldGVkIGJldHdlZW4gY2FsbHMgdG8gCiAgZXhpc3RzKCkuJm5ic3A7IEluIHRoZSBzZWNvbmQgZXhhbXBsZSwgdGhlIGZpbGUgbWF5IGhhdmUgYmVlbiBkZWxldGVkIGFuZCB0aGVuIAogIHJlcGxhY2VkIGJ5IGEgZGlyZWN0b3J5IG9mIHRoZSBzYW1lIG5hbWUgYmV0d2VlbiB0aGUgY2FsbHMgdG8gaXNfZGlyZWN0b3J5KCkuPGJyPgombmJzcDs8L2xpPgogIDxsaT5FdmVuIHRob3VnaCBhbiBhcHBsaWNhdGlvbiBtYXkgYmUgcG9ydGFibGUsIGl0IHN0aWxsIHdpbGwgaGF2ZSB0byB0cmFmZmljIAogIGluIHN5c3RlbSBzcGVjaWZpYyBwYXRocyBvY2Nhc2lvbmFsbHk7IHVzZXIgcHJvdmlkZWQgaW5wdXQgaXMgYSBjb21tb24gCiAgZXhhbXBsZS48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPjxhIG5hbWU9InN5bWJvbGljLWxpbmstdXNlLWNhc2UiPlN5bWJvbGljPC9hPiBsaW5rcyBjYXVzZSBjYW5vbmljYWwgYW5kIAogIG5vcm1hbCBmb3JtIG9mIHNvbWUgcGF0aHMgdG8gcmVwcmVzZW50IGRpZmZlcmVudCBmaWxlcyBvciBkaXJlY3Rvcmllcy4gRm9yIAogIGV4YW1wbGUsIGdpdmVuIHRoZSBkaXJlY3RvcnkgaGllcmFyY2h5IDxjb2RlPi9hL2IvYzwvY29kZT4sIHdpdGggYSBzeW1ib2xpYyAKICBsaW5rIGluIDxjb2RlPi9hPC9jb2RlPiBuYW1lZCA8Y29kZT54PC9jb2RlPiZuYnNwOyBwb2ludGluZyB0byA8Y29kZT5iL2M8L2NvZGU+LCAKICB0aGVuIHVuZGVyIFBPU0lYIFBhdGhuYW1lIFJlc29sdXRpb24gcnVsZXMgYSBwYXRoIG9mIDxjb2RlPiZxdW90Oy9hL3gvLi4mcXVvdDs8L2NvZGU+IAogIHNob3VsZCByZXNvbHZlIHRvIDxjb2RlPiZxdW90Oy9hL2ImcXVvdDs8L2NvZGU+LiBJZiA8Y29kZT4mcXVvdDsvYS94Ly4uJnF1b3Q7PC9jb2RlPiB3ZXJlIGZpcnN0IAogIG5vcm1hbGl6ZWQgdG8gPGNvZGU+JnF1b3Q7L2EmcXVvdDs8L2NvZGU+LCBpdCB3b3VsZCByZXNvbHZlIGluY29ycmVjdGx5LiAoQ2FzZSBzdXBwbGllZCAKICBieSBXYWx0ZXIgTGFuZHJ5Lik8L2xpPgo8L3VsPgoKPGgyPjxhIG5hbWU9IlJhdGlvbmFsZSI+UmF0aW9uYWxlPC9hPjwvaDI+Cgo8cD5UaGUgPGEgaHJlZj0iI1JlcXVpcmVtZW50cyI+UmVxdWlyZW1lbnRzPC9hPiBhbmQgPGEgaHJlZj0iI1JlYWxpdGllcyI+ClJlYWxpdGllczwvYT4gYWJvdmUgZHJvdmUgbXVjaCBvZiB0aGUgQysrIGludGVyZmFjZSBkZXNpZ24uJm5ic3A7IEluIHBhcnRpY3VsYXIsIAp0aGUgZGVzaXJlIHRvIG1ha2Ugc2NyaXB0LWxpa2UgY29kZSBzdHJhaWdodGZvcndhcmQgY2F1c2VkIGEgZ3JlYXQgZGVhbCBvZiAKZWZmb3J0IHRvIGdvIGludG8gZW5zdXJpbmcgdGhhdCBhcHBhcmVudGx5IHNpbXBsZSBleHByZXNzaW9ucyBsaWtlIDxpPmV4aXN0cyggJnF1b3Q7Zm9vJnF1b3Q7IAopPC9pPiB3b3JrIGFzIGV4cGVjdGVkLjwvcD4KCjxwPlNlZSB0aGUgPGEgaHJlZj0iZmFxLmh0bSI+RkFRPC9hPiBmb3IgdGhlIHJhdGlvbmFsZSBiZWhpbmQgbWFueSBkZXRhaWxlZCAKZGVzaWduIGRlY2lzaW9ucy48L3A+Cgo8cD5TZXZlcmFsIGtleSBpbnNpZ2h0cyB3ZW50IGludG8gdGhlIDxpPnBhdGg8L2k+IGNsYXNzIGRlc2lnbjo8L3A+Cjx1bD4KICA8bGk+RGVjb3VwbGluZyBvZiB0aGUgaW5wdXQgZm9ybWF0cywgaW50ZXJuYWwgY29uY2VwdHVhbCAoPGk+dmVjdG9yJmx0O3N0cmluZyZndDs8L2k+IAogIG9yIG90aGVyIHNlcXVlbmNlKSAKICBtb2RlbCwgYW5kIG91dHB1dCBmb3JtYXRzLjwvbGk+CiAgPGxpPlByb3ZpZGluZyB0d28gaW5wdXQgZm9ybWF0cyAoZ2VuZXJpYyBhbmQgTy9TIHNwZWNpZmljKSBicm9rZSBhIG1ham9yIAogIGRlc2lnbiBkZWFkbG9jay48L2xpPgogIDxsaT5Qcm92aWRpbmcgc2V2ZXJhbCBvdXRwdXQgZm9ybWF0cyBzb2x2ZWQgYW5vdGhlciBzZXQgb2YgcHJldmlvdXNseSAKICBpbnRyYWN0YWJsZSBwcm9ibGVtcy48L2xpPgogIDxsaT5TZXZlcmFsIG5vbi1vYnZpb3VzIGZ1bmN0aW9ucyAocGFydGljdWxhcmx5IGRlY29tcG9zaXRpb24gYW5kIGNvbXBvc2l0aW9uKSAKICBhcmUgcmVxdWlyZWQgdG8gc3VwcG9ydCBwb3J0YWJsZSBjb2RlLiAoUGV0ZXIgRGltb3YsIFRob21hcyBXaXR0LCBHbGVuIAogIEtub3dsZXMsIG90aGVycy4pPC9saT4KPC91bD4KCjxwPkVycm9yIGNoZWNraW5nIHdhcyBhIHBhcnRpY3VsYXJseSBkaWZmaWN1bHQgYXJlYS4gT25lIGtleSBpbnNpZ2h0IHdhcyB0aGF0IAp3aXRoIGZpbGUgYW5kIGRpcmVjdG9yeSBuYW1lcywgcG9ydGFiaWxpdHkgaXNuJ3QgYSB1bml2ZXJzYWwgdHJ1dGguJm5ic3A7IApSYXRoZXIsIHRoZSBwcm9ncmFtbWVyIG11c3QgdGhpbmsgb3V0IHRoZSBxdWVzdGlvbiAmcXVvdDtXaGF0IG9wZXJhdGluZyBzeXN0ZW1zIGRvIEkgCndhbnQgdGhpcyBwYXRoIHRvIGJlIHBvcnRhYmxlIHRvPyZxdW90OyZuYnNwOyBCeSBwcm92aWRpbmcgc3VwcG9ydCBmb3Igc2V2ZXJhbCAKYW5zd2VycyB0byB0aGF0IHF1ZXN0aW9uLCB0aGUgRmlsZXN5c3RlbSBMaWJyYXJ5IGFsZXJ0cyBwcm9ncmFtbWVycyBvZiB0aGUgbmVlZCAKdG8gYXNrIGl0IGluIHRoZSBmaXJzdCBwbGFjZS48L3A+CjxoMj48YSBuYW1lPSJBYmFuZG9uZWRfRGVzaWducyI+QWJhbmRvbmVkIERlc2lnbnM8L2E+PC9oMj4KPGgzPm9wZXJhdGlvbnMuaHBwPC9oMz4KPHA+RGlldG1hciBL/GhsJ3Mgb3JpZ2luYWwgZGlyX2l0IGRlc2lnbiBhbmQgaW1wbGVtZW50YXRpb24gc3VwcG9ydGVkIAp3aWRlLWNoYXJhY3RlciBmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZXMuIEl0IHdhcyBhYmFuZG9uZWQgYWZ0ZXIgZXh0ZW5zaXZlIApkaXNjdXNzaW9ucyBhbW9uZyBMaWJyYXJ5IFdvcmtpbmcgR3JvdXAgbWVtYmVycyBmYWlsZWQgdG8gaWRlbnRpZnkgcG9ydGFibGUgCnNlbWFudGljcyBmb3Igd2lkZS1jaGFyYWN0ZXIgbmFtZXMgb24gc3lzdGVtcyBub3QgcHJvdmlkaW5nIG5hdGl2ZSBzdXBwb3J0LiBTZWUKPGEgaHJlZj0iZmFxLmh0bSN3aWRlLWNoYXJhY3Rlcl9uYW1lcyI+RkFRPC9hPi48L3A+CjxwPlByZXZpb3VzIGl0ZXJhdGlvbnMgb2YgdGhlIGludGVyZmFjZSBkZXNpZ24gdXNlZCBleHBsaWNpdGx5IG5hbWVkIGZ1bmN0aW9ucyBwcm92aWRpbmcgYSAKbGFyZ2UgbnVtYmVyIG9mIGNvbnZlbmllbmNlIG9wZXJhdGlvbnMsIHdpdGggbm8gY29tcGlsZS10aW1lIG9yIHJ1bi10aW1lIApvcHRpb25zLiBUaGVyZSB3ZXJlIHNvIG1hbnkgZnVuY3Rpb24gbmFtZXMgdGhhdCB0aGV5IHdlcmUgdmVyeSBjb25mdXNpbmcgdG8gdXNlLCAKYW5kIHRoZSBpbnRlcmZhY2Ugd2FzIG11Y2ggbGFyZ2VyLiBBbnkgYmVuZWZpdHMgc2VlbWVkIHRoZW9yZXRpY2FsIHJhdGhlciB0aGFuIApyZWFsLiA8L3A+CjxwPkRlc2lnbnMgYmFzZWQgb24gY29tcGlsZSB0aW1lIChyYXRoZXIgdGhhbiBydW50aW1lKSBmbGFnIGFuZCBvcHRpb24gc2VsZWN0aW9uIAoodmlhIHBvbGljeSwgZW51bSwgb3IgaW50IHRlbXBsYXRlIHBhcmFtZXRlcnMpIGJlY2FtZSBzbyBjb21wbGljYXRlZCB0aGF0IHRoZXkgCndlcmUgYWJhbmRvbmVkLCBvZnRlbiBhZnRlciBpbnZlc3RpbmcgcXVpdGUgYSBiaXQgb2YgdGltZSBhbmQgZWZmb3J0LiBUaGUgbmVlZCAKdG8gcXVhbGlmeSBhdHRyaWJ1dGUgb3Igb3B0aW9uIG5hbWVzIHdpdGggbmFtZXNwYWNlcywgZXZlbiBhbGlhc2VzLCBtYWRlIHVzZSBpbiAKdGVtcGxhdGUgcGFyYW1ldGVycyB1Z2x5OyB0aGF0IHdhc24ndCBmdWxseSBhcHByZWNpYXRlZCB1bnRpbCBhY3R1YWxseSB3cml0aW5nIApyZWFsIGNvZGUuPC9wPgo8cD5ZZXQgYW5vdGhlciBzZXQgb2YgY29udmVuaWVuY2UgZnVuY3Rpb25zICggZm9yIGV4YW1wbGUsIDxpPnJlbW92ZTwvaT4gd2l0aCAKcGVybWlzc2l2ZSwgcHJ1bmUsIHJlY3Vyc2UsIGFuZCBvdGhlciBvcHRpb25zLCBwbHVzIHByZWRpY2F0ZSwgYW5kIHBvc3NpYmx5IApvdGhlciwgZmlsdGVyaW5nIGZlYXR1cmVzKSB3ZXJlIGFiYW5kb25lZCBiZWNhdXNlIHRoZSBkZXRhaWxzIGJlY2FtZSBib3RoIApjb21wbGV4IGFuZCBjb250ZW50aW91cy48L3A+Cgo8cD5XaGF0IGlzIGxlZnQgaXMgYSB0b29sa2l0IG9mIGxvdy1sZXZlbCBvcGVyYXRpb25zIGZyb20gd2hpY2ggdGhlIHVzZXIgY2FuIApjcmVhdGUgbW9yZSBjb21wbGV4IGNvbnZlbmllbmNlIG9wZXJhdGlvbnMsIHBsdXMgYSB2ZXJ5IHNtYWxsIG51bWJlciBvZiAKY29udmVuaWVuY2UgZnVuY3Rpb25zIHdoaWNoIHdlcmUgZm91bmQgdG8gYmUgdXNlZnVsIGVub3VnaCB0byBqdXN0aWZ5IGluY2x1c2lvbi48L3A+Cgo8aDM+cGF0aC5ocHA8L2gzPgoKPHA+VGhlcmUgd2VyZSBzbyBtYW55IGFiYW5kb25lZCBwYXRoIGRlc2lnbnMsIEkndmUgbG9zdCB0cmFjay4gUG9saWN5LWJhc2VkIApjbGFzcyB0ZW1wbGF0ZXMgaW4gc2V2ZXJhbCBmbGF2b3JzLCBjb25zdHJ1Y3RvciBzdXBwbGllZCBydW50aW1lIHBvbGljaWVzLCAKb3BlcmF0aW9uIHNwZWNpZmljIHJ1bnRpbWUgcG9saWNpZXMsIHRoZXkgd2VyZSBhbGwgY29uc2lkZXJlZCwgb2Z0ZW4gCmltcGxlbWVudGVkLCBhbmQgdWx0aW1hdGVseSBhYmFuZG9uZWQgYXMgZmFyIHRvbyBjb21wbGljYXRlZCBmb3IgYW55IHNtYWxsIApiZW5lZml0cyBvYnNlcnZlZC48L3A+Cgo8cD5BZGRpdGlvbmFsIGRlc2lnbiBjb25zaWRlcmF0aW9ucyBhcHBseSB0byA8YSBocmVmPSJpMThuLmh0bWwiPgpJbnRlcm5hdGlvbmFsaXphdGlvbjwvYT4uIDwvcD4KCjxoMz5lcnJvciBjaGVja2luZzwvaDM+Cgo8cD5BIG51bWJlciBvZiBkZXNpZ25zIGZvciB0aGUgZXJyb3IgY2hlY2tpbmcgbWFjaGluZXJ5IHdlcmUgYWJhbmRvbmVkLCBzb21lIAphZnRlciBleHBlcmltZW50cyB3aXRoIGltcGxlbWVudGF0aW9ucy4gVG90YWxseSBhdXRvbWF0aWMgZXJyb3IgY2hlY2tpbmcgd2FzIAphdHRlbXB0ZWQgaW4gcGFydGljdWxhci4gQnV0IGF1dG9tYXRpYyBlcnJvciBjaGVja2luZyB0ZW5kZWQgdG8gbWFrZSB0aGUgb3ZlcmFsbCAKbGlicmFyeSBkZXNpZ24gbXVjaCBtb3JlIGNvbXBsaWNhdGVkLjwvcD4KCjxwPlNvbWUgZGVzaWducyBhc3NvY2lhdGVkIGVycm9yIGNoZWNraW5nIG1lY2hhbmlzbXMgd2l0aCBwYXRocy4mbmJzcDsgU29tZSB3aXRoIApvcGVyYXRpb25zIGZ1bmN0aW9ucy4mbmJzcDsgQSBwb2xpY3ktYmFzZWQgZXJyb3IgY2hlY2tpbmcgdGVtcGxhdGUgZGVzaWduIHdhcyAKcGFydGlhbGx5IGltcGxlbWVudGVkLCB0aGVuIGFiYW5kb25lZCBhcyB0b28gY29tcGxpY2F0ZWQgZm9yIGV2ZXJ5ZGF5IApzY3JpcHQtbGlrZSBwcm9ncmFtcy48L3A+Cgo8cD5UaGUgZmluYWwgZGVzaWduLCB3aGljaCBkZXBlbmRzIHBhcnRpYWxseSBvbiBleHBsaWNpdCBlcnJvciBjaGVja2luZyBmdW5jdGlvbiAKY2FsbHMsJm5ic3A7IGlzIG11Y2ggc2ltcGxlciBhbmQgc3RyYWlnaHRmb3J3YXJkLCBhbHRob3VnaCBpdCBkb2VzIGRlcGVuZCB0byAKc29tZSBleHRlbnQgb24gcHJvZ3JhbW1lciBkaXNjaXBsaW5lLiZuYnNwOyBCdXQgaXQgc2hvdWxkIGFsbG93IHByb2dyYW1tZXJzIHdobyAKYXJlIGNvbmNlcm5lZCBhYm91dCBwb3J0YWJpbGl0eSB0byBiZSByZWFzb25hYmx5IHN1cmUgdGhhdCB0aGVpciBwcm9ncmFtcyB3aWxsIAp3b3JrIGNvcnJlY3RseSBvbiB0aGVpciBjaG9pY2Ugb2YgdGFyZ2V0IHN5c3RlbXMuPC9wPgoKPGgyPjxhIG5hbWU9IlJlZmVyZW5jZXMiPlJlZmVyZW5jZXM8L2E+PC9oMj4KCjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSI1IiBjZWxsc3BhY2luZz0iMCIgc3R5bGU9ImJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiIGJvcmRlcmNvbG9yPSIjMTExMTExIiB3aWR0aD0iMTAwJSI+CiAgPHRyPgogICAgPHRkIHdpZHRoPSIxMyUiIHZhbGlnbj0idG9wIj5bPGEgbmFtZT0iSUJNLTAxIj5JQk0tMDE8L2E+XTwvdGQ+CiAgICA8dGQgd2lkdGg9Ijg3JSI+SUJNIENvcnBvcmF0aW9uLCA8aT56L09TIFYxUjMuMCBDL0MrKyBSdW4tVGltZSAKTGlicmFyeSBSZWZlcmVuY2U8L2k+LCBTQTIyLTc4MjEtMDIsIDIwMDEsCjxhIGhyZWY9Imh0dHA6Ly93d3ctMS5pYm0uY29tL3NlcnZlcnMvZXNlcnZlci96c2VyaWVzL3pvcy9ia3NlcnYvIj4KICAgIHd3dy0xLmlibS5jb20vc2VydmVycy9lc2VydmVyL3pzZXJpZXMvem9zL2Jrc2Vydi88L2E+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMTMlIiB2YWxpZ249InRvcCI+WzxhIG5hbWU9IklTTy05NjYwIj5JU08tOTY2MDwvYT5dPC90ZD4KICAgIDx0ZCB3aWR0aD0iODclIj5JbnRlcm5hdGlvbmFsIFN0YW5kYXJkcyBPcmdhbml6YXRpb24sIDE5ODg8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHdpZHRoPSIxMyUiIHZhbGlnbj0idG9wIj5bPGEgbmFtZT0iS3VobiI+S3VobjwvYT5dPC90ZD4KICAgIDx0ZCB3aWR0aD0iODclIj5VVEYtOCBhbmQgVW5pY29kZSBGQVEgZm9yIFVuaXgvTGludXgsCjxhIGhyZWY9Imh0dHA6Ly93d3cuY2wuY2FtLmFjLnVrL35tZ2syNS91bmljb2RlLmh0bWwiPgogICAgd3d3LmNsLmNhbS5hYy51ay9+bWdrMjUvdW5pY29kZS5odG1sPC9hPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjEzJSIgdmFsaWduPSJ0b3AiPls8YSBuYW1lPSJNU0ROIj5NU0ROPC9hPl0gPC90ZD4KICAgIDx0ZCB3aWR0aD0iODclIj5NaWNyb3NvZnQgUGxhdGZvcm0gU0RLIGZvciBXaW5kb3dzLCBTdG9yYWdlIFN0YXJ0IApQYWdlLAo8YSBocmVmPSJodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2xpYnJhcnkvZW4tdXMvZmlsZWlvL2Jhc2Uvc3RvcmFnZV9zdGFydF9wYWdlLmFzcCI+CiAgICBtc2RuLm1pY3Jvc29mdC5jb20vbGlicmFyeS9lbi11cy9maWxlaW8vYmFzZS9zdG9yYWdlX3N0YXJ0X3BhZ2UuYXNwPC9hPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjEzJSIgdmFsaWduPSJ0b3AiPls8YSBuYW1lPSJQT1NJWC0wMSI+UE9TSVgtMDE8L2E+XTwvdGQ+CiAgICA8dGQgd2lkdGg9Ijg3JSI+SUVFRSZuYnNwO1N0ZCZuYnNwOzEwMDMuMS0yMDAxLCBJU08vSUVDIDk5NDU6MjAwMiwgYW5kIFRoZSBPcGVuIEdyb3VwIEJhc2UgU3BlY2lmaWNhdGlvbnMsIElzc3VlIDYuIEFsc28ga25vd24gYXMgVGhlIAogICAgU2luZ2xlIFVuaXg8Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPq4gU3BlY2lmaWNhdGlvbiwgVmVyc2lvbiAzLiAKICAgIEF2YWlsYWJsZSBmcm9tIGVhY2ggb2YgdGhlIG9yZ2FuaXphdGlvbnMgaW52b2x2ZWQgaW4gaXRzIGNyZWF0aW9uLiBGb3IgCiAgICBleGFtcGxlLCByZWFkIG9ubGluZSBvciBkb3dubG9hZCBmcm9tCiAgICA8YSBocmVmPSJodHRwOi8vd3d3LnVuaXgub3JnL3NpbmdsZV91bml4X3NwZWNpZmljYXRpb24vIj4KICAgIHd3dy51bml4Lm9yZy9zaW5nbGVfdW5peF9zcGVjaWZpY2F0aW9uLzwvYT4uPC9mb250PiBUaGUgSVNPIEpUQzEvU0MyMi9XRzE1IC0gUE9TSVggCmhvbWVwYWdlIGlzIDxhIGhyZWY9Imh0dHA6Ly93d3cub3Blbi1zdGQub3JnL2p0YzEvc2MyMi9XRzE1LyI+CiAgICB3d3cub3Blbi1zdGQub3JnL2p0YzEvc2MyMi9XRzE1LzwvYT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHdpZHRoPSIxMyUiIHZhbGlnbj0idG9wIj5bPGEgbmFtZT0iVVJJIj5VUkk8L2E+XTwvdGQ+CiAgICA8dGQgd2lkdGg9Ijg3JSI+UkZDLTIzOTYsIFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllcnMgKFVSSSk6IEdlbmVyaWMgClN5bnRheCwgPGEgaHJlZj0iaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjM5Ni50eHQiPgogICAgd3d3LmlldGYub3JnL3JmYy9yZmMyMzk2LnR4dDwvYT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHdpZHRoPSIxMyUiIHZhbGlnbj0idG9wIj5bPGEgbmFtZT0iVVRGLTE2Ij5VVEYtMTY8L2E+XTwvdGQ+CiAgICA8dGQgd2lkdGg9Ijg3JSI+V2lraXBlZGlhLCBVVEYtMTYsCjxhIGhyZWY9Imh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVVRGLTE2Ij4KICAgIGVuLndpa2lwZWRpYS5vcmcvd2lraS9VVEYtMTY8L2E+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMTMlIiB2YWxpZ249InRvcCI+WzxhIG5hbWU9Ild1bGYtU2hhdy03MyI+V3VsZi1TaGF3LTczPC9hPl08L3RkPgogICAgPHRkIHdpZHRoPSI4NyUiPldpbGxpYW0gV3VsZiwgTWFyeSBTaGF3LCA8aT5HbG9iYWwgClZhcmlhYmxlIENvbnNpZGVyZWQgSGFybWZ1bDwvaT4sIEFDTSBTSUdQTEFOIE5vdGljZXMsIDgsIDIsIDE5NzMsIHBwLiAyMy0zNDwvdGQ+CiAgPC90cj4KPC90YWJsZT4KCjxocj4KPHA+UmV2aXNlZAo8IS0td2ViYm90IGJvdD0iVGltZXN0YW1wIiBTLVR5cGU9IkVESVRFRCIgUy1Gb3JtYXQ9IiVkICVCLCAlWSIgc3RhcnRzcGFuIC0tPjAyIEF1Z3VzdCwgMjAwNTwhLS13ZWJib3QgYm90PSJUaW1lc3RhbXAiIGVuZHNwYW4gaS1jaGVja3N1bT0iMzQ2MDAiIC0tPjwvcD4KCjxwPqkgQ29weXJpZ2h0IEJlbWFuIERhd2VzLCAyMDAyPC9wPgo8cD4gVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIApMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSA8YSBocmVmPSIuLi8uLi8uLi8uLi9MSUNFTlNFXzFfMC50eHQiPgpMSUNFTlNFXzFfMC50eHQ8L2E+IG9yIGNvcHkgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ij4Kd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+KTwvcD4KCjwvYm9keT4KCjwvaHRtbD4=