PCEtLSBzYXZlZCBmcm9tIHVybD0oMDAyMilodHRwOi8vaW50ZXJuZXQuZS1tYWlsIC0tPgo8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KPGh0bWw+CjxoZWFkPgogIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0iIj4KICA8dGl0bGU+QXhpczIgYWRtaW5pc3RhcnRpb24gZ3VpZGU8L3RpdGxlPgo8L2hlYWQ+Cgo8Ym9keSBsYW5nPSJlbiI+CjxwPjwvcD4KCjxoMz5JbnRyb2R1Y3Rpb248L2gzPgoKPHA+QXhpczIgd2ViIGFkbWluaXN0cmF0aW9uIG1vZHVsZSBwcm92aWRlcyBhIHdheSB0byBjb25maWd1cmUgYXhpczIKZHluYW1pY2FsbHkuIEl0cyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoaXMgZHluYW1pYyBjb25maWd1cmF0aW9uIHdpbGwgTk9UCmJlIHBlcnNpc3RlbnQsIGkuZS4gaWYgdGhlIHNlcnZsZXQgY29udGFpbmVyIGlzIHJlc3RhcnRlZCB0aGVuIGFsbCB0aGUKZHluYW1pYyBjb25maWd1cmF0aW9uIGNoYW5nZXMgd2lsbCBiZSBsb3N0LjwvcD4KCjxwPjwvcD4KCjxoND48YSBuYW1lPSJfVG9jOTY2OTgwNzYiPjwvYT5Mb2dpbiBpbnRvIGFkbWluaXN0cmF0aW9uIHNpdGU8L2g0PgoKPHA+RnJvbSBheGlzMiBpbmRleCBwYWdlIHlvdSBjYW4gZ28gdG8gYWRtaW5pc3RyYXRpb24gcGFnZSBieSBmb2xsb3dpbmcgQXhpczIKQWRtaW5pc3RyYXRpb24gbGluaywgdGhlbiBsb2dnaW5nIHBhZ2Ugd2lsbCBhcHBlYXIgYXNraW5nIGZvciBhIHVzZXIgbmFtZSBhbmQKYSBwYXNzd29yZCAsIHRoZSBkZWZhdWx0IHVzZXJuYW1lIGlzICdhZG1pbicgKHdpdGhvdXQgcXVvdGVzKSBhbmQgZGVmYXVsdApwYXNzd29yZCBpcyAnYXhpczInICh3aXRob3V0IHF1b3RlcykuIFlvdSBjYW4gY2hhbmdlIHRob3NlIHR3byB2YWx1ZXMgYnkKY2hhbmdpbmcgZm9sbG93aW5nIHR3byBwYXJhbWV0ZXJzIGluIHNlcnZlci54bWwgYXMgcmVxdWlyZWQuPC9wPgoKPHAgYWxpZ249ImxlZnQiPjxzdHJvbmc+PGltZyBzcmM9ImltYWdlcy9wYXJhbWV0ZXJzLmpwZyI+PC9zdHJvbmc+PC9wPgoKPHAgYWxpZ249ImxlZnQiPjxzdHJvbmc+PGltZyBzcmM9ImltYWdlcy9hZG1pbmxvZ2luLmpwZyI+PC9zdHJvbmc+PC9wPgoKPHA+SWYgdGhlIGxvZ2luIHN1Y2NlZWQgeW91IHdpbGwgYmUgc2VlIGFzIHNob3duIGJlbG93LiBUaGlzIGlzIHdoZXJlIHlvdSBjYW4KdmlldyB0aGUgY29uZmlndXJhdGlvbiBhbmQgdGhlIHN0YXRlIG9mIHRoZSBydW5uaW5nIHN5c3RlbSBhbmQgZHluYW1pY2FsbHkKY29uZmlndXJlIGl0LjwvcD4KCjxwIGFsaWduPSJsZWZ0Ij48c3Ryb25nPjxpbWcgc3JjPSJpbWFnZXMvYWRtaW4uanBnIj48L3N0cm9uZz48L3A+Cgo8aDM+QWRtaW5pc3RyYXRpb24gT3B0aW9uczwvaDM+Cjx1bD4KICA8Yj5TeXN0ZW0gY29tcG9uZW50czwvYj4gPHVsPgogICAgPGxpPjxhIGhyZWY9IiNoZWFkaW5nMSI+TGlzdCBhdmFpbGFibGUgc2VydmljZXM8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSIjYXZtb2R1bGVzIj5MaXN0IGF2YWlsYWJsZSBtb2R1bGVzPC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iI2dsb2JhbG1vZHVsZXMiPkxpc3QgZ2xvYmFsbHkgZW5nYWdlZCBtb2R1bGVzPC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iI3BoYXNlcyI+VmlldyBhdmFpbGFibGUgcGhhc2VzPC9hPjwvbGk+CiAgPC91bD4KICA8YnI+CiAgPGI+RXhlY3V0aW9uIGNoYWluczwvYj4gPHVsPgogICAgPGxpPjxhIGhyZWY9IiNnbG9iYWxjaGFpbnMiPkdsb2JhbCBjaGFpbnM8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSIjb3BlcmF0aW9uY2hhaW5zIj5PcGVyYXRpb24gc3BlY2lmaWMgY2hhaW5zPC9hPjwvbGk+CiAgPC91bD4KICA8YnI+CiAgPGI+T3RoZXI8L2I+IDx1bD4KICAgIDxsaT48YSBocmVmPSIjZW5nYWdpbm1vZHVsZSI+RW5nYWdlIG1vZHVsZTwvYT48L2xpPgogIDwvdWw+CiAgPGJyPgogIDxiPkVkaXQgU2VydmljZTwvYj4gPHVsPgogICAgPGxpPjxhIGhyZWY9IiN0dXJub2Zmc2VydmljZSI+VHVybiBvZmYgYSBzZXJ2aWNlPC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iI2VkaXRzZXJ2aWNlcGFyYSI+RWRpdCBzZXJ2aWNlIHBhcmFtZXRlcnM8L2E+PC9saT4KICA8L3VsPgo8L3VsPgoKPGgzPjxhIG5hbWU9ImhlYWRpbmcxIj48L2E+TGlzdCBBdmFpbGFibGUgc2VydmljZXM8L2gzPgoKPHA+VGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlICdMaXN0IEF2YWlsYWJsZSBTZXJ2aWNlcycgb3B0aW9uIGlzIGFsbW9zdCBzYW1lCmFzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBheGlzIHRvIG1haW4gcGFnZSB3aGVyZSBpdCBkaXNwbGF5cyB0aGUgbGlzdCBvZgpkZXBsb3llZCBzZXJ2aWNlcy4gQnV0IGFzIGFuIGFkZGl0aW9uYWwgZmVhdHVyZSwgaWYgdGhlcmUgYXJlIGFueSBtb2R1bGVzCmVuZ2FnZWQgZ2xvYmFsbHksIHRvIHNlcnZpY2VzIG9yIHRvIG9wZXJhdGlvbnMgdGhvc2UgZGV0YWlscyB3aWxsIGJlCmRpc3BsYXllZCBoZXJlLjwvcD4KCjxwIGFsaWduPSJsZWZ0Ij48c3Ryb25nPjxpbWcgc3JjPSJpbWFnZXMvYWRtaW5tYWluLmpwZyI+PC9zdHJvbmc+PC9wPgoKPGgzPjxhIG5hbWU9ImF2bW9kdWxlcyI+PC9hPkxpc3QgQXZhaWxhYmxlIG1vZHVsZXM8L2gzPgoKPHA+VG8gdmlldyB0aGUgYXZhaWxhYmxlIG1vZHVsZXMgaW4gdGhlICJyZXBvc2l0b3J5L21vZHVsZXMiIHlvdSBqdXN0IGhhdmUgdG8KY2xpY2sgdGhlICdBdmFpbGFibGUgTW9kdWxlcycgdGhlbiBpdCB3aWxsIHNob3cgeW91IGFsbCB0aGUgYXZhaWxhYmxlIG1vZHVsZXMKaW4gdGhlIHN5c3RlbSBhbmQgdGhvc2UgbW9kdWxlcyBjYW4gYmUgZW5nYWdlZCBkeW5hbWljYWxseS48L3A+Cgo8cCBhbGlnbj0ibGVmdCI+PHN0cm9uZz48aW1nIHNyYz0iaW1hZ2VzL21vZHVsZXMuanBnIj48L3N0cm9uZz48L3A+Cjxicj4KCgo8aDM+PGEgbmFtZT0iZ2xvYmFsbW9kdWxlcyI+PC9hPkxpc3QgR2xvYmFsbHkgZW5nYWdlZCBtb2R1bGVzPC9oMz4KCjxwPkZyb20gdGhlIGdsb2JhbGx5IGVuZ2FnZWQgbW9kdWxlcyB5b3UgY2FuIHNlZSB0aGUgZ2xvYmFsbHkgZW5nYWdlZCBtb2R1bGVzCmlmIGFueSAsIGlmIGEgbW9kdWxlIHdhcyBlbmdhZ2VkIGdsb2JhbGx5IHRoZW4gdGhlIGhhbmRsZXJzIHRoYXQgYmVsb25nIHRvCnRoYXQgbW9kdWxlIHdpbGwgYmUgZXhlY3V0ZWQgaXJyZXNwZWN0aXZlIG9mIHRoZSBzZXJ2aWNlLiBUaGUgJ0dsb2JhbGx5CkVuZ2FnZWQgTW9kdWxlcycgb3B0aW9uIGxpc3RzIHRoZSBhYm92ZSBsaXN0IG9mIG1vZHVsZXMuPC9wPgo8YnI+CgoKPGgzPjxhIG5hbWU9InBoYXNlcyI+PC9hPlZpZXcgYXZhaWxhYmxlIHBoYXNlczwvaDM+Cgo8cD5JbiBheGlzMiB0aGVyZSBhcmUgdHdvIGxldmVscyBvZiBwaGFzZXM6PC9wPgo8dWw+CiAgPGxpPnN5c3RlbSBwcmVkZWZpbmVkIHBoYXNlcyhub3QgYWxsb3dlZCB0byBiZSBjaGFuZ2VkKTwvbGk+CiAgPGxpPnVzZXIgZGVmaW5lZCBwaGFzZXM8L2xpPgo8L3VsPgoKPHA+VGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIHRob3NlIHR3byBsZXZlbHMgb2YgcGhhc2VzIGlzIHRoYXQsIGluIHRoZQpjYXNlIG9mIHN5c3RlbSBwcmVkZWZpbmVkIHBoYXNlcywgdGhlIHBoYXNlcyB3aWxsIGJlIGludm9rZWQgaXJyZXNwZWN0aXZlIG9mCnRoZSBpcnJlc3BlY3RpdmUgb2YgdGhlIHNlcnZpY2VzLiBXaGVuIHRoZSBkaXNwYXRjaGVyIGZpbmRzIHRoZSBvcGVyYXRpb24KdGhlbiB1c2VyIGRlZmluZWQgcGhhc2UgbGlzdCB3aWxsIGJlIGludm9rZWQuIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IHRoZQptb2R1bGUgZGV2ZWxvcGVycyBhbmQgc2VydmljZSB3cml0ZXJzIGFyZSByZWFsbHkgcmVxdWlyZWQgdG8gaGF2ZSBhIGdvb2QKdW5kZXJzdGFuZGluZyBvZiBwaGFzZXMgYW5kIHBoYXNlIG9yZGVyaW5nLjwvcD4KPGltZyBzcmM9ImltYWdlcy92aWV3cGhhc2VzLmpwZyI+IDxicj4KCgo8aDM+PGEgbmFtZT0iZ2xvYmFsY2hhaW5zIj48L2E+VmlldyBHbG9iYWwgY2hhaW5zPC9oMz4KCjxwPlRoZSBtb3N0IGludGVyZXN0aW5nIGZlYXR1cmUgb2YgYXhpczIgd2ViIGFkbWluIG1vZHVsZSBpcyB0aGF0IGl0IHByb3ZpZGUKYSB2ZXJ5IGJhc2ljIHdheSBvZiB2aWV3aW5nIHRoZSBnbG9iYWwgcGhhc2UgbGlzdCBhbmQgaGFuZGxlcnMgaW5zaWRlIHRoZQpwaGFzZXMgZGVwZW5kaW5nIG9uIGJvdGggcGhhc2UgYW5kIGhhbmRsZXIgb3JkZXJzLiBUaGlzIGtpbmQgb2YgaW5mb3JtYXRpb24KaXMgZXh0cmVtZWx5IHVzZWZ1bCBpbiBkZWJ1Z2dpbmcgdGhlIHN5c3RlbSwgYmVjYXVzZSB0aGVyZSBpcyBubyB3YXkgdG8gbGlzdApvdXQgdGhlIGhhbmRsZXJzIGluIHRoZSBnbG9iYWwgY2hhaW5zIGV4Y2VwdCB0aGlzLiBBbmQgaWYgeW91IGVuZ2FnZSBhIG5ldwptb2R1bGUgdGhlIG5ldyBoYW5kbGVycyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBnbG9iYWwgY2hhaW5zIGFuZCB0aG9zZSB3aWxsIGJlCmRpc3BsYXllZCBpbiB0aGlzIHBhZ2UuPC9wPgoKPHAgYWxpZ249ImxlZnQiPjxzdHJvbmc+PGltZyBzcmM9ImltYWdlcy9nbG9iYWxjaGFpbi5qcGciPjwvc3Ryb25nPjwvcD4KPGJyPgoKCjxoMz48YSBuYW1lPSJvcGVyYXRpb25jaGFpbnMiPjwvYT5WaWV3IG9wZXJhdGlvbiBzcGVjaWZpYyBjaGFpbnM8L2gzPgoKPHA+VGhlICdPcGVyYXRpb24gU3BlY2lmaWMgQ2hhaW5zJyBjYW4gYmUgdXNlZCB0byB2aWV3IHRoZSBoYW5kbGVycwpjb3JyZXNwb25kaW5nIHRvIGEgZ2l2ZW4gc2VydmljZSBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGVyZSBpbiB0aGUgcmVhbApleGVjdXRpb24gY2hhaW4uPC9wPgoKPHAgYWxpZ249ImxlZnQiPjxzdHJvbmc+PGltZyBzcmM9ImltYWdlcy9zZXJ2aWNlSGFuZGxlcnMuanBnIj48L3N0cm9uZz48L3A+Cjxicj4KCgo8aDM+PGEgbmFtZT0iZW5nYWdpbm1vZHVsZSI+PC9hPkVuZ2FnaW5nIG1vZHVsZXM8L2gzPgoKPHA+TW9kdWxlcyBjYW4gYmUgZW5nYWdlZCBlaXRoZXIgZ2xvYmFsbHksIHRvIGEgc2VydmljZSBvciB0byBhbiBvcGVyYXRpb24KZGVwZW5kaW5nIG9uIHRoZSBtb2R1bGUgaW1wbGVtZW50YXRpb24uIElmIHRoZSBtb2R1bGUgd2FzIGRlc2lnbmVkIHRvIGVuZ2FnZQp0aGUgaGFuZGxlcnMgZ2xvYmFsbHkgdGhlbiBoYW5kbGVycyBpbiB0aGUgbW9kdWxlIGNhbiBiZSBpbmNsdWRlZCBpbiBhbnkKcGhhc2UgaW4gdGhlIHN5c3RlbS4gSXQgY2FuIGJlIGVpdGhlciBzeXN0ZW0gcHJlZGVmaW5lZCBvciB1c2VyIGRlZmluZWQKcGhhc2UuPC9wPgoKPHA+SW4gdGhlcmUgb3RoZXIgaGFuZCBpZiB0aGUgbW9kdWxlIHdhcyBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IHRoYXQgaXMKZ29pbmcgdG8gYmUgZGVwbG95ZWQgdG8gYSBzZXJ2aWNlIG9yIHRvIGFuIG9wZXJhdGlvbiB0aGVuIHRoZSBtb2R1bGUgY2FuTk9UCmJlIGluY2x1ZGVkIGluIGFueSBvZiBzeXN0ZW0gcHJlZGVmaW5lZCBwaGFzZXMuIFNvIHRoYXQgaXQgY2FuIG9ubHkgYmUKaW5jbHVkZWQgaW4gdXNlciBkZWZpbmVkIHBoYXNlcy48L3A+Cgo8cD5JbW1lZGlhdGVseSBhZnRlciBlbmdhZ2luZyB0aGUgbW9kdWxlIHlvdSBjYW4gc2VlIHRoZSBzdGF0dXMgb2YgdGhlCmVuZ2FnZW1lbnQgLCBpbmRpY2F0aW5nIHdoZXRoZXIgaXQgaXMgZW5nYWdlZCBwcm9wZXJseSBvciBub3QuPC9wPgoKPHAgYWxpZ249ImxlZnQiPjxzdHJvbmc+PGltZyBzcmM9ImltYWdlcy9tb2R1bGVlbmdhZ2UuanBnIj48L3N0cm9uZz48L3A+Cgo8cD6gPC9wPgo8YnI+CgoKPGgzPjxhIG5hbWU9InR1cm5vZmZzZXJ2aWNlIj48L2E+VHVybiBvZmYgYSBzZXJ2aWNlPC9oMz4KCjxwPlRoaXMgZnVuY3Rpb25hbGl0eSBwcm92aWRlIGEgd2F5IHRvIHJlbW92ZSB1bm5lY2Vzc2FyeSBzZXJ2aWNlcyBmcm9tIHRoZQpydW5uaW5nIHN5c3RlbSwgYnV0IHRoZSByZW1vdmFsIGlzIHRyYW5zaWVudCBtZWFuaW5nIGlmIHlvdSByZXN0YXJ0IHRoZQpzeXN0ZW0gdGhlIHNlcnZpY2Ugd2lsbCBiZSBhdmFpbGFibGUuPC9wPgoKPHAgYWxpZ249ImxlZnQiPjxzdHJvbmc+PGltZyBzcmM9ImltYWdlcy9yZW1vdmVzZXJ2aWNlLmpwZyI+PC9zdHJvbmc+PC9wPgo8YnI+CgoKPGgzPjxhIG5hbWU9ImVkaXRzZXJ2aWNlcGFyYSI+PC9hPkVkaXQgc2VydmljZSBwYXJhbWV0ZXJzPC9oMz4KCjxwPlRoaXMgZnVuY3Rpb25hbGl0eSBwcm92aWRlIGEgd2F5IHRvIGNoYW5nZSBwYXJhbWV0ZXJzIGluIGEgc2VydmljZSBvciBpdHMKb3BlcmF0aW9ucywgYW5kIHRob3NlIGNoYW5nZXMgd2lsbCBiZSB0cmFuc2llbnQgdG9vLjwvcD4KCjxwIGFsaWduPSJsZWZ0Ij48c3Ryb25nPjxpbWcgc3JjPSJpbWFnZXMvZWRpdHNlcnZpZWNwYXJhLmpwZyI+PC9zdHJvbmc+PC9wPgo8L2JvZHk+CjwvaHRtbD4K