ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8gICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfCAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CgpSRUFETUUKCiAgQ3VybCBpcyBhIGNvbW1hbmQgbGluZSB0b29sIGZvciB0cmFuc2ZlcmluZyBkYXRhIHNwZWNpZmllZCB3aXRoIFVSTAogIHN5bnRheC4gRmluZCBvdXQgaG93IHRvIHVzZSBDdXJsIGJ5IHJlYWRpbmcgdGhlIGN1cmwuMSBtYW4gcGFnZSBvciB0aGUKICBNQU5VQUwgZG9jdW1lbnQuIEZpbmQgb3V0IGhvdyB0byBpbnN0YWxsIEN1cmwgYnkgcmVhZGluZyB0aGUgSU5TVEFMTAogIGRvY3VtZW50LgoKICBsaWJjdXJsIGlzIHRoZSBsaWJyYXJ5IGN1cmwgaXMgdXNpbmcgdG8gZG8gaXRzIGpvYi4gSXQgaXMgcmVhZGlseQogIGF2YWlsYWJsZSB0byBiZSB1c2VkIGJ5IHlvdXIgc29mdHdhcmUuIFJlYWQgdGhlIGxpYmN1cmwuMyBtYW4gcGFnZSB0bwogIGxlYXJuIGhvdyEKCiAgWW91IGZpbmQgYW5zd2VycyB0byB0aGUgbW9zdCBmcmVxdWVudCBxdWVzdGlvbnMgd2UgZ2V0IGluIHRoZSBGQVEgZG9jdW1lbnQuCgogIFN0dWR5IHRoZSBDT1BZSU5HIGZpbGUgZm9yIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhbmQgc2ltaWxhci4gSWYgeW91IGRpc3RyaWJ1dGUKICBjdXJsIGJpbmFyaWVzIG9yIG90aGVyIGJpbmFyaWVzIHRoYXQgaW52b2x2ZSBsaWJjdXJsLCB5b3UgbWlnaHQgZW5qb3kgdGhlCiAgTElDRU5TRS1NSVhJTkcgZG9jdW1lbnQuCgpDT05UQUNUCgogIElmIHlvdSBoYXZlIHByb2JsZW1zLCBxdWVzdGlvbnMsIGlkZWFzIG9yIHN1Z2dlc3Rpb25zLCBwbGVhc2UgY29udGFjdCB1cwogIGJ5IHBvc3RpbmcgdG8gYSBzdWl0YWJsZSBtYWlsaW5nIGxpc3QuIFNlZSBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvCgogIE1hbnkgbWFqb3IgY29udHJpYnV0b3JzIHRvIHRoZSBwcm9qZWN0IGFyZSBsaXN0ZWQgaW4gdGhlIFRIQU5LUyBkb2N1bWVudC4KCldFQiBTSVRFCgogIFZpc2l0IHRoZSBjdXJsIHdlYiBzaXRlIG9yIG1pcnJvcnMgZm9yIHRoZSBsYXRlc3QgbmV3czoKCiAgICAgICAgU3dlZGVuICAgIC0tIGh0dHA6Ly9jdXJsLmhheHguc2UvCiAgICAgICAgQXVzdHJhbGlhIC0tIGh0dHA6Ly9jdXJsLnBsYW5ldG1pcnJvci5jb20vCiAgICAgICAgRGVubWFyayAgIC0tIGh0dHA6Ly9jdXJsLmNvZm1hbi5kay8KICAgICAgICBFc3RvbmlhICAgLS0gaHR0cDovL2N1cmwud2lsZHlvdS5uZXQvCiAgICAgICAgR2VybWFueSAgIC0tIGh0dHA6Ly9jdXJsLm1pcnJvci5hdC5zdGVhbGVyLm5ldC8KICAgICAgICBHZXJtYW55ICAgLS0gaHR0cDovL2N1cmwubmV0bWlycm9yLm9yZy8KICAgICAgICBSdXNzaWEgICAgLS0gaHR0cDovL2N1cmwudHN1cmVuLm5ldC8KICAgICAgICBUaGFpbGFuZCAgLS0gaHR0cDovL2N1cmwuc2lhbXUuYWMudGgvCiAgICAgICAgVVMgKENBKSAgIC0tIGh0dHA6Ly9jdXJsLm1pcnJvci5yZWR3aXJlLm5ldC8KICAgICAgICBVUyAgICAgICAgLS0gaHR0cDovL2N1cmwuc2lnbmFsNDIuY29tLwoKRE9XTkxPQUQKCiAgVGhlIG9mZmljaWFsIGRvd25sb2FkIG1pcnJvciBzaXRlcyBhcmU6CgogICAgICAgIEF1c3RyYWxpYSAtLSBodHRwOi8vY3VybC5wbGFuZXRtaXJyb3IuY29tL2Rvd25sb2FkLmh0bWwKICAgICAgICBFc3RvbmlhICAgLS0gaHR0cDovL2N1cmwud2lsZHlvdS5uZXQvZG93bmxvYWQuaHRtbAogICAgICAgIEdlcm1hbnkgICAtLSBmdHA6Ly9mdHAuZnUtYmVybGluLmRlL3B1Yi91bml4L25ldHdvcmsvY3VybC8KICAgICAgICBHZXJtYW55ICAgLS0gaHR0cDovL2N1cmwubWlycm9yLmF0LnN0ZWFsZXIubmV0L2Rvd25sb2FkLmh0bWwKICAgICAgICBHZXJtYW55ICAgLS0gaHR0cDovL2N1cmwubmV0bWlycm9yLm9yZy9kb3dubG9hZC5odG1sCiAgICAgICAgR2VybWFueSAgIC0tIGh0dHA6Ly93d3cubWlycm9yc3BhY2Uub3JnL2N1cmwvCiAgICAgICAgSG9uZ2tvbmcgIC0tIGh0dHA6Ly93d3cuZXhlY3ZlLm5ldC9jdXJsLwogICAgICAgIFJ1c3NpYSAgICAtLSBodHRwOi8vY3VybC50c3VyZW4ubmV0L2Rvd25sb2FkLmh0bWwKICAgICAgICBTd2VkZW4gICAgLS0gZnRwOi8vZnRwLnN1bmV0LnNlL3B1Yi93d3cvdXRpbGl0aWVzL2N1cmwvCiAgICAgICAgU3dlZGVuICAgIC0tIGh0dHA6Ly9jb29sLmhheHguc2UvY3VybC8KICAgICAgICBUaGFpbGFuZCAgLS0gaHR0cDovL2N1cmwuc2lhbXUuYWMudGgvZG93bmxvYWQuaHRtbAogICAgICAgIFVTIChDQSkgICAtLSBodHRwOi8vY3VybC5taXJyb3IucmVkd2lyZS5uZXQvZG93bmxvYWQuaHRtbAoKQ1ZTCgogIFRvIGRvd25sb2FkIHRoZSB2ZXJ5IGxhdGVzdCBzb3VyY2Ugb2ZmIHRoZSBDVlMgc2VydmVyIGRvIHRoaXM6CgogICBjdnMgLWQgOnBzZXJ2ZXI6YW5vbnltb3VzQGNvb2wuaGF4eC5zZTovY3Zzcm9vdC9jdXJsIGxvZ2luCgogIChqdXN0IHByZXNzIGVudGVyIHdoZW4gYXNrZWQgZm9yIHBhc3N3b3JkKQoKICAgY3ZzIC1kIDpwc2VydmVyOmFub255bW91c0Bjb29sLmhheHguc2U6L2N2c3Jvb3QvY3VybCBjbyBjdXJsCgogICh5b3UnbGwgZ2V0IGEgZGlyZWN0b3J5IG5hbWVkIGN1cmwgY3JlYXRlZCwgZmlsbGVkIHdpdGggdGhlIHNvdXJjZSBjb2RlKQoKTk9USUNFCgogIEN1cmwgY29udGFpbnMgcGllY2VzIG9mIHNvdXJjZSBjb2RlIHRoYXQgaXMgQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5CiAgS3VuZ2xpZ2EgVGVrbmlza2EgSPZnc2tvbGFuLiBUaGlzIG5vdGljZSBpcyBpbmNsdWRlZCBoZXJlIHRvIGNvbXBseSB3aXRoIHRoZQogIGRpc3RyaWJ1dGlvbiB0ZXJtcy4K