PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIKImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CjwhLS0gCiAgICBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAgICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKICAgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAogICAgQ29udHJpYnV0b3JzOgogICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBpbXBsZW1lbnRhdGlvbgotLT4KCjxodG1sPgo8aGVhZD4KPHRpdGxlPlVudGl0bGVkIERvY3VtZW50PC90aXRsZT4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KLnN0eWxlMSB7Zm9udC1mYW1pbHk6ICJDb3VyaWVyIE5ldyIsIENvdXJpZXIsIG1vbm99Ci0tPgo8L3N0eWxlPgo8L2hlYWQ+Cgo8Ym9keT4KPGgyPjxhPkV4ZXJjaXNlIDM6IENyZWF0ZSBhIGN1c3RvbWl6ZWQgY29uZmlndXJhdGlvbiA8L2E+PC9oMj4KPHA+VGhlIHB1cnBvc2Ugb2YgdGhpcyBleGVyY2lzZSBpcyB0byBjcmVhdGUgeW91ciBvd24gY3VzdG9taXplZCBjb25maWd1cmF0aW9uLiA8L3A+CjxvbD4KICA8bGk+CiAgICA8cD5NYWtlIHN1cmUgeW91IGFyZSBpbiB0aGUgPHN0cm9uZz5BdXRob3JpbmcgPC9zdHJvbmc+IHBlcnNwZWN0aXZlLiA8L3A+CiAgPC9saT4KICA8bGk+CiAgICA8cD5DbGljayA8c3Ryb25nPkZpbGUgJmd0OyBOZXcgJmd0OyBDb25maWd1cmF0aW9uPC9zdHJvbmc+LiBPciwgeW91IGNhbiByaWdodC1jbGljayBvbiB0aGUgPHN0cm9uZz5Db25maWd1cmF0aW9uczwvc3Ryb25nPiBmb2xkZXIgaW4gdGhlIExpYnJhcnkgVmlldyBhbmQgc2VsZWN0IDxzdHJvbmc+TmV3IENvbmZpZ3VyYXRpb24uIDwvc3Ryb25nPlRoZSBDb25maWd1cmF0aW9uIEVkaXRvciBpcyBsYXVuY2hlZC48L3A+CiAgPC9saT4KICA8bGk+CiAgICA8cD4gTmFtZSB0aGUgY29uZmlndXJhdGlvbiwgPHNwYW4gY2xhc3M9InN0eWxlMSI+bXlfY29uZmlndXJhdGlvbjwvc3Bhbj4uPC9wPgogIDwvbGk+CiAgPGxpPgogICAgPHA+IENsaWNrIG9uIHRoZSA8c3Ryb25nPlBsdWctaW4gYW5kIFBhY2thZ2UgU2VsZWN0aW9uIDwvc3Ryb25nPiB0YWIuIEluIHRoZSBsaXN0IG9mIFBsdWdpbnMsIGNoZWNrIE15IFBsdWdpbiB0aGF0IHlvdSBjcmVhdGVkIGluIHRoZSA8dT5DcmVhdGUgQ29yZSBNZXRob2QgQ29udGVudDwvdT4gdHV0b3JpYWwuIFRoaXMgcGx1Z2luIGhhcyBSVVAgYXMgYSBiYXNlIGFuZCByZWZlcmVuY2VzIHBhcnRzIG9mIHRoZSBSVVAgY29udGVudCwgYW5kIGFsc28gaGFzIGVsZW1lbnRzIHRoYXQgZXh0ZW5kLCBjb250cmlidXRlIHRvLCBhbmQgcmVwbGFjZSBiYXNlIFJVUCBjb250ZW50LiA8YnI+CiAgICAgIElmIHlvdSBkbyBub3QgaGF2ZSB0aGlzIHBsdWdpbiwgY29uc2lkZXIgY29tcGxldGluZyB0aGUgPHU+Q3JlYXRlIENvcmUgTWV0aG9kIENvbnRlbnQ8L3U+IHR1dG9yaWFsIGJlZm9yZSBjb250aW51aW5nIHdpdGggdGhpcyB0dXRvcmlhbC4gPC9wPgogIDwvbGk+CiAgPGxpPgogICAgPHA+IFRoZSBkaXNwbGF5IHdpbGwgZ2l2ZSB5b3UgYSBzZXJpZXMgb2Ygd2FybmluZ3MgYW5kIHRoZSBMaWJyYXJ5IEVycm9yIExvZyB2aWV3IHdpbGwgYmUgZGlzcGxheWVkLiA8YnI+CiAgICAgIEVjbGlwc2UgUHJvY2VzcyBGcmFtZXdvcmsgQ29tcG9zZXIgZ2l2ZXMgdGhlc2Ugd2FybmluZ3MgdG8gaGVscCBlbnN1cmUgdGhhdCB5b3UgY3JlYXRlIGEgY29uZmlndXJhdGlvbiB0aGF0IJFtYWtlcyBzZW5zZScuIElmIHlvdSByZWZlcmVuY2UgYW4gZWxlbWVudCwgeW91IHdpbGwgb25seSBiZSBhYmxlIHRvIHNlZSB0aGUgZnVsbCBkZXRhaWxzIGZvciB0aGF0IGVsZW1lbnQgaW4gYSBwdWJsaXNoZWQgd2ViIHNpdGUgaWYgdGhlIHBhY2thZ2UgY29udGFpbmluZyB0aGUgZWxlbWVudCBpcyBpbiB0aGUgY29uZmlndXJhdGlvbi4gSWYgdGhlIHBhY2thZ2UgY29udGFpbmluZyB0aGUgZWxlbWVudCBpcyBub3QgaW4gdGhlIGNvbmZpZ3VyYXRpb24sIHRoZSCRb2ZmZW5kaW5nJyBwYWNrYWdlIGlzIG1hcmtlZCBhcyBhIHdhcm5pbmcgliB5b3UgbWF5IGNob29zZSBub3QgdG8gaW5jbHVkZSB0aGUgZnVsbCBkZXRhaWxzIG9mIHRoZSByZWZlcmVuY2VkIGVsZW1lbnQuIDwvcD4KICA8L2xpPgogIDxsaT4KICAgIDxwPiBDaGVjayB0aGUgPHN0cm9uZz5BZGQgTWlzc2luZyBSZWZlcmVuY2VzPC9zdHJvbmc+IGJ1dHRvbi4gVGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgYW5kIHJlY3Vyc2l2ZWx5IGFkZCBwYWNrYWdlcyBjb250YWluaW5nIGFueSBlbGVtZW50cyB0aGF0IGFyZSByZWZlcmVuY2VkIGluIGFscmVhZHkgc2VsZWN0ZWQgcGFja2FnZXMuIEV4cGxvcmUgd2hhdCBwYWNrYWdlcyBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIGNvbmZpZ3VyYXRpb24uIFlvdSB3aWxsIHByb2JhYmx5IG5vdyBzZWUgYWxsIG9mIFJVUCBzZWxlY3RlZC4gVGhpcyBpcyBiZWNhdXNlIG9mIHRoZSBpbnRlci1jb25uZWN0ZWQgbmF0dXJlIG9mIFJVUC4gVW5jaGVjayBSVVAgdG8gcmVzdG9yZSB0aGUgd2FybmluZ3MuIDwvcD4KICA8L2xpPgogIDxsaT4KICAgIDxwPiBEcmlsbCBkb3duIGludG8gdGhlIGNvbnRlbnQgcGFja2FnZXMgaW4gdGhlIE15IFBsdWdpbiwgcGx1Z2luIHBhY2thZ2UgICBieSBjbGlja2luZyBvbiB0aGUgPHN0cm9uZz4rPC9zdHJvbmc+IHNpZ25zLiBVbmNoZWNrIHRoZTxzdHJvbmc+IEV4dGVuZHMgVGVzdCA8L3N0cm9uZz5hbmQgPHN0cm9uZz5SZXBsYWNlIFRlc3QgPC9zdHJvbmc+Y29udGVudCBwYWNrYWdlcy4gVW5jaGVja2luZyB0aGVzZSBhdm9pZHMgY29uZmxpY3RzIHRoYXQgbWF5IG9jY3VyIGJlY2F1c2UgdGhlIHNhbWUgYmFzZSBlbGVtZW50IGlzIGFmZmVjdGVkIGJ5IHRoZSBwbHVnaW5zLiA8L3A+CiAgPC9saT4KICA8bGk+CiAgICA8cD4gVGhlcmUgc2hvdWxkIGJlIGEgPHN0cm9uZz4rPC9zdHJvbmc+IGJ5IHRoZSA8c3Ryb25nPkNvbnRyaWJ1dGlvbiBUZXN0PC9zdHJvbmc+IHBhY2thZ2UuIENsaWNrIHRoZSA8c3Ryb25nPk1ha2UgQ2xvc3VyZSBieSBGaXhpbmcgRXJyb3JzPC9zdHJvbmc+IGJ1dHRvbi4gVGhpcyBhdXRvbWF0aWNhbGx5IG1ha2VzIHlvdXIgY29uZmlndXJhdGlvbiBjb21wbGV0ZSBiYXNlZCBvbiB3aGF0IGlzIGN1cnJlbnRseSBzZWxlY3RlZC4gPC9wPgogIDwvbGk+CiAgPGxpPgogICAgPHA+IERyaWxsIGRvd24gaW50byB0aGUgUlVQIHBsdWdpbiwgYW5kIHNlZSB3aGF0IHBhY2thZ2VzIGhhdmUgYmVlbiBzZWxlY3RlZC4gVGhlc2Ugd2lsbCBiZSB0aGUgcGFja2FnZXMgdGhhdCBjb250YWluIHRoZSBlbGVtZW50cyB1c2VkIGFzIGJhc2UgZWxlbWVudHMgaW4gdGhlIENvbmZpZ3VyYXRpb24gVGVzdCBjb250ZW50IHBhY2thZ2UuIDwvcD4KICA8L2xpPgogIDxsaT4gICAgQ2xpY2sgb24gdGhlIDxzdHJvbmc+Vmlld3M8L3N0cm9uZz4gdGFiLiAKICAgIDxwPkFueSBjdXN0b20gY2F0ZWdvcnkgY2FuIGJlIGFkZGVkIGFzIGEgdmlldyB0byBhIGNvbmZpZ3VyYXRpb24uIFlvdSBjYW4gY3JlYXRlZCBhbnkgbnVtYmVyIG9mIGN1c3RvbSBjYXRlZ29yaWVzIGFuZCB0aGV5IGFyZSB2ZXJ5IGZsZXhpYmxlIGluIHRlcm1zIG9mIHRoZSBjb250ZW50IHRoYXQgeW91IGNhbiBhZGQgdG8gYSBjdXN0b20gY2F0ZWdvcnkgYW5kIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgY29udGVudCBhcHBlYXJzLiA8L3A+CiAgICA8cD5BZGQgdGhlIDxzcGFuIGNsYXNzPSJzdHlsZTEiPm15X2N1c3RvbV9jYXRlZ29yeTwvc3Bhbj4gY3VzdG9tIGNhdGVnb3J5IGFzIGEgdmlldyBpbiB0aGUgY29uZmlndXJhdGlvbi4gPC9wPgogICAgPHA+RXhwZXJpbWVudCB3aXRoIGFkZGluZyBvdGhlciBjdXN0b20gY2F0ZWdvcmllcyBhcyB2aWV3cy4gPC9wPgogIDwvbGk+CiAgPGxpPgogICAgPHA+IE1ha2UgPHNwYW4gY2xhc3M9InN0eWxlMSI+bXlfY3VzdG9tX2NhdGVnb3J5PC9zcGFuPiB0aGUgZGVmYXVsdCB2aWV3IGJ5IHNlbGVjdGluZyB0aGUgPHNwYW4gY2xhc3M9InN0eWxlMSI+bXlfY3VzdG9tX2NhdGVnb3J5PC9zcGFuPiB0YWIgYW5kIGNsaWNraW5nIHRoZSA8c3Ryb25nPk1ha2UgRGVmYXVsdDwvc3Ryb25nPiBidXR0b24uIDwvcD4KICA8L2xpPgogIDxsaT4KICAgIDxwPiBTYXZlIHRoZSBjb25maWd1cmF0aW9uIGJ5IGNsb3NpbmcgdGhlIENvbmZpZ3VyYXRpb24gRWRpdG9yLiA8L3A+CiAgPC9saT4KICA8bGk+CiAgICA8cD4gU2VsZWN0IDxzcGFuIGNsYXNzPSJzdHlsZTEiPm15X2NvbmZpZ3VyYXRpb248L3NwYW4+IGluIHRoZSBjb25maWd1cmF0aW9uIHNlbGVjdGlvbiBib3ggYXQgdGhlIHRvcCBvZiB0aGUgc2NyZWVuLiBZb3Ugd2lsbCBzZWUgdGhlIGl0ZW1zIGRpc3BsYXllZCBpbiB0aGUgQ29uZmlndXJhdGlvbiBWaWV3IGNoYW5nZS4gPC9wPgogIDwvbGk+CiAgPGxpPiBTd2l0Y2ggdG8gdGhlIDxzdHJvbmc+QnJvd3Npbmc8L3N0cm9uZz4gcGVyc3BlY3RpdmUuIEV4cGxvcmUgdGhlIGNvbnRlbnQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gdmlldy4gWW91IHNob3VsZCBzZWUgdGhlIGNvbnRlbnQgeW91IGNyZWF0ZWQgaW4geW91ciBwbHVnaW5zIGFuZCBzb21lIFJVUCBjb250ZW50LiA8L2xpPgo8L29sPgo8L2JvZHk+CjwvaHRtbD4K