PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8YXRsVHJhbnNmb3JtYXRpb25zPgoJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+QW50Mk1hdmVuPC9zaG9ydE5hbWU+CgkJPG5hbWU+QW50IHRvIE1hdmVuPC9uYW1lPgoJCTxkb2NMaW5rPkFudDJNYXZlbi9FeGFtcGxlQW50Mk1hdmVuW3YwMC4wMV0ucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPkFudDJNYXZlbi9BbnQyTWF2ZW4uemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCSAgICAJQW50IGlzIGFuIG9wZW4gc291cmNlIGJ1aWxkIHRvb2wgKGEgdG9vbCBkZWRpY2F0ZWQgdG8gdGhlIGFzc2VtYmx5IG9mIHRoZSBkaWZmZXJlbnQgcGllY2VzIG9mIGEgcHJvZ3JhbSkgZnJvbSB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCiAgICAJCUFudCBpcyB0aGUgbW9zdCBjb21tb25seSB1c2VkIGJ1aWxkIHRvb2wgZm9yIEphdmEgcHJvZ3JhbXMuCgkJCU1hdmVuIGlzIGFub3RoZXIgYnVpbGQgdG9vbCBjcmVhdGVkIGJ5IHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KCQkJSXQgaXMgYW4gZXh0ZW5zaW9uIG9mIEFudCBiZWNhdXNlIGFudCBUYXNrcyBjYW4gYmUgdXNlZCBpbiBNYXZlbi4KCQkJVGhlIGRpZmZlcmVuY2UgZnJvbSBBbnQgaXMgdGhhdCBhIHByb2plY3QgY2FuIGJlIHJldXNhYmxlLgoJCQlUaGlzIGV4YW1wbGUgZGVzY3JpYmVzIGEgdHJhbnNmb3JtYXRpb24gZnJvbSBhbiBBbnQgZmlsZSB0byBNYXZlbiBmaWxlcyAocHJvamVjdC54bWwgYW5kIG1hdmVuLnhtbCkuCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgoJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+QXNzZXJ0aW9uTW9kaWZpY2F0aW9uPC9zaG9ydE5hbWU+CgkJPG5hbWU+QXNzZXJ0aW9uTW9kaWZpY2F0aW9uPC9uYW1lPgoJCTxkb2NMaW5rPkFzc2VydGlvbk1vZGlmaWNhdGlvbi9Bc3NlcnRpb25Nb2RpZmljYXRpb24ucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPkFzc2VydGlvbk1vZGlmaWNhdGlvbi9Bc3NlcnRpb25Nb2RpZmljYXRpb24uemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhpcyBleGFtcGxlIGlzIGV4dHJhY3QgZnJvbSA8YSBocmVmPSJodHRwOi8vd3d3LmRjcy5rY2wuYWMudWsvc3RhZmYva2NsL3RjYXQucGRmIj5DYXRhbG9ndWUgb2YgTW9kZWwgVHJhbnNmb3JtYXRpb25zIGJ5IEsuIExhbm88L2E+LgoJCQlUaGUgcHVycG9zZSBvZiB0aGlzIHRyYW5zZm9ybWF0aW9uIGlzIHRvIHdlYWtlbmluZyBwcmVjb25kaXRpb25zIG9yIHN0cmVuZ3RoZW5pbmcgcG9zdGNvbmRpdGlvbnMuCgkJCVRoaXMgZXhhbXBsZSB3YXMgZXh0cmFjdGVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuc2NpZW5jZXMudW5pdi1uYW50ZXMuZnIvbGluYS9hdGwvY29udHJpYi9zaW1vbiI+RXJpYyBTaW1vbjwvYT4uCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgoJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+QVRMMkJpbmRpbmdEZWJ1Z2dlcjwvc2hvcnROYW1lPgoJCTxuYW1lPkFUTCB0byBCaW5kaW5nRGVidWdnZXI8L25hbWU+CgkJPGRvY0xpbms+QVRMMkJpbmRpbmdEZWJ1Z2dlci9SRUFETUUudHh0PC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPkFUTDJCaW5kaW5nRGVidWdnZXIvQVRMMkJpbmRpbmdEZWJ1Z2dlci56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQk8cD4KCQkJCVRoZSBBVEwyQmluZGluZ0RlYnVnZ2VyIEFUTCB0cmFuc2Zvcm1hdGlvbiBhZGRzIGEgZGVidWcgaW5zdHJ1Y3Rpb24gdG8gZWFjaCBiaW5kaW5nIGluIGFuIEFUTCB0cmFuc2Zvcm1hdGlvbi4KCQkJPC9wPgoJCQk8cD4KCQkJCVNvdXJjZSBhbmQgdGFyZ2V0IG1vZGVscyBjb25mb3JtIHRvIEFUTCBtZXRhbW9kZWwuCgkJCQlBIHNhbXBsZSBzb3VyY2UgbW9kZWwgKHNhbXBsZS1BVEwtMC4yLmVjb3JlKSBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgdGFyZ2V0IG1vZGVsIChTYW1wbGUtQVRMLTAuMihEZWJ1ZykuZWNvcmUpIGFyZSBnaXZlbi4KCQkJPC9wPgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KICAJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+QVRMMlByb2JsZW08L3Nob3J0TmFtZT4KCQk8bmFtZT5BVEwgdG8gUHJvYmxlbTwvbmFtZT4KCQk8ZG9jTGluaz5BVEwyUHJvYmxlbS9FeGFtcGxlQVRMMlByb2JsZW1bdjAwLjAxXS5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+QVRMMlByb2JsZW0vQVRMMlByb2JsZW0uemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhlIEFUTCB0byBQcm9ibGVtIGV4YW1wbGUgZGVzY3JpYmVzIGEgdHJhbnNmb3JtYXRpb24gZnJvbSBhbiBBVEwgbW9kZWwgaW50byBhIFByb2JsZW0gbW9kZWwuCgkJCVRoZSBnZW5lcmF0ZWQgUHJvYmxlbSBtb2RlbCBjb250YWlucyB0aGUgbGlzdCBvZiBub24tc3RydWN0dXJhbCBlcnJvcnMgKGFsb25nIHdpdGggYWRkaXRpb25hbCB3YXJuaW5ncykgdGhhdCBoYXZlIGJlZW4gZGV0ZWN0ZWQgd2l0aGluIHRoZSBpbnB1dCBBVEwgbW9kZWwuCgkJCVRoZSB0cmFuc2Zvcm1hdGlvbiBhc3N1bWVzIHRoZSBpbnB1dCBBVEwgbW9kZWwgaXMgc3RydWN0dXJhbGx5IGNvcnJlY3QsIGFzIHRob3NlIHRoYXQgaGF2ZSBwYXNzZWQgYSBzeW50YWN0aWMgYW5hbHlzaXMgKGZvciBpbnN0YW5jZSwgYSByZWZlcmVuY2UgZGVmaW5lZCB3aXRoIGNhcmRpbmFsaXR5IFsxLTFdIHNob3VsZCBub3QgYmUgdW5kZWZpbmVkKS4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPkFUTDJUcmFjZXI8L3Nob3J0TmFtZT4KCQk8bmFtZT5BVEwgdG8gVHJhY2VyPC9uYW1lPgoJCTxkb2NMaW5rPkFUTDJUcmFjZXIvUkVBRE1FLnR4dDwvZG9jTGluaz4KCQk8c291cmNlTGluaz5BVEwyVHJhY2VyL0FUTDJUcmFjZXIuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJPHA+CgkJCQlUaGUgQVRMMlRyYWNlciB0cmFuc2Zvcm1hdGlvbiBzaG93cyBob3cgdHJhY2VhYmlsaXR5IGdlbmVyYXRpbmcgY29kZSBjYW4gYmUgcmVsYXRpdmVseSBlYXNpbHkgYWRkZWQgdG8KCQkJCUFUTCBjb2RlLiBJdCBtb3Jlb3ZlciBzaG93cyB0aGF0IHRoaXMgcHJvY2VzcyBjYW4gYmUgZnVsbHkgYXV0b21hdGVkLgoJCQk8L3A+CgkJCTxwPgoJCQkJVG8gZmluZCBtb3JlIGRldGFpbHMgY29uY2VybmluZyBkZWFsaW5nIHRyYWNlYWJpbGl0eSBpbiBBVEwsIHBsZWFzZSByZWZlciB0byBbMV0uCgkJCTwvcD4KCQkJPHA+CgkJCQlTb3VyY2UgYW5kIHRhcmdldCBtb2RlbHMgY29uZm9ybSB0byBBVEwgbWV0YW1vZGVsLgoJCQkJQSBzYW1wbGUgc291cmNlIG1vZGVsIChzYW1wbGUtQVRMLTAuMi5lY29yZSBpbiBBVEwyVHJhY2VyIGZvbGRlcikgYW5kIGl0cyBjb3JyZXNwb25kaW5nIHRhcmdldCBtb2RlbCAoc2FtcGxlLUFUTC0wLjItVHJhY2VyLmVjb3JlIGluIFRyYWNlcnRlc3QvSW5wdXQpIGFyZSBnaXZlbi4KCQkJPC9wPgoJCQk8cD4KCQkJCVJlZmVyZW5jZXM6CgkJCQk8dWw+CgkJCQkJPGxpPlsxXSBKb3VhdWx0LCBGIDogTG9vc2VseSBDb3VwbGVkIFRyYWNlYWJpbGl0eSBmb3IgQVRMLiBJbjogUHJvY2VlZGluZ3Mgb2YgdGhlIEV1cm9wZWFuIENvbmZlcmVuY2Ugb24gTW9kZWwgRHJpdmVuIEFyY2hpdGVjdHVyZSAoRUNNREEpIHdvcmtzaG9wIG9uIHRyYWNlYWJpbGl0eSwgTnVyZW1iZXJnLCBHZXJtYW55LjwvbGk+CgkJCQk8L3VsPgoJCQk8L3A+CgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5CaWJUZVhNTDJEb2NCb29rPC9zaG9ydE5hbWU+CgkJPG5hbWU+QmliVGVYTUwgdG8gRG9jQm9vazwvbmFtZT4KCQk8ZG9jTGluaz5CaWJUZVhNTDJEb2NCb29rL0V4YW1wbGVCaWJUZVhNTDJEb2NCb29rW3YwMC4wMV0ucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPkJpYlRlWE1MMkRvY0Jvb2svQmliVGVYTUwyRG9jQm9vay56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQlUaGUgQmliVGVYTUwgdG8gRG9jQm9vayBleGFtcGxlIGRlc2NyaWJlcyBhIHRyYW5zZm9ybWF0aW9uIG9mIGEgQmliVGVYTUwgbW9kZWwgdG8gYSBEb2NCb29rCgkJCWNvbXBvc2VkIGRvY3VtZW50LiBCaWJUZVhNTCBpcyBhbiBYTUwtYmFzZWQgZm9ybWF0IGZvciB0aGUgQmliVGVYIGJpYmxpb2dyYXBoaWMgdG9vbC4KCQkJRG9jQm9vaywgYXMgZm9yIGl0LCBpcyBhbiBYTUwtYmFzZWQgZm9ybWF0IGZvciBkb2N1bWVudCBjb21wb3NpdGlvbi4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPkJvb2syUHVibGljYXRpb248L3Nob3J0TmFtZT4KCQk8bmFtZT5Cb29rIHRvIFB1YmxpY2F0aW9uPC9uYW1lPgoJCTxkb2NMaW5rPkJvb2syUHVibGljYXRpb24vRXhhbXBsZUJvb2syUHVibGljYXRpb25bdjAwLjAyXS5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+Qm9vazJQdWJsaWNhdGlvbi9Cb29rMlB1YmxpY2F0aW9uLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoZSBCb29rIHRvIFB1YmxpY2F0aW9uIGV4YW1wbGUgZGVzY3JpYmVzIGEgdmVyeSBzaW1wbGUgdHJhbnNmb3JtYXRpb24gdGFzay4gSW4gdGhlIG1ldGFtb2RlbCBCb29rCgkJCXRoZSBjbGFzcyBCb29rIGNvbnRhaW5zIGFuIG9yZGVyZWQgc2V0IG9mIENoYXB0ZXJzLiBUaGVzZSBDaGFwdGVycyBob2xkIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUKCQkJbnVtYmVyIG9mIHBhZ2VzIG9mIENoYXB0ZXJzLiBUaGUgbWV0YW1vZGVsIFB1YmxpY2F0aW9uIGlzIHNpbXBsZXI7IGl0cyBjbGFzcyBQdWJsaWNhdGlvbiBjb250YWlucyBhCgkJCXRpdGxlIGFuZCB0aGUgdG90YWwgbnVtYmVyIG9mIHBhZ2VzLiBGb3IgdGhlIHRyYW5zZm9ybWF0aW9uLCBhbGwgY2hhcHRlcnMgb2YgYSBCb29rIGhhdmUgdG8gYmUgdmlzaXRlZCB0bwoJCQljYWxjdWxhdGUgdGhlIHN1bSBvZiBhbGwgcGFnZXMuCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5DYXRhbG9ndWVNb2RlbFRyYW5zZm9ybWF0aW9uczwvc2hvcnROYW1lPgoJCTxuYW1lPkNhdGFsb2d1ZU1vZGVsVHJhbnNmb3JtYXRpb25zPC9uYW1lPgoJCTxkb2NMaW5rPkNhdGFsb2d1ZU1vZGVsVHJhbnNmb3JtYXRpb25zL0NhdGFsb2d1ZU1vZGVsVHJhbnNmb3JtYXRpb25zLnBkZjwvZG9jTGluaz4KCQk8c291cmNlTGluaz5DYXRhbG9ndWVNb2RlbFRyYW5zZm9ybWF0aW9ucy9DYXRhbG9ndWVNb2RlbFRyYW5zZm9ybWF0aW9ucy56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQlBbGwgdHJhbnNmb3JtYXRpb25zIGhhdmUgYmVlbiBleHRyYWN0ZWQgZnJvbSB0aGUgY2F0YWxvZ3VlIG9mIG1vZGVscyB0cmFuc2Zvcm1hdGlvbnM6IDxhIGhyZWY9Imh0dHA6Ly93d3cuZGNzLmtjbC5hYy51ay9zdGFmZi9rY2wvdGNhdC5wZGYiPmh0dHA6Ly93d3cuZGNzLmtjbC5hYy51ay9zdGFmZi9rY2wvdGNhdC5wZGY8L2E+LgoJCQlGcm9tIHRoaXMgY2F0YWxvZ3VlLCB0aGUgZm9sbG93aW5nIEFUTCB0cmFuc2Zvcm1hdGlvbnMgaGF2ZSBiZWVuIGNyZWF0ZWQ6CgkJCTx1bD4KCQkJCTxsaT5Bc3NlcnRpb24gTW9kaWZpY2F0aW9uPC9saT4KCQkJCTxsaT5EaXNhZ2dyZWdhdGlvbjwvbGk+CgkJCQk8bGk+RWxpbWluYXRlIFJlZHVuZGFudCBJbmhlcml0YW5jZTwvbGk+CgkJCQk8bGk+RXF1aXZhbGVuY2Ugb2YgYXR0cmlidXRlcyBhbmQgYXNzb2NpYXRpb25zPC9saT4KCQkJCTxsaT5JbnRyb2R1Y2UgUHJpbWFyeSBLZXk8L2xpPgoJCQkJPGxpPkludHJvZHVjaW5nIGFuIGludGVyZmFjZTwvbGk+CgkJCQk8bGk+TWFraW5nIHBhcnRpYWwgcm9sZSB0b3RhbDwvbGk+CgkJCQk8bGk+TWVyZ2luZyBQYXJ0aWFsIENsYXNzZXM8L2xpPgoJCQkJPGxpPlJhaXNlIFN1cHBsaWVyIEFic3RyYWN0aW9uIExldmVsPC9saT4KCQkJCTxsaT5SZWR1bmRhbnQgQ2xhc3MgUmVtb3ZhYmxlPC9saT4KCQkJCTxsaT5SZW1vdmluZyBhIE1hbnkgTWFueSBBc3NvY2lhdGlvbjwvbGk+CgkJCQk8bGk+UmVtb3ZpbmcgQW4gQXNzb2NpYXRpb24gQ2xhc3M8L2xpPgoJCQkJPGxpPlJlcGxhY2UgYXNzb2NpYXRpb24gYnkgZm9yZWlnbiBrZXk8L2xpPgoJCQkJPGxpPlJlcGxhY2UgaW5oZXJpdGFuY2UgYnkgYXNzb2NpYXRpb248L2xpPgoJCQk8L3VsPgoJCQlUaGV5IHdlcmUgZXh0cmFjdGVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuc2NpZW5jZXMudW5pdi1uYW50ZXMuZnIvbGluYS9hdGwvY29udHJpYi9zaW1vbiI+RXJpYyBTaW1vbjwvYT4gYW5kIDxhIGhyZWY9Imh0dHA6Ly93d3cuc2NpZW5jZXMudW5pdi1uYW50ZXMuZnIvbGluYS9hdGwvY29udHJpYi9iYXVkcnkiPkp1bGllbiBCYXVkcnk8L2E+LgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KICAJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+Q2xhc3MyUmVsYXRpb25hbDwvc2hvcnROYW1lPgoJCTxuYW1lPkNsYXNzIHRvIFJlbGF0aW9uYWw8L25hbWU+CgkJPGRvY0xpbms+Q2xhc3MyUmVsYXRpb25hbC9FeGFtcGxlQ2xhc3MyUmVsYXRpb25hbFt2MDAuMDFdLnBkZjwvZG9jTGluaz4KCQk8c291cmNlTGluaz5DbGFzczJSZWxhdGlvbmFsL0NsYXNzMlJlbGF0aW9uYWwuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCSAgICAJVGhlIENsYXNzIHRvIFJlbGF0aW9uYWwgZXhhbXBsZSBkZXNjcmliZXMgdGhlIHNpbXBsaWZpZWQgdHJhbnNmb3JtYXRpb24gb2YgYSBjbGFzcyBzY2hlbWEgbW9kZWwgdG8gYQogICAgICAJCXJlbGF0aW9uYWwgZGF0YWJhc2UgbW9kZWwuCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgoJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+Q29kZUNsb25lVG9vbHMyU1ZHPC9zaG9ydE5hbWU+CgkJPG5hbWU+Q29kZSBDbG9uZSBUb29scyB0byBTVkc8L25hbWU+CgkJPGRvY0xpbms+Q29kZUNsb25lVG9vbHMyU1ZHL0NvZGVDbG9uZVRvb2xzMlNWRy5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+Q29kZUNsb25lVG9vbHMyU1ZHL1Zpc3VhbFJlcENvZGVDbG9uZS56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQlUaGlzIGV4YW1wbGUgZGVzY3JpYmVzIGEgdHJhbnNmb3JtYXRpb24gZnJvbSB0aGUgdGV4dCByZXN1bHQgZ2VuZXJhdGVkIGJ5IGNvZGUgY2xvbmUgZGV0ZWN0aW9uIHRvb2xzCgkJCWludG8gU1ZHIGNvZGUgaW4gb3JkZXIgdG8gcmVhbGl6ZSBhbiB1bmlmb3JtIHJlcHJlc2VudGF0aW9uIGZvciBkaWZmZXJlbnQgY29kZSBjbG9uZSBhbmFseXNpcyByZXN1bHQuCgkJCUF0IGZpcnN0LCBzcGVjaWZpYyBEU0xzIGZvciBkaWZmZXJlbnQgY29kZSBjbG9uZSB0b29scyAoU2ltaWFuLCBzaW1TY2FuLCBDbG9uZURyKSBhcmUgZGVmaW5lZC4gVGhlbiB0aGVzZQoJCQltb2RlbHMgY2FuIGJlIHRyYW5zZm9ybWVkIHRvIGEgZ2VuZXJpYyBEU0wgZm9yIENvZGUgQ2xvbmUuIFRoZW4sIHRoZSBnZW5lcmljIG1vZGVsIHdpbGwgYmUgdHJhbnNmb3JtZWQgdG8gCgkJCVNWRyBtb2RlbC4gRmluYWxseSwgU1ZHIGNvZGUgY2FuIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBTVkcgbW9kZWwuCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5DUEwyU1BMPC9zaG9ydE5hbWU+CgkJPG5hbWU+Q1BMIHRvIFNQTDwvbmFtZT4KCQk8ZG9jTGluaz5DUEwyU1BML1JFQURNRS50eHQ8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+Q1BMMlNQTC9DUEwyU1BMLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoaXMgZXhhbXBsZSBoYW5kbGVzIHNldmVyYWwgYXNwZWN0cyBvZiB0d28gdGVsZXBob255IERTTHM6IFNQTCBhbmQgQ1BMLgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPkRpc2FnZ3JlZ2F0aW9uPC9zaG9ydE5hbWU+CgkJPG5hbWU+RGlzYWdncmVnYXRpb248L25hbWU+CgkJPGRvY0xpbms+RGlzYWdncmVnYXRpb24vRGlzYWdncmVnYXRpb24ucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPkRpc2FnZ3JlZ2F0aW9uL0Rpc2FnZ3JlZ2F0aW9uLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoaXMgZXhhbXBsZSBpcyBleHRyYWN0IGZyb20gPGEgaHJlZj0iaHR0cDovL3d3dy5kY3Mua2NsLmFjLnVrL3N0YWZmL2tjbC90Y2F0LnBkZiI+Q2F0YWxvZ3VlIG9mIE1vZGVsIFRyYW5zZm9ybWF0aW9ucyBieSBLLiBMYW5vPC9hPi4KCQkJVGhlIHB1cnBvc2Ugb2YgdGhpcyBleGFtcGxlIGlzIHRoZSBmb2xsb3dpbmc6ICJBIGNsYXNzIG1heSBiZWNvbWUgbGFyZ2UgYW5kIHVubWFuYWdlYWJsZSwgd2l0aCBzZXZlcmFsIGxvb3NlbHkgY29ubmVjdGVkIGZ1bmN0aW9uYWxpdGllcy4gSXQgc2hvdWxkIGJlIHNwbGl0IGludG8gc2V2ZXJhbCBjbGFzc2VzLCBzdWNoIGFzIGEgbWFzdGVyL2NvbnRyb2xsZXIgY2xhc3MgYW5kIGhlbHBlciBjbGFzc2VzLCB3aGljaCBoYXZlIG1vcmUgY29oZXJlbnQgZnVuY3Rpb25hbGl0aWVzIGFuZCBkYXRhLiIKCQkJVGhpcyBleGFtcGxlIHdhcyBleHRyYWN0ZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5zY2llbmNlcy51bml2LW5hbnRlcy5mci9saW5hL2F0bC9jb250cmliL3NpbW9uIj5FcmljIFNpbW9uPC9hPi4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPkRTTDJFTUY8L3Nob3J0TmFtZT4KCQk8bmFtZT5EU0wgdG8gRU1GPC9uYW1lPgoJCTxkb2NMaW5rPkRTTDJFTUYvRXhhbXBsZURTTDJFTUZbdjAwLjAxXS5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+RFNMMkVNRi9EU0xCcmlkZ2UuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhpcyBleGFtcGxlIHByb3ZpZGVzIHlvdSBhIGNvbXBsZXRlIG92ZXJ2aWV3IG9mIGEgdHJhbnNmb3JtYXRpb24gY2hhaW4gZXhhbXBsZSBiZXR3ZWVuIHR3byB0ZWNobmljYWwgc3BhY2VzOiBNaWNyb3NvZnQgRFNMIChEb21haW4gU3BlY2lmaWMgTGFuZ3VhZ2VzKSBUb29scyBhbmQgRU1GIChFY2xpcHNlIE1vZGVsaW5nIEZyYW1ld29yaykuCgkJCVRoZSBhaW0gb2YgdGhpcyBleGFtcGxlIGlzIHRvIGRlbW9uc3RyYXRlIHRoZSBwb3NzaWJpbGl0eSB0byBleGNoYW5nZSBtb2RlbHMgZGVmaW5lZCB1bmRlciBkaWZmZXJlbnQgdGVjaG5vbG9naWVzLgoJCQlJbiBwYXJ0aWN1bGFyLCB0aGUgZGVzY3JpYmVkIGJyaWRnZXMgZGVtb25zdHJhdGUgdGhhdCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gZGVmaW5lIG1ldGFtb2RlbHMgYW5kIG1vZGVscyB1c2luZyBib3RoIE1pY3Jvc29mdCBEU0wgVG9vbHMgYW5kIEVjbGlwc2UgRU1GIHRlY2hub2xvZ2llcy4KCQkJVGhlIGJyaWRnZSBiZXR3ZWVuIE1TL0RTTCBhbmQgRU1GIHNwYW5zIHR3byBsZXZlbHM6IHRoZSBtZXRhbW9kZWwgYW5kIG1vZGVsIGxldmVscy4KCQkJQXQgdGhlIGxldmVsIG9mIG1ldGFtb2RlbHMsIGl0IGFsbG93cyB0byB0cmFuc2Zvcm0gTVMvRFNMIGRvbWFpbiBtb2RlbHMgdG8gRU1GIG1ldGFtb2RlbHMuCgkJCUF0IHRoZSBsZXZlbCBvZiBtb2RlbHMsIHRoZSBicmlkZ2UgYWxsb3dzIHRyYW5zZm9ybWluZyBNUy9EU0wgbW9kZWxzIGNvbmZvcm1pbmcgdG8gZG9tYWluIG1vZGVscyB0byBFTUYgbW9kZWxzIGNvbmZvcm1pbmcgdG8gRU1GIG1ldGFtb2RlbHMuCgkJCUF0IGJvdGggbGV2ZWxzLCB0aGUgYnJpZGdlIG9wZXJhdGVzIGluIGJvdGggZGlyZWN0aW9ucy4KCQkJQSBjaGFpbiBvZiBBVEwtYmFzZWQgdHJhbnNmb3JtYXRpb25zIGlzIHVzZWQgdG8gaW1wbGVtZW50IHRoZSBicmlkZ2UgYXQgdGhlc2UgdHdvIGxldmVscy4KCQkJVGhlIGJlbmVmaXQgb2YgdXNpbmcgc3VjaCBhIGJyaWRnZSBpcyB0aGUgYWJpbGl0eSB0byB0cmFuc3Bvc2UgTVMvRFNMIHdvcmsgaW4gRU1GIHBsYXRmb3JtLCBhbmQgaW52ZXJzZWx5LgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPkVsaW1pbmF0ZVJlZHVuZGFudEluaGVyaXRhbmNlPC9zaG9ydE5hbWU+CgkJPG5hbWU+RWxpbWluYXRlUmVkdW5kYW50SW5oZXJpdGFuY2U8L25hbWU+CgkJPGRvY0xpbms+RWxpbWluYXRlUmVkdW5kYW50SW5oZXJpdGFuY2UvRWxpbWluYXRlUmVkdW5kYW50SW5oZXJpdGFuY2UucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPkVsaW1pbmF0ZVJlZHVuZGFudEluaGVyaXRhbmNlL0VsaW1pbmF0ZVJlZHVuZGFudEluaGVyaXRhbmNlLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoaXMgZXhhbXBsZSBpcyBleHRyYWN0IGZyb20gPGEgaHJlZj0iaHR0cDovL3d3dy5kY3Mua2NsLmFjLnVrL3N0YWZmL2tjbC90Y2F0LnBkZiI+Q2F0YWxvZ3VlIG9mIE1vZGVsIFRyYW5zZm9ybWF0aW9ucyBieSBLLiBMYW5vPC9hPi4KCQkJIkEgcmVkdW5kYW50IGluaGVyaXRhbmNlIGNvbnZleXMgbm8gZXh0cmEgaW5mb3JtYXRpb24sIGJ1dCBjb21wbGljYXRlcyB0aGUgbW9kZWwuIFRoZSBwcmV2aW91cyBmaWd1cmUgc2hvd3MgYSB0eXBpY2FsIHNpdHVhdGlvbiB3aGVyZSBjbGFzcyBBIGRpcmVjdGx5IGluaGVyaXRzIGZyb20gY2xhc3MgQywgYW5kIGFsc28gaW5kaXJlY3RseSB2aWEgYSBtb3JlIHNwZWNpZmljIGNsYXNzIEIuIFRoZSBmaXJzdCBpbmhlcml0YW5jZSBpcyByZWR1bmRhbnQgYW5kIGNhbiBiZSByZW1vdmVkLiAoSW4gc29tZSBsYW5ndWFnZXMsIHN1Y2ggYXMgSmF2YSwgc3VjaCBpbmhlcml0YW5jZXMgd291bGQgYWN0dWFsbHkgYmUgaW52YWxpZCkuIgoJCQlUaGlzIGV4YW1wbGUgd2FzIGV4dHJhY3RlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnNjaWVuY2VzLnVuaXYtbmFudGVzLmZyL2xpbmEvYXRsL2NvbnRyaWIvYmF1ZHJ5Ij5KdWxpZW4gQmF1ZHJ5PC9hPi4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPkVNRjJLTTM8L3Nob3J0TmFtZT4KCQk8bmFtZT5FTUYyS00zIChFY29yZSB0byBLTTMpPC9uYW1lPgoJCTxkb2NMaW5rPkVNRjJLTTMvUkVBRE1FLnR4dDwvZG9jTGluaz4KCQk8c291cmNlTGluaz5FTUYyS00zL0VNRjJLTTMuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJJmx0O3AmZ3Q7CiAgICAJCVRoZSBLTTMgcGx1Z2luIGltcGxlbWVudHMgc2V2ZXJhbCB0cmFuc2Zvcm1hdGlvbnMsIGluY2x1ZGluZyB0aGUgZ2VuZXJhdGlvbiBvZiBhIEtNMyBtb2RlbCBmcm9tIGFuCiAgICAgIAkJRWNvcmUgbWV0YW1vZGVsOiBFTUYyS00zLiBUaGlzIGRpc3RyaWJ1dGlvbiBwcm92aWRlcyBzb3VyY2UgY29kZSBmb3IgdGhlIEVNRjJLTTMgdHJhbnNmb3JtYXRpb24KICAgIAkJYXZhaWxhYmxlIGluIHRoZSBLTTMgcGx1Z2luIGFzIG9mIERlY2VtYmVyIDEydGgsIDIwMDUuCgkgIAkJJmx0Oy9wJmd0OwoJICAJCSZsdDtwJmd0OwogICAgICAJCUVNRjJLTTMgaXMgdXN1YWxseSB1c2VkIHRocm91Z2ggdGhlIEtNMyBwbHVnaW4sIGFzIHRoZSAiRXh0cmFjdCBFY29yZSBtZXRhbW9kZWwgdG8gS00zIiBhY3Rpb24gYXZhaWxhYmxlCiAgICAgIAkJb24gKi5lY29yZSBmaWxlcy4gU29tZSB1c2VycyBtYXkgaG93ZXZlciB3YW50IHRvIGN1c3RvbWl6ZSB0aGlzIHRyYW5zZm9ybWF0aW9uLgogICAgICAJCUhlcmUgaXMgdGhlIHByb2NlZHVyZSB0byByZXBsYWNlIHRoZSBzdGFuZGFyZCB0cmFuc2Zvcm1hdGlvbiB3aXRoIGEgY3VzdG9tIG9uZToKICAgICAgICAJJmx0O3VsJmd0OwogICAgICAJCSZsdDtsaSZndDttb2RpZnkgRU1GMktNMy5hdGwgdG8gc3VwcG9ydCBkZXNpcmVkIGZlYXR1cmVzLCZsdDsvbGkmZ3Q7CiAgICAgIAkJJmx0O2xpJmd0O2NvbXBpbGUgaXQgaW50byBFTUYyS00zLmFzbSAodGhpcyBpcyBub3JtYWxseSBhdXRvbWF0aWNhbGx5IHBlcmZvcm1lZCBieSB0aGUgQVRMIGJ1aWxkZXIpLCZsdDsvbGkmZ3Q7CiAgICAgIAkJJmx0O2xpJmd0O2NvcHkgRU1GMktNMy5hc20gaW50byBvcmcuYXRsLmVjbGlwc2Uua20zIC8gc3JjIC8gb3JnIC8gYXRsIC8gZWNsaXBzZSAvIGttMyAvIHJlc291cmNlcywmbHQ7L2xpJmd0OwogICAgICAJCSZsdDtsaSZndDtyZXN0YXJ0IEVjbGlwc2UuJmx0Oy9saSZndDsKCSAgCQkmbHQ7L3AmZ3Q7CQkJCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgoJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+RXF1aXZhbGVuY2VBdHRyaWJ1dGVzQXNzb2NpYXRpb25zPC9zaG9ydE5hbWU+CgkJPG5hbWU+RXF1aXZhbGVuY2VBdHRyaWJ1dGVzQXNzb2NpYXRpb25zPC9uYW1lPgoJCTxkb2NMaW5rPkVxdWl2YWxlbmNlQXR0cmlidXRlc0Fzc29jaWF0aW9ucy9FcXVpdmFsZW5jZUF0dHJpYnV0ZXNBc3NvY2lhdGlvbnMucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPkVxdWl2YWxlbmNlQXR0cmlidXRlc0Fzc29jaWF0aW9ucy9FcXVpdmFsZW5jZUF0dHJpYnV0ZXNBc3NvY2lhdGlvbnMuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhpcyBleGFtcGxlIGlzIGV4dHJhY3QgZnJvbSA8YSBocmVmPSJodHRwOi8vd3d3LmRjcy5rY2wuYWMudWsvc3RhZmYva2NsL3RjYXQucGRmIj5DYXRhbG9ndWUgb2YgTW9kZWwgVHJhbnNmb3JtYXRpb25zIGJ5IEsuIExhbm88L2E+LgoJCQlRdWFsaWZpZWQgYXNzb2NpYXRpb24gY2Fubm90IGJlIHJlcHJlc2VudGVkIGFzIGF0dHJpYnV0ZXMsIGFzIHRoZXJlIGlzIG5vIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIG5vdGF0aW9uLCBpLmUuLCBmb3Igc3BlY2lmeWluZyBtYXAgZGF0YSBzdHJ1Y3R1cmVzLiBJbiBhZGRpdGlvbiB0aGUgbXVsdGlwbGljaXR5IGF0IHRoZSBvd25pbmcgZW50aXR5IGVuZCBvZiBhbiBhc3NvY2lhdGlvbiBjYW5ub3QgYmUgZ2VuZXJhbGx5IGV4cHJlc3NlZCBpbiB0aGUgYXR0cmlidXRlIHZlcnNpb24uIEZvciBhbiBvcmRpbmFyeSBhdHRyaWJ1dGUgdGhpcyBtdWx0aXBsaWNpdHkgaXMgKiBhbmQgZm9yIGFuIGlkZW50aXR5IGF0dHJpYnV0ZSAocHJpbWFyeSBrZXkpIGl0IGlzIDAuLjEuCgkJCVRoaXMgZXhhbXBsZSB3YXMgZXh0cmFjdGVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuc2NpZW5jZXMudW5pdi1uYW50ZXMuZnIvbGluYS9hdGwvY29udHJpYi9iYXVkcnkiPkp1bGllbiBCYXVkcnk8L2E+LgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KICAJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+RmFtaWxpZXMyUGVyc29uczwvc2hvcnROYW1lPgoJCTxuYW1lPkZhbWlsaWVzIHRvIFBlcnNvbnM8L25hbWU+CgkJPGRvY0xpbms+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9hdGwvZG9jdW1lbnRhdGlvbi9vbGQvQVRMVXNlQ2FzZV9GYW1pbGllczJQZXJzb25zLnBkZjwvZG9jTGluaz4KCQk8c291cmNlTGluaz5GYW1pbGllczJQZXJzb25zL0ZhbWlsaWVzMlBlcnNvbnMuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhpcyBpcyB0aGUgc291cmNlIGNvZGUgb2YgdGhlIEFUTCBVc2UgQ2FzZTogIkZhbWlsaWVzIHRvIFBlcnNvbnMiLgoJCQlUaGlzIHVzZSBjYXNlIGRlc2NyaWJlcyBhIHZlcnkgc2ltcGxlIG1vZGVsIHRyYW5zZm9ybWF0aW9uIGV4YW1wbGUsIHNvbWUga2luZCBvZiBBVEwgImhlbGxvIHdvcmxkIi4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+Cgk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5GTTJCUE1OPC9zaG9ydE5hbWU+CgkJPG5hbWU+RmVhdHVyZSBNb2RlbHMgZm9yIHJlcHJlc2VudGluZyBydW50aW1lIHZhcmlhYmlsaXR5IGluIEJJUyB0byBCdXNpbmVzcyBQcm9jZXNzIE1vZGVsIE5vdGF0aW9uPC9uYW1lPgoJCTxkb2NMaW5rPmh0dHA6Ly93d3cuaXNhLnVzLmVzL3VwbG9hZHMvdG9vbHMvZm0yYnBtbi9kb2MvZHJhZnQucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPmh0dHA6Ly93d3cuaXNhLnVzLmVzL3VwbG9hZHMvdG9vbHMvZm0yYnBtbi90cmFuc2Zvcm1hdGlvbnMvdG9wLWRvd24vZnVsbC9mbTJicG1uLmF0bDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoZSBGTSB0byBCUE1OIGV4YW1wbGUgZGVzY3JpYmVzIGEgdHJhbnNmb3JtYXRpb24gZnJvbSBhIGZlYXR1cmUgbW9kZWwgZm9yIHJlcHJlc2VudGluZyBydW50aW1lIHZhcmlhYmlsaXR5IGluIGJ1c2luZXNzIGluZm9ybWF0aW9uIHN5c3RlbXMgY3JlYXRlZCB1c2luZyBGQU1BIChGZUF0dXJlIE1vZGVsIEFuYWx5emVyKSBpbnRvIGEgYnVzaW5lc3MgcHJvY2VzcyBtb2RlbCBkaWFncmFtIHJlcHJlc2VudGVkIGJ5IG1lYW5zIG9mIEJQTU4gbWV0YW1vZGVsIHByb3ZpZGVkIGJ5IHRoZSBFY2xpcHNlIFNUUCAoU09BIFRvb2wgUGxhdGZvcm0pIHByb2plY3QuCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZS8+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5HZW9tZXRyaWNhbFRyYW5zZm9ybWF0aW9uczwvc2hvcnROYW1lPgoJCTxuYW1lPkdlb21ldHJpY2FsIFRyYW5zZm9ybWF0aW9uczwvbmFtZT4KCQk8ZG9jTGluaz5HZW9tZXRyaWNhbFRyYW5zZm9ybWF0aW9ucy9FeGFtcGxlR2VvbWV0cmljYWxUcmFuc2Zvcm1hdGlvbnNbdjAwLjAyXS5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+R2VvbWV0cmljYWxUcmFuc2Zvcm1hdGlvbnMvR2VvbWV0cnkuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCSAgICAJVGhpcyBkb2N1bWVudCBpbGx1c3RyYXRlcyBhbiBhZHZhbmNlZCBBVEwgcHJvZ3JhbSBpbiB0aGUgYXJlYSBvZiBnZW9tZXRyaWNhbCB0cmFuc2Zvcm1hdGlvbnMuCgkJICAgIFRoaXMgdHJhbnNmb3JtYXRpb24gZXhhbXBsZSBkZXNjcmliZXMgZ2VvbWV0cmljYWwgdHJhbnNmb3JtYXRpb25zLiBJbnB1dCBvZiB0aGUgdHJhbnNmb3JtYXRpb24gYXJlCgkJICAgIGdlb21ldHJpY2FsIG9wZXJhdGlvbnMgKHJvdGF0ZSwgbW92ZSwgZXhwbG9kZSkgYW5kIGdlb21ldHJpY2FsIGRhdGEgKGJhc2VkIG9uIGEgc2ltcGxpZmllZCBEWEYKICAgIAkJbWV0YW1vZGVsKS4gVGhlIG91dHB1dCBvZiB0aGUgdHJhbnNmb3JtYXRpb24gaXMgdGhlIGdlb21ldHJpY2FsIGRhdGEgKGJhc2VkIG9uIHRoZSBzYW1lIHNpbXBsaWZpZWQKICAgIAkJRFhGIG1ldGFtb2RlbCkgdGhhdCBoYXMgYmVlbiB0cmFuc2Zvcm1lZCBhY2NvcmRpbmcgdG8gdGhlIGdlb21ldHJpY2FsIG9wZXJhdGlvbnMuCiAgICAJCURYRiZsdDtzdXAmZ3Q7VE0mbHQ7L3N1cCZndDssIERyYXdpbmcgZVhjaGFuZ2UgRm9ybWF0LCBpcyB0aGUgbmF0aXZlIHZlY3RvciBmaWxlIGZvcm1hdCBvZiBBdXRvZGVzaydzIEF1dG9DQUQgQ0FECiAgICAJCWFwcGxpY2F0aW9uLiBEWEYgZmVhdHVyZXMgaW5jbHVkZSBzdXBwb3J0IGZvciAzRCBvYmplY3RzLCBjdXJ2ZXMsIHRleHQgYW5kIGFzc29jaWF0aXZlIGRpbWVuc2lvbmluZy4KICAgIAkJUGFydGljdWxhcml0eSBvZiB0aGUgdHJhbnNmb3JtYXRpb25zIGlzIHRoYXQgaXQgaGFzIHR3byBpbnB1dCBtZXRhbW9kZWxzIGFuZCB0aGF0IG9uZSBvZiB0aGUgaW5wdXQKICAgIAkJbWV0YW1vZGVscyBpcyB0aGUgc2FtZSBhcyB0aGUgb3V0cHV0IG1ldGFtb2RlbC4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPkdyYWZjZXQyUGV0cmlOZXQ8L3Nob3J0TmFtZT4KCQk8bmFtZT5HcmFmY2V0IHRvIFBldHJpTmV0PC9uYW1lPgoJCTxkb2NMaW5rPkdyYWZjZXQyUGV0cmlOZXQvRXhhbXBsZUdyYWZjZXQyUGV0cmlOZXRbdjAwLjAxXS5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+R3JhZmNldDJQZXRyaU5ldC9HcmFmY2V0MlBldHJpTmV0LnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoaXMgQVRMIGV4YW1wbGUgZGVzY3JpYmVzIGJyaWRnZXMgYmV0d2VlbiBHcmFmY2V0LCBQZXRyaSBuZXQsIFBOTUwsIGFuZCBYTUwuCgkJCVRoaXMgZXhhbXBsZSBwcm92aWRlcyBhbiBvdmVydmlldyBvZiB0aGUgd2hvbGUgdHJhbnNmb3JtYXRpb24gc2VxdWVuY2UgdGhhdCBlbmFibGVzIHRvIHByb2R1Y2UgYW4gWE1MIFBldHJpIG5ldCByZXByZXNlbnRhdGlvbiAoaW4gdGhlIFBOTUwgZm9ybWF0KSBmcm9tIGEgdGV4dHVhbCBkZWZpbml0aW9uIG9mIGEgZ3JhZmNldC4KCQkJSXQgYWxzbyBkZXNjcmliZXMgdGhlIHJldmVyc2UgdHJhbnNmb3JtYXRpb24gc2VxdWVuY2UgdGhhdCBlbmFibGVzIHRvIGJ1aWxkIGEgdGV4dHVhbCBncmFmY2V0IHJlcHJlc2VudGF0aW9uIGZyb20gYW4gWE1MIGRlZmluaXRpb24gb2YgYSBQTk1MIGRvY3VtZW50LgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KICAJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+SUVFRTE0NzFfMl9Nb0RBRjwvc2hvcnROYW1lPgoJCTxuYW1lPklFRUUxNDcxIHRvIE1vREFGPC9uYW1lPgoJCTxkb2NMaW5rPklFRUUxNDcxXzJfTW9EQUYvSUVFRTE0NzFfMl9Nb0RBRi5kb2M8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+SUVFRTE0NzFfMl9Nb0RBRi9JRUVFMTQ3MV8yX01vREFGLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoaXMgQVRMIGV4YW1wbGUgcmVhbGl6ZXMgdGhlIHRyYW5zZm9ybWF0aW9uIGJldHdlZW4gSUVFRTE0NzEtMjAwMCBhbmQgTW9EQUYtQVYuCgkJCVRoZSBJRUVFMTQ3MSBjb21taXR0ZWUgcHJlY2lzZXMgYSByZWNvbW1lbmRlZCBwcmFjdGljZSBmb3IgdGhlIGRlc2lnbiBhbmQgdGhlIGFuYWx5c2lzIG9mIEFyY2hpdGVjdHVyZSBvZiBTb2Z0d2FyZSBJbnRlbnNpdmUgU3lzdGVtcy4KCQkJSXQgZml4ZXMgYSB0ZXJtaW5vbGd5IGZvciBTeXN0ZW0sIEFyY2hpdGVjdHVyZSwgQXJjaGl0ZWN0dXJhbCBEZXNjcmlwdGlvbiwgU3Rha2Vob2xkZXIsIENvbmNlcm5zLCBWaWV3ICxhbmQgVmlld3BvaW50cyBjb25jZXB0cy4KCQkJTW9EQUYgKE1pbmlzdHJ5IG9mIERlZmVuc2UgQXJjaGl0ZWN0dXJlIEZyYW1ld29yaykgaXMgYmFzZWQgb24gdGhlIERvREFGIChEZXBhcnRlbWVudCBvZiBEZWZlbnNlIEFyY2hpdGVjdHVyZSBGcmFtZXdvcmspLgoJCQlEb0RBRiBpcyBhIGZyYW1ld29yayB0byBkZXNpZ24gQzRJU1Igc3lzdGVtcy4gTW9EQUYtQVYgKEFyY2hpdGVjdHVyZSBWaWV3KSB1c2VkIHNldmVyYWwgY29uY2VwdHMgZGVmaW5lZCBpbiB0aGUgSUVFRTE0NzEuCgkJCUlFRUUxNDcxIHRvIE1vREFGIHdhcyBwcm9kdWNlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnNjaWVuY2VzLnVuaXYtbmFudGVzLmZyL2xpbmEvYXRsL2NvbnRyaWIvam9zc2ljIj5BbGJpbiBKb3NzaWM8L2E+LjxiciAvPgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPkludHJvZHVjZVByaW1hcnlLZXk8L3Nob3J0TmFtZT4KCQk8bmFtZT5JbnRyb2R1Y2VQcmltYXJ5S2V5PC9uYW1lPgoJCTxkb2NMaW5rPkludHJvZHVjZVByaW1hcnlLZXkvSW50cm9kdWNlUHJpbWFyeUtleS5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+SW50cm9kdWNlUHJpbWFyeUtleS9JbnRyb2R1Y2VQcmltYXJ5S2V5LnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoaXMgZXhhbXBsZSBpcyBleHRyYWN0IGZyb20gPGEgaHJlZj0iaHR0cDovL3d3dy5kY3Mua2NsLmFjLnVrL3N0YWZmL2tjbC90Y2F0LnBkZiI+Q2F0YWxvZ3VlIG9mIE1vZGVsIFRyYW5zZm9ybWF0aW9ucyBieSBLLiBMYW5vPC9hPi4KCQkJVGhpcyBpcyBhbiBlc3NlbnRpYWwgc3RlcCBmb3IgaW1wbGVtZW50YXRpb24gb2YgYSBkYXRhIG1vZGVsIGluIHJlbGF0aW9uYWwgZGF0YWJhc2UuCgkJCVRoaXMgZXhhbXBsZSB3YXMgZXh0cmFjdGVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuc2NpZW5jZXMudW5pdi1uYW50ZXMuZnIvbGluYS9hdGwvY29udHJpYi9iYXVkcnkiPkp1bGllbiBCYXVkcnk8L2E+LgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPkludHJvZHVjaW5nSW50ZXJmYWNlPC9zaG9ydE5hbWU+CgkJPG5hbWU+SW50cm9kdWNpbmdJbnRlcmZhY2U8L25hbWU+CgkJPGRvY0xpbms+SW50cm9kdWNpbmdJbnRlcmZhY2UvSW50cm9kdWNpbmdJbnRlcmZhY2UucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPkludHJvZHVjaW5nSW50ZXJmYWNlL0ludHJvZHVjaW5nSW50ZXJmYWNlLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoaXMgZXhhbXBsZSBpcyBleHRyYWN0IGZyb20gPGEgaHJlZj0iaHR0cDovL3d3dy5kY3Mua2NsLmFjLnVrL3N0YWZmL2tjbC90Y2F0LnBkZiI+Q2F0YWxvZ3VlIG9mIE1vZGVsIFRyYW5zZm9ybWF0aW9ucyBieSBLLiBMYW5vPC9hPi4KCQkJVGhpcyByZWR1Y2VzIHRoZSBkZXBlbmRlbmNpZXMgaW4gdGhlIG1vZGVsIGFuZCBlbmFibGVzIHNlcGFyYXRlIGRldmVsb3BtZW50IG9mIEEgYW5kIEIsIGFuZCBwZXJtaXRzIHRoZW0gdG8gYmUgcGxhY2VkIGluIGRpZmZlcmVudCBsYXllcnMgb3IgdGllcnMgb2YgdGhlIHN5c3RlbS4KCQkJVGhpcyBleGFtcGxlIHdhcyBleHRyYWN0ZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5zY2llbmNlcy51bml2LW5hbnRlcy5mci9saW5hL2F0bC9jb250cmliL2JhdWRyeSI+SnVsaWVuIEJhdWRyeTwvYT4uCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5KYXZhMlRhYmxlPC9zaG9ydE5hbWU+CgkJPG5hbWU+SmF2YSBzb3VyY2UgdG8gVGFibGU8L25hbWU+CgkJPGRvY0xpbms+SmF2YTJUYWJsZS9FeGFtcGxlSmF2YVNvdXJjZTJUYWJsZVt2MDAuMDFdLnBkZjwvZG9jTGluaz4KCQk8c291cmNlTGluaz5KYXZhMlRhYmxlL0phdmEyVGFibGUuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhlIEphdmFTb3VyY2UgdG8gVGFibGUgZXhhbXBsZSBkZXNjcmliZXMgYSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGEgSmF2YSBzb3VyY2UgY29kZSB0byBhIHRhYmxlCiAgICAJCXdoaWNoIHN1bW1hcml6ZXMgaG93IG1hbnkgdGltZXMgZWFjaCBtZXRob2QgZGVjbGFyZWQgaW4gdGhlIEphdmEgc291cmNlIGNvZGUgaXMgY2FsbGVkIHdpdGhpbiB0aGUKICAgIAkJZGVmaW5pdGlvbiBvZiBhbnkgZGVjbGFyZWQgbWV0aG9kLiBBIFhNTC1iYXNlZCBmb3JtYXQsIGluc3BpcmVkIGZyb20gdGhlIEphdmFNTCwgaGFzIGJlZW4KICAgIAkJZGV2ZWxvcGVkIHRvIGVuY29kZSBhbGwgaW50ZXJlc3RpbmcgaW5mb3JtYXRpb24gYXZhaWxhYmxlIGluIHRoZSBKYXZhIHNvdXJjZSBjb2RlLiBXZSB1c2UsIGZvciB0aGlzCiAgICAJCXRyYW5zZm9ybWF0aW9uLCBhIHZlcnkgYmFzaWMgYWJzdHJhY3QgVGFibGUgbW9kZWwgd2hpY2ggbWF5IGJlIGVhc2lseSBtYXBwZWQgdG8gZXhpc3RpbmcgdGFibGUKICAgIAkJcmVwcmVzZW50YXRpb25zIChYSFRNTCwgRXhjZWxNTCwgZXRjLikuCQkJCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5LTTMyQVRMQ29waWVyPC9zaG9ydE5hbWU+CgkJPG5hbWU+S00zIHRvIEFUTCBDb3BpZXI8L25hbWU+CgkJPGRvY0xpbms+S00zMkFUTENvcGllci9SRUFETUUudHh0PC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPktNMzJBVExDb3BpZXIvS00zMkFUTENvcGllci56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgogICAgCQlUaGUgS00zMkFUTENvcGllciB0cmFuc2Zvcm1hdGlvbiBjcmVhdGVzIGEgdHJhbnNmb3JtYXRpb24gb2YgY29weSBmb3IgYSBLTTMgbW9kZWwuCgkJCVNvdXJjZSBtb2RlbCBjb25mb3JtcyB0byBLTTMgbWV0YW1vZGVsIGFuZCB0YXJnZXQgbW9kZWwgY29uZm9ybXMgdG8gQVRMIG1ldGFtb2RlbC4KCQkJQSBzYW1wbGUgc291cmNlIG1vZGVsIChzYW1wbGUtS00zLmVjb3JlKSBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgdGFyZ2V0IG1vZGVsIChBVExDb3BpZXIuZWNvcmUpIGFyZSBnaXZlbi4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+Cgk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5LTTMyQ09ORkFUTDwvc2hvcnROYW1lPgoJCTxuYW1lPktNMyB0byBBVEwgY29uZm9ybWFuY2UgY2hlY2tpbmcgdHJhbnNmb3JtYXRpb248L25hbWU+CgkJPGRvY0xpbms+aHR0cDovL3d3dy5zdC5ld2kudHVkZWxmdC5ubC9+YmFzZ3JhYWYvc29mdHdhcmUvbWRlL2F0bC9LTTMyQ09ORkFUTC9SRUFETUUudHh0PC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPmh0dHA6Ly93d3cuc3QuZXdpLnR1ZGVsZnQubmwvfmJhc2dyYWFmL3NvZnR3YXJlL21kZS9hdGwvS00zMkNPTkZBVEwvS00zMkNPTkZBVEwuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhpcyBwYWNrYWdlIGluY2x1ZGVzIGEgaGlnaGVyLW9yZGVyIHRyYW5zZm9ybWF0aW9uIChIT1QpIHRoYXQsIGJhc2VkIG9uIGEgbWV0YW1vZGVsIChpLmUuLCBhbiBpbmplY3RlZCBLTTMgbW9kZWwpLAoJCQlnZW5lcmF0ZXMgYSB0cmFuc2Zvcm1hdGlvbiB0aGF0IGNoZWNrcyB0aGUgY29uc2lzdGVuY3kgb2YgdHdvIHNvdXJjZSBtb2RlbHMgdGhhdCBjb25mb3JtIHRvIHRoYXQgbWV0YW1vZGVsLiBUaGUKCQkJdGFyZ2V0IG1vZGVsIG9mIHRoZSAoZ2VuZXJhdGVkKSB0cmFuc2Zvcm1hdGlvbiBlZmZlY3RpdmVseSBpcyB0aGUgdW5pb24gb2YgdGhlIHR3byBzb3VyY2UgbW9kZWxzIHdpdGggaXRzIGVsZW1lbnRzIAoJCQlhbmQgcmVsYXRpb25zIGxhYmVsbGVkIGFzIGNvbnZlcmdlbnQsIGRpdmVyZ2VudCwgb3IgYWJzZW50IGFjY29yZGluZyB0byB0aGVpciBvY2N1cnJlbmNlIGluIG9uZSBvciBib3RoIG9mIHRoZSBzb3VyY2UgCgkJCW1vZGVscy4gVGhlIEhPVCBwcm92aWRlcyBhIG1lYW5zIHRvIGdlbmVyaWNhbGx5IGNoZWNrIHRvIGNvbmZvcm1hbmNlIG9mIG1vZGVscyBhc3NvY2lhdGVkIHdpdGggc2ltcGxlIG1ldGFtb2RlbHMuCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5LTTMyRE9UPC9zaG9ydE5hbWU+CgkJPG5hbWU+S00zIHRvIERPVDwvbmFtZT4KCQk8ZG9jTGluaz5LTTMyRE9UL0V4YW1wbGVLTTMyRE9UW3YwMC4wMV0ucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPktNMzJET1QvS00zMkRPVC56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQlUaGUgS00zIHRvIERPVCBleGFtcGxlIGRlc2NyaWJlcyBhIHRyYW5zZm9ybWF0aW9uIGZyb20gYSBLTTMgbWV0YW1vZGVsIGRlc2NyaXB0aW9uIGludG8gYSBjbGFzcwoJCQlkaWFncmFtIGRyYXduIHdpdGggRE9ULiBLTTMgaXMgYSB0ZXh0dWFsIGNvbmNyZXRlIHN5bnRheCB0byBkZXNjcmliZSBtZXRhbW9kZWxzLiBJdCBoYXMgaXRzIGFkdmFudGFnZXMsCgkJCXlldCBoYXZpbmcgYSBncmFwaGljYWwgcHJlc2VudGF0aW9uIG9mIGEgbWV0YW1vZGVsIGNhbiBiZSBzb21ldGltZXMgZW5saWdodGVuaW5nLiBET1QgaXMgYW4gYXV0b21hdGljCgkJCWdyYXBoIGxheW91dCBwcm9ncmFtIGZyb20gR3JhcGh2aXouIEl0IGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBncmFwaGljYWwgZmlsZXMsIHN1Y2ggYXMgUFMsIFBORy4uLiBvdXQgb2YKCQkJaXRzIGxheW91dC4JVGhlIGFpbSBvZiB0aGlzIHRyYW5zZm9ybWF0aW9uIGlzIHRvIGdlbmVyYXRlIGEgcm91Z2ggdmlzdWFsaXphdGlvbiwgaW4gdGhlIGZvcm0gb2YgYSBjbGFzcwoJCQlkaWFncmFtLCBvZiBhIEtNMyBtb2RlbC4gQSBtZXRhbW9kZWwgY3JlYXRlZCB3aXRoIEtNMyBkb2VzIG5vdCBpbmNsdWRlIGFueSByZXByZXNlbnRhdGlvbiBpbmZvcm1hdGlvbiwKCQkJc28gRE9ULCB0aGUgR3JhcGh2aXogdG9vbCwgaXMgdXNlZCB0byBjb21wdXRlIHRoZSBsYXlvdXQgYW5kIGdlbmVyYXRlIHRoZSBvdXRwdXQgcGljdHVyZS4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPktNMzJFTUY8L3Nob3J0TmFtZT4KCQk8bmFtZT5LTTMyRU1GIChLTTMgdG8gRWNvcmUpPC9uYW1lPgoJCTxkb2NMaW5rPktNMzJFTUYvUkVBRE1FLnR4dDwvZG9jTGluaz4KCQk8c291cmNlTGluaz5LTTMyRU1GL0tNMzJFTUYuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJPHA+CgkJCQlUaGUgS00zIHBsdWdpbiBpbXBsZW1lbnRzIHNldmVyYWwgdHJhbnNmb3JtYXRpb25zLCBpbmNsdWRpbmcgdGhlIGdlbmVyYXRpb24gb2YgYW4gRWNvcmUgbWV0YW1vZGVsCgkJCQlmcm9tIGEgS00zIG1vZGVsOiBLTTMyRU1GLgoJCQkJVGhpcyBkaXN0cmlidXRpb24gcHJvdmlkZXMgc291cmNlIGNvZGUgZm9yIHRoZSBLTTMyRU1GIHRyYW5zZm9ybWF0aW9uCgkJCQlhdmFpbGFibGUgaW4gdGhlIEtNMyBwbHVnaW4gYXMgb2YgTWF5IDI0dGgsIDIwMDYuCgkJCTwvcD4KCSAgCQk8cD4KCQkJCUtNMzJFTUYgaXMgdXN1YWxseSB1c2VkIHRocm91Z2ggdGhlIEtNMyBwbHVnaW4sIGFzIHRoZSAiSW5qZWN0IEtNMyB0byBFY29yZSBtZXRhbW9kZWwiIGFjdGlvbiBhdmFpbGFibGUKCQkJCW9uICoua20zIGZpbGVzLiBTb21lIHVzZXJzIG1heSBob3dldmVyIHdhbnQgdG8gY3VzdG9taXplIHRoaXMgdHJhbnNmb3JtYXRpb24uCgkJCQlIZXJlIGlzIHRoZSBwcm9jZWR1cmUgdG8gcmVwbGFjZSB0aGUgc3RhbmRhcmQgdHJhbnNmb3JtYXRpb24gd2l0aCBhIGN1c3RvbSBvbmU6CgkJCQk8dWw+CgkJCQkJPGxpPm1vZGlmeSBLTTMyRU1GLmF0bCB0byBzdXBwb3J0IGRlc2lyZWQgZmVhdHVyZXMsPC9saT4KCQkJCQk8bGk+Y29tcGlsZSBpdCBpbnRvIEtNMzJFTUYuYXNtICh0aGlzIGlzIG5vcm1hbGx5IGF1dG9tYXRpY2FsbHkgcGVyZm9ybWVkIGJ5IHRoZSBBVEwgYnVpbGRlciksPC9saT4KCQkJCQk8bGk+Y29weSBLTTMyRU1GLmFzbSBpbnRvIG9yZy5hdGwuZWNsaXBzZS5rbTMgLyBzcmMgLyBvcmcgLyBhdGwgLyBlY2xpcHNlIC8ga20zIC8gcmVzb3VyY2VzLDwvbGk+CgkJCQkJPGxpPnJlc3RhcnQgRWNsaXBzZS48L2xpPgoJCQkJPC91bD4KCQkJPC9wPgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KICAJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+S00zMk1lYXN1cmU8L3Nob3J0TmFtZT4KCQk8bmFtZT5LTTMgdG8gTWVhc3VyZTwvbmFtZT4KCQk8ZG9jTGluaz5LTTMyTWVhc3VyZS9FeGFtcGxlS00zMk1lYXN1cmVbdjAwLjAyXS5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+S00zMk1lYXN1cmUvS00zMk1lYXN1cmUuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhlIEtNMyB0byBNZWFzdXJlIGV4YW1wbGUgZGVzY3JpYmVzIG1lYXN1cmVtZW50IG9uIEtNMyBtZXRhbW9kZWxzLCB1c2luZyBtZXRyaWNzIGRlZmluZWQgYXMgQVRMIGxpYnJhcmllcy4KCQkJVGhpcyBzY2VuYXJpbyBpcyBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIHNjZW5hcmlvIDxhIGhyZWY9IktNMzJNZXRyaWNzIj5LTTMyTWV0cmljczwvYT4uIEl0IGlzIGNvbnRyaWJ1dGVkCgkJCWJ5IEVyaWMgVulwYSAoPGEgaHJlZj0iaHR0cDovL3d3dy5zb2RpdXMuY29tIj5TT0RJVVM8L2E+KS4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPktNMzJNZXRyaWNzPC9zaG9ydE5hbWU+CgkJPG5hbWU+S00zIHRvIE1ldHJpY3M8L25hbWU+CgkJPGRvY0xpbms+S00zMk1ldHJpY3MvRXhhbXBsZUtNMzJNZXRyaWNzW3YwMC4wMV0ucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPktNMzJNZXRyaWNzL0tNMzJNZXRyaWNzLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCUR1ZSB0byB0aGUgZXZlbiBncm93aW5nIGNvbXBsZXhpdHkgb2YgbWV0YW1vZGVscywgdGhlIGVzdGFibGlzaG1lbnQgb2YgbWV0YW1vZGVsIG1ldHJpY3Mgbm93IHJlcXVpcmVzIHRoZSB1c2Ugb2YgZGVkaWNhdGVkIHRvb2xzLgoJCSAgICBUaGlzIEFUTCB0cmFuc2Zvcm1hdGlvbiBleGFtcGxlIGFpbXMgdG8gc2hvdyBob3cgdGhlIEFUTCBsYW5ndWFnZSBtYXkgYmUgdXNlZCB0byBtZWV0IHRoaXMgb2JqZWN0aXZlIGJ5IGdlbmVyYXRpbmcgbWV0cmljcyBtb2RlbHMgZnJvbSBtZXRhbW9kZWxzLgoJCQlUaGUgS2VybmVsIE1ldGFNZXRhTW9kZWwgKEtNMykgaXMgYSBzaW1wbGUgdGV4dHVhbCBub3RhdGlvbiBlbmFibGluZyBxdWljayBkZWZpbml0aW9uIG9mIG1ldGFtb2RlbHMuCgkJCVRoZSBLTTMgdG8gTWV0cmljcyBBVEwgZXhhbXBsZSBhaW1zIHRvIGRlbW9uc3RyYXRlIHRoZSBmZWFzaWJpbGl0eSBvZiBjb21wdXRpbmcgc29tZSBtZXRhbW9kZWwgbWV0cmljcyBieSBtZWFucyBvZiB0aGUgQVRMIGxhbmd1YWdlLgoJCQlGb3IgdGhpcyBwdXJwb3NlLCB3ZSBoYXZlIGRldmVsb3BlZCBhIGJhc2ljIE1ldHJpY3MgbWV0YW1vZGVsIGVuYWJsaW5nIHRvIGVuY29kZSBtZWFzdXJlcyBvZiBkaWZmZXJlbnQgdHlwZXMuCgkJCVRoZSBLTTMgdG8gTWV0cmljcyBBVEwgdHJhbnNmb3JtYXRpb24gZGVmaW5lcyBkaWZmZXJlbnQgbWV0YW1vZGVsIG1ldHJpY3MgdGhhdCBhcmUgcmVsYXRpdmUgZWl0aGVyIHRvIHRoZSB3aG9sZSBtb2RlbCwgb3IgdG8gc3BlY2lmaWMgbW9kZWwgZWxlbWVudHMuCgkJCVRoZSBtZXRyaWNzIHByb3ZpZGVkIGluIHRoZSBzY29wZSBvZiB0aGlzIHRyYW5zZm9ybWF0aW9uIGluY2x1ZGUgc2ltcGxlIG1lYXN1cmVtZW50cyBhcyB3ZWxsIGFzIG1vcmUgY29tcGxleCBjb21wdXRhdGlvbnMuCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5LTTMyT1dMPC9zaG9ydE5hbWU+CgkJPG5hbWU+S00zIHRvIE9XTDwvbmFtZT4KCQk8ZG9jTGluaz5LTTMyT1dML1JFQURNRS50eHQ8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+S00zMk9XTC9LTTMyT1dMLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoaXMgQVRMIHNjZW5hcmlvIHNob3dzIHVwIGEgdHJhZHVjdGlvbiBvZiBLTTMgaW50byBPV0wgKFdlYiBPbnRvbG9neSBsYW5ndWFnZSkgb250b2xvZ3kgbGFuZ3VhZ2UuIFRoaXMgc2NlbmFyaW8gaXMgY29tcG9zZWQgCgkJCW9mIG9uZSB0cmFuc2Zvcm1hdGlvbiAoS00zMk9XTCkgYW5kIGFuIE9XTCBleHRyYWN0b3IgdGhhdCBwcm9kdWNlcyBYTUwgZG9jdW1lbnRzIGNvbmZvcm0gdG8gdGhlIE9XTCBzeW50YXggCgkJCWRlZmluZWQgYnkgdGhlIFczQy4gUmVzdWx0aW5nIG9udG9sb2d5IGNhbiBiZSB1c2VkIGludG8gb250b2xvZ3kgZGV2ZWxvcG1lbnQgdG9vbHMgbGlrZSBQcm90ZWdlCgkJCTxhIGhyZWY9Imh0dHA6Ly9wcm90ZWdlLnN0YW5mb3JkLmVkdSI+KHNlZSBodHRwOi8vcHJvdGVnZS5zdGFuZm9yZC5lZHUpPC9hPi4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPktNMzJQcm9ibGVtPC9zaG9ydE5hbWU+CgkJPG5hbWU+S00zIHRvIFByb2JsZW08L25hbWU+CgkJPGRvY0xpbms+S00zMlByb2JsZW0vRXhhbXBsZUtNMzJQcm9ibGVtW3YwMC4wMV0ucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPktNMzJQcm9ibGVtL0tNMzJQcm9ibGVtLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoZSBLTTMgdG8gUHJvYmxlbSBleGFtcGxlIGRlc2NyaWJlcyBhIHRyYW5zZm9ybWF0aW9uIGZyb20gYSBLTTMgbWV0YW1vZGVsIGludG8gYSBQcm9ibGVtIG1vZGVsLgoJCQlUaGUgZ2VuZXJhdGVkIFByb2JsZW0gbW9kZWwgY29udGFpbnMgdGhlIGxpc3Qgb2Ygbm9uLXN0cnVjdHVyYWwgZXJyb3JzIChhbG9uZyB3aXRoIGFkZGl0aW9uYWwgd2FybmluZ3MpIHRoYXQgaGF2ZSBiZWVuIGRldGVjdGVkIHdpdGhpbiB0aGUgaW5wdXQgS00zIG1ldGFtb2RlbC4KCQkJVGhlIHRyYW5zZm9ybWF0aW9uIGFzc3VtZXMgdGhlIGlucHV0IEtNMyBtZXRhbW9kZWwgaXMgc3RydWN0dXJhbGx5IGNvcnJlY3QsIGFzIHRob3NlIHRoYXQgaGF2ZSBwYXNzZWQgYSBzeW50YWN0aWMgYW5hbHlzaXMgKGZvciBpbnN0YW5jZSwgYSByZWZlcmVuY2UgZGVmaW5lZCB3aXRoIGNhcmRpbmFsaXR5IFsxLTFdIHNob3VsZCBub3QgYmUgdW5kZWZpbmVkKS4KCQkJSXQgbWF5IHRoZXJlZm9yZSBmYWlscyB3aGVuIGV4ZWN1dGVkIG9uIGEgS00zIG1ldGFtb2RlbCBwcm9kdWNlZCBmcm9tIGEgTU9GIG1ldGFtb2RlbCB0aGF0IGhhcyBub3QgYmVlbiBjaGVja2VkLgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KICAJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+S00zMlhNTDwvc2hvcnROYW1lPgoJCTxuYW1lPktNMyB0byBYTUw8L25hbWU+CgkJPGRvY0xpbms+S00zMlhNTC9yZWFkbWUudHh0PC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPktNMzJYTUwvS00zMlhNTC56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQlUaGUgS00zIHRvIFhNTCBzY2VuYXJpbyBleHByZXNzZXMgZWFjaCBtZXRhbW9kZWwgd3JpdHRlbiBpbiBLTTMgdGV4dHVhbCBzeW50YXggd2l0aCBhIGRlZmF1bHQgWE1MIHN5bnRheC4KCQkJQXMgYSBkZWZhdWx0IHN5bnRheCwgaXQgaXMgbm90IHRoZSBtb3JlIGNvbmNpc2UgYnV0IGl0IGlzIG5vbi1hbWJpZ3VvdXMgYW5kIGNhbiBiZSBhcHBseSB0byBhbnkgS00zIG1vZGVsLiAKCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPktNTEluamVjdG9yPC9zaG9ydE5hbWU+CgkJPG5hbWU+S01MIEluamVjdG9yPC9uYW1lPgoJCTxkb2NMaW5rPktNTEluamVjdG9yL0V4YW1wbGVLTUxJbmplY3Rvclt2MDAuMDFdLnBkZjwvZG9jTGluaz4KCQk8c291cmNlTGluaz5LTUxJbmplY3Rvci9LTUxJbmplY3Rvci56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQlUaGUgS01MSW5qZWN0b3IgZXhhbXBsZSBkZXNjcmliZXMgYSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGEgS01MIGZpbGUgdG8gYSBLTUwgbW9kZWwuCgkJCUtNTCwgb3IgS2V5aG9sZSBNYXJrdXAgTGFuZ3VhZ2UsIGlzIGFuIFhNTCBncmFtbWFyIGFuZCBmaWxlIGZvcm1hdCBmb3IgbW9kZWxpbmcgYW5kIHN0b3JpbmcgZ2VvZ3JhcGhpYyBmZWF0dXJlcyBzdWNoIGFzIHBvaW50cywgbGluZXMsIGltYWdlcywgYW5kIHBvbHlnb25zIGZvciBkaXNwbGF5IGluIEdvb2dsZSBFYXJ0aC4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+Cgk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5MaXN0TWV0YW1vZGVsUmVmYWN0b3Jpbmc8L3Nob3J0TmFtZT4KCQk8bmFtZT5MaXN0IE1ldGFtb2RlbCBSZWZhY3RvcmluZzwvbmFtZT4KCQk8ZG9jTGluaz5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2F0bC9kb2N1bWVudGF0aW9uL2Jhc2ljRXhhbXBsZXNfUGF0dGVybnMvYXJ0aWNsZS5waHA/ZmlsZT1MaXN0TWV0YW1vZGVsUmVmYWN0b3JpbmcvaW5kZXguaHRtbDwvZG9jTGluaz4KCQk8c291cmNlTGluaz5MaXN0TWV0YW1vZGVsUmVmYWN0b3JpbmcvTGlzdE1ldGFtb2RlbFJlZmFjdG9yaW5nLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCUluIHRoaXMgZXhhbXBsZSwgd2UgcHJlc2VudCBzb21lIGJhc2ljIGNvbmNlcHRzIG9mIEFUTCB0aHJvdWdoIGEgc2ltcGxlIHVzZSBjYXNlLiBPdXIgd29ya2luZyBjb250ZXh0IGlzIHRvIGNyZWF0ZSBhIGJyaWRnZSBiZXR3ZWVuIAoJCQl0d28gZGlmZmVyZW50IHZlcnNpb25zIG9mIGEgTGlzdCBtZXRhbW9kZWwgKEEgYW5kIEIgdmVyc2lvbnMpLiBUaGlzIGJyaWRnZSBjb25zaXN0cyBvbiBhbiBBVEwgdHJhbnNmb3JtYXRpb24gZnJvbSB0aGUgbWV0YW1vZGVsIEEgdG8gdGhlIG1ldGFtb2RlbCBCLgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KICAJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+TWFrZTJBbnQ8L3Nob3J0TmFtZT4KCQk8bmFtZT5NYWtlIHRvIEFudDwvbmFtZT4KCQk8ZG9jTGluaz5NYWtlMkFudC9FeGFtcGxlTWFrZTJBbnRbdjAwLjAxXS5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+TWFrZTJBbnQvTWFrZTJBbnQuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCSAgICAJQW50IGlzIGFuIG9wZW4gc291cmNlIGJ1aWxkIHRvb2wgKGEgdG9vbCBkZWRpY2F0ZWQgdG8gdGhlIGFzc2VtYmx5IG9mIHRoZSBkaWZmZXJlbnQgcGllY2VzIG9mIGEgcHJvZ3JhbSkgZnJvbSB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCiAgICAJCUFudCBpcyB0aGUgbW9zdCBjb21tb25seSB1c2VkIGJ1aWxkIHRvb2wgZm9yIEphdmEgcHJvZ3JhbXMuCgkgICAgCVVubGlrZSBtYW55IG90aGVyIGJ1aWxkIHRvb2xzLCBBbnQgaXMgaW5kZXBlbmRlbnQgb2YgYm90aCB0aGUgcGxhdGZvcm0gYW5kIHRoZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuIAoJCQlNYWtlICh0aGUgbW9zdCBjb21tb24gYnVpbGQgdG9vbCkgaXMgYmFzZWQgb24gYSBwYXJ0aWN1bGFyIHNoZWxsIG9yIGNvbW1hbmQgaW50ZXJmYWNlIGFuZCBpcyB0aGVyZWZvcmUgbGltaXRlZCB0byB0aGUgdHlwZSBvZiBvcGVyYXRpbmcgc3lzdGVtcyB0aGF0IHVzZSB0aGF0IHNoZWxsLgoJCQlBbnQgdXNlcyBKYXZhIGNsYXNzZXMgcmF0aGVyIHRoYW4gc2hlbGwtYmFzZWQgY29tbWFuZHMuCgkJCURldmVsb3BlcnMgdXNlIFhNTCB0byBkZXNjcmliZSB0aGUgbW9kdWxlcyBpbiB0aGVpciBwcm9ncmFtIGJ1aWxkLgoJCQlUaGlzIGV4YW1wbGUgZGVzY3JpYmVzIGEgdHJhbnNmb3JtYXRpb24gZnJvbSBhIE1ha2VmaWxlIHRvIGFuIEFudCBmaWxlLgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPk1ha2VQYXJ0aWFsUm9sZVRvdGFsPC9zaG9ydE5hbWU+CgkJPG5hbWU+TWFrZVBhcnRpYWxSb2xlVG90YWw8L25hbWU+CgkJPHNvdXJjZUxpbms+TWFrZVBhcnRpYWxSb2xlVG90YWwvTWFrZVBhcnRpYWxSb2xlVG90YWwuemlwPC9zb3VyY2VMaW5rPgoJCTxkb2NMaW5rPk1ha2VQYXJ0aWFsUm9sZVRvdGFsL01ha2luZ1BhcnRpYWxSb2xlVG90YWwoYSkucGRmPC9kb2NMaW5rPgoJCTxkb2NMaW5rPk1ha2VQYXJ0aWFsUm9sZVRvdGFsL01ha2luZ1BhcnRpYWxSb2xlVG90YWwoYikucGRmPC9kb2NMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhpcyBleGFtcGxlIGlzIGV4dHJhY3QgZnJvbSA8YSBocmVmPSJodHRwOi8vd3d3LmRjcy5rY2wuYWMudWsvc3RhZmYva2NsL3RjYXQucGRmIj5DYXRhbG9ndWUgb2YgTW9kZWwgVHJhbnNmb3JtYXRpb25zIGJ5IEsuIExhbm88L2E+LgoJCQlUb3RhbCBhc3NvY2lhdGlvbnMgYXJlIGdlbmVyYWxseSBlYXNpZXIgdG8gaW1wbGVtZW50IGFuZCBtYW5hZ2UgdGhhbiBwYXJ0aWFsIGFzc29jaWF0aW9ucy4KCQkJVGhpcyBleGFtcGxlIHdhcyBleHRyYWN0ZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5zY2llbmNlcy51bml2LW5hbnRlcy5mci9saW5hL2F0bC9jb250cmliL2JhdWRyeSI+SnVsaWVuIEJhdWRyeTwvYT4uCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5NYXZlbjJBbnQ8L3Nob3J0TmFtZT4KCQk8bmFtZT5NYXZlbiB0byBBbnQ8L25hbWU+CgkJPGRvY0xpbms+TWF2ZW4yQW50L0V4YW1wbGVNYXZlbjJBbnRbdjAwLjAxXS5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+TWF2ZW4yQW50L01hdmVuMkFudC56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQlBbnQgaXMgYW4gb3BlbiBzb3VyY2UgYnVpbGQgdG9vbCAoYSB0b29sIGRlZGljYXRlZCB0byB0aGUgYXNzZW1ibHkgb2YgdGhlIGRpZmZlcmVudCBwaWVjZXMgb2YgYSBwcm9ncmFtKSBmcm9tIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KCQkJQW50IGlzIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgYnVpbGQgdG9vbCBmb3IgSmF2YSBwcm9ncmFtcy4KCQkJTWF2ZW4gaXMgYW5vdGhlciBidWlsZCB0b29sIGNyZWF0ZWQgYnkgdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgoJCQlJdCBpcyBhbiBleHRlbnNpb24gb2YgQW50IGJlY2F1c2UgYW50IFRhc2tzIGNhbiBiZSB1c2VkIGluIE1hdmVuLgoJCQlUaGUgZGlmZmVyZW5jZSBmcm9tIEFudCBpcyB0aGF0IGEgcHJvamVjdCBjYW4gYmUgcmV1c2FibGUuCgkJCVRoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIGEgdHJhbnNmb3JtYXRpb24gZnJvbSBhIE1hdmVuIGZpbGVzIChwcm9qZWN0LnhtbCBhbmQgbWF2ZW4ueG1sKSB0byBhbiBBbnQgZmlsZS4JCQkKCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPk1lYXN1cmUyVGFibGU8L3Nob3J0TmFtZT4KCQk8bmFtZT5NZWFzdXJlIHRvIFRhYmxlPC9uYW1lPgoJCTxkb2NMaW5rPk1lYXN1cmUyVGFibGUvRXhhbXBsZU1lYXN1cmUyVGFibGVbdjAwLjAxXS5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+TWVhc3VyZTJUYWJsZS9NZWFzdXJlMlRhYmxlLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoZSBNZWFzdXJlMlRhYmxlIHByb2plY3QgaXMgdXNlZCB0byBjcmVhdGVzIGdlbmVyaWMgdGFibGVzIGZyb20gYSBtZWFzdXJlIG1vZGVsLgoJCQlUaGlzIHNjZW5hcmlvIGlzIHVzZWQgYnkgdGhlIHNjZW5hcmlvIDxhIGhyZWY9Ik1vZGVsTWVhc3VyZW1lbnQiPk1vZGVsIE1lYXN1cmVtZW50PC9hPi4KCQkJSXQgaXMgY29udHJpYnV0ZWQgYnkgRXJpYyBW6XBhICg8YSBocmVmPSJodHRwOi8vd3d3LnNvZGl1cy5jb20iPlNPRElVUzwvYT4pLgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KICAJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+TWVhc3VyZTJYSFRNTDwvc2hvcnROYW1lPgoJCTxuYW1lPk1lYXN1cmUgdG8gWEhUTUw8L25hbWU+CgkJPGRvY0xpbms+TWVhc3VyZTJYSFRNTC9FeGFtcGxlTWVhc3VyZTJYSFRNTFt2MDAuMDFdLnBkZjwvZG9jTGluaz4KCQk8c291cmNlTGluaz5NZWFzdXJlMlhIVE1ML01lYXN1cmUyWEhUTUwuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhlIE1lYXN1cmUgdG8gWEhUTUwgZXhhbXBsZSBkZXNjcmliZXMgYSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGEgTWVhc3VyZSBtb2RlbCB0byBhIFhIVE1MIGZpbGUgcmVwcmVzZW50aW5nIHRoZSBtZWFzdXJlbWVudCBkYXRhLgoJCQlUaGlzIHNjZW5hcmlvIGlzIHVzZWQgYnkgdGhlIHNjZW5hcmlvIDxhIGhyZWY9Ik1vZGVsTWVhc3VyZW1lbnQiPk1vZGVsIE1lYXN1cmVtZW50PC9hPi4KCQkJSXQgaXMgY29udHJpYnV0ZWQgYnkgRXJpYyBW6XBhICg8YSBocmVmPSJodHRwOi8vd3d3LnNvZGl1cy5jb20iPlNPRElVUzwvYT4pLgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KICAJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+TWVhc3VyaW5nTW9kZWxSZXBvc2l0b3JpZXM8L3Nob3J0TmFtZT4KCQk8bmFtZT5NZWFzdXJpbmcgTW9kZWwgUmVwb3NpdG9yaWVzPC9uYW1lPgoJCTxkb2NMaW5rPk1lYXN1cmluZ01vZGVsUmVwb3NpdG9yaWVzL0V4YW1wbGVNZWFzdXJpbmdNb2RlbFJlcG9zaXRvcmllc1t2MDAuMDFdLnBkZjwvZG9jTGluaz4KCQk8c291cmNlTGluaz5NZWFzdXJpbmdNb2RlbFJlcG9zaXRvcmllcy9NZWFzdXJpbmdNb2RlbFJlcG9zaXRvcmllcy56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQlUaGUgTWVhc3VyaW5nIE1vZGVsIFJlcG9zaXRvcmllcyBleGFtcGxlIGdlbmVyYXRlcyBzb21lIG1lYXN1cmVzIChncmFwaCBhbmQgdGFibGUgZm9ybWF0KSBvbiBpbnB1dCBLTTMgbW9kZWxzLgoJCQlUaGlzIGV4YW1wbGUgZGVzY3JpYmVzIHRocmVlIHRyYW5zZm9ybWF0aW9ucyBmcm9tIGEgS00zIG1vZGVsIHRvIGEgTWVhc3VyZSBtb2RlbCwgZnJvbSBhIE1lYXN1cmUgbW9kZWwgdG8gYSBNZWFzdXJlIG1vZGVsIGFuZCBmcm9tIGEgTWVhc3VyZSBtb2RlbCB0bwoJCQlhIFRhYmxlIG1vZGVsLiBGaW5hbGx5LCBncmFwaGljYWwgb3V0cHV0cyBhcmUgZ2VuZXJhdGVkIChTVkcgYW5kIEhUTUwpLgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPk1lcmdpbmdQYXJ0aWFsQ2xhc3Nlczwvc2hvcnROYW1lPgoJCTxuYW1lPk1lcmdpbmdQYXJ0aWFsQ2xhc3NlczwvbmFtZT4KCQk8ZG9jTGluaz5NZXJnaW5nUGFydGlhbENsYXNzZXMvTWVyZ2luZ1BhcnRpYWxDbGFzc2VzLnBkZjwvZG9jTGluaz4KCQk8c291cmNlTGluaz5NZXJnaW5nUGFydGlhbENsYXNzZXMvTWVyZ2luZ1BhcnRpYWxDbGFzc2VzLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoaXMgZXhhbXBsZSBpcyBleHRyYWN0IGZyb20gPGEgaHJlZj0iaHR0cDovL3d3dy5kY3Mua2NsLmFjLnVrL3N0YWZmL2tjbC90Y2F0LnBkZiI+Q2F0YWxvZ3VlIG9mIE1vZGVsIFRyYW5zZm9ybWF0aW9ucyBieSBLLiBMYW5vPC9hPi4KCQkJVGhlIHB1cnBvc2Ugb2YgdGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyB0byBtZXJnZSB0aGUgY2xhc3MgbGluayBieSBhIGFzc29jaWF0aW9uIG9uZS1vbmUuCgkJCVRoaXMgZXhhbXBsZSB3YXMgZXh0cmFjdGVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuc2NpZW5jZXMudW5pdi1uYW50ZXMuZnIvbGluYS9hdGwvY29udHJpYi9zaW1vbiI+RXJpYyBTaW1vbjwvYT4uCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5NRVRBSDJBQ01FPC9zaG9ydE5hbWU+CgkJPG5hbWU+TWV0YUggdG8gQUNNRTwvbmFtZT4KCQk8ZG9jTGluaz5NRVRBSDJBQ01FL01FVEFIMkFDTUUucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPk1FVEFIMkFDTUUvTUVUQUgyQUNNRS56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQlUaGUgTWV0YUggdG8gQUNNRSBleGFtcGxlIGRlc2NyaWJlcyBhIHRyYW5zZm9ybWF0aW9uIGZyb20gYSBNZXRhSCBmb3JtYXQgdG8gQUNNRSBmb3JtYXQuCgkJCVRoZSBBQ01FIGludGVyY2hhbmdlIGZvcm1hdCB3YXMgb3JpZ2luYWxseSBjb25jZWl2ZWQgYXMgYSB3YXkgdG8gc2hhcmUgdG9vbCBjYXBhYmlsaXRpZXMgcm92aWRlZCBieSBhIHBhcnRpY3VsYXIgQURMIHdpdGggb3RoZXIgQURMcywgd2hpbGUgYXZvaWRpbmcgdGhlIHByb2R1Y3Rpb24gb2YgbWFueSBwYWlyIHdpc2UgbGFuZ3VhZ2UgdHJhbnNsYXRvcnMuCgkJCVRoZSBNZXRhSCBhcmNoaXRlY3R1cmFsIGRlc2NyaXB0aW9uIGxhbmd1YWdlIChBREwpIGFuZCBhc3NvY2lhdGVkIHRvb2xzZXQgc3VwcG9ydCBhcmNoaXRlY3R1cmFsIG1vZGVsaW5nIG9mIGVtYmVkZGVkIHJlYWwtdGltZSBzeXN0ZW0gYXBwbGljYXRpb25zLgoJCQlNZXRhSCB0byBBQ01FIHdhcyBwcm9kdWNlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnNjaWVuY2VzLnVuaXYtbmFudGVzLmZyL2xpbmEvYXRsL2NvbnRyaWIvYmF1ZHJ5Ij5KdWxpZW4gQmF1ZHJ5PC9hPi48YnIgLz4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPk1ETDJHTUY8L3Nob3J0TmFtZT4KCQk8bmFtZT5NREwgdG8gR01GPC9uYW1lPgoJCTxkb2NMaW5rPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvYXRsL3VzZWNhc2VzL01ETDJHTUYvPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPk1ETDJHTUYvb3JnLmVjbGlwc2UubTJtLmF0bC5tZGwyZ21mLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoaXMgdXNlIGNhc2Ugc2hvd3MgaG93IHdlIGNhbiByZXVzZSBVTUwgcHJvamVjdHMgY3JlYXRlZCB3aXRoIFJhdGlvbmFsIFJvc2UgYW5kIGltcG9ydCB0aGVtIGluIEdNRiAoc3BlY2lmaWNhbGx5IGluIFVNTDIgVG9vbHMpIHVzaW5nIEFUTCB0cmFuc2Zvcm1hdGlvbnMuCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5Nb2RlbE1lYXN1cmVtZW50PC9zaG9ydE5hbWU+CgkJPG5hbWU+TW9kZWxzIE1lYXN1cmVtZW50PC9uYW1lPgoJCTxkb2NMaW5rPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvYXRsL3VzZWNhc2VzL01vZGVsc01lYXN1cmVtZW50LzwvZG9jTGluaz4KCQk8c291cmNlTGluaz5Nb2RlbE1lYXN1cmVtZW50L01vZGVsc01lYXN1cmVtZW50LnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoZSBNb2RlbHNNZWFzdXJlbWVudCBwcm9qZWN0IGlzIHVzZWQgdG8gY29sbGVjdCBtZWFzdXJlbWVudCBkYXRhIG9uIEtNMyBtZXRhbW9kZWxzIG9yIFVNTDIgbW9kZWxzLCB1c2luZyAKCQkJbGlicmFyaWVzIGltcGxlbWVudGluZyBzb21lIG1ldHJpY3MJKE1PT0QsIE1PT0QyLCBNT09TRSwgRU1PT1NFIGFuZCBRTU9PRCkuCiAJCQlUaGUgbWVhc3VyZSBsZXZlbCBjYW4gYmUgY2hhbmdlZCBieSBzZXR0aW5nIGFuIG90aGVyIHZhbHVlIGZvciB0aGUgZmlyc3QgaGVscGVyCW1lYXN1cmVMZXZlbCBvZiB0aGUgCiAJCQl0cmFuc2Zvcm1hdGlvbiBLTTMyTWVhc3VyZSBvciBVTUwyMk1lYXN1cmUuCiAJCQlUaGlzIHNjZW5hcmlvIGlzIGNvbnRyaWJ1dGVkIGJ5IEVyaWMgVulwYSAoPGEgaHJlZj0iaHR0cDovL3d3dy5zb2RpdXMuY29tIj5TT0RJVVM8L2E+KS4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPk1PRjJVTUw8L3Nob3J0TmFtZT4KCQk8bmFtZT5NT0YgdG8gVU1MPC9uYW1lPgoJCTxkb2NMaW5rPk1PRjJVTUwvRXhhbXBsZU1PRjJVTUxbdjAwLjAxXS5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+TU9GMlVNTC9VTUwyTU9GLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoZSBNT0YgKE1ldGEgT2JqZWN0IEZhY2lsaXR5KSBpcyBhbiBPTUcgc3RhbmRhcmQgZW5hYmxpbmcgdG8gZGVzY3JpYmUgbWV0YW1vZGVscyB0aHJvdWdoIGNvbW1vbiBzZW1hbnRpY3MuIFRoZSBVTUwgKFVuaWZpZWQgTW9kZWxsaW5nCgkJCUxhbmd1YWdlKSBDb3JlIHN0YW5kYXJkIGlzIHRoZSBPTUcgY29tbW9uIG1vZGVsbGluZyBsYW5ndWFnZS4gQWx0aG91Z2gsIHRoZSBNT0YgaXMgcHJpbWFyaWx5IGRlc2lnbmVkIGZvciBtZXRhbW9kZWwgZGVmaW5pdGlvbnMgYW5kIFVNTAoJCQlDb3JlIGZvciB0aGUgZGVzaWduIG9mIG1vZGVscywgdGhlIHR3byBzdGFuZGFyZHMgaGFuZGxlIHZlcnkgY2xvc2Ugbm90aW9ucy4gVGhpcyBleGFtcGxlIGRlc2NyaWJlcyBhIHRyYW5zZm9ybWF0aW9uIGVuYWJsaW5nIHRvIHBhc3MgZnJvbQoJCQl0aGUgTU9GIHRvIHRoZSBVTUwgc2VtYW50aWNzLiBUaGUgdHJhbnNmb3JtYXRpb24gaXMgYmFzZWQgb24gdGhlIFVNTCBQcm9maWxlIGZvciBNT0YgT01HIHNwZWNpZmljYXRpb24uCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5Nb25pdG9yMlNlbWFwaG9yZTwvc2hvcnROYW1lPgoJCTxuYW1lPk1vbml0b3IgdG8gU2VtYXBob3JlPC9uYW1lPgoJCTxkb2NMaW5rPk1vbml0b3IyU2VtYXBob3JlL0V4YW1wbGVNb25pdG9yMlNlbWFwaG9yZVt2MDAuMDFdLnBkZjwvZG9jTGluaz4KCQk8c291cmNlTGluaz5Nb25pdG9yMlNlbWFwaG9yZS9Nb25pdG9yMlNlbWFwaG9yZS56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQlUaGUgTW9uaXRvciB0byBTZW1hcGhvcmUgZXhhbXBsZSBkZXNjcmliZXMgYSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGEgcHJvZ3JhbSBjb250YWluaW5nIEhvYXJlcwoJCQltb25pdG9ycyBkZWZpbml0aW9ucyBpbnRvIGFuIGVxdWl2YWxlbnQgcHJvZ3JhbSBpbiB3aGljaCBzeW5jaHJvbml6YXRpb24gb3BlcmF0aW9ucyBhcmUgYmFzZWQgb24KCQkJRGlqa3N0cmFzIHNlbWFwaG9yZXMuIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBlbmQtdG8tZW5kIHRyYW5zZm9ybWF0aW9uLCBmcm9tIGNvZGUgdG8gY29kZS4gSXQKCQkJc3RyaWN0bHkgZm9sbG93cyB0aGUgb3BlcmF0aW9uYWwgc2VtYW50aWMgb2YgbW9uaXRvcnMgZGVzY3JpYmVkIGluIHRlcm1zIG9mIHNlbWFwaG9yZXMgYW5kIHNob3dzIGhvdwoJCQl0aGlzIGFic3RyYWN0IGRlc2NyaXB0aW9uIG1heSBiZSBpbXBsZW1lbnRlZCBpbnRvIGFuIGV4ZWN1dGFibGUgQVRMIHRyYW5zZm9ybWF0aW9uLgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KICAJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+TVNPZmZpY2VFeGNlbEV4dHJhY3Rvcjwvc2hvcnROYW1lPgoJCTxuYW1lPk1pY3Jvc29mdCBPZmZpY2UgRXhjZWwgRXh0cmFjdG9yPC9uYW1lPgoJCTxkb2NMaW5rPk1TT2ZmaWNlRXhjZWxFeHRyYWN0b3IvRXhhbXBsZU1pY3Jvc29mdE9mZmljZUV4Y2VsRXh0cmFjdG9yW3YwMC4wMV0ucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPk1TT2ZmaWNlRXhjZWxFeHRyYWN0b3IvTWljcm9zb2Z0T2ZmaWNlRXhjZWxFeHRyYWN0b3IuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhlIE1pY3Jvc29mdCBPZmZpY2UgRXhjZWwgZXh0cmFjdG9yJ3MgZXhhbXBsZSBkZXNjcmliZXMgYSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGFuIEV4Y2VsIG1vZGVsIHRvIGFuIEV4Y2VsIHdvcmtib29rLiBUaGUgdHJhbnNmb3JtYXRpb24gaXMKCQkJYmFzZWQgb24gYSBzaW1wbGlmaWVkIHN1YnNldCBvZiB0aGUgU3ByZWFkc2hlZXRNTCBYTUwgZGlhbGVjdCB3aGljaCBpcyB0aGUgb25lIHVzZWQgYnkgTWljcm9zb2Z0IHRvIGltcG9ydC9leHBvcnQgRXhjZWwgd29ya2Jvb2sncyBkYXRhIGluCgkJCVhNTCBzaW5jZSB0aGUgMjAwMyB2ZXJzaW9uIG9mIE1pY3Jvc29mdCBPZmZpY2UuIFRoaXMgdHJhbnNmb3JtYXRpb24gcHJvZHVjZXMgYW4gRXhjZWwgWE1MIGZpbGUgd2hpY2ggY2FuIGJlIGRpcmVjdGx5IG9wZW5lZCBieSBNaWNyb3NvZnQKCQkJRXhjZWwgMjAwMy4gVGhpcyBmaWxlIGRlc2NyaWJlcyBhIHdvcmtib29rIHdpdGggdGhlIHNhbWUgY29udGVudCB0aGF0IHRoZSBvbmUgb2YgdGhlIGlucHV0IEV4Y2VsIG1vZGVsLgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KICAJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+TVNPZmZpY2VFeGNlbEluamVjdG9yPC9zaG9ydE5hbWU+CgkJPG5hbWU+TWljcm9zb2Z0IE9mZmljZSBFeGNlbCBJbmplY3RvcjwvbmFtZT4KCQk8ZG9jTGluaz5NU09mZmljZUV4Y2VsSW5qZWN0b3IvRXhhbXBsZU1pY3Jvc29mdE9mZmljZUV4Y2VsSW5qZWN0b3JbdjAwLjAxXS5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+TVNPZmZpY2VFeGNlbEluamVjdG9yL01pY3Jvc29mdE9mZmljZUV4Y2VsSW5qZWN0b3IuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhlIE1pY3Jvc29mdCBPZmZpY2UgRXhjZWwgaW5qZWN0b3IncyBleGFtcGxlIGRlc2NyaWJlcyBhIHRyYW5zZm9ybWF0aW9uIGZyb20gYW4gRXhjZWwgd29ya2Jvb2sgdG8gYW4gRXhjZWwgbW9kZWwuIFRoZSB0cmFuc2Zvcm1hdGlvbiBpcwoJCQliYXNlZCBvbiBhIHNpbXBsaWZpZWQgc3Vic2V0IG9mIHRoZSBTcHJlYWRzaGVldE1MIFhNTCBkaWFsZWN0IHdoaWNoIGlzIHRoZSBvbmUgdXNlZCBieSBNaWNyb3NvZnQgdG8gaW1wb3J0L2V4cG9ydCBFeGNlbCB3b3JrYm9vaydzIGRhdGEKCQkJaW4gWE1MIHNpbmNlIHRoZSAyMDAzIHZlcnNpb24gb2YgTWljcm9zb2Z0IE9mZmljZS4gVGhpcyB0cmFuc2Zvcm1hdGlvbiBwcm9kdWNlcyBhbiBFeGNlbCBtb2RlbCBmcm9tIGFuIEV4Y2VsIFhNTCBmaWxlIHdoaWNoIGNhbiBiZQoJCQlkaXJlY3RseSBvcGVuZWQgYnkgRXhjZWwgMjAwMy4gVGhpcyBFeGNlbCBtb2RlbCBkZXNjcmliZXMgYSB3b3JrYm9vayB3aXRoIHRoZSBzYW1lIGNvbnRlbnQgdGhhdCB0aGUgb25lIHN0b3JlZCBpbnRvIHRoZSBpbnB1dCBFeGNlbCBYTUwKCQkJZmlsZS4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPk1TT2ZmaWNlRXhjZWwyU29mdHdhcmVRdWFsaXR5Q29udHJvbDwvc2hvcnROYW1lPgoJCTxuYW1lPk1pY3Jvc29mdCBPZmZpY2UgRXhjZWwgdG8gU29mdHdhcmUgUXVhbGl0eSBDb250cm9sPC9uYW1lPgoJCTxkb2NMaW5rPk1TT2ZmaWNlRXhjZWwyU29mdHdhcmVRdWFsaXR5Q29udHJvbC9FeGFtcGxlTWljcm9zb2Z0T2ZmaWNlRXhjZWwyU29mdHdhcmVRdWFsaXR5Q29udHJvbFt2MDAuMDFdLnBkZjwvZG9jTGluaz4KCQk8c291cmNlTGluaz5NU09mZmljZUV4Y2VsMlNvZnR3YXJlUXVhbGl0eUNvbnRyb2wvTWljcm9zb2Z0T2ZmaWNlRXhjZWwyU29mdHdhcmVRdWFsaXR5Q29udHJvbC56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCVRoZSAiTWljcm9zb2Z0IE9mZmljZSBFeGNlbCB0byBTb2Z0d2FyZSBRdWFsaXR5IENvbnRyb2wiIGV4YW1wbGUgZGVzY3JpYmVzIGEgdHJhbnNmb3JtYXRpb24gZnJvbSBhbiBFeGNlbCB3b3JrYm9vayBjb250YWluaW5nIGluZm9ybWF0aW9uCgkJYWJvdXQgcXVhbGl0eSBjb250cm9scyBvZiBhIHNvZnR3YXJlIHByb2R1Y3QgdG8gYSBtb2RlbCBzdG9yaW5nIHRoZSBzYW1lIGRhdGEgaW4gYSBtb3JlIGdlbmVyYWwgYW5kIGFic3RyYWN0IHN0cnVjdHVyZS4gVGhlIHRyYW5zZm9ybWF0aW9uIGlzCgkJYmFzZWQgb24gYSBzaW1wbGlmaWVkIHN1YnNldCBvZiB0aGUgU3ByZWFkc2hlZXRNTCBYTUwgZGlhbGVjdCB3aGljaCBpcyB0aGUgb25lIHVzZWQgYnkgTWljcm9zb2Z0IHRvIGltcG9ydC9leHBvcnQgRXhjZWwgd29ya2Jvb2sncyBkYXRhIGluIFhNTAoJCXNpbmNlIHRoZSAyMDAzIHZlcnNpb24gb2YgTWljcm9zb2Z0IE9mZmljZS4gSXQgaXMgYWxzbyBiYXNlZCBvbiBhIFNvZnR3YXJlIFF1YWxpdHkgQ29udHJvbCBtZXRhbW9kZWwgd2hpY2ggZGVzY3JpYmVzIGEgc2ltcGxlIHN0cnVjdHVyZSB0bwoJCW1hbmFnZSBzb2Z0d2FyZSBxdWFsaXR5IGNvbnRyb2xzIChmb3IgZXhhbXBsZSBidWctdHJhY2tpbmcpLiBUaGUgaW5wdXQgb2YgdGhlIHRyYW5zZm9ybWF0aW9uIGlzIGFuIEV4Y2VsIFhNTCBmaWxlLCBjb250YWluaW5nIHRoZSBkZXNjcmlwdGlvbgoJCW9mIHRoZSBFeGNlbCB3b3JrYm9vaywgd2hpY2ggY2FuIGJlIGRpcmVjdGx5IG9wZW5lZCBieSBFeGNlbCAyMDAzLiBUaGUgb3V0cHV0IGlzIGEgbW9kZWwgd2hpY2ggY29uZm9ybXMgdG8gdGhlIFNvZnR3YXJlUXVhbGl0eUNvbnRyb2wKCQltZXRhbW9kZWwuCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5NeVNRTDJLTTM8L3Nob3J0TmFtZT4KCQk8bmFtZT5NeVNRTCB0byBLTTM8L25hbWU+CgkJPGRvY0xpbms+TXlTUUwyS00zL0V4YW1wbGVNeVNRTDJLTTNbdjAwLjAxXS5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+TXlTUUwyS00zL015U1FMMktNMy56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQlUaGUgTXlTUUwgdG8gS00zIHRyYW5zZm9ybWF0aW9uIGRlc2NyaWJlcyBhIHRyYW5zZm9ybWF0aW9uIGZyb20gdGhlIGRlc2NyaXB0aW9uIG9mIGEgcmVsYXRpb25hbCBkYXRhYmFzZSB0byBtZXRhbW9kZWwgc2VtYW50aWNzLgoJCQlUaGUgZXhhbXBsZSBhaW1zIHRvIGRlbW9uc3RyYXRlIHRoZSBwb3NzaWJpbGl0eSB0byB0cmFuc2xhdGUgZGF0YSBzdHJ1Y3R1cmUgZGVzY3JpcHRpb24gZnJvbSB0aGUgUkRCTVMgdG8gdGhlIG1vZGVsbGluZyB0ZWNobmljYWwgc3BhY2UuCgkJCUZvciB0aGlzIHB1cnBvc2UsIHRoZSBwb3B1bGFyIG9wZW4gc291cmNlIE15U1FMIFJEQk1TIHN5c3RlbSBoYXMgYmVlbiBjb25zaWRlcmVkIGFzIHRoZSBkYXRhYmFzZSBwbGF0Zm9ybSwgYW5kIHRoZSBLTTMgbm90YXRpb24gYXMgdGhlIG1ldGFtb2RlbCBkZXNjcmlwdGlvbiB0b29sLgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPk9CTDJVTUw8L3Nob3J0TmFtZT4KCQk8bmFtZT5PcGVuQmx1ZUxhYiB0byBVTUw8L25hbWU+CgkJPGRvY0xpbms+aHR0cDovL3d3dy5vcGVuYmx1ZWxhYi5vcmcvY29udGVudC9Cb29rbWFyay5wcm9jZXNzQEBkb2NpZD0yMDA3MDYwNzE0NDcxMDE4Nl8zMTU4NDM3NzU2MDEmYW1wO2FjdGlvbj1yZWFkJmFtcDt0YXJnZXQ9Q29tbXVuaXR5Wm9uZTwvZG9jTGluaz4KCQk8c291cmNlTGluaz5odHRwOi8vZm9yZ2Uub3BlbmJsdWVsYWIub3JnL2dmL3Byb2plY3Qvb21mL2Zycy88L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQk8cD4KCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuYmx1ZWxhYi5vcmciPk9wZW5CbHVlTGFiPC9hPiBwcm9qZWN0J3MgYW1iaXRpb24gaXMgdG8gcHJvdmlkZSBhbiBhcHBsaWNhdGlvbiB3aGljaCB5b3UgY2FuIGFkYXB0IGVhc2lseSBieSBqdXN0IHVwZGF0aW5nIFVNTCBtb2RlbHMgCgkJCWNvbnRhaW5lZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuYmx1ZWxhYi5vcmciPk9wZW5CbHVlTGFiPC9hPiBkb3dubG9hZCwgIHdpdGhvdXQgd3JpdGluZyBhbnkgbGluZSBvZiBjb2RlLiA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5ibHVlbGFiLm9yZyI+T3BlbkJsdWVMYWI8L2E+CgkJCXVzZSBhcyBpbnB1dCBYTUkgZmlsZSBidXQgdG9vIE9CTCBmaWxlIGNvbmZvcm1zIHRvIG91ciBzcGVjaWFsaXplZCBtZXRhbW9kZWwgdXNlZCB0byBnZW5lcmF0ZSBhIHBhcnRpY3VsYXIgZWRpdG9yLCAgPGEgaHJlZj0iaHR0cDovL2ZvcmdlLm9wZW5ibHVlbGFiLm9yZy9nZi9wcm9qZWN0L29tZi8iPk9wZW5CbHVlTGFiIERldmVsb3BlciBTdHVkaW88L2E+LgoJCQlTbyB3ZSBoYXZlIG1hZGUgYSB0cmFuc2Zvcm1hdGlvbiB3aGljaCBwZXJtaXQgdG8gZ2V0IFhNSSBmaWxlIGNvbmZvcm1zIHRvIHRoZSBtZXRhbW9kZWwgVU1MIGZyb20gT0JMIGZpbGUgaWYgd2Ugd2FudCB0byByZS1pbnRlZ3JhdGUgT0JMIG1vZGVscyBpbiBVTUwgIG1vZGVsZXIuCgkJCTwvcD4KCQkJPHA+VGhpcyBzY2VuYXJpbyBpcyBhIGNvbnRyaWJ1dGlvbiBmcm9tIEJlbmphbWluIENoZXZhbGxlcmVhdSAoPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuYmx1ZWxhYi5vcmciPk9wZW5CbHVlTGFiPC9hPikuPC9wPgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPk9DTDJSMk1MPC9zaG9ydE5hbWU+IAoJCTxuYW1lPk9DTCB0byBSMk1MPC9uYW1lPiAKCQk8ZG9jTGluaz5PQ0wyUjJNTC9SRUFETUUudHh0PC9kb2NMaW5rPiAKCQk8c291cmNlTGluaz5PQ0wyUjJNTC9PQ0wyUjJNTC56aXA8L3NvdXJjZUxpbms+IAoJCTxkZXNjcmlwdGlvbj4KCQkJPHAgYWxpZ249Imp1c3RpZnkiPgoJCQlUaGUgT0NMIHRvIFIyTUwgdHJhbnNmb3JtYXRpb24gc2NlbmFyaW8gZGVzY3JpYmVzIGEgdHJhbnNmb3JtYXRpb24gZnJvbSBPQ0wgKE9iamVjdCBDb25zdHJhaW50IExhbmd1YWdlKSBtZXRhbW9kZWwgKHdpdGggRU1PRiBtZXRhbW9kZWwpIGludG8gYSBSMk1MIChSRVdFUlNFIEkxIFJ1bGUgTWFya3VwIAoJCQlMYW5ndWFnZSkgbWV0YW1vZGVsLiBUaGUgT2JqZWN0IENvbnN0cmFpbnQgTGFuZ3VhZ2UgKE9DTCkgaXMgYSBsYW5ndWFnZSB0aGF0IGVuYWJsZXMgb25lIHRvIGRlc2NyaWJlIGV4cHJlc3Npb25zIGFuZCBjb25zdHJhaW50cyBvbiBvYmplY3Qtb3JpZW50ZWQgKFVNTCBhbmQgTU9GKSBtb2RlbHMgYW5kIAoJCQlvdGhlciBvYmplY3QgbW9kZWxpbmcgYXJ0aWZhY3RzLiBBbiBleHByZXNzaW9uIGlzIGFuIGluZGljYXRpb24gb3Igc3BlY2lmaWNhdGlvbiBvZiBhIHZhbHVlLiBBIGNvbnN0cmFpbnQgaXMgYSByZXN0cmljdGlvbiBvbiBvbmUgb3IgbW9yZSB2YWx1ZXMgb2YgKHBhcnQgb2YpIGFuIG9iamVjdC1vcmllbnRlZCAKCQkJbW9kZWwgb3Igc3lzdGVtLiBSRVdFUlNFIEkxIFJ1bGUgTWFya3VwIExhbmd1YWdlIChSMk1MKSBpcyBhIGdlbmVyYWwgd2ViIHJ1bGUgbWFya3VwIGxhbmd1YWdlLCB0aGF0IGNhbiByZXByZXNlbnQgZGlmZmVyZW50IHJ1bGUgdHlwZXM6IGludGVncml0eSwgcmVhY3Rpb24sIGRlcml2YXRpb24gYW5kIHByb2R1Y3Rpb24uIAoJCQlJdCBpcyB1c2VkIGFzIHBpdm90YWwgbWV0YW1vZGVsIHRvIGVuYWJsZSBzaGFyaW5nIHJ1bGVzIGJldHdlZW4gZGlmZmVyZW50IHJ1bGUgbGFuZ3VhZ2VzLCBpbiB0aGlzIGNhc2Ugd2l0aCB0aGUgT0NMLgoJCQk8L3A+CgkJCTxwPlRoaXMgc2NlbmFyaW8gaXMgYSBjb250cmlidXRpb24gZnJvbSA8YSBocmVmPSJodHRwOi8vbWlsYW4ubWlsYW5vdmljLm9yZy8iPk1pbGFuIE1pbGFub3ZpYzwvYT4uPC9wPgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGUgLz4KCTwvYXRsVHJhbnNmb3JtYXRpb24+Cgk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5PQ0wyU1dSTDwvc2hvcnROYW1lPgoJCTxuYW1lPk9DTCB0byBTV1JMPC9uYW1lPgoJCTxkb2NMaW5rPk9DTDJTV1JML1JFQURNRS50eHQ8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+T0NMMlNXUkwvT0NMMlNXUkwuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJPHAgYWxpZ249Imp1c3RpZnkiPgoJCQlUaGUgT0NMIHRvIFNXUkwgdHJhbnNmb3JtYXRpb24gc2NlbmFyaW8gZGVzY3JpYmVzIGEgdHJhbnNmb3JtYXRpb24gZnJvbSBPQ0wgKE9iamVjdCBDb25zdHJhaW50IExhbmd1YWdlKSAKCQkJbWV0YW1vZGVsICh3aXRoIEVNT0YgbWV0YW1vZGVsKSBpbnRvIGEgUjJNTCAoUkVXRVJTRSBJMSBSdWxlIE1hcmt1cCBMYW5ndWFnZSkgbWV0YW1vZGVsIGFuZCB0aGVuIHRvIHRoZQoJCQlTV1JMIChTZW1hbnRpYyBXZWIgUnVsZSBMYW5ndWFnZSkgbWV0YW1vZGVsIChSRE0pIHdpdGggT0RNIChPV0wgbGFuZ3VhZ2UgbWV0YW1vZGVsKS4gVGhlIE9iamVjdCBDb25zdHJhaW50IExhbmd1YWdlIChPQ0wpIAoJCQlpcyBhIGxhbmd1YWdlIHRoYXQgZW5hYmxlcyBvbmUgdG8gZGVzY3JpYmUgZXhwcmVzc2lvbnMgYW5kIGNvbnN0cmFpbnRzIG9uIG9iamVjdC1vcmllbnRlZCAoVU1MIGFuZCBNT0YpIG1vZGVscyBhbmQgb3RoZXIgCgkJCW9iamVjdCBtb2RlbGluZyBhcnRpZmFjdHMuIEFuIGV4cHJlc3Npb24gaXMgYW4gaW5kaWNhdGlvbiBvciBzcGVjaWZpY2F0aW9uIG9mIGEgdmFsdWUuIEEgY29uc3RyYWludCBpcyBhIHJlc3RyaWN0aW9uIG9uIG9uZSAKCQkJb3IgbW9yZSB2YWx1ZXMgb2YgKHBhcnQgb2YpIGFuIG9iamVjdC1vcmllbnRlZCBtb2RlbCBvciBzeXN0ZW0uIFJFV0VSU0UgSTEgUnVsZSBNYXJrdXAgTGFuZ3VhZ2UgKFIyTUwpIGlzIGEgCgkJCWdlbmVyYWwgd2ViIHJ1bGUgbWFya3VwIGxhbmd1YWdlLCB0aGF0IGNhbiByZXByZXNlbnQgZGlmZmVyZW50IHJ1bGUgdHlwZXM6IGludGVncml0eSwgcmVhY3Rpb24sIGRlcml2YXRpb24gCgkJCWFuZCBwcm9kdWN0aW9uLiBJdCBpcyB1c2VkIGFzIHBpdm90YWwgbWV0YW1vZGVsIHRvIGVuYWJsZSBzaGFyaW5nIHJ1bGVzIGJldHdlZW4gZGlmZmVyZW50IHJ1bGUgbGFuZ3VhZ2VzLCBpbiB0aGlzCgkJCWNhc2Ugd2l0aCB0aGUgT0NMLiBTV1JMIGlzIGEgd2ViIHJ1bGUgbGFuZ3VhZ2UgYmFzZWQgb24gY29tYmluYXRpb24gb2YgdGhlIE9XTCBETCBhbmQgT1dMIExpdGUgc3VibGFuZ3VhZ2VzIG9mIHRoZQoJCQlPV0wgV2ViIE9udG9sb2d5IExhbmd1YWdlLCB3aXRoIHRoZSBVbmFyeS9CaW5hcnkgRGF0YWxvZyBSdWxlTUwgc3VibGFuZ3VhZ2VzIG9mIHRoZSBSdWxlIE1hcmt1cCBMYW5ndWFnZSAoUnVsZU1MKS4KCQkJPC9wPgoJCQk8cD5UaGlzIHNjZW5hcmlvIGlzIGEgY29udHJpYnV0aW9uIGZyb20gPGEgaHJlZj0iaHR0cDovL21pbGFuLm1pbGFub3ZpYy5vcmcvIj5NaWxhbiBNaWxhbm92aWM8L2E+LjwvcD4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPlBhdGhFeHAyUGV0cmlOZXQ8L3Nob3J0TmFtZT4KCQk8bmFtZT5QYXRoRXhwIHRvIFBldHJpTmV0PC9uYW1lPgoJCTxkb2NMaW5rPlBhdGhFeHAyUGV0cmlOZXQvRXhhbXBsZVBhdGhFeHAyUGV0cmlOZXRbdjAwLjAxXS5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+UGF0aEV4cDJQZXRyaU5ldC9QYXRoRXhwMlBldHJpTmV0LnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoZSBwYXRoIGV4cHJlc3Npb24gdG8gUGV0cmkgbmV0cyBleGFtcGxlIGRlc2NyaWJlcyBhIHRyYW5zZm9ybWF0aW9uIGZyb20gYSBwYXRoIGV4cHJlc3Npb24gdG8gYSBQZXRyaSBuZXQuCiAgICAJCVRoaXMgZG9jdW1lbnQgcHJvdmlkZXMgYW4gb3ZlcnZpZXcgb2YgdGhlIHdob2xlIHRyYW5zZm9ybWF0aW9uIHNlcXVlbmNlIHRoYXQgZW5hYmxlcyB0byBwcm9kdWNlIGFuIFhNTCBQZXRyaQogICAgCQluZXQgcmVwcmVzZW50YXRpb24gKGluIHRoZSBQTk1MIGZvcm1hdCkgZnJvbSBhIHRleHR1YWwgZGVmaW5pdGlvbiBvZiBhIHBhdGggZXhwcmVzc2lvbi4KICAgIAkJSXRzIGFsc28gZGVzY3JpYmVzIHRoZSByZXZlcnNlIHRyYW5zZm9ybWF0aW9uIHNlcXVlbmNlIHRoYXQgZW5hYmxlcyB0byBidWlsZCBhIHRleHR1YWwgcGF0aCBleHByZXNzaW9uCgkJCXJlcHJlc2VudGF0aW9uIGZyb20gYSBYTUwgZGVmaW5pdGlvbiBvZiBhIFBldHJpIG5ldCAoaW4gdGhlIFBOTUwgZm9ybWF0KS4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+Cgk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5Qb3J0PC9zaG9ydE5hbWU+CgkJPG5hbWU+UG9ydDwvbmFtZT4KCQk8ZG9jTGluaz5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2F0bC9kb2N1bWVudGF0aW9uL2Jhc2ljRXhhbXBsZXNfUGF0dGVybnMvYXJ0aWNsZS5waHA/ZmlsZT1Qb3J0L2luZGV4Lmh0bWw8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+UG9ydC9Qb3J0LnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCUluIHRoaXMgZXhhbXBsZSwgd2UgcHJlc2VudCBzb21lIGJhc2ljIGNvbmNlcHRzIG9mIEFUTCB0aHJvdWdoIGEgc2ltcGxlIHVzZSBjYXNlLiBUaGlzIHVzZSBjYXNlIGRlYWxzIHdpdGggc2l0dWF0aW9ucyB3aGVyZSB0aGUgc291cmNlIGVsZW1lbnQgbWV0YSB0eXBlIGNvdWxkIG5vdCBiZSBzaW1wbHkgCgkJCW1hdGNoZWQgd2l0aCB0aGUgdGFyZ2V0IG1ldGEgdHlwZS4gVGhlIG9ubHkgd2F5IHRvIHJlc29sdmUgdGhlIHRhcmdldCBtZXRhIHR5cGUgaXMgdG8gYnJvd3NlIHNvdXJjZSBtb2RlbAoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KICAJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+UHVibGljMlByaXZhdGU8L3Nob3J0TmFtZT4KCQk8bmFtZT5QdWJsaWMgdG8gUHJpdmF0ZTwvbmFtZT4KCQk8ZG9jTGluaz5QdWJsaWMyUHJpdmF0ZS9SRUFETUUudHh0PC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPlB1YmxpYzJQcml2YXRlL1B1YmxpYzJQcml2YXRlLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCSZsdDtwJmd0OwoJCQlUaGUgUHVibGljMlByaXZhdGUgQVRMIHRyYW5zZm9ybWF0aW9uIG1ha2VzIGFsbCBwdWJsaWMgYXR0cmlidXRlcyBvZiBhIFVNTCAxLjQgbW9kZWwgcHJpdmF0ZS4KCQkJR2V0dGVycyBhbmQgc2V0dGVycyBhcmUgYWxzbyBjcmVhdGVkIGFwcHJvcHJpYXRlbHkgKGkuZS4gbm8gc2V0dGVyIGZvciBhIGZyb3plbiBhdHRyaWJ1dGUpLgoJCQlUaGlzIHRyYW5zZm9ybWF0aW9uIHVzZXMgQVRMIHJlZmluaW5nIG1vZGUgYXMgZGVmaW5lZCBpbiBbMV0uCgkJCVRoYW5rcyB0byByZWZpbmluZyBtb2RlLCBvbmx5IHR3byBydWxlcyBoYXZlIHRvIGJlIHdyaXR0ZW46IG9uZSBmb3IgcmVhZC1vbmx5IChpLmUuICJmcm96ZW4iCgkJCWluIFVNTCB0ZXJtaW5vbG9neSkgYXR0cmlidXRlcyBhbmQgb25lIGZvciByZWFkLXdyaXRlIGF0dHJpYnV0ZXMuCgkJCSZsdDsvcCZndDsKCQkJJmx0O3AmZ3Q7CgkJCVNvdXJjZSBhbmQgdGFyZ2V0IG1vZGVscyBjb25mb3JtIHRvIFVNTCB0aGUgMS40IG1ldGFtb2RlbCBwcm92aWRlZCBhcyBVTUxESS54bWkuCgkJCUEgc2FtcGxlIHNvdXJjZSBtb2RlbCAoUGV0cmlOZXQueG1pKSBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgdGFyZ2V0IG1vZGVsIChQZXRyaU5ldC1Qcml2YXRpemVkLnhtaSkgYXJlIGdpdmVuLgoJCQlCb3RoIG1vZGVscyBhcmUgYWxzbyBnaXZlbiBpbiBQTkcgZm9ybWF0IGZvciBlYXN5IHZpc3VhbGl6YXRpb246ICZsdDthIGhyZWY9IlB1YmxpYzJQcml2YXRlL1BldHJpTmV0LnBuZyI+UGV0cmlOZXQucG5nJmx0Oy9hJmd0OyBhbmQgJmx0O2EgaHJlZj0iUHVibGljMlByaXZhdGUvUGV0cmlOZXQtUHJpdmF0aXplZC5wbmciPlBldHJpTmV0LVByaXZhdGl6ZWQucG5nJmx0Oy9hJmd0Oy4KCQkJQWRkaXRpb25hbCBzb3VyY2UgbW9kZWxzIG1heSBiZSBjcmVhdGVkIHVzaW5nIFBvc2VpZG9uIChodHRwOi8vd3d3LmdlbnRsZXdhcmUuY29tLykuCgkJCSZsdDsvcCZndDsKCQkJJmx0O3AmZ3Q7CgkJCVJlZmVyZW5jZXM6CgkJCSZsdDt1bCZndDsKCQkJCSZsdDtsaSZndDtbMV0gJmx0O2EgaHJlZj0iaHR0cDovL3d3dy5zY2llbmNlcy51bml2LW5hbnRlcy5mci9saW5hL2F0bC9iaWJsaW9ncmFwaHkvTVRJUDA1Ij5Kb3VhdWx0LCBGLiwgYW5kIEt1cnRldiwgSS4sIFRyYW5zZm9ybWluZyBNb2RlbHMgd2l0aCBBVEwsIGluIHByb2NlZWRpbmdzIG9mIHRoZSBNb2RlbCBUcmFuc2Zvcm1hdGlvbiBpbiBQcmFjdGljZSBXb3Jrc2hvcCwgT2N0b2JlciAzcmQgMjAwNSwgcGFydCBvZiB0aGUgTW9ERUxTIDIwMDUgY29uZmVyZW5jZSZsdDsvYSZndDsmbHQ7L2xpJmd0OwoJCQkmbHQ7L3VsJmd0OwoJCQkmbHQ7L3AmZ3Q7CgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5RVlQyQVRMVk08L3Nob3J0TmFtZT4KCQk8bmFtZT5RVlQgdG8gQVRMIFZpcnR1YWwgTWFjaGluZSBDb21waWxlcjwvbmFtZT4KCQk8ZG9jTGluaz4uLi91c2VjYXNlcy9RVlQyQVRMVk0vPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPlFWVDJBVExWTS9RVlQyQVRMVk0uemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJPHA+ClRoaXMgd29yayBwcm92aWRlcyBhIFFWVCBjb21waWxlciB0aGF0IHRhcmdldHMgdGhlIEFUTCBWaXJ0dWFsIE1hY2hpbmUgKEFUTCBWTSkuClRoZSBjb2RlIGdlbmVyYXRvciBpcyB3cml0dGVuIGluIHRoZSBBQ0cgKEF0bCBDb2RlIEdlbmVyYXRpb24pIERvbWFpbi1TcGVjaWZpYyBMYW5ndWFnZSAoRFNMKSwKd2hpY2ggaXMgYSBkb21haW4tc3BlY2lmaWMgbW9kZWwgdHJhbnNmb3JtYXRpb24gbGFuZ3VhZ2UgKGl0cyBkb21haW4gaXMgQVRMIFZNIGJ5dGVjb2RlIGdlbmVyYXRpb24sCmkuZS4sIGEgZml4ZWQgdGFyZ2V0IG1ldGFtb2RlbCkuIEl0IHRha2VzIGFzIGlucHV0IGEgUVZUIG1vZGVsICh0eXBpY2FsbHkgaW4gWE1JIGZvcm1hdCkKdGhhdCBtYXkgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgYSBRVlQgZnJvbnQtZW5kIChpLmUuLCBhIHBhcnNlciBhbmQgdHlwZSBjaGVja2VyKSBsaWtlIFByb2NlZHVyYWwgUVZULCBvciBTbWFydFFWVC4gVGhlIG91dHB1dCBvZiB0aGUgY29kZSBnZW5lcmF0b3IgaXMgYSAiLmFzbSIKZmlsZSBzaW1pbGFyIHRvIHRoZSBvbmVzIGdlbmVyYXRlZCBieSB0aGUgQVRMIGNvbXBpbGVyLCBvciB0aGUgQUNHIGNvbXBpbGVyIChib3RoIGFsc28gd3JpdHRlbiBpbiBBQ0cpLgoJCQk8L3A+CgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgoJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+UjJNTDJPQ0w8L3Nob3J0TmFtZT4gCgkJPG5hbWU+UjJNTCB0byBPQ0w8L25hbWU+IAoJCTxkb2NMaW5rPlIyTUwyT0NML1JFQURNRS50eHQ8L2RvY0xpbms+IAoJCTxzb3VyY2VMaW5rPlIyTUwyT0NML1IyTUwyT0NMLnppcDwvc291cmNlTGluaz4gCgkJPGRlc2NyaXB0aW9uPgoJCQk8cCBhbGlnbj0ianVzdGlmeSI+CgkJCVRoZSBSMk1MIHRvIE9DTCB0cmFuc2Zvcm1hdGlvbiBzY2VuYXJpbyBkZXNjcmliZXMgYSB0cmFuc2Zvcm1hdGlvbiBmcm9tIFIyTUwgKFJFV0VSU0UgSTEgUnVsZSBNYXJrdXAgTGFuZ3VhZ2UpIG1ldGFtb2RlbCBpbnRvIGEgT0NMIChPYmplY3QgQ29uc3RyYWludCBMYW5ndWFnZSkgbWV0YW1vZGVsICh3aXRoIEVNT0YgCgkJCW1ldGFtb2RlbCkuIFRoZSBPYmplY3QgQ29uc3RyYWludCBMYW5ndWFnZSAoT0NMKSBpcyBhIGxhbmd1YWdlIHRoYXQgZW5hYmxlcyBvbmUgdG8gZGVzY3JpYmUgZXhwcmVzc2lvbnMgYW5kIGNvbnN0cmFpbnRzIG9uIG9iamVjdC1vcmllbnRlZCAoVU1MIGFuZCBNT0YpIG1vZGVscyBhbmQgb3RoZXIgb2JqZWN0IG1vZGVsaW5nIAoJCQlhcnRpZmFjdHMuIEFuIGV4cHJlc3Npb24gaXMgYW4gaW5kaWNhdGlvbiBvciBzcGVjaWZpY2F0aW9uIG9mIGEgdmFsdWUuIEEgY29uc3RyYWludCBpcyBhIHJlc3RyaWN0aW9uIG9uIG9uZSBvciBtb3JlIHZhbHVlcyBvZiAocGFydCBvZikgYW4gb2JqZWN0LW9yaWVudGVkIG1vZGVsIG9yIHN5c3RlbS4gUkVXRVJTRSBJMSBSdWxlIAoJCQlNYXJrdXAgTGFuZ3VhZ2UgKFIyTUwpIGlzIGEgZ2VuZXJhbCB3ZWIgcnVsZSBtYXJrdXAgbGFuZ3VhZ2UsIHRoYXQgY2FuIHJlcHJlc2VudCBkaWZmZXJlbnQgcnVsZSB0eXBlczogaW50ZWdyaXR5LCByZWFjdGlvbiwgZGVyaXZhdGlvbiBhbmQgcHJvZHVjdGlvbi4gSXQgaXMgdXNlZCBhcyBwaXZvdGFsIG1ldGFtb2RlbCB0byAKCQkJZW5hYmxlIHNoYXJpbmcgcnVsZXMgYmV0d2VlbiBkaWZmZXJlbnQgcnVsZSBsYW5ndWFnZXMsIGluIHRoaXMgY2FzZSB3aXRoIHRoZSBPQ0wuCgkJCTwvcD4KCQkJPHA+VGhpcyBzY2VuYXJpbyBpcyBhIGNvbnRyaWJ1dGlvbiBmcm9tIDxhIGhyZWY9Imh0dHA6Ly9taWxhbi5taWxhbm92aWMub3JnLyI+TWlsYW4gTWlsYW5vdmljPC9hPi48L3A+CgkJPC9kZXNjcmlwdGlvbj4gCgkJPHB1YkRhdGUgLz4gCgk8L2F0bFRyYW5zZm9ybWF0aW9uPgoJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+UjJNTDJTV1JMPC9zaG9ydE5hbWU+IAoJCTxuYW1lPlIyTUwgdG8gU1dSTDwvbmFtZT4gCgkJPGRvY0xpbms+UjJNTDJTV1JML1JFQURNRS50eHQ8L2RvY0xpbms+IAoJCTxzb3VyY2VMaW5rPlIyTUwyU1dSTC9SMk1MMlNXUkwuemlwPC9zb3VyY2VMaW5rPiAKCQk8ZGVzY3JpcHRpb24+CgkJCTxwIGFsaWduPSJqdXN0aWZ5Ij4KCQkJVGhlIFIyTUwgdG8gU1dSTCB0cmFuc2Zvcm1hdGlvbiBzY2VuYXJpbyBkZXNjcmliZXMgYSB0cmFuc2Zvcm1hdGlvbiBmcm9tIFIyTUwgKFJFV0VSU0UgSTEgTWFya3VwIExhbmd1YWdlKSBtZXRhbW9kZWwgaW50byBhIFNXUkwgKFNlbWFudGljIFdlYiBSdWxlIExhbmd1YWdlKSBtZXRhbW9kZWwgKFJETSkuIFNXUkwgaXMgYSAKCQkJd2ViIHJ1bGUgbGFuZ3VhZ2UgYmFzZWQgb24gY29tYmluYXRpb24gb2YgdGhlIE9XTCBETCBhbmQgT1dMIExpdGUgc3VibGFuZ3VhZ2VzIG9mIHRoZSBPV0wgV2ViIE9udG9sb2d5IExhbmd1YWdlLCB3aXRoIHRoZSBVbmFyeS9CaW5hcnkgRGF0YWxvZyBSdWxlTUwgc3VibGFuZ3VhZ2VzIG9mIHRoZSBSdWxlIE1hcmt1cCAKCQkJTGFuZ3VhZ2UgKFJ1bGVNTCkuIFJFV0VSU0UgSTEgUnVsZSBNYXJrdXAgTGFuZ3VhZ2UgaXMgYSBnZW5lcmFsIHdlYiBydWxlIG1hcmt1cCBsYW5ndWFnZSwgdGhhdCBjYW4gcmVwcmVzZW50IGRpZmZlcmVudCBydWxlIHR5cGVzOiBpbnRlZ3JpdHksIHJlYWN0aW9uLCBkZXJpdmF0aW9uIGFuZCBwcm9kdWN0aW9uLiBJdCAKCQkJaXMgdXNlZCBhcyBwaXZvdGFsIG1ldGFtb2RlbCB0byBlbmFibGUgc2hhcmluZyBydWxlcyBiZXR3ZWVuIGRpZmZlcmVudCBydWxlIGxhbmd1YWdlcywgaW4gdGhpcyBjYXNlIHdpdGggdGhlIFNXUkwuCgkJCTwvcD4KCQkJPHA+VGhpcyBzY2VuYXJpbyBpcyBhIGNvbnRyaWJ1dGlvbiBmcm9tIDxhIGhyZWY9Imh0dHA6Ly9taWxhbi5taWxhbm92aWMub3JnLyI+TWlsYW4gTWlsYW5vdmljPC9hPi48L3A+CgkJPC9kZXNjcmlwdGlvbj4gCgkJPHB1YkRhdGUgLz4gCgk8L2F0bFRyYW5zZm9ybWF0aW9uPgoJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+UmFpc2VTdXBwbGllckFic3RyYWN0aW9uTGV2ZWw8L3Nob3J0TmFtZT4KCQk8bmFtZT5SYWlzZVN1cHBsaWVyQWJzdHJhY3Rpb25MZXZlbDwvbmFtZT4KCQk8ZG9jTGluaz5SYWlzZVN1cHBsaWVyQWJzdHJhY3Rpb25MZXZlbC9SYWlzZVN1cHBsaWVyQWJzdHJhY3Rpb25MZXZlbC5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+UmFpc2VTdXBwbGllckFic3RyYWN0aW9uTGV2ZWwvUmFpc2VTdXBwbGllckFic3RyYWN0aW9uTGV2ZWwuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhpcyBleGFtcGxlIGlzIGV4dHJhY3QgZnJvbSA8YSBocmVmPSJodHRwOi8vd3d3LmRjcy5rY2wuYWMudWsvc3RhZmYva2NsL3RjYXQucGRmIj5DYXRhbG9ndWUgb2YgTW9kZWwgVHJhbnNmb3JtYXRpb25zIGJ5IEsuIExhbm88L2E+LgoJCQlUaGUgcHVycG9zZSBvZiB0aGlzIHRyYW5zZm9ybWF0aW9uIGlzOiAiYSBjbGFzcyBtYXkgYmVjb21lIGxhcmdlIGFuZCB1bm1hbmFnZWFibGUsIHdpdGggc2V2ZXJhbCBsb29zZWx5IGNvbm5lY3RlZCBmdW5jdGlvbmFsaXRpZXMuIEl0IHNob3VsZCBiZSBzcGxpdCBpbnRvIHNldmVyYWwgY2xhc3Nlcywgc3VjaCBhcyBhIG1hc3Rlci9jb250cm9sbGVyIGNsYXNzIGFuZCBoZWxwZXIgY2xhc3Nlcywgd2hpY2ggaGF2ZSBtb3JlIGNvaGVyZW50IGZ1bmN0aW9uYWxpdGllcyBhbmQgZGF0YS4iCgkJCVRoaXMgZXhhbXBsZSB3YXMgZXh0cmFjdGVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuc2NpZW5jZXMudW5pdi1uYW50ZXMuZnIvbGluYS9hdGwvY29udHJpYi9zaW1vbiI+RXJpYyBTaW1vbjwvYT4uCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgoJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+UmVkdW5kYW50Q2xhc3NSZW1vdmFibGU8L3Nob3J0TmFtZT4KCQk8bmFtZT5SZWR1bmRhbnRDbGFzc1JlbW92YWJsZTwvbmFtZT4KCQk8ZG9jTGluaz5SZWR1bmRhbnRDbGFzc1JlbW92YWJsZS9SZWR1bmRhbnRDbGFzc1JlbW92YWJsZS5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+UmVkdW5kYW50Q2xhc3NSZW1vdmFibGUvUmVkdW5kYW50Q2xhc3NSZW1vdmFibGUuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhpcyBleGFtcGxlIGlzIGV4dHJhY3QgZnJvbSA8YSBocmVmPSJodHRwOi8vd3d3LmRjcy5rY2wuYWMudWsvc3RhZmYva2NsL3RjYXQucGRmIj5DYXRhbG9ndWUgb2YgTW9kZWwgVHJhbnNmb3JtYXRpb25zIGJ5IEsuIExhbm88L2E+LgoJCQlUaGUgcHVycG9zZSBvZiB0aGlzIHRyYW5zZm9ybWF0aW9uIGlzOiAiZHVwbGljYXRpb24gb2YgY2xhc3NlcyB3aWxsIGxlYWQgdG8gb3Zlci1jb21wbGV4IG1vZGVscyB3aGljaCBhcmUgZGlmZmljdWx0IHRvIG1vZGlmeSBhbmQgYW5hbHlzZS4iCgkJCVRoaXMgZXhhbXBsZSB3YXMgZXh0cmFjdGVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuc2NpZW5jZXMudW5pdi1uYW50ZXMuZnIvbGluYS9hdGwvY29udHJpYi9zaW1vbiI+RXJpYyBTaW1vbjwvYT4uCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgoJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+UmVtb3ZpbmdBc3NvY2lhdGlvbkNsYXNzPC9zaG9ydE5hbWU+CgkJPG5hbWU+UmVtb3ZpbmdBc3NvY2lhdGlvbkNsYXNzPC9uYW1lPgoJCTxkb2NMaW5rPlJlbW92aW5nQXNzb2NpYXRpb25DbGFzcy9SZW1vdmluZ0Fzc29jaWF0aW9uQ2xhc3MucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPlJlbW92aW5nQXNzb2NpYXRpb25DbGFzcy9SZW1vdmluZ0Fzc29jaWF0aW9uQ2xhc3MuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhpcyBleGFtcGxlIGlzIGV4dHJhY3QgZnJvbSA8YSBocmVmPSJodHRwOi8vd3d3LmRjcy5rY2wuYWMudWsvc3RhZmYva2NsL3RjYXQucGRmIj5DYXRhbG9ndWUgb2YgTW9kZWwgVHJhbnNmb3JtYXRpb25zIGJ5IEsuIExhbm88L2E+LgoJCQlUaGUgcHVycG9zZSBvZiB0aGlzIHRyYW5zZm9ybWF0aW9uIGlzOiAiYXNzb2NpYXRpb24gY2xhc3NlcyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgZGlyZWN0bHkgaW4gbWFueSBvYmplY3Qtb3JpZW50ZWQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzLiIKCQkJVGhpcyBleGFtcGxlIHdhcyBleHRyYWN0ZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5zY2llbmNlcy51bml2LW5hbnRlcy5mci9saW5hL2F0bC9jb250cmliL3NpbW9uIj5FcmljIFNpbW9uPC9hPi4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+Cgk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5SZW1vdmluZ01hbnlNYW55QXNzb2NpYXRpb248L3Nob3J0TmFtZT4KCQk8bmFtZT5SZW1vdmluZ01hbnlNYW55QXNzb2NpYXRpb248L25hbWU+CgkJPGRvY0xpbms+UmVtb3ZpbmdNYW55TWFueUFzc29jaWF0aW9uL1JlbW92aW5nTWFueU1hbnlBc3NvY2lhdGlvbi5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+UmVtb3ZpbmdNYW55TWFueUFzc29jaWF0aW9uL1JlbW92aW5nTWFueU1hbnlBc3NvY2lhdGlvbi56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQlUaGlzIGV4YW1wbGUgaXMgZXh0cmFjdCBmcm9tIDxhIGhyZWY9Imh0dHA6Ly93d3cuZGNzLmtjbC5hYy51ay9zdGFmZi9rY2wvdGNhdC5wZGYiPkNhdGFsb2d1ZSBvZiBNb2RlbCBUcmFuc2Zvcm1hdGlvbnMgYnkgSy4gTGFubzwvYT4uCgkJCVRoZSBwdXJwb3NlIG9mIHRoaXMgdHJhbnNmb3JtYXRpb24gaXMgdG8gc3Vic3RpdHV0ZSBhIG1hbnktbWFueSBhc3NvY2lhdGlvbiBieSBhbiBpbnRyb2R1Y3Rpb24gb2YgY2xhc3Mgd2l0aCB0d28gbWFueS1vbmUgYXNzb2NpYXRpb25zLgoJCQlUaGlzIGV4YW1wbGUgd2FzIGV4dHJhY3RlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnNjaWVuY2VzLnVuaXYtbmFudGVzLmZyL2xpbmEvYXRsL2NvbnRyaWIvc2ltb24iPkVyaWMgU2ltb248L2E+LgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPlJlcGxhY2VBc3NvY2lhdGlvbkJ5Rm9yZWlnbktleTwvc2hvcnROYW1lPgoJCTxuYW1lPlJlcGxhY2VBc3NvY2lhdGlvbkJ5Rm9yZWlnbktleTwvbmFtZT4KCQk8ZG9jTGluaz5SZXBsYWNlQXNzb2NpYXRpb25CeUZvcmVpZ25LZXkvUmVwbGFjZUFzc29jaWF0aW9uQnlGb3JlaWduS2V5LnBkZjwvZG9jTGluaz4KCQk8c291cmNlTGluaz5SZXBsYWNlQXNzb2NpYXRpb25CeUZvcmVpZ25LZXkvUmVwbGFjZUFzc29jaWF0aW9uQnlGb3JlaWduS2V5LnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoaXMgZXhhbXBsZSBpcyBleHRyYWN0IGZyb20gPGEgaHJlZj0iaHR0cDovL3d3dy5kY3Mua2NsLmFjLnVrL3N0YWZmL2tjbC90Y2F0LnBkZiI+Q2F0YWxvZ3VlIG9mIE1vZGVsIFRyYW5zZm9ybWF0aW9ucyBieSBLLiBMYW5vPC9hPi4KCQkJVGhpcyB0cmFuc2Zvcm1hdGlvbiBhcHBsaWVzIHRvIGFueSBleHBsaWNpdCBtYW55LW9uZSBhc3NvY2lhdGlvbiBiZXR3ZWVuIHBlcnNpc3RlbnQgY2xhc3Nlcy4gSXQgYXNzdW1lcyB0aGF0IHByaW1hcnkga2V5cyBhbHJlYWR5IGV4aXN0IGZvciB0aGUgY2xhc3NlcyBsaW5rZWQgYnkgdGhlIGFzc29jaWF0aW9uLiBJdCByZXBsYWNlcyB0aGUgYXNzb2NpYXRpb24gYnkgZW1iZWRkaW5nIHZhbHVlcyBvZiB0aGUga2V5IG9mIHRoZSBlbnRpdHkgYXQgdGhlIG9uZSBlbmQgb2YgdGhlIGFzc29jaWF0aW9uIGludG8gdGhlIGVudGl0eSBhdCB0aGUgbWFueSBlbmRzLgoJCQlUaGlzIGV4YW1wbGUgd2FzIGV4dHJhY3RlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnNjaWVuY2VzLnVuaXYtbmFudGVzLmZyL2xpbmEvYXRsL2NvbnRyaWIvYmF1ZHJ5Ij5KdWxpZW4gQmF1ZHJ5PC9hPi4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+Cgk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5SZXBsYWNlSW5oZXJpdGFuY2VCeUFzc29jaWF0aW9uPC9zaG9ydE5hbWU+CgkJPG5hbWU+UmVwbGFjZUluaGVyaXRhbmNlQnlBc3NvY2lhdGlvbjwvbmFtZT4KCQk8ZG9jTGluaz5SZXBsYWNlSW5oZXJpdGFuY2VCeUFzc29jaWF0aW9uL1JlcGxhY2VJbmhlcml0YW5jZUJ5QXNzb2NpYXRpb24ucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPlJlcGxhY2VJbmhlcml0YW5jZUJ5QXNzb2NpYXRpb24vUmVwbGFjZUluaGVyaXRhbmNlQnlBc3NvY2lhdGlvbi56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQlUaGlzIGV4YW1wbGUgaXMgZXh0cmFjdCBmcm9tIDxhIGhyZWY9Imh0dHA6Ly93d3cuZGNzLmtjbC5hYy51ay9zdGFmZi9rY2wvdGNhdC5wZGYiPkNhdGFsb2d1ZSBvZiBNb2RlbCBUcmFuc2Zvcm1hdGlvbnMgYnkgSy4gTGFubzwvYT4uCgkJCVRoaXMgdHJhbnNmb3JtYXRpb24gcmVwbGFjZXMgYW4gaW5oZXJpdGFuY2UgcmVsYXRpb25zaGlwIGJldHdlZW4gdHdvIGNsYXNzZXMgYnkgYW4gYXNzb2NpYXRpb24gYmV0d2VlbiB0aGUgY2xhc3Nlcy4KCQkJVGhpcyBleGFtcGxlIHdhcyBleHRyYWN0ZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5zY2llbmNlcy51bml2LW5hbnRlcy5mci9saW5hL2F0bC9jb250cmliL2JhdWRyeSI+SnVsaWVuIEJhdWRyeTwvYT4uCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgoJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+UlNTMkFUT008L3Nob3J0TmFtZT4KCQk8bmFtZT5SU1MgdG8gQVRPTTwvbmFtZT4KCQk8ZG9jTGluaz5SU1MyQVRPTS9SU1MyQVRPTS5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+UlNTMkFUT00vUlNTMkFUT00uemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJUlNTIGlzIGEgZm9ybWF0IGZvciBzeW5kaWNhdGluZyBuZXdzIGFuZCB0aGUgY29udGVudCBvZiBuZXdzLWxpa2Ugc2l0ZXMuPGJyIC8+CgkJCUF0b20gaXMgYW4gWE1MLWJhc2VkIGZpbGUgZm9ybWF0IGludGVuZGVkIHRvIGFsbG93IGxpc3RzIG9mIGluZm9ybWF0aW9uLCBrbm93biBhcyAiZmVlZHMiLCB0byBiZSBzeW5jaHJvbmlzZWQgYmV0d2VlbiBwdWJsaXNoZXJzIGFuZCBjb25zdW1lcnMuPGJyIC8+CgkJCVJTUyB0byBBVE9NIHdhcyBwcm9kdWNlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnNjaWVuY2VzLnVuaXYtbmFudGVzLmZyL2xpbmEvYXRsL2NvbnRyaWIvc3JvdXIiPllvdXNzZWYgU3JvdXI8L2E+LgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPlNpZGVFZmZlY3Q8L3Nob3J0TmFtZT4KCQk8bmFtZT5TaWRlIEVmZmVjdDwvbmFtZT4KCQk8ZG9jTGluaz5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2F0bC9kb2N1bWVudGF0aW9uL2Jhc2ljRXhhbXBsZXNfUGF0dGVybnMvYXJ0aWNsZS5waHA/ZmlsZT1TaWRlRWZmZWN0L2luZGV4Lmh0bWw8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+U2lkZUVmZmVjdC9TaWRlRWZmZWN0LnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoaXMgY2FzZSBkZWFscyB3aXRoIHRoZSB3YXkgdG8gaGFuZGxlIHNpZGUgZWZmZWN0cyBpbmR1Y2VkIHdoaWxlIHRyYW5zZm9ybWluZyBhbiBlbGVtZW50LiBXZSB3aWxsIHN0YXJ0IGZyb20gYW4gaW1wZXJhdGl2ZSBhbGdvcml0aG0gdG8gY3JlYXRlIGEgdHJhbnNmb3JtYXRpb24gYmV0d2VlbiB0d28gCgkJCW1ldGFtb2RlbHMuCVRoaXMgYWxnb3JpdGhtIHdpbGwgaW50cm9kdWNlIGEgc2lkZSBlZmZlY3QgcHJvYmxlbS4gQWZ0ZXIgc2V2ZXJhbCBpdGVyYXRpb24gYSBzb2x1dGlvbiB3aWxsIGJlIHByb3ZpZGVkIGZvbGxvd2luZyBBVEwgcGhpbG9zb3BoeS4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPlNpbXBsZUNsYXNzMlNpbXBsZVJEQk1TPC9zaG9ydE5hbWU+CgkJPG5hbWU+U2ltcGxlIENsYXNzIHRvIFNpbXBsZSBSREJNUzwvbmFtZT4KCQk8ZG9jTGluaz5TaW1wbGVDbGFzczJTaW1wbGVSREJNUy9SRUFETUUudHh0PC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPlNpbXBsZUNsYXNzMlNpbXBsZVJEQk1TL1NpbXBsZUNsYXNzMlNpbXBsZVJEQk1TLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCSZsdDtwJmd0OwoJCQlUaGlzIHRyYW5zZm9ybWF0aW9uIGltcGxlbWVudHMgdGhlIGNhc2Ugc3R1ZHkgdXNlZCBpbiB0aGUgV29ya3Nob3AgTW9kZWwgVHJhbnNmb3JtYXRpb25zCgkJCWluIFByYWN0aWNlIGNvbGxvY2F0ZWQgd2l0aCB0aGUgTW9ERUxTIENvbmZlcmVuY2UsIE9jdG9iZXIsIDIwMDUuIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUKCQkJY2FzZSBzdHVkeSBjYW4gYmUgZm91bmQgYXQgdGhlIHdvcmtzaG9wIHdlYiBzaXRlOiBodHRwOi8vc29zeW0uZGNzLmtjbC5hYy51ay9ldmVudHMvbXRpcDA1Ly4KCQkJJmx0Oy9wJmd0OwoJCQkmbHQ7cCZndDsKCQkJVHdvIHZlcnNpb25zIG9mIHRoZSBTaW1wbGVDbGFzczJTaW1wbGVSREJNUyB0cmFuc2Zvcm1hdGlvbiBoYXZlIGJlZW4gZGV2ZWxvcGVkOgoJCQkmbHQ7dWwmZ3Q7CgkJCQkmbHQ7bGkmZ3Q7VGhlIGZpcnN0IG9uZSwgd2hpY2ggaXMgcHJlc2VudGVkIGluIFsxXSwgdXNlcyBzb21lIEFUTCBmZWF0dXJlcyB0aGF0IGFyZSBub3QgaW1wbGVtZW50ZWQKCQkJCWluIHRoZSBlbmdpbmUgeWV0LiBJdHMgcHVycG9zZSBpcyB0byBpbGx1c3RyYXRlIHRoZSBwbGFubmVkIGZlYXR1cmVzIG9mIHRoZSBsYW5ndWFnZS4KCQkJCSZsdDsvbGkmZ3Q7CgkJCQkmbHQ7bGkmZ3Q7VGhlIHNlY29uZCBvbmUsIGNvbWluZyB3aXRoIHRoaXMgUkVBRE1FLnR4dCwgaXMgYW5vdGhlciB2ZXJzaW9uIHRoYXQgd29ya3Mgd2l0aAoJCQkJdGhlIEFUTCBlbmdpbmUgYXZhaWxhYmxlIG9uIGh0dHA6Ly9lY2xpcHNlLm9yZy9nbXQgYXMgb2YgTm92ZW1iZXIgMjAwNS4gVGhpcyBzZWNvbmQgdmVyc2lvbgoJCQkJdXNlcyByb3VnaGx5IHRoZSBzYW1lIGhlbHBlcnMgYXMgdGhlIGZpcnN0IHZlcnNpb24uCgkJCQkmbHQ7L2xpJmd0OwoJCQkmbHQ7L3VsJmd0OwoJCQkmbHQ7L3AmZ3Q7CgkJCSZsdDtwJmd0OwoJCQlSZWZlcmVuY2VzOgoJCQkmbHQ7dWwmZ3Q7CgkJCQkmbHQ7bGkmZ3Q7WzFdICZsdDthIGhyZWY9Imh0dHA6Ly9zb3N5bS5kY3Mua2NsLmFjLnVrL2V2ZW50cy9tdGlwMDUvc3VibWlzc2lvbnMvam91YXVsdF9rdXJ0ZXZfX3RyYW5zZm9ybWluZ19tb2RlbHNfd2l0aF9hdGwucGRmIj5Kb3VhdWx0LCBGLiwgYW5kIEt1cnRldiwgSS4sIFRyYW5zZm9ybWluZyBNb2RlbHMgd2l0aCBBVEwsIGluIHByb2NlZWRpbmdzIG9mIE1vZGVsIFRyYW5zZm9ybWF0aW9ucyBpbiBQcmFjdGljZQoJCQkJV29ya3Nob3AsIE9jdG9iZXIgM3JkIDIwMDUsIHBhcnQgb2YgdGhlIE1vREVMUyAyMDA1IENvbmZlcmVuY2UKCQkJCSZsdDsvbGkmZ3Q7CgkJCSZsdDsvdWwmZ3Q7CgkJCSZsdDsvcCZndDsKCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+Cgk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5TaW1wbGVQREwyVGluYTwvc2hvcnROYW1lPgoJCTxuYW1lPlNpbXBsZVBETDJUaW5hOiBtb2RlbHMgdmVyaWZpY2F0aW9uIHRocm91Z2ggUGV0cmkgbmV0czwvbmFtZT4KCQk8ZG9jTGluaz5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2F0bC91c2VjYXNlcy9TaW1wbGVQREwyVGluYS88L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+aHR0cDovL2NvbWJlbWFsZS5wZXJzby5lbnNlZWlodC5mci9hdGx6b28vU2ltcGxlUERMMlRpbmFab28uemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCSAgICAJVGhlc2UgdHJhbnNmb3JtYXRpb25zIGFyZSBwYXJ0IG9mIGEgCgkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuY29tYmVtYWxlLmZyL3dpa2kvZG9rdS5waHA/aWQ9cHJpdmF0ZTplbnNlaWduZW1lbnQ6bWV0YW1vZGVsaW5nIj5Db3Vyc2U8L2E+CgkJCWFib3V0IG1ldGFtb2RlbGluZywgbW9kZWxzIHRyYW5zZm9ybWF0aW9uIGFuZCB2ZXJpZmljYXRpb24uIAoJCQlUaGVzZSB0cmFuc2Zvcm1hdGlvbnMgaW50cm9kdWNlIGEgcHJvcGVydHktZHJpdmVuIGFwcHJvYWNoIHRvIHZhbGlkYXRlIG1vZGVscyB0aHJvdWdoIGEgdHJhbnNsYXRpb25hbCBzZW1hbnRpY3MgdG8gUGV0cmkgbmV0cy4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjMwLzAxLzA3PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KICAJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+U29mdHdhcmVRdWFsaXR5Q29udHJvbDJCdWd6aWxsYTwvc2hvcnROYW1lPgoJCTxuYW1lPlNvZnR3YXJlIFF1YWxpdHkgQ29udHJvbCB0byBCdWd6aWxsYTwvbmFtZT4KCQk8ZG9jTGluaz5Tb2Z0d2FyZVF1YWxpdHlDb250cm9sMkJ1Z3ppbGxhL0V4YW1wbGVTb2Z0d2FyZVF1YWxpdHlDb250cm9sMkJ1Z3ppbGxhW3YwMC4wMV0ucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPlNvZnR3YXJlUXVhbGl0eUNvbnRyb2wyQnVnemlsbGEvU29mdHdhcmVRdWFsaXR5Q29udHJvbDJCdWd6aWxsYS56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQlUaGUgU29mdHdhcmUgUXVhbGl0eSBDb250cm9sIHRvIEJ1Z3ppbGxhIGV4YW1wbGUgZGVzY3JpYmVzIGEgdHJhbnNmb3JtYXRpb24gZnJvbSBhIFNvZnR3YXJlUXVhbGl0eUNvbnRyb2wgbW9kZWwgdG8gYSBzaW1wbGUgQnVnemlsbGEgWE1MIGZpbGUuCgkJCUJ1Z3ppbGxhIGlzIGEgZnJlZSAiRGVmZWN0IFRyYWNraW5nIFN5c3RlbSIgb3IgIkJ1Zy1UcmFja2luZyBTeXN0ZW0iLCBvcmlnaW5hbGx5IGRldmVsb3BlZCBieSB0aGUgTW96aWxsYSBGb3VuZGF0aW9uLCB3aGljaCBhbGxvd3MgaW5kaXZpZHVhbCBvciBncm91cHMgb2YgZGV2ZWxvcGVycyB0byBlZmZlY3RpdmVseSBrZWVwIHRyYWNrIG9mIG91dHN0YW5kaW5nIGJ1Z3MgaW4gdGhlaXIgcHJvZHVjdC4KCQkJVGhlIHRyYW5zZm9ybWF0aW9uIGlzIGJhc2VkIG9uIGEgU29mdHdhcmUgUXVhbGl0eSBDb250cm9sIG1ldGFtb2RlbCB3aGljaCBkZXNjcmliZXMgYSBzaW1wbGUgc3RydWN0dXJlIHRvIG1hbmFnZSBzb2Z0d2FyZSBxdWFsaXR5IGNvbnRyb2xzIChhbmQgbW9yZSBlc3BlY2lhbGx5IGJ1Zy10cmFja2luZykuCgkJCVRoZSBpbnB1dCBvZiB0aGUgdHJhbnNmb3JtYXRpb24gaXMgYSBtb2RlbCB3aGljaCBjb25mb3JtcyB0byB0aGUgU29mdHdhcmVRdWFsaXR5Q29udHJvbCBtZXRhbW9kZWwuCgkJCVRoZSBvdXRwdXQgaXMgYW4gWE1MIGZpbGUgd2hvc2UgY29udGVudCBjb25mb3JtcyB0byBhIHNpbXBsZSBCdWd6aWxsYSBEVEQuCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5Tb2Z0d2FyZVF1YWxpdHlDb250cm9sMk1hbnRpc0JUPC9zaG9ydE5hbWU+CgkJPG5hbWU+U29mdHdhcmUgUXVhbGl0eSBDb250cm9sIHRvIE1hbnRpcyBCdWcgVHJhY2tlcjwvbmFtZT4KCQk8ZG9jTGluaz5Tb2Z0d2FyZVF1YWxpdHlDb250cm9sMk1hbnRpc0JUL0V4YW1wbGVTb2Z0d2FyZVF1YWxpdHlDb250cm9sMk1hbnRpc0J1Z1RyYWNrZXJbdjAwLjAxXS5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+U29mdHdhcmVRdWFsaXR5Q29udHJvbDJNYW50aXNCVC9Tb2Z0d2FyZVF1YWxpdHlDb250cm9sMk1hbnRpc0J1Z1RyYWNrZXIuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhlIFNvZnR3YXJlIFF1YWxpdHkgQ29udHJvbCB0byBNYW50aXMgQnVnIFRyYWNrZXIgZXhhbXBsZSBkZXNjcmliZXMgYSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGEgU29mdHdhcmVRdWFsaXR5Q29udHJvbCBtb2RlbCB0byBhIHNpbXBsZSBNYW50aXMgWE1MIGZpbGUuCgkJCU1hbnRpcyBCdWcgVHJhY2tlciBpcyBhIGZyZWUgd2ViLWJhc2VkIGJ1Zy10cmFja2luZyBzeXN0ZW0gd3JpdHRlbiBpbiBQSFAgdGhhdCB1c2VzIGEgTXlTUUwgZGF0YWJhc2UuCgkJCVRoZSB0cmFuc2Zvcm1hdGlvbiBpcyBiYXNlZCBvbiBhIFNvZnR3YXJlIFF1YWxpdHkgQ29udHJvbCBtZXRhbW9kZWwgd2hpY2ggZGVzY3JpYmVzIGEgc2ltcGxlIHN0cnVjdHVyZSB0byBtYW5hZ2Ugc29mdHdhcmUgcXVhbGl0eSBjb250cm9scyAoYW5kIG1vcmUgZXNwZWNpYWxseSBidWctdHJhY2tpbmcpLgoJCQlUaGUgaW5wdXQgb2YgdGhlIHRyYW5zZm9ybWF0aW9uIGlzIGEgbW9kZWwgd2hpY2ggY29uZm9ybXMgdG8gdGhlIFNvZnR3YXJlUXVhbGl0eUNvbnRyb2wgbWV0YW1vZGVsLgoJCQlUaGUgb3V0cHV0IGlzIGFuIFhNTCBmaWxlIHdob3NlIGNvbnRlbnQgY29uZm9ybXMgdG8gYSBNYW50aXMgWE1MIHNjaGVtYS4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPlNTTDJTREw8L3Nob3J0TmFtZT4KCQk8bmFtZT5TU0wgdG8gU0RMPC9uYW1lPgoJCTxkb2NMaW5rPlNTTDJTREwvc3NsMnNkbC5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+U1NMMlNETC9TU0wyU0RMLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoZSBTU0wgdG8gU0RMIGV4YW1wbGUgZGVzY3JpYmVzIGEgdHJhbnNmb3JtYXRpb24gd2hpY2ggZW5hYmxlcyB0byBjcmVhdGUgYSBTREwgbW9kZWwgZnJvbSBhIFNTTCBtb2RlbCwKCQkJdXNpbmcgYW4gYXV4aWxpYXJ5IE9ETSBtb2RlbCB0aGF0IGNvbnRhaW5zIHRoZSBvbnRvbG9neSBlbGVtZW50cyByZWZlcnJlZCBpbiB0aGUgU1NMIG1vZGVsLgoJCQlTREwgaXMgYSBsYW5ndWFnZSBmb3IgZGVzY3JpYmluZyBjb25jcmV0ZSBzZXJ2aWNlIGludGVyZmFjZXMsIGZyb20gYSB0ZWNobmljYWwgcG9pbnQgb2Ygdmlldywgd2hpbGUKCQkJU1NMIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBzZW1hbnRpYyBkZXNjcmlwdGlvbnMgb2Ygc2VydmljZXMuIFNTTCBtb2RlbHMgY2FuIHJlZmVyIHRvIHRlcm1zIGRlZmluZWQKCQkJaW4gYW4gZXh0ZXJuYWwgb250b2xvZ3ksIHRoZXJlZm9yZSBhbm90aGVyIG1ldGFtb2RlbCwgT0RNLCBpcyB1c2VkIGZvciBxdWVyeWluZyBvbnRvbG9naWVzLgoJCQk8YnIgLz48YnIgLz4KCQkJVGhpcyB0cmFuc2Zvcm1hdGlvbiBhbmQgYXNzb2NpYXRlZCBtZXRhbW9kZWxzIGlzIGEgY29udHJpYnV0aW9uIGZyb20gCgkJCUlyaW5hIER1bWl0cmFzY3UgYW5kIE5hdGFsaWEgUmViZWphICwgPGEgaHJlZj0iaHR0cDovL3d3dy5zb2x1dGEubmV0Ij5Tb2x1dGEuTmV0PC9hPi4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+Cgk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5TV1JMMlIyTUw8L3Nob3J0TmFtZT4gCgkJPG5hbWU+U1dSTCB0byBSMk1MPC9uYW1lPiAKCQk8ZG9jTGluaz5TV1JMMlIyTUwvUkVBRE1FLnR4dDwvZG9jTGluaz4gCgkJPHNvdXJjZUxpbms+U1dSTDJSMk1ML1NXUkwyUjJNTC56aXA8L3NvdXJjZUxpbms+IAoJCTxkZXNjcmlwdGlvbj4KCQkJPHAgYWxpZ249Imp1c3RpZnkiPgoJCQlUaGUgU1dSTCB0byBSMk1MIHRyYW5zZm9ybWF0aW9uIHNjZW5hcmlvIGRlc2NyaWJlcyBhIHRyYW5zZm9ybWF0aW9uIGZyb20gU1dSTCAoU2VtYW50aWMgV2ViIFJ1bGUgTGFuZ3VhZ2UpIG1ldGFtb2RlbCAoUkRNKSBpbnRvIGEgUjJNTCAoUkVXRVJTRSBJMSBNYXJrdXAgTGFuZ3VhZ2UpIG1ldGFtb2RlbC4gU1dSTCBpcyAKCQkJYSB3ZWIgcnVsZSBsYW5ndWFnZSBiYXNlZCBvbiBjb21iaW5hdGlvbiBvZiB0aGUgT1dMIERMIGFuZCBPV0wgTGl0ZSBzdWJsYW5ndWFnZXMgb2YgdGhlIE9XTCBXZWIgT250b2xvZ3kgTGFuZ3VhZ2UsIHdpdGggdGhlIFVuYXJ5L0JpbmFyeSBEYXRhbG9nIFJ1bGVNTCBzdWJsYW5ndWFnZXMgb2YgdGhlIFJ1bGUgTWFya3VwIAoJCQlMYW5ndWFnZSAoUnVsZU1MKS4gUkVXRVJTRSBJMSBSdWxlIE1hcmt1cCBMYW5ndWFnZSBpcyBhIGdlbmVyYWwgd2ViIHJ1bGUgbWFya3VwIGxhbmd1YWdlLCB0aGF0IGNhbiByZXByZXNlbnQgZGlmZmVyZW50IHJ1bGUgdHlwZXM6IGludGVncml0eSwgcmVhY3Rpb24sIGRlcml2YXRpb24gYW5kIHByb2R1Y3Rpb24uIEl0IGlzIAoJCQl1c2VkIGFzIHBpdm90YWwgbWV0YW1vZGVsIHRvIGVuYWJsZSBzaGFyaW5nIHJ1bGVzIGJldHdlZW4gZGlmZmVyZW50IHJ1bGUgbGFuZ3VhZ2VzLCBpbiB0aGlzIGNhc2Ugd2l0aCB0aGUgU1dSTC4KCQkJPC9wPgoJCQk8cD5UaGlzIHNjZW5hcmlvIGlzIGEgY29udHJpYnV0aW9uIGZyb20gPGEgaHJlZj0iaHR0cDovL21pbGFuLm1pbGFub3ZpYy5vcmcvIj5NaWxhbiBNaWxhbm92aWM8L2E+LjwvcD4KCQk8L2Rlc2NyaXB0aW9uPiAKCQk8cHViRGF0ZSAvPiAKCTwvYXRsVHJhbnNmb3JtYXRpb24+Cgk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5TeW50YXgyU0JWUjJVTUw8L3Nob3J0TmFtZT4KCQk8bmFtZT5TeW50YXggdG8gU0JWUiB0byBVTUw8L25hbWU+CgkJPGRvY0xpbms+Li4vdXNlY2FzZXMvU3ludGF4MlNCVlIyVU1MLzwvZG9jTGluaz4KCQk8c291cmNlTGluaz5TeW50YXgyU0JWUjJVTUwvU3ludGF4MlNCVlIyVU1MLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCTxwIGFsaWduPSJqdXN0aWZ5Ij4KCQkJVGhlc2UgdHJhbnNmb3JtYXRpb25zIGFyZSB1c2VkIHRvIHByb2R1Y2UgYSBVTUwgY2xhc3MgZGlhZ3JhbSBmcm9tIGNvbnRyb2xsZWQgRW5nbGlzaCB0ZXh0IHVzaW5nIFNCVlIgYW5kIFN5bnRheCBhcyBpbnRlcm1lZGlhdGUgbGF5ZXJzLgoJCQlTeW50YXggaXMgYW4gb3JpZ2luYWwgbWV0YW1vZGVsIGFsbG93aW5nIHRvIGRlc2NyaWJlIHN5bnRhY3RpY2FsLCBncmFtbWF0aWNhbCBhbmQgc2VtYW50aWNhbCBwcm9wZXJ0aWVzIG9mIGFuIGVuZ2xpc2ggdGV4dC4KCQkJU0JWUiBpcyBhIG1ldGFtb2RlbCwgb2J0YWluZWQgZnJvbSB0aGUgT01HJ3Mgc3BlY2lmaWNhdGlvbiwgZm9yIGRlc2NyaWJpbmcgc2VtYW50aWNzIG9mIGJ1c2luZXNzIHZvY2FidWxhcmllcyBhbmQgZmFjdHMuCgkJCVVNTCBjbGFzcyBkaWFncmFtcyBhbGxvdyB0byBleHByZXNzIGNvbmNlcHRzLCByZWxhdGlvbnMgYW5kIGluc3RhbmNlcyAoYSBjb25jZXB0dWFsIHNjaGVtYSkuCgkJCVRoZSBhaW0gb2YgdGhpcyBzY2VuYXJpbyBpcyB0byBhbGxvdyB0aGUgYXV0b21hdGljIHByb2R1Y3Rpb24gb2YgYSBTQlZSIG1vZGVsIGZyb20gYSBzeW50YWN0aWNhbCBhbmFseXNpcyBvZiBhbiBlbmdsaXNoIHRleHQsIHRoZW4gcHJvZHVjZSBhIGNvcnJlc3BvbmRpbmcgVU1MIG1vZGVsLgoJCQlUaGUgbGluZ3Vpc3RpYyBhbmFseXNpcyBpdHNlbGYsIHdoaWNoIG1heSBhdXRvbWF0aWNhbGx5IHByb2R1Y2UgYSBTeW50YXggbW9kZWwgZnJvbSBwbGFpbiB0ZXh0LCBpcyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIHNjZW5hcmlvLgoJCQk8L3A+CgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZS8+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5UYWJsZTJNU09mZmljZUV4Y2VsPC9zaG9ydE5hbWU+CgkJPG5hbWU+VGFibGUgdG8gTWljcm9zb2Z0IE9mZmljZSBFeGNlbDwvbmFtZT4KCQk8ZG9jTGluaz5UYWJsZTJNU09mZmljZUV4Y2VsL0V4YW1wbGVUYWJsZTJNaWNyb3NvZnRPZmZpY2VFeGNlbFt2MDAuMDFdLnBkZjwvZG9jTGluaz4KCQk8c291cmNlTGluaz5UYWJsZTJNU09mZmljZUV4Y2VsL1RhYmxlMk1pY3Jvc29mdE9mZmljZUV4Y2VsLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoZSBUYWJsZSB0byBNaWNyb3NvZnQgT2ZmaWNlIEV4Y2VsIGV4YW1wbGUgZGVzY3JpYmVzIGEgdHJhbnNmb3JtYXRpb24gZnJvbSBhIHZlcnkgYmFzaWMgdGFibGUgcmVwcmVzZW50YXRpb24gKHNpbWlsYXIgdG8gdGhlIG9uZSBwcm9kdWNlZCBieSB0aGUgJmx0O2EgaHJlZj0iI0phdmEyVGFibGUiPkphdmFTb3VyY2UgdG8gVGFibGUmbHQ7L2EmZ3Q7IHRyYW5zZm9ybWF0aW9uKSB0byBhbiBFeGNlbCB3b3JrYm9vayB3aXRoIG9uZSBzaW5nbGUgd29ya3NoZWV0IGNvbnRhaW5pbmcgdGhpcyB0YWJsZS4KCQkJVGhlIHRyYW5zZm9ybWF0aW9uIGlzIGJhc2VkIG9uIGEgc2ltcGxpZmllZCBzdWJzZXQgb2YgdGhlIFNwcmVhZHNoZWV0TUwgWE1MIGRpYWxlY3Qgd2hpY2ggaXMgdGhlIG9uZSB1c2VkIGJ5IE1pY3Jvc29mdCB0byBpbXBvcnQvZXhwb3J0IEV4Y2VsIHdvcmtib29rcyBkYXRhIGluIFhNTCBzaW5jZSB0aGUgMjAwMyB2ZXJzaW9uIG9mIE1pY3Jvc29mdCBPZmZpY2UuCgkJCVRoaXMgdHJhbnNmb3JtYXRpb24gcHJvZHVjZXMgYW4gWE1MIGZpbGUgd2hpY2ggY2FuIGJlIGRpcmVjdGx5IG9wZW4gYnkgRXhjZWwgMjAwMy4KCQkJVGhpcyBmaWxlIGRlc2NyaWJlcyBhIHdvcmtib29rIHdpdGggdGhlIHNhbWUgY29udGVudCAoaS5lLiB0aGUgc2FtZSB0YWJsZSkgdGhhdCB0aGUgb25lIG9mIHRoZSBpbnB1dCBUYWJsZSBtb2RlbC4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+Cgk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5UYWJsZTJTVkdCYXJDaGFydDwvc2hvcnROYW1lPgoJCTxuYW1lPlRhYmxlMlNWR0JhckNoYXJ0PC9uYW1lPgoJCTxkb2NMaW5rPlRhYmxlMlNWR0JhckNoYXJ0L0V4YW1wbGVUYWJsZTJTVkdCYXJDaGFydFt2MDAuMDVdLnBkZjwvZG9jTGluaz4KCQk8c291cmNlTGluaz5UYWJsZTJTVkdCYXJDaGFydC9UYWJsZTJTVkdCYXJDaGFydC56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQlUaGUgVGFibGUgdG8gU1ZHQmFyQ2hhcnQgZXhhbXBsZSBkZXNjcmliZXMgYSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGEgVGFibGUgbW9kZWwgdG8gYSBTVkcKCQkJZmlsZSBjb250YWluaW5nIHNldmVyYWwgYmFyIGNoYXJ0IHJlcHJlc2VudGF0aW9ucy48YnIgLz4KCQkJVGhpcyBzY2VuYXJpbyBpcyBjb250cmlidXRlZCBieSBFcmljIFbpcGEgKDxhIGhyZWY9Imh0dHA6Ly93d3cuc29kaXVzLmNvbSI+U09ESVVTPC9hPikuCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgoJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+VGFibGUyU1ZHUGllQ2hhcnQ8L3Nob3J0TmFtZT4KCQk8bmFtZT5UYWJsZTJTVkdQaWVDaGFydDwvbmFtZT4KCQk8ZG9jTGluaz5UYWJsZTJTVkdQaWVDaGFydC9FeGFtcGxlVGFibGUyU1ZHUGllQ2hhcnRbdjAwLjA1XS5wZGY8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+VGFibGUyU1ZHUGllQ2hhcnQvVGFibGUyU1ZHUGllQ2hhcnQuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhlIFRhYmxlIHRvIFNWR1BpZUNoYXJ0IGV4YW1wbGUgZGVzY3JpYmVzIGEgdHJhbnNmb3JtYXRpb24gZnJvbSBhIFRhYmxlIG1vZGVsIHRvIGEgU1ZHCgkJCWZpbGUgY29udGFpbmluZyBzZXZlcmFsIHBpZSBjaGFydCByZXByZXNlbnRhdGlvbnMuPGJyIC8+CgkJCVRoaXMgc2NlbmFyaW8gaXMgY29udHJpYnV0ZWQgYnkgRXJpYyBW6XBhICg8YSBocmVmPSJodHRwOi8vd3d3LnNvZGl1cy5jb20iPlNPRElVUzwvYT4pLgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPlRhYmxlMlRhYnVsYXJIVE1MPC9zaG9ydE5hbWU+CgkJPG5hbWU+VGFibGUyVGFidWxhckhUTUw8L25hbWU+CgkJPGRvY0xpbms+VGFibGUyVGFidWxhckhUTUwvRXhhbXBsZVRhYmxlMlRhYnVsYXJIVE1MW3YwMC4wNV0ucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPlRhYmxlMlRhYnVsYXJIVE1ML1RhYmxlMlRhYnVsYXJIVE1MLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoZSBUYWJsZSB0byBUYWJ1bGFySFRNTCBleGFtcGxlIGRlc2NyaWJlcyBhIHRyYW5zZm9ybWF0aW9uIGZyb20gYSBUYWJsZSBtb2RlbCB0byBhbgoJCQlIVE1MIGZpbGUgY29udGFpbmluZyBIVE1MIHRhYmxlcy48YnIgLz4KCQkJVGhpcyBzY2VuYXJpbyBpcyBjb250cmlidXRlZCBieSBFcmljIFbpcGEgKDxhIGhyZWY9Imh0dHA6Ly93d3cuc29kaXVzLmNvbSI+U09ESVVTPC9hPikuCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgoJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+VHJlZTJMaXN0PC9zaG9ydE5hbWU+CgkJPG5hbWU+VHJlZSB0byBMaXN0PC9uYW1lPgoJCTxkb2NMaW5rPi4uL2Jhc2ljRXhhbXBsZXNfUGF0dGVybnMvVHJlZTJMaXN0LzwvZG9jTGluaz4KCQk8c291cmNlTGluaz5UcmVlMkxpc3QvVHJlZTJMaXN0LnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoaXMgdHJhbnNmb3JtYXRpb24gcHJlc2VudHMgYSBiYXNpYyBleGFtcGxlIHdoZXJlIGEgdHJlZSBpcyB0cmFuc2Zvcm1lZCBpbnRvIGEgbGlzdC4gVGhpcyBraW5kIG9mIHRyYW5zZm9ybWF0aW9uIGlzIHVzdWFsbHkgbWFkZSBieSBhbiAKICAgICAgCQlpbXBlcmF0aXZlIERlcHRoIEZpcnN0IFRyYXZlcnNhbCBhbGdvcml0aG0uIFRoaXMgc2NlbmFyaW8gaXMgYSBjb250cmlidXRpb24gZnJvbSBDeXJpbCBGYXVyZSAoPGEgaHJlZj0iaHR0cDovL3d3dy5jLXMuZnIvIj5DLVM8L2E+KS4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPlRUMkJERDwvc2hvcnROYW1lPgoJCTxuYW1lPlRydXRoIFRhYmxlcyB0byBCaW5hcnkgRGVjaXNpb24gRGlhZ3JhbXM8L25hbWU+CgkJPGRvY0xpbms+VFQyQkREL1JFQURNRTwvZG9jTGluaz4KCQk8c291cmNlTGluaz5UVDJCREQvVFQyQkRELnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCTxwPgoJCQkJVGhlc2UgZmlsZXMgcHJvdmlkZSBhIGNhc2Ugc3R1ZHkgZm9yIG1vZGVsIHRyYW5zZm9ybWF0aW9uIGFwcGxpZWQgdG8gZGlnaXRhbCBsb2dpYyBjaXJjdWl0cy4KCQkJCUVuZ2luZWVycyBjYW4gdXNlIHZhcmlvdXMgZm9ybWFsaXNtcyB0byByZXByZXNlbnQgY29tYmluYXRvcmlhbCBvciBzZXF1ZW50aWFsIGxvZ2ljLgoJCQkJVGhlIG1vc3Qgd2lkZXNwcmVhZCByZXByZXNlbnRhdGlvbnMgZm9yIGNvbWJpbmF0b3JpYWwgbG9naWMgYXJlIHRydXRoIHRhYmxlcyBhbmQgYm9vbGVhbiBlcXVhdGlvbnMuCgkJCTwvcD4KCQkJPHA+CgkJCQlJbiBtYW55IEVEQSB0b29scywgY29tYmluYXRvcmlhbCBsb2dpYyBpcyByZXByZXNlbnRlZCBpbiBhIGNhbm9uaWNhbCBmb3JtIHVzaW5nIEJpbmFyeSBEZWNpc2lvbiBEaWFncmFtcyAoQkREKS4KCQkJCUJERHMgYXJlIG1hbmx5IHVzZWQgZm9yIG1vZGVsIGNoZWNraW5nIGFuZCBsb2dpYyBvcHRpbWl6YXRpb24uCgkJCTwvcD4KCQkJPHA+CgkJCQlUaGUgcHVycG9zZSBoZXJlIGlzIHRvIHVzZSBtb2RlbCB0cmFuc2Zvcm1hdGlvbiB0byB0cmFuc2Zvcm0gYSB0cnV0aCB0YWJsZSBpbnRvIGEgYmluYXJ5IGRlY2lzaW9uIGRpYWdyYW0uCgkJCTwvcD4KCQkJPHA+CgkJCQlUaGlzIHRyYW5zZm9ybWF0aW9uIGFuZCBhc3NvY2lhdGVkIG1ldGFtb2RlbHMgaXMgYSBjb250cmlidXRpb24gZnJvbSBHdWlsbGF1bWUgU2F2YXRvbiwgRVNFTy9UUkFNRS4KCQkJPC9wPgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPlVNTDIyTWVhc3VyZTwvc2hvcnROYW1lPgoJCTxuYW1lPlVNTDIgdG8gTWVhc3VyZTwvbmFtZT4KCQk8ZG9jTGluaz5VTUwyMk1lYXN1cmUvRXhhbXBsZVVNTDIyTWVhc3VyZVt2MDAuMDJdLnBkZjwvZG9jTGluaz4KCQk8c291cmNlTGluaz5VTUwyMk1lYXN1cmUvVU1MMjJNZWFzdXJlLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoZSBVTUwyIHRvIE1lYXN1cmUgZXhhbXBsZSBkZXNjcmliZXMgbWVhc3VyZW1lbnQgb24gVU1MMiBtb2RlbHMsIHVzaW5nIG1ldHJpY3MgZGVmaW5lZCBhcyBBVEwgbGlicmFyaWVzLgoJCQlUaGlzIHNjZW5hcmlvIGlzIGNvbnRyaWJ1dGVkIGJ5IEVyaWMgVulwYSAoPGEgaHJlZj0iaHR0cDovL3d3dy5zb2RpdXMuY29tIj5TT0RJVVM8L2E+KS4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPlVNTDJBbWJsZTwvc2hvcnROYW1lPgoJCTxuYW1lPlVNTCB0byBBbWJsZTwvbmFtZT4KCQk8ZG9jTGluaz5VTUwyQW1ibGUvRXhhbXBsZVVNTDJBbWJsZVt2MDAuMDFdLnBkZjwvZG9jTGluaz4KCQk8c291cmNlTGluaz5VTUwyQW1ibGUvVU1MMkFtYmxlLnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoZSBVTUwgdG8gQW1ibGUgZXhhbXBsZSBkZXNjcmliZXMgYSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGFuIFVNTCBtb2RlbCBzcGVjaWZ5aW5nIGRpZmZlcmVudAoJCQlhc3BlY3RzIG9mIGEgZGlzdHJpYnV0ZWQgcHJvZ3JhbSBpbnRvIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZGlzdHJpYnV0ZWQgcHJvZ3JhbSBpbiB0aGUgQW1ibGUKCQkJcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuJmx0O2JyIC8mZ3Q7Jmx0O2JyIC8mZ3Q7CgkJCUFtYmxlIGlzIGEgZGlzdHJpYnV0ZWQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgYmFzZWQgb24gT2JqZWN0aXZlIENhbWwuIEl0IGVuYWJsZXMgdG8gc3BlY2lmeSBhCgkJCWRpc3RyaWJ1dGVkIHByb2dyYW0gaW4gdGVybXMgb2YgcHJvY2Vzc2VzIHRoYXQgcnVuIGNvbmN1cnJlbnRseS4gVGhlc2UgcHJvY2Vzc2VzIGFyZSBkZXNpZ25lZCBhcwoJCQlzdGF0ZXMgbWFjaGluZXMgdGhhdCBhcmUgY29ubmVjdGVkIHRvIGVhY2ggb3RoZXIgYnkgbWVhbnMgb2YgbmV0d29ya3MuIEVhY2ggbmV0d29yayBzcGVjaWZpZXMgYSBzZXQKCQkJb2YgY2hhbm5lbHMuIFRoZSBzb3VyY2UgcHJvY2VzcyBvZiBhIGNoYW5uZWwgaXMgYWxsb3dlZCB0byB3cml0ZSB0byBpdHMgdGFyZ2V0IHByb2Nlc3MuIEFuIEFtYmxlCgkJCXByb2dyYW0gaXMgY29tcG9zZWQgb2YgYSBzaW5nbGUgLm1sIGZpbGUgdGhhdCBpbmNsdWRlcyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZGlmZmVyZW50IHByb2Nlc3MgdHlwZXMgdGhhdAoJCQlhcmUgaW52b2x2ZWQgaW4gdGhlIHByb2dyYW0sIGFzIHdlbGwgYXMgYSBzZXQgb2YgLnRvcG8gZmlsZXMgKG9uZSBmb3IgZWFjaCBjb25zaWRlcmVkIG5ldHdvcmspIHRoYXQKCQkJc3BlY2lmaWVzIHRoZSB0b3BvbG9neSBvZiB0aGUgZGVmaW5lZCBuZXR3b3Jrcy4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPlVNTDJBbnlMb2dpYzwvc2hvcnROYW1lPgoJCTxuYW1lPlVNTCB0byBBbnlMb2dpYzwvbmFtZT4KCQk8ZG9jTGluaz5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2F0bC91c2VjYXNlcy9VTUwyQW55TG9naWMvPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPlVNTDJBbnlMb2dpYy9VTUwyQW55TG9naWMuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhpcyB1c2UgY2FzZSBwcmVzZW50cyBhIHRyYW5zZm9ybWF0aW9uIGZyb20gYW5ub3RhdGVkIFVNTDIgYWN0aXZpdHkgZGlhZ3JhbXMgdG8gQW55TG9naWMgc2ltdWxhdGlvbiBtb2RlbHMuCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5VTUwySmF2YTwvc2hvcnROYW1lPgoJCTxuYW1lPlVNTCB0byBKYXZhPC9uYW1lPgoJCTxkb2NMaW5rPlVNTDJKYXZhL0V4YW1wbGVVTUwySmF2YVt2MDAuMDFdLnBkZjwvZG9jTGluaz4KCQk8c291cmNlTGluaz5VTUwySmF2YS9VTUwySmF2YS56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQlUaGlzIGRvY3VtZW50IGlsbHVzdHJhdGVzIGEgKHNpbXBsaWZpZWQpIGNsYXNzaWNhbCB0cmFuc2Zvcm1hdGlvbiBleGFtcGxlIGZyb20gVU1MIG1vZGVscyB0byBKYXZhIG1vZGVscyB0aGF0IGhhcyBiZWVuIGltcGxlbWVudGVkIGluIEFUTC4KCQkgICAgVGhlIFVNTCB0byBKYXZhIGV4YW1wbGUgZGVzY3JpYmVzIHRoZSB0cmFuc2Zvcm1hdGlvbiBvZiBhIFVNTCBtb2RlbCB0byBhIHNpbXBsaWZpZWQgSmF2YSBtb2RlbC4KCQkJVGhlIEphdmEgbW9kZWwgaG9sZHMgdGhlIGluZm9ybWF0aW9uIGZvciB0aGUgY3JlYXRpb24gb2YgSmF2YSBjbGFzc2VzLCBlc3BlY2lhbGx5IHdoYXQgY29uY2VybnMgdGhlCgkJCXN0cnVjdHVyZSBvZiB0aGVzZSBjbGFzc2VzLCBuYW1lbHkgdGhlIHBhY2thZ2UgcmVmZXJlbmNlLCB0aGUgYXR0cmlidXRlcyBhbmQgdGhlIG1ldGhvZHMuCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5VTUwyS00zPC9zaG9ydE5hbWU+CgkJPG5hbWU+VU1MIENsYXNzIERpYWdyYW0gdG8gS00zPC9uYW1lPgoJCTxkb2NMaW5rPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvYXRsL3VzZWNhc2VzL1VNTDJNT0YvPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPlVNTDJLTTMvVU1MMktNMy56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQlUaGlzIHNjZW5hcmlvIGdlbmVyYXRlcyBhIG1ldGFtb2RlbCBjb25mb3JtaW5nIHRvIEtNMyBmcm9tIGEgVU1MIENsYXNzIERpYWdyYW0uCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5VTUwyTU9GPC9zaG9ydE5hbWU+CgkJPG5hbWU+VU1MIHRvIE1PRjwvbmFtZT4KCQk8ZG9jTGluaz5VTUwyTU9GL0V4YW1wbGVVTUwyTU9GW3YwMC4wMV0ucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPlVNTDJNT0YvVU1MMk1PRi56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQlUaGUgTU9GIChNZXRhIE9iamVjdCBGYWNpbGl0eSkgaXMgYW4gT01HIHN0YW5kYXJkIGVuYWJsaW5nIHRvIGRlc2NyaWJlIG1ldGFtb2RlbHMgdGhyb3VnaCBjb21tb24gc2VtYW50aWNzLgoJCQlUaGUgVU1MIChVbmlmaWVkIE1vZGVsbGluZyBMYW5ndWFnZSkgQ29yZSBzdGFuZGFyZCBpcyB0aGUgT01HIGNvbW1vbiBtb2RlbGxpbmcgbGFuZ3VhZ2UuCgkJCUFsdGhvdWdoLCB0aGUgTU9GIGlzIHByaW1hcmlseSBkZXNpZ25lZCBmb3IgbWV0YW1vZGVsIGRlZmluaXRpb25zIGFuZCBVTUwgQ29yZSBmb3IgdGhlIGRlc2lnbiBvZiBtb2RlbHMsIHRoZSB0d28gc3RhbmRhcmRzIGhhbmRsZSB2ZXJ5IGNsb3NlIG5vdGlvbnMuCgkJCVRoaXMgZXhhbXBsZSBkZXNjcmliZXMgYSB0cmFuc2Zvcm1hdGlvbiBlbmFibGluZyB0byBwYXNzIGZyb20gdGhlIFVNTCB0byB0aGUgTU9GIHNlbWFudGljcy4KCQkJVGhlIHRyYW5zZm9ybWF0aW9uIGlzIGJhc2VkIG9uIHRoZSBVTUwgUHJvZmlsZSBmb3IgTU9GIE9NRyBzcGVjaWZpY2F0aW9uLgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPlVNTDJPV0w8L3Nob3J0TmFtZT4KCQk8bmFtZT5VTUwgdG8gT1dMPC9uYW1lPgoJCTxkb2NMaW5rPlVNTDJPV0wvUkVBRE1FLnR4dDwvZG9jTGluaz4KCQk8c291cmNlTGluaz5VTUwyT1dML1VNTDJPV0wuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhpcyBBVEwgc2NlbmFyaW8gcHJlc2VudHMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIE9NRydzIE9ETSBzcGVjaWZpY2F0aW9uLiAKCQkJVGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyB1c2VkIHRvIHByb2R1Y2UgYW4gT1dMIG9udG9sb2d5ICsgT1dMIEluZGl2aWR1YWxzIGZyb20gYSBVTUwgTW9kZWwgKyBVTUwgSW5zdGFuY2VzLgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KICAJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+VU1MQWN0aXZpdHlEaWFncmFtMk1TUHJvamVjdDwvc2hvcnROYW1lPgoJCTxuYW1lPlVNTCBBY3Rpdml0eSBEaWFncmFtIHRvIE1TUHJvamVjdDwvbmFtZT4KCQk8ZG9jTGluaz5VTUxBY3Rpdml0eURpYWdyYW0yTVNQcm9qZWN0L0V4YW1wbGVVbWxBY3Rpdml0eURpYWdyYW0yTVNQcm9qZWN0W3YwMC4wMV0ucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPlVNTEFjdGl2aXR5RGlhZ3JhbTJNU1Byb2plY3QvVW1sQWN0aXZpdHlEaWFncmFtMk1TUHJvamVjdC56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQlUaGUgVU1MQWN0aXZpdHlEaWFncmFtIHRvIE1TUHJvamVjdCBleGFtcGxlIGRlc2NyaWJlcyBhIHRyYW5zZm9ybWF0aW9uIGZyb20gYSBsb29wIGZyZWUgVU1MCgkJCWFjdGl2aXR5IGRpYWdyYW0gKGRlc2NyaWJpbmcgc29tZSB0YXNrcyBzZXJpZXMpIHRvIGEgTVMgUHJvamVjdC4gVGhlIHRyYW5zZm9ybWF0aW9uIGlzIGJhc2VkIG9uIGEKCQkJc2ltcGxpZmllZCBzdWJzZXQgb2YgdGhlIFVNTCBTdGF0ZSBNYWNoaW5lIG1ldGFtb2RlbC4gVGhpcyB0cmFuc2Zvcm1hdGlvbiBwcm9kdWNlcyBhIHByb2plY3QKCQkJZGVmaW5lZCBpbiBjb25mb3JtYW5jZSB0byBhIGxpbWl0ZWQgc3Vic2V0IG9mIHRoZSBNU1Byb2plY3QgbWV0YW1vZGVsLgkJCQoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KICAJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+VU1MREkyU1ZHPC9zaG9ydE5hbWU+CgkJPG5hbWU+VU1MREkgdG8gU1ZHPC9uYW1lPgoJCTxkb2NMaW5rPlVNTERJMlNWRy9VTUxESTJTVkdbMC4wNF0ucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPlVNTERJMlNWRy9VTUxESTJTVkcuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhlIFVNTERJIHRvIFNWRyBleGFtcGxlIGRlc2NyaWJlcyBhIHRyYW5zZm9ybWF0aW9uIGZyb20gYSBVTUwgZGlhZ3JhbSwgdGhhdCBoYXMgaXRzIHByZXNlbnRhdGlvbgoJCQlpbmZvcm1hdGlvbiBhY2NvcmRpbmcgdG8gdGhlIFVNTCBEaWFncmFtIEludGVyY2hhbmdlIHN0YW5kYXJkLCB0byBpdHMgcHJlc2VudGF0aW9uIHVzaW5nIHRoZSBXM0MKICAgIAkJc3RhbmRhcmQgU1ZHIChTY2FsYWJsZSBWZWN0b3IgR3JhcGhpY3MpLCBhbiBYTUxiYXNlZCBmb3JtYXQuCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5VTUxDb3B5TW9kZWw8L3Nob3J0TmFtZT4KCQk8bmFtZT5VTUwgQ29weU1vZGVsLCBNb2RlbENvcHk8L25hbWU+CgkJPGRvY0xpbms+aHR0cDovL3NzZWwudnViLmFjLmJlL3NzZWwvcmVzZWFyY2g6bWRkOmNhc2VzdHVkaWVzI2NvcHltb2RlbF9tb2RlbGNvcHk8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+aHR0cDovL3NzZWwudnViLmFjLmJlL3ZpZXdjdnMvdmlld2N2cy5weS9zdm4tZ2VuL1VNTDFDYXNlU3R1ZGllcy91bWwxY3MtdHJhbnNmb3JtYXRpb25zLzwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCSZsdDtwJmd0OwoJCQlUaGVzZSB0cmFuc2Zvcm1hdGlvbnMgYXJlIHBhcnQgb2YgIHRoZSAmbHQ7YSBocmVmPSJodHRwOi8vc3NlbC52dWIuYWMuYmUvc3NlbC9yZXNlYXJjaDptZGQ6Y2FzZXN0dWRpZXMiPlVNTCByZWZpbmVtZW50IHRyYW5zZm9ybWF0aW9ucyZsdDsvYSZndDsgYnkgJmx0O2EgaHJlZj0iaHR0cDovL3NzZWwudnViLmFjLmJlL3NzZWwvYWJvdXQ6bWVtYmVyczpkZW5uaXN3YWdlbGFhciI+RGVubmlzIFdhZ2VsYWFyJmx0Oy9hJmd0Oy4KCQkJJmx0Oy9wJmd0OwoJCQkmbHQ7cCZndDsKCQkJSW50cm9kdWN0aW9uOiAiVU1MIGFsbG93cyBmb3IgdGhlIGludHJvZHVjdGlvbiBvZiBjdXN0b20gYWJzdHJhY3Rpb25zIHVzaW5nCgkJCXN0ZXJlb3R5cGVzIGFuZC9vciBwcm9maWxlcy4gVGhlc2UgYWJzdHJhY3Rpb25zIGNhbiBiZSByZWZpbmVkIHRvIGEKCQkJbG93ZXItbGV2ZWwgVU1MIGRlc2NyaXB0aW9uIHVzaW5nIHJlZmluZW1lbnQgdHJhbnNmb3JtYXRpb25zLiBTZXZlcmFsCgkJCXJlZmluZW1lbnQgdHJhbnNmb3JtYXRpb25zIGFyZSBwcm92aWRlZCB0byByZWZpbmUgc3VjaCBhYnN0cmFjdGlvbnMgYXMKCQkJJ09ic2VydmVyJywgJ1NpbmdsZXRvbicgYW5kICdBcHBsZXQnLiBSZWZpbmVtZW50IHRyYW5zZm9ybWF0aW9ucyBhcmUgYWxzbwoJCQlwcm92aWRlZCB0byByZWZpbmUgc3RhbmRhcmQgVU1MIGVsZW1lbnRzIGludG8gbG93ZXItbGV2ZWwgc3RydWN0dXJlcywgc3VjaCBhcwoJCQlhc3NvY2lhdGlvbnMgdG8gcHVibGljIGF0dHJpYnV0ZXMgYW5kIHB1YmxpYyBhdHRyaWJ1dGVzIHRvIGVuY2Fwc3VsYXRlZAoJCQlhdHRyaWJ1dGVzICh3aXRoIGdldHRlciBhbmQgc2V0dGVyIG1ldGhvZHMpLiIKCQkJJmx0Oy9wJmd0OwoJCQkmbHQ7cCZndDsKCQkJVGhlIENvcHlNb2RlbCB0cmFuc2Zvcm1hdGlvbiBjb3BpZXMgYWxsIGVsZW1lbnRzIG9mIG9uZSBtb2RlbCBpbnRvIGFub3RoZXIgbW9kZWwuCgkJCVRoZXJlIGFyZSB0d28gdmFyaWFudHMgYXZhaWxhYmxlOgoJCQkmbHQ7L3AmZ3Q7CgkJCSZsdDt1bCZndDsKCQkJJmx0O2xpJmd0OyZsdDtiJmd0OyZsdDthIGhyZWY9Imh0dHA6Ly9zc2VsLnZ1Yi5hYy5iZS92aWV3Y3ZzL3ZpZXdjdnMucHkvVU1MMUNhc2VTdHVkaWVzL3VtbDFjcy10cmFuc2Zvcm1hdGlvbnMvQ29weU1vZGVsLmF0bD92aWV3PW1hcmt1cCI+Q29weU1vZGVsLmF0bCZsdDsvYSZndDs6Jmx0Oy9iJmd0OwoJCQlUaGlzIHZlcnNpb24gdXNlcyBBVEwgcmVmaW5pbmcgbW9kZSAoc2VlIHRoZSAmbHQ7YSBocmVmPSIjUHVibGljMlByaXZhdGUiPlB1YmxpYzJQcml2YXRlJmx0Oy9hJmd0OyB0cmFuc2Zvcm1hdGlvbiBhbmQgZG9jdW1lbnRhdGlvbikuCgkJCVRoaXMgbWVhbnMgdGhhdCBjb3B5aW5nIHJ1bGVzIGFyZSBvbmx5IHJlcXVpcmVkIGZvciB0aGUgcm9vdCBtb2RlbCBlbGVtZW50cy4gCgkJCUFsc28sIHRoZSBpbnB1dCBhbmQgb3V0cHV0IG1vZGVsIGFyZSByZXF1aXJlZCB0byBoYXZlIHRoZSBzYW1lIG1ldGEtbW9kZWwgKGFuZCByZXBvc2l0b3J5KSwgc2luY2UgdGhpcyBpcyByZXF1aXJlZCBieSByZWZpbmVtZW50IG1vZGUuJmx0Oy9saSZndDsKCQkJJmx0O2xpJmd0OyZsdDtiJmd0OyZsdDthIGhyZWY9Imh0dHA6Ly9zc2VsLnZ1Yi5hYy5iZS92aWV3Y3ZzL3ZpZXdjdnMucHkvVU1MMUNhc2VTdHVkaWVzL3VtbDFjcy10cmFuc2Zvcm1hdGlvbnMvTW9kZWxDb3B5LmF0bD92aWV3PW1hcmt1cCI+TW9kZWxDb3B5LmF0bCZsdDsvYSZndDs6Jmx0Oy9iJmd0OwoJCQlBbm90aGVyIHZlcnNpb24gYmFzZWQgb24gYXV0by1nZW5lcmF0ZWQsIGV4cGxpY2l0IGNvcHlpbmcgcnVsZXMgZm9yIGVhY2ggbWV0YS1jbGFzcy4KCQkJRGlmZmVyZW50ICh5ZXQgY29tcGF0aWJsZSkgbWV0YS1tb2RlbHMgY2FuIGJlIHVzZWQgZm9yIGlucHV0IGFuZCBvdXRwdXQgbW9kZWwuCgkJCUFsc28sIGRpZmZlcmVudCByZXBvc2l0b3JpZXMgY2FuIGJlIHVzZWQsIGUuZy4gZm9yIGNvcHlpbmcgYSBtb2RlbCBmcm9tIE1EUiB0byBFTUYuCgkJCSZsdDsvdWwmZ3Q7CgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgoJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+VU1MU0QyU1RNRDwvc2hvcnROYW1lPgoJCTxuYW1lPlVNTCBTZXF1ZW5jZSBEaWFncmFtcyB0byBTdGF0ZWNoYXJ0IERpYWdyYW08L25hbWU+CgkJPGRvY0xpbms+aHR0cDovL3d3dy5zdC5ld2kudHVkZWxmdC5ubC9+YmFzZ3JhYWYvc29mdHdhcmUvbWRlL2F0bC9VTUxTRDJTVE1EL1JFQURNRS50eHQ8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+aHR0cDovL3d3dy5zdC5ld2kudHVkZWxmdC5ubC9+YmFzZ3JhYWYvc29mdHdhcmUvbWRlL2F0bC9VTUxTRDJTVE1EL1VNTFNEMlNUTUQuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJVGhlc2UgdHJhbnNmb3JtYXRpb25zIGFyZSB1c2VkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuc3QuZXdpLnR1ZGVsZnQubmwvfmJhc2dyYWFmIj5CYXMgR3JhYWY8L2E+IHRvIGNoZWNrCgkJCXRoZSBjb25mb3JtYW5jZSBvZiBiZWhhdmlvdXJhbCBzcGVjaWZpY2F0aW9ucy4gVGhlc2UgdHJhbnNmb3JtYXRpb25zIHRyYW5zZm9ybSBhIHNldCBvZiBVTUwgU2VxdWVuY2UgRGlhZ3JhbXMgaW50byBhIChoaWVyYXJjaGljYWwpIFVNTAoJCQlTdGF0ZSBNYWNoaW5lLiBUaGUgY29tcGxldGUgZ2VuZXJhdGlvbiBvZiBhIFN0YXRlIE1hY2hpbmUgZnJvbSBhIHNldCBvZiBzY2VuYXJpb3MgY29tcHJpc2VzIGZvdXIgY29uc2VjdXRpdmUgbW9kZWwgdHJhbnNmb3JtYXRpb25zLgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KICAJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+VU1MTWVyZ2VNb2RlbDwvc2hvcnROYW1lPgoJCTxuYW1lPlVNTCBNZXJnZU1vZGVsLCBNb2RlbE1lcmdlPC9uYW1lPgoJCTxkb2NMaW5rPmh0dHA6Ly9zc2VsLnZ1Yi5hYy5iZS9zc2VsL3Jlc2VhcmNoOm1kZDpjYXNlc3R1ZGllcyNtZXJnZW1vZGVsX21vZGVsbWVyZ2U8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+aHR0cDovL3NzZWwudnViLmFjLmJlL3ZpZXdjdnMvdmlld2N2cy5weS9zdm4tZ2VuL1VNTDFDYXNlU3R1ZGllcy91bWwxY3MtdHJhbnNmb3JtYXRpb25zLzwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCSZsdDtwJmd0OwoJCQlUaGVzZSB0cmFuc2Zvcm1hdGlvbnMgYXJlIHBhcnQgb2YgIHRoZSAmbHQ7YSBocmVmPSJodHRwOi8vc3NlbC52dWIuYWMuYmUvc3NlbC9yZXNlYXJjaDptZGQ6Y2FzZXN0dWRpZXMiPlVNTCByZWZpbmVtZW50IHRyYW5zZm9ybWF0aW9ucyZsdDsvYSZndDsgYnkgJmx0O2EgaHJlZj0iaHR0cDovL3NzZWwudnViLmFjLmJlL3NzZWwvYWJvdXQ6bWVtYmVyczpkZW5uaXN3YWdlbGFhciI+RGVubmlzIFdhZ2VsYWFyJmx0Oy9hJmd0Oy4KCQkJJmx0Oy9wJmd0OwoJCQkmbHQ7cCZndDsKCQkJVGhlc2UgdHJhbnNmb3JtYXRpb25zIGFyZSBtZWFudCB0byBtZXJnZSBhIG1vZGVsIHdpdGggdGhlIG1haW4gbW9kZWwuIAoJCQlUaGUgTUVSR0UgbW9kZWwgaXMgbWVyZ2VkIHdpdGggdGhlIElOIG1vZGVsIGFuZCB3cml0dGVuIHRvIHRoZSBPVVQgbW9kZWwuIAoJCQlUaGV5IGFyZSBjdXJyZW50bHkgbGltaXRlZCB0byBjb3B5aW5nIGVsZW1lbnRzIHRoYXQgY2FuIG9jY3VyIGluIFVNTCBDbGFzcyBEaWFncmFtcyAoaW5jbHVkaW5nIEFjdGlvbiBTZW1hbnRpY3MpLiAKCQkJVGhlcmUgYXJlIHR3byB2YXJpYW50cyBhdmFpbGFibGU6CgkJCSZsdDsvcCZndDsKCQkJJmx0O3VsJmd0OwoJCQkmbHQ7bGkmZ3Q7Jmx0O2ImZ3Q7Jmx0O2EgaHJlZj0iaHR0cDovL3NzZWwudnViLmFjLmJlL3ZpZXdjdnMvdmlld2N2cy5weS9VTUwxQ2FzZVN0dWRpZXMvdW1sMWNzLXRyYW5zZm9ybWF0aW9ucy9NZXJnZU1vZGVsLmF0bD92aWV3PW1hcmt1cCI+TWVyZ2VNb2RlbC5hdGwmbHQ7L2EmZ3Q7OiZsdDsvYiZndDsKCQkJQmFzZWQgb24gcmVmaW5lbWVudCBtb2RlLiBUaGlzIG1lYW5zIHRoYXQgYWxsIG1vZGVscyBhcmUgcmVxdWlyZWQgdG8gaGF2ZSB0aGUgc2FtZSBtZXRhLW1vZGVsIChhbmQgcmVwb3NpdG9yeSksIHNpbmNlIHRoaXMgaXMgcmVxdWlyZWQgYnkgcmVmaW5lbWVudCBtb2RlLiAKCQkJUGFydGx5IG9wdGltaXNlZCBmb3Igc3BlZWQgYnkgY2FjaGluZyBpbnRlcm1lZGlhdGUgcmVzdWx0cyBpbiBPQ0wgaGVscGVyIGF0dHJpYnV0ZXMuJmx0Oy9saSZndDsKCQkJJmx0O2xpJmd0OyZsdDtiJmd0OyZsdDthIGhyZWY9Imh0dHA6Ly9zc2VsLnZ1Yi5hYy5iZS92aWV3Y3ZzL3ZpZXdjdnMucHkvVU1MMUNhc2VTdHVkaWVzL3VtbDFjcy10cmFuc2Zvcm1hdGlvbnMvTW9kZWxNZXJnZS5hdGw/dmlldz1tYXJrdXAiPk1vZGVsTWVyZ2UuYXRsJmx0Oy9hJmd0OzombHQ7L2ImZ3Q7IAoJCQlCYXNlZCBvbiBhdXRvLWdlbmVyYXRlZCwgZXhwbGljaXQgY29weWluZyBydWxlcyBmb3IgZWFjaCBtZXRhLWNsYXNzLiBEaWZmZXJlbnQgKHlldCBjb21wYXRpYmxlKSBtZXRhLW1vZGVscyAoYW5kIHJlcG9zaXRvcmllcykgY2FuIGJlIHVzZWQgZm9yIHRoZSBtb2RlbHMuIAoJCQlOT1RFOiBUaGlzIHRyYW5zZm9ybWF0aW9uIGlzIG5vIGxvbmdlciBtYWludGFpbmVkL3VzZWQgYmVjYXVzZSBpdCBpcyB0b28gY29tcGxleC9pbmVmZmljaWVudCBjb21wYXJlZCB0byBpdHMgYWx0ZXJuYXRpdmUuJmx0Oy9saSZndDsKCQkJJmx0Oy91bCZndDsKCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPlVNTEFzc29jaWF0aW9uQXR0cmlidXRlczwvc2hvcnROYW1lPgoJCTxuYW1lPlVNTCBBc3NvY2lhdGlvbkF0dHJpYnV0ZXMsIEphdmEyQXNzb2NpYXRpb25BdHRyaWJ1dGVzPC9uYW1lPgoJCTxkb2NMaW5rPmh0dHA6Ly9zc2VsLnZ1Yi5hYy5iZS9zc2VsL3Jlc2VhcmNoOm1kZDpjYXNlc3R1ZGllcyNhc3NvY2lhdGlvbmF0dHJpYnV0ZXNfamF2YTJhc3NvY2lhdGlvbmF0dHJpYnV0ZXM8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+aHR0cDovL3NzZWwudnViLmFjLmJlL3ZpZXdjdnMvdmlld2N2cy5weS9zdm4tZ2VuL1VNTDFDYXNlU3R1ZGllcy91bWwxY3MtdHJhbnNmb3JtYXRpb25zLzwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCSZsdDtwJmd0OwoJCQlUaGVzZSB0cmFuc2Zvcm1hdGlvbnMgYXJlIHBhcnQgb2YgIHRoZSAmbHQ7YSBocmVmPSJodHRwOi8vc3NlbC52dWIuYWMuYmUvc3NlbC9yZXNlYXJjaDptZGQ6Y2FzZXN0dWRpZXMiPlVNTCByZWZpbmVtZW50IHRyYW5zZm9ybWF0aW9ucyZsdDsvYSZndDsgYnkgJmx0O2EgaHJlZj0iaHR0cDovL3NzZWwudnViLmFjLmJlL3NzZWwvYWJvdXQ6bWVtYmVyczpkZW5uaXN3YWdlbGFhciI+RGVubmlzIFdhZ2VsYWFyJmx0Oy9hJmd0Oy4KCQkJJmx0Oy9wJmd0OwoJCQkmbHQ7cCZndDsKCQkJVGhlc2UgdHJhbnNmb3JtYXRpb25zIGludHJvZHVjZSBBdHRyaWJ1dGVzICh3aXRoIEphdmEgaW5pdGlhbCB2YWx1ZXMpIGZvciBlYWNoIEFzc29jaWF0aW9uIEVuZC4gVGhlcmUgYXJlIHR3byB2YXJpYW50cyBhdmFpbGFibGU6CgkJCSZsdDsvcCZndDsKCQkJJmx0O3VsJmd0OwoJCQkmbHQ7bGkmZ3Q7Jmx0O2ImZ3Q7Jmx0O2EgaHJlZj0iaHR0cDovL3NzZWwudnViLmFjLmJlL3ZpZXdjdnMvdmlld2N2cy5weS9VTUwxQ2FzZVN0dWRpZXMvdW1sMWNzLXRyYW5zZm9ybWF0aW9ucy9Bc3NvY2lhdGlvbkF0dHJpYnV0ZXMuYXRsP3ZpZXc9bWFya3VwIj5Bc3NvY2lhdGlvbkF0dHJpYnV0ZXMuYXRsJmx0Oy9hJmd0OzombHQ7L2ImZ3Q7IAoJCQlVc2VzIHN0cmljdCBKYXZhIDEgQVBJLiBXb3JrcyBvbiBKMk1FIE1JRFAgMS4wIGFzIHdlbGwuJmx0Oy9saSZndDsKCQkJJmx0O2xpJmd0OyZsdDtiJmd0OyZsdDthIGhyZWY9Imh0dHA6Ly9zc2VsLnZ1Yi5hYy5iZS92aWV3Y3ZzL3ZpZXdjdnMucHkvVU1MMUNhc2VTdHVkaWVzL3VtbDFjcy10cmFuc2Zvcm1hdGlvbnMvSmF2YTJBc3NvY2lhdGlvbkF0dHJpYnV0ZXMuYXRsP3ZpZXc9bWFya3VwIj5KYXZhMkFzc29jaWF0aW9uQXR0cmlidXRlcy5hdGwmbHQ7L2EmZ3Q7OiZsdDsvYiZndDsgCgkJCVVzZXMgdGhlIEphdmEgMiBDb2xsZWN0aW9ucyBmcmFtZXdvcmsuIFdvcmtzIG9uIEoyTUUgUFAgMS4wIGFzIHdlbGwuJmx0Oy9saSZndDsKCQkJJmx0Oy91bCZndDsKCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPlVNTEFjY2Vzc29yczwvc2hvcnROYW1lPgoJCTxuYW1lPlVNTCBBY2Nlc3NvcnMsIEphdmEyQWNjZXNzb3JzPC9uYW1lPgoJCTxkb2NMaW5rPmh0dHA6Ly9zc2VsLnZ1Yi5hYy5iZS9zc2VsL3Jlc2VhcmNoOm1kZDpjYXNlc3R1ZGllcyNhY2Nlc3NvcnNfamF2YTJhY2Nlc3NvcnM8L2RvY0xpbms+CgkJPHNvdXJjZUxpbms+aHR0cDovL3NzZWwudnViLmFjLmJlL3ZpZXdjdnMvdmlld2N2cy5weS9zdm4tZ2VuL1VNTDFDYXNlU3R1ZGllcy91bWwxY3MtdHJhbnNmb3JtYXRpb25zLzwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCSZsdDtwJmd0OwoJCQlUaGVzZSB0cmFuc2Zvcm1hdGlvbnMgYXJlIHBhcnQgb2YgIHRoZSAmbHQ7YSBocmVmPSJodHRwOi8vc3NlbC52dWIuYWMuYmUvc3NlbC9yZXNlYXJjaDptZGQ6Y2FzZXN0dWRpZXMiPlVNTCByZWZpbmVtZW50IHRyYW5zZm9ybWF0aW9ucyZsdDsvYSZndDsgYnkgJmx0O2EgaHJlZj0iaHR0cDovL3NzZWwudnViLmFjLmJlL3NzZWwvYWJvdXQ6bWVtYmVyczpkZW5uaXN3YWdlbGFhciI+RGVubmlzIFdhZ2VsYWFyJmx0Oy9hJmd0Oy4KCQkJJmx0Oy9wJmd0OwoJCQkmbHQ7cCZndDsKCQkJVGhlc2UgdHJhbnNmb3JtYXRpb25zIGludHJvZHVjZSBhY2Nlc3NvciBPcGVyYXRpb25zL01ldGhvZHMgKHdpdGggSmF2YSBib2RpZXMpIGZvciBlYWNoIHB1YmxpYyBBdHRyaWJ1dGUuIAoJCQlUaGUgcHVibGljIEF0dHJpYnV0ZXMgYXJlIHRoZW4gbWFkZSBwcml2YXRlLiBUaGlzIHRyYW5zZm9ybWF0aW9uIGlzIGFsc28gdXNlZCBpbiByZWZhY3RvcmluZyBhcyAiRW5jYXBzdWxhdGUgRmllbGQiLiAKCQkJVGhlcmUgYXJlIHR3byB2YXJpYW50cyBhdmFpbGFibGU6CgkJCSZsdDsvcCZndDsKCQkJJmx0O3VsJmd0OwoJCQkmbHQ7bGkmZ3Q7Jmx0O2ImZ3Q7Jmx0O2EgaHJlZj0iaHR0cDovL3NzZWwudnViLmFjLmJlL3ZpZXdjdnMvdmlld2N2cy5weS9VTUwxQ2FzZVN0dWRpZXMvdW1sMWNzLXRyYW5zZm9ybWF0aW9ucy9BY2Nlc3NvcnMuYXRsP3ZpZXc9bWFya3VwIj5BY2Nlc3NvcnMuYXRsJmx0Oy9hJmd0OzombHQ7L2ImZ3Q7IAoJCQlVc2VzIHN0cmljdCBKYXZhIDEgQVBJLiBXb3JrcyBvbiBKMk1FIE1JRFAgMS4wIGFzIHdlbGwuJmx0Oy9saSZndDsKCQkJJmx0O2xpJmd0OyZsdDtiJmd0OyZsdDthIGhyZWY9Imh0dHA6Ly9zc2VsLnZ1Yi5hYy5iZS92aWV3Y3ZzL3ZpZXdjdnMucHkvVU1MMUNhc2VTdHVkaWVzL3VtbDFjcy10cmFuc2Zvcm1hdGlvbnMvSmF2YTJBY2Nlc3NvcnMuYXRsP3ZpZXc9bWFya3VwIj5KYXZhMkFjY2Vzc29ycy5hdGwmbHQ7L2EmZ3Q7OiZsdDsvYiZndDsgCgkJCVVzZXMgdGhlIEphdmEgMiBDb2xsZWN0aW9ucyBmcmFtZXdvcmsuIFdvcmtzIG9uIEoyTUUgUFAgMS4wIGFzIHdlbGwuJmx0Oy9saSZndDsKCQkJJmx0Oy91bCZndDsKCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPlVNTE9ic2VydmVyPC9zaG9ydE5hbWU+CgkJPG5hbWU+VU1MIE9ic2VydmVyLCBKYXZhT2JzZXJ2ZXI8L25hbWU+CgkJPGRvY0xpbms+aHR0cDovL3NzZWwudnViLmFjLmJlL3NzZWwvcmVzZWFyY2g6bWRkOmNhc2VzdHVkaWVzI29ic2VydmVyX2phdmFvYnNlcnZlcjwvZG9jTGluaz4KCQk8c291cmNlTGluaz5odHRwOi8vc3NlbC52dWIuYWMuYmUvdmlld2N2cy92aWV3Y3ZzLnB5L3N2bi1nZW4vVU1MMUNhc2VTdHVkaWVzL3VtbDFjcy10cmFuc2Zvcm1hdGlvbnMvPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJJmx0O3AmZ3Q7CgkJCVRoZXNlIHRyYW5zZm9ybWF0aW9ucyBhcmUgcGFydCBvZiAgdGhlICZsdDthIGhyZWY9Imh0dHA6Ly9zc2VsLnZ1Yi5hYy5iZS9zc2VsL3Jlc2VhcmNoOm1kZDpjYXNlc3R1ZGllcyI+VU1MIHJlZmluZW1lbnQgdHJhbnNmb3JtYXRpb25zJmx0Oy9hJmd0OyBieSAmbHQ7YSBocmVmPSJodHRwOi8vc3NlbC52dWIuYWMuYmUvc3NlbC9hYm91dDptZW1iZXJzOmRlbm5pc3dhZ2VsYWFyIj5EZW5uaXMgV2FnZWxhYXImbHQ7L2EmZ3Q7LgoJCQkmbHQ7L3AmZ3Q7CgkJCSZsdDtwJmd0OwoJCQlUaGVzZSB0cmFuc2Zvcm1hdGlvbnMgaW50cm9kdWNlIHRoZSBKYXZhIGluZnJhc3RydWN0dXJlIHRvIGltcGxlbWVudCB0aGUgIk9ic2VydmVyIiwgIk9ic2VydmFibGUiIGFuZCAic3Vic2NyaWJlIiBTdGVyZW90eXBlcy4gCgkJCUFueSBpbnN0YW5jZXMgb2YgIk9ic2VydmVyIiBDbGFzc2VzIHRoYXQgaGF2ZSBhICJzdWJzY3JpYmUiIEFzc29jaWF0aW9uIHRvIGFuICJPYnNlcnZhYmxlIiBDbGFzcywgCgkJCXdpbGwgYXV0b21hdGljYWxseSBiZSBzdWJzY3JpYmVkIHRvIHRoZSAiT2JzZXJ2YWJsZSIgaW5zdGFuY2UgdGhhdCB0aGV5IGFyZSBsaW5rZWQgdG8uIAoJCQlJbiBhZGRpdGlvbiwgYWxsIHNldHRlciBNZXRob2RzIG9mIHRoZSAiT2JzZXJ2YWJsZSIgQ2xhc3Mgd2lsbCBiZSB1cGRhdGVkIHRvIGRvIGEgbm90aWZ5IGFzIHdlbGwuIAoJCQlBbiAidXBkYXRlIiBPcGVyYXRpb24vTWV0aG9kIHdpbGwgYmUgaW50cm9kdWNlZCBmb3IgZWFjaCAiT2JzZXJ2ZXIiIENsYXNzLCAKCQkJd2hpY2ggaXMgY29uZmlndXJlZCB0byBpbnZva2UgYW55ICJvblhZWkNoYW5nZSIgT3BlcmF0aW9ucywgd2hlcmUgIlhZWiIgaXMgdGhlIG5hbWUgb2YgdGhlIEF0dHJpYnV0ZSB0aGF0IGlzIGNoYW5nZWQuIAoJCQlUaGVyZSBhcmUgdHdvIHZhcmlhbnRzIGF2YWlsYWJsZToKCQkJJmx0Oy9wJmd0OwoJCQkmbHQ7dWwmZ3Q7CgkJCSZsdDtsaSZndDsmbHQ7YiZndDsmbHQ7YSBocmVmPSJodHRwOi8vc3NlbC52dWIuYWMuYmUvdmlld2N2cy92aWV3Y3ZzLnB5L1VNTDFDYXNlU3R1ZGllcy91bWwxY3MtdHJhbnNmb3JtYXRpb25zL09ic2VydmVyLmF0bD92aWV3PW1hcmt1cCI+T2JzZXJ2ZXIuYXRsJmx0Oy9hJmd0OzombHQ7L2ImZ3Q7IAoJCQlVc2VzIHN0cmljdCBKYXZhIDEgQVBJLiBXb3JrcyBvbiBKMk1FIE1JRFAgMS4wIGFzIHdlbGwuJmx0Oy9saSZndDsKCQkJJmx0O2xpJmd0OyZsdDtiJmd0OyZsdDthIGhyZWY9Imh0dHA6Ly9zc2VsLnZ1Yi5hYy5iZS92aWV3Y3ZzL3ZpZXdjdnMucHkvVU1MMUNhc2VTdHVkaWVzL3VtbDFjcy10cmFuc2Zvcm1hdGlvbnMvSmF2YU9ic2VydmVyLmF0bD92aWV3PW1hcmt1cCI+SmF2YU9ic2VydmVyLmF0bCZsdDsvYSZndDs6Jmx0Oy9iJmd0OyAKCQkJVXNlcyB0aGUgamF2YS51dGlsLk9ic2VydmVyIGZyYW1ld29yay4gQWxzbyB1c2VzIEphdmEgcmVmbGVjdGlvbiB0byBkZXRlY3QgYW55ICJvblhZWkNoYW5nZSIgaGFuZGxlciBtZXRob2RzLiAKCQkJVGhpcyBtZWFucyB0aGF0ICJvblhZWkNoYW5nZSIgbWV0aG9kcyBvZiBzdWJjbGFzc2VzIHdpbGwgYWxzbyBiZSBkZXRlY3RlZCBhbmQgd2l0aG91dCBhIHJlY29tcGlsZSBvZiB0aGUgc3VwZXJjbGFzcy4mbHQ7L2xpJmd0OwoJCQkmbHQ7L3VsJmd0OwkJCQoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KICAJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+VU1MU2luZ2xldG9uPC9zaG9ydE5hbWU+CgkJPG5hbWU+VU1MIFNpbmdsZXRvbjwvbmFtZT4KCQk8ZG9jTGluaz5odHRwOi8vc3NlbC52dWIuYWMuYmUvc3NlbC9yZXNlYXJjaDptZGQ6Y2FzZXN0dWRpZXMjc2luZ2xldG9uPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPmh0dHA6Ly9zc2VsLnZ1Yi5hYy5iZS92aWV3Y3ZzL3ZpZXdjdnMucHkvc3ZuLWdlbi9VTUwxQ2FzZVN0dWRpZXMvdW1sMWNzLXRyYW5zZm9ybWF0aW9ucy88L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJICAgIAkmbHQ7cCZndDsKCQkJVGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyBwYXJ0IG9mICB0aGUgJmx0O2EgaHJlZj0iaHR0cDovL3NzZWwudnViLmFjLmJlL3NzZWwvcmVzZWFyY2g6bWRkOmNhc2VzdHVkaWVzIj5VTUwgcmVmaW5lbWVudCB0cmFuc2Zvcm1hdGlvbnMmbHQ7L2EmZ3Q7IGJ5ICZsdDthIGhyZWY9Imh0dHA6Ly9zc2VsLnZ1Yi5hYy5iZS9zc2VsL2Fib3V0Om1lbWJlcnM6ZGVubmlzd2FnZWxhYXIiPkRlbm5pcyBXYWdlbGFhciZsdDsvYSZndDsuCgkJCSZsdDsvcCZndDsKCQkJJmx0O3AmZ3Q7CgkJCUEgc2ltcGxlIHRyYW5zZm9ybWF0aW9uIHRoYXQgYWRkcyBhIHN0YXRpYyAiZ2V0SW5zdGFuY2UiIE9wZXJhdGlvbi9NZXRob2QgYW5kIGEgc3RhdGljICJpbnN0YW5jZSIgQXR0cmlidXRlIHRvIGVhY2ggQ2xhc3Mgd2l0aCBhICJTaW5nbGV0b24iIFN0ZXJlb3R5cGUuCgkJCSBEb2VzIG5vdCBwcmV2ZW50IGRpcmVjdCB1c2FnZSBvZiB0aGUgY29uc3RydWN0b3IuIFVzZXMgc3RyaWN0IEphdmEgMSBBUEkuIFdvcmtzIG9uIEoyTUUgTUlEUCAxLjAgYXMgd2VsbC4KCQkJJmx0Oy9wJmd0OwoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KICAJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+VU1MQXBwbGV0PC9zaG9ydE5hbWU+CgkJPG5hbWU+VU1MIEFwcGxldCwgTUlEbGV0PC9uYW1lPgoJCTxkb2NMaW5rPmh0dHA6Ly9zc2VsLnZ1Yi5hYy5iZS9zc2VsL3Jlc2VhcmNoOm1kZDpjYXNlc3R1ZGllcyNhcHBsZXRfbWlkbGV0PC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPmh0dHA6Ly9zc2VsLnZ1Yi5hYy5iZS92aWV3Y3ZzL3ZpZXdjdnMucHkvc3ZuLWdlbi9VTUwxQ2FzZVN0dWRpZXMvdW1sMWNzLXRyYW5zZm9ybWF0aW9ucy88L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQkmbHQ7cCZndDsKCQkJVGhlc2UgdHJhbnNmb3JtYXRpb25zIGFyZSBwYXJ0IG9mICB0aGUgJmx0O2EgaHJlZj0iaHR0cDovL3NzZWwudnViLmFjLmJlL3NzZWwvcmVzZWFyY2g6bWRkOmNhc2VzdHVkaWVzIj5VTUwgcmVmaW5lbWVudCB0cmFuc2Zvcm1hdGlvbnMmbHQ7L2EmZ3Q7IGJ5ICZsdDthIGhyZWY9Imh0dHA6Ly9zc2VsLnZ1Yi5hYy5iZS9zc2VsL2Fib3V0Om1lbWJlcnM6ZGVubmlzd2FnZWxhYXIiPkRlbm5pcyBXYWdlbGFhciZsdDsvYSZndDsuCgkJCSZsdDsvcCZndDsKCQkJJmx0O3AmZ3Q7CgkJCVRoZXNlIHRyYW5zZm9ybWF0aW9ucyBpbnRyb2R1Y2UgSmF2YSBBcHBsZXQgaW5mcmFzdHJ1Y3R1cmUgZm9yIGVhY2ggQ2xhc3Mgd2l0aCBhbiAiQXBwbGV0IiBzdGVyZW90eXBlLiBUaGVyZSBhcmUgdHdvIHZhcmlhbnRzIGF2YWlsYWJsZToKCQkJJmx0Oy9wJmd0OwoJCQkmbHQ7dWwmZ3Q7CgkJCSZsdDtsaSZndDsmbHQ7YiZndDsmbHQ7YSBocmVmPSJodHRwOi8vc3NlbC52dWIuYWMuYmUvdmlld2N2cy92aWV3Y3ZzLnB5L1VNTDFDYXNlU3R1ZGllcy91bWwxY3MtdHJhbnNmb3JtYXRpb25zL0FwcGxldC5hdGw/dmlldz1tYXJrdXAiPkFwcGxldC5hdGwmbHQ7L2EmZ3Q7OiZsdDsvYiZndDsgCgkJCVR1cm5zIGVhY2ggIkFwcGxldCIgQ2xhc3MgaW50byBhIGphdmEuYXBwbGV0LkFwcGxldCBhbmQgaW50cm9kdWNlcyB0aGUgImluaXQiLCAiZ2V0UGFyYW1ldGVySW5mbyIgYW5kICJnZXRBcHBsZXRJbmZvIiBPcGVyYXRpb25zL01ldGhvZHMuJmx0Oy9saSZndDsKCQkJJmx0O2xpJmd0OyZsdDtiJmd0OyZsdDthIGhyZWY9Imh0dHA6Ly9zc2VsLnZ1Yi5hYy5iZS92aWV3Y3ZzL3ZpZXdjdnMucHkvVU1MMUNhc2VTdHVkaWVzL3VtbDFjcy10cmFuc2Zvcm1hdGlvbnMvTUlEbGV0LmF0bD92aWV3PW1hcmt1cCI+TUlEbGV0LmF0bCZsdDsvYSZndDs6Jmx0Oy9iJmd0OyAKCQkJVHVybnMgZWFjaCAiQXBwbGV0IiBDbGFzcyBpbnRvIGEgamF2YXgubWljcm9lZGl0aW9uLm1pZGxldC5NSURsZXQgYW5kIGludHJvZHVjZXMgdGhlICJzdGFydEFwcCIsICJwYXVzZUFwcCIsICJkZXN0cm95QXBwIiwgImluaXQiLCAiZGVzdHJveSIsICJzdGFydCIgYW5kICJzdG9wIiBPcGVyYXRpb25zL01ldGhvZHMuCgkJCVdvcmtzIG9uIEoyTUUgTUlEUCAxLjAgb3IgdXAuJmx0Oy9saSZndDsKCQkJJmx0Oy91bCZndDsKCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+Cgk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5VTUxEYXRhVHlwZXM8L3Nob3J0TmFtZT4KCQk8bmFtZT5VTUwgRGF0YVR5cGVzLCBKYXZhMkRhdGFUeXBlczwvbmFtZT4KCQk8ZG9jTGluaz5odHRwOi8vc3NlbC52dWIuYWMuYmUvc3NlbC9yZXNlYXJjaDptZGQ6Y2FzZXN0dWRpZXMjZGF0YXR5cGVzX2phdmEyZGF0YXR5cGVzPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPmh0dHA6Ly9zc2VsLnZ1Yi5hYy5iZS92aWV3Y3ZzL3ZpZXdjdnMucHkvc3ZuLWdlbi9VTUwxQ2FzZVN0dWRpZXMvdW1sMWNzLXRyYW5zZm9ybWF0aW9ucy88L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQkmbHQ7cCZndDsKCQkJVGhlc2UgdHJhbnNmb3JtYXRpb25zIGFyZSBwYXJ0IG9mICB0aGUgJmx0O2EgaHJlZj0iaHR0cDovL3NzZWwudnViLmFjLmJlL3NzZWwvcmVzZWFyY2g6bWRkOmNhc2VzdHVkaWVzIj5VTUwgcmVmaW5lbWVudCB0cmFuc2Zvcm1hdGlvbnMmbHQ7L2EmZ3Q7IGJ5ICZsdDthIGhyZWY9Imh0dHA6Ly9zc2VsLnZ1Yi5hYy5iZS9zc2VsL2Fib3V0Om1lbWJlcnM6ZGVubmlzd2FnZWxhYXIiPkRlbm5pcyBXYWdlbGFhciZsdDsvYSZndDsuCgkJCSZsdDsvcCZndDsKCQkJJmx0O3AmZ3Q7CgkJCSBUaGVzZSB0cmFuc2Zvcm1hdGlvbnMgcmVwbGFjZSB0aGUgT0NMIHR5cGVzIHdpdGggSmF2YSB0eXBlcy4gVGhlcmUgYXJlIHR3byB2YXJpYW50cyBhdmFpbGFibGU6CgkJCSZsdDsvcCZndDsKCQkJJmx0O3VsJmd0OwoJCQkmbHQ7bGkmZ3Q7Jmx0O2ImZ3Q7Jmx0O2EgaHJlZj0iaHR0cDovL3NzZWwudnViLmFjLmJlL3ZpZXdjdnMvdmlld2N2cy5weS9VTUwxQ2FzZVN0dWRpZXMvdW1sMWNzLXRyYW5zZm9ybWF0aW9ucy9EYXRhVHlwZXMuYXRsP3ZpZXc9bWFya3VwIj5EYXRhVHlwZXMuYXRsJmx0Oy9hJmd0OzombHQ7L2ImZ3Q7IAoJCQlVc2VzIHN0cmljdCBKYXZhIDEgQVBJLiBXb3JrcyBvbiBKMk1FIE1JRFAgMS4wIGFzIHdlbGwuJmx0Oy9saSZndDsKCQkJJmx0O2xpJmd0OyZsdDtiJmd0OyZsdDthIGhyZWY9Imh0dHA6Ly9zc2VsLnZ1Yi5hYy5iZS92aWV3Y3ZzL3ZpZXdjdnMucHkvVU1MMUNhc2VTdHVkaWVzL3VtbDFjcy10cmFuc2Zvcm1hdGlvbnMvSmF2YTJEYXRhVHlwZXMuYXRsP3ZpZXc9bWFya3VwIj5KYXZhMkRhdGFUeXBlcy5hdGwmbHQ7L2EmZ3Q7OiZsdDsvYiZndDsgCgkJCVVzZXMgdGhlIEphdmEgMiBDb2xsZWN0aW9ucyBmcmFtZXdvcmsuIFdvcmtzIG9uIEoyTUUgUFAgMS4wIGFzIHdlbGwuJmx0Oy9saSZndDsKCQkJJmx0Oy91bCZndDsKCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPlVNTEFzeW5jTWV0aG9kczwvc2hvcnROYW1lPgoJCTxuYW1lPlVNTCBBc3luY01ldGhvZHM8L25hbWU+CgkJPGRvY0xpbms+aHR0cDovL3NzZWwudnViLmFjLmJlL3NzZWwvcmVzZWFyY2g6bWRkOmNhc2VzdHVkaWVzI2FzeW5jbWV0aG9kczwvZG9jTGluaz4KCQk8c291cmNlTGluaz5odHRwOi8vc3NlbC52dWIuYWMuYmUvdmlld2N2cy92aWV3Y3ZzLnB5L3N2bi1nZW4vVU1MMUNhc2VTdHVkaWVzL3VtbDFjcy10cmFuc2Zvcm1hdGlvbnMvPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCSAgICAJJmx0O3AmZ3Q7CgkJCVRoaXMgdHJhbnNmb3JtYXRpb24gaXMgcGFydCBvZiAgdGhlICZsdDthIGhyZWY9Imh0dHA6Ly9zc2VsLnZ1Yi5hYy5iZS9zc2VsL3Jlc2VhcmNoOm1kZDpjYXNlc3R1ZGllcyI+VU1MIHJlZmluZW1lbnQgdHJhbnNmb3JtYXRpb25zJmx0Oy9hJmd0OyBieSAmbHQ7YSBocmVmPSJodHRwOi8vc3NlbC52dWIuYWMuYmUvc3NlbC9hYm91dDptZW1iZXJzOmRlbm5pc3dhZ2VsYWFyIj5EZW5uaXMgV2FnZWxhYXImbHQ7L2EmZ3Q7LgoJCQkmbHQ7L3AmZ3Q7CgkJCSZsdDtwJmd0OwoJCQlBIHNpbXBsZSB0cmFuc2Zvcm1hdGlvbiB0aGF0IHdyYXBzIHRoZSBNZXRob2QgYm9keSBvZiBlYWNoIE9wZXJhdGlvbiB3aXRoIGFuICJhc3luY2hyb25vdXMiIFN0ZXJlb3R5cGUgaW5zaWRlIGEgVGhyZWFkLgoJCQlVc2VzIGphdmEubGFuZy5UaHJlYWQsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIEphdmEgMS4wIEFQSS4gV29ya3Mgb24gSjJNRSBNSURQIDEuMCBhcyB3ZWxsLgoJCQkmbHQ7L3AmZ3Q7CgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgogIAk8YXRsVHJhbnNmb3JtYXRpb24+CgkJPHNob3J0TmFtZT5VTUxDRDJVTUxQcm9maWxlPC9zaG9ydE5hbWU+CgkJPG5hbWU+VU1MIENsYXNzIERpYWdyYW0gdG8gVU1MIFByb2ZpbGU8L25hbWU+CgkJPGRvY0xpbms+VU1MQ0QyVU1MUHJvZmlsZS9SRUFETUUudHh0PC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPlVNTENEMlVNTFByb2ZpbGUvVU1MQ2xhc3NEaWFncmFtX3RvX1VNTFByb2ZpbGVfdjAuMS56aXA8L3NvdXJjZUxpbms+CgkJPGRlc2NyaXB0aW9uPgoJCQlUaGlzIEFUTCBzY2VuYXJpbyB0cmFuc2Zvcm1zIGEgVU1MMiBDbGFzcyBEaWFncmFtIGludG8gYSBVTUwyIFByb2ZpbGUuCgkJPC9kZXNjcmlwdGlvbj4KCQk8cHViRGF0ZT48L3B1YkRhdGU+Cgk8L2F0bFRyYW5zZm9ybWF0aW9uPgoJPGF0bFRyYW5zZm9ybWF0aW9uPgoJCTxzaG9ydE5hbWU+V1NETDJSMk1MPC9zaG9ydE5hbWU+CgkJPG5hbWU+V1NETCB0byBSMk1MPC9uYW1lPgoJCTxkb2NMaW5rPldTREwyUjJNTC9SRUFETUUudHh0PC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPldTREwyUjJNTC9XU0RMMlIyTUwuemlwPC9zb3VyY2VMaW5rPgoJCTxkZXNjcmlwdGlvbj4KCQkJPHAgYWxpZ249Imp1c3RpZnkiPgoJCQlUaGUgV1NETCB0byBSMk1MIHRyYW5zZm9ybWF0aW9uIHNjZW5hcmlvIGRlc2NyaWJlcyBhIHRyYW5zZm9ybWF0aW9uIGZyb20gV1NETCAoV2ViIFNlcnZpY2VzIERlc2NyaXB0aW9uIExhbmd1YWdlKSAKCQkJbWV0YW1vZGVsIGludG8gYSBSMk1MIChSRVdFUlNFIEkxIE1hcmt1cCBMYW5ndWFnZSkgbWV0YW1vZGVsLiAiV1NETCBlbmFibGVzIG9uZSB0byBzZXBhcmF0ZSB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGFic3RyYWN0IAoJCQlmdW5jdGlvbmFsaXR5IG9mZmVyZWQgYnkgYSBzZXJ2aWNlIGZyb20gY29uY3JldGUgZGV0YWlscyBvZiBhIHNlcnZpY2UgZGVzY3JpcHRpb24gc3VjaCBhcyAnaG93JyBhbmQgJ3doZXJlJyB0aGF0CgkJCWZ1bmN0aW9uYWxpdHkgaXMgb2ZmZXJlZCIuIFJFV0VSU0UgSTEgUnVsZSBNYXJrdXAgTGFuZ3VhZ2UgaXMgYSBnZW5lcmFsIHdlYiBydWxlIG1hcmt1cCBsYW5ndWFnZSwgdGhhdCBjYW4gcmVwcmVzZW50CgkJCWRpZmZlcmVudCBydWxlIHR5cGVzOiBpbnRlZ3JpdHksIHJlYWN0aW9uLCBkZXJpdmF0aW9uIGFuZCBwcm9kdWN0aW9uLiBJdCBpcyB1c2VkIGFzIHBpdm90YWwgbWV0YW1vZGVsIHRvIGVuYWJsZSBzaGFyaW5nCgkJCXJ1bGVzIGJldHdlZW4gZGlmZmVyZW50IHJ1bGUgbGFuZ3VhZ2VzLgoJCQk8L3A+CgkJCTxwPgoJCQkJVGhpcyBzY2VuYXJpbyBpcyBhIGNvbnRyaWJ1dGlvbiBmcm9tIE1hcmtvIFJpYmFyaWMuCgkJCTwvcD4KCQk8L2Rlc2NyaXB0aW9uPgoJCTxwdWJEYXRlPjwvcHViRGF0ZT4KCTwvYXRsVHJhbnNmb3JtYXRpb24+CiAgCTxhdGxUcmFuc2Zvcm1hdGlvbj4KCQk8c2hvcnROYW1lPlhTTFQyWFF1ZXJ5PC9zaG9ydE5hbWU+CgkJPG5hbWU+WFNMVCB0byBYUXVlcnk8L25hbWU+CgkJPGRvY0xpbms+WFNMVDJYUXVlcnkvRXhhbXBsZVhTTFQyWFF1ZXJ5W3YwMC4wMV0ucGRmPC9kb2NMaW5rPgoJCTxzb3VyY2VMaW5rPlhTTFQyWFF1ZXJ5L1hTTFQyWFF1ZXJ5LnppcDwvc291cmNlTGluaz4KCQk8ZGVzY3JpcHRpb24+CgkJCVRoZSBYU0xUIHRvIFhRdWVyeSBleGFtcGxlIGRlc2NyaWJlcyBhIHNpbXBsaWZpZWQgdHJhbnNmb3JtYXRpb24gb2YgWFNMVCBjb2RlIHRvIFhRdWVyeSBjb2RlLgoJCTwvZGVzY3JpcHRpb24+CgkJPHB1YkRhdGU+PC9wdWJEYXRlPgoJPC9hdGxUcmFuc2Zvcm1hdGlvbj4KPC9hdGxUcmFuc2Zvcm1hdGlvbnM+