PCFkb2N0eXBlIGh0bWwgcHVibGljICItLy93M2MvL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvL2VuIj4KPGh0bWw+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cjx0aXRsZT5SZWFkTWUgZm9yIElDVTRKPC90aXRsZT4KPC9oZWFkPgoKPGJvZHkgYmdjb2xvcj0iI0ZGRkZGRiIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4MDAwODAiIGxhbmc9IkVOLVVTIj4KCjxoMj5SZWFkTWU6IEludGVybmF0aW9uYWwgQ29tcG9uZW50cyBmb3IgVW5pY29kZSBmb3IgSmF2YTwvaDI+Cgo8cD5WZXJzaW9uOiAxLjMuMSBKdW5lIDEyIDIwMDEgPC9wPgoKPGhyIHNpemU9IjIiIHdpZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVyIj4KCjxwPkNPUFlSSUdIVDogPGJyPgpDb3B5cmlnaHQgKGMpIDIwMDEgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzClJlc2VydmVkLiA8L3A+Cgo8aHIgc2l6ZT0iMiIgd2lkdGg9IjEwMCUiIGFsaWduPSJjZW50ZXIiPgoKPGgzPjx1PkNvbnRlbnRzPC91PjwvaDM+Cgo8dWwgdHlwZT0iZGlzYyI+CiAgPGxpPjxhIGhyZWY9IiNpbnRyb2R1Y3Rpb24iPkludHJvZHVjdGlvbjwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjbGljZW5zZSI+TGljZW5zZSBJbmZvcm1hdGlvbjwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjV2hhdENvbnRhaW4iPldoYXQgdGhlIEludGVybmF0aW9uYWwgQ29tcG9uZW50cyBmb3IgVW5pY29kZSBmb3IgSmF2YSBDb250YWluczwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjQVBJIj5BUEkgb3ZlcnZpZXc8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI1BsYXRmb3JtRGVwZW5kZW5jaWVzIj5QbGF0Zm9ybSBEZXBlbmRlbmNpZXM8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI0hvd1RvSW5zdGFsbEphdmFjIj5Ib3cgdG8gSW5zdGFsbCBhbmQgQnVpbGQ8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI1doZXJlVG9GaW5kTW9yZSI+V2hlcmUgdG8gRmluZCBNb3JlIEluZm9ybWF0aW9uPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNTdWJtaXR0aW5nQ29tbWVudHMiPlN1Ym1pdHRpbmcgQ29tbWVudHMsIFJlcXVlc3RpbmcgRmVhdHVyZXMgYW5kIFJlcG9ydGluZwogICAgQnVnczwvYT48L2xpPgo8L3VsPgoKPGgzPjxhIE5BTUU9ImludHJvZHVjdGlvbiI+PC9hPjx1PkludHJvZHVjdGlvbjwvdT48L2gzPgoKPHA+VG9kYXkncyBzb2Z0d2FyZSBtYXJrZXQgaXMgYSBnbG9iYWwgb25lIGluIHdoaWNoIGl0IGlzIGRlc2lyYWJsZSB0byBkZXZlbG9wIGFuZAptYWludGFpbiBvbmUgYXBwbGljYXRpb24gdGhhdCBzdXBwb3J0cyBhIHdpZGUgdmFyaWV0eSBvZiBuYXRpb25hbCBsYW5ndWFnZXMuIEludGVybmF0aW9uYWwKQ29tcG9uZW50cyBmb3IgVW5pY29kZSBmb3IgSmF2YSBwcm92aWRlcyB0aGUgZm9sbG93aW5nIHRvb2xzIHRvIGhlbHAgeW91IHdyaXRlIGxhbmd1YWdlCmluZGVwZW5kZW50IGFwcGxpY2F0aW9uczogCgo8dWwgdHlwZT0iZGlzYyI+CiAgPGxpPkludGVybmF0aW9uYWwgQ2FsZW5kYXJzICYjMTUwOyBBcmFiaWMsIEJ1ZGRoaXN0LCBIZWJyZXcsIEphcGFuZXNlPC9saT4KICA8bGk+VW5pY29kZSBOb3JtYWxpemF0aW9uICYjMTUwOyBDYW5vbmljYWwgdGV4dCByZXByZXNlbnRhdGlvbiBmb3IgVzNDPC9saT4KICA8bGk+TnVtYmVyIEZvcm1hdCBFbmhhbmNlbWVudHMgJiMxNTA7IFNjaWVudGlmaWMgTm90YXRpb24sIFNwZWxsZWQtb3V0LCAuLi48L2xpPgogIDxsaT5FbmhhbmNlZCB3b3JkLWJyZWFrIGRldGVjdGlvbiAmIzE1MDsgUnVsZS1iYXNlZCwgc3VwcG9ydHMgVGhhaTwvbGk+CiAgPGxpPlVuaWNvZGUgVGV4dCBTZWFyY2hpbmcgJiMxNTA7IEVmZmljaWVudCBtdWx0aS1saW5ndWFsIHNlYXJjaGluZzwvbGk+CiAgPGxpPlVuaWNvZGUgVGV4dCBDb21wcmVzc2lvbiAmIzE1MDsgMjoxIGNvbXByZXNzaW9uIG9uIEVuZ2xpc2ggVW5pY29kZSB0ZXh0PC9saT4KPC91bD4KCjxwPllvdXIgY29tbWVudHMgYXJlIGltcG9ydGFudCB0byBtYWtpbmcgdGhpcyByZWxlYXNlIHN1Y2Nlc3NmdWwuJm5ic3A7IFdlIGFyZSBjb21taXR0ZWQKdG8gZml4aW5nIGFueSBidWdzLCBhbmQgd2lsbCBhbHNvIHVzZSB5b3VyIGZlZWRiYWNrIHRvIGhlbHAgcGxhbiBmdXR1cmUgcmVsZWFzZXMuIDwvcD4KCjxoMz48YSBuYW1lPWxpY2Vuc2U+PC9hPjx1PkxpY2Vuc2UgSW5mb3JtYXRpb248L3U+PC9oMz4KPHA+CklDVTRDIGFuZCBJQ1U0SiBoYXZlIGNoYW5nZWQgdGhlaXIgbGljZW5zZXMgZnJvbSB0aGUgSVBMIChJQk0gUHVibGljIExpY2Vuc2UpIHRvIHRoZSBYIGxpY2Vuc2UuICBUaGUgWCBsaWNlbnNlIGlzIGEgbm9uLXZpcmFsIGFuZCByZWNvbW1lbmRlZCBmcmVlIHNvZnR3YXJlIGxpY2Vuc2UgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIEdOVSBHUEwgbGljZW5zZS4gVGhpcyBpcyBlZmZlY3RpdmUgc3RhcnRpbmcgd2l0aCByZWxlYXNlIDEuOC4xIG9mIElDVTRDIGFuZCByZWxlYXNlIDEuMy4xIG9mIElDVTRKLiBBbGwgcHJldmlvdXMgSUNVIHJlbGVhc2VzIHdpbGwgY29udGludWUgdG8gdXRpbGl6ZSB0aGUgSVBMLiAgTmV3IElDVSByZWxlYXNlcyB3aWxsIGFkb3B0IHRoZSBYIGxpY2Vuc2UuICBUaGUgdXNlcnMgb2YgcHJldmlvdXMgcmVsZWFzZXMgb2YgSUNVIHdpbGwgbmVlZCB0byBhY2NlcHQgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBYIGxpY2Vuc2UgaW4gb3JkZXIgdG8gYWRvcHQgdGhlIG5ldyBJQ1UgcmVsZWFzZXMuICAKPC9wPgo8cD4KVGhlIG1haW4gZWZmZWN0IG9mIHRoZSBjaGFuZ2UgaXMgdG8gcHJvdmlkZSBHUEwgY29tcGF0aWJpbGl0eS4gIFRoZSBYIGxpY2Vuc2UgaXMgbGlzdGVkIGFzIEdQTCBjb21wYXRpYmxlLCBzZWUgdGhlIGdudSBwYWdlIGF0IDxhIGhyZWY9aHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvbGljZW5zZS1saXN0Lmh0bWwjR1BMQ29tcGF0aWJsZUxpY2Vuc2VzPgpodHRwOi8vd3d3LmdudS5vcmcvcGhpbG9zb3BoeS9saWNlbnNlLWxpc3QuaHRtbCNHUExDb21wYXRpYmxlTGljZW5zZXMKPC9hPgo8L3A+CjxwPgpUaGUgdGV4dCBvZiB0aGUgWCBsaWNlbnNlIGlzIGF2YWlsYWJsZSBhdCA8YSBocmVmPWh0dHA6Ly93d3cueC5vcmcvdGVybXMuaHRtPmh0dHA6Ly93d3cueC5vcmcvdGVybXMuaHRtPC9hPiwgYW5kIGlzIHJlcHJvZHVjZWQgaW4gdGhlIGxpbmsgYmVsb3c6CjwvcD4KPHA+ClBsZWFzZSBtYWtlIHN1cmUgeW91IHVuZGVyc3RhbmQgdGhlIDxhIGhyZWY9ImxpY2Vuc2UuaHRtbCI+Q29weXJpZ2h0IGFuZCBMaWNlbnNlIGluZm9ybWF0aW9uPC9hPi48L2I+CjwvcD4KCjxoMz48YSBOQU1FPSJXaGF0Q29udGFpbiI+PC9hPjx1PldoYXQgdGhlIEludGVybmF0aW9uYWwgQ29tcG9uZW50cyBmb3IgVW5pY29kZSBmb3IgSmF2YQpDb250YWluczwvdT48L2gzPgoKPHA+VGhlcmUgYXJlIHR3byB3YXlzIHRvIGRvd25sb2FkIHRoZSBJQ1U0SiByZWxlYXNlcywgCgo8dWwgdHlwZT0iZGlzYyI+CiAgPGxpPjxiPk9mZmljaWFsIFJlbGVhc2UgU25hcHNob3Q6PC9iPjxicj4KICAgIElmIHlvdSB3YW50IHRvIHVzZSBJQ1U0SiAoYXMgb3Bwb3NlZCB0byBkZXZlbG9waW5nIGl0KSwgeW91ciBiZXN0IGJldCBpcyB0byBkb3dubG9hZCBhbgogICAgb2ZmaWNpYWwsIHBhY2thZ2VkIElDVTRKIHZlcnNpb24gb2YgdGhlIElDVTRKIHNvdXJjZSBjb2RlLiZuYnNwOyBUaGVzZSB2ZXJzaW9ucyBhcmUgdGVzdGVkCiAgICBtb3JlIHRob3JvdWdobHkgdGhhbiBkYXktdG8tZGF5IGRldmVsb3BtZW50IGJ1aWxkcywgYW5kIHRoZXkgYXJlIHBhY2thZ2VkIGluIHppcCBmaWxlcyBmb3IgCiAgICBjb252ZW5pZW50IGRvd25sb2FkLiZuYnNwOyBUaGVzZSBwYWNrYWdlZCBmaWxlcyBjYW4gYmUgZm91bmQgYXQgPGEgaHJlZj0iaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdTRqL2Rvd25sb2FkL2luZGV4Lmh0bWwiPmh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb3dubG9hZC9pbmRleC5odG1sPC9hPi4KICAgIDxicj4KICAgIElmIHBhY2thZ2VkIHNuYXBzaG90IGlzIG5hbWVkIDxiPklDVTRKWFhYWFhYLnppcCA8L2I+LCBYWFhYWFggaXMgdGhlIHJlbGVhc2UgdmVyc2lvbgogICAgbnVtYmVyLiA8YnI+CiAgICBQbGVhc2UgdW56aXAgdGhpcyBmaWxlLiZuYnNwOyBJdCB3aWxsIHJlLWNvbnN0cnVjdCB0aGUgc291cmNlIGRpcmVjdG9yeS4gPC9saT4KPC91bD4KCjx1bCB0eXBlPSJkaXNjIj4KICA8bGk+PGI+Q1ZTIFNvdXJjZSBSZXBvc2l0b3J5OjwvYj48YnI+CiAgICBJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gZGV2ZWxvcGluZyBmZWF0dXJlcywgcGF0Y2hlcywgb3IgYnVnIGZpeGVzIGZvciBJQ1U0SiwgeW91IHNob3VsZAogICAgcHJvYmFibHkgYmUgd29ya2luZyB3aXRoIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgSUNVNEogc291cmNlIGNvZGUuIFlvdSB3aWxsIG5lZWQgdG8KICAgIGNoZWNrIHRoZSBjb2RlIG91dCBvZiBvdXIgQ1ZTIHJlcG9zaXRvcnkgdG8gZW5zdXJlIHRoYXQgeW91IGhhdmUgdGhlIG1vc3QgcmVjZW50IHZlcnNpb24KICAgIG9mIGFsbCBvZiB0aGUgZmlsZXMuIFRoZXJlIGFyZSBzZXZlcmFsIHdheXMgdG8gZG8gdGhpczogPGJyPgogICAgPHVsIHR5cGU9ImNpcmNsZSI+CiAgICAgIDxsaT5XZWJDVlM6PGJyPgogICAgICAgIElmIHlvdSB3YW50IHRvIGJyb3dzZSB0aGUgY29kZSBhbmQgb25seSBtYWtlIG9jY2FzaW9uYWwgZG93bmxvYWRzLCB5b3UgbWF5IHdhbnQgdG8gdXNlCiAgICAgICAgV2ViQ1ZTLiBJdCBwcm92aWRlcyBhIGNvbnZlbmllbnQsIHdlYi1iYXNlZCBpbnRlcmZhY2UgZm9yIGJyb3dzaW5nIGFuZCBkb3dubG9hZGluZyB0aGUKICAgICAgICBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgSUNVNEogc291cmNlIGNvZGUgYW5kIGRvY3VtZW50YXRpb24uIFlvdSBjYW4gYWxzbyB2aWV3IGVhY2ggZmlsZSdzCiAgICAgICAgcmV2aXNpb24gaGlzdG9yeSwgZGlzcGxheSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBpbmRpdmlkdWFsIHJldmlzaW9ucywgZGV0ZXJtaW5lIHdoaWNoCiAgICAgICAgcmV2aXNpb25zIHdlcmUgcGFydCBvZiB3aGljaCBvZmZpY2lhbCByZWxlYXNlLCBhbmQgc28gb24uIDxicj4KICAgICAgPC9saT4KICAgICAgPGxpPldpbkNWUzo8YnI+CiAgICAgICAgSWYgeW91IHdpbGwgYmUgZG9pbmcgc2VyaW91cyB3b3JrIG9uIElDVTRKLCB5b3Ugc2hvdWxkIHByb2JhYmx5IGluc3RhbGwgYSBDVlMgY2xpZW50IG9uCiAgICAgICAgeW91ciBvd24gbWFjaGluZSBzbyB0aGF0IHlvdSBjYW4gZG8gYmF0Y2ggb3BlcmF0aW9ucyB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIFdlYkNWUwogICAgICAgIGludGVyZmFjZS4gT24gV2luZG93cywgd2Ugc3VnZ2VzdCB0aGUgV2luQ1ZTIGNsaWVudC4gVGhlIGZvbGxvd2luZyBpcyB0aGUgZXhhbXBsZQogICAgICAgIGluc3RydWN0aW9uIG9uIGhvdyB0byBkb3dubG9hZCBJQ1U0SiB2aWEgV2luQ1ZTOiA8b2w+CiAgICAgICAgICA8bGk+SW5zdGFsbCB0aGUgV2luQ1ZTIGNsaWVudCwgd2hpY2ggeW91IGNhbiBkb3dubG9hZCBmcm9tIHRoZSA8YQogICAgICAgICAgICBocmVmPSJodHRwOi8vd3d3LndpbmN2cy5vcmciPmh0dHA6Ly93d3cud2luY3ZzLm9yZzwvYT4uPC9saT4KICAgICAgICAgIDxsaT5TZWxlY3QgPHN0cm9uZz5QcmVmZXJlbmNlczwvc3Ryb25nPiBmcm9tIHRoZSA8c3Ryb25nPkFkbWluPC9zdHJvbmc+IG1lbnUuPG9sIHR5cGU9ImEiPgogICAgICAgICAgICAgIDxsaT5PbiB0aGUgPHN0cm9uZz5HZW5lcmFsPC9zdHJvbmc+IHRhYiBwYW5lbDogU2V0IHlvdXIgPHN0cm9uZz5DVlNST09UPC9zdHJvbmc+IHRvICZxdW90OzxzdHJvbmc+OnBzZXJ2ZXI6YW5vbmN2c0Bvc3Muc29mdHdhcmUuaWJtLmNvbTovdXNyL2N2cy9pY3U0ajwvc3Ryb25nPiZxdW90Oy48YnI+CiAgICAgICAgICAgICAgICBMZWF2ZSBvdGhlciBvcHRpb25zIG9uIHRoaXMgcGFnZSBhdCB0aGVpciBkZWZhdWx0LjwvbGk+CiAgICAgICAgICAgICAgPGxpPk9uIHRoZSA8c3Ryb25nPlBvcnRzPC9zdHJvbmc+IHRhYiBwYW5lbDogQ2hlY2sgdGhlIDxzdHJvbmc+cHNlcnZlcjwvc3Ryb25nPiBjaGVja2JveCBhbmQKICAgICAgICAgICAgICAgIGVudGVyIHBvcnQgPHN0cm9uZz4yNDAxPC9zdHJvbmc+LjwvbGk+CiAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpPkNsaWNrIG9uIHRoZSBMb2dpbiBtZW51IGJ1dHRvbiAoPHN0cm9uZz5BZG1pbjwvc3Ryb25nPiBtZW51KS4gRW50ZXIgaW4gICZxdW90OzxzdHJvbmc+YW5vbmN2czwvc3Ryb25nPiZxdW90OyB3aGVuIHJlcXVlc3RlZC48L2xpPgogICAgICAgICAgPGxpPlRvIGV4dHJhY3QgdGhlIG1vc3QgcmVjZW50IHZlcnNpb24gb2YgSUNVNEosIHNlbGVjdCA8c3Ryb25nPkNoZWNrb3V0IG1vZHVsZTwvc3Ryb25nPgogICAgICAgICAgICBmcm9tIHRoZSA8c3Ryb25nPkNyZWF0ZTwvc3Ryb25nPiBtZW51LiBTcGVjaWZ5ICZxdW90OzxzdHJvbmc+aWN1NGo8L3N0cm9uZz4mcXVvdDsgZm9yIHRoZQogICAgICAgICAgICBtb2R1bGUgbmFtZS4gVGhpcyB3aWxsIGNyZWF0ZSBhIG5ldyBjb3B5IG9mIHRoZSB3b3Jrc3BhY2Ugb24geW91ciBsb2NhbCBoYXJkIGRyaXZlLjwvbGk+CiAgICAgICAgICA8bGk+SW4gdGhlIGZ1dHVyZSwgeW91IGNhbiBkb3dubG9hZCB1cGRhdGVkIGZpbGVzIGZyb20gdGhlIHJlcG9zaXRvcnkgdG8geW91ciBoYXJkIGRyaXZlCiAgICAgICAgICAgIHVzaW5nIHRoZSA8c3Ryb25nPlVwZGF0ZSBzZWxlY3Rpb248L3N0cm9uZz4gaXRlbSBpbiB0aGUgPHN0cm9uZz5Nb2RpZnk8L3N0cm9uZz4gbWVudS48YnI+CiAgICAgICAgICA8L2xpPgogICAgICAgIDwvb2w+CiAgICAgIDwvbGk+CiAgICAgIDxsaT5DVlMgY29tbWFuZCBsaW5lOjxicj4KICAgICAgICBZb3UgY2FuIGFsc28gY2hlY2sgb3V0IHRoZSByZXBvc2l0b3J5IGFub255bW91c2x5IG9uIFVOSVggdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kcywKICAgICAgICBhZnRlciBmaXJzdCBzZXR0aW5nIHlvdXIgQ1ZTUk9PVCB0byBwb2ludCB0byB0aGUgSUNVNEogcmVwb3NpdG9yeTogPHByZT48Y29kZT5leHBvcnQgQ1ZTUk9PVD06cHNlcnZlcjphbm9uY3ZzQG9zcy5zb2Z0d2FyZS5pYm0uY29tOi91c3IvY3ZzL2ljdTRqIApjdnMgbG9naW4gQ1ZTIHBhc3N3b3JkOiBhbm9uY3ZzIApjdnMgY2hlY2tvdXQgaWN1NGogCmN2cyBsb2dvdXQ8L2NvZGU+PC9wcmU+CiAgICAgIDwvbGk+CiAgICA8L3VsPgogIDwvbGk+CjwvdWw+Cgo8cD5Gb3IgbW9yZSBkZXRhaWxzIG9uIGhvdyB0byBkb3dubG9hZCBJQ1U0SiBkaXJlY3RseSBmcm9tIHRoZSB3ZWIgc2l0ZSwgcGxlYXNlIGFsc28gc2VlIDxhCmhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb3dubG9hZC9pbmRleC5odG1sIj5odHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG93bmxvYWQvaW5kZXguaHRtbDwvYT4KPC9wPgoKPHA+QmVsb3csIDxiPiRSb290PC9iPiBpcyB0aGUgcGxhY2VtZW50IG9mIHRoZSBpY3UgZGlyZWN0b3J5IGluIHlvdXIgZmlsZSBzeXN0ZW0sIGxpa2UKJnF1b3Q7ZHJpdmU6XC4uLlxpY3U0aiZxdW90OyBpbiB5b3VyIGVudmlyb25tZW50LiAmcXVvdDtkcml2ZTpcLi4uJnF1b3Q7IHN0YW5kcyBmb3IgYW55CmRyaXZlIGFuZCBhbnkgZGlyZWN0b3J5IG9uIHRoYXQgZHJpdmUgdGhhdCB5b3UgY2hvc2UgdG8gaW5zdGFsbCBpY3U0aiBpbnRvLiA8L3A+Cgo8cD48Yj5UaGUgZm9sbG93aW5nIGZpbGVzIGRlc2NyaWJlIHRoZSBjb2RlIGRyb3A6PC9iPjwvcD4KCjx0YWJsZSBCT1JERVI9IjEiIENFTExQQURESU5HPSIwIj4KICA8dHI+CiAgICA8dGQ+cmVhZG1lLmh0bWwgKHRoaXMgZmlsZSk8L3RkPgogICAgPHRkPmRlc2NyaWJlcyB0aGUgSW50ZXJuYXRpb25hbCBDb21wb25lbnRzIGZvciBVbmljb2RlIGZvciBKYXZhPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5saWNlbnNlLmh0bWw8L3RkPgogICAgPHRkPmNvbnRhaW5zIHRoZSBYIGxpY2Vuc2U8L3RkPgogIDwvdHI+CjwvdGFibGU+Cgo8cD48Yj5UaGUgc291cmNlIGRpcmVjdG9yaWVzIG1pcnJvciBwYWNrYWdlIHN0cnVjdHVyZSBvZiB0aGUgY29kZS4mbmJzcDsgVGhlIGZvbGxvd2luZwpkaXJlY3RvcmllcyBjb250YWluIHNvdXJjZSBjb2RlIGFuZCBkYXRhIGZpbGVzOjwvYj4gPC9wPgoKPHRhYmxlIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjAiIFdJRFRIPSI2MjMiPgogIDx0cj4KICAgIDx0ZCBXSURUSD0iMjAlIj4kUm9vdC9zcmMvZGF0YS88L3RkPgogICAgPHRkIFdJRFRIPSI4MCUiPlZhcmlvdXMgZGF0YSBmaWxlcyB1c2VkIHRvIGdlbmVyYXRlIElDVTRKIGNsYXNzZXMuJm5ic3A7IE1vc3Qgb2YgdGhlIGZpbGVzCiAgICBjb250YWluIFVuaWNvZGUgaW5mb3JtYXRpb24gdGhhdCBpcyBhdmFpbGFibGUgZnJvbSA8YSBocmVmPSJodHRwOi8vd3d3LnVuaWNvZGUub3JnLyI+aHR0cDovL3d3dy51bmljb2RlLm9yZy88L2E+LiZuYnNwOwogICAgVXNlZCBvbmx5IGJ5IHRvb2xzIGluIHRoZSBzcmMvY29tL2libS90b29scy48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIFdJRFRIPSIyMCUiPiRSb290L3NyYy9jb20vaWJtL2RlbW88L3RkPgogICAgPHRkIFdJRFRIPSI4MCUiPkRlbW9uc3RyYXRpb24gYXBwbGljYXRpb25zIGFuZCBBcHBsZXRzLjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgV0lEVEg9IjIwJSI+JFJvb3Qvc3JjL2NvbS9pYm0vdGVzdDwvdGQ+CiAgICA8dGQgV0lEVEg9IjgwJSI+VGVzdHMgZm9yIHZhcmlvdXMgSUNVNEogY29tcG9uZW50cy4uIEZvciBpbmZvcm1hdGlvbiBhYm91dCBydW5uaW5nIHRoZQogICAgdGVzdHMsIHNlZSAkUm9vdC9zcmMvY29tL2libS90ZXN0L1Rlc3RBbGwuamF2YS48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIFdJRFRIPSIyMCUiPiRSb290L3NyYy9jb20vaWJtL3Rvb2xzPC90ZD4KICAgIDx0ZCBXSURUSD0iODAlIj5WYXJpb3VzIHRvb2xzIHVzZWQgdG8gZ2VuZXJhdGUgSUNVNEogY2xhc3Nlcy48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIFdJRFRIPSIyMCUiPiRSb290L3NyYy9jb20vaWJtL3RleHQ8L3RkPgogICAgPHRkIFdJRFRIPSI4MCUiPlRoZSBmb2xsb3dpbmcgY29tcG9uZW50czombmJzcDsgPHVsPgogICAgICA8bGk+UnVsZUJhc2VkQnJlYWtJdGVyYXRvcjwvbGk+CiAgICAgIDxsaT5EaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yPC9saT4KICAgICAgPGxpPlRyYW5zbGl0ZXJhdG9yPC9saT4KICAgICAgPGxpPk5vcm1hbGl6ZXI8L2xpPgogICAgICA8bGk+QmlnTnVtYmVyRm9ybWF0PC9saT4KICAgICAgPGxpPlN0cmluZ1NlYXJjaDwvbGk+CiAgICAgIDxsaT5Vbmljb2RlIGNvbXByZXNzaW9uPC9saT4KICAgIDwvdWw+CiAgICA8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIFdJRFRIPSIyMCUiPiRSb290L3NyYy9jb20vaWJtL3V0aWw8L3RkPgogICAgPHRkIFdJRFRIPSI4MCUiPkNhbGVuZGFycyBhbmQgSG9saWRheXM8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIFdJRFRIPSIyMCUiPiRSb290L2J1aWxkPC90ZD4KICAgIDx0ZCBXSURUSD0iODAlIj5BZGRpdGlvbmFsIGNsYXNzZXMgbmVlZGVkIHRvIGJ1aWxkIHVzaW5nIEFudDwvdGQ+CiAgPC90cj4KPC90YWJsZT4KCjxwPjxiPlRoZSBmb2xsb3dpbmcgZGlyZWN0b3JpZXMgYXJlIHBvcHVsYXRlZCB3aGVuIHlvdSd2ZSBidWlsdCBldmVyeXRoaW5nOjwvYj4gPC9wPgoKPHRhYmxlIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjAiPgogIDx0cj4KICAgIDx0ZD4kUm9vdC9jbGFzc2VzLzwvdGQ+CiAgICA8dGQ+Y29udGFpbnMgYWxsIGNsYXNzIGZpbGVzPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD4kUm9vdC9kb2NzPC90ZD4KICAgIDx0ZD5jb250YWlucyBKYXZhRG9jIGZvciBhbGwgcGFja2FnZXM8L3RkPgogIDwvdHI+CjwvdGFibGU+Cgo8cD48Yj5EYXRhIG9yZ2FuaXphdGlvbjo8L2I+IDwvcD4KCjxwPkRhdGEgaXMgc3RvcmVkIGluIHZhcmlvdXMgbG9jYXRpb25zIGluIElDVTRKOgoKPHVsPgogIDxsaT5EYXRhIHRoYXQgaXMgJnF1b3Q7cmF3JnF1b3Q7IGRhdGEgZ29lcyBpbnRvIDxzdHJvbmc+JFJvb3Qvc3JjL2RhdGE8L3N0cm9uZz4uIFRoaXMKICAgIGluY2x1ZGVzIHRoaW5ncyBsaWtlIHRoZSByYXcgVW5pY29kZSBkYXRhYmFzZS4gPHN0cm9uZz4kUm9vdC9zcmMvZGF0YTwvc3Ryb25nPiBkb2VzIDxlbT5ub3Q8L2VtPgogICAgY29udGFpbiA8c3Ryb25nPi5qYXZhPC9zdHJvbmc+IHNvdXJjZSBmaWxlcy48L2xpPgogIDxsaT5EYXRhIHRoYXQgaXMgaW4gdGhlIGZvcm0gb2YgYSBKYXZhIGNsYXNzLCB0eXBpY2FsbHkgYSBSZXNvdXJjZUJ1bmRsZSwgYnV0IG5vdAogICAgbmVjZXNzYXJpbHksIGdvZXMgaW50byBvbmUgb2YgdGhlIHBhY2thZ2VzIDxjb2RlPmNvbS5pYm0udXRpbC5yZXNvdXJjZXM8L2NvZGU+IG9yIDxjb2RlPmNvbS5pYm0udGV4dC5yZXNvdXJjZXM8L2NvZGU+LAogICAgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGFzc29jaWF0ZWQgY29kZSBsaXZlcyBpbiA8Y29kZT5jb20uaWJtLnV0aWw8L2NvZGU+IG9yIDxjb2RlPmNvbS5pYm0udGV4dDwvY29kZT4uPC9saT4KICA8bGk+RGF0YSB0aGF0IGlzIG5vdCBwYXJ0IG9mIElDVTRKIHByb3BlciAob3IgaXRzIGJhc2UgdG9vbCBzZXQpLCBidXQgcmF0aGVyIHBhcnQgb2YgYSB0ZXN0LAogICAgc2FtcGxlLCBvciBkZW1vLCBzaG91bGQgZ28gbmVhciB0aGUgc291cmNlIGNvZGUgb2YgaXRzIG93bmVyLiBUaGlzIG1ha2VzIGl0IGVhc3kgdG8gc2hpcCBhCiAgICBjb3JlIElDVTRKIHJlbGVhc2Ugd2l0aG91dCBvcHRpb25hbCBjb21wb25lbnRzLjwvbGk+CjwvdWw+Cgo8aDM+PHU+PGEgbmFtZT0iQVBJIj48L2E+QVBJIE92ZXJ2aWV3PC91PjwvaDM+Cgo8cD5UaGUgY29tcGxldGUgQVBJIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIG9uIHRoZSBJQ1U0SiB3ZWIgc2l0ZTogCgo8dWw+CiAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb2NzL2luZGV4Lmh0bWwiPkNvbXBsZXRlIGluZGV4PC9hPjwvbGk+CiAgPGxpPkludGVybmF0aW9uYWwgQ2FsZW5kYXJzICYjMTUwOyA8YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG9jcy9jb20vaWJtL3V0aWwvSXNsYW1pY0NhbGVuZGFyLmh0bWwiPklzbGFtaWM8L2E+LAogICAgPGEgaHJlZj0iaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdTRqL2RvY3MvY29tL2libS91dGlsL0J1ZGRoaXN0Q2FsZW5kYXIuaHRtbCI+QnVkZGhpc3Q8L2E+LCA8YQogICAgaHJlZj0iaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdTRqL2RvY3MvY29tL2libS91dGlsL0hlYnJld0NhbGVuZGFyLmh0bWwiPkhlYnJldzwvYT4sIDxhCiAgICBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG9jcy9jb20vaWJtL3V0aWwvSmFwYW5lc2VDYWxlbmRhci5odG1sIj5KYXBhbmVzZTwvYT48L2xpPgogIDxsaT48YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG9jcy9jb20vaWJtL3RleHQvTm9ybWFsaXplci5odG1sIj5Vbmljb2RlIE5vcm1hbGl6YXRpb248L2E+ICYjMTUwOwogICAgQ2Fub25pY2FsIHRleHQgcmVwcmVzZW50YXRpb24gZm9yIFczQzwvbGk+CiAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb2NzL2NvbS9pYm0vdGV4dC9OdW1iZXJGb3JtYXQuaHRtbCI+TnVtYmVyIEZvcm1hdCBFbmhhbmNlbWVudHM8L2E+ICYjMTUwOwogICAgU2NpZW50aWZpYyBOb3RhdGlvbiwgU3BlbGxlZC1vdXQsIC4uLjwvbGk+CiAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb2NzL2NvbS9pYm0vdGV4dC9CcmVha0l0ZXJhdG9yLmh0bWwiPkVuaGFuY2VkIHdvcmQtYnJlYWsgZGV0ZWN0aW9uPC9hPgogICAgJiMxNTA7IFJ1bGUtYmFzZWQsIHN1cHBvcnRzIFRoYWk8L2xpPgogIDxsaT48YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG9jcy9jb20vaWJtL3RleHQvU3RyaW5nU2VhcmNoLmh0bWwiPlVuaWNvZGUgVGV4dCBTZWFyY2hpbmc8L2E+ICYjMTUwOwogICAgRWZmaWNpZW50IG11bHRpLWxpbmd1YWwgc2VhcmNoaW5nPC9saT4KICA8bGk+VW5pY29kZSBUZXh0IDxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb2NzL2NvbS9pYm0vdGV4dC9Vbmljb2RlQ29tcHJlc3Nvci5odG1sIj5Db21wcmVzc2lvbjwvYT4gJmFtcDsKICAgIDxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb2NzL2NvbS9pYm0vdGV4dC9Vbmljb2RlRGVjb21wcmVzc29yLmh0bWwiPkRlY29tcHJlc3Npb248L2E+ICYjMTUwOyAyOjEKICAgIGNvbXByZXNzaW9uIG9uIEVuZ2xpc2ggVW5pY29kZSB0ZXh0PC9saT4KPC91bD4KCjxoMz48YSBOQU1FPSJQbGF0Zm9ybURlcGVuZGVuY2llcyI+PC9hPjx1PlBsYXRmb3JtIERlcGVuZGVuY2llczwvdT48L2gzPgoKPHA+UGFydHMgb2YgSUNVNEogZGVwZW5kIG9uIGZ1bmN0aW9uYWxpdHkgdGhhdCBpcyBvbmx5IGF2YWlsYWJsZSBpbiBKYXZhMiAoSkRrMS4yKSBvcgpsYXRlciwgYWx0aG91Z2ggc29tZSBjb21wb25lbnRzIHdvcmsgdW5kZXIgMS4xLiZuYnNwOyBIb3dldmVyLCBhbGwgY29tcG9uZW50cyBzaG91bGQgYmUKY29tcGlsZWQgdXNpbmcgYSBKYXZhMiBjb21waWxlciBhcyBldmVuIGNvbXBvbmVudHMgdGhhdCBydW4gdXNpbmcgYSAxLjEueCBKVk0gbWF5IHJlcXVpcmUKbGFuZ3VhZ2UgZmVhdHVyZXMgdGhhdCBhcmUgb25seSBwcmVzZW50IGluIDEuMi4mbmJzcDsgQ3VycmVudGx5IDEuMS54IGlzIHVuc3VwcG9ydGVkIGFuZAp1bnRlc3RlZCBhbmQgeW91IHVzZSB0aGUgY29tcG9uZW50cyBvbiBhIDEuMS54IHN5c3RlbSBhdCB5b3VyIG93biByaXNrLiA8L3A+Cgo8aDM+PGEgTkFNRT0iSG93VG9JbnN0YWxsSmF2YWMiPjwvYT48dT5Ib3cgdG8gSW5zdGFsbCBhbmQgQnVpbGQ8L3U+PC9oMz4KCjxwPlRvIGluc3RhbGwgSUNVNEosIHNpbXBseSBwbGFjZSB0aGUgcHJlYnVpbHQgamFyIGZpbGUgPHN0cm9uZz5pY3U0ai5qYXI8L3N0cm9uZz4gb24geW91cgpKYXZhIENMQVNTUEFUSC4mbmJzcDsgTm8gb3RoZXIgZmlsZXMgYXJlIG5lZWRlZC48L3A+Cgo8cD5UaGUgcHJlcmVxdWlzaXRlcyBmb3IgYnVpbGRpbmcgSUNVNEogYXJlIGEgd29ya2luZyBKREsgYW5kIHRoZSBBbnQgYnVpbGQgc3lzdGVtOiAKCjx1bD4KICA8bGk+Rmlyc3QgaW5zdGFsbCBhIHJlY2VudCBKREssIGF0IGxlYXN0IHZlcnNpb24gMS4yLjwvbGk+CiAgPGxpPk5leHQgaW5zdGFsbCB0aGUgPGEgaHJlZj0iaHR0cDovL2pha2FydGEuYXBhY2hlLm9yZy9hbnQvIj48c3Ryb25nPkFudDwvc3Ryb25nPjwvYT4gYnVpbGQKICAgIHN5c3RlbSwgcGFydCBvZiB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24ncyA8YSBocmVmPSJodHRwOi8vamFrYXJ0YS5hcGFjaGUub3JnLyI+PHN0cm9uZz5KYWthcnRhPC9zdHJvbmc+PC9hPgogICAgcHJvamVjdC4gQW50IGlzIGEgcG9ydGFibGUsIEphdmEtYmFzZWQgYnVpbGQgc3lzdGVtIHNpbWlsYXIgdG8gbWFrZS4gSUNVNEogdXNlcyBBbnQKICAgIGJlY2F1c2UgaXQgaW50cm9kdWNlcyBubyBvdGhlciBkZXBlbmRlbmNpZXMsIGl0J3MgcG9ydGFibGUsIGFuZCBpdCdzIGVhc2llciB0byBtYW5hZ2UgdGhhbgogICAgYSBjb2xsZWN0aW9uIG9mIG1ha2VmaWxlcy4gV2UgY3VycmVudGx5IGJ1aWxkIElDVTRKIHVzaW5nIGEgc2luZ2xlIG1ha2VmaWxlIG9uIGJvdGgKICAgIFdpbmRvd3MgOXggYW5kIExpbnV4IHVzaW5nIEFudC48L2xpPgogIDxsaT5JbnN0YWxsaW5nIEFudCBpcyBzdHJhaWdodGZvcndhcmQuIERvd25sb2FkIGl0IChzZWUgPGEKICAgIGhyZWY9Imh0dHA6Ly9qYWthcnRhLmFwYWNoZS5vcmcvZG93bmxvYWRzL2JpbmluZGV4Lmh0bWwiPmh0dHA6Ly9qYWthcnRhLmFwYWNoZS5vcmcvZG93bmxvYWRzL2JpbmluZGV4Lmh0bWw8L2E+KSwKICAgIGV4dHJhY3QgaXQgb250byB5b3VyIHN5c3RlbSwgc2V0IHNvbWUgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBhbmQgYWRkIGl0cyBiaW4gZGlyZWN0b3J5IHRvCiAgICB5b3VyIHBhdGguIEZvciBleGFtcGxlOjxwcmU+ICAgIHNldCBKQVZBX0hPTUU9QzpcamRrMS4yLjIKICAgIHNldCBBTlRfSE9NRT1DOlxqYWthcnRhLWFudAogICAgc2V0IFBBVEg9JVBBVEglOyVBTlRfSE9NRSVcYmluCiAgICBjYWxsIGFudHNldHVwPC9wcmU+CiAgICA8cD5TZWUgdGhlIGN1cnJlbnQgQW50IGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuPC9wPgogIDwvbGk+CiAgPGxpPkl0J3MgcmVjb21tZW5kZWQgdG8gaW5zdGFsbCBib3RoIHRoZSBKREsgYW5kIEFudCBzb21ld2hlcmUgPGVtPm91dHNpZGU8L2VtPiB0aGUgSUNVNEoKICAgIGRpcmVjdG9yeSwgdG8ga2VlcCB0aGVtIG91dCBvZiBDVlMncyBoYWlyLiBGb3IgZXhhbXBsZSwgb24gTGludXggeW91IG1pZ2h0IGluc3RhbGwgdGhlc2UKICAgIGluIC91c3IvbG9jYWwuPC9saT4KPC91bD4KCjxwPk9uY2UgQW50IGlzIGluc3RhbGxlZCwgYnVpbGRpbmcgaXMganVzdCBhIG1hdHRlciBvZiB0eXBpbmcgPHN0cm9uZz5hbnQ8L3N0cm9uZz4gaW4gdGhlCklDVTRKIHJvb3QgZGlyZWN0b3J5LiBUaGlzIGNhdXNlcyB0aGUgQW50IGJ1aWxkIHN5c3RlbSB0byBwZXJmb3JtIGEgYnVpbGQgYXMgc3BlY2lmaWVkIGJ5CnRoZSBmaWxlIDxzdHJvbmc+YnVpbGQueG1sPC9zdHJvbmc+LCBsb2NhdGVkIGluIHRoZSBJQ1U0SiByb290IGRpcmVjdG9yeS4gWW91IGNhbiBnaXZlIEFudApvcHRpb25zIGxpa2UgLXZlcmJvc2UsIGFuZCB5b3UgY2FuIHNwZWNpZnkgdGFyZ2V0cy4gQW50IHdpbGwgb25seSBidWlsZCB3aGF0J3MgYmVlbgpjaGFuZ2VkIGFuZCB3aWxsIHJlc29sdmUgZGVwZW5kZW5jaWVzIHByb3Blcmx5LjwvcD4KCjxibG9ja3F1b3RlPgogIDxwcmU+RjpcaWN1NGomZ3Q7YW50IHRlc3RzCkJ1aWxkZmlsZTogYnVpbGQueG1sClByb2plY3QgYmFzZSBkaXIgc2V0IHRvOiBGOlxpY3U0agpFeGVjdXRpbmcgVGFyZ2V0OiBjb3JlCkNvbXBpbGluZyA3MSBzb3VyY2UgZmlsZXMgdG8gRjpcaWN1NGpcY2xhc3NlcwpFeGVjdXRpbmcgVGFyZ2V0OiB0ZXN0cwpDb21waWxpbmcgMjQgc291cmNlIGZpbGVzIHRvIEY6XGljdTRqXGNsYXNzZXMKQ29tcGxldGVkIGluIDE5IHNlY29uZHM8L3ByZT4KPC9ibG9ja3F1b3RlPgoKPHA+Q3VycmVudCB0YXJnZXRzIHRoYXQgeW91IGNhbiBnaXZlIGFmdGVyIDxzdHJvbmc+YW50PC9zdHJvbmc+OjwvcD4KPGRpdiBhbGlnbj0ibGVmdCI+Cgo8dGFibGUgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iMCI+CiAgPHRyPgogICAgPHRkPmFsbDwvdGQ+CiAgICA8dGQ+QnVpbGQgYWxsIHRhcmdldHMuPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5jb3JlPC90ZD4KICAgIDx0ZD5CdWlsZCB0aGUgbWFpbiBjbGFzcyBmaWxlcyBpbiB0aGUgc3ViZGlyZWN0b3J5IDxzdHJvbmc+Y2xhc3Nlczwvc3Ryb25nPi4gSWYgbm8gdGFyZ2V0CiAgICBpcyBzcGVjaWZpZWQsIGNvcmUgaXMgYXNzdW1lZC48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPnRlc3RzPC90ZD4KICAgIDx0ZD5CdWlsZCB0aGUgdGVzdCBjbGFzcyBmaWxlcy48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPmRlbW9zPC90ZD4KICAgIDx0ZD5CdWlsZCB0aGUgZGVtb3MuPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD50b29sczwvdGQ+CiAgICA8dGQ+QnVpbGQgdGhlIHRvb2xzLjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+ZG9jczwvdGQ+CiAgICA8dGQ+UnVuIGphdmFkb2Mgb3ZlciB0aGUgbWFpbiBjbGFzcyBmaWxlcywgZ2VuZXJhdGluZyBhbiBIVE1MIGRvY3VtZW50YXRpb24gdHJlZSBpbiB0aGUKICAgIHN1YmRpcmVjdG9yeSA8c3Ryb25nPmRvY3M8L3N0cm9uZz4uPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5qYXI8L3RkPgogICAgPHRkPkNyZWF0ZSBhIGphciBhcmNoaXZlIDxzdHJvbmc+aWN1NGouamFyPC9zdHJvbmc+IGluIHRoZSByb290IElDVTRKIGRpcmVjdG9yeSBjb250YWluaW5nCiAgICB0aGUgbWFpbiBjbGFzcyBmaWxlcy48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPnppcDwvdGQ+CiAgICA8dGQ+Q3JlYXRlIGEgemlwIGFyY2hpdmUgb2YgdGhlIHNvdXJjZSwgZG9jcywgYW5kIGphciBmaWxlIGZvciBkaXN0cmlidXRpb24sIGV4Y2x1ZGluZwogICAgdW53YW50ZWQgdGhpbmdzIGxpa2UgQ1ZTIGRpcmVjdG9yaWVzIGFuZCBlbWFjcyBiYWNrdXAgZmlsZXMuIFRoZSB6aXAgZmlsZSA8c3Ryb25nPmljdTRqWVlZWU1NREQuemlwPC9zdHJvbmc+CiAgICB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhlIGRpcmVjdG9yeSA8ZW0+YWJvdmU8L2VtPiB0aGUgcm9vdCBJQ1U0SiBkaXJlY3RvcnksIHdoZXJlIFlZWVlNTURECiAgICBpcyB0b2RheSdzIGRhdGUuIEFueSBleGlzdGluZyBmaWxlIG9mIHRoYXQgbmFtZSB3aWxsIGJlIG92ZXJ3cml0dGVuLjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+emlwc3JjPC90ZD4KICAgIDx0ZD5MaWtlIHRoZSA8c3Ryb25nPnppcDwvc3Ryb25nPiB0YXJnZXQsIHdpdGhvdXQgdGhlIGRvY3MgYW5kIHRoZSBqYXIgZmlsZS4gVGhlIHppcCBmaWxlIDxzdHJvbmc+aWN1NGpzcmNZWVlZTU1ERC56aXA8L3N0cm9uZz4KICAgIHdpbGwgYmUgY3JlYXRlZCBpbiB0aGUgZGlyZWN0b3J5IDxlbT5hYm92ZTwvZW0+IHRoZSByb290IElDVTRKIGRpcmVjdG9yeS48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPmNsZWFuPC90ZD4KICAgIDx0ZD5SZW1vdmUgYWxsIGJ1aWx0IHRhcmdldHMsIGxlYXZpbmcgdGhlIHNvdXJjZS48L3RkPgogIDwvdHI+CjwvdGFibGU+CjwvZGl2PgoKPHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlYWQgdGhlIEFudCBkb2N1bWVudGF0aW9uIGFuZCB0aGUgPHN0cm9uZz5idWlsZC54bWw8L3N0cm9uZz4KZmlsZS48L3A+Cgo8cD5BZnRlciBkb2luZyBhIGJ1aWxkIGl0IGlzIGEgZ29vZCBpZGVhIHRvIHJ1biBhbGwgdGhlIHRlc3RzIGJ5IHR5cGVpbmcgJnF1b3Q7amF2YQotY2xhc3NwYXRoIGNsYXNzZXMgY29tLmlibS50ZXN0LlRlc3RBbGwmcXVvdDsuIDwvcD4KCjxwPihBcyBhbiBhbHRlcm5hdGl2ZSB0byB1c2luZyBBbnQsIHlvdSBjYW4gYnVpbGQgc2ltcGx5IGJ5IHJ1bm5pbmcgamF2YWMgYW5kIGphdmFkb2MKZGlyZWN0bHkuIFRoaXMgaXMgbm90IHJlY29tbWVuZGVkLCBidXQgYSBXaW5kb3dzIGJhdGNoIGZpbGUgJnF1b3Q7YnVpbGRhbGwuYmF0JnF1b3Q7CmV4aXN0cyB0byBnZXQgeW91IHN0YXJ0ZWQgaWYgeW91J3JlIHJlYWxseSBhbGxlcmdpYyB0byBidWlsZCBzeXN0ZW1zLiBZb3UgbWF5IGhhdmUgdG8KY3JlYXRlIGRlc3RpbmF0aW9uIGRpcmVjdG9yaWVzLik8L3A+Cgo8aDM+PGEgbmFtZT0iV2hlcmVUb0ZpbmRNb3JlIj48L2E+PHU+V2hlcmUgdG8gRmluZCBNb3JlIEluZm9ybWF0aW9uPC91PjwvaDM+Cgo8cD48YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGoiPmh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ajwvYT4gaXMgYQpwb2ludGVyIHRvIGdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEludGVybmF0aW9uYWwgQ29tcG9uZW50cyBmb3IgVW5pY29kZSBpbiBKYXZhIDwvcD4KCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuaWJtLmNvbS9kZXZlbG9wZXIvdW5pY29kZSI+aHR0cDovL3d3dy5pYm0uY29tL2RldmVsb3Blci91bmljb2RlPC9hPiBpcyBhIHBvaW50ZXIgdG8KaW5mb3JtYXRpb24gb24gaG93IHRvIG1ha2UgYXBwbGljYXRpb25zIGdsb2JhbC4gPC9wPgoKPGgzPjxhIE5BTUU9IlN1Ym1pdHRpbmdDb21tZW50cyI+PC9hPjx1PlN1Ym1pdHRpbmcgQ29tbWVudHMsIFJlcXVlc3RpbmcgRmVhdHVyZXMgYW5kClJlcG9ydGluZyBCdWdzPC91PjwvaDM+Cgo8cD5UbyBzdWJtaXQgY29tbWVudHMsIHJlcXVlc3QgZmVhdHVyZXMgYW5kIHJlcG9ydCBidWdzLCBjb250YWN0IHVzIHRocm91Z2ggdGhlIDxhIGhyZWY9aHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdTRqL2FyY2hpdmVzL2luZGV4Lmh0bWw+SUNVNEogbWFpbGluZyBsaXN0PC9hPi48YnI+CldoaWxlIHdlIGFyZSBub3QgYWJsZSB0byByZXNwb25kIGluZGl2aWR1YWxseSB0byBlYWNoIGNvbW1lbnQsIHdlIGRvIHJldmlldyBhbGwgY29tbWVudHMuIDwvcD4KCjxociBzaXplPSIyIiB3aWR0aD0iMTAwJSIgYWxpZ249ImNlbnRlciI+Cgo8cD5Db3B5cmlnaHQgqSAyMDAxIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cwpSZXNlcnZlZC4gPGJyPgpJQk0gQ2VudGVyIGZvciBKYXZhIFRlY2hub2xvZ3kgU2lsaWNvbiBWYWxsZXksIDxicj4KMTAyNzUgTiBEZSBBbnphIEJsdmQuLCBDdXBlcnRpbm8sIENBIDk1MDE0IDxicj4KQWxsIHJpZ2h0cyByZXNlcnZlZC4gPC9wPgoKPGhyIHNpemU9IjIiIHdpZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVyIj4KPC9ib2R5Pgo8L2h0bWw+Cg==