/// <summary>
        /// Masks the NVP request
        /// </summary>
        /// <param name="ParmList">Param List to be masked</param>
        /// <returns>Masked Param List</returns>
        internal static String MaskNVPRequest(String ParmList)
        {
            String LogParmList = ParmList;

            //Mask ACCT if present
            LogParmList = PayflowUtility.LocateValueForName(LogParmList, PayflowConstants.PARAM_ACCT, true);
            //Mask EXPDATE if present
            //LogParmList = PayflowUtility.LocateValueForName(LogParmList, PayflowConstants.PARAM_EXPDATE, true);
            //Mask SWIPE if present
            LogParmList = PayflowUtility.LocateValueForName(LogParmList, PayflowConstants.PARAM_SWIPE, true);
            //Mask MICR if present
            LogParmList = PayflowUtility.LocateValueForName(LogParmList, PayflowConstants.PARAM_MICR, true);
            //Mask CVV2 if present
            LogParmList = PayflowUtility.LocateValueForName(LogParmList, PayflowConstants.PARAM_CVV2, true);
            //Mask PWD
            LogParmList = PayflowUtility.LocateValueForName(LogParmList, PayflowConstants.PARAM_PWD, true);
            //Mask DL if present
            LogParmList = PayflowUtility.LocateValueForName(LogParmList, PayflowConstants.PARAM_DL, true);
            //Mask SS if present
            LogParmList = PayflowUtility.LocateValueForName(LogParmList, PayflowConstants.PARAM_SS, true);
            //Mask DOB if present
            LogParmList = PayflowUtility.LocateValueForName(LogParmList, PayflowConstants.PARAM_DOB, true);
            //Mask MAGTEKPWD if present
            LogParmList = PayflowUtility.LocateValueForName(LogParmList, PayflowConstants.MAGTEK_PARAM_MAGTEKPWD, true);
            //Mask VIT_OSNAME if present
            //LogParmList = PayflowUtility.LocateValueForName(LogParmList, PayflowConstants.PARAM_VIT_OSNAME, true);
            //Mask VIT_OSARCH if present
            //LogParmList = PayflowUtility.LocateValueForName(LogParmList, PayflowConstants.PARAM_VIT_OSARCH, true);
            //Mask VIT_OSVERSION if present
            //LogParmList = PayflowUtility.LocateValueForName(LogParmList, PayflowConstants.PARAM_VIT_OSVERSION, true);
            //Mask VIT_SDKRUNTIMEVERSION if present
            //LogParmList = PayflowUtility.LocateValueForName(LogParmList, PayflowConstants.PARAM_VIT_SDKRUNTIMEVERSION, true);
            //Mask VIT_PROXY if present
            //LogParmList = PayflowUtility.LocateValueForName(LogParmList, PayflowConstants.PARAM_VIT_PROXY, true);
            return(LogParmList);
        }
        internal static ArrayList AlignContext(Context Context, bool IsXmlPayRequest)
        {
            ArrayList Errors     = Context.GetErrors();
            ArrayList RetVal     = new ArrayList();
            int       ErrorCount = Errors.Count;
            int       Index;

            for (Index = 0; Index < ErrorCount; Index++)
            {
                ErrorObject Error       = (ErrorObject)Errors[Index];
                String      MessageCode = Error.MessageCode;
                if (Error != null)
                {
                    if (MessageCode != null && MessageCode.Length > 0)
                    {
                        bool Msg1012 = false;
                        bool Msg1013 = false;
                        bool Msg1015 = false;
                        bool Msg1016 = false;

                        if ("MSG_1012".Equals(MessageCode))
                        {
                            Msg1012 = true;
                        }
                        else if ("MSG_1013".Equals(MessageCode))
                        {
                            Msg1013 = true;
                        }
                        else if ("MSG_1015".Equals(MessageCode))
                        {
                            Msg1015 = true;
                        }
                        else if ("MSG_1016".Equals(MessageCode))
                        {
                            Msg1016 = true;
                        }

                        if (IsXmlPayRequest)
                        {
                            if (Msg1013 || Msg1016)
                            {
                                RetVal.Add(Error);
                            }
                            else
                            {
                                ErrorObject NewError = null;
                                try
                                {
                                    if (Msg1012)
                                    {
                                        ArrayList MsgParams    = Error.MessageParams;
                                        String[]  NewMsgParams = new String[] { (String)MsgParams[0],
                                                                                (String)MsgParams[1] };
                                        NewError = new ErrorObject(Error.SeverityLevel, "MSG_1013", NewMsgParams, Error.ErrorStackTrace);
                                    }
                                    else if (Msg1015)
                                    {
                                        ArrayList MsgParams    = Error.MessageParams;
                                        String[]  NewMsgParams = new String[] { (String)MsgParams[0],
                                                                                (String)MsgParams[1] };
                                        NewError = new ErrorObject(Error.SeverityLevel, "MSG_1016", NewMsgParams, Error.ErrorStackTrace);
                                    }
                                    else
                                    {
                                        String ErrMessage = Error.ToString();
                                        NewError = PayflowUtility.PopulateCommError(PayflowConstants.E_UNKNOWN_STATE, null, Error.SeverityLevel, true, ErrMessage);
                                    }
                                }
                                catch
                                {
                                    NewError = null;
                                }

                                if (NewError != null)
                                {
                                    RetVal.Add(NewError);
                                }
                            }
                        }
                        else
                        {
                            if (Msg1012 || Msg1015)
                            {
                                RetVal.Add(Error);
                            }
                            else
                            {
                                ErrorObject NewError = null;
                                try
                                {
                                    if (Msg1013)
                                    {
                                        ArrayList MsgParams    = Error.MessageParams;
                                        String[]  NewMsgParams = new String[] { (String)MsgParams[2],
                                                                                (String)MsgParams[3] };
                                        NewError = new ErrorObject(Error.SeverityLevel, "MSG_1012", NewMsgParams, Error.ErrorStackTrace);
                                    }
                                    else if (Msg1016)
                                    {
                                        ArrayList MsgParams    = Error.MessageParams;
                                        String[]  NewMsgParams = new String[] { (String)MsgParams[1],
                                                                                (String)MsgParams[2] };
                                        NewError = new ErrorObject(Error.SeverityLevel, "MSG_1015", NewMsgParams, Error.ErrorStackTrace);
                                    }
                                    else
                                    {
                                        String ErrMessage = Error.ToString();
                                        NewError = PayflowUtility.PopulateCommError(PayflowConstants.E_UNKNOWN_STATE, null, Error.SeverityLevel, false, ErrMessage);
                                    }
                                }
                                catch
                                {
                                    NewError = null;
                                }

                                if (NewError != null)
                                {
                                    RetVal.Add(NewError);
                                }
                            }
                        }
                    }
                    else
                    {
                        ErrorObject NewError = null;
                        try
                        {
                            String ErrMessage = Error.ToString();
                            if (ErrMessage != null && ErrMessage.Length > 0)
                            {
                                String Result      = PayflowConstants.EMPTY_STRING;
                                String RespMsg     = PayflowConstants.EMPTY_STRING;
                                bool   ErrIsXmlPay = (ErrMessage.IndexOf(PayflowConstants.XML_RESP_ID) >= 0);
                                //Check whether the error string is in nvp format
                                // or xml pay format.
                                if (ErrIsXmlPay)
                                {
                                    //Try to get values in nodes Result, RespMsg
                                    Result  = PayflowUtility.GetXmlPayNodeValue(ErrMessage, PayflowConstants.XML_PARAM_RESULT);
                                    RespMsg = PayflowUtility.GetXmlPayNodeValue(ErrMessage, PayflowConstants.XML_PARAM_MESSAGE);
                                }
                                else
                                {
                                    //Try to get RESULT , RESPMSG from the error if
                                    // available.
                                    Result  = PayflowUtility.LocateValueForName(ErrMessage, PayflowConstants.PARAM_RESULT, false);
                                    RespMsg = PayflowUtility.LocateValueForName(ErrMessage, PayflowConstants.PARAM_RESPMSG, false);
                                }

                                if (Result != null && Result.Length > 0 && RespMsg != null && RespMsg.Length > 0)
                                {
                                    StringBuilder NewErrMessage = new StringBuilder("");
                                    if (IsXmlPayRequest && !ErrIsXmlPay)
                                    {
                                        NewErrMessage = new StringBuilder("<XMLPayResponse xmlns='http://www.paypal.com/XMLPay'");

                                        NewErrMessage.Append("><ResponseData><TransactionResults><TransactionResult><Result>");
                                        NewErrMessage.Append(Result);
                                        NewErrMessage.Append("</Result><Message>");
                                        NewErrMessage.Append(RespMsg);
                                        NewErrMessage.Append("</Message></TransactionResult></TransactionResults></ResponseData></XMLPayResponse>");
                                        NewError = new ErrorObject(Error.SeverityLevel, "", NewErrMessage.ToString());
                                    }
                                    else if (!IsXmlPayRequest && ErrIsXmlPay)
                                    {
                                        NewErrMessage = new StringBuilder(PayflowConstants.PARAM_RESULT);
                                        NewErrMessage.Append(PayflowConstants.SEPARATOR_NVP);
                                        NewErrMessage.Append(Result);
                                        NewErrMessage.Append(PayflowConstants.DELIMITER_NVP);
                                        NewErrMessage.Append(PayflowConstants.PARAM_RESPMSG);
                                        NewErrMessage.Append(PayflowConstants.SEPARATOR_NVP);
                                        NewErrMessage.Append(RespMsg);

                                        NewError = new ErrorObject(Error.SeverityLevel, "", NewErrMessage.ToString());
                                    }
                                    else
                                    {
                                        NewError = new ErrorObject(Error.SeverityLevel, "", ErrMessage);
                                    }
                                }
                                else
                                {
                                    StringBuilder NewErrMessage = new StringBuilder("");
                                    if (IsXmlPayRequest)
                                    {
                                        NewErrMessage = new StringBuilder("<XMLPayResponse xmlns='http://www.paypal.com/XMLPay'");

                                        NewErrMessage.Append("><ResponseData><TransactionResults><TransactionResult><Result>");
                                        NewErrMessage.Append((String)PayflowConstants.CommErrorCodes[PayflowConstants.E_UNKNOWN_STATE]);
                                        NewErrMessage.Append("</Result><Message>");
                                        NewErrMessage.Append((String)PayflowConstants.CommErrorMessages[PayflowConstants.E_UNKNOWN_STATE] + " " + ErrMessage);
                                        NewErrMessage.Append("</Message></TransactionResult></TransactionResults></ResponseData></XMLPayResponse>");
                                    }
                                    else
                                    {
                                        NewErrMessage = new StringBuilder(PayflowConstants.PARAM_RESULT);
                                        NewErrMessage.Append(PayflowConstants.SEPARATOR_NVP);
                                        NewErrMessage.Append((String)PayflowConstants.CommErrorCodes[PayflowConstants.E_UNKNOWN_STATE]);
                                        NewErrMessage.Append(PayflowConstants.DELIMITER_NVP);
                                        NewErrMessage.Append(PayflowConstants.PARAM_RESPMSG);
                                        NewErrMessage.Append(PayflowConstants.SEPARATOR_NVP);
                                        NewErrMessage.Append((String)PayflowConstants.CommErrorMessages[PayflowConstants.E_UNKNOWN_STATE] + " " + ErrMessage);
                                    }

                                    NewError = new ErrorObject(Error.SeverityLevel, "", NewErrMessage.ToString());
                                }
                            }
                        }
                        catch
                        {
                            NewError = null;
                        }

                        if (NewError != null)
                        {
                            RetVal.Add(NewError);
                        }
                    }
                }
            }

            return(RetVal);
        }