public static string UrlDecode(byte[] bytes, Encoding e)
 {
     if (bytes == null)
     {
         return(null);
     }
     return(XmlaHttpUtility.UrlDecode(bytes, 0, bytes.Length, e));
 }
 public static string UrlDecode(string str)
 {
     if (str == null)
     {
         return(null);
     }
     return(XmlaHttpUtility.UrlDecode(str, Encoding.UTF8));
 }
            internal void FillFromString(string s, bool urlencoded, Encoding encoding)
            {
                int num = (s != null) ? s.Length : 0;

                for (int i = 0; i < num; i++)
                {
                    int num2 = i;
                    int num3 = -1;
                    while (i < num)
                    {
                        char c = s[i];
                        if (c == '=')
                        {
                            if (num3 < 0)
                            {
                                num3 = i;
                            }
                        }
                        else if (c == '&')
                        {
                            break;
                        }
                        i++;
                    }
                    string text = null;
                    string text2;
                    if (num3 >= 0)
                    {
                        text  = s.Substring(num2, num3 - num2);
                        text2 = s.Substring(num3 + 1, i - num3 - 1);
                    }
                    else
                    {
                        text2 = s.Substring(num2, i - num2);
                    }
                    if (urlencoded)
                    {
                        base.Add(XmlaHttpUtility.UrlDecode(text, encoding), XmlaHttpUtility.UrlDecode(text2, encoding));
                    }
                    else
                    {
                        base.Add(text, text2);
                    }
                    if (i == num - 1 && s[i] == '&')
                    {
                        base.Add(null, string.Empty);
                    }
                }
            }
            internal void FillFromEncodedBytes(byte[] bytes, Encoding encoding)
            {
                int num = (bytes != null) ? bytes.Length : 0;

                for (int i = 0; i < num; i++)
                {
                    int num2 = i;
                    int num3 = -1;
                    while (i < num)
                    {
                        byte b = bytes[i];
                        if (b == 61)
                        {
                            if (num3 < 0)
                            {
                                num3 = i;
                            }
                        }
                        else if (b == 38)
                        {
                            break;
                        }
                        i++;
                    }
                    string name;
                    string value;
                    if (num3 >= 0)
                    {
                        name  = XmlaHttpUtility.UrlDecode(bytes, num2, num3 - num2, encoding);
                        value = XmlaHttpUtility.UrlDecode(bytes, num3 + 1, i - num3 - 1, encoding);
                    }
                    else
                    {
                        name  = null;
                        value = XmlaHttpUtility.UrlDecode(bytes, num2, i - num2, encoding);
                    }
                    base.Add(name, value);
                    if (i == num - 1 && bytes[i] == 38)
                    {
                        base.Add(null, string.Empty);
                    }
                }
            }