PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KPHRpdGxlPlRlc3Qgb3JnYW5pemF0aW9uIG9yIHRoZSBob3VzZSB0aGF0IEphY2sgYnVpbHQ8L3RpdGxlPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3N0eWxlL3N0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc0LjAiPgo8bGluayByZWw9ImhvbWUiIGhyZWY9Ii4uLy4uL2luZGV4Lmh0bWwiIHRpdGxlPSJCb29zdCBUZXN0IExpYnJhcnkiPgo8bGluayByZWw9InVwIiBocmVmPSIuLi91c2VyLWd1aWRlLmh0bWwiIHRpdGxlPSJVbml0IFRlc3QgRnJhbWV3b3JrOiBVc2VyJ3MgZ3VpZGUiPgo8bGluayByZWw9InByZXYiIGhyZWY9ImluaXRpYWxpemF0aW9uLmh0bWwiIHRpdGxlPSJUZXN0IG1vZHVsZSBpbml0aWFsaXphdGlvbiBvciByZWFkeSwgc2V0Ij4KPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJ0ZXN0LW9yZ2FuaXphdGlvbi9udWxsYXJ5LXRlc3QtY2FzZS5odG1sIiB0aXRsZT0iTnVsbGFyeSBmdW5jdGlvbiBiYXNlZCB0ZXN0IGNhc2UiPgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0MS4yIiBzcmM9Ii4uLy4uLy4uL2pzL2Jvb3N0LXRlc3QuanMiPjwvc2NyaXB0Pgo8L2hlYWQ+Cjxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KPHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Cjx0ZCB3aWR0aD0iMTAlIj48YSBocmVmPSIuLi8uLi9pbmRleC5odG1sIj48aW1nIGFsdD0iSG9tZSIgd2lkdGg9IjIyOSIgaGVpZ2h0PSI2MSIgYm9yZGVyPSIwIiBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdGVzdC9kb2Nib29rL2ltZy9ib29zdC50ZXN0LmxvZ28ucG5nIj48L2E+PC90ZD4KPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0ibGVmdCI+ICZndDsgPGEgaHJlZj0iLi4vLi4vdXRmLmh0bWwiPlRoZSBVbml0IFRlc3QgRnJhbWV3b3JrPC9hPiAmZ3Q7IDxhIGhyZWY9Ii4uL3VzZXItZ3VpZGUuaHRtbCI+VXNlcidzIGd1aWRlPC9hPjxhIGhyZWY9Ii4uL3Rlc3RpbmctdG9vbHMuaHRtbCI+CiAgICAgICZndDsKICAgICAgPC9hPjxiPlRlc3Qgb3JnYW5pemF0aW9uPC9iPjxhIGhyZWY9ImZpeHR1cmUuaHRtbCI+CiAgICAgICZndDsKICAgICAgPC9hPgo8L3RkPgo8dGQ+PGRpdiBjbGFzcz0ic3Bpcml0LW5hdiI+CjxhIGhyZWY9ImluaXRpYWxpemF0aW9uLmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvcHJldi5wbmciIGFsdD0iUHJldiI+PC9hPjxhIGhyZWY9InRlc3Qtb3JnYW5pemF0aW9uL251bGxhcnktdGVzdC1jYXNlLmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvbmV4dC5wbmciIGFsdD0iTmV4dCI+PC9hPgo8L2Rpdj48L3RkPgo8L3RyPjwvdGFibGU+Cjxocj4KPGRpdiBjbGFzcz0ic2VjdGlvbiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDQgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0idXRmLnVzZXItZ3VpZGUudGVzdC1vcmdhbml6YXRpb24iPjwvYT5UZXN0IG9yZ2FuaXphdGlvbiAgb3IgdGhlIGhvdXNlIHRoYXQgSmFjayBidWlsdDwvaDQ+PC9kaXY+PC9kaXY+PC9kaXY+CjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICBJZiB5b3UgbG9vayBhdCBtYW55IGxlZ2FjeSB0ZXN0IG1vZHVsZXMsIGJpZyBjaGFuY2UgaXMgdGhhdCBpdCdzIGltcGxlbWVudGVkIGFzIG9uZSBiaWcgdGVzdCBmdW5jdGlvbiB0aGF0CiAgY29uc2lzdHMgb2YgYSBtaXh0dXJlIG9mIGNoZWNrIGFuZCBvdXRwdXQgc3RhdGVtZW50cy4gSXMgdGhlcmUgYW55dGhpbmcgd3Jvbmcgd2l0aCBpdD8gWWVzLiBUaGVyZSBhcmUgdmFyaW91cwogIGRpc2FkdmFudGFnZXMgaW4gc2luZ2xlIHRlc3QgZnVuY3Rpb24gYXBwcm9hY2g6CiA8L3A+CjxkaXYgeG1sbnM6cmV2PSJodHRwOi8vd3d3LmNzLnJwaS5lZHUvfmdyZWdvZC9ib29zdC90b29scy9kb2MvcmV2aXNpb24iIGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCB0eXBlPSJzcXVhcmUiPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlIj4KICAgIE9uZSBiaWcgZnVuY3Rpb24gdGVuZHMgdG8gYmVjb21lIHJlYWxseSBkaWZmaWN1bHQgdG8gbWFuYWdlIGlmIHRoZSBudW1iZXIgb2YgY2hlY2tzIGV4Y2VlZHMgYSByZWFzb25hYmxlIGxpbWl0CiAgICAodHJ1ZSBmb3IgYW55IGxhcmdlIGZ1bmN0aW9uKS4gV2hhdCBpcyB0ZXN0ZWQgYW5kIHdoZXJlIC0gd2hvIGtub3dzPwogICA8L2xpPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlIj4KICAgIE1hbnkgY2hlY2tzIHJlcXVpcmUgc2ltaWxhciBwcmVwYXJhdGlvbnMuIFRoaXMgcmVzdWx0cyBpbiBjb2RlIHJlcGV0aXRpb25zIHdpdGhpbiB0aGUgdGVzdCBmdW5jdGlvbi4KICAgPC9saT4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IHNxdWFyZSI+CiAgICBJZiBhIGZhdGFsIGVycm9yIG9yIGFuIGV4Y2VwdGlvbiBpcyBjYXVzZWQgYnkgYW55IGNoZWNrcyB3aXRoaW4gdGhlIHRlc3QgZnVuY3Rpb24gdGhlIHJlc3Qgb2YgdGVzdHMgYXJlCiAgICBza2lwcGVkIGFuZCB0aGVyZSBpcyBubyB3YXkgdG8gcHJldmVudCB0aGlzLgogICA8L2xpPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlIj4KICAgIE5vIHdheSB0byBwZXJmb3JtIG9ubHkgY2hlY2tzIGZvciBhIHBhcnRpY3VsYXIgc3Vic3lzdGVtIG9mIHRoZSB0ZXN0ZWQgdW5pdC4KICAgPC9saT4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IHNxdWFyZSI+CiAgICBObyBzdW1tYXJ5IG9mIGhvdyBkaWZmZXJlbnQgc3Vic3lzdGVtcyBvZiB0aGUgdGVzdGVkIHVuaXQgcGVyZm9ybWVkIHVuZGVyIGluIHRoZSB0ZXN0LgogICA8L2xpPgo8L3VsPjwvZGl2Pgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgVGhlIGFib3ZlIHBvaW50cyBzaG91bGQgbWFrZSBpdCBjbGVhciB0aGF0IGl0J3MgcHJlZmVyYWJsZSB0byBzcGxpdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iLi4vdXNlci1ndWlkZS5odG1sI3Rlc3QtbW9kdWxlLmRlZiI+dGVzdCBtb2R1bGUKICA8L2E+IGludG8gc21hbGxlciB1bml0cy4gVGhlc2UgdW5pdHMgYXJlIHRlc3QgY2FzZXMuIEEgdGVzdCBjYXNlIGhhcyB0byBiZSBjb25zdHJ1Y3RlZCBiYXNlZCBvbiBzb21lIGtpbmQgb2YKICBmdW5jdGlvbiBhbmQgcmVnaXN0ZXJlZCBpbiBhIHRlc3QgdHJlZSwgc28gdGhhdCB0aGUgdGVzdCBydW5uZXIga25vd3MgaG93IHRvIGludm9rZSBpdC4gVGhlcmUgYXJlIGRpZmZlcmVudAogIHBvc3NpYmxlIGRlc2lnbnMgZm9yIHRoZSB0ZXN0IGNhc2UgY29uc3RydWN0aW9uIHByb2JsZW06IGluaGVyaXRhbmNlIGZyb20gdGhlIHByZWRlZmluZWQgYmFzZSBjbGFzcywgc3BlY2lmaWNhbGx5CiAgbmFtZWQgbWVtYmVyIGZ1bmN0aW9uIGFuZCBzbyBvbi4gVGhlIDxhY3JvbnltIGNsYXNzPSJhY3JvbnltIj5VVEY8L2Fjcm9ueW0+IG9wdGVkIHRvIGF2b2lkIGNsYXNzZWQgYWx0b2dldGhlciBhbmQgdG8gdXNlIHRoZSBsZWFzdCBpbnRydXNpdmUgIgogIGdlbmVyaWMgY2FsbGJhY2siIGFwcHJvYWNoLiBUaGUgZmFjaWxpdHksIHRoZSA8YWNyb255bSBjbGFzcz0iYWNyb255bSI+VVRGPC9hY3JvbnltPiBwcm92aWRlcywgcmVxdWlyZXMgc3BlY2lmaWMgZnVuY3Rpb24gc2lnbmF0dXJlIGFuZCBhbGxvd3MKICBhZG9wdGluZyBhbnkgZnVuY3Rpb24gb3IgZnVuY3Rpb24gb2JqZWN0IHRoYXQgbWF0Y2hlcyB0aGUgc2lnbmF0dXJlIGFzIGEgdGVzdCBjYXNlLiBUaGUgc2lnbmF0dXJlcyB0aGUgPGFjcm9ueW0gY2xhc3M9ImFjcm9ueW0iPlVURjwvYWNyb255bT4KICBzdXBwb3J0cyBhcmU6CiA8L3A+CjxkaXYgeG1sbnM6cmV2PSJodHRwOi8vd3d3LmNzLnJwaS5lZHUvfmdyZWdvZC9ib29zdC90b29scy9kb2MvcmV2aXNpb24iIGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCB0eXBlPSJkaXNjIj4KPGxpPgogICAgPGEgY2xhc3M9ImxpbmsiIGhyZWY9InRlc3Qtb3JnYW5pemF0aW9uL251bGxhcnktdGVzdC1jYXNlLmh0bWwiIHRpdGxlPSJOdWxsYXJ5IGZ1bmN0aW9uIGJhc2VkIHRlc3QgY2FzZSI+TnVsbGFyeSBmdW5jdGlvbjwvYT4KICAgPC9saT4KPGxpPgogICAgPGEgY2xhc3M9ImxpbmsiIGhyZWY9InRlc3Qtb3JnYW5pemF0aW9uL251bGxhcnktdGVzdC1jYXNlLmh0bWwiIHRpdGxlPSJOdWxsYXJ5IGZ1bmN0aW9uIGJhc2VkIHRlc3QgY2FzZSI+VW5hcnkgZnVuY3Rpb248L2E+CiAgIDwvbGk+CjxsaT4KICAgIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJ0ZXN0LW9yZ2FuaXphdGlvbi90ZXN0LWNhc2UtdGVtcGxhdGUuaHRtbCIgdGl0bGU9IlRlc3QgY2FzZSB0ZW1wbGF0ZSI+TnVsbGFyeSBmdW5jdGlvbiB0ZW1wbGF0ZTwvYT4KICAgPC9saT4KPC91bD48L2Rpdj4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogIFRvIHNvbHZlIHRlc3QgdHJlZSBjcmVhdGlvbiBwcm9ibGVtIHRoZSA8YWNyb255bSBjbGFzcz0iYWNyb255bSI+VVRGPC9hY3JvbnltPiBwcm92aWRlcyBmYWNpbGl0aWVzIGZvciAKICA8YSBjbGFzcz0ibGluayIgaHJlZj0idGVzdC1vcmdhbml6YXRpb24vdGVzdC1zdWl0ZS5odG1sIiB0aXRsZT0iVGVzdCBzdWl0ZSI+dGVzdCBzdWl0ZSBjcmVhdGlvbjwvYT4uCiA8L3A+CjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICBHZW5lcmljIHRlc3QgY2FzZSBjb25zdHJ1Y3Rpb24gZGVzaWduIHVzZWQgYnkgdGhlIDxhY3JvbnltIGNsYXNzPSJhY3JvbnltIj5VVEY8L2Fjcm9ueW0+IGNhdXNlcyB0aGUgdGVzdCBjYXNlIGltcGxlbWVudGF0aW9uICh0ZXN0IGZ1bmN0aW9uIGJvZHkpCiAgYW5kIHRlc3QgY2FzZSBjcmVhdGlvbi9yZWdpc3RyYXRpb24gcG9pbnRzIHRvIGJlIHJlbW90ZS4gQXMgYSByZXN1bHQgeW91IG1heSBmb3JnZXQgdG8gcmVnaXN0ZXIgdGhlIHRlc3QgY2FzZQogIGFuZCBpdCdzIG5ldmVyIGdvaW5nIHRvIGJlIGV4ZWN1dGVkLCBldmVuIHRob3VnaCBpdCdzIHByZXNlbnQgaW4gdGVzdCBmaWxlLiBUbyBhbGxldmlhdGUgdGhpcyBpc3N1ZQogIHRoZSA8YWNyb255bSBjbGFzcz0iYWNyb255bSI+VVRGPC9hY3JvbnltPiBwcmVzZW50cyBmYWNpbGl0aWVzIGZvciBhdXRvbWF0ZWQgKGluIHBsYWNlKSB0ZXN0IGNhc2UgY3JlYXRpb24gYW5kIHJlZ2lzdHJhdGlvbiBpbiB0aGUgdGVzdCB0cmVlLiBUaGVzZQogIGZhY2lsaXRpZXMgc2FjcmlmaWNlIHNvbWUgZ2VuZXJhbGl0eSBhbmQgd29yayBmb3Igc2VsZWN0ZWQgdGVzdCBmdW5jdGlvbiBzaWduYXR1cmVzIG9ubHkuIEJ1dCB0aGUgcmVzdWx0IGlzIHRoYXQKICBsaWJyYXJ5IHVzZXJzIGFyZSByZWxpZXZlZCBmcm9tIHRoZSBuZWNlc3NpdHkgdG8gbWFudWFsbHkgcmVnaXN0ZXIgdGVzdCBjYXNlcy4gVGhlc2UgZmFjaWxpdGllcyBhcmUgdGhlIG1vc3QKICB1c2VyLWZyaWVuZGx5IGFuZCBhcmUgcmVjb21tZW5kZWQgdG8gYmUgdXNlZCB3aGVuZXZlciBwb3NzaWJsZS4gSW4gYWRkaXRpb24gdGhleSBzdXBwb3J0IGF1dG9tYXRlZCByZWdpc3RyYXRpb24KICBvZiB0ZXN0IHN1aXRlcywgdGh1cyBhbGxvd2luZyB3aG9sZSB0ZXN0IHRyZWUgdG8gYmUgY3JlYXRlZCB3aXRob3V0IGFueSB1c2Ugb2YgbWFudWFsIHJlZ2lzdHJhdGlvbi4KIDwvcD4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogIFRoZSBzaW5nbGUgdGVzdCBtb2R1bGUgbWF5IG1peCBib3RoIGF1dG9tYXRlZCBhbmQgbWFudWFsIHRlc3QgY2FzZQogIHJlZ2lzdHJhdGlvbi4gSW4gb3RoZXIgd29yZHMsIHdpdGhpbiB0aGUgc2FtZSB0ZXN0IG1vZHVsZSB5b3UgY2FuIGhhdmUgYm90aCB0ZXN0IGNhc2VzIGltcGxlbWVudGVkIHJlbW90ZWx5IGFuZAogIHJlZ2lzdGVyZWQgbWFudWFsbHkgaW4gdGhlIHRlc3QgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGFuZCB0ZXN0IGNhc2VzIHRoYXQgYXJlIHJlZ2lzdGVyZWQgYXV0b21hdGljYWxseSBhdAogIGltcGxlbWVudGF0aW9uIHBvaW50LgogPC9wPgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgSW4gc29tZSBjYXNlcyBpdCdzIGRlc2lyYWJsZSB0byBhbGxvdyBzb21lICJleHBlY3RlZCIgZmFpbHVyZXMgaW4gdGVzdCBjYXNlIHdpdGhvdXQgZmFpbGluZyBhCiAgdGVzdCBtb2R1bGUuIFRvIHN1cHBvcnQgdGhpcyByZXF1ZXN0IFRoZSA8YWNyb255bSBjbGFzcz0iYWNyb255bSI+VVRGPC9hY3JvbnltPiBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mCiAgPGEgY2xhc3M9ImxpbmsiIGhyZWY9InRlc3Qtb3JnYW5pemF0aW9uL2V4cGVjdGVkLWZhaWx1cmVzLmh0bWwiIHRpdGxlPSJFeHBlY3RlZCBmYWlsdXJlcyBzcGVjaWZpY2F0aW9uIj5leHBlY3RlZCBmYWlsdXJlczwvYT4gaW4gYSB0ZXN0IGNhc2UuCiA8L3A+CjwvZGl2Pgo8dGFibGUgeG1sbnM6cmV2PSJodHRwOi8vd3d3LmNzLnJwaS5lZHUvfmdyZWdvZC9ib29zdC90b29scy9kb2MvcmV2aXNpb24iIHdpZHRoPSIxMDAlIj48dHI+Cjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4KPHRkIGFsaWduPSJyaWdodCI+PGRpdiBjbGFzcz0iY29weXJpZ2h0LWZvb3RlciI+Q29weXJpZ2h0IKkgMjAwMS0yMDA3IEdlbm5hZGl5IFJvemVudGFsPC9kaXY+PC90ZD4KPC90cj48L3RhYmxlPgo8aHI+CjxkaXYgY2xhc3M9InNwaXJpdC1uYXYiPgo8YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImluaXRpYWxpemF0aW9uLmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvcHJldi5wbmciIGFsdD0iUHJldiI+PC9hPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iLi4vdXNlci1ndWlkZS5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL3VwLnBuZyIgYWx0PSJVcCI+PC9hPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iLi4vLi4vaW5kZXguaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy9ob21lLnBuZyIgYWx0PSJIb21lIj48L2E+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJ0ZXN0LW9yZ2FuaXphdGlvbi9udWxsYXJ5LXRlc3QtY2FzZS5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL25leHQucG5nIiBhbHQ9Ik5leHQiPjwvYT4KPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=