PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KPHRpdGxlPlRlc3QgY2FzZSB0ZW1wbGF0ZSB3aXRoIGF1dG9tYXRlZCByZWdpc3RyYXRpb248L3RpdGxlPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL3N0eWxlL3N0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc0LjAiPgo8bGluayByZWw9ImhvbWUiIGhyZWY9Ii4uLy4uLy4uL2luZGV4Lmh0bWwiIHRpdGxlPSJCb29zdCBUZXN0IExpYnJhcnkiPgo8bGluayByZWw9InVwIiBocmVmPSJ0ZXN0LWNhc2UtdGVtcGxhdGUuaHRtbCIgdGl0bGU9IlRlc3QgY2FzZSB0ZW1wbGF0ZSI+CjxsaW5rIHJlbD0icHJldiIgaHJlZj0ibWFudWFsLXRlc3QtY2FzZS10ZW1wbGF0ZS5odG1sIiB0aXRsZT0iTWFudWFsbHkgcmVnaXN0ZXJlZCB0ZXN0IGNhc2UgdGVtcGxhdGUiPgo8bGluayByZWw9Im5leHQiIGhyZWY9InRlc3Qtc3VpdGUuaHRtbCIgdGl0bGU9IlRlc3Qgc3VpdGUiPgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0MS4yIiBzcmM9Ii4uLy4uLy4uLy4uL2pzL2Jvb3N0LXRlc3QuanMiPjwvc2NyaXB0Pgo8L2hlYWQ+Cjxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KPHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Cjx0ZCB3aWR0aD0iMTAlIj48YSBocmVmPSIuLi8uLi8uLi9pbmRleC5odG1sIj48aW1nIGFsdD0iSG9tZSIgd2lkdGg9IjIyOSIgaGVpZ2h0PSI2MSIgYm9yZGVyPSIwIiBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdGVzdC9kb2Nib29rL2ltZy9ib29zdC50ZXN0LmxvZ28ucG5nIj48L2E+PC90ZD4KPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0ibGVmdCI+ICZndDsgPGEgaHJlZj0iLi4vLi4vLi4vdXRmLmh0bWwiPlRoZSBVbml0IFRlc3QgRnJhbWV3b3JrPC9hPiAmZ3Q7IDxhIGhyZWY9Ii4uLy4uL3VzZXItZ3VpZGUuaHRtbCI+VXNlcidzIGd1aWRlPC9hPjxhIGhyZWY9Ii4uLy4uL3Rlc3RpbmctdG9vbHMuaHRtbCI+CiAgICAgICZndDsKICAgICAgPC9hPjxhIGhyZWY9Ii4uL3Rlc3Qtb3JnYW5pemF0aW9uLmh0bWwiPlRlc3Qgb3JnYW5pemF0aW9uPC9hPjxhIGhyZWY9Ii4uL2ZpeHR1cmUuaHRtbCI+CiAgICAgICZndDsKICAgICAgPC9hPjxhIGhyZWY9InRlc3QtY2FzZS10ZW1wbGF0ZS5odG1sIj5UZXN0IGNhc2UgdGVtcGxhdGU8L2E+PGEgaHJlZj0idGVzdC1zdWl0ZS5odG1sIj4KICAgICAgJmd0OwogICAgICA8L2E+PGI+QXV0b21hdGVkIHJlZ2lzdHJhdGlvbjwvYj4KPC90ZD4KPHRkPjxkaXYgY2xhc3M9InNwaXJpdC1uYXYiPgo8YSBocmVmPSJtYW51YWwtdGVzdC1jYXNlLXRlbXBsYXRlLmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvcHJldi5wbmciIGFsdD0iUHJldiI+PC9hPjxhIGhyZWY9InRlc3Qtc3VpdGUuaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy9uZXh0LnBuZyIgYWx0PSJOZXh0Ij48L2E+CjwvZGl2PjwvdGQ+CjwvdHI+PC90YWJsZT4KPGhyPgo8ZGl2IGNsYXNzPSJzZWN0aW9uIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoNiBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJ1dGYudXNlci1ndWlkZS50ZXN0LW9yZ2FuaXphdGlvbi5hdXRvLXRlc3QtY2FzZS10ZW1wbGF0ZSI+PC9hPlRlc3QgY2FzZSB0ZW1wbGF0ZSB3aXRoIGF1dG9tYXRlZCByZWdpc3RyYXRpb248L2g2PjwvZGl2PjwvZGl2PjwvZGl2Pgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgICBUbyBjcmVhdGUgYSB0ZXN0IGNhc2UgdGVtcGxhdGUgcmVnaXN0ZXJlZCBpbiBwbGFjZSBvZiBpbXBsZW1lbnRhdGlvbiwgZW1wbG95IHRoZSBtYWNybwogICAgQk9PU1RfQVVUT19URVNUX0NBU0VfVEVNUExBVEUuIFRoaXMgZmFjaWxpdHkgaXMgYWxzbyBjYWxsZWQgPGVtIGNsYXNzPSJmaXJzdHRlcm0iPmF1dG8gdGVzdCBjYXNlIHRlbXBsYXRlPC9lbT4uCiAgIDwvcD4KPHByZSBjbGFzcz0iaW5saW5lLXN5bm9wc2lzIj4KPGEgbmFtZT0iQk9PU1RfQVVUT19URVNUX0NBU0VfVEVNUExBVEUiPjwvYT5CT09TVF9BVVRPX1RFU1RfQ0FTRV9URU1QTEFURSg8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT50ZXN0X2Nhc2VfbmFtZTwvZW0+PC9zcGFuPiwgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+Zm9ybWFsX3R5cGVfcGFyYW1ldGVyX25hbWU8L2VtPjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPmNvbGxlY3Rpb25fb2ZfdHlwZXM8L2VtPjwvc3Bhbj4pPC9wcmU+CjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICAgIFRoZSBtYWNybyBCT09TVF9BVVRPX1RFU1RfQ0FTRV9URU1QTEFURSByZXF1aXJlcyB0aHJlZSBhcmd1bWVudHM6CiAgIDwvcD4KPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIj4KPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgo8dGJvZHk+Cjx0cj4KPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5UaGUgdGVzdCBjYXNlIHRlbXBsYXRlIG5hbWU8L3NwYW4+PC9wPjwvdGQ+Cjx0ZD4KICAgICAgICAgdW5pcXVlIHRlc3QgY2FzZXMgdGVtcGxhdGUgaWRlbnRpZmllcgogICAgICA8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+VGhlIG5hbWUgb2YgYSBmb3JtYWwgdGVtcGxhdGUgcGFyYW1ldGVyPC9zcGFuPjwvcD48L3RkPgo8dGQ+CiAgICAgICAgIG5hbWUgb2YgdGhlIHR5cGUgdGhlIHRlc3QgY2FzZSB0ZW1wbGF0ZSBpcyBpbnN0YW50aWF0ZWQgd2l0aAogICAgICA8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+VGhlIGNvbGxlY3Rpb24gb2YgdHlwZXMgdG8gaW5zdGFudGlhdGUgdGVzdCBjYXNlIHRlbXBsYXRlIHdpdGg8L3NwYW4+PC9wPjwvdGQ+Cjx0ZD4KICAgICAgICAgYXJiaXRyYXJ5IE1QTCBzZXF1ZW5jZQogICAgICA8L3RkPgo8L3RyPgo8L3Rib2R5Pgo8L3RhYmxlPjwvZGl2Pgo8ZGl2IGNsYXNzPSJleGFtcGxlIj4KPGEgbmFtZT0idXRmLnVzZXItZ3VpZGUudGVzdC1vcmdhbml6YXRpb24uYXV0by10ZXN0LWNhc2UtdGVtcGxhdGUuZXhhbXBsZTEwIj48L2E+PHAgY2xhc3M9InRpdGxlIj48Yj5FeGFtcGxloDE0LqBUZXN0IGNhc2UgdGVtcGxhdGUgd2l0aCBhdXRvbWF0ZWQgcmVnaXN0cmF0aW9uPC9iPjwvcD4KPGRpdiBjbGFzcz0iZXhhbXBsZS1jb250ZW50cyI+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEJPT1NUX1RFU1RfTU9EVUxFIGV4YW1wbGUKI2luY2x1ZGUgJmx0O2Jvb3N0L3Rlc3QvaW5jbHVkZWQvdW5pdF90ZXN0LmhwcCZndDsKI2luY2x1ZGUgJmx0O2Jvb3N0L3Rlc3QvdGVzdF9jYXNlX3RlbXBsYXRlLmhwcCZndDsKI2luY2x1ZGUgJmx0O2Jvb3N0L21wbC9saXN0LmhwcCZndDsKCi8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCgp0eXBlZGVmIGJvb3N0OjptcGw6Omxpc3QmbHQ7aW50LGxvbmcsdW5zaWduZWQgY2hhciZndDsgdGVzdF90eXBlczsKCkJPT1NUX0FVVE9fVEVTVF9DQVNFX1RFTVBMQVRFKCBteV90ZXN0LCBULCB0ZXN0X3R5cGVzICkKewogICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHNpemVvZihUKSwgKHVuc2lnbmVkKTQgKQp9CgovL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwo8L3ByZT4KPHRhYmxlIGNsYXNzPSJzaW1wbGVsaXN0IiBib3JkZXI9IjAiIHN1bW1hcnk9IlNpbXBsZSBsaXN0Ij48dHI+Cjx0ZD48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+PGEgaHJlZj0iLi4vLi4vLi4vLi4vc3JjL2V4YW1wbGVzL2V4YW1wbGUxMC5jcHAiIHRhcmdldD0iX3RvcCI+U291cmNlIGNvZGU8L2E+PC9jb2RlPjwvdGQ+Cjx0ZD4gfCA8L3RkPgo8dGQ+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPjxhIGhyZWY9IiMiIHRhcmdldD0iX3RvcCIgaWQ9ImlkNjUwNzY4IiBvbmNsaWNrPSJ0b2dnbGVfZWxlbWVudCggJ2V4YW1wbGUxMC1vdXRwdXQnLCAnaWQ2NTA3NjgnLCAnU2hvdyBvdXRwdXQnLCAnSGlkZSBvdXRwdXQnICk7IHJldHVybiBmYWxzZTsiPlNob3cgb3V0cHV0PC9hPjwvY29kZT48L3RkPgo8L3RyPjwvdGFibGU+CjxwcmUgY2xhc3M9ImV4YW1wbGUtb3V0cHV0IiBpZD0iZXhhbXBsZTEwLW91dHB1dCI+Jmd0OyBleGFtcGxlClJ1bm5pbmcgMyB0ZXN0IGNhc2VzLi4uCnRlc3QuY3BwKDEyKTogZXJyb3IgaW4gIm15X3Rlc3QmbHQ7dW5zaWduZWQgY2hhciZndDsiOiBjaGVjayBzaXplb2YoVCkgPT0gNCBmYWlsZWQgWzEgIT0gNF0KCioqKiAxIGZhaWx1cmUgZGV0ZWN0ZWQgaW4gdGVzdCBzdWl0ZSAiZXhhbXBsZSIKPC9wcmU+CjwvZGl2Pgo8L2Rpdj4KPGJyIGNsYXNzPSJleGFtcGxlLWJyZWFrIj4KPC9kaXY+Cjx0YWJsZSB4bWxuczpyZXY9Imh0dHA6Ly93d3cuY3MucnBpLmVkdS9+Z3JlZ29kL2Jvb3N0L3Rvb2xzL2RvYy9yZXZpc2lvbiIgd2lkdGg9IjEwMCUiPjx0cj4KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPgo8dGQgYWxpZ249InJpZ2h0Ij48ZGl2IGNsYXNzPSJjb3B5cmlnaHQtZm9vdGVyIj5Db3B5cmlnaHQgqSAyMDAxLTIwMDcgR2VubmFkaXkgUm96ZW50YWw8L2Rpdj48L3RkPgo8L3RyPjwvdGFibGU+Cjxocj4KPGRpdiBjbGFzcz0ic3Bpcml0LW5hdiI+CjxhIGFjY2Vzc2tleT0icCIgaHJlZj0ibWFudWFsLXRlc3QtY2FzZS10ZW1wbGF0ZS5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL3ByZXYucG5nIiBhbHQ9IlByZXYiPjwvYT48YSBhY2Nlc3NrZXk9InUiIGhyZWY9InRlc3QtY2FzZS10ZW1wbGF0ZS5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL3VwLnBuZyIgYWx0PSJVcCI+PC9hPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iLi4vLi4vLi4vaW5kZXguaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy9ob21lLnBuZyIgYWx0PSJIb21lIj48L2E+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJ0ZXN0LXN1aXRlLmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvbmV4dC5wbmciIGFsdD0iTmV4dCI+PC9hPgo8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==