ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAoKUkVBRE1FCgogIEN1cmwgaXMgYSBjb21tYW5kIGxpbmUgdG9vbCBmb3IgdHJhbnNmZXJyaW5nIGRhdGEgc3BlY2lmaWVkIHdpdGggVVJMCiAgc3ludGF4LiBGaW5kIG91dCBob3cgdG8gdXNlIEN1cmwgYnkgcmVhZGluZyB0aGUgY3VybC4xIG1hbiBwYWdlIG9yIHRoZQogIE1BTlVBTCBkb2N1bWVudC4gRmluZCBvdXQgaG93IHRvIGluc3RhbGwgQ3VybCBieSByZWFkaW5nIHRoZSBJTlNUQUxMCiAgZG9jdW1lbnQuCgogIGxpYmN1cmwgaXMgdGhlIGxpYnJhcnkgY3VybCBpcyB1c2luZyB0byBkbyBpdHMgam9iLiBJdCBpcyByZWFkaWx5CiAgYXZhaWxhYmxlIHRvIGJlIHVzZWQgYnkgeW91ciBzb2Z0d2FyZS4gUmVhZCB0aGUgbGliY3VybC4zIG1hbiBwYWdlIHRvCiAgbGVhcm4gaG93IQoKICBZb3UgZmluZCBhbnN3ZXJzIHRvIHRoZSBtb3N0IGZyZXF1ZW50IHF1ZXN0aW9ucyB3ZSBnZXQgaW4gdGhlIEZBUSBkb2N1bWVudC4KCiAgU3R1ZHkgdGhlIENPUFlJTkcgZmlsZSBmb3IgZGlzdHJpYnV0aW9uIHRlcm1zIGFuZCBzaW1pbGFyLiBJZiB5b3UgZGlzdHJpYnV0ZQogIGN1cmwgYmluYXJpZXMgb3Igb3RoZXIgYmluYXJpZXMgdGhhdCBpbnZvbHZlIGxpYmN1cmwsIHlvdSBtaWdodCBlbmpveSB0aGUKICBMSUNFTlNFLU1JWElORyBkb2N1bWVudC4KCkNPTlRBQ1QKCiAgSWYgeW91IGhhdmUgcHJvYmxlbXMsIHF1ZXN0aW9ucywgaWRlYXMgb3Igc3VnZ2VzdGlvbnMsIHBsZWFzZSBjb250YWN0IHVzCiAgYnkgcG9zdGluZyB0byBhIHN1aXRhYmxlIG1haWxpbmcgbGlzdC4gU2VlIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC8KCiAgQWxsIGNvbnRyaWJ1dG9ycyB0byB0aGUgcHJvamVjdCBhcmUgbGlzdGVkIGluIHRoZSBUSEFOS1MgZG9jdW1lbnQuCgpXRUIgU0lURQoKICBWaXNpdCB0aGUgY3VybCB3ZWIgc2l0ZSBvciBtaXJyb3JzIGZvciB0aGUgbGF0ZXN0IG5ld3MgYW5kIGRvd25sb2FkczoKCiAgICAgICAgU3dlZGVuICAgICAgIGh0dHA6Ly9jdXJsLmhheHguc2UvCiAgICAgICAgQXVzdHJhbGlhICAgIGh0dHA6Ly9jdXJsLnBsYW5ldG1pcnJvci5jb20vCiAgICAgICAgQXVzdHJpYSAgICAgIGh0dHA6Ly9jdXJsLmdkcy50dXdpZW4uYWMuYXQvCiAgICAgICAgRGVubWFyayAgICAgIGh0dHA6Ly9jdXJsLmNvZm1hbi5kay8KICAgICAgICBGcmFuY2UgICAgICAgaHR0cDovL2N1cmwuZmFzdG1pcnJvci5uZXQvCiAgICAgICAgR2VybWFueSAgICAgIGh0dHA6Ly9jdXJsLm1pc2NlbGxhbmVvdXNtaXJyb3Iub3JnLwogICAgICAgIEdlcm1hbnkgICAgICBodHRwOi8vY3VybC5taXJyb3IuYXQuc3RlYWxlci5uZXQvCiAgICAgICAgR2VybWFueSAgICAgIGh0dHA6Ly9jdXJsLm1pcnJvcmluZy5kZS8KICAgICAgICBHZXJtYW55ICAgICAgaHR0cDovL2N1cmwubW9ucy1uZXctbWVkaWEuZGUvCiAgICAgICAgR2VybWFueSAgICAgIGh0dHA6Ly9jdXJsLnRyaXBsZW1pbmQuY29tLwogICAgICAgIEdlcm1hbnkgICAgICBodHRwOi8vY3VybC5mcmVlbWlycm9yLmRlLwogICAgICAgIE5ldGhlcmxhbmRzICBodHRwOi8vY3VybC5uZWRtaXJyb3IubmwvCiAgICAgICAgUnVzc2lhICAgICAgIGh0dHA6Ly9jdXJsLnRzdXJlbi5uZXQvCiAgICAgICAgVGFpd2FuICAgICAgIGh0dHA6Ly9jdXJsLmNzLnB1LmVkdS50dy8KICAgICAgICBUaGFpbGFuZCAgICAgaHR0cDovL2N1cmwuc2lhbXUuYWMudGgvCiAgICAgICAgVVMgKEFaKSAgICAgIGh0dHA6Ly9jdXJsLmlzbGFuZG9mcG9rZXIuY29tLwogICAgICAgIFVTIChDQSkgICAgICBodHRwOi8vY3VybC5taXJyb3IucmVkd2lyZS5uZXQvCiAgICAgICAgVVMgKENBKSAgICAgIGh0dHA6Ly9jdXJsLm1pcnJvcm1vbnN0ZXIuY29tLwogICAgICAgIFVTIChDQSkgICAgICBodHRwOi8vY3VybC5zaWduYWw0Mi5jb20vCiAgICAgICAgVVMgKENBKSAgICAgIGh0dHA6Ly9jdXJsLnRvbGl4Lm9yZy8KICAgICAgICBVUyAoQ0EpICAgICAgaHR0cDovL2N1cmwud2ViaG9zdGluZzc2LmNvbS8KICAgICAgICBVUyAoQ0EpICAgICAgaHR0cDovL2N1cmwubWV1bGllLm5ldC8KICAgICAgICBVUyAoRkwpICAgICAgaHR0cDovL2N1cmwuaG94dC5jb20vCiAgICAgICAgVVMgKFRYKSAgICAgIGh0dHA6Ly9jdXJsLjEwOWsuY29tLwogICAgICAgIFVTIChUWCkgICAgICBodHRwOi8vY3VybC5taXJyb3JzLmN5YmVyc2VydmVycy5uZXQvCiAgICAgICAgVVMgKFRYKSAgICAgIGh0dHA6Ly9jdXJsLnNlZWttZXVwLmNvbS8KICAgICAgICBVUyAoVFgpICAgICAgaHR0cDovL2N1cmwuaG9zdGluZ3plcm8uY29tLwoKQ1ZTCgogIFRvIGRvd25sb2FkIHRoZSB2ZXJ5IGxhdGVzdCBzb3VyY2Ugb2ZmIHRoZSBDVlMgc2VydmVyIGRvIHRoaXM6CgogICBjdnMgLWQgOnBzZXJ2ZXI6YW5vbnltb3VzQGNvb2wuaGF4eC5zZTovY3Zzcm9vdC9jdXJsIGxvZ2luCgogIChqdXN0IHByZXNzIGVudGVyIHdoZW4gYXNrZWQgZm9yIHBhc3N3b3JkKQoKICAgY3ZzIC1kIDpwc2VydmVyOmFub255bW91c0Bjb29sLmhheHguc2U6L2N2c3Jvb3QvY3VybCBjbyBjdXJsCgogICh5b3UnbGwgZ2V0IGEgZGlyZWN0b3J5IG5hbWVkIGN1cmwgY3JlYXRlZCwgZmlsbGVkIHdpdGggdGhlIHNvdXJjZSBjb2RlKQoKTk9USUNFCgogIEN1cmwgY29udGFpbnMgcGllY2VzIG9mIHNvdXJjZSBjb2RlIHRoYXQgaXMgQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5CiAgS3VuZ2xpZ2EgVGVrbmlza2EgSPZnc2tvbGFuLiBUaGlzIG5vdGljZSBpcyBpbmNsdWRlZCBoZXJlIHRvIGNvbXBseSB3aXRoIHRoZQogIGRpc3RyaWJ1dGlvbiB0ZXJtcy4K