using System;
public class Test
{
public static void Main()
{
String payload = "{\r\n \"$typeZenith.External.WebApi.Handlers.EventHandlers.VisitSubscriber+VisitCompleted, Zenith.External.WebApi\":\r\n \"SourceIdbbf662f5-c301-480e-935d-ab250042b5a3\",\r\n \"VisitId\": \"653ae76f-432a-41af-b57f-ab1101898fee\",\r\n \"StartTime\": \"2019-12-18T00:00:00Z\",\r\n \"DurationInMinutes\": 270,\r\n \"TimeZone\": \"Australia/Melbourne\",\r\n \"IsAdhoc\": false,\r\n \"Client\": {\r\n \"$type\": \"Zenith.External.Domains.ValueTypes.VisitClient, Zenith.External.Domains\",\r\n \"Id\": \"4d3448c4-8531-4bca-ae82-aadf003dc83f\",\r\n \"FirstName\": \"Peter\",\r\n \"LastName\": \"Black2\",\r\n \"Address\": {\r\n \"$type\": \"Zenith.External.Domains.ValueTypes.Address, Zenith.External.Domains\",\r\n \"AddressType\": 0,\r\n \"UnitNumber\": \"\",\r\n \"StreetNumber\": \"355\",\r\n \"StreetName\": \"Spencer St\",\r\n \"Suburb\": \"WEST MELBOURNE\",\r\n \"Postcode\": \"3000\",\r\n \"State\": \"VIC\"\r\n },\r\n \"TimeZone\": \"Australia/Melbourne\"\r\n },\r\n \"Worker\": null,\r\n \"Service\": {\r\n \"$type\": \"Zenith.External.Domains.ValueTypes.VisitService, Zenith.External.Domains\",\r\n \"Id\": \"4889f53e-2efa-42c6-aec2-aadf00396731\",\r\n \"Name\": \"Personal Care\"\r\n },\r\n \"Task\": {\r\n \"$type\": \"Zenith.External.Domains.ValueTypes.VisitTask, Zenith.External.Domains\",\r\n \"Id\": \"0db0b47c-2c2e-458b-ada5-aadf00396731\",\r\n \"Name\": \"Personal Care\"\r\n },\r\n \"VisitStatus\": \"Completed\",\r\n \"DateCreated\": \"2019-12-16T04:02:52.9181117Z\"\r\n}";
var arr = payload.ToCharArray();
arr = Array.FindAll(arr, char.IsLetterOrDigit);
var payloadBytes = System.Text.Encoding.UTF8.GetBytes(new string(arr));
var shaHash = new System.Security.Cryptography.HMACSHA256(System.Text.Encoding.UTF8.GetBytes("4d3448c4-8531-4bca-ae82-aadf003dc83f"));
var hashValue = shaHash.ComputeHash(payloadBytes);
Console.WriteLine(Convert.ToBase64String(hashValue));
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCQoJCVN0cmluZyBwYXlsb2FkID0gIntcclxuICBcIiR0eXBlWmVuaXRoLkV4dGVybmFsLldlYkFwaS5IYW5kbGVycy5FdmVudEhhbmRsZXJzLlZpc2l0U3Vic2NyaWJlcitWaXNpdENvbXBsZXRlZCwgWmVuaXRoLkV4dGVybmFsLldlYkFwaVwiOlxyXG4gIFwiU291cmNlSWRiYmY2NjJmNS1jMzAxLTQ4MGUtOTM1ZC1hYjI1MDA0MmI1YTNcIixcclxuICBcIlZpc2l0SWRcIjogXCI2NTNhZTc2Zi00MzJhLTQxYWYtYjU3Zi1hYjExMDE4OThmZWVcIixcclxuICBcIlN0YXJ0VGltZVwiOiBcIjIwMTktMTItMThUMDA6MDA6MDBaXCIsXHJcbiAgXCJEdXJhdGlvbkluTWludXRlc1wiOiAyNzAsXHJcbiAgXCJUaW1lWm9uZVwiOiBcIkF1c3RyYWxpYS9NZWxib3VybmVcIixcclxuICBcIklzQWRob2NcIjogZmFsc2UsXHJcbiAgXCJDbGllbnRcIjoge1xyXG4gICAgXCIkdHlwZVwiOiBcIlplbml0aC5FeHRlcm5hbC5Eb21haW5zLlZhbHVlVHlwZXMuVmlzaXRDbGllbnQsIFplbml0aC5FeHRlcm5hbC5Eb21haW5zXCIsXHJcbiAgICBcIklkXCI6IFwiNGQzNDQ4YzQtODUzMS00YmNhLWFlODItYWFkZjAwM2RjODNmXCIsXHJcbiAgICBcIkZpcnN0TmFtZVwiOiBcIlBldGVyXCIsXHJcbiAgICBcIkxhc3ROYW1lXCI6IFwiQmxhY2syXCIsXHJcbiAgICBcIkFkZHJlc3NcIjoge1xyXG4gICAgICBcIiR0eXBlXCI6IFwiWmVuaXRoLkV4dGVybmFsLkRvbWFpbnMuVmFsdWVUeXBlcy5BZGRyZXNzLCBaZW5pdGguRXh0ZXJuYWwuRG9tYWluc1wiLFxyXG4gICAgICBcIkFkZHJlc3NUeXBlXCI6IDAsXHJcbiAgICAgIFwiVW5pdE51bWJlclwiOiBcIlwiLFxyXG4gICAgICBcIlN0cmVldE51bWJlclwiOiBcIjM1NVwiLFxyXG4gICAgICBcIlN0cmVldE5hbWVcIjogXCJTcGVuY2VyIFN0XCIsXHJcbiAgICAgIFwiU3VidXJiXCI6IFwiV0VTVCBNRUxCT1VSTkVcIixcclxuICAgICAgXCJQb3N0Y29kZVwiOiBcIjMwMDBcIixcclxuICAgICAgXCJTdGF0ZVwiOiBcIlZJQ1wiXHJcbiAgICB9LFxyXG4gICAgXCJUaW1lWm9uZVwiOiBcIkF1c3RyYWxpYS9NZWxib3VybmVcIlxyXG4gIH0sXHJcbiAgXCJXb3JrZXJcIjogbnVsbCxcclxuICBcIlNlcnZpY2VcIjoge1xyXG4gICAgXCIkdHlwZVwiOiBcIlplbml0aC5FeHRlcm5hbC5Eb21haW5zLlZhbHVlVHlwZXMuVmlzaXRTZXJ2aWNlLCBaZW5pdGguRXh0ZXJuYWwuRG9tYWluc1wiLFxyXG4gICAgXCJJZFwiOiBcIjQ4ODlmNTNlLTJlZmEtNDJjNi1hZWMyLWFhZGYwMDM5NjczMVwiLFxyXG4gICAgXCJOYW1lXCI6IFwiUGVyc29uYWwgQ2FyZVwiXHJcbiAgfSxcclxuICBcIlRhc2tcIjoge1xyXG4gICAgXCIkdHlwZVwiOiBcIlplbml0aC5FeHRlcm5hbC5Eb21haW5zLlZhbHVlVHlwZXMuVmlzaXRUYXNrLCBaZW5pdGguRXh0ZXJuYWwuRG9tYWluc1wiLFxyXG4gICAgXCJJZFwiOiBcIjBkYjBiNDdjLTJjMmUtNDU4Yi1hZGE1LWFhZGYwMDM5NjczMVwiLFxyXG4gICAgXCJOYW1lXCI6IFwiUGVyc29uYWwgQ2FyZVwiXHJcbiAgfSxcclxuICBcIlZpc2l0U3RhdHVzXCI6IFwiQ29tcGxldGVkXCIsXHJcbiAgXCJEYXRlQ3JlYXRlZFwiOiBcIjIwMTktMTItMTZUMDQ6MDI6NTIuOTE4MTExN1pcIlxyXG59IjsKCgkJCXZhciBhcnIgPSBwYXlsb2FkLlRvQ2hhckFycmF5KCk7CiAgICAgICAgICAgIGFyciA9IEFycmF5LkZpbmRBbGwoYXJyLCBjaGFyLklzTGV0dGVyT3JEaWdpdCk7CiAgICAgICAgICAgIAoKCQkJdmFyIHBheWxvYWRCeXRlcyA9IFN5c3RlbS5UZXh0LkVuY29kaW5nLlVURjguR2V0Qnl0ZXMobmV3IHN0cmluZyhhcnIpKTsKCiAgICAgICAgICAgIHZhciBzaGFIYXNoID0gbmV3IFN5c3RlbS5TZWN1cml0eS5DcnlwdG9ncmFwaHkuSE1BQ1NIQTI1NihTeXN0ZW0uVGV4dC5FbmNvZGluZy5VVEY4LkdldEJ5dGVzKCI0ZDM0NDhjNC04NTMxLTRiY2EtYWU4Mi1hYWRmMDAzZGM4M2YiKSk7CgogICAgICAgICAgICB2YXIgaGFzaFZhbHVlID0gc2hhSGFzaC5Db21wdXRlSGFzaChwYXlsb2FkQnl0ZXMpOwoKCQlDb25zb2xlLldyaXRlTGluZShDb252ZXJ0LlRvQmFzZTY0U3RyaW5nKGhhc2hWYWx1ZSkpOwkKCgoJfQp9