PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPjxodG1sPjxoZWFkPjx0aXRsZT5BcGFjaGUgU2F2YW4vQyAtIFRoZSBXUy1FdmVudGluZyBNb2R1bGUgZm9yIEFwYWNoZSBBeGlzMi9DPC90aXRsZT48c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJhbGwiPgogICAgICAgICAgQGltcG9ydCB1cmwoIi4uL3N0eWxlL21hdmVuLWJhc2UuY3NzIik7CiAgICAgICAgICAKCQkJICAgIEBpbXBvcnQgdXJsKCIuLi9zdHlsZS9tYXZlbi1jbGFzc2ljLmNzcyIpOzwvc3R5bGU+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9zdHlsZS9wcmludC5jc3MiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0icHJpbnQiPjwvbGluaz48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj48L21ldGE+PC9oZWFkPjxib2R5IGNsYXNzPSJjb21wb3NpdGUiPjxkaXYgaWQ9ImJhbm5lciI+PGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyIgaWQ9Im9yZ2FuaXphdGlvbkxvZ28iPjxpbWcgYWx0PSJBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiIgc3JjPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvaW1hZ2VzL2FzZi1sb2dvLmdpZiI+PC9pbWc+PC9hPjxhIGhyZWY9Imh0dHA6Ly93cy5hcGFjaGUub3JnL3NhdmFuL2MiIGlkPSJwcm9qZWN0TG9nbyI+PGltZyBhbHQ9IkFwYWNoZSBTYXZhbi9DIiBzcmM9Imh0dHA6Ly93cy5hcGFjaGUub3JnL3NhdmFuL2MvaW1hZ2VzL3NhdmFuY19sb2dvLmpwZyI+PC9pbWc+PC9hPjxkaXYgY2xhc3M9ImNsZWFyIj48aHI+PC9ocj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJicmVhZGNydW1icyI+PGRpdiBjbGFzcz0ieGxlZnQiPgogICAgICAgICAgICAgICAgCUxhc3QgcHVibGlzaGVkOiAyOCBNYXkgMjAwNwogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJ4cmlnaHQiPjwvZGl2PjxkaXYgY2xhc3M9ImNsZWFyIj48aHI+PC9ocj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJsZWZ0Q29sdW1uIj48ZGl2IGlkPSJuYXZjb2x1bW4iPjxkaXYgaWQ9Im1lbnVBcGFjaGVfU2F2YW5fQyI+PGg1PkFwYWNoZSBTYXZhbi9DPC9oNT48dWw+PGxpIGNsYXNzPSJub25lIj48YSBocmVmPSIuLi9pbmRleC5odG1sIj5BcGFjaGUgU2F2YW4vQyBIb21lPC9hPjwvbGk+PGxpIGNsYXNzPSJleHBhbmRlZCI+PGEgaHJlZj0iLi4vZG93bmxvYWQuY2dpIj5Eb3dubG9hZCBTYXZhbi9DPC9hPjx1bD48bGkgY2xhc3M9Im5vbmUiPjxhIGhyZWY9Ii4uL2Rvd25sb2FkLmNnaSI+UmVsZWFzZXM8L2E+PC9saT48L3VsPjwvbGk+PGxpIGNsYXNzPSJleHBhbmRlZCI+PGEgaHJlZj0iLi4vZG9jcy9pbmRleC5odG1sIj5Eb2N1bWVudGF0aW9uPC9hPjx1bD48bGkgY2xhc3M9Im5vbmUiPjxhIGhyZWY9Ii4uL2RvY3MvaW5zdGFsbGF0aW9uZ3VpZGUuaHRtbCI+SW5zdGFsbGF0aW9uIEd1aWRlPC9hPjwvbGk+PGxpIGNsYXNzPSJub25lIj48YSBocmVmPSIuLi9kb2NzL3NhdmFuY19tYW51YWwuaHRtbCI+U2F2YW4vQyBtYW51YWw8L2E+PC9saT48L3VsPjwvbGk+PGxpIGNsYXNzPSJleHBhbmRlZCI+PGEgaHJlZj0iLi4vbGlzdHNfaXNzdWVzLmh0bWwiPkdldCBJbnZvbHZlZDwvYT48dWw+PGxpIGNsYXNzPSJub25lIj48YSBocmVmPSIuLi9saXN0c19pc3N1ZXMuaHRtbCI+TWFpbGluZyBMaXN0cyAmYW1wOyBJc3N1ZSBUcmFja2luZzwvYT48L2xpPjxsaSBjbGFzcz0ibm9uZSI+PGEgaHJlZj0iLi4vc3ZuLmh0bWwiPkNoZWNrb3V0IFNvdXJjZSBDb2RlPC9hPjwvbGk+PC91bD48L2xpPjxsaSBjbGFzcz0iZXhwYW5kZWQiPjxhIGhyZWY9Ii4uL2NvZGluZ19jb252ZW50aW9ucy5odG1sIj5EZXZlbG9wZXIgR3VpZGVsaW5lczwvYT48dWw+PGxpIGNsYXNzPSJub25lIj48YSBocmVmPSIuLi9jb2RpbmdfY29udmVudGlvbnMuaHRtbCI+Q29kaW5nIENvbnZlbnRpb248L2E+PC9saT48bGkgY2xhc3M9Im5vbmUiPjxhIGhyZWY9Ii4uL3ZlcnNpb25pbmcuaHRtbCI+VmVyc2lvbm5pbmc8L2E+PC9saT48L3VsPjwvbGk+PGxpIGNsYXNzPSJleHBhbmRlZCI+PGEgaHJlZj0iLi4vdGVhbS1saXN0Lmh0bWwiPlByb2plY3QgSW5mb3JtYXRpb248L2E+PHVsPjxsaSBjbGFzcz0ibm9uZSI+PGEgaHJlZj0iLi4vdGVhbS1saXN0Lmh0bWwiPlByb2plY3QgVGVhbTwvYT48L2xpPjxsaSBjbGFzcz0ibm9uZSI+PGEgaHJlZj0iaHR0cDovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi93ZWJzZXJ2aWNlcy9zYW5kZXNoYS90cnVuay9jIiBjbGFzcz0iZXh0ZXJuYWxMaW5rIiB0aXRsZT0iRXh0ZXJuYWwgTGluayI+U291cmNlIENvZGU8L2E+PC9saT48L3VsPjwvbGk+PC91bD48L2Rpdj48YSBocmVmPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy8iIHRpdGxlPSJCdWlsdCBieSBNYXZlbiIgaWQ9InBvd2VyZWRCeSI+PGltZyBhbHQ9IkJ1aWx0IGJ5IE1hdmVuIiBzcmM9Ii4uL2ltYWdlcy9sb2dvcy9tYXZlbi1idXR0b24tMS5wbmciPjwvaW1nPjwvYT48L2Rpdj48L2Rpdj48ZGl2IGlkPSJib2R5Q29sdW1uIj48ZGl2IGNsYXNzPSJjb250ZW50Qm94Ij48ZGl2IGNsYXNzPSJzZWN0aW9uIj48YSBuYW1lPSJBcGFjaGVfU2F2YW5fQ19JbnN0YWxsYXRpb25fR3VpZGUiPjwvYT48aDI+QXBhY2hlIFNhdmFuL0MgSW5zdGFsbGF0aW9uIEd1aWRlPC9oMj48cD5UaGlzIGRvY3VtZW50IGd1aWRlcyB5b3Ugb24gaG93IHRvIGluc3RhbGwgU2F2YW4vQyB3aXRoIEF4aXMyL0MsIGFuZCBydW4KdGhlIHNlcnZlciBhbmQgY2xpZW50IHNhbXBsZXMgb24gTGludXggYW5kIE1pY3Jvc29mdCBXaW5kb3dzIG9wZXJhdGluZwpzeXN0ZW1zLjwvcD4KCjxwPlRoaXMgcmVsZWFzZSBjb21lcyBpbiBzb3VyY2UgZm9ybS4gVGhpcyBkb2N1bWVudCBleHBsYWluIGhvdyB0byBpbnN0YWxsCnRoZSBzb3VyY2UuPC9wPgoKPHA+UGxlYXNlIHNlbmQgeW91ciBmZWVkYmFjayB0byB0aGUgZGV2ZWxvcGVyIG1haWxpbmcgbGlzdDogPGEKaHJlZj0ibWFpbHRvOmF4aXMtYy1kZXZAd3MuYXBhY2hlLm9yZyI+YXhpcy1jLWRldkB3cy5hcGFjaGUub3JnPC9hPgooU3Vic2NyaXB0aW9uIGRldGFpbHMgYXJlIGF2YWlsYWJsZSBvbiB0aGUgPGEKaHJlZj0iaHR0cDovL3dzLmFwYWNoZS5vcmcvc2FuZGVzaGEvc2F2YW4vYyI+U2F2YW4gc2l0ZTwvYT4uKSBQbGVhc2UgcmVtZW1iZXIKdG8gcHJlZml4IHRoZSBzdWJqZWN0IHdpdGggW1NhdmFuL0NdLjwvcD4KCjxoMj5Db250ZW50czwvaDI+Cjx1bD4KICA8bGk+PGEgaHJlZj0iI2xpbnV4Ij5JbnN0YWxsaW5nIGFuZCBSdW5uaW5nIG9uIExpbnV4PC9hPiAKICAgIDx1bD4KICAgICAgPGxpPjxhIGhyZWY9IiNsaW51eF9zb3VyY2UiPlVzaW5nIHRoZSBTb3VyY2UgUmVsZWFzZTwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0iI2xpbnV4X2JpbmFyeSI+VXNpbmcgdGhlIEJpbmFyeSBSZWxlYXNlPC9hPjwvbGk+CiAgICA8L3VsPgogIDwvbGk+CiAgPGxpPjxhIGhyZWY9IiN3aW4iPkluc3RhbGxpbmcgYW5kIFJ1bm5pbmcgb24gTWljcm9zb2Z0IFdpbmRvd3MgKHdpbjMyKTwvYT4gCiAgICA8dWw+CiAgICAgIDxsaT48YSBocmVmPSIjd2luX3NvdXJjZSI+VXNpbmcgdGhlIFNvdXJjZSBSZWxlYXNlPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSIjd2luX2JpbmFyeSI+VXNpbmcgdGhlIEJpbmFyeSBSZWxlYXNlPC9hPjwvbGk+CiAgICA8L3VsPgogIDwvbGk+CjwvdWw+CjxhIGlkPSJsaW51eCI+PC9hPiAKCjxoMj4xLiBJbnN0YWxsaW5nIGFuZCBSdW5uaW5nIG9uIExpbnV4PC9oMj4KCjxwPjxhIGhyZWY9Imh0dHA6Ly93cy5hcGFjaGUub3JnL3NhdmFuL2MvZG93bmxvYWQuY2dpIj5Eb3dubG9hZDwvYT4gc291cmNlCmRpc3RyaWJ1dGlvbjwvcD4KPGEgaWQ9ImxpbnV4X3NvdXJjZSI+PC9hPiAKCjxoMz4xLjEuIEluc3RhbGxpbmcgU2F2YW4vQyBTb3VyY2UgUmVsZWFzZSBvbiBMaW51eDwvaDM+Cgo8cD5UaGlzIHZlcnNpb24gb2YgU2F2YW4vQyBkZXBlbmRzIG9uIEF4aXMyL0MgMS42LiA8YQpocmVmPSJodHRwOi8vd3MuYXBhY2hlLm9yZy9heGlzMi9jL2Rvd25sb2FkLmNnaSI+RG93bmxvYWQgQXhpczIvQzwvYT4gZnJvbQphbmQgaW5zdGFsbC4gL3AmZ3Q7IDwvcD4KPG9sPgogIDxsaT5Eb3dubG9hZCBTYXZhbiBzb3VyY2UgZGlzdHJpYnV0aW9uPC9saT4KICA8bGk+RXh0cmFjdCB0aGUgc291cmNlIGRpc3RyaWJ1dGlvbiBhbmQgZ28gdG8gZXh0cmFjdGVkIGRpcmVjdG9yeTwvbGk+CiAgPGxpPlJ1biBjb25maWd1cmUgd2l0aCBBWElTMi9DIGluY2x1ZGUgcGF0aC4gCiAgICA8cHJlPi4vY29uZmlndXJlIC0tcHJlZml4PSZsdDtheGlzMmNfZGVwbG95X3BhdGgmZ3Q7IC0tZW5hYmxlLXN0YXRpYz1ubyAtLXdpdGgtYXhpczI9Jmx0O2F4aXMyY19pbmNsdWRlX2ZpbGVfcGF0aCZndDs8L3ByZT4KICA8L2xpPgogIDxsaT5SdW4gbWFrZSBhbmQgbWFrZSBpbnN0YWxsPC9saT4KPC9vbD4KCjxwPlR5cGUgY29uZmlndXJlIC0taGVscCBmb3IgYWxsIGF2YWlsYWJsZSBvcHRpb25zLjwvcD4KCjxwPlRoaXMgd2lsbCBpbnN0YWxsIHRoZSBTYXZhbi9DIGFzIGEgbW9kdWxlIGluIEF4aXMyL0MgaW4KJmx0O2F4aXMyY19kZXBsb3lfcGF0aCZndDsvbW9kdWxlcyBmb2xkZXIuIFRoZSBtb2R1bGUgZm9sZGVyIGNvbnRhaW5zIHRoZQpTYXZhbi9DIGxpYnJhcmllcyBhbmQgdGhlIG1vZHVsZS54bWwgZmlsZS4gSXQgd2lsbCBhbHNvIGluc3RhbGwKbGlic2F2YW5fY2xpZW50LnNvIHNhdmFuIGNsaWVudCBsaWJyYXJ5IGluICZsdDtheGlzMmNfZGVwbG95X3BhdGgmZ3Q7L2xpYgpmb2xkZXIuIFRoaXMgY2xpZW50IGxpYnJhcnkgaXMgbmVlZGVkIGZvciBzYXZhbiBjbGllbnRzIHRvIGJlIGxpbmtlZCB3aXRoLiA8YQppZD0ibGludXhfYmluYXJ5Ij48L2E+IDwvcD4KCjxwPlNhdmFuL0MgaW5zdGFsbGF0aW9uIGhhcyB0aGUgZm9sbG93aW5nIGZvbGRlciBzdHJ1Y3R1cmUuIDwvcD4KPHByZT4gICAKICAgIFNhdmFuCiAgICAgICAgfAogICAgICAgICsgLSBtb2R1bGVzL3NhdmFuIChzYXZhbiBtb2R1bGUgbGlicmFyeSBhbmQgbW9kdWxlLnhtbCBmaWxlKQogICAgICAgICsgLSBkb2NzCiAgICAgICAgfAogICAgICAgICsgLSBzYW1wbGVzCiAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgKyAtIHNvdXJjZSBmaWxlcyBvZiBzYW1wbGVzIGluIGZvbGRlcnMKICAgICAgICArIC0gc2VydmljZXMgKENvbnRhaW4gU3Vic2NyaXB0aW9uIE1hbmFnZXIgc2VydmljZSBhbmQgc2FtcGxlIGRhdGEgc291cmNlIHNlcnZpY2VzKQogICAgICAgIHwKICAgICAgICArIC0gaW5jbHVkZSAoIGhlYWRlciBmaWxlcykKICAgICAgICArIC0gYmluCiAgICAgICAgKyAtIGJpbi9zYW1wbGVzL3NhdmFuICggc2FtcGxlIGV4ZWN1dGFibGVzKQogICAgICAgICsgLSBsaWIgPC9wcmU+CjxhIGlkPSJ3aW4iPjwvYT4gCgo8aDI+Mi4gSW5zdGFsbGluZyBhbmQgUnVubmluZyBvbiBNaWNyb3NvZnQgV2luZG93czwvaDI+Cgo8cD5UaGlzIHRvbyBjYW4gYmUgZG9uZSB1c2luZyBiaW5hcnkgb3Igc291cmNlIGRpc3RyaWJ1dGlvbnMuICg8YQpocmVmPSJodHRwOi8vd3MuYXBhY2hlLm9yZy9zYXZhbi9jL2Rvd25sb2FkLmNnaSI+RG93bmxvYWQ8L2E+IHRoZSB0d28KZGlzdHJpYnV0aW9ucy4pPC9wPgo8YSBpZD0id2luX3NvdXJjZSI+PC9hPiAKCjxoMz4yLjEuIEluc3RhbGxpbmcgU2F2YW4vQyBTb3VyY2UgUmVsZWFzZSBvbiBXaW5kb3dzPC9oMz4KPG9sPgogIDxsaT5Zb3UgbmVlZCB0byBoYXZlIHVuemlwZWQgQXhpczIvQyAxLjAgcmVsZWFzZSBiaW5hcnkgdG8gc29tZSBmb2xkZXIuPC9saT4KICA8bGk+T24geW91ciBjbWQuZXhlIGNkIHRvICZsdDtzYXZhbiBzcmMmZ3Q7XGJ1aWxkXHdpbjMyIDxiciAvPgogICAgRWRpdCBjb25maWd1cmUuaW4gZmlsZSB3aXRoIHlvdXIgYmluYXJ5IGxvY2F0aW9ucy4gPGJyIC8+CiAgPC9saT4KICA8bGk+VG8gc2V0IG5lY2Vzc2FyeSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb24gY29tbWFuZCBsaW5lIHJ1biB2Y3ZhcnMzMi5iYXQKICAgIGZpbGUuIDwvbGk+CiAgPGxpPlJ1biBubWFrZSBkaXN0IGNvbW1hbmQgb24gY29tbWFuZCBsaW5lLiBUaGlzIHdpbGwgYnVpbGQgdGhlIFNhdmFuL0MKICAgIGJpbmFyeSBhbmQgc2FtcGxlcyB0byBhIGRpcmVjdG9yeSBzYXZhbiBpbiAmbHQ7c2F2YW4gc3JjJmd0O1xidWlsZFxzYXZhbi4KICA8L2xpPgo8L29sPgo8YSBpZD0iYmluX2JpbmFyaWVzIj48L2E+IAoKPGgzPjIuIDIuIEluc3RhbGxpbmcgU2F2YW4vQyBCaW5hcnkgUmVsZWFzZSBvbiBXaW5kb3dzPC9oMz4KCjxwPlNhdmFuL0MgYmluYXJ5IGRpc3RyaWJ1dGlvbiB3aWxsIGhhdmUgZm9sbG93aW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuIDwvcD4KPHByZT4gICAgU2F2YW4KICAgICAgICB8CiAgICAgICAgKyAtIFNhdmFuIChzYXZhbiBtb2R1bGUgZGxsIGFuZCBtb2R1bGUueG1sIGZpbGUpCiAgICAgICAgfAogICAgICAgICsgLSBzYW1wbGVzCiAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgKyAtIGJpbiAKICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICArIC0gc291cmNlIGZpbGVzIG9mIHNhbXBsZXMgaW4gZm9sZGVycwogICAgICAgIHwKICAgICAgICArIC0gaW5jbHVkZSAoIGhlYWRlciBmaWxlcykKPC9wcmU+CjxvbD4KICA8bGk+Q29weSBTYXZhbiBkaXJlY3RvcnkgKCBjb250YWluaW5nIHNhdmFuIGRsbCBhbmQgbW9kdWxlLnhtbCApIHRvCiAgICAmbHQ7QVhJUzJDX0hPTUUmZ3Q7XG1vZHVsZXMgZGlyZWN0b3J5LjwvbGk+CiAgPGxpPkNvcHkgYXhpczIueG1sIGZpbGUgaW4gU2F2YW4gZGlyZWN0b3J5IHRvICZsdDtBWElTMkNfSE9NRSZndDsgPC9saT4KPC9vbD4KCjxwPk5vdyB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gcnVuIHRoZSBzYW1wbGVzLiA8L3A+Cgo8aDM+Tm90ZXM8L2gzPgo8b2w+CiAgPGxpPlNhdmFuL0MgaGFzIHBsdWdnYWJsZSBzdG9yYWdlIG1lY2hhbmlzbSBmb3Igc3RvcmluZyBzdWJzY3JpYmVycy4gQnkKICAgIGRlZmF1bHQgaXQgcnVucyB3aXRoIFNxbGl0ZSBlbWJlZGRlZCBkYXRhYmFzZS48YnIgLz4KICAgIElmIHlvdSB1c2UgQXhpczIvQyBBcGFjaGUyIG1vZHVsZSBpbnN0ZWFkIG9mIHNpbXBsZV9heGlzMl9zZXJ2ZXIgbWFrZQogICAgc3VyZSB0aGF0IEFwYWNoZTIgdXNlciBjYW4gYWNjZXNzIHRoZSBzcWxpdGUgZGF0YWJhc2UgZmlsZSBzYXZhbl9kYi4gCiAgICA8cD48L3A+CiAgPC9saT4KICA8bGk+U2F2YW4vQyBtb2R1bGUgaXMgaW5zdGFsbGVkIGludG8KICAgICZsdDtheGlzMmNfZGVwbG95X3BhdGgmZ3Q7L21vZHVsZXMvc2F2YW5jIGRpcmVjdG9yeS4gVGhlIGluc3RhbGxlZCBtb2R1bGUKICAgIGNvbnRhaW4gbGlic2F2YW4uc28sIG1vZHVsZS54bWwuIFRoZSBzYW1wbGUgY2xpZW50cyBhcmUgaW5zdGFsbGVkIGludG8KICAgICZsdDtheGlzMmNfZGVwbG95X3BhdGgmZ3Q7L2Jpbi9zYW1wbGVzL3NhdmFuIGRpcmVjdG9yeS4gU2FtcGxlIHNlcnZpY2VzCiAgICBhcmUgaW5zdGFsbGVkIGludG8gJmx0O2F4aXMyY19kZXBsb3lfcGF0aCZndDsvc2VydmljZXMgZGlyZWN0b3J5LiA8L2xpPgo8L29sPgo8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJjbGVhciI+PGhyPjwvaHI+PC9kaXY+PGRpdiBpZD0iZm9vdGVyIj48ZGl2IGNsYXNzPSJ4cmlnaHQiPqkgMjAwNS0yMDA3LCBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbjwvZGl2PjxkaXYgY2xhc3M9ImNsZWFyIj48aHI+PC9ocj48L2Rpdj48L2Rpdj48L2JvZHk+PC9odG1sPgo=