PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iRVVDLUtSIj8+CjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIGxhbmc9ImtvIiB4bWw6bGFuZz0ia28iPjxoZWFkPgo8bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9RVVDLUtSIiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+CjwhLS0KICAgICAgICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAogICAgICAgICAgICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgZnJvbSB4bWwgc291cmNlOiBETyBOT1QgRURJVAogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgIC0tPgo8dGl0bGU+YXBhY2hlY3RsIC0gvsbGxMShIMClvK259iDBtsD9IMDOxc3G5MDMvbogLSBBcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjU8L3RpdGxlPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik1haW4gc3R5bGVzaGVldCIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1sb29zZS0xMDBwYy5jc3MiIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTm8gU2lkZWJhciAtIERlZmF1bHQgZm9udCBzaXplIiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLXByaW50LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0icHJpbnQiIHR5cGU9InRleHQvY3NzIiAvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlL2Nzcy9wcmV0dGlmeS5jc3MiIC8+CjxzY3JpcHQgc3JjPSIuLi9zdHlsZS9zY3JpcHRzL3ByZXR0aWZ5Lm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPC9zY3JpcHQ+Cgo8bGluayBocmVmPSIuLi9pbWFnZXMvZmF2aWNvbi5pY28iIHJlbD0ic2hvcnRjdXQgaWNvbiIgLz48L2hlYWQ+Cjxib2R5IGlkPSJtYW51YWwtcGFnZSI+PGRpdiBpZD0icGFnZS1oZWFkZXIiPgo8cCBjbGFzcz0ibWVudSI+PGEgaHJlZj0iLi4vbW9kLyI+uPC14jwvYT4gfCA8YSBocmVmPSIuLi9tb2QvcXVpY2tyZWZlcmVuY2UuaHRtbCI+wfa9w77utek8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj6/677uPC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+u+fAzMauuMo8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5BcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjU8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2ZlYXRoZXIucG5nIiAvPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ1cCI+PGEgaHJlZj0iLi8iPjxpbWcgdGl0bGU9IiZsdDstIiBhbHQ9IiZsdDstIiBzcmM9Ii4uL2ltYWdlcy9sZWZ0LmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgaWQ9InBhdGgiPgo8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BcGFjaGU8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIj5IVFRQIFNlcnZlcjwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLyI+RG9jdW1lbnRhdGlvbjwvYT4gJmd0OyA8YSBocmVmPSIuLi8iPlZlcnNpb24gMi41PC9hPiAmZ3Q7IDxhIGhyZWY9Ii4vIj5Qcm9ncmFtczwvYT48L2Rpdj48ZGl2IGlkPSJwYWdlLWNvbnRlbnQiPjxkaXYgaWQ9InByZWFtYmxlIj48aDE+YXBhY2hlY3RsIC0gvsbGxMShIMClvK259iDBtsD9IMDOxc3G5MDMvbo8L2gxPgo8ZGl2IGNsYXNzPSJ0b3BsYW5nIj4KPHA+PHNwYW4+sKG0ycfRIL7wvu46IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9wcm9ncmFtcy9hcGFjaGVjdGwuaHRtbCIgaHJlZmxhbmc9ImVuIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2tvL3Byb2dyYW1zL2FwYWNoZWN0bC5odG1sIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi90ci9wcm9ncmFtcy9hcGFjaGVjdGwuaHRtbCIgaHJlZmxhbmc9InRyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IlQmIzI1MjtyayYjMjMxO2UiPiZuYnNwO3RyJm5ic3A7PC9hPjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9Im91dG9mZGF0ZSI+wMwgua68rbTCIMPWvcXGxyC5+L+qwMwgvsa01bTPtNkuCiAgICAgICAgICAgIMPWsdm/oSC6r7Dmtcggs7u/68C6IL+1vu4gua68rbimIML8sO3Hz7y8v+QuPC9kaXY+CgogICAgIDxwPjxjb2RlPmFwYWNoZWN0bDwvY29kZT7AuiC+xsbExKEgx8/AzMbbxdi9usauIMD8vNsKICAgICDHwbfOxeTE3SAoSFRUUCkgvK259sDHIL7VtNzAzLTZLiDAzCDHwbfOsde3pcC6ILD8uK7A2rChCiAgICAgvsbGxMShIDxhIGhyZWY9Imh0dHBkLmh0bWwiPmh0dHBkPC9hPiC1pbjzwLsgwbbBpMfPtbW3zwogICAgILW9tMK02S48L3A+CgogICAgIDxwPjxjb2RlPmFwYWNoZWN0bDwvY29kZT4gvbrFqbizxq60wiC1zrChwfYguea5/cC4t84gvcfH4MfRtNkuCiAgICAgw7m5+MKwILnmuf3AuiA8Y29kZT5odHRwZDwvY29kZT7AuyC6zrijtMIgsKO03MfRIL26xam4s8auCiAgICAgv6rH0sC7IMfPv6ksIMfKv+TH0SDIr7Dmuq+89rimILyzwaTHz7DtILnewLoguO23ycfgIL7GsdS41cauuKYKICAgICCwocH2sO0gPGNvZGU+aHR0cGQ8L2NvZGU+uKYgvcfH4MfRtNkuILXOufjCsCC55rn9wLoKICAgICA8Y29kZT5hcGFjaGVjdGw8L2NvZGU+uKYgU3lzViBpbml0IL26xam4s8aut84gu+e/68fPv6ksCiAgICAgPGNvZGU+c3RhcnQ8L2NvZGU+LCA8Y29kZT5yZXN0YXJ0PC9jb2RlPiwgPGNvZGU+c3RvcDwvY29kZT4KICAgICCwsMC6IMfRtNy+7iC+xrHUuNXGrrimILnevsa8rSA8Y29kZT5odHRwZDwvY29kZT6/obDUCiAgICAgwPvA/cfRIL3FyKO4piC6uLO9tNkuPC9wPgoKICAgICA8cD6+xsbExKG4piDAz7ndwPvAziCw5rfOv6EgvLPEocfPwfYgvsq+0rTZuOksIMD7wP3H0QogICAgIDxjb2RlPmh0dHBkPC9jb2RlPiCw5rfOt84gPGNvZGU+YXBhY2hlY3RsPC9jb2RlPiC9usWpuLPGrrimCiAgICAgvPbBpMfYvt8gx9G02S4gtscsIDxjb2RlPmh0dHBkPC9jb2RlPiC47bfJx+Agvsax1LjVxq64pgogICAgIMPfsKG3ziDB9sGkx9IgvPYgwNa02S4gwNq8vMfRILO7v+vAuiC9usWpuLPGrsDHIMHWvK7AuwogICAgIML8sO3Hz7bzLjwvcD4KCiAgICAgPHA+PGNvZGU+YXBhY2hlY3RsPC9jb2RlPiC9usWpuLPGrrTCILy6sPi9wyDBvrfhxNq15SAwwLssCiAgICAgv8C3+b3DICZndDswwLsgud3Ir8fRtNkuIMDavLzH0SCzu7/rwLogvbrFqbizxq7AxyDB1ryuwLsKICAgICDC/LDtx8+28y48L3A+CjwvZGl2Pgo8ZGl2IGlkPSJxdWlja3ZpZXciPjx1bCBpZD0idG9jIj48bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNzeW5vcHNpcyI+sLO/5DwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNvcHRpb25zIj6/ybzHPC9hPjwvbGk+CjwvdWw+PGgzPsL8sO08L2gzPjx1bCBjbGFzcz0ic2VlYWxzbyI+PGxpPjxhIGhyZWY9Ii4uL2ludm9raW5nLmh0bWwiPr7GxsTEoSC9w8DbPC9hPjwvbGk+PGxpPjxhIGhyZWY9Ii4uL3N0b3BwaW5nLmh0bWwiPr7GxsTEoSDB37TcPC9hPjwvbGk+PGxpPjxhIGhyZWY9Ii4uL2NvbmZpZ3VyaW5nLmh0bWwiPryzwaTGxMDPPC9hPjwvbGk+PGxpPjxhIGhyZWY9Ii4uL3BsYXRmb3JtLyI+x8O3ocb7ILmuvK08L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cGQuaHRtbCI+aHR0cGQ8L2E+PC9saT48bGk+PGEgaHJlZj0iI2NvbW1lbnRzX3NlY3Rpb24iPkNvbW1lbnRzPC9hPjwvbGk+PC91bD48L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0ic3lub3BzaXMiIGlkPSJzeW5vcHNpcyI+sLO/5DwvYT48L2gyPgoKPHA+sKO03MfRIL3Hx+AgvbrFqbizxq63ziC1v8Dbx8+46SwgPGNvZGU+YXBhY2hlY3RsPC9jb2RlPsC6CjxhIGhyZWY9Imh0dHBkLmh0bWwiPmh0dHBkPC9hPiC9x8fgxsTAz8DHILjwtecgvsax1LjVxq64piC53rTCtNkuPC9wPgoKPHA+PGNvZGU+PHN0cm9uZz5hcGFjaGVjdGw8L3N0cm9uZz4gWyA8dmFyPmh0dHBkLWFyZ3VtZW50PC92YXI+IF08L2NvZGU+PC9wPgoKPHA+U3lzViBpbml0ILnmvcTAuLfOILW/wNvHz7jpLCA8Y29kZT5hcGFjaGVjdGw8L2NvZGU+wLogvsa3obytCryzuO3H0iCwo7Tcx9Egx9G03L7uILjtt8m+7rimILnetMK02S48L3A+Cgo8cD48Y29kZT48c3Ryb25nPmFwYWNoZWN0bDwvc3Ryb25nPiA8dmFyPmNvbW1hbmQ8L3Zhcj48L2NvZGU+PC9wPgoKPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0ib3B0aW9ucyIgaWQ9Im9wdGlvbnMiPr/JvMc8L2E+PC9oMj4KCjxwPr+pseK8rbTCIFN5c1YgaW5pdC29xCC/ybzHuLggvLO47cfRtNkuILTZuKUgv8m8x8C6IDxhIGhyZWY9Imh0dHBkLmh0bWwiPmh0dHBkPC9hPiBtYW5wYWdlv6G8rSC8s7jtx9G02S48L3A+Cgo8ZGw+Cgo8ZHQ+PGNvZGU+c3RhcnQ8L2NvZGU+PC9kdD4KCjxkZD6+xsbExKEgPGNvZGU+aHR0cGQ8L2NvZGU+ILWluPPAuyC9w8Dbx9G02S4gwMy5zCC9x8fgwd/AzLbzuOkKv8C3+bimILO9tNkuIDxjb2RlPmFwYWNoZWN0bCAtayBzdGFydDwvY29kZT6/zSCwsLTZLjwvZGQ+Cgo8ZHQ+PGNvZGU+c3RvcDwvY29kZT48L2R0PgoKPGRkPr7GxsTEoSA8Y29kZT5odHRwZDwvY29kZT4gtaW488C7IMHftNzH0bTZLiA8Y29kZT5hcGFjaGVjdGwKLWsgc3RvcDwvY29kZT6w+iCwsLTZLjwvZGQ+Cgo8ZHQ+PGNvZGU+cmVzdGFydDwvY29kZT48L2R0PgoKPGRkPr7GxsTEoSA8Y29kZT5odHRwZDwvY29kZT4gtaW488C7IMDnvcPA28fRtNkuILWluPPAzCC9x8fgwd/AzAq+xrTPtvO46SwgvcPA28fRtNkuILWluPPAzCDA573DwNu9wyC9x8bQx8/B9iC+ysC9wLsgyK7AzsfPseLAp8fYCsDnvcPA2yDA/L+hIMDatb/AuLfOIDxjb2RlPmNvbmZpZ3Rlc3Q8L2NvZGU+ILjtt8mw+iCwsMDMILyzwaTGxMDPwLsKsMu758fRtNkuIDxjb2RlPmFwYWNoZWN0bCAtayByZXN0YXJ0PC9jb2RlPr/NILCwtNkuPC9kZD4KCjxkdD48Y29kZT5mdWxsc3RhdHVzPC9jb2RlPjwvZHQ+Cgo8ZGQ+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9zdGF0dXMuaHRtbCI+bW9kX3N0YXR1czwvYT48L2NvZGU+wMcguPC15yC788XCIMGkuri4piDD4rfCx9G02S4KwMwguO23ycC7ILvnv+vHz7HiwKfH2LyttMIgvK259rChIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2Rfc3RhdHVzLmh0bWwiPm1vZF9zdGF0dXM8L2E+PC9jb2RlPrimCrvnv+vHz7DtLCC9w726xdu/oSA8Y29kZT5seW54PC9jb2RlPiCwsMC6ILmuwNqx4rndILrqtvO/7MD6sKEKx8q/5MfPtNkuILvzxcIgwaS6uL+hIMGisdnHz7TCIFVSTMC6IL26xam4s8auwMcKPGNvZGU+U1RBVFVTVVJMPC9jb2RlPiC6r7z2uKYgvPbBpMfPv6kgvLPBpMfSILz2IMDWtNkuPC9kZD4KCjxkdD48Y29kZT5zdGF0dXM8L2NvZGU+PC9kdD4KCjxkZD6wo7Tcx9Egu/PFwiDBpLq4uKYgw+K3wsfRtNkuIDxjb2RlPmZ1bGxzdGF0dXM8L2NvZGU+IL/JvMew+gq68b3Bx8/B9ri4LCDH9sDnILytuvG9usHfwM4gv+TDuyC48bfPwLsgw+K3wsfPwfYgvsq0wrTZLjwvZGQ+Cgo8ZHQ+PGNvZGU+Z3JhY2VmdWw8L2NvZGU+PC9kdD4KCjxkZD6+xsbExKEgPGNvZGU+aHR0cGQ8L2NvZGU+ILWluPPAuyDBocDdsNQoZ3JhY2VmdWxseSkgwOe9w8Dbx9G02S4KtaW488DMIL3Hx+DB38DMIL7GtM+287jpLCC9w8Dbx9G02S4gwM+53cD7wM4gwOe9w8DbsPogtN64riDH9sDnCr+tt8HA1rTCIL+ssOHAuyCy98H2vsq0wrTZLiC2xywgwMzA/CC3zrHXxsTAz8C7IMHvvcMgtN3B9iC+yrTCtNkuCsHvLCC3zrHXvPjIryC9usWpuLPGrr+hvK0gwMwguO23ycC7ILvnv+vH0bTZuOksIMDMwPwgt86x18bEwM/AuwrDs7iux8+x4sD8v6Egt86x18bEwM/AuyC03cf7wL3AuyC6uMDlx8+x4sCnx9ggu/O058j3ILHitNm3wb7fCsfRtNkuIL7GxsTEobChIMDnvcPA273DIL3HxtDHz8H2IL7KwL3AuyDIrsDOx8+x4sCnx9ggwOe9w8DbCsD8v6EgwNq1v8C4t84gPGNvZGU+Y29uZmlndGVzdDwvY29kZT4guO23ybD6ILCwwMwgvLPBpMbEwM/Auwqwy7vnx9G02S4gPGNvZGU+YXBhY2hlY3RsIC1rIGdyYWNlZnVsPC9jb2RlPrD6ILCwtNkuPC9kZD4KCjxkdD48Y29kZT5jb25maWd0ZXN0PC9jb2RlPjwvZHQ+Cgo8ZGQ+vLPBpMbEwM/AxyC5rrn9wLsgsMu758fRtNkuILyzwaTGxMDPwLsgwNCw7SA8Y29kZT5TeW50YXgKT2s8L2NvZGU+IMikwLogxq/BpCC8s8Gkv8C3+b+hILTrx9EgwNq8vMfRIMGkuri4piC+y7fBwdi02S4KPGNvZGU+YXBhY2hlY3RsIC10PC9jb2RlPr/NILCwtNkuPC9kZD4KCjwvZGw+Cgo8cD6+xrehIL/JvMfAuyC757/rx9IgvPYgwNbB9ri4LCC+1cC4t84gu+e288H6ILDNwMy02S48L3A+Cgo8ZGw+Cgo8ZHQ+PGNvZGU+c3RhcnRzc2w8L2NvZGU+PC9kdD4KCjxkZD48Y29kZT5hcGFjaGVjdGwgLWsgc3RhcnQgLURTU0w8L2NvZGU+sPogsLC02S4gv+y4rrTCIMH3waIKvtXAxyC47bfJvu64piC757/rx8+wxbOqIMfXu/MgU1NMwLsgu+e/68fPtbW3zwo8Y29kZT5odHRwZC5jb25mPC9jb2RlPr+hvK0gPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNpZmRlZmluZSI+Jmx0O0lmRGVmaW5lJmd0OzwvYT48L2NvZGU+ILy9vMfAuyDBprDFx8+x5iCxx8fRtNkuPC9kZD4KCjwvZGw+Cgo8L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0iYm90dG9tbGFuZyI+CjxwPjxzcGFuPrChtMnH0SC+8L7uOiA8L3NwYW4+PGEgaHJlZj0iLi4vZW4vcHJvZ3JhbXMvYXBhY2hlY3RsLmh0bWwiIGhyZWZsYW5nPSJlbiIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9rby9wcm9ncmFtcy9hcGFjaGVjdGwuaHRtbCIgdGl0bGU9IktvcmVhbiI+Jm5ic3A7a28mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vdHIvcHJvZ3JhbXMvYXBhY2hlY3RsLmh0bWwiIGhyZWZsYW5nPSJ0ciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJUJiMyNTI7cmsmIzIzMTtlIj4mbmJzcDt0ciZuYnNwOzwvYT48L3A+CjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgYWx0PSJ0b3AiIC8+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iPjxoMj48YSBpZD0iY29tbWVudHNfc2VjdGlvbiIgbmFtZT0iY29tbWVudHNfc2VjdGlvbiI+Q29tbWVudHM8L2E+PC9oMj48ZGl2IGNsYXNzPSJ3YXJuaW5nIj48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz48YnIgLz5UaGlzIGlzIG5vdCBhIFEmYW1wO0Egc2VjdGlvbi4gQ29tbWVudHMgcGxhY2VkIGhlcmUgc2hvdWxkIGJlIHBvaW50ZWQgdG93YXJkcyBzdWdnZXN0aW9ucyBvbiBpbXByb3ZpbmcgdGhlIGRvY3VtZW50YXRpb24gb3Igc2VydmVyLCBhbmQgbWF5IGJlIHJlbW92ZWQgYWdhaW4gYnkgb3VyIG1vZGVyYXRvcnMgaWYgdGhleSBhcmUgZWl0aGVyIGltcGxlbWVudGVkIG9yIGNvbnNpZGVyZWQgaW52YWxpZC9vZmYtdG9waWMuIFF1ZXN0aW9ucyBvbiBob3cgdG8gbWFuYWdlIHRoZSBBcGFjaGUgSFRUUCBTZXJ2ZXIgc2hvdWxkIGJlIGRpcmVjdGVkIGF0IGVpdGhlciBvdXIgSVJDIGNoYW5uZWwsICNodHRwZCwgb24gRnJlZW5vZGUsIG9yIHNlbnQgdG8gb3VyIDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2xpc3RzLmh0bWwiPm1haWxpbmcgbGlzdHM8L2E+LjwvZGl2Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLS8vLS0+PCFbQ0RBVEFbLy8+PCEtLQp2YXIgY29tbWVudHNfc2hvcnRuYW1lID0gJ2h0dHBkJzsKdmFyIGNvbW1lbnRzX2lkZW50aWZpZXIgPSAnaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy90cnVuay9wcm9ncmFtcy9hcGFjaGVjdGwuaHRtbCc7CihmdW5jdGlvbih3LCBkKSB7CiAgICBpZiAody5sb2NhdGlvbi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpID09ICJodHRwZC5hcGFjaGUub3JnIikgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+PFwvZGl2PicpOwogICAgICAgIHZhciBzID0gZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBzLmFzeW5jID0gdHJ1ZTsKICAgICAgICBzLnNyYyA9ICdodHRwczovL2NvbW1lbnRzLmFwYWNoZS5vcmcvc2hvd19jb21tZW50cy5sdWE/c2l0ZT0nICsgY29tbWVudHNfc2hvcnRuYW1lICsgJyZwYWdlPScgKyBjb21tZW50c19pZGVudGlmaWVyOwogICAgICAgIChkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0gfHwgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdKS5hcHBlbmRDaGlsZChzKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+Q29tbWVudHMgYXJlIGRpc2FibGVkIGZvciB0aGlzIHBhZ2UgYXQgdGhlIG1vbWVudC48XC9kaXY+Jyk7CiAgICB9Cn0pKHdpbmRvdywgZG9jdW1lbnQpOwovLy0tPjwhXV0+PC9zY3JpcHQ+PC9kaXY+PGRpdiBpZD0iZm9vdGVyIj4KPHAgY2xhc3M9ImFwYWNoZSI+Q29weXJpZ2h0IDIwMTYgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLjxiciAvPkxpY2Vuc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPkFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMDwvYT4uPC9wPgo8cCBjbGFzcz0ibWVudSI+PGEgaHJlZj0iLi4vbW9kLyI+uPC14jwvYT4gfCA8YSBocmVmPSIuLi9tb2QvcXVpY2tyZWZlcmVuY2UuaHRtbCI+wfa9w77utek8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj6/677uPC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+u+fAzMauuMo8L2E+PC9wPjwvZGl2PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCmlmICh0eXBlb2YocHJldHR5UHJpbnQpICE9PSAndW5kZWZpbmVkJykgewogICAgcHJldHR5UHJpbnQoKTsKfQovLy0tPjwhXV0+PC9zY3JpcHQ+CjwvYm9keT48L2h0bWw+