PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iRVVDLUtSIj8+CjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIGxhbmc9ImtvIiB4bWw6bGFuZz0ia28iPjxoZWFkPgo8bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9RVVDLUtSIiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+CjwhLS0KICAgICAgICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAogICAgICAgICAgICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgZnJvbSB4bWwgc291cmNlOiBETyBOT1QgRURJVAogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgIC0tPgo8dGl0bGU+bG9ncmVzb2x2ZSAtIL7GxsTEoSC3zrHXxsTAz8DHIElQLcHWvNK4piDIo726xq647cC4t84KICC6r8ivx9G02SAtIEFwYWNoZSBIVFRQIFNlcnZlciBWZXJzaW9uIDIuNDwvdGl0bGU+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTWFpbiBzdHlsZXNoZWV0IiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLWxvb3NlLTEwMHBjLmNzcyIgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJObyBTaWRlYmFyIC0gRGVmYXVsdCBmb250IHNpemUiIC8+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwtcHJpbnQuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJwcmludCIgdHlwZT0idGV4dC9jc3MiIC8+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vc3R5bGUvY3NzL3ByZXR0aWZ5LmNzcyIgLz4KPHNjcmlwdCBzcmM9Ii4uL3N0eWxlL3NjcmlwdHMvcHJldHRpZnkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8L3NjcmlwdD4KCjxsaW5rIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIgcmVsPSJzaG9ydGN1dCBpY29uIiAvPjwvaGVhZD4KPGJvZHkgaWQ9Im1hbnVhbC1wYWdlIj48ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj648LXiPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPsH2vcO+7rXpPC9hPiB8IDxhIGhyZWY9Imh0dHA6Ly93aWtpLmFwYWNoZS5vcmcvaHR0cGQvRkFRIj5GQVE8L2E+IHwgPGEgaHJlZj0iLi4vZ2xvc3NhcnkuaHRtbCI+v+u+7jwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPrvnwMzGrrjKPC9hPjwvcD4KPHAgY2xhc3M9ImFwYWNoZSI+QXBhY2hlIEhUVFAgU2VydmVyIFZlcnNpb24gMi40PC9wPgo8aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9mZWF0aGVyLnBuZyIgLz48L2Rpdj4KPGRpdiBjbGFzcz0idXAiPjxhIGhyZWY9Ii4vIj48aW1nIHRpdGxlPSImbHQ7LSIgYWx0PSImbHQ7LSIgc3JjPSIuLi9pbWFnZXMvbGVmdC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYXRoIj4KPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QXBhY2hlPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnLyI+SFRUUCBTZXJ2ZXI8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy8iPkRvY3VtZW50YXRpb248L2E+ICZndDsgPGEgaHJlZj0iLi4vIj5WZXJzaW9uIDIuNDwvYT4gJmd0OyA8YSBocmVmPSIuLyI+UHJvZ3JhbXM8L2E+PC9kaXY+PGRpdiBpZD0icGFnZS1jb250ZW50Ij48ZGl2IGlkPSJwcmVhbWJsZSI+PGgxPmxvZ3Jlc29sdmUgLSC+xsbExKEgt86x18bEwM/AxyBJUC3B1rzSuKYgyKO9usauuO3AuLfOCiAguq/Ir8fRtNk8L2gxPgo8ZGl2IGNsYXNzPSJ0b3BsYW5nIj4KPHA+PHNwYW4+sKG0ycfRIL7wvu46IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9wcm9ncmFtcy9sb2dyZXNvbHZlLmh0bWwiIGhyZWZsYW5nPSJlbiIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9mci9wcm9ncmFtcy9sb2dyZXNvbHZlLmh0bWwiIGhyZWZsYW5nPSJmciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGcmFuJiMyMzE7YWlzIj4mbmJzcDtmciZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9rby9wcm9ncmFtcy9sb2dyZXNvbHZlLmh0bWwiIHRpdGxlPSJLb3JlYW4iPiZuYnNwO2tvJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL3RyL3Byb2dyYW1zL2xvZ3Jlc29sdmUuaHRtbCIgaHJlZmxhbmc9InRyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IlQmIzI1MjtyayYjMjMxO2UiPiZuYnNwO3RyJm5ic3A7PC9hPjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9Im91dG9mZGF0ZSI+wMwgua68rbTCIMPWvcXGxyC5+L+qwMwgvsa01bTPtNkuCiAgICAgICAgICAgIMPWsdm/oSC6r7Dmtcggs7u/68C6IL+1vu4gua68rbimIML8sO3Hz7y8v+QuPC9kaXY+CgogICAgIDxwPjxjb2RlPmxvZ3Jlc29sdmU8L2NvZGU+tMIgvsbGxMShIMGisdm3zrHXxsTAz7+hIMDWtMIKICAgICBJUC3B1rzSuKYgw6O0wiDIxMOzuK4gx8G3zrHXt6XAzLTZLiCz18DTvK259sDHILrOx8+4pgogICAgIMPWvNLIrcfPseLAp8fYIGxvZ3Jlc29sdmW0wiCzu7rOwPvAuLfOIMfYvazF18DMuu0gxLO9rLimCiAgICAgu+e/68fRtNkuIMHvLCBJUCDB1rzSsKEgt86x18bEwM+/oSDDs8C9ILOqv8O2p7i4IMOjtMK02S48L3A+CgogICAgIDxwPselwdjA1LfCwLi3ziC+xsbExKEgt86x18bEwM/AuyDA0LTCtNkuILCiIMHZwMcgw7m5+MKwCiAgICAgx9e48cDMIElQIMHWvNLAzLDtLCCzqrjTwfYgus660LD6ILD4uenAuLfOILG4utC1x77fIMfRtNkuPC9wPgo8L2Rpdj4KPGRpdiBpZD0icXVpY2t2aWV3Ij48YSBocmVmPSJodHRwczovL3d3dy5hcGFjaGUub3JnL2ZvdW5kYXRpb24vY29udHJpYnV0aW5nLmh0bWwiIGNsYXNzPSJiYWRnZSI+PGltZyBzcmM9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvaW1hZ2VzL1N1cHBvcnRBcGFjaGUtc21hbGwucG5nIiBhbHQ9IlN1cHBvcnQgQXBhY2hlISIgLz48L2E+PHVsIGlkPSJ0b2MiPjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3N5bm9wc2lzIj6ws7/kPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI29wdGlvbnMiPr/JvMc8L2E+PC9saT4KPC91bD48aDM+wvyw7TwvaDM+PHVsIGNsYXNzPSJzZWVhbHNvIj48bGk+PGEgaHJlZj0iI2NvbW1lbnRzX3NlY3Rpb24iPkNvbW1lbnRzPC9hPjwvbGk+PC91bD48L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0ic3lub3BzaXMiIGlkPSJzeW5vcHNpcyI+sLO/5DwvYT48L2gyPgoKICAgICA8cD48Y29kZT48c3Ryb25nPmxvZ3Jlc29sdmU8L3N0cm9uZz4gWyAtPHN0cm9uZz5zPC9zdHJvbmc+CiAgICAgPHZhcj5maWxlbmFtZTwvdmFyPiBdIFsgLTxzdHJvbmc+Yzwvc3Ryb25nPiBdICZsdDsKICAgICA8dmFyPmFjY2Vzc19sb2c8L3Zhcj4gJmd0OyA8dmFyPmFjY2Vzc19sb2cubmV3PC92YXI+PC9jb2RlPjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0ib3B0aW9ucyIgaWQ9Im9wdGlvbnMiPr/JvMc8L2E+PC9oMj4KCjxkbD4KCjxkdD48Y29kZT4tcyA8dmFyPmZpbGVuYW1lPC92YXI+PC9jb2RlPjwvZHQ+Cgo8ZGQ+xeuw6LimILHit8/H0iDGxMDPuO3AuyDB9sGkx9G02S48L2RkPgoKPGR0Pjxjb2RlPi1jPC9jb2RlPjwvZHQ+Cgo8ZGQ+PGNvZGU+bG9ncmVzb2x2ZTwvY29kZT6woSC47rChwfYgRE5TILDLu+e4piDHz7W1t88gx9G02ToKSVAgwda80rfOIMijvbrGrrjtwLsgw6PAusjEILHXIMijvbrGrrjtwLi3ziC02b3DIElQIMHWvNK16cC7CsOjvsa8rSCx18HfIMfPs6qwoSC/+LehIMHWvNK/zSDAz8Shx8+0wsH2ILDLu+fH0bTZLjwvZGQ+Cgo8L2RsPgo8L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0iYm90dG9tbGFuZyI+CjxwPjxzcGFuPrChtMnH0SC+8L7uOiA8L3NwYW4+PGEgaHJlZj0iLi4vZW4vcHJvZ3JhbXMvbG9ncmVzb2x2ZS5odG1sIiBocmVmbGFuZz0iZW4iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vZnIvcHJvZ3JhbXMvbG9ncmVzb2x2ZS5odG1sIiBocmVmbGFuZz0iZnIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRnJhbiYjMjMxO2FpcyI+Jm5ic3A7ZnImbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4va28vcHJvZ3JhbXMvbG9ncmVzb2x2ZS5odG1sIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi90ci9wcm9ncmFtcy9sb2dyZXNvbHZlLmh0bWwiIGhyZWZsYW5nPSJ0ciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJUJiMyNTI7cmsmIzIzMTtlIj4mbmJzcDt0ciZuYnNwOzwvYT48L3A+CjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgYWx0PSJ0b3AiIC8+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iPjxoMj48YSBpZD0iY29tbWVudHNfc2VjdGlvbiIgbmFtZT0iY29tbWVudHNfc2VjdGlvbiI+Q29tbWVudHM8L2E+PC9oMj48ZGl2IGNsYXNzPSJ3YXJuaW5nIj48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz48YnIgLz5UaGlzIGlzIG5vdCBhIFEmYW1wO0Egc2VjdGlvbi4gQ29tbWVudHMgcGxhY2VkIGhlcmUgc2hvdWxkIGJlIHBvaW50ZWQgdG93YXJkcyBzdWdnZXN0aW9ucyBvbiBpbXByb3ZpbmcgdGhlIGRvY3VtZW50YXRpb24gb3Igc2VydmVyLCBhbmQgbWF5IGJlIHJlbW92ZWQgYnkgb3VyIG1vZGVyYXRvcnMgaWYgdGhleSBhcmUgZWl0aGVyIGltcGxlbWVudGVkIG9yIGNvbnNpZGVyZWQgaW52YWxpZC9vZmYtdG9waWMuIFF1ZXN0aW9ucyBvbiBob3cgdG8gbWFuYWdlIHRoZSBBcGFjaGUgSFRUUCBTZXJ2ZXIgc2hvdWxkIGJlIGRpcmVjdGVkIGF0IGVpdGhlciBvdXIgSVJDIGNoYW5uZWwsICNodHRwZCwgb24gRnJlZW5vZGUsIG9yIHNlbnQgdG8gb3VyIDxhIGhyZWY9Imh0dHBzOi8vaHR0cGQuYXBhY2hlLm9yZy9saXN0cy5odG1sIj5tYWlsaW5nIGxpc3RzPC9hPi48L2Rpdj4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KdmFyIGNvbW1lbnRzX3Nob3J0bmFtZSA9ICdodHRwZCc7CnZhciBjb21tZW50c19pZGVudGlmaWVyID0gJ2h0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvMi40L3Byb2dyYW1zL2xvZ3Jlc29sdmUuaHRtbCc7CihmdW5jdGlvbih3LCBkKSB7CiAgICBpZiAody5sb2NhdGlvbi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpID09ICJodHRwZC5hcGFjaGUub3JnIikgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+PFwvZGl2PicpOwogICAgICAgIHZhciBzID0gZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBzLmFzeW5jID0gdHJ1ZTsKICAgICAgICBzLnNyYyA9ICdodHRwczovL2NvbW1lbnRzLmFwYWNoZS5vcmcvc2hvd19jb21tZW50cy5sdWE/c2l0ZT0nICsgY29tbWVudHNfc2hvcnRuYW1lICsgJyZwYWdlPScgKyBjb21tZW50c19pZGVudGlmaWVyOwogICAgICAgIChkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0gfHwgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdKS5hcHBlbmRDaGlsZChzKTsKICAgIH0KICAgIGVsc2UgeyAKICAgICAgICBkLndyaXRlKCc8ZGl2IGlkPSJjb21tZW50c190aHJlYWQiPkNvbW1lbnRzIGFyZSBkaXNhYmxlZCBmb3IgdGhpcyBwYWdlIGF0IHRoZSBtb21lbnQuPFwvZGl2PicpOwogICAgfQp9KSh3aW5kb3csIGRvY3VtZW50KTsKLy8tLT48IV1dPjwvc2NyaXB0PjwvZGl2PjxkaXYgaWQ9ImZvb3RlciI+CjxwIGNsYXNzPSJhcGFjaGUiPkNvcHlyaWdodCAyMDIxIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi48YnIgLz5MaWNlbnNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5BcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjA8L2E+LjwvcD4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPrjwteI8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+wfa9w77utek8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj6/677uPC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+u+fAzMauuMo8L2E+PC9wPjwvZGl2PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCmlmICh0eXBlb2YocHJldHR5UHJpbnQpICE9PSAndW5kZWZpbmVkJykgewogICAgcHJldHR5UHJpbnQoKTsKfQovLy0tPjwhXV0+PC9zY3JpcHQ+CjwvYm9keT48L2h0bWw+