PCFkb2N0eXBlIGh0bWwgcHVibGljICItLy93M2MvL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvL2VuIj4KPGh0bWw+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CjxtZXRhIG5hbWU9IlRlbXBsYXRlIiBjb250ZW50PSJGOlxQcm9ncmFtIEZpbGVzXE1pY3Jvc29mdCBPZmZpY2VcT2ZmaWNlXGh0bWwuZG90Ij4KPG1ldGEgbmFtZT0iR0VORVJBVE9SIiBjb250ZW50PSJNaWNyb3NvZnQgRnJvbnRQYWdlIDMuMCI+Cjx0aXRsZT5SZWFkTWUgZm9yIElDVTwvdGl0bGU+CjwvaGVhZD4KCjxib2R5IGJnY29sb3I9IiNGRkZGRkYiIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODAwMDgwIj4KCjxoMj5SZWFkTWU6IElCTSdzIEludGVybmF0aW9uYWwgQ2xhc3NlcyBGb3IgVW5pY29kZTwvaDI+Cgo8cD5WZXJzaW9uOiAwNy8yMi8xOTk5IDxicj4KPC9wPgoKPGhyPgoKPHA+Q09QWVJJR0hUOiA8YnI+CqkgQ29weXJpZ2h0IFRhbGlnZW50LCBJbmMuLCAxOTk3IDxicj4KqSBDb3B5cmlnaHQgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiwgMTk5NyAtIDE5OTkgPGJyPgpMaWNlbnNlZCBNYXRlcmlhbCAtIFByb2dyYW0tUHJvcGVydHkgb2YgSUJNIC0gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gPGJyPgpVUyBHb3Zlcm5tZW50IFVzZXJzIFJlc3RyaWN0ZWQgUmlnaHRzIC0gVXNlLCBkdXBsaWNhdGlvbiwgb3IgZGlzY2xvc3VyZSByZXN0cmljdGVkIGJ5IEdTQQpBRFAgU2NoZWR1bGUgQ29udHJhY3Qgd2l0aCBJQk0gQ29ycC4gPGJyPgo8L3A+Cgo8aHI+Cgo8cD48YnI+CiZuYnNwOyA8YnI+CiZuYnNwOyA8L3A+Cgo8aDM+PHU+Q29udGVudHM8L3U+PC9oMz4KCjx1bD4KICA8bGk+PGEgaHJlZj0iI2ludHJvZHVjdGlvbiI+SW50cm9kdWN0aW9uPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNXaGF0Q29udGFpbiI+V2hhdCB0aGUgSW50ZXJuYXRpb25hbCBDbGFzc2VzIGZvciBVbmljb2RlIENvbnRhaW48L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI0FQSSI+QVBJIG92ZXJ2aWV3PC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNQbGF0Zm9ybURlcGVuZGVuY2llcyI+UGxhdGZvcm0gRGVwZW5kZW5jaWVzPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNJbXBvcnRhbnROb3RlcyI+SW1wb3J0YW50IE5vdGVzIHJlZ2FyZGluZyBXaW4zMjwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjSG93VG9JbnN0YWxsIj5Ib3cgdG8gSW5zdGFsbC9CdWlsZDwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjYWRkbG9jYWxlZGF0YWZpbGUiPkhvdyB0byBhZGQgYSBsb2NhbGUgZGF0YSBmaWxlPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNhZGRyYmRhdGF0b2FwcCI+SG93IHRvIGFkZCByZXNvdXJjZSBidW5kbGUgZGF0YSB0byB5b3VyIGFwcGxpY2F0aW9uPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNXaGVyZUNvbGxhdGlvbiI+V2hlcmUgQ29sbGF0aW9uIERhdGEgaXMgU3RvcmVkPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNDaGFyc2V0Q29udmVydCI+Q2hhcmFjdGVyIFNldCBDb252ZXJzaW9uIEluZm9ybWF0aW9uPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNQcm9ncmFtbWluZ05vdGVzIj5Qcm9ncmFtbWluZyBOb3RlczwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjV2hlcmVUb0ZpbmRNb3JlIj5XaGVyZSB0byBGaW5kIE1vcmUgSW5mb3JtYXRpb248L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI1N1Ym1pdHRpbmdDb21tZW50cyI+U3VibWl0dGluZyBDb21tZW50cywgUmVxdWVzdGluZyBGZWF0dXJlcyBhbmQgUmVwb3J0aW5nCiAgICBCdWdzPC9hPjwvbGk+CjwvdWw+Cgo8aDM+PGEgTkFNRT0iaW50cm9kdWN0aW9uIj48L2E+PHU+SW50cm9kdWN0aW9uPC91PjwvaDM+Cgo8cD5Ub2RheSdzIHNvZnR3YXJlIG1hcmtldCBpcyBhIGdsb2JhbCBvbmUgaW4gd2hpY2ggaXQgaXMgZGVzaXJhYmxlIHRvIGRldmVsb3AgYW5kCm1haW50YWluIG9uZSBhcHBsaWNhdGlvbiB0aGF0IHN1cHBvcnRzIGEgd2lkZSB2YXJpZXR5IG9mIG5hdGlvbmFsIGxhbmd1YWdlcy4gSUJNJ3MKSW50ZXJuYXRpb25hbCBDbGFzc2VzIGZvciBVbmljb2RlIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgdG9vbHMgdG8gaGVscCB5b3Ugd3JpdGUgbGFuZ3VhZ2UKaW5kZXBlbmRlbnQgYXBwbGljYXRpb25zOiAKCjx1bD4KICA8bGk+VW5pY29kZVN0cmluZyBzdXBwb3J0aW5nIHRoZSBVbmljb2RlIDMuMCBzdGFuZGFyZDwvbGk+CiAgPGxpPlJlc291cmNlIGJ1bmRsZXMgZm9yIHN0b3JpbmcgYW5kIGFjY2Vzc2luZyBsb2NhbGl6ZWQgaW5mb3JtYXRpb248L2xpPgogIDxsaT5OdW1iZXIgZm9ybWF0dGVycyBmb3IgY29udmVydGluZyBiaW5hcnkgbnVtYmVycyBpbnRvIHRleHQgc3RyaW5ncyBmb3IgbWVhbmluZ2Z1bCBkaXNwbGF5PC9saT4KICA8bGk+RGF0ZSBhbmQgdGltZSBmb3JtYXR0ZXJzIGZvciBjb252ZXJ0aW5nIGludGVybmFsIHRpbWUgZGF0YSBpbnRvIHRleHQgc3RyaW5ncyBmb3IKICAgIG1lYW5pbmdmdWwgZGlzcGxheTwvbGk+CiAgPGxpPk1lc3NhZ2UgZm9ybWF0dGVycyBmb3IgcHV0dGluZyB0b2dldGhlciBzZXF1ZW5jZXMgb2Ygc3RyaW5ncywgbnVtYmVycyBkYXRlcyBhbmQgb3RoZXIKICAgIGZvcm1hdCB0byBjcmVhdGUgbWVzc2FnZXM8L2xpPgogIDxsaT5UZXh0IGNvbGxhdGlvbiBzdXBwb3J0aW5nIGxhbmd1YWdlIHNlbnNpdGl2ZSBjb21wYXJpc29uIG9mIHN0cmluZ3M8L2xpPgogIDxsaT5UZXh0IGJvdW5kYXJ5IGFuYWx5c2lzIGZvciBmaW5kaW5nIGNoYXJhY3RlcnMsIHdvcmQgYW5kIHNlbnRlbmNlIGJvdW5kYXJpZXM8L2xpPgo8L3VsPgoKPHA+Q2hhbmdpbmcgc2ltcGxlIGRhdGEgZmlsZXMgcmF0aGVyIHRoYW4gbW9kaWZ5aW5nIHByb2dyYW0gY29kZSBlYXNpbHkgbG9jYWxpemVzCmFwcGxpY2F0aW9ucyB3cml0dGVuIHVzaW5nIHRoZXNlIHRvb2xzLiBUaGUgZm9sbG93aW5nIGxvY2FsZXMgYXJlIHN1cHBvcnRlZDogPGZvbnQKZmFjZT0iQ291cmllciBOZXciPmFyLCBhcl9BRSwgYXJfQkgsIGFyX0RaLCBhcl9FRywgYXJfSVEsIGFyX0pPLCBhcl9LVywgYXJfTEIsIGFyX0xZLAphcl9NQSwgYXJfT00sIGFyX1FBLCBhcl9TQSwgYXJfU0QsIGFyX1NZLCBhcl9UTiwgYXJfWUUsIGJlLCBiZV9CWSwgYmcsIGJnX0JHLCBjYSwgY2FfRVMsCmNhX0VTX0VVUk8sIGNzLCBjc19DWiwgZGEsIGRhX0RLLCBkZSwgZGVfQVQsIGRlX0FUX0VVUk8sIGRlX0NILCBkZV9ERSwgZGVfREVfRVVSTywgZGVfTFUsCmRlX0xVX0VVUk8sIGVsLCBlbF9HUiwgZW4sIGVuX0FVLCBlbl9DQSwgZW5fR0IsIGVuX0lFLCBlbl9JRV9FVVJPLCBlbl9OWiwgZW5fVVMsIGVuX1pBLAplcywgZXNfQVIsIGVzX0JPLCBlc19DTCwgZXNfQ08sIGVzX0NSLCBlc19ETywgZXNfRUMsIGVzX0VTLCBlc19FU19FVVJPLCBlc19HVCwgZXNfSE4sCmVzX01YLCBlc19OSSwgZXNfUEEsIGVzX1BFLCBlc19QUiwgZXNfUFksIGVzX1NWLCBlc19VWSwgZXNfVkUsIGV0LCBldF9FRSwgZmksIGZpX0ZJLApmaV9GSV9FVVJPLCBmciwgZnJfQkUsIGZyX0JFX0VVUk8sIGZyX0NBLCBmcl9DSCwgZnJfRlIsIGZyX0ZSX0VVUk8sIGZyX0xVLCBmcl9MVV9FVVJPLCBociwKaHJfSFIsIGh1LCBodV9IVSwgaW5kZXgsIGlzLCBpc19JUywgaXQsIGl0X0NILCBpdF9JVCwgaXRfSVRfRVVSTywgaXcsIGl3X0lMLCBqYSwgamFfSlAsCmtvLCBrb19LUiwgbHQsIGx0X0xULCBsdiwgbHZfTFYsIG1rLCBta19NSywgbmwsIG5sX0JFLCBubF9CRV9FVVJPLCBubF9OTCwgbmxfTkxfRVVSTywgbm8sCm5vX05PLCBub19OT19OWSwgcGwsIHBsX1BMLCBwdCwgcHRfQlIsIHB0X1BULCBwdF9QVF9FVVJPLCBybywgcm9fUk8sIHJ1LCBydV9SVSwgc2gsIHNoX1lVLApzaywgc2tfU0ssIHNsLCBzbF9TSSwgc3EsIHNxX0FMLCBzciwgc3JfWVUsIHN2LCBzdl9TRSwgdGgsIHRoX1RILCB0ciwgdHJfVFIsIHVrLCB1a19VQSwKdmksIHZpX1ZOLCB6aCwgemhfQ04sIHpoX0hLLCB6aF9UVy48L2ZvbnQ+PC9wPgoKPHA+SXQgaXMgcG9zc2libGUgdG8gc3VwcG9ydCBhZGRpdGlvbmFsIGxvY2FsZXMgYnkgYWRkaW5nIG1vcmUgbG9jYWxlIGRhdGEgZmlsZXMsIHdpdGggbm8KY29kZSBjaGFuZ2VzLiA8L3A+Cgo8cD5QbGVhc2UgcmVmZXIgdG8gUE9TSVggcHJvZ3JhbW1lcidzIEd1aWRlIGZvciBkZXRhaWxzIG9uIHdoYXQgdGhlIElTTyBsb2NhbGUgSUQgbWVhbnMuIDwvcD4KCjxwPllvdXIgY29tbWVudHMgYXJlIGltcG9ydGFudCB0byBtYWtpbmcgdGhpcyByZWxlYXNlIHN1Y2Nlc3NmdWwuJm5ic3A7IFdlIGFyZSBjb21taXR0ZWQKdG8gZml4aW5nIGFueSBidWdzLCBhbmQgd2lsbCBhbHNvIHVzZSB5b3VyIGZlZWRiYWNrIHRvIGhlbHAgcGxhbiBmdXR1cmUgcmVsZWFzZXMuIDwvcD4KCjxibG9ja3F1b3RlPgogIDxiPjx1PjxwPklNUE9SVEFOVDwvdT46IFBsZWFzZSBtYWtlIHN1cmUgeW91IHVuZGVyc3RhbmQgdGhlIDxhIGhyZWY9ImxpY2Vuc2UuaHRtbCI+Q29weXJpZ2h0CiAgYW5kIExpY2Vuc2UgaW5mb3JtYXRpb248L2E+LjwvYj48L3A+CjwvYmxvY2txdW90ZT4KCjxibG9ja3F1b3RlPgogIDxwPiZuYnNwOzwvcD4KPC9ibG9ja3F1b3RlPgoKPGgzPjxhIE5BTUU9IldoYXRDb250YWluIj48L2E+PHU+V2hhdCB0aGUgSW50ZXJuYXRpb25hbCBDbGFzc2VzIEZvciBVbmljb2RlIENvbnRhaW48L3U+PC9oMz4KCjxwPkFsbCBmaWxlcyBhcmUgY29udGFpbmVkIGluIDxiPmljdS1YWFhYWFguemlwLjwvYj4gPGJyPgpQbGVhc2UgdW56aXAgdGhpcyBmaWxlLiZuYnNwOyBJdCB3aWxsIHJlLWNvbnN0cnVjdCB0aGUgc291cmNlIGRpcmVjdG9yeS4gUGxlYXNlIGJlIHN1cmUgdG8KZG8gJnF1b3Q7PHN0cm9uZz51bnppcCAtYSBpY3UtWFhYWFhYLnppcCAtZCBkcml2ZTpcZGlyZWN0b3J5PC9zdHJvbmc+JnF1b3Q7IG9uIFdpbjMyIHBsYXRmb3Jtcy4KJm5ic3A7IFRoaXMgd2lsbCBjb252ZXJ0IHRoZSBsaW5lIGZlZWQvY2FycmlhZ2UgcmV0dXJuIGNoYXJhY3RlcnMgY29ycmVjdGx5IG9uIHdpbmRvd3MuCiZuYnNwOyBCZWZvcmUgcnVubmluZyB0aGUgdGVzdCBwcm9ncmFtcyBvciBzYW1wbGVzLCBwbGVhc2Ugc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSA8c3Ryb25nPklDVV9EQVRBPC9zdHJvbmc+LAp0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgZGF0YSBkaXJlY3RvcnksIHRvIGluZGljYXRlIHdoZXJlIHRoZSBsb2NhbGUgZGF0YSBmaWxlcyBhbmQKY29udmVyc2lvbiBtYXBwaW5nIHRhYmxlcyBhcmUuJm5ic3A7IElmIHRoaXMgdmFyaWFibGUgaXMgbm90IHNldCwgdGhlIGRlZmF1bHQgdXNlciBkYXRhCmRpcmVjdG9yeSB3aWxsIGJlIHVzZWQuPC9wPgoKPHA+QmVsb3csIDxiPiRSb290PC9iPiBpcyB0aGUgcGxhY2VtZW50IG9mIHRoZSBpY3UgZGlyZWN0b3J5IGluIHlvdXIgZmlsZSBzeXN0ZW0sIGxpa2UgJnF1b3Q7ZHJpdmU6XC4uLlxpY3UmcXVvdDsgaW4geW91ciBlbnZpcm9ubWVudC4KJnF1b3Q7ZHJpdmU6XC4uLiZxdW90OyBzdGFuZHMgZm9yIGFueSBkcml2ZSBhbmQgYW55IGRpcmVjdG9yeSBvbiB0aGF0IGRyaXZlIHRoYXQgeW91IGNob3NlIHRvIGluc3RhbGwgaWN1IGludG8uPC9wPgoKPHA+PGI+VGhlIGZvbGxvd2luZyBmaWxlcyBkZXNjcmliZSB0aGUgY29kZSBkcm9wOjwvYj4gPGJyPgombmJzcDsgPGJyPgombmJzcDsgPC9wPgoKPHRhYmxlIEJPUkRFUj0iMSI+CiAgPHRyPgogICAgPHRkPnJlYWRtZS5odG1sICh0aGlzIGZpbGUpPC90ZD4KICAgIDx0ZD5kZXNjcmliZXMgdGhlIElCTSdzIEludGVybmF0aW9uYWwgQ2xhc3NlcyBmb3IgVW5pY29kZTwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+bGljZW5zZS5odG1sPC90ZD4KICAgIDx0ZD5jb250YWlucyBJQk0ncyBwdWJsaWMgbGljZW5zZTwvdGQ+CiAgPC90cj4KPC90YWJsZT4KCjxwPjxiPlRoZSBmb2xsb3dpbmcgZGlyZWN0b3JpZXMgY29udGFpbiBzb3VyY2UgY29kZSBhbmQgZGF0YSBmaWxlczo8L2I+IDxicj4KJm5ic3A7IDxicj4KJm5ic3A7IDwvcD4KCjx0YWJsZSBCT1JERVI9IjEiIFdJRFRIPSI2MjMiPgogIDx0cj4KICAgIDx0ZCBXSURUSD0iMjAlIj4kUm9vdFxzb3VyY2VcY29tbW9uXDwvdGQ+CiAgICA8dGQgV0lEVEg9IjgwJSI+VGhlIHV0aWxpdHkgY2xhc3Nlcywgc3VjaCBhcyBSZXNvdXJjZUJ1bmRsZSwgVW5pY29kZSwgTG9jYWxlLAogICAgVW5pY29kZVN0cmluZy4gVGhlIGNvZGVwYWdlIGNvbnZlcnNpb24gbGlicmFyeSBBUEksIFVuaWNvZGVDb252ZXJ0ZXIuPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCBXSURUSD0iMjAlIj4kUm9vdFxzb3VyY2VcaTE4blw8L3RkPgogICAgPHRkIFdJRFRIPSI4MCUiPlRoZSBjb2xsYXRpb24gc291cmNlIGZpbGVzLCBDb2xsYXRvciwgUnVsZUJhc2VkQ29sbGF0b3IgYW5kCiAgICBDb2xsYXRpb25LZXkuJm5ic3A7IDxicj4KICAgIFRoZSB0ZXh0IGJvdW5kYXJ5IEFQSSwgd2hpY2ggbG9jYXRlcyBjaGFyYWN0ZXIsIHdvcmQsIHNlbnRlbmNlLCBhbmQmbmJzcDsgPGJyPgogICAgbGluZSBicmVha3MuJm5ic3A7IDxicj4KICAgIFRoZSBmb3JtYXQgQVBJLCB3aGljaCBmb3JtYXRzIGFuZCBwYXJzZXMgZGF0YSBpbiBudW1lcmljIG9yIGRhdGUgZm9ybWF0IHRvIGFuZCBmcm9tIHRleHQuPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCBXSURUSD0iMjAlIj4kUm9vdFxzb3VyY2VcdGVzdFxpbnRsdGVzdFw8L3RkPgogICAgPHRkIFdJRFRIPSI4MCUiPkEgdGVzdCBzdWl0ZSBpbmNsdWRpbmcgYWxsIEMrKyBBUElzLiBGb3IgaW5mb3JtYXRpb24gYWJvdXQgcnVubmluZyB0aGUKICAgIHRlc3Qgc3VpdGUsIHNlZSA8YSBocmVmPSJkb2NzL2ludGx0ZXN0Lmh0bWwiPmRvY3NcaW50bHRlc3QuaHRtbDwvYT4uPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCBXSURUSD0iMjAlIj4kUm9vdFxzb3VyY2VcdGVzdFxjaW50bHRzdFw8L3RkPgogICAgPHRkIFdJRFRIPSI4MCUiPkEgdGVzdCBzdWl0ZSBpbmNsdWRpbmcgYWxsIEMgQVBJcy4gRm9yIGluZm9ybWF0aW9uIGFib3V0IHJ1bm5pbmcgdGhlIHRlc3QKICAgIHN1aXRlLCBzZWUmbmJzcDsgPGEgaHJlZj0iZG9jcy9jaW50bHRzdC5odG1sIj5kb2NzXGNpbnRsdHN0Lmh0bWwuPC9hPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgV0lEVEg9IjIwJSI+JFJvb3RcZGF0YVw8L3RkPgogICAgPHRkIFdJRFRIPSI4MCUiPlRoZSBVbmljb2RlIDMuMCBkYXRhIGZpbGUuJm5ic3A7IFBsZWFzZSBzZWUgPGEKICAgIGhyZWY9Imh0dHA6Ly93d3cudW5pY29kZS5vcmcvIj5odHRwOi8vd3d3LnVuaWNvZGUub3JnLzwvYT4gZm9yIG1vcmUgaW5mb3JtYXRpb24uJm5ic3A7IDxicj4KICAgIFRoaXMgZGlyZWN0b3J5IGFsc28gY29udGFpbnMgdGhlIHJlc291cmNlIGZpbGVzIGZvciBhbGwgaW50ZXJuYXRpb25hbCBvYmplY3RzLiZuYnNwOyBUaGVzZQogICAgZmlsZXMgYXJlIG9mIHRocmVlIHR5cGVzOiZuYnNwOyA8dWw+CiAgICAgIDxsaT5UWFQgZmlsZXMgY29udGFpbiBnZW5lcmFsIGxvY2FsZSBkYXRhLiZuYnNwOzwvbGk+CiAgICAgIDxsaT5SRVMgZmlsZXMgY29udGFpbiBub24tcG9ydGFibGUgbG9jYWxlIGRhdGEgZmlsZXMgd2hpY2ggYXJlIGdlbmVyYXRlZCBieSB0aGUgPHN0cm9uZz5nZW5yYjwvc3Ryb25nPgogICAgICAgIHRvb2wuPC9saT4KICAgICAgPGxpPkNPTCBmaWxlcyBhcmUgbm9uLXBvcnRhYmxlIHBhY2tlZCBiaW5hcnkgY29sbGF0aW9uIGRhdGEgZmlsZXMgd2hpY2ggYXJlIGNyZWF0ZWQgYnkgdGhlIDxzdHJvbmc+Z2VuY29sPC9zdHJvbmc+CiAgICAgICAgdG9vbC4mbmJzcDs8L2xpPgogICAgICA8bGk+VUNNIGZpbGVzIHdoaWNoIGNvbnRhaW4gbWFwcGluZyB0YWJsZXMge2Zyb20sdG99IFVuaWNvZGUgaW4gdGV4dCBmb3JtYXQ8L2xpPgogICAgICA8bGk+Q05WIGZpbGVzIGFyZSBub24tcG9ydGFibGUgcGFja2VkIGJpbmFyeSBjb252ZXJzaW9uIGRhdGEgZ2VuZXJhdGVkIGJ5IHRoZSA8c3Ryb25nPm1ha2Vjb252PC9zdHJvbmc+CiAgICAgICAgdG9vbC48L2xpPgogICAgPC91bD4KICAgIDwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgV0lEVEg9IjIwJSI+JFJvb3Rcc291cmNlXHRvb2xzXGdlbnJiPC90ZD4KICAgIDx0ZCBXSURUSD0iODAlIj5UaGlzIHRvb2wgY29udmVydHMgdGhlIHBvcnRhYmxlIGxvY2FsZSBkYXRhIGZpbGVzIGluIHRleHQgZm9ybWF0IHRvCiAgICBtYWNoaW5lLXNwZWNpZmljIGJpbmFyeSBmb3JtYXQgZm9yIHJlc291cmNlIGJ1bmRsZSBwZXJmb3JtYW5jZSBlZmZpY2llbmN5LiZuYnNwOyBUbyBydW4KICAgIHRoaXMgdG9vbCBvbiBhbGwgdGhlIGxvY2FsZSBkYXRhIGZpbGVzLCBwbGVhc2UgdHlwZSB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIG9uIHRoZQogICAgc3VwcG9ydGVkIHBsYXRmb3Jtczo8dWw+CiAgICAgIDxsaT5XaW4zMjogPHN0cm9uZz5nZW5yYiBEZWJ1Zzwvc3Ryb25nPiAob3IgJnF1b3Q7Z2VucmIgUmVsZWFzZSZxdW90OyBmb3IgcmVsZWFzZSBidWlsZCk8L2xpPgogICAgICA8bGk+VU5JWDogdHlwZSA8c3Ryb25nPm1ha2U8L3N0cm9uZz4gdW5kZXIgdGhlIGNvbW1hbmQgcHJvbXB0LiZuYnNwOyBBbGwgdGhlIGJpbmFyeSBmb3JtYXQKICAgICAgICByZXNvdXJjZSBmaWxlcyB3aWxsIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseS48L2xpPgogICAgPC91bD4KICAgIDwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgV0lEVEg9IjIwJSI+JFJvb3Rcc291cmNlXHRvb2xzXGdlbmNvbDwvdGQ+CiAgICA8dGQgV0lEVEg9IjgwJSI+Jm5ic3A7PHA+VGhpcyB0b29sIGNvbnZlcnRzIHRoZSBjb2xsYXRpb24gcnVsZXMgaW4gdGhlIHBvcnRhYmxlIGxvY2FsZSBkYXRhCiAgICBmaWxlcyBpbiB0ZXh0IGZvcm1hdCB0byBtYWNoaW5lLXNwZWNpZmljIGJpbmFyeSBjb2xsYXRpb24gZGF0YS4mbmJzcDsgVG8gcnVuIHRoaXMgdG9vbCBmb3IKICAgIGFsbCB0aGUgc3VwcG9ydGVkIGNvbGxhdG9ycywgcGxlYXNlIHR5cGUgdGhlIGZvbGxvd2luZyB1bmRlciB0aGUgY29tbWFuZCBwcm9tcHQgb24gdGhlCiAgICBzdXBwb3J0ZWQgcGxhdGZvcm1zOjx1bD4KICAgICAgPGxpPldpbjMyOiA8c3Ryb25nPmdlbmNvbDwvc3Ryb25nPiA8L2xpPgogICAgICA8bGk+VU5JWDogdHlwZSA8c3Ryb25nPm1ha2U8L3N0cm9uZz4gdW5kZXIgdGhlIGNvbW1hbmQgcHJvbXB0LiZuYnNwOyBBbGwgdGhlIGJpbmFyeSBmb3JtYXQKICAgICAgICBjb2xsYXRpb24gZmlsZXMgd2lsbCBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkuPC9saT4KICAgIDwvdWw+CiAgICA8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIFdJRFRIPSIyMCUiPiRSb290XHNvdXJjZVx0b29sc1xtYWtlY29udjwvdGQ+CiAgICA8dGQgV0lEVEg9IjgwJSI+Jm5ic3A7PHA+VGhpcyB0b29sIGNvbnZlcnRzIHRoZSBuYXRpdmUgZW5jb2RpbmcgdG8vZnJvbSBVQ1MtMiBtYXBwaW5nIHRhYmxlIGluCiAgICB0ZXh0IGZvcm1hdCB0byBtYWNoaW5lLXNwZWNpZmljIGJpbmFyeSBmb3JtYXQuJm5ic3A7IFRvIHJ1biB0aGlzIHRvb2wgZm9yIGFsbCB0aGUKICAgIHN1cHBvcnRlZCBjb252ZXJ0ZXJzLCBwbGVhc2UgdHlwZSB0aGUgZm9sbG93aW5nIHVuZGVyIHRoZSBjb21tYW5kIHByb21wdCBvbiB0aGUgc3VwcG9ydGVkCiAgICBwbGF0Zm9ybXM6PHVsPgogICAgICA8bGk+V2luMzI6IDxzdHJvbmc+bWFrZWNvbnYgRGVidWcgPC9zdHJvbmc+KG9yICZxdW90O21ha2Vjb252IFJlbGVhc2UmcXVvdDsgZm9yIHJlbGVhc2UKICAgICAgICBidWlsZCkgPC9saT4KICAgICAgPGxpPlVOSVg6IHR5cGUgPHN0cm9uZz5tYWtlPC9zdHJvbmc+IHVuZGVyIHRoZSBjb21tYW5kIHByb21wdC4mbmJzcDsgQWxsIHRoZSBiaW5hcnkgZm9ybWF0CiAgICAgICAgY29udmVyc2lvbiB0YWJsZXMgd2lsbCBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkuPC9saT4KICAgIDwvdWw+CiAgICA8L3RkPgogIDwvdHI+CjwvdGFibGU+Cgo8cD4mbmJzcDs8Yj5UaGUgZm9sbG93aW5nIGRpcmVjdG9yaWVzIGFyZSBwb3B1bGF0ZWQgd2hlbiB5b3UndmUgYnVpbHQgdGhlIGZyYW1ld29yazo8L2I+IDxicj4KJm5ic3A7IChvbiBVbml4LCByZXBsYWNlICRSb290IHdpdGggdGhlIHZhbHVlIGdpdmVuIHRvIHRoZSBmaWxlICZxdW90O2NvbmZpZ3VyZSZxdW90OykgPGJyPgombmJzcDsgPC9wPgoKPHRhYmxlIEJPUkRFUj0iMSI+CiAgPHRyPgogICAgPHRkPiRSb290XGluY2x1ZGVcPC90ZD4KICAgIDx0ZD5jb250YWlucyBhbGwgdGhlIHB1YmxpYyBoZWFkZXIgZmlsZXMuPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD4kb3V0cHV0PC90ZD4KICAgIDx0ZD5jb250YWlucyB0aGUgbGlicmFyaWVzIGZvciBzdGF0aWMvZHluYW1pYyBsaW5raW5nIG9yIGV4ZWN1dGFibGUgcHJvZ3JhbXMuPC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKPHA+PGI+VGhlIGZvbGxvd2luZyBkaWFncmFtIHNob3dzIHRoZSBtYWluIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgb2YgdGhlIElCTSdzIEludGVybmF0aW9uYWwKQ2xhc3NlcyBmb3IgVW5pY29kZTo8L2I+IDwvcD4KCjxwcmU+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGljdS1OTk5OCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB8CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO291dHB1dCZuYnNwOyZuYnNwOyAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICAgIGljdQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgX19fX198X19fX18gICAgICAgX19fX19fX19fX19fX198X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiZuYnNwOyZuYnNwOyZuYnNwOyB8Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyAgIHwmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgIHwgJm5ic3A7ICAgJm5ic3A7IHwmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfCZuYnNwOyAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB8ICAgICAgICAgIHwKIGxpYnJhcmllcyAgIHByb2dyYW1zICZuYnNwO2luY2x1ZGUmbmJzcDtkYXRhJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHNvdXJjZSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB8ICAgICAgICAgIHwKIChidWlsdCkgICAgKGJ1aWx0KSAgIChidWlsdCkmbmJzcDsgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB8Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJlYWRtZS5odG1sIGxpY2Vuc2UuaHRtbAombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB8ICAgICAgICAgICAgICAgICAgICAgICAgIAombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgICAgICAgICAgICAgICAgICBfX19fX19fX19fX19fX19fX3xfX19fX19fX19fX19fX19fX19fX19fX19fXwombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgICAgICAgICAgICAgICAgICAgfCAgICAgICB8ICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHwmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfCAgICAgICAgIHwgICAgICAgIHwKJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICAgICAgICAgICAgICAgICAgIGNvbW1vbiAgaTE4biZuYnNwOyZuYnNwOyAgICB0ZXN0ICAgICBleHRyYSAgICAgdG9vbHMgICBzYW1wbGVzCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAgJm5ic3A7ICZuYnNwOyAgfCAgICAgICAgICAgICAgICAgfCAgIAombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBfX198X19fJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICBfX198X19fX19fX19fX19fX19fX18KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgIHwgICAgICAgICAgfCAgICAgIHwgICAgICB8ICAgICB8IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGx0ZXN0IGNpbnRsdHN0IG1ha2Vjb252IGN0ZXN0ZncgZ2VucmIgIC4uLi48L3ByZT4KCjxoMz48YSBOQU1FPSJBUEkiPjwvYT48dT5BUEkgT3ZlcnZpZXc8L3U+PC9oMz4KCjxwPkluIHRoZSBJbnRlcm5hdGlvbmFsIENsYXNzZXMgZm9yIFVuaWNvZGUsIHRoZXJlIGFyZSB0d28gY2F0ZWdvcmllczogCgo8dWw+CiAgPGxpPkxvdy1sZXZlbCBVbmljb2RlL1Jlc291cmNlIEF0dHJpYnV0ZXM6ICg8c3Ryb25nPmljdXVjPC9zdHJvbmc+IGxpYnJhcnkpPHVsPgogICAgICA8bGk+PGEgaHJlZj0iZG9jcy91dGlsQ0wuaHRtbCI+VXRpbGl0eSBDbGFzc2VzPC9hPjwvbGk+CiAgICAgIDxsaT5Db252ZXJzaW9uIEludGVyZmFjZTwvbGk+CiAgICA8L3VsPgogIDwvbGk+CiAgPGxpPkhpZ2gtbGV2ZWwgVW5pY29kZSBJbnRlcm5hdGlvbmFsaXphdGlvbjogKDxzdHJvbmc+aWN1aTE4bjwvc3Ryb25nPiBsaWJyYXJ5KTx1bD4KICAgICAgPGxpPjxhIGhyZWY9ImRvY3MvYm91bmRDTC5odG1sIj5UZXh0IEJvdW5kYXJ5IENsYXNzZXM8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9ImRvY3MvY29sbGF0ZUNMLmh0bWwiPkNvbGxhdGlvbiBDbGFzc2VzPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJkb2NzL2Zvcm1hdENMLmh0bWwiPkZvcm1hdHRpbmcgQ2xhc3NlczwvYT48L2xpPgogICAgPC91bD4KICA8L2xpPgo8L3VsPgoKPHA+U2VlIElCTSdzPGEgaHJlZj0iZG9jcy9jb2RlQ29udi5odG1sIj4gSW50ZXJuYXRpb25hbCBDbGFzc2VzIGZvciBVbmljb2RlIENvZGUKQ29udmVudGlvbnM8L2E+IGZvciBhIGRpc2N1c3Npb24gb2YgY29kZSBjb252ZW50aW9ucyBjb21tb24gdG8gYWxsIGxpYnJhcnkgY2xhc3Nlcy4gPC9wPgoKPHA+U2VlIGFsc28gPGEgaHJlZj0iaHRtbC9haW5kZXguaHRtbCI+aHRtbC9haW5kZXguaHRtbDwvYT4gZm9yIGFuIGFscGhhYmV0aWNhbCBpbmRleCwgYW5kCjxhIGhyZWY9Imh0bWwvSElFUmphdmEuaHRtbCI+aHRtbC9ISUVSamF2YS5odG1sPC9hPiBmb3IgYSBoaWVyYXJjaGljYWwgaW5kZXggdG8gZGV0YWlsZWQKQVBJIGRvY3VtZW50YXRpb24uIDxicj4KJm5ic3A7IDxicj4KJm5ic3A7IDwvcD4KCjxoMz48YSBOQU1FPSJQbGF0Zm9ybURlcGVuZGVuY2llcyI+PC9hPjx1PlBsYXRmb3JtIERlcGVuZGVuY2llczwvdT48L2gzPgoKPHA+VGhlIHBsYXRmb3JtIGRlcGVuZGVuY2llcyBoYXZlIGJlZW4gaXNvbGF0ZWQgaW50byB0aGUgZm9sbG93aW5nIDQgZmlsZXM6IAoKPHVsPgogIDxsaT48dT5wbGF0Zm9ybS5oLmluOjwvdT4gUGxhdGZvcm0tZGVwZW5kZW50IHR5cGVkZWZzIGFuZCBkZWZpbmVzOjwvbGk+CjwvdWw+Cgo8YmxvY2txdW90ZT4KICA8dWw+CiAgICA8bGk+WFBfQ1BMVVNQTFVTIGlzIGRlZmluZWQgZm9yIEMrKzwvbGk+CiAgICA8bGk+Ym9vbF90LCBUUlVFIGFuZCBGQUxTRSwgaW50OF90LCBpbnQxNl90IGV0Yy48L2xpPgogICAgPGxpPlVfRVhQT1JUIGFuZCBVX0lNUE9SVCBmb3Igc3BlY2lmeWluZyBkeW5hbWljIGxpYnJhcnkgaW1wb3J0IGFuZCBleHBvcnQ8L2xpPgogIDwvdWw+CjwvYmxvY2txdW90ZT4KCjx1bD4KICA8bGk+PHU+cHV0aWwuYzo8L3U+IHBsYXRmb3JtLWRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbnMgb2YgdmFyaW91cyBmdW5jdGlvbnMgdGhhdCBhcmUKICAgIHBsYXRmb3JtIGRlcGVuZGVudDogKGRlY2xhcmVkIGluIHB1dGlsLmgpPC9saT4KPC91bD4KCjxibG9ja3F1b3RlPgogIDx1bD4KICAgIDxsaT5pY3VfaXNOYU4sIGljdV9pc0luZmluaXRlKGRvdWJsZSksIGljdV9nZXROYU4oKTsgaWN1X2dldEluZmluaXR5IGZvciBoYW5kbGluZyBzcGVjaWFsCiAgICAgIGZsb2F0aW5nIHBvaW50IHZhbHVlczwvbGk+CiAgICA8bGk+aWN1X3R6c2V0LCBpY3VfdGltZXpvbmUsIGljdV90em5hbWUgYW5kIHRpbWUgZm9yIHJlYWRpbmcgcGxhdGZvcm0gc3BlY2lmaWMgdGltZSBhbmQKICAgICAgdGltZXpvbmUgaW5mb3JtYXRpb248L2xpPgogICAgPGxpPmljdV9nZXREZWZhdWx0RGF0YURpcmVjdG9yeSwgaWN1X2dldERlZmF1bHRMb2NhbGVJRCBmb3IgcmVhZGluZyB0aGUgbG9jYWxlIHNldHRpbmcgYW5kCiAgICAgIGRhdGEgZGlyZWN0b3J5PC9saT4KICAgIDxsaT5pY3VfaXNCaWdFbmRpYW4gZm9yIGZpbmRpbmcgdGhlIGVuZGlhbmVzcyBvZiB0aGUgcGxhdGZvcm08L2xpPgogICAgPGxpPmljdV9uZXh0RG91YmxlIGlzIHVzZWQgc3BlY2lmaWNhbGx5IGJ5IHRoZSBDaG9pY2VGb3JtYXQgQVBJLjwvbGk+CiAgPC91bD4KPC9ibG9ja3F1b3RlPgoKPHVsPgogIDxsaT48dT5tdXRleC5oIGFuZCBtdXRleC5jcHA8L3U+OiBDb2RlIGZvciBkb2luZyBzeW5jaHJvbml6YXRpb24gaW4gbXVsdGl0aHJlYWRlZAogICAgYXBwbGljYXRpb25zLiBJZiB5b3Ugd2lzaCB0byB1c2UgSUJNJ3MgSW50ZXJuYXRpb25hbCBDbGFzc2VzIGZvciBVbmljb2RlIGluIGEKICAgIG11bHRpdGhyZWFkZWQgYXBwbGljYXRpb24sIHlvdSBtdXN0IHByb3ZpZGUgYSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlIHRoYXQgdGhlIGNsYXNzZXMKICAgIGNhbiB1c2UgdG8gcHJvdGVjdCB0aGVpciBnbG9iYWwgZGF0YSBhZ2FpbnN0IHNpbXVsdGFuZW91cyBtb2RpZmljYXRpb25zLiBTZWUgPGEKICAgIGhyZWY9ImRvY3MvbXV0ZXguaHRtbCI+ZG9jc1xtdXRleC5odG1sPC9hPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi48L2xpPgogIDx1bD4KICAgIDxsaT5XZSBzdXBwbHkgc2FtcGxlIGltcGxlbWVudGF0aW9ucyBmb3IgV2luTlQsIFdpbjk1LCBTdW4sIExpbnV4IGFuZCBmb3IgQUlYIG9uIGFuIFJTLzYwMDAuPC9saT4KICAgIDxsaT5JZiB5b3UgYXJlIGNoYW5naW5nIHRoZSBwbGF0Zm9ybS1kZXBlbmRlbnQgZmlsZXMsIHB0eXBlcy5oIGFuZCBwdXRpbC5oIG1heSBhbHNvIGJlCiAgICAgIGludGVyZXN0aW5nLCBidXQgc2hvdWxkbid0IGhhdmUgdG8gYmUgY2hhbmdlZC4gSWYgeW91IHRoaW5rIGFueSBvdGhlciBmaWxlcyB0aGFuIHRoZSBvbmVzCiAgICAgIG1lbnRpb25lZCBhYm92ZSBoYXZlIHBsYXRmb3JtIGRlcGVuZGVuY2llcywgcGxlYXNlIGNvbnRhY3QgdXMuPC9saT4KICAgIDxsaT5Gb3IgdGhlIEludGx0ZXN0IHRlc3Qgc3VpdGUsIGludGx0ZXN0LmNwcCBpbiAmcXVvdDtpY3Vcc291cmNlXHRlc3RcaW50bHRlc3RcJnF1b3Q7CiAgICAgIGNvbnRhaW5zIHRoZSBtZXRob2QgcGF0aG5hbWVJbkNvbnRleHQsIHdoaWNoIG11c3QgYWxzbyBiZSBhZGFwdGVkIHRvIGFueSBuZXcgcGxhdGZvcm0uPC9saT4KICA8L3VsPgo8L3VsPgoKPGgzPjxhIE5BTUU9IkltcG9ydGFudE5vdGVzIj48L2E+PGI+PHU+SW1wb3J0YW50IE5vdGVzIFJlZ2FyZGluZyBXaW4zMjwvdT48L2I+PC9oMz4KCjxwPklmIHlvdSBhcmUgYnVpbGRpbmcgb24gdGhlIFdpbjMyIHBsYXRmb3JtLCBpdCBpcyBpbXBvcnRhbnQgdGhhdCB5b3UgdW5kZXJzdGFuZCBhIGZldwpidWlsZCBkZXRhaWxzOiA8L3A+Cgo8cD48dT5ETEwgZGlyZWN0b3JpZXMgYW5kIHRoZSBQQVRIIHNldHRpbmc6PC91PiBBcyBkZWxpdmVyZWQsIHRoZSBJQk0ncyBJbnRlcm5hdGlvbmFsCkNsYXNzZXMgZm9yIFVuaWNvZGUgYnVpbGQgYXMgc2V2ZXJhbCBETExzLiBUaGVzZSBETExzIGFyZSBwbGFjZWQgaW4gdGhlIGRpcmVjdG9yaWVzCiZxdW90O2ljdVxiaW5cRGVidWcmcXVvdDsgYW5kICZxdW90O2ljdVxiaW5cUmVsZWFzZSZxdW90Oy4mbmJzcDsgWW91IG11c3QgYWRkIGVpdGhlciBvZgp0aGVzZSBkaXJlY3RvcmllcyB0byB0aGUgUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbiB5b3VyIHN5c3RlbSwgb3IgYW55IGV4ZWN1dGFibGVzIHlvdQpidWlsZCB3aWxsIG5vdCBiZSBhYmxlIHRvIGFjY2VzcyBJQk0ncyBJbnRlcm5hdGlvbmFsIENsYXNzZXMgZm9yIFVuaWNvZGUgbGlicmFyaWVzLgpBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGNvcHkgdGhlIERMTCBmaWxlcyBpbnRvIGEgZGlyZWN0b3J5IGFscmVhZHkgaW4geW91ciBQQVRILCBidXQgd2UgZG8Kbm90IHJlY29tbWVuZCB0aGlzIC0tIHlvdSBjYW4gd2luZCB1cCB3aXRoIG11bHRpcGxlIGNvcGllcyBvZiB0aGUgRExMLCBhbmQgd2luZCB1cCB1c2luZwp0aGUgd3Jvbmcgb25lLiA8L3A+Cgo8cD48dT5UbyBjaGFuZ2UgeW91ciBQQVRIOjwvdT4mbmJzcDsgRG8gdGhpcyB1bmRlciBOVCBieSB1c2luZyB0aGUgU3lzdGVtIGNvbnRyb2wgcGFuZWwuClBpY2sgdGhlICZxdW90O0Vudmlyb25tZW50JnF1b3Q7IHRhYiwgc2VsZWN0IHRoZSB2YXJpYWJsZSBQQVRIIGluIHRoZSBsb3dlciBib3guJm5ic3A7IEluCnRoZSAmcXVvdDt2YWx1ZSZxdW90OyBib3gsIGFwcGVuZCB0aGUgc3RyaW5nICZxdW90Oztkcml2ZTpcLi4uXGljdVxiaW5cRGVidWcmcXVvdDsgYXQgdGhlIGVuZCBvZgp0aGUgcGF0aCBzdHJpbmcuJm5ic3A7IElmIHRoZXJlIGlzIG5vdGhpbmcgdGhlcmUsIGp1c3QgdHlwZSBpbgomcXVvdDtkcml2ZTpcLi4uXGljdVxiaW5cRGVidWcmcXVvdDsuIENsaWNrIHRoZSBTZXQgYnV0dG9uLCB0aGVuIHRoZSBPayBidXR0b24uIDwvcD4KCjxwPjx1Pkxpbmsgd2l0aCBSdW50aW1lIGxpYnJhcmllczo8L3U+IEFsbCB0aGUgRExMcyBsaW5rIHdpdGggdGhlIEMgcnVudGltZSBsaWJyYXJ5CiZxdW90O0RlYnVnIE11bHRpdGhyZWFkZWQgRExMJnF1b3Q7IG9yICZxdW90O011bHRpdGhyZWFkZWQgRExMLiZxdW90OyAoVGhpcyBpcyBjaGFuZ2VkCnRocm91Z2ggdGhlIFByb2plY3QgU2V0dGluZ3MgZGlhbG9nLCBvbiB0aGUgQy9DKysgdGFiLCB1bmRlciBDb2RlIEdlbmVyYXRpb24uKSBJdCBpcwppbXBvcnRhbnQgdGhhdCBhbnkgZXhlY3V0YWJsZSBvciBvdGhlciBETEwgeW91IGJ1aWxkIHdoaWNoIHVzZXMgdGhlIElCTSdzIEludGVybmF0aW9uYWwKQ2xhc3NlcyBmb3IgVW5pY29kZSBETExzIGxpbmtzIHdpdGggdGhlc2UgcnVudGltZSBsaWJyYXJpZXMgYXMgd2VsbC4gSWYgeW91IGRvIG5vdCBkbwp0aGlzLCB5b3Ugd2lsbCBzZWVtaW5nbHkgZ2V0IG1lbW9yeSBlcnJvcnMgd2hlbiB5b3UgcnVuIHRoZSBleGVjdXRhYmxlLiA8YnI+CiZuYnNwOyA8YnI+CiZuYnNwOyA8L3A+Cgo8aDM+PGEgTkFNRT0iSG93VG9JbnN0YWxsIj48L2E+PHU+SG93IHRvIEluc3RhbGwvQnVpbGQgb24gV2luIE5UPC91PjwvaDM+Cgo8cD5CdWlsZGluZyBJQk0ncyBJbnRlcm5hdGlvbmFsIENsYXNzZXMgZm9yIFVuaWNvZGUgcmVxdWlyZXM6IAoKPHVsPgogIDxsaT5NaWNyb3NvZnQgTlQgMy41MSBvciBhYm92ZTwvbGk+CiAgPGxpPk1pY3Jvc29mdCBWaXN1YWwgQysrIDYuMCAoU2VydmljZSBQYWNrIDIgaXMgcmVxdWlyZWQgdG8gd29yayB3aXRoIHRoZSByZWxlYXNlIGJ1aWxkIG9mCiAgICBtYXggc3BlZWQgb3B0aW1pemF0aW9uKS48L2xpPgo8L3VsPgoKPHA+VGhlIHN0ZXBzIGFyZTogCgo8b2w+CiAgPGxpPlVuemlwIHRoZSBpY3UtWFhYWC56aXAgZmlsZSwgdHlwZSAmcXVvdDt1bnppcCAtYSBpY3UtWFhYWC56aXAgLWQgZHJpdmU6XGRpcmVjdG9yeSZxdW90OyB1bmRlcgogICAgY29tbWFuZCBwcm9tcHQuJm5ic3A7IGRyaXZlOlxkaXJlY3RvcnlcaWN1IGlzIHRoZSByb290ICgkUm9vdCkgZGlyZWN0b3J5CiAgICAoeW91IG1heSBidXQgZG9uJ3QgbmVlZCB0byBwbGFjZSAmcXVvdDtpY3UmcXVvdDsgaW50byBhbm90aGVyIGRpcmVjdG9yeSkuCiAgICBJZiB5b3UgY2hhbmdlIHRoZSByb290LCB5b3Ugd2lsbAogICAgY2hhbmdlIHRoZSBwcm9qZWN0IHNldHRpbmdzIGFjY29yZGluZ2x5IGluIEVBQ0ggbWFrZWZpbGUgaW4gdGhlIHByb2plY3QsIHVwZGF0aW5nIHRoZQogICAgaW5jbHVkZSBhbmQgbGlicmFyeSBwYXRocy48L2xpPgogIDxsaT5TdGFydCBNaWNyb3NvZnQgVmlzdWFsIEMrKyA2LjAuPC9saT4KICA8bGk+Q2hvb3NlICZxdW90O0ZpbGUmcXVvdDsgbWVudSBhbmQgc2VsZWN0ICZxdW90O09wZW4gV29ya1NwYWNlJnF1b3Q7LjwvbGk+CiAgPGxpPkluIHRoZSBmaWxlIGNob29zZXIsIGNob29zZSBpY3Vcc291cmNlXGFsbGlub25lXGFsbGlub25lLmRzdy4gT3BlbiB0aGlzIHdvcmtzcGFjZS48L2xpPgogIDxsaT5UaGlzIHdvcmtzcGFjZSBpbmNsdWRlcyBhbGwgdGhlIElCTSdzIEludGVybmF0aW9uYWwgQ2xhc3NlcyBmb3IgVW5pY29kZSBsaWJyYXJpZXMsCiAgICBuZWNlc3NhcnkgdG9vbHMgYXMgd2VsbCBhcyBpbnRsdGVzdCBhbmQgY2ludGx0ZXN0IHRlc3Qgc3VpdGUgcHJvamVjdHMuPC9saT4KICA8bGk+U2V0IHRoZSBhY3RpdmUgUHJvamVjdC4gQ2hvb3NlICZxdW90O1Byb2plY3QmcXVvdDsgbWVudSBhbmQgc2VsZWN0ICZxdW90O1NldCBhY3RpdmUKICAgIHByb2plY3QmcXVvdDsuIEluIHRoZSBzdWJtZW51LCBzZWxlY3QgJnF1b3Q7aW50bHRlc3QmcXVvdDsuPC9saT4KICA8bGk+U2V0IHRoZSBhY3RpdmUgY29uZmlndXJhdGlvbiAoJnF1b3Q7V2luMzIgRGVidWcmcXVvdDsgb3IgJnF1b3Q7V2luMzIgUmVsZWFzZSZxdW90OykgYW5kCiAgICBtYWtlIHN1cmUgdGhpcyBtYXRjaGVzIHlvdXIgUEFUSCBzZXR0aW5nIGFzIGRlc2NyaWJlZCBpbiB0aGUgcHJldmlvdXMgY2hhcHRlci4gKFNlZSBub3RlCiAgICBiZWxvdy4pPC9saT4KICA8bGk+Q2hvb3NlICZxdW90O0J1aWxkJnF1b3Q7IG1lbnUgYW5kIHNlbGVjdCAmcXVvdDtSZWJ1aWxkIEFsbCZxdW90Oy4gSWYgeW91IHdhbnQgdG8gYnVpbGQKICAgIHRoZSBEZWJ1ZyBhbmQgUmVsZWFzZSBjb25maWd1cmF0aW9ucyBhdCB0aGUgc2FtZSB0aW1lLCBjaG9vc2UgJnF1b3Q7QnVpbGQmcXVvdDsgbWVudSBhbmQKICAgIHNlbGVjdCAmcXVvdDtCYXRjaCBCdWlsZC4uLiZxdW90OyBpbnN0ZWFkIChhbmQgbWFyayBhbGwgY29uZmlndXJhdGlvbnMgYXMgY2hlY2tlZCksIHRoZW4KICAgIGNsaWNrIHRoZSBidXR0b24gbmFtZWQgJnF1b3Q7UmVidWlsZCBBbGwmcXVvdDsuPC9saT4KICA8bGk+UmVwZWF0IHN0ZXA2LTggYW5kIHNldCAmcXVvdDttYWtlY29udiZxdW90OyBwcm9qZWN0IHRvIGJlIGFjdGl2ZSBhbmQgYnVpbGQgdGhlIG1ha2Vjb252CiAgICB0b29sLjwvbGk+CiAgPGxpPlJlcGVhdCBzdGVwOSB0byBidWlsZCBib3RoIGdlbnJiIGFuZCBnZW5jb2wgdG9vbHMuPC9saT4KICA8bGk+UnVuIHRoZSBta2NudmZsZS5iYXQgc2NyaXB0IHRvIGNyZWF0ZSB0aGUgY29udmVydGVyIGRhdGEgZmlsZXMgaW4gYmluYXJ5IGZvcm1hdC48L2xpPgogIDxsaT5SdW4gdGhlIGdlbnJiLmJhdCBzY3JpcHQgdG8gY3JlYXRlIHRoZSBsb2NhbGUgZGF0YSBmaWxlcyBpbiBiaW5hcnkgZm9ybWF0LjwvbGk+CiAgPGxpPlJ1biB0aGUgZ2VuY29sLmV4ZSBwcm9ncmFtIHRvIHByZS1sb2FkIHRoZSBjb2xsYXRpb24gZGF0YSBhbmQgY3JlYXRlIHRoZSBjb2xsYXRpb24gZGF0YQogICAgaW4gYmluYXJ5IGZvcm1hdC48L2xpPgogIDxsaT5TYXZlIHRoZSB2YWx1ZSBvZiB0aGUgJnF1b3Q7VFomcXVvdDsgZW52aXJvbm1lbnQgdmFyaWFibGUgYW5kIHRoZW4gc2V0IGl0IHRvCiAgICAmcXVvdDtQU1Q4UERUJnF1b3Q7LiZuYnNwOyA8L2xpPgogIDxsaT5SZW9wZW4gdGhlICZxdW90O2FsbGlub25lJnF1b3Q7IHByb2plY3QgZmlsZSBhbmQgcnVuIHRoZSAmcXVvdDtpbnRsdGVzdCZxdW90OyB0ZXN0LgogICAgJm5ic3A7IFJlc2V0IHRoZSAmcXVvdDtUWiZxdW90OyB2YWx1ZS48L2xpPgogIDxsaT5UbyBydW4gdGhlIEMgdGVzdCBzdWl0ZSwgc2V0ICZxdW90O2NpbnRsdHN0JnF1b3Q7IGFzIHRoZSBhY3RpdmUgcHJvamVjdCBhbmQgcmVwZWF0IHN0ZXAKICAgIDcsIDggYW5kIHRoZW4gcnVuIHRoZSAmcXVvdDtjaW50bHRzdCZxdW90OyB0ZXN0Li48L2xpPgogIDxsaT5CdWlsZCBhbmQgcnVuIGFzIG91dGxpbmVkIGFib3ZlLjwvbGk+Cjwvb2w+CjxiPgoKPHA+Tm90ZTogPC9iPlRvIHNldCB0aGUgYWN0aXZlIGNvbmZpZ3VyYXRpb24sIHR3byBkaWZmZXJlbnQgcG9zc2liaWxpdGllcyBhcmU6IAoKPHVsPgogIDxsaT5DaG9vc2UgJnF1b3Q7QnVpbGQmcXVvdDsgbWVudSwgc2VsZWN0ICZxdW90O1NldCBBY3RpdmUgQ29uZmlndXJhdGlvbiZxdW90OywgYW5kIHNlbGVjdAogICAgJnF1b3Q7V2luMzIgUmVsZWFzZSZxdW90OyBvciAmcXVvdDtXaW4zMiBEZWJ1ZyZxdW90Oy48L2xpPgogIDxsaT5Bbm90aGVyIHdheSBpcyB0byBzZWxlY3QgJnF1b3Q7Q3VzdG9taXplJnF1b3Q7IGluIHRoZSAmcXVvdDtUb29scyZxdW90OyBtZW51LCBzZWxlY3QgdGhlCiAgICAmcXVvdDtUb29sYmFycyZxdW90OyB0YWIsIGVuYWJsZSAmcXVvdDtCdWlsZCZxdW90OyBpbnN0ZWFkIG9mICZxdW90O0J1aWxkIE1pbmliYXImcXVvdDssCiAgICBhbmQgY2xpY2sgb24gJnF1b3Q7Q2xvc2UmcXVvdDsuIFRoaXMgd2lsbCBicmluZyB1cCBhIHRvb2xiYXIgd2hpY2ggeW91IGNhbiBtb3ZlIGFzaWRlIHRoZQogICAgb3RoZXIgcGVybWFuZW50IHRvb2xiYXJzIGF0IHRoZSB0b3Agb2YgdGhlIE1TVkMgd2luZG93LiBUaGUgYWR2YW50YWdlIGlzIHRoYXQgeW91IG5vdyBoYXZlCiAgICBhbiBlYXN5LXRvLXJlYWNoIHBvcC11cCBtZW51IHdoaWNoIHdpbGwgYWx3YXlzIHNob3cgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBhY3RpdmUKICAgIGNvbmZpZ3VyYXRpb24uJm5ic3A7IE9yLCB5b3UgY2FuIGRyYWcgdGhlIHByb2plY3QgYW5kIGNvbmZpZ3VyYXRpb24gc2VsZWN0aW9ycyBhbmQgZHJvcAogICAgdGhlbSBvbiB0aGUgbWVudSBiYXIgZm9yIGxhdGVyIHNlbGVjdGlvbi48L2xpPgo8L3VsPgoKPHA+SXQgaXMgYWxzbyBwb3NzaWJsZSB0byBidWlsZCBlYWNoIGxpYnJhcnkgaW5kaXZpZHVhbGx5LCB1c2luZyB0aGUgTWFrZWZpbGVzIGluIGVhY2gKcmVzcGVjdGl2ZSBkaXJlY3RvcnkuIFRoZXkgaGF2ZSB0byBiZSBidWlsdCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOiA8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAxLiBjb21tb24gPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMi4gaTE4biA8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAzLiBtYWtlY29udjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDQuIGdlbnJiPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgNS4gZ2VuY29sPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgNi4gY3Rlc3RmdyA8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA3LiBpbnRsdGVzdCBhbmQgY2ludGx0c3QsIGlmIHlvdSB3YW50IHRvIHJ1bgp0aGUgdGVzdCBzdWl0ZS4gPGJyPgpSZWdhcmRpbmcgdGhlIHRlc3Qgc3VpdGUsIHBsZWFzZSByZWFkIHRoZSBkaXJlY3Rpb25zIGluIDxhIGhyZWY9ImRvY3MvaW50bHRlc3QuaHRtbCI+ZG9jcy9pbnRsdGVzdC5odG1sPC9hPgphbmQgPGEgaHJlZj0iZG9jcy9jaW50bHRzdC5odG1sIj5kb2NzL2NpbnRsdHN0Lmh0bWw8L2E+IDwvcD4KCjxoMz5Ib3cgdG8gSW5zdGFsbC9CdWlsZCBvbiBVbml4PC9oMz4KCjxwPlRoZXJlIGlzIGEgc2V0IG9mIE1ha2VmaWxlcyBmb3IgVW5peCB3aGljaCBzdXBwb3J0cyBMaW51eCB3L2djYywgU29sYXJpcyB3L2djYyBhbmQKV29ya3Nob3AgQ0MuIGFuZCBBSVggdy94bGMuIDwvcD4KCjxwPkJ1aWxkaW5nIElCTSdzIEludGVybmF0aW9uYWwgQ2xhc3NlcyBmb3IgVW5pY29kZSBvbiBVbml4IHJlcXVpcmVzOiA8L3A+Cgo8cD5BIFVOSVggQysrIGNvbXBpbGVyLCAoZ2NjLCBjYywgeGxjX3IsIGV0Yy4uLikgaW5zdGFsbGVkIG9uIHRoZSB0YXJnZXQgbWFjaGluZS4gQSByZWNlbnQKdmVyc2lvbiBvZiBHTlUgbWFrZSAoMy43KykuIDwvcD4KCjxwPlRoZSBzdGVwcyBhcmU6IAoKPG9sPgogIDxsaT5VbnppcCB0aGUgaWN1LVhYWFguemlwIGZpbGUgd2l0aCB0aGUgJnF1b3Q7LWEmcXVvdDsgb3B0aW9uLjwvbGk+CiAgPGxpPkNoYW5nZSBkaXJlY3RvcnkgdG8gdGhlICZxdW90O2ljdS9zb3VyY2UmcXVvdDsuPC9saT4KICA8bGk+VHlwZSAmcXVvdDsuL2NvbmZpZ3VyZSZxdW90OyBvciB0eXBlICZxdW90Oy4vY29uZmlndXJlIC0taGVscCZxdW90OyB0byBwcmludCB0aGUKICAgIGF2aWFsYWJsZSBvcHRpb25zLjwvbGk+CiAgPGxpPlR5cGUgJnF1b3Q7bWFrZSZxdW90OyB0byBjb21waWxlIHRoZSBsaWJyYXJpZXMgYW5kIGFsbCB0aGUgZGF0YSBmaWxlcy48L2xpPgogIDxsaT5PcHRpb25hbGx5LCB0eXBlICZxdW90O21ha2UgY2hlY2smcXVvdDsgdG8gdmVyaWZ5IHRoZSB0ZXN0IHN1aXRlLjwvbGk+CiAgPGxpPlR5cGUgJnF1b3Q7TWFrZSBpbnN0YWxsJnF1b3Q7IHRvIGluc3RhbGwuPC9saT4KPC9vbD4KCjxwPkl0IGlzIGFsc28gcG9zc2libGUgdG8gYnVpbGQgZWFjaCBsaWJyYXJ5IGluZGl2aWR1YWxseSwgdXNpbmcgdGhlIE1ha2VmaWxlcyBpbiBlYWNoCnJlc3BlY3RpdmUgZGlyZWN0b3J5LiBUaGV5IGhhdmUgdG8gYmUgYnVpbHQgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjogPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMS4gY29tbW9uIDxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDIuIGkxOG4gPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMy4gbWFrZWNvbnYgPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgNC4gZ2VucmI8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA1LiBnZW5jb2w8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA2LiBjdGVzdGZ3IDxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDcuIGludGx0ZXN0IGFuZCBjaW50bHRzdCwgaWYgeW91IHdhbnQgdG8gcnVuCnRoZSB0ZXN0IHN1aXRlLiA8YnI+ClJlZ2FyZGluZyB0aGUgdGVzdCBzdWl0ZSwgcGxlYXNlIHJlYWQgdGhlIGRpcmVjdGlvbnMgaW4gPGEgaHJlZj0iZG9jcy9pbnRsdGVzdC5odG1sIj5kb2NzL2ludGx0ZXN0Lmh0bWw8L2E+CmFuZCA8YSBocmVmPSJkb2NzL2NpbnRsdHN0Lmh0bWwiPmRvY3MvY2ludGx0c3QuaHRtbDwvYT4gPC9wPgoKPHA+PGEgTkFNRT0iYWRkbG9jYWxlZGF0YWZpbGUiPjwvYT4gPC9wPgoKPGgzPjx1PkhvdyB0byBhZGQgYSBsb2NhbGUgZGF0YSBmaWxlPC91PjwvaDM+Cgo8cD5UbyBhZGQgbG9jYWxlIGRhdGEgZmlsZXMgdG8gSUJNJ3MgSW50ZXJuYXRpb25hbCBDbGFzc2VzIGZvciBVbmljb2RlIGRvIHRoZSBmb2xsb3dpbmc6IDwvcD4KCjxibG9ja3F1b3RlPgogIDxwPjEuIENyZWF0ZSBhIGZpbGUgY29udGFpbmluZyB0aGUga2V5LXZhbHVlIHBhaXJzIHdoaWNoIHZhbHVlIHlvdSBhcmUgb3ZlcnJpZGluZyBmcm9tIHRoZQogIHBhcmVudCBsb2NhbGUgZGF0YSBmaWxlLiA8YnI+CiAgJm5ic3A7Jm5ic3A7Jm5ic3A7IE1ha2Ugc3VyZSB0aGUgZmlsZW5hbWUgaXMgdGhlIGxvY2FsZSBJRCB3aXRoIHRoZSBleHRlbnNpb24KICAmcXVvdDsudHh0JnF1b3Q7LiBXZSByZWNvbW1lbmQgeW91IGNvcHkgcGFyZW50IGZpbGUgYW5kIGNoYW5nZSB0aGUgdmFsdWVzIDxicj4KICAmbmJzcDsmbmJzcDsmbmJzcDsgdGhhdCBuZWVkIHRvIGJlIGNoYW5nZWQsIHJlbW92ZSBhbGwgb3RoZXIga2V5LXBhaXJzLiBCZSBzdXJlIHRvIHVwZGF0ZQogIHRoZSBsb2NhbGUgSUQga2V5ICh0aGUgb3V0bW9zdCBicmFjZSkgd2l0aCA8YnI+CiAgJm5ic3A7Jm5ic3A7Jm5ic3A7IHRoZSBuYW1lIG9mIHRoZSBsb2NhbGUgaWQgeW91ciBhIGNyZWF0aW5nLjwvcD4KPC9ibG9ja3F1b3RlPgoKPGJsb2NrcXVvdGU+CiAgPHA+Mi4gTmFtZSB0aGUgZmlsZSB3aXRoIGxvY2FsZSBJRCB5b3UgYXJlIGNyZWF0aW5nIHdpdGggYSAmcXVvdDsudHh0JnF1b3Q7IGF0IHRoZSBlbmQuPC9wPgo8L2Jsb2NrcXVvdGU+Cgo8YmxvY2txdW90ZT4KICA8YmxvY2txdW90ZT4KICAgIDxwPmUuZy4mbmJzcDsmbmJzcDsmbmJzcDsgZnJfQkYudHh0IDxicj4KICAgIFdvdWxkIGNyZWF0ZSBhIGxvY2FsZSB0aGF0IGluaGVyaXRzIGFsbCB0aGUga2V5LXZhbHVlIHBhaXJzIGZyb20gZnIudHh0LjwvcD4KICA8L2Jsb2NrcXVvdGU+CjwvYmxvY2txdW90ZT4KCjxibG9ja3F1b3RlPgogIDxwPjMuIEFkZCB0aGUgbmFtZSBvZiB0aGF0IGZpbGUgKHdpdGhvdXQgdGhlICZxdW90Oy50eHQmcXVvdDsgZXh0ZW5zaW9uKSBhcyBhIHNpbmdsZSBsaW5lCiAgaW4gJnF1b3Q7aW5kZXgudHh0JnF1b3Q7IGZpbGUgaW4gdGhlIGRlZmF1bHQgbG9jYWxlIGRpcmVjdG9yeSAoaWN1L2RhdGEvKS48L3A+CiAgPHA+NC4gUnVuIHRoZSBnZW5yYiB0b29sIHRvIGNvbnZlcnQgdGhlIGZpbGUgaW50byBiaW5hcnkgZm9ybWF0LiZuYnNwOyBVbmRlciB0aGUgY29tbWFuZAogIHByb21wdCwgdHlwZTo8L3A+CiAgPGJsb2NrcXVvdGU+CiAgICA8cD48Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyI+Jmd0OyBnZW5yYiBcRnVsbCBQYXRoXGZyX0JGLnR4dDwvZm9udD48L3A+CiAgPC9ibG9ja3F1b3RlPgo8L2Jsb2NrcXVvdGU+Cgo8cD48YSBOQU1FPSJhZGRyYmRhdGF0b2FwcCI+PC9hPjwvcD4KPGI+PHU+PGZvbnQgc2l6ZT0iKzEiPgoKPHA+SG93IHRvIGFkZCByZXNvdXJjZSBidW5kbGUgZGF0YSB0byB5b3VyIGFwcGxpY2F0aW9uPC9mb250PjwvdT48L2I+IDwvcD4KCjxwPkFkZGluZyByZXNvdXJjZSBidW5kbGUgZGF0YSB0byB5b3VyIGFwcGxpY2F0aW9uIGlzIHF1aXRlIHNpbXBsZTogPC9wPgoKPGJsb2NrcXVvdGU+CiAgPHA+Q3JlYXRlIHJlc291cmNlIGJ1bmRsZSBmaWxlcyB3aXRoIHRoZSByaWdodCBmb3JtYXQgYW5kIG5hbWVzIGluIGEgZGlyZWN0b3J5IGZvcgogIHJlc291cmNlIGJ1bmRsZXMgeW91IGNyZWF0ZSBpbiB5b3VyIGFwcGxpY2F0aW9uIGRpcmVjdG9yeSB0cmVlLihmb3IgbW9yZSBpbmZvcm1hdGlvbiBvZgogIHRoYXQgZm9ybWF0IG9mIHRoZXNlIGZpbGVzIHNlZSA8YQogIGhyZWY9Imh0dHA6Ly93d3cuaWJtLmNvbS9qYXZhL2VkdWNhdGlvbi9pbnRlcm5hdGlvbmFsLXVuaWNvZGUvdW5pY29kZWMuaHRtbCI+cmVzb3VyY2UKICBidW5kbGUgZm9ybWF0KTwvYT4gPGJyPgogIFVzZSB0aGF0IHNhbWUgZGlyZWN0b3J5IG5hbWUgKGFic29sdXRlIHBhdGgpIHdoZW4gaW5zdGFudGlhdGluZyBhIHJlc291cmNlIGJ1bmRsZSBhdCBydW4KICB0aW1lLjwvcD4KPC9ibG9ja3F1b3RlPgoKPHA+PGEgTkFNRT0iV2hlcmVDb2xsYXRpb24iPjwvYT48L3A+Cgo8aDM+PHU+V2hlcmUgQ29sbGF0aW9uIERhdGEgaXMgc3RvcmVkPC91PjwvaDM+Cgo8cD5Db2xsYXRpb24gZGF0YSBpcyBzdG9yZWQgaW4gYSBzaW5nbGUgZGlyZWN0b3J5IG9uIGEgbG9jYWwgZGlzay4gRWFjaCBsb2NhbGUncyBkYXRhIGlzCnN0b3JlZCBpbiBhIGNvcnJlc3BvbmRpbmcgQVNDSUkgdGV4dCBmaWxlIGluZGljYXRlZCBieSBhICZxdW90O0NvbGxhdGlvbkVsZW1lbnRzJnF1b3Q7IHRhZwouIEZvciBpbnN0YW5jZSwgdGhlIGRhdGEgZm9yIGRlX0NIIGlzIHN0b3JlZCB3aXRoIGEgdGFnICZxdW90O0NvbGxhdGlvbkVsZW1lbnRzJnF1b3Q7IGluIGEKZmlsZSBuYW1lZCAmcXVvdDtkZV9DSC50eHQmcXVvdDsuIFJlYWRpbmcgdGhlIGNvbGxhdGlvbiBkYXRhIGZyb20gdGhlc2UgZmlsZXMgY2FuIGJlCnRpbWUtY29uc3VtaW5nLCBlc3BlY2lhbGx5IGZvciBsYXJnZSBwaWVjZXMgb2YgZGF0YSB0aGF0IG9jY3VyIGluIGxhbmd1YWdlcyBzdWNoIGFzCkphcGFuZXNlLiBGb3IgdGhpcyByZWFzb24sIHRoZSBDb2xsYXRpb24gRnJhbWV3b3JrIGltcGxlbWVudHMgYSBzZWNvbmQgZmlsZSBmb3JtYXQsIGEKcGVyZm9ybWFuY2Utb3B0aW1pemVkLCBub24tcG9ydGFibGUsIGJpbmFyeSBmb3JtYXQuIFRoZXNlIGJpbmFyeSBmaWxlcyBhcmUgZ2VuZXJhdGVkCmF1dG9tYXRpY2FsbHkgYnkgdGhlIGZyYW1ld29yayB0aGUgZmlyc3QgdGltZSBhIGNvbGxhdGlvbiB0YWJsZSBpcyBwYXJzZWQuIFRoZXkgaGF2ZSBuYW1lcwpvZiB0aGUgZm9ybSAmcXVvdDtkZV9DSC5jb2wmcXVvdDsuIE9uY2UgdGhlIGZpbGVzIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIGZyYW1ld29yaywgZnV0dXJlCmxvYWRpbmcgb2YgdGhvc2UgY29sbGF0aW9ucyBvY2N1ciBmcm9tIHRoZSBiaW5hcnkgZmlsZSwgcmF0aGVyIHRoYW4gdGhlIHRleHQgZmlsZSwgYXQgbXVjaApoaWdoZXIgc3BlZWQuIDwvcD4KCjxwPkluIGdlbmVyYWwsIHlvdSBkb24ndCBoYXZlIHRvIGRvIGFueXRoaW5nIHNwZWNpYWwgd2l0aCB0aGVzZSBmaWxlcy4gVGhleSBjYW4gYmUKZ2VuZXJhdGVkIGRpcmVjdGx5IGJ5IHVzaW5nIHRoZSAmcXVvdDtnZW5jb2wmcXVvdDsgdG9vbC4mbmJzcDsgSW4gYWRkaXRpb24sIHRoZXkgY2FuIGFsc28KYmUgZ2VuZXJhdGVkIGFuZCB1c2VkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIGZyYW1ld29yaywgd2l0aG91dCBpbnRlcnZlbnRpb24gb24geW91ciBwYXJ0LgpIb3dldmVyLCB0aGVyZSBhcmUgc2l0dWF0aW9ucyBpbiB3aGljaCB5b3Ugd2lsbCBoYXZlIHRvIHJlZ2VuZXJhdGUgdGhlbS4gVG8gZG8gc28sIHlvdQptdXN0IG1hbnVhbGx5IGRlbGV0ZSB0aGUgJnF1b3Q7LmNvbCZxdW90OyBmaWxlcyBmcm9tIHlvdXIgY29sbGF0aW9uIGRhdGEgZGlyZWN0b3J5IGFuZApyZS1ydW4gdGhlIGdlbmNvbCB0b29sLjwvcD4KCjxwPllvdSB3aWxsIG5lZWQgdG8gcmVnZW5lcmF0ZSB5b3VyICZxdW90Oy5jb2wmcXVvdDsgZmlsZXMgaW4gdGhlIGZvbGxvd2luZyBjaXJjdW1zdGFuY2VzOgoKPG9sPgogIDxsaT5Zb3UgYXJlIG1vdmluZyB5b3VyIGRhdGEgdG8gYW5vdGhlciBwbGF0Zm9ybS4mbmJzcDsgU2luY2UgdGhlICZxdW90Oy5jb2wmcXVvdDsgZmlsZXMgYXJlCiAgICBub24tcG9ydGFibGUsIHlvdSBtdXN0IG1ha2Ugc3VyZSB0aGV5IGFyZSByZWdlbmVyYXRlZC48L2xpPgogIDxsaT48Yj5ETyBOT1QgPC9iPmNvcHkgdGhlbSBmcm9tIG9uZSBwbGF0Zm9ybSB0byBhbm90aGVyLjwvbGk+CiAgPGxpPllvdSBoYXZlIGNoYW5nZWQgdGhlICZxdW90O0NvbGxhdGlvbkVsZW1lbnRzJnF1b3Q7IGRhdGEgaW4gdGhlIGxvY2FsZSdzICZxdW90Oy50eHQmcXVvdDsKICAgIGZpbGUuJm5ic3A7IE5vdGUgdGhhdCBpZiB5b3UgY2hhbmdlIHRoZSBkZWZhdWx0IHJ1bGVzIGZvciBzb21lIHJlYXNvbiwgd2hpY2ggdW5kZXJsaWUgYWxsCiAgICBjb2xsYXRpb25zLCB0aGVuIHlvdSB3aWxsIGhhdmUgdG8gcmVidWlsZCBBTEwgeW91ciAmcXVvdDsuY29sJnF1b3Q7IGZpbGVzLCBzaW5jZSB0aGV5IGFsbAogICAgYXJlIG1lcmdlZCB3aXRoIHRoZSBkZWZhdWx0IHJ1bGUgc2V0LjwvbGk+Cjwvb2w+Cgo8aDM+PGEgTkFNRT0iQ2hhcnNldENvbnZlcnQiPjwvYT48dT5DaGFyYWN0ZXIgU2V0IENvbnZlcnNpb24gSW5mb3JtYXRpb248L3U+PC9oMz4KCjxwPlRoZSBjaGFyc2V0IGNvbnZlcnNpb24gbGlicmFyeSBwcm92aWRlcyB3YXlzIHRvIGNvbnZlcnQgc2ltcGxlIHRleHQgc3RyaW5ncyAoZS5nLiwKY2hhciopIHN1Y2ggYXMgSVNPIDg4NTktMSB0byBhbmQgZnJvbSBVbmljb2RlLiBUaGUgb2JqZWN0aXZlIGlzIHRvIHByb3ZpZGUgY2xlYW4sIHNpbXBsZSwKcmVsaWFibGUsIHBvcnRhYmxlIGFuZCBhZGFwdGFibGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBhbGdvcml0aG1zIHRvIHN1cHBvcnQgdGhlIElCTSdzCkludGVybmF0aW9uYWwgQ2xhc3NlcyBmb3IgVW5pY29kZSdzIGNoYXJhY3RlciBjb2Rlc2V0IENvbnZlcnNpb24gQVBJcy4gVGhlIGNvbnZlcnNpb24gZGF0YQppbiB0aGUgbGlicmFyeSBvcmlnaW5hdGVkIGZyb20gdGhlIE5MVEMgbGFiIGluIElCTS4gVGhlIElCTSBjaGFyYWN0ZXIgc2V0IGNvbnZlcnNpb24KdGFibGVzIGFyZSBwdWJsaWNseSBhdmFpbGFibGUgaW4gdGhlIHB1Ymxpc2hlZCBJQk0gZG9jdW1lbnQgY2FsbGVkICZxdW90O0NIQVJBQ1RFUiBEQVRBClJFUFJFU0VOVEFUSU9OIEFSQ0hJVEVDVFVSRSAtIFJFRkVSRU5DRSBBTkQgUkVHSVNUUlkmcXVvdDsuIFRoZSBjaGFyYWN0ZXIgc2V0IGNvbnZlcnNpb24KbGlicmFyeSBpbmNsdWRlcyBzaW5nbGUtYnl0ZSwgZG91YmxlLWJ5dGUgYW5kIHNvbWUgVUNTIGVuY29kaW5ncyB0byBhbmQgZnJvbSBVbmljb2RlLiBUaGlzCmRvY3VtZW50IGNhbiBiZSBvcmRlcmVkIHRocm91Z2ggTWVjaGFuaWNzYmVyZyBhbmQgaXQgY29tZXMgd2l0aCAyIENEIFJPTXMgd2hpY2ggaGF2ZQptYWNoaW5lIHJlYWRhYmxlIGNvbnZlcnNpb24gdGFibGVzIG9uIHRoZW0uIFRoZSBsaWNlbnNlIGFncmVlbWVudCBpcyBpbmNsdWRlZCBpbiBJQk0ncwpJbnRlcm5hdGlvbmFsIENsYXNzZXMgZm9yIFVuaWNvZGUgYWdyZWVtZW50LiA8L3A+Cgo8cD5UbyBvcmRlciB0aGUgZG9jdW1lbnQgaW4gdGhlIFVTIHlvdSBjYW4gY2FsbCAxLTgwMC04NzktMjc1NSBhbmQgcmVxdWVzdCBkb2N1bWVudCBudW1iZXIKU0MwOS0yMTkwLTAwLiBUaGUgY29zdCBvZiB0aGlzIHB1YmxpY2F0aW9uIGlzICQ3NS4wMCBVUyBub3QgaW5jbHVkaW5nIHRheC4gPC9wPgoKPHA+Q3VycmVudGx5LCB0aGUgc3VwcG9ydCBjb2RlIHBhZ2VzIGFyZTogPC9wPgoKPHA+PGZvbnQgZmFjZT0iQ291cmllciBOZXciPmlibS0xMDA0OiBQQyBEYXRhIExhdGluLTE8YnI+CmlibS0xMDA4OiBBcmFiaWMgOGJpdCBJU08vQVNDSUk8YnI+CmlibS0xMDM4OiBBZG9iZSBTeW1ib2wgU2V0PGJyPgppYm0tMTA4OTogSVNPLTg4NTktNjxicj4KaWJtLTExMTI6IE1TIFdpbmRvd3MgQmFsdGljIFJpbTxicj4KaWJtLTExMTY6IFBDIERhdGEgRXN0b25pYTxicj4KaWJtLTExMTc6IFBDIERhdGEgTGF0dmlhPGJyPgppYm0tMTExODogUEMgRGF0YSBMaXRodWFuaWE8YnI+CmlibS0xMTE5OiBQQyBEYXRhIFJ1c3NpYW48YnI+CmlibS0xMTIzOiBDeXJpbGxpYyBVa3JhaW5lIEVCQ0RJQzxicj4KaWJtLTExNDA6IDwvZm9udD48Zm9udCBDT0xPUj0iIzAwMDAwMCIgc2l6ZT0iMyIgZmFjZT0iQ291cmllciBOZXciPkVCQ0RJQyBVU0EsIENhbmFkYSwKTmV0aGVybGFuZHMsIFBvcnR1Z2FsLCBCcmF6aWwsIEF1c3RyYWxpYSwgTmV3IFplYWxhbmQgLSBFQkNESUM6IEl0YWx5PC9mb250Pjxmb250CmZhY2U9IkNvdXJpZXIgTmV3Ij48YnI+CmlibS0xMTQxOiBFQkNESUMgR2VybWFueSwgQXVzdHJpYTxicj4KaWJtLTExNDI6IEVCQ0RJQyBEZW5tYXJrIGV0Yy48YnI+CmlibS0xMTQzOiBFQkNESUMgU3dlZGVuPGJyPgppYm0tMTE0NDogRUJDRElDIEl0YWx5PGJyPgppYm0tMTE0NTogRUJDRElDIFNwYWluPGJyPgppYm0tMTE0NjogRUJDRElDIFVLIElybGFuZDxicj4KaWJtLTExNDc6IEVCQ0RJQyBGcmFuY2U8YnI+CmlibS0xMTQ4OiBFQkNESUMgSW50ZXJuYXRpb25hbCBMYXRpbi0xPGJyPgppYm0tMTI1MDogTVMtV2luZG93cyBMYXRpbi0yPGJyPgppYm0tMTI1MTogTVMtV2luZG93cyBDeXJpbGxpYzxicj4KaWJtLTEyNTI6IE1TLVdpbmRvd3MgTGF0aW4tMTxicj4KaWJtLTEyNTM6IE1TLVdpbmRvd3MgR3JlZWs8YnI+CmlibS0xMjU0OiBNUy1XaW5kb3dzIFR1cmtleTxicj4KaWJtLTEyNTU6IE1TLVdpbmRvd3MgSGVicmV3PGJyPgppYm0tMTI1NjogTVMtV2luZG93cyBBcmFiaWM8YnI+CmlibS0xMjU3OiBNUy1XaW5kb3dzIEJhbHRpYyBSaW08YnI+CmlibS0xMjU4OiBNUy1XaW5kb3dzIFZpZXRuYW1lc2U8YnI+CmlibS0xMjc1OiBBcHBsZSBMYXRpbi0xPGJyPgppYm0tMTI3NjogQWRvYmUgKFBvc3RzY3JpcHQpIFN0YW5kYXJkIEVuY29kaW5nPGJyPgppYm0tMTI3NzogQWRvYmUgKFBvc3RzY3JpcHQpIExhdGluLTE8YnI+CmlibS0xMjgwOiBBcHBsZSBHcmVlazxicj4KaWJtLTEyODE6IEFwcGxlIFR1cmtleTxicj4KaWJtLTEyODI6IEFwcGxlIENlbnRyYWwgRXVyb3BlYW48YnI+CmlibS0xMjgzOiBBcHBsZSBDeXJpbGxpYzxicj4KaWJtLTEzNjE6IEtvcmVhbiBFVUMgV2luZG93cyBjcDk0OTxicj4KaWJtLTEzODM6IFNpbXBsaWZpZWQgQ2hpbmVzZSBFVUM8YnI+CmlibS0xMzg2OiBTaW1wbGlmaWVkIENoaW5lc2UgR0JLPGJyPgppYm0tMjkwOiBKYXBhbmVzZSBLYXRha2FuYSBTQkNTPGJyPgppYm0tMzcgOiA8L2ZvbnQ+PGZvbnQgQ09MT1I9IiMwMDAwMDAiIHNpemU9IjMiIGZhY2U9IkNvdXJpZXIgTmV3Ij5DRUNQOiBVU0EsIENhbmFkYQooRVNBKiksIE5ldGhlcmxhbmRzLCBQb3J0dWdhbCwgQnJhemlsLCBBdXN0cmFsaWEsIE5ldyBaZWFsYW5kIC0gTVMgV2luZG93cywgSGVicmV3PC9mb250Pjxmb250CmZhY2U9IkNvdXJpZXIgTmV3Ij48YnI+CmlibS00MjA6IEFyYWJpYyAod2l0aCBwcmVzZW50YXRpb24gZm9ybXMpPGJyPgppYm0tNDI0OiBIZWJyZXc8YnI+CmlibS00Mzc6IFBDIERhdGEgUEMgQmFzZSBVU0E8YnI+CmlibS04MTM6IElTTy04ODU5LTc8YnI+CmlibS04MzM6IEtvcmVhbiBIb3N0IEV4dGVuZGVkIFNCQ1M8YnI+CmlibS04NTI6IFBDIERhdGEgTGF0aW4tMiBNdWx0aWxpbmd1YWw8YnI+CmlibS04NTU6IFBDIERhdGEgQ3lyaWxsaWM8YnI+CmlibS04NTY6IFBDIERhdGEgSGVicmV3PGJyPgppYm0tODU3OiBQQyBEYXRhIFR1cmtleTxicj4KaWJtLTg1ODogUEMgRGF0YSB3aXRoIEVVUk88YnI+CmlibS04NTk6IFBDIExhdGluLTk8YnI+CmlibS04NjA6IFBDIERhdGEgUG9ydHVnYWw8YnI+CmlibS04NjE6IFBDIERhdGEgSWNlbGFuZDxicj4KaWJtLTg2MzogUEMgRGF0YSBDYW5hZGE8YnI+CmlibS04NjQ6IFBDIERhdGEgQXJhYmljPGJyPgppYm0tODY1OiBQQyBEYXRhIERlbm1hcms8YnI+CmlibS04NjY6IFBDIERhdGEgUnVzc2lhbjxicj4KaWJtLTg2NzogUEMgRGF0YSBIZWJyZXc8YnI+CmlibS04Njg6IFBDIERhdGEgVXJkdTxicj4KaWJtLTg2OTogUEMgRGF0YSBHcmVlazxicj4KaWJtLTg3NDogUEMgRGF0YSBUaGFpPGJyPgppYm0tODc4OiBSdXNzaWFuIEludGVybmV0IGtvaTgtcjxicj4KaWJtLTkxMjogSVNPLTg4NTktMjxicj4KaWJtLTkxMzogSVNPLTg4NTktMzxicj4KaWJtLTkxNDogSVNPLTg4NTktNDxicj4KaWJtLTkxNTogSVNPLTg4NTktNTxicj4KaWJtLTkxNjogSVNPLTg4NTktODxicj4KaWJtLTkyMDogSVNPLTg4NTktOTxicj4KaWJtLTkyMTogQmFsdGljIDhiaXQ8YnI+CmlibS05MjI6IEVzdG9uaWEgOGJpdDxicj4KaWJtLTkyMzogSVNPLTg4NTktMTU8YnI+CmlibS05MzA6IEphcGFuZXNlIEthdGFrYW5hLUthbmppIEhvc3Q8YnI+CmlibS05MzM6IEtvcmVhbiBIb3N0IE1peGVkPGJyPgppYm0tOTM1OiBTaW1wbGlmaWVkIENoaW5lc2UgSG9zdCBNaXhlZDxicj4KaWJtLTkzNzogVHJhZGl0aW9uYWwgQ2hpbmVzZSBIb3N0IE1peGVkPGJyPgppYm0tOTQyOiBKYXBhbmVzZSBQQyBEYXRhIE1peGVkPGJyPgppYm0tOTQzOiBKYXBhbmVzZSBQQyBEYXRhIGZvciBPcGVuIEVudmlyb25tZW50PGJyPgppYm0tOTQ5OiBLUyBDb2RlIFBDIERhdGEgTWl4ZWQ8YnI+CmlibS05NTA6IEJJRy01PGJyPgppYm0tOTcwOiBLb3JlYW4gRVVDPC9mb250PjwvcD4KCjxoMz48YSBOQU1FPSJQcm9ncmFtbWluZ05vdGVzIj48L2E+PHU+UHJvZ3JhbW1pbmcgTm90ZXM8L3U+PC9oMz4KCjxoND48Yj48dT5SZXBvcnRpbmcgRXJyb3JzPC91PjwvYj48L2g0PgoKPHA+SW4gb3JkZXIgZm9yIHRoZSBjb2RlIHRvIGJlIHBvcnRhYmxlLCBvbmx5IGEgc3Vic2V0IG9mIHRoZSBDKysgbGFuZ3VhZ2UgdGhhdCB3aWxsCmNvbXBpbGUgY29ycmVjdGx5IG9uIGV2ZW4gdGhlIG9sZGVzdCBvZiBDKysgY29tcGlsZXJzIChhbmQgYWxzbyB0byBwcm92aWRlIGEgdXNhYmxlIEMKaW50ZXJmYWNlKSBjYW4gYmUgdXNlZCBpbiB0aGUgaW1wbGVtZW50YXRpb24sIHdoaWNoIG1lYW5zIHRoYXQgdGhlcmUncyBubyB1c2UgdGhlIEMrKwpleGNlcHRpb24gbWVjaGFuaXNtIGluIHRoZSBjb2RlLiA8L3A+Cgo8cD5BZnRlciBjb25zaWRlcmluZyBtYW55IGFsdGVybmF0aXZlcywgdGhlIGRlY2lzaW9uIHdhcyB0aGF0IGV2ZXJ5IGZ1bmN0aW9uIHRoYXQgY2FuIGZhaWwKdGFrZXMgYW4gZXJyb3ItY29kZSBwYXJhbWV0ZXIgYnkgcmVmZXJlbmNlLiBUaGlzIGlzIGFsd2F5cyB0aGUgbGFzdCBwYXJhbWV0ZXIgaW4gdGhlCmZ1bmN0aW9uJiMxNDY7cyBwYXJhbWV0ZXIgbGlzdC4gVGhlIEVycm9yQ29kZSB0eXBlIGlzIGRlZmluZWQgYXMgYSBlbnVtZXJhdGVkIHR5cGUuIFplcm8KcmVwcmVzZW50cyBubyBlcnJvciwgcG9zaXRpdmUgdmFsdWVzIHJlcHJlc2VudCBlcnJvcnMsIGFuZCBuZWdhdGl2ZSB2YWx1ZXMgcmVwcmVzZW50Cm5vbi1lcnJvciBzdGF0dXMgY29kZXMuIE1hY3JvcyB3ZXJlIHByb3ZpZGVkLCBTVUNDRVNTIGFuZCBGQUlMVVJFLCB0byBjaGVjayB0aGUgZXJyb3IKY29kZS4gPC9wPgoKPHA+VGhlIEVycm9yQ29kZSBwYXJhbWV0ZXIgaXMgYW4gaW5wdXQtb3V0cHV0IHBhcmFtZXRlci4gRXZlcnkgZnVuY3Rpb24gdGVzdHMgdGhlIGVycm9yCmNvZGUgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UsIGFuZCBpbW1lZGlhdGVseSBleGl0cyBpZiBpdCYjMTQ2O3MgYSBGQUlMVVJFIGVycm9yIGNvZGUuCklmIHRoZSBmdW5jdGlvbiBmYWlscyBsYXRlciBvbiwgaXQgc2V0cyB0aGUgZXJyb3IgY29kZSBhcHByb3ByaWF0ZWx5IGFuZCBleGl0cyB3aXRob3V0CmRvaW5nIGFueSBvdGhlciB3b3JrIChleGNlcHQsIG9mIGNvdXJzZSwgYW55IGNsZWFudXAgaXQgaGFzIHRvIGRvKS4gSWYgdGhlIGZ1bmN0aW9uCmVuY291bnRlcnMgYSBub24tZXJyb3IgY29uZGl0aW9uIGl0IHdhbnRzIHRvIHNpZ25hbCAoc3VjaCBhcyAmcXVvdDtlbmNvdW50ZXJlZCBhbgp1bm1hcHBhYmxlIGNoYXJhY3RlciZxdW90OyBpbiB0cmFuc2NvZGluZyksIGl0IHNldHMgdGhlIGVycm9yIGNvZGUgYXBwcm9wcmlhdGVseSBhbmQKY29udGludWVzLiBPdGhlcndpc2UsIHRoZSBmdW5jdGlvbiBsZWF2ZXMgdGhlIGVycm9yIGNvZGUgdW5jaGFuZ2VkLiA8L3A+Cgo8cD5HZW5lcmFsbHksIG9ubHkgZnVuY3Rpb25zIHRoYXQgZG9uJiMxNDY7dCB0YWtlIGFuIEVycm9yQ29kZSBwYXJhbWV0ZXIsIGJ1dCBjYWxsCmZ1bmN0aW9ucyB0aGF0IGRvLCBoYXZlIHRvIGRlY2xhcmUgb25lLiBBbG1vc3QgYWxsIGZ1bmN0aW9ucyB0aGF0IHRha2UgYW4gRXJyb3JDb2RlCnBhcmFtZXRlciBhbmQgYWxzbyBjYWxsIG90aGVyIGZ1bmN0aW9ucyB0aGF0IGRvIG1lcmVseSBoYXZlIHRvIHByb3BhZ2F0ZSB0aGUgZXJyb3IgY29kZQp0aGV5IHdlcmUgcGFzc2VkIGRvd24gdG8gdGhlIGZ1bmN0aW9ucyB0aGV5IGNhbGwuIEZ1bmN0aW9ucyB0aGF0IGRlY2xhcmUgYSBuZXcgRXJyb3JDb2RlCnBhcmFtZXRlciBtdXN0IGluaXRpYWxpemUgaXQgdG8gWkVST19FUlJPUiBiZWZvcmUgY2FsbGluZyBhbnkgb3RoZXIgZnVuY3Rpb25zLiA8L3A+Cgo8cD5UaGUgcmF0aW9uYWxlIGhlcmUgaXMgdG8gYWxsb3cgYSBmdW5jdGlvbiB0byBjYWxsIHNldmVyYWwgZnVuY3Rpb25zICh0aGF0IHRha2UgZXJyb3IKY29kZXMpIGluIGEgcm93IHdpdGhvdXQgaGF2aW5nIHRvIGNoZWNrIHRoZSBlcnJvciBjb2RlIGFmdGVyIGVhY2ggb25lLiBbQSBmdW5jdGlvbiB1c3VhbGx5CndpbGwgaGF2ZSB0byBjaGVjayB0aGUgZXJyb3IgY29kZSBiZWZvcmUgZG9pbmcgYW55IG90aGVyIHByb2Nlc3NpbmcsIGhvd2V2ZXIsIHNpbmNlIGl0IGlzCnN1cHBvc2VkIHRvIHN0b3AgaW1tZWRpYXRlbHkgYWZ0ZXIgcmVjZWl2aW5nIGFuIGVycm9yIGNvZGUuXSBQcm9wYWdhdGluZyB0aGUgZXJyb3ItY29kZQpwYXJhbWV0ZXIgZG93biB0aGUgY2FsbCBjaGFpbiBzYXZlcyB0aGUgcHJvZ3JhbW1lciBmcm9tIGhhdmluZyB0byBkZWNsYXJlIG9uZSBldmVyeXdoZXJlLAphbmQgYWxzbyBhbGxvd3MgdXMgdG8gbW9yZSBjbG9zZWx5IG1pbWljIHRoZSBDKysgZXhjZXB0aW9uIHByb3RvY29sLiA8L3A+Cgo8aDQ+PGI+PHU+QyBGdW5jdGlvbiBhbmQgRGF0YSBUeXBlIE5hbWluZzwvdT48L2I+PC9oND4KPGI+Cgo8cD5GdW5jdGlvbiBuYW1lcy48L2I+IElmIGEgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIChvciBhbG1vc3QgaWRlbnRpY2FsKSB0byBhbiBBTlNJIG9yClBPU0lYIGZ1bmN0aW9uLCB3ZSBnaXZlIGl0IHRoZSBzYW1lIG5hbWUgYW5kIChhcyBtdWNoIGFzIHBvc3NpYmxlKSB0aGUgc2FtZSBwYXJhbWV0ZXIKbGlzdC4gQSAmcXVvdDt1JnF1b3Q7IGlzIHByZXBlbmRlZCBvbnRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5hbWUuIDwvcD4KCjxwPkZvciBmdW5jdGlvbnMgdGhhdCBleGlzdCBwcmlvciB0byB2ZXJzaW9uIDEuMi4xLCB0aGF0IHRoZSBmdW5jdGlvbiBuYW1lIHNob3VsZCBiZWdpbgp3aXRoIGEgbG93ZXItY2FzZSAmcXVvdDt1JnF1b3Q7LiBBZnRlciB0aGUgJnF1b3Q7dSZxdW90OyBpcyBhIHNob3J0IGNvZGUgaWRlbnRpZnlpbmcgdGhlCnN1YnN5c3RlbSBpdCBiZWxvbmdzIHRvIChlLmcuLCAmcXVvdDtsb2MmcXVvdDssICZxdW90O3JiJnF1b3Q7LCAmcXVvdDtjbnYmcXVvdDssCiZxdW90O2NvbGwmcXVvdDssIGV0Yy4pLiBUaGlzIGNvZGUgaXMgc2VwYXJhdGVkIGZyb20gdGhlIGFjdHVhbCBmdW5jdGlvbiBuYW1lIGJ5IGFuCnVuZGVyc2NvcmUsIGFuZCB0aGUgYWN0dWFsIGZ1bmN0aW9uIG5hbWUgY2FuIGJlIGFueXRoaW5nLiBGb3IgZXhhbXBsZSwgPC9wPgoKPGJsb2NrcXVvdGU+CiAgPHByZT48Zm9udCBzaXplPSItMSI+VUNoYXIqIHVsb2NfZ2V0TGFuZ3VhZ2UoLi4uKTsKdm9pZCB1bG9jX3NldERlZmF1bHRMb2NhbGUoLi4uKTsKVUNoYXIqIHVyZXNfZ2V0U3RyaW5nKC4uLik7PC9mb250PjwvcHJlPgo8L2Jsb2NrcXVvdGU+Cgo8cD48Yj5TdHJ1Y3QgYW5kIGVudW0gdHlwZSBuYW1lcy48L2I+IEZvciBzdHJ1Y3RzIGFuZCBlbnVtIHR5cGVzLCB0aGUgcnVsZSBpcyB0aGF0IHRoZWlyCm5hbWVzIGJlZ2luIHdpdGggYSBjYXBpdGFsICZxdW90O1UuJnF1b3Q7IFRoZXJlIGlzIG5vIHVuZGVyc2NvcmUgZm9yIHN0cnVjdCBuYW1lcy48L3A+Cgo8cHJlPjxmb250IHNpemU9Ii0xIiBmYWNlPSJDb3VyaWVyIE5ldyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFVSZXNvdXJjZUJ1bmRsZTsKJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFVDb2xsYXRvcjsKICAgICAgIFVDb2xsYXRpb25SZXN1bHQ7PC9mb250PjwvcHJlPgo8Yj4KCjxwPkVudW0gdmFsdWUgbmFtZXMuPC9iPiBFbnVtZXJhdGlvbiB2YWx1ZXMgaGF2ZSBuYW1lcyB0aGF0IGJlZ2luIHdpdGggJnF1b3Q7VVhYWCZxdW90Owp3aGVyZSBYWFggc3RhbmRzIGZvciB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb25hbCBjYXRlZ29yeS48L3A+Cgo8YmxvY2txdW90ZT4KICA8cHJlPjxmb250IHNpemU9Ii0xIiBmYWNlPSJDb3VyaWVyIE5ldyI+VU5VTV9ERUNJTUFMOwpVQ09MX0dSRUFURVI7PC9mb250PjwvcHJlPgo8L2Jsb2NrcXVvdGU+CjxiPgoKPHA+TWFjcm8gbmFtZXMuPC9iPiBNYWNybyBuYW1lcyBhcmUgaW4gYWxsIGNhcHMsIGJ1dCB0aGVyZSBhcmUgY3VycmVudGx5IG5vIG90aGVyCnJlcXVpcmVtZW50cy4gPC9wPgoKPHA+PGI+Q29uc3RhbnQgbmFtZXMuPC9iPiBNYW55IGNvbnN0YW50IG5hbWVzIChjb25zdGFudHMgZGVmaW5lZCB3aXRoICZxdW90O2NvbnN0JnF1b3Q7LApub3QgbWFjcm9zIGRlZmluZWQgd2l0aCAmcXVvdDsjZGVmaW5lJnF1b3Q7IHRoYXQgYXJlIHVzZWQgYXMgY29uc3RhbnRzKSBiZWdpbiB3aXRoIGEKbG93ZXJjYXNlIGssIGJ1dCB0aGlzIGlzbiYjMTQ2O3QgdW5pdmVyc2FsbHkgZW5mb3JjZWQuIDwvcD4KCjxoND48Yj48dT5QcmVmbGlnaHRpbmcgYW5kIE92ZXJmbG93IEhhbmRsaW5nPC91PjwvYj48L2g0PgoKPHA+SW4gSUNVJ3MgQyBBUElzLCB0aGUgdXNlciBuZWVkcyB0byBhZGhlcmUgdG8gdGhlIGZvbGxvd2luZyBwcmluY2lwbGVzIGZvciBjb25zaXN0ZW5jeQphY3Jvc3MgYWxsIGZ1bmN0aW9uYWwgY2F0ZWdvcmllczogCgo8b2w+CiAgPGxpPkFsbCB0aGUgVW5pY29kZSBzdHJpbmcgcHJvY2Vzc2luZyBzaG91bGQgYmUgZXhwcmVzc2VkIGluIHRlcm1zIG9mIGEgVUNoYXIqIGJ1ZmZlciB0aGF0CiAgICBpcyBhbHdheXMgbnVsbCB0ZXJtaW5hdGVkLjwvbGk+CiAgPGxpPlRoZSBBUElzIGFzc3VtZSB0aGF0IHRoZSBpbnB1dCBzdHJpbmcgcGFyYW1ldGVycyBhcmUgc3RhdGljYWxseSBhbGxvY2F0ZWQgZml4LXNpemVkCiAgICBjaGFyYWN0ZXIgYnVmZmVycy48L2xpPgogIDxsaT5XaGVuIHRoZSB2YWx1ZSBhIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIHJldHVybiBpcyBhbHJlYWR5IHN0b3JlZCBhcyBhIGNvbnN0YW50IHZhbHVlIGluCiAgICBzdGF0aWMgc3BhY2UgKGUuZy4sIGl0JiMxNDY7cyBjb21pbmcgZnJvbSBhIGZpeGVkIHRhYmxlLCBvciBpcyBzdG9yZWQgaW4gYSBjYWNoZSksIHRoZQogICAgZnVuY3Rpb24gd2lsbCBqdXN0IHJldHVybiB0aGUgY29uc3QgVUNoYXIqIHBvaW50ZXIuPC9saT4KICA8bGk+V2hlbiB0aGUgZnVuY3Rpb24gY2FuJiMxNDY7dCByZXR1cm4gYSBVQ2hhciogdG8gc3RvcmFnZSB0aGUgdXNlciBkb2VzbiYjMTQ2O3QgaGF2ZSB0bwogICAgZGVsZXRlLCB0aGUgY2FsbGVyIG5lZWRzIHRvIHBhc3MgaW4gYSBwb2ludGVyIHRvIGEgY2hhcmFjdGVyIGJ1ZmZlciB0aGF0IHRoZSBmdW5jdGlvbiBjYW4KICAgIGZpbGwgd2l0aCB0aGUgcmVzdWx0LiBUaGlzIHBvaW50ZXIgbmVlZHMgdG8gYmUgYWNjb21wYW5pZWQgYnkgYSBpbnQzMl90IHBhcmFtZXRlciB0aGF0CiAgICBnaXZlcyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyLjwvbGk+Cjwvb2w+Cgo8cD5UbyBmaW5kIG91dCBob3cgbGFyZ2UgdGhlIHJlc3VsdCBidWZmZXIgc2hvdWxkIGJlLCBJQ1UgcHJvdmlkZXMgYSA8c3Ryb25nPnByZWZsaWdodGluZzwvc3Ryb25nPgpDIGludGVyZmFjZS4mbmJzcDsgVGhlIGludGVyZmFjZSB3b3JrcyBsaWtlIHRoaXM6IAoKPG9sPgogIDxsaT5XaGVuIHVzaW5nIHRoZSAmcXVvdDs8Yj5wcmVmbGlnaHRpbmc8L2I+JnF1b3Q7IG9wdGlvbjogeW91IG5lZWQgdG8gcGFzcyB0aGUgZnVuY3Rpb24gYQogICAgTlVMTCBwb2ludGVyIGZvciB0aGUgYnVmZmVyIHBvaW50ZXIsIGFuZCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgYWN0dWFsIHNpemUgb2YgdGhlCiAgICByZXN1bHQuIFlvdSBjYW4gdGhlbiBjaG9vc2UgdG8gYWxsb2NhdGUgYSBidWZmZXIgb2YgdGhlIGNvcnJlY3Qgc2l6ZSBhbmQgcmUtcnVuIHRoZQogICAgb3BlcmF0aW9uIGlmIHlvdSB3b3VsZCBsaWtlIHRvLjwvbGk+CiAgPGxpPkFmdGVyIGFsbG9jYXRpbmcgYSBidWZmZXIgb2Ygc29tZSByZWFzb25hYmxlIHNpemUgb24gdGhlIHN0YWNrIGFuZCBwYXNzZXMgdGhhdCB0byB0aGUKICAgIGZ1bmN0aW9uLCBpZiB0aGUgcmVzdWx0IGNhbiBmaXQgaW4gdGhhdCBidWZmZXIsIGV2ZXJ5dGhpbmcmbmJzcDsgd29ya3MgZmluZS4gSWYgdGhlIHJlc3VsdAogICAgZG9lc24mIzE0Njt0IGZpdCwgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSBhY3R1YWwgc2l6ZSBuZWVkZWQuJm5ic3A7IFlvdSBjYW4gdGhlbgogICAgYWxsb2NhdGUgYSBidWZmZXIgb2YgdGhlIGNvcnJlY3Qgc2l6ZSBvbiB0aGUgaGVhcCBhbmQgdHJ5IGNhbGxpbmcgdGhlIHNhbWUgZnVuY3Rpb24gYWdhaW4uPC9saT4KICA8bGk+Tm93IHlvdSBoYXZlIGNyZWF0ZWQgYSBidWZmZXIgb2Ygc29tZSByZWFzb25hYmxlIHNpemUgb24gdGhlIHN0YWNrIGFuZCBwYXNzZXMgaXQgdG8gdGhlCiAgICBmdW5jdGlvbi4mbmJzcDsgSWYgeW91IGRvbid0IGNhcmUgYWJvdXQgdGhlIGNvbXBsZXRlbmVzcyBvZiB0aGUgcmVzdWx0IGFuZCB0aGUgYWxsb2NhdGVkCiAgICBidWZmZXIgaXMgdG9vIHNtYWxsLCB5b3UgY2FuIGNvbnRpbnVlIG9uIHVzaW5nIHRoZSB0cnVuY2F0ZWQgcmVzdWx0LjwvbGk+Cjwvb2w+Cgo8cD5UaGUgZm9sbG93aW5nIHRocmVlIG9wdGlvbnMgZGVtb25zdHJhdGVzIGhvdyB0byB1c2UgdGhlIHByZWZsaWdodGluZyBpbnRlcmZhY2UsIDwvcD4KCjxibG9ja3F1b3RlPgogIDxwcmU+PGZvbnQgc2l6ZT0iLTEiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij4vKiombmJzcDsKPC9mb250PiZuYnNwOyogQHBhcmFtIHJlc3VsdCBpcyBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGFjdHVhbCByZXN1bHQgd2lsbCBiZS4KJm5ic3A7KiBAcGFyYW0gbWF4UmVzdWx0U2l6ZSBpcyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJlIHJlc3VsdCBoYXMgcm9vbSBmb3IuJm5ic3A7CiZuYnNwOyogQHJldHVybiBUaGUgYWN0dWFsIGxlbmd0aCBvZiB0aGUgcmVzdWx0IChjb3VudGluZyB0aGUgdGVybWluYXRpbmcgbnVsbCkKJm5ic3A7Ki8KaW50MzJfdCBkb1NvbWV0aGluZyggLyogaW5wdXQgcGFyYW1zICovLCBVQ2hhciogcmVzdWx0LAombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaW50MzJfdCBtYXhSZXN1bHRTaXplLDxmb250CmZhY2U9IkNvdXJpZXIgTmV3Ij4gVUVycm9yQ29kZSogZXJyKTs8L2ZvbnQ+PC9mb250PjwvcHJlPgo8L2Jsb2NrcXVvdGU+Cgo8cD5JbiB0aGlzIHNhbXBsZSwgaWYgdGhlIGFjdHVhbCByZXN1bHQgZG9lc24mIzE0Njt0IGZpdCBpbiB0aGUgc3BhY2UgYXZhaWxhYmxlIGluIDxmb250CnNpemU9Ii0xIiBmYWNlPSJDb3VyaWVyIE5ldyI+bWF4UmVzdWx0U2l6ZTwvZm9udD4sIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYW1vdW50IG9mCnNwYWNlIG5lY2Vzc2FyeSB0byBob2xkIHRoZSByZXN1bHQsIGFuZCByZXN1bHQgaG9sZHMgYXMgbWFueSBjaGFyYWN0ZXJzIG9mIHRoZSBhY3R1YWwKcmVzdWx0IGFzIHBvc3NpYmxlLiBJZiB5b3UgZG9uJiMxNDY7dCBjYXJlIGFib3V0IHRoaXMsIG5vIGZ1cnRoZXIgYWN0aW9uIGlzIG5lY2Vzc2FyeS4gSWYKeW91IDxpPmRvIDwvaT5jYXJlIGFib3V0IHRoZSB0cnVuY2F0ZWQgY2hhcmFjdGVycywgeW91IGNhbiB0aGVuIGFsbG9jYXRlIGEgYnVmZmVyIG9uIHRoZQpoZWFwIG9mIHRoZSBzaXplIHNwZWNpZmllZCBieSB0aGUgcmV0dXJuIHZhbHVlIGFuZCBjYWxsIHRoZSBmdW5jdGlvbiBhZ2FpbiwgcGFzc2luZyA8aT50aGF0CjwvaT5idWZmZXImIzE0NjtzIGFkZHJlc3MgZm9yIHJlc3VsdC4gPC9wPgoKPHA+QWxsIHByZWZsaWdodGluZyBmdW5jdGlvbnMgaGF2ZSBhIGZpbGwtaW4gPGZvbnQgc2l6ZT0iLTEiIGZhY2U9IkNvdXJpZXIgTmV3Ij5FcnJvckNvZGU8L2ZvbnQ+CnBhcmFtZXRlciAoYW5kIGZvbGxvdyB0aGUgbm9ybWFsIDxmb250IHNpemU9Ii0xIiBmYWNlPSJDb3VyaWVyIE5ldyI+RXJyb3JDb2RlPC9mb250PgpydWxlcyksIGV2ZW4gaWYgdGhleSBhcmUgbm90IGN1cnJlbnRseSBkb2luZyBzby4gQnVmZmVyIG92ZXJmbG93IHdvdWxkIGJlIHRyZWF0ZWQgYXMgYQpGQUlMVVJFIGVycm9yIGNvbmRpdGlvbiwgYnV0IHdvdWxkIDxpPm5vdDwvaT4gYmUgcmVwb3J0ZWQgd2hlbiB0aGUgY2FsbGVyIHBhc3NlcyBpbiBOVUxMCmZvciA8Zm9udCBzaXplPSItMSIgZmFjZT0iQ291cmllciBOZXciPmFjdHVhbFJlc3VsdFNpemU8L2ZvbnQ+IChwcmVzdW1hYmx5LCBhIE5VTEwgZm9yCnRoaXMgcGFyYW1ldGVyIG1lYW5zIHRoZSBjbGllbnQgZG9lc24mIzE0Njt0IGNhcmUgaWYgaGUgZ290IGEgYnVmZmVyIG92ZXJmbG93KS4gQWxsIG90aGVyCmZhaWxpbmcgZXJyb3IgY29uZGl0aW9ucyB3aWxsIG92ZXJ3cml0ZSB0aGUgJnF1b3Q7YnVmZmVyIG92ZXJmbG93JnF1b3Q7IGVycm9yLCBlLmcuIDxmb250CmZhY2U9IkNvdXJpZXIgTmV3Ij5NSVNTSU5HX1JFU09VUkNFX0VSUk9SPC9mb250PiBldGMuLjwvcD4KCjxoND48Yj48dT5BcnJheXMgYXMgcmV0dXJuIHR5cGVzPC91PjwvYj48L2g0PgoKPHA+UmV0dXJuaW5nIGFuIGFycmF5IG9mIHN0cmluZ3MgaXMgZmFpcmx5IGVhc3kgaW4gQysrLCBidXQgdmVyeSBoYXJkIGluIEMuIEluc3RlYWQgb2YKcmV0dXJuaW5nIHRoZSBhcnJheSBwb2ludGVyIGRpcmVjdGx5LCB3ZSBvcHRlZCBmb3IgYW4gaXRlcmF0aXZlIGludGVyZmFjZSBpbnN0ZWFkOiBzcGxpdAp0aGUgZnVuY3Rpb24gaW50byB0d28gZnVuY3Rpb25zLiZuYnNwOyBPbmUgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhcnJheSwKYW5kIHRoZSBvdGhlciBvbmUgcmV0dXJucyBhIHNpbmdsZSBzcGVjaWZpZWQgZWxlbWVudCBmcm9tIHRoZSBhcnJheS48L3A+Cgo8YmxvY2txdW90ZT4KICA8cHJlPjxmb250IHNpemU9Ii0xIiBmYWNlPSJDb3VyaWVyIE5ldyI+aW50MzJfdCBjb3VudEFycmF5SXRlbXMoLyogcGFyYW1zICovKTsKaW50MzJfdCBnZXRBcnJheUVsZW1lbnQoaW50MzJfdCBlbGVtZW50SW5kZXgsIC8qIG90aGVyIHBhcmFtcyAqLywKJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFVDaGFyKiByZXN1bHQsIGludDMyX3QgbWF4UmVzdWx0U2l6ZSwgVUVycm9yQ29kZSogZXJyKTs8L2ZvbnQ+PC9wcmU+CjwvYmxvY2txdW90ZT4KCjxwPkluIHRoaXMgY2FzZSwgaXRlcmF0aW5nIGFjcm9zcyBhbGwgdGhlIGVsZW1lbnRzIGluIHRoZSBhcnJheSB3b3VsZCBhbW91bnQgdG8gYSBjYWxsIHRvCnRoZSBjb3VudCgpIGZ1bmN0aW9uIGZvbGxvd2VkIGJ5IG11bHRpcGxlIGNhbGxzIHRvIHRoZSBnZXRFbGVtZW50KCkgZnVuY3Rpb24uIDwvcD4KCjxibG9ja3F1b3RlPgogIDxwcmU+PGZvbnQgc2l6ZT0iLTEiIGZhY2U9IkNvdXJpZXIgTmV3Ij5mb3IgKGkgPSAwOyBpICZsdDsgY291bnRBcnJheUl0ZW1zKC4uLik7IGkrKykgewombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgVUNoYXIgZWxlbWVudFs1MF07CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBnZXRBcnJheUl0ZW0oaSwgLi4uLCBlbGVtZW50LCA1MCwgJmFtcDtlcnIpOwombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgLyogZG8gc29tZXRoaW5nIHdpdGggZWxlbWVudCAqLwp9PC9mb250PjwvcHJlPgo8L2Jsb2NrcXVvdGU+Cgo8cD5JbiB0aGUgY2FzZSBvZiB0aGUgcmVzb3VyY2UgYnVuZGxlIDxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij51cmVzX1hYWFg8L2ZvbnQ+IGZ1bmN0aW9ucwpyZXR1cm5pbmcgMi1kaW1lbnNpb25hbCBhcnJheXMsIHRoZSBnZXRFbGVtZW50KCkgZnVuY3Rpb24gdGFrZXMgYm90aCB4IGFuZCB5IGNvb3JkaW5hdGVzCmZvciB0aGUgZGVzaXJlZCBlbGVtZW50LCBhbmQgdGhlIGNvdW50KCkgZnVuY3Rpb24gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGFycmF5cyAoeCBheGlzKS4KJm5ic3A7IFNpbmNlIHRoZSBzaXplIG9mIGVhY2ggYXJyYXkgZWxlbWVudCBpbiB0aGUgcmVzb3VyY2UgMi1EIGFycmF5cyBzaG91bGQgYWx3YXlzIGJlCnRoZSBzYW1lLCB0aGlzIHByb3ZpZGVzIGFuIGVhc3ktdG8tdXNlIEMgaW50ZXJmYWNlLiA8L3A+Cgo8YmxvY2txdW90ZT4KICA8cHJlPjxmb250IHNpemU9Ii0xIiBmYWNlPSJDb3VyaWVyIE5ldyI+dm9pZCBjb3VudEFycmF5SXRlbXMoaW50MzJfdCogcm93cywgaW50MzJfdCogY29sdW1ucywKJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IC8qIG90aGVyIHBhcmFtcyAqLyk7CgppbnQzMl90IGdldDJkQXJyYXlFbGVtZW50KGludDMyX3Qgcm93SW5kZXgsJm5ic3A7CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBpbnQzMl90IGNvbEluZGV4LAombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgLyogb3RoZXIgcGFyYW1zICovLCZuYnNwOwombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgVUNoYXIqIHJlc3VsdCwmbmJzcDsKJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGludDMyX3QgbWF4UmVzdWx0U2l6ZSwKJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFVFcnJvckNvZGUqIGVycik7PC9mb250PjwvcHJlPgo8L2Jsb2NrcXVvdGU+Cgo8aDM+PGEgTkFNRT0iV2hlcmVUb0ZpbmRNb3JlIj48L2E+PHU+V2hlcmUgdG8gRmluZCBNb3JlIEluZm9ybWF0aW9uPC91PjwvaDM+CjxhIGhyZWY9Imh0dHA6Ly93d3cuaWJtLmNvbS9qYXZhL3Rvb2xzL2ludGVybmF0aW9uYWwtY2xhc3Nlcy8iPgoKPHA+aHR0cDovL3d3dy5pYm0uY29tL2phdmEvdG9vbHMvaW50ZXJuYXRpb25hbC1jbGFzc2VzLzwvYT4gaXMgYSBwb2ludGVyIHRvIGdlbmVyYWwKaW5mb3JtYXRpb24gYWJvdXQgdGhlIEludGVybmF0aW9uYWwgQ2xhc3NlcyBGb3IgVW5pY29kZS4gPC9wPgoKPHA+PGEgaHJlZj0iaHRtbC9haW5kZXguaHRtbCI+aHRtbC9haW5kZXguaHRtbDwvYT4gaXMgYW4gYWxwaGFiZXRpY2FsIGluZGV4IHRvIGRldGFpbGVkCkFQSSBkb2N1bWVudGF0aW9uLiA8YnI+CjxhIGhyZWY9Imh0bWwvSElFUmphdmEuaHRtbCI+aHRtbC9ISUVSamF2YS5odG1sPC9hPiBpcyBhIGhpZXJhcmNoaWNhbCBpbmRleCB0byBkZXRhaWxlZApBUEkgZG9jdW1lbnRhdGlvbi4gPC9wPgoKPHA+PGEgaHJlZj0iZG9jcy9jb2xsYXRlLmh0bWwiPmRvY3NcY29sbGF0ZS5odG1sPC9hPiBpcyBhbiBvdmVydmlldyB0byBDb2xsYXRpb24uIDwvcD4KCjxwPjxhIGhyZWY9ImRvY3MvQnJlYWtJdGVyYXRvci5odG1sIj5kb2NzXEJyZWFrSXRlcmF0b3IuaHRtbDwvYT4gaXMgYSBkaWFncmFtIHNob3dpbmcgaG93CkJyZWFrSXRlcmF0b3IgcHJvY2Vzc2VzIHRleHQgZWxlbWVudHMuIDwvcD4KCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuaWJtLmNvbS9qYXZhL2VkdWNhdGlvbi9pbnRlcm5hdGlvbmFsLXVuaWNvZGUvdW5pY29kZTEuaHRtbCI+aHR0cDovL3d3dy5pYm0uY29tL2phdmEvZWR1Y2F0aW9uL2ludGVybmF0aW9uYWwtdW5pY29kZS91bmljb2RlMS5odG1sPC9hPgppcyBhIHBvaW50ZXIgdG8gaW5mb3JtYXRpb24gb24gaG93IHRvIG1ha2UgYXBwbGljYXRpb25zIGdsb2JhbC4gPGJyPgombmJzcDsgPC9wPgoKPGgzPjxhIE5BTUU9IlN1Ym1pdHRpbmdDb21tZW50cyI+PC9hPjx1PlN1Ym1pdHRpbmcgQ29tbWVudHMsIFJlcXVlc3RpbmcgRmVhdHVyZXMgYW5kClJlcG9ydGluZyBCdWdzPC91PjwvaDM+Cgo8cD5UbyBzdWJtaXQgY29tbWVudHMsIHJlcXVlc3QgZmVhdHVyZXMgYW5kIHJlcG9ydCBidWdzLCBwbGVhc2UgY29udGFjdCB1cy4mbmJzcDsgV2hpbGUgd2UKYXJlIG5vdCBhYmxlIHRvIHJlc3BvbmQgaW5kaXZpZHVhbGx5IHRvIGVhY2ggY29tbWVudCwgd2UgZG8gcmV2aWV3IGFsbCBjb21tZW50cy4gU2VuZApJbnRlcm5ldCBlbWFpbCB0byA8YSBocmVmPSJtYWlsdG86aWN1NGNAdXMuaWJtLmNvbSI+aWN1NGNAdXMuaWJtLmNvbS48L2E+IDxicj4KPC9wPgoKPGhyPgoKPHA+qSBDb3B5cmlnaHQgMTk5NyBUYWxpZ2VudCwgSW5jLiA8YnI+CqkgQ29weXJpZ2h0IDE5OTctMTk5OSBJQk0gQ29ycG9yYXRpb24gPGJyPgpJQk0gQ2VudGVyIGZvciBKYXZhIFRlY2hub2xvZ3kgU2lsaWNvbiBWYWxsZXksIDxicj4KMTAyNzUgTiBEZSBBbnphIEJsdmQuLCBDdXBlcnRpbm8sIENBIDk1MDE0IDxicj4KQWxsIHJpZ2h0cyByZXNlcnZlZC4gPC9wPgoKPGhyPgo8L2JvZHk+CjwvaHRtbD4K