ZGlmZiAtLWdpdCBhL2xpYnMvZnVuY3Rpb25hbC9mYWN0b3J5L2RvYy9KYW1maWxlIGIvbGlicy9mdW5jdGlvbmFsL2ZhY3RvcnkvZG9jL0phbWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY1MzMzNgotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMvZnVuY3Rpb25hbC9mYWN0b3J5L2RvYy9KYW1maWxlCkBAIC0wLDAgKzEsMjAgQEAKKworIyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKKyMKKyMgVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAorIyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi9cL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KKwordXNpbmcgcXVpY2tib29rIDsKKworeG1sIGZhY3RvcnkgOiBmYWN0b3J5LnFiayA7Citib29zdGJvb2sgc3RhbmRhbG9uZSA6IGZhY3RvcnkKKyAgOgorICAgICAgICA8eHNsOnBhcmFtPmJvb3N0LnJvb3Q9Li4vLi4vLi4vLi4vLi4KKyAgICAgICAgPHhzbDpwYXJhbT5ib29zdC5saWJyYXJpZXM9Li4vLi4vLi4vLi4vbGlicmFyaWVzLmh0bQorICAgICAgICA8eHNsOnBhcmFtPmNodW5rLnNlY3Rpb24uZGVwdGg9MAorICAgICAgICA8eHNsOnBhcmFtPmNodW5rLmZpcnN0LnNlY3Rpb25zPTAKKyAgICAgICAgPHhzbDpwYXJhbT5nZW5lcmF0ZS5zZWN0aW9uLnRvYy5sZXZlbD0yCisgICAgICAgIDx4c2w6cGFyYW0+dG9jLm1heC5kZXB0aD0xCisgIDsKKworCmRpZmYgLS1naXQgYS9saWJzL2Z1bmN0aW9uYWwvZmFjdG9yeS9kb2MvZmFjdG9yeS5xYmsgYi9saWJzL2Z1bmN0aW9uYWwvZmFjdG9yeS9kb2MvZmFjdG9yeS5xYmsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FhM2ZhZgotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMvZnVuY3Rpb25hbC9mYWN0b3J5L2RvYy9mYWN0b3J5LnFiawpAQCAtMCwwICsxLDM4NiBAQAorW2xpYnJhcnkgQm9vc3QuRnVuY3Rpb25hbC9GYWN0b3J5CisgIFtxdWlja2Jvb2sgMS4zXQorICBbdmVyc2lvbiAxLjBdCisgIFthdXRob3JzIFtTY2h3aW5nZXIsIFRvYmlhc11dCisgIFtjb3B5cmlnaHQgMjAwNyAyMDA4IFRvYmlhcyBTY2h3aW5nZXJdCisgIFtsaWNlbnNlCisgICAgICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KKyAgICAgICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKKyAgICAgICAgW0BodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHRdKQorICBdCisgIFtwdXJwb3NlIEZ1bmN0aW9uIG9iamVjdCB0ZW1wbGF0ZXMgZm9yIG9iamVjdCBjcmVhdGlvbi5dCisgIFtjYXRlZ29yeSBoaWdoZXItb3JkZXJdCisgIFtjYXRlZ29yeSBnZW5lcmljXQorICBbbGFzdC1yZXZpc2lvbiAkRGF0ZTogMjAwOC8xMS8wMSAyMTo0NDo1MiAkXQorXQorCitbZGVmIF9fYm9vc3RfYmluZF9fIFtAaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL2JpbmQuaHRtbCBCb29zdC5CaW5kXV0KK1tkZWYgX19ib29zdF9fYmluZF9fIFtAaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL2JpbmQuaHRtbCBgYm9vc3Q6OmJpbmRgXV0KKworW2RlZiBfX2Jvb3N0X19mb3J3YXJkX2FkYXB0ZXJfXyBbQGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvZnVuY3Rpb25hbC9mb3J3YXJkL2RvYy9pbmRleC5odG1sIGBib29zdDo6Zm9yd2FyZF9hZGFwdGVyYF1dCitbZGVmIF9fZnVzaW9uX2Z1bmN0aW9uYWxfYWRhcHRlcnNfXyBbQGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvZnVzaW9uL2RvYy9odG1sL2Z1bmN0aW9uYWwuaHRtbCBGdXNpb24gRnVuY3Rpb25hbCBBZGFwdGVyc11dCisKK1tkZWYgX19ib29zdF9mdW5jdGlvbl9fIFtAaHR0cDovL3d3dy5ib29zdC5vcmcvZG9jL2h0bWwvZnVuY3Rpb24uaHRtbCBCb29zdC5GdW5jdGlvbl1dCitbZGVmIF9fYm9vc3RfX2Z1bmN0aW9uX18gW0BodHRwOi8vd3d3LmJvb3N0Lm9yZy9kb2MvaHRtbC9mdW5jdGlvbi5odG1sIGBib29zdDo6ZnVuY3Rpb25gXV0KKworW2RlZiBfX3NtYXJ0X3BvaW50ZXJfXyBbQGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL2luZGV4Lmh0bWwgU21hcnQgUG9pbnRlcl1dCitbZGVmIF9fc21hcnRfcG9pbnRlcnNfXyBbQGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL2luZGV4Lmh0bWwgU21hcnQgUG9pbnRlcnNdXQorW2RlZiBfX2Jvb3N0X19zaGFyZWRfcHRyX18gW0BodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9zaGFyZWRfcHRyLmh0bSBgYm9vc3Q6OnNoYXJlZF9wdHJgXV0KKworW2RlZiBfX3N0ZF9fbWFwX18gW0BodHRwOi8vd3d3LnNnaS5jb20vdGVjaC9zdGwvbWFwLmh0bWwgYHN0ZDo6bWFwYF1dCitbZGVmIF9fc3RkX19zdHJpbmdfXyBbQGh0dHA6Ly93d3cuc2dpLmNvbS90ZWNoL3N0bC9zdHJpbmcuaHRtbCBgc3RkOjpzdHJpbmdgXV0KK1tkZWYgX19hbGxvY2F0b3JfXyBbQGh0dHA6Ly93d3cuc2dpLmNvbS90ZWNoL3N0bC9jb25jZXB0cy9hbGxvY2F0b3IuaHRtbCBBbGxvY2F0b3JdXQorW2RlZiBfX3N0ZF9hbGxvY2F0b3JfXyBbQGh0dHA6Ly93d3cuc2dpLmNvbS90ZWNoL3N0bC9jb25jZXB0cy9hbGxvY2F0b3IuaHRtbCBBbGxvY2F0b3JdXQorW2RlZiBfX3N0ZF9hbGxvY2F0b3JzX18gW0BodHRwOi8vd3d3LnNnaS5jb20vdGVjaC9zdGwvY29uY2VwdHMvYWxsb2NhdG9yLmh0bWwgQWxsb2NhdG9yc11dCisKK1tkZWYgX19ib29zdF9fcHRyX21hcF9fIFtAaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9wdHJfY29udGFpbmVyL2RvYy9wdHJfbWFwLmh0bWwgYGJvb3N0OjpwdHJfbWFwYF1dCisKK1tkZWYgX19ib29zdF9fZmFjdG9yeV9fIGBib29zdDo6ZmFjdG9yeWBdCitbZGVmIF9fYm9vc3RfX3ZhbHVlX2ZhY3RvcnlfXyBgYm9vc3Q6OnZhbHVlX2ZhY3RvcnlgXQorCitbZGVmIF9fZmFjdG9yeV9fIGBmYWN0b3J5YF0KK1tkZWYgX192YWx1ZV9mYWN0b3J5X18gYHZhbHVlX2ZhY3RvcnlgXQorCisKK1tzZWN0aW9uIEJyaWVmIERlc2NyaXB0aW9uXQorCitUaGUgdGVtcGxhdGUgX19ib29zdF9fZmFjdG9yeV9fIGxldHMgeW91IGVuY2Fwc3VsYXRlIGEgYG5ld2AgZXhwcmVzc2lvbgorYXMgYSBmdW5jdGlvbiBvYmplY3QsIF9fYm9vc3RfX3ZhbHVlX2ZhY3RvcnlfXyBlbmNhcHN1bGF0ZXMgYSBjb25zdHJ1Y3RvcgoraW52b2NhdGlvbiB3aXRob3V0IGBuZXdgLgorCisgICAgX19ib29zdF9fZmFjdG9yeV9fPFQqPigpKGFyZzEsYXJnMixhcmczKSAKKyAgICAvLyBzYW1lIGFzIG5ldyBUKGFyZzEsYXJnMixhcmczKQorCisgICAgX19ib29zdF9fdmFsdWVfZmFjdG9yeV9fPFQ+KCkoYXJnMSxhcmcyLGFyZzMpCisgICAgLy8gc2FtZSBhcyBUKGFyZzEsYXJnMixhcmczKQorCitGb3IgdGVjaG5pY2FsIHJlYXNvbnMgdGhlIGFyZ3VtZW50cyB0byB0aGUgZnVuY3Rpb24gb2JqZWN0cyBoYXZlIHRvIGJlCitMVmFsdWVzLiBBIGZhY3RvcnkgdGhhdCBhbHNvIGFjY2VwdHMgUlZhbHVlcyBjYW4gYmUgY29tcG9zZWQgdXNpbmcgdGhlCitfX2Jvb3N0X19mb3J3YXJkX2FkYXB0ZXJfXyBvciBfX2Jvb3N0X19iaW5kX18uCisKK1tlbmRzZWN0XQorCitbc2VjdGlvbiBCYWNrZ3JvdW5kXQorCitJbiB0cmFkaXRpb25hbCBPYmplY3QgT3JpZW50ZWQgUHJvZ3JhbW1pbmcgYSBGYWN0b3J5IGlzIGFuIG9iamVjdCBpbXBsZW1lbnRpbmcKK2FuIGludGVyZmFjZSBvZiBvbmUgb3IgbW9yZSBtZXRob2RzIHRoYXQgY29uc3RydWN0IG9iamVjdHMgY29uZm9ybWluZyB0byBrbm93bgoraW50ZXJmYWNlcy4KKworICAgIC8vIGFzc3VtaW5nIGFfY29uY3JldGVfY2xhc3MgYW5kIGFub3RoZXJfY29uY3JldGVfY2xhc3MgYXJlIGRlcml2ZWQKKyAgICAvLyBmcm9tIGFuX2Fic3RyYWN0X2NsYXNzCisKKyAgICBjbGFzcyBhX2ZhY3RvcnkKKyAgICB7CisgICAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgYW5fYWJzdHJhY3RfY2xhc3MqIGNyZWF0ZSgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCB+YV9mYWN0b3J5KCkgeyB9CisgICAgfTsKKworICAgIGNsYXNzIGFfY29uY3JldGVfZmFjdG9yeSA6IHB1YmxpYyBhX2ZhY3RvcnkKKyAgICB7CisgICAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgYW5fYWJzdHJhY3RfY2xhc3MqIGNyZWF0ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgYV9jb25jcmV0ZV9jbGFzcygpOworICAgICAgICB9CisgICAgfTsKKworICAgIGNsYXNzIGFub3RoZXJfY29uY3JldGVfZmFjdG9yeSA6IHB1YmxpYyBhX2ZhY3RvcnkKKyAgICB7CisgICAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgYW5fYWJzdHJhY3RfY2xhc3MqIGNyZWF0ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgYW5vdGhlcl9jb25jcmV0ZV9jbGFzcygpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8vIFsuLi5dCisKKyAgICBpbnQgbWFpbigpCisgICAgeworICAgICAgICBfX2Jvb3N0X19wdHJfbWFwX188X19zdGRfX3N0cmluZ19fLGFfZmFjdG9yeT4gZmFjdG9yaWVzOworCisgICAgICAgIC8vIFsuLi5dCisKKyAgICAgICAgZmFjdG9yaWVzLmluc2VydCgiYV9uYW1lIixzdGQ6OmF1dG9fcHRyPGFfZmFjdG9yeT4oCisgICAgICAgICAgICBuZXcgYV9jb25jcmV0ZV9mYWN0b3J5KSk7CisgICAgICAgIGZhY3Rvcmllcy5pbnNlcnQoImFub3RoZXJfbmFtZSIsc3RkOjphdXRvX3B0cjxhX2ZhY3Rvcnk+KAorICAgICAgICAgICAgbmV3IGFub3RoZXJfY29uY3JldGVfZmFjdG9yeSkpOworCisgICAgICAgIC8vIFsuLi5dCisKKyAgICAgICAgc3RkOjphdXRvX3B0cjxhbl9hYnN0cmFjdF9jbGFzcz4geChmYWN0b3JpZXMuYXQoc29tZV9uYW1lKS5jcmVhdGUoKSk7CisKKyAgICAgICAgLy8gWy4uLl0KKyAgICB9CisKK1RoaXMgYXBwcm9hY2ggaGFzIHNldmVyYWwgZHJhd2JhY2tzLiBUaGUgbW9zdCBvYnZpb3VzIG9uZSBpcyB0aGF0IHRoZXJlIGlzCitsb3RzIG9mIGJvaWxlcnBsYXRlIGNvZGUuIEluIG90aGVyIHdvcmRzIHRoZXJlIGlzIHRvbyBtdWNoIGNvZGUgdG8gZXhwcmVzcworYSByYXRoZXIgc2ltcGxlIGludGVudGlvbi4gV2UgY291bGQgdXNlIHRlbXBsYXRlcyB0byBnZXQgcmlkIG9mIHNvbWUgb2YgaXQKK2J1dCB0aGUgYXBwcm9hY2ggcmVtYWlucyBpbmZsZXhpYmxlOiAKKworKiBXZSBtYXkgd2FudCBhIGZhY3RvcnkgdGhhdCB0YWtlcyBzb21lIGFyZ3VtZW50cyB0aGF0IGFyZSBmb3J3YXJkZWQgdG8KKyAgdGhlIGNvbnN0cnVjdG9yLAorKiB3ZSB3aWxsIHByb2JhYmx5IHdhbnQgdG8gdXNlIHNtYXJ0IHBvaW50ZXJzLAorKiB3ZSBtYXkgd2FudCBzZXZlcmFsIG1lbWJlciBmdW5jdGlvbnMgdG8gY3JlYXRlIGRpZmZlcmVudCBraW5kcyBvZgorICBvYmplY3RzLAorKiB3ZSBtaWdodCBub3QgbmVjZXNzYXJpbHkgbmVlZCBhIHBvbHltb3JwaGljIGJhc2UgY2xhc3MgZm9yIHRoZSBvYmplY3RzLAorKiBhcyB3ZSB3aWxsIHNlZSwgd2UgZG8gbm90IG5lZWQgYSBmYWN0b3J5IGJhc2UgY2xhc3MgYXQgYWxsLCAKKyogd2UgbWlnaHQgd2FudCB0byBqdXN0IGNhbGwgdGhlIGNvbnN0cnVjdG9yIC0gd2l0aG91dCBgbmV3YCB0byBjcmVhdGUKKyAgYW4gb2JqZWN0IG9uIHRoZSBzdGFjaywgYW5kCisqIGZpbmFsbHkgd2UgbWlnaHQgd2FudCB0byB1c2UgY3VzdG9taXplZCBtZW1vcnkgbWFuYWdlbWVudC4KKworRXhwZXJpZW5jZSBoYXMgc2hvd24gdGhhdCB1c2luZyBmdW5jdGlvbiBvYmplY3RzIGFuZCBnZW5lcmljIEJvb3N0IGNvbXBvbmVudHMKK2ZvciB0aGVpciBjb21wb3NpdGlvbiwgRGVzaWduIFBhdHRlcm5zIHRoYXQgZGVzY3JpYmUgY2FsbGJhY2sgbWVjaGFuaXNtcworKHR5cGljYWxseSByZXF1aXJpbmcgYSBoaWdoIHBlcmNlbnRhZ2Ugb2YgYm9pbGVycGxhdGUgY29kZSB3aXRoIHB1cmUgT2JqZWN0CitPcmllbnRlZCBtZXRob2RvbG9neSkgYmVjb21lIGltcGxlbWVudGFibGUgd2l0aCBqdXN0IGZldyBjb2RlIGxpbmVzIGFuZCB3aXRob3V0CitleHRyYSBjbGFzc2VzLiAKKworRmFjdG9yaWVzIGFyZSBjYWxsYmFjayBtZWNoYW5pc21zIGZvciBjb25zdHJ1Y3RvcnMsIHNvIHdlIHByb3ZpZGUgdHdvIGNsYXNzCit0ZW1wbGF0ZXMsIF9fYm9vc3RfX3ZhbHVlX2ZhY3RvcnlfXyBhbmQgX19ib29zdF9fZmFjdG9yeV9fLCB0aGF0IGVuY2Fwc3VsYXRlCitvYmplY3QgY29uc3RydWN0aW9uIHZpYSBkaXJlY3QgYXBwbGljYXRpb24gb2YgdGhlIGNvbnN0cnVjdG9yIGFuZCB0aGUgYG5ld2AKK29wZXJhdG9yLCByZXNwZWN0aXZlbHkuIAorCitXZSBsZXQgdGhlIGZ1bmN0aW9uIG9iamVjdHMgZm9yd2FyZCB0aGVpciBhcmd1bWVudHMgdG8gdGhlIGNvbnN0cnVjdGlvbgorZXhwcmVzc2lvbnMgdGhleSBlbmNhcHN1bGF0ZS4gT3ZlciB0aGlzIF9fYm9vc3RfX2ZhY3RvcnlfXyBvcHRpb25hbGx5IGFsbG93cwordGhlIHVzZSBvZiBzbWFydCBwb2ludGVycyBhbmQgX19zdGRfYWxsb2NhdG9yc19fLgorCitDb21waWxlLXRpbWUgcG9seW1vcnBoaXNtIGNhbiBiZSB1c2VkIHdoZXJlIGFwcHJvcHJpYXRlLAorCisgICAgdGVtcGxhdGU8IGNsYXNzIFQgPgorICAgIHZvaWQgZG9fc29tZXRoaW5nKCkKKyAgICB7CisgICAgICAgIC8vIFsuLi5dCisgICAgICAgIFQgeCA9IFQoYSxiKTsKKworICAgICAgICAvLyBmb3IgY29uY2VwdHVhbGx5IHNpbWlsYXIgb2JqZWN0cyB4IHdlIG5laXRoZXIgbmVlZCB2aXJ0dWFsCisgICAgICAgIC8vIGZ1bmN0aW9ucyBub3IgYSBjb21tb24gYmFzZSBjbGFzcyBpbiB0aGlzIGNvbnRleHQuCisgICAgICAgIC8vIFsuLi5dCisgICAgfQorCitOb3csIHRvIGFsbG93IGluaG9tb2dlbmVvdXMgc2lnbmF0dXJlcyBmb3IgdGhlIGNvbnN0cnVjdG9ycyBvZiB0aGUgdHlwZXMgcGFzc2VkCitpbiBmb3IgYFRgIHdlIGNhbiB1c2UgX192YWx1ZV9mYWN0b3J5X18gYW5kIF9fYm9vc3RfX2JpbmRfXyB0byBub3JtYWxpemUgYmV0d2VlbgordGhlbS4gCisKKyAgICB0ZW1wbGF0ZTwgY2xhc3MgVmFsdWVGYWN0b3J5ID4gCisgICAgdm9pZCBkb19zb21ldGhpbmcoVmFsdWVGYWN0b3J5IG1ha2Vfb2JqID0gVmFsdWVGYWN0b3J5KCkpCisgICAgeworICAgICAgICAvLyBbLi4uXQorICAgICAgICB0eXBlbmFtZSBWYWx1ZUZhY3Rvcnk6OnJlc3VsdF90eXBlIHggPSBtYWtlX29iaihhLGIpOworCisgICAgICAgIC8vIGZvciBjb25jZXB0dWFsbHkgc2ltaWxhciBvYmplY3RzIHggd2UgbmVpdGhlciBuZWVkIHZpcnR1YWwKKyAgICAgICAgLy8gZnVuY3Rpb25zIG5vciBhIGNvbW1vbiBiYXNlIGNsYXNzIGluIHRoaXMgY29udGV4dC4KKyAgICAgICAgLy8gWy4uLl0KKyAgICB9CisKKyAgICBpbnQgbWFpbigpCisgICAgeworICAgICAgICAvLyBbLi4uXQorCisgICAgICAgIGRvX3NvbWV0aGluZyhfX2Jvb3N0X192YWx1ZV9mYWN0b3J5X188WD4oKSk7CisgICAgICAgIGRvX3NvbWV0aGluZyhib29zdDo6YmluZChfX2Jvb3N0X192YWx1ZV9mYWN0b3J5X188WT4oKSxfMSw1LF8yKSk7CisgICAgICAgIC8vIGNvbnN0cnVjdCBYKGEsYikgYW5kIFkoYSw1LGIpLCByZXNwZWN0aXZlbHkuCisKKyAgICAgICAgLy8gWy4uLl0KKyAgICB9CisKK01heWJlIHdlIHdhbnQgb3VyIG9iamVjdHMgdG8gb3V0bGl2ZSB0aGUgZnVuY3Rpb24ncyBzY29wZSwgaW4gdGhpcyBjYXNlIHdlCitoYXZlIHRvIHVzZSBkeW5hbWljIGFsbG9jYXRpb247CisKKyAgICB0ZW1wbGF0ZTwgY2xhc3MgRmFjdG9yeSA+CisgICAgd2hhdGV2ZXIgZG9fc29tZXRoaW5nKEZhY3RvcnkgbmV3X29iaiA9IEZhY3RvcnkoKSkKKyAgICB7CisgICAgICAgIHR5cGVuYW1lIEZhY3Rvcnk6OnJlc3VsdF90eXBlIHB0ciA9IG5ld19vYmooYSxiKTsKKworICAgICAgICAvLyBhZ2Fpbiwgbm8gY29tbW9uIGJhc2UgY2xhc3Mgb3IgdmlydHVhbCBmdW5jdGlvbnMgbmVlZGVkLAorICAgICAgICAvLyB3ZSBjb3VsZCBlbmZvcmNlIGEgcG9seW1vcnBoaWMgYmFzZSBieSB3cml0aW5nIGUuZy4KKyAgICAgICAgLy8gICAgYm9vc3Q6OnNoYXJlZF9wdHI8YmFzZT4KKyAgICAgICAgLy8gaW5zdGVhZCBvZgorICAgICAgICAvLyAgICB0eXBlbmFtZSBGYWN0b3J5OjpyZXN1bHRfdHlwZQorICAgICAgICAvLyBhYm92ZS4KKyAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGFyZSBhbHNvIGZyZWUgdG8gaGF2ZSB0aGUgdHlwZSBlcmFzdXJlIGhhcHBlbiAKKyAgICAgICAgLy8gc29tZXdoZXJlIGVsc2UgKGUuZy4gaW4gdGhlIGNvbnN0cnVjdG9yIG9mIHRoaXMgZnVuY3Rpb24ncworICAgICAgICAvLyByZXN1bHQgdHlwZSkuCisKKyAgICAgICAgLy8gWy4uLl0KKyAgICB9CisKKyAgICAvLyBbLi4uIGNhbGwgZG9fc29tZXRoaW5nIGxpa2UgYWJvdmUgYnV0IHdpdGggX19mYWN0b3J5X18gaW5zdGVhZAorICAgIC8vIG9mIF9fdmFsdWVfZmFjdG9yeV9fXQorCitBbHRob3VnaCB3ZSBtaWdodCBoYXZlIGNyZWF0ZWQgcG9seW1vcnBoaWMgb2JqZWN0cyBpbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwKK3dlIGhhdmUgdXNlZCBjb21waWxlIHRpbWUgcG9seW1vcnBoaXNtIGZvciB0aGUgZmFjdG9yeS4gSWYgd2Ugd2FudCB0byBlcmFzZQordGhlIHR5cGUgb2YgdGhlIGZhY3RvcnkgYW5kIHRodXMgYWxsb3cgcG9seW1vcnBoaXNtIGF0IHJ1biB0aW1lLCB3ZSBjYW4KK3VzZSBfX2Jvb3N0X2Z1bmN0aW9uX18gdG8gZG8gc28uIFRoZSBmaXJzdCBleGFtcGxlIGNhbiBiZSByZXdyaXR0ZW4gYXMgCitmb2xsb3dzLgorCisgICAgdHlwZWRlZiBib29zdDo6ZnVuY3Rpb248IGFuX2Fic3RyYWN0X2NsYXNzKigpID4gYV9mYWN0b3J5OworCisgICAgLy8gWy4uLl0KKworICAgIGludCBtYWluKCkKKyAgICB7CisgICAgICAgIF9fc3RkX19tYXBfXzxfX3N0ZF9fc3RyaW5nX18sYV9mYWN0b3J5PiBmYWN0b3JpZXM7CisKKyAgICAgICAgLy8gWy4uLl0KKworICAgICAgICBmYWN0b3JpZXNbImFfbmFtZSJdID0gX19ib29zdF9fZmFjdG9yeV9fPGFfY29uY3JldGVfY2xhc3MqPigpOworICAgICAgICBmYWN0b3JpZXNbImFub3RoZXJfbmFtZSJdID0gCisgICAgICAgICAgICBfX2Jvb3N0X19mYWN0b3J5X188YW5vdGhlcl9jb25jcmV0ZV9jbGFzcyo+KCk7CisKKyAgICAgICAgLy8gWy4uLl0KKyAgICB9IAorCitPZiBjb3Vyc2Ugd2UgY2FuIGp1c3QgYXMgZWFzeSBjcmVhdGUgZmFjdG9yaWVzIHRoYXQgdGFrZSBhcmd1bWVudHMgYW5kL29yCityZXR1cm4gX19zbWFydF9wb2ludGVyc19fLgorCitbZW5kc2VjdF0KKworCitbc2VjdGlvbjpyZWZlcmVuY2UgUmVmZXJlbmNlXQorCisKK1tzZWN0aW9uIHZhbHVlX2ZhY3RvcnldCisKK1toZWFkaW5nIERlc2NyaXB0aW9uXQorCitGdW5jdGlvbiBvYmplY3QgdGVtcGxhdGUgdGhhdCBpbnZva2VzIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgdHlwZSBgVGAuCisKK1toZWFkaW5nIEhlYWRlcl0KKyAgICAjaW5jbHVkZSA8Ym9vc3QvZnVuY3Rpb25hbC92YWx1ZV9mYWN0b3J5LmhwcD4KKworW2hlYWRpbmcgU3lub3BzaXNdCisKKyAgICBuYW1lc3BhY2UgYm9vc3QKKyAgICB7CisgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KKyAgICAgICAgY2xhc3MgdmFsdWVfZmFjdG9yeTsKKyAgICB9CisKK1t2YXJpYWJsZWxpc3QgTm90YXRpb24KKyAgICBbW2BUYF0gICAgICAgICBbYW4gYXJiaXRyYXJ5IHR5cGUgd2l0aCBhdCBsZWFzdCBvbmUgcHVibGljIGNvbnN0cnVjdG9yXV0KKyAgICBbW2BhMGAuLi5gYU5gXSBbYXJndW1lbnQgTFZhbHVlcyB0byBhIGNvbnN0cnVjdG9yIG9mIGBUYF1dCisgICAgW1tgRmBdICAgICAgICAgW3RoZSB0eXBlIGB2YWx1ZV9mYWN0b3J5PEY+YF1dCisgICAgW1tgZmBdICAgICAgICAgW2FuIGluc3RhbmNlIG9iamVjdCBvZiBgRmBdXQorXQorCitbaGVhZGluZyBFeHByZXNzaW9uIFNlbWFudGljc10KKworW3RhYmxlCisgICAgW1tFeHByZXNzaW9uXSAgICAgICBbU2VtYW50aWNzXV0KKyAgICBbW2BGKClgXSAgICAgICAgICAgIFtjcmVhdGVzIGFuIG9iamVjdCBvZiB0eXBlIGBGYC5dXQorICAgIFtbYEYoZilgXSAgICAgICAgICAgW2NyZWF0ZXMgYW4gb2JqZWN0IG9mIHR5cGUgYEZgLl1dCisgICAgW1tgZihhMGAuLi5gYU4pYF0gICBbcmV0dXJucyBgVChhMGAuLi5gYU4pYC5dXQorICAgIFtbYEY6OnJlc3VsdF90eXBlYF0gW2lzIHRoZSB0eXBlIGBUYC5dXQorXQorCitbaGVhZGluZyBMaW1pdHNdCisKK1RoZSBtYWNybyBCT09TVF9GVU5DVElPTkFMX1ZBTFVFX0ZBQ1RPUllfTUFYX0FSSVRZIGNhbiBiZSBkZWZpbmVkIHRvIHNldCB0aGUKK21heGltdW0gYXJpdHkuIEl0IGRlZmF1bHRzIHRvIDEwLgorCitbZW5kc2VjdF0KKworCitbc2VjdGlvbiBmYWN0b3J5XQorCitbaGVhZGluZyBEZXNjcmlwdGlvbl0KKworRnVuY3Rpb24gb2JqZWN0IHRlbXBsYXRlIHRoYXQgZHluYW1pY2FsbHkgY29uc3RydWN0cyBhIHBvaW50ZWUgb2JqZWN0IGZvcgordGhlIHR5cGUgb2YgcG9pbnRlciBnaXZlbiBhcyB0ZW1wbGF0ZSBhcmd1bWVudC4gU21hcnQgcG9pbnRlcnMgbWF5IGJlIHVzZWQKK2ZvciB0aGUgdGVtcGxhdGUgYXJndW1lbnQsIGdpdmVuIHRoYXQgYGJvb3N0Ojpwb2ludGVlPFBvaW50ZXI+Ojp0eXBlYCB5aWVsZHMKK3RoZSBwb2ludGVlIHR5cGUuCisKK0lmIGFuIF9fYWxsb2NhdG9yX18gaXMgZ2l2ZW4sIGl0IGlzIHVzZWQgZm9yIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCB0aGUgCitwbGFjZW1lbnQgZm9ybSBvZiB0aGUgYG5ld2Agb3BlcmF0b3IgaXMgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIG9iamVjdC4KK0EgZnVuY3Rpb24gb2JqZWN0IHRoYXQgY2FsbHMgdGhlIGRlc3RydWN0b3IgYW5kIGRlYWxsb2NhdGVzIHRoZSBtZW1vcnkKK3dpdGggYSBjb3B5IG9mIHRoZSBBbGxvY2F0b3IgaXMgdXNlZCBmb3IgdGhlIHNlY29uZCBjb25zdHJ1Y3RvciBhcmd1bWVudAorb2YgYFBvaW50ZXJgICh0aHVzIGl0IG11c3QgYmUgYSBfX3NtYXJ0X3BvaW50ZXJfXyB0aGF0IHByb3ZpZGVzIGEgc3VpdGFibGUgCitjb25zdHJ1Y3Rvciwgc3VjaCBhcyBfX2Jvb3N0X19zaGFyZWRfcHRyX18pLgorCitJZiBhIHRoaXJkIHRlbXBsYXRlIGFyZ3VtZW50IGlzIGBmYWN0b3J5X3Bhc3Nlc19hbGxvY190b19zbWFydF9wb2ludGVyYCwKK3RoZSBhbGxvY2F0b3IgaXRzZWxmIGlzIHVzZWQgZm9yIHRoZSB0aGlyZCBjb25zdHJ1Y3RvciBhcmd1bWVudCBvZiBgUG9pbnRlcmAKKyhfX2Jvb3N0X19zaGFyZWRfcHRyX18gdGhlbiB1c2VzIHRoZSBhbGxvY2F0b3IgdG8gbWFuYWdlIHRoZSBtZW1vcnkgb2YgaXRzCitzZXBhcmF0ZWx5IGFsbG9jYXRlZCByZWZlcmVuY2UgY291bnRlcikuCisKK1toZWFkaW5nIEhlYWRlcl0KKyAgICAjaW5jbHVkZSA8Ym9vc3QvZnVuY3Rpb25hbC9mYWN0b3J5LmhwcD4KKworW2hlYWRpbmcgU3lub3BzaXNdCisKKyAgICBuYW1lc3BhY2UgYm9vc3QKKyAgICB7CisgICAgICAgIGVudW0gZmFjdG9yeV9hbGxvY19wcm9wYWdhdGlvbgorICAgICAgICB7CisgICAgICAgICAgICBmYWN0b3J5X2FsbG9jX2Zvcl9wb2ludGVlX2FuZF9kZWxldGVyLAorICAgICAgICAgICAgZmFjdG9yeV9wYXNzZXNfYWxsb2NfdG9fc21hcnRfcG9pbnRlcgorICAgICAgICB9OworCisgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQb2ludGVyLCAKKyAgICAgICAgICAgIGNsYXNzIEFsbG9jYXRvciA9IGJvb3N0Ojpub25lX3QsCisgICAgICAgICAgICBmYWN0b3J5X2FsbG9jX3Byb3BhZ2F0aW9uIEFsbG9jUHJvcCA9CisgICAgICAgICAgICAgICAgZmFjdG9yeV9hbGxvY19mb3JfcG9pbnRlZV9hbmRfZGVsZXRlciA+CisgICAgICAgIGNsYXNzIGZhY3Rvcnk7CisgICAgfQorCitbdmFyaWFibGVsaXN0IE5vdGF0aW9uCisgICAgW1tgVGBdICAgICAgICAgW2FuIGFyYml0cmFyeSB0eXBlIHdpdGggYXQgbGVhc3Qgb25lIHB1YmxpYyBjb25zdHJ1Y3Rvcl1dCisgICAgW1tgUGBdICAgICAgICAgW3BvaW50ZXIgb3Igc21hcnQgcG9pbnRlciB0byBgVGBdXQorICAgIFtbYGEwYC4uLmBhTmBdIFthcmd1bWVudCBMVmFsdWVzIHRvIGEgY29uc3RydWN0b3Igb2YgYFRgXV0KKyAgICBbW2BGYF0gICAgICAgICBbdGhlIHR5cGUgYGZhY3Rvcnk8UD5gXV0KKyAgICBbW2BmYF0gICAgICAgICBbYW4gaW5zdGFuY2Ugb2JqZWN0IG9mIGBGYF1dCitdCisKK1toZWFkaW5nIEV4cHJlc3Npb24gU2VtYW50aWNzXQorCitbdGFibGUKKyAgICBbW0V4cHJlc3Npb25dICAgICAgIFtTZW1hbnRpY3NdXQorICAgIFtbYEYoKWBdICAgICAgICAgICAgW2NyZWF0ZXMgYW4gb2JqZWN0IG9mIHR5cGUgYEZgLl1dCisgICAgW1tgRihmKWBdICAgICAgICAgICBbY3JlYXRlcyBhbiBvYmplY3Qgb2YgdHlwZSBgRmAuXV0KKyAgICBbW2BmKGEwYC4uLmBhTilgXSAgIFtkeW5hbWljYWxseSBjcmVhdGVzIGFuIG9iamVjdCBvZiB0eXBlIGBUYCB1c2luZyAKKyAgICAgICAgYGEwYC4uLmBhTmAgYXMgYXJndW1lbnRzIGZvciB0aGUgY29uc3RydWN0b3IgaW52b2NhdGlvbi5dXQorICAgIFtbYEY6OnJlc3VsdF90eXBlYF0gW2lzIHRoZSB0eXBlIGBQYCB3aXRoIHRvcC1sZXZlbCBjdi1xdWFsaWZpZXJzIHJlbW92ZWQuXV0KK10KKworW2hlYWRpbmcgTGltaXRzXQorCitUaGUgbWFjcm8gQk9PU1RfRlVOQ1RJT05BTF9GQUNUT1JZX01BWF9BUklUWSBjYW4gYmUgZGVmaW5lZCB0byBzZXQgdGhlCittYXhpbXVtIGFyaXR5LiBJdCBkZWZhdWx0cyB0byAxMC4KKworW2VuZHNlY3RdCisKK1tlbmRzZWN0XQorCitbc2VjdGlvbiBBY2tub3dsZWRnZW1lbnRzXQorCitFcmljIE5pZWJsZXIgcmVxdWVzdGVkIGEgZnVuY3Rpb24gdG8gaW52b2tlIGEgdHlwZSdzIGNvbnN0cnVjdG9yICh3aXRoIHRoZSAKK2FyZ3VtZW50cyBzdXBwbGllZCBhcyBhIFR1cGxlKSBhcyBhIEZ1c2lvbiBmZWF0dXJlLiBUaGVzZSBGYWN0b3J5IHV0aWxpdGllcyBhcmUKK2EgZmFjdG9yZWQtb3V0IGdlbmVyYWxpemF0aW9uIG9mIHRoaXMgaWRlYS4KKworRGF2ZSBBYnJhaGFtcyBzdWdnZXN0ZWQgU21hcnQgUG9pbnRlciBzdXBwb3J0IGZvciBleGNlcHRpb24gc2FmZXR5LCBwcm92aWRpbmcKK3VzZWZ1bCBoaW50cyBmb3IgdGhlIGltcGxlbWVudGF0aW9uLgorCitKb2VsIGRlIEd1em1hbidzIGRvY3VtZW50YXRpb24gc3R5bGUgd2FzIGNvcGllZCBmcm9tIEZ1c2lvbi4KKworRnVydGhlciwgSSB3YW50IHRvIHRoYW5rIFBldGVyIERpbW92IGZvciBzaGFyaW5nIGhpcyBpbnNpZ2h0cyBvbiBsYW5ndWFnZQorZGV0YWlscyBhbmQgdGhlaXIgZXZvbHV0aW9uLgorCitbZW5kc2VjdF0KKworW3NlY3Rpb24gUmVmZXJlbmNlc10KKworIyBbQGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVzaWduX1BhdHRlcm5zIERlc2lnbiBQYXR0ZXJuc10sCisgIEdhbW1hIGV0IGFsLiAtIEFkZGlzb24gV2VzbGV5IFB1Ymxpc2hpbmcsIDE5OTUKKworIyBbQGh0dHA6Ly93d3cuc2dpLmNvbS90ZWNoL3N0bC8gU3RhbmRhcmQgVGVtcGxhdGUgTGlicmFyeSBQcm9ncmFtbWVyJ3MgR3VpZGVdLCAKKyAgSGV3bGV0dC1QYWNrYXJkIENvbXBhbnksIDE5OTQKKworIyBbQGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvYmluZC9iaW5kLmh0bWwgQm9vc3QuQmluZF0sIAorICBQZXRlciBEaW1vdiwgMjAwMS0yMDA1CisKKyMgW0BodHRwOi8vd3d3LmJvb3N0Lm9yZy9kb2MvaHRtbC9mdW5jdGlvbi5odG1sIEJvb3N0LkZ1bmN0aW9uXSwKKyAgRG91Z2xhcyBHcmVnb3IsIDIwMDEtMjAwNAorCitbZW5kc2VjdF0KKworCmRpZmYgLS1naXQgYS9saWJzL2Z1bmN0aW9uYWwvZmFjdG9yeS9kb2MvaHRtbC9pbmRleC5odG1sIGIvbGlicy9mdW5jdGlvbmFsL2ZhY3RvcnkvZG9jL2h0bWwvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTMxNjI5Ci0tLSAvZGV2L251bGwKKysrIGIvbGlicy9mdW5jdGlvbmFsL2ZhY3RvcnkvZG9jL2h0bWwvaW5kZXguaHRtbApAQCAtMCwwICsxLDYyMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVTLUFTQ0lJIj4KKzx0aXRsZT5DaGFwdGVyJiMxNjA7MS4mIzE2MDtCb29zdC5GdW5jdGlvbmFsL0ZhY3RvcnkgMS4wPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vLi4vZG9jL3NyYy9ib29zdGJvb2suY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iQ2hhcHRlciYjMTYwOzEuJiMxNjA7Qm9vc3QuRnVuY3Rpb25hbC9GYWN0b3J5IDEuMCI+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Cis8dGFibGUgY2VsbHBhZGRpbmc9IjIiIHdpZHRoPSIxMDAlIj48dHI+Cis8dGQgdmFsaWduPSJ0b3AiPjxpbWcgYWx0PSJCb29zdCBDKysgTGlicmFyaWVzIiB3aWR0aD0iMjc3IiBoZWlnaHQ9Ijg2IiBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Jvb3N0LnBuZyI+PC90ZD4KKzx0ZCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sIj5Ib21lPC9hPjwvdGQ+Cis8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iLi4vLi4vLi4vLi4vbGlicmFyaWVzLmh0bSI+TGlicmFyaWVzPC9hPjwvdGQ+Cis8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cDovL3d3dy5ib29zdC5vcmcvdXNlcnMvcGVvcGxlLmh0bWwiPlBlb3BsZTwvYT48L3RkPgorPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuYm9vc3Qub3JnL3VzZXJzL2ZhcS5odG1sIj5GQVE8L2E+PC90ZD4KKzx0ZCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSIuLi8uLi8uLi8uLi8uLi9tb3JlL2luZGV4Lmh0bSI+TW9yZTwvYT48L3RkPgorPC90cj48L3RhYmxlPgorPGhyPgorPGRpdiBjbGFzcz0ic3Bpcml0LW5hdiI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJjaGFwdGVyIj4KKzxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj4KKzxkaXY+PGgyIGNsYXNzPSJ0aXRsZSI+Cis8YSBuYW1lPSJib29zdF9mdW5jdGlvbmFsX2ZhY3RvcnkiPjwvYT5DaGFwdGVyJiMxNjA7MS4mIzE2MDtCb29zdC5GdW5jdGlvbmFsL0ZhY3RvcnkgMS4wPC9oMj48L2Rpdj4KKzxkaXY+PGRpdiBjbGFzcz0iYXV0aG9yIj48aDMgY2xhc3M9ImF1dGhvciI+Cis8c3BhbiBjbGFzcz0iZmlyc3RuYW1lIj5Ub2JpYXM8L3NwYW4+IDxzcGFuIGNsYXNzPSJzdXJuYW1lIj5TY2h3aW5nZXI8L3NwYW4+Cis8L2gzPjwvZGl2PjwvZGl2PgorPGRpdj48cCBjbGFzcz0iY29weXJpZ2h0Ij5Db3B5cmlnaHQgJiMxNjk7IDIwMDcsIDIwMDggVG9iaWFzIFNjaHdpbmdlcjwvcD48L2Rpdj4KKzxkaXY+PGRpdiBjbGFzcz0ibGVnYWxub3RpY2UiPgorPGEgbmFtZT0iYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LmxlZ2FsIj48L2E+PHA+CisgICAgICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKKyAgICAgICAgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQiIHRhcmdldD0iX3RvcCI+aHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0PC9hPikKKyAgICAgIDwvcD4KKzwvZGl2PjwvZGl2PgorPC9kaXY+PC9kaXY+Cis8ZGl2IGNsYXNzPSJ0b2MiPgorPHA+PGI+VGFibGUgb2YgQ29udGVudHM8L2I+PC9wPgorPGRsIGNsYXNzPSJ0b2MiPgorPGR0PjxzcGFuIGNsYXNzPSJzZWN0aW9uIj48YSBocmVmPSJpbmRleC5odG1sI2Jvb3N0X2Z1bmN0aW9uYWxfZmFjdG9yeS5icmllZl9kZXNjcmlwdGlvbiI+QnJpZWYgRGVzY3JpcHRpb248L2E+PC9zcGFuPjwvZHQ+Cis8ZHQ+PHNwYW4gY2xhc3M9InNlY3Rpb24iPjxhIGhyZWY9ImluZGV4Lmh0bWwjYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LmJhY2tncm91bmQiPkJhY2tncm91bmQ8L2E+PC9zcGFuPjwvZHQ+Cis8ZHQ+PHNwYW4gY2xhc3M9InNlY3Rpb24iPjxhIGhyZWY9ImluZGV4Lmh0bWwjYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LnJlZmVyZW5jZSI+UmVmZXJlbmNlPC9hPjwvc3Bhbj48L2R0PgorPGR0PjxzcGFuIGNsYXNzPSJzZWN0aW9uIj48YSBocmVmPSJpbmRleC5odG1sI2Jvb3N0X2Z1bmN0aW9uYWxfZmFjdG9yeS5hY2tub3dsZWRnZW1lbnRzIj5BY2tub3dsZWRnZW1lbnRzPC9hPjwvc3Bhbj48L2R0PgorPGR0PjxzcGFuIGNsYXNzPSJzZWN0aW9uIj48YSBocmVmPSJpbmRleC5odG1sI2Jvb3N0X2Z1bmN0aW9uYWxfZmFjdG9yeS5yZWZlcmVuY2VzIj5SZWZlcmVuY2VzPC9hPjwvc3Bhbj48L2R0PgorPC9kbD4KKzwvZGl2PgorPGRpdiBjbGFzcz0ic2VjdGlvbiI+Cis8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgorPGEgbmFtZT0iYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LmJyaWVmX2Rlc2NyaXB0aW9uIj48L2E+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImluZGV4Lmh0bWwjYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LmJyaWVmX2Rlc2NyaXB0aW9uIiB0aXRsZT0iQnJpZWYgRGVzY3JpcHRpb24iPkJyaWVmIERlc2NyaXB0aW9uPC9hPgorPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KKzxwPgorICAgICAgVGhlIHRlbXBsYXRlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmJvb3N0PC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj46Ojwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+ZmFjdG9yeTwvc3Bhbj48L2NvZGU+IGxldHMgeW91IGVuY2Fwc3VsYXRlIGEgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0ia2V5d29yZCI+bmV3PC9zcGFuPjwvY29kZT4gZXhwcmVzc2lvbiBhcyBhIGZ1bmN0aW9uIG9iamVjdCwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Ym9vc3Q8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPjo6PC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj52YWx1ZV9mYWN0b3J5PC9zcGFuPjwvY29kZT4KKyAgICAgIGVuY2Fwc3VsYXRlcyBhIGNvbnN0cnVjdG9yIGludm9jYXRpb24gd2l0aG91dCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxzcGFuIGNsYXNzPSJrZXl3b3JkIj5uZXc8L3NwYW4+PC9jb2RlPi4KKyAgICA8L3A+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Ym9vc3Q8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPjo6PC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5mYWN0b3J5PC9zcGFuPjwvY29kZT48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Jmx0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+VDwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+KiZndDsoKSg8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmFyZzE8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiw8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmFyZzI8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiw8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmFyZzM8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPik8L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gc2FtZSBhcyBuZXcgVChhcmcxLGFyZzIsYXJnMyk8L3NwYW4+CisKKzxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmJvb3N0PC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj46Ojwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+dmFsdWVfZmFjdG9yeTwvc3Bhbj48L2NvZGU+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiZsdDs8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPlQ8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiZndDsoKSg8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmFyZzE8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiw8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmFyZzI8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiw8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmFyZzM8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPik8L3NwYW4+Cis8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gc2FtZSBhcyBUKGFyZzEsYXJnMixhcmczKTwvc3Bhbj4KKzwvcHJlPgorPHA+CisgICAgICBGb3IgdGVjaG5pY2FsIHJlYXNvbnMgdGhlIGFyZ3VtZW50cyB0byB0aGUgZnVuY3Rpb24gb2JqZWN0cyBoYXZlIHRvIGJlIExWYWx1ZXMuCisgICAgICBBIGZhY3RvcnkgdGhhdCBhbHNvIGFjY2VwdHMgUlZhbHVlcyBjYW4gYmUgY29tcG9zZWQgdXNpbmcgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvZnVuY3Rpb25hbC9mb3J3YXJkL2RvYy9pbmRleC5odG1sIiB0YXJnZXQ9Il90b3AiPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmJvb3N0PC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj46Ojwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Zm9yd2FyZF9hZGFwdGVyPC9zcGFuPjwvY29kZT48L2E+CisgICAgICBvciA8YSBocmVmPSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2JpbmQvYmluZC5odG1sIiB0YXJnZXQ9Il90b3AiPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmJvb3N0PC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj46Ojwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YmluZDwvc3Bhbj48L2NvZGU+PC9hPi4KKyAgICA8L3A+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InNlY3Rpb24iPgorPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KKzxhIG5hbWU9ImJvb3N0X2Z1bmN0aW9uYWxfZmFjdG9yeS5iYWNrZ3JvdW5kIj48L2E+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImluZGV4Lmh0bWwjYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LmJhY2tncm91bmQiIHRpdGxlPSJCYWNrZ3JvdW5kIj5CYWNrZ3JvdW5kPC9hPgorPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KKzxwPgorICAgICAgSW4gdHJhZGl0aW9uYWwgT2JqZWN0IE9yaWVudGVkIFByb2dyYW1taW5nIGEgRmFjdG9yeSBpcyBhbiBvYmplY3QgaW1wbGVtZW50aW5nCisgICAgICBhbiBpbnRlcmZhY2Ugb2Ygb25lIG9yIG1vcmUgbWV0aG9kcyB0aGF0IGNvbnN0cnVjdCBvYmplY3RzIGNvbmZvcm1pbmcgdG8ga25vd24KKyAgICAgIGludGVyZmFjZXMuCisgICAgPC9wPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBhc3N1bWluZyBhX2NvbmNyZXRlX2NsYXNzIGFuZCBhbm90aGVyX2NvbmNyZXRlX2NsYXNzIGFyZSBkZXJpdmVkPC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIGZyb20gYW5fYWJzdHJhY3RfY2xhc3M8L3NwYW4+CisKKzxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzczwvc3Bhbj4gPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmFfZmFjdG9yeTwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJzcGVjaWFsIj57PC9zcGFuPgorICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj46PC9zcGFuPgorICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YW5fYWJzdHJhY3RfY2xhc3M8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPio8L3NwYW4+IDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5jcmVhdGU8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPigpPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJzcGVjaWFsIj49PC9zcGFuPiA8c3BhbiBjbGFzcz0ibnVtYmVyIj4wPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj47PC9zcGFuPgorICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ic3BlY2lhbCI+fjwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YV9mYWN0b3J5PC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4oKTwvc3Bhbj4gPHNwYW4gY2xhc3M9InNwZWNpYWwiPns8L3NwYW4+IDxzcGFuIGNsYXNzPSJzcGVjaWFsIj59PC9zcGFuPgorPHNwYW4gY2xhc3M9InNwZWNpYWwiPn07PC9zcGFuPgorCis8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3M8L3NwYW4+IDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5hX2NvbmNyZXRlX2ZhY3Rvcnk8L3NwYW4+IDxzcGFuIGNsYXNzPSJzcGVjaWFsIj46PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPiA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YV9mYWN0b3J5PC9zcGFuPgorPHNwYW4gY2xhc3M9InNwZWNpYWwiPns8L3NwYW4+CisgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPjo8L3NwYW4+CisgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5hbl9hYnN0cmFjdF9jbGFzczwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Kjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmNyZWF0ZTwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+KCk8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4KKyAgICA8c3BhbiBjbGFzcz0ic3BlY2lhbCI+ezwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnJldHVybjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPm5ldzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmFfY29uY3JldGVfY2xhc3M8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPigpOzwvc3Bhbj4KKyAgICA8c3BhbiBjbGFzcz0ic3BlY2lhbCI+fTwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJzcGVjaWFsIj59Ozwvc3Bhbj4KKworPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzPC9zcGFuPiA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YW5vdGhlcl9jb25jcmV0ZV9mYWN0b3J5PC9zcGFuPiA8c3BhbiBjbGFzcz0ic3BlY2lhbCI+Ojwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmFfZmFjdG9yeTwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJzcGVjaWFsIj57PC9zcGFuPgorICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj46PC9zcGFuPgorICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YW5fYWJzdHJhY3RfY2xhc3M8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPio8L3NwYW4+IDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5jcmVhdGU8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPigpPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+CisgICAgPHNwYW4gY2xhc3M9InNwZWNpYWwiPns8L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5yZXR1cm48L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5uZXc8L3NwYW4+IDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5hbm90aGVyX2NvbmNyZXRlX2NsYXNzPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4oKTs8L3NwYW4+CisgICAgPHNwYW4gY2xhc3M9InNwZWNpYWwiPn08L3NwYW4+Cis8c3BhbiBjbGFzcz0ic3BlY2lhbCI+fTs8L3NwYW4+CisKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBbLi4uXTwvc3Bhbj4KKworPHNwYW4gY2xhc3M9ImtleXdvcmQiPmludDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPm1haW48L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPigpPC9zcGFuPgorPHNwYW4gY2xhc3M9InNwZWNpYWwiPns8L3NwYW4+CisgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9wdHJfY29udGFpbmVyL2RvYy9wdHJfbWFwLmh0bWwiIHRhcmdldD0iX3RvcCI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Ym9vc3Q8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPjo6PC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5wdHJfbWFwPC9zcGFuPjwvY29kZT48L2E+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiZsdDs8L3NwYW4+PGEgaHJlZj0iaHR0cDovL3d3dy5zZ2kuY29tL3RlY2gvc3RsL3N0cmluZy5odG1sIiB0YXJnZXQ9Il90b3AiPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPnN0ZDwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Ojo8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPnN0cmluZzwvc3Bhbj48L2NvZGU+PC9hPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4sPC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5hX2ZhY3Rvcnk8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiZndDs8L3NwYW4+IDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5mYWN0b3JpZXM8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPjs8L3NwYW4+CisKKyAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gWy4uLl08L3NwYW4+CisKKyAgICA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+ZmFjdG9yaWVzPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4uPC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5pbnNlcnQ8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPig8L3NwYW4+PHNwYW4gY2xhc3M9InN0cmluZyI+ImFfbmFtZSI8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiw8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPnN0ZDwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Ojo8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmF1dG9fcHRyPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4mbHQ7PC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5hX2ZhY3Rvcnk8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiZndDsoPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+bmV3PC9zcGFuPiA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YV9jb25jcmV0ZV9mYWN0b3J5PC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4pKTs8L3NwYW4+CisgICAgPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmZhY3Rvcmllczwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Ljwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+aW5zZXJ0PC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4oPC9zcGFuPjxzcGFuIGNsYXNzPSJzdHJpbmciPiJhbm90aGVyX25hbWUiPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4sPC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5zdGQ8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPjo6PC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5hdXRvX3B0cjwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Jmx0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YV9mYWN0b3J5PC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4mZ3Q7KDwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPm5ldzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmFub3RoZXJfY29uY3JldGVfZmFjdG9yeTwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+KSk7PC9zcGFuPgorCisgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFsuLi5dPC9zcGFuPgorCisgICAgPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPnN0ZDwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Ojo8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmF1dG9fcHRyPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4mbHQ7PC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5hbl9hYnN0cmFjdF9jbGFzczwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Jmd0Ozwvc3Bhbj4gPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPng8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPig8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmZhY3Rvcmllczwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Ljwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YXQ8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPig8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPnNvbWVfbmFtZTwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+KS48L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmNyZWF0ZTwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+KCkpOzwvc3Bhbj4KKworICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBbLi4uXTwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJzcGVjaWFsIj59PC9zcGFuPgorPC9wcmU+Cis8cD4KKyAgICAgIFRoaXMgYXBwcm9hY2ggaGFzIHNldmVyYWwgZHJhd2JhY2tzLiBUaGUgbW9zdCBvYnZpb3VzIG9uZSBpcyB0aGF0IHRoZXJlIGlzCisgICAgICBsb3RzIG9mIGJvaWxlcnBsYXRlIGNvZGUuIEluIG90aGVyIHdvcmRzIHRoZXJlIGlzIHRvbyBtdWNoIGNvZGUgdG8gZXhwcmVzcworICAgICAgYSByYXRoZXIgc2ltcGxlIGludGVudGlvbi4gV2UgY291bGQgdXNlIHRlbXBsYXRlcyB0byBnZXQgcmlkIG9mIHNvbWUgb2YgaXQKKyAgICAgIGJ1dCB0aGUgYXBwcm9hY2ggcmVtYWlucyBpbmZsZXhpYmxlOgorICAgIDwvcD4KKzxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIGNsYXNzPSJpdGVtaXplZGxpc3QiIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2M7ICI+Cis8bGkgY2xhc3M9Imxpc3RpdGVtIj4KKyAgICAgICAgICBXZSBtYXkgd2FudCBhIGZhY3RvcnkgdGhhdCB0YWtlcyBzb21lIGFyZ3VtZW50cyB0aGF0IGFyZSBmb3J3YXJkZWQgdG8gdGhlCisgICAgICAgICAgY29uc3RydWN0b3IsCisgICAgICAgIDwvbGk+Cis8bGkgY2xhc3M9Imxpc3RpdGVtIj4KKyAgICAgICAgICB3ZSB3aWxsIHByb2JhYmx5IHdhbnQgdG8gdXNlIHNtYXJ0IHBvaW50ZXJzLAorICAgICAgICA8L2xpPgorPGxpIGNsYXNzPSJsaXN0aXRlbSI+CisgICAgICAgICAgd2UgbWF5IHdhbnQgc2V2ZXJhbCBtZW1iZXIgZnVuY3Rpb25zIHRvIGNyZWF0ZSBkaWZmZXJlbnQga2luZHMgb2Ygb2JqZWN0cywKKyAgICAgICAgPC9saT4KKzxsaSBjbGFzcz0ibGlzdGl0ZW0iPgorICAgICAgICAgIHdlIG1pZ2h0IG5vdCBuZWNlc3NhcmlseSBuZWVkIGEgcG9seW1vcnBoaWMgYmFzZSBjbGFzcyBmb3IgdGhlIG9iamVjdHMsCisgICAgICAgIDwvbGk+Cis8bGkgY2xhc3M9Imxpc3RpdGVtIj4KKyAgICAgICAgICBhcyB3ZSB3aWxsIHNlZSwgd2UgZG8gbm90IG5lZWQgYSBmYWN0b3J5IGJhc2UgY2xhc3MgYXQgYWxsLAorICAgICAgICA8L2xpPgorPGxpIGNsYXNzPSJsaXN0aXRlbSI+CisgICAgICAgICAgd2UgbWlnaHQgd2FudCB0byBqdXN0IGNhbGwgdGhlIGNvbnN0cnVjdG9yIC0gd2l0aG91dCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxzcGFuIGNsYXNzPSJrZXl3b3JkIj5uZXc8L3NwYW4+PC9jb2RlPgorICAgICAgICAgIHRvIGNyZWF0ZSBhbiBvYmplY3Qgb24gdGhlIHN0YWNrLCBhbmQKKyAgICAgICAgPC9saT4KKzxsaSBjbGFzcz0ibGlzdGl0ZW0iPgorICAgICAgICAgIGZpbmFsbHkgd2UgbWlnaHQgd2FudCB0byB1c2UgY3VzdG9taXplZCBtZW1vcnkgbWFuYWdlbWVudC4KKyAgICAgICAgPC9saT4KKzwvdWw+PC9kaXY+Cis8cD4KKyAgICAgIEV4cGVyaWVuY2UgaGFzIHNob3duIHRoYXQgdXNpbmcgZnVuY3Rpb24gb2JqZWN0cyBhbmQgZ2VuZXJpYyBCb29zdCBjb21wb25lbnRzCisgICAgICBmb3IgdGhlaXIgY29tcG9zaXRpb24sIERlc2lnbiBQYXR0ZXJucyB0aGF0IGRlc2NyaWJlIGNhbGxiYWNrIG1lY2hhbmlzbXMgKHR5cGljYWxseQorICAgICAgcmVxdWlyaW5nIGEgaGlnaCBwZXJjZW50YWdlIG9mIGJvaWxlcnBsYXRlIGNvZGUgd2l0aCBwdXJlIE9iamVjdCBPcmllbnRlZCBtZXRob2RvbG9neSkKKyAgICAgIGJlY29tZSBpbXBsZW1lbnRhYmxlIHdpdGgganVzdCBmZXcgY29kZSBsaW5lcyBhbmQgd2l0aG91dCBleHRyYSBjbGFzc2VzLgorICAgIDwvcD4KKzxwPgorICAgICAgRmFjdG9yaWVzIGFyZSBjYWxsYmFjayBtZWNoYW5pc21zIGZvciBjb25zdHJ1Y3RvcnMsIHNvIHdlIHByb3ZpZGUgdHdvIGNsYXNzCisgICAgICB0ZW1wbGF0ZXMsIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmJvb3N0PC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj46Ojwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+dmFsdWVfZmFjdG9yeTwvc3Bhbj48L2NvZGU+IGFuZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5ib29zdDwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Ojo8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmZhY3Rvcnk8L3NwYW4+PC9jb2RlPiwKKyAgICAgIHRoYXQgZW5jYXBzdWxhdGUgb2JqZWN0IGNvbnN0cnVjdGlvbiB2aWEgZGlyZWN0IGFwcGxpY2F0aW9uIG9mIHRoZSBjb25zdHJ1Y3RvcgorICAgICAgYW5kIHRoZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxzcGFuIGNsYXNzPSJrZXl3b3JkIj5uZXc8L3NwYW4+PC9jb2RlPiBvcGVyYXRvciwgcmVzcGVjdGl2ZWx5LgorICAgIDwvcD4KKzxwPgorICAgICAgV2UgbGV0IHRoZSBmdW5jdGlvbiBvYmplY3RzIGZvcndhcmQgdGhlaXIgYXJndW1lbnRzIHRvIHRoZSBjb25zdHJ1Y3Rpb24gZXhwcmVzc2lvbnMKKyAgICAgIHRoZXkgZW5jYXBzdWxhdGUuIE92ZXIgdGhpcyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5ib29zdDwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Ojo8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmZhY3Rvcnk8L3NwYW4+PC9jb2RlPgorICAgICAgb3B0aW9uYWxseSBhbGxvd3MgdGhlIHVzZSBvZiBzbWFydCBwb2ludGVycyBhbmQgPGEgaHJlZj0iaHR0cDovL3d3dy5zZ2kuY29tL3RlY2gvc3RsL2NvbmNlcHRzL2FsbG9jYXRvci5odG1sIiB0YXJnZXQ9Il90b3AiPkFsbG9jYXRvcnM8L2E+LgorICAgIDwvcD4KKzxwPgorICAgICAgQ29tcGlsZS10aW1lIHBvbHltb3JwaGlzbSBjYW4gYmUgdXNlZCB3aGVyZSBhcHByb3ByaWF0ZSwKKyAgICA8L3A+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9ImtleXdvcmQiPnRlbXBsYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4mbHQ7PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3M8L3NwYW4+IDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5UPC9zcGFuPiA8c3BhbiBjbGFzcz0ic3BlY2lhbCI+Jmd0Ozwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJrZXl3b3JkIj52b2lkPC9zcGFuPiA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+ZG9fc29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4oKTwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJzcGVjaWFsIj57PC9zcGFuPgorICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBbLi4uXTwvc3Bhbj4KKyAgICA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+VDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPng8L3NwYW4+IDxzcGFuIGNsYXNzPSJzcGVjaWFsIj49PC9zcGFuPiA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+VDwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+KDwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YTwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+LDwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Yjwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+KTs8L3NwYW4+CisKKyAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gZm9yIGNvbmNlcHR1YWxseSBzaW1pbGFyIG9iamVjdHMgeCB3ZSBuZWl0aGVyIG5lZWQgdmlydHVhbDwvc3Bhbj4KKyAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gZnVuY3Rpb25zIG5vciBhIGNvbW1vbiBiYXNlIGNsYXNzIGluIHRoaXMgY29udGV4dC48L3NwYW4+CisgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFsuLi5dPC9zcGFuPgorPHNwYW4gY2xhc3M9InNwZWNpYWwiPn08L3NwYW4+Cis8L3ByZT4KKzxwPgorICAgICAgTm93LCB0byBhbGxvdyBpbmhvbW9nZW5lb3VzIHNpZ25hdHVyZXMgZm9yIHRoZSBjb25zdHJ1Y3RvcnMgb2YgdGhlIHR5cGVzIHBhc3NlZAorICAgICAgaW4gZm9yIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPlQ8L3NwYW4+PC9jb2RlPiB3ZSBjYW4gdXNlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPnZhbHVlX2ZhY3Rvcnk8L3NwYW4+PC9jb2RlPiBhbmQgPGEgaHJlZj0iaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL2JpbmQuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5ib29zdDwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Ojo8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmJpbmQ8L3NwYW4+PC9jb2RlPjwvYT4KKyAgICAgIHRvIG5vcm1hbGl6ZSBiZXR3ZWVuIHRoZW0uCisgICAgPC9wPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJrZXl3b3JkIj50ZW1wbGF0ZTwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Jmx0Ozwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzPC9zcGFuPiA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+VmFsdWVGYWN0b3J5PC9zcGFuPiA8c3BhbiBjbGFzcz0ic3BlY2lhbCI+Jmd0Ozwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJrZXl3b3JkIj52b2lkPC9zcGFuPiA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+ZG9fc29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4oPC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5WYWx1ZUZhY3Rvcnk8L3NwYW4+IDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5tYWtlX29iajwvc3Bhbj4gPHNwYW4gY2xhc3M9InNwZWNpYWwiPj08L3NwYW4+IDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5WYWx1ZUZhY3Rvcnk8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPigpKTwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJzcGVjaWFsIj57PC9zcGFuPgorICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBbLi4uXTwvc3Bhbj4KKyAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dHlwZW5hbWU8L3NwYW4+IDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5WYWx1ZUZhY3Rvcnk8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPjo6PC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5yZXN1bHRfdHlwZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPng8L3NwYW4+IDxzcGFuIGNsYXNzPSJzcGVjaWFsIj49PC9zcGFuPiA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+bWFrZV9vYmo8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPig8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmE8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiw8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmI8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPik7PC9zcGFuPgorCisgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIGZvciBjb25jZXB0dWFsbHkgc2ltaWxhciBvYmplY3RzIHggd2UgbmVpdGhlciBuZWVkIHZpcnR1YWw8L3NwYW4+CisgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIGZ1bmN0aW9ucyBub3IgYSBjb21tb24gYmFzZSBjbGFzcyBpbiB0aGlzIGNvbnRleHQuPC9zcGFuPgorICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBbLi4uXTwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJzcGVjaWFsIj59PC9zcGFuPgorCis8c3BhbiBjbGFzcz0ia2V5d29yZCI+aW50PC9zcGFuPiA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+bWFpbjwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+KCk8L3NwYW4+Cis8c3BhbiBjbGFzcz0ic3BlY2lhbCI+ezwvc3Bhbj4KKyAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gWy4uLl08L3NwYW4+CisKKyAgICA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+ZG9fc29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4oPC9zcGFuPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmJvb3N0PC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj46Ojwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+dmFsdWVfZmFjdG9yeTwvc3Bhbj48L2NvZGU+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiZsdDs8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPlg8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiZndDsoKSk7PC9zcGFuPgorICAgIDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5kb19zb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPig8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmJvb3N0PC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj46Ojwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YmluZDwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+KDwvc3Bhbj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5ib29zdDwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Ojo8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPnZhbHVlX2ZhY3Rvcnk8L3NwYW4+PC9jb2RlPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4mbHQ7PC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5ZPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4mZ3Q7KCksPC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5fMTwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+LDwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj41PC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4sPC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5fMjwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+KSk7PC9zcGFuPgorICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBjb25zdHJ1Y3QgWChhLGIpIGFuZCBZKGEsNSxiKSwgcmVzcGVjdGl2ZWx5Ljwvc3Bhbj4KKworICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBbLi4uXTwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJzcGVjaWFsIj59PC9zcGFuPgorPC9wcmU+Cis8cD4KKyAgICAgIE1heWJlIHdlIHdhbnQgb3VyIG9iamVjdHMgdG8gb3V0bGl2ZSB0aGUgZnVuY3Rpb24ncyBzY29wZSwgaW4gdGhpcyBjYXNlIHdlCisgICAgICBoYXZlIHRvIHVzZSBkeW5hbWljIGFsbG9jYXRpb247CisgICAgPC9wPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJrZXl3b3JkIj50ZW1wbGF0ZTwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Jmx0Ozwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzPC9zcGFuPiA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+RmFjdG9yeTwvc3Bhbj4gPHNwYW4gY2xhc3M9InNwZWNpYWwiPiZndDs8L3NwYW4+Cis8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+d2hhdGV2ZXI8L3NwYW4+IDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5kb19zb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPig8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPkZhY3Rvcnk8L3NwYW4+IDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5uZXdfb2JqPC9zcGFuPiA8c3BhbiBjbGFzcz0ic3BlY2lhbCI+PTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPkZhY3Rvcnk8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPigpKTwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJzcGVjaWFsIj57PC9zcGFuPgorICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50eXBlbmFtZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPkZhY3Rvcnk8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPjo6PC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5yZXN1bHRfdHlwZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPnB0cjwvc3Bhbj4gPHNwYW4gY2xhc3M9InNwZWNpYWwiPj08L3NwYW4+IDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5uZXdfb2JqPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4oPC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5hPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4sPC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5iPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4pOzwvc3Bhbj4KKworICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBhZ2Fpbiwgbm8gY29tbW9uIGJhc2UgY2xhc3Mgb3IgdmlydHVhbCBmdW5jdGlvbnMgbmVlZGVkLDwvc3Bhbj4KKyAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gd2UgY291bGQgZW5mb3JjZSBhIHBvbHltb3JwaGljIGJhc2UgYnkgd3JpdGluZyBlLmcuPC9zcGFuPgorICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyAgICBib29zdDo6c2hhcmVkX3B0ciZsdDtiYXNlJmd0Ozwvc3Bhbj4KKyAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gaW5zdGVhZCBvZjwvc3Bhbj4KKyAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gICAgdHlwZW5hbWUgRmFjdG9yeTo6cmVzdWx0X3R5cGU8L3NwYW4+CisgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIGFib3ZlLjwvc3Bhbj4KKyAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gTm90ZSB0aGF0IHdlIGFyZSBhbHNvIGZyZWUgdG8gaGF2ZSB0aGUgdHlwZSBlcmFzdXJlIGhhcHBlbiA8L3NwYW4+CisgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIHNvbWV3aGVyZSBlbHNlIChlLmcuIGluIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGlzIGZ1bmN0aW9uJ3M8L3NwYW4+CisgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIHJlc3VsdCB0eXBlKS48L3NwYW4+CisKKyAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gWy4uLl08L3NwYW4+Cis8c3BhbiBjbGFzcz0ic3BlY2lhbCI+fTwvc3Bhbj4KKworPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFsuLi4gY2FsbCBkb19zb21ldGhpbmcgbGlrZSBhYm92ZSBidXQgd2l0aCBfX2ZhY3RvcnlfXyBpbnN0ZWFkPC9zcGFuPgorPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIG9mIF9fdmFsdWVfZmFjdG9yeV9fXTwvc3Bhbj4KKzwvcHJlPgorPHA+CisgICAgICBBbHRob3VnaCB3ZSBtaWdodCBoYXZlIGNyZWF0ZWQgcG9seW1vcnBoaWMgb2JqZWN0cyBpbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwKKyAgICAgIHdlIGhhdmUgdXNlZCBjb21waWxlIHRpbWUgcG9seW1vcnBoaXNtIGZvciB0aGUgZmFjdG9yeS4gSWYgd2Ugd2FudCB0byBlcmFzZQorICAgICAgdGhlIHR5cGUgb2YgdGhlIGZhY3RvcnkgYW5kIHRodXMgYWxsb3cgcG9seW1vcnBoaXNtIGF0IHJ1biB0aW1lLCB3ZSBjYW4gdXNlCisgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9kb2MvaHRtbC9mdW5jdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPkJvb3N0LkZ1bmN0aW9uPC9hPgorICAgICAgdG8gZG8gc28uIFRoZSBmaXJzdCBleGFtcGxlIGNhbiBiZSByZXdyaXR0ZW4gYXMgZm9sbG93cy4KKyAgICA8L3A+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9ImtleXdvcmQiPnR5cGVkZWY8L3NwYW4+IDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5ib29zdDwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Ojo8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmZ1bmN0aW9uPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4mbHQ7PC9zcGFuPiA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YW5fYWJzdHJhY3RfY2xhc3M8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiooKTwvc3Bhbj4gPHNwYW4gY2xhc3M9InNwZWNpYWwiPiZndDs8L3NwYW4+IDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5hX2ZhY3Rvcnk8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPjs8L3NwYW4+CisKKzxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBbLi4uXTwvc3Bhbj4KKworPHNwYW4gY2xhc3M9ImtleXdvcmQiPmludDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPm1haW48L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPigpPC9zcGFuPgorPHNwYW4gY2xhc3M9InNwZWNpYWwiPns8L3NwYW4+CisgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5zZ2kuY29tL3RlY2gvc3RsL21hcC5odG1sIiB0YXJnZXQ9Il90b3AiPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPnN0ZDwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Ojo8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPm1hcDwvc3Bhbj48L2NvZGU+PC9hPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4mbHQ7PC9zcGFuPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2dpLmNvbS90ZWNoL3N0bC9zdHJpbmcuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5zdGQ8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPjo6PC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5zdHJpbmc8L3NwYW4+PC9jb2RlPjwvYT48c3BhbiBjbGFzcz0ic3BlY2lhbCI+LDwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YV9mYWN0b3J5PC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4mZ3Q7PC9zcGFuPiA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+ZmFjdG9yaWVzPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj47PC9zcGFuPgorCisgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFsuLi5dPC9zcGFuPgorCisgICAgPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmZhY3Rvcmllczwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Wzwvc3Bhbj48c3BhbiBjbGFzcz0ic3RyaW5nIj4iYV9uYW1lIjwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+XTwvc3Bhbj4gPHNwYW4gY2xhc3M9InNwZWNpYWwiPj08L3NwYW4+IDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmJvb3N0PC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj46Ojwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+ZmFjdG9yeTwvc3Bhbj48L2NvZGU+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiZsdDs8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmFfY29uY3JldGVfY2xhc3M8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiomZ3Q7KCk7PC9zcGFuPgorICAgIDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5mYWN0b3JpZXM8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPls8L3NwYW4+PHNwYW4gY2xhc3M9InN0cmluZyI+ImFub3RoZXJfbmFtZSI8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPl08L3NwYW4+IDxzcGFuIGNsYXNzPSJzcGVjaWFsIj49PC9zcGFuPgorICAgICAgICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5ib29zdDwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Ojo8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmZhY3Rvcnk8L3NwYW4+PC9jb2RlPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4mbHQ7PC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5hbm90aGVyX2NvbmNyZXRlX2NsYXNzPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4qJmd0OygpOzwvc3Bhbj4KKworICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBbLi4uXTwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJzcGVjaWFsIj59PC9zcGFuPgorPC9wcmU+Cis8cD4KKyAgICAgIE9mIGNvdXJzZSB3ZSBjYW4ganVzdCBhcyBlYXN5IGNyZWF0ZSBmYWN0b3JpZXMgdGhhdCB0YWtlIGFyZ3VtZW50cyBhbmQvb3IgcmV0dXJuCisgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9pbmRleC5odG1sIiB0YXJnZXQ9Il90b3AiPlNtYXJ0IFBvaW50ZXJzPC9hPi4KKyAgICA8L3A+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InNlY3Rpb24iPgorPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KKzxhIG5hbWU9ImJvb3N0X2Z1bmN0aW9uYWxfZmFjdG9yeS5yZWZlcmVuY2UiPjwvYT48YSBjbGFzcz0ibGluayIgaHJlZj0iaW5kZXguaHRtbCNib29zdF9mdW5jdGlvbmFsX2ZhY3RvcnkucmVmZXJlbmNlIiB0aXRsZT0iUmVmZXJlbmNlIj5SZWZlcmVuY2U8L2E+Cis8L2gyPjwvZGl2PjwvZGl2PjwvZGl2PgorPGRpdiBjbGFzcz0idG9jIj48ZGwgY2xhc3M9InRvYyI+Cis8ZHQ+PHNwYW4gY2xhc3M9InNlY3Rpb24iPjxhIGhyZWY9ImluZGV4Lmh0bWwjYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LnJlZmVyZW5jZS52YWx1ZV9mYWN0b3J5Ij52YWx1ZV9mYWN0b3J5PC9hPjwvc3Bhbj48L2R0PgorPGR0PjxzcGFuIGNsYXNzPSJzZWN0aW9uIj48YSBocmVmPSJpbmRleC5odG1sI2Jvb3N0X2Z1bmN0aW9uYWxfZmFjdG9yeS5yZWZlcmVuY2UuZmFjdG9yeSI+ZmFjdG9yeTwvYT48L3NwYW4+PC9kdD4KKzwvZGw+PC9kaXY+Cis8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KKzxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgorPGEgbmFtZT0iYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LnJlZmVyZW5jZS52YWx1ZV9mYWN0b3J5Ij48L2E+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImluZGV4Lmh0bWwjYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LnJlZmVyZW5jZS52YWx1ZV9mYWN0b3J5IiB0aXRsZT0idmFsdWVfZmFjdG9yeSI+dmFsdWVfZmFjdG9yeTwvYT4KKzwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+Cis8aDU+Cis8YSBuYW1lPSJib29zdF9mdW5jdGlvbmFsX2ZhY3RvcnkucmVmZXJlbmNlLnZhbHVlX2ZhY3RvcnkuaDAiPjwvYT4KKyAgICAgICAgPHNwYW4gY2xhc3M9InBocmFzZSI+PGEgbmFtZT0iYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LnJlZmVyZW5jZS52YWx1ZV9mYWN0b3J5LmRlc2NyaXB0aW9uIj48L2E+PC9zcGFuPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJpbmRleC5odG1sI2Jvb3N0X2Z1bmN0aW9uYWxfZmFjdG9yeS5yZWZlcmVuY2UudmFsdWVfZmFjdG9yeS5kZXNjcmlwdGlvbiI+RGVzY3JpcHRpb248L2E+CisgICAgICA8L2g1PgorPHA+CisgICAgICAgIEZ1bmN0aW9uIG9iamVjdCB0ZW1wbGF0ZSB0aGF0IGludm9rZXMgdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSB0eXBlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPlQ8L3NwYW4+PC9jb2RlPi4KKyAgICAgIDwvcD4KKzxoNT4KKzxhIG5hbWU9ImJvb3N0X2Z1bmN0aW9uYWxfZmFjdG9yeS5yZWZlcmVuY2UudmFsdWVfZmFjdG9yeS5oMSI+PC9hPgorICAgICAgICA8c3BhbiBjbGFzcz0icGhyYXNlIj48YSBuYW1lPSJib29zdF9mdW5jdGlvbmFsX2ZhY3RvcnkucmVmZXJlbmNlLnZhbHVlX2ZhY3RvcnkuaGVhZGVyIj48L2E+PC9zcGFuPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJpbmRleC5odG1sI2Jvb3N0X2Z1bmN0aW9uYWxfZmFjdG9yeS5yZWZlcmVuY2UudmFsdWVfZmFjdG9yeS5oZWFkZXIiPkhlYWRlcjwvYT4KKyAgICAgIDwvaDU+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2luY2x1ZGU8L3NwYW4+IDxzcGFuIGNsYXNzPSJzcGVjaWFsIj4mbHQ7PC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5ib29zdDwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Lzwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+ZnVuY3Rpb25hbDwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Lzwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+dmFsdWVfZmFjdG9yeTwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Ljwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+aHBwPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4mZ3Q7PC9zcGFuPgorPC9wcmU+Cis8aDU+Cis8YSBuYW1lPSJib29zdF9mdW5jdGlvbmFsX2ZhY3RvcnkucmVmZXJlbmNlLnZhbHVlX2ZhY3RvcnkuaDIiPjwvYT4KKyAgICAgICAgPHNwYW4gY2xhc3M9InBocmFzZSI+PGEgbmFtZT0iYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LnJlZmVyZW5jZS52YWx1ZV9mYWN0b3J5LnN5bm9wc2lzIj48L2E+PC9zcGFuPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJpbmRleC5odG1sI2Jvb3N0X2Z1bmN0aW9uYWxfZmFjdG9yeS5yZWZlcmVuY2UudmFsdWVfZmFjdG9yeS5zeW5vcHNpcyI+U3lub3BzaXM8L2E+CisgICAgICA8L2g1PgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJrZXl3b3JkIj5uYW1lc3BhY2U8L3NwYW4+IDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5ib29zdDwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJzcGVjaWFsIj57PC9zcGFuPgorICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50ZW1wbGF0ZTwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Jmx0Ozwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPnR5cGVuYW1lPC9zcGFuPiA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+VDwvc3Bhbj4gPHNwYW4gY2xhc3M9InNwZWNpYWwiPiZndDs8L3NwYW4+CisgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzPC9zcGFuPiA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+dmFsdWVfZmFjdG9yeTwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Ozwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJzcGVjaWFsIj59PC9zcGFuPgorPC9wcmU+Cis8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgorPHAgY2xhc3M9InRpdGxlIj48Yj5Ob3RhdGlvbjwvYj48L3A+Cis8ZGwgY2xhc3M9InZhcmlhYmxlbGlzdCI+Cis8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPlQ8L3NwYW4+PC9jb2RlPjwvc3Bhbj48L2R0PgorPGRkPjxwPgorICAgICAgICAgICAgICBhbiBhcmJpdHJhcnkgdHlwZSB3aXRoIGF0IGxlYXN0IG9uZSBwdWJsaWMgY29uc3RydWN0b3IKKyAgICAgICAgICAgIDwvcD48L2RkPgorPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5hMDwvc3Bhbj48L2NvZGU+Li4uPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YU48L3NwYW4+PC9jb2RlPjwvc3Bhbj48L2R0PgorPGRkPjxwPgorICAgICAgICAgICAgICBhcmd1bWVudCBMVmFsdWVzIHRvIGEgY29uc3RydWN0b3Igb2YgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+VDwvc3Bhbj48L2NvZGU+CisgICAgICAgICAgICA8L3A+PC9kZD4KKzxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Rjwvc3Bhbj48L2NvZGU+PC9zcGFuPjwvZHQ+Cis8ZGQ+PHA+CisgICAgICAgICAgICAgIHRoZSB0eXBlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPnZhbHVlX2ZhY3Rvcnk8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiZsdDs8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPkY8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiZndDs8L3NwYW4+PC9jb2RlPgorICAgICAgICAgICAgPC9wPjwvZGQ+Cis8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmY8L3NwYW4+PC9jb2RlPjwvc3Bhbj48L2R0PgorPGRkPjxwPgorICAgICAgICAgICAgICBhbiBpbnN0YW5jZSBvYmplY3Qgb2YgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Rjwvc3Bhbj48L2NvZGU+CisgICAgICAgICAgICA8L3A+PC9kZD4KKzwvZGw+Cis8L2Rpdj4KKzxoNT4KKzxhIG5hbWU9ImJvb3N0X2Z1bmN0aW9uYWxfZmFjdG9yeS5yZWZlcmVuY2UudmFsdWVfZmFjdG9yeS5oMyI+PC9hPgorICAgICAgICA8c3BhbiBjbGFzcz0icGhyYXNlIj48YSBuYW1lPSJib29zdF9mdW5jdGlvbmFsX2ZhY3RvcnkucmVmZXJlbmNlLnZhbHVlX2ZhY3RvcnkuZXhwcmVzc2lvbl9zZW1hbnRpY3MiPjwvYT48L3NwYW4+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImluZGV4Lmh0bWwjYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LnJlZmVyZW5jZS52YWx1ZV9mYWN0b3J5LmV4cHJlc3Npb25fc2VtYW50aWNzIj5FeHByZXNzaW9uCisgICAgICAgIFNlbWFudGljczwvYT4KKyAgICAgIDwvaDU+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9InRhYmxlIj4KKzxjb2xncm91cD4KKzxjb2w+Cis8Y29sPgorPC9jb2xncm91cD4KKzx0aGVhZD48dHI+Cis8dGg+CisgICAgICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgICBFeHByZXNzaW9uCisgICAgICAgICAgICAgICAgPC9wPgorICAgICAgICAgICAgICA8L3RoPgorPHRoPgorICAgICAgICAgICAgICAgIDxwPgorICAgICAgICAgICAgICAgICAgU2VtYW50aWNzCisgICAgICAgICAgICAgICAgPC9wPgorICAgICAgICAgICAgICA8L3RoPgorPC90cj48L3RoZWFkPgorPHRib2R5PgorPHRyPgorPHRkPgorICAgICAgICAgICAgICAgIDxwPgorICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Rjwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+KCk8L3NwYW4+PC9jb2RlPgorICAgICAgICAgICAgICAgIDwvcD4KKyAgICAgICAgICAgICAgPC90ZD4KKzx0ZD4KKyAgICAgICAgICAgICAgICA8cD4KKyAgICAgICAgICAgICAgICAgIGNyZWF0ZXMgYW4gb2JqZWN0IG9mIHR5cGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Rjwvc3Bhbj48L2NvZGU+LgorICAgICAgICAgICAgICAgIDwvcD4KKyAgICAgICAgICAgICAgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQ+CisgICAgICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5GPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4oPC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5mPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4pPC9zcGFuPjwvY29kZT4KKyAgICAgICAgICAgICAgICA8L3A+CisgICAgICAgICAgICAgIDwvdGQ+Cis8dGQ+CisgICAgICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgICBjcmVhdGVzIGFuIG9iamVjdCBvZiB0eXBlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPkY8L3NwYW4+PC9jb2RlPi4KKyAgICAgICAgICAgICAgICA8L3A+CisgICAgICAgICAgICAgIDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkPgorICAgICAgICAgICAgICAgIDxwPgorICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Zjwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+KDwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YTA8L3NwYW4+PC9jb2RlPi4uLjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmFOPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4pPC9zcGFuPjwvY29kZT4KKyAgICAgICAgICAgICAgICA8L3A+CisgICAgICAgICAgICAgIDwvdGQ+Cis8dGQ+CisgICAgICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgICByZXR1cm5zIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPlQ8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPig8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmEwPC9zcGFuPjwvY29kZT4uLi48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5hTjwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+KTwvc3Bhbj48L2NvZGU+LgorICAgICAgICAgICAgICAgIDwvcD4KKyAgICAgICAgICAgICAgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQ+CisgICAgICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5GPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj46Ojwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+cmVzdWx0X3R5cGU8L3NwYW4+PC9jb2RlPgorICAgICAgICAgICAgICAgIDwvcD4KKyAgICAgICAgICAgICAgPC90ZD4KKzx0ZD4KKyAgICAgICAgICAgICAgICA8cD4KKyAgICAgICAgICAgICAgICAgIGlzIHRoZSB0eXBlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPlQ8L3NwYW4+PC9jb2RlPi4KKyAgICAgICAgICAgICAgICA8L3A+CisgICAgICAgICAgICAgIDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8aDU+Cis8YSBuYW1lPSJib29zdF9mdW5jdGlvbmFsX2ZhY3RvcnkucmVmZXJlbmNlLnZhbHVlX2ZhY3RvcnkuaDQiPjwvYT4KKyAgICAgICAgPHNwYW4gY2xhc3M9InBocmFzZSI+PGEgbmFtZT0iYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LnJlZmVyZW5jZS52YWx1ZV9mYWN0b3J5LmxpbWl0cyI+PC9hPjwvc3Bhbj48YSBjbGFzcz0ibGluayIgaHJlZj0iaW5kZXguaHRtbCNib29zdF9mdW5jdGlvbmFsX2ZhY3RvcnkucmVmZXJlbmNlLnZhbHVlX2ZhY3RvcnkubGltaXRzIj5MaW1pdHM8L2E+CisgICAgICA8L2g1PgorPHA+CisgICAgICAgIFRoZSBtYWNybyBCT09TVF9GVU5DVElPTkFMX1ZBTFVFX0ZBQ1RPUllfTUFYX0FSSVRZIGNhbiBiZSBkZWZpbmVkIHRvIHNldAorICAgICAgICB0aGUgbWF4aW11bSBhcml0eS4gSXQgZGVmYXVsdHMgdG8gMTAuCisgICAgICA8L3A+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InNlY3Rpb24iPgorPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+Cis8YSBuYW1lPSJib29zdF9mdW5jdGlvbmFsX2ZhY3RvcnkucmVmZXJlbmNlLmZhY3RvcnkiPjwvYT48YSBjbGFzcz0ibGluayIgaHJlZj0iaW5kZXguaHRtbCNib29zdF9mdW5jdGlvbmFsX2ZhY3RvcnkucmVmZXJlbmNlLmZhY3RvcnkiIHRpdGxlPSJmYWN0b3J5Ij5mYWN0b3J5PC9hPgorPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KKzxoNT4KKzxhIG5hbWU9ImJvb3N0X2Z1bmN0aW9uYWxfZmFjdG9yeS5yZWZlcmVuY2UuZmFjdG9yeS5oMCI+PC9hPgorICAgICAgICA8c3BhbiBjbGFzcz0icGhyYXNlIj48YSBuYW1lPSJib29zdF9mdW5jdGlvbmFsX2ZhY3RvcnkucmVmZXJlbmNlLmZhY3RvcnkuZGVzY3JpcHRpb24iPjwvYT48L3NwYW4+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImluZGV4Lmh0bWwjYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LnJlZmVyZW5jZS5mYWN0b3J5LmRlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjwvYT4KKyAgICAgIDwvaDU+Cis8cD4KKyAgICAgICAgRnVuY3Rpb24gb2JqZWN0IHRlbXBsYXRlIHRoYXQgZHluYW1pY2FsbHkgY29uc3RydWN0cyBhIHBvaW50ZWUgb2JqZWN0IGZvcgorICAgICAgICB0aGUgdHlwZSBvZiBwb2ludGVyIGdpdmVuIGFzIHRlbXBsYXRlIGFyZ3VtZW50LiBTbWFydCBwb2ludGVycyBtYXkgYmUgdXNlZAorICAgICAgICBmb3IgdGhlIHRlbXBsYXRlIGFyZ3VtZW50LCBnaXZlbiB0aGF0IDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmJvb3N0PC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj46Ojwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+cG9pbnRlZTwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Jmx0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+UG9pbnRlcjwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Jmd0Ozo6PC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj50eXBlPC9zcGFuPjwvY29kZT4KKyAgICAgICAgeWllbGRzIHRoZSBwb2ludGVlIHR5cGUuCisgICAgICA8L3A+Cis8cD4KKyAgICAgICAgSWYgYW4gPGEgaHJlZj0iaHR0cDovL3d3dy5zZ2kuY29tL3RlY2gvc3RsL2NvbmNlcHRzL2FsbG9jYXRvci5odG1sIiB0YXJnZXQ9Il90b3AiPkFsbG9jYXRvcjwvYT4KKyAgICAgICAgaXMgZ2l2ZW4sIGl0IGlzIHVzZWQgZm9yIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCB0aGUgcGxhY2VtZW50IGZvcm0gb2YgdGhlCisgICAgICAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImtleXdvcmQiPm5ldzwvc3Bhbj48L2NvZGU+IG9wZXJhdG9yIGlzIHVzZWQgdG8gY29uc3RydWN0CisgICAgICAgIHRoZSBvYmplY3QuIEEgZnVuY3Rpb24gb2JqZWN0IHRoYXQgY2FsbHMgdGhlIGRlc3RydWN0b3IgYW5kIGRlYWxsb2NhdGVzIHRoZQorICAgICAgICBtZW1vcnkgd2l0aCBhIGNvcHkgb2YgdGhlIEFsbG9jYXRvciBpcyB1c2VkIGZvciB0aGUgc2Vjb25kIGNvbnN0cnVjdG9yIGFyZ3VtZW50CisgICAgICAgIG9mIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPlBvaW50ZXI8L3NwYW4+PC9jb2RlPiAodGh1cyBpdCBtdXN0CisgICAgICAgIGJlIGEgPGEgaHJlZj0iaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvaW5kZXguaHRtbCIgdGFyZ2V0PSJfdG9wIj5TbWFydCBQb2ludGVyPC9hPgorICAgICAgICB0aGF0IHByb3ZpZGVzIGEgc3VpdGFibGUgY29uc3RydWN0b3IsIHN1Y2ggYXMgPGEgaHJlZj0iaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvc2hhcmVkX3B0ci5odG0iIHRhcmdldD0iX3RvcCI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Ym9vc3Q8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPjo6PC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5zaGFyZWRfcHRyPC9zcGFuPjwvY29kZT48L2E+KS4KKyAgICAgIDwvcD4KKzxwPgorICAgICAgICBJZiBhIHRoaXJkIHRlbXBsYXRlIGFyZ3VtZW50IGlzIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmZhY3RvcnlfcGFzc2VzX2FsbG9jX3RvX3NtYXJ0X3BvaW50ZXI8L3NwYW4+PC9jb2RlPiwKKyAgICAgICAgdGhlIGFsbG9jYXRvciBpdHNlbGYgaXMgdXNlZCBmb3IgdGhlIHRoaXJkIGNvbnN0cnVjdG9yIGFyZ3VtZW50IG9mIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPlBvaW50ZXI8L3NwYW4+PC9jb2RlPiAoPGEgaHJlZj0iaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvc2hhcmVkX3B0ci5odG0iIHRhcmdldD0iX3RvcCI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Ym9vc3Q8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPjo6PC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5zaGFyZWRfcHRyPC9zcGFuPjwvY29kZT48L2E+IHRoZW4gdXNlcyB0aGUgYWxsb2NhdG9yCisgICAgICAgIHRvIG1hbmFnZSB0aGUgbWVtb3J5IG9mIGl0cyBzZXBhcmF0ZWx5IGFsbG9jYXRlZCByZWZlcmVuY2UgY291bnRlcikuCisgICAgICA8L3A+Cis8aDU+Cis8YSBuYW1lPSJib29zdF9mdW5jdGlvbmFsX2ZhY3RvcnkucmVmZXJlbmNlLmZhY3RvcnkuaDEiPjwvYT4KKyAgICAgICAgPHNwYW4gY2xhc3M9InBocmFzZSI+PGEgbmFtZT0iYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LnJlZmVyZW5jZS5mYWN0b3J5LmhlYWRlciI+PC9hPjwvc3Bhbj48YSBjbGFzcz0ibGluayIgaHJlZj0iaW5kZXguaHRtbCNib29zdF9mdW5jdGlvbmFsX2ZhY3RvcnkucmVmZXJlbmNlLmZhY3RvcnkuaGVhZGVyIj5IZWFkZXI8L2E+CisgICAgICA8L2g1PgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNpbmNsdWRlPC9zcGFuPiA8c3BhbiBjbGFzcz0ic3BlY2lhbCI+Jmx0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Ym9vc3Q8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPi88L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmZ1bmN0aW9uYWw8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPi88L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmZhY3Rvcnk8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPi48L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmhwcDwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Jmd0Ozwvc3Bhbj4KKzwvcHJlPgorPGg1PgorPGEgbmFtZT0iYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LnJlZmVyZW5jZS5mYWN0b3J5LmgyIj48L2E+CisgICAgICAgIDxzcGFuIGNsYXNzPSJwaHJhc2UiPjxhIG5hbWU9ImJvb3N0X2Z1bmN0aW9uYWxfZmFjdG9yeS5yZWZlcmVuY2UuZmFjdG9yeS5zeW5vcHNpcyI+PC9hPjwvc3Bhbj48YSBjbGFzcz0ibGluayIgaHJlZj0iaW5kZXguaHRtbCNib29zdF9mdW5jdGlvbmFsX2ZhY3RvcnkucmVmZXJlbmNlLmZhY3Rvcnkuc3lub3BzaXMiPlN5bm9wc2lzPC9hPgorICAgICAgPC9oNT4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0ia2V5d29yZCI+bmFtZXNwYWNlPC9zcGFuPiA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Ym9vc3Q8L3NwYW4+Cis8c3BhbiBjbGFzcz0ic3BlY2lhbCI+ezwvc3Bhbj4KKyAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ZW51bTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmZhY3RvcnlfYWxsb2NfcHJvcGFnYXRpb248L3NwYW4+CisgICAgPHNwYW4gY2xhc3M9InNwZWNpYWwiPns8L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5mYWN0b3J5X2FsbG9jX2Zvcl9wb2ludGVlX2FuZF9kZWxldGVyPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4sPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+ZmFjdG9yeV9wYXNzZXNfYWxsb2NfdG9fc21hcnRfcG9pbnRlcjwvc3Bhbj4KKyAgICA8c3BhbiBjbGFzcz0ic3BlY2lhbCI+fTs8L3NwYW4+CisKKyAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGVtcGxhdGU8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiZsdDs8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50eXBlbmFtZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPlBvaW50ZXI8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiw8L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzczwvc3Bhbj4gPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPkFsbG9jYXRvcjwvc3Bhbj4gPHNwYW4gY2xhc3M9InNwZWNpYWwiPj08L3NwYW4+IDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5ib29zdDwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+Ojo8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPm5vbmVfdDwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+LDwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmZhY3RvcnlfYWxsb2NfcHJvcGFnYXRpb248L3NwYW4+IDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5BbGxvY1Byb3A8L3NwYW4+IDxzcGFuIGNsYXNzPSJzcGVjaWFsIj49PC9zcGFuPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmZhY3RvcnlfYWxsb2NfZm9yX3BvaW50ZWVfYW5kX2RlbGV0ZXI8L3NwYW4+IDxzcGFuIGNsYXNzPSJzcGVjaWFsIj4mZ3Q7PC9zcGFuPgorICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzczwvc3Bhbj4gPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmZhY3Rvcnk8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPjs8L3NwYW4+Cis8c3BhbiBjbGFzcz0ic3BlY2lhbCI+fTwvc3Bhbj4KKzwvcHJlPgorPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KKzxwIGNsYXNzPSJ0aXRsZSI+PGI+Tm90YXRpb248L2I+PC9wPgorPGRsIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgorPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5UPC9zcGFuPjwvY29kZT48L3NwYW4+PC9kdD4KKzxkZD48cD4KKyAgICAgICAgICAgICAgYW4gYXJiaXRyYXJ5IHR5cGUgd2l0aCBhdCBsZWFzdCBvbmUgcHVibGljIGNvbnN0cnVjdG9yCisgICAgICAgICAgICA8L3A+PC9kZD4KKzxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+UDwvc3Bhbj48L2NvZGU+PC9zcGFuPjwvZHQ+Cis8ZGQ+PHA+CisgICAgICAgICAgICAgIHBvaW50ZXIgb3Igc21hcnQgcG9pbnRlciB0byA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5UPC9zcGFuPjwvY29kZT4KKyAgICAgICAgICAgIDwvcD48L2RkPgorPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5hMDwvc3Bhbj48L2NvZGU+Li4uPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YU48L3NwYW4+PC9jb2RlPjwvc3Bhbj48L2R0PgorPGRkPjxwPgorICAgICAgICAgICAgICBhcmd1bWVudCBMVmFsdWVzIHRvIGEgY29uc3RydWN0b3Igb2YgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+VDwvc3Bhbj48L2NvZGU+CisgICAgICAgICAgICA8L3A+PC9kZD4KKzxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Rjwvc3Bhbj48L2NvZGU+PC9zcGFuPjwvZHQ+Cis8ZGQ+PHA+CisgICAgICAgICAgICAgIHRoZSB0eXBlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmZhY3Rvcnk8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiZsdDs8L3NwYW4+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPlA8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPiZndDs8L3NwYW4+PC9jb2RlPgorICAgICAgICAgICAgPC9wPjwvZGQ+Cis8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmY8L3NwYW4+PC9jb2RlPjwvc3Bhbj48L2R0PgorPGRkPjxwPgorICAgICAgICAgICAgICBhbiBpbnN0YW5jZSBvYmplY3Qgb2YgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Rjwvc3Bhbj48L2NvZGU+CisgICAgICAgICAgICA8L3A+PC9kZD4KKzwvZGw+Cis8L2Rpdj4KKzxoNT4KKzxhIG5hbWU9ImJvb3N0X2Z1bmN0aW9uYWxfZmFjdG9yeS5yZWZlcmVuY2UuZmFjdG9yeS5oMyI+PC9hPgorICAgICAgICA8c3BhbiBjbGFzcz0icGhyYXNlIj48YSBuYW1lPSJib29zdF9mdW5jdGlvbmFsX2ZhY3RvcnkucmVmZXJlbmNlLmZhY3RvcnkuZXhwcmVzc2lvbl9zZW1hbnRpY3MiPjwvYT48L3NwYW4+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImluZGV4Lmh0bWwjYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LnJlZmVyZW5jZS5mYWN0b3J5LmV4cHJlc3Npb25fc2VtYW50aWNzIj5FeHByZXNzaW9uCisgICAgICAgIFNlbWFudGljczwvYT4KKyAgICAgIDwvaDU+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9InRhYmxlIj4KKzxjb2xncm91cD4KKzxjb2w+Cis8Y29sPgorPC9jb2xncm91cD4KKzx0aGVhZD48dHI+Cis8dGg+CisgICAgICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgICBFeHByZXNzaW9uCisgICAgICAgICAgICAgICAgPC9wPgorICAgICAgICAgICAgICA8L3RoPgorPHRoPgorICAgICAgICAgICAgICAgIDxwPgorICAgICAgICAgICAgICAgICAgU2VtYW50aWNzCisgICAgICAgICAgICAgICAgPC9wPgorICAgICAgICAgICAgICA8L3RoPgorPC90cj48L3RoZWFkPgorPHRib2R5PgorPHRyPgorPHRkPgorICAgICAgICAgICAgICAgIDxwPgorICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Rjwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+KCk8L3NwYW4+PC9jb2RlPgorICAgICAgICAgICAgICAgIDwvcD4KKyAgICAgICAgICAgICAgPC90ZD4KKzx0ZD4KKyAgICAgICAgICAgICAgICA8cD4KKyAgICAgICAgICAgICAgICAgIGNyZWF0ZXMgYW4gb2JqZWN0IG9mIHR5cGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Rjwvc3Bhbj48L2NvZGU+LgorICAgICAgICAgICAgICAgIDwvcD4KKyAgICAgICAgICAgICAgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQ+CisgICAgICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5GPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4oPC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5mPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4pPC9zcGFuPjwvY29kZT4KKyAgICAgICAgICAgICAgICA8L3A+CisgICAgICAgICAgICAgIDwvdGQ+Cis8dGQ+CisgICAgICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgICBjcmVhdGVzIGFuIG9iamVjdCBvZiB0eXBlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPkY8L3NwYW4+PC9jb2RlPi4KKyAgICAgICAgICAgICAgICA8L3A+CisgICAgICAgICAgICAgIDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkPgorICAgICAgICAgICAgICAgIDxwPgorICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Zjwvc3Bhbj48c3BhbiBjbGFzcz0ic3BlY2lhbCI+KDwvc3Bhbj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YTA8L3NwYW4+PC9jb2RlPi4uLjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmFOPC9zcGFuPjxzcGFuIGNsYXNzPSJzcGVjaWFsIj4pPC9zcGFuPjwvY29kZT4KKyAgICAgICAgICAgICAgICA8L3A+CisgICAgICAgICAgICAgIDwvdGQ+Cis8dGQ+CisgICAgICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgICBkeW5hbWljYWxseSBjcmVhdGVzIGFuIG9iamVjdCBvZiB0eXBlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPlQ8L3NwYW4+PC9jb2RlPgorICAgICAgICAgICAgICAgICAgdXNpbmcgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YTA8L3NwYW4+PC9jb2RlPi4uLjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmFOPC9zcGFuPjwvY29kZT4gYXMgYXJndW1lbnRzIGZvciB0aGUgY29uc3RydWN0b3IKKyAgICAgICAgICAgICAgICAgIGludm9jYXRpb24uCisgICAgICAgICAgICAgICAgPC9wPgorICAgICAgICAgICAgICA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZD4KKyAgICAgICAgICAgICAgICA8cD4KKyAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPkY8L3NwYW4+PHNwYW4gY2xhc3M9InNwZWNpYWwiPjo6PC9zcGFuPjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5yZXN1bHRfdHlwZTwvc3Bhbj48L2NvZGU+CisgICAgICAgICAgICAgICAgPC9wPgorICAgICAgICAgICAgICA8L3RkPgorPHRkPgorICAgICAgICAgICAgICAgIDxwPgorICAgICAgICAgICAgICAgICAgaXMgdGhlIHR5cGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+UDwvc3Bhbj48L2NvZGU+IHdpdGgKKyAgICAgICAgICAgICAgICAgIHRvcC1sZXZlbCBjdi1xdWFsaWZpZXJzIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgPC9wPgorICAgICAgICAgICAgICA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPGg1PgorPGEgbmFtZT0iYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LnJlZmVyZW5jZS5mYWN0b3J5Lmg0Ij48L2E+CisgICAgICAgIDxzcGFuIGNsYXNzPSJwaHJhc2UiPjxhIG5hbWU9ImJvb3N0X2Z1bmN0aW9uYWxfZmFjdG9yeS5yZWZlcmVuY2UuZmFjdG9yeS5saW1pdHMiPjwvYT48L3NwYW4+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImluZGV4Lmh0bWwjYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LnJlZmVyZW5jZS5mYWN0b3J5LmxpbWl0cyI+TGltaXRzPC9hPgorICAgICAgPC9oNT4KKzxwPgorICAgICAgICBUaGUgbWFjcm8gQk9PU1RfRlVOQ1RJT05BTF9GQUNUT1JZX01BWF9BUklUWSBjYW4gYmUgZGVmaW5lZCB0byBzZXQgdGhlIG1heGltdW0KKyAgICAgICAgYXJpdHkuIEl0IGRlZmF1bHRzIHRvIDEwLgorICAgICAgPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InNlY3Rpb24iPgorPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KKzxhIG5hbWU9ImJvb3N0X2Z1bmN0aW9uYWxfZmFjdG9yeS5hY2tub3dsZWRnZW1lbnRzIj48L2E+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImluZGV4Lmh0bWwjYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LmFja25vd2xlZGdlbWVudHMiIHRpdGxlPSJBY2tub3dsZWRnZW1lbnRzIj5BY2tub3dsZWRnZW1lbnRzPC9hPgorPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KKzxwPgorICAgICAgRXJpYyBOaWVibGVyIHJlcXVlc3RlZCBhIGZ1bmN0aW9uIHRvIGludm9rZSBhIHR5cGUncyBjb25zdHJ1Y3RvciAod2l0aCB0aGUKKyAgICAgIGFyZ3VtZW50cyBzdXBwbGllZCBhcyBhIFR1cGxlKSBhcyBhIEZ1c2lvbiBmZWF0dXJlLiBUaGVzZSBGYWN0b3J5IHV0aWxpdGllcworICAgICAgYXJlIGEgZmFjdG9yZWQtb3V0IGdlbmVyYWxpemF0aW9uIG9mIHRoaXMgaWRlYS4KKyAgICA8L3A+Cis8cD4KKyAgICAgIERhdmUgQWJyYWhhbXMgc3VnZ2VzdGVkIFNtYXJ0IFBvaW50ZXIgc3VwcG9ydCBmb3IgZXhjZXB0aW9uIHNhZmV0eSwgcHJvdmlkaW5nCisgICAgICB1c2VmdWwgaGludHMgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbi4KKyAgICA8L3A+Cis8cD4KKyAgICAgIEpvZWwgZGUgR3V6bWFuJ3MgZG9jdW1lbnRhdGlvbiBzdHlsZSB3YXMgY29waWVkIGZyb20gRnVzaW9uLgorICAgIDwvcD4KKzxwPgorICAgICAgRnVydGhlciwgSSB3YW50IHRvIHRoYW5rIFBldGVyIERpbW92IGZvciBzaGFyaW5nIGhpcyBpbnNpZ2h0cyBvbiBsYW5ndWFnZSBkZXRhaWxzCisgICAgICBhbmQgdGhlaXIgZXZvbHV0aW9uLgorICAgIDwvcD4KKzwvZGl2PgorPGRpdiBjbGFzcz0ic2VjdGlvbiI+Cis8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgorPGEgbmFtZT0iYm9vc3RfZnVuY3Rpb25hbF9mYWN0b3J5LnJlZmVyZW5jZXMiPjwvYT48YSBjbGFzcz0ibGluayIgaHJlZj0iaW5kZXguaHRtbCNib29zdF9mdW5jdGlvbmFsX2ZhY3RvcnkucmVmZXJlbmNlcyIgdGl0bGU9IlJlZmVyZW5jZXMiPlJlZmVyZW5jZXM8L2E+Cis8L2gyPjwvZGl2PjwvZGl2PjwvZGl2PgorPGRpdiBjbGFzcz0ib3JkZXJlZGxpc3QiPjxvbCBjbGFzcz0ib3JkZXJlZGxpc3QiIHR5cGU9IjEiPgorPGxpIGNsYXNzPSJsaXN0aXRlbSI+CisgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZXNpZ25fUGF0dGVybnMiIHRhcmdldD0iX3RvcCI+RGVzaWduIFBhdHRlcm5zPC9hPiwKKyAgICAgICAgICBHYW1tYSBldCBhbC4gLSBBZGRpc29uIFdlc2xleSBQdWJsaXNoaW5nLCAxOTk1CisgICAgICAgIDwvbGk+Cis8bGkgY2xhc3M9Imxpc3RpdGVtIj4KKyAgICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LnNnaS5jb20vdGVjaC9zdGwvIiB0YXJnZXQ9Il90b3AiPlN0YW5kYXJkIFRlbXBsYXRlIExpYnJhcnkgUHJvZ3JhbW1lcidzCisgICAgICAgICAgR3VpZGU8L2E+LCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueSwgMTk5NAorICAgICAgICA8L2xpPgorPGxpIGNsYXNzPSJsaXN0aXRlbSI+CisgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL2JpbmQuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Cb29zdC5CaW5kPC9hPiwKKyAgICAgICAgICBQZXRlciBEaW1vdiwgMjAwMS0yMDA1CisgICAgICAgIDwvbGk+Cis8bGkgY2xhc3M9Imxpc3RpdGVtIj4KKyAgICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9kb2MvaHRtbC9mdW5jdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPkJvb3N0LkZ1bmN0aW9uPC9hPiwKKyAgICAgICAgICBEb3VnbGFzIEdyZWdvciwgMjAwMS0yMDA0CisgICAgICAgIDwvbGk+Cis8L29sPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzx0YWJsZSB4bWxuczpyZXY9Imh0dHA6Ly93d3cuY3MucnBpLmVkdS9+Z3JlZ29kL2Jvb3N0L3Rvb2xzL2RvYy9yZXZpc2lvbiIgd2lkdGg9IjEwMCUiPjx0cj4KKzx0ZCBhbGlnbj0ibGVmdCI+PHA+PHNtYWxsPkxhc3QgcmV2aXNlZDogTm92ZW1iZXIgMDEsIDIwMDggYXQgMjE6NDQ6NTIgR01UPC9zbWFsbD48L3A+PC90ZD4KKzx0ZCBhbGlnbj0icmlnaHQiPjxkaXYgY2xhc3M9ImNvcHlyaWdodC1mb290ZXIiPjwvZGl2PjwvdGQ+Cis8L3RyPjwvdGFibGU+Cis8aHI+Cis8ZGl2IGNsYXNzPSJzcGlyaXQtbmF2Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2xpYnMvZnVuY3Rpb25hbC9mYWN0b3J5L2RvYy9odG1sL3N0YW5kYWxvbmVfSFRNTC5tYW5pZmVzdCBiL2xpYnMvZnVuY3Rpb25hbC9mYWN0b3J5L2RvYy9odG1sL3N0YW5kYWxvbmVfSFRNTC5tYW5pZmVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2FmNzE2Ci0tLSAvZGV2L251bGwKKysrIGIvbGlicy9mdW5jdGlvbmFsL2ZhY3RvcnkvZG9jL2h0bWwvc3RhbmRhbG9uZV9IVE1MLm1hbmlmZXN0CkBAIC0wLDAgKzEgQEAKK2luZGV4Lmh0bWwKZGlmZiAtLWdpdCBhL2xpYnMvZnVuY3Rpb25hbC9mYWN0b3J5L2luZGV4Lmh0bWwgYi9saWJzL2Z1bmN0aW9uYWwvZmFjdG9yeS9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MDMwMjkKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL2Z1bmN0aW9uYWwvZmFjdG9yeS9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjA7IFVSTD1kb2MvaHRtbC9pbmRleC5odG1sIj4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICBBdXRvbWF0aWMgcmVkaXJlY3Rpb24gZmFpbGVkLCBjbGljayB0aGlzIAorICAgIDxhIGhyZWY9ImRvYy9odG1sL2luZGV4Lmh0bWwiPmxpbms8L2E+ICZuYnNwOzxocj4KKyAgICA8cD6pIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyLCAyMDA5PC9wPgorICAgIDxwPkRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSAKKyAgICBhY2NvbXBhbnlpbmcgZmlsZSA8YSBocmVmPSIuLi8uLi8uLi9MSUNFTlNFXzFfMC50eHQiPgorICAgIExJQ0VOU0VfMV8wLnR4dDwvYT4gb3IgY29weSBhdAorICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCI+d3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+KTwvcD4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvbGlicy9mdW5jdGlvbmFsL2ZhY3RvcnkvdGVzdC9KYW1maWxlIGIvbGlicy9mdW5jdGlvbmFsL2ZhY3RvcnkvdGVzdC9KYW1maWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNGY2ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL2Z1bmN0aW9uYWwvZmFjdG9yeS90ZXN0L0phbWZpbGUKQEAgLTAsMCArMSwxOCBAQAorCisjIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgorIworIyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCisjIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6L1wvd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgorCitpbXBvcnQgdGVzdGluZyA7CisKK3Byb2plY3QgZmFjdG9yeS10ZXN0cworICAgIDsKKwordGVzdC1zdWl0ZSBmdW5jdGlvbmFsL2ZhY3RvcnkKKyAgICA6CisgICAgICBbIHJ1biB2YWx1ZV9mYWN0b3J5LmNwcCBdCisgICAgICBbIHJ1biBmYWN0b3J5LmNwcCBdCisgICAgICBbIHJ1biBmYWN0b3J5X3dpdGhfYWxsb2NhdG9yLmNwcCBdCisgICAgOworCmRpZmYgLS1naXQgYS9saWJzL2Z1bmN0aW9uYWwvZmFjdG9yeS90ZXN0L2ZhY3RvcnkuY3BwIGIvbGlicy9mdW5jdGlvbmFsL2ZhY3RvcnkvdGVzdC9mYWN0b3J5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDQ3ZjI4Ci0tLSAvZGV2L251bGwKKysrIGIvbGlicy9mdW5jdGlvbmFsL2ZhY3RvcnkvdGVzdC9mYWN0b3J5LmNwcApAQCAtMCwwICsxLDM2IEBACisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgQ29weXJpZ2h0IChjKSAyMDA3IFRvYmlhcyBTY2h3aW5nZXIKKyAgCisgICAgVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSAKKyAgICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAorICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCisjaW5jbHVkZSA8Ym9vc3QvZnVuY3Rpb25hbC9mYWN0b3J5LmhwcD4KKyNpbmNsdWRlIDxib29zdC9kZXRhaWwvbGlnaHR3ZWlnaHRfdGVzdC5ocHA+CisKKyNpbmNsdWRlIDxtZW1vcnk+CisKK2NsYXNzIHN1bSAKK3sKKyAgICBpbnQgdmFsX3N1bTsKKyAgcHVibGljOgorICAgIHN1bShpbnQgYSwgaW50IGIpIDogdmFsX3N1bShhICsgYikgeyB9CisKKyAgICBvcGVyYXRvciBpbnQoKSBjb25zdCB7IHJldHVybiB0aGlzLT52YWxfc3VtOyB9Cit9OworCitpbnQgbWFpbigpCit7CisgICAgaW50IG9uZSA9IDEsIHR3byA9IDI7CisgICAgeworICAgICAgc3VtKiBpbnN0YW5jZSggbmRuYm9vc3Q6OmZhY3Rvcnk8IHN1bSogPigpKG9uZSx0d28pICk7CisgICAgICBCT09TVF9URVNUKCppbnN0YW5jZSA9PSAzKTsKKyAgICB9CisgICAgeworICAgICAgc3RkOjphdXRvX3B0cjxzdW0+IGluc3RhbmNlKCBuZG5ib29zdDo6ZmFjdG9yeTwgc3RkOjphdXRvX3B0cjxzdW0+ID4oKShvbmUsdHdvKSApOworICAgICAgQk9PU1RfVEVTVCgqaW5zdGFuY2UgPT0gMyk7CisgICAgfQorICAgIHJldHVybiBuZG5ib29zdDo6cmVwb3J0X2Vycm9ycygpOworfQorCmRpZmYgLS1naXQgYS9saWJzL2Z1bmN0aW9uYWwvZmFjdG9yeS90ZXN0L2ZhY3Rvcnlfd2l0aF9hbGxvY2F0b3IuY3BwIGIvbGlicy9mdW5jdGlvbmFsL2ZhY3RvcnkvdGVzdC9mYWN0b3J5X3dpdGhfYWxsb2NhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmM2Yzk5Ci0tLSAvZGV2L251bGwKKysrIGIvbGlicy9mdW5jdGlvbmFsL2ZhY3RvcnkvdGVzdC9mYWN0b3J5X3dpdGhfYWxsb2NhdG9yLmNwcApAQCAtMCwwICsxLDc5IEBACisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgQ29weXJpZ2h0IChjKSAyMDA3IFRvYmlhcyBTY2h3aW5nZXIKKyAgCisgICAgVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSAKKyAgICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAorICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCisjaW5jbHVkZSA8Ym9vc3QvZnVuY3Rpb25hbC9mYWN0b3J5LmhwcD4KKyNpbmNsdWRlIDxib29zdC9kZXRhaWwvbGlnaHR3ZWlnaHRfdGVzdC5ocHA+CisKKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxib29zdC9zaGFyZWRfcHRyLmhwcD4KKwordXNpbmcgc3RkOjpzaXplX3Q7CisKK2NsYXNzIHN1bSAKK3sKKyAgICBpbnQgdmFsX3N1bTsKKyAgcHVibGljOgorICAgIHN1bShpbnQgYSwgaW50IGIpIDogdmFsX3N1bShhICsgYikgeyB9CisKKyAgICBvcGVyYXRvciBpbnQoKSBjb25zdCB7IHJldHVybiB0aGlzLT52YWxfc3VtOyB9Cit9OworCit0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+CitjbGFzcyBjb3VudGluZ19hbGxvY2F0b3IgOiBwdWJsaWMgc3RkOjphbGxvY2F0b3I8VD4KK3sKKyAgcHVibGljOgorICAgIGNvdW50aW5nX2FsbG9jYXRvcigpCisgICAgeyB9CisKKyAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgT3RoZXJUID4KKyAgICBzdHJ1Y3QgcmViaW5kIHsgdHlwZWRlZiBjb3VudGluZ19hbGxvY2F0b3I8T3RoZXJUPiBvdGhlcjsgfTsKKworICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBPdGhlclQgPgorICAgIGNvdW50aW5nX2FsbG9jYXRvcihjb3VudGluZ19hbGxvY2F0b3I8T3RoZXJUPiBjb25zdCYgdGhhdCkKKyAgICB7IH0KKworICAgIHN0YXRpYyBzaXplX3Qgbl9hbGxvY2F0ZWQ7CisgICAgVCogYWxsb2NhdGUoc2l6ZV90IG4sIHZvaWQgY29uc3QqIGhpbnQgPSAwbCkKKyAgICB7CisgICAgICAgIG5fYWxsb2NhdGVkICs9IDE7CisgICAgICAgIHJldHVybiBzdGQ6OmFsbG9jYXRvcjxUPjo6YWxsb2NhdGUobixoaW50KTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IG5fZGVhbGxvY2F0ZWQ7CisgICAgdm9pZCBkZWFsbG9jYXRlKFQqIHB0ciwgc2l6ZV90IG4pCisgICAgeworICAgICAgICBuX2RlYWxsb2NhdGVkICs9IDE7CisgICAgICAgIHJldHVybiBzdGQ6OmFsbG9jYXRvcjxUPjo6ZGVhbGxvY2F0ZShwdHIsbik7CisgICAgfQorfTsKK3RlbXBsYXRlPCB0eXBlbmFtZSBUID4gc2l6ZV90IGNvdW50aW5nX2FsbG9jYXRvcjxUPjo6bl9hbGxvY2F0ZWQgPSAwOwordGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzaXplX3QgY291bnRpbmdfYWxsb2NhdG9yPFQ+OjpuX2RlYWxsb2NhdGVkID0gMDsKKworaW50IG1haW4oKQoreworICAgIGludCBvbmUgPSAxLCB0d28gPSAyOworICAgIHsKKyAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPHN1bT4gaW5zdGFuY2UoCisgICAgICAgICAgbmRuYm9vc3Q6OmZhY3Rvcnk8IG5kbmJvb3N0OjpzaGFyZWRfcHRyPHN1bT4sIGNvdW50aW5nX2FsbG9jYXRvcjx2b2lkPiwgCisgICAgICAgICAgICAgIG5kbmJvb3N0OjpmYWN0b3J5X2FsbG9jX2Zvcl9wb2ludGVlX2FuZF9kZWxldGVyID4oKShvbmUsdHdvKSApOworICAgICAgQk9PU1RfVEVTVCgqaW5zdGFuY2UgPT0gMyk7CisgICAgfQorICAgIEJPT1NUX1RFU1QoY291bnRpbmdfYWxsb2NhdG9yPHN1bT46Om5fYWxsb2NhdGVkID09IDEpOyAKKyAgICBCT09TVF9URVNUKGNvdW50aW5nX2FsbG9jYXRvcjxzdW0+OjpuX2RlYWxsb2NhdGVkID09IDEpOworICAgIHsKKyAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPHN1bT4gaW5zdGFuY2UoCisgICAgICAgICAgbmRuYm9vc3Q6OmZhY3Rvcnk8IG5kbmJvb3N0OjpzaGFyZWRfcHRyPHN1bT4sIGNvdW50aW5nX2FsbG9jYXRvcjx2b2lkPiwKKyAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZhY3RvcnlfcGFzc2VzX2FsbG9jX3RvX3NtYXJ0X3BvaW50ZXIgPigpKG9uZSx0d28pICk7CisgICAgICBCT09TVF9URVNUKCppbnN0YW5jZSA9PSAzKTsKKyAgICB9CisgICAgQk9PU1RfVEVTVChjb3VudGluZ19hbGxvY2F0b3I8c3VtPjo6bl9hbGxvY2F0ZWQgPT0gMik7IAorICAgIEJPT1NUX1RFU1QoY291bnRpbmdfYWxsb2NhdG9yPHN1bT46Om5fZGVhbGxvY2F0ZWQgPT0gMik7CisgICAgcmV0dXJuIG5kbmJvb3N0OjpyZXBvcnRfZXJyb3JzKCk7Cit9CisKZGlmZiAtLWdpdCBhL2xpYnMvZnVuY3Rpb25hbC9mYWN0b3J5L3Rlc3QvdmFsdWVfZmFjdG9yeS5jcHAgYi9saWJzL2Z1bmN0aW9uYWwvZmFjdG9yeS90ZXN0L3ZhbHVlX2ZhY3RvcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NjJmZmIKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL2Z1bmN0aW9uYWwvZmFjdG9yeS90ZXN0L3ZhbHVlX2ZhY3RvcnkuY3BwCkBAIC0wLDAgKzEsMjkgQEAKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBDb3B5cmlnaHQgKGMpIDIwMDcgVG9iaWFzIFNjaHdpbmdlcgorICAKKyAgICBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIAorICAgIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0CisgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisKKyNpbmNsdWRlIDxib29zdC9mdW5jdGlvbmFsL3ZhbHVlX2ZhY3RvcnkuaHBwPgorI2luY2x1ZGUgPGJvb3N0L2RldGFpbC9saWdodHdlaWdodF90ZXN0LmhwcD4KKworY2xhc3Mgc3VtIAoreworICAgIGludCB2YWxfc3VtOworICBwdWJsaWM6CisgICAgc3VtKGludCBhLCBpbnQgYikgOiB2YWxfc3VtKGEgKyBiKSB7IH0KKyAgICBvcGVyYXRvciBpbnQoKSBjb25zdCB7IHJldHVybiB0aGlzLT52YWxfc3VtOyB9Cit9OworCitpbnQgbWFpbigpCit7CisgICAgaW50IG9uZSA9IDEsIHR3byA9IDI7CisgICAgeworICAgICAgc3VtIGluc3RhbmNlKCBuZG5ib29zdDo6dmFsdWVfZmFjdG9yeTwgc3VtID4oKShvbmUsdHdvKSApOworICAgICAgQk9PU1RfVEVTVChpbnN0YW5jZSA9PSAzKTsKKyAgICB9CisgICAgcmV0dXJuIG5kbmJvb3N0OjpyZXBvcnRfZXJyb3JzKCk7Cit9CisK