PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KPHRpdGxlPlVuaXQgVGVzdCBGcmFtZXdvcms6IFVzZXIncyBndWlkZTwvdGl0bGU+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vc3R5bGUvc3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzQuMCI+CjxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iLi4vaW5kZXguaHRtbCIgdGl0bGU9IkJvb3N0IFRlc3QgTGlicmFyeSI+CjxsaW5rIHJlbD0idXAiIGhyZWY9Ii4uL3V0Zi5odG1sIiB0aXRsZT0iUGFydKBJVi6gQm9vc3QgVGVzdCBMaWJyYXJ5OiBUaGUgVW5pdCBUZXN0IEZyYW1ld29yayI+CjxsaW5rIHJlbD0icHJldiIgaHJlZj0iY29tcGlsYXRpb24vZGlyZWN0LWluY2x1ZGUuaHRtbCIgdGl0bGU9IkluY2x1ZGluZyB0aGUgVVRGIGRpcmVjdGx5IGludG8geW91ciB0ZXN0IG1vZHVsZSI+CjxsaW5rIHJlbD0ibmV4dCIgaHJlZj0idXNlci1ndWlkZS91c2FnZS12YXJpYW50cy5odG1sIiB0aXRsZT0iVGhlIFVURiB1c2FnZSB2YXJpYW50cyBvciB0aGUgQnVyaWRhbidzIGRvbmtleSBwYXJhYmxlIj4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdDEuMiIgc3JjPSIuLi8uLi9qcy9ib29zdC10ZXN0LmpzIj48L3NjcmlwdD4KPC9oZWFkPgo8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Cjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgo8dGQgd2lkdGg9IjEwJSI+PGEgaHJlZj0iLi4vaW5kZXguaHRtbCI+PGltZyBhbHQ9IkhvbWUiIHdpZHRoPSIyMjkiIGhlaWdodD0iNjEiIGJvcmRlcj0iMCIgc3JjPSIuLi8uLi8uLi8uLi8uLi9saWJzL3Rlc3QvZG9jYm9vay9pbWcvYm9vc3QudGVzdC5sb2dvLnBuZyI+PC9hPjwvdGQ+Cjx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImxlZnQiPiAmZ3Q7IDxhIGhyZWY9Ii4uL3V0Zi5odG1sIj5UaGUgVW5pdCBUZXN0IEZyYW1ld29yazwvYT4gJmd0OyA8Yj5Vc2VyJ3MgZ3VpZGU8L2I+PGEgaHJlZj0idGVzdGluZy10b29scy5odG1sIj4KICAgICAgJmd0OwogICAgICA8L2E+CjwvdGQ+Cjx0ZD48ZGl2IGNsYXNzPSJzcGlyaXQtbmF2Ij4KPGEgaHJlZj0iY29tcGlsYXRpb24vZGlyZWN0LWluY2x1ZGUuaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy9wcmV2LnBuZyIgYWx0PSJQcmV2Ij48L2E+PGEgaHJlZj0idXNlci1ndWlkZS91c2FnZS12YXJpYW50cy5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL25leHQucG5nIiBhbHQ9Ik5leHQiPjwvYT4KPC9kaXY+PC90ZD4KPC90cj48L3RhYmxlPgo8aHI+CjxkaXYgY2xhc3M9ImNoYXB0ZXIiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9InV0Zi51c2VyLWd1aWRlIj48L2E+VW5pdCBUZXN0IEZyYW1ld29yazogVXNlcidzIGd1aWRlPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0idG9jIj4KPHA+PGI+VGFibGUgb2YgQ29udGVudHM8L2I+PC9wPgo8ZGw+CjxkdD48YSBocmVmPSJ1c2VyLWd1aWRlL3VzYWdlLXZhcmlhbnRzLmh0bWwiPlVzYWdlIHZhcmlhbnRzPC9hPjwvZHQ+CjxkbD4KPGR0PjxhIGhyZWY9InVzZXItZ3VpZGUvdXNhZ2UtdmFyaWFudHMvc3RhdGljLWxpYi12YXJpYW50Lmh0bWwiPlN0YXRpYyBsaWJyYXJ5PC9hPjwvZHQ+CjxkdD48YSBocmVmPSJ1c2VyLWd1aWRlL3VzYWdlLXZhcmlhbnRzL2R5bmFtaWMtbGliLXZhcmlhbnQuaHRtbCI+RHluYW1pYyBsaWJyYXJ5PC9hPjwvZHQ+CjxkdD48YSBocmVmPSJ1c2VyLWd1aWRlL3VzYWdlLXZhcmlhbnRzL3NpbmdsZS1oZWFkZXItdmFyaWFudC5odG1sIj5TaW5nbGUgaGVhZGVyPC9hPjwvZHQ+CjxkdD48YSBocmVmPSJ1c2VyLWd1aWRlL3VzYWdlLXZhcmlhbnRzL2V4dGVybi10ZXN0LXJ1bm5lci12YXJpYW50Lmh0bWwiPkV4dGVybmFsIHRlc3QgcnVubmVyPC9hPjwvZHQ+CjwvZGw+CjxkdD48YSBocmVmPSJ1c2VyLWd1aWRlL3Rlc3QtcnVubmVycy5odG1sIj5TdXBwbGllZCB0ZXN0IHJ1bm5lcnM8L2E+PC9kdD4KPGRsPjxkdD48YSBocmVmPSJ1c2VyLWd1aWRlL3VzYWdlLXZhcmlhbnRzL2V4dGVybi10ZXN0LXJ1bm5lci5odG1sIj5FeHRlcm5hbCB0ZXN0IHJ1bm5lcjwvYT48L2R0PjwvZGw+CjxkdD48YSBocmVmPSJ1c2VyLWd1aWRlL2luaXRpYWxpemF0aW9uLmh0bWwiPlRlc3QgbW9kdWxlIGluaXRpYWxpemF0aW9uPC9hPjwvZHQ+CjxkdD48YSBocmVmPSJ1c2VyLWd1aWRlL3Rlc3Qtb3JnYW5pemF0aW9uLmh0bWwiPlRlc3Qgb3JnYW5pemF0aW9uPC9hPjwvZHQ+CjxkbD4KPGR0PjxhIGhyZWY9InVzZXItZ3VpZGUvdGVzdC1vcmdhbml6YXRpb24vbnVsbGFyeS10ZXN0LWNhc2UuaHRtbCI+TnVsbGFyeSBmdW5jdGlvbiBiYXNlZCB0ZXN0IGNhc2U8L2E+PC9kdD4KPGRsPgo8ZHQ+PGEgaHJlZj0idXNlci1ndWlkZS90ZXN0LW9yZ2FuaXphdGlvbi9tYW51YWwtbnVsbGFyeS10ZXN0LWNhc2UuaHRtbCI+TWFudWFsIHJlZ2lzdHJhdGlvbjwvYT48L2R0Pgo8ZHQ+PGEgaHJlZj0idXNlci1ndWlkZS90ZXN0LW9yZ2FuaXphdGlvbi9hdXRvLW51bGxhcnktdGVzdC1jYXNlLmh0bWwiPkF1dG9tYXRlZCByZWdpc3RyYXRpb248L2E+PC9kdD4KPC9kbD4KPGR0PjxhIGhyZWY9InVzZXItZ3VpZGUvdGVzdC1vcmdhbml6YXRpb24vdW5hcnktdGVzdC1jYXNlLmh0bWwiPlVuYXJ5IGZ1bmN0aW9uIGJhc2VkIHRlc3QgY2FzZTwvYT48L2R0Pgo8ZHQ+PGEgaHJlZj0idXNlci1ndWlkZS90ZXN0LW9yZ2FuaXphdGlvbi90ZXN0LWNhc2UtdGVtcGxhdGUuaHRtbCI+VGVzdCBjYXNlIHRlbXBsYXRlPC9hPjwvZHQ+CjxkbD4KPGR0PjxhIGhyZWY9InVzZXItZ3VpZGUvdGVzdC1vcmdhbml6YXRpb24vbWFudWFsLXRlc3QtY2FzZS10ZW1wbGF0ZS5odG1sIj5NYW51YWwgcmVnaXN0cmF0aW9uPC9hPjwvZHQ+CjxkdD48YSBocmVmPSJ1c2VyLWd1aWRlL3Rlc3Qtb3JnYW5pemF0aW9uL2F1dG8tdGVzdC1jYXNlLXRlbXBsYXRlLmh0bWwiPkF1dG9tYXRlZCByZWdpc3RyYXRpb248L2E+PC9kdD4KPC9kbD4KPGR0PjxhIGhyZWY9InVzZXItZ3VpZGUvdGVzdC1vcmdhbml6YXRpb24vdGVzdC1zdWl0ZS5odG1sIj5UZXN0IHN1aXRlPC9hPjwvZHQ+CjxkbD4KPGR0PjxhIGhyZWY9InVzZXItZ3VpZGUvdGVzdC1vcmdhbml6YXRpb24vbWFudWFsLXRlc3Qtc3VpdGUuaHRtbCI+TWFudWFsIHJlZ2lzdHJhdGlvbjwvYT48L2R0Pgo8ZHQ+PGEgaHJlZj0idXNlci1ndWlkZS90ZXN0LW9yZ2FuaXphdGlvbi9hdXRvLXRlc3Qtc3VpdGUuaHRtbCI+QXV0b21hdGVkIHJlZ2lzdHJhdGlvbjwvYT48L2R0Pgo8ZHQ+PGEgaHJlZj0idXNlci1ndWlkZS90ZXN0LW9yZ2FuaXphdGlvbi9tYXN0ZXItdGVzdC1zdWl0ZS5odG1sIj5NYXN0ZXIgVGVzdCBTdWl0ZTwvYT48L2R0Pgo8L2RsPgo8ZHQ+PGEgaHJlZj0idXNlci1ndWlkZS90ZXN0LW9yZ2FuaXphdGlvbi9leHBlY3RlZC1mYWlsdXJlcy5odG1sIj5FeHBlY3RlZCBmYWlsdXJlcyBzcGVjaWZpY2F0aW9uPC9hPjwvZHQ+CjwvZGw+CjxkdD48YSBocmVmPSJ1c2VyLWd1aWRlL2ZpeHR1cmUuaHRtbCI+Rml4dHVyZXM8L2E+PC9kdD4KPGRsPgo8ZHQ+PGEgaHJlZj0idXNlci1ndWlkZS9maXh0dXJlL21vZGVsLmh0bWwiPkdlbmVyaWMgbW9kZWw8L2E+PC9kdD4KPGR0PjxhIGhyZWY9InVzZXItZ3VpZGUvZml4dHVyZS9wZXItdGVzdC1jYXNlLmh0bWwiPlBlciB0ZXN0IGNhc2U8L2E+PC9kdD4KPGR0PjxhIGhyZWY9InVzZXItZ3VpZGUvZml4dHVyZS90ZXN0LXN1aXRlLXNoYXJlZC5odG1sIj5UZXN0IHN1aXRlIHNoYXJlZDwvYT48L2R0Pgo8ZHQ+PGEgaHJlZj0idXNlci1ndWlkZS9maXh0dXJlL2dsb2JhbC5odG1sIj5HbG9iYWwgZml4dHVyZTwvYT48L2R0Pgo8L2RsPgo8ZHQ+PGEgaHJlZj0idXNlci1ndWlkZS90ZXN0LW91dHB1dC5odG1sIj5UZXN0IE91dHB1dCA8L2E+PC9kdD4KPGRsPgo8ZHQ+PGEgaHJlZj0idXNlci1ndWlkZS90ZXN0LW91dHB1dC90ZXN0LWxvZy5odG1sIj5UZXN0IGxvZzwvYT48L2R0Pgo8ZGw+CjxkdD48YSBocmVmPSJ1c2VyLWd1aWRlL3Rlc3Qtb3V0cHV0L0JPT1NUX1RFU1RfTUVTU0FHRS5odG1sIj5CT09TVF9URVNUX01FU1NBR0U8L2E+PC9kdD4KPGR0PjxhIGhyZWY9InVzZXItZ3VpZGUvdGVzdC1vdXRwdXQvQk9PU1RfVEVTVF9DSEVDS1BPSU5ULmh0bWwiPkJPT1NUX1RFU1RfQ0hFQ0tQT0lOVDwvYT48L2R0Pgo8ZHQ+PGEgaHJlZj0idXNlci1ndWlkZS90ZXN0LW91dHB1dC9CT09TVF9URVNUX1BBU1NQT0lOVC5odG1sIj5CT09TVF9URVNUX1BBU1NQT0lOVDwvYT48L2R0Pgo8ZHQ+PGEgaHJlZj0idXNlci1ndWlkZS90ZXN0LW91dHB1dC9CT09TVF9URVNUX1BBU1NQT0lOVC5odG1sIj5Mb2dnaW5nIGZsb2F0aW5nIHBvaW50IHR5cGUgbnVtYmVyczwvYT48L2R0Pgo8ZHQ+PGEgaHJlZj0idXNlci1ndWlkZS90ZXN0LW91dHB1dC9sb2ctaHItZm9ybWF0Lmh0bWwiPkh1bWFuIHJlYWRhYmxlIGZvcm1hdDwvYT48L2R0Pgo8ZHQ+PGEgaHJlZj0idXNlci1ndWlkZS90ZXN0LW91dHB1dC9sb2cteG1sLWZvcm1hdC5odG1sIj5YTUwgYmFzZWQgbG9nIG91dHB1dCBmb3JtYXQ8L2E+PC9kdD4KPGR0PjxhIGhyZWY9InVzZXItZ3VpZGUvdGVzdC1vdXRwdXQvbG9nLWN0LWNvbmZpZy5odG1sIj5Db21waWxlIHRpbWUgY29uZmlndXJhdGlvbjwvYT48L2R0Pgo8L2RsPgo8ZHQ+PGEgaHJlZj0idXNlci1ndWlkZS90ZXN0LW91dHB1dC9yZXN1bHRzLXJlcG9ydC5odG1sIj5UZXN0IHJlcG9ydCBvdXRwdXQ8L2E+PC9kdD4KPGR0PjxhIGhyZWY9InVzZXItZ3VpZGUvdGVzdC1vdXRwdXQvdGVzdC1wcm9ncmVzcy5odG1sIj5Qcm9ncmVzcyBkaXNwbGF5PC9hPjwvZHQ+CjwvZGw+CjxkdD48YSBocmVmPSJ1c2VyLWd1aWRlL3J1bnRpbWUtY29uZmlnLmh0bWwiPlJ1bnRpbWUgY29uZmlndXJhdGlvbiA8L2E+PC9kdD4KPGRsPgo8ZHQ+PGEgaHJlZj0idXNlci1ndWlkZS9ydW50aW1lLWNvbmZpZy9ydW4tYnktbmFtZS5odG1sIj5SdW4gYnkgbmFtZTwvYT48L2R0Pgo8ZHQ+PGEgaHJlZj0idXNlci1ndWlkZS9ydW50aW1lLWNvbmZpZy9yZWZlcmVuY2UuaHRtbCI+UGFyYW1ldGVycyByZWZlcmVuY2U8L2E+PC9kdD4KPC9kbD4KPC9kbD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGg0IGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9InV0Zi51c2VyLWd1aWRlLmludHJvIj48L2E+SW50cm9kdWN0aW9uICBvciB3aGF0J3MgeW91ciBuYW1lPzwvaDQ+PC9kaXY+PC9kaXY+PC9kaXY+CjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICAgV2l0aG91dCBmdXJ0aGVyIGFkbywgbGV0J3MgZGVmaW5lIHRlcm1zIHJlZ3VsYXJseSB1c2VkIGJ5IHRoZSA8YWNyb255bSBjbGFzcz0iYWNyb255bSI+VVRGPC9hY3JvbnltPi4KICA8L3A+CjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCI+Cjxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KPHRib2R5Pgo8dHI+Cjx0ZD48cD48YSBuYW1lPSJ0ZXN0LW1vZHVsZS5kZWYiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+PGVtIGNsYXNzPSJmaXJzdHRlcm0iPlRoZSB0ZXN0IG1vZHVsZTwvZW0+PC9zcGFuPjwvcD48L3RkPgo8dGQ+CiAgICAgIFRoaXMgaXMgYSBzaW5nbGUgYmluYXJ5IHRoYXQgcGVyZm9ybXMgdGhlIHRlc3QuIFBoeXNpY2FsbHkgYSB0ZXN0IG1vZHVsZSBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSB0ZXN0IHNvdXJjZSBmaWxlcywKICAgICAgd2hpY2ggY2FuIGJlIGJ1aWx0IGludG8gYW4gZXhlY3V0YWJsZSBvciBhIGR5bmFtaWMgbGlicmFyeS4gQSB0ZXN0IG1vZHVsZSB0aGF0IGNvbnNpc3RzIG9mIGEgc2luZ2xlIHRlc3Qgc291cmNlIAogICAgICBmaWxlIGlzIGNhbGxlZCA8ZW0gY2xhc3M9ImZpcnN0dGVybSI+PGEgbmFtZT0ic2luZ2xlLWZpbGUtdGVzdC1tb2R1bGUuZGVmIj48L2E+c2luZ2xlLWZpbGUgdGVzdCBtb2R1bGU8L2VtPi4gT3RoZXJ3aXNlIAogICAgICBpdCdzIGNhbGxlZCA8ZW0gY2xhc3M9ImZpcnN0dGVybSI+PGEgbmFtZT0ibXVsdGktZmlsZS10ZXN0LW1vZHVsZS5kZWYiPjwvYT5tdWx0aS1maWxlIHRlc3QgbW9kdWxlPC9lbT4uIExvZ2ljYWxseSBhIHRlc3QgCiAgICAgIG1vZHVsZSBjb25zaXN0cyBvZiBmb3VyIHBhcnRzOiA8YSBjbGFzcz0ibGluayIgaHJlZj0idXNlci1ndWlkZS5odG1sI3Rlc3Qtc2V0dXAuZGVmIj50ZXN0IHNldHVwPC9hPiAob3IgdGVzdCBpbml0aWFsaXphdGlvbiksIAogICAgICA8YSBjbGFzcz0ibGluayIgaHJlZj0idXNlci1ndWlkZS5odG1sI3Rlc3QtYm9keS5kZWYiPnRlc3QgYm9keTwvYT4sIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJ1c2VyLWd1aWRlLmh0bWwjdGVzdC1jbGVhbnVwLmRlZiI+dGVzdCBjbGVhbnVwPC9hPiBhbmQgCiAgICAgIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJ1c2VyLWd1aWRlLmh0bWwjdGVzdC1ydW5uZXIuZGVmIj50ZXN0IHJ1bm5lcjwvYT4uIFRoZSB0ZXN0IHJ1bm5lciBwYXJ0IGlzIG9wdGlvbmFsLiBJZiBhIHRlc3QgbW9kdWxlIGlzIGJ1aWx0IGFzCiAgICAgIGFuIGV4ZWN1dGFibGUgdGhlIHRlc3QgcnVubmVyIGlzIGJ1aWx0LWluLiBJZiBhIHRlc3QgbW9kdWxlIGlzIGJ1aWx0IGFzIGEgZHluYW1pYyBsaWJyYXJ5LCBpdCBpcyBydW4gYnkgYW4gCiAgICAgIGV4dGVybmFsIHRlc3QgcnVubmVyLgogICAgIDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxwPjxhIG5hbWU9InRlc3QtYm9keS5kZWYiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+PGVtIGNsYXNzPSJmaXJzdHRlcm0iPlRoZSB0ZXN0IGJvZHk8L2VtPjwvc3Bhbj48L3A+PC90ZD4KPHRkPgogICAgICBUaGlzIGlzIHRoZSBwYXJ0IG9mIGEgdGVzdCBtb2R1bGUgdGhhdCBhY3R1YWxseSBwZXJmb3JtcyB0aGUgdGVzdC4KICAgICAgTG9naWNhbGx5IHRlc3QgYm9keSBpcyBhIGNvbGxlY3Rpb24gb2YgPGEgY2xhc3M9ImxpbmsiIGhyZWY9InVzZXItZ3VpZGUuaHRtbCN0ZXN0LWFzc2VydGlvbi5kZWYiPnRlc3QgYXNzZXJ0aW9uczwvYT4gd3JhcHBlZCBpbgogICAgICA8YSBjbGFzcz0ibGluayIgaHJlZj0idXNlci1ndWlkZS5odG1sI3Rlc3QtY2FzZS5kZWYiPnRlc3QgY2FzZXM8L2E+LCB3aGljaCBhcmUgb3JnYW5pemVkIGluIGEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9InVzZXItZ3VpZGUuaHRtbCN0ZXN0LXRyZWUuZGVmIj50ZXN0IHRyZWUKICAgICAgPC9hPi4KICAgICA8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48cD48YSBuYW1lPSJ0ZXN0LXRyZWUuZGVmIj48L2E+PHNwYW4gY2xhc3M9InRlcm0iPjxlbSBjbGFzcz0iZmlyc3R0ZXJtIj5UaGUgdGVzdCB0cmVlPC9lbT48L3NwYW4+PC9wPjwvdGQ+Cjx0ZD4KICAgICAgVGhpcyBpcyBhIGhpZXJhcmNoaWNhbCBzdHJ1Y3R1cmUgb2YgPGEgY2xhc3M9ImxpbmsiIGhyZWY9InVzZXItZ3VpZGUuaHRtbCN0ZXN0LXN1aXRlLmRlZiI+dGVzdCBzdWl0ZXM8L2E+IChub24tbGVhZiBub2RlcykgYW5kCiAgICAgIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJ1c2VyLWd1aWRlLmh0bWwjdGVzdC1jYXNlLmRlZiI+dGVzdCBjYXNlczwvYT4gKGxlYWYgbm9kZXMpLgogICAgIDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxwPjxhIG5hbWU9InRlc3QtdW5pdC5kZWYiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+PGVtIGNsYXNzPSJmaXJzdHRlcm0iPlRoZSB0ZXN0IHVuaXQ8L2VtPjwvc3Bhbj48L3A+PC90ZD4KPHRkPgogICAgICBUaGlzIGlzIGEgY29sbGVjdGl2ZSBuYW1lIHdoZW4gcmVmZXJyZWQgdG8gZWl0aGVyIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJ1c2VyLWd1aWRlLmh0bWwjdGVzdC1zdWl0ZS5kZWYiPnRlc3Qgc3VpdGU8L2E+IG9yCiAgICAgIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJ1c2VyLWd1aWRlLmh0bWwjdGVzdC1jYXNlLmRlZiI+dGVzdCBjYXNlPC9hPgogICAgIDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxwPjxhIG5hbWU9InRlc3QtYXNzZXJ0aW9uLmRlZiI+PC9hPjxzcGFuIGNsYXNzPSJ0ZXJtIj48ZW0gY2xhc3M9ImZpcnN0dGVybSI+VGVzdCBhc3NlcnRpb248L2VtPjwvc3Bhbj48L3A+PC90ZD4KPHRkPgo8cD4KICAgICAgVGhpcyBpcyBhIHNpbmdsZSBiaW5hcnkgY29uZGl0aW9uIChiaW5hcnkgaW4gYSBzZW5zZSB0aGF0IGlzIGhhcyB0d28gb3V0Y29tZXM6IHBhc3MgYW5kIGZhaWwpIGNoZWNrZWQKICAgICAgYnkgYSB0ZXN0IG1vZHVsZS4KICAgICA8L3A+CjxwPgogICAgICBUaGVyZSBhcmUgZGlmZmVyZW50IHNjaG9vbHMgb2YgdGhvdWdodCBvbiBob3cgbWFueSB0ZXN0IGFzc2VydGlvbnMgYSB0ZXN0IGNhc2Ugc2hvdWxkIGNvbnNpc3Qgb2YuIFR3byBwb2xhcgogICAgICBwb3NpdGlvbnMgYXJlIHRoZSBvbmUgYWR2b2NhdGVkIGJ5IFRERCBmb2xsb3dlcnMgLSBvbmUgYXNzZXJ0aW9uIHBlciB0ZXN0IGNhc2U7IGFuZCBvcHBvc2l0ZSBvZiB0aGlzIC0gYWxsIHRlc3QKICAgICAgYXNzZXJ0aW9ucyB3aXRoaW4gc2luZ2xlIHRlc3QgY2FzZSAtIGFkdm9jYXRlZCBieSB0aG9zZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIGZpcnN0IGVycm9yIGluIGEKICAgICAgdGVzdCBtb2R1bGUuIFRoZSA8YWNyb255bSBjbGFzcz0iYWNyb255bSI+VVRGPC9hY3JvbnltPiBzdXBwb3J0cyBib3RoIGFwcHJvYWNoZXMuCiAgICAgPC9wPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48cD48YSBuYW1lPSJ0ZXN0LWNhc2UuZGVmIj48L2E+PHNwYW4gY2xhc3M9InRlcm0iPjxlbSBjbGFzcz0iZmlyc3R0ZXJtIj5UaGUgdGVzdCBjYXNlPC9lbT48L3NwYW4+PC9wPjwvdGQ+Cjx0ZD4KICAgICAgVGhpcyBpcyBhbiBpbmRlcGVuZGVudGx5IG1vbml0b3JlZCBmdW5jdGlvbiB3aXRoaW4gYSB0ZXN0IG1vZHVsZSB0aGF0CiAgICAgIGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlIHRlc3QgYXNzZXJ0aW9ucy4gVGhlIHRlcm0gImluZGVwZW5kZW50bHkgbW9uaXRvcmVkIiBpbiB0aGUgZGVmaW5pdGlvbiBhYm92ZSBpcwogICAgICB1c2VkIHRvIGVtcGhhc2l6ZSB0aGUgZmFjdCwgdGhhdCBhbGwgdGVzdCBjYXNlcyBhcmUgbW9uaXRvcmVkIGluZGVwZW5kZW50bHkuIEFuIHVuY2F1Z2h0IGV4Y2VwdGlvbiBvciBvdGhlciBub3JtYWwKICAgICAgdGVzdCBjYXNlIGV4ZWN1dGlvbiB0ZXJtaW5hdGlvbiBkb2Vzbid0IGNhdXNlIHRoZSB0ZXN0aW5nIHRvIGNlYXNlLiBJbnN0ZWFkIHRoZSBlcnJvciBpcyBjYXVnaHQgYnkgdGhlIHRlc3QgCiAgICAgIGNhc2UgZXhlY3V0aW9uIG1vbml0b3IsIHJlcG9ydGVkIGJ5IHRoZSA8YWNyb255bSBjbGFzcz0iYWNyb255bSI+VVRGPC9hY3JvbnltPiBhbmQgdGVzdGluZyBwcm9jZWVkcyB0byB0aGUgbmV4dCB0ZXN0IGNhc2UuIExhdGVyIG9uIHlvdSBhcmUgZ29pbmcgCiAgICAgIHRvIHNlZSB0aGF0IHRoaXMgaXMgb24gb2YgdGhlIHByaW1hcnkgcmVhc29ucyB0byBwcmVmZXIgbXVsdGlwbGUgc21hbGwgdGVzdCBjYXNlcyB0byBhIHNpbmdsZSBiaWcgdGVzdCBmdW5jdGlvbi4KICAgICA8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48cD48YSBuYW1lPSJ0ZXN0LXN1aXRlLmRlZiI+PC9hPjxzcGFuIGNsYXNzPSJ0ZXJtIj48ZW0gY2xhc3M9ImZpcnN0dGVybSI+VGhlIHRlc3Qgc3VpdGU8L2VtPjwvc3Bhbj48L3A+PC90ZD4KPHRkPgo8cD4KICAgICAgVGhpcyBpcyBhIGNvbnRhaW5lciBmb3Igb25lIG9yIG1vcmUgdGVzdCBjYXNlcy4gVGhlIHRlc3Qgc3VpdGUgZ2l2ZXMgeW91IGFuIGFiaWxpdHkgdG8gZ3JvdXAKICAgICAgdGVzdCBjYXNlcyBpbnRvIGEgc2luZ2xlIHJlZmVyYWJsZSBlbnRpdHkuIFRoZXJlIGFyZSB2YXJpb3VzIHJlYXNvbnMgd2h5IHlvdSBtYXkgb3B0IHRvIGRvIHNvLCBpbmNsdWRpbmc6CiAgICAgPC9wPgo8ZGl2IHhtbG5zOnJldj0iaHR0cDovL3d3dy5jcy5ycGkuZWR1L35ncmVnb2QvYm9vc3QvdG9vbHMvZG9jL3JldmlzaW9uIiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij48dWwgdHlwZT0iZGlzYyI+CjxsaT5UbyBncm91cCB0ZXN0IGNhc2VzIHBlciBzdWJzeXN0ZW1zIG9mIHRoZSB1bml0IGJlaW5nIHRlc3RlZC48L2xpPgo8bGk+VG8gc2hhcmUgdGVzdCBjYXNlIHNldHVwL2NsZWFudXAgY29kZS48L2xpPgo8bGk+VG8gcnVuIHNlbGVjdGVkIGdyb3VwIG9mIHRlc3QgY2FzZXMgb25seS48L2xpPgo8bGk+VG8gc2VlIHRlc3QgcmVwb3J0IHNwbGl0IGJ5IGdyb3VwcyBvZiB0ZXN0IGNhc2VzPC9saT4KPGxpPlRvIHNraXAgZ3JvdXBzIG9mIHRlc3QgY2FzZXMgYmFzZWQgb24gdGhlIHJlc3VsdCBvZiBhbm90aGVyIHRlc3QgdW5pdCBpbiBhIHRlc3QgdHJlZS48L2xpPgo8L3VsPjwvZGl2Pgo8cD4KICAgICAgQSB0ZXN0IHN1aXRlIGNhbiBhbHNvIGNvbnRhaW4gb3RoZXIgdGVzdCBzdWl0ZXMsIHRodXMgYWxsb3dpbmcgYSBoaWVyYXJjaGljYWwgdGVzdCB0cmVlIHN0cnVjdHVyZSB0byBiZSBmb3JtZWQuCiAgICAgIFRoZSA8YWNyb255bSBjbGFzcz0iYWNyb255bSI+VVRGPC9hY3JvbnltPiByZXF1aXJlcyB0aGUgdGVzdCB0cmVlIHRvIGNvbnRhaW4gYXQgbGVhc3Qgb25lIHRlc3Qgc3VpdGUgd2l0aCBhdCBsZWFzdCBvbmUgdGVzdCBjYXNlLiBUaGUgdG9wIGxldmVsIAogICAgICB0ZXN0IHN1aXRlIC0gcm9vdCBub2RlIG9mIHRoZSB0ZXN0IHRyZWUgLSBpcyBjYWxsZWQgdGhlIG1hc3RlciB0ZXN0IHN1aXRlLgogICAgIDwvcD4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+PHA+PGEgbmFtZT0idGVzdC1zZXR1cC5kZWYiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+PGVtIGNsYXNzPSJmaXJzdHRlcm0iPlRoZSB0ZXN0IHNldHVwPC9lbT48L3NwYW4+PC9wPjwvdGQ+Cjx0ZD4KPHA+CiAgICAgIFRoaXMgaXMgdGhlIHBhcnQgb2YgYSB0ZXN0IG1vZHVsZSB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgdGVzdAogICAgICBwcmVwYXJhdGlvbi4gSXQgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBvcGVyYXRpb25zIHRoYXQgdGFrZSBwbGFjZSBwcmlvciB0byBhIHN0YXJ0IG9mIHRoZSB0ZXN0OgogICAgIDwvcD4KPGRpdiB4bWxuczpyZXY9Imh0dHA6Ly93d3cuY3MucnBpLmVkdS9+Z3JlZ29kL2Jvb3N0L3Rvb2xzL2RvYy9yZXZpc2lvbiIgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIHR5cGU9ImRpc2MiPgo8bGk+CiAgICAgICAgVGhlIDxhY3JvbnltIGNsYXNzPSJhY3JvbnltIj5VVEY8L2Fjcm9ueW0+IGluaXRpYWxpemF0aW9uCiAgICAgICA8L2xpPgo8bGk+CiAgICAgICAgVGVzdCB0cmVlIGNvbnN0cnVjdGlvbgogICAgICAgPC9saT4KPGxpPgogICAgICAgIEdsb2JhbCB0ZXN0IG1vZHVsZSBzZXR1cCBjb2RlCiAgICAgICA8L2xpPgo8L3VsPjwvZGl2Pgo8cD4KICAgICAgUGVyIHRlc3QgY2FzZSIgc2V0dXAgY29kZSwgaW52b2tlZCBmb3IgZXZlcnkgdGVzdCBjYXNlIGl0J3MgYXNzaWduZWQgdG8sIGlzIGFsc28gYXR0cmlidXRlZCB0byB0aGUKICAgICAgdGVzdCBpbml0aWFsaXphdGlvbiwgZXZlbiB0aG91Z2ggaXQncyBleGVjdXRlZCBhcyBhIHBhcnQgb2YgdGhlIHRlc3QgY2FzZS4KICAgICA8L3A+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxwPjxhIG5hbWU9InRlc3QtY2xlYW51cC5kZWYiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+PGVtIGNsYXNzPSJmaXJzdHRlcm0iPlRoZSB0ZXN0IGNsZWFudXA8L2VtPjwvc3Bhbj48L3A+PC90ZD4KPHRkPgogICAgICBUaGlzIGlzIHRoZSBwYXJ0IG9mIHRlc3QgbW9kdWxlIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIGNsZWFudXAgb3BlcmF0aW9ucy4KICAgICA8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48cD48YSBuYW1lPSJ0ZXN0LWZpeHR1cmUuZGVmIj48L2E+PHNwYW4gY2xhc3M9InRlcm0iPjxlbSBjbGFzcz0iZmlyc3R0ZXJtIj5UaGUgdGVzdCBmaXh0dXJlPC9lbT48L3NwYW4+PC9wPjwvdGQ+Cjx0ZD4KICAgICAgTWF0Y2hpbmcgc2V0dXAgYW5kIGNsZWFudXAgb3BlcmF0aW9ucyBhcmUgZnJlcXVlbnRseSB1bml0ZWQgaW50byBhIHNpbmdsZSBlbnRpdHkgY2FsbGVkIHRlc3QgZml4dHVyZS4KICAgICA8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48cD48YSBuYW1lPSJ0ZXN0LXJ1bm5lci5kZWYiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+PGVtIGNsYXNzPSJmaXJzdHRlcm0iPlRoZSB0ZXN0IHJ1bm5lcjwvZW0+PC9zcGFuPjwvcD48L3RkPgo8dGQ+CjxwPgogICAgICBUaGlzIGlzIGFuICJleGVjdXRpdmUgbWFuYWdlciIgdGhhdCBydW5zIHRoZSBzaG93LiBUaGUgdGVzdCBydW5uZXIncyBmdW5jdGlvbmFsaXR5IHNob3VsZCBpbmNsdWRlCiAgICAgIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlcyBhbmQgb3BlcmF0aW9uczoKICAgICA8L3A+CjxkaXYgeG1sbnM6cmV2PSJodHRwOi8vd3d3LmNzLnJwaS5lZHUvfmdyZWdvZC9ib29zdC90b29scy9kb2MvcmV2aXNpb24iIGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCB0eXBlPSJkaXNjIj4KPGxpPgogICAgICAgIEVudHJ5IHBvaW50IHRvIGEgdGVzdCBtb2R1bGUuIFRoaXMgaXMgdXN1YWxseSBlaXRoZXIgdGhlIGZ1bmN0aW9uIG1haW4oKSBpdHNlbGYgb3Igc2luZ2xlIGZ1bmN0aW9uIHRoYXQgY2FuIGJlCiAgICAgICAgaW52b2tlZCBmcm9tIGl0IHRvIHN0YXJ0IHRlc3RpbmcuCiAgICAgICA8L2xpPgo8bGk+CiAgICAgICAgSW5pdGlhbGl6ZSB0aGUgPGFjcm9ueW0gY2xhc3M9ImFjcm9ueW0iPlVURjwvYWNyb255bT4gYmFzZWQgb24gcnVudGltZSBwYXJhbWV0ZXJzCiAgICAgICA8L2xpPgo8bGk+CiAgICAgICAgU2VsZWN0IGFuIG91dHB1dCBtZWRpYSBmb3IgdGhlIHRlc3QgbG9nIGFuZCB0aGUgdGVzdCByZXN1bHRzIHJlcG9ydAogICAgICAgPC9saT4KPGxpPgogICAgICAgIFNlbGVjdCB0ZXN0IGNhc2VzIHRvIGV4ZWN1dGUgYmFzZWQgb24gcnVudGltZSBwYXJhbWV0ZXJzCiAgICAgICA8L2xpPgo8bGk+CiAgICAgICAgRXhlY3V0ZSBhbGwgb3Igc2VsZWN0ZWQgdGVzdCBjYXNlcwogICAgICAgPC9saT4KPGxpPgogICAgICAgIFByb2R1Y2UgdGhlIHRlc3QgcmVzdWx0cyByZXBvcnQKICAgICAgIDwvbGk+CjxsaT4KICAgICAgICBHZW5lcmF0ZSBhIHRlc3QgbW9kdWxlIHJlc3VsdCBjb2RlLgogICAgICAgPC9saT4KPC91bD48L2Rpdj4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICAgICBBbiBhZHZhbmNlZCB0ZXN0IHJ1bm5lciBtYXkgcHJvdmlkZSBhZGRpdGlvbmFsIGZlYXR1cmVzLCBpbmNsdWRpbmcgaW50ZXJhY3RpdmUgPGFjcm9ueW0gY2xhc3M9ImFjcm9ueW0iPkdVSTwvYWNyb255bT4gaW50ZXJmYWNlcywKICAgICAgdGVzdCBjb3ZlcmFnZSBhbmQgcHJvZmlsaW5nIHN1cHBvcnQuCiAgICAgPC9wPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48cD48YSBuYW1lPSJ0ZXN0LWxvZy5kZWYiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+PGVtIGNsYXNzPSJmaXJzdHRlcm0iPlRoZSB0ZXN0IGxvZzwvZW0+PC9zcGFuPjwvcD48L3RkPgo8dGQ+CiAgICAgIFRoaXMgaXMgdGhlIHJlY29yZCBvZiBhbGwgZXZlbnRzIHRoYXQgb2NjdXIgZHVyaW5nIHRoZSB0ZXN0aW5nLgogICAgIDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxwPjxhIG5hbWU9InRlc3QtcmVzdWx0cy1yZXBvcnQuZGVmIj48L2E+PHNwYW4gY2xhc3M9InRlcm0iPjxlbSBjbGFzcz0iZmlyc3R0ZXJtIj5UaGUgdGVzdCByZXN1bHRzIHJlcG9ydDwvZW0+PC9zcGFuPjwvcD48L3RkPgo8dGQ+CiAgICAgIFRoaXMgaXMgdGhlIHJlcG9ydCBwcm9kdWNlZCBieSB0aGUgPGFjcm9ueW0gY2xhc3M9ImFjcm9ueW0iPlVURjwvYWNyb255bT4gYWZ0ZXIgdGhlIHRlc3RpbmcgaXMgY29tcGxldGVkLCB0aGF0IGluZGljYXRlcyB3aGljaCB0ZXN0IGNhc2VzL3Rlc3QKICAgICAgc3VpdGVzIHBhc3NlZCBhbmQgd2hpY2ggZmFpbGVkLgogICAgIDwvdGQ+CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPHRhYmxlIHhtbG5zOnJldj0iaHR0cDovL3d3dy5jcy5ycGkuZWR1L35ncmVnb2QvYm9vc3QvdG9vbHMvZG9jL3JldmlzaW9uIiB3aWR0aD0iMTAwJSI+PHRyPgo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+Cjx0ZCBhbGlnbj0icmlnaHQiPjxkaXYgY2xhc3M9ImNvcHlyaWdodC1mb290ZXIiPkNvcHlyaWdodCCpIDIwMDEtMjAwNyBHZW5uYWRpeSBSb3plbnRhbDwvZGl2PjwvdGQ+CjwvdHI+PC90YWJsZT4KPGhyPgo8ZGl2IGNsYXNzPSJzcGlyaXQtbmF2Ij4KPGEgYWNjZXNza2V5PSJwIiBocmVmPSJjb21waWxhdGlvbi9kaXJlY3QtaW5jbHVkZS5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL3ByZXYucG5nIiBhbHQ9IlByZXYiPjwvYT48YSBhY2Nlc3NrZXk9InUiIGhyZWY9Ii4uL3V0Zi5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL3VwLnBuZyIgYWx0PSJVcCI+PC9hPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy9ob21lLnBuZyIgYWx0PSJIb21lIj48L2E+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJ1c2VyLWd1aWRlL3VzYWdlLXZhcmlhbnRzLmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvbmV4dC5wbmciIGFsdD0iTmV4dCI+PC9hPgo8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==