{"action":"created","comment":{"url":"https://api.github.com/repos/dotnet/corefx/pulls/comments/78687162","id":78687162,"diff_hunk":"@@ -0,0 +1,782 @@\n+// Licensed to the .NET Foundation under one or more agreements.\n+// The .NET Foundation licenses this file to you under the MIT license.\n+// See the LICENSE file in the project root for more information.\n+\n+using System.Diagnostics;\n+using System.Diagnostics.CodeAnalysis;\n+using System.Globalization;\n+using System.IO;\n+using System.Net;\n+using System.Text;\n+\n+namespace System.Web.Util\n+{\n+    internal static class HttpEncoder\n+    {\n+        private static void AppendCharAsUnicodeJavaScript(StringBuilder builder, char c)\n+        {\n+            builder.Append(\"\\\\u\");\n+            builder.Append(((int)c).ToString(\"x4\", CultureInfo.InvariantCulture));\n+        }\n+\n+        private static bool CharRequiresJavaScriptEncoding(char c)\n+        {\n+            return c < 0x20 // control chars always have to be encoded\n+                || c == '\\\"' // chars which must be encoded per JSON spec\n+                || c == '\\\\'\n+                || c == '\\'' // HTML-sensitive chars encoded for safety\n+                || c == '<'\n+                || c == '>'\n+                || (c == '&')\n+                || c == '\\u0085' // newline chars (see Unicode 6.2, Table 5-1 [http://www.unicode.org/versions/Unicode6.2.0/ch05.pdf]) have to be encoded\n+                || c == '\\u2028'\n+                || c == '\\u2029';\n+        }\n+\n+        internal static string HtmlAttributeEncode(string value)\n+        {\n+            if (string.IsNullOrEmpty(value))\n+            {\n+                return value;\n+            }\n+\n+            // Don't create string writer if we don't have nothing to encode\n+            int pos = IndexOfHtmlAttributeEncodingChars(value, 0);\n+            if (pos == -1)\n+            {\n+                return value;\n+            }\n+\n+            StringWriter writer = new StringWriter(CultureInfo.InvariantCulture);\n+            HtmlAttributeEncode(value, writer);\n+            return writer.ToString();\n+        }\n+\n+        internal static void HtmlAttributeEncode(string value, TextWriter output)\n+        {\n+            if (value == null)\n+            {\n+                return;\n+            }\n+            if (output == null)\n+            {\n+                throw new ArgumentNullException(nameof(output));\n+            }\n+\n+            HtmlAttributeEncodeInternal(value, output);\n+        }\n+\n+        private static unsafe void HtmlAttributeEncodeInternal(string s, TextWriter output)\n+        {\n+            int index = IndexOfHtmlAttributeEncodingChars(s, 0);\n+            if (index == -1)\n+            {\n+                output.Write(s);\n+            }\n+            else\n+            {\n+                int cch = s.Length - index;\n+                fixed (char* str = s)\n+                {\n+                    char* pch = str;\n+                    while (index-- > 0)\n+                    {\n+                        output.Write(*pch++);\n+                    }\n+\n+                    while (cch-- > 0)\n+                    {\n+                        char ch = *pch++;\n+                        if (ch <= '<')\n+                        {\n+                            switch (ch)\n+                            {\n+                                case '<':\n+                                    output.Write(\"&lt;\");\n+                                    break;\n+                                case '\"':\n+                                    output.Write(\"&quot;\");\n+                                    break;\n+                                case '\\'':\n+                                    output.Write(\"&#39;\");\n+                                    break;\n+                                case '&':\n+                                    output.Write(\"&amp;\");\n+                                    break;\n+                                default:\n+                                    output.Write(ch);\n+                                    break;\n+                            }\n+                        }\n+                        else\n+                        {\n+                            output.Write(ch);\n+                        }\n+                    }\n+                }\n+            }\n+        }\n+\n+        internal static string HtmlDecode(string value)\n+        {\n+            if (string.IsNullOrEmpty(value))\n+            {\n+                return value;\n+            }\n+\n+            return WebUtility.HtmlDecode(value);\n+        }\n+\n+        internal static void HtmlDecode(string value, TextWriter output)\n+        {\n+            if (output == null)\n+                throw new ArgumentNullException(nameof(output));\n+            output.Write(WebUtility.HtmlDecode(value));\n+        }\n+\n+        internal static string HtmlEncode(string value)\n+        {\n+            if (string.IsNullOrEmpty(value))\n+            {\n+                return value;\n+            }\n+            return WebUtility.HtmlEncode(value);\n+        }\n+\n+        internal static void HtmlEncode(string value, TextWriter output)\n+        {\n+            if (output == null)\n+                throw new ArgumentNullException(nameof(output));\n+            output.Write(WebUtility.HtmlEncode(value));\n+        }\n+\n+        private static unsafe int IndexOfHtmlAttributeEncodingChars(string s, int startPos)\n+        {\n+            Debug.Assert(0 <= startPos && startPos <= s.Length, \"0 <= startPos && startPos <= s.Length\");\n+            int cch = s.Length - startPos;\n+            fixed (char* str = s)\n+            {\n+                for (char* pch = &str[startPos]; cch > 0; pch++, cch--)\n+                {\n+                    char ch = *pch;\n+                    if (ch <= '<')\n+                    {\n+                        switch (ch)\n+                        {\n+                            case '<':\n+                            case '\"':\n+                            case '\\'':\n+                            case '&':\n+                                return s.Length - cch;\n+                        }\n+                    }\n+                }\n+            }\n+\n+            return -1;\n+        }\n+\n+        private static bool IsNonAsciiByte(byte b)\n+        {\n+            return (b >= 0x7F || b < 0x20);\n+        }\n+\n+        internal static string JavaScriptStringEncode(string value)\n+        {\n+            if (string.IsNullOrEmpty(value))\n+            {\n+                return string.Empty;\n+            }\n+\n+            StringBuilder b = null;\n+            int startIndex = 0;\n+            int count = 0;\n+            for (int i = 0; i < value.Length; i++)\n+            {\n+                char c = value[i];\n+\n+                // Append the unhandled characters (that do not require special treament)\n+                // to the string builder when special characters are detected.\n+                if (CharRequiresJavaScriptEncoding(c))\n+                {\n+                    if (b == null)\n+                    {\n+                        b = new StringBuilder(value.Length + 5);\n+                    }\n+\n+                    if (count > 0)\n+                    {\n+                        b.Append(value, startIndex, count);\n+                    }\n+\n+                    startIndex = i + 1;\n+                    count = 0;\n+                }\n+\n+                switch (c)\n+                {\n+                    case '\\r':\n+                        b.Append(\"\\\\r\");\n+                        break;\n+                    case '\\t':\n+                        b.Append(\"\\\\t\");\n+                        break;\n+                    case '\\\"':\n+                        b.Append(\"\\\\\\\"\");\n+                        break;\n+                    case '\\\\':\n+                        b.Append(\"\\\\\\\\\");\n+                        break;\n+                    case '\\n':\n+                        b.Append(\"\\\\n\");\n+                        break;\n+                    case '\\b':\n+                        b.Append(\"\\\\b\");\n+                        break;\n+                    case '\\f':\n+                        b.Append(\"\\\\f\");\n+                        break;\n+                    default:\n+                        if (CharRequiresJavaScriptEncoding(c))\n+                        {\n+                            AppendCharAsUnicodeJavaScript(b, c);\n+                        }\n+                        else\n+                        {\n+                            count++;\n+                        }\n+                        break;\n+                }\n+            }\n+\n+            if (b == null)\n+            {\n+                return value;\n+            }\n+\n+            if (count > 0)\n+            {\n+                b.Append(value, startIndex, count);\n+            }\n+\n+            return b.ToString();\n+        }\n+\n+        internal static byte[] UrlDecode(byte[] bytes, int offset, int count)\n+        {\n+            if (!ValidateUrlEncodingParameters(bytes, offset, count))\n+            {\n+                return null;\n+            }\n+\n+            int decodedBytesCount = 0;\n+            byte[] decodedBytes = new byte[count];\n+\n+            for (int i = 0; i < count; i++)\n+            {\n+                int pos = offset + i;\n+                byte b = bytes[pos];\n+\n+                if (b == '+')\n+                {\n+                    b = (byte)' ';\n+                }\n+                else if (b == '%' && i < count - 2)\n+                {\n+                    if (bytes[pos + 1] == 'u' && i < count - 5)\n+                    {\n+                        int h1 = HttpEncoderUtility.HexToInt((char)bytes[pos + 2]);\n+                        int h2 = HttpEncoderUtility.HexToInt((char)bytes[pos + 3]);\n+                        int h3 = HttpEncoderUtility.HexToInt((char)bytes[pos + 4]);\n+                        int h4 = HttpEncoderUtility.HexToInt((char)bytes[pos + 5]);\n+\n+                        if (h1 >= 0 && h2 >= 0 && h3 >= 0 && h4 >= 0)\n+                        {\n+                            // valid 4 hex chars\n+                            char ch = (char)((h1 << 12) | (h2 << 8) | (h3 << 4) | h4);\n+                            i += 5;\n+\n+                            byte[] chBytes = Encoding.UTF8.GetBytes(new[] { ch });\n+                            if (chBytes.Length == 1)\n+                            {\n+                                b = chBytes[0];\n+                            }\n+                            else\n+                            {\n+                                for (int j = 0; j < chBytes.Length - 1; j++)\n+                                {\n+                                    decodedBytes[decodedBytesCount++] = chBytes[j];\n+                                }\n+                                b = chBytes[chBytes.Length - 1];\n+                            }\n+                        }\n+                    }\n+                    else\n+                    {\n+                        int h1 = HttpEncoderUtility.HexToInt((char)bytes[pos + 1]);\n+                        int h2 = HttpEncoderUtility.HexToInt((char)bytes[pos + 2]);\n+\n+                        if (h1 >= 0 && h2 >= 0)\n+                        {\n+                            // valid 2 hex chars\n+                            b = (byte)((h1 << 4) | h2);\n+                            i += 2;\n+                        }\n+                    }\n+                }\n+\n+                decodedBytes[decodedBytesCount++] = b;\n+            }\n+\n+            if (decodedBytesCount < decodedBytes.Length)\n+            {\n+                byte[] newDecodedBytes = new byte[decodedBytesCount];\n+                Array.Copy(decodedBytes, newDecodedBytes, decodedBytesCount);\n+                decodedBytes = newDecodedBytes;\n+            }\n+\n+            return decodedBytes;\n+        }\n+\n+        internal static string UrlDecode(byte[] bytes, int offset, int count, Encoding encoding)\n+        {\n+            if (!ValidateUrlEncodingParameters(bytes, offset, count))\n+            {\n+                return null;\n+            }\n+\n+            UrlDecoder helper = new UrlDecoder(count, encoding);\n+\n+            // go through the bytes collapsing %XX and %uXXXX and appending\n+            // each byte as byte, with exception of %uXXXX constructs that\n+            // are appended as chars\n+\n+            for (int i = 0; i < count; i++)\n+            {\n+                int pos = offset + i;\n+                byte b = bytes[pos];\n+\n+                // The code assumes that + and % cannot be in multibyte sequence\n+\n+                if (b == '+')\n+                {\n+                    b = (byte)' ';\n+                }\n+                else if (b == '%' && i < count - 2)\n+                {\n+                    if (bytes[pos + 1] == 'u' && i < count - 5)\n+                    {\n+                        int h1 = HttpEncoderUtility.HexToInt((char)bytes[pos + 2]);\n+                        int h2 = HttpEncoderUtility.HexToInt((char)bytes[pos + 3]);\n+                        int h3 = HttpEncoderUtility.HexToInt((char)bytes[pos + 4]);\n+                        int h4 = HttpEncoderUtility.HexToInt((char)bytes[pos + 5]);\n+\n+                        if (h1 >= 0 && h2 >= 0 && h3 >= 0 && h4 >= 0)\n+                        {   // valid 4 hex chars\n+                            char ch = (char)((h1 << 12) | (h2 << 8) | (h3 << 4) | h4);\n+                            i += 5;\n+\n+                            // don't add as byte\n+                            helper.AddChar(ch);\n+                            continue;\n+                        }\n+                    }\n+                    else\n+                    {\n+                        int h1 = HttpEncoderUtility.HexToInt((char)bytes[pos + 1]);\n+                        int h2 = HttpEncoderUtility.HexToInt((char)bytes[pos + 2]);\n+\n+                        if (h1 >= 0 && h2 >= 0)\n+                        {     // valid 2 hex chars\n+                            b = (byte)((h1 << 4) | h2);\n+                            i += 2;\n+                        }\n+                    }\n+                }\n+\n+                helper.AddByte(b);\n+            }\n+\n+            return Utf16StringValidator.ValidateString(helper.GetString());\n+        }\n+\n+        internal static string UrlDecode(string value, Encoding encoding)\n+        {\n+            if (value == null)\n+            {\n+                return null;\n+            }\n+\n+            int count = value.Length;\n+            UrlDecoder helper = new UrlDecoder(count, encoding);\n+\n+            // go through the string's chars collapsing %XX and %uXXXX and\n+            // appending each char as char, with exception of %XX constructs\n+            // that are appended as bytes\n+\n+            for (int pos = 0; pos < count; pos++)\n+            {\n+                char ch = value[pos];\n+\n+                if (ch == '+')\n+                {\n+                    ch = ' ';\n+                }\n+                else if (ch == '%' && pos < count - 2)\n+                {\n+                    if (value[pos + 1] == 'u' && pos < count - 5)\n+                    {\n+                        int h1 = HttpEncoderUtility.HexToInt(value[pos + 2]);\n+                        int h2 = HttpEncoderUtility.HexToInt(value[pos + 3]);\n+                        int h3 = HttpEncoderUtility.HexToInt(value[pos + 4]);\n+                        int h4 = HttpEncoderUtility.HexToInt(value[pos + 5]);\n+\n+                        if (h1 >= 0 && h2 >= 0 && h3 >= 0 && h4 >= 0)\n+                        {   // valid 4 hex chars\n+                            ch = (char)((h1 << 12) | (h2 << 8) | (h3 << 4) | h4);\n+                            pos += 5;\n+\n+                            // only add as char\n+                            helper.AddChar(ch);\n+                            continue;\n+                        }\n+                    }\n+                    else\n+                    {\n+                        int h1 = HttpEncoderUtility.HexToInt(value[pos + 1]);\n+                        int h2 = HttpEncoderUtility.HexToInt(value[pos + 2]);\n+\n+                        if (h1 >= 0 && h2 >= 0)\n+                        {     // valid 2 hex chars\n+                            byte b = (byte)((h1 << 4) | h2);\n+                            pos += 2;\n+\n+                            // don't add as char\n+                            helper.AddByte(b);\n+                            continue;\n+                        }\n+                    }\n+                }\n+\n+                if ((ch & 0xFF80) == 0)","path":"src/System.Web.HttpUtility/src/System/Web/Util/HttpEncoder.cs","position":461,"original_position":461,"commit_id":"8086a0300bb8f7e7ed2cdf56597c150042df8f40","original_commit_id":"8086a0300bb8f7e7ed2cdf56597c150042df8f40","user":{"login":"weshaggard","id":9010698,"avatar_url":"https://avatars.githubusercontent.com/u/9010698?v=3","gravatar_id":"","url":"https://api.github.com/users/weshaggard","html_url":"https://github.com/weshaggard","followers_url":"https://api.github.com/users/weshaggard/followers","following_url":"https://api.github.com/users/weshaggard/following{/other_user}","gists_url":"https://api.github.com/users/weshaggard/gists{/gist_id}","starred_url":"https://api.github.com/users/weshaggard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/weshaggard/subscriptions","organizations_url":"https://api.github.com/users/weshaggard/orgs","repos_url":"https://api.github.com/users/weshaggard/repos","events_url":"https://api.github.com/users/weshaggard/events{/privacy}","received_events_url":"https://api.github.com/users/weshaggard/received_events","type":"User","site_admin":false},"body":"guidelines: please use curly braces in this if/else block. ","created_at":"2016-09-14T05:15:04Z","updated_at":"2016-09-14T05:15:04Z","html_url":"https://github.com/dotnet/corefx/pull/11642#discussion_r78687162","pull_request_url":"https://api.github.com/repos/dotnet/corefx/pulls/11642","_links":{"self":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/comments/78687162"},"html":{"href":"https://github.com/dotnet/corefx/pull/11642#discussion_r78687162"},"pull_request":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/11642"}}},"pull_request":{"url":"https://api.github.com/repos/dotnet/corefx/pulls/11642","id":84912472,"html_url":"https://github.com/dotnet/corefx/pull/11642","diff_url":"https://github.com/dotnet/corefx/pull/11642.diff","patch_url":"https://github.com/dotnet/corefx/pull/11642.patch","issue_url":"https://api.github.com/repos/dotnet/corefx/issues/11642","number":11642,"state":"open","locked":false,"title":"Port S.Web.HttpUtility and add tests.","user":{"login":"alexperovich","id":10565410,"avatar_url":"https://avatars.githubusercontent.com/u/10565410?v=3","gravatar_id":"","url":"https://api.github.com/users/alexperovich","html_url":"https://github.com/alexperovich","followers_url":"https://api.github.com/users/alexperovich/followers","following_url":"https://api.github.com/users/alexperovich/following{/other_user}","gists_url":"https://api.github.com/users/alexperovich/gists{/gist_id}","starred_url":"https://api.github.com/users/alexperovich/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexperovich/subscriptions","organizations_url":"https://api.github.com/users/alexperovich/orgs","repos_url":"https://api.github.com/users/alexperovich/repos","events_url":"https://api.github.com/users/alexperovich/events{/privacy}","received_events_url":"https://api.github.com/users/alexperovich/received_events","type":"User","site_admin":false},"body":"This change ports the System.Web.HttpUtility class and tests.\r\n\r\nFixes #11262 ","created_at":"2016-09-12T17:37:26Z","updated_at":"2016-09-14T05:15:04Z","closed_at":null,"merged_at":null,"merge_commit_sha":"cc8446fa1920af9319e35522a21217a928c17715","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/dotnet/corefx/pulls/11642/commits","review_comments_url":"https://api.github.com/repos/dotnet/corefx/pulls/11642/comments","review_comment_url":"https://api.github.com/repos/dotnet/corefx/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dotnet/corefx/issues/11642/comments","statuses_url":"https://api.github.com/repos/dotnet/corefx/statuses/8086a0300bb8f7e7ed2cdf56597c150042df8f40","head":{"label":"alexperovich:HttpUtility","ref":"HttpUtility","sha":"8086a0300bb8f7e7ed2cdf56597c150042df8f40","user":{"login":"alexperovich","id":10565410,"avatar_url":"https://avatars.githubusercontent.com/u/10565410?v=3","gravatar_id":"","url":"https://api.github.com/users/alexperovich","html_url":"https://github.com/alexperovich","followers_url":"https://api.github.com/users/alexperovich/followers","following_url":"https://api.github.com/users/alexperovich/following{/other_user}","gists_url":"https://api.github.com/users/alexperovich/gists{/gist_id}","starred_url":"https://api.github.com/users/alexperovich/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexperovich/subscriptions","organizations_url":"https://api.github.com/users/alexperovich/orgs","repos_url":"https://api.github.com/users/alexperovich/repos","events_url":"https://api.github.com/users/alexperovich/events{/privacy}","received_events_url":"https://api.github.com/users/alexperovich/received_events","type":"User","site_admin":false},"repo":{"id":29363919,"name":"corefx","full_name":"alexperovich/corefx","owner":{"login":"alexperovich","id":10565410,"avatar_url":"https://avatars.githubusercontent.com/u/10565410?v=3","gravatar_id":"","url":"https://api.github.com/users/alexperovich","html_url":"https://github.com/alexperovich","followers_url":"https://api.github.com/users/alexperovich/followers","following_url":"https://api.github.com/users/alexperovich/following{/other_user}","gists_url":"https://api.github.com/users/alexperovich/gists{/gist_id}","starred_url":"https://api.github.com/users/alexperovich/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexperovich/subscriptions","organizations_url":"https://api.github.com/users/alexperovich/orgs","repos_url":"https://api.github.com/users/alexperovich/repos","events_url":"https://api.github.com/users/alexperovich/events{/privacy}","received_events_url":"https://api.github.com/users/alexperovich/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/alexperovich/corefx","description":"This repository contains the foundational libraries that make up the .NET Core development stack.","fork":true,"url":"https://api.github.com/repos/alexperovich/corefx","forks_url":"https://api.github.com/repos/alexperovich/corefx/forks","keys_url":"https://api.github.com/repos/alexperovich/corefx/keys{/key_id}","collaborators_url":"https://api.github.com/repos/alexperovich/corefx/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/alexperovich/corefx/teams","hooks_url":"https://api.github.com/repos/alexperovich/corefx/hooks","issue_events_url":"https://api.github.com/repos/alexperovich/corefx/issues/events{/number}","events_url":"https://api.github.com/repos/alexperovich/corefx/events","assignees_url":"https://api.github.com/repos/alexperovich/corefx/assignees{/user}","branches_url":"https://api.github.com/repos/alexperovich/corefx/branches{/branch}","tags_url":"https://api.github.com/repos/alexperovich/corefx/tags","blobs_url":"https://api.github.com/repos/alexperovich/corefx/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/alexperovich/corefx/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/alexperovich/corefx/git/refs{/sha}","trees_url":"https://api.github.com/repos/alexperovich/corefx/git/trees{/sha}","statuses_url":"https://api.github.com/repos/alexperovich/corefx/statuses/{sha}","languages_url":"https://api.github.com/repos/alexperovich/corefx/languages","stargazers_url":"https://api.github.com/repos/alexperovich/corefx/stargazers","contributors_url":"https://api.github.com/repos/alexperovich/corefx/contributors","subscribers_url":"https://api.github.com/repos/alexperovich/corefx/subscribers","subscription_url":"https://api.github.com/repos/alexperovich/corefx/subscription","commits_url":"https://api.github.com/repos/alexperovich/corefx/commits{/sha}","git_commits_url":"https://api.github.com/repos/alexperovich/corefx/git/commits{/sha}","comments_url":"https://api.github.com/repos/alexperovich/corefx/comments{/number}","issue_comment_url":"https://api.github.com/repos/alexperovich/corefx/issues/comments{/number}","contents_url":"https://api.github.com/repos/alexperovich/corefx/contents/{+path}","compare_url":"https://api.github.com/repos/alexperovich/corefx/compare/{base}...{head}","merges_url":"https://api.github.com/repos/alexperovich/corefx/merges","archive_url":"https://api.github.com/repos/alexperovich/corefx/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/alexperovich/corefx/downloads","issues_url":"https://api.github.com/repos/alexperovich/corefx/issues{/number}","pulls_url":"https://api.github.com/repos/alexperovich/corefx/pulls{/number}","milestones_url":"https://api.github.com/repos/alexperovich/corefx/milestones{/number}","notifications_url":"https://api.github.com/repos/alexperovich/corefx/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/alexperovich/corefx/labels{/name}","releases_url":"https://api.github.com/repos/alexperovich/corefx/releases{/id}","deployments_url":"https://api.github.com/repos/alexperovich/corefx/deployments","created_at":"2015-01-16T19:21:49Z","updated_at":"2016-09-06T20:01:24Z","pushed_at":"2016-09-14T00:52:39Z","git_url":"git://github.com/alexperovich/corefx.git","ssh_url":"git@github.com:alexperovich/corefx.git","clone_url":"https://github.com/alexperovich/corefx.git","svn_url":"https://github.com/alexperovich/corefx","homepage":"","size":96382,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"dotnet:dev/api","ref":"dev/api","sha":"120c3e3d0aed84cff3a0ec1da166b0335bcf1681","user":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars.githubusercontent.com/u/9141961?v=3","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"repo":{"id":26295345,"name":"corefx","full_name":"dotnet/corefx","owner":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars.githubusercontent.com/u/9141961?v=3","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dotnet/corefx","description":"This repo contains the .NET Core foundational libraries, called CoreFX. It includes classes for collections, file systems, console, XML, async and many others.","fork":false,"url":"https://api.github.com/repos/dotnet/corefx","forks_url":"https://api.github.com/repos/dotnet/corefx/forks","keys_url":"https://api.github.com/repos/dotnet/corefx/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dotnet/corefx/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dotnet/corefx/teams","hooks_url":"https://api.github.com/repos/dotnet/corefx/hooks","issue_events_url":"https://api.github.com/repos/dotnet/corefx/issues/events{/number}","events_url":"https://api.github.com/repos/dotnet/corefx/events","assignees_url":"https://api.github.com/repos/dotnet/corefx/assignees{/user}","branches_url":"https://api.github.com/repos/dotnet/corefx/branches{/branch}","tags_url":"https://api.github.com/repos/dotnet/corefx/tags","blobs_url":"https://api.github.com/repos/dotnet/corefx/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dotnet/corefx/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dotnet/corefx/git/refs{/sha}","trees_url":"https://api.github.com/repos/dotnet/corefx/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dotnet/corefx/statuses/{sha}","languages_url":"https://api.github.com/repos/dotnet/corefx/languages","stargazers_url":"https://api.github.com/repos/dotnet/corefx/stargazers","contributors_url":"https://api.github.com/repos/dotnet/corefx/contributors","subscribers_url":"https://api.github.com/repos/dotnet/corefx/subscribers","subscription_url":"https://api.github.com/repos/dotnet/corefx/subscription","commits_url":"https://api.github.com/repos/dotnet/corefx/commits{/sha}","git_commits_url":"https://api.github.com/repos/dotnet/corefx/git/commits{/sha}","comments_url":"https://api.github.com/repos/dotnet/corefx/comments{/number}","issue_comment_url":"https://api.github.com/repos/dotnet/corefx/issues/comments{/number}","contents_url":"https://api.github.com/repos/dotnet/corefx/contents/{+path}","compare_url":"https://api.github.com/repos/dotnet/corefx/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dotnet/corefx/merges","archive_url":"https://api.github.com/repos/dotnet/corefx/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dotnet/corefx/downloads","issues_url":"https://api.github.com/repos/dotnet/corefx/issues{/number}","pulls_url":"https://api.github.com/repos/dotnet/corefx/pulls{/number}","milestones_url":"https://api.github.com/repos/dotnet/corefx/milestones{/number}","notifications_url":"https://api.github.com/repos/dotnet/corefx/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dotnet/corefx/labels{/name}","releases_url":"https://api.github.com/repos/dotnet/corefx/releases{/id}","deployments_url":"https://api.github.com/repos/dotnet/corefx/deployments","created_at":"2014-11-06T23:42:48Z","updated_at":"2016-09-14T03:27:21Z","pushed_at":"2016-09-14T04:16:24Z","git_url":"git://github.com/dotnet/corefx.git","ssh_url":"git@github.com:dotnet/corefx.git","clone_url":"https://github.com/dotnet/corefx.git","svn_url":"https://github.com/dotnet/corefx","homepage":"https://docs.microsoft.com/dotnet/","size":139864,"stargazers_count":10511,"watchers_count":10511,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2610,"mirror_url":null,"open_issues_count":1470,"forks":2610,"open_issues":1470,"watchers":10511,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/11642"},"html":{"href":"https://github.com/dotnet/corefx/pull/11642"},"issue":{"href":"https://api.github.com/repos/dotnet/corefx/issues/11642"},"comments":{"href":"https://api.github.com/repos/dotnet/corefx/issues/11642/comments"},"review_comments":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/11642/comments"},"review_comment":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/11642/commits"},"statuses":{"href":"https://api.github.com/repos/dotnet/corefx/statuses/8086a0300bb8f7e7ed2cdf56597c150042df8f40"}}}}
{"actor":{"display_login":"weshaggard"}}